Sha256: fbd365eb57cc3c9b779c12c37c393e07dadd1783203179965d142c9ba7ef4edd

Contents?: true

Size: 1.97 KB

Versions: 9

Compression:

Stored size: 1.97 KB

Contents

#= require ../shared/form_view

Locomotive.Views.Snippets ||= {}

class Locomotive.Views.Snippets.FormView extends Locomotive.Views.Shared.FormView

  el: '#content'

  events:
    'click a#image-picker-link':   'open_image_picker'
    'click a#copy-template-link':  'replace_template'
    'submit':                      'save'

  initialize: ->
    _.bindAll(@, 'insert_image')

    @model = new Locomotive.Models.Snippet(@options.snippet)

    @image_picker_view = new Locomotive.Views.ThemeAssets.ImagePickerView
      collection: new Locomotive.Models.ThemeAssetsCollection()
      on_select:  @insert_image

    @image_picker_view.render()

    Backbone.ModelBinding.bind @

  render: ->
    super()

    # slugify the slug field from name
    @slugify_name()

    # liquid code textarea
    @enable_liquid_editing()

    return @

  slugify_name: ->
    @$('#snippet_name').slugify
      target:     @$('#snippet_slug')
      url:        window.permalink_service_url
      underscore: true

  open_image_picker: (event) ->
    event.stopPropagation() & event.preventDefault()
    @image_picker_view.editor = @editor
    @image_picker_view.fetch_assets()

  insert_image: (path) ->
    text = "{{ '#{path}' | theme_image_url }}"
    @editor.replaceSelection(text)
    @image_picker_view.close()

  replace_template: (event) ->
    event.stopPropagation() & event.preventDefault()

    link = $(event.target).closest('a')

    $.rails.ajax
      url:       link.attr('href')
      type:      'get'
      dataType:  'json'
      success:  (data) =>
        @editor.setValue(data.template)

  enable_liquid_editing: ->
    input = @$('#snippet_template')
    @editor = CodeMirror.fromTextArea input.get()[0],
      mode:             'liquid'
      autoMatchParens:  false
      lineNumbers:      false
      passDelay:        50
      tabMode:          'shift'
      theme:            'default medium'
      onChange: (editor) => @model.set(template: editor.getValue())

  after_inputs_fold: ->
    @editor.refresh()

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
locomotive_cms-2.1.4 app/assets/javascripts/locomotive/views/snippets/_form_view.js.coffee
locomotive_cms-2.1.3 app/assets/javascripts/locomotive/views/snippets/_form_view.js.coffee
locomotive_cms-2.1.2 app/assets/javascripts/locomotive/views/snippets/_form_view.js.coffee
locomotive_cms-2.1.1 app/assets/javascripts/locomotive/views/snippets/_form_view.js.coffee
locomotive_cms-2.1.0 app/assets/javascripts/locomotive/views/snippets/_form_view.js.coffee
locomotive_cms-2.0.3 app/assets/javascripts/locomotive/views/snippets/_form_view.js.coffee
locomotive_cms-2.0.2 app/assets/javascripts/locomotive/views/snippets/_form_view.js.coffee
locomotive_cms-2.0.1 app/assets/javascripts/locomotive/views/snippets/_form_view.js.coffee
locomotive_cms-2.0.0 app/assets/javascripts/locomotive/views/snippets/_form_view.js.coffee