78 lines
2.1 KiB
CoffeeScript
78 lines
2.1 KiB
CoffeeScript
#= require ../shared/form_view
|
|
|
|
Locomotive.Views.ContentTypes ||= {}
|
|
|
|
class Locomotive.Views.ContentTypes.FormView extends Locomotive.Views.Shared.FormView
|
|
|
|
el: '#content'
|
|
|
|
events:
|
|
'submit': 'save'
|
|
|
|
initialize: ->
|
|
@model = new Locomotive.Models.ContentType(@options.content_type)
|
|
|
|
window.foo = @model
|
|
|
|
Backbone.ModelBinding.bind @
|
|
|
|
render: ->
|
|
super()
|
|
|
|
@render_custom_fields()
|
|
|
|
@slugify_name() # slugify the slug field from name
|
|
|
|
@enable_liquid_editing() # turn textarea into editable liquid code zone
|
|
|
|
@enable_public_form_checkbox()
|
|
|
|
@enable_order_by_toggler()
|
|
|
|
return @
|
|
|
|
render_custom_fields: ->
|
|
@custom_fields_view = new Locomotive.Views.ContentTypes.CustomFieldsView model: @model
|
|
|
|
@$('#custom_fields_input').append(@custom_fields_view.render().el)
|
|
|
|
slugify_name: ->
|
|
@$('#content_type_name').slugify(target: @$('#content_type_slug'), sep: '_')
|
|
|
|
enable_liquid_editing: ->
|
|
input = @$('#content_type_raw_item_template')
|
|
@editor = CodeMirror.fromTextArea input.get()[0],
|
|
mode: 'liquid'
|
|
autoMatchParens: false
|
|
lineNumbers: false
|
|
passDelay: 50
|
|
tabMode: 'shift'
|
|
theme: 'default medium'
|
|
onChange: (editor) => @model.set(raw_item_template: editor.getValue())
|
|
|
|
enable_public_form_checkbox: ->
|
|
@_enable_checkbox 'public_form_enabled',
|
|
on_callback: => @$('#content_type_public_form_accounts_input').show()
|
|
off_callback: => @$('#content_type_public_form_accounts_input').hide()
|
|
|
|
enable_order_by_toggler: ->
|
|
@$('#content_type_order_by_input').bind 'change', (event) =>
|
|
target = @$('#content_type_order_direction_input')
|
|
if $(event.target).val() == '_position_in_list'
|
|
target.hide()
|
|
else
|
|
target.show()
|
|
|
|
show_error: (attribute, message, html) ->
|
|
if attribute == 'contents_custom_fields'
|
|
return if _.isEmpty(message)
|
|
for _message, index in message
|
|
@custom_fields_view._entry_views[index].show_error(_message[0])
|
|
else
|
|
super
|
|
|
|
remove: ->
|
|
@custom_fields_view.remove()
|
|
super
|
|
|