/home/preegmxb/byeaglytics-co.com/media/plg_editors_tinymce/js/plugins/dragdrop/plugin.js
(function () {
'use strict';
/* eslint-disable no-undef */
tinymce.PluginManager.add('jdragndrop', function (editor) {
var responseData; // Reset the drop area border
tinyMCE.DOM.bind(document, 'dragleave', function (e) {
e.stopPropagation();
e.preventDefault();
editor.contentAreaContainer.style.borderWidth = '1px 0 0';
return false;
}); // Fix for Chrome
editor.on('dragenter', function (e) {
e.stopPropagation();
return false;
}); // Notify user when file is over the drop area
editor.on('dragover', function (e) {
e.preventDefault();
editor.contentAreaContainer.style.borderStyle = 'dashed';
editor.contentAreaContainer.style.borderWidth = '5px';
return false;
});
function uploadFile(name, content) {
var _data;
var url = editor.settings.uploadUri + "&path=" + editor.settings.comMediaAdapter;
var data = (_data = {}, _data[editor.settings.csrfToken] = '1', _data.name = name, _data.content = content, _data.parent = editor.settings.parentUploadFolder, _data);
Joomla.request({
url: url,
method: 'POST',
data: JSON.stringify(data),
headers: {
'Content-Type': 'application/json'
},
onSuccess: function onSuccess(resp) {
var response;
try {
response = JSON.parse(resp);
} catch (e) {
editor.windowManager.alert(Joomla.Text._('ERROR') + ": {e}");
}
if (response.data && response.data.path) {
responseData = response.data;
var urlPath; // For local adapters use relative paths
if (/local-/.test(responseData.adapter)) {
var _Joomla$getOptions = Joomla.getOptions('system.paths'),
rootFull = _Joomla$getOptions.rootFull;
urlPath = "" + response.data.thumb_path.split(rootFull)[1];
} else if (responseData.thumb_path) {
// Absolute path for different domain
urlPath = responseData.thumb_path;
}
var dialogClose = function dialogClose(api) {
var dialogData = api.getData();
var altEmpty = dialogData.altEmpty ? ' alt=""' : '';
var altValue = dialogData.altText ? " alt=\"" + dialogData.altText + "\"" : altEmpty;
var lazyValue = dialogData.isLazy ? ' loading="lazy"' : '';
var width = dialogData.isLazy ? " width=\"" + responseData.width + "\"" : '';
var height = dialogData.isLazy ? " height=\"" + responseData.height + "\"" : '';
editor.execCommand('mceInsertContent', false, "<img src=\"" + urlPath + "\"" + altValue + lazyValue + width + height + "/>");
};
editor.windowManager.open({
title: Joomla.Text._('PLG_TINY_DND_ADDITIONALDATA'),
body: {
type: 'panel',
items: [{
type: 'input',
name: 'altText',
label: Joomla.Text._('PLG_TINY_DND_ALTTEXT')
}, {
type: 'checkbox',
name: 'altEmpty',
label: Joomla.Text._('PLG_TINY_DND_EMPTY_ALT')
}, {
type: 'checkbox',
name: 'isLazy',
label: Joomla.Text._('PLG_TINY_DND_LAZYLOADED')
}]
},
buttons: [{
type: 'cancel',
text: 'Cancel'
}, {
type: 'submit',
name: 'submitButton',
text: 'Save',
primary: true
}],
initialData: {
altText: '',
isLazy: true,
altEmpty: false
},
onSubmit: function onSubmit(api) {
dialogClose(api);
api.close();
},
onCancel: function onCancel(api) {
dialogClose(api);
}
});
}
},
onError: function onError(xhr) {
editor.windowManager.alert("Error: " + xhr.statusText);
}
});
}
function readFile(file) {
// Create a new file reader instance
var reader = new FileReader(); // Add the on load callback
reader.onload = function (progressEvent) {
var result = progressEvent.target.result;
var splitIndex = result.indexOf('base64') + 7;
var content = result.slice(splitIndex, result.length); // Upload the file
uploadFile(file.name, content);
};
reader.readAsDataURL(file);
} // Listeners for drag and drop
if (typeof FormData !== 'undefined') {
// Logic for the dropped file
editor.on('drop', function (e) {
e.preventDefault(); // We override only for files
if (e.dataTransfer && e.dataTransfer.files && e.dataTransfer.files.length > 0) {
var files = [].slice.call(e.dataTransfer.files);
files.forEach(function (file) {
// Only images allowed
if (file.name.toLowerCase().match(/\.(jpg|jpeg|png|gif)$/)) {
// Upload the file(s)
readFile(file);
}
});
}
editor.contentAreaContainer.style.borderWidth = '1px 0 0';
});
} else {
Joomla.renderMessages({
error: [Joomla.Text._('PLG_TINY_ERR_UNSUPPORTEDBROWSER')]
});
editor.on('drop', function (e) {
e.preventDefault();
return false;
});
}
});
}());