nmitchko's picture
Upload 77 files
1e4c25f
raw
history blame contribute delete
No virus
3.38 kB
CKEDITOR.plugins.add('OCUpload', {
init: function (editor) {
if (!Drupal.settings.ocupload || !Drupal.settings.ocupload.allowedExt) {
return;
}
// Add Button
editor.ui.addButton('OCUpload', {
label: Drupal.t('Upload file'),
command: 'OCUpload',
icon: this.path + '../img/icon-ckeditor.png'
});
// Add Command
editor.addCommand('OCUpload', {
exec: function (editor) {
if (!Drupal.ocupload.ckeditorPlugin.flow.support) {
alert(Drupal.t('Your browser not support HTML5 File API'));
}
}
});
// Lazy create and configure Flow.js object
if (!Drupal.ocupload.ckeditorPlugin.flow) {
Drupal.ocupload.ckeditorPlugin.createFlow();
}
// Process upload button
if (Drupal.ocupload.ckeditorPlugin.flow.support) {
editor.on('dataReady', function () {
jQuery('.cke_button__ocupload').once('ocupload', function () {
var $button = jQuery(this);
Drupal.ocupload.ckeditorPlugin.flow.assignBrowse($button[0]);
Drupal.ocupload.ckeditorPlugin.flow.assignDrop($button[0]);
// Stop hidden input click propagation
$button.find('input').click(function (event) {
event.stopPropagation();
});
});
});
}
}
});
(function ($) {
Drupal.ocupload = Drupal.ocupload || {};
Drupal.ocupload.ckeditorPlugin = Drupal.ocupload.ckeditorPlugin || {};
/**
* Create and configure Flow.js object.
*/
Drupal.ocupload.ckeditorPlugin.createFlow = function () {
Drupal.ocupload.ckeditorPlugin.flow = Drupal.ocupload.createFlow();
if (!Drupal.ocupload.ckeditorPlugin.flow.support) {
return false;
}
Drupal.ocupload.ckeditorPlugin.flow.on('filesSubmitted', Drupal.ocupload.ckeditorPlugin.onFilesSubmitted);
Drupal.ocupload.ckeditorPlugin.flow.on('fileSuccess', Drupal.ocupload.ckeditorPlugin.onFileSuccess);
return true;
};
/**
* Files selected handler.
*/
Drupal.ocupload.ckeditorPlugin.onFilesSubmitted = function (files, event) {
var $textarea = $(event.target).closest('.cke').prev('textarea');
var editorInstance = CKEDITOR.instances[$textarea.attr('id')];
var selection = editorInstance.getSelection();
Drupal.ocupload.ckeditorPlugin.flow.opts.query.selectedText = selection ? selection.getNative().toString() : '';
Drupal.ocupload.ckeditorPlugin.flow.upload();
Drupal.ocupload.ckeditorPlugin.activeTextareaId = $textarea.attr('id');
};
/**
* File uploaded handler.
*/
Drupal.ocupload.ckeditorPlugin.onFileSuccess = function (file, response, chunk) {
if (!Drupal.ocupload.checkResponse(response)) {
return;
}
response = $.parseJSON(response);
if (response.status) {
var editorInstance = CKEDITOR.instances[Drupal.ocupload.ckeditorPlugin.activeTextareaId];
var selection = editorInstance.getSelection();
var selectedText = selection ? selection.getNative().toString() : '';
var insertedHtml = selectedText ? response.data : response.data + ' ';
editorInstance.insertHtml(insertedHtml);
// Hack for Auto-Grow plugin
if (CKEDITOR.plugins.get('autogrow')) {
editorInstance.forceNextSelectionCheck();
editorInstance.selectionChange();
}
}
else {
alert(response.data);
}
};
})(jQuery);