( function() {
CKEDITOR.plugins.add( 'imgur',
{
lang: ['zh', 'en', 'fr'],
init: function( editor )
{
ClientID = editor.config.imgurClientID;
if(!ClientID)
alert(editor.lang.imgur.ClientIDMissing);
var count = 0;
var $placeholder = $("
").css({
position: 'absolute', bottom: 0, left: 0, right: 0, backgroundColor: "rgba(20, 20, 20, .6)", padding: 5, color: "#fff"
}).hide();
editor.on("instanceReady", function (){
var $w = $(editor.window.getFrame().$).parent();
$w.css({ position:'relative' });
$placeholder.appendTo($w);
});
editor.ui.addButton( 'Imgur',
{
label : editor.lang.imgur.label,
toolbar : 'insert',
command : 'imgur',
icon : this.path + 'images/icon.png'
});
editor.addCommand( 'imgur', {
exec: function(){
$input = $('');
$input.on("change", function (e) {
files = e.target.files;
$.each(files, function(i, file){
count++;
form = new FormData();
form.append('image', file);
$.ajax({
url: 'https://api.imgur.com/3/image',
headers: { Authorization: "Client-ID " + ClientID },
type: 'POST',
data: form,
cache: false,
contentType: false,
processData: false
}).always(function(jqXHR){
count--;
$placeholder.text(count + editor.lang.imgur.uploading).toggle(count != 0);
if(jqXHR.status != 200 ) {
res = $.parseJSON(jqXHR.responseText);
}else{
res = jqXHR;
}
if(res.data.error) {
alert(editor.lang.imgur.failToUpload + res.data.error);
} else {
content = '
';
var element = CKEDITOR.dom.element.createFromHtml(content);
editor.insertElement(element);
}
});
});
$placeholder.text(count + editor.lang.imgur.uploading).fadeIn();
});
$input.click();
}
});
editor.on( 'paste', function( evt ) {
var data = evt.data,
// Prevent XSS attacks
tempDoc = document.implementation.createHTMLDocument( '' ),
temp = new CKEDITOR.dom.element( tempDoc.body ),
imgs, img, i;
if (data && data.dataValue && data.dataValue.startsWith("
';
var element = CKEDITOR.dom.element.createFromHtml(content);
editor.insertElement(element);
}
});
$placeholder.text(count + editor.lang.imgur.uploading).fadeIn();
return false;
}
for ( i = 0; i < evt.data.dataTransfer.getFilesCount(); i++ ) {
count++;
file = evt.data.dataTransfer.getFile( i );
form = new FormData();
form.append('image', file);
$.ajax({
url: 'https://api.imgur.com/3/image',
headers: { Authorization: "Client-ID " + editor.config.imgurClientID },
type: 'POST',
data: form,
cache: false,
contentType: false,
processData: false
}).always(function(jqXHR){
count--;
$placeholder.text(count + editor.lang.imgur.uploading).toggle(count != 0);
if(jqXHR.status != 200 ) {
res = $.parseJSON(jqXHR.responseText);
}else{
res = jqXHR;
}
if(res.data.error) {
alert(editor.lang.imgur.failToUpload + res.data.error);
} else {
content = '
';
var element = CKEDITOR.dom.element.createFromHtml(content);
editor.insertElement(element);
}
});
$placeholder.text(count + editor.lang.imgur.uploading).fadeIn();
return false;
}
return true;
});
}
});
})();