/** * Prepare menu * Returns an array of section => items pairs * * @param ElggMenuItem[] $menu Menu * @param array $params Menu params * @return array */ function menus_api_prepare_menu($menu, array $params = []) { $menu_name = elgg_extract('name', $params); $sort_by = elgg_extract('sort_by', $params, 'text'); $builder = new \ElggMenuBuilder($menu); $params['menu'] = $builder->getMenu($sort_by); $params['selected_item'] = $builder->getSelected(); return elgg_trigger_plugin_hook('prepare', "menu:{$menu_name}", $params, $params['menu']); }
/** * The profile page handler * * @param array $page page elements * * @return bool */ function theme_haarlem_intranet_profile_page_handler($page) { $user = false; if (isset($page[0])) { $username = $page[0]; $user = get_user_by_username($username); if (!empty($user)) { elgg_set_page_owner_guid($user->getGUID()); } } if (empty($user) && elgg_is_logged_in()) { forward(elgg_get_logged_in_user_entity()->getURL()); } // short circuit if invalid or banned username if (empty($user) || $user->isBanned() && !elgg_is_admin_logged_in()) { register_error(elgg_echo("profile:notfound")); forward(); } $action = false; if (isset($page[1])) { $action = $page[1]; } if ($action == "edit") { // use the core profile edit page $base_dir = elgg_get_root_path(); require $base_dir . "pages/profile/edit.php"; return true; } $menu = elgg_trigger_plugin_hook('register', "menu:user_hover", array('entity' => $user), array()); $builder = new ElggMenuBuilder($menu); $menu = $builder->getMenu(); $content = '<table id="theme-haarlem-intranet-profile"><tr><td>' . elgg_view("profile/owner_block", array("entity" => $user, 'menu' => $menu)); $content .= '</td><td>'; if (!theme_haarlem_is_extranet()) { $content .= elgg_view("profile/details", array("entity" => $user, 'menu' => $menu)); } else { $content .= elgg_view("profile/extranet", array("entity" => $user, 'menu' => $menu)); } $content .= '</td></tr></table>'; $sidebar = elgg_view('theme_haarlem_intranet/profile/group_membership', array('entity' => $user)); // view profile $body = elgg_view_layout("one_sidebar", array("content" => $content, 'menu' => $menu, 'layout' => 'content', 'sidebar' => $sidebar)); echo elgg_view_page($user->name, $body); return true; }
/** * Build the select options for the edit form * * @param int $entity_guid the current entity being edited (optional) * * @return array the parent select dropdown options */ function menu_builder_get_parent_menu_select_options($entity_guid = 0) { $result = false; $entity_guid = sanitise_int($entity_guid, false); // build the menu structure $vars = array(); $menu = array(); $menu = elgg_trigger_plugin_hook("register", "menu:site", $vars, $menu); $builder = new ElggMenuBuilder($menu); $vars["menu"] = $builder->getMenu("text"); $vars["selected_item"] = $builder->getSelected(); // Let plugins modify the menu $vars["menu"] = elgg_trigger_plugin_hook("prepare", "menu:site", $vars, $vars["menu"]); if (!empty($vars["menu"])) { $result = array(); foreach ($vars["menu"] as $section => $menu_items) { if (!empty($menu_items) && is_array($menu_items)) { $result = menu_builder_get_menu_select_option($menu_items, $entity_guid); } } } return $result; }
/** * If it exists, returns a particular register as an array * * @deprecated 1.8 Use the new menu system * * @param string $register_name The name of the register * * @return array|false Depending on success */ function get_register($register_name) { elgg_deprecated_notice("get_register() has been deprecated", 1.8); global $CONFIG; if ($register_name == 'menu') { // backward compatible code for site menu $menu = $CONFIG->menus['site']; $builder = new ElggMenuBuilder($menu); $menu_items = $builder->getMenu('text'); $menu_items = $menu_items['default']; $menu = array(); foreach ($menu_items as $item) { $subregister = new stdClass(); $subregister->name = $item->getText(); $subregister->value = $item->getHref(); $menu[$subregister->name] = $subregister; } return $menu; } if (isset($CONFIG->registers[$register_name])) { return $CONFIG->registers[$register_name]; } return false; }
* @copyright 2015 SocialApparatus * @license GNU General Public License (GPL) version 2 * @version 1 * @link http://modbash.com */ $user = elgg_get_page_owner_entity(); if (!$user) { // no user so we quit view echo elgg_echo('viewfailure', array(__FILE__)); return TRUE; } $icon = elgg_view_entity_icon($user, 'large', array('use_hover' => false, 'use_link' => false, 'img_class' => 'photo u-photo')); $icon = "<img src='" . $user->getIconURL('large') . "' class='img-responsive'/>"; // grab the actions and admin menu items from user hover $menu = elgg_trigger_plugin_hook('register', "menu:user_hover", array('entity' => $user), array()); $builder = new ElggMenuBuilder($menu); $menu = $builder->getMenu(); $actions = elgg_extract('action', $menu, array()); $admin = elgg_extract('admin', $menu, array()); $profile_actions = ''; if (elgg_is_logged_in() && $actions) { $profile_actions = '<div class="btn-group-vertical btn-block" style="margin-top:20px;margin-bottom:20px;">'; foreach ($actions as $action) { $item = elgg_view_menu_item($action, array('class' => 'btn btn-success ' . $action->getItemClass())); $profile_actions .= "{$item}"; } $profile_actions .= '</div>'; } $profile_actions = elgg_view_menu('owner_block', array('entity' => $user)); elgg_view('page/elements/owner_block/extend', $vars); // if admin, display admin links
/** * Render a menu * * @see elgg_register_menu_item() for documentation on adding menu items and * navigation.php for information on the different menus available. * * This function triggers a 'register', 'menu:<menu name>' plugin hook that enables * plugins to add menu items just before a menu is rendered. This is used by * dynamic menus (menus that change based on some input such as the user hover * menu). Using elgg_register_menu_item() in response to the hook can cause * incorrect links to show up. See the blog plugin's blog_owner_block_menu() * for an example of using this plugin hook. * * An additional hook is the 'prepare', 'menu:<menu name>' which enables plugins * to modify the structure of the menu (sort it, remove items, set variables on * the menu items). * * elgg_view_menu() uses views in navigation/menu * * @param string $menu_name The name of the menu * @param array $vars An associative array of display options for the menu. * Options include: * sort_by => string or php callback * string options: 'name', 'priority', 'title' (default), * 'register' (registration order) or a * php callback (a compare function for usort) * handler: string the page handler to build action URLs * entity: ElggEntity to use to build action URLs * class: string the class for the entire menu. * show_section_headers: bool show headers before menu sections. * * @return string * @since 1.8.0 */ function elgg_view_menu($menu_name, array $vars = array()) { global $CONFIG; $vars['name'] = $menu_name; $sort_by = elgg_extract('sort_by', $vars, 'text'); if (isset($CONFIG->menus[$menu_name])) { $menu = $CONFIG->menus[$menu_name]; } else { $menu = array(); } // Give plugins a chance to add menu items just before creation. // This supports dynamic menus (example: user_hover). $menu = elgg_trigger_plugin_hook('register', "menu:{$menu_name}", $vars, $menu); $builder = new ElggMenuBuilder($menu); $vars['menu'] = $builder->getMenu($sort_by); $vars['selected_item'] = $builder->getSelected(); // Let plugins modify the menu $vars['menu'] = elgg_trigger_plugin_hook('prepare', "menu:{$menu_name}", $vars, $vars['menu']); if (elgg_view_exists("navigation/menu/{$menu_name}")) { return elgg_view("navigation/menu/{$menu_name}", $vars); } else { return elgg_view("navigation/menu/default", $vars); } }
<?php /** * Form body for setting up site menu */ // @todo Could probably make this number configurable $num_featured_items = 6; // get site menu items $menu = elgg_get_config('menus'); $menu = $menu['site']; $builder = new ElggMenuBuilder($menu); $menu = $builder->getMenu('name'); $menu_items = $menu['default']; $featured_menu_names = elgg_get_config('site_featured_menu_names'); $dropdown_values = array(); foreach ($menu_items as $item) { $dropdown_values[$item->getName()] = $item->getText(); } $dropdown_values[' '] = elgg_echo('none'); ?> <div class="elgg-module elgg-module-inline"> <div class="elgg-head"> <h3><?php echo elgg_echo('admin:menu_items:configure'); ?> </h3> </div> <div class="elgg-body"> <?php echo elgg_view('output/longtext', array('value' => elgg_echo("admin:menu_items:description"))); for ($i = 0; $i < $num_featured_items; $i++) {
/** * Returns an array of items to be used in edit forms of menu items * * @param string $skip_menu_item skip this menu item * * @return array */ public function getInputOptions($skip_menu_item) { $menu = elgg_trigger_plugin_hook('register', "menu:{$this->name}", ['name' => $this->name], []); $builder = new \ElggMenuBuilder($menu); $menu = $builder->getMenu('priority'); $menu = elgg_extract('default', $menu); return $this->getIndentedOptions($menu, $skip_menu_item); }
<div data-role="content"> <ul data-role="listview" data-inset="false" > <?php //This needs it own function, should not be loaded from here $menu_name = 'site'; $vars['name'] = $menu_name; $sort_by = elgg_extract('sort_by', $vars, 'text'); if (isset($CONFIG->menus[$menu_name])) { $menu = $CONFIG->menus[$menu_name]; } else { $menu = array(); } // Give plugins a chance to add menu items just before creation. // This supports dynamic menus (example: user_hover). $menu = elgg_trigger_plugin_hook('register', "menu:{$menu_name}", $vars, $menu); $builder = new ElggMenuBuilder($menu); $vars['menu'] = $builder->getMenu($sort_by); $vars['selected_item'] = $builder->getSelected(); // Let plugins modify the menu $vars['menu'] = elgg_trigger_plugin_hook('prepare', "menu:{$menu_name}", $vars, $vars['menu']); $default_items = elgg_extract('default', $vars['menu'], array()); $more_items = elgg_extract('more', $vars['menu'], array()); $all_items = array_merge($default_items, $more_items); foreach ($all_items as $menu_item) { echo elgg_view('navigation/menu/elements/item', array('item' => $menu_item)); } //Loggedin? $user = elgg_get_logged_in_user_entity(); if ($user) { ?> <li><a href="<?php