Sha256: 4f01d89aa5a08968ccc1ab715dc3129d64dd776e98ae08d875b1f507b3ef856c

Contents?: true

Size: 1.61 KB

Versions: 15

Compression:

Stored size: 1.61 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
      }

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

    def save_draft_button(obj)
      path = new_item_version_path(item_type: class_for(obj), item_id: obj.id)
      css_class = 'btn btn-primary btn-block draft'
      data = {
        'modal-remote' => true,
        'modal-handler' => 'Tenon.features.NewItemVersionHandler',
        'modal-title' => 'Save Draft'
      }
      link_to 'Save Draft', path, class: css_class, data: data
    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

    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
      }

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

      data
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
tenon-1.1.4 app/helpers/tenon/item_version_helper.rb
tenon-1.1.3 app/helpers/tenon/item_version_helper.rb
tenon-1.1.2 app/helpers/tenon/item_version_helper.rb
tenon-1.1.1 app/helpers/tenon/item_version_helper.rb
tenon-1.0.76 app/helpers/tenon/item_version_helper.rb
tenon-1.0.75 app/helpers/tenon/item_version_helper.rb
tenon-1.0.74 app/helpers/tenon/item_version_helper.rb
tenon-1.0.73 app/helpers/tenon/item_version_helper.rb
tenon-1.0.72 app/helpers/tenon/item_version_helper.rb
tenon-1.0.71 app/helpers/tenon/item_version_helper.rb
tenon-1.0.70 app/helpers/tenon/item_version_helper.rb
tenon-1.0.69 app/helpers/tenon/item_version_helper.rb
tenon-1.0.68 app/helpers/tenon/item_version_helper.rb
tenon-1.0.67 app/helpers/tenon/item_version_helper.rb
tenon-1.0.66 app/helpers/tenon/item_version_helper.rb