Skip to content

Commit 0649df0

Browse files
committed
Update the addClass method to remove duplicate classes.
1 parent cba87cf commit 0649df0

File tree

2 files changed

+27
-11
lines changed

2 files changed

+27
-11
lines changed

src/View/Helper/BootstrapTrait.php

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -41,21 +41,21 @@ trait BootstrapTrait {
4141
* @return array Array of options with $key set.
4242
*/
4343
public function addClass(array $options = [], $class = null, $key = 'class') {
44-
if (is_array($class)) {
45-
$class = implode(' ', array_unique(array_map('trim', $class))) ;
44+
if (!is_array($class)) {
45+
$class = explode(' ', trim($class));
4646
}
47+
$optClass = [];
4748
if (isset($options[$key])) {
4849
$optClass = $options[$key];
49-
if (is_array($optClass)) {
50-
$optClass = trim(implode(' ', array_unique(array_map('trim', $optClass))));
50+
if (!is_array($optClass)) {
51+
$optClass = explode(' ', trim($optClass));
5152
}
5253
}
53-
if (isset($optClass) && $optClass) {
54-
$options[$key] = $optClass.' '.$class ;
55-
}
56-
else {
57-
$options[$key] = $class ;
58-
}
54+
$class = array_merge($optClass, $class);
55+
$class = array_map('trim', $class);
56+
$class = array_unique($class);
57+
$class = array_filter($class);
58+
$options[$key] = implode(' ', $class);
5959
return $options ;
6060
}
6161

tests/TestCase/View/Helper/BootstrapTraitTest.php

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,23 @@ public function tearDown() {
5252
unset($this->Form);
5353
unset($this->Paginator);
5454
}
55-
55+
56+
public function testAddClass() {
57+
// Test with a string
58+
$opts = [
59+
'class' => 'class-1'
60+
];
61+
$opts = $this->_Trait->addClass($opts, ' class-1 class-2 ');
62+
$this->assertEquals($opts, [
63+
'class' => 'class-1 class-2'
64+
]);
65+
// Test with an array
66+
$opts = $this->_Trait->addClass($opts, ['class-1', 'class-3']);
67+
$this->assertEquals($opts, [
68+
'class' => 'class-1 class-2 class-3'
69+
]);
70+
}
71+
5672
public function testEasyIcon() {
5773

5874
$that = $this;

0 commit comments

Comments
 (0)