effective_datatables 3.4.8 → 3.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ea612785cbdfbc0f2c43e4eebff0b59e2c9cee16
4
- data.tar.gz: c036efb3cd28bb6562a3840cb49f53952e1bee6a
3
+ metadata.gz: 6c10e95994f32935efe7f8c67dec2aad4d29b4b1
4
+ data.tar.gz: 7fc0b0c12d2ec760b2c1ccb1dd50e207d6f822d3
5
5
  SHA512:
6
- metadata.gz: f8cedc334ad98daeff7ba4758d746379f87e05c4330ba8b19ba49b533a77df214c8252e01cc7a61020c2d0b93fbbf13a795ed5fdac10052fe729022bd270ca4c
7
- data.tar.gz: 6046a329e04cb59c6aefba7a7de03c94c905c8e79c06a4be2960e8710d928be36a4bbbd3de5cbe05f2af8455c594162e75703c8529f346ab5a94b058448c2d86
6
+ metadata.gz: eb07bce27774287278e118c8020c9a86637dc0a165bea79f562b1e8655af7a2958eb907738219dca608306e2339df3d073f40302941073ff3aef6ffef5c0eaaa
7
+ data.tar.gz: 31ca91bbd2d7d17156e120b9a06b2e285ff9acff6e461ffd2d34cc044909df32f057f36622ab662716240d61d041eef5bb586378c7900813f394540282773bb2
data/README.md CHANGED
@@ -237,10 +237,8 @@ class PostsDatatable < Effective::Datatable
237
237
  # Puts links to show/edit/destroy actions, if authorized to those actions.
238
238
  # Use the actions_col block to add additional actions
239
239
 
240
- actions_col do |post|
241
- render_resource_actions(resource, post, edit: false, partial: :glyphicons) do
242
- glyphicon_to('print', print_post_path(post), title: 'Print')
243
- end
240
+ actions_col(edit: false) do |post|
241
+ glyphicon_to('print', print_post_path(post), title: 'Print')
244
242
  end
245
243
 
246
244
  end
@@ -516,45 +514,36 @@ You can only have one `bulk_actions_col` per datatable.
516
514
 
517
515
  ### actions_col
518
516
 
519
- When working with an ActiveRecord based collection, this column will consider the `current_user`'s authorization, and generate
520
- glyphicon links to edit, show and destroy actions for any collection class.
517
+ When working with an ActiveRecord based collection, this column will consider the `current_user`'s authorization, and generate links to edit, show and destroy actions for any collection class.
521
518
 
522
519
  The authorization method is configured via the `config/initializers/effective_datatables.rb` initializer file.
523
520
 
524
521
  There are just a few options:
525
522
 
526
523
  ```ruby
527
- show: true|false|:authorize
528
- edit: true|false|:authorize
529
- destroy: true|false|:authorize
530
-
524
+ show: true|false
525
+ edit: true|false
526
+ destroy: true|false
531
527
  visible: true|false
528
+ actions_partial: :glyphicons
532
529
  ```
533
530
 
534
- When the show, edit and destroy actions are `true` (default), the permission check will be made just once, authorizing the class.
535
- When set to `:authorize`, permission to each individual object will be checked.
531
+ Each object is checked individually for authorization.
536
532
 
537
- Use the block syntax to add additional actions
533
+ The arguments to `actions_col` are passed through to the `effective_resource` gem's [render_resource_actions](https://github.com/code-and-effect/effective_resources/blob/master/app/helpers/effective_resources_helper.rb#L57).
538
534
 
539
- ```ruby
540
- actions_col show: false do |post|
541
- (post.approved? ? link_to('Approve', approve_post_path(post)) : '') +
542
- glyphicon_to('print', print_ticket_path(ticket), title: 'Print')
543
- end
544
- ```
535
+ It's all very complicated.
545
536
 
546
- or
537
+ If you just want to override this entire column with your own actions implementation, you can pass `actions_col partial: 'my_partial'` and roll your own.
538
+
539
+ Otherwise, use the following block syntax to add additional actions. This helper comes from `effective_form_inputs` gem.
547
540
 
548
541
  ```ruby
549
542
  actions_col do |post|
550
- render_resource_actions(resource, post, edit: false, partial: :glyphicons) do
551
- glyphicon_to('print', print_post_path(post), title: 'Print')
552
- end
543
+ glyphicon_to('print', print_post_path(post), title: 'Print')
553
544
  end
554
545
  ```
555
546
 
