From: <sy...@us...> - 2011-06-08 17:19:36
|
Revision: 34833 http://tikiwiki.svn.sourceforge.net/tikiwiki/?rev=34833&view=rev Author: sylvieg Date: 2011-06-08 17:19:30 +0000 (Wed, 08 Jun 2011) Log Message: ----------- [ENH]menu: option subMenu to display only the submenus below an option Modified Paths: -------------- trunk/lib/menubuilder/menulib.php Modified: trunk/lib/menubuilder/menulib.php =================================================================== --- trunk/lib/menubuilder/menulib.php 2011-06-08 16:41:42 UTC (rev 34832) +++ trunk/lib/menubuilder/menulib.php 2011-06-08 17:19:30 UTC (rev 34833) @@ -345,15 +345,7 @@ } } if (!empty($subMenu) && $findUrl && $cant) { - $lower = false; - foreach ($subMenu as $i=>$option) {// begin all the secrtion at 0 to have a nice display - if (is_numeric($option['type'])) { - if ($lower === false) { - $lower = $option['type']; - } - $subMenu[$i]['type'] -= $lower; - } - } + $subMenu = $this->lower($subMenu); $channels['data'] = $subMenu; $channels['cant'] = $cant; } else { @@ -412,6 +404,34 @@ } $channels = array('data'=>$subMenu, 'cant'=>$cant); } + if (!empty($params['subMenu'])) { + $subMenu = array(); + $cant = 0; + $in = false; + $optionLevel = $level = 0; + foreach ($channels['data'] as $position=>$option) { + if (is_numeric($option['type'])) { + $optionLevel = $option['type']; + } else if ($option['type'] == '-') { + $optionLevel = $optionLevel - 1; + } else if ($option['type'] == 'r' || $option['type'] == 's') { + $optionLevel = 0; + } + if ($in && $optionLevel <= $level) { + break; + } elseif ($in) { + $subMenu[] = $option; + $cant++; + } elseif (!$in && $option['optionId'] == $params['subMenu']) { + $level = $optionLevel; + $in = true; + } + if ($option['type'] != '-' && $option['type'] != 'o') { + ++$optionLevel; + } + } + $channels = array('data'=>$this->lower($subMenu), 'cant'=>$cant); + } // set sections open/close according to cookie global $prefs; foreach ($channels['data'] as $position => &$option) { @@ -427,6 +447,19 @@ } return $channels; } + function lower($subMenu) + { + $lower = false; + foreach ($subMenu as $i=>$option) {// begin all the secrtion at 0 to have a nice display + if (is_numeric($option['type'])) { + if ($lower === false) { + $lower = $option['type']; + } + $subMenu[$i]['type'] -= $lower; + } + } + return $subMenu; + } // check if a option belongs to a menu function check_menu_option($menuId, $optionId) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |