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'),
'$edcode' => t('Code'),
'$edimg' => t('Image'),
'$edatt' => t('Attach File'),
'$edurl' => t('Insert Link'),
'$edvideo' => t('Video'),
'$preview' => t('Preview'), // ((feature_enabled($conv->get_profile_owner(),'preview')) ? t('Preview') : ''),

View File

@ -132,6 +132,19 @@ function inserteditortag(BBcode, id) {
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) {
reply = prompt(aStr.linkurl);
if(reply && reply.length) {

View File

@ -47,6 +47,9 @@
</button>
</div>
<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;">
<i class="fa fa-link comment-icon"></i>
</button>

View File

@ -106,6 +106,9 @@ function enableOnUser(){
<script src="library/blueimp_upload/js/jquery.fileupload.js"></script>
<script>
var activeCommentID = 0;
var activeCommentText = '';
$(document).ready(function() {
/* enable tinymce on focus and click */
$("#profile-jot-text").focus(enableOnUser);
@ -139,6 +142,34 @@ function enableOnUser(){
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() {

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-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}}'>
{{$mimeselect}}
{{$layoutselect}}