diff --git a/scripts/ckeditor/plugins/dndfiles/plugin.js b/scripts/ckeditor/plugins/dndfiles/plugin.js new file mode 100755 index 00000000..66c69802 --- /dev/null +++ b/scripts/ckeditor/plugins/dndfiles/plugin.js @@ -0,0 +1,166 @@ +/** + * Basic sample plugin inserting current date and time into CKEditor editing area. + */ + +// Register the plugin within the editor. +CKEDITOR.plugins.add( 'dndfiles', { + + icons: 'dndfiles', + + // The plugin initialization logic goes inside this method. + init: function( editor ) { + + // Define an editor command that inserts a timestamp. + editor.addCommand( 'dragndrop', { + + // Define the function that will be fired when the command is executed. + exec: function( editor ) { + + // stores the names of all the files that are uploaded + var filename = []; + var iframe = document.getElementsByTagName('iframe')[0]; + var iframeHTML = $(iframe).contents().find("html"); + + var holder = $(document.getElementsByTagName('iframe')[0].contentDocument), + tests = { + filereader: typeof FileReader != 'undefined', + dnd: 'draggable' in document.createElement('span'), + formdata: !!window.FormData, + progress: "upload" in new XMLHttpRequest + } + + // Function that initializes all relevant listeners for the drag and drop events + function init() { + + if(tests.dnd) { // Drag and drop is enabled + + // Handle drag and drop events + holder.dndhover().on({ + 'dndHoverStart': function(event) { + event.stopPropagation(); + event.preventDefault(); + + console.log("start"); + + iframeHTML.css('box-shadow', 'inset 0px 0px 10px 1px #999998'); + + return false; + }, + 'dndHoverEnd': function(event) { + event.stopPropagation(); + event.preventDefault(); + + iframeHTML.css('box-shadow', '0px 0px 0px 0px #999999'); + + console.log("end"); + return false; + }, + 'drop' : function(e) { + e.preventDefault(); + + console.log("drop"); + + iframeHTML.css('box-shadow', '0px 0px 0px 0px #999999'); + + // Upload dropped files + upload(e.originalEvent.dataTransfer.files); + } + }); + } else { + console.log("Drag and drop functionality not available..."); + fileupload.querySelector('input').onchange = function () { + upload(this.files); + }; + } + } + + // This function is called when the upload of files succedes. Displays uploaded images + // into img tags and everything else as an tag + function uploadSuccess(data) { + // End the progress bar + progressJs().end(); + + console.log(data); + + var html = ''; + for(var idx = 0; idx < data.attachments.length; idx++) { + var att = data.attachments[idx]; + var name = att.fullName; + + // this is an image and it has a thumbnail + if(att.thumbName) { + html += ''; + } else { // this is not an image + html += "