smart_listing 1.2.1 → 1.2.2

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
- SHA1:
3
- metadata.gz: 0d036e38f0ade94d2360779aad5df71aa55044c9
4
- data.tar.gz: 77fd8c742f4f0795e6bf6e20b0ef756b60083602
2
+ SHA256:
3
+ metadata.gz: d094a24f3cf879ec07471fa78e42f6d7923476971f03f0b3d0ffdc4243488e28
4
+ data.tar.gz: 44f9ec23a184ff3c3df4fa2af4e053115dc78830036fba5f5584733c38b03977
5
5
  SHA512:
6
- metadata.gz: 929c87c6a88255ea1a8e1510252f6d1c08578818d94490d6b7395ed6fb24133bb818250b1e1d54df092e4b42c36f79c23e31279bc457e8d414c8edc2cecb5f3c
7
- data.tar.gz: ad3fb94f079e41cbbc6d6ef8e56f00703a94fc93b954a522ab35a8ff4977e1b214b12cda9e89581f0a5aa008b9c4ca565a1bc37f8f75174bbad56aff50ebe1b9
6
+ metadata.gz: 5c71f8202ab047e5727f8f0ca04aaa7d940aaf1f304758690905cc4be8f96ecb32cd3de1e616d5e355c9e21773b57d7ace88987c0ced8d7e09599fa3d700c627
7
+ data.tar.gz: 7c7377b916ab03f30a4992f7fa37241f474033a8aa38320e27e454ebbd01617d49ac480a4879b8f2f88c38023633a66b155939e8dfff000389096d50d745ce9c
data/README.md CHANGED
@@ -24,6 +24,12 @@ Also, you need to add SmartListing to your asset pipeline:
24
24
  //= require smart_listing
