ab_admin 0.8.3 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (114) hide show
  1. checksums.yaml +4 -4
  2. data/MIT-LICENSE +1 -1
  3. data/README.md +11 -5
  4. data/app/assets/javascripts/ab_admin/components/admin_assets.js.coffee +0 -25
  5. data/app/assets/javascripts/ab_admin/components/google_translate.js.coffee +3 -5
  6. data/app/assets/javascripts/ab_admin/components/in_place_edit.js.coffee +5 -1
  7. data/app/assets/javascripts/ab_admin/core/columns_hider.js.coffee +24 -23
  8. data/app/assets/javascripts/ab_admin/core/init.js.coffee +6 -2
  9. data/app/assets/javascripts/ab_admin/core/search_form.js.coffee +1 -7
  10. data/app/assets/javascripts/ab_admin/core/ui_utils.js.coffee +2 -6
  11. data/app/assets/javascripts/ab_admin/core/utils.js.coffee +8 -2
  12. data/app/assets/javascripts/ab_admin/main.js +2 -2
  13. data/app/assets/stylesheets/ab_admin/bootstrap_and_overrides.scss +35 -10
  14. data/app/assets/stylesheets/ab_admin/components/_base.scss +21 -1
  15. data/app/assets/stylesheets/ab_admin/components/_form.scss +13 -17
  16. data/app/assets/stylesheets/ab_admin/components/_grid_view.scss +2 -2
  17. data/app/assets/stylesheets/ab_admin/components/_locale_tabs.scss +11 -23
  18. data/app/assets/stylesheets/ab_admin/components/_navigation.scss +0 -9
  19. data/app/assets/stylesheets/ab_admin/components/_table_view.scss +10 -2
  20. data/app/assets/stylesheets/ab_admin/components/_tooltip.scss +80 -0
  21. data/app/assets/stylesheets/ab_admin/components/_tree_view.scss +1 -1
  22. data/app/assets/stylesheets/ab_admin/devise.scss +2 -2
  23. data/app/assets/stylesheets/ab_admin/fileupload.scss +2 -9
  24. data/app/assets/stylesheets/ab_admin/main.scss +0 -1
  25. data/app/controllers/admin/base_controller.rb +67 -63
  26. data/app/controllers/admin/dashboards_controller.rb +2 -2
  27. data/app/controllers/admin/locators_controller.rb +8 -6
  28. data/app/controllers/admin/manager_controller.rb +2 -2
  29. data/app/controllers/admin/static_pages_controller.rb +0 -4
  30. data/app/controllers/admin/structures_controller.rb +2 -2
  31. data/app/views/admin/assets/batch_edit.html.slim +1 -1
  32. data/app/views/admin/base/_search_layout.html.slim +6 -5
  33. data/app/views/admin/base/create.js.erb +5 -2
  34. data/app/views/admin/base/index.html.slim +4 -4
  35. data/app/views/admin/base/update.js.erb +5 -0
  36. data/app/views/admin/fileupload/_asset_templates.html.slim +1 -2
  37. data/app/views/admin/fileupload/_image.html.slim +1 -2
  38. data/app/views/admin/locators/edit.html.slim +7 -6
  39. data/app/views/admin/manager/_map.html.slim +4 -0
  40. data/app/views/admin/manager/_table.html.slim +1 -1
  41. data/app/views/admin/shared/_content_actions.html.slim +19 -21
  42. data/app/views/admin/shared/_flash.html.slim +5 -4
  43. data/app/views/admin/shared/_locale_tabs.html.slim +2 -2
  44. data/app/views/admin/shared/_main_menu.html.slim +1 -1
  45. data/app/views/admin/structures/_form.html.slim +1 -1
  46. data/app/views/admin/users/_form.html.slim +1 -1
  47. data/app/views/admin/users/_search_form.html.slim +1 -1
  48. data/app/views/layouts/admin/_footer.html.slim +0 -1
  49. data/app/views/layouts/admin/_navigation.html.slim +1 -1
  50. data/app/views/layouts/admin/application.html.slim +2 -2
  51. data/config/locales/de.yml +1 -2
  52. data/config/locales/en.yml +1 -2
  53. data/config/locales/ru.yml +0 -1
  54. data/config/locales/uk.yml +0 -1
  55. data/lib/ab_admin.rb +34 -33
  56. data/lib/ab_admin/abstract_resource.rb +1 -1
  57. data/lib/ab_admin/carrierwave/base_uploader.rb +1 -2
  58. data/lib/ab_admin/concerns/admin_addition.rb +0 -30
  59. data/lib/ab_admin/concerns/translations_macro.rb +97 -0
  60. data/lib/ab_admin/concerns/utilities.rb +1 -1
  61. data/lib/ab_admin/config/base.rb +7 -0
  62. data/lib/ab_admin/controllers/callbacks.rb +3 -26
  63. data/lib/ab_admin/core_ext/array.rb +4 -48
  64. data/lib/ab_admin/core_ext/hash.rb +2 -31
  65. data/lib/ab_admin/core_ext/other.rb +0 -6
  66. data/lib/ab_admin/core_ext/string.rb +0 -80
  67. data/lib/ab_admin/engine.rb +1 -0
  68. data/lib/ab_admin/hooks/will_paginate_id_prefetch.rb +8 -6
  69. data/lib/ab_admin/hooks/will_paginate_no_uri.rb +1 -1
  70. data/lib/ab_admin/i18n_tools/google_translate.rb +3 -1
  71. data/lib/ab_admin/i18n_tools/model_translator.rb +1 -1
  72. data/lib/ab_admin/models/header.rb +2 -2
  73. data/lib/ab_admin/models/locator.rb +28 -2
  74. data/lib/ab_admin/models/user.rb +12 -48
  75. data/lib/ab_admin/utils/csv_document.rb +5 -3
  76. data/lib/ab_admin/utils/eval_helpers.rb +6 -3
  77. data/lib/ab_admin/utils/xls_document.rb +18 -16
  78. data/lib/ab_admin/version.rb +1 -1
  79. data/lib/ab_admin/views/admin_helpers.rb +10 -12
  80. data/lib/ab_admin/views/admin_navigation_helpers.rb +7 -8
  81. data/lib/ab_admin/views/form_builder.rb +7 -5
  82. data/lib/ab_admin/views/helpers.rb +0 -9
  83. data/lib/ab_admin/views/inputs/ckeditor_input.rb +4 -4
  84. data/lib/ab_admin/views/manager_helpers.rb +8 -5
  85. data/lib/ab_admin/views/search_form_builder.rb +2 -2
  86. data/lib/ab_admin/views/will_paginate_bootstrap_renderer.rb +60 -0
  87. data/lib/generators/ab_admin/glob/glob_generator.rb +4 -5
  88. data/lib/generators/ab_admin/glob/templates/migration.erb +10 -7
  89. data/lib/generators/ab_admin/install/templates/config/ab_admin.rb.erb +1 -1
  90. data/lib/generators/ab_admin/install/templates/models/user.rb +0 -11
  91. data/lib/generators/ab_admin/install/templates/spec/spec_helper.rb +0 -1
  92. data/lib/generators/ab_admin/install/templates/spec/support/database_cleaner.rb +8 -11
  93. data/lib/generators/ab_admin/model/model_generator.rb +3 -4
  94. data/lib/generators/ab_admin/model/templates/resource.erb +5 -2
  95. data/lib/generators/ab_admin/resource/templates/controller.erb +2 -2
  96. metadata +37 -79
  97. data/app/assets/images/admin/Jcrop.gif +0 -0
  98. data/app/assets/images/admin/flags/de.png +0 -0
  99. data/app/assets/images/admin/flags/en.png +0 -0
  100. data/app/assets/images/admin/flags/es.png +0 -0
  101. data/app/assets/images/admin/flags/fr.png +0 -0
  102. data/app/assets/images/admin/flags/it.png +0 -0
  103. data/app/assets/images/admin/flags/ja.png +0 -0
  104. data/app/assets/images/admin/flags/pl.png +0 -0
  105. data/app/assets/images/admin/flags/ru.png +0 -0
  106. data/app/assets/images/admin/flags/uk.png +0 -0
  107. data/app/assets/javascripts/ab_admin/components/croppable_image.js.coffee +0 -33
  108. data/app/assets/stylesheets/ab_admin/components/_columns_hider.scss +0 -5
  109. data/app/assets/stylesheets/ab_admin/components/_perms.scss +0 -39
  110. data/app/views/admin/shared/_columns_hider.html.slim +0 -9
  111. data/lib/ab_admin/hooks/globalize_locale_suffix_accessors.rb +0 -25
  112. data/lib/ab_admin/hooks/globalize_valid_locale.rb +0 -9
  113. data/lib/generators/ab_admin/ckeditor_assets/ckeditor_assets_generator.rb +0 -19
  114. data/lib/generators/template.rb +0 -96
