From e156af527808ff4efe7496052ad706870a3f1f03 Mon Sep 17 00:00:00 2001 From: trent Date: Wed, 28 Aug 2019 13:59:13 -0600 Subject: [PATCH 1/3] asset manager added config & logic to set max file(s) size; preventing the user from exceeding their limit. --- src/asset_manager/config/config.js | 8 +++++++- src/asset_manager/index.js | 8 ++++++++ src/asset_manager/view/FileUploader.js | 8 ++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/asset_manager/config/config.js b/src/asset_manager/config/config.js index b164ffe92..b222531ee 100644 --- a/src/asset_manager/config/config.js +++ b/src/asset_manager/config/config.js @@ -100,5 +100,11 @@ export default { modalTitle: 'Select Image', //Default placeholder for input - inputPlaceholder: 'http://path/to/the/image.jpg' + inputPlaceholder: 'http://path/to/the/image.jpg', + + //Max file size which can be uploaded in KB, 0 is no limit and default + uploadMaxFileSize: 0, + + //alert text when file size limit is reached + uploadMaxFileSizeAlertText: null }; diff --git a/src/asset_manager/index.js b/src/asset_manager/index.js index 2ba2e8e46..1d774c9cd 100644 --- a/src/asset_manager/index.js +++ b/src/asset_manager/index.js @@ -347,6 +347,14 @@ export default () => { */ onDblClick(func) { c.onDblClick = func; + }, + + /** + * Update config uploadMaxFileSize + * @param {int} maxKb + */ + setUploadMaxFileSize(maxKb) { + c.uploadMaxFileSize = maxKb; } }; }; diff --git a/src/asset_manager/view/FileUploader.js b/src/asset_manager/view/FileUploader.js index 847ea1392..880ece733 100644 --- a/src/asset_manager/view/FileUploader.js +++ b/src/asset_manager/view/FileUploader.js @@ -115,12 +115,20 @@ export default Backbone.View.extend( body.append(param, params[param]); } + var fileSize = 0; + if (this.multiUpload) { for (let i = 0; i < files.length; i++) { body.append(`${config.uploadName}[]`, files[i]); + fileSize += files[i].size; } } else if (files.length) { body.append(config.uploadName, files[0]); + fileSize += files[0].size; + } + if (config.uploadMaxFileSize > 0 && config.uploadMaxFileSize <= fileSize / 1024) { + alert(config.uploadMaxFileSizeAlertText || 'The file(s) you have selected to add exceed your space limit'); + return; } var target = this.target; From a9907efb1aa5526ff0221b12449f830ec4cd39fc Mon Sep 17 00:00:00 2001 From: trent Date: Wed, 4 Sep 2019 10:56:52 -0600 Subject: [PATCH 2/3] revert changes --- src/asset_manager/config/config.js | 8 +------- src/asset_manager/index.js | 8 -------- src/asset_manager/view/FileUploader.js | 8 -------- 3 files changed, 1 insertion(+), 23 deletions(-) diff --git a/src/asset_manager/config/config.js b/src/asset_manager/config/config.js index b222531ee..b164ffe92 100644 --- a/src/asset_manager/config/config.js +++ b/src/asset_manager/config/config.js @@ -100,11 +100,5 @@ export default { modalTitle: 'Select Image', //Default placeholder for input - inputPlaceholder: 'http://path/to/the/image.jpg', - - //Max file size which can be uploaded in KB, 0 is no limit and default - uploadMaxFileSize: 0, - - //alert text when file size limit is reached - uploadMaxFileSizeAlertText: null + inputPlaceholder: 'http://path/to/the/image.jpg' }; diff --git a/src/asset_manager/index.js b/src/asset_manager/index.js index 1d774c9cd..2ba2e8e46 100644 --- a/src/asset_manager/index.js +++ b/src/asset_manager/index.js @@ -347,14 +347,6 @@ export default () => { */ onDblClick(func) { c.onDblClick = func; - }, - - /** - * Update config uploadMaxFileSize - * @param {int} maxKb - */ - setUploadMaxFileSize(maxKb) { - c.uploadMaxFileSize = maxKb; } }; }; diff --git a/src/asset_manager/view/FileUploader.js b/src/asset_manager/view/FileUploader.js index 880ece733..847ea1392 100644 --- a/src/asset_manager/view/FileUploader.js +++ b/src/asset_manager/view/FileUploader.js @@ -115,20 +115,12 @@ export default Backbone.View.extend( body.append(param, params[param]); } - var fileSize = 0; - if (this.multiUpload) { for (let i = 0; i < files.length; i++) { body.append(`${config.uploadName}[]`, files[i]); - fileSize += files[i].size; } } else if (files.length) { body.append(config.uploadName, files[0]); - fileSize += files[0].size; - } - if (config.uploadMaxFileSize > 0 && config.uploadMaxFileSize <= fileSize / 1024) { - alert(config.uploadMaxFileSizeAlertText || 'The file(s) you have selected to add exceed your space limit'); - return; } var target = this.target; From dbc00001e4ea2a8b4afdddb61af2315d3137c10b Mon Sep 17 00:00:00 2001 From: trent Date: Wed, 4 Sep 2019 15:18:25 -0600 Subject: [PATCH 3/3] added intercept to asset manager upload... --- src/asset_manager/config/config.js | 11 ++++++++++- src/asset_manager/view/FileUploader.js | 5 +++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/asset_manager/config/config.js b/src/asset_manager/config/config.js index b164ffe92..0ae22f083 100644 --- a/src/asset_manager/config/config.js +++ b/src/asset_manager/config/config.js @@ -100,5 +100,14 @@ export default { modalTitle: 'Select Image', //Default placeholder for input - inputPlaceholder: 'http://path/to/the/image.jpg' + inputPlaceholder: 'http://path/to/the/image.jpg', + + //method called before upload, on return false upload is canceled. + // @example + // beforeUpload: (files) => { + // // logic... + // var stopUpload = true; + // if(stopUpload) return false; + // } + beforeUpload: null }; diff --git a/src/asset_manager/view/FileUploader.js b/src/asset_manager/view/FileUploader.js index 847ea1392..51fa64b68 100644 --- a/src/asset_manager/view/FileUploader.js +++ b/src/asset_manager/view/FileUploader.js @@ -108,6 +108,11 @@ export default Backbone.View.extend( uploadFile(e, clb) { const files = e.dataTransfer ? e.dataTransfer.files : e.target.files; const { config } = this; + const { beforeUpload } = config; + + const beforeUploadResponse = beforeUpload && beforeUpload(files); + if (beforeUploadResponse === false) return; + const body = new FormData(); const { params, customFetch } = config;