You are here

public function SettingsForm::buildForm in Layouter - WYSIWYG layout templates 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/SettingsForm.php, line 18

Class

SettingsForm
Provides admin page settings form.

Namespace

Drupal\layouter\Form

Code

public function buildForm(array $form, FormStateInterface $form_state) {
  $form = parent::buildForm($form, $form_state);
  $config = $this
    ->config('layouter.settings');
  $text_formats = filter_formats();
  $text_formats_options = [];
  $default_text_formats = $config
    ->get('text_formats');
  foreach ($text_formats as $format) {

    // Pick formats with disabled html filtering.
    if ($format
      ->filters()
      ->get('filter_html')->status == FALSE) {
      $format_id = $format
        ->get('format');
      $text_formats_options[$format_id] = $format
        ->get('name');

      // Adds not specified default values.
      if (!isset($default_text_formats[$format_id])) {
        $default_text_formats[$format_id] = 0;
      }
    }
  }
  $image_styles = ImageStyle::loadMultiple();
  $image_styles_options = [];
  $default_image_styles = $config
    ->get('image_styles');
  foreach ($image_styles as $style) {
    $style_name = $style
      ->get('name');
    $image_styles_options[$style_name] = $style
      ->get('label');

    // Adds not specified default values.
    if (!isset($default_image_styles[$style_name])) {
      $default_image_styles[$style_name] = 0;
    }
  }
  $stream_wrappers = \Drupal::service('stream_wrapper_manager');
  $scheme_options = $stream_wrappers
    ->getDescriptions(StreamWrapperInterface::WRITE_VISIBLE);
  $default_uri_scheme = $config
    ->get('uri_scheme') ?: 0;
  $form['text_formats'] = [
    '#type' => 'checkboxes',
    '#title' => $this
      ->t('Text formats'),
    '#description' => $this
      ->t('Choose input formats for which you want to enable Layouter<br />Attention : Only formats with disabled html filter are allowed'),
    '#options' => $text_formats_options,
    '#default_value' => $default_text_formats,
  ];
  $form['image_styles'] = [
    '#type' => 'checkboxes',
    '#title' => $this
      ->t('Image styles'),
    '#description' => $this
      ->t('Choose image styles for which you want to enable alter the original image in Layouter'),
    '#options' => $image_styles_options,
    '#default_value' => $default_image_styles,
  ];
  $form['uri_scheme'] = [
    '#type' => 'radios',
    '#title' => $this
      ->t('Upload destination'),
    '#description' => $this
      ->t('Select where the final files should be stored. Private file storage has significantly more overhead than public files, but allows restricted access to files within this field.'),
    '#required' => TRUE,
    '#options' => $scheme_options,
    '#default_value' => $default_uri_scheme,
  ];
  return parent::buildForm($form, $form_state);
}