Sha256: fe4e3e19d827251213c8333d83c315b012111e675987a64b6e1f379e9f03c339

Contents?: true

Size: 1.83 KB

Versions: 30

Compression:

Stored size: 1.83 KB

Contents

Locomotive.Views.EditableElements ||= {}

class Locomotive.Views.EditableElements.FileView extends Backbone.View

  tagName: 'li'

  className: 'file input'

  states:
    change: false
    delete: false

  events:
    'click a.change': 'toggle_change'
    'click a.delete': 'toggle_delete'

  render: ->
    $(@el).html(ich.editable_file_input(@model.toJSON()))

    # only in HTML 5
    @$('input[type=file]').bind 'change', (event) =>
      input = $(event.target)[0]
      if input.files?
        @model.set(source: input.files[0])

    return @

  after_render: ->
    # do nothing

  refresh: ->
    @$('input[type=file]').unbind 'change'
    @states = { 'change': false, 'delete': false }
    @render()

  toggle_change: (event) ->
    @_toggle event, 'change',
      on_change: =>
        @$('a:first').hide() & @$('input[type=file]').show() & @$('a.delete').hide()
      on_cancel: =>
        @model.set(source: null)
        @$('a:first').show() & @$('input[type=file]').val('').hide() & @$('a.delete').show()

  toggle_delete: (event) ->
    @_toggle event, 'delete',
      on_change: =>
        @$('a:first').addClass('deleted') & @$('a.change').hide()
        @$('input[type=hidden].remove-flag').val('1')
        @model.set('remove_source': true)
      on_cancel: =>
        @$('a:first').removeClass('deleted') & @$('a.change').show()
        @$('input[type=hidden].remove-flag').val('0')
        @model.set('remove_source': false)

  _toggle: (event, state, options) ->
    event.stopPropagation() & event.preventDefault()

    button  = $(event.target)
    label   = button.data('alt-label')

    unless @states[state]
      options.on_change()
    else
      options.on_cancel()

    button.data('alt-label', button.html())

    button.html(label)

    @states[state] = !@states[state]

  remove: ->
    @$('input[type=file]').unbind 'change'
    super

Version data entries

30 entries across 30 versions & 1 rubygems

Version Path
locomotive_cms-2.5.7 app/assets/javascripts/locomotive/views/editable_elements/file_view.js.coffee
locomotive_cms-2.5.6 app/assets/javascripts/locomotive/views/editable_elements/file_view.js.coffee
locomotive_cms-2.5.6.rc2 app/assets/javascripts/locomotive/views/editable_elements/file_view.js.coffee
locomotive_cms-2.5.6.rc1 app/assets/javascripts/locomotive/views/editable_elements/file_view.js.coffee
locomotive_cms-2.5.5 app/assets/javascripts/locomotive/views/editable_elements/file_view.js.coffee
locomotive_cms-2.5.4 app/assets/javascripts/locomotive/views/editable_elements/file_view.js.coffee
locomotive_cms-2.5.3 app/assets/javascripts/locomotive/views/editable_elements/file_view.js.coffee
locomotive_cms-2.5.2 app/assets/javascripts/locomotive/views/editable_elements/file_view.js.coffee
locomotive_cms-2.5.1 app/assets/javascripts/locomotive/views/editable_elements/file_view.js.coffee
locomotive_cms-2.5.0 app/assets/javascripts/locomotive/views/editable_elements/file_view.js.coffee
locomotive_cms-2.5.0.rc3 app/assets/javascripts/locomotive/views/editable_elements/file_view.js.coffee
locomotive_cms-2.5.0.rc2 app/assets/javascripts/locomotive/views/editable_elements/file_view.js.coffee
locomotive_cms-2.5.0.rc1 app/assets/javascripts/locomotive/views/editable_elements/file_view.js.coffee
locomotive_cms-2.4.1 app/assets/javascripts/locomotive/views/editable_elements/file_view.js.coffee
locomotive_cms-2.4.0 app/assets/javascripts/locomotive/views/editable_elements/file_view.js.coffee
locomotive_cms-2.3.1 app/assets/javascripts/locomotive/views/editable_elements/file_view.js.coffee
locomotive_cms-2.3.0 app/assets/javascripts/locomotive/views/editable_elements/file_view.js.coffee
locomotive_cms-2.2.3 app/assets/javascripts/locomotive/views/editable_elements/file_view.js.coffee
locomotive_cms-2.2.2 app/assets/javascripts/locomotive/views/editable_elements/file_view.js.coffee
locomotive_cms-2.2.1 app/assets/javascripts/locomotive/views/editable_elements/file_view.js.coffee