You are here

public function PerformanceForm::buildForm in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 core/modules/system/src/Form/PerformanceForm.php \Drupal\system\Form\PerformanceForm::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

core/modules/system/src/Form/PerformanceForm.php, line 103
Contains \Drupal\system\Form\PerformanceForm.

Class

PerformanceForm
Configure performance settings for this site.

Namespace

Drupal\system\Form

Code

public function buildForm(array $form, FormStateInterface $form_state) {
  $form['#attached']['library'][] = 'system/drupal.system';
  $config = $this
    ->config('system.performance');
  $form['clear_cache'] = array(
    '#type' => 'details',
    '#title' => t('Clear cache'),
    '#open' => TRUE,
  );
  $form['clear_cache']['clear'] = array(
    '#type' => 'submit',
    '#value' => t('Clear all caches'),
    '#submit' => array(
      '::submitCacheClear',
    ),
  );
  $form['caching'] = array(
    '#type' => 'details',
    '#title' => t('Caching'),
    '#open' => TRUE,
    '#description' => $this
      ->t('Note: Drupal provides an internal page cache module that is recommended for small to medium-sized websites.'),
  );

  // Identical options to the ones for block caching.
  // @see \Drupal\Core\Block\BlockBase::buildConfigurationForm()
  $period = array(
    0,
    60,
    180,
    300,
    600,
    900,
    1800,
    2700,
    3600,
    10800,
    21600,
    32400,
    43200,
    86400,
  );
  $period = array_map(array(
    $this->dateFormatter,
    'formatInterval',
  ), array_combine($period, $period));
  $period[0] = '<' . t('no caching') . '>';
  $form['caching']['page_cache_maximum_age'] = array(
    '#type' => 'select',
    '#title' => t('Page cache maximum age'),
    '#default_value' => $config
      ->get('cache.page.max_age'),
    '#options' => $period,
    '#description' => t('The maximum time a page can be cached by browsers and proxies. This is used as the value for max-age in Cache-Control headers.'),
  );
  $directory = 'public://';
  $is_writable = is_dir($directory) && is_writable($directory);
  $disabled = !$is_writable;
  $disabled_message = '';
  if (!$is_writable) {
    $disabled_message = ' ' . t('<strong class="error">Set up the <a href=":file-system">public files directory</a> to make these optimizations available.</strong>', array(
      ':file-system' => $this
        ->url('system.file_system_settings'),
    ));
  }
  $form['bandwidth_optimization'] = array(
    '#type' => 'details',
    '#title' => t('Bandwidth optimization'),
    '#open' => TRUE,
    '#description' => t('External resources can be optimized automatically, which can reduce both the size and number of requests made to your website.') . $disabled_message,
  );
  $form['bandwidth_optimization']['preprocess_css'] = array(
    '#type' => 'checkbox',
    '#title' => t('Aggregate CSS files'),
    '#default_value' => $config
      ->get('css.preprocess'),
    '#disabled' => $disabled,
  );
  $form['bandwidth_optimization']['preprocess_js'] = array(
    '#type' => 'checkbox',
    '#title' => t('Aggregate JavaScript files'),
    '#default_value' => $config
      ->get('js.preprocess'),
    '#disabled' => $disabled,
  );
  return parent::buildForm($form, $form_state);
}