public function testAttributesHTML()
 {
     $field = new FormField('MyField');
     $field->setAttribute('foo', 'bar');
     $this->assertContains('foo="bar"', $field->getAttributesHTML());
     $field->setAttribute('foo', null);
     $this->assertNotContains('foo=', $field->getAttributesHTML());
     $field->setAttribute('foo', '');
     $this->assertNotContains('foo=', $field->getAttributesHTML());
     $field->setAttribute('foo', false);
     $this->assertNotContains('foo=', $field->getAttributesHTML());
     $field->setAttribute('foo', true);
     $this->assertContains('foo="foo"', $field->getAttributesHTML());
     $field->setAttribute('foo', 'false');
     $this->assertContains('foo="false"', $field->getAttributesHTML());
     $field->setAttribute('foo', 'true');
     $this->assertContains('foo="true"', $field->getAttributesHTML());
     $field->setAttribute('foo', 0);
     $this->assertContains('foo="0"', $field->getAttributesHTML());
     $field->setAttribute('one', 1);
     $field->setAttribute('two', 2);
     $field->setAttribute('three', 3);
     $this->assertNotContains('one="1"', $field->getAttributesHTML('one', 'two'));
     $this->assertNotContains('two="2"', $field->getAttributesHTML('one', 'two'));
     $this->assertContains('three="3"', $field->getAttributesHTML('one', 'two'));
 }
 /**
  * @param FormField $f
  * @param string $surfix
  * @return static
  */
 protected function setPlaceHolder(FormField $f, $surfix = '')
 {
     $str = $f->Title();
     if ($surfix) {
         $str .= " {$surfix}";
     }
     $f->setAttribute('placeholder', $str);
     return $this;
 }
 /**
  * @return FormField
  */
 public function addPart(FormField $part)
 {
     if (strval($part->getName()) === '') {
         $part->setName(sprintf('%s-%s', $this->getName(), count($this->parts)));
     }
     $part->setAttribute('data-part', count($this->parts));
     $this->parts[] = $part;
     return $this;
 }
 /**
  * Removes the html attributes required for frontend validation
  * Subclasses should call parent::removeParsley
  * @return void
  * */
 public function removeParsley()
 {
     $this->parsleyApplied = false;
     if ($this->field && $this->customMessage) {
         $this->field->setAttribute(sprintf('data-parsley-%s-message', $this->getConstraintName()), '');
     }
     if (get_class($this->field) === 'CheckboxSetField') {
         $this->field->setAttribute('data-parsley-multiple', '');
     }
 }
 public function setCountryAttribute($name, $value)
 {
     $this->fieldCountry->setAttribute($name, $value);
     return $this;
 }
 /**
  * Updates a formfield with the additional metadata specified by this field
  *
  * @param FormField $field
  */
 protected function updateFormField($field)
 {
     // set the error / formatting messages
     $field->setCustomValidationMessage($this->getErrorMessage());
     // set the right title on this field
     if ($this->RightTitle) {
         // Since this field expects raw html, safely escape the user data prior
         $field->setRightTitle(Convert::raw2xml($this->RightTitle));
     }
     // if this field is required add some
     if ($this->Required) {
         // Required validation can conflict so add the Required validation messages as input attributes
         $errorMessage = $this->getErrorMessage()->HTML();
         $field->addExtraClass('requiredField');
         $field->setAttribute('data-rule-required', 'true');
         $field->setAttribute('data-msg-required', $errorMessage);
         if ($identifier = UserDefinedForm::config()->required_identifier) {
             $title = $field->Title() . " <span class='required-identifier'>" . $identifier . "</span>";
             $field->setTitle($title);
         }
     }
     // if this field has an extra class
     if ($this->ExtraClass) {
         $field->addExtraClass($this->ExtraClass);
     }
 }