Skip to content

Instantly share code, notes, and snippets.

@elbuo8
Created October 2, 2012 22:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save elbuo8/3823662 to your computer and use it in GitHub Desktop.
Save elbuo8/3823662 to your computer and use it in GitHub Desktop.
View = require './view'
template = require './templates/thumb'
module.exports = class ThumbnailView extends View
tagName: 'li'
template: template
events:
'click .delete-photo': 'deleteImage'
getRenderData: ->
console.log 'getRenderData'
return @model.get('photos')[-1..]
render: ->
@$el.html(@template(@getRenderData())).attr('id', "image-#{@cid}")
console.log @$el, @cid
deleteImage: (e) ->
console.log e
e.preventDefault()
#Remove from DOM and from DB and from s3
console.log 'Delete Image'
console.log @model
View = require './view'
template = require './templates/new_modal'
Page = require 'models/page_model'
ThumbView = require './thumbnail_view'
module.exports = class PageModalView extends View
id:'new-modal'
template: template
events:
'click .save': 'savePage',
'click .delete': 'deletePage',
'click .close': 'closeEvent'
getRenderData: ->
if @model
return @model.toJSON()
else
return {}
render: ->
$('#app').toggleClass 'fixed'
super 'render'
afterRender: ->
# simulate file upload done
# file = {links:[something:'http://google.com']}
# thumb = new ThumbView({model:file})
# @$el.find('.image-preview').append thumb.render().el
# thumb2 = new ThumbView({model:file})
# @$el.find('.image-preview').append thumb2.render().el
# thumb3 = new ThumbView({model:file})
# @$el.find('.image-preview').append thumb3.render().el
# Init file upload
$input = @$el.find('.imageFile')
$dropzone = @$el.find('.dropzone')
$input.fileupload
url: '/api/photo'
dropZone: $dropzone
paramName: 'photo1'
maxNumberOfFiles: 3
maxFileSize: 5000000
acceptFileTypes: '/(\.|\/)(gif|jpe?g|png)$/i'
formData:
'key': '831627778ba8a8f5aded7190078fed13'
dataType: 'json'
dragover: (e) ->
$dropzone.addClass('over')
drop: ->
$dropzone.removeClass('over')
$dropzone.addClass('uploading')
$dropzone.html 'Uploading...'
done: (e, data) =>
$.each data.result, (index, file) =>
if @model
photos = @model.get('photos')
photos.push(file)
@model.set('photos', photos)
console.log @model
else if @newPage
photos = @newPage.get('photos')
photos.push(file)
@newPage.set('photos', photos)
console.log @newPage
else
@newPage = new Page()
@newPage.set('photos', [file])
console.log @newPage
thumb = new ThumbView({model:@model or @newPage})
@$el.find('.image-preview').append thumb.render().el
stop: (e) ->
$dropzone.html "Done!"
$dropzone.remove()
savePage: (e) ->
e.preventDefault()
# Show spinner
# Get field data
_product_name = @$el.find('.product_name').val()
_description = @$el.find('.description').val()
_price = @$el.find('.price').val()
_shipping = @$el.find('.shipping').val()
_paypal = @$el.find('.paypal').val()
_phone = @$el.find('.phone').val()
_name = @$el.find('.name').val()
if @model
@model.save {
product_name: _product_name
description: _description
price: _price
shipping: _shipping
paypal: _paypal
phone: _phone
name: _name
owner: application.user
},
success: (page) =>
@close()
# Render page again
application.pageView.update(page)
error: (page, error) ->
console.log 'error:', error
else
# Create a new model if needed
unless @newPage
@newPage = new Page()
# Public Read ACL
acl = new Parse.ACL application.user
acl.setPublicReadAccess true
@newPage.setACL acl
@newPage.save {
product_name: _product_name
description: _description
price: _price
shipping: _shipping
paypal: _paypal
phone: _phone
name: _name
owner: application.user
},
success: (page) =>
application.router.navigate page.id, trigger: true
@close()
error: (page, error) ->
console.log 'error:', page, error
deletePage: (e) ->
e.preventDefault()
if application.user and @model.get('owner').id == application.user.id
@model.destroy
success: (page) =>
application.router.navigate '/', trigger: true
@close()
error: (page, error) ->
console.log 'Error deleting page'
else
console.log 'Not your page to delete dude'
close: ->
# Release main scroll
$('#app').toggleClass 'fixed'
# Destroy fileupload
$input = @$el.find('.imageFile')
$input.fileupload 'destroy'
# Close modal
@$el.remove()
closeEvent: (e) ->
e.preventDefault()
if window.location.pathname == '/new'
application.router.navigate '', trigger: true
# Release main scroll
$('#app').toggleClass 'fixed'
# Destroy fileupload
$input = @$el.find('.imageFile')
$input.fileupload 'destroy'
# Close modal
@$el.remove()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment