From da1b213b4bb7ebfa77e92cd90566795b819247a8 Mon Sep 17 00:00:00 2001 From: redd Date: Fri, 27 Jun 2014 15:10:30 +0200 Subject: [PATCH 1/3] Link generation is done by HtmlHelper::link() added escape and escapeTitle options. --- View/Helper/MenuBuilderHelper.php | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/View/Helper/MenuBuilderHelper.php b/View/Helper/MenuBuilderHelper.php index c4f661e..4e502c8 100644 --- a/View/Helper/MenuBuilderHelper.php +++ b/View/Helper/MenuBuilderHelper.php @@ -279,24 +279,30 @@ protected function _buildItem(&$item, $pos = -1, &$isActive = false) { } } - $target = ''; + $urlOptions = array('title' => $item['title']); if (!empty($item['target'])) { - $target = ' target="' . $item['target'] . '"'; + $urlOptions['target'] = $item['target']; } - $linkClass = ''; if (!empty($item['linkClass'])) { - $linkClass = ' class="' . implode(' ', (array)$item['linkClass']) . '"'; + $urlOptions['class'] = $item['linkClass']; + } + + if (isset($item['escape'])) { + $urlOptions['escape'] = $item['escape']; + } + + if (isset($item['escapeTitle'])) { + $urlOptions['escapeTitle'] = $item['escapeTitle']; } - $url = ''; if (!empty($item['image'])) { - $url .= $this->Html->image($item['image'], array('alt' => $item['title'], 'title' => $item['title'])); - $url .= '' . h(__($item['title'])) . ''; + $urlOptions['escape'] = false; + $labelTitle = (isset($urlOptions['escapeTitle']) && $urlOptions['escapeTitle']) ? h($item['title']) : $item['title']; + $url = $this->Html->link($this->Html->image($item['image'], array('alt' => $item['title'])) . '' . $labelTitle . '', $item['url'], $urlOptions); } else { - $url .= h(__($item['title'])); + $url = $this->Html->link($item['title'], $item['url'], $urlOptions); } - $url .= ''; } if ($this->settings['indentHtmlOutput']) { From 065fe883dd218bd5f8a269007781030600c4bc93 Mon Sep 17 00:00:00 2001 From: redd Date: Fri, 27 Jun 2014 16:25:17 +0200 Subject: [PATCH 2/3] Title on img is reduntant if there is an alt and title on link. --- Test/Case/View/Helper/MenuBuilderHelperTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Test/Case/View/Helper/MenuBuilderHelperTest.php b/Test/Case/View/Helper/MenuBuilderHelperTest.php index 8885260..28b72d7 100644 --- a/Test/Case/View/Helper/MenuBuilderHelperTest.php +++ b/Test/Case/View/Helper/MenuBuilderHelperTest.php @@ -1102,7 +1102,7 @@ public function testImageMenu() { ' array('title' => 'Item 2', 'href' => '/item-2')), - array('img' => array('src' => '/path/my-image.jpg', 'alt' => 'Item 2', 'title' => 'Item 2')), + array('img' => array('src' => '/path/my-image.jpg', 'alt' => 'Item 2')), array('span' => array('class' => 'label')), 'Item 2', ' Date: Fri, 27 Jun 2014 23:16:35 +0200 Subject: [PATCH 3/3] escapeTitle should be set to false while generating images as a link. --- View/Helper/MenuBuilderHelper.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/View/Helper/MenuBuilderHelper.php b/View/Helper/MenuBuilderHelper.php index 4e502c8..a7eba18 100644 --- a/View/Helper/MenuBuilderHelper.php +++ b/View/Helper/MenuBuilderHelper.php @@ -297,8 +297,8 @@ protected function _buildItem(&$item, $pos = -1, &$isActive = false) { } if (!empty($item['image'])) { - $urlOptions['escape'] = false; - $labelTitle = (isset($urlOptions['escapeTitle']) && $urlOptions['escapeTitle']) ? h($item['title']) : $item['title']; + $urlOptions['escapeTitle'] = false; + $labelTitle = (isset($urlOptions['escape']) && $urlOptions['escape']) ? h($item['title']) : $item['title']; $url = $this->Html->link($this->Html->image($item['image'], array('alt' => $item['title'])) . '' . $labelTitle . '', $item['url'], $urlOptions); } else { $url = $this->Html->link($item['title'], $item['url'], $urlOptions);