Example #1
0
 /**
  * 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);
 }
Example #2
0
<?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']);
    }
Example #3
0
<?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);
Example #4
0
 /**
  * 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');
 }
Example #5
0
<?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);
}
Example #6
0
<?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;
    }
Example #7
0
<?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);
Example #8
0
<?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);
}
Example #9
0
<?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;
Example #10
0
<?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}");