]> source.dussan.org Git - redmine.git/commitdiff
Allow pasting screenshots from clipboard (#3816).
authorGo MAEDA <maeda@farend.jp>
Sun, 17 Feb 2019 21:55:24 +0000 (21:55 +0000)
committerGo MAEDA <maeda@farend.jp>
Sun, 17 Feb 2019 21:55:24 +0000 (21:55 +0000)
Patch by Takenori TAKAKI and Marius BALTEANU.

git-svn-id: http://svn.redmine.org/redmine/trunk@17874 e93f8b46-1217-0410-a6f0-8f06a7374b81

public/javascripts/attachments.js

index 753855f91979d1a8312b943faec60b994094cab2..d7f8d41fa3984fb2ffa12003ec2539c1ff1a7ef8 100644 (file)
@@ -201,7 +201,8 @@ function setupFileDrop() {
       $(this).on({
           dragover: dragOverHandler,
           dragleave: dragOutHandler,
-          drop: handleFileDropEvent
+          drop: handleFileDropEvent,
+          paste: copyImageFromClipboard
       }).addClass('filedroplistner');
     });
   }
@@ -250,6 +251,33 @@ function addInlineAttachmentMarkup(file) {
   }
 }
 
+function copyImageFromClipboard(e) {
+  if (!$(e.target).hasClass('wiki-edit')) { return; }
+  var clipboardData = e.clipboardData || e.originalEvent.clipboardData
+  if (!clipboardData) { return; }
+
+  var items = clipboardData.items
+  for (var i = 0 ; i < items.length ; i++) {
+    var item = items[i];
+    if (item.type.indexOf("image") != -1) {
+      var blob = item.getAsFile();
+      var date = new Date();
+      var filename = 'clipboard-'
+        + date.getFullYear()
+        + ('0'+(date.getMonth()+1)).slice(-2)
+        + ('0'+date.getDate()).slice(-2)
+        + ('0'+date.getHours()).slice(-2)
+        + ('0'+date.getMinutes()).slice(-2)
+        + '-' + randomKey(5).toLocaleLowerCase()
+        + '.' + blob.name.split('.').pop();
+      var file = new File([blob], filename, {type: blob.type});
+      var inputEl = $('input:file.filedrop').first()
+      handleFileDropEvent.target = e.target;
+      addFile(inputEl, file, true);
+    }
+  }
+}
+
 $(document).ready(setupFileDrop);
 $(document).ready(function(){
   $("input.deleted_attachment").change(function(){