Same filename in this branch
  1. 8.x-2.x advagg_bundler/src/Form/SettingsForm.php
  2. 8.x-2.x advagg_js_minify/src/Form/SettingsForm.php
  3. 8.x-2.x src/Form/SettingsForm.php
  4. 8.x-2.x advagg_cdn/src/Form/SettingsForm.php
  5. 8.x-2.x advagg_ext_minify/src/Form/SettingsForm.php
  6. 8.x-2.x advagg_mod/src/Form/SettingsForm.php
Same filename in other branches
  1. 5.0.x advagg_old_ie_compatibility/src/Form/SettingsForm.php
  2. 5.0.x advagg_bundler/src/Form/SettingsForm.php
  3. 5.0.x advagg_css_minify/src/Form/SettingsForm.php
  4. 5.0.x advagg_js_minify/src/Form/SettingsForm.php
  5. 5.0.x src/Form/SettingsForm.php
  6. 5.0.x advagg_cdn/src/Form/SettingsForm.php
  7. 5.0.x advagg_ext_minify/src/Form/SettingsForm.php
  8. 5.0.x advagg_mod/src/Form/SettingsForm.php
  9. 6.0.x advagg_bundler/src/Form/SettingsForm.php
  10. 6.0.x advagg_css_minify/src/Form/SettingsForm.php
  11. 6.0.x advagg_js_minify/src/Form/SettingsForm.php
  12. 6.0.x src/Form/SettingsForm.php
  13. 6.0.x advagg_ext_minify/src/Form/SettingsForm.php
  14. 6.0.x advagg_mod/src/Form/SettingsForm.php
  15. 8.x-3.x advagg_old_ie_compatibility/src/Form/SettingsForm.php
  16. 8.x-3.x advagg_bundler/src/Form/SettingsForm.php
  17. 8.x-3.x advagg_css_minify/src/Form/SettingsForm.php
  18. 8.x-3.x advagg_js_minify/src/Form/SettingsForm.php
  19. 8.x-3.x src/Form/SettingsForm.php
  20. 8.x-3.x advagg_cdn/src/Form/SettingsForm.php
  21. 8.x-3.x advagg_ext_minify/src/Form/SettingsForm.php
  22. 8.x-3.x advagg_mod/src/Form/SettingsForm.php
  23. 8.x-4.x advagg_old_ie_compatibility/src/Form/SettingsForm.php
  24. 8.x-4.x advagg_bundler/src/Form/SettingsForm.php
  25. 8.x-4.x advagg_css_minify/src/Form/SettingsForm.php
  26. 8.x-4.x advagg_js_minify/src/Form/SettingsForm.php
  27. 8.x-4.x src/Form/SettingsForm.php
  28. 8.x-4.x advagg_cdn/src/Form/SettingsForm.php
  29. 8.x-4.x advagg_ext_minify/src/Form/SettingsForm.php
  30. 8.x-4.x advagg_mod/src/Form/SettingsForm.php

Namespace

Drupal\advagg_css_minify\Form

Fichier

advagg_css_minify/src/Form/SettingsForm.php

View source
<?php

namespace Drupal\advagg_css_minify\Form;

use Drupal\Core\Asset\AssetCollectionOptimizerInterface;
use Drupal\Core\Asset\AssetOptimizerInterface;
use Drupal\Core\Cache\Cache;
use Drupal\Core\Config\ConfigFactoryInterface;
use Drupal\Core\Form\ConfigFormBase;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\State\StateInterface;
use Drupal\Core\Url;
use Drupal\Component\Utility\Xss;
use Symfony\Component\DependencyInjection\ContainerInterface;

/**
 * Configure advagg_css_minify settings for this site.
 */
class SettingsForm extends ConfigFormBase {
    
    /**
     * The CSS asset collection optimizer service.
     *
     * @var \Drupal\Core\Asset\AssetCollectionOptimizerInterface
     */
    protected $cssCollectionOptimizer;
    
    /**
     * The AdvAgg file status state information storage service.
     *
     * @var \Drupal\Core\State\StateInterface
     */
    protected $advaggFiles;
    
    /**
     * A CSS asset optimizer.
     *
     * @var \Drupal\advagg_css_minify\Asset\CssOptimizer
     */
    protected $optimizer;
    
    /**
     * Constructs a SettingsForm object.
     *
     * @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory
     *   The factory for configuration objects.
     * @param \Drupal\Core\Asset\AssetCollectionOptimizerInterface $css_collection_optimizer
     *   The CSS asset collection optimizer service.
     * @param \Drupal\Core\State\StateInterface $advagg_files
     *   The AdvAgg file status state information storage service.
     * @param \Drupal\Core\Asset\AssetOptimizerInterface $optimizer
     *   The optimizer for a single CSS asset.
     */
    public function __construct(ConfigFactoryInterface $config_factory, AssetCollectionOptimizerInterface $css_collection_optimizer, StateInterface $advagg_files, AssetOptimizerInterface $optimizer) {
        parent::__construct($config_factory);
        $this->cssCollectionOptimizer = $css_collection_optimizer;
        $this->advaggFiles = $advagg_files;
        $this->optimizer = $optimizer;
    }
    
    /**
     * {@inheritdoc}
     */
    public static function create(ContainerInterface $container) {
        return new static($container->get('config.factory'), $container->get('asset.css.collection_optimizer'), $container->get('state.advagg.files'), $container->get('asset.css.optimizer'));
    }
    
    /**
     * {@inheritdoc}
     */
    public function getFormId() {
        return 'advagg_css_minify_settings';
    }
    
    /**
     * {@inheritdoc}
     */
    protected function getEditableConfigNames() {
        return [
            'advagg_css_minify.settings',
        ];
    }
    
    /**
     * {@inheritdoc}
     */
    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);
    }
    
    /**
     * {@inheritdoc}
     */
    public function submitForm(array &$form, FormStateInterface $form_state) {
        $config = $this->config('advagg_css_minify.settings');
        // Extract/combine per file settings.
        if ($file_settings = $config->get('file_settings')) {
            $file_settings = array_column($file_settings, NULL, 'path');
        }
        else {
            $file_settings = [];
        }
        foreach ($form_state->getValues() as $key => $value) {
            // Skip if not advagg_css_minify_file_settings.
            if (strpos($key, 'advagg_css_minify_file_settings_') === FALSE) {
                continue;
            }
            $path = str_replace([
                '__',
                '--',
            ], [
                '/',
                '.',
            ], substr($key, 32));
            if ($value == -1) {
                unset($file_settings[$path]);
                continue;
            }
            else {
                $file_settings[$path] = [
                    'path' => $path,
                    'minifier' => $value,
                ];
            }
        }
        // Clear relevant caches.
        $this->cssCollectionOptimizer
            ->deleteAll();
        Cache::invalidateTags([
            'library_info',
            'advagg_css',
        ]);
        $config = $this->config('advagg_css_minify.settings')
            ->set('minifier', $form_state->getValue('minifier'))
            ->set('file_settings', array_values($file_settings))
            ->save();
        parent::submitForm($form, $form_state);
    }

}

Classes

Titre Deprecated Résumé
SettingsForm Configure advagg_css_minify settings for this site.