Example #1
0
 /**
  * Creates a nav menu item and it's sub-menus. Used for initial creation of nav menus.
  *
  * @since Client Dash 1.6
  */
 public function populate_nav_menu()
 {
     // Get our POST data from AJAX
     $menu_item = $_POST['menu_item'];
     $menu_item_position = $_POST['menu_item_position'];
     $menu_ID = $_POST['menu_ID'];
     $role = $_POST['role'];
     // Get the role object (for capabilities)
     $role = get_role($role);
     // Deal with "Plugins" having an extra space
     $menu_item['menu_title'] = trim($menu_item['menu_title']);
     // Deal with "Plugins" having html
     if (strpos($menu_item['menu_title'], 'Plugins') !== false) {
         $menu_item['menu_title'] = 'Plugins';
     }
     // If icon is using "none" or "div", set accordingly
     if ($menu_item['icon_url'] == 'none' || $menu_item['icon_url'] == 'div') {
         unset($menu_item['icon_url']);
     }
     // Only add the item if the user is an administrator or if the user has the correct capabilities
     $no_parent = false;
     if ($role->has_cap('manage_options') || array_key_exists($menu_item['capability'], $role->capabilities)) {
         $args = ClientDash_Core_Page_Settings_Tab_Menus::sort_original_admin_menu($menu_item);
         // Predefined menu position
         $args['position'] = $menu_item_position;
         $ID = ClientDash_Core_Page_Settings_Tab_Menus::update_menu_item($menu_ID, 0, $args);
     } else {
         $no_parent = true;
     }
     // If there are submenus, cycle through them
     if (isset($menu_item['submenus']) && !empty($menu_item['submenus'])) {
         foreach ($menu_item['submenus'] as $position => $submenu_item) {
             if (!isset($ID)) {
                 continue;
             }
             // Pass over if current role doesn't have the capabilities, unless the role is an admin
             if (!$role->has_cap('manage_options') && !array_key_exists($submenu_item['capability'], $role->capabilities)) {
                 continue;
             }
             $args = ClientDash_Core_Page_Settings_Tab_Menus::sort_original_admin_menu($submenu_item, $menu_item);
             // Make it a child IF it has a parent, otherwise make it top-level
             if (!$no_parent) {
                 $args['parent-id'] = $ID;
                 $args['cd-submenu-parent'] = $submenu_item['parent_slug'];
             }
             // Predefined menu position
             $args['position'] = $position;
             ClientDash_Core_Page_Settings_Tab_Menus::update_menu_item($menu_ID, 0, $args);
         }
     }
     // We're done!
     die;
 }
Example #2
0
 /**
  * Allows filtering of the object's properties.
  *
  * @since Client Dash 1.6
  */
 private function filter_data()
 {
     /**
      * Add to this array in order to associate more custom data with each nav menu item. Default
      * menu item properties can be set here as well.
      *
      * @since Client Dash 1.6
      */
     self::$menu_item_defaults = apply_filters('cd_nav_menu_item_defaults', self::$menu_item_defaults);
     /**
      * Add or remove items from the CD default WP Core menu item list.
      *
      * @since Client Dash 1.6
      */
     self::$wp_core = apply_filters('cd_nav_menu_wp_core_items', self::$wp_core);
     /**
      * Allows extensions to add to the available side sortables.
      *
      * @since Client Dash 1.6.5
      */
     $this->side_sortables = apply_filters('cd_menus_side_sortables', $this->side_sortables);
 }