trestle 0.8.2 → 0.8.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/app/assets/stylesheets/trestle/core/_defaults.scss +4 -4
- data/app/controllers/trestle/application_controller.rb +18 -0
- data/app/helpers/trestle/container_helper.rb +24 -0
- data/app/helpers/trestle/grid_helper.rb +1 -1
- data/app/helpers/trestle/table_helper.rb +0 -2
- data/app/helpers/trestle/url_helper.rb +4 -3
- data/app/views/trestle/application/_header.html.erb +2 -0
- data/app/views/trestle/application/_layout.html.erb +8 -8
- data/config/routes.rb +2 -2
- data/lib/generators/trestle/admin/admin_generator.rb +26 -0
- data/lib/generators/trestle/admin/templates/admin.rb.erb +5 -0
- data/lib/generators/trestle/admin/templates/index.html.erb +5 -0
- data/lib/generators/trestle/install/templates/trestle.rb.erb +20 -0
- data/lib/generators/trestle/resource/resource_generator.rb +1 -1
- data/lib/trestle/adapters/active_record_adapter.rb +2 -6
- data/lib/trestle/admin/builder.rb +5 -8
- data/lib/trestle/configuration.rb +84 -11
- data/lib/trestle/resource/builder.rb +4 -0
- data/lib/trestle/resource.rb +21 -2
- data/lib/trestle/table/actions_column.rb +12 -9
- data/lib/trestle/table/builder.rb +1 -1
- data/lib/trestle/table/row.rb +12 -4
- data/lib/trestle/table.rb +1 -1
- data/lib/trestle/version.rb +1 -1
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 64b62775f02866abaf0937d6a4e0bec5d86a1a31
|
4
|
+
data.tar.gz: 7707fa64f42e4c771721b9c306c143ce2614e18f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a7bed2fddf9f950463693e7ec502aaf08439240a27075e61d2fc575381e165da4b0c407406d4a02990524c37ea9ce730a76886bea2c57ebee03b0ab935d34b51
|
7
|
+
data.tar.gz: c0dcd718a1bb3ac020924d09bd99f1658da42c7b53122af829822837a1a0c1631bfc942bb6a274d4301e7de5b4e90d00ad32cb242c30485abf88450ba3186dab
|
data/README.md
CHANGED
@@ -11,7 +11,7 @@
|
|
11
11
|
|
12
12
|
> A modern, responsive admin framework for Ruby on Rails
|
13
13
|
|
14
|
-
<img src="https://trestle.io/images/Trestle-Screenshot-1.png?" width="50%" /><img src="https://trestle.io/images/Trestle-Screenshot-2.png?" width="50%" />
|
14
|
+
<img src="https://trestle.io/images/Trestle-Screenshot-1-1x.png?" width="50%" /><img src="https://trestle.io/images/Trestle-Screenshot-2-1x.png?" width="50%" />
|
15
15
|
|
16
16
|
|
17
17
|
## Getting Started
|
@@ -43,10 +43,10 @@ $headings-font-weight: 400 !default;
|
|
43
43
|
$btn-default-bg: #dbdbdb !default;
|
44
44
|
$btn-default-color: white !default;
|
45
45
|
|
46
|
-
$state-success-bg: lighten(#dff0d8,
|
47
|
-
$state-info-bg: lighten(#d9edf7,
|
48
|
-
$state-warning-bg: lighten(#fcf8e3,
|
49
|
-
$state-danger-bg: lighten(#f2dede,
|
46
|
+
$state-success-bg: lighten(#dff0d8, 5%) !default;
|
47
|
+
$state-info-bg: lighten(#d9edf7, 5%) !default;
|
48
|
+
$state-warning-bg: lighten(#fcf8e3, 5%) !default;
|
49
|
+
$state-danger-bg: lighten(#f2dede, 5%) !default;
|
50
50
|
|
51
51
|
$alert-padding: 20px !default;
|
52
52
|
$alert-border-radius: 2px !default;
|
@@ -3,6 +3,24 @@ class Trestle::ApplicationController < ActionController::Base
|
|
3
3
|
|
4
4
|
layout 'trestle/admin'
|
5
5
|
|
6
|
+
# Global helpers
|
7
|
+
self.helpers_path += Rails.application.helpers_paths
|
8
|
+
helper Trestle.config.helper_module
|
9
|
+
helper *Trestle.config.helpers
|
10
|
+
|
11
|
+
# Global callbacks
|
12
|
+
Trestle.config.before_actions.each do |action|
|
13
|
+
before_action(action.options, &action.block)
|
14
|
+
end
|
15
|
+
|
16
|
+
Trestle.config.after_actions.each do |action|
|
17
|
+
after_action(action.options, &action.block)
|
18
|
+
end
|
19
|
+
|
20
|
+
Trestle.config.around_actions.each do |action|
|
21
|
+
around_action(action.options, &action.block)
|
22
|
+
end
|
23
|
+
|
6
24
|
protected
|
7
25
|
def breadcrumbs
|
8
26
|
@breadcrumbs ||= Trestle::Breadcrumb::Trail.new(Trestle.config.root_breadcrumbs)
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Trestle
|
2
|
+
module ContainerHelper
|
3
|
+
def container(&block)
|
4
|
+
context = Context.new(self)
|
5
|
+
content = capture(context, &block)
|
6
|
+
|
7
|
+
content_tag(:div, class: "main-content-container") do
|
8
|
+
concat content_tag(:div, content, class: "main-content")
|
9
|
+
concat content_tag(:aside, context.sidebar, class: "main-content-sidebar") unless context.sidebar.blank?
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
class Context
|
14
|
+
def initialize(template)
|
15
|
+
@template = template
|
16
|
+
end
|
17
|
+
|
18
|
+
def sidebar(&block)
|
19
|
+
@sidebar = @template.capture(&block) if block_given?
|
20
|
+
@sidebar
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -1,8 +1,6 @@
|
|
1
1
|
module Trestle
|
2
2
|
module TableHelper
|
3
3
|
def table(collection, options={}, &block)
|
4
|
-
options = options.reverse_merge(admin: admin) if defined?(admin)
|
5
|
-
|
6
4
|
table = Table::Builder.build(options, &block)
|
7
5
|
render "trestle/table/table", table: table, collection: collection
|
8
6
|
end
|
@@ -13,14 +13,15 @@ module Trestle
|
|
13
13
|
end
|
14
14
|
|
15
15
|
if admin
|
16
|
-
link_to(content, admin_url_for(instance, admin), options)
|
16
|
+
link_to(content, admin_url_for(instance, admin: admin), options)
|
17
17
|
else
|
18
18
|
content
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
|
-
def admin_url_for(instance,
|
23
|
-
admin.
|
22
|
+
def admin_url_for(instance, options={})
|
23
|
+
admin = Trestle.lookup(options[:admin] || self.admin)
|
24
|
+
admin.path(options[:action] || :show, id: admin.to_param(instance)) if admin
|
24
25
|
end
|
25
26
|
|
26
27
|
def admin_for(instance)
|
@@ -15,6 +15,7 @@
|
|
15
15
|
<%= content_for(:title) %>
|
16
16
|
</h1>
|
17
17
|
|
18
|
+
<% unless local_assigns.fetch(:hide_breadcrumbs, false) %>
|
18
19
|
<ol class="breadcrumb">
|
19
20
|
<% breadcrumbs.each do |breadcrumb| %>
|
20
21
|
<li class="breadcrumb-item<% if breadcrumb == breadcrumbs.last %> active<% end %>">
|
@@ -22,4 +23,5 @@
|
|
22
23
|
</li>
|
23
24
|
<% end %>
|
24
25
|
</ol>
|
26
|
+
<% end %>
|
25
27
|
</header>
|
@@ -1,19 +1,19 @@
|
|
1
|
-
<%= render "header" %>
|
1
|
+
<%= render "header", hide_breadcrumbs: local_assigns.fetch(:hide_breadcrumbs, false) if local_assigns.fetch(:header, true) %>
|
2
2
|
|
3
3
|
<div class="main-content-area">
|
4
4
|
<%= render "flash" %>
|
5
5
|
<%= render "utilities" %>
|
6
6
|
<%= render "tabs" %>
|
7
7
|
|
8
|
-
|
9
|
-
|
8
|
+
<% if local_assigns.fetch(:wrapper, true) %>
|
9
|
+
<%= container do |c| %>
|
10
10
|
<%= yield %>
|
11
|
-
</div>
|
12
11
|
|
13
|
-
|
14
|
-
<aside class="main-content-sidebar">
|
12
|
+
<% c.sidebar do %>
|
15
13
|
<%= content_for(:sidebar) %>
|
16
|
-
|
14
|
+
<% end if content_for?(:sidebar) %>
|
17
15
|
<% end %>
|
18
|
-
|
16
|
+
<% else %>
|
17
|
+
<%= yield %>
|
18
|
+
<% end %>
|
19
19
|
</div>
|
data/config/routes.rb
CHANGED
@@ -0,0 +1,26 @@
|
|
1
|
+
module Trestle
|
2
|
+
module Generators
|
3
|
+
class AdminGenerator < ::Rails::Generators::NamedBase
|
4
|
+
desc "Creates a non-resourceful Trestle admin"
|
5
|
+
|
6
|
+
source_root File.expand_path("../templates", __FILE__)
|
7
|
+
|
8
|
+
def create_admin
|
9
|
+
template "admin.rb.erb", File.join("app/admin", class_path, "#{singular_name}_admin.rb")
|
10
|
+
end
|
11
|
+
|
12
|
+
def create_template
|
13
|
+
template "index.html.erb", File.join("app/views/admin", class_path, singular_name, "index.html.erb")
|
14
|
+
end
|
15
|
+
|
16
|
+
protected
|
17
|
+
def module_name
|
18
|
+
class_name.deconstantize
|
19
|
+
end
|
20
|
+
|
21
|
+
def module?
|
22
|
+
module_name.present?
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,5 @@
|
|
1
|
+
<%% content_for(:title, "<%= singular_name.titleize %>") %>
|
2
|
+
|
3
|
+
<%%= render layout: "layout", locals: { wrapper: true, sidebar: false, hide_breadcrumbs: false } do %>
|
4
|
+
To customize this template, please edit <code><%= File.join("app/views/admin", class_path, singular_name, "index.html.erb") %></code>.
|
5
|
+
<%% end %>
|
@@ -53,6 +53,26 @@ Trestle.configure do |config|
|
|
53
53
|
|
54
54
|
# == Extension Options
|
55
55
|
#
|
56
|
+
# Specify helper modules to expose to the admin.
|
57
|
+
#
|
58
|
+
# config.helper :all
|
59
|
+
|
60
|
+
# Register callbacks to run before, after or around all Trestle actions.
|
61
|
+
#
|
62
|
+
# config.before_action do |controller|
|
63
|
+
# Rails.logger.debug("Before action")
|
64
|
+
# end
|
65
|
+
#
|
66
|
+
# config.after_action do |controller|
|
67
|
+
# Rails.logger.debug("After action")
|
68
|
+
# end
|
69
|
+
#
|
70
|
+
# config.around_action do |controller, block|
|
71
|
+
# Rails.logger.debug("Around action (before)")
|
72
|
+
# block.call
|
73
|
+
# Rails.logger.debug("Around ation (after)")
|
74
|
+
# end
|
75
|
+
|
56
76
|
# Specify a custom hook to be injected into the admin.
|
57
77
|
#
|
58
78
|
# config.hook(:stylesheets) do
|
@@ -6,7 +6,7 @@ module Trestle
|
|
6
6
|
source_root File.expand_path("../templates", __FILE__)
|
7
7
|
|
8
8
|
def create_admin
|
9
|
-
template "admin.rb.erb", File.join(
|
9
|
+
template "admin.rb.erb", File.join("app/admin", class_path, "#{plural_name}_admin.rb")
|
10
10
|
end
|
11
11
|
|
12
12
|
protected
|
@@ -37,12 +37,8 @@ module Trestle
|
|
37
37
|
scope.merge(other)
|
38
38
|
end
|
39
39
|
|
40
|
-
def sort(collection,
|
41
|
-
|
42
|
-
collection.reorder(params[:sort] => params[:order] || "asc")
|
43
|
-
else
|
44
|
-
collection
|
45
|
-
end
|
40
|
+
def sort(collection, field, order)
|
41
|
+
collection.reorder(field => order)
|
46
42
|
end
|
47
43
|
|
48
44
|
def paginate(collection, params)
|
@@ -9,6 +9,8 @@ module Trestle
|
|
9
9
|
class_attribute :controller
|
10
10
|
self.controller = Controller
|
11
11
|
|
12
|
+
delegate :helper, :before_action, :after_action, :around_action, to: :@controller
|
13
|
+
|
12
14
|
def initialize(name, options={})
|
13
15
|
# Create admin subclass
|
14
16
|
@admin = Class.new(admin_class)
|
@@ -37,7 +39,7 @@ module Trestle
|
|
37
39
|
end
|
38
40
|
|
39
41
|
def table(options={}, &block)
|
40
|
-
admin.table = Table::Builder.build(options.reverse_merge(
|
42
|
+
admin.table = Table::Builder.build(options.reverse_merge(admin: admin, sortable: true), &block)
|
41
43
|
end
|
42
44
|
|
43
45
|
def form(&block)
|
@@ -50,18 +52,13 @@ module Trestle
|
|
50
52
|
end
|
51
53
|
|
52
54
|
def controller(&block)
|
53
|
-
@controller.class_eval(&block)
|
55
|
+
@controller.class_eval(&block) if block_given?
|
56
|
+
@controller
|
54
57
|
end
|
55
58
|
|
56
59
|
def routes(&block)
|
57
60
|
@admin.additional_routes = block
|
58
61
|
end
|
59
|
-
|
60
|
-
def helper(*helpers)
|
61
|
-
controller do
|
62
|
-
helper *helpers
|
63
|
-
end
|
64
|
-
end
|
65
62
|
end
|
66
63
|
end
|
67
64
|
end
|
@@ -2,43 +2,116 @@ module Trestle
|
|
2
2
|
class Configuration
|
3
3
|
include Configurable
|
4
4
|
|
5
|
+
## Customization Options
|
6
|
+
|
7
|
+
# Page title shown in the main admin header and <title> tag
|
5
8
|
option :site_title, -> { I18n.t("trestle.title", default: "Trestle") }
|
6
|
-
option :footer, -> { I18n.t("trestle.footer", default: "Powered by Trestle") }
|
7
9
|
|
10
|
+
# Custom image in place of the site title for mobile and expanded/desktop navigation
|
8
11
|
option :site_logo
|
12
|
+
|
13
|
+
# Custom image for the collapsed/tablet navigation
|
9
14
|
option :site_logo_small
|
10
15
|
|
11
|
-
|
12
|
-
option :
|
16
|
+
# Text shown in the admin page footer
|
17
|
+
option :footer, -> { I18n.t("trestle.footer", default: "Powered by Trestle") }
|
13
18
|
|
14
|
-
option :turbolinks, defined?(Turbolinks)
|
15
19
|
|
16
|
-
|
20
|
+
## Mounting Options
|
17
21
|
|
18
|
-
|
22
|
+
# Path at which to mount the Trestle admin
|
23
|
+
option :path, "/admin"
|
19
24
|
|
20
|
-
|
25
|
+
# Automatically mount the admin within the Rails application's routes
|
26
|
+
option :automount, true
|
21
27
|
|
28
|
+
|
29
|
+
## Navigation Options
|
30
|
+
|
31
|
+
# Initial breadcrumbs to display in the breadcrumb trail
|
22
32
|
option :root_breadcrumbs, -> { [Trestle::Breadcrumb.new(I18n.t("admin.breadcrumbs.home", default: "Home"), Trestle.config.path)] }
|
23
33
|
|
34
|
+
# Default icon class to use when it is not explicitly provided
|
24
35
|
option :default_navigation_icon, "fa fa-arrow-circle-o-right"
|
25
36
|
|
26
|
-
|
27
|
-
|
37
|
+
# [Internal] List of navigation menu blocks
|
28
38
|
option :menus, []
|
29
39
|
|
40
|
+
# Register a global navigation menu block
|
30
41
|
def menu(&block)
|
31
42
|
menus << Navigation::Block.new(&block)
|
32
43
|
end
|
33
44
|
|
45
|
+
|
46
|
+
## Extension Options
|
47
|
+
|
48
|
+
# [Internal] List of helper modules to include in all Trestle controllers
|
49
|
+
option :helpers, []
|
50
|
+
|
51
|
+
# [Internal] Container module for block-defined helpers
|
52
|
+
option :helper_module, Module.new
|
53
|
+
|
54
|
+
# Register global helpers available to all Trestle admins
|
55
|
+
def helper(*helpers, &block)
|
56
|
+
self.helpers += helpers
|
57
|
+
self.helper_module.module_eval(&block) if block_given?
|
58
|
+
end
|
59
|
+
|
60
|
+
# Enable or disable Turbolinks within the Trestle admin
|
61
|
+
option :turbolinks, defined?(Turbolinks)
|
62
|
+
|
63
|
+
# List of parameters that should persist across requests when paginating or reordering
|
64
|
+
option :persistent_params, [:sort, :order, :scope]
|
65
|
+
|
66
|
+
# List of methods to try calling on an instance when displayed by the `display` helper
|
67
|
+
option :display_methods, [:display_name, :full_name, :name, :title, :username, :login, :email, :to_s]
|
68
|
+
|
69
|
+
# Default adapter class used by all admin resources
|
70
|
+
option :default_adapter, Adapters::Adapter.compose(Adapters::ActiveRecordAdapter, Adapters::DraperAdapter)
|
71
|
+
|
72
|
+
# Register a custom form field class
|
73
|
+
def form_field(name, klass)
|
74
|
+
Form::Builder.register(name, klass)
|
75
|
+
end
|
76
|
+
|
77
|
+
# [Internal] List of registered hooks
|
34
78
|
option :hooks, Hash.new { |h, k| h[k] = [] }
|
35
79
|
|
80
|
+
# Register an extension hook
|
36
81
|
def hook(name, &block)
|
37
82
|
hooks[name.to_s] << block
|
38
83
|
end
|
39
84
|
|
40
|
-
|
41
|
-
|
85
|
+
# List of i18n keys to pass into the Trestle.i18n JavaScript object
|
86
|
+
option :javascript_i18n_keys, ["admin.confirmation.title", "admin.confirmation.delete", "admin.confirmation.cancel"]
|
87
|
+
|
88
|
+
|
89
|
+
## Callbacks
|
90
|
+
|
91
|
+
Action = Struct.new(:options, :block)
|
92
|
+
|
93
|
+
# [Internal] List of global before actions
|
94
|
+
option :before_actions, []
|
95
|
+
|
96
|
+
# Register a global before action
|
97
|
+
def before_action(options={}, &block)
|
98
|
+
before_actions << Action.new(options, block)
|
99
|
+
end
|
100
|
+
|
101
|
+
# [Internal] List of global after actions
|
102
|
+
option :after_actions, []
|
103
|
+
|
104
|
+
# Register a global after action
|
105
|
+
def after_action(options={}, &block)
|
106
|
+
after_actions << Action.new(options, block)
|
107
|
+
end
|
108
|
+
|
109
|
+
# [Internal] List of global around actions
|
110
|
+
option :around_actions, []
|
111
|
+
|
112
|
+
# Register a global around action
|
113
|
+
def around_action(options={}, &block)
|
114
|
+
around_actions << Action.new(options, block)
|
42
115
|
end
|
43
116
|
end
|
44
117
|
end
|
data/lib/trestle/resource.rb
CHANGED
@@ -49,7 +49,7 @@ module Trestle
|
|
49
49
|
def prepare_collection(params)
|
50
50
|
collection = initialize_collection(params)
|
51
51
|
collection = apply_scopes(collection, params)
|
52
|
-
collection =
|
52
|
+
collection = apply_sorting(collection, params)
|
53
53
|
collection = paginate(collection, params)
|
54
54
|
collection = decorate_collection(collection)
|
55
55
|
collection
|
@@ -87,6 +87,25 @@ module Trestle
|
|
87
87
|
result
|
88
88
|
end
|
89
89
|
|
90
|
+
def column_sorts
|
91
|
+
@column_sorts ||= {}
|
92
|
+
end
|
93
|
+
|
94
|
+
def apply_sorting(collection, params)
|
95
|
+
return collection unless params[:sort]
|
96
|
+
|
97
|
+
field = params[:sort].to_sym
|
98
|
+
|
99
|
+
order = params[:order].downcase
|
100
|
+
order = "asc" unless %w(asc desc).include?(order)
|
101
|
+
|
102
|
+
if column_sorts.has_key?(field)
|
103
|
+
instance_exec(collection, order, &column_sorts[field])
|
104
|
+
else
|
105
|
+
sort(collection, field, order)
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
90
109
|
def table
|
91
110
|
super || Table::Automatic.new(self)
|
92
111
|
end
|
@@ -129,7 +148,7 @@ module Trestle
|
|
129
148
|
def infer_model_class
|
130
149
|
parent.const_get(admin_name.classify)
|
131
150
|
rescue NameError
|
132
|
-
|
151
|
+
raise NameError, "Unable to find model #{admin_name.classify}. Specify a different model using Trestle.resource(:#{admin_name}, model: MyModel)"
|
133
152
|
end
|
134
153
|
|
135
154
|
def default_model_name
|
@@ -19,22 +19,25 @@ module Trestle
|
|
19
19
|
end
|
20
20
|
|
21
21
|
class ActionsBuilder
|
22
|
-
attr_reader :
|
22
|
+
attr_reader :instance
|
23
23
|
|
24
|
-
|
25
|
-
|
24
|
+
delegate :table, to: :@column
|
25
|
+
|
26
|
+
def initialize(column, template, instance)
|
27
|
+
@column, @template, @instance = column, template, instance
|
28
|
+
end
|
29
|
+
|
30
|
+
def delete
|
31
|
+
button(@template.icon("fa fa-trash"), @template.admin_url_for(instance, admin: table.options[:admin], action: :destroy), method: :delete, class: "btn-danger", data: { toggle: "confirm-delete", placement: "left" })
|
26
32
|
end
|
27
33
|
|
28
34
|
def button(content, url, options={})
|
29
35
|
options[:class] = Array(options[:class])
|
30
36
|
options[:class] << "btn" unless options[:class].include?("btn")
|
31
37
|
|
32
|
-
template.concat template.link_to(content, url, options)
|
33
|
-
end
|
34
|
-
|
35
|
-
def delete
|
36
|
-
button(template.icon("fa fa-trash"), template.admin.path(:destroy, id: template.admin.to_param(instance)), method: :delete, class: "btn-danger", data: { toggle: "confirm-delete", placement: "left" })
|
38
|
+
@template.concat @template.link_to(content, url, options)
|
37
39
|
end
|
40
|
+
alias_method :link, :button
|
38
41
|
end
|
39
42
|
|
40
43
|
class Renderer < Column::Renderer
|
@@ -54,7 +57,7 @@ module Trestle
|
|
54
57
|
end
|
55
58
|
|
56
59
|
def content(instance)
|
57
|
-
builder = ActionsBuilder.new(@template, instance)
|
60
|
+
builder = ActionsBuilder.new(@column, @template, instance)
|
58
61
|
|
59
62
|
@template.with_output_buffer do
|
60
63
|
@template.instance_exec(builder, &@column.block)
|
data/lib/trestle/table/row.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
module Trestle
|
2
2
|
class Table
|
3
3
|
class Row
|
4
|
-
attr_reader :options, :block
|
4
|
+
attr_reader :table, :options, :block
|
5
5
|
|
6
|
-
def initialize(options={}, &block)
|
7
|
-
@options = options
|
6
|
+
def initialize(table, options={}, &block)
|
7
|
+
@table, @options = table, options
|
8
8
|
@block = block if block_given?
|
9
9
|
end
|
10
10
|
|
@@ -13,16 +13,24 @@ module Trestle
|
|
13
13
|
end
|
14
14
|
|
15
15
|
class Renderer
|
16
|
+
delegate :table, to: :@row
|
17
|
+
|
16
18
|
def initialize(row, template)
|
17
19
|
@row, @template = row, template
|
18
20
|
end
|
19
21
|
|
20
22
|
def options(instance)
|
21
|
-
options = Trestle::Options.new
|
23
|
+
options = Trestle::Options.new
|
24
|
+
options.merge!(data: { url: admin_url_for(instance) }) if table.options[:admin]
|
22
25
|
options.merge!(@row.options)
|
23
26
|
options.merge!(@template.instance_exec(instance, &@row.block)) if @row.block
|
24
27
|
options
|
25
28
|
end
|
29
|
+
|
30
|
+
protected
|
31
|
+
def admin_url_for(instance)
|
32
|
+
@template.admin_url_for(instance, admin: table.options[:admin])
|
33
|
+
end
|
26
34
|
end
|
27
35
|
end
|
28
36
|
end
|
data/lib/trestle/table.rb
CHANGED
data/lib/trestle/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: trestle
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sam Pohlenz
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-08-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -230,6 +230,7 @@ files:
|
|
230
230
|
- app/controllers/trestle/application_controller.rb
|
231
231
|
- app/controllers/trestle/dashboard_controller.rb
|
232
232
|
- app/helpers/trestle/avatar_helper.rb
|
233
|
+
- app/helpers/trestle/container_helper.rb
|
233
234
|
- app/helpers/trestle/display_helper.rb
|
234
235
|
- app/helpers/trestle/form_helper.rb
|
235
236
|
- app/helpers/trestle/grid_helper.rb
|
@@ -277,6 +278,9 @@ files:
|
|
277
278
|
- config/locales/en.rb
|
278
279
|
- config/locales/en.yml
|
279
280
|
- config/routes.rb
|
281
|
+
- lib/generators/trestle/admin/admin_generator.rb
|
282
|
+
- lib/generators/trestle/admin/templates/admin.rb.erb
|
283
|
+
- lib/generators/trestle/admin/templates/index.html.erb
|
280
284
|
- lib/generators/trestle/install/install_generator.rb
|
281
285
|
- lib/generators/trestle/install/templates/_custom.scss
|
282
286
|
- lib/generators/trestle/install/templates/_variables.scss
|