You are here

public function DocumentConfigForm::buildForm in Forena Reports 8

Form constructor.

Parameters

array $form: An associative array containing the structure of the form.

\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.

Return value

array The form structure.

Overrides ConfigFormBase::buildForm

File

src/Form/DocumentConfigForm.php, line 46

Class

DocumentConfigForm
Implements \Drupal\forena\Form\DocumentConfigForm

Namespace

Drupal\forena\Form

Code

public function buildForm(array $form, FormStateInterface $form_state) {
  $possible_docs = DocManager::instance()
    ->getDocTypes();
  asort($possible_docs);
  $doc_options = array_combine($possible_docs, $possible_docs);
  $config = $this
    ->config('forena.settings');
  unset($doc_options['drupal']);
  $doc_formats = $config
    ->get('doc_formats');
  $key = array_search('drupal', $doc_formats);
  unset($doc_formats[$key]);

  // Load the possible document formats
  $form['doc_formats'] = [
    '#type' => 'checkboxes',
    '#title' => t('Allowed Document Types'),
    '#options' => $this->possible_docs,
    '#descriptions' => t('Document types allowed for reports. Only check one per document type'),
    '#default_value' => $doc_formats,
  ];

  // Determine the default document formats
  $form['doc_defaults'] = [
    '#type' => 'checkboxes',
    '#title' => t('Default Dcoument Types'),
    '#options' => $doc_options,
    '#description' => t('Document Types enabled if none are specified'),
    '#default_value' => $config
      ->get('doc_defaults'),
  ];
  $form['email_override'] = array(
    '#type' => 'checkbox',
    '#title' => 'Run email merges in test mode',
    '#default_value' => $config
      ->get('email_override'),
    '#description' => t('When this box is checked emails are sent to the currently logged in user.  Useful for testing environments.'),
  );

  // Determine possible input format options
  $formats = filter_formats();
  $options = [
    'none' => $this
      ->t('None'),
  ];
  foreach ($formats as $format) {
    $options[$format
      ->id()] = $format
      ->label();
  }

  // Email Input format
  $form['email_input_format'] = [
    '#type' => 'select',
    '#title' => t('Email Text Format'),
    '#options' => $options,
    '#description' => $this
      ->t('Process Mail merge reports reports using specified Text Formats. This can be overridden at the skin or report level.'),
    '#default_value' => $config
      ->get('email_input_format'),
  ];
  return parent::buildForm($form, $form_state);
}