var JetBackup = function(options) { this.init(options); }; JetBackup.prototype = { _lang: '', _mfa: {}, _lang_default: 'en_US', _path: { api: './admin-ajax.php?action=jetbackup_api', download: './admin.php?page=jetbackup', media: '', location: '', lang_cdn_release: '_e0', // _e0 is the latest lang_cdn_project: '_a7213103036961125313e9d0a2cf', lang_cdn: 'https://delivery.localazy.com' }, _account: {}, _language_ns: [], _language_cdn: false, _info: {}, _lib_files: [ "/libraries/moment-with-locales.js", //"/libraries/bootstrap/js/bootstrap.bundle.min.js", "/libraries/angularjs/1.8.2/angular.min.js", "/libraries/angularjs/1.8.2/angular-aria.min.js", "/libraries/angularjs/1.8.2/angular-route.min.js", "/libraries/angularjs/1.8.2/angular-animate.min.js", "/libraries/angularjs/1.8.2/angular-sanitize.min.js", "/libraries/angularjs-material/1.1.6/angular-material.min.js", "/libraries/angular-moment-picker/angular-moment-picker.min.js", "/libraries/angularjs-i18next/i18next.js", "/libraries/angularjs-i18next/i18nextHttpBackend.js", "/libraries/angularjs-i18next/i18nextSprintfPostProcessor.js", "/libraries/angularjs-i18next/ng-i18next.js", "/libraries/ui-bootstrap/ui-bootstrap-tpls-2.5.0.min.js", "/libraries/angular-loading-bar/loading-bar.min.js", "/libraries/requirejs/requirejs.min.js", ], _loadLang: function(callback) { if(callback === undefined) callback = function() {}; if(this._language_cdn) this._loadLangCDN(callback); else this._loadLangLocal(callback); }, _loadLangCDN: function (callback) { if(callback === undefined) callback = function() {}; var self = this; var oReq = new XMLHttpRequest(); oReq.addEventListener("load", function () { if(this.status !== 200) { self._loadLangLocal(callback); return; } var files = JSON.parse(this.responseText).files; var cdn_files_map = {}; for(var key in files) { var filename = files[key].file; // remove the .json suffix filename = filename.substring(-5, filename.length-5); cdn_files_map[filename] = {key: key, languages:[]}; var locales = files[key].locales; for(var locale in locales) { var language = locales[locale].language; if(locales[locale].region) language += '_' + locales[locale].region; language = language.replace('-', '_').toLowerCase(); cdn_files_map[filename].languages[language] = locales[locale].uri; } } self._loadLangLocal(callback, cdn_files_map); }); oReq.open("GET", self._path.lang_cdn + '/' + self._path.lang_cdn_project + '/' + self._path.lang_cdn_release + '.v2.json'); oReq.send(); }, _loadLangLocal: function(callback, cdn_files_map) { if(callback === undefined) callback = function() {}; if(cdn_files_map === undefined) cdn_files_map = {}; if (!window.i18next) return; var self = this; window.i18next .use(window.i18nextHttpBackend) .use(window.i18nextSprintfPostProcessor); var currentLang = this._lang ? this._lang : 'en_US'; var fallbackLng = []; if(currentLang !== 'en_US') fallbackLng.push(currentLang); fallbackLng.push('en_US'); window.i18next.init({ debug: false, lng: currentLang, fallbackLng: fallbackLng, backend: { loadPath: function (lang, ns) { lang = lang[0]; ns = ns[0]; var version = (self._info.development ? self._randomHash(12) : self._info.version); // if the language isn't supported or the file not found in our CDN, try to use the local language files if(cdn_files_map[ns] === undefined || cdn_files_map[ns].languages[lang.toLowerCase()] === undefined) return self._path.media + '/lang/' + lang + '/{{ns}}.json?v=' + version; return self._path.lang_cdn + cdn_files_map[ns].languages[lang.toLowerCase()] + '?v=' + version; } }, ns: self._language_ns, defaultNS: 'common', fallbackNS: 'common', keySeparator: "|.|", nsSeparator: "|:|", pluralSeparator: "|_|", contextSeparator: "|_|", useCookie: false, useLocalStorage: false, load: 'currentOnly', postProcess: [ 'sprintf' ] }, function (err, t) { callback(); }); }, _api: function(func, callback) { var oReq = new XMLHttpRequest(); oReq.addEventListener("load", function () { if(this.status != 200 || /^ 15) self._addLoaderError(message); setTimeout(function () { self._loadLib(); }, 2000); throw Error(message); } var error = document.getElementById('JetBackupLoadingError'); if(error !== null) error.innerHTML = ''; self._info = response.data.info; self._info.version = response.system.version; self._account = response.data.account; self._configuration = response.data.configuration; self._integration = response.data.integration; self._mfa = response.data.mfa; self._language_ns = response.data.language_ns; self._language_cdn = response.data.language_cdn; window.PAGE.info = self._info; window.PAGE.system = response.system; window.PAGE.account = self._account; window.PAGE.configuration = self._configuration; window.PAGE.integration = self._integration; window.PAGE.mfa = self._mfa; window.PAGE.license = response.data.license; window.PAGE.nonce = response.system.nonce; for (var j=0; self._lib_files.length>j; j++) { self._loadJS(self._lib_files[j], function () { if (++self._loadLibCount >= self._lib_files.length) self._loadMain(); }); } }); }, _loadJS: function(file, onload) { if(onload === undefined || typeof onload != 'function') onload = function () {}; var script = document.createElement('script'); script.src = this._path.media + file + '?v=' + (this._info.development ? this._randomHash(12) : this._info.version); script.type = 'text/javascript'; script.async = false; script.addEventListener('load', onload); document.head.appendChild(script); }, _addLoaderError: function(message) { var error = document.getElementById('JetBackupLoadingError'); if(error === null) return false; if(!message) return true; error.innerHTML = '
";
html += "";
html += "
";
html += "";
html += "