/** * Checks if a menu is a managed menu * * @param string $menu_name name of the menu item to check * * @return bool */ function menu_builder_is_managed_menu($menu_name) { if (empty($menu_name)) { return false; } $menus = menu_builder_get_managed_menus(); return in_array($menu_name, $menus); }
/** * Adds the menu name to the list of manageable menus * * @return void */ public function save() { $menus = menu_builder_get_managed_menus(); if (!is_array($menus)) { $menus = []; } if (in_array($this->name, $menus)) { // already exists return; } $menus[] = $this->name; elgg_set_plugin_setting('menu_names', json_encode($menus), 'menu_builder'); elgg_reset_system_cache(); }
/** * Page setup function for Menu Builder * * @return void */ function menu_builder_pagesetup() { if (menu_builder_is_managed_menu('site')) { // take control of menu setup elgg_unregister_plugin_hook_handler('prepare', 'menu:site', '_elgg_site_menu_setup'); } $managed_menus = menu_builder_get_managed_menus(); foreach ($managed_menus as $menu_name) { elgg_register_plugin_hook_handler('register', "menu:{$menu_name}", '\\ColdTrick\\MenuBuilder\\MenuHooks::registerAllMenu', 999); elgg_register_plugin_hook_handler('prepare', "menu:{$menu_name}", '\\ColdTrick\\MenuBuilder\\MenuHooks::prepareAllMenu', 999); if (!elgg_in_context('admin')) { // extend view for cache output elgg_extend_view("navigation/menu/{$menu_name}", 'menu_builder/menu_cache', 400); elgg_register_plugin_hook_handler('view', "navigation/menu/{$menu_name}", '\\ColdTrick\\MenuBuilder\\MenuHooks::afterViewMenu', 9999); } } }
<?php elgg_require_js('menu_builder/manage_menu_items'); $menus = menu_builder_get_managed_menus(); $selected = get_input('menu_name'); if (!empty($selected) && !menu_builder_is_managed_menu($selected)) { $selected = null; } $tabs = []; if (!empty($menus)) { $menu_list = ''; foreach ($menus as $menu) { if (empty($selected)) { $selected = $menu; } $class = 'hidden'; if ($menu === $selected) { $class = ''; } $menu_list .= elgg_view('menu_builder/admin/edit_menu', ['menu' => $menu, 'class' => $class, 'rel' => $menu]); $tabs[] = ['text' => elgg_echo('menu:' . elgg_get_friendly_title($menu) . ':header:default'), 'selected' => $menu === $selected, 'rel' => $menu, 'href' => 'javascript:void(0)']; } } else { $menu_list = elgg_echo('notfound'); } $tabs[] = ['text' => ' <strong>+</strong> ' . elgg_echo('menu_builder:admin:menu:add'), 'id' => 'menu-builder-add-menu', 'href' => 'javascript:void(0)']; $menu_list = elgg_view('navigation/tabs', ['tabs' => $tabs, 'class' => 'menu-builder-admin-tabs']) . $menu_list; echo elgg_view_module('inline', elgg_echo('menu_builder:admin:menu:list'), $menu_list);