74 lines
1.8 KiB
CoffeeScript
74 lines
1.8 KiB
CoffeeScript
|
Locomotive.Views.ThemeAssets ||= {}
|
||
|
|
||
|
class Locomotive.Views.ThemeAssets.ImagePickerView extends Backbone.View
|
||
|
|
||
|
tag: 'div'
|
||
|
|
||
|
events:
|
||
|
'click ul.list a': 'select_asset'
|
||
|
|
||
|
initialize: ->
|
||
|
_.bindAll(@, 'add_assets', 'add_asset')
|
||
|
@collection.bind('reset', @add_assets)
|
||
|
|
||
|
render: ->
|
||
|
$(@el).html(ich.theme_image_picker())
|
||
|
|
||
|
@collection.fetch data: { content_type: 'image' }
|
||
|
|
||
|
return @
|
||
|
|
||
|
create_or_show_dialog: ->
|
||
|
@dialog ||= $(@el).dialog
|
||
|
modal: true
|
||
|
width: 600,
|
||
|
open: =>
|
||
|
$('.ui-widget-overlay').bind 'click', => @close()
|
||
|
|
||
|
link = @$('.actions a')
|
||
|
el = @$('.actions input[type=file]')
|
||
|
|
||
|
window.ImageUploadify.build el,
|
||
|
url: link.attr('href')
|
||
|
data_name: el.attr('name')
|
||
|
height: link.outerHeight()
|
||
|
width: link.outerWidth()
|
||
|
success: (model) => @add_asset(new Locomotive.Models.ThemeAsset(model))
|
||
|
error: (msg) => @shake()
|
||
|
|
||
|
@$('.button-wrapper').hover(
|
||
|
=> link.addClass('hover'),
|
||
|
=> link.removeClass('hover')
|
||
|
)
|
||
|
|
||
|
@open()
|
||
|
|
||
|
open: ->
|
||
|
$(@el).dialog('open')
|
||
|
|
||
|
close: ->
|
||
|
$(@el).dialog('close')
|
||
|
|
||
|
shake: ->
|
||
|
$(@el).parents('.ui-dialog').effect('shake', { times: 4 }, 100)
|
||
|
|
||
|
center: ->
|
||
|
$(@el).dialog('option', 'position', 'center')
|
||
|
|
||
|
select_asset: (event) ->
|
||
|
event.stopPropagation() & event.preventDefault()
|
||
|
if @options.on_select
|
||
|
@options.on_select($(event.target).html())
|
||
|
|
||
|
add_assets: (collection) ->
|
||
|
if collection.length == 0
|
||
|
@$('p.no-items').show()
|
||
|
else
|
||
|
@$('ul.list').show()
|
||
|
collection.each @add_asset
|
||
|
|
||
|
setTimeout (=> @create_or_show_dialog()), 30 # disable flickering
|
||
|
|
||
|
add_asset: (asset) ->
|
||
|
@$('ul.list').append(ich.theme_asset(asset.toJSON()))
|
||
|
@center() if @editor
|