556
- The `glyphicon_to` helper is part of the [effective_resources](https://github.com/code-and-effect/effective_resources) gem, which is a dependency of this gem.
557
-
558
547
  ### length
559
548
 
560
549
  Sets the default number of rows per page. Valid lengths are `5`, `10`, `25`, `50`, `100`, `250`, `500`, `:all`
@@ -9,7 +9,7 @@ module EffectiveDatatablesPrivateHelper
9
9
  datatable.columns.map do |name, opts|
10
10
  {
11
11
  name: name,
12
- title: content_tag(:span, opts[:label], class: 'search-label'),
12
+ title: content_tag(:span, (opts[:label] == false ? '' : opts[:label]), class: 'search-label'),
13
13
  className: opts[:col_class],
14
14
  searchHtml: (datatable_search_html(form, name, datatable.state[:search][name], opts) unless datatable.simple?),
15
15
  responsivePriority: opts[:responsive],
@@ -31,7 +31,7 @@ module Effective
31
31
  col_class: col_class,
32
32
  format: (format if block_given?),
33
33
  index: nil,
34
- label: label || name.to_s.split('.').last.titleize,
34
+ label: (label.nil? ? name.to_s.split('.').last.titleize : label),
35
35
  name: name,
36
36
  partial: partial,
37
37
  partial_as: partial_as,
@@ -59,7 +59,7 @@ module Effective
59
59
  col_class: col_class,
60
60
  format: nil,
61
61
  index: nil,
62
- label: label || name.to_s.split('.').last.titleize,
62
+ label: (label.nil? ? name.to_s.split('.').last.titleize : label),
63
63
  name: name,
64
64
  partial: partial,
65
65
  partial_as: partial_as,
@@ -83,7 +83,7 @@ module Effective
83
83
  col_class: col_class,
84
84
  format: nil,
85
85
  index: nil,
86
- label: '',
86
+ label: false,
87
87
  name: :bulk_actions,
88
88
  partial: partial || '/effective/datatables/bulk_actions_column',
89
89
  partial_as: partial_as,
@@ -97,7 +97,7 @@ module Effective
97
97
  )
98
98
  end
99
99
 
100
- def actions_col(show: nil, edit: nil, destroy: nil, col_class: nil, partial: nil, partial_as: nil, responsive: 5000, visible: true, &format)
100
+ def actions_col(col_class: nil, partial: nil, partial_as: nil, actions_partial: nil, responsive: 5000, visible: true, **actions, &format)
101
101
  raise 'You can only have one actions column' if datatable.columns[:_actions].present?
102
102
 
103
103
  datatable._columns[:_actions] = Effective::DatatableColumn.new(
@@ -107,10 +107,11 @@ module Effective
107
107
  col_class: col_class,
108
108
  format: (format if block_given?),
109
109
  index: nil,
110
- label: '',
110
+ label: false,
111
111
  name: :actions,
112
112
  partial: partial,
113
113
  partial_as: partial_as,
114
+ actions_partial: (actions_partial || :glyphicons),
114
115
  responsive: responsive,
115
116
  search: false,
116
117
  sort: false,
@@ -119,7 +120,8 @@ module Effective
119
120
  th_append: nil,
120
121
  visible: visible,
121
122
 
122
- actions: { show: show, edit: edit, destroy: destroy, partial: :glyphicons }.reject { |k, v| v.nil? }
123
+ # { approve: false }. These args are passed to effective_resources render_resource_actions
124
+ actions: actions
123
125
  )
124
126
  end
125
127
 
@@ -23,14 +23,13 @@ module Effective
23
23
  locals: locals,
24
24
  spacer_template: SPACER_TEMPLATE
25
25
  ) || '').split(SPACER)
26
- elsif opts[:as] == :actions # This is default actions_col
26
+ elsif opts[:as] == :actions # This is actions_col and actions_col do .. end, but not actions_col partial: 'something'
27
27
  locals = { datatable: self, column: columns[name], spacer_template: SPACER_TEMPLATE }
28
28
 
29
- rendered[name] = (view.render_resource_actions(
30
- resource,
31
- collection.map { |row| row[opts[:index]] },
32
- opts[:actions].merge(locals: locals)
33
- ) || '').split(SPACER)
29
+ resources = collection.map { |row| row[opts[:index]] }
30
+ atts = opts[:actions].merge(effective_resource: resource, locals: locals, partial: opts[:actions_partial])
31
+
32
+ rendered[name] = (view.render_resource_actions(resources, atts, &opts[:format]) || '').split(SPACER)
34
33
  end
35
34
 
36
35
  end
@@ -43,14 +42,14 @@ module Effective
43
42
  value = row[index]
44
43
 
45
44
  row[index] = (
46
- if opts[:format] && rendered.key?(name)
45
+ if opts[:as] == :actions
46
+ rendered[name][row_index]
47
+ elsif opts[:format] && rendered.key?(name)
47
48
  dsl_tool.instance_exec(value, row, rendered[name][row_index], &opts[:format])
48
49
  elsif opts[:format]
49
50
  dsl_tool.instance_exec(value, row, &opts[:format])
50
51
  elsif opts[:partial]
51
52
  rendered[name][row_index]
52
- elsif opts[:as] == :actions
53
- rendered[name][row_index]
54
53
  else
55
54
  format_column(value, opts)
56
55
  end
@@ -68,7 +67,7 @@ module Effective
68
67
 
69
68
  case column[:as]
70
69
  when :actions
71
- view.render_resource_actions(resource, value, **column[:actions])
70
+ view.render_resource_actions(value, **column[:actions].merge(effective_resource: resource, partial: column[:actions_partial]))
72
71
  when :boolean
73
72
  case value
74
73
  when true ; 'Yes'
@@ -1,3 +1,3 @@
1
1
  module EffectiveDatatables
2
- VERSION = '3.4.8'.freeze
2
+ VERSION = '3.5.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: effective_datatables
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.4.8
4
+ version: 3.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Code and Effect
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-08-03 00:00:00.000000000 Z
11
+ date: 2018-09-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -180,7 +180,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
180
180
  version: '0'
181
181
  requirements: []
182
182
  rubyforge_project:
183
- rubygems_version: 2.4.5.1
183
+ rubygems_version: 2.5.2.3
184
184
  signing_key:
185
185
  specification_version: 4
186
186
  summary: Uniquely powerful server-side searching, sorting and filtering of any ActiveRecord