summaryrefslogtreecommitdiffstats
path: root/webapp/components/file_upload.jsx
diff options
context:
space:
mode:
authorJoram Wilander <jwawilander@gmail.com>2017-05-04 15:45:19 -0400
committerGitHub <noreply@github.com>2017-05-04 15:45:19 -0400
commit49481caf6db89b0853626ac52ab5f786a6887179 (patch)
tree128991892f16d7830097c217db689410a002eb73 /webapp/components/file_upload.jsx
parent44a8f76d993cdd97785cab7fd55ad9f07c3c757a (diff)
downloadchat-49481caf6db89b0853626ac52ab5f786a6887179.tar.gz
chat-49481caf6db89b0853626ac52ab5f786a6887179.tar.bz2
chat-49481caf6db89b0853626ac52ab5f786a6887179.zip
PLT-6262 Add config setting to disable file attachments (#6301)
* Add config setting to disable file attachments * Add unit tests * Updating UI for no attachments (#6312) * Update UI text on file upload System Console setting (#6313) * Update storage_settings.jsx * Update en.json
Diffstat (limited to 'webapp/components/file_upload.jsx')
-rw-r--r--webapp/components/file_upload.jsx100
1 files changed, 67 insertions, 33 deletions
diff --git a/webapp/components/file_upload.jsx b/webapp/components/file_upload.jsx
index af5d76829..4ef8cd28c 100644
--- a/webapp/components/file_upload.jsx
+++ b/webapp/components/file_upload.jsx
@@ -132,6 +132,11 @@ class FileUpload extends React.Component {
}
handleDrop(e) {
+ if (global.window.mm_config.EnableFileAttachments === 'false') {
+ this.props.onUploadError(Utils.localizeMessage('file_upload.disabled', 'File attachments are disabled.'));
+ return;
+ }
+
this.props.onUploadError(null);
var files = e.originalEvent.dataTransfer.files;
@@ -163,36 +168,47 @@ class FileUpload extends React.Component {
}
});
- $(containerSelector).dragster({
- enter(dragsterEvent, e) {
- var files = e.originalEvent.dataTransfer;
-
- if (Utils.isFileTransfer(files)) {
- $(overlaySelector).removeClass('hidden');
+ let dragsterActions = {};
+ if (global.window.mm_config.EnableFileAttachments === 'true') {
+ dragsterActions = {
+ enter(dragsterEvent, e) {
+ var files = e.originalEvent.dataTransfer;
+
+ if (Utils.isFileTransfer(files)) {
+ $(overlaySelector).removeClass('hidden');
+ }
+ },
+ leave(dragsterEvent, e) {
+ var files = e.originalEvent.dataTransfer;
+
+ if (Utils.isFileTransfer(files) && !overlay.hasClass('hidden')) {
+ overlay.addClass('hidden');
+ }
+
+ dragTimeout.cancel();
+ },
+ over() {
+ dragTimeout.fireAfter(OverlayTimeout);
+ },
+ drop(dragsterEvent, e) {
+ if (!overlay.hasClass('hidden')) {
+ overlay.addClass('hidden');
+ }
+
+ dragTimeout.cancel();
+
+ self.handleDrop(e);
}
- },
- leave(dragsterEvent, e) {
- var files = e.originalEvent.dataTransfer;
-
- if (Utils.isFileTransfer(files) && !overlay.hasClass('hidden')) {
- overlay.addClass('hidden');
- }
-
- dragTimeout.cancel();
- },
- over() {
- dragTimeout.fireAfter(OverlayTimeout);
- },
- drop(dragsterEvent, e) {
- if (!overlay.hasClass('hidden')) {
- overlay.addClass('hidden');
+ };
+ } else {
+ dragsterActions = {
+ drop(dragsterEvent, e) {
+ self.handleDrop(e);
}
+ };
+ }
- dragTimeout.cancel();
-
- self.handleDrop(e);
- }
- });
+ $(containerSelector).dragster(dragsterActions);
this.props.onFileUploadChange();
}
@@ -247,7 +263,12 @@ class FileUpload extends React.Component {
// This looks redundant, but must be done this way due to
// setState being an asynchronous call
- if (items) {
+ if (items && items.length > 0) {
+ if (global.window.mm_config.EnableFileAttachments === 'false') {
+ this.props.onUploadError(Utils.localizeMessage('file_upload.disabled', 'File attachments are disabled.'));
+ return;
+ }
+
var numToUpload = Math.min(Constants.MAX_UPLOAD_FILES - this.props.getFileCount(ChannelStore.getCurrentId()), items.length);
if (items.length > numToUpload) {
@@ -305,6 +326,12 @@ class FileUpload extends React.Component {
keyUpload(e) {
if (Utils.cmdOrCtrlPressed(e) && e.keyCode === Constants.KeyCodes.U) {
e.preventDefault();
+
+ if (global.window.mm_config.EnableFileAttachments === 'false') {
+ this.props.onUploadError(Utils.localizeMessage('file_upload.disabled', 'File attachments are disabled.'));
+ return;
+ }
+
if ((this.props.postType === 'post' && document.activeElement.id === 'post_textbox') ||
(this.props.postType === 'comment' && document.activeElement.id === 'reply_textbox')) {
$(this.refs.fileInput).focus().trigger('click');
@@ -361,11 +388,9 @@ class FileUpload extends React.Component {
);
}
- return (
- <span
- ref='input'
- className={'btn btn-file' + (uploadsRemaining <= 0 ? ' btn-file__disabled' : '')}
- >
+ let fileDiv;
+ if (global.window.mm_config.EnableFileAttachments === 'true') {
+ fileDiv = (
<div className='icon--attachment'>
<span
className='icon'
@@ -380,6 +405,15 @@ class FileUpload extends React.Component {
accept={accept}
/>
</div>
+ );
+ }
+
+ return (
+ <span
+ ref='input'
+ className={'btn btn-file' + (uploadsRemaining <= 0 ? ' btn-file__disabled' : '')}
+ >
+ {fileDiv}
{emojiSpan}
</span>
);