From 95ba5f45a5553d514b9ab42914b5ce00a485b946 Mon Sep 17 00:00:00 2001 From: Tigran Gabrielyan Date: Tue, 21 Feb 2012 11:38:13 -0800 Subject: [PATCH] Keeping code dry in HtmlHelper::getCrumbs/getCrumbList --- lib/Cake/View/Helper/HtmlHelper.php | 54 ++++++++++++++--------------- 1 file changed, 26 insertions(+), 28 deletions(-) diff --git a/lib/Cake/View/Helper/HtmlHelper.php b/lib/Cake/View/Helper/HtmlHelper.php index 4c002cb19fc..7f18b24e0a1 100644 --- a/lib/Cake/View/Helper/HtmlHelper.php +++ b/lib/Cake/View/Helper/HtmlHelper.php @@ -684,21 +684,8 @@ public function style($data, $oneline = true) { public function getCrumbs($separator = '»', $startText = false) { if (!empty($this->_crumbs)) { $out = array(); - if ($startText) { - if (!is_array($startText)) { - $startText = array( - 'url' => '/', - 'text' => $startText - ); - } - $startText += array('url' => '/', 'text' => __('Home')); - list($url, $text) = array($startText['url'], $startText['text']); - unset($startText['url'], $startText['text']); - - $out[] = $this->link($text, $url, $startText); - } - - foreach ($this->_crumbs as $crumb) { + $crumbs = $this->_prepareCrumbs($startText); + foreach ($crumbs as $crumb) { if (!empty($crumb[1])) { $out[] = $this->link($crumb[0], $crumb[1], $crumb[2]); } else { @@ -727,19 +714,7 @@ public function getCrumbs($separator = '»', $startText = false) { public function getCrumbList($options = array(), $startText = false) { if (!empty($this->_crumbs)) { $result = ''; - $crumbs = $this->_crumbs; - if ($startText) { - if (!is_array($startText)) { - $startText = array( - 'url' => '/', - 'text' => $startText - ); - } - $startText += array('url' => '/', 'text' => __('Home')); - list($url, $text) = array($startText['url'], $startText['text']); - unset($startText['url'], $startText['text']); - array_unshift($crumbs, array($text, $url, $startText)); - } + $crumbs = $this->_prepareCrumbs($startText); $crumbCount = count($crumbs); $ulOptions = $options; foreach ($crumbs as $which => $crumb) { @@ -762,6 +737,29 @@ public function getCrumbList($options = array(), $startText = false) { } } +/** + * Prepends startText to crumbs array if set + * + * @param $startText + * @return array Crumb list including startText (if provided) + */ + protected function _prepareCrumbs($startText) { + $crumbs = $this->_crumbs; + if ($startText) { + if (!is_array($startText)) { + $startText = array( + 'url' => '/', + 'text' => $startText + ); + } + $startText += array('url' => '/', 'text' => __('Home')); + list($url, $text) = array($startText['url'], $startText['text']); + unset($startText['url'], $startText['text']); + array_unshift($crumbs, array($text, $url, $startText)); + } + return $crumbs; + } + /** * Creates a formatted IMG element. *