Commit a8af26da authored by Josha Hubbers's avatar Josha Hubbers Committed by Josha Hubbers
Browse files

Issue #3267013 by JoshaHubbers: Config form optimization

parent 92451da3
Loading
Loading
Loading
Loading
+1 −0
Changes for piwik_pro.module: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
@@ -9,6 +9,7 @@

use Drupal\Core\Render\Markup;
use Drupal\Core\Routing\RouteMatchInterface;
use Drupal\Core\Url;

/**
 * Implements hook_help().
+8 −5
Changes for src/Form/PiwikProAdminSettingsForm.php: 8 added lines, 5 removed lines.
Original line number Diff line number Diff line
@@ -56,18 +56,20 @@ public function buildForm(array $form, FormStateInterface $form_state) {
      '#title' => $this->t('General settings'),
    ];
    $form['general']['piwik_domain'] = [
      '#type' => 'textfield',
      '#type' => 'url',
      '#title' => $this->t('Container address (URL)'),
      '#description' => $this->t('The account address with <strong>containers</strong> added to the address.<br>
F.e.: <code>https://yourname.<strong>containers</strong>.piwik.pro/</code> or
<code>https://yourname.piwik.pro/<strong>containers</strong></code>. Always end with a slash (/).'),
      '#default_value' => $config->get('piwik_domain'),
      '#required' => true,
    ];
    $form['general']['site_id'] = [
      '#type' => 'textfield',
      '#title' => $this->t('Site ID'),
      '#description' => $this->t('The ID for your site in Piwik Pro. <a href=":piwik_help_url" target="_blank">Where to find it?</a>', [':piwik_help_url' => 'https://help.piwik.pro/support/questions/find-website-id/']),
      '#default_value' => $config->get('site_id'),
      '#required' => true,
    ];
    $form['general']['sync_snippet'] = [
      '#type' => 'checkbox',
@@ -82,6 +84,7 @@ public function buildForm(array $form, FormStateInterface $form_state) {
Rename the data layer if you use other data layers to prevent interference.
<a href=":piwik_help_datalayer" target="_blank">How to check it?</a>', [':piwik_help_datalayer' => 'https://developers.piwik.pro/en/latest/tag_manager/data_layer_name.html#data-layer-name-guidelines']),
      '#default_value' => $config->get('data_layer'),
      '#required' => true,
    ];

    $form['tracking'] = [
@@ -119,21 +122,21 @@ public function validateForm(array &$form, FormStateInterface $form_state) {
    // Validate URL.
    $value = rtrim($form_state->getValue('piwik_domain'), '/');
    if (!filter_var( $value, FILTER_VALIDATE_URL)) {
      $form_state->setErrorByName('piwik_domain', $this->t('Wrong <code>Container address (URL)</code> value.'));
      $form_state->setErrorByName('piwik_domain', $this->t('Invalid <code>Container address (URL)</code> value.'));
    }

    // Validate Site ID.
    $value = strtolower($form_state->getValue('site_id'));
    if (preg_match('/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/', $value ) !== 1) {
      $form_state->setErrorByName('site_id', $this->t('Wrong <code>Site ID</code> value.'));
      $form_state->setErrorByName('site_id', $this->t('Invalid <code>Site ID</code> value.'));
    }

    // Validate data-layers.
    if (preg_match('/^[a-zA-Z_$][0-9a-zA-Z_$]*$/', $form_state->getValue('data_layer')) !== 1) {
      $form_state->setErrorByName('data_layer', 'Wrong <code>Data layer</code> value.' );
      $form_state->setErrorByName('data_layer', $this->t('Invalid <code>Data layer</code> value.'));
    }

    // Trim some text values.
    // Validate visibility pages.
    $form_state->setValue('piwik_pro_visibility_request_path_pages', trim($form_state->getValue('piwik_pro_visibility_request_path_pages')));

    // Verify that every path is prefixed with a slash.