From e6981053096374c25a76b47d3b80be10fa525e96 Mon Sep 17 00:00:00 2001 From: Andrew Miner Date: Fri, 12 Jun 2015 09:12:35 -0700 Subject: [PATCH] Allow user to select same file multiple times It's common that a user may way to edit a file (e.g., to make it smaller if given an error message), and this allows the user to select the same file name multilple times (which ordinarily the file element will ignore). --- .../controllers/markdown_image_controller.coffee | 11 +++++++++++ src/jade/templates/markdown_image.jade | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/coffee/controllers/markdown_image_controller.coffee b/src/coffee/controllers/markdown_image_controller.coffee index 1842b6a59..93eba14c2 100644 --- a/src/coffee/controllers/markdown_image_controller.coffee +++ b/src/coffee/controllers/markdown_image_controller.coffee @@ -40,6 +40,7 @@ module.exports = class MarkdownImageController extends BaseController if file.size > MAX_FILE_SIZE logger.warning "The choosen file, #{file.name}, is too large: #{file.size}" @errorMessage = "Choose a file less than #{MAX_FILE_SIZE / 1024}kB" + @_clearFile() return reader = @_reader = new FileReader @@ -57,10 +58,13 @@ module.exports = class MarkdownImageController extends BaseController if $image[0].naturalHeight > MAX_HEIGHT logger.warning "The choosen file, #{file.name}, is too tall: #{$image[0].naturalHeight}" @errorMessage = "Choose an image less than #{MAX_HEIGHT}px tall" + @_clearFile() return + if $image[0].naturalWidth > MAX_WIDTH logger.warning "The choosen file, #{file.name}, is too wide: #{$image[0].naturalWidth}" @errorMessage = "Choose an image less than #{MAX_WIDTH}px wide" + @_clearFile() return index = reader.result.indexOf ',' @@ -74,6 +78,7 @@ module.exports = class MarkdownImageController extends BaseController @model.encodedData = encodedData logger.info "loaded #{encodedData.length} bytes from #{file.name} as #{mimeType}" @errorMessage = null + @_clearFile() logger.info "starting to read local file: #{file.name}" reader.readAsDataURL file @@ -102,6 +107,7 @@ module.exports = class MarkdownImageController extends BaseController @$image = @$('img') @$fileName = @$('.fileName p') @$button = @$('button') + @$form = @$('form') @$input = @$('input') @$errorContainer = @$('.error') @$errorMessage = @$('.error p') @@ -147,3 +153,8 @@ module.exports = class MarkdownImageController extends BaseController return _.extend super, 'click button': 'onButtonClicked' 'change input': 'onFileChanged' + + # Private Methods ############################################################################## + + _clearFile: -> + @$form[0].reset() diff --git a/src/jade/templates/markdown_image.jade b/src/jade/templates/markdown_image.jade index 0e6004b38..de5a26ec3 100644 --- a/src/jade/templates/markdown_image.jade +++ b/src/jade/templates/markdown_image.jade @@ -12,5 +12,5 @@ .fileName: p .error: p button - input(type="file", accept="image/gif,image/jpeg,image/png" multiple="false") + form: input(type="file", accept="image/gif,image/jpeg,image/png" multiple="false") .loading: p checking for image...