コード例 #1
0
 /**
  * @param string $url
  * @param string $action
  * @return FormValidator
  */
 public function return_form($url, $action)
 {
     $form = new FormValidator($this->type . '_field', 'post', $url);
     $form->addElement('hidden', 'type', $this->type);
     $id = isset($_GET['id']) ? intval($_GET['id']) : null;
     $form->addElement('hidden', 'id', $id);
     // Setting the form elements
     $header = get_lang('Add');
     $defaults = array();
     if ($action == 'edit') {
         $header = get_lang('Modify');
         // Setting the defaults
         $defaults = $this->get($id);
     }
     $form->addElement('header', $header);
     $form->addElement('text', 'field_display_text', get_lang('Name'), array('class' => 'span5'));
     // Field type
     $types = self::get_field_types();
     $form->addElement('select', 'field_type', get_lang('FieldType'), $types, array('id' => 'field_type', 'class' => 'chzn-select', 'data-placeholder' => get_lang('Select')));
     $form->addElement('label', get_lang('Example'), '<div id="example">-</div>');
     $form->addElement('text', 'field_variable', get_lang('FieldLabel'), array('class' => 'span5'));
     $form->addElement('text', 'field_options', get_lang('FieldPossibleValues'), array('id' => 'field_options', 'class' => 'span6'));
     $fieldWithOptions = array(ExtraField::FIELD_TYPE_SELECT, ExtraField::FIELD_TYPE_TAG, ExtraField::FIELD_TYPE_DOUBLE_SELECT);
     if ($action == 'edit') {
         if (in_array($defaults['field_type'], $fieldWithOptions)) {
             $url = Display::url(get_lang('EditExtraFieldOptions'), 'extra_field_options.php?type=' . $this->type . '&field_id=' . $id);
             $form->addElement('label', null, $url);
             if ($defaults['field_type'] == ExtraField::FIELD_TYPE_SELECT) {
                 $urlWorkFlow = Display::url(get_lang('EditExtraFieldWorkFlow'), 'extra_field_workflow.php?type=' . $this->type . '&field_id=' . $id);
                 $form->addElement('label', null, $urlWorkFlow);
             }
             $form->freeze('field_options');
         }
     }
     $form->addElement('text', 'field_default_value', get_lang('FieldDefaultValue'), array('id' => 'field_default_value', 'class' => 'span5'));
     $group = array();
     $group[] = $form->createElement('radio', 'field_visible', null, get_lang('Yes'), 1);
     $group[] = $form->createElement('radio', 'field_visible', null, get_lang('No'), 0);
     $form->addGroup($group, '', get_lang('Visible'), '', false);
     $group = array();
     $group[] = $form->createElement('radio', 'field_changeable', null, get_lang('Yes'), 1);
     $group[] = $form->createElement('radio', 'field_changeable', null, get_lang('No'), 0);
     $form->addGroup($group, '', get_lang('FieldChangeability'), '', false);
     $group = array();
     $group[] = $form->createElement('radio', 'field_filter', null, get_lang('Yes'), 1);
     $group[] = $form->createElement('radio', 'field_filter', null, get_lang('No'), 0);
     $form->addGroup($group, '', get_lang('FieldFilter'), '', false);
     $group = array();
     $group[] = $form->createElement('radio', 'field_loggeable', null, get_lang('Yes'), 1);
     $group[] = $form->createElement('radio', 'field_loggeable', null, get_lang('No'), 0);
     $form->addGroup($group, '', get_lang('FieldLoggeable'), '', false);
     $form->addElement('text', 'field_order', get_lang('FieldOrder'), array('class' => 'span1'));
     if ($action == 'edit') {
         $option = new ExtraFieldOption($this->type);
         if ($defaults['field_type'] == ExtraField::FIELD_TYPE_DOUBLE_SELECT) {
             $form->freeze('field_options');
         }
         $defaults['field_options'] = $option->get_field_options_by_field_to_string($id);
         $form->addElement('button', 'submit', get_lang('Modify'), 'class="save"');
     } else {
         $defaults['field_visible'] = 0;
         $defaults['field_changeable'] = 0;
         $defaults['field_filter'] = 0;
         $form->addElement('button', 'submit', get_lang('Add'), 'class="save"');
     }
     /*if (!empty($defaults['created_at'])) {
           $defaults['created_at'] = api_convert_and_format_date($defaults['created_at']);
       }
       if (!empty($defaults['updated_at'])) {
           $defaults['updated_at'] = api_convert_and_format_date($defaults['updated_at']);
       }*/
     $form->setDefaults($defaults);
     // Setting the rules
     $form->addRule('field_display_text', get_lang('ThisFieldIsRequired'), 'required');
     //$form->addRule('field_variable', get_lang('ThisFieldIsRequired'), 'required');
     $form->addRule('field_type', get_lang('ThisFieldIsRequired'), 'required');
     return $form;
 }