@@ -1,5 +1,5 @@
1
1
  .grid_view {
2
- #columns_hider_show, .pagination .pagination, .per_page {
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
- #columns_hider_show {
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
- @each $locale in ru, uk, en, it, de, fr, es, pl {
7
- li {
8
- a.ico_#{$locale} {
9
- opacity: 0.5;
10
- padding-left: 12px;
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
- .t_locale_#{$locale} {
18
- background: image-url("admin/flags/#{$locale}.png") 10px center no-repeat;
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: 0;
31
- left: -5px;
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
  }
@@ -74,15 +74,6 @@
74
74
  }
75
75
  }
76
76
 
77
- #columns_hider {
78
- width: 60%;
79
- margin-left: -30%;
80
- }
81
-
82
- #columns_hider_show {
83
- margin-left: 10px;
84
- }
85
-
86
77
  #lang_bar img {
87
78
  height: 16px;
88
79
  width: 24px;
@@ -93,8 +93,8 @@ table.index_table {
93
93
  border: none;
94
94
  .actions_panel-wrap_outer {
95
95
  position: relative;
96
- top: 0px;
97
- bottom: 0px;
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
+ }
@@ -46,7 +46,7 @@ ol.sortable_tree {
46
46
 
47
47
  #main {
48
48
  .tree_view {
49
- #columns_hider_show {
49
+ #columns_hider_wrap {
50
50
  display: none;
51
51
  }
52
52
  .content_actions {
@@ -1,5 +1,5 @@
1
- @import "bootstrap";
2
- @import "bootstrap-responsive";
1
+ @import "bootstrap_2_3_2/bootstrap";
2
+ @import "bootstrap_2_3_2/bootstrap-responsive";
3
3
 
4
4
  $element_width: 280px;
5
5
  $element_font_size: 16px;
@@ -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, .crop_image, .rotate_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
- bottm: 0;
66
+ bottom: 0;
74
67
  }
75
68
  }
76
69
  &.fileupload-single .main_image {
@@ -1,6 +1,5 @@
1
1
  //= require bootstrap-wysihtml5
2
2
  //= require select2
3
- //= require fancybox
4
3
  //= require ab_admin/bootstrap_and_overrides
5
4
  //= require ab_admin/bootstrap-editable
6
5
  //= require ab_admin/bootstrap-datetimepicker
@@ -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!, :require_require_admin_access, :set_user_vars
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
- :normalized_index_views, :current_index_view, :pjax?, :xhr?, :max_per_page, :params_for_links
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(&settings[:default_url_options]) if settings[:default_url_options]
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 settings
209
- {sidebar: collection_action?, well: (collection_action? || %w(show history).include?(action_name))}.update(AbAdmin.default_resource_settings)
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
- %w(index search batch rebuild).include?(action_name)
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 action_name != 'batch' && !settings[:skip_pagination]
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 per_page
301
- request_per_page = (params[:per_page].presence || cookies[:pp].presence).to_i.nonzero?
302
- params[:per_page] = [request_per_page || AbAdmin.view_default_per_page[current_index_view.to_sym], max_per_page].min
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 max_per_page
306
- settings[:max_per_page] || AbAdmin.max_per_page
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 set_layout
310
- pjax? ? false : 'admin/application'
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 normalized_index_views
314
- Array(settings[:index_view])
315
+ def with_scopes(relation)
316
+ relation
315
317
  end
316
318
 
317
- def current_index_view
318
- index_view = params[:index_view].presence || cookies[:iv].presence
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
- user_signed_in? && current_user.moderator?
377
+ current_user.try!(:moderator?)
382
378
  end
383
379
 
384
380
  def admin?
385
- user_signed_in? && current_user.admin?
381
+ current_user.try!(:admin?)
386
382
  end
387
383
 
388
- def require_require_admin_access
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 !settings[:skip_bind_current_user] && resource.respond_to?(:user_id)
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 !settings[:skip_bind_current_updater] && resource.respond_to?(:updater_id)
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