2011-12-19 13:15:11 +00:00
|
|
|
Locomotive.Views.ContentTypes ||= {}
|
|
|
|
|
|
|
|
class Locomotive.Views.ContentTypes.CustomFieldsView extends Backbone.View
|
|
|
|
|
|
|
|
tagName: 'div'
|
|
|
|
|
|
|
|
className: 'list'
|
|
|
|
|
|
|
|
_entry_views = []
|
|
|
|
|
|
|
|
events:
|
|
|
|
'click .new-entry a.add': 'add_entry'
|
|
|
|
'keypress .new-entry input[type=text]': 'add_on_entry_from_enter'
|
|
|
|
|
|
|
|
initialize: ->
|
|
|
|
_.bindAll(@, 'refresh_position_entries')
|
|
|
|
|
|
|
|
render: ->
|
|
|
|
$(@el).html(ich.custom_fields_list(@model.toJSON()))
|
|
|
|
|
|
|
|
@render_entries()
|
|
|
|
|
|
|
|
@make_list_sortable()
|
|
|
|
|
|
|
|
return @
|
|
|
|
|
|
|
|
make_list_sortable: ->
|
|
|
|
@sortable_list = @$('> ul').sortable
|
2012-01-18 00:43:01 +00:00
|
|
|
handle: '.handle'
|
2011-12-19 13:15:11 +00:00
|
|
|
items: 'li.custom-field'
|
|
|
|
axis: 'y'
|
|
|
|
update: @refresh_position_entries
|
|
|
|
|
|
|
|
refresh_position_entries: ->
|
|
|
|
_.each @_entry_views, (view) ->
|
|
|
|
view.model.set position: $(view.el).index()
|
|
|
|
|
2012-01-18 00:43:01 +00:00
|
|
|
find_entry_view: (key) ->
|
|
|
|
_.find @_entry_views, (view) ->
|
|
|
|
if key.length > 3
|
|
|
|
view.model.id == key
|
|
|
|
else
|
|
|
|
view.model.get('position') == parseInt(key)
|
|
|
|
|
2011-12-19 13:15:11 +00:00
|
|
|
add_entry: (event) ->
|
|
|
|
event.stopPropagation() & event.preventDefault()
|
|
|
|
|
2011-12-22 15:45:42 +00:00
|
|
|
labelInput = @$('> .new-entry input[name=label]')
|
|
|
|
typeInput = @$('> .new-entry select')
|
2011-12-19 13:15:11 +00:00
|
|
|
|
|
|
|
if labelInput.val() != ''
|
|
|
|
custom_field = new Locomotive.Models.CustomField label: labelInput.val(), type: typeInput.val()
|
|
|
|
|
2011-12-22 23:45:32 +00:00
|
|
|
@model.get('entries_custom_fields').add(custom_field)
|
2011-12-19 13:15:11 +00:00
|
|
|
|
|
|
|
@_insert_entry(custom_field)
|
|
|
|
|
2011-12-22 15:45:42 +00:00
|
|
|
@$('> .empty').hide()
|
2011-12-19 13:15:11 +00:00
|
|
|
|
|
|
|
@sortable_list.sortable('refresh')
|
|
|
|
|
|
|
|
labelInput.val('') # reset for further entries
|
|
|
|
|
|
|
|
add_on_entry_from_enter: (event) ->
|
|
|
|
return if event.keyCode != 13
|
|
|
|
@add_entry(event)
|
|
|
|
|
|
|
|
remove_entry: (custom_field, view) ->
|
2012-01-24 20:16:53 +00:00
|
|
|
if custom_field.isNew()
|
|
|
|
@model.get('entries_custom_fields').remove(custom_field)
|
|
|
|
else
|
|
|
|
custom_field.set _destroy: true
|
|
|
|
|
2011-12-19 13:15:11 +00:00
|
|
|
@_entry_views = _.reject @_entry_views, (_view) -> _view == view
|
|
|
|
|
|
|
|
@refresh_position_entries()
|
|
|
|
|
2012-01-24 20:16:53 +00:00
|
|
|
@$('> .empty').show() if @_entry_views.length == 0
|
2011-12-19 13:15:11 +00:00
|
|
|
|
|
|
|
render_entries: ->
|
2011-12-22 23:45:32 +00:00
|
|
|
if @model.get('entries_custom_fields').length == 0
|
2011-12-22 15:45:42 +00:00
|
|
|
@$('> .empty').show()
|
2011-12-19 13:15:11 +00:00
|
|
|
else
|
2011-12-22 23:45:32 +00:00
|
|
|
@model.get('entries_custom_fields').each (custom_field) =>
|
2011-12-19 13:15:11 +00:00
|
|
|
@_insert_entry(custom_field)
|
|
|
|
|
2011-12-21 14:24:39 +00:00
|
|
|
_insert_entry: (custom_field) ->
|
|
|
|
view = new Locomotive.Views.ContentTypes.CustomFieldEntryView model: custom_field, parent_view: @
|
|
|
|
|
|
|
|
(@_entry_views ||= []).push(view)
|
|
|
|
|
2011-12-22 15:45:42 +00:00
|
|
|
@$('> ul').append(view.render().el)
|
2011-12-19 13:15:11 +00:00
|
|
|
|
2011-12-22 15:45:42 +00:00
|
|
|
@refresh_position_entries()
|