PATH:
home
/
vcomplcotr
/
www
/
wp-content
/
plugins
/
akeebabackupwp
/
app
/
media
/
js
/
solo
{"version":3,"file":"configuration.min.js","names":["akeeba","Configuration","GUI","engines","installers","URLs","FtpBrowser","params","SftpBrowser","FtpTest","SftpTest","FtpModal","passwordFields","fsBrowser","dialogId","dialogBodyId","modalObject","parseConfigData","data","callback","parseGuiData","gui","restoreDefaultPasswords","curid","hasOwnProperty","defvalue","myElement","document","getElementById","value","onBrowser","folder","element","onBrowserCallback","myFolder","_typeof","close","browserSrc","browser","encodeURIComponent","dialogBody","innerHTML","iFrame","createElement","setAttribute","appendChild","Modal","open","inherit","width","path","charlist","replace","re","RegExp","key","initialise","paramsKey","host","port","username","password","passive","checked","ssl","directory","ftp_dialog_element","System","addEventListener","style","display","empty","ajaxURL","ftpBrowser","doAjax","elBreadCrumbs","elFTPBrowserFolderList","error","breadcrumbs","relativePath","addCrumb","Text","_","i","length","crumb","list","item","createLink","message","label","container","ftpObject","row","cell","textContent","li","myLink","e","preventDefault","returnValue","privKey","pubKey","privkey","pubkey","sftpBrowser","elSFTPBrowserFolderList","elSFTPCrumbs","testConnection","buttonKey","configKey","isCurl","button","console","warn","user","pass","initdir","usessl","passive_mode_workaround","testFtp","res","t","removeAttribute","elTestFTPBodyOK","elTestFTPBodyFail","elTestFTPLabel","status","s","testSftp","enablePopoverFor","el","NodeList","prototype","isPrototypeOf","Tooltip","enableFor","rootnode","group_id","headertext","groupdef","className","header","id","headerInner","config_key","p","defdata","current_id","showOn","showon","row_div","dataset","JSON","stringify","type","renderOptionLabel","controlWrapper","ucfirstType","toUpperCase","slice","renderMethod","renderOptionTypeUnknown","Showon","querySelectorAll","r","noLabel","nolabel","title","description","bold","fontWeight","renderOptionTypeNone","renderOptionTypeHidden","hiddenfield","renderOptionTypeSeparator","a","content","separator","renderOptionTypeInstaller","editor","option","name","renderOptionTypeEngine","engine_type","subtype","substr","engine_config_container","engineOptions","information","old_values","allElements","allInputs","input","j","getAttribute","options","selectedIndex","new_engine","enginedef","enginetitle","new_data","parameters","elLegend","querySelector","Element","insertAdjacentHTML","old","triggerEvent","activation_callback","window","icon","btnText","toggleClass","spacerSpan","titleSpan","renderOptionTypeBrowsedir","containerDiv","buttonContainer","renderOptionTypeEnum","enumvalues","split","enumkeys","counter","item_description","onchange","callback_onchange","renderOptionTypeString","renderOptionTypePassword","renderOptionTypeInteger","elHiddenInput","elCustomValue","parseFloat","scale","min","max","newValue","toFixed","elDropdown","shortcuts","quantizer","isPresetOption","elDropdownOption","uom","inputAppendWrapper","renderOptionTypeBool","wrap_div","elYesInput","elYesLabel","classList","add","innerText","elNoInput","elNoLabel","renderOptionTypeButton","hook","labeltext","err","method","fn","onChangeScriptType","selectElement","possibleInstaller","installerSelect","installerElements","children","onChangeDbDriver","myVal","elHost","elPort","elUsername","elPassword","elPrefix","elName","akeeba_directftp_init_browser","akeeba_postprocftp_init_browser","akeeba_directsftp_init_browser","akeeba_postprocsftp_init_browser","directftp_test_connection","postprocftp_test_connection","directftpcurl_test_connection","postprocftpcurl_test_connection","directsftp_test_connection","postprocsftp_test_connection","directsftpcurl_test_connection","postprocsftpcurl_test_connection","akconfig_dropbox_openoauth","url","dpeauthopen","indexOf","akconfig_dropbox_gettoken","AjaxURL","dpecustomapi","engine","token","oauth_token","oauth_token_secret","uid","alert","errorMessage","akconfig_dropbox2_openoauth","akeeba_dropbox2_oauth_callback","access_token","refresh_token","myWindow","akconfig_onedrive_openoauth","akeeba_onedrive_oauth_callback","akconfig_onedrivebusiness_openoauth","akeeba_onedrivebusiness_oauth_callback","akeeba_onedrivebusiness_refreshdrives","log","default","\"engine.postproc.onedrivebusiness.access_token\"","\"engine.postproc.onedrivebusiness.refresh_token\"","n","dropDown","forEach","elOption","text","selected","akconfig_googledrive_openoauth","akeeba_googledrive_oauth_callback","akeeba_googledrive_refreshdrives","\"engine.postproc.googledrive.access_token\"","\"engine.postproc.googledrive.refresh_token\"","akconfig_box_openoauth","akconfig_box_oauth_callback","akconfig_onedriveapp_openoauth","akeebabackup","akeeba_onedriveapp_oauth_callback","documentReady","getOptions","guiData","elDbDriver","setTimeout","postproc","googledrive","onedrivebusiness"],"sources":["configuration.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\n// Object initialisation\nif (typeof akeeba === \"undefined\")\n{\n var akeeba = {};\n}\n\nif (typeof akeeba.Configuration === \"undefined\")\n{\n akeeba.Configuration = {};\n akeeba.Configuration.GUI = {};\n akeeba.Configuration.engines = {};\n akeeba.Configuration.installers = {};\n akeeba.Configuration.URLs = {};\n akeeba.Configuration.FtpBrowser = {\n params: {}\n };\n akeeba.Configuration.SftpBrowser = {\n params: {}\n };\n akeeba.Configuration.FtpTest = {};\n akeeba.Configuration.SftpTest = {};\n akeeba.Configuration.FtpModal = null;\n akeeba.Configuration.passwordFields = {};\n akeeba.Configuration.fsBrowser = {\n params: {\n dialogId: \"folderBrowserDialog\",\n dialogBodyId: \"folderBrowserDialogBody\"\n },\n modalObject: null\n }\n}\n\n/**\n * Parses the JSON decoded data object defining engine and GUI parameters for the\n * configuration page\n *\n * @param data {Object} The nested objects of engine and GUI definitions\n * @param [callback] {function}\n */\nakeeba.Configuration.parseConfigData = function (data, callback)\n{\n akeeba.Configuration.engines = data.engines;\n akeeba.Configuration.installers = data.installers;\n akeeba.Configuration.parseGuiData(data.gui);\n\n if (typeof callback == \"function\")\n {\n callback();\n }\n};\n\n/**\n * Restores the contents of the password fields after brain-dead browsers with broken password managers try to auto-fill\n * the wrong password to the wrong field without warning you or asking you.\n */\nakeeba.Configuration.restoreDefaultPasswords = function ()\n{\n for (var curid in akeeba.Configuration.passwordFields)\n {\n if (!akeeba.Configuration.passwordFields.hasOwnProperty(curid))\n {\n continue;\n }\n\n var defvalue = akeeba.Configuration.passwordFields[curid];\n\n myElement = document.getElementById(curid);\n\n if (!myElement)\n {\n continue;\n }\n\n // Do not remove this line. It's required when defvalue is empty. Why? BECAUSE BROWSERS ARE BRAIN DEAD!\n myElement.value = \"WORKAROUND FOR NAUGHTY BROWSERS\";\n // This line finally sets the fields back to its default value.\n myElement.value = defvalue;\n }\n};\n\n/**\n * Opens a filesystem folder browser\n *\n * @param folder The folder to start browsing from\n * @param element The element whose value we'll modify when this browser returns\n */\nakeeba.Configuration.onBrowser = function (folder, element)\n{\n // Close dialog callback (user confirmed the new folder)\n akeeba.Configuration.onBrowserCallback = function (myFolder)\n {\n element.value = myFolder;\n\n if ((typeof akeeba.Configuration.fsBrowser.modalObject === \"object\") && akeeba.Configuration.fsBrowser.modalObject.close)\n {\n akeeba.Configuration.fsBrowser.modalObject.close()\n }\n };\n\n // URL to load the browser\n var browserSrc = akeeba.Configuration.URLs[\"browser\"] + encodeURIComponent(folder);\n\n var dialogBody = document.getElementById(akeeba.Configuration.fsBrowser.params.dialogBodyId);\n\n dialogBody.innerHTML = \"\";\n\n var iFrame = document.createElement(\"iframe\");\n iFrame.setAttribute(\"src\", browserSrc);\n iFrame.setAttribute(\"width\", \"100%\");\n iFrame.setAttribute(\"height\", 400);\n iFrame.setAttribute(\"frameborder\", 0);\n iFrame.setAttribute(\"allowtransparency\", \"true\");\n\n dialogBody.appendChild(iFrame);\n\n akeeba.Configuration.fsBrowser.modalObject = akeeba.Modal.open({\n inherit: \"#\" + akeeba.Configuration.fsBrowser.params.dialogId,\n width: \"80%\"\n });\n};\n\n/**\n * FTP browser callback, used to set the FTP root directory in an element\n *\n * @param path The path returned by the browser\n */\nakeeba.Configuration.FtpBrowser.callback = function (path)\n{\n var charlist = (\"/\").replace(/([\\[\\]\\(\\)\\.\\?\\/\\*\\{\\}\\+\\$\\^\\:])/g, \"$1\");\n var re = new RegExp(\"^[\" + charlist + \"]+\", \"g\");\n path = \"/\" + (path + \"\").replace(re, \"\");\n\n document.getElementById(\"var[\" + akeeba.Configuration.FtpBrowser.params.key + \"]\").value = path;\n};\n\n/**\n * Initialises an FTP folder browser\n *\n * @param key The Akeeba Engine configuration key of the field holding the FTP directory we're outputting\n * @param paramsKey The Akeeba Engine configuration key prefix of the fields holding FTP connection information\n */\nakeeba.Configuration.FtpBrowser.initialise = function (key, paramsKey)\n{\n akeeba.Configuration.FtpBrowser.params.host = document.getElementById(\"var[\" + paramsKey + \".host]\").value;\n akeeba.Configuration.FtpBrowser.params.port = document.getElementById(\"var[\" + paramsKey + \".port]\").value;\n akeeba.Configuration.FtpBrowser.params.username = document.getElementById(\"var[\" + paramsKey + \".user]\").value;\n akeeba.Configuration.FtpBrowser.params.password = document.getElementById(\"var[\" + paramsKey + \".pass]\").value;\n akeeba.Configuration.FtpBrowser.params.passive =\n document.getElementById(\"var[\" + paramsKey + \".passive_mode]_1\").checked;\n akeeba.Configuration.FtpBrowser.params.ssl = document.getElementById(\"var[\" + paramsKey + \".ftps]_1\").checked;\n akeeba.Configuration.FtpBrowser.params.directory =\n document.getElementById(\"var[\" + paramsKey + \".initial_directory]\").value;\n\n akeeba.Configuration.FtpBrowser.params.key = key;\n\n akeeba.Configuration.FtpBrowser.open();\n};\n\n/**\n * Opens the FTP directory browser\n */\nakeeba.Configuration.FtpBrowser.open = function ()\n{\n var ftp_dialog_element = document.getElementById(\"ftpdialog\");\n\n akeeba.System.addEventListener(document.getElementById(\"ftpdialogOkButton\"), \"click\", function (e)\n {\n akeeba.Configuration.FtpBrowser.callback(akeeba.Configuration.FtpBrowser.params.directory);\n\n if ((typeof akeeba.Configuration.FtpModal === \"object\") && akeeba.Configuration.FtpModal.close)\n {\n akeeba.Configuration.FtpModal.close();\n }\n });\n\n akeeba.System.addEventListener(document.getElementById(\"ftpdialogCancelButton\"), \"click\", function (e)\n {\n if ((typeof akeeba.Configuration.FtpModal === \"object\") && akeeba.Configuration.FtpModal.close)\n {\n akeeba.Configuration.FtpModal.close();\n }\n });\n\n akeeba.Configuration.FtpModal = akeeba.System.Modal.open({\n inherit: ftp_dialog_element,\n width: \"80%\"\n });\n\n document.getElementById(\"ftpBrowserErrorContainer\").style.display = \"none\";\n document.getElementById(\"ftpBrowserFolderList\").innerHTML = \"\";\n document.getElementById(\"ftpBrowserCrumbs\").innerHTML = \"\";\n\n if (empty(akeeba.Configuration.FtpBrowser.params.directory))\n {\n akeeba.Configuration.FtpBrowser.params.directory = \"\";\n }\n\n var data = {\n \"host\": akeeba.Configuration.FtpBrowser.params.host,\n \"username\": akeeba.Configuration.FtpBrowser.params.username,\n \"password\": akeeba.Configuration.FtpBrowser.params.password,\n \"passive\": (akeeba.Configuration.FtpBrowser.params.passive ? 1 : 0),\n \"ssl\": (akeeba.Configuration.FtpBrowser.params.ssl ? 1 : 0),\n \"directory\": akeeba.Configuration.FtpBrowser.params.directory\n };\n\n // URL to load the browser\n data.ajaxURL = akeeba.Configuration.URLs.ftpBrowser;\n\n // Do AJAX call & Render results\n akeeba.System.doAjax(\n data,\n function (data)\n {\n var elBreadCrumbs = document.getElementById(\"ak_crumbs2\");\n var elFTPBrowserFolderList = document.getElementById(\"ftpBrowserFolderList\");\n\n elFTPBrowserFolderList.style.display = \"none\";\n elBreadCrumbs.style.display = \"none\";\n\n if (data.error != false)\n {\n // An error occured\n document.getElementById(\"ftpBrowserError\").innerHTML = data.error;\n document.getElementById(\"ftpBrowserErrorContainer\").style.display = \"block\";\n\n return;\n }\n\n // Create the interface\n document.getElementById(\"ftpBrowserErrorContainer\").style.display = \"none\";\n\n // Display the crumbs\n if (!empty(data.breadcrumbs))\n {\n elBreadCrumbs.style.display = \"block\";\n elBreadCrumbs.innerHTML = \"\";\n var relativePath = \"/\";\n\n akeeba.Configuration.FtpBrowser.addCrumb(\n akeeba.System.Text._(\"COM_AKEEBA_FILEFILTERS_LABEL_UIROOT\"), \"/\", elBreadCrumbs);\n\n for (i = 0; i < data.breadcrumbs.length; i++)\n {\n var crumb = data.breadcrumbs[i];\n\n relativePath += \"/\" + crumb;\n\n akeeba.Configuration.FtpBrowser.addCrumb(crumb, relativePath, elBreadCrumbs);\n }\n }\n\n // Display the list of directories\n if (!empty(data.list))\n {\n elFTPBrowserFolderList.style.display = \"block\";\n\n /**\n * If the directory in the browser is empty, let's inject it with the parent dir, otherwise if the\n * user immediately clicks on \"Use\" gets a wrong path.\n */\n if (!akeeba.Configuration.FtpBrowser.params.directory)\n {\n akeeba.Configuration.FtpBrowser.params.directory = data.directory;\n }\n\n for (i = 0; i < data.list.length; i++)\n {\n var item = data.list[i];\n\n akeeba.Configuration.FtpBrowser.createLink(\n data.directory + \"/\" + item, item, elFTPBrowserFolderList);\n }\n }\n },\n function (message)\n {\n document.getElementById(\"ftpBrowserError\").innerHTML = message;\n document.getElementById(\"ftpBrowserErrorContainer\").style.display = \"block\";\n document.getElementById(\"ftpBrowserFolderList\").style.display = \"none\";\n document.getElementById(\"ftpBrowserCrumbs\").style.display = \"none\";\n },\n false\n );\n};\n\n/**\n * Creates a directory link for the FTP browser UI\n *\n * @param path The directory to link to\n * @param label How to display it\n * @param container The containing element\n * @param ftpObject The object which contains the FTP browser methods\n */\nakeeba.Configuration.FtpBrowser.createLink = function (path, label, container, ftpObject)\n{\n if (typeof ftpObject === \"undefined\")\n {\n ftpObject = akeeba.Configuration.FtpBrowser;\n }\n\n var row = document.createElement(\"tr\");\n var cell = document.createElement(\"td\");\n row.appendChild(cell);\n\n var myElement = document.createElement(\"a\");\n myElement.textContent = label;\n akeeba.System.addEventListener(myElement, \"click\", function ()\n {\n ftpObject.params.directory = path;\n ftpObject.open();\n });\n cell.appendChild(myElement);\n\n container.appendChild(row);\n};\n\n/**\n * Adds a breadcrumb to the FTP browser\n *\n * @param crumb How to display it\n * @param relativePath The relative path to the current directory\n * @param container The containing element\n * @param ftpObject The object which contains the FTP browser methods\n */\nakeeba.Configuration.FtpBrowser.addCrumb = function (crumb, relativePath, container, ftpObject)\n{\n if (typeof ftpObject === \"undefined\")\n {\n ftpObject = akeeba.Configuration.FtpBrowser;\n }\n\n var li = document.createElement(\"li\");\n\n var myLink = document.createElement(\"a\");\n myLink.textContent = crumb;\n akeeba.System.addEventListener(myLink, \"click\", function (e)\n {\n ftpObject.params.directory = relativePath;\n ftpObject.open();\n\n if (e.preventDefault)\n {\n e.preventDefault();\n }\n else\n {\n e.returnValue = false;\n }\n });\n\n li.appendChild(myLink);\n container.appendChild(li);\n};\n\n/**\n * Initialises an SFTP folder browser\n *\n * @param key The Akeeba Engine configuration key of the field holding the SFTP directory we're outputting\n * @param paramsKey The Akeeba Engine configuration key prefix of the fields holding SFTP connection information\n */\nakeeba.Configuration.SftpBrowser.initialise = function (key, paramsKey)\n{\n akeeba.Configuration.SftpBrowser.params.host = document.getElementById(\"var[\" + paramsKey + \".host]\").value;\n akeeba.Configuration.SftpBrowser.params.port = document.getElementById(\"var[\" + paramsKey + \".port]\").value;\n akeeba.Configuration.SftpBrowser.params.username = document.getElementById(\"var[\" + paramsKey + \".user]\").value;\n akeeba.Configuration.SftpBrowser.params.password = document.getElementById(\"var[\" + paramsKey + \".pass]\").value;\n akeeba.Configuration.SftpBrowser.params.directory =\n document.getElementById(\"var[\" + paramsKey + \".initial_directory]\").value;\n akeeba.Configuration.SftpBrowser.params.privKey = document.getElementById(\"var[\" + paramsKey + \".privkey]\").value;\n akeeba.Configuration.SftpBrowser.params.pubKey = document.getElementById(\"var[\" + paramsKey + \".pubkey]\").value;\n\n akeeba.Configuration.SftpBrowser.params.key = key;\n\n akeeba.Configuration.SftpBrowser.open();\n};\n\n/**\n * Opens the SFTP directory browser\n */\nakeeba.Configuration.SftpBrowser.open = function ()\n{\n var ftp_dialog_element = document.getElementById(\"sftpdialog\");\n\n ftp_dialog_element.style.display = \"block\";\n\n akeeba.System.addEventListener(document.getElementById(\"sftpdialogOkButton\"), \"click\", function (e)\n {\n akeeba.Configuration.SftpBrowser.callback(akeeba.Configuration.SftpBrowser.params.directory);\n\n if ((typeof akeeba.Configuration.FtpModal === \"object\") && akeeba.Configuration.FtpModal.close)\n {\n akeeba.Configuration.FtpModal.close();\n }\n });\n\n akeeba.System.addEventListener(document.getElementById(\"sftpdialogCancelButton\"), \"click\", function (e)\n {\n if ((typeof akeeba.Configuration.FtpModal === \"object\") && akeeba.Configuration.FtpModal.close)\n {\n akeeba.Configuration.FtpModal.close();\n }\n });\n\n akeeba.Configuration.FtpModal = akeeba.System.Modal.open({\n inherit: ftp_dialog_element,\n width: \"80%\"\n });\n\n document.getElementById(\"sftpBrowserErrorContainer\").style.display = \"none\";\n document.getElementById(\"sftpBrowserFolderList\").innerHTML = \"\";\n document.getElementById(\"sftpBrowserCrumbs\").innerHTML = \"\";\n\n if (empty(akeeba.Configuration.SftpBrowser.params.directory))\n {\n akeeba.Configuration.SftpBrowser.params.directory = \"\";\n }\n\n var data = {\n \"host\": akeeba.Configuration.SftpBrowser.params.host,\n \"port\": akeeba.Configuration.SftpBrowser.params.port,\n \"username\": akeeba.Configuration.SftpBrowser.params.username,\n \"password\": akeeba.Configuration.SftpBrowser.params.password,\n \"directory\": akeeba.Configuration.SftpBrowser.params.directory,\n \"privkey\": akeeba.Configuration.SftpBrowser.params.privKey,\n \"pubkey\": akeeba.Configuration.SftpBrowser.params.pubKey\n };\n\n // URL to load the browser\n data.ajaxURL = akeeba.Configuration.URLs.sftpBrowser;\n\n // Do AJAX call & Render results\n akeeba.System.doAjax(\n data,\n function (data)\n {\n var elSFTPBrowserFolderList = document.getElementById(\"sftpBrowserFolderList\");\n var elSFTPCrumbs = document.getElementById(\"ak_scrumbs\");\n\n elSFTPBrowserFolderList.style.display = \"none\";\n elSFTPCrumbs.style.display = \"none\";\n\n if (data.error != false)\n {\n // An error occured\n document.getElementById(\"sftpBrowserError\").innerHTML = data.error;\n document.getElementById(\"sftpBrowserErrorContainer\").style.display = \"block\";\n\n return;\n }\n\n // Create the interface\n document.getElementById(\"ftpBrowserErrorContainer\").style.display = \"none\";\n\n // Display the crumbs\n if (!empty(data.breadcrumbs))\n {\n elSFTPCrumbs.style.display = \"block\";\n elSFTPCrumbs.innerHTML = \"\";\n var relativePath = \"/\";\n\n akeeba.Configuration.FtpBrowser.addCrumb(\n akeeba.System.Text._(\"COM_AKEEBA_FILEFILTERS_LABEL_UIROOT\"), \"/\", elSFTPCrumbs,\n akeeba.Configuration.SftpBrowser\n );\n\n for (i = 0; i < data.breadcrumbs.length; i++)\n {\n var crumb = data.breadcrumbs[i];\n\n relativePath += \"/\" + crumb;\n\n akeeba.Configuration.FtpBrowser.addCrumb(\n crumb, relativePath, elSFTPCrumbs, akeeba.Configuration.SftpBrowser);\n }\n }\n\n // Display the list of directories\n if (!empty(data.list))\n {\n elSFTPBrowserFolderList.style.display = \"block\";\n\n // If the directory in the browser is empty, let's inject it with the parent dir, otherwise if the user\n // immediately clicks on \"Use\" gets a wrong path\n if (!akeeba.Configuration.SftpBrowser.params.directory)\n {\n akeeba.Configuration.SftpBrowser.params.directory = data.directory;\n }\n\n for (i = 0; i < data.list.length; i++)\n {\n var item = data.list[i];\n\n akeeba.Configuration.FtpBrowser.createLink(\n data.directory + \"/\" + item, item, elSFTPBrowserFolderList, akeeba.Configuration.SftpBrowser);\n }\n }\n },\n function (message)\n {\n document.getElementById(\"sftpBrowserError\").innerHTML = message;\n document.getElementById(\"sftpBrowserErrorContainer\").style.display = \"block\";\n document.getElementById(\"sftpBrowserFolderList\").style.display = \"none\";\n document.getElementById(\"sftpBrowserCrumbs\").style.display = \"none\";\n },\n false\n );\n};\n\n/**\n * SFTP browser callback, used to set the FTP root directory in an element\n *\n * @param path The path returned by the browser\n */\nakeeba.Configuration.SftpBrowser.callback = function (path)\n{\n var charlist = (\"/\").replace(/([\\[\\]\\(\\)\\.\\?\\/\\*\\{\\}\\+\\$\\^\\:])/g, \"$1\");\n var re = new RegExp(\"^[\" + charlist + \"]+\", \"g\");\n path = \"/\" + (path + \"\").replace(re, \"\");\n\n document.getElementById(\"var[\" + akeeba.Configuration.SftpBrowser.params.key + \"]\").value = path;\n};\n\nakeeba.Configuration.FtpTest.testConnection = function (buttonKey, configKey, isCurl)\n{\n var button = document.getElementById(\"var[\" + buttonKey + \"]\");\n akeeba.Configuration.FtpTest.buttonKey = \"var[\" + buttonKey + \"]\";\n\n if (button === null)\n {\n button = document.getElementById(buttonKey);\n akeeba.Configuration.FtpTest.buttonKey = buttonKey;\n }\n\n if (button === null)\n {\n console.warn(\"Button \" + akeeba.Configuration.FtpTest.buttonKey + \" not found\");\n }\n\n button.setAttribute(\"disabled\", \"disabled\");\n\n var data = {};\n\n try\n {\n data = {\n isCurl: (isCurl ? 1 : 0),\n host: document.getElementById(\"var[\" + configKey + \".host]\").value,\n port: document.getElementById(\"var[\" + configKey + \".port]\").value,\n user: document.getElementById(\"var[\" + configKey + \".user]\").value,\n pass: document.getElementById(\"var[\" + configKey + \".pass]\").value,\n initdir: document.getElementById(\"var[\" + configKey + \".initial_directory]\").value,\n usessl: document.getElementById(\"var[\" + configKey + \".ftps]_1\").checked ? 1 : 0,\n passive: document.getElementById(\"var[\" + configKey + \".passive_mode]_1\").checked ? 1 : 0,\n passive_mode_workaround: 0\n };\n }\n catch (e)\n {\n data = {\n isCurl: (isCurl ? 1 : 0),\n host: document.getElementById(configKey + \"_host\").value,\n port: document.getElementById(configKey + \"_port\").value,\n user: document.getElementById(configKey + \"_user\").value,\n pass: document.getElementById(configKey + \"_pass\").value,\n initdir: document.getElementById(configKey + \"_initial_directory\").value,\n usessl: document.getElementById(configKey + \"_ftps\").checked ? 1 : 0,\n passive: document.getElementById(configKey + \"_passive_mode\").checked ? 1 : 0,\n passive_mode_workaround: 0\n };\n }\n\n // The passive_mode_workaround input is only defined for cURL\n if (isCurl)\n {\n try\n {\n data.passive_mode_workaround =\n document.getElementById(\"var[\" + configKey + \".passive_mode_workaround]_1\").checked;\n }\n catch (e)\n {\n data.passive_mode_workaround =\n document.getElementById(configKey + \"_passive_mode_workaround\").checked;\n }\n }\n\n // Construct the query\n data.ajaxURL = akeeba.Configuration.URLs.testFtp;\n\n akeeba.System.doAjax(\n data,\n function (res)\n {\n var button = document.getElementById(akeeba.Configuration.FtpTest.buttonKey);\n button.removeAttribute(\"disabled\");\n\n var elTestFTPBodyOK = document.getElementById(\"testFtpDialogBodyOk\");\n var elTestFTPBodyFail = document.getElementById(\"testFtpDialogBodyFail\");\n var elTestFTPLabel = document.getElementById(\"testFtpDialogLabel\");\n\n elTestFTPBodyOK.style.display = \"none\";\n elTestFTPBodyFail.style.display = \"none\";\n\n if ((res?.status ?? false) === true)\n {\n elTestFTPLabel.textContent = akeeba.System.Text._(\"COM_AKEEBA_CONFIG_DIRECTFTP_TEST_OK\");\n elTestFTPBodyOK.textContent = akeeba.System.Text._(\"COM_AKEEBA_CONFIG_DIRECTFTP_TEST_OK\");\n elTestFTPBodyOK.style.display = \"block\";\n elTestFTPBodyFail.style.display = \"none\";\n }\n else\n {\n elTestFTPLabel.textContent = akeeba.System.Text._(\"COM_AKEEBA_CONFIG_DIRECTFTP_TEST_FAIL\");\n elTestFTPBodyFail.textContent = res?.status ?? '???';\n elTestFTPBodyOK.style.display = \"none\";\n elTestFTPBodyFail.style.display = \"block\";\n }\n\n akeeba.Modal.open({\n inherit: \"#testFtpDialog\",\n width: \"80%\"\n });\n }, null, false, 15000\n )\n};\n\nakeeba.Configuration.SftpTest.testConnection = function (buttonKey, configKey, isCurl)\n{\n var button = document.getElementById(\"var[\" + buttonKey + \"]\");\n akeeba.Configuration.SftpTest.buttonKey = \"var[\" + buttonKey + \"]\";\n\n button.setAttribute(\"disabled\", \"disabled\");\n\n var data = {\n isCurl: (isCurl ? 1 : 0),\n host: document.getElementById(\"var[\" + configKey + \".host]\").value,\n port: document.getElementById(\"var[\" + configKey + \".port]\").value,\n user: document.getElementById(\"var[\" + configKey + \".user]\").value,\n pass: document.getElementById(\"var[\" + configKey + \".pass]\").value,\n initdir: document.getElementById(\"var[\" + configKey + \".initial_directory]\").value,\n privkey: document.getElementById(\"var[\" + configKey + \".privkey]\").value,\n pubkey: document.getElementById(\"var[\" + configKey + \".pubkey]\").value\n };\n\n // Construct the query\n data.ajaxURL = akeeba.Configuration.URLs.testSftp;\n\n akeeba.System.doAjax(\n data,\n function (res)\n {\n var button = document.getElementById(akeeba.Configuration.SftpTest.buttonKey);\n button.removeAttribute(\"disabled\");\n\n var elTestFTPBodyOK = document.getElementById(\"testFtpDialogBodyOk\");\n var elTestFTPBodyFail = document.getElementById(\"testFtpDialogBodyFail\");\n var elTestFTPLabel = document.getElementById(\"testFtpDialogLabel\");\n\n elTestFTPBodyOK.style.display = \"none\";\n elTestFTPBodyFail.style.display = \"none\";\n\n if ((res?.status ?? false) === true)\n {\n elTestFTPLabel.textContent = akeeba.System.Text._(\"COM_AKEEBA_CONFIG_DIRECTSFTP_TEST_OK\");\n elTestFTPBodyOK.textContent = akeeba.System.Text._(\"COM_AKEEBA_CONFIG_DIRECTSFTP_TEST_OK\");\n elTestFTPBodyOK.style.display = \"block\";\n elTestFTPBodyFail.style.display = \"none\";\n }\n else\n {\n elTestFTPLabel.textContent = akeeba.System.Text._(\"COM_AKEEBA_CONFIG_DIRECTSFTP_TEST_FAIL\");\n elTestFTPBodyFail.textContent = res?.status ?? '???';\n elTestFTPBodyOK.style.display = \"none\";\n elTestFTPBodyFail.style.display = \"block\";\n }\n\n akeeba.Modal.open({\n inherit: \"#testFtpDialog\",\n width: \"80%\"\n });\n }, null, false, 15000\n )\n};\n\nakeeba.Configuration.enablePopoverFor = function (el)\n{\n if ((typeof el == \"object\") && NodeList.prototype.isPrototypeOf(el))\n {\n for (i = 0; i < el.length; i++)\n {\n var e = el[i];\n\n akeeba.Configuration.enablePopoverFor(e);\n }\n\n return;\n }\n\n akeeba.Tooltip.enableFor(el);\n};\n\n/**\n * Parses the main configuration GUI definition, generating the on-page widgets\n *\n * @param data The nested objects of the GUI definition ('gui' key of JSON data)\n * @param rootnode The jroot DOM element in which to create the widgets\n */\nakeeba.Configuration.parseGuiData = function (data, rootnode)\n{\n if (rootnode == null)\n {\n // The default root node is the form itself\n rootnode = document.getElementById(\"akeebagui\");\n }\n\n // Begin by slashing contents of the akeebagui DIV\n rootnode.innerHTML = \"\";\n\n // This is the workhorse, looping through groupdefs and creating HTML elements\n var group_id = 0;\n\n for (var headertext in data)\n {\n if (!data.hasOwnProperty(headertext))\n {\n continue;\n }\n\n var groupdef = data[headertext];\n\n // Loop for each group definition\n group_id++;\n\n if (empty(groupdef))\n {\n continue;\n }\n\n // Create a container for the group\n var container = document.createElement(\"div\");\n container.className = \"akeeba-panel--info\";\n\n rootnode.appendChild(container);\n\n // Create a group header\n var header = document.createElement(\"header\");\n header.id = \"auigrp_\" + rootnode.id + \"_\" + group_id;\n header.className = \"akeeba-block-header\";\n var headerInner = document.createElement(\"h5\");\n headerInner.innerHTML = headertext;\n header.appendChild(headerInner);\n\n container.appendChild(header);\n\n // Loop each element\n for (var config_key in groupdef)\n {\n if (!groupdef.hasOwnProperty(config_key))\n {\n continue;\n }\n\n var defdata = groupdef[config_key];\n\n // Parameter ID\n var current_id = \"var[\" + config_key + \"]\";\n\n // Option row DIV\n var showOn = defdata['showon'] ?? null;\n var row_div = document.createElement(\"div\");\n row_div.className = \"akeeba-ui-optionrow akeeba-form-group\";\n row_div.id = \"akconfigrow.\" + config_key;\n\n if (showOn)\n {\n row_div.dataset.showon = JSON.stringify(showOn);\n }\n /**\n * We must append the option row to the container only if the option type is NOT 'hidden' or 'none'.\n * These two option types are non-GUI elements. We only render a hidden field for them. The hidden field\n * is rendered without a row container so that we don't create an empty row in the interface.\n */\n if ((defdata[\"type\"] !== \"hidden\") && (defdata[\"type\"] !== \"none\"))\n {\n container.appendChild(row_div);\n }\n\n // Render the label, if applicable\n akeeba.Configuration.GUI.renderOptionLabel(current_id, defdata, row_div);\n\n // Create GUI representation based on type\n var controlWrapper = document.createElement(\"div\");\n controlWrapper.className = \"akeeba-form-controls\";\n\n var ucfirstType = defdata[\"type\"][0].toUpperCase() + defdata[\"type\"].slice(1);\n var renderMethod = \"renderOptionType\" + ucfirstType;\n\n if (typeof akeeba.Configuration.GUI[renderMethod] === \"function\")\n {\n akeeba.Configuration.GUI[renderMethod](current_id, defdata, controlWrapper, row_div, container);\n }\n else\n {\n akeeba.Configuration.GUI.renderOptionTypeUnknown(\n current_id, defdata, controlWrapper, row_div, container);\n }\n }\n }\n\n // Re-initialise the ShowOn JavaScript\n akeeba.Showon.initialise(rootnode);\n\n // Enable popovers\n akeeba.Configuration.enablePopoverFor(rootnode.querySelectorAll(\"[rel=\\\"akeeba-sticky-tooltip\\\"]\"));\n};\n\n/**\n * Renders the label of a configuration option, appending it to the container element\n *\n * @param {string} current_id The input name, e.g. var[something.or.another]\n * @param {Object} defdata The option definition data\n * @param {Element} row_div The element which contains the option itself (the DIV of the current row)\n */\nakeeba.Configuration.GUI.renderOptionLabel = function (current_id, defdata, row_div)\n{\n const noLabel = (defdata['nolabel'] ?? 0) != 0;\n\n // No interface is rendered for 'hidden' and 'none' option types\n if (noLabel || (defdata[\"type\"] == \"hidden\") || (defdata[\"type\"] == \"none\"))\n {\n return;\n }\n\n // Create label\n var label = document.createElement(\"label\");\n label.className = \"akeeba-control-label\";\n label.setAttribute(\"for\", current_id);\n label.innerHTML = defdata[\"title\"];\n\n if (defdata[\"description\"])\n {\n label.setAttribute(\"rel\", \"akeeba-sticky-tooltip\");\n label.setAttribute(\"data-original-title\", defdata[\"title\"]);\n label.setAttribute(\"data-content\", defdata[\"description\"]);\n }\n\n if (defdata[\"bold\"])\n {\n label.style.fontWeight = \"bold\";\n }\n\n row_div.appendChild(label);\n};\n\n/**\n * Renders an option of type \"none\". A do-not-display field. It doesn't render any input element at all.\n *\n * @param {string} current_id The input name, e.g. var[something.or.another]\n * @param {Object} defdata The option definition data\n * @param {Element} controlWrapper The element which contains the option's input object\n * @param {Element} row_div The element which contains the option itself (the DIV of the current row)\n * @param {Element} container The element which contains the row_div (option group container)\n */\nakeeba.Configuration.GUI.renderOptionTypeNone = function (current_id, defdata, controlWrapper, row_div, container)\n{\n // Nothing to render\n};\n\n/**\n * Renders an option of type \"hidden\". A hidden field.\n *\n * @param {string} current_id The input name, e.g. var[something.or.another]\n * @param {Object} defdata The option definition data\n * @param {Element} controlWrapper The element which contains the option's input object\n * @param {Element} row_div The element which contains the option itself (the DIV of the current row)\n * @param {Element} container The element which contains the row_div (option group container)\n */\nakeeba.Configuration.GUI.renderOptionTypeHidden = function (current_id, defdata, controlWrapper, row_div, container)\n{\n var hiddenfield = document.createElement(\"input\");\n hiddenfield.id = current_id;\n hiddenfield.setAttribute(\"type\", \"hidden\");\n hiddenfield.setAttribute(\"name\", current_id);\n hiddenfield.value = defdata[\"default\"];\n\n container.appendChild(hiddenfield);\n};\n\n/**\n * Renders an option of type \"separator\". A GUI row separator.\n *\n * @param {string} current_id The input name, e.g. var[something.or.another]\n * @param {Object} defdata The option definition data\n * @param {Element} controlWrapper The element which contains the option's input object\n * @param {Element} row_div The element which contains the option itself (the DIV of the current row)\n * @param {Element} container The element which contains the row_div (option group container)\n */\nakeeba.Configuration.GUI.renderOptionTypeSeparator = function (current_id, defdata, controlWrapper, row_div, container)\n{\n const element = defdata[\"element\"] ?? \"div\";\n const content = defdata[\"content\"] ?? null;\n const separator = document.createElement(element);\n\n if (content)\n {\n separator.innerHTML = content;\n }\n\n separator.className = \"akeeba_ui_separator\";\n container.appendChild(separator);\n};\n\n/**\n * Renders an option of type \"installer\". An installer selection.\n *\n * @param {string} current_id The input name, e.g. var[something.or.another]\n * @param {Object} defdata The option definition data\n * @param {Element} controlWrapper The element which contains the option's input object\n * @param {Element} row_div The element which contains the option itself (the DIV of the current row)\n * @param {Element} container The element which contains the row_div (option group container)\n */\nakeeba.Configuration.GUI.renderOptionTypeInstaller = function (current_id, defdata, controlWrapper, row_div, container)\n{\n // Create the select element\n var editor = document.createElement(\"select\");\n editor.className = \"akeeba-configuration-select-installer\";\n editor.id = current_id;\n editor.setAttribute(\"name\", current_id);\n\n for (key in akeeba.Configuration.installers)\n {\n if (!akeeba.Configuration.installers.hasOwnProperty(key))\n {\n continue;\n }\n\n var element = akeeba.Configuration.installers[key];\n\n var option = document.createElement(\"option\");\n option.value = key;\n option.innerHTML = element.name;\n\n if (defdata[\"default\"] == key)\n {\n option.setAttribute(\"selected\", 1);\n }\n\n editor.appendChild(option);\n }\n\n controlWrapper.appendChild(editor);\n row_div.appendChild(controlWrapper);\n};\n\n/**\n * Renders an option of type \"engine\". An engine selection.\n *\n * @param {string} current_id The input name, e.g. var[something.or.another]\n * @param {Object} defdata The option definition data\n * @param {Element} controlWrapper The element which contains the option's input object\n * @param {Element} row_div The element which contains the option itself (the DIV of the current row)\n * @param {Element} container The element which contains the row_div (option group container)\n */\nakeeba.Configuration.GUI.renderOptionTypeEngine = function (current_id, defdata, controlWrapper, row_div, container)\n{\n var engine_type = defdata[\"subtype\"];\n\n if (akeeba.Configuration.engines[engine_type] == null)\n {\n return;\n }\n\n var config_key = current_id.substr(4, current_id.length - 5);\n\n // Container for engine parameters, initially hidden\n var engine_config_container = document.createElement(\"div\");\n engine_config_container.id = config_key + \"_config\";\n //engine_config_container.className = \"akeeba-hidden-mobile akeeba-hidden-desktop akeeba-engine-options\";\n engine_config_container.className = \"akeeba-engine-options\";\n\n // Create the select element\n var editor = document.createElement(\"select\");\n editor.id = current_id;\n editor.setAttribute(\"name\", current_id);\n\n var engineOptions = akeeba.Configuration.engines[engine_type];\n\n for (var key in engineOptions)\n {\n if (!engineOptions.hasOwnProperty(key))\n {\n continue;\n }\n\n var element = engineOptions[key];\n\n var option = document.createElement(\"option\");\n option.value = key;\n option.innerHTML = element.information.title;\n\n if (defdata[\"default\"] == key)\n {\n option.setAttribute(\"selected\", \"selected\");\n }\n\n editor.appendChild(option);\n }\n\n akeeba.System.addEventListener(editor, \"change\", function (e)\n {\n // When the selection changes, we have to repopulate the config container\n // First, save any changed values\n var old_values = {};\n\n var allElements = [\n document.getElementById(config_key + \"_config\").querySelectorAll(\"input\"),\n document.getElementById(config_key + \"_config\").querySelectorAll(\"select\")\n ];\n\n var allInputs = null;\n var input = null;\n var id = null;\n\n for (i = 0; i < allElements.length; i++)\n {\n allInputs = allElements[i];\n\n if (!allInputs.length)\n {\n continue;\n }\n\n for (j = 0; j < allInputs.length; j++)\n {\n input = allInputs[j];\n id = input.id;\n\n old_values[id] = input.value;\n\n if (input.getAttribute(\"type\") == \"checkbox\")\n {\n old_values[id] = input.checked;\n }\n else if (input.getAttribute(\"type\") == \"select\")\n {\n old_values[id] = input.options[input.selectedIndex].value;\n }\n }\n\n }\n\n // Create the new interface\n var new_engine = editor.value;\n var enginedef = akeeba.Configuration.engines[engine_type][new_engine];\n var enginetitle = enginedef.information.title;\n var new_data = {};\n new_data[enginetitle] = enginedef.parameters;\n\n akeeba.Configuration.parseGuiData(new_data, engine_config_container);\n\n var elLegend = engine_config_container.querySelector(\"header\");\n if (elLegend instanceof Element)\n {\n elLegend.insertAdjacentHTML(\n \"afterend\", \"<p class=\\\"akeeba-block--information\\\">\" + enginedef.information.description + \"</p>\");\n }\n\n // Reapply changed values\n allElements = [\n document.getElementById(config_key + \"_config\").querySelectorAll(\"input\"),\n document.getElementById(config_key + \"_config\").querySelectorAll(\"select\")\n ];\n\n for (i = 0; i < allElements.length; i++)\n {\n allInputs = allElements[i];\n\n if (!allInputs.length)\n {\n continue;\n }\n\n for (j = 0; j < allInputs.length; j++)\n {\n input = allInputs[j];\n id = input.id;\n\n var old = old_values[id];\n\n if ((old == null) || (old == undefined))\n {\n continue;\n }\n\n if (input.getAttribute(\"type\") == \"checkbox\")\n {\n if (old)\n {\n input.setAttribute(\"checked\", \"checked\");\n }\n else\n {\n input.removeAttribute(\"checked\");\n }\n }\n else\n {\n input.value = old;\n }\n\n // Trigger the change event for drop-downs\n if (i == 1)\n {\n akeeba.System.triggerEvent(input, \"change\");\n }\n }\n }\n\n // Finally, run the activation_callback\n if (typeof enginedef.information.activation_callback !== \"undefined\")\n {\n window[enginedef.information.activation_callback](enginedef.parameters);\n }\n });\n\n // Add a configuration show/hide button\n var button = document.createElement(\"button\");\n button.className = \"akeeba-btn--small--dark\";\n\n var icon = document.createElement(\"span\");\n icon.className = \"akion-wrench\";\n button.appendChild(icon);\n\n var btnText = document.createElement(\"span\");\n btnText.innerHTML = akeeba.System.Text._(\"COM_AKEEBA_CONFIG_UI_CONFIG\");\n button.appendChild(btnText);\n\n akeeba.System.addEventListener(button, \"click\", function (e)\n {\n akeeba.System.toggleClass(engine_config_container, \"akeeba-hidden-mobile\");\n akeeba.System.toggleClass(engine_config_container, \"akeeba-hidden-desktop\");\n\n if (e.preventDefault)\n {\n e.preventDefault();\n }\n else\n {\n e.returnValue = false;\n }\n });\n\n var spacerSpan = document.createElement(\"span\");\n spacerSpan.innerHTML = \" \";\n\n controlWrapper.appendChild(editor);\n //controlWrapper.appendChild(spacerSpan);\n //controlWrapper.appendChild(button);\n controlWrapper.appendChild(engine_config_container);\n\n row_div.appendChild(controlWrapper);\n\n // Populate config container with the default engine data\n if (akeeba.Configuration.engines[engine_type][defdata[\"default\"]] != null)\n {\n var new_engine = defdata[\"default\"];\n var enginedef = akeeba.Configuration.engines[engine_type][new_engine];\n var enginetitle = enginedef.information.title;\n var new_data = {};\n new_data[enginetitle] = enginedef.parameters;\n\n // Is it a protected field?\n if (defdata[\"protected\"] != 0)\n {\n var titleSpan = document.createElement(\"span\");\n titleSpan.textContent = enginetitle;\n //span.appendChild(titleSpan);\n editor.style.display = \"none\";\n }\n\n akeeba.Configuration.parseGuiData(new_data, engine_config_container);\n\n var elLegend = engine_config_container.querySelector(\"header\");\n if (elLegend instanceof Element)\n {\n elLegend.insertAdjacentHTML(\n \"afterend\", \"<p class=\\\"akeeba-block--information\\\">\" + enginedef.information.description + \"</p>\");\n }\n\n // Finally, run the activation_callback\n if (typeof enginedef.information.activation_callback !== \"undefined\")\n {\n window[enginedef.information.activation_callback](enginedef.parameters);\n }\n }\n};\n\n/**\n * Renders an option of type \"browsedir\". A text box with an option to launch a browser.\n *\n * @param {string} current_id The input name, e.g. var[something.or.another]\n * @param {Object} defdata The option definition data\n * @param {Element} controlWrapper The element which contains the option's input object\n * @param {Element} row_div The element which contains the option itself (the DIV of the current row)\n * @param {Element} container The element which contains the row_div (option group container)\n */\nakeeba.Configuration.GUI.renderOptionTypeBrowsedir = function (current_id, defdata, controlWrapper, row_div, container)\n{\n var editor = document.createElement(\"input\");\n editor.setAttribute(\"type\", \"text\");\n editor.setAttribute(\"name\", current_id);\n editor.setAttribute(\"size\", \"30\");\n editor.value = defdata[\"default\"];\n\n var button = document.createElement(\"button\");\n button.className = \"akeeba-btn--grey\";\n button.setAttribute(\"title\", akeeba.System.Text._(\"COM_AKEEBA_CONFIG_UI_BROWSE\"));\n\n var icon = document.createElement(\"span\");\n icon.className = \"akion-folder\";\n button.appendChild(icon);\n\n akeeba.System.addEventListener(button, \"click\", function (e)\n {\n if (e.preventDefault)\n {\n e.preventDefault();\n }\n else\n {\n e.returnValue = false;\n }\n\n if (akeeba.Configuration.onBrowser != null)\n {\n akeeba.Configuration.onBrowser(editor.value, editor);\n }\n\n return false;\n });\n\n var containerDiv = document.createElement(\"div\");\n containerDiv.className = \"akeeba-input-group\";\n containerDiv.id = current_id;\n\n var buttonContainer = document.createElement(\"span\");\n buttonContainer.className = \"akeeba-input-group-btn\";\n\n containerDiv.appendChild(editor);\n buttonContainer.appendChild(button);\n containerDiv.appendChild(buttonContainer);\n controlWrapper.appendChild(containerDiv);\n row_div.appendChild(controlWrapper);\n};\n\n/**\n * Renders an option of type \"enum\". A drop-down list.\n *\n * @param {string} current_id The input name, e.g. var[something.or.another]\n * @param {Object} defdata The option definition data\n * @param {Element} controlWrapper The element which contains the option's input object\n * @param {Element} row_div The element which contains the option itself (the DIV of the current row)\n * @param {Element} container The element which contains the row_div (option group container)\n */\nakeeba.Configuration.GUI.renderOptionTypeEnum = function (current_id, defdata, controlWrapper, row_div, container)\n{\n var editor = document.createElement(\"select\");\n editor.className = \"akeeba-configuration-select-enum\";\n editor.id = current_id;\n editor.setAttribute(\"name\", current_id);\n\n // Create and append options\n var enumvalues = defdata[\"enumvalues\"].split(\"|\");\n var enumkeys = defdata[\"enumkeys\"].split(\"|\");\n\n for (counter = 0; counter < enumvalues.length; counter++)\n {\n var value = enumvalues[counter];\n\n var item_description = enumkeys[counter];\n var option = document.createElement(\"option\");\n option.value = value;\n option.innerHTML = item_description;\n\n if (value == defdata[\"default\"])\n {\n option.setAttribute(\"selected\", \"selected\");\n }\n\n editor.appendChild(option);\n }\n\n if (typeof defdata[\"onchange\"] !== \"undefined\")\n {\n akeeba.System.addEventListener(editor, \"change\", function ()\n {\n var callback_onchange = defdata[\"onchange\"];\n callback_onchange(editor);\n });\n }\n\n controlWrapper.appendChild(editor);\n row_div.appendChild(controlWrapper);\n};\n\n/**\n * Renders an option of type \"string\". A simple single-line, unvalidated text box.\n *\n * @param {string} current_id The input name, e.g. var[something.or.another]\n * @param {Object} defdata The option definition data\n * @param {Element} controlWrapper The element which contains the option's input object\n * @param {Element} row_div The element which contains the option itself (the DIV of the current row)\n * @param {Element} container The element which contains the row_div (option group container)\n */\nakeeba.Configuration.GUI.renderOptionTypeString = function (current_id, defdata, controlWrapper, row_div, container)\n{\n var editor = document.createElement(\"input\");\n editor.className = \"akeeba-configuration-string\";\n editor.setAttribute(\"type\", \"text\");\n editor.id = current_id;\n editor.setAttribute(\"name\", current_id);\n editor.setAttribute(\"size\", 40);\n editor.value = defdata[\"default\"];\n\n controlWrapper.appendChild(editor);\n row_div.appendChild(controlWrapper);\n};\n\n/**\n * Renders an option of type \"password\". A simple single-line, unvalidated password box.\n *\n * @param {string} current_id The input name, e.g. var[something.or.another]\n * @param {Object} defdata The option definition data\n * @param {Element} controlWrapper The element which contains the option's input object\n * @param {Element} row_div The element which contains the option itself (the DIV of the current row)\n * @param {Element} container The element which contains the row_div (option group container)\n */\nakeeba.Configuration.GUI.renderOptionTypePassword = function (current_id, defdata, controlWrapper, row_div, container)\n{\n akeeba.Configuration.passwordFields[current_id] = defdata[\"default\"];\n\n var editor = document.createElement(\"input\");\n editor.className = \"akeeba-configuration-password\";\n editor.setAttribute(\"type\", \"password\");\n editor.id = current_id;\n editor.setAttribute(\"name\", current_id);\n editor.setAttribute(\"size\", 40);\n editor.value = defdata[\"default\"];\n editor.setAttribute(\"autocomplete\", \"off\");\n\n controlWrapper.appendChild(editor);\n row_div.appendChild(controlWrapper);\n};\n\n/**\n * Renders an option of type \"integer\". Hidden form element with the real value.\n *\n * @param {string} current_id The input name, e.g. var[something.or.another]\n * @param {Object} defdata The option definition data\n * @param {Element} controlWrapper The element which contains the option's input object\n * @param {Element} row_div The element which contains the option itself (the DIV of the current row)\n * @param {Element} container The element which contains the row_div (option group container)\n */\nakeeba.Configuration.GUI.renderOptionTypeInteger = function (current_id, defdata, controlWrapper, row_div, container)\n{\n var config_key = current_id.substr(4, current_id.length - 5);\n\n // Hidden input field. Holds the actual value saved to the configuration.\n var elHiddenInput = document.createElement(\"input\");\n elHiddenInput.id = config_key;\n elHiddenInput.setAttribute(\"name\", current_id);\n elHiddenInput.setAttribute(\"type\", \"hidden\");\n elHiddenInput.value = defdata[\"default\"];\n\n // Custom value input box\n var elCustomValue = document.createElement(\"input\");\n\n elCustomValue.setAttribute(\"type\", \"text\");\n elCustomValue.setAttribute(\"size\", \"10\");\n elCustomValue.id = config_key + \"_custom\";\n elCustomValue.style.display = \"none\";\n //elCustomValue.style.marginLeft = '6px';\n elCustomValue.className = \"akeeba-form-input-mini\";\n\n akeeba.System.addEventListener(elCustomValue, \"blur\", function ()\n {\n var value = parseFloat(elCustomValue.value);\n value = value * defdata[\"scale\"];\n\n if (value < defdata[\"min\"])\n {\n value = defdata[\"min\"];\n }\n else if (value > defdata[\"max\"])\n {\n value = defdata[\"max\"];\n }\n\n elHiddenInput.value = value;\n\n var newValue = value / defdata[\"scale\"];\n\n elCustomValue.value = newValue.toFixed(2);\n });\n\n // Select element with preset options\n var elDropdown = document.createElement(\"select\");\n elDropdown.id = config_key + \"_dropdown\";\n elDropdown.setAttribute(\"name\", config_key + \"_dropdown\");\n elDropdown.className = \"akeeba-form-input-small\";\n\n // Create and append the preset options to the select element\n var enumvalues = defdata[\"shortcuts\"].split(\"|\");\n var quantizer = defdata[\"scale\"];\n var isPresetOption = false;\n\n for (counter = 0; counter < enumvalues.length; counter++)\n {\n var value = enumvalues[counter];\n\n var item_description = value / quantizer;\n var elDropdownOption = document.createElement(\"option\");\n elDropdownOption.value = value;\n elDropdownOption.innerHTML = item_description.toFixed(2);\n\n if (value == defdata[\"default\"])\n {\n elDropdownOption.setAttribute(\"selected\", \"selected\");\n isPresetOption = true;\n }\n\n elDropdown.appendChild(elDropdownOption);\n }\n\n // Create one last option called \"Custom\"\n var option = document.createElement(\"option\");\n option.value = -1;\n // TODO Translate this text\n option.innerHTML = \"Custom...\";\n\n if (!isPresetOption)\n {\n option.setAttribute(\"selected\", \"selected\");\n elCustomValue.value = (defdata[\"default\"] / defdata[\"scale\"]).toFixed(2);\n elCustomValue.style.display = \"inline-block\";\n }\n\n elDropdown.appendChild(option);\n\n // Add actions to the dropdown\n akeeba.System.addEventListener(elDropdown, \"change\", function ()\n {\n var value = elDropdown.value;\n\n if (value == -1)\n {\n elCustomValue.value = (defdata[\"default\"] / defdata[\"scale\"]).toFixed(2);\n elCustomValue.style.display = \"inline-block\";\n akeeba.System.triggerEvent(elCustomValue, \"focus\");\n\n return;\n }\n\n elHiddenInput.value = value;\n elCustomValue.style.display = \"none\";\n });\n\n // Label\n var uom = defdata[\"uom\"];\n\n if ((typeof (uom) != \"string\") || empty(uom))\n {\n uom = \"\";\n\n controlWrapper.appendChild(elDropdown);\n controlWrapper.appendChild(elCustomValue);\n }\n else\n {\n var inputAppendWrapper = document.createElement(\"div\");\n inputAppendWrapper.className = \"akeeba-input-group--small\";\n\n var label = document.createElement(\"span\");\n //akeeba.System.addClass(label, 'add-on');\n label.textContent = \" \" + uom;\n\n inputAppendWrapper.appendChild(elDropdown);\n inputAppendWrapper.appendChild(elCustomValue);\n inputAppendWrapper.appendChild(label);\n controlWrapper.appendChild(inputAppendWrapper);\n }\n\n controlWrapper.appendChild(elHiddenInput);\n row_div.appendChild(controlWrapper);\n};\n\n/**\n * Renders an option of type \"bool\". A toggle button.\n *\n * @param {string} current_id The input name, e.g. var[something.or.another]\n * @param {Object} defdata The option definition data\n * @param {Element} controlWrapper The element which contains the option's input object\n * @param {Element} row_div The element which contains the option itself (the DIV of the current row)\n * @param {Element} container The element which contains the row_div (option group container)\n */\nakeeba.Configuration.GUI.renderOptionTypeBool = function (current_id, defdata, controlWrapper, row_div, container)\n{\n var wrap_div = document.createElement(\"div\");\n wrap_div.className = \"akeeba-toggle\";\n wrap_div.id = current_id;\n\n var elYesInput = document.createElement('input');\n elYesInput.id = current_id + '_1';\n elYesInput.type = 'radio';\n elYesInput.name = current_id;\n elYesInput.value = \"1\";\n\n var elYesLabel = document.createElement('label');\n elYesLabel.setAttribute('for', current_id + '_1');\n elYesLabel.classList.add('green');\n elYesLabel.innerText = akeeba.System.Text._('SOLO_YES');\n\n var elNoInput = document.createElement('input');\n elNoInput.id = current_id + '_0';\n elNoInput.type = 'radio';\n elNoInput.name = current_id;\n elNoInput.value = \"0\";\n\n var elNoLabel = document.createElement('label');\n elNoLabel.setAttribute('for', current_id + '_0');\n elNoLabel.classList.add('red');\n elNoLabel.innerText = akeeba.System.Text._('SOLO_NO');\n\n if (defdata[\"default\"] != 0)\n {\n elYesInput.setAttribute(\"checked\", \"checked\");\n }\n else\n {\n elNoInput.setAttribute(\"checked\", \"checked\");\n }\n\n wrap_div.appendChild(elYesInput);\n wrap_div.appendChild(elYesLabel);\n wrap_div.appendChild(elNoInput);\n wrap_div.appendChild(elNoLabel);\n\n controlWrapper.appendChild(wrap_div);\n row_div.appendChild(controlWrapper);\n};\n\n/**\n * Renders an option of type \"button\". Button with a custom hook function.\n *\n * @param {string} current_id The input name, e.g. var[something.or.another]\n * @param {Object} defdata The option definition data\n * @param {Element} controlWrapper The element which contains the option's input object\n * @param {Element} row_div The element which contains the option itself (the DIV of the current row)\n * @param {Element} container The element which contains the row_div (option group container)\n */\nakeeba.Configuration.GUI.renderOptionTypeButton = function (current_id, defdata, controlWrapper, row_div, container)\n{\n // Create the button\n var label = row_div.querySelector(\"label\");\n var hook = defdata[\"hook\"];\n var labeltext = label.innerHTML;\n var editor = document.createElement(\"button\");\n editor.id = current_id;\n editor.innerHTML = labeltext;\n editor.className = \"akeeba-btn--grey\";\n label.innerHTML = \" \";\n\n akeeba.System.addEventListener(editor, \"click\", function (e)\n {\n if (e.preventDefault)\n {\n e.preventDefault();\n }\n else\n {\n e.returnValue = false;\n }\n\n try\n {\n window[hook]();\n }\n catch (err)\n {\n }\n });\n\n controlWrapper.appendChild(editor);\n row_div.appendChild(controlWrapper);\n};\n\n/**\n * Renders an option of an unknown type (an extension is used).\n *\n * @param {string} current_id The input name, e.g. var[something.or.another]\n * @param {Object} defdata The option definition data+\n * @param {Element} controlWrapper The element which contains the option's input object\n * @param {Element} row_div The element which contains the option itself (the DIV of the current row)\n * @param {Element} container The element which contains the row_div (option group container)\n */\nakeeba.Configuration.GUI.renderOptionTypeUnknown = function (current_id, defdata, controlWrapper, row_div, container)\n{\n var config_key = current_id.substr(4, current_id.length - 5);\n\n var method = \"akeeba_render_\" + defdata[\"type\"];\n var fn = window[method];\n\n if (typeof fn == \"function\")\n {\n fn(config_key, defdata, label, row_div);\n }\n else\n {\n try\n {\n window[method](config_key, defdata, label, row_div);\n }\n catch (e)\n {\n\n }\n }\n};\n\nakeeba.Configuration.onChangeScriptType = function (selectElement)\n{\n // Currently selected value\n var value = selectElement.options[selectElement.selectedIndex].value;\n var possibleInstaller = (value === \"joomla\") ? \"angie\" : (\"angie-\" + value);\n\n // All possible installers\n var installerSelect = document.getElementById(\"var[akeeba.advanced.embedded_installer]\");\n var installerElements = installerSelect.children;\n\n for (var i = 0; i < installerElements.length; i++)\n {\n var element = installerElements[i];\n\n if (element.value === possibleInstaller)\n {\n installerSelect.value = possibleInstaller;\n\n return;\n }\n }\n};\n\nakeeba.Configuration.onChangeDbDriver = function ()\n{\n var myVal = this.value;\n var elHost = document.getElementById(\"akconfigrow.akeeba.platform.dbhost\");\n var elPort = document.getElementById(\"akconfigrow.akeeba.platform.dbport\");\n var elUsername = document.getElementById(\"akconfigrow.akeeba.platform.dbusername\");\n var elPassword = document.getElementById(\"akconfigrow.akeeba.platform.dbpassword\");\n var elPrefix = document.getElementById(\"akconfigrow.akeeba.platform.dbprefix\");\n var elName = document.getElementById(\"akconfigrow.akeeba.platform.dbname\");\n\n elHost.style.display = \"grid\";\n elPort.style.display = \"grid\";\n elUsername.style.display = \"grid\";\n elPassword.style.display = \"grid\";\n elPrefix.style.display = \"grid\";\n elName.style.display = \"grid\";\n\n if ((myVal == \"sqlite\") || (myVal == \"none\"))\n {\n elHost.style.display = \"none\";\n elPort.style.display = \"none\";\n elUsername.style.display = \"none\";\n elPassword.style.display = \"none\";\n elPrefix.style.display = \"none\";\n\n elHost.value = \"\";\n elPort.value = \"\";\n elUsername.value = \"\";\n elPassword.value = \"\";\n elPrefix.value = \"\";\n }\n\n if (myVal == \"none\")\n {\n elName.value = \"\";\n elName.style.display = \"none\";\n }\n}\n\n// =====================================================================================================================\n// Initialise hooks used by the engine definitions INI files\n// =====================================================================================================================\n\nakeeba_directftp_init_browser = function ()\n{\n akeeba.Configuration.FtpBrowser.initialise(\n \"engine.archiver.directftp.initial_directory\", \"engine.archiver.directftp\");\n};\n\nakeeba_postprocftp_init_browser = function ()\n{\n akeeba.Configuration.FtpBrowser.initialise(\"engine.postproc.ftp.initial_directory\", \"engine.postproc.ftp\");\n};\n\nakeeba_directsftp_init_browser = function ()\n{\n akeeba.Configuration.SftpBrowser.initialise(\n \"engine.archiver.directsftp.initial_directory\", \"engine.archiver.directsftp\");\n};\n\nakeeba_postprocsftp_init_browser = function ()\n{\n akeeba.Configuration.FtpBrowser.initialise(\"engine.postproc.sftp.initial_directory\", \"engine.postproc.sftp\");\n};\n\ndirectftp_test_connection = function ()\n{\n akeeba.Configuration.FtpTest.testConnection(\"engine.archiver.directftp.ftp_test\", \"engine.archiver.directftp\", 0);\n};\n\npostprocftp_test_connection = function ()\n{\n akeeba.Configuration.FtpTest.testConnection(\"engine.postproc.ftp.ftp_test\", \"engine.postproc.ftp\", 0);\n};\n\ndirectftpcurl_test_connection = function ()\n{\n akeeba.Configuration.FtpTest.testConnection(\n \"engine.archiver.directftpcurl.ftp_test\", \"engine.archiver.directftpcurl\", 1);\n};\n\npostprocftpcurl_test_connection = function ()\n{\n akeeba.Configuration.FtpTest.testConnection(\"engine.postproc.ftpcurl.ftp_test\", \"engine.postproc.ftpcurl\", 1);\n};\n\ndirectsftp_test_connection = function ()\n{\n akeeba.Configuration.SftpTest.testConnection(\n \"engine.archiver.directsftp.sftp_test\", \"engine.archiver.directsftp\", 0);\n};\n\npostprocsftp_test_connection = function ()\n{\n akeeba.Configuration.SftpTest.testConnection(\"engine.postproc.sftp.sftp_test\", \"engine.postproc.sftp\", 0);\n};\n\ndirectsftpcurl_test_connection = function ()\n{\n akeeba.Configuration.SftpTest.testConnection(\n \"engine.archiver.directsftpcurl.sftp_test\", \"engine.archiver.directsftpcurl\", 1);\n};\n\npostprocsftpcurl_test_connection = function ()\n{\n akeeba.Configuration.SftpTest.testConnection(\"engine.postproc.sftpcurl.sftp_test\", \"engine.postproc.sftpcurl\", 1);\n};\n\nakconfig_dropbox_openoauth = function ()\n{\n var url = akeeba.Configuration.URLs.dpeauthopen;\n\n if (url.indexOf(\"?\") == -1)\n {\n url = url + \"?\";\n }\n else\n {\n url = url + \"&\";\n }\n\n window.open(url + \"engine=dropbox\", \"akeeba_dropbox_window\", \"width=1010,height=500,opener\");\n};\n\nakconfig_dropbox_gettoken = function ()\n{\n akeeba.System.AjaxURL = akeeba.Configuration.URLs[\"dpecustomapi\"];\n\n var data = {\n engine: \"dropbox\",\n method: \"getauth\"\n };\n\n akeeba.System.doAjax(\n data,\n function (res)\n {\n if (res[\"error\"] != \"\")\n {\n alert(\"ERROR: Could not complete authentication; please retry\");\n }\n else\n {\n document.getElementById(\"var[engine.postproc.dropbox.token]\").value = res.token.oauth_token;\n document.getElementById(\"var[engine.postproc.dropbox.token_secret]\").value =\n res.token.oauth_token_secret;\n document.getElementById(\"var[engine.postproc.dropbox.uid]\").value = res.token.uid;\n alert(\"Authentication successful!\");\n }\n }, function (errorMessage)\n {\n alert(\"ERROR: Could not complete authentication; please retry\" + \"\\n\" + errorMessage);\n }, false, 15000\n );\n};\n\nakconfig_dropbox2_openoauth = function ()\n{\n var url = akeeba.Configuration.URLs.dpeauthopen;\n\n if (url.indexOf(\"?\") == -1)\n {\n url = url + \"?\";\n }\n else\n {\n url = url + \"&\";\n }\n\n window.open(url + \"engine=dropbox2\", \"akeeba_dropbox2_window\", \"width=1010,height=500,opener\");\n};\n\nakeeba_dropbox2_oauth_callback = function (data)\n{\n // Update the tokens\n document.getElementById(\"var[engine.postproc.dropbox2.access_token]\").value = data.access_token;\n document.getElementById(\"var[engine.postproc.dropbox2.refresh_token]\").value = data.refresh_token;\n\n // Close the window\n myWindow = window.open(\"\", \"akeeba_dropbox2_window\");\n myWindow.close();\n};\n\nakconfig_onedrive_openoauth = function ()\n{\n var url = akeeba.Configuration.URLs.dpeauthopen;\n\n if (url.indexOf(\"?\") == -1)\n {\n url = url + \"?\";\n }\n else\n {\n url = url + \"&\";\n }\n\n window.open(url + \"engine=onedrive\", \"akeeba_onedrive_window\", \"width=1010,height=500,opener\");\n};\n\nakeeba_onedrive_oauth_callback = function (data)\n{\n // Update the tokens\n document.getElementById(\"var[engine.postproc.onedrive.access_token]\").value = data.access_token;\n document.getElementById(\"var[engine.postproc.onedrive.refresh_token]\").value = data.refresh_token;\n\n // Close the window\n myWindow = window.open(\"\", \"akeeba_onedrive_window\");\n myWindow.close();\n};\n\nakconfig_onedrivebusiness_openoauth = function ()\n{\n var url = akeeba.Configuration.URLs.dpeauthopen;\n\n if (url.indexOf(\"?\") == -1)\n {\n url = url + \"?\";\n }\n else\n {\n url = url + \"&\";\n }\n\n window.open(url + \"engine=onedrivebusiness\", \"akeeba_onedrivebusiness_window\", \"width=1010,height=500,opener\");\n};\n\nakeeba_onedrivebusiness_oauth_callback = function (data)\n{\n // Update the tokens\n document.getElementById(\"var[engine.postproc.onedrivebusiness.access_token]\").value = data.access_token;\n document.getElementById(\"var[engine.postproc.onedrivebusiness.refresh_token]\").value = data.refresh_token;\n\n // Close the window\n myWindow = window.open(\"\", \"akeeba_onedrivebusiness_window\");\n myWindow.close();\n};\n\nakeeba_onedrivebusiness_refreshdrives = function (params)\n{\n if (document.getElementById('var[akeeba.advanced.postproc_engine]').value !== 'onedrivebusiness')\n {\n return;\n }\n\n params = params || {};\n\n console.log(params);\n\n if (typeof params[\"engine.postproc.onedrivebusiness.drive\"] === \"undefined\")\n {\n params[\"engine.postproc.onedrivebusiness.drive\"] = {\n \"default\": document.getElementById(\"var[engine.postproc.googledrive.team_drive]\").value\n };\n }\n\n akeeba.System.AjaxURL = akeeba.Configuration.URLs[\"dpecustomapi\"];\n\n var data = {\n engine: \"onedrivebusiness\",\n method: \"getDrives\",\n params: {\n \"engine.postproc.onedrivebusiness.access_token\": document.getElementById(\n \"var[engine.postproc.googledrive.access_token]\").value,\n \"engine.postproc.onedrivebusiness.refresh_token\": document.getElementById(\n \"var[engine.postproc.googledrive.refresh_token]\").value\n }\n };\n\n akeeba.System.doAjax(\n data,\n function (res)\n {\n if (!res?.list?.length)\n {\n alert(\"ERROR: Could not retrieve list of OneDrive Drives.\");\n\n return;\n }\n\n var dropDown = document.getElementById(\"var[engine.postproc.onedrivebusiness.drive]\");\n dropDown.innerHTML = \"\";\n\n res.list.forEach(item => {\n var elOption = document.createElement(\"option\");\n elOption.value = item[0];\n elOption.text = item[1];\n\n if (params[\"engine.postproc.onedrivebusiness.drive\"][\"default\"] === elOption.value)\n {\n elOption.selected = true;\n }\n\n dropDown.appendChild(elOption);\n });\n }, function (errorMessage)\n {\n alert(\"ERROR: Could not retrieve list of OneDrive Drives. Error: \" + \"\\n\" + errorMessage);\n }, false, 15000\n );\n};\n\nakconfig_googledrive_openoauth = function ()\n{\n var url = akeeba.Configuration.URLs.dpeauthopen;\n\n if (url.indexOf(\"?\") == -1)\n {\n url = url + \"?\";\n }\n else\n {\n url = url + \"&\";\n }\n\n window.open(url + \"engine=googledrive\", \"akeeba_googledrive_window\", \"width=1010,height=500,opener\");\n};\n\nakeeba_googledrive_oauth_callback = function (data)\n{\n // Update the tokens\n document.getElementById(\"var[engine.postproc.googledrive.access_token]\").value = data.access_token;\n document.getElementById(\"var[engine.postproc.googledrive.refresh_token]\").value = data.refresh_token;\n\n // Close the window\n myWindow = window.open(\"\", \"akeeba_googledrive_window\");\n myWindow.close();\n\n // Refresh the list of drives\n akeeba_googledrive_refreshdrives();\n};\n\nakeeba_googledrive_refreshdrives = function (params)\n{\n if (document.getElementById('var[akeeba.advanced.postproc_engine]').value !== 'googledrive')\n {\n return;\n }\n\n params = params || {};\n\n if (typeof params[\"engine.postproc.googledrive.team_drive\"] === \"undefined\")\n {\n params[\"engine.postproc.googledrive.team_drive\"] = {\n \"default\": document.getElementById(\"var[engine.postproc.googledrive.team_drive]\").value\n };\n }\n\n akeeba.System.AjaxURL = akeeba.Configuration.URLs[\"dpecustomapi\"];\n\n var data = {\n engine: \"googledrive\",\n method: \"getDrives\",\n params: {\n \"engine.postproc.googledrive.access_token\": document.getElementById(\n \"var[engine.postproc.googledrive.access_token]\").value,\n \"engine.postproc.googledrive.refresh_token\": document.getElementById(\n \"var[engine.postproc.googledrive.refresh_token]\").value\n }\n };\n\n akeeba.System.doAjax(\n data,\n function (res)\n {\n if (!res?.list?.length) {\n alert(\"ERROR: Could not retrieve list of Google Drives.\");\n\n return;\n }\n\n var dropDown = document.getElementById(\"var[engine.postproc.googledrive.team_drive]\");\n dropDown.innerHTML = \"\";\n\n res.list.forEach(item => {\n var elOption = document.createElement(\"option\");\n elOption.value = item[0];\n elOption.text = item[1];\n\n if (params[\"engine.postproc.googledrive.team_drive\"][\"default\"] === elOption.value) {\n elOption.selected = true;\n }\n\n dropDown.appendChild(elOption);\n });\n }, function (errorMessage)\n {\n alert(\"ERROR: Could not retrieve list of Google Drives. Error: \" + \"\\n\" + errorMessage);\n }, false, 15000\n );\n};\n\nakconfig_box_openoauth = function ()\n{\n var url = akeeba.Configuration.URLs.dpeauthopen;\n\n if (url.indexOf(\"?\") == -1)\n {\n url = url + \"?\";\n }\n else\n {\n url = url + \"&\";\n }\n\n window.open(url + \"engine=box\", \"akeeba_box_window\", \"width=1010,height=500,opener\");\n};\n\nakconfig_box_oauth_callback = function (data)\n{\n // Update the tokens\n document.getElementById(\"var[engine.postproc.box.access_token]\").value = data.access_token;\n document.getElementById(\"var[engine.postproc.box.refresh_token]\").value = data.refresh_token;\n\n // Close the window\n myWindow = window.open(\"\", \"akeeba_box_window\");\n myWindow.close();\n};\n\nfunction akconfig_onedriveapp_openoauth()\n{\n var url = akeebabackup.Configuration.URLs.dpeauthopen;\n\n if (url.indexOf(\"?\") == -1)\n {\n url = url + \"?\";\n }\n else\n {\n url = url + \"&\";\n }\n\n window.open(url + \"engine=onedriveapp\", \"akeeba_onedriveapp_window\", \"width=1010,height=500,opener\");\n}\n\nfunction akeeba_onedriveapp_oauth_callback(data)\n{\n // Update the tokens\n document.getElementById(\"var[engine.postproc.onedriveapp.access_token]\").value = data.access_token;\n document.getElementById(\"var[engine.postproc.onedriveapp.refresh_token]\").value = data.refresh_token;\n\n // Close the window\n var myWindow = window.open(\"\", \"akeeba_onedriveapp_window\");\n myWindow.close();\n}\n\n// Initialization\nakeeba.System.documentReady(function ()\n{\n // Get the configured URLs\n akeeba.Configuration.URLs = akeeba.System.getOptions(\"akeeba.Configuration.URLs\", {});\n\n // Configuration page: we will be doing AJAX calls to the Data Processing Engine Custom API URL\n if (typeof akeeba.Configuration.URLs[\"dpecustomapi\"] !== \"undefined\")\n {\n akeeba.System.params.AjaxURL = akeeba.Configuration.URLs[\"dpecustomapi\"];\n }\n\n /**\n * The rest of the code only applies to the Configuration GUI.\n *\n * Therefore, if we have no Configuration GUI data (e.g. this file was included from a different view) we have to\n * return without trying to do anything else.\n */\n var guiData = akeeba.System.getOptions(\"akeeba.Configuration.GUIData\", null);\n\n if (guiData === null)\n {\n return;\n }\n\n akeeba.Configuration.parseConfigData(guiData, function ()\n {\n // Enable popovers. Must obviously run after we have the UI set up.\n akeeba.Configuration.enablePopoverFor(document.querySelectorAll(\"[rel=\\\"popover\\\"]\"));\n\n // Capture database driver change event\n var elDbDriver = document.getElementById(\"var[akeeba.platform.dbdriver]\");\n akeeba.System.addEventListener(elDbDriver, \"change\", akeeba.Configuration.onChangeDbDriver);\n akeeba.System.triggerEvent(elDbDriver, \"change\");\n\n // Work around browsers now ignoring autocomplete=off\n setTimeout(akeeba.Configuration.restoreDefaultPasswords, 1000);\n\n // Reload drive lists if applicable\n akeeba_googledrive_refreshdrives(akeeba.Configuration.engines.postproc.googledrive.parameters);\n akeeba_onedrivebusiness_refreshdrives(akeeba.Configuration.engines.postproc.onedrivebusiness.parameters);\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]