From: Anthony Talarico Date: Thu, 9 Jun 2016 19:10:15 +0000 (-0400) Subject: intial commit X-Git-Url: http://cvs2.gaslightmedia.com/gitweb/index.cgi?a=commitdiff_plain;h=935e437fd9e7abf32e75d5ffbf3b37d897cbf79a;p=WP-Plugins%2Fglm-catalog.git intial commit --- diff --git a/_gitignore b/_gitignore new file mode 100755 index 0000000..14bc68c --- /dev/null +++ b/_gitignore @@ -0,0 +1 @@ +/nbproject/private/ \ No newline at end of file diff --git a/index.php b/index.php new file mode 100755 index 0000000..16c910b --- /dev/null +++ b/index.php @@ -0,0 +1,680 @@ + + * Author URI: + * License: GPLv2 + **/ + +define( 'GLM_POST_TYPE', 'sitemap' ); +define( 'GLM_PRODUCT_SINGLE', 'Camp Site' ); +define( 'GLM_PRODUCT_PLURAL', 'Camp Sites' ); +define( 'GLM_CATEGORY_NAME', 'petosega_cateogory' ); +define( 'GLM_CATEGORY_SLUG', 'petosega-category' ); +define( 'GLM_CATEGORY_SINGLE', 'Site' ); +define( 'GLM_CATEGORY_PLURAL', 'Camper Types' ); + +// Register Custom Post Type. +/** + * Petosega_custom_post_type + * + * Setup of the Wordpress Custom Post Type + * + * @access public + * @return void + */ +function petosega_custom_post_type() { + + $labels = array( + 'name' => _x( GLM_PRODUCT_PLURAL, 'Post Type General Name' ), + 'singular_name' => _x( GLM_PRODUCT_SINGLE, 'Post Type Singular Name' ), + 'menu_name' => __( GLM_PRODUCT_PLURAL ), + 'name_admin_bar' => __( GLM_PRODUCT_PLURAL ), + 'archives' => __( GLM_PRODUCT_SINGLE . ' Archives' ), + 'parent_item_colon' => __( 'Parent Item:' ), + 'all_items' => __( 'All Items' ), + 'add_new_item' => __( 'Add New Item' ), + 'add_new' => __( 'Add New' ), + 'new_item' => __( 'New Item' ), + 'edit_item' => __( 'Edit Item' ), + 'update_item' => __( 'Update Item' ), + 'view_item' => __( 'View Item' ), + 'search_items' => __( 'Search Item' ), + 'not_found' => __( 'Not found' ), + 'not_found_in_trash' => __( 'Not found in Trash' ), + 'featured_image' => __( 'Featured Image' ), + 'set_featured_image' => __( 'Set featured image' ), + 'remove_featured_image' => __( 'Remove featured image' ), + 'use_featured_image' => __( 'Use as featured image' ), + 'insert_into_item' => __( 'Insert into item' ), + 'uploaded_to_this_item' => __( 'Uploaded to this item' ), + 'items_list' => __( 'Items list' ), + 'items_list_navigation' => __( 'Items list navigation' ), + 'filter_items_list' => __( 'Filter items list' ), + ); + + $rewrite = array( + 'slug' => GLM_POST_TYPE, + 'with_front' => false, + 'pages' => false, + 'feeds' => false, + ); + + $args = array( + 'label' => __( GLM_PRODUCT_SINGLE ), + 'description' => __( 'Custom ' . GLM_PRODUCT_PLURAL ), + 'labels' => $labels, + 'supports' => array( 'title', 'thumbnail', 'revisions' ), + 'hierarchical' => true, + 'public' => true, + 'show_ui' => true, + 'show_in_menu' => true, + 'menu_position' => 5, + 'menu_icon' => 'dashicons-lightbulb', + 'show_in_admin_bar' => true, + 'show_in_nav_menus' => true, + 'can_export' => true, + 'has_archive' => true, + 'exclude_from_search' => false, + 'publicly_queryable' => true, + 'rewrite' => $rewrite, + 'capability_type' => 'page', + 'register_meta_box_cb' => 'petosega_add_metaboxes', + ); + + register_post_type( GLM_POST_TYPE, $args ); + register_taxonomy_for_object_type( GLM_CATEGORY_NAME, GLM_POST_TYPE ); +} + +/** + * Petosega_add_metaboxes + * + * Add the meta fields + * + * @access public + * @return void + */ +function petosega_add_metaboxes() { + add_meta_box( 'petosega_water', 'Water', 'petosega_water', GLM_POST_TYPE, 'side', 'low' ); + add_meta_box( 'petosega_sewer', 'Sewer', 'petosega_sewer', GLM_POST_TYPE, 'side', 'low' ); + add_meta_box( 'petosega_power', 'Power', 'petosega_power', GLM_POST_TYPE, 'side', 'low' ); +} + +/** + * Petosega_water + * + * Add field for the water availability + * + * @access public + * @return void + */ +function petosega_water() { + global $post; + + // Get the features for the post. + $water = get_post_meta( $post->ID, 'petosega_water', true ); + + // Output field. + if ( 'yes' === $water ) { + $checked = 'checked="checked"'; + } + ?> + /> + '; + // Get the features for the post. + $sewer = get_post_meta( $post->ID, 'petosega_sewer', true ); + + // Output field. + if ( "yes" === $sewer ) { + $checked = 'checked="checked"'; + } + ?> + /> + ID, 'petosega_campers', true ); + + // Output field. + if ( !empty( $campers ) ) { + $value = "value=".'"'.$campers .'"'; + } + ?> + /> + '; + + // Get the features for the post. + $power = get_post_meta( $post->ID, 'petosega_power', true ); + // Output field. + if ( !empty( $power ) ) { + $value = "value=".'"'.$power .'"'; + } + + ?> + /> + ID; + } + if ( ! current_user_can( 'edit_post', $post->ID ) ) { + return $post->ID; + } + $water = filter_var( $_POST['petosega_water'] ); + $sewer = filter_var( $_POST['petosega_sewer'] ); + $power = filter_var( $_POST['petosega_power'] ); + update_post_meta( $post->ID, 'petosega_water', $water ); + update_post_meta( $post->ID, 'petosega_sewer', $sewer ); + update_post_meta( $post->ID, 'petosega_power', $power ); +} +/** + * petosega_taxonomies + * + * Setup of the Taxonomies for the post type + * + * @access public + * @return void + */ +function petosega_taxonomies() { + + // Experiences + $labels = array( + 'name' => _x( GLM_CATEGORY_NAME, 'taxonomy general name' ), + 'singular_name' => _x( GLM_CATEGORY_NAME, 'taxonomy singular name' ), + 'search_items' => __( 'Search ' . GLM_CATEGORY_PLURAL ), + 'all_items' => __( 'All ' . GLM_CATEGORY_PLURAL ), + 'parent_item' => __( 'Parent ' . GLM_CATEGORY_SINGLE ), + 'parent_item_colon' => __( 'Parent ' . GLM_CATEGORY_SINGLE ), + 'edit_item' => __( 'Edit ' . GLM_CATEGORY_SINGLE ), + 'update_item' => __( 'Update ' . GLM_CATEGORY_SINGLE ), + 'add_new_item' => __( 'Add New ' . GLM_CATEGORY_SINGLE ), + 'new_item_name' => __( 'New ' . GLM_CATEGORY_SINGLE . ' Name' ), + 'menu_name' => __( 'Site ' . GLM_CATEGORY_SINGLE ), + ); + + $capabilities = array( + 'manage_terms' => 'manage_categories', + 'edit_terms' => 'manage_categories', + 'delete_terms' => 'manage_categories', + 'assign_terms' => 'edit_posts', + ); + + $args = array( + 'label' => __( GLM_CATEGORY_PLURAL ), + 'rewrite' => array( 'slug' => GLM_CATEGORY_SLUG ), + 'capabilities' => $capabilities, + 'public ' => true, + 'show_in_quick_edit' => true, + 'show_in_admin_column' => true, + 'hierarchical' => true + ); + + register_taxonomy( + GLM_CATEGORY_NAME, + GLM_POST_TYPE, + $args + ); +} + +/** + * petosega_taxonomy_filter_restrict_manage_posts + * + * This will setup the Filter for the Custom taxonomies. + * + * @access public + * @return void + */ +function petosega_taxonomy_filter_restrict_manage_posts() { + global $typenow; + + $post_types = get_post_types( array( '_builtin' => false ) ); + + if ( in_array( $typenow, $post_types ) ) { + $filters = get_object_taxonomies( $typenow ); + + foreach ( $filters as $tax_slug ) { + $tax_obj = get_taxonomy( $tax_slug ); + wp_dropdown_categories( array( + 'show_option_all' => __( 'Show All ' . $tax_obj->label ), + 'taxonomy' => $tax_slug, + 'name' => $tax_obj->name, + 'orderby' => 'name', + 'selected' => ( isset( $_GET[$tax_slug] ) ), + 'hierarchical' => $tax_obj->hierarchical, + 'show_count' => false, + 'hide_empty' => true, + ) ); + } + } +} + +add_action( 'restrict_manage_posts', 'petosega_taxonomy_filter_restrict_manage_posts' ); + +/** + * Petosega_taxonomy_filter_post_type_request + * + * Filter the post request for the Taxonomy Filter + * + * @param mixed $query + * @access public + * @return void + */ +function petosega_taxonomy_filter_post_type_request( $query ) { + global $pagenow, $typenow; + + if ( 'edit.php' === $pagenow ) { + $filters = get_object_taxonomies( $typenow ); + foreach ( $filters as $tax_slug ) { + $var = &$query->query_vars[ $tax_slug ]; + + if ( isset( $var ) ) { + $term = get_term_by( 'id', $var, $tax_slug ); + + $var = $term->slug; + } + } + } +} +add_filter( 'parse_query', 'petosega_taxonomy_filter_post_type_request' ); +add_action( 'init', 'petosega_custom_post_type' ); +add_action( 'init', 'petosega_taxonomies' ); +add_action( 'save_post', 'petosega_save_meta' ); + +/** + * Petosega_set_admin_columns + * + * Setup of the list columns + * + * @access public + * @return void + */ +function petosega_set_admin_columns() { + add_filter( 'manage_edit-petosega_columns', 'petosega_admin_edit_columns' ); + add_action( 'manage_petosega_posts_custom_column', 'petosega_admin_custom_columns' ); +} + +add_action( 'admin_init', 'petosega_set_admin_columns' ); + +/** + * Petosega_admin_edit_columns + * + * Setup of the edit columns. This will create the headers for each column. + * + * @param mixed $columns + * @access public + * @return void + */ +function petosega_admin_edit_columns( $columns ) { + $columns = array( + 'cb' => '', + 'title' => GLM_PRODUCT_SINGLE . ' Title', + 'petosega_col_cat' => GLM_CATEGORY_SINGLE, + ); + return $columns; +} + +/** + * Petosega_admin_custom_columns + * + * This will generate the column data for eaoch record. + * + * @param mixed $column + * @access public + * @return void + */ +function petosega_admin_custom_columns( $column ) { + global $post; + + switch ( $column ) { + case 'petosega_col_cat': + $product_cats = get_the_terms( $post->ID, 'petosega_category' ); + $product_cats_html = array(); + if ( $product_cats ) { + foreach ( $product_cats as $product_cat ) { + array_push( $product_cats_html, $product_cat->name ); + } + echo implode( $product_cats_html, ', ' ); + } else { + _e( 'None', 'themeforce' ); + } + break; + case 'petosega_col_tag': + $product_tags = get_the_terms( $post->ID, 'petosega_tag' ); + $product_tags_html = array(); + if ( $product_tags ) { + foreach ( $product_tags as $product_tag ) { + array_push( $product_tags_html, $product_tag->name ); + } + echo implode( $product_tags_html, ', ' ); + } else { + _e( 'None', 'themeforce' ); + } + break; + } +} + +/** + * Petosega_shortcode + * + * Add shortcode function. This will call the correct function based on the + * front end search. + * + * @param mixed $atts + * @access public + * @return void + */ +function petosega_shortcode( $atts ) { + extract( shortcode_atts( array( 'limit' => '10' ), $atts ) ); + ob_start(); + + if ( isset( $atts['cat']) ) { + if ( $prod_experience = get_term_by( 'slug', $atts['cat'], GLM_CATEGORY_NAME ) ) { + if ( !isset($_REQUEST[ GLM_CATEGORY_NAME ] )) { + $_REQUEST[ GLM_CATEGORY_NAME ] = $prod_experience->term_id; + } + $cat_id = $prod_experience->term_id; + } + } + $term = get_term_by( "id", $_REQUEST[ GLM_CATEGORY_NAME ],"petosega_category" ); + $name = $term->name; + if ( !$name ) { + $name = "ALL PRODUCTS"; + } + global $wp; + echo '
+ Search Products
'; + echo petosega_get_terms_dropdown( $cat_id ); + echo '
'; + + if ( $product_id = filter_var( $_REQUEST['product'], FILTER_VALIDATE_INT ) ) { + petosega_show_product( $product_id ); + } else if ( $cat_id = filter_var( $_REQUEST['category'], FILTER_VALIDATE_INT ) ) { + petosega_list_categories( $cat_id ); + } else if ( !$catid_id && !$product_id ) { + + $text_query = filter_var( $_REQUEST['tsearch'], FILTER_SANITIZE_STRING ); + + if (isset( $_REQUEST[ 'tsearch' ] ) ) { + setcookie("search", "true",time()+2, "/" ); + } else { + setcookie("search", "null",time()+2, "/" ); + } + petosega_list_products( $text_query ); + petosega_list_categories(); + } + + $output = ob_get_contents(); + ob_end_clean(); + return $output; +} + +/** + * Petosega_get_terms_dropdown + * + * Generate the taxonomy drop down select + * + * @access public + * @return void + */ +function petosega_get_terms_dropdown( $cat_id ) { + + $taxonomy_name = GLM_CATEGORY_NAME; + if ( $cat_id ) { + $main = get_term( $cat_id, GLM_CATEGORY_NAME ); + $cats_child = get_term_children( $cat_id, $taxonomy_name ); + $output =""; + } else { + + $parent_terms = get_terms( $taxonomy_name, array('parent' => 0, 'orderby' => 'name', 'hide_empty' => false )); + $terms = get_terms( $taxonomy_name, array('orderby' => 'name', 'hide_empty' => false )); + + $output ="'; } + return $output; +} + + +/** + * Petosega_list_products + * + * Create a list of products. + * + * @access public + * @return void + */ +function petosega_list_products( $text_query ) { + global $wpdb, $wp; + $cat = get_term( $cat_id, GLM_CATEGORY_NAME ); + $args = array( + 'posts_per_page' => -1, + 'post_type' => GLM_POST_TYPE, + 's' => $text_query, + ); + $petosega_category = ( isset( $_REQUEST[ GLM_CATEGORY_NAME ] ) ) + ? filter_var( $_REQUEST[ GLM_CATEGORY_NAME ] ) + : false; + + if ( $petosega_category ) { + $args['tax_query'] = array( + 'relation' => 'AND', + ); + $args['tax_query'][] = array( + 'taxonomy' => GLM_CATEGORY_NAME, + 'field' => 'id', + 'terms' => $petosega_category, + ); + } + + $products = get_posts( $args ); + $total_products = count( $products ); + $current_url = esc_url( add_query_arg( $wp->query_string, '', home_url( $wp->request ) ) ); + $iterator = 1; + + foreach ( $products as $product ) { + $product_terms = wp_get_post_terms( $product->ID, GLM_CATEGORY_NAME, 'name' ); + $p_term = $product_terms[0]; + $product->term = $p_term->name; + $product->end = false; + if ( $iterator == $total_products ) { + $product->end = true; + } + $cat->href = "?petosega_category="; + $product->href = $current_url + . ( ( strpos( $current_url, '?' ) ) ? '&' : '?' ) + . "product=" . $product->ID; + ++$iterator; + } + + include 'views/list_products.php'; + return; +} +/** + * petosega_list_categories + * + * Create a list of categories. + * + * @param bool $cat_id + * @access public + * @return void + */ +function petosega_list_categories( $cat_id = null ) { + global $wpdb, $wp; + + $taxonomy = GLM_CATEGORY_NAME; + $args = array( + 'hide_empty' => false, + 'pad_counts' => true + ); + if ( $cat_id ) { + $args['child_of'] = $cat_id; + } else { + $args['parent'] = 0; + } + $taxonomy_terms = get_terms( $taxonomy, $args ); + + + $total_terms = count( $taxonomy_terms ); + $current_url = esc_url( add_query_arg( $wp->query_string, '', home_url( $wp->request ) ) ); + $iterator = 1; + + foreach ( $taxonomy_terms as $term ) { + $term->end = false; + if ( $iterator === $total_terms) { + $term->end = true; + } + $term->href .= //$current_url +// ( ( strpos( $current_url, '?' ) ) ? '&' : '?' ). + "?petosega_category=" . $term->term_id; + ++$iterator; + } + + include 'views/list_categories.php'; + return; +} + +/** + * Petosega_show_product + * + * Create a product detail page. + * + * @param mixed $prod_id + * @access public + * @return void + */ +function petosega_show_product( $prod_id ) { + global $wpdb, $wp; + $product = get_post( $prod_id ); + include 'views/product_detail.php'; + return; +} +/** + * Petosega_show_category + * + * Create a product detail page. + * + * @param mixed $cat_id + * @access public + * @return void + */ +function petosega_show_category( $cat_id ) { + global $wpdb, $wp; + $term = get_terms( + GLM_CATEGORY_NAME, + array( + 'child_of' => $cat_id, + 'hide_empty' => true, + //'parent' => $catid_id, + //'hierarchical' => false + ) + ); + + include 'views/category_detail.php'; + return; +} +add_shortcode( 'petosega', 'petosega_shortcode' ); + + diff --git a/views/category_detail.php b/views/category_detail.php new file mode 100755 index 0000000..bed95df --- /dev/null +++ b/views/category_detail.php @@ -0,0 +1,2 @@ +

name; ?>

+ diff --git a/views/list_categories.php b/views/list_categories.php new file mode 100755 index 0000000..12a3ce1 --- /dev/null +++ b/views/list_categories.php @@ -0,0 +1,31 @@ + + "); ?> +
+ ' . Products . ''." > "; ?> + ' . print_r($ancestors, true) . "
"; ?> +
+ +
+ + + + + + +
diff --git a/views/list_products.php b/views/list_products.php new file mode 100755 index 0000000..eb8ff8a --- /dev/null +++ b/views/list_products.php @@ -0,0 +1,41 @@ + + +' . $term->name . ''; ?> + +
+ + + + + ID,'petosega_tag'); ?> + + + + + ID,'petosega_tag'); ?> +
product grid small-12 medium-4 columnsend){ echo ' end';}?>"> + +
+ term; ?> +
+ + +
+ +
\ No newline at end of file diff --git a/views/product_detail.php b/views/product_detail.php new file mode 100755 index 0000000..a33c537 --- /dev/null +++ b/views/product_detail.php @@ -0,0 +1,64 @@ + + 'parent', + 'hierarchical'=> true, +); +$relatives = wp_get_post_terms($product->ID, 'petosega_category', $args); +?> +
+ ' . Products . ''." > "; ?> +term_id . '" >' . $relative->name . "" . " > "; +} ?> + post_title . "
"; ?> +
+

post_title; ?>

+ +
+
+ ID, 'large'); ?> +
+
+ Sewer '; + $key_value = get_post_custom_values('petosega_sewer', $product->ID); + foreach($key_value as $key=>$value){ + $shortcode_output = do_shortcode($value); + print $shortcode_output; + }?> +
+ +
+

Water

+ ID); + foreach($key_value as $key=>$value){ + $shortcode_output = do_shortcode($value); + print $shortcode_output; + }?> + + +
+
+ +
+ +
+ +