25
25
  ```
26
26
 
27
+ __Rails >= 5.1 users__: Rails 5.1 has dropped jQuery dependency from the default stack in favour of `rails-ujs`. SmartListing still requires jQuery so make sure that you use `jquery_ujs` from `jquery-rails` gem and have following requires in your asset pipeline before `smart_listing`:
28
+ ```
29
+ //= require jquery
30
+ //= require jquery_ujs
31
+ ```
32
+
27
33
  ### Initializer
28
34
 
29
35
  Optionally you can also install some configuration initializer:
@@ -1,3 +1,10 @@
1
+ # endsWith polyfill
2
+ if !String::endsWith
3
+ String::endsWith = (search, this_len) ->
4
+ if this_len == undefined or this_len > @length
5
+ this_len = @length
6
+ @substring(this_len - (search.length), this_len) == search
7
+
1
8
  # Useful when SmartListing target url is different than current one
2
9
  $.rails.href = (element) ->
3
10
  element.attr("href") || element.data("<%= SmartListing.config.data_attributes(:href) %>") || window.location.pathname
@@ -33,8 +33,6 @@ module SmartListing
33
33
  end
34
34
 
35
35
  class Builder
36
- # Params that should not be visible in pagination links (pages, per-page, sorting, etc.)
37
- UNSAFE_PARAMS = {:authenticity_token => nil, :utf8 => nil}
38
36
 
39
37
  class_attribute :smart_listing_helpers
40
38
 
@@ -48,7 +46,7 @@ module SmartListing
48
46
 
49
47
  def paginate options = {}
50
48
  if @smart_listing.collection.respond_to? :current_page
51
- @template.paginate @smart_listing.collection, {:remote => @smart_listing.remote?, :param_name => @smart_listing.param_name(:page), :params => UNSAFE_PARAMS}.merge(@smart_listing.kaminari_options)
49
+ @template.paginate @smart_listing.collection, {:remote => @smart_listing.remote?, :param_name => @smart_listing.param_name(:page)}.merge(@smart_listing.kaminari_options)
52
50
  end
53
51
  end
54
52
 
@@ -78,7 +76,7 @@ module SmartListing
78
76
 
79
77
  def pagination_per_page_link page
80
78
  if @smart_listing.per_page.to_i != page
81
- url = @template.url_for(sanitize_params(@template.params.merge(@smart_listing.all_params(:per_page => page, :page => 1))))
79
+ url = @template.url_for(@smart_listing.params.merge(@smart_listing.all_params(:per_page => page, :page => 1)))
82
80
  end
83
81
 
84
82
  locals = {
@@ -100,10 +98,11 @@ module SmartListing
100
98
 
101
99
  locals = {
102
100
  :order => @smart_listing.sort_order(attribute),
103
- :url => @template.url_for(sanitize_params(@template.params.merge(@smart_listing.all_params(:sort => sort_params)))),
101
+ :url => @template.url_for(@smart_listing.params.merge(@smart_listing.all_params(:sort => sort_params))),
104
102
  :container_classes => [@template.smart_listing_config.classes(:sortable)],
105
103
  :attribute => attribute,
106
- :title => title
104
+ :title => title,
105
+ :remote => @smart_listing.remote?
107
106
  }
108
107
 
109
108
  @template.render(:partial => 'smart_listing/sortable', :locals => default_locals.merge(locals))
@@ -180,11 +179,6 @@ module SmartListing
180
179
 
181
180
  private
182
181
 
183
- def sanitize_params params
184
- params = params.permit! if params.respond_to?(:permit!)
185
- params.merge(UNSAFE_PARAMS)
186
- end
187
-
188
182
  def default_locals
189
183
  {:smart_listing => @smart_listing, :builder => self}
190
184
  end
@@ -318,7 +312,7 @@ module SmartListing
318
312
  smart_listing = @smart_listings[name]
319
313
 
320
314
  # don't update list if params are missing (prevents interfering with other lists)
321
- if params.keys.select{|k| k.include?("smart_listing")}.any? && !params[smart_listing.base_param]
315
+ if params.keys.select{|k| k.include?("smart_listing")}.present? && !params[smart_listing.base_param]
322
316
  return unless options[:force]
323
317
  end
324
318
 
@@ -11,7 +11,7 @@
11
11
  builder: current builder instance
12
12
  -%>
13
13
 
14
- <%= link_to url, :class => container_classes, :data => {:attr => attribute}, :remote => true do %>
14
+ <%= link_to url, :class => container_classes, :data => {:attr => attribute}, :remote => remote do %>
15
15
  <%= title %>
16
16
  <% if order %>
17
17
  <span class="<%= order == "asc" ? smart_listing_config.classes(:icon_sort_up) : smart_listing_config.classes(:icon_sort_down) %>"></span>
@@ -65,7 +65,6 @@ SmartListing.configure do |config|
65
65
  #:inline_edit_backup => "smart-listing-edit-backup",
66
66
  #:params => "params",
67
67
  #:observed => "observed",
68
- #:href => "href",
69
68
  #:autoshow => "autoshow",
70
69
  #:popover => "slpopover",
71
70
  }
@@ -21,7 +21,9 @@ end
21
21
 
22
22
  module SmartListing
23
23
  class Base
24
- attr_reader :name, :collection, :options, :per_page, :sort, :page, :partial, :count
24
+ attr_reader :name, :collection, :options, :per_page, :sort, :page, :partial, :count, :params
25
+ # Params that should not be visible in pagination links (pages, per-page, sorting, etc.)
26
+ UNSAFE_PARAMS = [:authenticity_token, :commit, :utf8, :_method, :script_name].freeze
25
27
 
26
28
  def initialize name, collection, options = {}
27
29
  @name = name
@@ -46,6 +48,9 @@ module SmartListing
46
48
 
47
49
  def setup params, cookies
48
50
  @params = params
51
+ @params = @params.to_unsafe_h if @params.respond_to?(:to_unsafe_h)
52
+ @params = @params.with_indifferent_access
53
+ @params.except!(*UNSAFE_PARAMS)
49
54
 
50
55
  @page = get_param :page
51
56
  @per_page = !get_param(:per_page) || get_param(:per_page).empty? ? (@options[:memorize_per_page] && get_param(:per_page, cookies).to_i > 0 ? get_param(:per_page, cookies).to_i : page_sizes.first) : get_param(:per_page).to_i
@@ -31,6 +31,7 @@ module SmartListing
31
31
  :page_sizes => DEFAULT_PAGE_SIZES.dup, # set available page sizes array
32
32
  :kaminari_options => {:theme => "smart_listing"}, # Kaminari's paginate helper options
33
33
  :sort_dirs => [nil, "asc", "desc"], # Default sorting directions cycle of sortables
34
+ :remote => true, # Default remote mode
34
35
  },
35
36
  :constants => {
36
37
  :classes => {
@@ -1,3 +1,3 @@
1
1
  module SmartListing
2
- VERSION = "1.2.1"
2
+ VERSION = "1.2.2"
3
3
  end
metadata CHANGED
@@ -1,153 +1,181 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: smart_listing
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 1.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sology
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-09-28 00:00:00.000000000 Z
11
+ date: 2018-03-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '3.2'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '3.2'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: coffee-rails
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: kaminari
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0.17'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ~>
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0.17'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: jquery-rails
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '>='
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: bootstrap-sass
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - '>='
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - '>='
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: sqlite3
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - '>='
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - '>='
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: rspec-rails
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - '>='
101
+ - - ">="
102
102
  - !ruby/object:Gem::Version
103
103
  version: '0'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - '>='
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: guard-rspec
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: byebug
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
109
137
  - !ruby/object:Gem::Version
110
138
  version: '0'
111
139
  - !ruby/object:Gem::Dependency
112
140
  name: capybara
113
141
  requirement: !ruby/object:Gem::Requirement
114
142
  requirements:
115
- - - ~>
143
+ - - "<"
116
144
  - !ruby/object:Gem::Version
117
- version: 2.4.4
145
+ version: '2.14'
118
146
  type: :development
119
147
  prerelease: false
120
148
  version_requirements: !ruby/object:Gem::Requirement
121
149
  requirements:
122
- - - ~>
150
+ - - "<"
123
151
  - !ruby/object:Gem::Version
124
- version: 2.4.4
152
+ version: '2.14'
125
153
  - !ruby/object:Gem::Dependency
126
154
  name: capybara-webkit
127
155
  requirement: !ruby/object:Gem::Requirement
128
156
  requirements:
129
- - - ~>
157
+ - - "~>"
130
158
  - !ruby/object:Gem::Version
131
- version: 1.3.1
159
+ version: '1.14'
132
160
  type: :development
133
161
  prerelease: false
134
162
  version_requirements: !ruby/object:Gem::Requirement
135
163
  requirements:
136
- - - ~>
164
+ - - "~>"
137
165
  - !ruby/object:Gem::Version
138
- version: 1.3.1
166
+ version: '1.14'
139
167
  - !ruby/object:Gem::Dependency
140
168
  name: database_cleaner
141
169
  requirement: !ruby/object:Gem::Requirement
142
170
  requirements:
143
- - - '>='
171
+ - - ">="
144
172
  - !ruby/object:Gem::Version
145
173
  version: '0'
146
174
  type: :development
147
175
  prerelease: false
148
176
  version_requirements: !ruby/object:Gem::Requirement
149
177
  requirements:
150
- - - '>='
178
+ - - ">="
151
179
  - !ruby/object:Gem::Version
152
180
  version: '0'
153
181
  description: Ruby on Rails data listing gem with built-in sorting, filtering and in-place
@@ -158,51 +186,51 @@ executables: []
158
186
  extensions: []
159
187
  extra_rdoc_files: []
160
188
  files:
189
+ - LICENSE
190
+ - README.md
191
+ - Rakefile
161
192
  - app/assets/javascripts/smart_listing.coffee.erb
162
- - app/views/kaminari/smart_listing/_paginator.html.erb
193
+ - app/helpers/smart_listing/application_helper.rb
194
+ - app/helpers/smart_listing/helper.rb
163
195
  - app/views/kaminari/smart_listing/_first_page.html.erb
164
- - app/views/kaminari/smart_listing/_page.html.erb
165
- - app/views/kaminari/smart_listing/_prev_page.html.erb
166
- - app/views/kaminari/smart_listing/_last_page.html.erb
167
196
  - app/views/kaminari/smart_listing/_gap.html.erb
197
+ - app/views/kaminari/smart_listing/_last_page.html.erb
168
198
  - app/views/kaminari/smart_listing/_next_page.html.erb
169
- - app/views/smart_listing/destroy.js.erb
199
+ - app/views/kaminari/smart_listing/_page.html.erb
200
+ - app/views/kaminari/smart_listing/_paginator.html.erb
201
+ - app/views/kaminari/smart_listing/_prev_page.html.erb
170
202
  - app/views/smart_listing/_action_custom.html.erb
171
- - app/views/smart_listing/_item_new.html.erb
172
203
  - app/views/smart_listing/_action_delete.html.erb
173
- - app/views/smart_listing/edit.js.erb
174
- - app/views/smart_listing/_pagination_per_page_links.html.erb
175
- - app/views/smart_listing/_pagination_per_page_link.html.erb
176
- - app/views/smart_listing/index.js.erb
177
- - app/views/smart_listing/_action_show.html.erb
178
- - app/views/smart_listing/update.js.erb
179
204
  - app/views/smart_listing/_action_edit.html.erb
180
- - app/views/smart_listing/new.js.erb
181
- - app/views/smart_listing/_update_list.js.erb
205
+ - app/views/smart_listing/_action_show.html.erb
206
+ - app/views/smart_listing/_item_new.html.erb
207
+ - app/views/smart_listing/_pagination_per_page_link.html.erb
208
+ - app/views/smart_listing/_pagination_per_page_links.html.erb
182
209
  - app/views/smart_listing/_sortable.html.erb
210
+ - app/views/smart_listing/_update_list.js.erb
183
211
  - app/views/smart_listing/create.js.erb
212
+ - app/views/smart_listing/destroy.js.erb
213
+ - app/views/smart_listing/edit.js.erb
214
+ - app/views/smart_listing/index.js.erb
184
215
  - app/views/smart_listing/item/_create.js.erb
185
- - app/views/smart_listing/item/_edit.js.erb
216
+ - app/views/smart_listing/item/_create_continue.js.erb
186
217
  - app/views/smart_listing/item/_destroy.js.erb
187
- - app/views/smart_listing/item/_remove.js.erb
218
+ - app/views/smart_listing/item/_edit.js.erb
188
219
  - app/views/smart_listing/item/_new.js.erb
220
+ - app/views/smart_listing/item/_remove.js.erb
189
221
  - app/views/smart_listing/item/_update.js.erb
190
- - app/views/smart_listing/item/_create_continue.js.erb
191
- - app/helpers/smart_listing/application_helper.rb
192
- - app/helpers/smart_listing/helper.rb
193
- - config/routes.rb
222
+ - app/views/smart_listing/new.js.erb
223
+ - app/views/smart_listing/update.js.erb
194
224
  - config/locales/en.yml
225
+ - config/routes.rb
226
+ - lib/generators/smart_listing/install_generator.rb
227
+ - lib/generators/smart_listing/templates/initializer.rb
228
+ - lib/generators/smart_listing/views_generator.rb
195
229
  - lib/smart_listing.rb
196
- - lib/tasks/smart_list_tasks.rake
197
230
  - lib/smart_listing/config.rb
198
231
  - lib/smart_listing/engine.rb
199
232
  - lib/smart_listing/version.rb
200
- - lib/generators/smart_listing/views_generator.rb
201
- - lib/generators/smart_listing/install_generator.rb
202
- - lib/generators/smart_listing/templates/initializer.rb
203
- - LICENSE
204
- - Rakefile
205
- - README.md
233
+ - lib/tasks/smart_list_tasks.rake
206
234
  homepage: https://github.com/Sology/smart_listing
207
235
  licenses:
208
236
  - MIT
@@ -213,17 +241,17 @@ require_paths:
213
241
  - lib
214
242
  required_ruby_version: !ruby/object:Gem::Requirement
215
243
  requirements:
216
- - - '>='
244
+ - - ">="
217
245
  - !ruby/object:Gem::Version
218
246
  version: '0'
219
247
  required_rubygems_version: !ruby/object:Gem::Requirement
220
248
  requirements:
221
- - - '>='
249
+ - - ">="
222
250
  - !ruby/object:Gem::Version
223
251
  version: '0'
224
252
  requirements: []
225
253
  rubyforge_project:
226
- rubygems_version: 2.0.3
254
+ rubygems_version: 2.7.3
227
255
  signing_key:
228
256
  specification_version: 4
229
257
  summary: SmartListing helps creating sortable lists of ActiveRecord collections with