133 lines
4.2 KiB
JavaScript
133 lines
4.2 KiB
JavaScript
![]() |
/**
|
||
|
* @file
|
||
|
* Used to toggle the AdvAgg Bypass Cookie client side.
|
||
|
*/
|
||
|
|
||
|
/* global Drupal:false */
|
||
|
/* eslint-disable no-unused-vars */
|
||
|
|
||
|
/**
|
||
|
* Test to see if the given string contains unicode.
|
||
|
*
|
||
|
* @param {int} interval
|
||
|
* String to test.
|
||
|
* @param {int} granularity
|
||
|
* String to test.
|
||
|
* @param {string} langcode
|
||
|
* Language used in translation.
|
||
|
*
|
||
|
* @return {bool}
|
||
|
* true if string contains non ASCII characters.
|
||
|
* false if string only contains ASCII characters.
|
||
|
*/
|
||
|
Drupal.formatInterval = function (interval, granularity, langcode) {
|
||
|
'use strict';
|
||
|
granularity = typeof granularity !== 'undefined' ? granularity : 2;
|
||
|
langcode = typeof langcode !== 'undefined' ? langcode : null;
|
||
|
var output = '';
|
||
|
|
||
|
/* eslint-disable key-spacing */
|
||
|
while (granularity > 0) {
|
||
|
var value = 0;
|
||
|
if (interval >= 31536000) {
|
||
|
value = 31536000;
|
||
|
output += (output.length ? ' ' : '') + Drupal.formatPlural(Math.floor(interval / value), '1 year', '@count years', {langcode : langcode});
|
||
|
}
|
||
|
else if (interval >= 2592000) {
|
||
|
value = 2592000;
|
||
|
output += (output.length ? ' ' : '') + Drupal.formatPlural(Math.floor(interval / value), '1 month', '@count months', {langcode : langcode});
|
||
|
}
|
||
|
else if (interval >= 604800) {
|
||
|
value = 604800;
|
||
|
output += (output.length ? ' ' : '') + Drupal.formatPlural(Math.floor(interval / value), '1 week', '@count weeks', {langcode : langcode});
|
||
|
}
|
||
|
else if (interval >= 86400) {
|
||
|
value = 86400;
|
||
|
output += (output.length ? ' ' : '') + Drupal.formatPlural(Math.floor(interval / value), '1 day', '@count days', {langcode : langcode});
|
||
|
}
|
||
|
else if (interval >= 3600) {
|
||
|
value = 3600;
|
||
|
output += (output.length ? ' ' : '') + Drupal.formatPlural(Math.floor(interval / value), '1 hour', '@count hours', {langcode : langcode});
|
||
|
}
|
||
|
else if (interval >= 60) {
|
||
|
value = 60;
|
||
|
output += (output.length ? ' ' : '') + Drupal.formatPlural(Math.floor(interval / value), '1 min', '@count min', {langcode : langcode});
|
||
|
}
|
||
|
else if (interval >= 1) {
|
||
|
value = 1;
|
||
|
output += (output.length ? ' ' : '') + Drupal.formatPlural(Math.floor(interval / value), '1 sec', '@count sec', {langcode : langcode});
|
||
|
}
|
||
|
|
||
|
interval %= value;
|
||
|
granularity--;
|
||
|
}
|
||
|
|
||
|
return output.length ? output : Drupal.t('0 sec', {}, {langcode : langcode});
|
||
|
/* eslint-enable key-spacing */
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Test to see if the given string contains unicode.
|
||
|
*
|
||
|
* @param {string} str
|
||
|
* String to test.
|
||
|
*
|
||
|
* @return {bool}
|
||
|
* true if string contains non ASCII characters.
|
||
|
* false if string only contains ASCII characters.
|
||
|
*/
|
||
|
function advagg_is_unicode(str) {
|
||
|
'use strict';
|
||
|
for (var i = 0, n = str.length; i < n; i++) {
|
||
|
if (str.charCodeAt(i) > 255) {
|
||
|
return true;
|
||
|
}
|
||
|
}
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Toggle the advagg cookie.
|
||
|
*
|
||
|
* @return {bool}
|
||
|
* true if hostname contains unicode.
|
||
|
* false so the form does not get submitted.
|
||
|
*/
|
||
|
function advagg_toggle_cookie() {
|
||
|
'use strict';
|
||
|
// Fallback to submitting the form for Unicode domains like ".рф".
|
||
|
if (advagg_is_unicode(document.location.hostname)) {
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
var cookie_name = 'AdvAggDisabled';
|
||
|
|
||
|
// See if the cookie exists.
|
||
|
var cookie_pos = document.cookie.indexOf(cookie_name + '=' + Drupal.settings.advagg.key);
|
||
|
|
||
|
// If the cookie does exist then remove it.
|
||
|
if (cookie_pos !== -1) {
|
||
|
document.cookie =
|
||
|
cookie_name + '='
|
||
|
+ '; expires=Thu, 01 Jan 1970 00:00:00 GMT'
|
||
|
+ '; path=' + Drupal.settings.basePath
|
||
|
+ '; domain=.' + document.location.hostname + ';';
|
||
|
alert(Drupal.t('AdvAgg Bypass Cookie Removed'));
|
||
|
}
|
||
|
// If the cookie does not exist then set it.
|
||
|
else {
|
||
|
var bypass_length = document.getElementById('edit-timespan').value;
|
||
|
var expire_date = new Date(new Date().getTime() + bypass_length * 1000);
|
||
|
|
||
|
document.cookie =
|
||
|
cookie_name + '=' + Drupal.settings.advagg.key
|
||
|
+ '; expires=' + expire_date.toGMTString()
|
||
|
+ '; path=' + Drupal.settings.basePath
|
||
|
+ '; domain=.' + document.location.hostname + ';';
|
||
|
alert(Drupal.t('AdvAgg Bypass Cookie Set for @time.', {'@time': Drupal.formatInterval(bypass_length)}));
|
||
|
}
|
||
|
|
||
|
// Must return false, if returning true then form gets submitted.
|
||
|
return false;
|
||
|
}
|