[BUGFIX] additionalAttributes for be.buttons.icon-VH misses hsc
[Packages/TYPO3.CMS.git] / typo3 / sysext / fluid / Classes / ViewHelpers / Be / Buttons / IconViewHelper.php
1 <?php
2 namespace TYPO3\CMS\Fluid\ViewHelpers\Be\Buttons;
3
4 /* *
5 * This script is backported from the TYPO3 Flow package "TYPO3.Fluid". *
6 * *
7 * It is free software; you can redistribute it and/or modify it under *
8 * the terms of the GNU Lesser General Public License, either version 3 *
9 * of the License, or (at your option) any later version. *
10 * *
11 * *
12 * This script is distributed in the hope that it will be useful, but *
13 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN- *
14 * TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser *
15 * General Public License for more details. *
16 * *
17 * You should have received a copy of the GNU Lesser General Public *
18 * License along with the script. *
19 * If not, see http://www.gnu.org/licenses/lgpl.html *
20 * *
21 * The TYPO3 project - inspiring people to share! *
22 * */
23 /**
24 * View helper which returns a button icon
25 *
26 * = Examples =
27 *
28 * <code title="Default">
29 * <f:be.buttons.icon uri="{f:uri.action()}" />
30 * </code>
31 * <output>
32 * An icon button as known from the TYPO3 backend, skinned and linked with the default action of the current controller.
33 * Note: By default the "close" icon is used as image
34 * </output>
35 *
36 * <code title="Default">
37 * <f:be.buttons.icon uri="{f:uri.action(action:'new')}" icon="actions-document-new" title="Create new Foo" />
38 * </code>
39 *
40 * <code title="Default">
41 * <f:be.buttons.icon icon="actions-document-new" title="Create new Foo" />
42 * </code>
43 * <output>
44 * Here the "actions-document-new" icon is returned, but without link.
45 * </output>
46 */
47 class IconViewHelper extends \TYPO3\CMS\Fluid\ViewHelpers\Be\AbstractBackendViewHelper {
48
49 /**
50 * Initialize arguments
51 *
52 * @return void
53 * @api
54 */
55 public function initializeArguments() {
56 $this->registerArgument('additionalAttributes', 'array', 'Additional tag attributes. They will be added directly to the resulting HTML tag.', FALSE);
57 }
58
59 /**
60 * Renders a linked icon as known from the TYPO3 backend.
61 *
62 * If the URI is left empty, the icon is rendered without link.
63 *
64 * @param string $uri The target URI for the link. If you want to execute JavaScript here, prefix the URI with "javascript:". Leave empty to render just an icon.
65 * @param string $icon Icon to be used.
66 * @param string $title Title attribute of the icon construct
67 * @return string The rendered icon with or without link
68 */
69 public function render($uri = '', $icon = 'actions-document-close', $title = '') {
70 $additionalAttributes = '';
71 if ($this->hasArgument('additionalAttributes') && is_array($this->arguments['additionalAttributes'])) {
72 foreach ($this->arguments['additionalAttributes'] as $argumentKey => $argumentValue) {
73 $additionalAttributes .= ' ' . $argumentKey . '="' . htmlspecialchars($argumentValue) . '"';
74 }
75 }
76 $icon = \TYPO3\CMS\Backend\Utility\IconUtility::getSpriteIcon($icon, array('title' => $title));
77 if (empty($uri)) {
78 return $icon;
79 } else {
80 return '<a href="' . $uri . '"' . $additionalAttributes . '>' . $icon . '</a>';
81 }
82 }
83 }