/**
  * @param ISurveyStep $step
  * @param string $action
  * @param string $form_name
  * @return Form
  */
 public function build(ISurveyStep $step, $action, $form_name = 'SurveyStepForm')
 {
     $fields = new FieldList();
     $fields->add(new HiddenField('survey_id', 'survey_id', $step->survey()->getIdentifier()));
     $fields->add(new HiddenField('step_id', 'step_id', $step->getIdentifier()));
     $content = $step->template()->content();
     if (!empty($content)) {
         $fields->add(new LiteralField('content', $content));
     }
     if ($step->template()->canSkip()) {
         $fields->add(new LiteralField('skip', sprintf('<p><strong>If you do not wish to answer these questions, you may <a href="%s%s/skip-step">skip to the next section</a>.</strong></p>', Controller::curr()->Link(), $step->template()->title())));
     }
     if (!empty($content) || $step->template()->canSkip()) {
         $fields->add(new LiteralField('hr', '<hr/>'));
     }
     $validator = null;
     $actions = new FieldList(FormAction::create('AddEntity')->setTitle("Add")->setUseButtonTag(true), FormAction::create('Done')->setTitle("Done")->setUseButtonTag(true));
     $form = new DynamicStepForm(Controller::curr(), $form_name, $fields, $actions, $step, $validator);
     $form->setTemplate('DynamicEntityStepForm');
     $form->setAttribute('class', 'survey_step_form');
     return $form;
 }