/
home
/
suroeste
/
public_html
/
wp-content
/
plugins
/
akeebabackupwp
/
app
/
media
/
js
/
solo
/
/home/suroeste/public_html/wp-content/plugins/akeebabackupwp/app/media/js/solo
mkdir
upload
Name
Size
Mode
Actions
ajax.js
9696
0644
edit
dl
rm
ajax.min.js
3438
0644
edit
dl
rm
ajax.min.js.map
17483
0644
edit
dl
rm
backup.min.js
10466
0644
edit
dl
rm
backup.min.js.map
36399
0644
edit
dl
rm
browser.js
852
0644
edit
dl
rm
browser.min.js
547
0644
edit
dl
rm
browser.min.js.map
1952
0644
edit
dl
rm
configuration.min.js
36980
0644
edit
dl
rm
configuration.min.js.map
137014
0644
edit
dl
rm
dbfilters.min.js
7751
0644
edit
dl
rm
dbfilters.min.js.map
28768
0644
edit
dl
rm
discover.js
717
0644
edit
dl
rm
discover.min.js
442
0644
edit
dl
rm
discover.min.js.map
1581
0644
edit
dl
rm
extradirs.min.js.map
23454
0644
edit
dl
rm
fsfilters.min.js
15091
0644
edit
dl
rm
fsfilters.min.js.map
60366
0644
edit
dl
rm
gui-helpers.min.js
7604
0644
edit
dl
rm
gui-helpers.min.js.map
40838
0644
edit
dl
rm
log.js
872
0644
edit
dl
rm
log.min.js
568
0644
edit
dl
rm
log.min.js.map
1967
0644
edit
dl
rm
main.js
6469
0644
edit
dl
rm
main.min.js
3734
0644
edit
dl
rm
main.min.js.map
12115
0644
edit
dl
rm
manage.js
5914
0644
edit
dl
rm
manage.min.js
3541
0644
edit
dl
rm
manage.min.js.map
11993
0644
edit
dl
rm
modal.js
11029
0644
edit
dl
rm
modal.min.js
4882
0644
edit
dl
rm
modal.min.js.map
22351
0644
edit
dl
rm
multidb.min.js.map
31604
0644
edit
dl
rm
regexdbfilters.min.js.map
21450
0644
edit
dl
rm
regexfsfilters.min.js.map
21737
0644
edit
dl
rm
remotefiles.js
1700
0644
edit
dl
rm
remotefiles.min.js
790
0644
edit
dl
rm
remotefiles.min.js.map
2917
0644
edit
dl
rm
restore.min.js.map
26410
0644
edit
dl
rm
s3import.js
2806
0644
edit
dl
rm
s3import.min.js
1621
0644
edit
dl
rm
s3import.min.js.map
5608
0644
edit
dl
rm
setup.min.js.map
40294
0644
edit
dl
rm
showon.js
7583
0644
edit
dl
rm
showon.min.js
4206
0644
edit
dl
rm
showon.min.js.map
15553
0644
edit
dl
rm
system.min.js
14806
0644
edit
dl
rm
system.min.js.map
81766
0644
edit
dl
rm
tooltip.js
8070
0644
edit
dl
rm
tooltip.min.js
3726
0644
edit
dl
rm
tooltip.min.js.map
15163
0644
edit
dl
rm
transfer.js
18711
0644
edit
dl
rm
transfer.min.js.map
35219
0644
edit
dl
rm
update.min.js
5583
0644
edit
dl
rm
update.min.js.map
20544
0644
edit
dl
rm
upload.js
1051
0644
edit
dl
rm
upload.min.js
496
0644
edit
dl
rm
upload.min.js.map
2108
0644
edit
dl
rm
users.js
913
0644
edit
dl
rm
users.min.js.map
2118
0644
edit
dl
rm
wizard.min.js
10656
0644
edit
dl
rm
wizard.min.js.map
32501
0644
edit
dl
rm
Edit:
/home/suroeste/public_html/wp-content/plugins/akeebabackupwp/app/media/js/solo/system.min.js.map
(81766B)
{"version":3,"file":"system.min.js","names":["akeeba","System","documentReady","params","AjaxURL","errorCallback","password","errorDialogId","errorDialogMessageId","notification","modalDialog","array_merge","k","args","Array","prototype","slice","call","arguments","retObj","j","i","retArr","length","concat","ct","hasOwnProperty","parseInt","array_diff","arr1","argl","k1","arr","arr1keys","getOptions","key","defaultValue","optionsStorage","loadOptions","options","str","element","option","elements","document","querySelectorAll","counter","l","text","textContent","JSON","parse","removeClass","addClass","p","defaultErrorHandler","error","alert","modalErrorHandler","dialogId","errorMessageId","dialogElement","getElementById","errorContent","errorElement","innerHTML","Modal","open","content","width","extractResponse","msg","ret","isValid","data","delimiters","'#\"\\\\#\\\\\"#'","\"#"\\\\#\\\\"#\"","\"#"\\\\#\\\\"#\"","\"###\"","token_string","needsHtmlDecode","valid_pos","indexOf","message","substr","lastIndexOf","dummyTextbox","createElement","innerText","err","doAjax","successCallback","useCaching","timeout","now","Date","getTime","s","_cacheBustingJunk","Math","round","url","ajaxURL","structure","type","cache","success","extracted","sanitizeErrorMessage","Request","textStatus","responseText","status","statusText","readyState","Ajax","enqueue","ajax","b","DOMParser","parseFromString","e","askPermission","window","Notification","permission","requestPermission","notify","title","bodyContent","body","n","icon","setTimeout","close","lastId","store","set","property","value","dataset","id","myCustomDataTag","dataAttributeName","split","join","toLowerCase","setAttribute","removeAttribute","get","addEventListener","eventName","listener","listenHandler","apply","stopPropagation","preventDefault","returnValue","attachHandler","event","cancelBubble","_typeof","Element","attachEvent","removeEventListener","detachEvent","triggerEvent","click","console","log","jQuery","trigger","fireEvent","Event","createEvent","initEvent","dispatchEvent","funcName","baseObj","ready","readyFired","readyList","fn","ctx","readyStateChange","readyEventHandlersInstalled","callback","context","push","newClasses","className","currentClasses","trim","oldClasses","hasClass","aClass","toggleClass","checkAll","checkbox","stub","form","c","checked","boxchecked","isChecked","isItChecked","tableOrdering","order","dir","task","filter_order","filter_order_Dir","submitForm","validate","noValidate","hasAttribute","button","style","display","appendChild","removeChild","orderTable","table","direction","selectedIndex","iterateNodes","el","assignDefaultErrorHandler","Text","strings","_","def","newStrings","load","dummyObject","toUpperCase","object","doEncryptedAjax","oldToken","json","stringify","post_data","modal","rel","modalWrapper","modalContent","modalHeader","headerCloseButton","modalHeaderTitle","CancelHandler","modalBody","href","inheritedElement","querySelector","childNodes","iFrame","src","height","frameborder","allowtransparency","iFrameHeight","iFrameWidth","showButtons","modalFooter","okLabel","cancelLabel","OkLabel","CancelLabel","cancelButton","okButton","OkHandler","inherit","a","forEach"],"sources":["system.js"],"sourcesContent":["/**\n * @package solo\n * @copyright Copyright (c)2014-2024 Nicholas K. Dionysopoulos / Akeeba Ltd\n * @license GNU General Public License version 3, or later\n */\n\nif (typeof akeeba === \"undefined\")\n{\n var akeeba = {};\n}\n\nif (typeof akeeba.System === \"undefined\")\n{\n akeeba.System = {\n documentReady: function (callback, context)\n {\n },\n params: {\n AjaxURL: \"\",\n errorCallback: null,\n password: \"\",\n errorDialogId: \"errorDialog\",\n errorDialogMessageId: \"errorDialogPre\"\n },\n notification: {},\n modalDialog: null\n };\n}\n\nakeeba.System.array_merge = function ()\n{\n // Merges elements from passed arrays into one array\n //\n // version: 1103.1210\n // discuss at: http://phpjs.org/functions/array_merge\n // + original by: Brett Zamir (http://brett-zamir.me)\n // + bugfixed by: Nate\n // + input by: josh\n // + bugfixed by: Brett Zamir (http://brett-zamir.me)\n // * example 1: arr1 = {\"color\": \"red\", 0: 2, 1: 4}\n // * example 1: arr2 = {0: \"a\", 1: \"b\", \"color\": \"green\", \"shape\": \"trapezoid\", 2: 4}\n // * example 1: array_merge(arr1, arr2)\n // * returns 1: {\"color\": \"green\", 0: 2, 1: 4, 2: \"a\", 3: \"b\", \"shape\": \"trapezoid\", 4: 4}\n // * example 2: arr1 = []\n // * example 2: arr2 = {1: \"data\"}\n // * example 2: array_merge(arr1, arr2)\n // * returns 2: {0: \"data\"}\n var args = Array.prototype.slice.call(arguments),\n retObj = {},\n k, j = 0,\n i = 0,\n retArr = true;\n\n for (i = 0; i < args.length; i++)\n {\n if (!(args[i] instanceof Array))\n {\n retArr = false;\n break;\n }\n }\n\n if (retArr)\n {\n retArr = [];\n for (i = 0; i < args.length; i++)\n {\n retArr = retArr.concat(args[i]);\n }\n return retArr;\n }\n var ct = 0;\n\n for (i = 0, ct = 0; i < args.length; i++)\n {\n if (args[i] instanceof Array)\n {\n for (j = 0; j < args[i].length; j++)\n {\n retObj[ct++] = args[i][j];\n }\n }\n else\n {\n for (k in args[i])\n {\n if (args[i].hasOwnProperty(k))\n {\n if (parseInt(k, 10) + \"\" === k)\n {\n retObj[ct++] = args[i][k];\n }\n else\n {\n retObj[k] = args[i][k];\n }\n }\n }\n }\n }\n return retObj;\n};\n\n// eslint-disable-line camelcase\n// discuss at: http://locutus.io/php/array_diff/\n// original by: Kevin van Zonneveld (http://kvz.io)\n// improved by: Sanjoy Roy\n// revised by: Brett Zamir (http://brett-zamir.me)\n// example 1: array_diff(['Kevin', 'van', 'Zonneveld'], ['van', 'Zonneveld'])\n// returns 1: {0:'Kevin'}\nakeeba.System.array_diff = function (arr1)\n{\n var retArr = {};\n var argl = arguments.length;\n var k1 = \"\";\n var i = 1;\n var k = \"\";\n var arr = {};\n\n arr1keys: for (k1 in arr1)\n {\n for (i = 1; i < argl; i++)\n {\n arr = arguments[i];\n for (k in arr)\n {\n if (arr[k] === arr1[k1])\n {\n // If it reaches here, it was found in at least one array, so try next value\n continue arr1keys;\n }\n }\n retArr[k1] = arr1[k1];\n }\n }\n\n return retArr\n};\n\n/**\n * Get a script parameter passed from the backend to the frontend\n *\n * @param {String} key - The name of the parameter to retrieve\n * @param {*} [defaultValue=null] - Default value of the parameter is not yet defined\n *\n * @returns {*}\n */\nakeeba.System.getOptions = function (key, defaultValue)\n{\n if (typeof defaultValue == \"undefined\")\n {\n defaultValue = null;\n }\n\n // Load options if they not exists\n if (!akeeba.System.optionsStorage)\n {\n akeeba.System.loadOptions();\n }\n\n if (akeeba.System.optionsStorage[key] !== undefined)\n {\n return akeeba.System.optionsStorage[key];\n }\n\n return defaultValue;\n};\n\n/**\n * Load new options from a given options object or from an element\n *\n * If options is not specified it will loop all element with the CSS classed \"akeeba-script-options\" and \"new\". The\n * text content of each of these elements is assumed to be a JSON document to be merged with the script options.\n *\n * @param {Object} [options] The options object to load. Eg {\"foobar\" : {\"option1\": 1, \"option2\": 2}}\n */\nakeeba.System.loadOptions = function (options)\n{\n // Load form a container element\n if (!options)\n {\n var elements = document.querySelectorAll(\".akeeba-script-options.new\");\n var str;\n var element;\n var option;\n var counter = 0;\n\n for (var i = 0, l = elements.length; i < l; i++)\n {\n element = elements[i];\n str = element.text || element.textContent;\n option = JSON.parse(str);\n\n if (option)\n {\n akeeba.System.loadOptions(option);\n counter++;\n }\n\n akeeba.System.removeClass(element, \"new\");\n akeeba.System.addClass(element, \"loaded\");\n }\n\n if (counter)\n {\n return;\n }\n }\n\n // Initial loading\n if (!akeeba.System.optionsStorage)\n {\n akeeba.System.optionsStorage = options || {};\n\n return;\n }\n\n // Obviously, we have nothing to load.\n if (!options)\n {\n return;\n }\n\n // Merge with existing\n for (var p in options)\n {\n if (options.hasOwnProperty(p))\n {\n akeeba.System.optionsStorage[p] = options[p];\n }\n }\n};\n\n/**\n * An extremely simple error handler, dumping error messages to screen\n *\n * @param {String} error - The error message string\n */\nakeeba.System.defaultErrorHandler = function (error)\n{\n if ((error == null) || (typeof error == \"undefined\"))\n {\n return;\n }\n\n alert(\"An error has occurred\\n\" + error);\n};\n\n/**\n * An error handler displayed in a Modal dialog. It requires you to set up a modal dialog div with id \"errorDialog\"\n *\n * @param {String} error - The error message string\n */\nakeeba.System.modalErrorHandler = function (error)\n{\n var dialogId = akeeba.System.getOptions(\n \"akeeba.System.params.errorDialogId\", akeeba.System.params.errorDialogId);\n var errorMessageId = akeeba.System.getOptions(\n \"akeeba.System.params.errorDialogMessageId\", akeeba.System.params.errorDialogMessageId);\n\n var dialogElement = document.getElementById(dialogId);\n var errorContent = \"error\";\n\n if (dialogElement != null)\n {\n var errorElement = document.getElementById(errorMessageId);\n errorElement.innerHTML = error;\n errorContent = dialogElement.innerHTML;\n }\n\n akeeba.Modal.open({\n content: errorContent,\n width: \"80%\"\n });\n};\n\nakeeba.System.extractResponse = function(msg)\n{\n var ret = {\n isValid: false,\n data: null\n };\n\n // Format: delimiter => needsHtmlDecode\n var delimiters = {\n '#\"\\\\#\\\\\"#': false,\n '#"\\\\#\\\\"#': true,\n '#"\\\\#\\\\"#': true,\n '###': false\n }\n\n for (var token_string in delimiters)\n {\n var needsHtmlDecode = delimiters[token_string];\n var valid_pos = msg.indexOf(token_string);\n var junk = '';\n var message = '';\n\n // If this delimiter is not found move over to the next one\n if (valid_pos === -1)\n {\n continue;\n }\n\n // Remove the junk BEFORE the delimiter in front of the response.\n message = valid_pos !== 0 ? msg.substr(valid_pos) : msg;\n // Remove the delimiter in front of the response\n message = message.substr(token_string.length);\n // Get of rid of any junk after the data\n valid_pos = message.lastIndexOf(token_string);\n\n // If the delimiter is not found at the end of the data move over to the next delimiter\n if (valid_pos === -1)\n {\n continue;\n }\n\n // Remove the delimiter at the end of the data and anything after it.\n message = message.substr(0, valid_pos);\n\n // Do I need to HTML decode the JSON–encoded message?\n if (needsHtmlDecode)\n {\n var dummyTextbox = document.createElement(\"textarea\");\n\n dummyTextbox.innerHTML = message;\n message = dummyTextbox.innerText;\n }\n\n // Let's try to decode the message\n try\n {\n var data = JSON.parse(message);\n }\n catch (err)\n {\n continue;\n }\n\n ret.isValid = true;\n ret.data = data;\n\n return ret;\n }\n\n return ret;\n}\n\n/**\n * Performs an AJAX request and returns the parsed JSON output.\n * akeeba.System.params.AjaxURL is used as the AJAX proxy URL.\n * If there is no errorCallback, the global akeeba.System.params.errorCallback is used.\n *\n * @param {Object} data - An object with the query data, e.g. a serialized form\n * @param {String} [data.ajaxURL] - The endpoint URL of the AJAX request, default akeeba.System.params.AjaxURL\n * @param {function} successCallback - A function accepting a single object parameter, called on success\n * @param {function} [errorCallback] - A function accepting a single string parameter, called on failure\n * @param {Boolean} [useCaching=true] - Should we use the cache?\n * @param {Number} [timeout=60000] - Timeout before cancelling the request in milliseconds\n * @param {Boolean} [oldToken=false] - Ignored\n */\nakeeba.System.doAjax = function (data, successCallback, errorCallback, useCaching, timeout, oldToken)\n{\n if (useCaching == null)\n {\n useCaching = true;\n }\n\n // We always want to burst the cache\n var now = new Date().getTime() / 1000;\n var s = parseInt(now, 10);\n data._cacheBustingJunk = Math.round((now - s) * 1000) / 1000;\n\n if (timeout == null)\n {\n timeout = 600000;\n }\n\n var url = akeeba.System.getOptions(\"akeeba.System.params.AjaxURL\", akeeba.System.params.AjaxURL);\n\n if (data.hasOwnProperty(\"ajaxURL\"))\n {\n url = data.ajaxURL;\n\n delete data.url;\n }\n\n var structure =\n {\n type: \"POST\",\n url: url,\n cache: false,\n data: data,\n timeout: timeout,\n success: function (msg)\n {\n var extracted = akeeba.System.extractResponse(msg);\n\n if (!extracted.isValid)\n {\n // Valid data not found in the response\n msg = akeeba.System.sanitizeErrorMessage(msg);\n msg = \"Invalid AJAX data: \" + msg;\n\n if (errorCallback == null)\n {\n if (akeeba.System.params.errorCallback != null)\n {\n akeeba.System.params.errorCallback(msg);\n }\n }\n else\n {\n errorCallback(msg);\n }\n\n return;\n }\n\n // Call the callback function\n successCallback(extracted.data);\n },\n error: function (Request, textStatus, errorThrown)\n {\n var text = Request.responseText ? Request.responseText : \"\";\n var message = \"<strong>AJAX Loading Error</strong><br/>HTTP Status: \" + Request.status +\n \" (\" + Request.statusText + \")<br/>\";\n\n message = message + \"Internal status: \" + textStatus + \"<br/>\";\n message = message + \"XHR ReadyState: \" + Request.readyState + \"<br/>\";\n message = message + \"Raw server response:<br/>\" + akeeba.System.sanitizeErrorMessage(text);\n\n if (errorCallback == null)\n {\n if (akeeba.System.params.errorCallback != null)\n {\n akeeba.System.params.errorCallback(message);\n }\n }\n else\n {\n errorCallback(message);\n }\n }\n };\n\n if (useCaching)\n {\n akeeba.Ajax.enqueue(structure);\n }\n else\n {\n akeeba.Ajax.ajax(structure);\n }\n};\n\n/**\n * Sanitize a message before displaying it in an error dialog. Some servers return an HTML page with DOM modifying\n * JavaScript when they block the backup script for any reason (usually with a 5xx HTTP error code). Displaying the\n * raw response in the error dialog has the side-effect of killing our backup resumption JavaScript or even completely\n * destroy the page, making backup restart impossible.\n *\n * @param {String} msg - The message to sanitize\n *\n * @returns {String}\n */\nakeeba.System.sanitizeErrorMessage = function (msg)\n{\n if (msg.indexOf(\"<script\") > -1)\n {\n try\n {\n msg = (new DOMParser().parseFromString(msg ?? \"\", \"text/html\")).textContent;\n }\n catch (e)\n {\n msg = \"(HTML containing script tags)\";\n }\n }\n\n return msg;\n};\n\n/**\n * Requests permission for displaying desktop notifications\n */\nakeeba.System.notification.askPermission = function ()\n{\n if (!akeeba.System.getOptions(\"akeeba.System.notification.hasDesktopNotification\", false))\n {\n return;\n }\n\n if (window.Notification === undefined)\n {\n return;\n }\n\n if (window.Notification.permission === \"default\")\n {\n window.Notification.requestPermission();\n }\n};\n\n/**\n * Displays a desktop notification with the given title and body content. Chrome and Firefox will display our custom\n * icon in the notification. Safari will not display our custom icon but will place the notification in the iOS /\n * Mac OS X notification centre. Firefox displays the icon to the right of the notification and its own icon on the\n * left hand side. It also plays a sound when the notification is displayed. Chrome plays no sound and displays only\n * our icon on the left hand side.\n *\n * The notifications have a default timeout of 5 seconds. Clicking on them, or waiting for 5 seconds, will dismiss\n * them. You can change the timeout using the timeout parameter. Set to 0 for a permanent notification.\n *\n * @param {String} title - The title of the notification\n * @param {String} [bodyContent] - The body of the notification (optional)\n * @param {Number} [timeout=5000] - Notification timeout in milliseconds\n */\nakeeba.System.notification.notify = function (title, bodyContent, timeout)\n{\n if (!akeeba.System.getOptions(\"akeeba.System.notification.hasDesktopNotification\", false))\n {\n return;\n }\n\n if (window.Notification === undefined)\n {\n return;\n }\n\n if (window.Notification.permission !== \"granted\")\n {\n return;\n }\n\n if (timeout === undefined)\n {\n timeout = 5000;\n }\n\n if (bodyContent === undefined)\n {\n body = \"\";\n }\n\n var n = new window.Notification(title, {\n \"body\": bodyContent,\n \"icon\": akeeba.System.getOptions(\"akeeba.System.notification.iconURL\")\n });\n\n if (timeout > 0)\n {\n setTimeout(function (notification)\n {\n return function ()\n {\n notification.close();\n }\n }(n), timeout);\n }\n};\n\n/**\n * Get and set data to elements. Use:\n * akeeba.System.data.set(element, property, value)\n * akeeba.System.data.get(element, property, defaultValue)\n *\n * On modern browsers (minimum IE 11, Chrome 8, FF 6, Opera 11, Safari 6) this will use the data-* attributes of the\n * elements where possible. On old browsers it will use an internal cache and manually apply data-* attributes.\n */\nakeeba.System.data = (function ()\n{\n var lastId = 0,\n store = {};\n\n return {\n set: function (element, property, value)\n {\n // IE 11, modern browsers\n if (element.dataset)\n {\n element.dataset[property] = value;\n\n if (value == null)\n {\n delete element.dataset[property];\n }\n\n return;\n }\n\n // IE 8 to 10, old browsers\n var id;\n\n if (element.myCustomDataTag === undefined)\n {\n id = lastId++;\n element.myCustomDataTag = id;\n }\n\n if (typeof (store[id]) == \"undefined\")\n {\n store[id] = {};\n }\n\n // Store the value in the internal cache...\n store[id][property] = value;\n\n // ...and the DOM\n\n // Convert the property to dash-format\n var dataAttributeName = \"data-\" + property.split(/(?=[A-Z])/).join(\"-\").toLowerCase();\n\n if (element.setAttribute)\n {\n element.setAttribute(dataAttributeName, value);\n }\n\n if (value == null)\n {\n // IE 8 throws an exception on \"delete\"\n try\n {\n delete store[id][property];\n element.removeAttribute(dataAttributeName);\n }\n catch (e)\n {\n store[id][property] = null;\n }\n }\n },\n\n get: function (element, property, defaultValue)\n {\n // IE 11, modern browsers\n if (element.dataset)\n {\n if (typeof (element.dataset[property]) == \"undefined\")\n {\n element.dataset[property] = defaultValue;\n }\n\n return element.dataset[property];\n }\n // IE 8 to 10, old browsers\n\n if (typeof (defaultValue) == \"undefined\")\n {\n defaultValue = null;\n }\n\n // Make sure we have an internal storage\n if (typeof (store[element.myCustomDataTag]) == \"undefined\")\n {\n store[element.myCustomDataTag] = {};\n }\n\n // Convert the property to dash-format\n var dataAttributeName = \"data-\" + property.split(/(?=[A-Z])/).join(\"-\").toLowerCase();\n\n // data-* attributes have precedence\n if (typeof (element[dataAttributeName]) !== \"undefined\")\n {\n store[element.myCustomDataTag][property] = element[dataAttributeName];\n }\n\n // No data-* attribute and no stored value? Use the default.\n if (typeof (store[element.myCustomDataTag][property]) == \"undefined\")\n {\n this.set(element, property, defaultValue);\n }\n\n // Return the value of the data\n return store[element.myCustomDataTag][property];\n }\n };\n}());\n\n\n/**\n * Adds an event listener to an element\n *\n * @param {Element|String} element - The element or DOM ID to set the event listener to\n * @param {String} eventName - The name of the event to handle, e.g. \"click\", \"change\", \"error\", ...\n * @param {function} listener - The event listener to add\n */\nakeeba.System.addEventListener = function (element, eventName, listener)\n{\n // Allow the passing of an element ID string instead of the DOM elem\n if (typeof element === \"string\")\n {\n element = document.getElementById(element);\n }\n\n if (element == null)\n {\n return;\n }\n\n if (typeof element != \"object\")\n {\n return;\n }\n\n if (!(element instanceof Element))\n {\n return;\n }\n\n // Handles the listener in a way that returning boolean false will cancel the event propagation\n function listenHandler(e)\n {\n var ret = listener.apply(this, arguments);\n\n if (ret === false)\n {\n if (e.stopPropagation())\n {\n e.stopPropagation();\n }\n\n if (e.preventDefault)\n {\n e.preventDefault();\n }\n else\n {\n e.returnValue = false;\n }\n }\n\n return (ret);\n }\n\n // Equivalent of listenHandler for IE8\n function attachHandler()\n {\n // Normalize the target of the event –– PhpStorm detects this as an error\n // window.event.target = window.event.srcElement;\n\n var ret = listener.call(element, window.event);\n\n if (ret === false)\n {\n window.event.returnValue = false;\n window.event.cancelBubble = true;\n }\n\n return (ret);\n }\n\n if (element.addEventListener)\n {\n element.addEventListener(eventName, listenHandler, false);\n\n return;\n }\n\n element.attachEvent(\"on\" + eventName, attachHandler);\n};\n\n/**\n * Remove an event listener from an element\n *\n * @param {Element|String} element - The element or DOM ID to remove the event listener from\n * @param {String} eventName - The name of the event to handle, e.g. \"click\", \"change\", \"error\", ...\n * @param {function} listener - The event listener to remove\n */\nakeeba.System.removeEventListener = function (element, eventName, listener)\n{\n // Allow the passing of an element ID string instead of the DOM elem\n if (typeof element === \"string\")\n {\n element = document.getElementById(element);\n }\n\n if (element == null)\n {\n return;\n }\n\n if (typeof element != \"object\")\n {\n return;\n }\n\n if (!(element instanceof Element))\n {\n return;\n }\n\n if (element.removeEventListener)\n {\n element.removeEventListener(eventName, listener);\n\n return;\n }\n\n element.detachEvent(\"on\" + eventName, listener);\n};\n\n/**\n * Trigger an event on a DOM element\n *\n * @param {Element|String} element - The element or DOM ID to trigger the event on\n * @param {String} eventName - The name of the event to trigger, e.g. \"click\", \"change\", \"error\", ...\n */\nakeeba.System.triggerEvent = function (element, eventName)\n{\n if (typeof element == \"undefined\")\n {\n return;\n }\n\n if (element === null)\n {\n return;\n }\n\n // Allow the passing of an element ID string instead of the DOM elem\n if (typeof element === \"string\")\n {\n element = document.getElementById(element);\n }\n\n if (element === null)\n {\n return;\n }\n\n if (typeof element != \"object\")\n {\n return;\n }\n\n if (!(element instanceof Element))\n {\n return;\n }\n\n if (eventName === 'click' && (typeof element.click === 'function')) {\n console.log(element);\n element.click();\n\n return;\n }\n\n // Use jQuery and be done with it!\n if (typeof window.jQuery === \"function\")\n {\n window.jQuery(element).trigger(eventName);\n\n return;\n }\n\n // Internet Explorer way\n if (document.fireEvent && (typeof window.Event == \"undefined\"))\n {\n element.fireEvent(\"on\" + eventName);\n\n return;\n }\n\n // This works on Chrome and Edge but not on Firefox. Ugh.\n var event = null;\n\n event = document.createEvent(\"Event\");\n event.initEvent(eventName, true, true);\n element.dispatchEvent(event);\n};\n\n// document.ready equivalent from https://github.com/jfriend00/docReady/blob/master/docready.js\n(function (funcName, baseObj)\n{\n funcName = funcName || \"documentReady\";\n baseObj = baseObj || akeeba.System;\n\n var readyList = [];\n var readyFired = false;\n var readyEventHandlersInstalled = false;\n\n // Call this when the document is ready. This function protects itself against being called more than once.\n function ready()\n {\n if (!readyFired)\n {\n // This must be set to true before we start calling callbacks\n readyFired = true;\n\n for (var i = 0; i < readyList.length; i++)\n {\n /**\n * If a callback here happens to add new ready handlers, this function will see that it already\n * fired and will schedule the callback to run right after this event loop finishes so all handlers\n * will still execute in order and no new ones will be added to the readyList while we are\n * processing the list.\n */\n readyList[i].fn.call(window, readyList[i].ctx);\n }\n\n // Allow any closures held by these functions to free\n readyList = [];\n }\n }\n\n /**\n * Solely for the benefit of Internet Explorer\n */\n function readyStateChange()\n {\n if (document.readyState === \"complete\")\n {\n ready();\n }\n }\n\n /**\n * This is the one public interface:\n *\n * akeeba.System.documentReady(fn, context);\n *\n * @param callback The callback function to execute when the document is ready.\n * @param context Optional. If present, it will be passed as an argument to the callback.\n */\n //\n //\n //\n baseObj[funcName] = function (callback, context)\n {\n // If ready() has already fired, then just schedule the callback to fire asynchronously\n if (readyFired)\n {\n setTimeout(function ()\n {\n callback(context);\n }, 1);\n\n return;\n }\n\n // Add the function and context to the queue\n readyList.push({fn: callback, ctx: context});\n\n /**\n * If the document is already ready, schedule the ready() function to run immediately.\n *\n * Note: IE is only safe when the readyState is \"complete\", other browsers are safe when the readyState is\n * \"interactive\"\n */\n if (document.readyState === \"complete\" || (!document.attachEvent && document.readyState === \"interactive\"))\n {\n setTimeout(ready, 1);\n\n return;\n }\n\n // If the handlers are already installed just quit\n if (readyEventHandlersInstalled)\n {\n return;\n }\n\n // We don't have event handlers installed, install them\n readyEventHandlersInstalled = true;\n\n // -- We have an addEventListener method in the document, this is a modern browser.\n\n if (document.addEventListener)\n {\n // Prefer using the DOMContentLoaded event\n document.addEventListener(\"DOMContentLoaded\", ready, false);\n\n // Our backup is the window's \"load\" event\n window.addEventListener(\"load\", ready, false);\n\n return;\n }\n\n // -- Most likely we're stuck with an ancient version of IE\n\n // Our primary method of activation is the onreadystatechange event\n document.attachEvent(\"onreadystatechange\", readyStateChange);\n\n // Our backup is the windows's \"load\" event\n window.attachEvent(\"onload\", ready);\n }\n})(\"documentReady\", akeeba.System);\n\n/**\n * Add one or more CSS classes to an element, if they do not already exist\n *\n * @param {Element} element - The element to add new classes to\n * @param {String|String[]} newClasses - One or more classes to append\n */\nakeeba.System.addClass = function (element, newClasses)\n{\n if (!element || !element.className)\n {\n return;\n }\n\n var currentClasses = element.className.split(\" \");\n\n if ((typeof newClasses) == \"string\")\n {\n newClasses = newClasses.split(\" \");\n }\n\n currentClasses = akeeba.System.array_merge(currentClasses, newClasses);\n\n element.className = \"\";\n\n for (var property in currentClasses)\n {\n if (currentClasses.hasOwnProperty(property))\n {\n element.className += currentClasses[property] + \" \";\n }\n }\n\n if (element.className.trim)\n {\n element.className = element.className.trim();\n }\n};\n\n/**\n * Remove one or more CSS classes to an element, if they already exist\n *\n * @param {Element} element - The element to remove classes from\n * @param {String|String[]} oldClasses - One or more classes to remove\n */\nakeeba.System.removeClass = function (element, oldClasses)\n{\n if (!element || !element.className)\n {\n return;\n }\n\n var currentClasses = element.className.split(\" \");\n\n if ((typeof oldClasses) == \"string\")\n {\n oldClasses = oldClasses.split(\" \");\n }\n\n currentClasses = akeeba.System.array_diff(currentClasses, oldClasses);\n\n element.className = \"\";\n\n for (property in currentClasses)\n {\n if (currentClasses.hasOwnProperty(property))\n {\n element.className += currentClasses[property] + \" \";\n }\n }\n\n if (element.className.trim)\n {\n element.className = element.className.trim();\n }\n};\n\n/**\n * Does the element have the specified CSS class?\n *\n * @param {Element} element - The DOM element to query for CSS classes\n * @param {String} aClass - The CSS class to check for existence\n *\n * @returns {boolean} - True if element has the CSS class aClass\n */\nakeeba.System.hasClass = function (element, aClass)\n{\n if (!element || !element.className)\n {\n return;\n }\n\n var currentClasses = element.className.split(\" \");\n\n for (i = 0; i < currentClasses.length; i++)\n {\n if (currentClasses[i] == aClass)\n {\n return true;\n }\n }\n\n return false;\n};\n\n/**\n * Toggle a CSS class on an element.\n *\n * If the CSS class does not exist on the element it will be appended. If it already exists it will be removed.\n *\n * @param {Element} element - The element to toggle the CSS class on\n * @param {String} aClass - The name of the CSS class to toggle\n */\nakeeba.System.toggleClass = function (element, aClass)\n{\n if (akeeba.System.hasClass(element, aClass))\n {\n akeeba.System.removeClass(element, aClass);\n\n return;\n }\n\n akeeba.System.addClass(element, aClass);\n};\n\n/**\n * Toggles the check state of a group of boxes\n *\n * Checkboxes must have an id attribute in the form cb0, cb1...\n *\n * @param {Number} checkbox The number of box to 'check', for a checkbox element\n * @param {String} [stub] An alternative field name\n */\nakeeba.System.checkAll = function (checkbox, stub)\n{\n if (!stub)\n {\n stub = \"cb\";\n }\n\n if (checkbox.form)\n {\n var c = 0;\n\n for (var i = 0, n = checkbox.form.elements.length; i < n; i++)\n {\n var e = checkbox.form.elements[i];\n\n if (e.type == checkbox.type)\n {\n if ((stub && e.id.indexOf(stub) == 0) || !stub)\n {\n e.checked = checkbox.checked;\n c += (e.checked == true ? 1 : 0);\n }\n }\n }\n\n if (checkbox.form.boxchecked)\n {\n checkbox.form.boxchecked.value = c;\n }\n\n return true;\n }\n\n return false;\n};\n\n/**\n * Update the boxchecked field of a form when a checkbox is checked. Based on Joomla.isChecked of Joomla! 3.\n *\n * @param {Boolean} isItChecked The checkbox\n * @param {Element} [form] The form to update\n */\nakeeba.System.isChecked = function (isItChecked, form)\n{\n if (typeof (form) === \"undefined\")\n {\n form = document.getElementById(\"adminForm\");\n }\n\n if (isItChecked == true)\n {\n form.boxchecked.value++;\n }\n else\n {\n form.boxchecked.value--;\n }\n};\n\n/**\n * Apply the grid view table ordering\n *\n * @param {String} order - Name of the field to order the form by\n * @param {String} dir - The sort direction, \"asc\" or \"desc\"\n * @param {String} [task] - The task to apply to the form\n * @param {Element} [form] - The form, defaults to adminForm\n */\nakeeba.System.tableOrdering = function (order, dir, task, form)\n{\n if (typeof form === \"undefined\")\n {\n form = document.getElementById(\"adminForm\");\n }\n\n form.filter_order.value = order;\n form.filter_order_Dir.value = dir;\n akeeba.System.submitForm(task, form);\n};\n\n/**\n * Submit a form\n *\n * @param {String} [task] - The given task, null to leave the form's task as currently set\n * @param {Element} [form] - The form element, defaults to adminForm\n * @param {boolean} [validate] - Should I apply HTML5 form validation? If not defined it's the same as false\n */\nakeeba.System.submitForm = function (task, form, validate)\n{\n if (!form)\n {\n form = document.getElementById(\"adminForm\");\n }\n\n if (task)\n {\n form.task.value = task;\n }\n\n // Toggle HTML5 validation\n form.noValidate = !validate;\n\n if (!validate)\n {\n form.setAttribute(\"novalidate\", \"\");\n }\n else if (form.hasAttribute(\"novalidate\"))\n {\n form.removeAttribute(\"novalidate\");\n }\n\n // Create an input type=\"submit\"\n var button = document.createElement(\"input\");\n button.style.display = \"none\";\n button.type = \"submit\";\n\n // Append the button and click it\n form.appendChild(button);\n\n button.click();\n\n // If \"submit\" was prevented, make sure we don't get a build up of buttons\n form.removeChild(button);\n};\n\n/**\n * Apply the grid view table ordering based on the sortTable options\n *\n * This is meant to be used as the change event handler for the Sort By and Sort Ordering dropdowns in grid views\n */\nakeeba.System.orderTable = function ()\n{\n var table = document.getElementById(\"sortTable\");\n var direction = document.getElementById(\"directionTable\");\n var order = table.options[table.selectedIndex].value;\n var dir = \"asc\";\n\n if (order === akeeba.System.getOptions(\"akeeba.System.tableOrder\", \"asc\"))\n {\n dir = direction.options[direction.selectedIndex].value;\n }\n\n akeeba.System.tableOrdering(order, dir);\n};\n\n/**\n * Apply a callback to a list of DOM elements\n *\n * This is useful when applying an event handler to all objects that have a specific CSS class. Example:\n * akeeba.System.iterateNodes(\"superClickable\", function (el) {\n * akeeba.System.addEventListener(el, \"click\", mySuperClickableHandler);\n * });\n *\n * @param {String|NodeList} elements - The NodeList to iterate or a CSS query selector pass to document.querySelectorAll\n * @param {function} callback - The callback to execute for each node\n * @param {*} [context] - Optional additional parameter to pass to the callback\n */\nakeeba.System.iterateNodes = function (elements, callback, context)\n{\n if (typeof callback != \"function\")\n {\n return;\n }\n\n // Allow passing a CSS selector string instead of a NodeList object\n if (typeof elements === \"string\")\n {\n elements = document.querySelectorAll(elements);\n }\n\n if (elements.length === 0)\n {\n return;\n }\n\n var i;\n var el;\n\n for (i = 0; i < elements.length; i++)\n {\n el = elements[i];\n\n if (typeof context !== \"undefined\")\n {\n callback(el, context);\n\n continue;\n }\n\n callback(el);\n }\n};\n\n/**\n * Assign the default AJAX error handler that best matches the document.\n *\n * If the akeeba.System.params.errorDialogId and .errorDialogMessageId script options are set, they correspond to\n * existing elements and the akeeba.Modal is a valid object we'll be using the modalErrorHandler. Otherwise we fall back\n * to the dead simple defaultErrorHandler that simply shows an alert.\n */\nakeeba.System.assignDefaultErrorHandler = function ()\n{\n // Use the modal error handler unless there is a reason not to\n akeeba.System.params.errorCallback = akeeba.System.modalErrorHandler;\n\n // If the Modal code is not present always and immediately fall back to the simpler error handler\n if (typeof akeeba.Modal === \"undefined\")\n {\n akeeba.System.params.errorCallback = akeeba.System.defaultErrorHandler;\n\n return;\n }\n\n var dialogId = akeeba.System.getOptions(\n \"akeeba.System.params.errorDialogId\", akeeba.System.params.errorDialogId);\n var errorMessageId = akeeba.System.getOptions(\n \"akeeba.System.params.errorDialogMessageId\", akeeba.System.params.errorDialogMessageId);\n\n // If the modal configuration is not present fall back to the simpler error handler\n if ((dialogId === \"\") || (dialogId === null) || (errorMessageId === \"\") || (errorMessageId === null))\n {\n akeeba.System.params.errorCallback = akeeba.System.defaultErrorHandler;\n\n return;\n }\n\n // If either element used in the modal code is not present fall fall back to the simpler error handler\n var dialogElement = document.getElementById(dialogId);\n var errorElement = document.getElementById(errorMessageId);\n\n if ((dialogElement === null) || (errorElement === null))\n {\n akeeba.System.params.errorCallback = akeeba.System.defaultErrorHandler;\n }\n\n};\n\n\n/**\n * JavaScript internationalization\n *\n * @type {{}}\n *\n * Allows you to call akeeba.System.Text._() to get a translated JavaScript string pushed in via script options.\n */\nakeeba.System.Text = {\n strings: {},\n\n /**\n * Translates a string into the current language.\n *\n * @param {String} key The string to translate\n * @param {String} [def] Default string\n *\n * @returns {String}\n */\n \"_\": function (key, def)\n {\n\n // Check for new strings in the optionsStorage, and load them\n var newStrings = akeeba.System.getOptions(\"akeeba.text\");\n\n if (newStrings)\n {\n akeeba.System.Text.load(newStrings);\n\n var dummyObject = {};\n dummyObject[\"akeeba.text\"] = null;\n\n akeeba.System.loadOptions(dummyObject);\n }\n\n def = def === undefined ? \"\" : def;\n key = key.toUpperCase();\n\n if (akeeba.System.Text.strings[key] !== undefined)\n {\n return akeeba.System.Text.strings[key];\n }\n\n return def;\n },\n\n /**\n * Load new strings in the Text object\n *\n * @param {Object} object Object with new strings\n * @returns {akeeba.System.Text}\n */\n load: function (object)\n {\n for (var key in object)\n {\n if (!object.hasOwnProperty(key))\n {\n continue;\n }\n this.strings[key.toUpperCase()] = object[key];\n }\n\n return this;\n }\n};\n\n/**\n * Performs an AJAX request to the restoration script (restore.php).\n *\n * @param {Object} data - An object with the query data, e.g. a serialized form\n * @param {function} successCallback - A function accepting a single object parameter, called on success\n * @param {function} [errorCallback] - A function accepting a single string parameter, called on failure\n * @param {Boolean} [useCaching=true] - Should we use the cache?\n * @param {Number} [timeout=60000] - Timeout before cancelling the request (default 60s)\n * @param {Boolean} [oldToken=false] - Should I search for the old token instead of the new one?\n *\n * @return\n */\nakeeba.System.doEncryptedAjax = function (data, successCallback, errorCallback, useCaching, timeout, oldToken)\n{\n var url = akeeba.System.getOptions(\"akeeba.System.params.AjaxURL\", akeeba.System.params.AjaxURL);\n\n if (data.hasOwnProperty(\"ajaxURL\"))\n {\n url = data.ajaxURL;\n\n delete data.url;\n }\n\n var json = JSON.stringify(data);\n var post_data = {\n json: json,\n ajaxURL: url\n };\n var password = akeeba.System.getOptions(\"akeeba.System.params.password\", akeeba.System.params.password);\n\n if (password.length > 0)\n {\n post_data.password = password;\n }\n\n return akeeba.System.doAjax(post_data, successCallback, errorCallback, useCaching, timeout, oldToken);\n};\n\n/**\n * Creates a modal box based on the data object. The keys to this object are:\n * - title The title of the modal dialog, skip to not create a title\n * - body The body content of the dialog. Not applicable if href is defined\n * - href A URL to open in an IFrame inside the body\n * - iFrameHeight The height of the IFrame, applicable if href is set\n * - iFrameWidth The width of the IFrame, applicable if href is set\n * - OkLabel The label of the OK (primary) button\n * - CancelLabel The label of the Cancel button\n * - OkHandler Run this when the OK button is pressed, before closing the modal\n * - CancelHandler Run this when the Cancel button is pressed, after closing the modal\n * - showButtons Set to false to not show the buttons\n *\n * Alternatively you can pass a reference to an element. In this case we expect that the rel attribute of the element\n * contains a JSON-encoded string of the data object.\n *\n * @param data The configuration data (see above)\n */\nakeeba.System.modal = function (data)\n{\n try\n {\n if (typeof (data.rel) !== \"undefined\")\n {\n rel = data.rel;\n data = JSON.parse(rel);\n }\n }\n catch (e)\n {\n }\n\n // Outer modal markup\n var modalWrapper = document.createElement(\"div\");\n modalBody.setAttribute(\"tabindex\", \"-1\");\n modalBody.setAttribute(\"role\", \"dialog\");\n modalBody.setAttribute(\"aria-hidden\", \"true\");\n\n var modalDialog = document.createElement(\"div\");\n modalDialog.className = \"modal-dialog\";\n modalWrapper.appendChild(modalDialog);\n\n var modalContent = document.createElement(\"div\");\n modalContent.className = \"modal-content\";\n modalDialog.appendChild(modalContent);\n\n // Modal Header\n if (typeof (data.title) !== \"undefined\")\n {\n var modalHeader = document.createElement(\"div\");\n modalHeader.className = \"modal-header\";\n modalContent.appendChild(modalHeader);\n\n var headerCloseButton = document.createElement(\"button\");\n headerCloseButton.className = \"close\";\n headerCloseButton.innerHTML = \"×\";\n modalHeader.appendChild(headerCloseButton);\n\n var modalHeaderTitle = document.createElement(\"h4\");\n modalHeaderTitle.className = \"modal-title\";\n modalHeaderTitle.innerHTML = data.title;\n modalHeader.appendChild(modalHeaderTitle);\n\n // Assign events\n if (typeof (data.CancelHandler) !== \"undefined\")\n {\n akeeba.System.addEventListener(headerCloseButton, \"click\", function (e)\n {\n var callback = data.CancelHandler;\n\n akeeba.System.modalDialog.close();\n\n callback(modalWrapper);\n e.preventDefault();\n });\n }\n }\n\n // Modal body\n var modalBody = document.createElement(\"div\");\n modalBody.className = \"modal-body\";\n modalContent.appendChild(modalBody);\n\n if (typeof (data.href) === \"undefined\")\n {\n // HTML body\n modalBody.innerHTML = data.body;\n }\n else if (data.href.substr(0, 1) == \"#\")\n {\n // Inherited content\n var inheritedElement = window.document.querySelector(data.href);\n\n while (inheritedElement.childNodes.length > 0)\n {\n modalBody.appendChild(inheritedElement.childNodes[0]);\n }\n }\n else\n {\n // IFrame\n\n var iFrame = document.createElement(\"iframe\");\n iFrame.src = data.href;\n iFrame.width = \"100%\";\n iFrame.height = 400;\n iFrame.frameborder = 0;\n iFrame.allowtransparency = true;\n modalBody.appendChild(iFrame);\n\n if (typeof (data.iFrameHeight) !== \"undefined\")\n {\n iFrame.height = data.iFrameHeight;\n }\n\n if (typeof (data.iFrameWidth) !== \"undefined\")\n {\n iFrame.width = data.iFrameWidth;\n }\n }\n\n // Should I show the buttons?\n var showButtons = true;\n\n if (typeof (data.showButtons) !== \"undefined\")\n {\n showButtons = data.showButtons;\n }\n\n // Modal buttons\n if (showButtons)\n {\n // Create the modal footer\n var modalFooter = document.createElement(\"div\");\n modalFooter.className = \"modal-footer\";\n modalContent.appendChild(modalFooter);\n\n // Get the button labels\n var okLabel = akeeba.System.Text._(\"UI-MODAL-OK\");\n var cancelLabel = akeeba.System.Text._(\"UI-MODAL-CANCEL\");\n\n if (typeof (data.OkLabel) !== \"undefined\")\n {\n okLabel = data.OkLabel;\n }\n\n if (typeof (data.CancelLabel) !== \"undefined\")\n {\n cancelLabel = data.CancelLabel;\n }\n\n // Create buttons\n var cancelButton = document.createElement(\"button\");\n cancelButton.className = \"btn btn-default\";\n cancelButton.setAttribute(\"type\", \"button\");\n cancelButton.innerHTML = cancelLabel;\n modalFooter.appendChild(cancelLabel);\n\n var okButton = document.createElement(\"button\");\n okButton.className = \"btn btn-primary\";\n okButton.setAttribute(\"type\", \"button\");\n okButton.innerHTML = okLabel;\n modalFooter.appendChild(okButton);\n\n // Assign handlers\n if (typeof (data.CancelHandler) !== \"undefined\")\n {\n akeeba.System.addEventListener(cancelButton, \"click\", function (e)\n {\n var callback = data.CancelHandler;\n akeeba.System.modalDialog.close();\n callback(modalWrapper);\n e.preventDefault();\n });\n }\n\n if (typeof (data.OkHandler) !== \"undefined\")\n {\n akeeba.System.addEventListener(okButton, \"click\", function (e)\n {\n var callback = data.OkHandler;\n akeeba.System.modalDialog.close();\n callback(modalWrapper);\n e.preventDefault();\n });\n }\n else\n {\n akeeba.System.addEventListener(okButton, \"click\", function (e)\n {\n akeeba.System.modalDialog.close();\n e.preventDefault();\n });\n }\n\n // Hide unnecessary buttons\n if (okLabel.trim() == \"\")\n {\n okButton.style.display = \"none\";\n }\n\n if (cancelLabel.trim() == \"\")\n {\n cancelButton.style.display = \"none\";\n }\n }\n\n // Show modal\n akeeba.System.modalDialog = akeeba.Modal.open({\n inherit: modalWrapper,\n width: \"450\",\n height: \"280\"\n });\n};\n\n// Initialization\nakeeba.System.documentReady(function ()\n{\n // Assign the correct default error handler\n akeeba.System.assignDefaultErrorHandler();\n\n // Grid Views: click event handler for the Check All checkbox\n [].slice.call(document.querySelectorAll('.akeebaGridViewCheckAll')).forEach((el) => {\n el.addEventListener(\"click\", (e) => {\n akeeba.System.checkAll(this)\n })\n });\n\n // Grid Views: change event handler for the ordering field and direction dropdowns\n [].slice.call(document.querySelectorAll('.akeebaGridViewOrderTable')).forEach((el) => {\n el.addEventListener(\"change\", (e) => {\n akeeba.System.orderTable();\n });\n });\n\n // Grid Views: change event handler for search fields which autosubmit the form on change\n [].slice.call(document.querySelectorAll('.akeebaGridViewAutoSubmitOnChange')).forEach((el) => {\n el.addEventListener(\"change\", (e) => {\n // DO NOT INLINE. .submitForm() IS NOT AN EVENT HANDLER!\n akeeba.System.submitForm();\n });\n });\n});\n"],"mappings":"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"}
Save
cmd:
run