From 51564899deb959a7c276f50e91914e0c51baa46e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Pe=C3=B1a?= Date: Mon, 25 Jan 2021 22:03:46 -0500 Subject: [PATCH 1/3] Only load gigya libraries when actually needed. --- gigya/gigya.module | 5 +---- gigya_raas/gigya_raas.libraries.yml | 3 ++- gigya_raas/gigya_raas.module | 4 +--- gigya_raas/src/Plugin/Block/GigyaRaasCustomScreenset.php | 3 +++ gigya_raas/src/Plugin/Block/GigyaRaasLogin.php | 5 ++++- gigya_raas/src/Plugin/Block/GigyaRaasProfile.php | 5 ++++- gigya_raas/src/Plugin/Block/GigyaRaasRegister.php | 5 ++++- 7 files changed, 19 insertions(+), 11 deletions(-) diff --git a/gigya/gigya.module b/gigya/gigya.module index 2fa275b..96f0040 100644 --- a/gigya/gigya.module +++ b/gigya/gigya.module @@ -36,8 +36,5 @@ function gigya_page_attachments(array &$attachments) { \Drupal::moduleHandler()->alter('gigya_lang', $lang); $attachments['#attached']['drupalSettings']['gigya']['lang'] = $lang; - - // Add Library. - $attachments['#attached']['library'][] = 'gigya/drupalGigya'; } -} \ No newline at end of file +} diff --git a/gigya_raas/gigya_raas.libraries.yml b/gigya_raas/gigya_raas.libraries.yml index ffee7fe..49e42d3 100644 --- a/gigya_raas/gigya_raas.libraries.yml +++ b/gigya_raas/gigya_raas.libraries.yml @@ -8,4 +8,5 @@ gigyaRaas: - core/jquery.cookie - core/drupal - core/drupalSettings - - core/drupal.ajax \ No newline at end of file + - core/drupal.ajax + - gigya/drupalGigya diff --git a/gigya_raas/gigya_raas.module b/gigya_raas/gigya_raas.module index e135363..9898175 100644 --- a/gigya_raas/gigya_raas.module +++ b/gigya_raas/gigya_raas.module @@ -112,8 +112,6 @@ function gigya_raas_page_attachments(array &$attachments) { } } $attachments['#attached']['drupalSettings']['gigya']['raas']['customScreenSets'] = $custom_screensets; - - $attachments['#attached']['library'][] = 'gigya_raas/gigyaRaas'; } } } @@ -272,4 +270,4 @@ function gigya_raas_mail($key, &$message, $params) { $message['subject'] = t($params['subject'], array(), $options); $message['body'][] = $params['message']; -} \ No newline at end of file +} diff --git a/gigya_raas/src/Plugin/Block/GigyaRaasCustomScreenset.php b/gigya_raas/src/Plugin/Block/GigyaRaasCustomScreenset.php index 5b8c766..22a98cb 100644 --- a/gigya_raas/src/Plugin/Block/GigyaRaasCustomScreenset.php +++ b/gigya_raas/src/Plugin/Block/GigyaRaasCustomScreenset.php @@ -63,6 +63,9 @@ public function build() { '#display_type' => $config['display_type'], '#container_id' => $config['container_id'], '#screenset' => $screenset_params, + '#attached' => [ + 'library' => 'gigya_raas/gigyaRaas' + ], ]; return $build; } diff --git a/gigya_raas/src/Plugin/Block/GigyaRaasLogin.php b/gigya_raas/src/Plugin/Block/GigyaRaasLogin.php index 0911a48..0c0df59 100644 --- a/gigya_raas/src/Plugin/Block/GigyaRaasLogin.php +++ b/gigya_raas/src/Plugin/Block/GigyaRaasLogin.php @@ -21,7 +21,10 @@ class GigyaRaasLogin extends BlockBase { public function build() { $build['block'] = array( '#theme' => 'gigya_raas_login_block', - '#showDiv' => \Drupal::currentUser()->isAnonymous() + '#showDiv' => \Drupal::currentUser()->isAnonymous(), + '#attached' => [ + 'library' => 'gigya_raas/gigyaRaas' + ], ); $this->setConfigurationValue('label_display', 'hidden'); diff --git a/gigya_raas/src/Plugin/Block/GigyaRaasProfile.php b/gigya_raas/src/Plugin/Block/GigyaRaasProfile.php index 117350f..abed4f8 100644 --- a/gigya_raas/src/Plugin/Block/GigyaRaasProfile.php +++ b/gigya_raas/src/Plugin/Block/GigyaRaasProfile.php @@ -21,7 +21,10 @@ class GigyaRaasProfile extends BlockBase { public function build() { $build['block'] = array( '#theme' => 'gigya_raas_profile_block', - '#showDiv' => \Drupal::currentUser()->isAuthenticated() + '#showDiv' => \Drupal::currentUser()->isAuthenticated(), + '#attached' => [ + 'library' => 'gigya_raas/gigyaRaas' + ], ); return $build; } diff --git a/gigya_raas/src/Plugin/Block/GigyaRaasRegister.php b/gigya_raas/src/Plugin/Block/GigyaRaasRegister.php index ec0e5f4..4e91573 100644 --- a/gigya_raas/src/Plugin/Block/GigyaRaasRegister.php +++ b/gigya_raas/src/Plugin/Block/GigyaRaasRegister.php @@ -21,7 +21,10 @@ class GigyaRaasRegister extends BlockBase { public function build() { $build['block'] = array( '#theme' => 'gigya_raas_register_block', - '#showDiv' => \Drupal::currentUser()->isAnonymous() + '#showDiv' => \Drupal::currentUser()->isAnonymous(), + '#attached' => [ + 'library' => 'gigya_raas/gigyaRaas' + ], ); return $build; } From 69f1b3cc39410b32d110b438177bc9fd93028d40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Pe=C3=B1a?= Date: Wed, 12 May 2021 16:14:33 -0500 Subject: [PATCH 2/3] Pass drupalSettings and initialize customScreenSet on block build. --- gigya_raas/gigya_raas.libraries.yml | 7 +++ gigya_raas/gigya_raas.module | 29 --------- gigya_raas/js/customScreenSets.js | 62 +++++++++++++++++++ gigya_raas/js/gigyaRaas.js | 55 ---------------- .../Plugin/Block/GigyaRaasCustomScreenset.php | 9 ++- ...igya-raas-custom-screenset-block.html.twig | 4 +- 6 files changed, 79 insertions(+), 87 deletions(-) create mode 100644 gigya_raas/js/customScreenSets.js diff --git a/gigya_raas/gigya_raas.libraries.yml b/gigya_raas/gigya_raas.libraries.yml index 49e42d3..03be798 100644 --- a/gigya_raas/gigya_raas.libraries.yml +++ b/gigya_raas/gigya_raas.libraries.yml @@ -10,3 +10,10 @@ gigyaRaas: - core/drupalSettings - core/drupal.ajax - gigya/drupalGigya + +customScreenSets: + version: VERSION + js: + js/customScreenSets.js: {} + dependencies: + - gigya_raas/gigyaRaas diff --git a/gigya_raas/gigya_raas.module b/gigya_raas/gigya_raas.module index 9898175..fd62591 100644 --- a/gigya_raas/gigya_raas.module +++ b/gigya_raas/gigya_raas.module @@ -83,35 +83,6 @@ function gigya_raas_page_attachments(array &$attachments) { Drupal::moduleHandler()->alter('gigya_raas_profile_settings', $raas_profile); $attachments['#attached']['drupalSettings']['gigya']['raas']['profile'] = $raas_profile; } - - /* Load screen-set config into front-end for custom screen-set in UI blocks functionality */ - $custom_screensets = array(); - /** @var BlockInterface[] $blocks; */ - $blocks = Block::loadMultiple(); - foreach ($blocks as $key => $block) { - $settings = $block->get('settings'); - if ($settings['id'] == 'gigya_raas_custom_screenset') { - $custom_screensets[] = $settings; - } - } - $screenset_config = (array)json_decode(Drupal::config('gigya_raas.screensets')->get('gigya.custom_screensets')); - foreach ($screenset_config as $key => $screenset) { - if (isset($screenset->remove)) - unset($screenset->remove); - $screenset = (array)$screenset; - $screenset_config[$screenset['desktop']] = $screenset; - unset($screenset_config[$key]); - } - foreach ($custom_screensets as $key => $screenset) { - if (!empty($screenset_config[$screenset['desktop_screenset']])) { - $custom_screensets[$key]['sync_data'] = $screenset_config[$screenset['desktop_screenset']]['sync']; - if (!empty($screenset_config[$screenset['desktop_screenset']]['mobile'])) - $custom_screensets[$key]['mobile_screenset'] = $screenset_config[$screenset['desktop_screenset']]['mobile']; - else - $custom_screensets[$key]['mobile_screenset'] = $screenset_config[$screenset['desktop_screenset']]['desktop']; - } - } - $attachments['#attached']['drupalSettings']['gigya']['raas']['customScreenSets'] = $custom_screensets; } } } diff --git a/gigya_raas/js/customScreenSets.js b/gigya_raas/js/customScreenSets.js new file mode 100644 index 0000000..981065e --- /dev/null +++ b/gigya_raas/js/customScreenSets.js @@ -0,0 +1,62 @@ +/** + * @file + * Handles custom screen sets. + */ + +(function ($, Drupal, drupalSettings) { + + Drupal.behaviors.gigyaRaasCustomScreenSets = { + attach: function (context, settings) { + window.onGigyaServiceReady = function () { + for (var id in drupalSettings.gigya.raas.customScreenSets) { + var custom_screenset = drupalSettings.gigya.raas.customScreenSets[id]; + if (typeof custom_screenset.display_type !== 'undefined') { + var screenset_params = { + screenSet: custom_screenset.desktop_screenset, + mobileScreenSet: custom_screenset.mobile_screenset + }; + if (parseInt(custom_screenset.sync_data) === 1) + screenset_params['onAfterSubmit'] = processFieldMapping; + + if (custom_screenset.display_type === 'popup') { + $('#' + custom_screenset.link_id) + .once('gigya-raas') + .click(popupClickListener); + } + else if (custom_screenset.display_type === 'embed') { + screenset_params['containerID'] = custom_screenset.container_id; + gigya.accounts.showScreenSet(screenset_params); + } + } + } + }; + + var popupClickListener = function (e) { + var id = $(this).closest('.gigya-custom-screenset').attr('id'); + var custom_screenset = drupalSettings.gigya.raas.customScreenSets[id]; + var screenset_params = { + screenSet: custom_screenset.desktop_screenset, + mobileScreenSet: custom_screenset.mobile_screenset + }; + e.preventDefault(); + gigya.accounts.showScreenSet(screenset_params); + drupalSettings.gigya.raas.linkId = $(this).attr('id'); + }; + + var processFieldMapping = function (data) { + var gigyaData = { + UID: data.response.UID, + UIDSignature: data.response.UIDSignature, + signatureTimestamp: data.response.signatureTimestamp + }; + var ajaxSettings = { + url: drupalSettings.path.baseUrl + 'gigya/raas-process-fieldmapping', + submit: { gigyaData: gigyaData } + }; + var myAjaxObject = Drupal.ajax(ajaxSettings); + myAjaxObject.execute(); + }; + } + }; + +})(jQuery, Drupal, drupalSettings); diff --git a/gigya_raas/js/gigyaRaas.js b/gigya_raas/js/gigyaRaas.js index 7debf8e..79ab8ff 100644 --- a/gigya_raas/js/gigyaRaas.js +++ b/gigya_raas/js/gigyaRaas.js @@ -220,60 +220,6 @@ var getUrlPrefix = function () { } }; - /** - * @property gigya.accounts.showScreenSet - * @property drupalSettings.gigya.raas.customScreenSets - */ - var initCustomScreenSet = function () { - if (drupalSettings.gigya.enableRaaS) { - var customScreenSets = drupalSettings.gigya.raas.customScreenSets; - - /** - * @property custom_screenset.display_type - * @property custom_screenset.link_id - * @property custom_screenset.container_id - * @property custom_screenset.desktop_screenset - * @property custom_screenset.mobile_screenset - * @property custom_screenset.sync_data - */ - customScreenSets.forEach(function (custom_screenset) { - if (typeof custom_screenset.display_type !== 'undefined') { - var screenset_params = { - screenSet: custom_screenset.desktop_screenset, - mobileScreenSet: custom_screenset.mobile_screenset - }; - if (parseInt(custom_screenset.sync_data) === 1) - screenset_params['onAfterSubmit'] = processFieldMapping; - - if (custom_screenset.display_type === 'popup') { - $('#' + custom_screenset.link_id).once('gigya-raas').click(function (e) { - e.preventDefault(); - gigya.accounts.showScreenSet(screenset_params); - drupalSettings.gigya.raas.linkId = $(this).attr('id'); - }); - } else if (custom_screenset.display_type === 'embed') { - screenset_params['containerID'] = custom_screenset.container_id; - gigya.accounts.showScreenSet(screenset_params); - } - } - }); - } - }; - - var processFieldMapping = function (data) { - var gigyaData = { - UID: data.response.UID, - UIDSignature: data.response.UIDSignature, - signatureTimestamp: data.response.signatureTimestamp - }; - var ajaxSettings = { - url: getUrlPrefix() + 'gigya/raas-process-fieldmapping', - submit: {gigyaData: gigyaData} - }; - var myAjaxObject = Drupal.ajax(ajaxSettings); - myAjaxObject.execute(); - }; - var init = function() { if (drupalSettings.gigya.enableRaaS) { gigyaHelper.addGigyaFunctionCall('accounts.addEventHandlers', { @@ -304,7 +250,6 @@ var getUrlPrefix = function () { gigyaHelper.runGigyaCmsInit(); initLoginUI(); initRaaS(); - initCustomScreenSet(); }; init(); } diff --git a/gigya_raas/src/Plugin/Block/GigyaRaasCustomScreenset.php b/gigya_raas/src/Plugin/Block/GigyaRaasCustomScreenset.php index 22a98cb..35defd5 100644 --- a/gigya_raas/src/Plugin/Block/GigyaRaasCustomScreenset.php +++ b/gigya_raas/src/Plugin/Block/GigyaRaasCustomScreenset.php @@ -64,7 +64,14 @@ public function build() { '#container_id' => $config['container_id'], '#screenset' => $screenset_params, '#attached' => [ - 'library' => 'gigya_raas/gigyaRaas' + 'library' => ['gigya_raas/customScreenSets'], + 'drupalSettings' => [ + 'gigya' => [ + 'raas' => [ + 'customScreenSets' => [$config['container_id'] => $config], + ], + ], + ], ], ]; return $build; diff --git a/gigya_raas/templates/gigya-raas-custom-screenset-block.html.twig b/gigya_raas/templates/gigya-raas-custom-screenset-block.html.twig index 6e0c280..4fa48bc 100644 --- a/gigya_raas/templates/gigya-raas-custom-screenset-block.html.twig +++ b/gigya_raas/templates/gigya-raas-custom-screenset-block.html.twig @@ -6,7 +6,7 @@ * @ingroup themeable */ #} -
+
{% if display_type == 'popup' %} {% if link['popup'] %} @@ -17,4 +17,4 @@ {{ container_id }} {% else %} {% endif %} -
\ No newline at end of file +
From 5814a9f27d189dc76eb4dd0d4712099dec1750fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Pe=C3=B1a?= Date: Wed, 12 May 2021 16:42:12 -0500 Subject: [PATCH 3/3] Attached library should be an array. --- gigya_raas/src/Plugin/Block/GigyaRaasLogin.php | 2 +- gigya_raas/src/Plugin/Block/GigyaRaasProfile.php | 2 +- gigya_raas/src/Plugin/Block/GigyaRaasRegister.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/gigya_raas/src/Plugin/Block/GigyaRaasLogin.php b/gigya_raas/src/Plugin/Block/GigyaRaasLogin.php index 0c0df59..801032f 100644 --- a/gigya_raas/src/Plugin/Block/GigyaRaasLogin.php +++ b/gigya_raas/src/Plugin/Block/GigyaRaasLogin.php @@ -23,7 +23,7 @@ public function build() { '#theme' => 'gigya_raas_login_block', '#showDiv' => \Drupal::currentUser()->isAnonymous(), '#attached' => [ - 'library' => 'gigya_raas/gigyaRaas' + 'library' => ['gigya_raas/gigyaRaas'], ], ); $this->setConfigurationValue('label_display', 'hidden'); diff --git a/gigya_raas/src/Plugin/Block/GigyaRaasProfile.php b/gigya_raas/src/Plugin/Block/GigyaRaasProfile.php index abed4f8..8c97fbb 100644 --- a/gigya_raas/src/Plugin/Block/GigyaRaasProfile.php +++ b/gigya_raas/src/Plugin/Block/GigyaRaasProfile.php @@ -23,7 +23,7 @@ public function build() { '#theme' => 'gigya_raas_profile_block', '#showDiv' => \Drupal::currentUser()->isAuthenticated(), '#attached' => [ - 'library' => 'gigya_raas/gigyaRaas' + 'library' => ['gigya_raas/gigyaRaas'], ], ); return $build; diff --git a/gigya_raas/src/Plugin/Block/GigyaRaasRegister.php b/gigya_raas/src/Plugin/Block/GigyaRaasRegister.php index 4e91573..85a16e6 100644 --- a/gigya_raas/src/Plugin/Block/GigyaRaasRegister.php +++ b/gigya_raas/src/Plugin/Block/GigyaRaasRegister.php @@ -23,7 +23,7 @@ public function build() { '#theme' => 'gigya_raas_register_block', '#showDiv' => \Drupal::currentUser()->isAnonymous(), '#attached' => [ - 'library' => 'gigya_raas/gigyaRaas' + 'library' => ['gigya_raas/gigyaRaas'], ], ); return $build;