mirror of
https://github.com/clearlinux/clearlinux.github.io.git
synced 2026-08-19 05:47:10 +00:00
Remove analytics
This commit is contained in:
@@ -1,185 +0,0 @@
|
||||
/**
|
||||
* @file
|
||||
* Attaches several event listener to a web page.
|
||||
*/
|
||||
|
||||
(function ($, Drupal, drupalSettings) {
|
||||
|
||||
/* eslint max-nested-callbacks: ["error", 4] */
|
||||
|
||||
'use strict';
|
||||
|
||||
Drupal.google_analytics = {};
|
||||
|
||||
$(document).ready(function () {
|
||||
|
||||
// Attach mousedown, keyup, touchstart events to document only and catch
|
||||
// clicks on all elements.
|
||||
$(document.body).on('mousedown keyup touchstart', function (event) {
|
||||
|
||||
// Catch the closest surrounding link of a clicked element.
|
||||
$(event.target).closest('a,area').each(function () {
|
||||
|
||||
// Is the clicked URL internal?
|
||||
if (Drupal.google_analytics.isInternal(this.href)) {
|
||||
// Skip 'click' tracking, if custom tracking events are bound.
|
||||
if ($(this).is('.colorbox') && (drupalSettings.google_analytics.trackColorbox)) {
|
||||
// Do nothing here. The custom event will handle all tracking.
|
||||
// console.info('Click on .colorbox item has been detected.');
|
||||
}
|
||||
// Is download tracking activated and the file extension configured
|
||||
// for download tracking?
|
||||
else if (drupalSettings.google_analytics.trackDownload && Drupal.google_analytics.isDownload(this.href)) {
|
||||
// Download link clicked.
|
||||
gtag('event', Drupal.google_analytics.getDownloadExtension(this.href).toUpperCase(), {
|
||||
event_category: 'Downloads',
|
||||
event_label: Drupal.google_analytics.getPageUrl(this.href),
|
||||
transport_type: 'beacon'
|
||||
});
|
||||
}
|
||||
else if (Drupal.google_analytics.isInternalSpecial(this.href)) {
|
||||
// Keep the internal URL for Google Analytics website overlay intact.
|
||||
// @todo: May require tracking ID
|
||||
gtag('config', drupalSettings.google_analytics.account, {
|
||||
page_path: Drupal.google_analytics.getPageUrl(this.href),
|
||||
transport_type: 'beacon'
|
||||
});
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (drupalSettings.google_analytics.trackMailto && $(this).is("a[href^='mailto:'],area[href^='mailto:']")) {
|
||||
// Mailto link clicked.
|
||||
gtag('event', 'Click', {
|
||||
event_category: 'Mails',
|
||||
event_label: this.href.substring(7),
|
||||
transport_type: 'beacon'
|
||||
});
|
||||
}
|
||||
else if (drupalSettings.google_analytics.trackOutbound && this.href.match(/^\w+:\/\//i)) {
|
||||
if (drupalSettings.google_analytics.trackDomainMode !== 2 || (drupalSettings.google_analytics.trackDomainMode === 2 && !Drupal.google_analytics.isCrossDomain(this.hostname, drupalSettings.google_analytics.trackCrossDomains))) {
|
||||
// External link clicked / No top-level cross domain clicked.
|
||||
gtag('event', 'Click', {
|
||||
event_category: 'Outbound links',
|
||||
event_label: this.href,
|
||||
transport_type: 'beacon'
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// Track hash changes as unique pageviews, if this option has been enabled.
|
||||
if (drupalSettings.google_analytics.trackUrlFragments) {
|
||||
window.onhashchange = function () {
|
||||
gtag('config', drupalSettings.google_analytics.account, {
|
||||
page_path: location.pathname + location.search + location.hash
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
// Colorbox: This event triggers when the transition has completed and the
|
||||
// newly loaded content has been revealed.
|
||||
if (drupalSettings.google_analytics.trackColorbox) {
|
||||
$(document).on('cbox_complete', function () {
|
||||
var href = $.colorbox.element().attr('href');
|
||||
if (href) {
|
||||
gtag('config', drupalSettings.google_analytics.account, {
|
||||
page_path: Drupal.google_analytics.getPageUrl(href)
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
/**
|
||||
* Check whether the hostname is part of the cross domains or not.
|
||||
*
|
||||
* @param {string} hostname
|
||||
* The hostname of the clicked URL.
|
||||
* @param {array} crossDomains
|
||||
* All cross domain hostnames as JS array.
|
||||
*
|
||||
* @return {boolean} isCrossDomain
|
||||
*/
|
||||
Drupal.google_analytics.isCrossDomain = function (hostname, crossDomains) {
|
||||
return $.inArray(hostname, crossDomains) > -1 ? true : false;
|
||||
};
|
||||
|
||||
/**
|
||||
* Check whether this is a download URL or not.
|
||||
*
|
||||
* @param {string} url
|
||||
* The web url to check.
|
||||
*
|
||||
* @return {boolean} isDownload
|
||||
*/
|
||||
Drupal.google_analytics.isDownload = function (url) {
|
||||
var isDownload = new RegExp('\\.(' + drupalSettings.google_analytics.trackDownloadExtensions + ')([\?#].*)?$', 'i');
|
||||
return isDownload.test(url);
|
||||
};
|
||||
|
||||
/**
|
||||
* Check whether this is an absolute internal URL or not.
|
||||
*
|
||||
* @param {string} url
|
||||
* The web url to check.
|
||||
*
|
||||
* @return {boolean} isInternal
|
||||
*/
|
||||
Drupal.google_analytics.isInternal = function (url) {
|
||||
var isInternal = new RegExp('^(https?):\/\/' + window.location.host, 'i');
|
||||
return isInternal.test(url);
|
||||
};
|
||||
|
||||
/**
|
||||
* Check whether this is a special URL or not.
|
||||
*
|
||||
* URL types:
|
||||
* - gotwo.module /go/* links.
|
||||
*
|
||||
* @param {string} url
|
||||
* The web url to check.
|
||||
*
|
||||
* @return {boolean} isInternalSpecial
|
||||
*/
|
||||
Drupal.google_analytics.isInternalSpecial = function (url) {
|
||||
var isInternalSpecial = new RegExp('(\/go\/.*)$', 'i');
|
||||
return isInternalSpecial.test(url);
|
||||
};
|
||||
|
||||
/**
|
||||
* Extract the relative internal URL from an absolute internal URL.
|
||||
*
|
||||
* Examples:
|
||||
* - https://mydomain.com/node/1 -> /node/1
|
||||
* - https://example.com/foo/bar -> https://example.com/foo/bar
|
||||
*
|
||||
* @param {string} url
|
||||
* The web url to check.
|
||||
*
|
||||
* @return {string} getPageUrl
|
||||
* Internal website URL.
|
||||
*/
|
||||
Drupal.google_analytics.getPageUrl = function (url) {
|
||||
var extractInternalUrl = new RegExp('^(https?):\/\/' + window.location.host, 'i');
|
||||
return url.replace(extractInternalUrl, '');
|
||||
};
|
||||
|
||||
/**
|
||||
* Extract the download file extension from the URL.
|
||||
*
|
||||
* @param {string} url
|
||||
* The web url to check.
|
||||
*
|
||||
* @return {string} getDownloadExtension
|
||||
* The file extension of the passed url. e.g. 'zip', 'txt'
|
||||
*/
|
||||
Drupal.google_analytics.getDownloadExtension = function (url) {
|
||||
var extractDownloadextension = new RegExp('\\.(' + drupalSettings.google_analytics.trackDownloadExtensions + ')([\?#].*)?$', 'i');
|
||||
var extension = extractDownloadextension.exec(url);
|
||||
return (extension === null) ? '' : extension[1];
|
||||
};
|
||||
|
||||
})(jQuery, Drupal, drupalSettings);
|
||||
Reference in New Issue
Block a user