PATH:
home
/
vcomplcotr
/
www
/
wp-content
/
plugins
/
akeebabackupwp
/
app
/
media
/
js
/
solo
{"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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"}
[+]
..
[-] remotefiles.js
[edit]
[-] ajax.min.js.map
[edit]
[-] modal.min.js.map
[edit]
[-] tooltip.min.js
[edit]
[-] update.min.js
[edit]
[-] browser.min.js.map
[edit]
[-] manage.js
[edit]
[-] configuration.min.js.map
[edit]
[-] fsfilters.min.js
[edit]
[-] extradirs.min.js.map
[edit]
[-] transfer.min.js.map
[edit]
[-] modal.min.js
[edit]
[-] dbfilters.min.js
[edit]
[-] ajax.js
[edit]
[-] discover.min.js.map
[edit]
[-] transfer.js
[edit]
[-] regexfsfilters.min.js.map
[edit]
[-] wizard.min.js
[edit]
[-] main.min.js.map
[edit]
[-] s3import.min.js.map
[edit]
[-] discover.js
[edit]
[-] gui-helpers.min.js
[edit]
[-] tooltip.min.js.map
[edit]
[-] regexdbfilters.min.js.map
[edit]
[-] log.min.js.map
[edit]
[-] browser.js
[edit]
[-] remotefiles.min.js.map
[edit]
[-] tooltip.js
[edit]
[-] gui-helpers.min.js.map
[edit]
[-] showon.min.js.map
[edit]
[-] wizard.min.js.map
[edit]
[-] upload.min.js.map
[edit]
[-] remotefiles.min.js
[edit]
[-] system.min.js
[edit]
[-] system.min.js.map
[edit]
[-] configuration.min.js
[edit]
[-] multidb.min.js.map
[edit]
[-] upload.min.js
[edit]
[-] manage.min.js.map
[edit]
[-] modal.js
[edit]
[-] showon.js
[edit]
[-] upload.js
[edit]
[-] manage.min.js
[edit]
[-] setup.min.js.map
[edit]
[-] main.min.js
[edit]
[-] users.min.js.map
[edit]
[-] showon.min.js
[edit]
[-] restore.min.js.map
[edit]
[-] backup.min.js
[edit]
[-] ajax.min.js
[edit]
[-] dbfilters.min.js.map
[edit]
[-] s3import.js
[edit]
[-] browser.min.js
[edit]
[-] log.js
[edit]
[-] update.min.js.map
[edit]
[-] fsfilters.min.js.map
[edit]
[-] backup.min.js.map
[edit]
[-] log.min.js
[edit]
[-] main.js
[edit]
[-] discover.min.js
[edit]
[-] users.js
[edit]
[-] s3import.min.js
[edit]