get('config.factory'), $container->get('profiler'), $container->get('profiler.storage_manager'), $container->getParameter('data_collector.templates') ); } /** * @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory * @param Profiler $profiler * @param \Drupal\webprofiler\Profiler\ProfilerStorageManager $storageManager * @param array $templates */ public function __construct(ConfigFactoryInterface $config_factory, Profiler $profiler, ProfilerStorageManager $storageManager, $templates) { parent::__construct($config_factory); $this->profiler = $profiler; $this->templates = $templates; $this->storageManager = $storageManager; } /** * {@inheritdoc} */ public function getFormId() { return 'webprofiler_config'; } /** * {@inheritdoc} */ public function buildForm(array $form, FormStateInterface $form_state) { $config = $this->config('webprofiler.config'); $form['purge_on_cache_clear'] = [ '#type' => 'checkbox', '#title' => $this->t('Purge on cache clear'), '#description' => $this->t('Deletes all profiler files during cache clear.'), '#default_value' => $config->get('purge_on_cache_clear'), ]; $storages = $this->storageManager->getStorages(); $form['storage'] = [ '#type' => 'select', '#title' => $this->t('Storage backend'), '#description' => $this->t('Choose were to store profiler data.'), '#options' => $storages, '#default_value' => $config->get('storage'), ]; $form['exclude'] = [ '#type' => 'textarea', '#title' => $this->t('Exclude'), '#default_value' => $config->get('exclude'), '#description' => $this->t('Paths to exclude for profiling. One path per line.'), ]; $form['active_toolbar_items'] = [ '#type' => 'checkboxes', '#title' => $this->t('Active toolbar items'), '#options' => $this->getCollectors(), '#description' => $this->t('Choose which items to show into the toolbar.'), '#default_value' => $config->get('active_toolbar_items'), ]; $form['ide_settings'] = [ '#type' => 'details', '#title' => $this->t('IDE settings'), '#open' => FALSE, ]; $form['ide_settings']['ide_link'] = [ '#type' => 'textfield', '#title' => $this->t('IDE link'), '#description' => $this->t('IDE link for open files.'), '#default_value' => $config->get('ide_link'), ]; $form['ide_settings']['ide_link_remote'] = [ '#type' => 'textfield', '#title' => $this->t('IDE link remote path'), '#description' => $this->t('The path of the remote docroot. Leave blank if the docroot is on the same machine of the IDE. No trailing slash.'), '#default_value' => $config->get('ide_link_remote'), ]; $form['ide_settings']['ide_link_local'] = [ '#type' => 'textfield', '#title' => $this->t('IDE link local path'), '#description' => $this->t('The path of the local docroot. Leave blank if the docroot is on the same machine of IDE. No trailing slash.'), '#default_value' => $config->get('ide_link_local'), ]; $form['database'] = [ '#type' => 'details', '#title' => $this->t('Database settings'), '#open' => FALSE, '#states' => array( 'visible' => array( array( 'input[name="active_toolbar_items[database]"]' => array('checked' => TRUE), ), ), ), ]; $form['database']['query_sort'] = [ '#type' => 'radios', '#title' => $this->t('Sort query log'), '#options' => ['source' => 'by source', 'duration' => 'by duration'], '#description' => $this->t('The query table can be sorted in the order that the queries were executed or by descending duration.'), '#default_value' => $config->get('query_sort'), ]; $form['database']['query_highlight'] = [ '#type' => 'number', '#title' => $this->t('Slow query highlighting'), '#description' => $this->t('Enter an integer in milliseconds. Any query which takes longer than this many milliseconds will be highlighted in the query log. This indicates a possibly inefficient query, or a candidate for caching.'), '#default_value' => $config->get('query_highlight'), '#min' => 0, ]; $storageId = $this->config('webprofiler.config')->get('storage'); $storage = $this->storageManager->getStorage($storageId); $form['purge'] = [ '#type' => 'details', '#title' => $this->t('Purge profiles'), '#open' => FALSE, ]; $form['purge']['purge'] = [ '#type' => 'submit', '#value' => $this->t('Purge'), '#submit' => [[$this, 'purge']], ]; $form['purge']['purge-help'] = [ '#type' => 'inline_template', '#template' => '