/home/suroeste/public_html/wp-content/plugins/akeebabackupwp/app/media/js/solo
NameSizeModeActions
ajax.js96960644editdlrm
ajax.min.js34380644editdlrm
ajax.min.js.map174830644editdlrm
backup.min.js104660644editdlrm
backup.min.js.map363990644editdlrm
browser.js8520644editdlrm
browser.min.js5470644editdlrm
browser.min.js.map19520644editdlrm
configuration.min.js369800644editdlrm
configuration.min.js.map1370140644editdlrm
dbfilters.min.js77510644editdlrm
dbfilters.min.js.map287680644editdlrm
discover.js7170644editdlrm
discover.min.js4420644editdlrm
discover.min.js.map15810644editdlrm
extradirs.min.js.map234540644editdlrm
fsfilters.min.js150910644editdlrm
fsfilters.min.js.map603660644editdlrm
gui-helpers.min.js76040644editdlrm
gui-helpers.min.js.map408380644editdlrm
log.js8720644editdlrm
log.min.js5680644editdlrm
log.min.js.map19670644editdlrm
main.js64690644editdlrm
main.min.js37340644editdlrm
main.min.js.map121150644editdlrm
manage.js59140644editdlrm
manage.min.js35410644editdlrm
manage.min.js.map119930644editdlrm
modal.js110290644editdlrm
modal.min.js48820644editdlrm
modal.min.js.map223510644editdlrm
multidb.min.js.map316040644editdlrm
regexdbfilters.min.js.map214500644editdlrm
regexfsfilters.min.js.map217370644editdlrm
remotefiles.js17000644editdlrm
remotefiles.min.js7900644editdlrm
remotefiles.min.js.map29170644editdlrm
restore.min.js.map264100644editdlrm
s3import.js28060644editdlrm
s3import.min.js16210644editdlrm
s3import.min.js.map56080644editdlrm
setup.min.js.map402940644editdlrm
showon.js75830644editdlrm
showon.min.js42060644editdlrm
showon.min.js.map155530644editdlrm
system.min.js148060644editdlrm
system.min.js.map817660644editdlrm
tooltip.js80700644editdlrm
tooltip.min.js37260644editdlrm
tooltip.min.js.map151630644editdlrm
transfer.js187110644editdlrm
transfer.min.js.map352190644editdlrm
update.min.js55830644editdlrm
update.min.js.map205440644editdlrm
upload.js10510644editdlrm
upload.min.js4960644editdlrm
upload.min.js.map21080644editdlrm
users.js9130644editdlrm
users.min.js.map21180644editdlrm
wizard.min.js106560644editdlrm
wizard.min.js.map325010644editdlrm
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 = \"AJAX Loading Error
HTTP Status: \" + Request.status +\n \" (\" + Request.statusText + \")
\";\n\n message = message + \"Internal status: \" + textStatus + \"
\";\n message = message + \"XHR ReadyState: \" + Request.readyState + \"
\";\n message = message + \"Raw server response:
\" + 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(\" -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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"}