/**
  * @param IRSVP $rsvp
  * @param IRSVPQuestionTemplate $question
  * @param IRSVPAnswer $answer
  * @return FormField
  */
 public function build(IRSVP $rsvp, IRSVPQuestionTemplate $question, IRSVPAnswer $answer)
 {
     $options = array();
     if ($question->IsCountrySelector) {
         $extra_options = array('Worldwide' => 'Worldwide', 'Prefer not to say' => 'Prefer not to say', 'Too many to list' => 'Too many to list');
         $options = array_merge($extra_options, CountryCodes::$iso_3166_countryCodes);
     } else {
         foreach ($question->Values()->sort('Order') as $val) {
             $options[$val->ID] = empty($val->Label) ? $val->Value : $val->Label;
         }
     }
     $default_value = $question->DefaultValue();
     $field = $question->IsMultiSelect ? new MultiDropdownField($question->name(), $question->label(), $options) : new DropdownField($question->name(), $question->label(), $options);
     if ($question->isReadOnly()) {
         $field->setDisabled(true);
     }
     if ($question->isMandatory()) {
         $field->setAttribute('data-rule-required', 'true');
         $field->setAttribute('aria-required', 'true');
     }
     if (!is_null($default_value) && $default_value->exists()) {
         $field->setValue($default_value->ID);
     }
     if (!is_null($answer)) {
         $field->setValue($answer->value());
     }
     $empty_string = $question->EmptyString;
     if (!empty($empty_string)) {
         if ($question->UseChosenPlugin && $question->IsMultiSelect) {
             $field->setAttribute('data-placeholder', $empty_string);
         } else {
             $field->setEmptyString($empty_string);
         }
     }
     $field = $this->buildDependantRules($rsvp, $question, $field);
     if ($question->UseChosenPlugin) {
         $field->addExtraClass('chosen');
         if (count($question->DependsOn()) === 0) {
             $field->addExtraClass('chosen-visible');
         }
         Requirements::customScript("jQuery(document).ready(function(\$){\n                            var form    = \$('.rsvp_form');\n                            var form_id = form.attr('id');\n                            \$('#'+form_id+'_{$question->name()}').chosen({width: '30%'});\n                        });\n                    ");
     }
     return $field;
 }
 /**
  * @param IRSVP $rsvp
  * @param IRSVPQuestionTemplate $question
  * @param FormField $field
  */
 protected function buildDependantRules(IRSVP $rsvp, IRSVPQuestionTemplate $question, FormField $field)
 {
     //depends : check visibility
     $depends = $question->getDependsOn();
     foreach ($depends as $d) {
         switch ($d->ClassName) {
             case 'RSVPCheckBoxQuestionTemplate':
                 $field->displayIf($d->name())->isChecked();
                 break;
             case 'RSVPCheckBoxListQuestionTemplate':
                 $field->displayIf($d->name())->hasCheckedOption($d->ValueID);
                 break;
             default:
                 $field->displayIf($d->name())->isEqualTo($d->ValueID);
                 break;
         }
     }
     return $field;
 }
 /**
  * @param IRSVP $rsvp
  * @param IRSVPQuestionTemplate $question
  * @param IRSVPAnswer $answer
  * @return FormField
  */
 public function build(IRSVP $rsvp, IRSVPQuestionTemplate $question, IRSVPAnswer $answer)
 {
     $field = new TextField($question->name(), $question->label());
     if ($rsvp) {
         $field->setValue($rsvp->findAnswerByQuestion($question)->Value);
     } else {
         $field->setValue($question->initialValue());
     }
     if ($question->isReadOnly()) {
         $field->setDisabled(true);
     }
     if ($question->isMandatory()) {
         $field->setAttribute('data-rule-required', 'true');
     }
     if (!is_null($answer)) {
         $field->setValue($answer->value());
     }
     return $this->buildDependantRules($rsvp, $question, $field);
 }
 /**
  * @param IRSVP $rsvp
  * @param IRSVPQuestionTemplate $question
  * @param IRSVPAnswer $answer
  * @return FormField
  */
 public function build(IRSVP $rsvp, IRSVPQuestionTemplate $question, IRSVPAnswer $answer)
 {
     $options = array();
     foreach ($question->Values()->sort('Order') as $val) {
         $options[$val->ID] = empty($val->Label) ? $val->Value : $val->Label;
     }
     $field = new RSVPCheckboxSetField($question->name(), $question->label(), $options, $value = '', $form = null, $emptyString = null, $question);
     if ($question->isReadOnly()) {
         $field->setDisabled(true);
     }
     if ($question->isMandatory()) {
         $field->setRequired();
     }
     if (!is_null($answer)) {
         $field->setValue($answer->value());
     }
     $field->setTemplate('RSVPCheckboxSetField');
     return $this->buildDependantRules($rsvp, $question, $field);
 }
 /**
  * @param IRSVP $rsvp
  * @param IRSVPQuestionTemplate $question
  * @param IRSVPAnswer $answer
  * @return FormField
  */
 public function build(IRSVP $rsvp, IRSVPQuestionTemplate $question, IRSVPAnswer $answer)
 {
     $field = new CheckboxField($question->name(), $question->label());
     $field->setValue($question->initialValue());
     if ($question->isReadOnly()) {
         $field->setDisabled(true);
     }
     if ($question->isMandatory()) {
         $field->setAttribute('data-rule-required', 'true');
     }
     if (!is_null($answer)) {
         $field->setValue($answer->value());
     }
     $field->setFieldHolderTemplate('RSVPCheckboxField_holder');
     return $field;
 }
 /**
  * @param IRSVP $rsvp
  * @param IRSVPQuestionTemplate $question
  * @param IRSVPAnswer $answer
  * @return FormField
  */
 public function build(IRSVP $rsvp, IRSVPQuestionTemplate $question, IRSVPAnswer $answer)
 {
     $options = array();
     foreach ($question->Values()->sort('Order') as $val) {
         $options[$val->ID] = empty($val->Label) ? $val->Value : $val->Label;
     }
     $field = new OptionsetField($question->name(), $question->label(), $options);
     $default_value = $question->getDefaultValue();
     if (!is_null($default_value) && $default_value->ID > 0) {
         $field->setValue($default_value->ID);
     }
     if ($question->isReadOnly()) {
         $field->setDisabled(true);
     }
     if ($question->isMandatory()) {
         $field->setAttribute('data-rule-required', 'true');
     }
     if (!is_null($answer)) {
         $field->setValue($answer->value());
     }
     $field->setTemplate('RSVPOptionSetField');
     return $this->buildDependantRules($rsvp, $question, $field);
 }
Example #7
0
 /**
  * @param IRSVPQuestionTemplate $question
  * @return IRSVPAnswer
  */
 public function findAnswerByQuestion(IRSVPQuestionTemplate $question)
 {
     foreach ($this->getAnswers() as $answer) {
         if ($answer->question()->getIdentifier() === $question->getIdentifier()) {
             if (!is_null($answer)) {
                 return $answer;
             }
         }
     }
     return null;
 }
 /**
  * @param IRSVP $rsvp
  * @param IRSVPQuestionTemplate $question
  * @param IRSVPAnswer $answer
  * @return FormField
  */
 public function build(IRSVP $rsvp, IRSVPQuestionTemplate $question, IRSVPAnswer $answer)
 {
     $field = new LiteralField($question->name(), $question->Content);
     return $field;
 }