Sha256: c01914938d6d8f426a3b9c019c9dcca3c9fd2c7fc8c4a5d2b26dadf0d165a673

Contents?: true

Size: 1.88 KB

Versions: 9

Compression:

Stored size: 1.88 KB

Contents

module Tenon
  module ItemVersionHelper
    def autosaving_form_for(obj, opts = {}, &blk)
      data = build_data(obj, opts)

      default_opts = {
        builder: Tenon::FormBuilder,
        data: data,
        validate: true
      }

      form_for(obj, default_opts.merge(opts), &blk)
    end

    def save_draft_link(obj)
      path = new_item_version_path(item_type: class_for(obj), item_id: obj.id)
      css_class = 'draft'
      data = {
        'modal-remote' => true,
        'modal-handler' => 'Tenon.features.NewItemVersionHandler',
        'modal-title' => 'Save Draft'
      }
      link_to path, class: css_class, data: data do
        content_tag(:i, 'cloud_queue', class: 'material-icon') +
        'Save Draft'
      end
    end

    def clear_draft_link
      path = url_for(version: nil)
      link_to 'Load Active Version', path, class: 'delete-link'
    end

    def load_draft_link(obj)
      path = item_versions_path(item_type: obj.class.to_s, item_id: obj.id)
      data = {
        'modal-remote' => true,
        'modal-title' => 'Load Draft',
        'modal-handler' => 'Tenon.features.ItemVersionIndexHandler'
      }
      link_to 'Load Draft', path, class: 'delete-link', data: data
    end

    def item_version_active_path(obj)
      if obj.persisted?
        polymorphic_path [:edit, obj]
      else
        new_polymorphic_path obj.class
      end
    end

    private

    def class_for(obj)
      if obj.class < Draper::Decorator
        obj.object.class.to_s
      else
        obj.class.to_s
      end
    end

    def build_data(obj, opts)
      data = {
        'item-type' => class_for(obj),
        'item-id' => obj.id,
        'autosave' => !params[:version],
        'version-create-path' => item_versions_path,
        'protect-changes' => true
      }

      if opts[:data]
        data = data.merge(opts[:data])
        opts.delete(:data)
      end

      data
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
tenon-2.0.8 app/helpers/tenon/item_version_helper.rb
tenon-2.0.7 app/helpers/tenon/item_version_helper.rb
tenon-2.0.6 app/helpers/tenon/item_version_helper.rb
tenon-2.0.5 app/helpers/tenon/item_version_helper.rb
tenon-2.0.4 app/helpers/tenon/item_version_helper.rb
tenon-2.0.3 app/helpers/tenon/item_version_helper.rb
tenon-2.0.2 app/helpers/tenon/item_version_helper.rb
tenon-2.0.1 app/helpers/tenon/item_version_helper.rb
tenon-2.0.0 app/helpers/tenon/item_version_helper.rb