Sha256: 3e61968cf7f09ea66d3e0eadd947df777b2999498d589560f9eff3762a325da0

Contents?: true

Size: 1.45 KB

Versions: 1

Compression:

Stored size: 1.45 KB

Contents

$ = jQuery

$.fn.uploaderWidget = (options = {}) ->
  @each ->
    $this = $(this)
    data = $this.data('uploaderWidget')
    if (!data)
      $this.data('uploaderWidget', new UploaderWidget(this, options))
    if (typeof options is 'string')
      data[options]()

class UploaderWidget
  constructor: (@dom_id, options = {}) ->
    defaults =
      dataType: 'json'
      autoUpload: true
      paramName: 'asset[data]'
      formData: (form) -> return []
      namespace: 'uploader'
      uploadTemplateId: 'template-upload-'
      downloadTemplateId: 'template-download-'

    @options = $.extend defaults, options

    this._setup()

  _setup: ->
    @element = $(@dom_id)
    @container = @element.find('div.uploader-files')
    @template = @element.data('tpml')
    @input = @element.find('input[type="file"]:eq(0)')

    @options['dropZone'] = @element
    @options['filesContainer'] = @container
    @options['uploadTemplateId'] += @template
    @options['downloadTemplateId'] += @template

    this._initFileupload()

  _initFileupload: ->
    @input.fileupload(@options)

    @uploader = (@input.data('blueimp-fileupload') || @input.data('fileupload'))

    this._load() if @element.data('exists')

  _load: ->
    $.ajax(
      url: @input.data('url')
      dataType: 'json'
      method: 'GET'
      success: (data) =>
        if data['files']?
          this.render(data['files'])
    )

  render: (files) ->
    @uploader._renderDownload(files).appendTo(@container)

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rails-uploader-0.3.0 app/assets/javascripts/uploader/jquery.uploader.js.coffee