From 09db4ed4a520e4727a722f9c813cee9282a23c94 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Wed, 15 Sep 2021 09:18:36 +0200 Subject: [PATCH] Show UI errors for invalid files in media upload (#11061) --- .../upload/umbfiledropzone.directive.js | 30 ++++++++++++------- .../components/upload/umb-file-dropzone.html | 10 +++---- 2 files changed, 24 insertions(+), 16 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/components/upload/umbfiledropzone.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/components/upload/umbfiledropzone.directive.js index e926ca23d767..9350e04af955 100644 --- a/src/Umbraco.Web.UI.Client/src/common/directives/components/upload/umbfiledropzone.directive.js +++ b/src/Umbraco.Web.UI.Client/src/common/directives/components/upload/umbfiledropzone.directive.js @@ -65,16 +65,15 @@ angular.module("umbraco.directives") function _filesQueued(files, event) { //Push into the queue Utilities.forEach(files, file => { + if (_filterFile(file) === true) { - if (_filterFile(file) === true) { - - if (file.$error) { - scope.rejected.push(file); - } else { - scope.queue.push(file); - } + if (file.$error) { + scope.rejected.push(file); + } else { + scope.queue.push(file); } - }); + } + }); //when queue is done, kick the uploader if (!scope.working) { @@ -173,6 +172,8 @@ angular.module("umbraco.directives") } } else if (evt.Message) { file.serverErrorMessage = evt.Message; + } else if (evt && typeof evt === 'string') { + file.serverErrorMessage = evt; } // If file not found, server will return a 404 and display this message if (status === 404) { @@ -247,11 +248,18 @@ angular.module("umbraco.directives") return true;// yes, we did open the choose-media dialog, therefor we return true. } - scope.handleFiles = function(files, event) { + scope.handleFiles = function(files, event, invalidFiles) { + const allFiles = [...files, ...invalidFiles]; + + // add unique key for each files to use in ng-repeats + allFiles.forEach(file => { + file.key = String.CreateGuid(); + }); + if (scope.filesQueued) { - scope.filesQueued(files, event); + scope.filesQueued(allFiles, event); } - _filesQueued(files, event); + _filesQueued(allFiles, event); }; } }; diff --git a/src/Umbraco.Web.UI.Client/src/views/components/upload/umb-file-dropzone.html b/src/Umbraco.Web.UI.Client/src/views/components/upload/umb-file-dropzone.html index e5466d1da03f..ff0e8970a464 100644 --- a/src/Umbraco.Web.UI.Client/src/views/components/upload/umb-file-dropzone.html +++ b/src/Umbraco.Web.UI.Client/src/views/components/upload/umb-file-dropzone.html @@ -6,7 +6,7 @@
@@ -43,7 +43,7 @@