modeset/cmsimple

View on GitHub
app/assets/javascripts/cmsimple/panels/images/list.coffee

Summary

Maintainability
Test Coverage
#= require cmsimple/models/image

#= require cmsimple/views/image_library/_item

class CMSimple.Panels.ImageLibrary.List extends Spine.Controller
  events:
    'click .media-actions > .info' : 'toggleInfo'
    'click .media-info > .close' : 'toggleInfo'
    'click [data-full-url]' : 'triggerImage'
    'click .delete' : 'deleteImage'

  constructor: (el)->
    super el: $(el)

    CMSimple.Image.bind 'refresh change', => @render()

  render: ->
    @html('')
    @addImage image for image in CMSimple.Image.all()

  filterByGeometry: (geometry)->
    @html('')
    @addImage image for image in CMSimple.Image.allWithinGeometry(geometry)

  addImage: (image)->
    @append JST['cmsimple/views/image_library/_item'](image)

  toggleInfo: (e) ->
    e.preventDefault()
    info = $(e.target).parents('li').first().find('.media-info')[0]
    $(info).toggleClass('active')

  triggerImage: (e)->
    img = $(e.target)
    image = CMSimple.Image.find(img.data('id'))
    @trigger 'image:selected',
        src: img.data('full-url'),
        alt: image.title,
        'image-id': image.id

  deleteImage: (e)->
    e.preventDefault()
    link = $(e.target)
    if confirm 'Are you sure you would like to delete this image?'
      id = link.parents('[data-id]').data('id')
      image = CMSimple.Image.find(id)
      image.destroy()