From 0d902a579bcf747fff9a4f0afbae20ce77394184 Mon Sep 17 00:00:00 2001
From: Henning Leutz <leutz@pcsg.de>
Date: Wed, 30 Mar 2016 12:49:44 +0200
Subject: [PATCH] =?UTF-8?q?Issue=20#32=20=20In=20den=20Bausteinen=20werden?=
 =?UTF-8?q?=20keine=20CSS-Klassen=20=C3=BCbernommen=20->=20verbesseurng:?=
 =?UTF-8?q?=20keine=20doppelten=20css=20klassen=20erlaubt?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 bin/BrickEdit.js         |  2 +-
 src/QUI/Bricks/Brick.php | 29 +++++++++++++++++++----------
 2 files changed, 20 insertions(+), 11 deletions(-)

diff --git a/bin/BrickEdit.js b/bin/BrickEdit.js
index fdffb30..14b4ab6 100644
--- a/bin/BrickEdit.js
+++ b/bin/BrickEdit.js
@@ -354,7 +354,7 @@ define('package/quiqqer/bricks/bin/BrickEdit', [
             var Form   = this.getContent().getElement('form'),
                 unload = this.$Active.getAttribute('name'),
                 data   = this.getAttribute('data');
-            
+
             if (unload == 'information') {
                 data.attributes = Object.merge(
                     data.attributes,
diff --git a/src/QUI/Bricks/Brick.php b/src/QUI/Bricks/Brick.php
index d15990a..b642953 100644
--- a/src/QUI/Bricks/Brick.php
+++ b/src/QUI/Bricks/Brick.php
@@ -259,14 +259,7 @@ public function create()
         $Control->setAttributes($this->getSettings());
 
         if ($this->getAttribute('classes')) {
-            $classes = explode(' ', $this->getAttribute('classes'));
-
-            foreach ($classes as $class) {
-                $class = trim($class);
-                $class = preg_replace('/[^a-zA-Z0-9\-]/', '', $class);
-
-                $Control->addCSSClass($class);
-            }
+            $Control->addCSSClass($this->getAttribute('classes'));
         }
 
         if ($this->id) {
@@ -413,8 +406,24 @@ public function getCustomFields()
      */
     public function addCSSClass($cssClass)
     {
-        if (!empty($cssClass)) {
-            $this->cssClasses[] = $cssClass;
+        if (!is_string($cssClass)) {
+            return;
+        }
+
+        if (empty($cssClass)) {
+            return;
+        }
+
+        $classes = preg_replace('/[^_a-zA-Z0-9-]/', ' ', $cssClass);
+        $classes = explode(' ', $classes);
+
+        $keys = array_flip($this->cssClasses);
+
+        foreach ($classes as $cssClass) {
+            if (!isset($keys[$cssClass])) {
+                $this->cssClasses[] = $cssClass;
+                $keys[$cssClass]    = true;
+            }
         }
     }
 
-- 
GitLab