You are here

public function SettingsForm::buildForm in Advanced CSS/JS Aggregation 8.2

Same name in this branch
  1. 8.2 src/Form/SettingsForm.php \Drupal\advagg\Form\SettingsForm::buildForm()
  2. 8.2 advagg_ext_minify/src/Form/SettingsForm.php \Drupal\advagg_ext_minify\Form\SettingsForm::buildForm()
  3. 8.2 advagg_mod/src/Form/SettingsForm.php \Drupal\advagg_mod\Form\SettingsForm::buildForm()
  4. 8.2 advagg_css_minify/src/Form/SettingsForm.php \Drupal\advagg_css_minify\Form\SettingsForm::buildForm()
  5. 8.2 advagg_js_minify/src/Form/SettingsForm.php \Drupal\advagg_js_minify\Form\SettingsForm::buildForm()
  6. 8.2 advagg_cdn/src/Form/SettingsForm.php \Drupal\advagg_cdn\Form\SettingsForm::buildForm()
  7. 8.2 advagg_bundler/src/Form/SettingsForm.php \Drupal\advagg_bundler\Form\SettingsForm::buildForm()
Same name and namespace in other branches
  1. 8.4 advagg_css_minify/src/Form/SettingsForm.php \Drupal\advagg_css_minify\Form\SettingsForm::buildForm()
  2. 8.3 advagg_css_minify/src/Form/SettingsForm.php \Drupal\advagg_css_minify\Form\SettingsForm::buildForm()

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

advagg_css_minify/src/Form/SettingsForm.php, line 90

Class

SettingsForm
Configure advagg_css_minify settings for this site.

Namespace

Drupal\advagg_css_minify\Form

Code

public function buildForm(array $form, FormStateInterface $form_state) {
  $config = $this
    ->config('advagg_css_minify.settings');
  $form = [];
  if ($this
    ->config('advagg.settings')
    ->get('cache_level') < 0) {
    $form['advagg_devel_msg'] = [
      '#markup' => '<p>' . $this
        ->t('The settings below will not have any effect because AdvAgg is currently in <a href="@devel">development mode</a>. Once the cache settings have been set to normal or higher, CSS minification will take place.', [
        '@devel' => Url::fromRoute('advagg.settings', [], [
          'fragment' => 'edit-advagg-cache-level',
        ])
          ->toString(),
      ]) . '</p>',
    ];
  }
  if (method_exists($this->optimizer, 'getConfiguration')) {
    list($options, $description) = $this->optimizer
      ->getConfiguration();
  }
  else {
    $description = '';
    $options = [
      0 => $this
        ->t('Disabled'),
      1 => $this
        ->t('Core'),
      2 => $this
        ->t('YUI'),
    ];

    // Allow for other modules to alter this list.
    $options_desc = [
      $options,
      $description,
    ];
    list($options, $description) = $options_desc;
  }
  $form['minifier'] = [
    '#type' => 'radios',
    '#title' => $this
      ->t('Minification: Select a default minifier'),
    '#default_value' => $config
      ->get('minifier'),
    '#options' => $options,
    '#description' => Xss::filter($description),
  ];
  $options[-1] = $this
    ->t('Default');
  ksort($options);
  $form['per_file_settings'] = [
    '#type' => 'details',
    '#title' => $this
      ->t('Per File Settings'),
  ];
  $files = $this->advaggFiles
    ->getAll();
  $file_settings = $config
    ->get('file_settings');
  if ($file_settings) {
    $file_settings = array_column($file_settings, 'minifier', 'path');
  }
  foreach ($files as $name => $info) {
    if ($info['fileext'] !== 'css') {
      continue;
    }
    $dir = dirname($name);
    if (!isset($form['per_file_settings'][$dir])) {
      $form['per_file_settings'][$dir] = [
        '#type' => 'details',
        '#title' => $dir,
      ];
    }
    $form_api_filename = str_replace([
      '/',
      '.',
    ], [
      '__',
      '--',
    ], $name);
    $form['per_file_settings'][$dir]['advagg_css_minify_file_settings_' . $form_api_filename] = [
      '#type' => 'radios',
      '#title' => $this
        ->t('%filename: Select a minifier', [
        '%filename' => $name,
      ]),
      '#default_value' => isset($file_settings[$name]) ? $file_settings[$name] : -1,
      '#options' => $options,
    ];
    if ($form['per_file_settings'][$dir]['advagg_css_minify_file_settings_' . $form_api_filename]['#default_value'] != -1) {
      $form['per_file_settings'][$dir]['#open'] = TRUE;
      $form['per_file_settings']['#open'] = TRUE;
    }
  }

  // No css files are found.
  if (empty($files)) {
    $form['per_file_settings']['#description'] = $this
      ->t('No CSS files have been aggregated. You need to enable aggregation. No css files where found in the advagg_files table.');
  }
  return parent::buildForm($form, $form_state);
}