ab_admin 0.8.3 → 0.9.0
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/MIT-LICENSE +1 -1
- data/README.md +11 -5
- data/app/assets/javascripts/ab_admin/components/admin_assets.js.coffee +0 -25
- data/app/assets/javascripts/ab_admin/components/google_translate.js.coffee +3 -5
- data/app/assets/javascripts/ab_admin/components/in_place_edit.js.coffee +5 -1
- data/app/assets/javascripts/ab_admin/core/columns_hider.js.coffee +24 -23
- data/app/assets/javascripts/ab_admin/core/init.js.coffee +6 -2
- data/app/assets/javascripts/ab_admin/core/search_form.js.coffee +1 -7
- data/app/assets/javascripts/ab_admin/core/ui_utils.js.coffee +2 -6
- data/app/assets/javascripts/ab_admin/core/utils.js.coffee +8 -2
- data/app/assets/javascripts/ab_admin/main.js +2 -2
- data/app/assets/stylesheets/ab_admin/bootstrap_and_overrides.scss +35 -10
- data/app/assets/stylesheets/ab_admin/components/_base.scss +21 -1
- data/app/assets/stylesheets/ab_admin/components/_form.scss +13 -17
- data/app/assets/stylesheets/ab_admin/components/_grid_view.scss +2 -2
- data/app/assets/stylesheets/ab_admin/components/_locale_tabs.scss +11 -23
- data/app/assets/stylesheets/ab_admin/components/_navigation.scss +0 -9
- data/app/assets/stylesheets/ab_admin/components/_table_view.scss +10 -2
- data/app/assets/stylesheets/ab_admin/components/_tooltip.scss +80 -0
- data/app/assets/stylesheets/ab_admin/components/_tree_view.scss +1 -1
- data/app/assets/stylesheets/ab_admin/devise.scss +2 -2
- data/app/assets/stylesheets/ab_admin/fileupload.scss +2 -9
- data/app/assets/stylesheets/ab_admin/main.scss +0 -1
- data/app/controllers/admin/base_controller.rb +67 -63
- data/app/controllers/admin/dashboards_controller.rb +2 -2
- data/app/controllers/admin/locators_controller.rb +8 -6
- data/app/controllers/admin/manager_controller.rb +2 -2
- data/app/controllers/admin/static_pages_controller.rb +0 -4
- data/app/controllers/admin/structures_controller.rb +2 -2
- data/app/views/admin/assets/batch_edit.html.slim +1 -1
- data/app/views/admin/base/_search_layout.html.slim +6 -5
- data/app/views/admin/base/create.js.erb +5 -2
- data/app/views/admin/base/index.html.slim +4 -4
- data/app/views/admin/base/update.js.erb +5 -0
- data/app/views/admin/fileupload/_asset_templates.html.slim +1 -2
- data/app/views/admin/fileupload/_image.html.slim +1 -2
- data/app/views/admin/locators/edit.html.slim +7 -6
- data/app/views/admin/manager/_map.html.slim +4 -0
- data/app/views/admin/manager/_table.html.slim +1 -1
- data/app/views/admin/shared/_content_actions.html.slim +19 -21
- data/app/views/admin/shared/_flash.html.slim +5 -4
- data/app/views/admin/shared/_locale_tabs.html.slim +2 -2
- data/app/views/admin/shared/_main_menu.html.slim +1 -1
- data/app/views/admin/structures/_form.html.slim +1 -1
- data/app/views/admin/users/_form.html.slim +1 -1
- data/app/views/admin/users/_search_form.html.slim +1 -1
- data/app/views/layouts/admin/_footer.html.slim +0 -1
- data/app/views/layouts/admin/_navigation.html.slim +1 -1
- data/app/views/layouts/admin/application.html.slim +2 -2
- data/config/locales/de.yml +1 -2
- data/config/locales/en.yml +1 -2
- data/config/locales/ru.yml +0 -1
- data/config/locales/uk.yml +0 -1
- data/lib/ab_admin.rb +34 -33
- data/lib/ab_admin/abstract_resource.rb +1 -1
- data/lib/ab_admin/carrierwave/base_uploader.rb +1 -2
- data/lib/ab_admin/concerns/admin_addition.rb +0 -30
- data/lib/ab_admin/concerns/translations_macro.rb +97 -0
- data/lib/ab_admin/concerns/utilities.rb +1 -1
- data/lib/ab_admin/config/base.rb +7 -0
- data/lib/ab_admin/controllers/callbacks.rb +3 -26
- data/lib/ab_admin/core_ext/array.rb +4 -48
- data/lib/ab_admin/core_ext/hash.rb +2 -31
- data/lib/ab_admin/core_ext/other.rb +0 -6
- data/lib/ab_admin/core_ext/string.rb +0 -80
- data/lib/ab_admin/engine.rb +1 -0
- data/lib/ab_admin/hooks/will_paginate_id_prefetch.rb +8 -6
- data/lib/ab_admin/hooks/will_paginate_no_uri.rb +1 -1
- data/lib/ab_admin/i18n_tools/google_translate.rb +3 -1
- data/lib/ab_admin/i18n_tools/model_translator.rb +1 -1
- data/lib/ab_admin/models/header.rb +2 -2
- data/lib/ab_admin/models/locator.rb +28 -2
- data/lib/ab_admin/models/user.rb +12 -48
- data/lib/ab_admin/utils/csv_document.rb +5 -3
- data/lib/ab_admin/utils/eval_helpers.rb +6 -3
- data/lib/ab_admin/utils/xls_document.rb +18 -16
- data/lib/ab_admin/version.rb +1 -1
- data/lib/ab_admin/views/admin_helpers.rb +10 -12
- data/lib/ab_admin/views/admin_navigation_helpers.rb +7 -8
- data/lib/ab_admin/views/form_builder.rb +7 -5
- data/lib/ab_admin/views/helpers.rb +0 -9
- data/lib/ab_admin/views/inputs/ckeditor_input.rb +4 -4
- data/lib/ab_admin/views/manager_helpers.rb +8 -5
- data/lib/ab_admin/views/search_form_builder.rb +2 -2
- data/lib/ab_admin/views/will_paginate_bootstrap_renderer.rb +60 -0
- data/lib/generators/ab_admin/glob/glob_generator.rb +4 -5
- data/lib/generators/ab_admin/glob/templates/migration.erb +10 -7
- data/lib/generators/ab_admin/install/templates/config/ab_admin.rb.erb +1 -1
- data/lib/generators/ab_admin/install/templates/models/user.rb +0 -11
- data/lib/generators/ab_admin/install/templates/spec/spec_helper.rb +0 -1
- data/lib/generators/ab_admin/install/templates/spec/support/database_cleaner.rb +8 -11
- data/lib/generators/ab_admin/model/model_generator.rb +3 -4
- data/lib/generators/ab_admin/model/templates/resource.erb +5 -2
- data/lib/generators/ab_admin/resource/templates/controller.erb +2 -2
- metadata +37 -79
- data/app/assets/images/admin/Jcrop.gif +0 -0
- data/app/assets/images/admin/flags/de.png +0 -0
- data/app/assets/images/admin/flags/en.png +0 -0
- data/app/assets/images/admin/flags/es.png +0 -0
- data/app/assets/images/admin/flags/fr.png +0 -0
- data/app/assets/images/admin/flags/it.png +0 -0
- data/app/assets/images/admin/flags/ja.png +0 -0
- data/app/assets/images/admin/flags/pl.png +0 -0
- data/app/assets/images/admin/flags/ru.png +0 -0
- data/app/assets/images/admin/flags/uk.png +0 -0
- data/app/assets/javascripts/ab_admin/components/croppable_image.js.coffee +0 -33
- data/app/assets/stylesheets/ab_admin/components/_columns_hider.scss +0 -5
- data/app/assets/stylesheets/ab_admin/components/_perms.scss +0 -39
- data/app/views/admin/shared/_columns_hider.html.slim +0 -9
- data/lib/ab_admin/hooks/globalize_locale_suffix_accessors.rb +0 -25
- data/lib/ab_admin/hooks/globalize_valid_locale.rb +0 -9
- data/lib/generators/ab_admin/ckeditor_assets/ckeditor_assets_generator.rb +0 -19
- data/lib/generators/template.rb +0 -96
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
.grid_view {
|
|
2
|
-
#
|
|
2
|
+
#columns_hider_wrap, .pagination .pagination, .per_page {
|
|
3
3
|
display: none;
|
|
4
4
|
}
|
|
5
5
|
.pagination_info {
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
|
|
22
22
|
#main {
|
|
23
23
|
.grid_view {
|
|
24
|
-
#
|
|
24
|
+
#columns_hider_wrap {
|
|
25
25
|
display: none;
|
|
26
26
|
}
|
|
27
27
|
.content_actions {
|
|
@@ -3,43 +3,31 @@
|
|
|
3
3
|
}
|
|
4
4
|
|
|
5
5
|
.locale_tabs {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}
|
|
12
|
-
&.active a.ico_#{$locale} {
|
|
13
|
-
opacity: 1;
|
|
14
|
-
}
|
|
6
|
+
.nav-tabs li {
|
|
7
|
+
a {
|
|
8
|
+
opacity: 0.5;
|
|
9
|
+
font-size: 28px;
|
|
10
|
+
padding: 8px 12px;
|
|
15
11
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
}
|
|
20
|
-
##{$locale} {
|
|
21
|
-
.t_locale_#{$locale} {
|
|
22
|
-
display: none;
|
|
23
|
-
}
|
|
12
|
+
&.active a {
|
|
13
|
+
opacity: 1;
|
|
14
|
+
padding: 14px 12px 2px;
|
|
24
15
|
}
|
|
25
16
|
}
|
|
26
17
|
}
|
|
27
18
|
|
|
28
19
|
.t_locales {
|
|
29
20
|
position: absolute;
|
|
30
|
-
top:
|
|
31
|
-
left:
|
|
32
|
-
height: 60px;
|
|
33
|
-
width: 40px;
|
|
21
|
+
top: 25px;
|
|
22
|
+
left: 2px;
|
|
34
23
|
margin-left: 5px;
|
|
35
24
|
}
|
|
36
25
|
|
|
37
26
|
.t_locale {
|
|
38
27
|
cursor: pointer;
|
|
39
|
-
width: 30px;
|
|
40
|
-
height: 19px;
|
|
41
28
|
padding: 5px;
|
|
42
29
|
opacity: 0.6;
|
|
30
|
+
font-size: 26px;
|
|
43
31
|
&:hover {
|
|
44
32
|
opacity: 1;
|
|
45
33
|
}
|
|
@@ -93,8 +93,8 @@ table.index_table {
|
|
|
93
93
|
border: none;
|
|
94
94
|
.actions_panel-wrap_outer {
|
|
95
95
|
position: relative;
|
|
96
|
-
top:
|
|
97
|
-
bottom:
|
|
96
|
+
top: 0;
|
|
97
|
+
bottom: 0;
|
|
98
98
|
height: 100%;
|
|
99
99
|
padding: 0 0 20px 0
|
|
100
100
|
}
|
|
@@ -134,3 +134,11 @@ table.index_table {
|
|
|
134
134
|
margin-bottom: 10px;
|
|
135
135
|
}
|
|
136
136
|
|
|
137
|
+
#columns_hider_wrap {
|
|
138
|
+
.dropdown-menu {
|
|
139
|
+
margin-top: 60px;
|
|
140
|
+
}
|
|
141
|
+
label {
|
|
142
|
+
margin: 0 10px;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
.tool {
|
|
2
|
+
position: relative;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
.tool::before,
|
|
6
|
+
.tool::after {
|
|
7
|
+
left: 50%;
|
|
8
|
+
position: absolute;
|
|
9
|
+
color: white;
|
|
10
|
+
opacity: 0;
|
|
11
|
+
z-index: -100;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
//.tool::before,
|
|
15
|
+
//.tool::after,
|
|
16
|
+
.tool:hover::before,
|
|
17
|
+
.tool:focus::before,
|
|
18
|
+
.tool:hover::after,
|
|
19
|
+
.tool:focus::after {
|
|
20
|
+
opacity: 0.8;
|
|
21
|
+
z-index: 100;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.tool::before {
|
|
25
|
+
border-style: solid;
|
|
26
|
+
border-width: 4px 3px 0 3px;
|
|
27
|
+
border-color: black transparent transparent transparent;
|
|
28
|
+
bottom: 100%;
|
|
29
|
+
content: "";
|
|
30
|
+
transform: translateX(-50%);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.tool::after {
|
|
34
|
+
background: black;
|
|
35
|
+
border-radius: 5px;
|
|
36
|
+
bottom: calc(100% + 4px);;
|
|
37
|
+
color: white;
|
|
38
|
+
content: attr(title);
|
|
39
|
+
padding: 5px 10px;
|
|
40
|
+
transform: translateX(-50%);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.tool-left::before, .tool-left::after {
|
|
44
|
+
right: 100%;
|
|
45
|
+
left: auto;
|
|
46
|
+
bottom: 50%;
|
|
47
|
+
margin-bottom: 2px;
|
|
48
|
+
transform: none;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.tool-left::before {
|
|
52
|
+
border-width: 3px 2px 3px 4px;
|
|
53
|
+
border-color: transparent transparent transparent black;
|
|
54
|
+
transform: translateY(50%);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.tool-left::after {
|
|
58
|
+
white-space: nowrap;
|
|
59
|
+
margin-right: 6px;
|
|
60
|
+
transform: translateY(50%);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.tool-bottom::before, .tool-bottom::after {
|
|
64
|
+
bottom: auto;
|
|
65
|
+
top: 100%;
|
|
66
|
+
left: 50%;
|
|
67
|
+
margin-bottom: 2px;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.tool-bottom::before {
|
|
71
|
+
border-width: 0 3px 4px 3px;
|
|
72
|
+
border-color: transparent transparent black transparent;
|
|
73
|
+
transform: translateX(-50%);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.tool-bottom::after {
|
|
77
|
+
white-space: nowrap;
|
|
78
|
+
margin-top: 4px;
|
|
79
|
+
transform: translateX(-50%);
|
|
80
|
+
}
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
//q= require ab_admin/jquery.Jcrop.min
|
|
2
|
-
|
|
3
1
|
.fileupload {
|
|
4
2
|
overflow: hidden;
|
|
5
3
|
position: relative;
|
|
@@ -48,7 +46,7 @@
|
|
|
48
46
|
margin: 3px;
|
|
49
47
|
position: relative;
|
|
50
48
|
z-index: 3;
|
|
51
|
-
.destroy_asset, .main_image, .
|
|
49
|
+
.destroy_asset, .main_image, .rotate_image {
|
|
52
50
|
position: absolute;
|
|
53
51
|
cursor: pointer;
|
|
54
52
|
background: rgba(100, 131, 137, 0.6);
|
|
@@ -63,14 +61,9 @@
|
|
|
63
61
|
right: 0;
|
|
64
62
|
bottom: 0;
|
|
65
63
|
}
|
|
66
|
-
.crop_image {
|
|
67
|
-
display: none;
|
|
68
|
-
left: 0;
|
|
69
|
-
bottom: 0;
|
|
70
|
-
}
|
|
71
64
|
.rotate_image {
|
|
72
65
|
left: 0;
|
|
73
|
-
|
|
66
|
+
bottom: 0;
|
|
74
67
|
}
|
|
75
68
|
}
|
|
76
69
|
&.fileupload-single .main_image {
|
|
@@ -8,7 +8,7 @@ class Admin::BaseController < ::InheritedResources::Base
|
|
|
8
8
|
|
|
9
9
|
define_admin_callbacks :save, :create
|
|
10
10
|
|
|
11
|
-
before_action :authenticate_user!, :
|
|
11
|
+
before_action :authenticate_user!, :require_admin_access, :build_settings, :set_user_vars
|
|
12
12
|
before_action :add_breadcrumbs, :set_title, unless: :xhr?
|
|
13
13
|
|
|
14
14
|
class_attribute :export_builder, :batch_action_list, :button_scopes, instance_reader: false, instance_writer: false
|
|
@@ -19,9 +19,10 @@ class Admin::BaseController < ::InheritedResources::Base
|
|
|
19
19
|
|
|
20
20
|
helper_method :admin?, :moderator?
|
|
21
21
|
|
|
22
|
+
attr_reader :settings
|
|
22
23
|
helper_method :button_scopes, :collection_action?, :action_items, :resource_action_items, :query_params,
|
|
23
24
|
:preview_resource_path, :get_subject, :settings, :batch_action_list, :tree_node_renderer,
|
|
24
|
-
:
|
|
25
|
+
:pjax?, :xhr?, :params_for_links, :resource_list_id, :ransack_collection, :search_collection
|
|
25
26
|
|
|
26
27
|
rescue_from ::CanCan::AccessDenied, with: :render_unauthorized
|
|
27
28
|
|
|
@@ -31,13 +32,13 @@ class Admin::BaseController < ::InheritedResources::Base
|
|
|
31
32
|
format.csv do
|
|
32
33
|
authorize! :export, resource_class
|
|
33
34
|
doc = AbAdmin::Utils::CsvDocument.new(collection, export_options)
|
|
34
|
-
send_data(doc.render, filename: doc.filename, type: Mime[:csv], disposition: 'attachment')
|
|
35
|
+
send_data(doc.render(self, locale: params[:locale]), filename: doc.filename, type: Mime[:csv], disposition: 'attachment')
|
|
35
36
|
end
|
|
36
37
|
if Mime[:xlsx]
|
|
37
38
|
format.xlsx do
|
|
38
39
|
authorize! :export, resource_class
|
|
39
40
|
doc = AbAdmin::Utils::XlsDocument.new(collection, export_options)
|
|
40
|
-
send_data(doc.render, filename: doc.filename, type: Mime[:xlsx], disposition: 'attachment')
|
|
41
|
+
send_data(doc.render(self, locale: params[:locale]), filename: doc.filename, type: Mime[:xlsx], disposition: 'attachment')
|
|
41
42
|
end
|
|
42
43
|
end
|
|
43
44
|
end
|
|
@@ -66,7 +67,7 @@ class Admin::BaseController < ::InheritedResources::Base
|
|
|
66
67
|
|
|
67
68
|
def destroy
|
|
68
69
|
destroy! do
|
|
69
|
-
track_action! if settings[:history]
|
|
70
|
+
track_action! if @settings[:history]
|
|
70
71
|
redirect_to_on_success
|
|
71
72
|
end
|
|
72
73
|
end
|
|
@@ -96,7 +97,7 @@ class Admin::BaseController < ::InheritedResources::Base
|
|
|
96
97
|
if batch_action.to_s.end_with?('_collection')
|
|
97
98
|
count = collection.size
|
|
98
99
|
resource_class.public_send(batch_action, collection, *[params[:batch_params]].compact)
|
|
99
|
-
if settings[:history]
|
|
100
|
+
if @settings[:history]
|
|
100
101
|
if Object.const_defined?('ActiveRecord::Import') && Track.respond_to?(:import)
|
|
101
102
|
tracks = collection.map { |item| track_action("batch_#{batch_action}", item) }
|
|
102
103
|
Track.import_from_batch_collection_action(tracks)
|
|
@@ -132,13 +133,13 @@ class Admin::BaseController < ::InheritedResources::Base
|
|
|
132
133
|
def default_url_options
|
|
133
134
|
options = {format: nil}
|
|
134
135
|
options.update instance_exec(&AbAdmin.default_url_options) if AbAdmin.default_url_options
|
|
135
|
-
options.update instance_exec(
|
|
136
|
+
options.update instance_exec(&@settings[:default_url_options]) if @settings[:default_url_options]
|
|
136
137
|
options
|
|
137
138
|
end
|
|
138
139
|
|
|
139
140
|
def apply_batch_action(item, batch_action, *batch_params)
|
|
140
141
|
success = item.send(batch_action, *batch_params)
|
|
141
|
-
track_action!("batch_#{batch_action}", item) if settings[:history]
|
|
142
|
+
track_action!("batch_#{batch_action}", item) if @settings[:history]
|
|
142
143
|
success
|
|
143
144
|
end
|
|
144
145
|
|
|
@@ -181,7 +182,7 @@ class Admin::BaseController < ::InheritedResources::Base
|
|
|
181
182
|
end
|
|
182
183
|
|
|
183
184
|
def track_current_action(*)
|
|
184
|
-
track_action if settings[:history]
|
|
185
|
+
track_action if @settings[:history]
|
|
185
186
|
end
|
|
186
187
|
|
|
187
188
|
def flash_interpolation_options
|
|
@@ -205,8 +206,22 @@ class Admin::BaseController < ::InheritedResources::Base
|
|
|
205
206
|
nil
|
|
206
207
|
end
|
|
207
208
|
|
|
208
|
-
def
|
|
209
|
-
{
|
|
209
|
+
def custom_settings
|
|
210
|
+
{}
|
|
211
|
+
end
|
|
212
|
+
|
|
213
|
+
def build_settings
|
|
214
|
+
@settings = AbAdmin.default_resource_settings.deep_dup.merge!(custom_settings)
|
|
215
|
+
@settings[:index_views] = Array(@settings[:index_views]).map(&:to_sym)
|
|
216
|
+
if collection_action?
|
|
217
|
+
@settings[:current_index_view] = current_index_view
|
|
218
|
+
@settings[:button_scopes] = @settings[:current_index_view] != :stats
|
|
219
|
+
@settings[:per_page] ||= per_page
|
|
220
|
+
@settings[:per_page_variants] ||= @settings[:per_page_variants].find_all{|n| n <= @settings[:max_per_page] }
|
|
221
|
+
@settings[:sidebar] = true unless @settings.key?(:sidebar)
|
|
222
|
+
@settings[:pagination] = @settings[:pagination_index_views].include?(@settings[:current_index_view])
|
|
223
|
+
end
|
|
224
|
+
@settings[:well] = (collection_action? || %w(show history).include?(action_name)) && @settings[:current_index_view] != :tree unless @settings.key?(:well)
|
|
210
225
|
end
|
|
211
226
|
|
|
212
227
|
def action_items
|
|
@@ -225,7 +240,7 @@ class Admin::BaseController < ::InheritedResources::Base
|
|
|
225
240
|
end
|
|
226
241
|
|
|
227
242
|
def collection_action?
|
|
228
|
-
|
|
243
|
+
@settings[:collection_actions].include?(action_name)
|
|
229
244
|
end
|
|
230
245
|
|
|
231
246
|
def self.scope(name, options={}, &block)
|
|
@@ -271,57 +286,38 @@ class Admin::BaseController < ::InheritedResources::Base
|
|
|
271
286
|
@tree_node_renderer ||= lambda { |r| link_to AbAdmin.display_name(r), resource_path(r), class: 'tree-item_link' }
|
|
272
287
|
end
|
|
273
288
|
|
|
274
|
-
def search_collection
|
|
275
|
-
@search_collection ||= begin
|
|
276
|
-
@search = end_of_association_chain.accessible_by(current_ability).ransack(query_params)
|
|
277
|
-
with_scopes(@search.result(distinct: @search.object.joins_values.present?)).admin(current_user)
|
|
278
|
-
end
|
|
279
|
-
end
|
|
280
|
-
|
|
281
|
-
def query_params
|
|
282
|
-
query = params[:q].try! {|q| q.permit!.to_h} || {}
|
|
283
|
-
nested = resource_class.respond_to?(:acts_as_nested_set_options) && current_index_view == 'tree'
|
|
284
|
-
query[:s] ||= settings[:default_order] || ('id desc' unless nested)
|
|
285
|
-
query.reject_blank
|
|
286
|
-
end
|
|
287
|
-
|
|
288
|
-
def with_scopes(relation)
|
|
289
|
-
relation
|
|
290
|
-
end
|
|
291
|
-
|
|
292
289
|
def collection
|
|
290
|
+
return unless collection_action?
|
|
293
291
|
@collection ||= begin
|
|
294
292
|
result = search_collection
|
|
295
|
-
result = result.paginate(page: params[:page], per_page: per_page, large: true) if
|
|
293
|
+
result = result.paginate(page: params[:page], per_page: @settings[:per_page], large: true) if @settings[:pagination]
|
|
296
294
|
result
|
|
297
295
|
end
|
|
298
296
|
end
|
|
299
297
|
|
|
300
|
-
def
|
|
301
|
-
|
|
302
|
-
|
|
298
|
+
def search_collection
|
|
299
|
+
return unless collection_action?
|
|
300
|
+
@search_collection ||= with_scopes(ransack_collection.result(distinct: ransack_collection.object.joins_values.present?)).admin(current_user)
|
|
303
301
|
end
|
|
304
302
|
|
|
305
|
-
def
|
|
306
|
-
|
|
303
|
+
def ransack_collection
|
|
304
|
+
return unless collection_action?
|
|
305
|
+
@ransack_collection ||= end_of_association_chain.accessible_by(current_ability).ransack(query_params)
|
|
307
306
|
end
|
|
308
307
|
|
|
309
|
-
def
|
|
310
|
-
|
|
308
|
+
def query_params
|
|
309
|
+
query = params[:q].try! {|q| q.permit!.to_h} || {}
|
|
310
|
+
nested = resource_class.respond_to?(:acts_as_nested_set_options) && @settings[:current_index_view] == :tree
|
|
311
|
+
query[:s] ||= @settings[:default_order] || ('id desc' unless nested)
|
|
312
|
+
query.reject_blank
|
|
311
313
|
end
|
|
312
314
|
|
|
313
|
-
def
|
|
314
|
-
|
|
315
|
+
def with_scopes(relation)
|
|
316
|
+
relation
|
|
315
317
|
end
|
|
316
318
|
|
|
317
|
-
def
|
|
318
|
-
|
|
319
|
-
if index_view && normalized_index_views.include?(index_view)
|
|
320
|
-
cookies[:iv] = index_view
|
|
321
|
-
index_view
|
|
322
|
-
else
|
|
323
|
-
normalized_index_views.first
|
|
324
|
-
end
|
|
319
|
+
def set_layout
|
|
320
|
+
pjax? ? false : 'admin/application'
|
|
325
321
|
end
|
|
326
322
|
|
|
327
323
|
def back_or_collection
|
|
@@ -356,8 +352,8 @@ class Admin::BaseController < ::InheritedResources::Base
|
|
|
356
352
|
fv.locale = I18n.locale
|
|
357
353
|
fv.bg_color = current_user.bg_color
|
|
358
354
|
fv.admin = admin?
|
|
359
|
-
fv.hotkeys = settings[:hotkeys]
|
|
360
|
-
fv.list_dblclick = settings[:list_dblclick]
|
|
355
|
+
fv.hotkeys = @settings[:hotkeys]
|
|
356
|
+
fv.list_dblclick = @settings[:list_dblclick]
|
|
361
357
|
fv.env = Rails.env
|
|
362
358
|
if resource_class.respond_to?(:model_name)
|
|
363
359
|
fv.resource_plural = resource_class.model_name.plural
|
|
@@ -378,31 +374,23 @@ class Admin::BaseController < ::InheritedResources::Base
|
|
|
378
374
|
end
|
|
379
375
|
|
|
380
376
|
def moderator?
|
|
381
|
-
|
|
377
|
+
current_user.try!(:moderator?)
|
|
382
378
|
end
|
|
383
379
|
|
|
384
380
|
def admin?
|
|
385
|
-
|
|
381
|
+
current_user.try!(:admin?)
|
|
386
382
|
end
|
|
387
383
|
|
|
388
|
-
def
|
|
384
|
+
def require_admin_access
|
|
389
385
|
raise CanCan::AccessDenied unless current_user.admin_access?
|
|
390
386
|
end
|
|
391
387
|
|
|
392
|
-
def require_moderator
|
|
393
|
-
raise CanCan::AccessDenied unless moderator?
|
|
394
|
-
end
|
|
395
|
-
|
|
396
|
-
def require_admin
|
|
397
|
-
raise CanCan::AccessDenied unless admin?
|
|
398
|
-
end
|
|
399
|
-
|
|
400
388
|
def bind_current_user(*)
|
|
401
|
-
resource.user_id = current_user.id if
|
|
389
|
+
resource.user_id = current_user.id if !@settings[:skip_bind_current_user] && resource.respond_to?(:user_id)
|
|
402
390
|
end
|
|
403
391
|
|
|
404
392
|
def bind_current_updater(*)
|
|
405
|
-
resource.updater_id = current_user.id if
|
|
393
|
+
resource.updater_id = current_user.id if !@settings[:skip_bind_current_updater] && resource.respond_to?(:updater_id)
|
|
406
394
|
end
|
|
407
395
|
|
|
408
396
|
def get_subject
|
|
@@ -428,4 +416,20 @@ class Admin::BaseController < ::InheritedResources::Base
|
|
|
428
416
|
{root: false}
|
|
429
417
|
end
|
|
430
418
|
end
|
|
419
|
+
|
|
420
|
+
def resource_list_id
|
|
421
|
+
"list_#{resource_instance_name}_#{resource.id}"
|
|
422
|
+
end
|
|
423
|
+
|
|
424
|
+
private
|
|
425
|
+
|
|
426
|
+
def per_page
|
|
427
|
+
request_per_page = (params[:per_page].presence || cookies[:pp].presence).to_i.nonzero?
|
|
428
|
+
params[:per_page] = [request_per_page || @settings[:view_default_per_page][@settings[:current_index_view]], @settings[:max_per_page]].min
|
|
429
|
+
end
|
|
430
|
+
|
|
431
|
+
def current_index_view
|
|
432
|
+
index_view = params[:index_view].presence.try!(:to_sym)
|
|
433
|
+
@settings[:index_views].include?(index_view) ? index_view : @settings[:index_views].first
|
|
434
|
+
end
|
|
431
435
|
end
|