From 6f238a40480e1d5de2e8471d2acd7f0adb865fcd Mon Sep 17 00:00:00 2001 From: Harold Putman Date: Tue, 2 Oct 2012 08:39:25 -0400 Subject: [PATCH] Framework-compatible breadcrumbs Add new options to getCrumbList to allow it to be used to make breadcrumbs in Twitter Bootstrap or Zurb foundation. Follows the model of PaginatorHelper --- lib/Cake/View/Helper/HtmlHelper.php | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/lib/Cake/View/Helper/HtmlHelper.php b/lib/Cake/View/Helper/HtmlHelper.php index fb53cf340..194bc31c3 100644 --- a/lib/Cake/View/Helper/HtmlHelper.php +++ b/lib/Cake/View/Helper/HtmlHelper.php @@ -681,6 +681,11 @@ class HtmlHelper extends AppHelper { * similar to HtmlHelper::getCrumbs(), so it uses options which every * crumb was added with. * + * ### Options + * - 'separator' Separator content to insert in between breadcrumbs, defaults to '»' + * - 'firstClass' Class for wrapper tag on the first breadcrumb, defaults to 'first' + * - 'lastClass' Class for wrapper tag on current active page, defaults to 'last' + * * @param array $options Array of html attributes to apply to the generated list elements. * @param string|array|boolean $startText This will be the first crumb, if false it defaults to first crumb in array. Can * also be an array, see `HtmlHelper::getCrumbs` for details. @@ -688,6 +693,12 @@ class HtmlHelper extends AppHelper { * @link http://book.cakephp.org/2.0/en/core-libraries/helpers/html.html#creating-breadcrumb-trails-with-htmlhelper */ public function getCrumbList($options = array(), $startText = false) { + $defaults = array('firstClass'=>'first', 'lastClass'=>'last', 'separator' => ''); + $options += $defaults; + $firstClass = $options['firstClass']; + $lastClass = $options['lastClass']; + $separator = $options['separator']; + unset($options['firstClass'], $options['lastClass'], $options['separator']); $crumbs = $this->_prepareCrumbs($startText); if (!empty($crumbs)) { $result = ''; @@ -701,9 +712,12 @@ class HtmlHelper extends AppHelper { $elementContent = $this->link($crumb[0], $crumb[1], $crumb[2]); } if ($which == 0) { - $options['class'] = 'first'; + $options['class'] = $firstClass; } elseif ($which == $crumbCount - 1) { - $options['class'] = 'last'; + $options['class'] = $lastClass; + } + if (!empty($separator) && ($crumbCount - $which >= 2)) { + $elementContent .= $separator; } $result .= $this->tag('li', $elementContent, $options); }