Mercurial > hg > cmmr2012-drupal-site
diff core/misc/drupal.js @ 0:c75dbcec494b
Initial commit from drush-created site
author | Chris Cannam |
---|---|
date | Thu, 05 Jul 2018 14:24:15 +0000 |
parents | |
children | a9cd425dd02b |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/misc/drupal.js Thu Jul 05 14:24:15 2018 +0000 @@ -0,0 +1,191 @@ +/** +* DO NOT EDIT THIS FILE. +* See the following change record for more information, +* https://www.drupal.org/node/2815083 +* @preserve +**/ + +window.Drupal = { behaviors: {}, locale: {} }; + +(function (Drupal, drupalSettings, drupalTranslations) { + Drupal.throwError = function (error) { + setTimeout(function () { + throw error; + }, 0); + }; + + Drupal.attachBehaviors = function (context, settings) { + context = context || document; + settings = settings || drupalSettings; + var behaviors = Drupal.behaviors; + + Object.keys(behaviors || {}).forEach(function (i) { + if (typeof behaviors[i].attach === 'function') { + try { + behaviors[i].attach(context, settings); + } catch (e) { + Drupal.throwError(e); + } + } + }); + }; + + Drupal.detachBehaviors = function (context, settings, trigger) { + context = context || document; + settings = settings || drupalSettings; + trigger = trigger || 'unload'; + var behaviors = Drupal.behaviors; + + Object.keys(behaviors || {}).forEach(function (i) { + if (typeof behaviors[i].detach === 'function') { + try { + behaviors[i].detach(context, settings, trigger); + } catch (e) { + Drupal.throwError(e); + } + } + }); + }; + + Drupal.checkPlain = function (str) { + str = str.toString().replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"').replace(/'/g, '''); + return str; + }; + + Drupal.formatString = function (str, args) { + var processedArgs = {}; + + Object.keys(args || {}).forEach(function (key) { + switch (key.charAt(0)) { + case '@': + processedArgs[key] = Drupal.checkPlain(args[key]); + break; + + case '!': + processedArgs[key] = args[key]; + break; + + default: + processedArgs[key] = Drupal.theme('placeholder', args[key]); + break; + } + }); + + return Drupal.stringReplace(str, processedArgs, null); + }; + + Drupal.stringReplace = function (str, args, keys) { + if (str.length === 0) { + return str; + } + + if (!Array.isArray(keys)) { + keys = Object.keys(args || {}); + + keys.sort(function (a, b) { + return a.length - b.length; + }); + } + + if (keys.length === 0) { + return str; + } + + var key = keys.pop(); + var fragments = str.split(key); + + if (keys.length) { + for (var i = 0; i < fragments.length; i++) { + fragments[i] = Drupal.stringReplace(fragments[i], args, keys.slice(0)); + } + } + + return fragments.join(args[key]); + }; + + Drupal.t = function (str, args, options) { + options = options || {}; + options.context = options.context || ''; + + if (typeof drupalTranslations !== 'undefined' && drupalTranslations.strings && drupalTranslations.strings[options.context] && drupalTranslations.strings[options.context][str]) { + str = drupalTranslations.strings[options.context][str]; + } + + if (args) { + str = Drupal.formatString(str, args); + } + return str; + }; + + Drupal.url = function (path) { + return drupalSettings.path.baseUrl + drupalSettings.path.pathPrefix + path; + }; + + Drupal.url.toAbsolute = function (url) { + var urlParsingNode = document.createElement('a'); + + try { + url = decodeURIComponent(url); + } catch (e) {} + + urlParsingNode.setAttribute('href', url); + + return urlParsingNode.cloneNode(false).href; + }; + + Drupal.url.isLocal = function (url) { + var absoluteUrl = Drupal.url.toAbsolute(url); + var protocol = location.protocol; + + if (protocol === 'http:' && absoluteUrl.indexOf('https:') === 0) { + protocol = 'https:'; + } + var baseUrl = protocol + '//' + location.host + drupalSettings.path.baseUrl.slice(0, -1); + + try { + absoluteUrl = decodeURIComponent(absoluteUrl); + } catch (e) {} + try { + baseUrl = decodeURIComponent(baseUrl); + } catch (e) {} + + return absoluteUrl === baseUrl || absoluteUrl.indexOf(baseUrl + '/') === 0; + }; + + Drupal.formatPlural = function (count, singular, plural, args, options) { + args = args || {}; + args['@count'] = count; + + var pluralDelimiter = drupalSettings.pluralDelimiter; + var translations = Drupal.t(singular + pluralDelimiter + plural, args, options).split(pluralDelimiter); + var index = 0; + + if (typeof drupalTranslations !== 'undefined' && drupalTranslations.pluralFormula) { + index = count in drupalTranslations.pluralFormula ? drupalTranslations.pluralFormula[count] : drupalTranslations.pluralFormula.default; + } else if (args['@count'] !== 1) { + index = 1; + } + + return translations[index]; + }; + + Drupal.encodePath = function (item) { + return window.encodeURIComponent(item).replace(/%2F/g, '/'); + }; + + Drupal.theme = function (func) { + if (func in Drupal.theme) { + var _Drupal$theme; + + for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + return (_Drupal$theme = Drupal.theme)[func].apply(_Drupal$theme, args); + } + }; + + Drupal.theme.placeholder = function (str) { + return '<em class="placeholder">' + Drupal.checkPlain(str) + '</em>'; + }; +})(Drupal, window.drupalSettings, window.drupalTranslations); \ No newline at end of file