Files
idpan.poznan.pl/components/com_jce/editor/libraries/js/window.min.js
2026-02-08 21:16:11 +01:00

171 lines
5.4 KiB
JavaScript

/**
* @package JCE
* @copyright Copyright (c) 2009-2022 Ryan Demmer. All rights reserved.
* @license GNU/GPL 2 or later - http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
* JCE is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
*/
/* global jQuery */
(function ($) {
var tinymce = {
settings: {
language: "en",
document_base_url: ""
},
i18n: {},
/**
* Adds a language pack
*
* @method addI18n
* @param {String} p Prefix for the language items. For example en.myplugin
* @param {Object} o Name/Value collection with items to add to the language group.
* @source TinyMCE EditorManager.js
* @copyright Copyright 2009, Moxiecode Systems AB
* @licence GNU / LGPL 2 - http://www.gnu.org/copyleft/lesser.html
*
* Modified for JQuery
*/
addI18n: function (p, o) {
var i18n = this.i18n;
if ($.type(p) == 'string') {
$.each(o, function (k, o) {
i18n[p + '.' + k] = o;
});
} else {
$.each(p, function (lc, o) {
$.each(o, function (g, o) {
$.each(o, function (k, o) {
if (g == 'common') {
i18n[lc + '.' + k] = o;
} else {
i18n[lc + '.' + g + '.' + k] = o;
}
});
});
});
}
},
getLang: function (n, dv) {
return this.i18n[this.settings.language + '.' + n] || dv;
},
convertURL: function (src) {
return src;
},
documentBaseURI: {
toAbsolute: function (url) {
if (/:\/\//.test(url)) {
return url;
}
// remove leading slash
url = url.replace(/^\//, '');
var root = tinymce.settings.document_base_url;
// remove trailing slash
root = root.replace(/\/$/, '');
// join and return
return root + '/' + url;
},
toRelative: function (url) {
if (/:\/\//.test(url)) {
var base = tinymce.settings.document_base_url;
return url.replace(new RegExp('^' + base), '');
}
return url;
}
},
windowManager: {
params: {
window: window.parent,
callback: function (selected, data) {
var win = window.parent;
var value = data[0].url;
var elm = win.document.getElementById(tinymce.settings.element);
// Joomla 3.5.x / 4.x Media Field
var $wrapper = win.jQuery(elm).parents('.field-media-wrapper'),
inst = $wrapper.data('fieldMedia') || $wrapper.get(0);
if (inst && inst.setValue) {
return inst.setValue(value);
}
win.jQuery(elm).val(value).trigger('change');
}
},
// Open a modal window . This is only used from inside an existing modal, eg: Help or Image Editor
open: function (args, params) {
var $ = jQuery;
args.url += '&' + tinymce.settings.token + '=1&standalone=1';
var div = $('<div class="uk-inline-help uk-modal" />');
var html = '' +
'<div class="uk-modal-dialog uk-modal-dialog-blank">' +
' <button class="uk-modal-close uk-close"></button>' +
' <div class="uk-modal-header"><h3><strong>' + (args.title || "") + '</strong></h3></div>' +
' <iframe src="' + args.url + '" frameborder="0"></iframe>' +
'</div>';
$(div).html(html).find('.uk-close').on('click', function (e) {
e.preventDefault();
$(div).removeClass('uk-open').delay(150).remove();
});
$(div).appendTo('body').addClass('uk-open').show();
// store params
tinymce.windowManager.params = params;
},
// Close a modal window opened using a Joomla Modal method.
close: function () {
var win = window.parent;
if (win.Joomla && win.Joomla.Modal) {
return win.Joomla.Modal.getCurrent().close();
}
// legacy modal
if (win.jModalClose) {
win.jModalClose();
}
if (win.SqueezeBox) {
win.SqueezeBox.close();
}
// Joomla 3.5.x / 4.x Media Field
win.jQuery('.modal.in [data-dismiss]').trigger('click');
}
},
getParam: function (n, dv) {
var v = this.settings[n];
return (typeof v !== "undefined") ? v : dv;
}
};
window.tinyMCE = window.tinymce = tinymce;
})(jQuery);