diff --git a/src/Forms/Form.php b/src/Forms/Form.php index c35561d23f7..9a6fd11d1b2 100644 --- a/src/Forms/Form.php +++ b/src/Forms/Form.php @@ -1779,6 +1779,25 @@ public function extraClass() return implode(' ', array_unique($this->extraClasses)); } + /** + * Check if a CSS-class has been added to the form container. + * + * @param string $class A string containing a classname or several class + * names delimited by a single space. + * @return boolean True if all of the classnames passed in have been added. + */ + public function hasExtraClass($class) + { + //split at white space + $classes = preg_split('/\s+/', $class); + foreach ($classes as $class) { + if (!isset($this->extraClasses[$class])) { + return false; + } + } + return true; + } + /** * Add a CSS-class to the form-container. If needed, multiple classes can * be added by delimiting a string with spaces. diff --git a/src/Forms/FormField.php b/src/Forms/FormField.php index e4663291ca4..98f25b735e9 100644 --- a/src/Forms/FormField.php +++ b/src/Forms/FormField.php @@ -602,6 +602,25 @@ public function extraClass() return implode(' ', $classes); } + /** + * Check if a CSS-class has been added to the form container. + * + * @param string $class A string containing a classname or several class + * names delimited by a single space. + * @return boolean True if all of the classnames passed in have been added. + */ + public function hasExtraClass($class) + { + //split at white space + $classes = preg_split('/\s+/', $class); + foreach ($classes as $class) { + if (!isset($this->extraClasses[$class])) { + return false; + } + } + return true; + } + /** * Add one or more CSS-classes to the FormField container. * diff --git a/tests/php/Forms/FormFieldTest.php b/tests/php/Forms/FormFieldTest.php index 8f60cddbbad..6e5e47ac672 100644 --- a/tests/php/Forms/FormFieldTest.php +++ b/tests/php/Forms/FormFieldTest.php @@ -93,6 +93,19 @@ public function testAddExtraClass() $this->assertStringEndsWith('class1 class2', $field->extraClass()); } + public function testHasExtraClass() + { + $field = new FormField('MyField'); + $field->addExtraClass('class1'); + $field->addExtraClass('class2'); + $this->assertTrue($field->hasExtraClass('class1')); + $this->assertTrue($field->hasExtraClass('class2')); + $this->assertTrue($field->hasExtraClass('class1 class2')); + $this->assertTrue($field->hasExtraClass('class2 class1')); + $this->assertFalse($field->hasExtraClass('class3')); + $this->assertFalse($field->hasExtraClass('class2 class3')); + } + public function testRemoveExtraClass() { $field = new FormField('MyField'); diff --git a/tests/php/Forms/FormTest.php b/tests/php/Forms/FormTest.php index 8ee42df4bb1..0cb12989e5a 100644 --- a/tests/php/Forms/FormTest.php +++ b/tests/php/Forms/FormTest.php @@ -726,6 +726,19 @@ public function testAddExtraClass() $this->assertStringEndsWith('class1 class2', $form->extraClass()); } + public function testHasExtraClass() + { + $form = $this->getStubForm(); + $form->addExtraClass('class1'); + $form->addExtraClass('class2'); + $this->assertTrue($form->hasExtraClass('class1')); + $this->assertTrue($form->hasExtraClass('class2')); + $this->assertTrue($form->hasExtraClass('class1 class2')); + $this->assertTrue($form->hasExtraClass('class2 class1')); + $this->assertFalse($form->hasExtraClass('class3')); + $this->assertFalse($form->hasExtraClass('class2 class3')); + } + public function testRemoveExtraClass() { $form = $this->getStubForm();