diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..5c51e8d --- /dev/null +++ b/.eslintignore @@ -0,0 +1 @@ +dnt-helper.js diff --git a/db/static/js/app.js b/db/static/js/app.js index 88a0b2e..83ae041 100644 --- a/db/static/js/app.js +++ b/db/static/js/app.js @@ -22,6 +22,10 @@ $(document).ready(function() { } }); + // Add current copyright year + var current_year = '-' + new Date().getFullYear(); + $('#copy').text(current_year); + // Enable tooltips $('[data-toggle="tooltip"]').tooltip(); }); diff --git a/db/static/js/dnt-helper.js b/db/static/js/dnt-helper.js new file mode 100644 index 0000000..abf646b --- /dev/null +++ b/db/static/js/dnt-helper.js @@ -0,0 +1,46 @@ +/** + * Returns true or false based on whether doNotTack is enabled. It also takes into account the + * anomalies, such as !bugzilla 887703, which effect versions of Fx 31 and lower. It also handles + * IE versions on Windows 7, 8 and 8.1, where the DNT implementation does not honor the spec. + * @see https://bugzilla.mozilla.org/show_bug.cgi?id=1217896 for more details + * @params {string} [dnt] - An optional mock doNotTrack string to ease unit testing. + * @params {string} [userAgent] - An optional mock userAgent string to ease unit testing. + * @returns {boolean} true if enabled else false + */ +function _dntEnabled(dnt, userAgent) { + + 'use strict'; + + // for old version of IE we need to use the msDoNotTrack property of navigator + // on newer versions, and newer platforms, this is doNotTrack but, on the window object + // Safari also exposes the property on the window object. + var dntStatus = dnt || navigator.doNotTrack || window.doNotTrack || navigator.msDoNotTrack; + var ua = userAgent || navigator.userAgent; + + // List of Windows versions known to not implement DNT according to the standard. + var anomalousWinVersions = ['Windows NT 6.1', 'Windows NT 6.2', 'Windows NT 6.3']; + + var fxMatch = ua.match(/Firefox\/(\d+)/); + var ieRegEx = /MSIE|Trident/i; + var isIE = ieRegEx.test(ua); + // Matches from Windows up to the first occurance of ; un-greedily + // http://www.regexr.com/3c2el + var platform = ua.match(/Windows.+?(?=;)/g); + + // With old versions of IE, DNT did not exist so we simply return false; + if (isIE && typeof Array.prototype.indexOf !== 'function') { + return false; + } else if (fxMatch && parseInt(fxMatch[1], 10) < 32) { + // Can't say for sure if it is 1 or 0, due to Fx bug 887703 + dntStatus = 'Unspecified'; + } else if (isIE && platform && anomalousWinVersions.indexOf(platform.toString()) !== -1) { + // default is on, which does not honor the specification + dntStatus = 'Unspecified'; + } else { + // sets dntStatus to Disabled or Enabled based on the value returned by the browser. + // If dntStatus is undefined, it will be set to Unspecified + dntStatus = { '0': 'Disabled', '1': 'Enabled' }[dntStatus] || 'Unspecified'; + } + + return dntStatus === 'Enabled' ? true : false; +} diff --git a/db/templates/base.html b/db/templates/base.html index 5a9424d..002cffe 100644 --- a/db/templates/base.html +++ b/db/templates/base.html @@ -115,9 +115,9 @@ {% block javascript %} {% endblock javascript %} - {% endcompress %} - - {{ analytics_code }} + + {{ analytics_code }} + {% endcompress %} diff --git a/db/templates/includes/analytics.html b/db/templates/includes/analytics.html index 0df24af..65b5407 100644 --- a/db/templates/includes/analytics.html +++ b/db/templates/includes/analytics.html @@ -1,5 +1,6 @@ +