Sha256: 41b92968375a592fa541b6dcbc28a0bf36c802629d5f0a36f407734adbfb021d

Contents?: true

Size: 1.74 KB

Versions: 6

Compression:

Stored size: 1.74 KB

Contents

Locomotive.Views.EditableElements ||= {}

class Locomotive.Views.EditableElements.IframeView extends Backbone.View

  el: '.preview iframe'

  startup: true

  initialize: ->
    # shortcut
    @window = $(@el)[0].contentWindow

    # when the url of the iframe changes, process
    $(@el).load (event) => @on_load(event)

  reload: ->
    $(@el).attr('src', @preview_url)

  on_load: (event) ->
    # Able to get the path to the edit form?
    if (path = @edit_view_path())?
      @preview_url = @window.document.location.href

      if !@startup
        History.replaceState({ live_editing: true, url: @preview_url }, '', path)
        @options.parent_view.replace_edit_view(path)
      else
        @startup = false

    @build_and_render_page_view()

  edit_view_path: ->
    # the browser might be unable to load the iframe because of
    # the 'X-Frame-Options' option which is set to 'SAMEORIGIN'.
    try
      $document = $(@window.document)
      return $document.find('meta[name=locomotive-editable-elements-path]').attr('content')
    catch e
      # reload the iframe with the previous url and display an error message
      @reload()
      Locomotive.notify $(@el).data('redirection-error'), 'warning'
      return null

  build_and_render_page_view: ->
    @page_view.remove() if @page_view?
    @page_view = new Locomotive.Views.EditableElements.PageView
      el:           $(@window.document.body)
      parent_view:  @
      button_labels:
        edit: $(@el).data('edit-label')
    @page_view.render()

    # insert the highlighter CSS (path to the CSS in the iframe data)
    window.addStylesheet(@window.document, $(@el).data('style-path'))

  remove: ->
    super()
    @page_view.remove() if @page_view?
    _.each @tokens, (token) -> PubSub.unsubscribe(token)

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
locomotivecms-3.0.0 app/assets/javascripts/locomotive/views/editable_elements/iframe_view.js.coffee
locomotivecms-3.0.0.rc7 app/assets/javascripts/locomotive/views/editable_elements/iframe_view.js.coffee
locomotivecms-3.0.0.rc6 app/assets/javascripts/locomotive/views/editable_elements/iframe_view.js.coffee
locomotivecms-3.0.0.rc5 app/assets/javascripts/locomotive/views/editable_elements/iframe_view.js.coffee
locomotivecms-3.0.0.rc4 app/assets/javascripts/locomotive/views/editable_elements/iframe_view.js.coffee
locomotivecms-3.0.0.rc3 app/assets/javascripts/locomotive/views/editable_elements/iframe_view.js.coffee