/** * Generate special menu templates and add them to the input template list. * * @param array $templates Template list. * @return array Modified template list. */ private function add_special_templates($templates) { //Add a special template for unclickable menu items. These can be used as headers and such. $itemDefaults = ameMenuItem::custom_item_defaults(); $unclickableDefaults = array_merge($itemDefaults, array('file' => '#' . ameMenuItem::unclickableTemplateClass, 'url' => '#' . ameMenuItem::unclickableTemplateClass, 'css_class' => $itemDefaults['css_class'] . ' ' . ameMenuItem::unclickableTemplateClass, 'menu_title' => 'Unclickable Menu')); $templates[ameMenuItem::unclickableTemplateId] = array('name' => '< None >', 'used' => true, 'defaults' => $unclickableDefaults); if ($this->is_pro_version()) { //The Pro version has a [wp-logout-url] shortcode. Lets make it easier o use //by adding it to the "Target page" dropdown. $logoutDefaults = array_merge(ameMenuItem::basic_defaults(), array('menu_title' => 'Logout', 'file' => '[wp-logout-url]', 'url' => '[wp-logout-url]', 'icon_url' => 'dashicons-migrate')); $templates['>logout'] = array('name' => 'Logout', 'used' => true, 'defaults' => $logoutDefaults); } return $templates; }
/** * Compress menu configuration (lossless). * * Reduces data size by storing commonly used properties and defaults in one place * instead of in every menu item. * * @param array $menu * @return array */ public static function compress($menu) { $property_dict = ameMenuItem::blank_menu(); unset($property_dict['defaults']); $common = array('properties' => $property_dict, 'basic_defaults' => ameMenuItem::basic_defaults(), 'custom_item_defaults' => ameMenuItem::custom_item_defaults()); $menu['tree'] = self::map_items($menu['tree'], array(__CLASS__, 'compress_item'), array($common)); $menu = self::add_format_header($menu); $menu['format']['compressed'] = true; $menu['format']['common'] = $common; return $menu; }