[BUGFIX] Allow data attributes in LinkButtons and InputButtons 23/43823/3
authorMathias Schreiber <mathias.schreiber@wmdb.de>
Mon, 5 Oct 2015 15:34:41 +0000 (17:34 +0200)
committerThomas Maroschik <tmaroschik@dfau.de>
Mon, 5 Oct 2015 17:13:14 +0000 (19:13 +0200)
Releases: master
Resolves: #70396
Change-Id: I09279c507ea1ba5346c94deb53e1480dd1694462
Reviewed-on: http://review.typo3.org/43823
Reviewed-by: Frank Nägler <frank.naegler@typo3.org>
Tested-by: Frank Nägler <frank.naegler@typo3.org>
Reviewed-by: Thomas Maroschik <tmaroschik@dfau.de>
Tested-by: Thomas Maroschik <tmaroschik@dfau.de>
typo3/sysext/backend/Classes/Template/Components/Buttons/InputButton.php
typo3/sysext/backend/Classes/Template/Components/Buttons/LinkButton.php

index d83edb5..f3ea95e 100644 (file)
@@ -115,19 +115,22 @@ class InputButton extends AbstractButton implements ButtonInterface {
         * @return string
         */
        public function render() {
-               $content = '
-               <button name="' .
-                       htmlspecialchars($this->getName()) .
-                       '" class="btn btn-default btn-sm ' .
-                       htmlspecialchars($this->getClasses()) .
-                       '" value="' .
-                       htmlspecialchars($this->getValue()) .
-                       '" title="' .
-                       htmlspecialchars($this->getTitle()) .
-                       '">' . $this->getIcon()->__toString() .
-                       '</button>
-               ';
-               return $content;
+               $attributes = array(
+                       'name' => $this->getName(),
+                       'class' => 'btn btn-default btn-sm ' . $this->getClasses(),
+                       'value' => $this->getValue(),
+                       'title' => $this->getTitle()
+               );
+               foreach ($this->dataAttributes as $attributeName => $attributeValue) {
+                       $attributes['data-' . htmlspecialchars($attributeName)] = $attributeValue;
+               }
+               $attributesString = '';
+               foreach ($attributes as $key => $value) {
+                       $attributesString .= ' ' . htmlspecialchars($key) . '="' . htmlspecialchars($value) . '"';
+               }
+               return '<button' . $attributesString . '">'
+                       . $this->getIcon()->render()
+               . '</button>';
        }
 
        /**
@@ -138,4 +141,4 @@ class InputButton extends AbstractButton implements ButtonInterface {
        public function __toString() {
                return $this->render();
        }
-}
\ No newline at end of file
+}
index aead710..54bac96 100644 (file)
@@ -85,22 +85,25 @@ class LinkButton extends AbstractButton implements ButtonInterface {
         * @return string
         */
        public function render() {
+               $attributes = array(
+                       'href' => $this->getHref(),
+                       'class' => 'btn btn-default btn-sm ' . $this->getClasses(),
+                       'title' => $this->getTitle()
+               );
+               foreach ($this->dataAttributes as $attributeName => $attributeValue) {
+                       $attributes['data-' . htmlspecialchars($attributeName)] = $attributeValue;
+               }
                if ($this->onClick !== '') {
-                       $onClick = 'onclick="' . htmlspecialchars($this->onClick) . '"';
-               } else {
-                       $onClick = '';
+                       $attributes['onclick'] = $this->onClick;
+               }
+               $attributesString = '';
+               foreach ($attributes as $key => $value) {
+                       $attributesString .= ' ' . htmlspecialchars($key) . '="' . htmlspecialchars($value) . '"';
                }
-               return '<a href="' .
-               htmlspecialchars($this->getHref()) .
-               '" class="btn btn-sm btn-default ' .
-               htmlspecialchars($this->getClasses()) .
-               '" ' .
-               $onClick .
-               ' title="' .
-               htmlspecialchars($this->getTitle()) .
-               '">' .
-               $this->getIcon()->__toString() .
-               '</a>';
+
+               return '<a ' . $attributesString . '>'
+                       . $this->getIcon()->render()
+               . '</a>';
        }
 
        /**
@@ -111,4 +114,4 @@ class LinkButton extends AbstractButton implements ButtonInterface {
        public function __toString() {
                return $this->render();
        }
-}
\ No newline at end of file
+}