: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
toggleFullScreenState(windows.length > 0);
getContentWindow: function () {
var ifr = this.getEl().getElementsByTagName('iframe')[0];
return ifr ? ifr.contentWindow : null;
var MessageBox = Window.extend({
init: function (settings) {
msgBox: function (settings) {
var callback = settings.callback || function () {
function createButton(text, status, primary) {
subtype: primary ? 'primary' : '',
e.control.parents()[1].close();
switch (settings.buttons) {
case MessageBox.OK_CANCEL:
createButton('Ok', true, true),
createButton('Cancel', false)
case MessageBox.YES_NO_CANCEL:
createButton('Yes', 1, true),
if (settings.buttons === MessageBox.YES_NO_CANCEL) {
buttons.push(createButton('Cancel', -1));
buttons = [createButton('Ok', true, true)];
onPostRender: function () {
this.aria('describedby', this.items()[0]._id);
onClose: settings.onClose,
}).renderTo(domGlobals.document.body).reflow();
alert: function (settings, callback) {
if (typeof settings === 'string') {
settings = { text: settings };
settings.callback = callback;
return MessageBox.msgBox(settings);
confirm: function (settings, callback) {
if (typeof settings === 'string') {
settings = { text: settings };
settings.callback = callback;
settings.buttons = MessageBox.OK_CANCEL;
return MessageBox.msgBox(settings);
function WindowManagerImpl (editor) {
var open = function (args, params, closeCallback) {
args.title = args.title || ' ';
args.url = args.url || args.file;
args.width = parseInt(args.width || 320, 10);
args.height = parseInt(args.height || 240, 10);
type: args.bodyType || 'form',
if (!args.url && !args.buttons) {
win.find('form')[0].submit();
win.on('close', function () {
win.on('postRender', function () {
this.find('*').each(function (ctrl) {
ctrl.value(args.data[name]);
win.features = args || {};
win.params = params || {};
win = win.renderTo(domGlobals.document.body).reflow();
var alert = function (message, choiceCallback, closeCallback) {
win = MessageBox.alert(message, function () {
win.on('close', function () {
var confirm = function (message, choiceCallback, closeCallback) {
win = MessageBox.confirm(message, function (state) {
win.on('close', function () {
var close = function (window) {
var getParams = function (window) {
var setParams = function (window, params) {
var get = function (editor) {
var renderUI = function (args) {
return Render.renderUI(editor, this, args);
var resizeTo = function (w, h) {
return Resize.resizeTo(editor, w, h);
var resizeBy = function (dw, dh) {
return Resize.resizeBy(editor, dw, dh);
var getNotificationManagerImpl = function () {
return NotificationManagerImpl(editor);
var getWindowManagerImpl = function () {
return WindowManagerImpl();
getNotificationManagerImpl: getNotificationManagerImpl,
getWindowManagerImpl: getWindowManagerImpl
var ThemeApi = { get: get };
var Layout = global$a.extend({
firstControlClass: 'first',
init: function (settings) {
this.settings = global$2.extend({}, this.Defaults, settings);
preRender: function (container) {
container.bodyClasses.add(this.settings.containerClass);
applyClasses: function (items) {
var settings = self.settings;
var firstClass, lastClass, firstItem, lastItem;
firstClass = settings.firstControlClass;
lastClass = settings.lastControlClass;
items.each(function (item) {
item.classes.remove(firstClass).remove(lastClass).add(settings.controlClass);
firstItem.classes.add(firstClass);
lastItem.classes.add(lastClass);
renderHtml: function (container) {
self.applyClasses(container.items());
container.items().each(function (item) {
html += item.renderHtml();
postRender: function () {
var AbsoluteLayout = Layout.extend({
containerClass: 'abs-layout',
controlClass: 'abs-layout-item'
recalc: function (container) {
container.items().filter(':visible').each(function (ctrl) {
var settings = ctrl.settings;
renderHtml: function (container) {
return '<div id="' + container._id + '-absend" class="' + container.classPrefix + 'abs-end"></div>' + this._super(container);
var Button = Widget.extend({
init: function (settings) {
settings = self.settings;
size = self.settings.size;
self.on('click mousedown', function (e) {
self.on('touchstart', function (e) {
self.classes.add(settings.subtype);
self.classes.add('btn-' + size);
self.icon(settings.icon);
return this.state.get('icon');
this.state.set('icon', icon);
var btnElm = this.getEl().firstChild;
btnStyle.width = btnStyle.height = '100%';
renderHtml: function () {
var self = this, id = self._id, prefix = self.classPrefix;
var icon = self.state.get('icon'), image;
var text = self.state.get('text');
var settings = self.settings;
if (typeof image !== 'string') {
image = domGlobals.window.getSelection ? image[0] : image[1];
image = ' style="background-image: url(\'' + image + '\')"';
self.classes.add('btn-has-text');
textHtml = '<span class="' + prefix + 'txt">' + self.encode(text) + '</span>';
icon = icon ? prefix + 'ico ' + prefix + 'i-' + icon : '';
ariaPressed = typeof settings.active === 'boolean' ? ' aria-pressed="' + settings.active + '"' : '';
return '<div id="' + id + '" class="' + self.classes + '" tabindex="-1"' + ariaPressed + '>' + '<button id="' + id + '-button" role="presentation" type="button" tabindex="-1">' + (icon ? '<i class="' + icon + '"' + image + '></i>' : '') + textHtml + '</button>' + '</div>';
bindStates: function () {
var self = this, $ = self.$, textCls = self.classPrefix + 'txt';
function setButtonText(text) {
var $span = $('span.' + textCls, self.getEl());
$('button:first', self.getEl()).append('<span class="' + textCls + '"></span>');
$span = $('span.' + textCls, self.getEl());
$span.html(self.encode(text));
self.classes.toggle('btn-has-text', !!text);
self.state.on('change:text', function (e) {
self.state.on('change:icon', function (e) {
var prefix = self.classPrefix;
self.settings.icon = icon;
icon = icon ? prefix + 'ico ' + prefix + 'i-' + self.settings.icon : '';
var btnElm = self.getEl().firstChild;
var iconElm = btnElm.getElementsByTagName('i')[0];
if (!iconElm || iconElm !== btnElm.firstChild) {
iconElm = domGlobals.document.createElement('i');
btnElm.insertBefore(iconElm, btnElm.firstChild);
iconElm.className = icon;
btnElm.removeChild(iconElm);
setButtonText(self.state.get('text'));
var BrowseButton = Button.extend({
init: function (settings) {
settings = global$2.extend({
self.classes.add('browsebutton');
self.classes.add('multiple');
postRender: function () {
var input = funcs.create('input', {
id: self._id + '-browse',
accept: self.settings.accept
global$9(input).on('change', function (e) {
var files = e.target.files;
self.value = function () {
} else if (self.settings.multiple) {
global$9(input).on('click', function (e) {
global$9(self.getEl('button')).on('click touchstart', function (e) {
self.getEl().appendChild(input);
global$9(this.getEl('button')).off();
global$9(this.getEl('input')).off();
var ButtonGroup = Container.extend({
renderHtml: function () {
var self = this, layout = self._layout;
self.classes.add('btn-group');
return '<div id="' + self._id + '" class="' + self.classes + '">' + '<div id="' + self._id + '-body">' + (self.settings.html || '') + layout.renderHtml(self) + '</div>' + '</div>';
var Checkbox = Widget.extend({