From 4b85668ffd96f9c200763385b37fcffc4ac59a8c Mon Sep 17 00:00:00 2001 From: James Collings Date: Wed, 5 Nov 2014 16:31:44 +0000 Subject: [PATCH] init repository --- .gitignore | 2 + Gruntfile.js | 50 ++ SubmenuAdmin.php | 230 ++++++++ SubmenuModel.php | 321 ++++++++++ assets/css/admin.css | 79 +++ assets/js/ajax.js | 240 ++++++++ assets/js/main.js | 219 +++++++ package.json | 13 + phpunit.xml.dist | 19 + readme.txt | 175 ++++++ screenshot-1.png | Bin 0 -> 51267 bytes screenshot-2.png | Bin 0 -> 44728 bytes screenshot-3.png | Bin 0 -> 37425 bytes screenshot-4.png | Bin 0 -> 27487 bytes submenu.php | 279 +++++++++ tests/DynamicItemsTest.php | 510 ++++++++++++++++ tests/SectionMenuTest.php | 177 ++++++ tests/SplitMenuTest.php | 577 ++++++++++++++++++ tests/bootstrap.php | 16 + views/edit.php | 268 +++++++++ views/settings.php | 16 + walkers/AdminMenuWalker.php | 205 +++++++ walkers/DropdownWalker.php | 28 + walkers/SubmenuWalker.php | 1029 +++++++++++++++++++++++++++++++++ widgets/SectionMenuWidget.php | 216 +++++++ widgets/SplitMenuWidget.php | 189 ++++++ 26 files changed, 4858 insertions(+) create mode 100644 .gitignore create mode 100644 Gruntfile.js create mode 100644 SubmenuAdmin.php create mode 100644 SubmenuModel.php create mode 100644 assets/css/admin.css create mode 100644 assets/js/ajax.js create mode 100644 assets/js/main.js create mode 100644 package.json create mode 100644 phpunit.xml.dist create mode 100644 readme.txt create mode 100644 screenshot-1.png create mode 100644 screenshot-2.png create mode 100644 screenshot-3.png create mode 100644 screenshot-4.png create mode 100644 submenu.php create mode 100644 tests/DynamicItemsTest.php create mode 100644 tests/SectionMenuTest.php create mode 100644 tests/SplitMenuTest.php create mode 100644 tests/bootstrap.php create mode 100644 views/edit.php create mode 100644 views/settings.php create mode 100644 walkers/AdminMenuWalker.php create mode 100644 walkers/DropdownWalker.php create mode 100644 walkers/SubmenuWalker.php create mode 100644 widgets/SectionMenuWidget.php create mode 100644 widgets/SplitMenuWidget.php diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5dfbb4c --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +build/* +node_modules/* \ No newline at end of file diff --git a/Gruntfile.js b/Gruntfile.js new file mode 100644 index 0000000..7c84238 --- /dev/null +++ b/Gruntfile.js @@ -0,0 +1,50 @@ +module.exports = function(grunt) { + + // Project configuration. + grunt.initConfig({ + pkg: grunt.file.readJSON('package.json'), + copy: { + main: { + files: [ + {expand: true, src: ['assets/**'], dest: 'build/'}, + {expand: true, src: ['views/**'], dest: 'build/'}, + {expand: true, src: ['walkers/**'], dest: 'build/'}, + {expand: false, src: ['readme.txt'], dest: 'build/readme.txt'}, + {expand: false, src: ['screenshot-1.png'], dest: 'build/screenshot-1.png'}, + {expand: false, src: ['screenshot-2.png'], dest: 'build/screenshot-2.png'}, + {expand: false, src: ['screenshot-3.png'], dest: 'build/screenshot-3.png'}, + {expand: false, src: ['screenshot-4.png'], dest: 'build/screenshot-4.png'}, + {expand: false, src: ['submenu.php'], dest: 'build/submenu.php'}, + {expand: false, src: ['SubmenuAdmin.php'], dest: 'build/SubmenuAdmin.php'}, + {expand: false, src: ['SubmenuModel.php'], dest: 'build/SubmenuModel.php'} + ] + } + }, + clean: ["build"], + uglify: { + my_target: { + files: { + 'build/assets/js/ajax.js': ['assets/js/ajax.js'], + 'build/assets/js/main.js': ['assets/js/main.js'] + } + } + }, + cssmin: { + my_target: { + files: { + 'build/assets/css/admin.css': ['assets/css/admin.css'] + } + } + } + }); + + // grunt modules + grunt.loadNpmTasks('grunt-contrib-copy'); + grunt.loadNpmTasks('grunt-contrib-clean'); + grunt.loadNpmTasks('grunt-contrib-uglify'); + grunt.loadNpmTasks('grunt-contrib-cssmin'); + + // Default task(s). + grunt.registerTask('default', ['clean', 'copy', 'uglify', 'cssmin']); + +}; \ No newline at end of file diff --git a/SubmenuAdmin.php b/SubmenuAdmin.php new file mode 100644 index 0000000..f9e077c --- /dev/null +++ b/SubmenuAdmin.php @@ -0,0 +1,230 @@ + + * @version 0.0.1 + */ +class SubmenuAdmin{ + + /** + * Plugin config + * @var stdClass + */ + private $config = null; + + /** + * Setup class + * @param stdClass $config + * @return void + */ + public function __construct(&$config){ + $this->config = $config; + + // include js/css + add_action( 'admin_enqueue_scripts', array($this, 'load_scripts')); + + // on menu save + add_action( 'wp_update_nav_menu_item', array($this, 'save_nav_menu'), 10, 3); + + add_action( 'admin_notices', array( $this , 'display_admin_notification' ) ); + add_action( 'admin_init', array( $this, 'hide_admin_notification' ) ); + + // register admin settings + add_action( 'admin_init', array($this, 'register_settings' )); + + // add settings page + add_action( 'admin_menu', array($this, 'settings_menu' )); + + // load settings + $options = get_option( 'jcs-general_settings' ); + $this->config->edit_walker = isset($options['enable_walker']) && $options['enable_walker'] == 1 ? 1 : 0; + + if($this->config->edit_walker == 1){ + add_filter( 'wp_edit_nav_menu_walker', array($this, 'set_edit_walker')); + }else{ + add_action( 'wp_ajax_jcs_get_menu_item', array( $this, 'ajax_get_menu_item' ) ); + } + } + + /** + * Attach plugin assets + * @return void + */ + public function load_scripts(){ + + // attach files + wp_enqueue_script('jc-submenu-scripts', $this->config->plugin_url .'/assets/js/main.js', array('jquery'), $this->config->version, true); + wp_enqueue_style('jc-submenu-admin-css', $this->config->plugin_url .'/assets/css/admin.css', array(), $this->config->version); + + // ajax files + if($this->config->edit_walker == 0){ + wp_enqueue_script( 'jc-submenu-ajax', $this->config->plugin_url .'/assets/js/ajax.js', array('jquery'), $this->config->version ); + wp_localize_script( 'jc-submenu-ajax', 'ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' ), 'we_value' => 1234 ) ); + } + } + + public function settings_menu(){ + // add_submenu_page( $parent_slug, $page_title, $menu_title, $capability, $menu_slug, $function ); + add_submenu_page( 'options-general.php', 'JC Submenu', 'JC Submenu', 'manage_options', 'jc-submenu', array($this, 'admin_settings_view') ); + } + + public function admin_settings_view(){ + include $this->config->plugin_dir . 'views/settings.php'; + } + + /** + * Save custom menu item options + * @param int $menu_id + * @param int $menu_item_db_id + * @param array $args + * @return void + */ + public function save_nav_menu($menu_id, $menu_item_db_id, $args){ + + if(!isset($_POST['menu-item-title']) || empty($_POST['menu-item-title'])) + return false; + + foreach($_POST['menu-item-title'] as $menu_item_id => $menu_item_title){ + + if(isset($_POST[$this->config->prefix.'-admin']) && array_key_exists($menu_item_id, $_POST[$this->config->prefix.'-admin'])){ + SubmenuModel::save_meta($menu_item_id, 'admin', 1); + }elseif(isset($_POST[$this->config->prefix.'-active']) && array_key_exists($menu_item_id, $_POST[$this->config->prefix.'-active'])){ + SubmenuModel::save_meta($menu_item_id, 'admin', 0); + } + + if(isset($_POST[$this->config->prefix.'-autopop']) && array_key_exists($menu_item_id, $_POST[$this->config->prefix.'-autopop'])){ + // save post meta for active items + SubmenuModel::save_menu_item($menu_item_id); + + }elseif(isset($_POST[$this->config->prefix.'-active']) && array_key_exists($menu_item_id, $_POST[$this->config->prefix.'-active'])){ + // clear post meta for inactive items + SubmenuModel::clear_menu_item($menu_item_id); + } + } + } + + /** + * Output Usage Notification + * @return void + */ + public function display_admin_notification(){ + + global $current_user; + global $pagenow; + + $user_id = $current_user->ID; + $response = get_user_meta($user_id, 'jcs-show_notification', true); + + if ( current_user_can( 'manage_options' ) && (!$response || $response < $this->config->version_check) && $pagenow == 'nav-menus.php'): ?> + +
+

Need help with using JC Submenu? view the documentation here | Hide this notice

+
+ + ID; + + if(isset($_GET['jc_hide_notice']) && $_GET['jc_hide_notice'] == 1){ + + delete_user_meta($user_id, 'jcs-show_notification'); + add_user_meta( $user_id, 'jcs-show_notification', $this->config->version_check, true); + } + + } + + /** + * Change nav-menu.php walker + * @return string + */ + public function set_edit_walker(){ + return 'JC_Submenu_Admin_Walker'; + } + + /** + * Load menu admin edit view + * @return void + */ + public function ajax_get_menu_item(){ + $item_id = intval($_POST['id']); + include $this->config->plugin_dir . 'views/edit.php'; + die(); + } + + public function register_settings(){ + + // Settings + register_setting('jcs_settings', 'jcs'. '-general_settings', array($this, 'save_settings')); + + add_settings_section('settings', 'General Settings', array($this, 'section_settings'), 'tab_settings'); + + add_settings_field('enable_walker', 'Enable Admin Walker', array($this, 'field_callback'), 'tab_settings', 'settings', array( + 'type' => 'checkbox', + 'field_id' => 'enable_walker', + 'section_id' => 'settings', + 'setting_id' => 'jcs'. '-general_settings' + )); + + } + + /** + * Settings Section Text + * + * @return void + */ + public function section_settings($section) + { + switch($section['id']){ + case 'settings': + echo 'Enable Admin Walker, only do this if you are having problems with editing your menus.'; + break; + } + + } + + /** + * Create Settings Fields + * + * @param array $args + * @return void + */ + public function field_callback($args){ + $multiple = false; + extract($args); + $options = get_option($setting_id); + switch($args['type']) + { + case 'checkbox':{ + $checked = isset($options[$field_id]) && $options[$field_id] == 1 ? 'checked="checked"' : ''; + ?> + /> + + * @version 0.0.1 + */ +class SubmenuModel{ + + /** + * Plugin config + * @var stdClass + */ + static $config; + + /** + * Order by options + * @var array + */ + private static $order_options = array( + 'tax' => array( + 'name' => 'Name', + 'slug' => ' Slug', + 'count' => 'Tax Count', + 'id' => 'ID', + 'none' => 'None', + ), + 'post' => array( + 'title' => 'Post Name', + 'name' => 'Post Slug', + 'none' => 'None', + 'ID' => 'ID', + 'date' => 'Date', + 'comment_count' => 'Total Comments', + 'menu_order' => 'Menu Order' + ), + 'page' => array( + 'post_title' => 'Page Name', + 'menu_order' => 'Menu Order', + 'post_date' => 'Created', + 'post_modified' => 'Last Modified', + 'ID' => 'Page ID', + 'post_author' => 'Author', + 'post_name' => 'Page Slug' + ) + ); + + /** + * Setup class + * @param stdClass $config + * @return void + */ + static function init(&$config){ + self::$config = $config; + } + + /** + * Save Menu item from wp admin navigation page + * @param int $menu_item_id + * @param array $args + * @return void + */ + static function save_menu_item($menu_item_id = null, $args = array()){ + $type = self::get_post_data($menu_item_id, 'populate-type'); + $value = self::get_post_data($menu_item_id, 'populate-'.$type); + + $childpop = self::get_post_data($menu_item_id, 'childpop'); + $childpop = $childpop == 0 ? 0 : 1; + + if($type && $value){ + + // validate population type + if(!in_array($type, array('post','tax', 'page', 'archive'))){ + return 0; + } + + if($type == 'post'){ + $post_limit = self::get_post_data($menu_item_id, 'post-limit'); + $post_order = self::get_post_data($menu_item_id, 'post-order'); + $post_orderby = self::get_post_data($menu_item_id, 'post-orderby'); + $post_tax = self::get_post_data($menu_item_id, 'post-tax'); + $post_term = self::get_post_data($menu_item_id, 'post-term'); + + $post_tax = !empty($post_tax) ? $post_tax : 0; + $post_term = !empty($post_term) ? $post_term : 0; + + + $post_limit = intval($post_limit); + + // validate order + if(!array_key_exists($post_orderby, self::get_order_options('post'))){ + echo $post_orderby; + echo 'A'; + return 0; + } + if(!in_array($post_order, array('ASC', 'DESC'))){ + echo 'B'; + return 0; + } + + self::save_meta($menu_item_id, 'post-limit', $post_limit); + self::save_meta($menu_item_id, 'post-order', $post_order); + self::save_meta($menu_item_id, 'post-orderby', $post_orderby); + self::save_meta($menu_item_id, 'post-tax', $post_tax); + self::save_meta($menu_item_id, 'post-term', $post_term); + // self::save_post_tax($menu_item_id, $post_tax); + }elseif($type == 'tax'){ + $tax_order = self::get_post_data($menu_item_id, 'tax-order'); + $tax_orderby = self::get_post_data($menu_item_id, 'tax-orderby'); + $tax_empty = self::get_post_data($menu_item_id, 'tax-empty'); + $tax_depth = self::get_post_data($menu_item_id, 'tax-depth'); + $tax_term = self::get_post_data($menu_item_id, 'tax-term'); + + $tax_term = !empty($tax_term) ? $tax_term : 0; + + $tax_exclude = self::get_post_data($menu_item_id, 'tax-exclude'); + if(!empty($tax_exclude)){ + + $temp = array(); + $tax_exclude = explode(',', str_replace(' ', '', $tax_exclude)); + + foreach($tax_exclude as $id){ + if(intval($id) > 0 && !in_array(intval($id), $temp)){ + $temp[] = intval($id); + } + } + $tax_exclude = $temp; + }else{ + $tax_exclude = array(); + } + + + $tax_empty = $tax_empty == 1 ? 1 : 0; + + // validate order + if(!array_key_exists($tax_orderby, self::get_order_options('tax'))){ + return 0; + } + if(!in_array($tax_order, array('ASC', 'DESC'))){ + return 0; + } + + self::save_meta($menu_item_id, 'tax-order', $tax_order); + self::save_meta($menu_item_id, 'tax-orderby', $tax_orderby); + self::save_meta($menu_item_id, 'tax-empty', $tax_empty); + self::save_meta($menu_item_id, 'tax-depth', intval($tax_depth)); + self::save_meta($menu_item_id, 'tax-exclude', $tax_exclude); + self::save_meta($menu_item_id, 'tax-term', $tax_term); + }elseif($type == 'page'){ + + $page_order = self::get_post_data($menu_item_id, 'page-order'); + $page_orderby = self::get_post_data($menu_item_id, 'page-orderby'); + $page_exclude = self::get_post_data($menu_item_id, 'page-exclude'); + + // validate order + if(!array_key_exists($page_orderby, self::get_order_options('page'))){ + return 0; + } + if(!in_array($page_order, array('ASC', 'DESC'))){ + return 0; + } + + self::save_meta($menu_item_id, 'page-order', $page_order); + self::save_meta($menu_item_id, 'page-orderby', $page_orderby); + self::save_meta($menu_item_id, 'page-exclude', $page_exclude); + }elseif($type == 'archive'){ + + $archive_group = self::get_post_data($menu_item_id, 'archive-group'); + $archive_group = $archive_group == 1 ? 1 : 0; + self::save_meta($menu_item_id, 'archive-group', $archive_group); + } + + // all validated save rest + self::save_meta($menu_item_id, 'populate-type', $type); + self::save_meta($menu_item_id, 'populate-value', $value); + self::save_meta($menu_item_id, 'autopopulate', 1); + self::save_meta($menu_item_id, 'childpop', $childpop); + } + + } + + /** + * Save post type taxonomy filter + * @param $menu_item_id + * @param $string + */ + static function save_post_tax($menu_item_id = 0, $string = ''){ + + // no string to parse + if(empty($string)){ + self::save_meta($menu_item_id, 'post-tax', 0); + self::save_meta($menu_item_id, 'post-term', 0); + return false; + } + + + // save tax only + if(strpos($string, '-') === false && (taxonomy_exists( $string ) || $string == 0 ) ){ + self::save_meta($menu_item_id, 'post-tax', $string); + self::save_meta($menu_item_id, 'post-term', 0); + return true; + } + + // save term and tax + $split = explode('-', $string); + + if(count($split) == 2){ + $term_id = intval($split[1]); + $tax = $split[0]; + + if(taxonomy_exists( $tax ) && (get_term_by( 'id', $term_id, $tax) || $term_id == 0) ){ + self::save_meta($menu_item_id, 'post-tax', $tax); + self::save_meta($menu_item_id, 'post-term', $term_id); + return true; + } + } + + return false; + } + + /** + * Capture menu item $_POST data + * @param $menu_item_id + * @param $key + */ + static function get_post_data($menu_item_id = 0, $key = ''){ + if(isset($_POST[self::$config->prefix.'-'.$key][$menu_item_id]) + && !empty($_POST[self::$config->prefix.'-'.$key][$menu_item_id])){ + return $_POST[self::$config->prefix.'-'.$key][$menu_item_id]; + }else{ + return ''; + }; + } + + /** + * Update post meta data + * @param int $menu_item_id + * @param string $meta_key + * @param string $new_value + */ + static function save_meta($menu_item_id = 0, $meta_key = '', $new_value = ''){ + + $key = self::$config->prefix.'-'.$meta_key; + + $old_value = get_post_meta( $menu_item_id, $key, true ); + if($old_value == ''){ + + // fix to remove multiple saved values as add_post_meta was not set to unique... woops + global $wpdb; + $wpdb->query( $wpdb->prepare( "DELETE pm FROM {$wpdb->prefix}postmeta as pm WHERE pm.post_id = %d AND meta_key=%s ", $menu_item_id , $key ) ); + + // add value + add_post_meta( $menu_item_id, $key, $new_value, true ); + }else{ + // update value + update_post_meta( $menu_item_id, $key, $new_value, $old_value ); + } + } + + /** + * Remove menu item settings + * @param int $menu_item_id + * @return void + */ + static function clear_menu_item($menu_item_id = null){ + $keys = array( + 'populate-type', + 'populate-value', + 'autopopulate', + 'post-limit', + 'post-order', + 'post-orderby', + 'tax-order', + 'tax-orderby', + 'tax-empty', + 'post-tax', + 'post-term', + 'childpop', + 'archive-group' + ); + + foreach($keys as $meta_key){ + $old_value = get_post_meta( $menu_item_id, self::$config->prefix.'-'.$meta_key, true ); + if($old_value != ''){ + delete_post_meta( $menu_item_id, self::$config->prefix.'-'.$meta_key, $old_value ); + } + } + } + + /** + * Retrieve orderby options + * @param string $type tax | post + */ + static function get_order_options($type){ + + switch($type){ + case 'tax': + return self::$order_options['tax']; + break; + case 'post': + return self::$order_options['post']; + break; + case 'page': + return self::$order_options['page']; + break; + } + } + + /** + * Get plugin meta item + * @param int $menu_item_id + * @param string $key + * @return string + */ + static function get_meta($menu_item_id, $key){ + return get_post_meta( $menu_item_id, self::$config->prefix.'-'.$key, true ); + } +} +?> \ No newline at end of file diff --git a/assets/css/admin.css b/assets/css/admin.css new file mode 100644 index 0000000..6d60238 --- /dev/null +++ b/assets/css/admin.css @@ -0,0 +1,79 @@ +.jc-submenu-populate-block{ + color: #777; + border: #DFDFDF 1px solid; + /*border-bottom: none;*/ + /*padding: 10px 0 10px 10px;*/ + padding:0; + width: 367px; +} + +.jc-submenu-populate-block label{ + display: block; +} + +.jc-submenu-populate-block input[type=text], .jc-submenu-populate-block select{ + width:100%; +} + +.jc-submenu-row{ + clear: both; + margin:10px 0 10px 10px; +} + +.jc-submenu-row p{ + padding-right: 4%; + width:96%; + margin-bottom: 5px; + margin-top: 5px; +} + +.jc-submenu-row .jc_two_cols{ + overflow: hidden; +} + +.jc-submenu-row.jc_two_cols p{ + width:46%; + float:left; + padding-right:4%; +} + +.jc-accord-heading input{ + position: absolute; + top: -9999px; + left: -9999px; +} +p.jc-accord-heading{ + margin: 0; + padding: 0; + width:100% !important; + float:left; + border-bottom: 1px solid #dfdfdf; +} +.jc-accord-heading label{ + padding:9px; + background: #ededed; + color:#737373; +} + +.jc-accord-heading.active label{ + background: #737373; + color:#FFF; +} + +.jc-accord-heading.jc-submenu-populate-archive{ + border-bottom: none; +} +.jc-accord-heading.jc-submenu-populate-archive.active{ + border-bottom: 1px solid #dfdfdf; +} + +#jc-submenu-loading{ + height:38px; + border: 1px solid #dfdfdf; + background: #ededed; + color:#737373; + line-height: 40px; + text-indent: 10px; + float:left; + width:367px; +} \ No newline at end of file diff --git a/assets/js/ajax.js b/assets/js/ajax.js new file mode 100644 index 0000000..981449c --- /dev/null +++ b/assets/js/ajax.js @@ -0,0 +1,240 @@ +/** + * Admin Ajax Function + */ +(function($){ + + $.fn.jc_edit_menu = function(){ + + var id = JC_Submenu.get_menu_id($(this).attr('id')); + var _menu_item = $('#menu-item-'+id); + + if(_menu_item.hasClass('menu-item-edit-inactive') && !_menu_item.hasClass('jc-submenu-populated')){ + + var id = JC_Submenu.get_menu_id(_menu_item.attr('id')); + var data = { + action: 'jcs_get_menu_item', + id: id + }; + + // show loading + $("
JC Submenu... Loading
").insertBefore(_menu_item.find('.menu-item-actions')); + + jQuery.post(ajax_object.ajax_url, data, function(response) { + + _menu_item.find("#jc-submenu-loading").remove(); + + $(response).insertBefore(_menu_item.find('.menu-item-actions')); + + /** + * Display Active Menu Population Options + * @since 0.6 + */ + _menu_item.find('.jc-accord-heading').each(function(){ + + var accord_heading = $(this); + var id = JC_Submenu.get_menu_id(accord_heading.attr('id')); + var btn_handle = $('input', accord_heading); + var btn_label = $('label', accord_heading); + + btn_handle.live('change', function(){ + + $('.jc-accord-heading', $('#menu-item-'+id)).removeClass('active'); + $('.item-edit-panel', $('#menu-item-'+id)).hide(); + + if($(this).attr('checked') == 'checked'){ + $( '.show-'+$(this).val() , $('#menu-item-'+id) ).show(); + accord_heading.addClass('active'); + } + }); + + btn_label.click(function(event){ + $('.jc-accord-heading input:checked', $('#menu-item-'+id)).attr('checked', false); + btn_handle.attr('checked', 'checked').trigger('change'); + event.preventDefault(); + }); + + btn_handle.filter(":checked").trigger('change'); + }); + + /** + * Display JC Submenu Options + * @since 0.6 + */ + _menu_item.find('input.jc-submenu-autopopulate').each(function(index){ + + var options_handle = $(this); + var id = JC_Submenu.get_menu_id(options_handle.attr('id')); + + options_handle.live('change', function(){ + if($(this).attr('checked') == 'checked'){ + $( '#jc-submenu-populate-block-'+id).show(); + $('.jc-submenu-active').show(); + }else{ + $( '#jc-submenu-populate-block-'+id).hide(); + $('.jc-submenu-active').hide(); + } + }); + + options_handle.filter(':checked').trigger('change'); + }); + + /** + * Filter Taxonomy via selected Post Type + * @since 0.6 + */ + _menu_item.find('select[id^="edit-jc-submenu-populate-post"]').each(function(){ + + var post_select = $(this); + var id = JC_Submenu.get_menu_id(post_select.attr('id')); + var tax_select = $('select[id^="edit-jc-submenu-post-tax"]', $('#menu-item-'+id)); + var term_select = $('select[id^="edit-jc-submenu-post-term"]', $('#menu-item-'+id)); + var taxs = tax_select.clone(); + + + post_select.live('change', function(){ + var show_taxs = post_select.find(':selected').data('taxs').split(' '); + var selected = tax_select.find(':selected').val(); + + // tax_select = taxs.clone(); + tax_select.empty(); + + $('option', taxs).each(function(index){ + + var val = $(this).val(); + + if($.inArray(val, show_taxs) != -1 || val == 0){ + + var clone_option = $(this).clone().attr('selected', false); + + if(val == selected){ + tax_select.append(clone_option.attr('selected', 'selected')); + }else{ + tax_select.append(clone_option); + } + }else{ + tax_select.find('option[value='+val+']').remove(); + } + }); + + // hide taxonomy filters if no options + /*if(tax_select.find('option').size() == 1){ + tax_select.parent().hide(); + }else{ + tax_select.parent().show(); + }*/ + + tax_select.trigger('change'); + }); + + post_select.trigger('change'); + + }); + + /** + * Filter Terms depending on chosen taxonomy + * @since 0.6 + */ + _menu_item.find('select[id^="edit-jc-submenu-post-tax"]').each(function(){ + + var tax_select = $(this); + var id = JC_Submenu.get_menu_id(tax_select.attr('id')); + var term_select = $('select[id^="edit-jc-submenu-post-term"]', $('#menu-item-'+id)); + var terms = term_select.clone(); + + tax_select.live('change', function(){ + + var tax = tax_select.find(':selected').val(); + var selected = term_select.find(':selected').val(); + + term_select.empty(); + + $('option', terms).each(function(index){ + var val = $(this).val(); + + if(tax == $(this).data('tax')){ + var clone_option = $(this).clone().attr('selected', false); + if(val == selected){ + term_select.append(clone_option.attr('selected', 'selected')); + }else{ + term_select.append(clone_option); + } + }else{ + term_select.find('option[value='+val+']').remove(); + } + }); + + /*if(term_select.find('option').size() == 1){ + term_select.parent().hide(); + }else{ + term_select.parent().show(); + }*/ + + }); + + tax_select.trigger('change'); + }); + + /** + * Filter Taxonomy Terms depending on chosen taxonomy + * @since 0.6 + */ + _menu_item.find('select[id^="edit-jc-submenu-populate-tax"]').each(function(){ + + var tax_select = $(this); + var id = JC_Submenu.get_menu_id(tax_select.attr('id')); + var term_select = $('select[id^="edit-jc-submenu-tax-term"]', $('#menu-item-'+id)); + var terms = term_select.clone(); + + tax_select.live('change', function(){ + + var tax = tax_select.find(':selected').val(); + var selected = term_select.find(':selected').val(); + + term_select.empty(); + + $('option', terms).each(function(index){ + var val = $(this).val(); + + if(tax == $(this).data('tax') || $(this).data('tax') == 0){ + var clone_option = $(this).clone().attr('selected', false); + if(val == selected){ + term_select.append(clone_option.attr('selected', 'selected')); + }else{ + term_select.append(clone_option); + } + }else{ + term_select.find('option[value='+val+']').remove(); + } + }); + + /*if(term_select.find('option').size() == 1){ + term_select.parent().hide(); + }else{ + term_select.parent().show(); + }*/ + + }); + + tax_select.trigger('change'); + }); + }); + + _menu_item.addClass('jc-submenu-populated'); + } + } + + /** + * JS Attach Item Template + * + * add before .menu-item-actions + */ + $(document).ready(function(){ + + $('#menu-to-edit').on('click', 'a.item-edit', function(){ + $(this).jc_edit_menu(); + }); + + }); + + +})(jQuery); \ No newline at end of file diff --git a/assets/js/main.js b/assets/js/main.js new file mode 100644 index 0000000..9e43396 --- /dev/null +++ b/assets/js/main.js @@ -0,0 +1,219 @@ +/** +* JC Submenu Javascript +*/ + +var JC_Submenu = { + + get_menu_id: function (id){ + id= id.split("-"); + id = id[id.length-1]; + return id; + } + +}; + +(function($){ + + + /** + * Display Active Menu Population Options + * @since 0.2 + */ + $('.jc-accord-heading').each(function(){ + + var accord_heading = $(this); + var id = JC_Submenu.get_menu_id(accord_heading.attr('id')); + var btn_handle = $('input', accord_heading); + var btn_label = $('label', accord_heading); + + btn_handle.live('change', function(){ + + $('.jc-accord-heading', $('#menu-item-'+id)).removeClass('active'); + $('.item-edit-panel', $('#menu-item-'+id)).hide(); + + if($(this).attr('checked') == 'checked'){ + $( '.show-'+$(this).val() , $('#menu-item-'+id) ).show(); + accord_heading.addClass('active'); + } + }); + + btn_label.click(function(event){ + $('.jc-accord-heading input:checked', $('#menu-item-'+id)).attr('checked', false); + btn_handle.attr('checked', 'checked').trigger('change'); + event.preventDefault(); + }); + + btn_handle.filter(":checked").trigger('change'); + }); + + /** + * Display JC Submenu Options + * @since 0.2 + */ + $('input.jc-submenu-autopopulate').each(function(index){ + + var options_handle = $(this); + var id = JC_Submenu.get_menu_id(options_handle.attr('id')); + + options_handle.live('change', function(){ + if($(this).attr('checked') == 'checked'){ + $( '#jc-submenu-populate-block-'+id).show(); + $('.jc-submenu-active').show(); + }else{ + $( '#jc-submenu-populate-block-'+id).hide(); + $('.jc-submenu-active').hide(); + } + }); + + options_handle.filter(':checked').trigger('change'); + }); + + /** + * Filter Taxonomy via selected Post Type + * @since 0.2 + */ + $('select[id^="edit-jc-submenu-populate-post"]').each(function(){ + + var post_select = $(this); + var id = JC_Submenu.get_menu_id(post_select.attr('id')); + var tax_select = $('select[id^="edit-jc-submenu-post-tax"]', $('#menu-item-'+id)); + var term_select = $('select[id^="edit-jc-submenu-post-term"]', $('#menu-item-'+id)); + var taxs = tax_select.clone(); + + + post_select.live('change', function(){ + var show_taxs = post_select.find(':selected').data('taxs').split(' '); + var selected = tax_select.find(':selected').val(); + + // tax_select = taxs.clone(); + tax_select.empty(); + + $('option', taxs).each(function(index){ + + var val = $(this).val(); + + if($.inArray(val, show_taxs) != -1 || val == 0){ + + var clone_option = $(this).clone().attr('selected', false); + + if(val == selected){ + tax_select.append(clone_option.attr('selected', 'selected')); + }else{ + tax_select.append(clone_option); + } + }else{ + tax_select.find('option[value='+val+']').remove(); + } + }); + + // hide taxonomy filters if no options + /*if(tax_select.find('option').size() == 1){ + tax_select.parent().hide(); + }else{ + tax_select.parent().show(); + }*/ + + tax_select.trigger('change'); + }); + + post_select.trigger('change'); + + }); + + /** + * Filter Terms depending on chosen taxonomy + * @since 0.2 + */ + $('select[id^="edit-jc-submenu-post-tax"]').each(function(){ + + var tax_select = $(this); + var id = JC_Submenu.get_menu_id(tax_select.attr('id')); + var term_select = $('select[id^="edit-jc-submenu-post-term"]', $('#menu-item-'+id)); + var terms = term_select.clone(); + + tax_select.live('change', function(){ + + var tax = tax_select.find(':selected').val(); + var selected = term_select.find(':selected').val(); + + term_select.empty(); + + $('option', terms).each(function(index){ + var val = $(this).val(); + + if(tax == $(this).data('tax')){ + var clone_option = $(this).clone().attr('selected', false); + if(val == selected){ + term_select.append(clone_option.attr('selected', 'selected')); + }else{ + term_select.append(clone_option); + } + }else{ + term_select.find('option[value='+val+']').remove(); + } + }); + + /*if(term_select.find('option').size() == 1){ + term_select.parent().hide(); + }else{ + term_select.parent().show(); + }*/ + + }); + + tax_select.trigger('change'); + }); + + /** + * Filter Taxonomy Terms depending on chosen taxonomy + * @since 0.5.4 + */ + $('select[id^="edit-jc-submenu-populate-tax"]').each(function(){ + + var tax_select = $(this); + var id = JC_Submenu.get_menu_id(tax_select.attr('id')); + var term_select = $('select[id^="edit-jc-submenu-tax-term"]', $('#menu-item-'+id)); + var terms = term_select.clone(); + + tax_select.live('change', function(){ + + var tax = tax_select.find(':selected').val(); + var selected = term_select.find(':selected').val(); + + term_select.empty(); + + $('option', terms).each(function(index){ + var val = $(this).val(); + + if(tax == $(this).data('tax') || $(this).data('tax') == 0){ + var clone_option = $(this).clone().attr('selected', false); + if(val == selected){ + term_select.append(clone_option.attr('selected', 'selected')); + }else{ + term_select.append(clone_option); + } + }else{ + term_select.find('option[value='+val+']').remove(); + } + }); + + /*if(term_select.find('option').size() == 1){ + term_select.parent().hide(); + }else{ + term_select.parent().show(); + }*/ + + }); + + tax_select.trigger('change'); + }); + + + /** + * Document Ready + */ + $(document).ready(function(){ + $('.item-edit-panel').hide(); + }); + +})(jQuery); \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..1118caf --- /dev/null +++ b/package.json @@ -0,0 +1,13 @@ +{ + "name": "jc-submenu", + "version": "0.8.3", + "devDependencies": { + "grunt": "^0.4.5", + "grunt-contrib-clean": "^0.6.0", + "grunt-contrib-copy": "^0.7.0", + "grunt-contrib-cssmin": "^0.10.0", + "grunt-contrib-jshint": "~0.10.0", + "grunt-contrib-nodeunit": "~0.4.1", + "grunt-contrib-uglify": "^0.6.0" + } +} diff --git a/phpunit.xml.dist b/phpunit.xml.dist new file mode 100644 index 0000000..c4ce129 --- /dev/null +++ b/phpunit.xml.dist @@ -0,0 +1,19 @@ + + + + + + ./tests/ + + + \ No newline at end of file diff --git a/readme.txt b/readme.txt new file mode 100644 index 0000000..24690df --- /dev/null +++ b/readme.txt @@ -0,0 +1,175 @@ +=== JC Submenu === +Contributors: jcollings +Donate link: +Tags: submenu, menu, dynamic, custom post type, taxonomy, child pages +Requires at least: 3.0.1 +Tested up to: 4 +Stable tag: 0.8.3 +License: GPLv2 or later +License URI: http://www.gnu.org/licenses/gpl-2.0.html + +JC Submenu plugin allows you to automatically populate your navigation menus with custom post_types, taxonomies, or child pages. + +== Description == + +JC Submenu plugin allows you to automatically populate your navigation menus with custom post_types, taxonomies, or child pages. An easy to use plugin created to be a lightweight menu extension. + +Also output a selected section of your dynamic menu through our advanced submenu widget. + +== Installation == + +1. First grab a copy from [wordpress.org](http://downloads.wordpress.org/plugin/jc-submenu.zip). +1. Extract the plugin to your wordpress plugins folder. +1. Activate the plugin from your wordpress administration area (under the plugins section). +1. You should thee should now be able to use JC Submenu Plugin. +1. Optional - If your theme already has a custom walker specified for outputing your menu, JC Submenu will not automatically override it, to do this locate the file your theme outputs the menu (usually header.php) and look for "wp\_nav\_menu()", and pass an extra argument so it looks similar: + +`wp_nav_menu(array('walker' => new JC_Submenu_Nav_Walker()));` + +For further documentation on installing and using JC Submneu features can be found [here](http://jamescollings.co.uk/wordpress-plugins/jc-submenu/). + +== Frequently asked questions == + += How do i use the split menu functionality = + +The documentation for using the split menu functionality (widget, shortcode, action) can be found [here](http://jamescollings.co.uk/jc-submenu/resources/output-split-menu-section/) + += How do i output a section of menu = + +The documentation for displaying a section of menu (widget, shortcode, action) can be found [here](http://jamescollings.co.uk/jc-submenu/resources/how-to-output-a-section-of-a-wordpress-menu/) + += How do i automatically populate menu items = + +The documentation for automatically populating menu items can be found [here](http://jamescollings.co.uk/jc-submenu/resources/how-to-automatically-populate-wordpress-submenus/) + += What Actions and filters are avaliable in this plugin = + +A list of all actions and filters can be found [here](http://jamescollings.co.uk/jc-submenu/sections/actions-filters/) + + +== Screenshots == + +1. JC Submenu, Post population options +2. JC Submenu, Taxonomy population options +3. JC Submenu, Page children population options +4. JC Submenu, Advanced Submenu Widget Options + +== Changelog == + +**0.8.3** + +* Fix add_post_meta not set to unique when saving menu items, causing multiple entries to be saved. + +**0.8.2** + +* Fix filter jcs/enable_public_walker to actually be used, as before it was not able to be overwritten by themes only plugins + +**0.8.1** + +* Added jcs/split_menu/populated_elements, jcs/section_menu/populated_elements, jcs/populated_elements to allow modification of populated menu elements +* Updated Readme to be tested upto wp 4 + +**0.8** + +* Fix error when populating with an empty array of posts +* Add jcs/enable_public_walker filter to disable/enable the public walker to allow jc submenu be used with other custom walkers. +* Add jcs/split_widget_title to overwrite split menu title +* Add {{PARENT_TITLE}} template tags to show the active parent item in the split menu widget. + +**0.7.2** + +* Added filter to change submenu level class jcs/menu_level_class, return array of classes +* Added the option to populate by post date archive +* Added post date archive grouping by year + +**0.7.1** + +* Fixed infinite loop error when passed badly formed menu items. + +**0.7** + +* Simplified dynamic menu population +* Added the ability to replace the current item with dynamically populated items + +**0.6.2** + +* Fixed clone() warning +* Added trigger_depth to split menu +* Fixed Menu Ordering +* Updated FAQ Section + +**0.6.1** + +* Renamed filter from jci/menu_item_args to jcs/menu_item_args + +**0.6** + +* Add menu item filters jcs/item_title, jcs/item_url, jcs/page_item_title, jcs/page_item_url, jcs/post_item_title, jcs/post_item_url, jcs/term_item_title, jcs/term_item_url +* Add admin-menu notice to show if item is dynamically populated +* Add compatability to other plugins who use a custom admin walker +* Add setting to disable ajax menu edit +* Add menu item argument filters jci/menu_item_args to allow customisation of output per item + +**0.5.5** + +* Add class filter jcs/item_classes +* Add class filter jcs/term_item_classes +* Add class filter jcs/post_item_classes +* Add class filter jcs/page_item_classes +* Add WP_Query arguments filter jcs/post_query_args, jcs/post_$menu-item-id_query_args +* Add get_pages arguments filter jcs/page_query_args, jcs/page_$menu-item-id_query_args +* Add get_terms arguments filter jcs/term_query_args, jcs/term_$menu-item-id_query_args +* Ouput post_type with hierarchy +* Removed php strict warnings + +**0.5.4** + +* Added option into populate by taxonomy to set the term parent + +**0.5.3** + +* Removed PHP Warning for imploding false in exclude terms list +* Remove PHP Warning for missing array in exclude pages list + +**0.5.2** + +* Fixed SubmenuWalker replaces order_by with orderby +* Added in basic CSV input taxonomy term exclusion. + +**0.5** + +* Added option to limit taxonomy depth +* Added option to exclude child pages +* Added Split menu shortcode +* Added Menu section shortcode +* Fixed possible function conflict +* Fixed menu depth +* Fixed split menu +* Fixed menu section +* Fixed post_type / page with taxonomy not highlighting menu item + +**0.4.1** + +* Added child page order support +* Fixed Javascript jumping bug +* Added version to js,css to fix cache problem +* Added documentation notification link on plugin update +* Added Menu Section Widget + +**0.4** + +* Added Split menu output action jcs/split_menu, Menu Section output action jcs/split_menu to allow theme developers to output submenus. + +**0.3** + +* Split Menu Widget Added + +**0.2** + +* Interface update +* Custom post type population can now be filtered by a Taxonomy +* Javascript update +* Compatability with wordpress 3.6 + + +== Upgrade notice == diff --git a/screenshot-1.png b/screenshot-1.png new file mode 100644 index 0000000000000000000000000000000000000000..d8fab1149d095a44993ce1e3b7106736a228be29 GIT binary patch literal 51267 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 b`xET=X?bEq!Rv1?fS;_Sl0=!9(TD#AI>xX| literal 0 HcmV?d00001 diff --git a/screenshot-2.png b/screenshot-2.png new file mode 100644 index 0000000000000000000000000000000000000000..eea7d1c84fbbc78e0fe30497596eb889f3ce0334 GIT binary patch literal 44728 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
k40g|Rf%ut7phNk$$ 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%0AFqSpnNIwq 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⪚M={5izQgI;+)1#_GxM%?U|lCS;GBaJ<;14(`WEH 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 ZT|y#q>FS)2#Pk{9GSJ1KN|3hU{{j2RWBmXC literal 0 HcmV?d00001 diff --git a/screenshot-4.png b/screenshot-4.png new file mode 100644 index 0000000000000000000000000000000000000000..8166e51db0b1a664b0e868671629faa7bd301eec GIT binary patch literal 27487 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 A`2YX_ literal 0 HcmV?d00001 diff --git a/submenu.php b/submenu.php new file mode 100644 index 0000000..e45bdff --- /dev/null +++ b/submenu.php @@ -0,0 +1,279 @@ + + * @version 0.8.3 + */ +class JCSubmenu{ + + var $version = '0.8.3'; + var $version_check = 70; + var $plugin_dir = false; + var $plugin_url = false; + var $prefix = 'jc-submenu'; + var $edit_walker = false; + var $public_walker = true; + + /** + * Setup plugin + * @return void + */ + function __construct(){ + + $this->plugin_dir = plugin_dir_path( __FILE__ ); + $this->plugin_url = plugins_url( '/', __FILE__ ); + + $this->load_modules(); + + // add plugin hooks + add_action('jcs/menu_section', array($this, 'output_menu_section'), 10, 2); + add_action('jcs/split_menu', array($this, 'output_split_menu'), 10, 2); + + // add plugin shortcodes + add_shortcode( 'jcs_split_menu', array($this, 'split_menu_shortcode') ); + add_shortcode( 'jcs_menu_section', array($this, 'menu_section_shortcode') ); + + // init menu attachment + add_action('init', array($this, 'init')); + } + + /** + * Set which type of attachment is used + * @return void + */ + public function init(){ + + $this->public_walker = apply_filters('jcs/enable_public_walker', false ); + + if(!$this->public_walker){ + add_filter( 'wp_nav_menu_objects', array( $this, 'populate_menu_items' )); + }else{ + add_filter( 'wp_nav_menu_args', array( $this, 'attach_menu_walker' )); + } + } + + /** + * Attach custom nav walker + * + * Hook into theme menu, attach custom walker + * + * @param array $args + * @return array + */ + function attach_menu_walker($args){ + if(empty($args['walker'])){ + $args['walker'] = new JC_Submenu_Nav_Walker(); + } + return $args; + } + + /** + * Add menu items without using a custom walker + * + * @param array $menu_items + * @return array new menu items + */ + function populate_menu_items($menu_items = array()){ + + $walker = new JC_Submenu_Nav_Walker(); + $menu_items = $walker->attach_elements($menu_items); + $menu_items = $walker->_process_menu($menu_items); + + return $menu_items; + } + + /** + * Load Required Modules + * @return void + */ + function load_modules(){ + + include 'walkers/AdminMenuWalker.php'; + include 'walkers/SubmenuWalker.php'; + include 'walkers/DropdownWalker.php'; + include 'widgets/SectionMenuWidget.php'; + include 'widgets/SplitMenuWidget.php'; + include 'SubmenuModel.php'; + SubmenuModel::init($this); + + include 'SubmenuAdmin.php'; + new SubmenuAdmin($this); + } + + /** + * Slit Menu Section Shortcode + * + * Display a dynamic split menu section via wordpress shortcode tags + * + * @param array $atts + * @return string + */ + function split_menu_shortcode($atts){ + extract(shortcode_atts( array( + 'hierarchy' => 1, + 'start' => 0, + 'depth' => 5, + 'show_parent' => 0, + 'menu' => false, + 'trigger_depth' => 0 + ), $atts )); + + if(!$menu) + return false; + + ob_start(); + + do_action('jcs/split_menu', $menu, array( + 'hierarchy' => $hierarchy, + 'start' => $start, + 'depth' => $depth, + 'show_parent' => $show_parent, + 'trigger_depth' => $trigger_depth + )); + + $output = ob_get_contents(); + ob_end_clean(); + return $output; + } + + /** + * Menu Section Shortcode + * + * Display section of menu via wordpress shortcode tags + * + * @param array $atts + * @return string + */ + function menu_section_shortcode($atts){ + extract(shortcode_atts( array( + 'hierarchy' => 1, + 'start' => 0, + 'depth' => 5, + 'show_parent' => 0, + 'menu' => false + ), $atts )); + + if(!$menu) + return false; + + ob_start(); + + do_action('jcs/menu_section', $menu, array( + 'hierarchy' => $hierarchy, + 'start' => $start, + 'depth' => $depth, + 'show_parent' => $show_parent, + )); + + $output = ob_get_contents(); + ob_end_clean(); + return $output; + } + + /** + * Output menu section + * + * Display a section of the selected menu in your theme + * + * @param string $menu + * @param array $args + * @return void + */ + function output_menu_section($menu, $args = array()){ + + $debug = isset($args['debug']) ? $args['debug'] : false; + $hierarchical = isset($args['hierarchy']) ? $args['hierarchy'] : 1; + $start = isset($args['start']) ? $args['start'] : 0; + $depth = isset($args['depth']) ? $args['depth'] : 5; + $show_parent = isset($args['show_parent']) ? $args['show_parent'] : 0; + + $options = array('menu' => $menu, 'walker' => new JC_Submenu_Nav_Walker(array( + 'debug' => $debug, + 'section_menu' => true, + 'menu_item' => $start, + 'menu_depth' => $depth, + 'show_parent' => $show_parent + )) + ); + + if(isset($args['menu_class'])) + $options['menu_class'] = $args['menu_class']; + + if(isset($args['menu_id'])) + $options['menu_id'] = $args['menu_id']; + + if(isset($args['container'])) + $options['container'] = $args['container']; + + if(isset($args['container_id'])) + $options['container_id'] = $args['container_id']; + + if(isset($args['container_class'])) + $options['container_class'] = $args['container_class']; + + wp_nav_menu($options); + } + + /** + * Output Split Menu + * + * Display a dynamic section of the selected menu in your theme relative to your current page + * + * @param string $menu + * @param array $args + * @return void + */ + function output_split_menu($menu, $args = array()){ + + $hierarchical = isset($args['hierarchy']) ? $args['hierarchy'] : 1; + $menu_start = isset($args['start']) ? $args['start'] : 1; + $menu_depth = isset($args['depth']) ? $args['depth'] : 5; + $show_parent = isset($args['show_parent']) ? $args['show_parent'] : 0; + $trigger_depth = isset($args['trigger_depth']) ? $args['trigger_depth'] : 0; + $parent_label = isset($args['parent_label']) ? $args['parent_label'] : false; + + $options = array( + 'menu' => $menu, 'walker' => new JC_Submenu_Nav_Walker(array( + 'hierarchical' => $hierarchical, + 'menu_start' => $menu_start, + 'menu_depth' => $menu_depth, + 'show_parent' => $show_parent, + 'trigger_depth' => $trigger_depth, + 'parent_label' => $parent_label, + 'split_menu' => true + )) + ); + + if(isset($args['menu_class'])) + $options['menu_class'] = $args['menu_class']; + + if(isset($args['menu_id'])) + $options['menu_id'] = $args['menu_id']; + + if(isset($args['container'])) + $options['container'] = $args['container']; + + if(isset($args['container_id'])) + $options['container_id'] = $args['container_id']; + + if(isset($args['container_class'])) + $options['container_class'] = $args['container_class']; + + wp_nav_menu($options); + } +} + +$GLOBALS['jcsubmenu'] = new JCSubmenu(); +?> \ No newline at end of file diff --git a/tests/DynamicItemsTest.php b/tests/DynamicItemsTest.php new file mode 100644 index 0000000..67330df --- /dev/null +++ b/tests/DynamicItemsTest.php @@ -0,0 +1,510 @@ +submenu = $GLOBALS['jcsubmenu']; + } + + function testElementDepths(){ + $walker = new JC_Submenu_Nav_Walker(); + + $elements = array( + (object)array( + 'menu_item_parent' => 0, + 'db_id' => 1, + ), + // lvl 1 + (object)array( + 'menu_item_parent' => 1, + 'db_id' => 2, + ), + (object)array( + 'menu_item_parent' => 1, + 'db_id' => 3, + ), + (object)array( + 'menu_item_parent' => 1, + 'db_id' => 4, + ), + // lvl 2 + (object)array( + 'menu_item_parent' => 2, + 'db_id' => 5, + ), + (object)array( + 'menu_item_parent' => 2, + 'db_id' => 6, + ), + // lvl 3 + (object)array( + 'menu_item_parent' => 5, + 'db_id' => 7, + ), + (object)array( + 'menu_item_parent' => 6, + 'db_id' => 8, + ), + ); + + $output = $walker->set_elements_depth($elements); + $this->assertEquals(8, count($elements)); + $this->assertEquals($elements[0]->depth, 0); + $this->assertEquals($elements[1]->depth, 1); + $this->assertEquals($elements[2]->depth, 1); + $this->assertEquals($elements[3]->depth, 1); + $this->assertEquals($elements[4]->depth, 2); + $this->assertEquals($elements[5]->depth, 2); + $this->assertEquals($elements[6]->depth, 3); + $this->assertEquals($elements[7]->depth, 3); + } + + function testElementState01(){ + + $walker = new JC_Submenu_Nav_Walker(); + + /** + * Top level parent + */ + + $elements = array( + (object)array( + 'menu_item_parent' => 0, + 'db_id' => 1, + 'current' => 1 + ), + // lvl 1 + (object)array( + 'menu_item_parent' => 1, + 'db_id' => 2, + ), + (object)array( + 'menu_item_parent' => 1, + 'db_id' => 3, + ), + (object)array( + 'menu_item_parent' => 1, + 'db_id' => 4, + ), + // lvl 2 + (object)array( + 'menu_item_parent' => 2, + 'db_id' => 5, + ), + (object)array( + 'menu_item_parent' => 2, + 'db_id' => 6, + ), + // lvl 3 + (object)array( + 'menu_item_parent' => 5, + 'db_id' => 7, + ), + (object)array( + 'menu_item_parent' => 6, + 'db_id' => 8, + ), + ); + + $result = array( + (object)array( + 'menu_item_parent' => 0, + 'db_id' => 1, + 'current' => 1, + 'split_section' => 1 + ), + // lvl 1 + (object)array( + 'menu_item_parent' => 1, + 'db_id' => 2, + ), + (object)array( + 'menu_item_parent' => 1, + 'db_id' => 3, + ), + (object)array( + 'menu_item_parent' => 1, + 'db_id' => 4, + ), + // lvl 2 + (object)array( + 'menu_item_parent' => 2, + 'db_id' => 5, + ), + (object)array( + 'menu_item_parent' => 2, + 'db_id' => 6, + ), + // lvl 3 + (object)array( + 'menu_item_parent' => 5, + 'db_id' => 7, + ), + (object)array( + 'menu_item_parent' => 6, + 'db_id' => 8, + ), + ); + + $output = $walker->_set_elements_state($elements); + $this->assertEquals($result, $output); + } + + function testElementState02(){ + + $walker = new JC_Submenu_Nav_Walker(); + + /** + * Second level parent + */ + $elements = array( + (object)array( + 'menu_item_parent' => 0, + 'db_id' => 1, + ), + // lvl 1 + (object)array( + 'menu_item_parent' => 1, + 'db_id' => 2, + 'current' => 1 + ), + (object)array( + 'menu_item_parent' => 1, + 'db_id' => 3, + ), + (object)array( + 'menu_item_parent' => 1, + 'db_id' => 4, + ), + // lvl 2 + (object)array( + 'menu_item_parent' => 2, + 'db_id' => 5, + ), + (object)array( + 'menu_item_parent' => 2, + 'db_id' => 6, + ), + // lvl 3 + (object)array( + 'menu_item_parent' => 5, + 'db_id' => 7, + ), + (object)array( + 'menu_item_parent' => 6, + 'db_id' => 8, + ), + ); + $result = array( + (object)array( + 'menu_item_parent' => 0, + 'db_id' => 1, + 'classes' => array('current-menu-parent', 'current-menu-ancestor'), + 'current_item_ancestor' => 1, + 'current_item_parent' => 1, + 'split_section' => 1 + ), + // lvl 1 + (object)array( + 'menu_item_parent' => 1, + 'db_id' => 2, + 'current' => 1, + 'split_section' => 1 + ), + (object)array( + 'menu_item_parent' => 1, + 'db_id' => 3, + ), + (object)array( + 'menu_item_parent' => 1, + 'db_id' => 4, + ), + // lvl 2 + (object)array( + 'menu_item_parent' => 2, + 'db_id' => 5, + ), + (object)array( + 'menu_item_parent' => 2, + 'db_id' => 6, + ), + // lvl 3 + (object)array( + 'menu_item_parent' => 5, + 'db_id' => 7, + ), + (object)array( + 'menu_item_parent' => 6, + 'db_id' => 8, + ), + ); + + $output = $walker->_set_elements_state($elements); + $this->assertEquals($result, $output); + } + + function testElementState03(){ + + $walker = new JC_Submenu_Nav_Walker(); + + /** + * Third level parent + */ + $elements = array( + (object)array( + 'menu_item_parent' => 0, + 'db_id' => 1, + ), + // lvl 1 + (object)array( + 'menu_item_parent' => 1, + 'db_id' => 2, + + ), + (object)array( + 'menu_item_parent' => 1, + 'db_id' => 3, + ), + (object)array( + 'menu_item_parent' => 1, + 'db_id' => 4, + ), + // lvl 2 + (object)array( + 'menu_item_parent' => 2, + 'db_id' => 5, + 'current' => 1 + ), + (object)array( + 'menu_item_parent' => 2, + 'db_id' => 6, + ), + // lvl 3 + (object)array( + 'menu_item_parent' => 5, + 'db_id' => 7, + ), + (object)array( + 'menu_item_parent' => 6, + 'db_id' => 8, + ), + ); + $result = array( + (object)array( + 'menu_item_parent' => 0, + 'db_id' => 1, + 'classes' => array('current-menu-ancestor'), + 'split_section' => 1, + 'current_item_ancestor' => 1, + ), + // lvl 1 + (object)array( + 'menu_item_parent' => 1, + 'db_id' => 2, + 'classes' => array('current-menu-parent', 'current-menu-ancestor'), + 'current_item_parent' => 1, + 'current_item_ancestor' => 1, + 'split_section' => 1 + ), + (object)array( + 'menu_item_parent' => 1, + 'db_id' => 3, + ), + (object)array( + 'menu_item_parent' => 1, + 'db_id' => 4, + ), + // lvl 2 + (object)array( + 'menu_item_parent' => 2, + 'db_id' => 5, + 'current' => 1, + 'split_section' => 1 + ), + (object)array( + 'menu_item_parent' => 2, + 'db_id' => 6, + ), + // lvl 3 + (object)array( + 'menu_item_parent' => 5, + 'db_id' => 7, + ), + (object)array( + 'menu_item_parent' => 6, + 'db_id' => 8, + ), + ); + + $output = $walker->_set_elements_state($elements); + $this->assertEquals($result, $output); + + } + + function testElementState04(){ + + $walker = new JC_Submenu_Nav_Walker(); + /** + * Fourth Level Parent + */ + $elements = array( + (object)array( + 'menu_item_parent' => 0, + 'db_id' => 1, + ), + // lvl 1 + (object)array( + 'menu_item_parent' => 1, + 'db_id' => 2, + + ), + (object)array( + 'menu_item_parent' => 1, + 'db_id' => 3, + ), + (object)array( + 'menu_item_parent' => 1, + 'db_id' => 4, + ), + // lvl 2 + (object)array( + 'menu_item_parent' => 2, + 'db_id' => 5, + + ), + (object)array( + 'menu_item_parent' => 2, + 'db_id' => 6, + ), + // lvl 3 + (object)array( + 'menu_item_parent' => 5, + 'db_id' => 7, + 'current' => 1 + ), + (object)array( + 'menu_item_parent' => 6, + 'db_id' => 8, + ), + // no parent + (object)array( + 'menu_item_parent' => 9, + 'db_id' => 9, + ), + ); + $result = array( + (object)array( + 'menu_item_parent' => 0, + 'db_id' => 1, + 'classes' => array('current-menu-ancestor'), + 'current_item_ancestor' => 1, + 'split_section' => 1 + ), + // lvl 1 + (object)array( + 'menu_item_parent' => 1, + 'db_id' => 2, + 'classes' => array('current-menu-ancestor'), + 'current_item_ancestor' => 1, + 'split_section' => 1 + ), + (object)array( + 'menu_item_parent' => 1, + 'db_id' => 3, + ), + (object)array( + 'menu_item_parent' => 1, + 'db_id' => 4, + ), + // lvl 2 + (object)array( + 'menu_item_parent' => 2, + 'db_id' => 5, + 'classes' => array('current-menu-parent', 'current-menu-ancestor'), + 'current_item_ancestor' => 1, + 'current_item_parent' => 1, + 'split_section' => 1 + ), + (object)array( + 'menu_item_parent' => 2, + 'db_id' => 6, + ), + // lvl 3 + (object)array( + 'menu_item_parent' => 5, + 'db_id' => 7, + 'current' => 1, + 'split_section' => 1 + ), + (object)array( + 'menu_item_parent' => 6, + 'db_id' => 8, + ), + // no parent + (object)array( + 'menu_item_parent' => 9, + 'db_id' => 9, + ), + ); + + $output = $walker->_set_elements_state($elements); + $this->assertEquals($result, $output); + } + + /** + * Test Single Menu Item who is current + */ + function testElementState05(){ + + $walker = new JC_Submenu_Nav_Walker(); + /** + * Fourth Level Parent + */ + $elements = array( + (object)array( + 'menu_item_parent' => 0, + 'db_id' => 1, + 'current' => 1 + ) + ); + $result = array( + (object)array( + 'menu_item_parent' => 0, + 'db_id' => 1, + 'current' => 1, + 'split_section' => 1 + ) + ); + + $output = $walker->_set_elements_state($elements); + $this->assertEquals($result, $output); + } + + /** + * Test Single Menu Item not current + */ + function testElementState06(){ + + $walker = new JC_Submenu_Nav_Walker(); + + $elements = array( + (object)array( + 'menu_item_parent' => 0, + 'db_id' => 1, + ) + ); + $result = array( + (object)array( + 'menu_item_parent' => 0, + 'db_id' => 1, + ) + ); + + $output = $walker->_set_elements_state($elements); + $this->assertEquals($result, $output); + } +} + +?> \ No newline at end of file diff --git a/tests/SectionMenuTest.php b/tests/SectionMenuTest.php new file mode 100644 index 0000000..f80c3e5 --- /dev/null +++ b/tests/SectionMenuTest.php @@ -0,0 +1,177 @@ +submenu = $GLOBALS['jcsubmenu']; + } + + /** + * Basic Menu Section 1/2 + */ + function testSectionMenu01(){ + + $walker = new JC_Submenu_Nav_Walker(array('menu_item' => 1, 'menu_depth' => 1)); + + $elements = array( + (object)array( + 'menu_item_parent' => 0, + 'db_id' => 1, + 'current' => 1 + ), + (object)array( + 'menu_item_parent' => 0, + 'db_id' => 2, + ), + (object)array( + 'menu_item_parent' => 1, + 'db_id' => 3, + ), + (object)array( + 'menu_item_parent' => 2, + 'db_id' => 4, + ), + ); + $result = array( + (object)array( + 'menu_item_parent' => 1, + 'db_id' => 3, + 'menu_depth' => 1 + ), + ); + + $elements = $walker->set_elements_depth($elements, 0, true); + $output = $walker->_process_menu_section($elements); + $this->assertEquals($result, $output); + } + + /** + * Basic Menu Section 2/2 + */ + function testSectionMenu02(){ + + $walker = new JC_Submenu_Nav_Walker(array('menu_item' => 2, 'menu_depth' => 1)); + + $elements = array( + (object)array( + 'menu_item_parent' => 0, + 'db_id' => 1, + 'current' => 1 + ), + (object)array( + 'menu_item_parent' => 0, + 'db_id' => 2, + ), + (object)array( + 'menu_item_parent' => 1, + 'db_id' => 3, + ), + (object)array( + 'menu_item_parent' => 2, + 'db_id' => 4, + ), + ); + $result = array( + (object)array( + 'menu_item_parent' => 2, + 'db_id' => 4, + 'menu_depth' => 1 + ), + ); + + $elements = $walker->set_elements_depth($elements, 0, true); + $output = $walker->_process_menu_section($elements); + $this->assertEquals($result, $output); + } + + /** + * Test Show Parent 1/2 + */ + function testSectionMenu03(){ + + $walker = new JC_Submenu_Nav_Walker(array('menu_item' => 1, 'menu_depth' => 1, 'show_parent' => 1)); + + $elements = array( + (object)array( + 'menu_item_parent' => 0, + 'db_id' => 1, + 'current' => 1 + ), + (object)array( + 'menu_item_parent' => 0, + 'db_id' => 2, + ), + (object)array( + 'menu_item_parent' => 1, + 'db_id' => 3, + ), + (object)array( + 'menu_item_parent' => 2, + 'db_id' => 4, + ), + ); + $result = array( + (object)array( + 'menu_item_parent' => 0, + 'db_id' => 1, + 'current' => 1, + 'menu_depth' => 0 + ), + (object)array( + 'menu_item_parent' => 1, + 'db_id' => 3, + 'menu_depth' => 1 + ), + ); + + $elements = $walker->set_elements_depth($elements, 0, true); + $output = $walker->_process_menu_section($elements); + $this->assertEquals($result, $output); + } + + /** + * Test Show Parent 2/2 + */ + function testSectionMenu04(){ + + $walker = new JC_Submenu_Nav_Walker(array('menu_item' => 2, 'menu_depth' => 1, 'show_parent' => 1)); + + $elements = array( + (object)array( + 'menu_item_parent' => 0, + 'db_id' => 1, + 'current' => 1 + ), + (object)array( + 'menu_item_parent' => 0, + 'db_id' => 2, + ), + (object)array( + 'menu_item_parent' => 1, + 'db_id' => 3, + ), + (object)array( + 'menu_item_parent' => 2, + 'db_id' => 4, + ), + ); + $result = array( + (object)array( + 'menu_item_parent' => 0, + 'db_id' => 2, + 'menu_depth' => 0 + ), + (object)array( + 'menu_item_parent' => 2, + 'db_id' => 4, + 'menu_depth' => 1 + ), + ); + + $elements = $walker->set_elements_depth($elements, 0, true); + $output = $walker->_process_menu_section($elements); + $this->assertEquals($result, $output); + } +} + +?> \ No newline at end of file diff --git a/tests/SplitMenuTest.php b/tests/SplitMenuTest.php new file mode 100644 index 0000000..200e524 --- /dev/null +++ b/tests/SplitMenuTest.php @@ -0,0 +1,577 @@ +submenu = $GLOBALS['jcsubmenu']; + } + + public function stripResults($elements){ + foreach($elements as $elm){ + if(isset($elm->classes)){ + unset($elm->classes); + } + if(isset($elm->current_item_ancestor)){ + unset($elm->current_item_ancestor); + } + if(isset($elm->current_item_parent)){ + unset($elm->current_item_parent); + } + } + return $elements; + } + + public function orderItems($elements){ + usort($elements, array($this, 'usortElement')); + return $elements; + } + + public function usortElement($a, $b){ + return $a->db_id - $b->db_id; + } + + /** + * Top Level Split Test 1/2 + * Test a basic split menu from menu item 1 + */ + public function testSplitMenu01(){ + + $elements = array( + (object)array( + 'menu_item_parent' => 0, + 'db_id' => 1, + 'current' => 1 + ), + (object)array( + 'menu_item_parent' => 0, + 'db_id' => 2, + ), + // lvl 1 + (object)array( + 'menu_item_parent' => 1, + 'db_id' => 3, + ), + (object)array( + 'menu_item_parent' => 1, + 'db_id' => 4, + ), + (object)array( + 'menu_item_parent' => 2, + 'db_id' => 5, + ), + (object)array( + 'menu_item_parent' => 2, + 'db_id' => 6, + ), + (object)array( + 'menu_item_parent' => 2, + 'db_id' => 7, + ), + ); + $result = array( + (object)array( + 'menu_item_parent' => 0, + 'db_id' => 1, + 'current' => 1, + 'split_section' => 1, + 'menu_depth' => 0 + ), + // lvl 1 + (object)array( + 'menu_item_parent' => 1, + 'db_id' => 3, + 'menu_depth' => 1 + ), + (object)array( + 'menu_item_parent' => 1, + 'db_id' => 4, + 'menu_depth' => 1 + ), + ); + + $walker = new JC_Submenu_Nav_Walker(array('split_menu' => true, 'menu_start' => 1 )); + + $elements = $walker->_set_elements_state($elements); + $elements = $walker->set_elements_depth($elements, 0, true); + $output = $walker->_process_split_menu($elements); + + $this->assertEquals($this->orderItems($result), $this->orderItems($output)); + } + + /** + * Top Leve Split Test 2/2 + * Test a basic split menu from menu item 2 + */ + public function testSplitMenu02(){ + + $elements = array( + (object)array( + 'menu_item_parent' => 0, + 'db_id' => 1, + ), + (object)array( + 'menu_item_parent' => 0, + 'db_id' => 2, + 'current' => 1 + ), + // lvl 1 + (object)array( + 'menu_item_parent' => 1, + 'db_id' => 3, + ), + (object)array( + 'menu_item_parent' => 1, + 'db_id' => 4, + ), + (object)array( + 'menu_item_parent' => 2, + 'db_id' => 5, + ), + (object)array( + 'menu_item_parent' => 2, + 'db_id' => 6, + ), + (object)array( + 'menu_item_parent' => 2, + 'db_id' => 7, + ), + ); + + $result = array( + (object)array( + 'menu_item_parent' => 0, + 'db_id' => 2, + 'current' => 1, + 'menu_depth' => 0, + 'split_section' => 1 + ), + (object)array( + 'menu_item_parent' => 2, + 'db_id' => 5, + 'menu_depth' => 1, + ), + (object)array( + 'menu_item_parent' => 2, + 'db_id' => 6, + 'menu_depth' => 1, + ), + (object)array( + 'menu_item_parent' => 2, + 'db_id' => 7, + 'menu_depth' => 1, + ), + ); + + $walker = new JC_Submenu_Nav_Walker(array('split_menu' => true, 'menu_start' => 1 )); + + $elements = $walker->_set_elements_state($elements); + $elements = $walker->set_elements_depth($elements, 0, true); + $output = $walker->_process_split_menu($elements); + + $this->assertEquals($this->orderItems($result), $this->orderItems($output)); + } + + /** + * Top Level Split Test with parent 1/2 + * Test a basic split menu from menu item 1 + */ + public function testSplitMenu03(){ + + $elements = array( + (object)array( + 'menu_item_parent' => 0, + 'db_id' => 1, + ), + (object)array( + 'menu_item_parent' => 0, + 'db_id' => 2, + ), + // lvl 1 + (object)array( + 'menu_item_parent' => 1, + 'db_id' => 3, + 'current' => 1 + ), + (object)array( + 'menu_item_parent' => 1, + 'db_id' => 4, + ), + (object)array( + 'menu_item_parent' => 2, + 'db_id' => 5, + ), + (object)array( + 'menu_item_parent' => 2, + 'db_id' => 6, + ), + (object)array( + 'menu_item_parent' => 2, + 'db_id' => 7, + ), + ); + + $result = array( + (object)array( + 'menu_item_parent' => 0, + 'db_id' => 1, + 'split_section' => 1, + 'menu_depth' => 0, + ), + // lvl 1 + (object)array( + 'menu_item_parent' => 1, + 'db_id' => 3, + 'menu_depth' => 1, + 'current' => 1, + 'split_section' => 1, + ), + (object)array( + 'menu_item_parent' => 1, + 'db_id' => 4, + 'menu_depth' => 1 + ), + ); + + $walker = new JC_Submenu_Nav_Walker(array('split_menu' => true, 'menu_start' => 1 )); + + $elements = $walker->_set_elements_state($elements); + $elements = $walker->set_elements_depth($elements, 0, true); + $output = $walker->_process_split_menu($elements); + + $output = $this->stripResults($output); + $this->assertEquals($this->orderItems($result), $this->orderItems($output)); + + } + + /** + * Top Leve Split Test with parent 2/2 + * Test a basic split menu from menu item 2 + */ + public function testSplitMenu04(){ + + $elements = array( + (object)array( + 'menu_item_parent' => 0, + 'db_id' => 1, + ), + (object)array( + 'menu_item_parent' => 0, + 'db_id' => 2, + ), + // lvl 1 + (object)array( + 'menu_item_parent' => 1, + 'db_id' => 3, + ), + (object)array( + 'menu_item_parent' => 1, + 'db_id' => 4, + ), + (object)array( + 'menu_item_parent' => 2, + 'db_id' => 5, + 'current' => 1 + ), + (object)array( + 'menu_item_parent' => 2, + 'db_id' => 6, + ), + (object)array( + 'menu_item_parent' => 2, + 'db_id' => 7, + ), + ); + + $result = array( + (object)array( + 'menu_item_parent' => 0, + 'db_id' => 2, + 'menu_depth' => 0, + 'split_section' => 1 + ), + (object)array( + 'menu_item_parent' => 2, + 'db_id' => 5, + 'menu_depth' => 1, + 'current' => 1, + 'split_section' => 1 + ), + (object)array( + 'menu_item_parent' => 2, + 'db_id' => 6, + 'menu_depth' => 1, + ), + (object)array( + 'menu_item_parent' => 2, + 'db_id' => 7, + 'menu_depth' => 1, + ), + ); + + $walker = new JC_Submenu_Nav_Walker(array('split_menu' => true, 'menu_start' => 1 )); + + $elements = $walker->_set_elements_state($elements); + $elements = $walker->set_elements_depth($elements, 0, true); + $output = $walker->_process_split_menu($elements); + + $output = $this->stripResults($output); + $this->assertEquals($this->orderItems($result), $this->orderItems($output)); + + } + + /** + * First child split menu test 1/2 + */ + public function testSplitMenu05(){ + + $elements = array( + (object)array( + 'menu_item_parent' => 0, + 'db_id' => 1, + ), + (object)array( + 'menu_item_parent' => 0, + 'db_id' => 2, + + ), + // lvl 1 + (object)array( + 'menu_item_parent' => 1, + 'db_id' => 3, + ), + (object)array( + 'menu_item_parent' => 1, + 'db_id' => 4, + 'current' => 1 + ), + (object)array( + 'menu_item_parent' => 2, + 'db_id' => 5, + ), + (object)array( + 'menu_item_parent' => 2, + 'db_id' => 6, + ), + (object)array( + 'menu_item_parent' => 2, + 'db_id' => 7, + ), + ); + + $result = array( + (object)array( + 'menu_item_parent' => 0, + 'db_id' => 1, + 'split_section' => 1, + 'menu_depth' => 0, + ), + // lvl 1 + (object)array( + 'menu_item_parent' => 1, + 'db_id' => 3, + 'menu_depth' => 1, + ), + (object)array( + 'menu_item_parent' => 1, + 'db_id' => 4, + 'current' => 1, + 'split_section' => 1, + 'menu_depth' => 1, + ), + ); + + $walker = new JC_Submenu_Nav_Walker(array('split_menu' => true, 'trigger_depth' => 0, 'menu_start' => 1, 'menu_depth' => 1, 'show_parent' => false)); + + $elements = $walker->_set_elements_state($elements); + $elements = $walker->set_elements_depth($elements, 0, true); + $output = $walker->_process_split_menu($elements); + + $output = $this->stripResults($output); + $this->assertEquals($this->orderItems($result), $this->orderItems($output)); + + } + + /** + * First child split menu test 2/2 + */ + public function testSplitMenu06(){ + + $elements = array( + (object)array( + 'menu_item_parent' => 0, + 'db_id' => 1, + ), + (object)array( + 'menu_item_parent' => 0, + 'db_id' => 2, + + ), + // lvl 1 + (object)array( + 'menu_item_parent' => 1, + 'db_id' => 3, + ), + (object)array( + 'menu_item_parent' => 1, + 'db_id' => 4, + ), + (object)array( + 'menu_item_parent' => 2, + 'db_id' => 5, + ), + (object)array( + 'menu_item_parent' => 2, + 'db_id' => 6, + 'current' => 1 + ), + (object)array( + 'menu_item_parent' => 2, + 'db_id' => 7, + ), + ); + + $result = array( + (object)array( + 'menu_item_parent' => 0, + 'db_id' => 2, + 'split_section' => 1, + 'menu_depth' => 0, + ), + (object)array( + 'menu_item_parent' => 2, + 'db_id' => 5, + 'menu_depth' => 1, + ), + (object)array( + 'menu_item_parent' => 2, + 'db_id' => 6, + 'current' => 1, + 'split_section' => 1, + 'menu_depth' => 1, + ), + (object)array( + 'menu_item_parent' => 2, + 'db_id' => 7, + 'menu_depth' => 1, + ), + ); + + $walker = new JC_Submenu_Nav_Walker(array('split_menu' => true, 'trigger_depth' => 0, 'menu_start' => 1, 'menu_depth' => 1, 'show_parent' => false)); + + $elements = $walker->_set_elements_state($elements); + $elements = $walker->set_elements_depth($elements, 0, true); + $output = $walker->_process_split_menu($elements); + + $output = $this->stripResults($output); + $this->assertEquals($this->orderItems($result), $this->orderItems($output)); + + } + + /** + * Empty Split Menu Test + */ + public function testSplitMenu07(){ + + $elements = array( + (object)array( + 'menu_item_parent' => 0, + 'db_id' => 1, + ), + (object)array( + 'menu_item_parent' => 0, + 'db_id' => 2, + ), + // lvl 1 + (object)array( + 'menu_item_parent' => 1, + 'db_id' => 3, + ), + (object)array( + 'menu_item_parent' => 1, + 'db_id' => 4, + ), + (object)array( + 'menu_item_parent' => 2, + 'db_id' => 5, + ), + (object)array( + 'menu_item_parent' => 2, + 'db_id' => 6, + ), + (object)array( + 'menu_item_parent' => 2, + 'db_id' => 7, + ), + ); + + $walker = new JC_Submenu_Nav_Walker(array('split_menu' => true, 'trigger_depth' => 0, 'menu_start' => 1, 'menu_depth' => 1, 'show_parent' => false)); + + $elements = $walker->_set_elements_state($elements); + $elements = $walker->set_elements_depth($elements, 0, true); + $output = $walker->_process_split_menu($elements); + $this->assertEmpty($output); + } + + /** + * Test current item with missing parent item + */ + public function testSplitMenu08(){ + + $elements = array( + (object)array( + 'menu_item_parent' => 0, + 'db_id' => 1, + ), + (object)array( + 'menu_item_parent' => 0, + 'db_id' => 2, + ), + // lvl 1 + (object)array( + 'menu_item_parent' => 1, + 'db_id' => 3, + ), + (object)array( + 'menu_item_parent' => 1, + 'db_id' => 4, + ), + (object)array( + 'menu_item_parent' => 2, + 'db_id' => 5, + ), + (object)array( + 'menu_item_parent' => 2, + 'db_id' => 6, + ), + (object)array( + 'menu_item_parent' => 2, + 'db_id' => 7, + ), + (object)array( + 'menu_item_parent' => 8, + 'db_id' => 8, + 'current' => 1 + ), + ); + + $result = array( + (object)array( + 'menu_item_parent' => 8, + 'db_id' => 8, + 'current' => 1, + 'split_section' => 1 + ), + ); + + $walker = new JC_Submenu_Nav_Walker(array('split_menu' => true, 'trigger_depth' => 0, 'menu_start' => 1, 'menu_depth' => 1, 'show_parent' => false)); + + $elements = $walker->_set_elements_state($elements); + $elements = $walker->set_elements_depth($elements, 0, true); + $output = $walker->_process_split_menu($elements); + + $output = $this->stripResults($output); + $this->assertEquals($this->orderItems($result), $this->orderItems($output)); + } +} + +?> \ No newline at end of file diff --git a/tests/bootstrap.php b/tests/bootstrap.php new file mode 100644 index 0000000..733ef39 --- /dev/null +++ b/tests/bootstrap.php @@ -0,0 +1,16 @@ + array("jc-submenu/submenu.php" ), +); + +if( file_exists( $path ) ) { + require_once $path; +} else { + exit( "Couldn't find path to wordpress-tests/bootstrap.php\n" ); +} \ No newline at end of file diff --git a/views/edit.php b/views/edit.php new file mode 100644 index 0000000..bd26b77 --- /dev/null +++ b/views/edit.php @@ -0,0 +1,268 @@ +

+ +

+

+ +

+ + + + + \ No newline at end of file diff --git a/views/settings.php b/views/settings.php new file mode 100644 index 0000000..532f232 --- /dev/null +++ b/views/settings.php @@ -0,0 +1,16 @@ +
+

+

JC Submenu

+ +
+ +

+ +

+
+ +
\ No newline at end of file diff --git a/walkers/AdminMenuWalker.php b/walkers/AdminMenuWalker.php new file mode 100644 index 0000000..64086c4 --- /dev/null +++ b/walkers/AdminMenuWalker.php @@ -0,0 +1,205 @@ + $_wp_nav_menu_max_depth ? $depth : $_wp_nav_menu_max_depth; + + $indent = ( $depth ) ? str_repeat( "\t", $depth ) : ''; + + ob_start(); + $item_id = esc_attr( $item->ID ); + $removed_args = array( + 'action', + 'customlink-tab', + 'edit-menu-item', + 'menu-item', + 'page-tab', + '_wpnonce', + ); + + $original_title = ''; + if ( 'taxonomy' == $item->type ) { + $original_title = get_term_field( 'name', $item->object_id, $item->object, 'raw' ); + if ( is_wp_error( $original_title ) ) + $original_title = false; + } elseif ( 'post_type' == $item->type ) { + $original_object = get_post( $item->object_id ); + $original_title = $original_object->post_title; + } + + $classes = array( + 'menu-item menu-item-depth-' . $depth, + 'menu-item-' . esc_attr( $item->object ), + 'menu-item-edit-' . ( ( isset( $_GET['edit-menu-item'] ) && $item_id == $_GET['edit-menu-item'] ) ? 'active' : 'inactive'), + ); + + $title = $item->title; + + if ( ! empty( $item->_invalid ) ) { + $classes[] = 'menu-item-invalid'; + /* translators: %s: title of menu item which is invalid */ + $title = sprintf( __( '%s (Invalid)' ), $item->title ); + } elseif ( isset( $item->post_status ) && 'draft' == $item->post_status ) { + $classes[] = 'pending'; + /* translators: %s: title of menu item in draft status */ + $title = sprintf( __('%s (Pending)'), $item->title ); + } + + $title = empty( $item->label ) ? $title : $item->label; + + ?> +