smart_listing 0.9.2 → 0.9.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/assets/javascripts/smart_listing/smart_listing.coffee +4 -0
- data/app/helpers/smart_listing/helper.rb +85 -75
- data/app/views/smart_listing/_action_custom.html.erb +10 -0
- data/app/views/smart_listing/_action_delete.html.erb +10 -0
- data/app/views/smart_listing/_action_edit.html.erb +9 -0
- data/app/views/smart_listing/_action_inactive.html.erb +5 -0
- data/app/views/smart_listing/_item_new.html.erb +26 -0
- data/app/views/smart_listing/_pagination_per_page_link.html.erb +12 -0
- data/app/views/smart_listing/_pagination_per_page_links.html.erb +19 -0
- data/app/views/smart_listing/_sortable.html.erb +21 -0
- data/app/views/smart_listing/item/_create.js.erb +2 -0
- data/app/views/smart_listing/item/_destroy.js.erb +2 -0
- data/app/views/smart_listing/item/_edit.js.erb +2 -0
- data/app/views/smart_listing/item/_new.js.erb +2 -0
- data/app/views/smart_listing/item/_remove.js.erb +2 -0
- data/app/views/smart_listing/item/_update.js.erb +2 -0
- data/config/locales/en.yml +12 -0
- data/lib/generators/smart_listing/views_generator.rb +23 -0
- data/lib/smart_listing.rb +5 -0
- data/lib/smart_listing/version.rb +1 -1
- metadata +19 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ed162afb1635a06affeb6c2bb0f3bc0d539b7cad
|
|
4
|
+
data.tar.gz: 9cae821c8260b22a3782daf452008b1da9822e54
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 1ee4da5ad5023f269936c615dd547c2710c13925ab6e892fc28dad1bb86c2d2e54aacabe4ce8b241b7c9c2847fe1353539f06a2def7c381cdd5355684d4c556d
|
|
7
|
+
data.tar.gz: 56fb50e405e8afdee3f471f1e565dd3e764197a183c8113b02321c7edf5756ed40c3bdcca01e5978209a49d1b42d75760812c730f76c183f167de5d99669db25
|
|
@@ -237,6 +237,10 @@ class SmartListing
|
|
|
237
237
|
|
|
238
238
|
destroy: (id, destroyed) =>
|
|
239
239
|
# No need to do anything here, already handled by ajax:success handler
|
|
240
|
+
|
|
241
|
+
remove: (id) =>
|
|
242
|
+
editable = @container.find(".editable[data-id=#{id}]").first()
|
|
243
|
+
editable.remove()
|
|
240
244
|
|
|
241
245
|
update_list: (content, data) =>
|
|
242
246
|
$.each data, (key, value) =>
|
|
@@ -30,7 +30,7 @@ module SmartListing
|
|
|
30
30
|
|
|
31
31
|
def paginate options = {}
|
|
32
32
|
if @smart_listing.collection.respond_to? :current_page
|
|
33
|
-
@template.paginate @smart_listing.collection, :remote => true, :param_name => @smart_listing.param_names[:page], :params => UNSAFE_PARAMS
|
|
33
|
+
@template.paginate @smart_listing.collection, {:remote => true, :param_name => @smart_listing.param_names[:page], :params => UNSAFE_PARAMS}.merge(@smart_listing.kaminari_options)
|
|
34
34
|
end
|
|
35
35
|
end
|
|
36
36
|
|
|
@@ -39,25 +39,31 @@ module SmartListing
|
|
|
39
39
|
end
|
|
40
40
|
|
|
41
41
|
def pagination_per_page_links options = {}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
@template.
|
|
59
|
-
@template.concat(@template.content_tag(:span, @smart_listing.count, :class => "count"))
|
|
42
|
+
container_classes = ["pagination_per_page"]
|
|
43
|
+
container_classes << "disabled" if empty?
|
|
44
|
+
|
|
45
|
+
per_page_sizes = @smart_listing.page_sizes.clone
|
|
46
|
+
per_page_sizes.push(0) if @smart_listing.unlimited_per_page?
|
|
47
|
+
|
|
48
|
+
locals = {
|
|
49
|
+
:container_classes => container_classes,
|
|
50
|
+
:per_page_sizes => per_page_sizes,
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
@template.render(:partial => 'smart_listing/pagination_per_page_links', :locals => default_locals.merge(locals))
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def pagination_per_page_link page
|
|
57
|
+
if @smart_listing.per_page.to_i != page
|
|
58
|
+
url = @template.url_for(sanitize_params(@template.params.merge(@smart_listing.param_names[:per_page] => page, @smart_listing.param_names[:page] => 1)))
|
|
60
59
|
end
|
|
60
|
+
|
|
61
|
+
locals = {
|
|
62
|
+
:page => page,
|
|
63
|
+
:url => url,
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
@template.render(:partial => 'smart_listing/pagination_per_page_link', :locals => default_locals.merge(locals))
|
|
61
67
|
end
|
|
62
68
|
|
|
63
69
|
def sortable title, attribute, options = {}
|
|
@@ -69,14 +75,15 @@ module SmartListing
|
|
|
69
75
|
@smart_listing.param_names[:sort_extra] => extra
|
|
70
76
|
}
|
|
71
77
|
|
|
72
|
-
|
|
73
|
-
@
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
78
|
+
locals = {
|
|
79
|
+
:ordered => @smart_listing.sort_attr == attribute && (!@smart_listing.sort_extra || @smart_listing.sort_extra == extra.to_s),
|
|
80
|
+
:url => @template.url_for(sanitize_params(@template.params.merge(sort_params))),
|
|
81
|
+
:container_classes => ["sortable"],
|
|
82
|
+
:attribute => attribute,
|
|
83
|
+
:title => title
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
@template.render(:partial => 'smart_listing/sortable', :locals => default_locals.merge(locals))
|
|
80
87
|
end
|
|
81
88
|
|
|
82
89
|
def update options = {}
|
|
@@ -100,24 +107,31 @@ module SmartListing
|
|
|
100
107
|
else
|
|
101
108
|
locals.merge!({:smart_listing => self})
|
|
102
109
|
end
|
|
110
|
+
|
|
103
111
|
@template.render options, locals, &block
|
|
104
112
|
end
|
|
105
113
|
|
|
106
114
|
# Add new item button & placeholder to list
|
|
107
115
|
def item_new options = {}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
116
|
+
new_item_action_classes = %{new_item_action}
|
|
117
|
+
new_item_action_classes << "disabled" if !empty? && max_count?
|
|
118
|
+
no_records_classes = %{no_records}
|
|
119
|
+
no_records_classes << "disabled" unless empty?
|
|
120
|
+
new_item_button_classes = []
|
|
121
|
+
new_item_button_classes << "disabled" if max_count?
|
|
122
|
+
|
|
123
|
+
locals = {
|
|
124
|
+
:placeholder_classes => %w{new_item_placeholder disabled},
|
|
125
|
+
:new_item_action_classes => new_item_action_classes,
|
|
126
|
+
:colspan => options.delete(:colspan),
|
|
127
|
+
:no_items_classes => no_records_classes,
|
|
128
|
+
:no_items_text => options.delete(:no_items_text),
|
|
129
|
+
:new_item_button_url => options.delete(:link),
|
|
130
|
+
:new_item_button_classes => new_item_button_classes,
|
|
131
|
+
:new_item_button_text => options.delete(:text),
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
@template.render(:partial => 'smart_listing/item_new', :locals => default_locals.merge(locals))
|
|
121
135
|
nil
|
|
122
136
|
end
|
|
123
137
|
|
|
@@ -137,6 +151,10 @@ module SmartListing
|
|
|
137
151
|
def sanitize_params params
|
|
138
152
|
params.merge(UNSAFE_PARAMS)
|
|
139
153
|
end
|
|
154
|
+
|
|
155
|
+
def default_locals
|
|
156
|
+
{:smart_listing => @smart_listing, :builder => self}
|
|
157
|
+
end
|
|
140
158
|
end
|
|
141
159
|
|
|
142
160
|
# Outputs smart list container
|
|
@@ -148,11 +166,12 @@ module SmartListing
|
|
|
148
166
|
|
|
149
167
|
builder = Builder.new(name, @smart_listings[name], self, options, block)
|
|
150
168
|
|
|
151
|
-
output =""
|
|
169
|
+
output = ""
|
|
152
170
|
|
|
153
171
|
data = {}
|
|
154
172
|
data['max-count'] = @smart_listings[name].max_count if @smart_listings[name].max_count && @smart_listings[name].max_count > 0
|
|
155
173
|
data['href'] = @smart_listings[name].href if @smart_listings[name].href
|
|
174
|
+
data.merge!(options[:data]) if options[:data]
|
|
156
175
|
|
|
157
176
|
if bare
|
|
158
177
|
output = capture(builder, &block)
|
|
@@ -176,45 +195,35 @@ module SmartListing
|
|
|
176
195
|
|
|
177
196
|
if action.has_key?(:if)
|
|
178
197
|
unless action[:if]
|
|
179
|
-
concat(
|
|
198
|
+
concat(render(:partial => 'smart_listing/action_inactive'))
|
|
180
199
|
next
|
|
181
200
|
end
|
|
182
201
|
end
|
|
183
202
|
|
|
184
|
-
|
|
203
|
+
action_name = action[:name].to_sym
|
|
204
|
+
case action_name
|
|
185
205
|
when :edit
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
:
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
}.merge(action)
|
|
192
|
-
|
|
193
|
-
concat(link_to(url, html_options) do
|
|
194
|
-
concat(content_tag(:i, '', :class => "glyphicon glyphicon-pencil"))
|
|
195
|
-
end)
|
|
206
|
+
locals = {
|
|
207
|
+
:url => action.delete(:url),
|
|
208
|
+
:icon => action.delete(:icon),
|
|
209
|
+
}
|
|
210
|
+
concat(render(:partial => 'smart_listing/action_edit', :locals => locals))
|
|
196
211
|
when :destroy
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
:
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
:title => t("smart_listing.actions.destroy"),
|
|
204
|
-
:data => {:confirmation => action.delete(:confirmation) || t("smart_listing.msgs.destroy_confirmation")},
|
|
205
|
-
}.merge(action)
|
|
206
|
-
|
|
207
|
-
concat(link_to(url, html_options) do
|
|
208
|
-
concat(content_tag(:i, '', :class => icon))
|
|
209
|
-
end)
|
|
212
|
+
locals = {
|
|
213
|
+
:url => action.delete(:url),
|
|
214
|
+
:icon => action.delete(:icon),
|
|
215
|
+
:confirmation => action.delete(:confirmation),
|
|
216
|
+
}
|
|
217
|
+
concat(render(:partial => 'smart_listing/action_delete', :locals => locals))
|
|
210
218
|
when :custom
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
219
|
+
locals = {
|
|
220
|
+
:url => action.delete(:url),
|
|
221
|
+
:icon => action.delete(:icon),
|
|
222
|
+
:html_options => action,
|
|
223
|
+
}
|
|
224
|
+
concat(render(:partial => 'smart_listing/action_custom', :locals => locals))
|
|
225
|
+
else
|
|
226
|
+
concat(render(:partial => "smart_listing/action_#{action_name}", :locals => {:action => action}))
|
|
218
227
|
end
|
|
219
228
|
end
|
|
220
229
|
end
|
|
@@ -250,10 +259,11 @@ module SmartListing
|
|
|
250
259
|
def smart_listing_item name, item_action, object = nil, partial = nil, options = {}
|
|
251
260
|
name = name.to_sym
|
|
252
261
|
type = object.class.name.downcase.to_sym if object
|
|
253
|
-
id =
|
|
262
|
+
id = options[:id] || object.try(:id)
|
|
263
|
+
valid = options[:valid] if options.has_key?(:valid)
|
|
254
264
|
object_key = options.delete(:object_key) || :object
|
|
255
265
|
|
|
256
|
-
render(:partial => "smart_listing/item/#{item_action.to_s}", :locals => {:name => name, :id => id, :object_key => object_key, :object => object, :part => partial})
|
|
266
|
+
render(:partial => "smart_listing/item/#{item_action.to_s}", :locals => {:name => name, :id => id, :valid => valid, :object_key => object_key, :object => object, :part => partial})
|
|
257
267
|
end
|
|
258
268
|
end
|
|
259
269
|
end
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
<%#
|
|
2
|
+
Delete action.
|
|
3
|
+
|
|
4
|
+
Available local variables:
|
|
5
|
+
url: destroy url
|
|
6
|
+
icon
|
|
7
|
+
confirmation: confrimation text
|
|
8
|
+
-%>
|
|
9
|
+
|
|
10
|
+
<%= link_to(url, :remote => true, :class => "destroy", :method => :delete, :title => t("smart_listing.actions.destroy"), :data => {:confirmation => confirmation || t("smart_listing.msgs.destroy_confirmation")} ) do %><%= content_tag(:i, "", :class => icon || "glyphicon glyphicon-trash") %><% end %>
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<%#
|
|
2
|
+
New list item element (contains new item placeholder and add button).
|
|
3
|
+
|
|
4
|
+
Available local variables:
|
|
5
|
+
placeholder_classes: classes for the main container
|
|
6
|
+
new_item_action_classes: new item action classes
|
|
7
|
+
colspan
|
|
8
|
+
no_items_classes: no items container classes
|
|
9
|
+
no_items_text: no items text displayed inside container
|
|
10
|
+
new_item_button_url: argument to link_to (new item button)
|
|
11
|
+
new_item_button_classes
|
|
12
|
+
new_item_button_text
|
|
13
|
+
-%>
|
|
14
|
+
|
|
15
|
+
<%= content_tag(:tr, '', :class => placeholder_classes.merge(%{info})) %>
|
|
16
|
+
<%= content_tag(:tr, :class => new_item_action_classes.merge(%{info})) do %>
|
|
17
|
+
<%= content_tag(:td, :colspan => colspan) do %>
|
|
18
|
+
<%= content_tag(:p, :class => no_items_classes.merge(%{pull-left})) do %>
|
|
19
|
+
<%= no_items_text %>
|
|
20
|
+
<% end %>
|
|
21
|
+
<%= link_to(new_item_button_url, :remote => true, :class => new_item_button_classes.merge(%{btn pull-right})) do %>
|
|
22
|
+
<%= content_tag(:i, '', :class => "glyphicon glyphicon-plus") %>
|
|
23
|
+
<%= new_item_text %>
|
|
24
|
+
<% end %>
|
|
25
|
+
<% end %>
|
|
26
|
+
<% end %>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<%#
|
|
2
|
+
Pagination single per-page link.
|
|
3
|
+
|
|
4
|
+
Available local variables:
|
|
5
|
+
page: page number
|
|
6
|
+
url: page url (if page is not selected)
|
|
7
|
+
smart_listing: current SmartListing instance
|
|
8
|
+
builder: current builder instance
|
|
9
|
+
-%>
|
|
10
|
+
|
|
11
|
+
<% name = page == 0 ? t('views.pagination.unlimited') : page %>
|
|
12
|
+
<%= url ? link_to(name, url) : content_tag(:span, name) %>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<%#
|
|
2
|
+
Pagination per-page links.
|
|
3
|
+
|
|
4
|
+
Available local variables:
|
|
5
|
+
container_classes: classes for the main container
|
|
6
|
+
per_page_sizes: array of available per-page sizes
|
|
7
|
+
smart_listing: current SmartListing instance
|
|
8
|
+
builder: current builder instance
|
|
9
|
+
-%>
|
|
10
|
+
|
|
11
|
+
<%= content_tag(:div, :class => container_classes ) do %>
|
|
12
|
+
<% if smart_listing.options[:paginate] && (smart_listing.count > smart_listing.page_sizes.first) %>
|
|
13
|
+
<%= t('views.pagination.per_page') %>
|
|
14
|
+
<% per_page_sizes.each do |p| %><%= builder.pagination_per_page_link p %><% break if p > smart_listing.count %><% end %>
|
|
15
|
+
|
|
|
16
|
+
<% end %>
|
|
17
|
+
<%= t('views.pagination.total') %>
|
|
18
|
+
<%= content_tag(:span, smart_listing.count, :class => "count") %>
|
|
19
|
+
<% end %>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<%#
|
|
2
|
+
Sortable attribute listing header.
|
|
3
|
+
|
|
4
|
+
Available local variables:
|
|
5
|
+
container_classes: classes for the main container
|
|
6
|
+
url: sortable link url
|
|
7
|
+
attribute: current attribute name
|
|
8
|
+
title: current attribute title
|
|
9
|
+
ordered: defines whether column is sorted or not
|
|
10
|
+
smart_listing: current SmartListing instance
|
|
11
|
+
builder: current builder instance
|
|
12
|
+
-%>
|
|
13
|
+
|
|
14
|
+
<%= link_to url, :class => container_classes, :data => {:attr => attribute}, :remote => true do %>
|
|
15
|
+
<%= title %>
|
|
16
|
+
<% if ordered %>
|
|
17
|
+
<span class="<%= smart_listing.sort_order == "asc" ? "glyphicon glyphicon-chevron-up" : "glyphicon glyphicon-chevron-down" %>"></span>
|
|
18
|
+
<% else %>
|
|
19
|
+
<span class="glyphicon glyphicon-resize-vertical"></span>
|
|
20
|
+
<% end %>
|
|
21
|
+
<% end %>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
module SmartListing
|
|
2
|
+
module Generators
|
|
3
|
+
class ViewsGenerator < Rails::Generators::Base
|
|
4
|
+
source_root File.expand_path('../../../../app/views/smart_listing', __FILE__)
|
|
5
|
+
|
|
6
|
+
def self.banner #:nodoc:
|
|
7
|
+
<<-BANNER.chomp
|
|
8
|
+
rails g smart_listing:views
|
|
9
|
+
|
|
10
|
+
Copies all smart listing partials templates to your application.
|
|
11
|
+
BANNER
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
desc ''
|
|
15
|
+
def copy_views
|
|
16
|
+
filename_pattern = File.join self.class.source_root, "*.html.erb"
|
|
17
|
+
Dir.glob(filename_pattern).map {|f| File.basename f}.each do |f|
|
|
18
|
+
copy_file f, "app/views/smart_listing/#{f}"
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
data/lib/smart_listing.rb
CHANGED
|
@@ -31,6 +31,7 @@ module SmartListing
|
|
|
31
31
|
:default_sort_attr => nil, # default sort by
|
|
32
32
|
:memorize_per_page => false,
|
|
33
33
|
:page_sizes => DEFAULT_PAGE_SIZES, # set available page sizes array
|
|
34
|
+
:kaminari_options => {}, # Kaminari's paginate helper options
|
|
34
35
|
}.merge!(options)
|
|
35
36
|
|
|
36
37
|
if @options[:array]
|
|
@@ -110,6 +111,10 @@ module SmartListing
|
|
|
110
111
|
@options[:page_sizes]
|
|
111
112
|
end
|
|
112
113
|
|
|
114
|
+
def kaminari_options
|
|
115
|
+
@options[:kaminari_options]
|
|
116
|
+
end
|
|
117
|
+
|
|
113
118
|
def all_params
|
|
114
119
|
ap = {}
|
|
115
120
|
@options[:param_names].each do |k, v|
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: smart_listing
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.9.
|
|
4
|
+
version: 0.9.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Sology
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2014-01-30 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rails
|
|
@@ -73,16 +73,32 @@ executables: []
|
|
|
73
73
|
extensions: []
|
|
74
74
|
extra_rdoc_files: []
|
|
75
75
|
files:
|
|
76
|
+
- app/views/smart_listing/item/_new.js.erb
|
|
77
|
+
- app/views/smart_listing/item/_edit.js.erb
|
|
78
|
+
- app/views/smart_listing/item/_create.js.erb
|
|
79
|
+
- app/views/smart_listing/item/_remove.js.erb
|
|
80
|
+
- app/views/smart_listing/item/_update.js.erb
|
|
81
|
+
- app/views/smart_listing/item/_destroy.js.erb
|
|
82
|
+
- app/views/smart_listing/_pagination_per_page_links.html.erb
|
|
83
|
+
- app/views/smart_listing/_action_custom.html.erb
|
|
84
|
+
- app/views/smart_listing/_action_inactive.html.erb
|
|
76
85
|
- app/views/smart_listing/_update_list.js.erb
|
|
86
|
+
- app/views/smart_listing/_pagination_per_page_link.html.erb
|
|
87
|
+
- app/views/smart_listing/_action_delete.html.erb
|
|
88
|
+
- app/views/smart_listing/_item_new.html.erb
|
|
89
|
+
- app/views/smart_listing/_sortable.html.erb
|
|
90
|
+
- app/views/smart_listing/_action_edit.html.erb
|
|
77
91
|
- app/assets/stylesheets/smart_listing/application.css
|
|
78
92
|
- app/assets/javascripts/smart_listing/smart_listing.coffee
|
|
79
93
|
- app/assets/javascripts/smart_listing/application.js
|
|
80
94
|
- app/helpers/smart_listing/application_helper.rb
|
|
81
95
|
- app/helpers/smart_listing/helper.rb
|
|
82
96
|
- config/routes.rb
|
|
97
|
+
- config/locales/en.yml
|
|
83
98
|
- lib/tasks/smart_list_tasks.rake
|
|
84
99
|
- lib/smart_listing/engine.rb
|
|
85
100
|
- lib/smart_listing/version.rb
|
|
101
|
+
- lib/generators/smart_listing/views_generator.rb
|
|
86
102
|
- lib/smart_listing.rb
|
|
87
103
|
- LICENSE
|
|
88
104
|
- Rakefile
|
|
@@ -107,7 +123,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
107
123
|
version: '0'
|
|
108
124
|
requirements: []
|
|
109
125
|
rubyforge_project:
|
|
110
|
-
rubygems_version: 2.0.
|
|
126
|
+
rubygems_version: 2.0.14
|
|
111
127
|
signing_key:
|
|
112
128
|
specification_version: 4
|
|
113
129
|
summary: SmartListing helps creating sortable lists of ActiveRecord collections with
|