Commit 11b5a563

mo khan <mo@mokhan.ca>
2014-07-06 02:52:04
attach a watermark to the photo during upload.
1 parent 76862b7
Changed files (6)
app
assets
controllers
services
application
app/assets/javascripts/backbone/templates/photos/new-modal.jst.ejs
@@ -4,16 +4,13 @@
 </div>
 <div class="modal-body">
   <form id="new-photo" name="photo" class="form-horizontal">
+    <p>
+      <input id="watermark" name="watermark" maxlength="30" size="30" type="text" placeholder="watermark" /> on CakeSide.com
+      <a class="tooltip-item" data-placement="right" rel="tooltip" href="#" data-original-title="Watermark your name or company on each uploaded image" data-animation="true"><i class="icon-question-sign"></i></a>
+    </p>
     <span class="btn btn-default btn-file">
       + Browse... <input id="photo-attachment" name="attachment" type="file" accept="image/*">
     </span>
-    <div class="control-group">
-      <label class="control-label" for="watermark">Watermark</label>
-      <div class="controls">
-        <input class="input-xlarge" id="watermark" maxlength="30" name="watermark" size="30" type="text" value=""> on CakeSide.com
-        <a class="tooltip-item" data-placement="right" rel="tooltip" href="#" data-original-title="Watermark your name or company on each uploaded image" data-animation="true"><i class="icon-question-sign"></i></a>
-      </div>
-    </div>
     <img id="preview-image" src="#" alt="your image" class="hide" />
   </form>
 </div>
app/assets/javascripts/backbone/views/cakes/edit_view.js.coffee
@@ -37,7 +37,6 @@ class CakeSide.Views.Cakes.EditView extends Marionette.CompositeView
   onRender: ->
     @$("#cake_category_id").val(@model.category_id())
     @$('#cake_tags').tagit({ availableTags: ALL_TAGS })
-    @$('.tooltip-item').tooltip()
 
   savedSuccessfully: (cake) =>
     window.location.hash = "cakes/#{cake.id}"
app/assets/javascripts/backbone/views/cakes/new_view.js.coffee
@@ -29,7 +29,6 @@ class CakeSide.Views.Cakes.NewView extends Marionette.ItemView
 
   onRender: ->
     @$("#cake_category_id").val($("#cake_category_id option:first").val())
-    @$('.tooltip-item').tooltip()
     @model.isValid()
 
   savedSuccessfully: (cake) =>
app/assets/javascripts/backbone/views/photos/new_modal_view.js.coffee
@@ -3,11 +3,13 @@ CakeSide.Views.Photos ||= {}
 class CakeSide.Views.Photos.NewModalView extends Marionette.ItemView
   template: JST["backbone/templates/photos/new-modal"]
   ui:
+    watermark: '#watermark'
     upload_button: "#upload-photo-button"
 
   events:
     "click #upload-photo-button": "save"
     "change #photo-attachment": "displayPreview"
+    "keyup #watermark": "updateWatermark"
 
   constructor: (options) ->
     super(options)
@@ -15,6 +17,9 @@ class CakeSide.Views.Photos.NewModalView extends Marionette.ItemView
     @cake = options.cake
     @model = new @collection.model(cake_id: @cake.id)
 
+  onRender: ->
+    @$('.tooltip-item').tooltip()
+
   save: (e) ->
     e.preventDefault()
     e.stopPropagation()
@@ -41,3 +46,6 @@ class CakeSide.Views.Photos.NewModalView extends Marionette.ItemView
 
   closeDialog: (photo) ->
     $('#modal').modal('hide')
+
+  updateWatermark: ->
+    @model.set('watermark', @ui.watermark.val())
app/controllers/api/v1/photos_controller.rb
@@ -21,7 +21,7 @@ module Api
       private
 
       def photo_params
-        params.require(:photo).permit(:image)
+        params.require(:photo).permit(:image, :watermark)
       end
     end
   end
app/services/application/upload_photo.rb
@@ -5,7 +5,7 @@ class UploadPhoto
   end
 
   def run(cake_id, params)
-    photo = @cakes.find(cake_id).photos.create!(image_processing: true)
+    photo = @cakes.find(cake_id).photos.create!(image_processing: true, watermark: params[:watermark])
     @message_bus.publish(:upload_photo, create_message_from(cake_id, params, photo))
     map_from(photo.id, params[:image].original_filename)
   end