From 74a2bb2705c00ca76b4502d1bca56960cd9aefb7 Mon Sep 17 00:00:00 2001 From: Dario Milicic Date: Thu, 14 Aug 2014 13:59:07 +0200 Subject: [PATCH] Fixed the multilanguage support for the fileupload plugin. On the new entry page a new attachment drop box is added. Users can now drag&drop files into this drop box to be uploadad asynchronously and displayed as attachments on the page without reloading the entire page. --- scripts/ckeditor/plugins/dndfiles | 2 +- .../plugins/fileupload/dialogs/fileupload.js | 15 +- scripts/load-ckeditor.js | 181 ++++++++++++++++++ src/elogd.c | 15 +- src/git-revision.h | 2 +- .../UserInterfaceState.xcuserstate | Bin 34587 -> 34797 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 38 +++- 7 files changed, 238 insertions(+), 15 deletions(-) diff --git a/scripts/ckeditor/plugins/dndfiles b/scripts/ckeditor/plugins/dndfiles index e339fdcd..41551357 160000 --- a/scripts/ckeditor/plugins/dndfiles +++ b/scripts/ckeditor/plugins/dndfiles @@ -1 +1 @@ -Subproject commit e339fdcd88b87ae2f742d68a48ad3b3197418dd3 +Subproject commit 41551357b1c8e24cc2640d8558f683a94a1df3e4 diff --git a/scripts/ckeditor/plugins/fileupload/dialogs/fileupload.js b/scripts/ckeditor/plugins/fileupload/dialogs/fileupload.js index 80e5c5f5..e0e6d889 100644 --- a/scripts/ckeditor/plugins/fileupload/dialogs/fileupload.js +++ b/scripts/ckeditor/plugins/fileupload/dialogs/fileupload.js @@ -9,11 +9,14 @@ CKEDITOR.dialog.add( 'fileuploadDialog', function( editor ) { var lang = editor.lang.image2; -4 + var commonLang = editor.lang.common + + console.log(commonLang); + return { // Basic properties of the dialog window: title, minimum size. - title: 'Upload file', + title: commonLang.upload + ' file', minWidth: 200, minHeight: 150, @@ -108,17 +111,17 @@ CKEDITOR.dialog.add( 'fileuploadDialog', function( editor ) { // URL of the file type: 'text', id: 'src', - label: "URL", + label: commonLang.url, // Validation checking whether the field is not empty. validate: CKEDITOR.dialog.validate.notEmpty( "URL cannot be empty!" ) }, { - // Original name of the file, this field is hidden and only used to - // capture and display the original filename in the editor + // Original name of the file type: 'text', id: 'name', - hidden: true + label: commonLang.name, + validate: CKEDITOR.dialog.validate.notEmpty( "Name cannot be empty!" ) } ] } diff --git a/scripts/load-ckeditor.js b/scripts/load-ckeditor.js index f9e19df8..1c575a0f 100755 --- a/scripts/load-ckeditor.js +++ b/scripts/load-ckeditor.js @@ -24,6 +24,7 @@ $(document).ready(function() { // There is a default listener on the submit button that we // need to get rid off in order to get custom upload working + // without also firing an empty POST request CKEDITOR.on('dialogDefinition', function (ev) { // Take the dialog name and its definition from the event data. var dialogName = ev.data.name; @@ -43,5 +44,185 @@ $(document).ready(function() { } }); + // Replace the textarea with the CKeditor CKEDITOR.replace('Text'); + + // Workaround function for the drag and drop events, it disallows + // dragstart and dragend events firing for each child elements of a specific elements. + // In other words, events are only going to fire when an element is dragged over an element + // and its children and when the item is dragged away from the element and its children + $.fn.dndhover = function(options) { + + return this.each(function() { + + var self = $(this); + var collection = $(); + + self.on('dragenter', function(event) { + if (collection.size() === 0) { + self.trigger('dndHoverStart'); + } + collection = collection.add(event.target); + }); + + self.on('dragleave', function(event) { + /* + * Firefox 3.6 fires the dragleave event on the previous element + * before firing dragenter on the next one so we introduce a delay + */ + setTimeout(function() { + collection = collection.not(event.target); + if (collection.size() === 0) { + self.trigger('dndHoverEnd'); + } + }, 1); + }); + + // self.on('drop', function(event) { + // collection = $(); + // self.trigger('dndHoverEnd'); + // }); + }); + }; + + var uploading_dropped_files = false; + + // We should check if the browser supports these events + var tests = { + filereader: typeof FileReader != 'undefined', + dnd: 'draggable' in document.createElement('span'), + formdata: !!window.FormData, + progress: "upload" in new XMLHttpRequest + } + + function upload(files) { + // debugger; + + var formData = tests.formdata ? new FormData() : null; + + // add all the other attachments that were previously added + $( "input[name^='attachment']" ).each(function(idx, el) { + formData.append($(el).attr('name'), $(el).attr('value')); + // console.log(el); + }); + + formData.append('drop-count', files.length); // number of files dropped that should be sent + for (var i = 0; i < files.length; i++) { + if (tests.formdata) { + formData.append('next_attachment', parent.next_attachment); + formData.append('encoding', "HTML"); + formData.append('attfile', files[i]); + + parent.next_attachment += 1; + } + } + + + formData.append('cmd', "Upload"); // Command for server to recognize this as an file upload + + if (tests.formdata) { + var URL = '/' + parent.logbook + '/upload.html?next_attachment=' + parent.next_attachment; + + // set the flag so the chkupload validator doesn't trigger + uploading_dropped_files = true; + + var submiter = $("input[value='Upload']"); + var fileinput = $("input[type='File']"); + + // If we are uploading drag&drop files then ignore the validator + submiter.on("click", function(e) { + if(uploading_dropped_files == false) { + return chkupload(); + } + return true; + }); + + // Start the POST request with dropped files + // submiter.click(); + + // We have finished uploading drag&drop files + uploading_dropped_files = false; + + $.ajax({ + xhr: function() + { + var xhr = new window.XMLHttpRequest(); + + //Upload progress + xhr.upload.addEventListener("progress", function(evt){ + if (evt.lengthComputable) { + var percentComplete = evt.loaded / evt.total; + //Do something with upload progress + console.log(percentComplete); + } + }, false); + + //Download progress + // xhr.addEventListener("progress", function(evt){ + // if (evt.lengthComputable) { + // var percentComplete = evt.loaded / evt.total; + // //Do something with download progress + // console.log(percentComplete); + // } + // }, false); + + return xhr; + }, + contentType: false, + processData: false, + type: 'POST', + url: URL, + data: formData, + success: function(data) { + console.log(data); + var attch = $(".attachment", $(data)); + var attch_upload = $("#attachment_upload", $(data)); + // attch.each(function(idx, element) { + // $("#attachment_upload").before(element); + // console.log(element); + // }); + + // add the new attachments to the current page + $("#attachment_upload").before(attch.slice(-files.length)); + // replace the attachment upload section + $("#attachment_upload").replaceWith(attch_upload); + // console.log(attch.last()); + }, + fail: function() { + console.log("Error uploading files..."); + } + }); + } + } + + var holder = $("#holder"); + holder.dndhover().on({ + 'dndHoverStart' : function(event) { + event.stopPropagation(); + event.preventDefault(); + console.log("holder-enter") + holder.css("border", "10px dashed #0c0"); + return false; + }, + 'dragover' : function(event) { + event.stopPropagation(); + event.preventDefault(); + return false; + }, + 'dndHoverEnd' : function(event) { + event.stopPropagation(); + event.preventDefault(); + console.log("holder-leave"); + holder.css("border", "10px dashed #ccc"); + return false; + }, + 'drop' : function(e) { + e.preventDefault(); + + console.log("holder-drop"); + holder.css("border", "10px dashed #ccc"); + + upload(e.originalEvent.dataTransfer.files); + } + }); }); \ No newline at end of file diff --git a/src/elogd.c b/src/elogd.c index 9bdcdefd..af1af53e 100755 --- a/src/elogd.c +++ b/src/elogd.c @@ -11321,7 +11321,7 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL /* show existing attachments */ for (index = 0; index < MAX_ATTACHMENTS; index++) if (att[index][0]) { - rsprintf("%s %d:\n", loc("Attachment"), index + 1); + rsprintf("%s %d:\n", loc("Attachment"), index + 1); sprintf(str, "attachment%d", index); rsprintf("\n"); rsprintf("\n", str, att[index]); @@ -11507,13 +11507,20 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL loc("Maximum number of attachments reached")); rsprintf("\n"); } else { - rsprintf("%s %d:\n", loc("Attachment"), index + 1); + rsprintf("%s %d:\n", loc("Attachment"), index + 1); rsprintf - ("\n"); + ("\n"); rsprintf - ("  \n", + ("  \n", loc("Upload")); rsprintf("\n"); + + // print the holder for dropping attachments + rsprintf("\n"); + rsprintf("\n"); + rsprintf("
"); + rsprintf("

Drop attachments here...

"); + rsprintf(""); } } diff --git a/src/git-revision.h b/src/git-revision.h index cffba1b7..de639a57 100644 --- a/src/git-revision.h +++ b/src/git-revision.h @@ -1 +1 @@ -#define GIT_REVISION "Thu Aug 7 16:56:23 2014 +0200 - 25ed901" +#define GIT_REVISION "Mon Aug 11 11:19:47 2014 +0200 - 228262b" diff --git a/xcode/elogd.xcodeproj/project.xcworkspace/xcuserdata/dmilicic.xcuserdatad/UserInterfaceState.xcuserstate b/xcode/elogd.xcodeproj/project.xcworkspace/xcuserdata/dmilicic.xcuserdatad/UserInterfaceState.xcuserstate index d8eab8fb8eb86d19cd8d1f930c05bf5d2369777f..a8135cf7757c378b2060f0d3e1402546d2961db5 100644 GIT binary patch delta 14211 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 S8parA`DJceeuw`LT>d}B`GVm9 delta 13839 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 diff --git a/xcode/elogd.xcodeproj/xcuserdata/dmilicic.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/xcode/elogd.xcodeproj/xcuserdata/dmilicic.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist index 1c890ceb..ce79d89b 100644 --- a/xcode/elogd.xcodeproj/xcuserdata/dmilicic.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ b/xcode/elogd.xcodeproj/xcuserdata/dmilicic.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -26,11 +26,43 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "../src/elogd.c" - timestampString = "429197800.364771" + timestampString = "429458497.630275" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "26433" - endingLineNumber = "26433" + startingLineNumber = "26963" + endingLineNumber = "26963" + landmarkName = "load_password_file()" + landmarkType = "7"> + + + + + + + +