Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[4.0] Correcting module xtd wrong js #27499

Merged
merged 15 commits into from
Jan 16, 2020
82 changes: 44 additions & 38 deletions build/media_source/com_modules/js/admin-modules-modal.es6.js
Original file line number Diff line number Diff line change
@@ -1,45 +1,51 @@
/**
* @copyright Copyright (C) 2005 - 2019 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
Joomla = window.Joomla || {};
* @copyright Copyright (C) 2005 - 2020 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/

((document) => {
document.addEventListener('DOMContentLoaded', () => {
'use strict';

document.addEventListener('DOMContentLoaded', () => {
window.jSelectModuleType = () => {
const elements = document.querySelectorAll('#moduleDashboardAddModal .modal-footer .btn');
// Get the elements
const modulesLinks = [].slice.call(document.querySelectorAll('.js-module-insert'));
const positionsLinks = [].slice.call(document.querySelectorAll('.js-position-insert'));

// Assign listener for click event (for single module id insertion)
modulesLinks.forEach((element) => {
element.addEventListener('click', (event) => {
event.preventDefault();
const modid = event.target.getAttribute('data-module');
const editor = event.target.getAttribute('data-editor');

// Use the API
if (window.parent.Joomla && window.parent.Joomla.editors
&& window.parent.Joomla.editors.instances
&& Object.prototype.hasOwnProperty.call(window.parent.Joomla.editors.instances, editor)) {
window.parent.Joomla.editors.instances[editor].replaceSelection(`{loadmoduleid ${modid}}`);
}

if (window.parent.Joomla.Modal) {
window.parent.Joomla.Modal.getCurrent().close();
}
});
});

// Assign listener for click event (for position insertion)
positionsLinks.forEach((element) => {
element.addEventListener('click', (event) => {
event.preventDefault();
const position = event.target.getAttribute('data-position');
const editor = event.target.getAttribute('data-editor');

// Use the API
if (window.Joomla && window.Joomla.editors && Joomla.editors.instances
&& Object.prototype.hasOwnProperty.call(window.parent.Joomla.editors.instances, editor)) {
window.parent.Joomla.editors.instances[editor].replaceSelection(`{loadposition ${position}}`);
}

if (elements.length) {
elements.forEach((button) => {
button.classList.remove('hidden');
});
if (window.parent.Joomla.Modal) {
window.parent.Joomla.Modal.getCurrent().close();
}
};

const buttons = document.querySelectorAll('#moduleDashboardAddModal .modal-footer .btn');

if (buttons.length) {
buttons.forEach((button) => {
button.addEventListener('click', (event) => {
let elem = event.currentTarget;

// There is some bug with events in iframe where currentTarget is "null"
// => prevent this here by bubble up
if (!elem) {
elem = event.target;
}

const clicktarget = elem.getAttribute('data-target');

if (clicktarget) {
const iframe = document.querySelector('#moduleDashboardAddModal iframe');
const content = iframe.contentDocument || iframe.contentWindow.document;
content.querySelector(clicktarget).click();
}
});
});
}
});
});
})(document);
});