From e7edfad27a6222d8892b22481bc54b642fd0acdc Mon Sep 17 00:00:00 2001 From: Ryan Cramer Date: Wed, 4 Jan 2023 10:38:42 -0500 Subject: [PATCH] Update for processwire/processwire-issues#1651 --- wire/core/Inputfield.php | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/wire/core/Inputfield.php b/wire/core/Inputfield.php index b11d332d..e81fc456 100644 --- a/wire/core/Inputfield.php +++ b/wire/core/Inputfield.php @@ -517,8 +517,8 @@ abstract class Inputfield extends WireData implements Module { } else if($key === 'addClass') { if(is_string($value) && !ctype_alnum($value)) { - $test = str_replace(array(' ', ':', ',', '-', '_', '.', '@', "\n"), '', $value); - if(!ctype_alnum($test)) $value = preg_replace('![^-_:@,. a-zA-Z0-9\n]!', '', $value); + $test = str_replace(array(' ', ':', ',', '-', '+', '=', '!', '_', '.', '@', "\n"), '', $value); + if(!ctype_alnum($test)) $value = preg_replace('/[^-+_:=@!,. a-zA-Z0-9\n]/', '', $value); } $this->addClass($value); } @@ -1079,8 +1079,11 @@ abstract class Inputfield extends WireData implements Module { * */ public function addClass($class, $property = 'class') { + + $force = strpos($property, '=') === 0; // force set, skip processing by addClassString + if($force) $property = ltrim($property, '='); - if(is_string($class) && !ctype_alnum($class)) { + if(is_string($class) && !ctype_alnum($class) && !$force) { if(strpos($class, ':') || strpos($class, "\n") || strpos($class, ",")) { return $this->addClassString($class, $property); } @@ -1180,7 +1183,7 @@ abstract class Inputfield extends WireData implements Module { if(strpos($class, '-') === 0) { $this->removeClass(ltrim($class, '-'), $type); } else { - $this->addClass($class, $type); + $this->addClass($class, "=$type"); // "=type" prevents further processing } } } @@ -1745,6 +1748,7 @@ abstract class Inputfield extends WireData implements Module { "`"; $f->collapsed = Inputfield::collapsedBlank; $f->renderFlags = self::renderLast; + $f->val($this->getSetting('addClass')); $inputfields->add($f); }