Difference between revisions of "MediaWiki:Common.js"

From Expat Wiki
Jump to navigation Jump to search
(Add Yandex.)
(Remove GA and Yandex.)
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
 
/* Any JavaScript here will be loaded for all users on every page load. */
 
/* Any JavaScript here will be loaded for all users on every page load. */
  
// == Google Analytics =========================================================
 
 
function cyrb53(str) {
 
  var seed = 0;
 
  var h1 = 0xdeadbeef ^ seed,
 
      h2 = 0x41c6ce57 ^ seed;
 
  for (var i = 0, ch; i < str.length; i++) {
 
      ch = str.charCodeAt(i);
 
      h1 = Math.imul(h1 ^ ch, 2654435761);
 
      h2 = Math.imul(h2 ^ ch, 1597334677);
 
  }
 
  h1 = Math.imul(h1 ^ h1 >>> 16, 2246822507) ^ Math.imul(h2 ^ h2 >>> 13, 3266489909);
 
  h2 = Math.imul(h2 ^ h2 >>> 16, 2246822507) ^ Math.imul(h1 ^ h1 >>> 13, 3266489909);
 
  return 4294967296 * (2097151 & h2) + (h1 >>> 0);
 
};
 
 
var clientIP = "{$_SERVER['REMOTE_ADDR']}";
 
var validityInterval = Math.round (new Date() / 1000 / 3600 / 24 / 4);
 
var clientIDSource = clientIP + ";" + window.location.host + ";" + navigator.userAgent + ";" + navigator.language + ";" + validityInterval;
 
var clientIDHashed = cyrb53(clientIDSource).toString(16);
 
 
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
 
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
 
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
 
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
 
 
ga('create', 'UA-158655997-1', {
 
  'storage': 'none',
 
  'clientId': clientIDHashed
 
});
 
ga('set', 'anonymizeIp', true);
 
ga('send', 'pageview');
 
 
 
/**
 
* Function that captures a click on an outbound link in Analytics.
 
* This function takes a valid URL string as an argument, and uses that URL string
 
* as the event label. Setting the transport method to 'beacon' lets the hit be sent
 
* using 'navigator.sendBeacon' in browser that support it.
 
*/
 
var captureOutboundLink = function(url) {
 
  ga('send', 'event', 'external', 'click', url, {
 
    'transport': 'beacon',
 
    'hitCallback': function(){ window.open(url); }
 
  });
 
};
 
 
// Add click event to all external links.
 
const buttons = document.querySelectorAll('.mw-parser-output .external');
 
 
for (i = 0; i < buttons.length; ++i) {
 
  const button = buttons[i];
 
  button.addEventListener('click', function(event) { captureOutboundLink(event.currentTarget.href);  } );
 
}
 
 
// == /Google Analytics =========================================================
 
  
 
// == filter-list-by-form.js ====================================================
 
// == filter-list-by-form.js ====================================================
Line 69: Line 13:
 
}
 
}
 
// == /filter-list-by-form.js ===================================================
 
// == /filter-list-by-form.js ===================================================
 
// == Yandex Metrica ====================================================
 
if (mw.config.get('wgPageName') == 'Germany/Banking/Savings') {
 
 
  (function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
 
  m[i].l=1*new Date();
 
  for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }}
 
  k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
 
  (window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
 
 
  ym(90857344, "init", {
 
        clickmap:true,
 
        trackLinks:true,
 
        accurateTrackBounce:true
 
  });
 
 
}
 
// == /Yandex Metrica ===================================================
 

Latest revision as of 13:21, 24 October 2023

/* Any JavaScript here will be loaded for all users on every page load. */


// == filter-list-by-form.js ====================================================
if (mw.config.get('wgPageName') == 'Germany/Banking/Current') {
  mw.loader.getScript('/resources.custom/filter-list-by-form.js')
    .then(function () {
      const filterListByForm = new FilterListByForm('form.form-list-filter-js', 'table.form-list-filter-js tr.filterable');
      const dataToContent = new DataToContent('table.form-list-filter-js tr', 'td.{key}');
    }, function (e) {
      mw.log.error(e.message);
  });
}
// == /filter-list-by-form.js ===================================================