diff options
Diffstat (limited to 'views/default/navigation/menu')
| -rw-r--r-- | views/default/navigation/menu/default.php | 29 | ||||
| -rw-r--r-- | views/default/navigation/menu/elements/group.php | 19 | ||||
| -rw-r--r-- | views/default/navigation/menu/elements/item.php | 32 | ||||
| -rw-r--r-- | views/default/navigation/menu/elements/section.php | 30 | ||||
| -rw-r--r-- | views/default/navigation/menu/page.php | 11 | ||||
| -rw-r--r-- | views/default/navigation/menu/site.php | 25 | ||||
| -rw-r--r-- | views/default/navigation/menu/user_hover.php | 44 |
7 files changed, 124 insertions, 66 deletions
diff --git a/views/default/navigation/menu/default.php b/views/default/navigation/menu/default.php index d849fb80e..006deb3ea 100644 --- a/views/default/navigation/menu/default.php +++ b/views/default/navigation/menu/default.php @@ -2,19 +2,30 @@ /** * Default menu * - * @uses $vars['menu'] - * @uses $vars['class'] + * @uses $vars['name'] Name of the menu + * @uses $vars['menu'] Array of menu items + * @uses $vars['class'] Additional CSS class for the menu + * @uses $vars['item_class'] Additional CSS class for each menu item + * @uses $vars['show_section_headers'] Do we show headers for each section? */ -$class = 'elgg-menu'; +// we want css classes to use dashes +$vars['name'] = preg_replace('/[^a-z0-9\-]/i', '-', $vars['name']); +$headers = elgg_extract('show_section_headers', $vars, false); +$item_class = elgg_extract('item_class', $vars, ''); + +$class = "elgg-menu elgg-menu-{$vars['name']}"; if (isset($vars['class'])) { - $class = "$class {$vars['class']}"; + $class .= " {$vars['class']}"; } foreach ($vars['menu'] as $section => $menu_items) { - echo "<ul class=\"$class\">"; - foreach ($menu_items as $menu_item) { - echo elgg_view('navigation/menu/elements/item', array('item' => $menu_item)); - } - echo '</ul>'; + echo elgg_view('navigation/menu/elements/section', array( + 'items' => $menu_items, + 'class' => "$class elgg-menu-{$vars['name']}-$section", + 'section' => $section, + 'name' => $vars['name'], + 'show_section_headers' => $headers, + 'item_class' => $item_class, + )); } diff --git a/views/default/navigation/menu/elements/group.php b/views/default/navigation/menu/elements/group.php deleted file mode 100644 index 09474ea67..000000000 --- a/views/default/navigation/menu/elements/group.php +++ /dev/null @@ -1,19 +0,0 @@ -<?php -/** - * Menu group - * - * @uses $vars['items'] - * @uses $vars['class'] - * @uses $vars['section'] - */ - -$class = elgg_get_array_value('class', $vars, ''); -if (isset($vars['section'])) { - $class = "$class elgg-section-{$vars['section']}"; -} - -echo "<ul class=\"$class\">"; -foreach ($vars['items'] as $menu_item) { - echo elgg_view('navigation/menu/elements/item', array('item' => $menu_item)); -} -echo '</ul>'; diff --git a/views/default/navigation/menu/elements/item.php b/views/default/navigation/menu/elements/item.php index 5a9a8743d..fd9738826 100644 --- a/views/default/navigation/menu/elements/item.php +++ b/views/default/navigation/menu/elements/item.php @@ -1,25 +1,41 @@ <?php +/** + * A single element of a menu. + * + * @package Elgg.Core + * @subpackage Navigation + * + * @uses $vars['item'] ElggMenuItem + * @uses $vars['item_class'] Additional CSS class for the menu item + */ $item = $vars['item']; -$class = ''; $link_class = 'elgg-menu-closed'; if ($item->getSelected()) { - $class = 'class="elgg-state-selected"'; + // @todo switch to addItemClass when that is implemented + //$item->setItemClass('elgg-state-selected'); $link_class = 'elgg-menu-opened'; } -$link_vars = array(); - $children = $item->getChildren(); if ($children) { - $link_vars['class'] = "elgg-menu-parent $link_class"; + $item->addLinkClass($link_class); + $item->addLinkClass('elgg-menu-parent'); +} + +$item_class = $item->getItemClass(); +if ($item->getSelected()) { + $item_class = "$item_class elgg-state-selected"; +} +if (isset($vars['item_class']) && $vars['item_class']) { + $item_class .= ' ' . $vars['item_class']; } -echo "<li $class>"; -echo $item->getLink($link_vars); +echo "<li class=\"$item_class\">"; +echo $item->getContent(); if ($children) { - echo elgg_view('navigation/menu/elements/group', array( + echo elgg_view('navigation/menu/elements/section', array( 'items' => $children, 'class' => 'elgg-menu elgg-child-menu', )); diff --git a/views/default/navigation/menu/elements/section.php b/views/default/navigation/menu/elements/section.php new file mode 100644 index 000000000..c0e9ba750 --- /dev/null +++ b/views/default/navigation/menu/elements/section.php @@ -0,0 +1,30 @@ +<?php +/** + * Menu group + * + * @uses $vars['items'] Array of menu items + * @uses $vars['class'] Additional CSS class for the section + * @uses $vars['name'] Name of the menu + * @uses $vars['section'] The section name + * @uses $vars['item_class'] Additional CSS class for each menu item + * @uses $vars['show_section_headers'] Do we show headers for each section + */ + +$headers = elgg_extract('show_section_headers', $vars, false); +$class = elgg_extract('class', $vars, ''); +$item_class = elgg_extract('item_class', $vars, ''); + +if ($headers) { + $name = elgg_extract('name', $vars); + $section = elgg_extract('section', $vars); + echo '<h2>' . elgg_echo("menu:$name:header:$section") . '</h2>'; +} + +echo "<ul class=\"$class\">"; +foreach ($vars['items'] as $menu_item) { + echo elgg_view('navigation/menu/elements/item', array( + 'item' => $menu_item, + 'item_class' => $item_class, + )); +} +echo '</ul>'; diff --git a/views/default/navigation/menu/page.php b/views/default/navigation/menu/page.php index 92006e956..56a288234 100644 --- a/views/default/navigation/menu/page.php +++ b/views/default/navigation/menu/page.php @@ -5,8 +5,12 @@ * @uses $vars['menu'] * @uses $vars['selected_item'] * @uses $vars['class'] + * @uses $vars['name'] + * @uses $vars['show_section_headers'] */ +$headers = elgg_extract('show_section_headers', $vars, false); + $class = 'elgg-menu elgg-menu-page'; if (isset($vars['class'])) { $class = "$class {$vars['class']}"; @@ -14,6 +18,7 @@ if (isset($vars['class'])) { if (isset($vars['selected_item'])) { $parent = $vars['selected_item']->getParent(); + while ($parent) { $parent->setSelected(); $parent = $parent->getParent(); @@ -21,9 +26,11 @@ if (isset($vars['selected_item'])) { } foreach ($vars['menu'] as $section => $menu_items) { - echo elgg_view('navigation/menu/elements/group', array( + echo elgg_view('navigation/menu/elements/section', array( 'items' => $menu_items, + 'class' => "$class elgg-menu-page-$section", 'section' => $section, - 'class' => $class, + 'name' => $vars['name'], + 'show_section_headers' => $headers )); } diff --git a/views/default/navigation/menu/site.php b/views/default/navigation/menu/site.php index 706e56fe5..24c21dd57 100644 --- a/views/default/navigation/menu/site.php +++ b/views/default/navigation/menu/site.php @@ -6,20 +6,25 @@ * @uses $vars['menu']['more'] */ -echo '<ul class="elgg-menu elgg-menu-site clearfix">'; -foreach ($vars['menu']['default'] as $menu_item) { +$default_items = elgg_extract('default', $vars['menu'], array()); +$more_items = elgg_extract('more', $vars['menu'], array()); + +echo '<ul class="elgg-menu elgg-menu-site elgg-menu-site-default clearfix">'; +foreach ($default_items as $menu_item) { echo elgg_view('navigation/menu/elements/item', array('item' => $menu_item)); } -if (isset($vars['menu']['more'])) { - $more = elgg_echo('more'); +if ($more_items) { echo '<li class="elgg-more">'; - echo "<a class='subnav' title=\"$more\"><span class=\"elgg-icon elgg-icon-arrow-s\"></span>$more</a>"; - echo '<ul>'; - foreach ($vars['menu']['more'] as $menu_item) { - echo elgg_view('navigation/menu/elements/item', array('item' => $menu_item)); - } - echo '</ul>'; + + $more = elgg_echo('more'); + echo "<a href=\"#\">$more</a>"; + + echo elgg_view('navigation/menu/elements/section', array( + 'class' => 'elgg-menu elgg-menu-site elgg-menu-site-more', + 'items' => $more_items, + )); + echo '</li>'; } echo '</ul>'; diff --git a/views/default/navigation/menu/user_hover.php b/views/default/navigation/menu/user_hover.php index 9ceda38e5..5c89e585c 100644 --- a/views/default/navigation/menu/user_hover.php +++ b/views/default/navigation/menu/user_hover.php @@ -9,9 +9,9 @@ */ $user = $vars['entity']; -$actions = elgg_get_array_value('action', $vars['menu'], null); -$main = elgg_get_array_value('default', $vars['menu'], null); -$admin = elgg_get_array_value('admin', $vars['menu'], null); +$actions = elgg_extract('action', $vars['menu'], null); +$main = elgg_extract('default', $vars['menu'], null); +$admin = elgg_extract('admin', $vars['menu'], null); echo '<ul class="elgg-menu elgg-menu-hover">'; @@ -19,34 +19,42 @@ echo '<ul class="elgg-menu elgg-menu-hover">'; $name_link = elgg_view('output/url', array( 'href' => $user->getURL(), 'text' => "<span class=\"elgg-heading-basic\">$user->name</span>@$user->username", + 'is_trusted' => true, )); echo "<li>$name_link</li>"; // actions if (elgg_is_logged_in() && $actions) { - echo '<li><ul>'; - foreach ($actions as $menu_item) { - echo elgg_view('navigation/menu/elements/item', array('item' => $menu_item)); - } - echo '</ul></li>'; + echo '<li>'; + echo elgg_view('navigation/menu/elements/section', array( + 'class' => "elgg-menu elgg-menu-hover-actions", + 'items' => $actions, + )); + echo '</li>'; } // main if ($main) { - echo '<li><ul>'; - foreach ($main as $menu_item) { - echo elgg_view('navigation/menu/elements/item', array('item' => $menu_item)); - } - echo '</ul></li>'; + echo '<li>'; + + echo elgg_view('navigation/menu/elements/section', array( + 'class' => 'elgg-menu elgg-menu-hover-default', + 'items' => $main, + )); + + echo '</li>'; } // admin if (elgg_is_admin_logged_in() && $admin) { - echo '<li><ul class="elgg-hover-admin">'; - foreach ($admin as $menu_item) { - echo elgg_view('navigation/menu/elements/item', array('item' => $menu_item)); - } - echo '</ul></li>'; + echo '<li>'; + + echo elgg_view('navigation/menu/elements/section', array( + 'class' => 'elgg-menu elgg-menu-hover-admin', + 'items' => $admin, + )); + + echo '</li>'; } echo '</ul>'; |
