From 03095db444524cda7fdec62866df348c4056a6ad Mon Sep 17 00:00:00 2001 From: Christian Kohl Date: Wed, 19 Jan 2022 17:09:54 +0100 Subject: [PATCH] Add async + defer attribute in config form --- liveramp_integration.module | 6 ++++-- src/Form/LiveRampIntegrationConfigForm.php | 14 ++++++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/liveramp_integration.module b/liveramp_integration.module index 0fd9830..0e20ade 100644 --- a/liveramp_integration.module +++ b/liveramp_integration.module @@ -13,6 +13,8 @@ use Drupal\Core\Render\Markup; function liveramp_integration_page_attachments(array &$page) { $config = \Drupal::config('liveramp_integration.configuration'); $appId = $config->get('app_id'); + $async = $config->get('async_mode'); + $defer = $config->get('defer_mode'); $disableConsent = \Drupal::request()->query->get('disable_gdpr_consent'); $isDisabled = (1 === (int) $disableConsent) ? TRUE : FALSE; @@ -35,8 +37,8 @@ function liveramp_integration_page_attachments(array &$page) { '#tag' => 'script', '#attributes' => [ 'src' => 'https://gdpr-wrapper.privacymanager.io/gdpr/' . $appId . '/gdpr-liveramp.js', - 'async' => TRUE, - 'defer' => TRUE, + 'async' => ($async) ? TRUE : FALSE, + 'defer' => ($defer) ? TRUE : FALSE, ], '#weight' => -1, ], diff --git a/src/Form/LiveRampIntegrationConfigForm.php b/src/Form/LiveRampIntegrationConfigForm.php index 5ff085d..6e3efc7 100644 --- a/src/Form/LiveRampIntegrationConfigForm.php +++ b/src/Form/LiveRampIntegrationConfigForm.php @@ -119,6 +119,18 @@ public function buildForm(array $form, FormStateInterface $form_state) { ]; } + $form['consent']['async_mode'] = [ + '#type' => 'checkbox', + '#title' => $this->t('Use script async attribute.'), + '#default_value' => $config->get('async_mode'), + ]; + + $form['consent']['defer_mode'] = [ + '#type' => 'checkbox', + '#title' => $this->t('Use script defer attribute.'), + '#default_value' => $config->get('defer_mode'), + ]; + $form['consent']['actions']['submit'] = [ '#type' => 'submit', '#value' => $this->t('Save configuration'), @@ -139,6 +151,8 @@ public function submitForm(array &$form, FormStateInterface $form_state) { $config->set('app_id', $formData['field_app_id']); $config->set('vendor_ids', $formData['field_vendor_id']['values']); + $config->set('async_mode', $formData['async_mode']); + $config->set('defer_mode', $formData['defer_mode']); $config->save(); }