/** * Migrates old (pre MenuBuilder 2.0) menu entities to json * * @return void */ public static function migrateEntitiesToJSON() { $ia = elgg_set_ignore_access(true); $menu = new \ColdTrick\MenuBuilder\Menu('site'); $menu->save(); $options = ['type' => 'object', 'subtype' => 'menu_builder_menu_item', 'limit' => false]; $entities = elgg_get_entities($options); if (empty($entities)) { elgg_set_ignore_access($ia); return; } foreach ($entities as $menu_item) { $parent_name = null; $parent_guid = $menu_item->parent_guid; if ($parent_guid) { $parent = get_entity($parent_guid); if ($parent) { $parent_name = "menu_name_{$parent_guid}"; } } $menu->addMenuItem(['name' => "menu_name_{$menu_item->guid}", 'text' => $menu_item->title, 'href' => $menu_item->url, 'target' => $menu_item->target, 'is_action' => $menu_item->is_action, 'access_id' => $menu_item->access_id, 'priority' => $menu_item->order, 'parent_name' => $parent_name]); } // delete entities need to do it afterwards as parents are not always available otherwise foreach ($entities as $menu_item) { $menu_item->delete(); } elgg_set_ignore_access($ia); }
<?php $menu_name = get_input('menu_name'); $contents = get_uploaded_file('import'); if (empty($contents)) { register_error(elgg_echo('menu_builder:actions:import:error:upload')); forward(REFERER); } $config = json_decode($contents, true); if (!is_array($config) || empty($config)) { register_error(elgg_echo('menu_builder:actions:import:error:invalid:content')); forward(REFERER); } // assume we're good at this point, delete current menu $menu = new \ColdTrick\MenuBuilder\Menu($menu_name); $menu->setMenuConfig(); // removes the current config foreach ($config as $item) { // convert old export to new format if (isset($item['guid'])) { $item['name'] = $item['guid']; unset($item['guid']); } if (isset($item['title'])) { $item['text'] = $item['title']; unset($item['title']); } if (isset($item['url'])) { $item['href'] = $item['url']; unset($item['url']); }
<?php $menu_name = get_input('menu_name'); $item_name = get_input('item_name'); if (empty($menu_name)) { echo elgg_echo('error:missing_data'); return; } $menu = new \ColdTrick\MenuBuilder\Menu($menu_name); $menu_config = $menu->getMenuConfig(); $menu_item = elgg_extract($item_name, $menu_config, []); $body_vars = ['menu_name' => $menu_name, 'menu_item' => $menu_item, 'parent_options' => $menu->getInputOptions($item_name)]; echo elgg_view_form('menu_builder/menu_item/edit', [], $body_vars);
/** * Loads initially the site menu into the menu_builder config. * * @param string $hook name of the hook * @param string $type type of the hook * @param unknown $return return value * @param unknown $params hook parameters * * @return array */ public static function prepareSiteMenu($hook, $type, $return, $params) { if (elgg_get_plugin_setting('menu_builder_default_imported', 'menu_builder', false)) { return; } $menu = new \ColdTrick\MenuBuilder\Menu('site'); if (!empty($menu->getMenuConfig())) { // found an already existing menu config... do not import elgg_set_plugin_setting('menu_builder_default_imported', time(), 'menu_builder'); return; } $menu->save(); // remove potential existing menu items elgg_unset_plugin_setting('menu_site_config', 'menu_builder'); $priority = 10; foreach ($return as $section => $items) { $parent_name = null; if ($section !== 'default') { $menu->addMenuItem(['name' => $section, 'text' => elgg_echo($section), 'href' => '#', 'priority' => $priority]); $parent_name = $section; $priority += 10; } foreach ($items as $item) { $menu->addMenuItem(['name' => $item->getName(), 'text' => $item->getText(), 'href' => str_replace(elgg_get_site_url(), '', $item->getHref()), 'priority' => $priority, 'parent_name' => $parent_name]); $priority += 10; } } elgg_set_plugin_setting('menu_builder_default_imported', time(), 'menu_builder'); }
<?php $menu_name = elgg_extract('name', $vars); $data = false; if (!elgg_in_context('admin')) { $menu = new \ColdTrick\MenuBuilder\Menu($menu_name); $data = $menu->getCachedData(); } if ($data) { echo $data; } elseif ($menu_name !== 'site') { echo elgg_view('navigation/menu/default', $vars); } if (!$data) { // hook after view to save cache elgg_register_plugin_hook_handler('view', "navigation/menu/{$menu_name}", '\\ColdTrick\\MenuBuilder\\MenuHooks::viewMenu', 999); }
<?php /** * jQuery call to reorder menu items */ $menu_name = get_input('menu_name'); $item_name = get_input('item_name'); $parent_name = get_input('parent_name'); $items = get_input('items'); if (empty($item_name) || empty($item_name) || empty($items)) { register_error(elgg_echo('error:missing_data')); return; } $menu = new \ColdTrick\MenuBuilder\Menu($menu_name); $menu_config = $menu->getMenuConfig(); if (empty($menu_config)) { register_error(elgg_echo('error:missing_data')); return; } $item_name_found = false; $parent_name_found = false; foreach ($menu_config as $key => $value) { // internal menu names get sanitized as class in menus, so look up matching items in config $sanitised_name = strtolower($key); $sanitised_name = str_replace('_', '-', $sanitised_name); $sanitised_name = str_replace(':', '-', $sanitised_name); $sanitised_name = str_replace(' ', '-', $sanitised_name); if ($item_name === $sanitised_name) { $item_name_found = true; $item_name = $key; }
<?php $menu_name = get_input('menu_name'); $managed_menus = menu_builder_get_managed_menus(); if (!in_array($menu_name, $managed_menus)) { register_error(elgg_echo('menu_builder:actions:edit:error:input')); forward(REFERER); } $filter = true; if (elgg_get_plugin_setting('htmlawed_filter', 'menu_builder') == 'no') { $filter = false; } // add a default menu item $menu = new \ColdTrick\MenuBuilder\Menu($menu_name); $menu->addMenuItem(['name' => get_input('name'), 'text' => get_input('text', null, $filter), 'href' => get_input('href', null, $filter), 'access_id' => (int) get_input('access_id', ACCESS_PUBLIC), 'target' => get_input('target'), 'is_action' => get_input('is_action', false), 'priority' => get_input('priority', time()), 'parent_name' => get_input('parent_name')]); system_message(elgg_echo('menu_builder:actions:edit:success')); forward(REFERER);
<?php $menu_name = get_input('menu_name'); // @todo check for valid menu name if ($menu_name) { $menu = new \ColdTrick\MenuBuilder\Menu($menu_name); $menu->save(); forward('admin/appearance/menu_items?menu_name=' . $menu_name); }
<?php $menu_name = get_input('menu_name'); if (!$menu_name) { register_error(elgg_echo('menu_builder:actions:missing_name')); forward(REFERER); } $menu = new \ColdTrick\MenuBuilder\Menu($menu_name); $config = $menu->getMenuConfig(); // make sure we have a menu to export if (empty($config)) { register_error(elgg_echo('menu_builder:actions:export:error:empty')); forward(REFERER); } $export_name = 'menu_builder_export_' . elgg_get_friendly_title($menu_name) . '.json'; // export the array as JSON in a txt file $json = json_encode($config); header('Cache-Control: no-cache, must-revalidate'); header('Content-type: application/json'); header('Content-Length: ' . strlen($json)); header('Content-Disposition: attachment; filename="' . $export_name . '"'); echo $json; exit;
<?php $name = get_input('item_name'); $menu_name = get_input('menu_name'); $menu = new \ColdTrick\MenuBuilder\Menu($menu_name); $menu_items = $menu->getMenuConfig(); if (empty($menu_items)) { return; } menu_builder_delete_menu_item($name, $menu_items); $menu->setMenuConfig($menu_items); system_message(elgg_echo('menu_builder:actions:delete:success')); forward("admin/appearance/menu_items?menu_name={$menu_name}");