From 06a87fb0ee93e5110fd9401749035722342bf4a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9gis=20Hanol?= Date: Wed, 14 May 2014 12:13:51 +0200 Subject: [PATCH] BUGFIX: allow new users to upload an avatar/background --- .../javascripts/discourse/lib/utilities.js | 18 +++++++++++------- .../views/modal/avatar_selector_view.js | 2 +- .../discourse/views/user/preferences_view.js | 2 +- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/app/assets/javascripts/discourse/lib/utilities.js b/app/assets/javascripts/discourse/lib/utilities.js index 8b703216e0..5799ee130b 100644 --- a/app/assets/javascripts/discourse/lib/utilities.js +++ b/app/assets/javascripts/discourse/lib/utilities.js @@ -152,7 +152,7 @@ Discourse.Utilities = { @method validateUploadedFiles @param {Array} files The list of files we want to upload **/ - validateUploadedFiles: function(files) { + validateUploadedFiles: function(files, bypassNewUserRestriction) { if (!files || files.length === 0) { return false; } // can only upload one file at a time @@ -162,11 +162,12 @@ Discourse.Utilities = { } var upload = files[0]; + var type = Discourse.Utilities.isAnImage(upload.name) ? 'image' : 'attachment'; // CHROME ONLY: if the image was pasted, sets its name to a default one if (upload instanceof Blob && !(upload instanceof File) && upload.type === "image/png") { upload.name = "blob.png"; } - return Discourse.Utilities.validateUploadedFile(upload, Discourse.Utilities.isAnImage(upload.name) ? 'image' : 'attachment'); + return Discourse.Utilities.validateUploadedFile(upload, type, bypassNewUserRestriction); }, /** @@ -175,9 +176,10 @@ Discourse.Utilities = { @method validateUploadedFile @param {File} file The file to be uploaded @param {string} type The type of the upload (image, attachment) + @params {bool} bypassNewUserRestriction @returns true whenever the upload is valid **/ - validateUploadedFile: function(file, type) { + validateUploadedFile: function(file, type, bypassNewUserRestriction) { // check that the uploaded file is authorized if (!Discourse.Utilities.authorizesAllExtensions() && !Discourse.Utilities.isAuthorizedUpload(file)) { @@ -186,10 +188,12 @@ Discourse.Utilities = { return false; } - // ensures that new users can upload a file - if (!Discourse.User.current().isAllowedToUploadAFile(type)) { - bootbox.alert(I18n.t('post.errors.' + type + '_upload_not_allowed_for_new_user')); - return false; + if (!bypassNewUserRestriction) { + // ensures that new users can upload a file + if (!Discourse.User.current().isAllowedToUploadAFile(type)) { + bootbox.alert(I18n.t('post.errors.' + type + '_upload_not_allowed_for_new_user')); + return false; + } } // check file size diff --git a/app/assets/javascripts/discourse/views/modal/avatar_selector_view.js b/app/assets/javascripts/discourse/views/modal/avatar_selector_view.js index 1d44b6eaad..0cbb2d7e20 100644 --- a/app/assets/javascripts/discourse/views/modal/avatar_selector_view.js +++ b/app/assets/javascripts/discourse/views/modal/avatar_selector_view.js @@ -41,7 +41,7 @@ Discourse.AvatarSelectorView = Discourse.ModalBodyView.extend({ // when a file has been selected $upload.on('fileuploadsubmit', function (e, data) { - var result = Discourse.Utilities.validateUploadedFiles(data.files); + var result = Discourse.Utilities.validateUploadedFiles(data.files, true); self.setProperties({ uploadProgress: 0, uploading: result, diff --git a/app/assets/javascripts/discourse/views/user/preferences_view.js b/app/assets/javascripts/discourse/views/user/preferences_view.js index 0d2a26b108..d0728d46f1 100644 --- a/app/assets/javascripts/discourse/views/user/preferences_view.js +++ b/app/assets/javascripts/discourse/views/user/preferences_view.js @@ -27,7 +27,7 @@ Discourse.PreferencesView = Discourse.View.extend({ }); $upload.on('fileuploadsubmit', function (e, data) { - var result = Discourse.Utilities.validateUploadedFiles(data.files); + var result = Discourse.Utilities.validateUploadedFiles(data.files, true); self.setProperties({ uploadProgress: 0, uploading: result }); return result; });