diff --git a/build/media/mod_sampledata/js/sampledata-process.js b/build/media/mod_sampledata/js/sampledata-process.js deleted file mode 100644 index 92ed9e00ba9fc..0000000000000 --- a/build/media/mod_sampledata/js/sampledata-process.js +++ /dev/null @@ -1,141 +0,0 @@ -/** - * @copyright Copyright (C) 2005 - 2018 Open Source Matters, Inc. All rights reserved. - * @license GNU General Public License version 2 or later; see LICENSE.txt - */ - -Joomla = window.Joomla || {}; - -!(function (Joomla, document) { - 'use strict'; - - var inProgress = false; - - Joomla.sampledataAjax = function(type, steps, step) { - // Get variables - var baseUrl = 'index.php?option=com_ajax&format=json&group=sampledata'; - var options = Joomla.getOptions('sample-data'); - - // Create list - var list = document.createElement('li'); - list.classList.add('sampledata-steps-' + type + '-' + step); - - // Create paragraph - var para = document.createElement('p'); - para.classList.add('loader-image'); - para.classList.add('text-center'); - - // Create image - var img = document.createElement('img'); - img.setAttribute('src', options.icon); - img.setAttribute('width', 30); - img.setAttribute('height', 30); - - // Append everything - para.appendChild(img); - list.appendChild(para); - document.querySelector('.sampledata-progress-' + type + ' ul').appendChild(list); - - Joomla.request({ - url: baseUrl + '&type=' + type + '&plugin=SampledataApplyStep' + step + '&step=' + step, - method: 'GET', - perform: true, - onSuccess: function(response, xhr) { - var response = JSON.parse(response); - // Remove loader image - var loader = list.querySelector('.loader-image'); - loader.parentNode.removeChild(loader); - - if (response.success && response.data && response.data.length > 0) { - var success, value, progressClass; - var progress = document.querySelector('.sampledata-progress-' + type + ' .progress-bar'); - - // Display all messages that we got - for (var i = 0, l = response.data.length; i < l; i++) { - value = response.data[i]; - - if (value === null) { - continue; - } - - success = value.success; - progressClass = success ? 'bg-success' : 'bg-danger'; - - // Display success alert - if (success) { - Joomla.renderMessages({success: [value.message]}, '.sampledata-steps-' + type + '-' + step); - } else { - Joomla.renderMessages({error: [value.message]}, '.sampledata-steps-' + type + '-' + step); - } - } - - // Update progress - progress.innerText = step + '/' + steps; - progress.style.width = (step/steps) * 100 + '%'; - progress.classList.add(progressClass); - - // Move on next step - if (success && (step <= steps)) { - step++; - if (step <= steps) { - Joomla.sampledataAjax(type, steps, step); - } - } - - } else { - // Display error alert - Joomla.renderMessages({'error': [Joomla.JText._('MOD_SAMPLEDATA_INVALID_RESPONSE')]}, '.sampledata-steps-' + type + '-' + step); - - inProgress = false; - } - }, - onError: function(xhr) { - alert('Something went wrong! Please close and reopen the browser and try again!'); - } - }); - }; - - Joomla.sampledataApply = function(el) { - var type = el.getAttribute('data-type'); - var steps = el.getAttribute('data-steps'); - - // Check whether the work in progress or we already processed with current item - if (inProgress) { - return; - } - - if (el.getAttribute('data-processed')) { - alert(Joomla.JText._('MOD_SAMPLEDATA_ITEM_ALREADY_PROCESSED')); - return; - } - - // Make sure that use run this not by random clicking on the page links - if (!confirm(Joomla.JText._('MOD_SAMPLEDATA_CONFIRM_START'))) { - return false; - } - - // Turn on the progress container - var progress = document.querySelectorAll('.sampledata-progress-' + type); - for (var i = 0, l = progress.length; i < l; i++) { - progress[i].classList.remove('d-none'); - } - - el.getAttribute('data-processed', true); - - inProgress = true; - Joomla.sampledataAjax(type, steps, 1); - return false; - }; - - document.addEventListener('DOMContentLoaded', function() { - var sampleDataWrapper = document.getElementById('sample-data-wrapper'); - if (sampleDataWrapper) { - var links = sampleDataWrapper.querySelectorAll('.apply-sample-data'); - for (var i = 0, l = links.length; i < l; i++) { - links[i].addEventListener('click', function(e) { - Joomla.sampledataApply(e.target); - }); - } - } - }); - -})(Joomla, document); diff --git a/build/media_src/mod_sampledata/js/sampledata-process.es6.js b/build/media_src/mod_sampledata/js/sampledata-process.es6.js new file mode 100644 index 0000000000000..0cab3b88058f2 --- /dev/null +++ b/build/media_src/mod_sampledata/js/sampledata-process.es6.js @@ -0,0 +1,149 @@ +/** + * @copyright Copyright (C) 2005 - 2018 Open Source Matters, Inc. All rights reserved. + * @license GNU General Public License version 2 or later; see LICENSE.txt + */ +((window, document, Joomla) => { + 'use strict'; + + // eslint-disable-next-line no-unused-expressions,func-names + Joomla.SampleData = { + inProgress: false, + }; + + Joomla.sampledataAjax = (type, steps, step) => { + // Get variables + const baseUrl = 'index.php?option=com_ajax&format=json&group=sampledata'; + const options = Joomla.getOptions('sample-data'); + + // Create list + const list = document.createElement('li'); + list.classList.add(`sampledata-steps-${type}-${step}`); + + // Create paragraph + const para = document.createElement('p'); + para.classList.add('loader-image'); + para.classList.add('text-center'); + + // Create image + const img = document.createElement('img'); + img.setAttribute('src', options.icon); + img.setAttribute('width', 30); + img.setAttribute('height', 30); + + // Append everything + para.appendChild(img); + list.appendChild(para); + document.querySelector(`.sampledata-progress-${type} ul`).appendChild(list); + + Joomla.request({ + url: `${baseUrl}&type=${type}&plugin=SampledataApplyStep${step}&step=${step}`, + method: 'GET', + perform: true, + onSuccess: (resp) => { + const response = JSON.parse(resp); + let progressClass = ''; + let success; + + // Remove loader image + const loader = list.querySelector('.loader-image'); + loader.parentNode.removeChild(loader); + + if (response.success && response.data && response.data.length > 0) { + const progress = document.querySelector(`.sampledata-progress-${type} .progress-bar`); + + // Display all messages that we got + response.data.forEach((value) => { + if (value === null) { + return; + } + + // eslint-disable-next-line prefer-destructuring + success = value.success; + progressClass = success ? 'bg-success' : 'bg-danger'; + + // Display success alert + if (success) { + Joomla.renderMessages({ success: [value.message] }, `.sampledata-steps-${type}-${step}`); + } else { + Joomla.renderMessages({ error: [value.message] }, `.sampledata-steps-${type}-${step}`); + } + }); + + // Update progress + progress.innerText = `${step}/${steps}`; + progress.style.width = `${(step / steps) * 100}%`; + progress.classList.add(progressClass); + + // Move on next step + if (success && (step <= steps)) { + const stepNew = step + 1; + if (stepNew <= steps) { + Joomla.sampledataAjax(type, steps, stepNew); + } + } + } else { + // Display error alert + Joomla.renderMessages({ error: [Joomla.JText._('MOD_SAMPLEDATA_INVALID_RESPONSE')] }, `.sampledata-steps-${type}-${step}`); + + Joomla.SampleData.inProgress = false; + } + }, + onError: () => { + alert('Something went wrong! Please close and reopen the browser and try again!'); + }, + }); + }; + + Joomla.sampledataApply = (element) => { + const type = element.getAttribute('data-type'); + const steps = element.getAttribute('data-steps'); + + // Check whether the work in progress or we already processed with current item + if (Joomla.SampleData.inProgress) { + return; + } + + if (element.getAttribute('data-processed')) { + alert(Joomla.JText._('MOD_SAMPLEDATA_ITEM_ALREADY_PROCESSED')); + return; + } + + // Make sure that use run this not by random clicking on the page links + // @todo use the CE Modal here + if (!window.confirm(Joomla.JText._('MOD_SAMPLEDATA_CONFIRM_START'))) { + // eslint-disable-next-line consistent-return + return false; + } + + // Turn on the progress container + const progressElements = [].slice.call(document.querySelectorAll(`.sampledata-progress-${type}`)); + + progressElements.forEach((progressElement) => { + progressElement.classList.remove('d-none'); + }); + + element.getAttribute('data-processed', true); + + Joomla.SampleData.inProgress = true; + Joomla.sampledataAjax(type, steps, 1); + + // eslint-disable-next-line consistent-return + return false; + }; + + const onBoot = () => { + const sampleDataWrapper = document.getElementById('sample-data-wrapper'); + if (sampleDataWrapper) { + const links = [].slice.call(sampleDataWrapper.querySelectorAll('.apply-sample-data')); + links.forEach((link) => { + link.addEventListener('click', event => Joomla.sampledataApply(event.target)); + }); + } + + // Cleanup + document.removeEventListener('DOMContentLoaded', onBoot); + }; + + // Initialise + document.addEventListener('DOMContentLoaded', onBoot); +})(window, document, window.Joomla);