Current File : /home/pacjaorg/wpt.pacja.org/km/media/plg_installer_webinstaller/js/client-es5.js |
(function () {
'use strict';
/**
* @copyright (C) 2018 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
if (!Joomla) {
throw new Error('Joomla API is not properly initialised');
}
var allowList = {
button: ['type'],
input: ['type', 'name', 'placeholder', 'inputmode'],
select: ['name'],
option: ['value', 'selected']
};
var webInstallerOptions = {
view: 'dashboard',
id: 0,
ordering: '',
version: 'current',
list: 0,
options: Joomla.getOptions('plg_installer_webinstaller', {})
};
var instance;
var WebInstaller = /*#__PURE__*/function () {
function WebInstaller() {}
var _proto = WebInstaller.prototype;
_proto.initialise = function initialise() {
var _this = this;
webInstallerOptions.loaded = 1;
var cancelButton = document.getElementById('uploadform-web-cancel');
cancelButton.addEventListener('click', function () {
document.getElementById('uploadform-web').classList.add('hidden');
if (webInstallerOptions.list && document.querySelector('.list-view')) {
document.querySelector('.list-view').click();
}
});
var installButton = document.getElementById('uploadform-web-install');
installButton.addEventListener('click', function () {
if (webInstallerOptions.options.installFrom === 4) {
_this.submitButtonUrl();
} else {
_this.submitButtonWeb();
}
});
this.loadweb(webInstallerOptions.options.base_url + "index.php?format=json&option=com_apps&view=dashboard");
this.clickforlinks();
};
_proto.loadweb = function loadweb(url) {
var _this2 = this;
if (!url) {
return false;
}
// eslint-disable-next-line prefer-regex-literals
var pattern1 = new RegExp(webInstallerOptions.options.base_url);
var pattern2 = /^index\.php/;
if (!(pattern1.test(url) || pattern2.test(url))) {
window.open(url, '_blank');
return false;
}
var requestUrl = url + "&product=" + webInstallerOptions.options.product + "&release=" + webInstallerOptions.options.release + "&dev_level=" + webInstallerOptions.options.dev_level + "&list=" + (webInstallerOptions.list ? 'list' : 'grid') + "&lang=" + webInstallerOptions.options.language;
var orderingSelect = document.getElementById('com-apps-ordering');
var versionSelect = document.getElementById('com-apps-filter-joomla-version');
if (webInstallerOptions.ordering !== '' && orderingSelect && orderingSelect.value) {
webInstallerOptions.ordering = orderingSelect.value;
requestUrl += "&ordering=" + webInstallerOptions.ordering;
}
if (webInstallerOptions.version !== '' && versionSelect && versionSelect.value) {
webInstallerOptions.version = versionSelect.value;
requestUrl += "&filter_version=" + webInstallerOptions.version;
}
WebInstaller.showLoadingLayer();
new Promise(function (resolve, reject) {
Joomla.request({
url: requestUrl,
onSuccess: function onSuccess(resp) {
var response;
try {
response = JSON.parse(resp);
} catch (error) {
throw new Error('Failed to parse JSON');
}
if (document.getElementById('web-loader')) {
document.getElementById('web-loader').classList.add('hidden');
}
var jedContainer = document.getElementById('jed-container');
jedContainer.innerHTML = Joomla.sanitizeHtml(response.data.html, allowList);
document.getElementById('com-apps-searchbox').addEventListener('keypress', function (_ref) {
var which = _ref.which;
if (which === 13) {
_this2.initiateSearch();
}
});
document.getElementById('search-extensions').addEventListener('click', function () {
_this2.initiateSearch();
});
document.getElementById('search-reset').addEventListener('click', function () {
var searchBox = document.getElementById('com-apps-searchbox');
searchBox.value = '';
_this2.initiateSearch();
document.getElementById('search-reset').setAttribute('disabled', 'disabled');
});
if (document.getElementById('com-apps-searchbox').value === '') {
document.getElementById('search-reset').setAttribute('disabled', 'disabled');
}
document.getElementById('search-reset').innerHTML = Joomla.sanitizeHtml(Joomla.Text._('JSEARCH_FILTER_CLEAR'));
// eslint-disable-next-line no-shadow
var orderingSelect = document.getElementById('com-apps-ordering');
// eslint-disable-next-line no-shadow
var versionSelect = document.getElementById('com-apps-filter-joomla-version');
if (orderingSelect) {
orderingSelect.addEventListener('change', function () {
var index = orderingSelect.selectedIndex;
webInstallerOptions.ordering = orderingSelect.options[index].value;
_this2.installfromwebajaxsubmit();
});
}
if (versionSelect) {
versionSelect.addEventListener('change', function () {
var index = versionSelect.selectedIndex;
webInstallerOptions.version = versionSelect.options[index].value;
_this2.installfromwebajaxsubmit();
});
}
if (webInstallerOptions.options.installfrom_url !== '') {
WebInstaller.installfromweb(webInstallerOptions.options.installfrom_url);
}
resolve();
},
onError: function onError(request) {
var errorContainer = document.getElementById('web-loader-error');
var loaderContainer = document.getElementById('web-loader');
if (request.responseText && errorContainer) {
errorContainer.innerHTML = Joomla.sanitizeHtml(request.responseText);
}
if (loaderContainer) {
loaderContainer.classList.add('hidden');
errorContainer.classList.remove('hidden');
}
Joomla.renderMessages({
danger: [Joomla.Text._('PLG_INSTALLER_WEBINSTALLER_INSTALL_WEB_LOADING_ERROR')]
}, '#web-loader-error');
reject();
}
});
}).finally(function () {
// Promise has been settled.
// Run the following whether or not it was a success.
var installAtField = document.getElementById('joomlaapsinstallatinput');
if (installAtField) {
installAtField.value = webInstallerOptions.options.installat_url;
}
_this2.clickforlinks();
WebInstaller.clicker();
if (webInstallerOptions.view !== 'extension') {
[].slice.call(document.querySelectorAll('div.load-extension')).forEach(function (element) {
element.addEventListener('click', function (event) {
event.preventDefault();
_this2.processLinkClick(element.getAttribute('data-url'));
});
element.setAttribute('href', '#');
});
}
if (webInstallerOptions.view === 'extension') {
var installExtensionButton = document.getElementById('install-extension');
var installExtensionFromExternalButton = document.getElementById('install-extension-from-external');
if (installExtensionButton) {
installExtensionButton.addEventListener('click', function () {
WebInstaller.installfromweb(installExtensionButton.getAttribute('data-downloadurl'), installExtensionButton.getAttribute('data-name'));
document.getElementById('uploadform-web-install').scrollIntoView({
behavior: 'smooth',
block: 'start'
});
});
}
if (installExtensionFromExternalButton) {
installExtensionFromExternalButton.addEventListener('click', function () {
var redirectUrl = installExtensionFromExternalButton.getAttribute('data-downloadurl');
var redirectConfirm = window.confirm(Joomla.Text._('PLG_INSTALLER_WEBINSTALLER_REDIRECT_TO_EXTERNAL_SITE_TO_INSTALL').replace('[SITEURL]', redirectUrl));
if (redirectConfirm !== true) {
return;
}
document.getElementById('adminForm').setAttribute('action', redirectUrl);
document.querySelector('input[name=task]').setAttribute('disabled', true);
document.querySelector('input[name=install_directory]').setAttribute('disabled', true);
document.querySelector('input[name=install_url]').setAttribute('disabled', true);
document.querySelector('input[name=installtype]').setAttribute('disabled', true);
document.querySelector('input[name=filter_search]').setAttribute('disabled', true);
document.getElementById('adminForm').submit();
});
}
}
if (webInstallerOptions.list && document.querySelector('.list-view')) {
document.querySelector('.list-view').click();
}
WebInstaller.hideLoadingLayer();
});
return true;
};
_proto.clickforlinks = function clickforlinks() {
var _this3 = this;
[].slice.call(document.querySelectorAll('a.transcode')).forEach(function (element) {
var ajaxurl = element.getAttribute('href');
element.addEventListener('click', function (event) {
event.preventDefault();
_this3.processLinkClick(ajaxurl);
});
element.setAttribute('href', '#');
});
};
_proto.initiateSearch = function initiateSearch() {
document.getElementById('search-reset').removeAttribute('disabled');
webInstallerOptions.view = 'dashboard';
this.installfromwebajaxsubmit();
};
_proto.installfromwebajaxsubmit = function installfromwebajaxsubmit() {
var tail = "&view=" + webInstallerOptions.view;
if (webInstallerOptions.id) {
tail += "&id=" + webInstallerOptions.id;
}
if (document.getElementById('com-apps-searchbox').value) {
var value = encodeURI(document.getElementById('com-apps-searchbox').value.toLowerCase().replace(/ +/g, '_').replace(/[^a-z0-9-_]/g, '').trim());
tail += "&filter_search=" + value;
}
var orderingSelect = document.getElementById('com-apps-ordering');
var versionSelect = document.getElementById('com-apps-filter-joomla-version');
if (webInstallerOptions.ordering !== '' && orderingSelect && orderingSelect.value) {
webInstallerOptions.ordering = orderingSelect.value;
}
if (webInstallerOptions.ordering) {
tail += "&ordering=" + webInstallerOptions.ordering;
}
if (webInstallerOptions.version !== '' && versionSelect && versionSelect.value) {
webInstallerOptions.version = versionSelect.value;
}
if (webInstallerOptions.version) {
tail += "&filter_version=" + webInstallerOptions.version;
}
this.loadweb(webInstallerOptions.options.base_url + "index.php?format=json&option=com_apps" + tail);
};
_proto.processLinkClick = function processLinkClick(url) {
var pattern1 = new RegExp(webInstallerOptions.options.base_url);
var pattern2 = /^index\.php/;
if (pattern1.test(url) || pattern2.test(url)) {
webInstallerOptions.view = url.replace(/^.+[&?]view=(\w+).*$/, '$1');
if (webInstallerOptions.view === 'dashboard') {
webInstallerOptions.id = 0;
} else if (webInstallerOptions.view === 'category') {
webInstallerOptions.id = url.replace(/^.+[&?]id=(\d+).*$/, '$1');
}
this.loadweb(webInstallerOptions.options.base_url + url);
} else {
this.loadweb(url);
}
};
WebInstaller.showLoadingLayer = function showLoadingLayer() {
document.getElementById('web').appendChild(document.createElement('joomla-core-loader'));
};
WebInstaller.hideLoadingLayer = function hideLoadingLayer() {
var spinnerElement = document.querySelector('#web joomla-core-loader');
spinnerElement.parentNode.removeChild(spinnerElement);
};
WebInstaller.clicker = function clicker() {
if (document.querySelector('.grid-view')) {
document.querySelector('.grid-view').addEventListener('click', function () {
webInstallerOptions.list = 0;
document.querySelector('.list-container').classList.add('hidden');
document.querySelector('.grid-container').classList.remove('hidden');
document.getElementById('btn-list-view').classList.remove('active');
document.getElementById('btn-grid-view').classList.remove('active');
});
}
if (document.querySelector('.list-view')) {
document.querySelector('.list-view').addEventListener('click', function () {
webInstallerOptions.list = 1;
document.querySelector('.grid-container').classList.add('hidden');
document.querySelector('.list-container').classList.remove('hidden');
document.getElementById('btn-grid-view').classList.remove('active');
document.getElementById('btn-list-view').classList.add('active');
});
}
}
/**
* @param {string} installUrl
* @param {string} name
* @returns {boolean}
*/;
WebInstaller.installfromweb = function installfromweb(installUrl, name) {
if (name === void 0) {
name = null;
}
if (!installUrl) {
Joomla.renderMessages({
warning: [Joomla.Text._('PLG_INSTALLER_WEBINSTALLER_CANNOT_INSTALL_EXTENSION_IN_PLUGIN')]
});
return false;
}
document.getElementById('install_url').value = installUrl;
document.getElementById('uploadform-web-url').innerText = installUrl;
if (name) {
document.getElementById('uploadform-web-name').innerText = name;
document.getElementById('uploadform-web-name-label').classList.remove('hidden');
} else {
document.getElementById('uploadform-web-name-label').classList.add('hidden');
}
document.getElementById('uploadform-web').classList.remove('hidden');
return true;
}
// eslint-disable-next-line class-methods-use-this
;
_proto.submitButtonUrl = function submitButtonUrl() {
var form = document.getElementById('adminForm');
// do field validation
if (form.install_url.value === '' || form.install_url.value === 'http://' || form.install_url.value === 'https://') {
Joomla.renderMessages({
warning: [Joomla.Text._('COM_INSTALLER_MSG_INSTALL_ENTER_A_URL')]
});
} else {
var loading = document.getElementById('loading');
if (loading) {
loading.classList.remove('hidden');
}
form.installtype.value = 'url';
form.submit();
}
};
_proto.submitButtonWeb = function submitButtonWeb() {
var form = document.getElementById('adminForm');
// do field validation
if (form.install_url.value !== '' || form.install_url.value !== 'http://' || form.install_url.value !== 'https://') {
this.submitButtonUrl();
} else if (form.install_url.value === '') {
Joomla.renderMessages({
warning: [Joomla.apps.options.btntxt]
});
} else {
document.querySelector('#appsloading').classList.remove('hidden');
form.installtype.value = 'web';
form.submit();
}
};
return WebInstaller;
}();
customElements.whenDefined('joomla-tab').then(function () {
var installerTabs = document.getElementById('myTab');
var link = installerTabs.querySelector('button[aria-controls=web]');
// Stop if the IFW tab cannot be found
if (!link) {
return;
}
if (webInstallerOptions.options.installfromon) {
link.click();
}
if (link.hasAttribute('aria-expanded') && link.getAttribute('aria-expanded') === 'true' && !instance) {
instance = new WebInstaller();
instance.initialise();
}
if (webInstallerOptions.options.installfrom_url !== '') {
link.click();
}
link.addEventListener('joomla.tab.shown', function () {
if (!instance) {
instance = new WebInstaller();
instance.initialise();
}
});
});
})();