From: <jon...@us...> - 2012-07-08 17:52:07
|
Revision: 42270 http://tikiwiki.svn.sourceforge.net/tikiwiki/?rev=42270&view=rev Author: jonnybradley Date: 2012-07-08 17:52:01 +0000 (Sun, 08 Jul 2012) Log Message: ----------- [ENH] breadcrumbs: Add new start and stop levels for menu-crumbs, and many fixes for show last and first (including a new property "hidden" for crumbs as so many other things depend on them all being there) Modified Paths: -------------- branches/9.x/lib/breadcrumblib.php branches/9.x/modules/mod-func-breadcrumbs.php branches/9.x/templates/modules/mod-breadcrumbs.tpl Modified: branches/9.x/lib/breadcrumblib.php =================================================================== --- branches/9.x/lib/breadcrumblib.php 2012-07-08 15:11:54 UTC (rev 42269) +++ branches/9.x/lib/breadcrumblib.php 2012-07-08 17:52:01 UTC (rev 42270) @@ -20,6 +20,7 @@ var $url; var $helpUrl; var $helpDescription; + var $hidden; function Breadcrumb($title, $desc='', $url='', $helpurl='', $helpdesc='') { @@ -32,6 +33,7 @@ $this->url = $url; $this->helpUrl = $helpurl; $this->helpDescription = $helpdesc; + $this->hidden = false; } /* end of class */ } @@ -47,7 +49,9 @@ if ( is_array($crumbs) ) { $ret = array(); foreach ($crumbs as $crumb) { - $ret[] = breadcrumb_buildHeadTitle($crumb); + if ($crumb->title !== $prefs['browsertitle']) { + $ret[] = breadcrumb_buildHeadTitle($crumb); + } } return implode(" : ", $ret); } elseif ($prefs['site_title_breadcrumb'] == 'desc') { @@ -131,16 +135,16 @@ $ret = breadcrumb_buildStructureTrail($structure_path, $cnt, $loclass); // prepend the root crumb array_unshift($ret, _breadcrumb_buildCrumb($crumbs[$cnt], $cnt, $loclass)); + if (count($crumbs) > 1) { + $ret[] = _breadcrumb_buildCrumb($crumbs[count($crumbs) - 1], count($ret) - 1, $loclass); + } } else { foreach ($crumbs as $crumb) { $cnt += 1; - if ( $len != $cnt+1 ) { - $ret[] = _breadcrumb_buildCrumb($crumb, $cnt, $loclass); - } else { - $ret[] = ''; - } + $ret[] = _breadcrumb_buildCrumb($crumb, $cnt, $loclass); } } + $ret = array_filter($ret); return implode($seper, $ret); } else { return _breadcrumb_buildCrumb($crumbs, $cnt, $loclass); @@ -155,6 +159,9 @@ /* static */ function _breadcrumb_buildCrumb($crumb, $cnt, $loclass) { + if ($crumb->hidden) { + return ''; + } $cnt += 1; $ret = '<a class="'.$loclass.'" title="'; $ret .= tra($crumb->description); @@ -207,7 +214,7 @@ return $res; } -function breadcrumb_buildMenuCrumbs($crumbs, $menuId) { +function breadcrumb_buildMenuCrumbs($crumbs, $menuId, $startLevel = null, $stopLevel = null) { include_once('lib/smarty_tiki/function.menu.php'); list($menu_info, $menuOptions) = get_menu_with_selections(array('id' => $menuId)); @@ -216,9 +223,15 @@ $newCrumbs[] = $crumbs[0]; } + $level = 0; foreach($menuOptions['data'] as $option) { if ($option['selectedAscendant']) { - $newCrumbs[] = new Breadcrumb($option['name'], '', $option['url']); + if ($startLevel === null || $level >= $startLevel) { + if ($stopLevel === null || $level <= $stopLevel) { + $newCrumbs[] = new Breadcrumb($option['name'], '', $option['url']); + } + } + $level++; } } Modified: branches/9.x/modules/mod-func-breadcrumbs.php =================================================================== --- branches/9.x/modules/mod-func-breadcrumbs.php 2012-07-08 15:11:54 UTC (rev 42269) +++ branches/9.x/modules/mod-func-breadcrumbs.php 2012-07-08 17:52:01 UTC (rev 42270) @@ -20,7 +20,7 @@ 'params' => array( 'label' => array( 'name' => tra('Label'), - 'description' => tra('Label preceding the crumbs. Default "Location : '), + 'description' => tra('Label preceding the crumbs.'), 'filter' => 'text', 'default' => 'Location : ', ), @@ -30,18 +30,36 @@ 'filter' => 'int', 'default' => 0, ), + 'menuStartLevel' => array( + 'name' => tra('Menu Start Level'), + 'description' => tra('Lowest level of the menu to display.'), + 'filter' => 'int', + 'default' => null, + ), + 'menuStopLevel' => array( + 'name' => tra('Menu Stop Level'), + 'description' => tra('Highest level of the menu to display.'), + 'filter' => 'int', + 'default' => null, + ), 'showFirst' => array( 'name' => tra('Show Site Crumb'), - 'description' => 'y|n ' . tra('Display the first crumb, usually the site, when using menu crubms.'), + 'description' => tra('Display the first crumb, usually the site, when using menu crumbs.'), 'filter' => 'alpha', 'default' => 'y', ), 'showLast' => array( 'name' => tra('Show Page Crumb'), - 'description' => 'y|n ' . tra('Display the last crumb, usually the page, when using menu crubms.'), + 'description' => tra('Display the last crumb, usually the page, when using menu crumbs.'), 'filter' => 'alpha', 'default' => 'y', ), + 'showLinks' => array( + 'name' => tra('Show Crumb Links'), + 'description' => tra('Display links on the crumbs.'), + 'filter' => 'alpha', + 'default' => 'y', + ), ), ); } @@ -55,22 +73,29 @@ $module_params['label'] = 'Location : '; } } + $binfo = module_breadcrumbs_info(); + $defaults = array(); + foreach ($binfo['params'] as $k => $v) { + $defaults[$k] = $v['default']; + } + $module_params = array_merge($defaults, $module_params); if (!empty($module_params['menuId'])) { include_once('lib/breadcrumblib.php'); - $newCrumbs = breadcrumb_buildMenuCrumbs($crumbs, $module_params['menuId']); + $newCrumbs = breadcrumb_buildMenuCrumbs($crumbs, $module_params['menuId'], $module_params['menuStartLevel'], $module_params['menuStopLevel']); if ($newCrumbs !== $crumbs) { $crumbs = $newCrumbs; - if (!empty($module_params['showFirst']) && $module_params['showFirst'] === 'n') { - array_shift($crumbs); - } - if (!empty($module_params['showLast']) && $module_params['showLast'] === 'n') { - array_pop($crumbs); - } - $smarty->assign('trail', $crumbs); } } + if ($module_params['showFirst'] === 'n') { + $crumbs[0]->hidden = true; + } + if ($module_params['showLast'] === 'n' && ($module_params['showFirst'] === 'n' || count($crumbs) > 1)) { + $crumbs[count($crumbs) - 1]->hidden = true; + } + $smarty->assign_by_ref('trail', $crumbs); + $smarty->assign('module_params', $module_params); } Modified: branches/9.x/templates/modules/mod-breadcrumbs.tpl =================================================================== --- branches/9.x/templates/modules/mod-breadcrumbs.tpl 2012-07-08 15:11:54 UTC (rev 42269) +++ branches/9.x/templates/modules/mod-breadcrumbs.tpl 2012-07-08 17:52:01 UTC (rev 42270) @@ -7,7 +7,6 @@ {if !empty($module_params.label)}{tr}{$module_params.label|escape:"html"}{/tr} {/if} {if $trail} {breadcrumbs type="trail" loc="site" crumbs=$trail} - {breadcrumbs type="pagetitle" loc="site" crumbs=$trail} {else} <a title="{tr}{$crumbs[0]->description}{/tr}" href="{$crumbs[0]->url}" accesskey="1">{$crumbs[0]->title}</a> {if $structure eq 'y'} @@ -25,7 +24,7 @@ </a> {/if} {/section} - {else} + {elseif $module_params.showLast eq 'y'} {if $page ne ''}{$prefs.site_crumb_seper|escape:"html"} {$page|escape} {elseif $title ne ''}{$prefs.site_crumb_seper|escape:"html"} {$title} {elseif $thread_info.title ne ''}{$prefs.site_crumb_seper|escape:"html"} {$thread_info.title} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |