コード例 #1
0
  /**
   * @param array $form
   * @param $type
   * @param $default_value_message
   *
   * @return array
   */
  public function EFormTypeElements(array $form, EFormType $type, $default_value_message = '') {
    // @todo Deal with default value logic and message from D7


    $form['additional_settings'] = array(
      '#type' => 'vertical_tabs',
    );

    $form['submission'] = array(
      '#type' => 'details',
      '#title' => $this->t('Submission form settings'),
      '#group' => 'additional_settings',
    );

    $form['submission']['form_title'] = array(
      '#type' => 'textfield',
      '#title' => $this->t('Form Title'),
      '#default_value' => $type->getFormTitle(),
      '#description' => t('Title For submission form.'),
    );


    $form['submission']['help'] = array(
      '#type' => 'textarea',
      '#title' => $this->t('Explanation or submission guidelines'),
      '#default_value' => $type->help,
      '#description' => t('This text will be displayed at the top of the page when creating or editing eform type of this type.'),
    );

    //****************ACCESS FIELDSET SETTINGS *********************//
    $form['access'] = array(
      '#type' => 'details',
      '#title' => $this->t('Access settings'),
      //'#collapsible' => TRUE,
      '#group' => 'additional_settings',
      '#weight' => -50,
    );
    $form['access']['form_status'] = array(
      '#type' => 'select',
      '#title' => $this->t('Form status'),
      '#options' => array(
        EFormType::STATUS_OPEN => $this->t('Open for new submissions'),
        EFormType::STATUS_CLOSED => $this->t('Closed form new form submissions'),
      ),
      '#default_value' => empty($type->form_status) ? EFormType::STATUS_OPEN : $type->form_status,
      '#description' => t('Can users submit this form?  Open means the users can submit this form.  Closed means the user can not submit the form.'),
    );
    if ($type->isNew()) {
      $default_roles = [];
    }
    else {
      $default_roles = array_keys(user_role_names(NULL, $type->getPermission('submit')));
    };
    $form['access']['roles'] = array(
      '#type' => 'checkboxes',
      '#title' => t('Roles'),
      '#options' => array_map('\Drupal\Component\Utility\SafeMarkup::checkPlain', user_role_names()),
      '#default_value' => $default_roles,
      '#required' => TRUE,
      '#description' => t('Please select the Role(s) that can submit this form.'),
    );

    $form['access']['resubmit_action'] = array(
      '#type' => 'select',
      '#title' => t('Resubmit action'),
      '#options' => array(
        EFormType::RESUBMIT_ACTION_NEW => t('Allow new submission'),
        EFormType::RESUBMIT_ACTION_OLD => t('Edit old submission'),
        EFormType::RESUBMIT_ACTION_DISALLOW => t("Don't allow"),
        EFormType::RESUBMIT_ACTION_CONFIRM => t('Goto Confirm page'),
      ),
      '#default_value' => $type->getResubmitAction() ? $type->getResubmitAction() : EFormType::RESUBMIT_ACTION_NEW,
      '#description' => t('Action to take if logged in user has already submitted form.'),
    );
    $disallow_text = $type->getDisallowText();
    $form['access']['disallow_text'] = array(
      '#type' => 'text_format',
      '#title' => $this->t('Disallow Text'),
      '#default_value' => empty($disallow_text['value']) ? '' : $disallow_text['value'],
      '#format' => empty($disallow_text['format']) ? NULL : $disallow_text['format'],
      '#description' => $this->t('This text will be displayed if the user has already submitted the form.') . $default_value_message,
      '#states' => array(
        'visible' => array(
          array(
            ':input[name="resubmit_action"]' => array('value' => EFormType::RESUBMIT_ACTION_DISALLOW),
          ),
        ),
      ),
    );
    //****************SUBMISSION PAGE FIELDSET SETTINGS *********************//

    $form['submission_page'] = array(
      '#type' => 'details',
      '#title' => $this->t('Submission page settings'),
      '#group' => 'additional_settings',
      '#weight' => 20,
    );
    $form['submission_page']['preview_page'] = array(
      '#type' => 'checkbox',
      '#title' => $this->t('Preview Page'),
      '#default_value' => $type->preview_page,
      '#description' => t('Show a Preview page.'),
    );


    $form['submission_page']['submission_page_title'] = array(
      '#type' => 'textfield',
      '#title' => $this->t('Submission Page Title'),
      '#default_value' => empty($type->getSubmissionPageTitle()) ? '' : $type->getSubmissionPageTitle(),
      '#description' => t('Page title for correct submission.') . $default_value_message,
    );
    $submission_text = $type->getSubmissionText();
    $form['submission_page']['submission_text'] = array(
      '#type' => 'text_format',
      '#title' => $this->t('Submission Text'),
      '#default_value' => empty($submission_text['value']) ? '' : $submission_text['value'],
      '#format' => empty($submission_text['format']) ? NULL : $submission_text['format'],
      '#description' => t('This text will be displayed to the user when a correct form is submitted.') . $default_value_message,
    );
    $show_submitted = $type->isSubmissionShowSubmitted();
    $form['submission_page']['submission_show_submitted'] = array(
      '#type' => 'checkbox',
      '#title' => t('Show submission information'),
      '#default_value' => !empty($show_submitted),
      '#description' => t('Show submitted data on submission page?'),
    );
    //****************Views  SETTINGS *********************//
    $view_options = $this->getViewOptions();
    $form['submission_views'] = array(
      '#type' => 'details',
      '#title' => $this->t('Submission Views'),
      //'#collapsible' => TRUE,
      '#group' => 'additional_settings',
      '#weight' => 30,
    );
    $form['submission_views']['admin_submissions_view'] = array(
      '#type' => 'select',
      '#title' => t('View for submissions reports'),
      '#description' => t('Select the View that should be used Submission reports.'),
      '#default_value' => $type->getAdminView(),
      '#options' => $view_options,
    );
    $user_view_description = 'Select the View that should be used to show users their previous submissions.';
    $user_view_description .= ' If "None" is selected then the users will not see a previous submissions link.';
    $form['submission_views']['user_submissions_view'] = array(
      '#type' => 'select',
      '#title' => t('View for current user\'s submissions'),
      '#description' => t($user_view_description),
      '#default_value' => $type->getUserView(),
      '#options' => $view_options,
    );
    //****************DRAFT SETTINGS FIELDSET SETTINGS *********************//

    $form['draft_settings'] = array(
      '#type' => 'details',
      '#title' => $this->t('Draft settings'),
      '#group' => 'additional_settings',
      '#weight' => 40,
    );
    $form['draft_settings']['draftable'] = array(
      '#type' => 'checkbox',
      '#title' => $this->t('Draftable'),
      '#default_value' => $type->isDraftable(),
      '#description' => $this->t('Is Draftable?'),
    );
    return $form;
  }