Example #1
0
/**
 * 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;
}
Example #3
0
/**
 * 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;
}
Example #4
0
/**
 * 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;
}
Example #5
0
 * @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
Example #6
0
/**
 * 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);
    }
}
Example #7
0
File: save.php Project: rasul/Elgg
<?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++) {
Example #8
0
 /**
  * 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);
 }
Example #9
0
	<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