[ticket/13740] Implement navigation sorting

PHPBB3-13740
This commit is contained in:
Mate Bartus 2015-07-14 23:14:35 +02:00
parent 051b7d1867
commit c5c98b7ca2

View file

@ -158,8 +158,7 @@ class helper
{ {
// Get navigation items // Get navigation items
$nav_array = $this->navigation_provider->get(); $nav_array = $this->navigation_provider->get();
$nav_array = $this->sort_navigation_level($nav_array);
// @todo Sort navs by order
$active_main_menu = $this->get_active_main_menu($nav_array); $active_main_menu = $this->get_active_main_menu($nav_array);
@ -174,7 +173,7 @@ class helper
if (is_array($entry[0]) && $active_main_menu === $key) if (is_array($entry[0]) && $active_main_menu === $key)
{ {
// @todo Sort navs by order $entry[0] = $this->sort_navigation_level($entry[0]);
foreach ($entry[0] as $name => $sub_entry) foreach ($entry[0] as $name => $sub_entry)
{ {
@ -220,6 +219,7 @@ class helper
protected function render_language_select() protected function render_language_select()
{ {
$langs = $this->lang_helper->get_available_languages(); $langs = $this->lang_helper->get_available_languages();
// @todo
} }
/** /**
@ -256,4 +256,31 @@ class helper
return false; return false;
} }
/**
* Sorts the top level of navigation array
*
* @param array $nav_array Navigation array
*
* @return array
*/
protected function sort_navigation_level($nav_array)
{
$sorted = array();
foreach ($nav_array as $nav)
{
$order = (isset($nav['order'])) ? $nav['order'] : 0;
$sorted[$order][] = $nav;
}
// Linearization of navigation array
$nav_array = array();
ksort($sorted);
foreach ($sorted as $nav)
{
$nav_array = array_merge($nav_array, $nav);
}
return $nav_array;
}
} }