Sha256: 52ad0429a3856194e8ed2b6311a23d9f394c905468abd3dddd6107b47b0d86bb

Contents?: true

Size: 1.89 KB

Versions: 2

Compression:

Stored size: 1.89 KB

Contents

Locomotive.Views.Inputs ||= {}

class Locomotive.Views.Inputs.RteView extends Backbone.View

  events:
    'click a.style': 'open_styles_dialog'

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

    $textarea = @$('textarea')

    @editor = new wysihtml5.Editor $textarea.attr('id'),
      toolbar:        "wysihtml5-toolbar-#{$textarea.attr('id')}"
      useLineBreaks:  false
      parserRules:    wysihtml5ParserRules
      stylesheets:    ['<%= stylesheet_path("locomotive/wysihtml5_editor") %>']

    @editor.on 'load', @register_keydown_event
    @editor.on 'change', @on_content_change
    @editor.on 'aftercommand:composer', @on_content_change

    that = @
    setTimeout(
      ->
        that.create_link_view()
        that.create_file_view()
    , 200)

  render: ->
    # do nothing

  open_styles_dialog: (event) ->
    $button = $(event.target).closest('a')
    @$style_popover = @$style_popover || ($button.popover
      placement:  'top'
      content:    $button.next('.style-dialog-content').html()
      html:       true
      title:      undefined).popover('show')

  create_link_view: ->
    @link_view = new Locomotive.Views.Inputs.Rte.LinkView
      el:     @$('a[data-wysihtml5-command=createLink]')
      editor: @editor

    @link_view.render()

  create_file_view: ->
    @file_view = new Locomotive.Views.Inputs.Rte.FileView
      el:     @$('a[data-wysihtml5-command=insertFile]')
      editor: @editor

    @file_view.render()

  register_keydown_event: ->
    @$('.wysihtml5-sandbox').contents().find('body').on 'keyup', =>
      @on_content_change()

  on_content_change: ->
    PubSub.publish 'inputs.text_changed',
      view:     @
      content:  @editor.getValue()

  remove: ->
    @link_view.remove()
    @file_view.remove()

    @editor.stopObserving('onLoad', @register_keydown_event)
    @editor.stopObserving('onChange', @on_content_change)

    super

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
locomotivecms-3.0.0.rc2 app/assets/javascripts/locomotive/views/inputs/rte_view.js.coffee.erb
locomotivecms-3.0.0.rc1 app/assets/javascripts/locomotive/views/inputs/rte_view.js.coffee.erb