support upload of files and attachments into comments. This has some repercussions when it comes to post permissions since the commenter will not know the distribution of the post. Basically the files will be uploaded with the commenter's default ACL. Most of the time this will do the right thing.

This commit is contained in:
zotlabs 2017-08-08 22:55:47 -07:00
parent a7a73a5150
commit ca11d7b9a7
5 changed files with 49 additions and 0 deletions

View File

@ -735,6 +735,7 @@ class ThreadItem {
'$edquote' => t('Quote'), '$edquote' => t('Quote'),
'$edcode' => t('Code'), '$edcode' => t('Code'),
'$edimg' => t('Image'), '$edimg' => t('Image'),
'$edatt' => t('Attach File'),
'$edurl' => t('Insert Link'), '$edurl' => t('Insert Link'),
'$edvideo' => t('Video'), '$edvideo' => t('Video'),
'$preview' => t('Preview'), // ((feature_enabled($conv->get_profile_owner(),'preview')) ? t('Preview') : ''), '$preview' => t('Preview'), // ((feature_enabled($conv->get_profile_owner(),'preview')) ? t('Preview') : ''),

View File

@ -132,6 +132,19 @@ function inserteditortag(BBcode, id) {
return true; return true;
} }
function insertCommentAttach(comment,id) {
activeCommentID = id;
activeCommentText = comment;
$('body').css('cursor', 'wait');
$('#invisible-comment-upload').trigger('click');
return false;
}
function insertCommentURL(comment, id) { function insertCommentURL(comment, id) {
reply = prompt(aStr.linkurl); reply = prompt(aStr.linkurl);
if(reply && reply.length) { if(reply && reply.length) {

View File

@ -47,6 +47,9 @@
</button> </button>
</div> </div>
<div class="btn-group mr-2"> <div class="btn-group mr-2">
<button class="btn btn-outline-secondary btn-sm" title="{{$edatt}}" onclick="insertCommentAttach('{{$comment}}',{{$id}}); return false;">
<i class="fa fa-paperclip comment-icon"></i>
</button>
<button class="btn btn-outline-secondary btn-sm" title="{{$edurl}}" onclick="insertCommentURL('{{$comment}}',{{$id}}); return false;"> <button class="btn btn-outline-secondary btn-sm" title="{{$edurl}}" onclick="insertCommentURL('{{$comment}}',{{$id}}); return false;">
<i class="fa fa-link comment-icon"></i> <i class="fa fa-link comment-icon"></i>
</button> </button>

View File

@ -106,6 +106,9 @@ function enableOnUser(){
<script src="library/blueimp_upload/js/jquery.fileupload.js"></script> <script src="library/blueimp_upload/js/jquery.fileupload.js"></script>
<script> <script>
var activeCommentID = 0;
var activeCommentText = '';
$(document).ready(function() { $(document).ready(function() {
/* enable tinymce on focus and click */ /* enable tinymce on focus and click */
$("#profile-jot-text").focus(enableOnUser); $("#profile-jot-text").focus(enableOnUser);
@ -139,6 +142,34 @@ function enableOnUser(){
DragDropUploadInit(); DragDropUploadInit();
} }
$('#invisible-comment-upload').fileupload({
url: 'wall_attach/{{$nickname}}',
dataType: 'json',
maxChunkSize: 4 * 1024 * 1024,
add: function(e,data) {
var tmpStr = $("#comment-edit-text-" + activeCommentID).val();
if(tmpStr == activeCommentText) {
tmpStr = "";
$("#comment-edit-text-" + activeCommentID).addClass("comment-edit-text-full");
$("#comment-edit-text-" + activeCommentID).removeClass("comment-edit-text-empty");
openMenu("comment-tools-" + activeCommentID);
$("#comment-edit-text-" + activeCommentID).val(tmpStr);
}
data.submit();
},
done: function(e,data) {
textarea = document.getElementById("comment-edit-text-" + activeCommentID);
textarea.value = textarea.value + data.result.message;
},
stop: function(e,data) {
$('body').css('cursor', 'auto');
preview_comment(activeCommentID);
activeCommentID = 0;
},
});
}); });
function deleteCheckedItems() { function deleteCheckedItems() {

View File

@ -1,4 +1,5 @@
<input id="invisible-wall-file-upload" type="file" name="files" style="visibility:hidden;position:absolute;top:-50;left:-50;width:0;height:0;" multiple> <input id="invisible-wall-file-upload" type="file" name="files" style="visibility:hidden;position:absolute;top:-50;left:-50;width:0;height:0;" multiple>
<input id="invisible-comment-upload" type="file" name="files" style="visibility:hidden;position:absolute;top:-50;left:-50;width:0;height:0;" multiple>
<form id="profile-jot-form" action="{{$action}}" method="post" class="acl-form" data-form_id="profile-jot-form" data-allow_cid='{{$allow_cid}}' data-allow_gid='{{$allow_gid}}' data-deny_cid='{{$deny_cid}}' data-deny_gid='{{$deny_gid}}'> <form id="profile-jot-form" action="{{$action}}" method="post" class="acl-form" data-form_id="profile-jot-form" data-allow_cid='{{$allow_cid}}' data-allow_gid='{{$allow_gid}}' data-deny_cid='{{$deny_cid}}' data-deny_gid='{{$deny_gid}}'>
{{$mimeselect}} {{$mimeselect}}
{{$layoutselect}} {{$layoutselect}}