PageSourceSearch

https://www.maggicooking.gr/modules/contrib/ln_datalayer/js/ln_datalayer.events.js?tlegy1

js maggicooking.gr collected 2026-10-02 13:16:17 UTC 4,999 bytes, 131 lines download raw bytes

1/**
2 * @file
3 * Datalayer global events.
4 */
5
6(function ($, Drupal, once, drupalSettings) {
7
8  'use strict';
9
10  Drupal.behaviors.ln_datalayer_api_events = {
11    attach: function (context, settings) {
12      if (drupalSettings.ln_datalayer && drupalSettings.ln_datalayer.events) {
13        for (let event_name in drupalSettings.ln_datalayer.events) {
14          let event = drupalSettings.ln_datalayer.events[event_name];
15          if(event.hasOwnProperty('event')){
16            if(!event.hasOwnProperty('module_name')){
17              event.module_name = drupalSettings.ln_datalayer.data.module_name;
18            }
19            if(!event.hasOwnProperty('module_version')){
20              event.module_version = drupalSettings.ln_datalayer.data.module_version;
21            }
22            if( event.hasOwnProperty('content_id') && event.content_id == ''){
23              event.content_id = drupalSettings.ln_datalayer.data.content_id;
24            }
25            if( event.hasOwnProperty('content_name') && event.content_name == ''){
26              event.content_name = drupalSettings.ln_datalayer.data.content_name;
27            }
28            if( event.hasOwnProperty('recipe_id') && event.recipe_id == ''){
29              event.recipe_id = drupalSettings.ln_datalayer.data.content_id;
30            }
31            if( event.hasOwnProperty('recipe_name') && event.recipe_name == ''){
32              event.recipe_name = drupalSettings.ln_datalayer.data.content_name;
33            }
34            if( event.hasOwnProperty('item_id') && event.item_id == ''){
35              event.item_id = drupalSettings.ln_datalayer.data.content_id;
36            }
37            if( event.hasOwnProperty('item_name') && event.item_name == ''){
38              event.item_name = drupalSettings.ln_datalayer.data.content_name;
39            }
40            window.dataLayer = window.dataLayer || [];
41            window.dataLayer.push(event);
42          }
43        }
44
45        delete drupalSettings.ln_datalayer.events;
46      }
47    }
48  };
49
50  Drupal.behaviors.ln_datalayer_global_events = {
51    attach: function (context, settings) {
52      //CTA link event
53      $(once('ln_datalayer_cta_click', '.field--name-field-c-link a')).click(function(ev){
54        let $link = $(this);
55
56        let domain = '';
57        try{
58          //relative links
59          let url = $link.attr('href');
60          if(url.startsWith('/')){
61            url = document.location.origin + url;
62          }
63          domain = new URL(url).hostname;
64        }catch(e){}
65
66        window.dataLayer = window.dataLayer || [];
67        window.dataLayer.push({
68          'event': 'cta_click',
69          'event_name': 'cta_click',
70          'link_classes': $link.attr('class'),
71          'link_domain': domain,
72          'link_id': $link.attr('id'),
73          'link_text': $link.text(),
74          'link_url': $link.attr('href'),
75          'module_name': drupalSettings.ln_datalayer.data.module_name,
76          'module_version': drupalSettings.ln_datalayer.data.module_version,
77        });
78      });
79
80      //Outbound links
81      $(once('ln_datalayer_outbound_link', "a[target='_blank']")).click(function(ev){
82        let $link = $(this);
83
84        let domain = '';
85        try{
86          //relative links
87          let url = $link.attr('href');
88          if(url.startsWith('/')){
89            url = document.location.origin + url;
90          }
91          domain = new URL(url).hostname;
92        }catch(e){}
93
94        window.dataLayer = window.dataLayer || [];
95        window.dataLayer.push({
96          'event': 'outbound_link',
97          'event_name': 'outbound_link',
98          'link_classes': $link.attr('class'),
99          'link_domain': domain,
100          'link_id': $link.attr('id'),
101          'link_url': $link.attr('href'),
102          'outbound (boolean)': true,
103          'module_name': drupalSettings.ln_datalayer.data.module_name,
104          'module_version': drupalSettings.ln_datalayer.data.module_version,
105        });
106      });
107
108      //Datalayer GA4 event - drupal_upload_submit
109      $(once('ln_datalayer_input', '.form-managed-file')).click(function(ev){
110        window.dataLayer = window.dataLayer || [];
111        window.dataLayer.push({
112          'event': 'drupal_upload_submit',
113          'event_name': 'drupal_upload_submit',
114          'module_name' : drupalSettings.ln_datalayer.data.module_name,
115          'module_version' : drupalSettings.ln_datalayer.data.module_version,
116        });
117      });
118      //Datalayer GA4 event - drupal_upload_error
119      if ($('.form-type-managed-file').siblings(".alert-wrapper").length) {
120        window.dataLayer = window.dataLayer || [];
121        window.dataLayer.push({
122          'event': 'drupal_upload_error',
123          'event_name': 'drupal_upload_error',
124          'error_name': $(".alert-wrapper .item-list").text(),
125          'module_name': drupalSettings.ln_datalayer.data.module_name,
126          'module_version': drupalSettings.ln_datalayer.data.module_version,
127        });
128      }
129    }
130  };
131})(jQuery, Drupal, once, drupalSettings);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.