ab_admin 0.3.6 → 0.4.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.
Files changed (419) hide show
  1. checksums.yaml +7 -0
  2. data/{LICENSE.txt → MIT-LICENSE} +2 -4
  3. data/README.md +3 -3
  4. data/Rakefile +21 -3
  5. data/app/assets/images/admin/flags/b_de.png +0 -0
  6. data/app/assets/images/admin/flags/b_es.png +0 -0
  7. data/app/assets/images/admin/flags/b_fr.png +0 -0
  8. data/app/assets/images/admin/flags/flag_de.gif +0 -0
  9. data/app/assets/images/admin/flags/flag_de_nonact.gif +0 -0
  10. data/app/assets/images/admin/flags/flag_es.gif +0 -0
  11. data/app/assets/images/admin/flags/flag_es_nonact.gif +0 -0
  12. data/app/assets/images/admin/flags/flag_fr.gif +0 -0
  13. data/app/assets/images/admin/flags/flag_fr_nonact.gif +0 -0
  14. data/app/assets/javascripts/ab_admin/components/admin_assets.js.coffee +50 -60
  15. data/app/assets/javascripts/ab_admin/components/base_assets.js.coffee +86 -0
  16. data/app/assets/javascripts/ab_admin/components/croppable_image.js.coffee +4 -4
  17. data/app/assets/javascripts/ab_admin/components/gmaps.js.coffee +5 -0
  18. data/app/assets/javascripts/ab_admin/components/google_translate.js.coffee +0 -1
  19. data/app/assets/javascripts/ab_admin/components/in_place_edit.js.coffee +7 -3
  20. data/app/assets/javascripts/ab_admin/components/locator.js.coffee +1 -1
  21. data/app/assets/javascripts/ab_admin/components/select2_bridge.js.coffee +152 -0
  22. data/app/assets/javascripts/ab_admin/components/sortable_tree.js.coffee +1 -1
  23. data/app/assets/javascripts/ab_admin/core/batch_actions.js.coffee +5 -4
  24. data/app/assets/javascripts/ab_admin/core/columns_hider.js.coffee +4 -11
  25. data/app/assets/javascripts/ab_admin/core/confirmation.js.coffee +4 -43
  26. data/app/assets/javascripts/ab_admin/core/deprecated_utils.js.coffee +44 -0
  27. data/app/assets/javascripts/ab_admin/core/init.js.coffee +8 -25
  28. data/app/assets/javascripts/ab_admin/core/pjax.js.coffee +18 -4
  29. data/app/assets/javascripts/ab_admin/core/search_form.js.coffee +5 -5
  30. data/app/assets/javascripts/ab_admin/core/ui_utils.js.coffee +15 -86
  31. data/app/assets/javascripts/ab_admin/core/utils.js.coffee +38 -51
  32. data/app/assets/javascripts/ab_admin/core/view_layout.js.coffee +1 -1
  33. data/app/assets/javascripts/ab_admin/inputs/datetime_input.js.coffee +16 -18
  34. data/app/assets/javascripts/ab_admin/main.js +7 -7
  35. data/app/assets/stylesheets/ab_admin/bootstrap_and_overrides.css.scss +21 -8
  36. data/app/assets/stylesheets/ab_admin/components/_admin_comments.css.scss +17 -5
  37. data/app/assets/stylesheets/ab_admin/components/_base.css.scss +4 -0
  38. data/app/assets/stylesheets/ab_admin/components/_colored_tabs.css.scss +1 -4
  39. data/app/assets/stylesheets/ab_admin/components/_columns_hider.css.scss +5 -0
  40. data/app/assets/stylesheets/ab_admin/components/_form.css.scss +45 -16
  41. data/app/assets/stylesheets/ab_admin/components/_grid_view.css.scss +11 -0
  42. data/app/assets/stylesheets/ab_admin/components/_locale_tabs.css.scss +1 -1
  43. data/app/assets/stylesheets/ab_admin/components/_navigation.css.scss +11 -9
  44. data/app/assets/stylesheets/ab_admin/components/_table_view.css.scss +1 -1
  45. data/app/assets/stylesheets/ab_admin/components/_translations.css.scss +1 -0
  46. data/app/assets/stylesheets/ab_admin/components/{_sortable_tree.css.scss → _tree_view.css.scss} +8 -3
  47. data/app/assets/stylesheets/ab_admin/fileupload.css.scss +51 -43
  48. data/app/assets/stylesheets/ab_admin/main.css.scss +1 -3
  49. data/app/controllers/admin/admin_comments_controller.rb +14 -4
  50. data/app/controllers/admin/assets_controller.rb +44 -35
  51. data/app/controllers/admin/base_controller.rb +93 -38
  52. data/app/controllers/admin/locators_controller.rb +3 -2
  53. data/app/controllers/admin/manager_controller.rb +20 -9
  54. data/app/controllers/admin/structures_controller.rb +9 -1
  55. data/app/controllers/admin/users_controller.rb +1 -2
  56. data/app/views/ab_admin/devise/sessions/new.html.slim +1 -1
  57. data/app/views/admin/admin_comments/_comment.html.slim +21 -7
  58. data/app/views/admin/admin_comments/_comments.html.slim +1 -1
  59. data/app/views/admin/admin_comments/_form.html.slim +8 -3
  60. data/app/views/admin/admin_comments/_list_block.html.slim +7 -0
  61. data/app/views/admin/admin_comments/create.js.erb +3 -2
  62. data/app/views/admin/admin_comments/destroy.js.erb +1 -1
  63. data/app/views/admin/admin_comments/index.js.erb +14 -0
  64. data/app/views/admin/assets/batch_edit.html.slim +14 -0
  65. data/app/views/admin/base/_modal_form_layout.html.slim +12 -0
  66. data/app/views/admin/base/_search_layout.html.slim +4 -3
  67. data/app/views/admin/base/_table.html.slim +2 -2
  68. data/app/views/admin/base/create.js.erb +13 -8
  69. data/app/views/admin/base/history.html.slim +18 -0
  70. data/app/views/admin/base/index.html.slim +3 -3
  71. data/app/views/admin/base/new.js.erb +14 -8
  72. data/app/views/admin/base/show.html.slim +1 -2
  73. data/app/views/admin/base/show.js.erb +7 -0
  74. data/app/views/admin/fileupload/_asset_templates.html.slim +29 -0
  75. data/app/views/admin/fileupload/_container.html.slim +13 -12
  76. data/app/views/admin/fileupload/_file.html.slim +2 -2
  77. data/app/views/admin/fileupload/_image.html.slim +8 -0
  78. data/app/views/admin/fileupload/_video.html.slim +2 -2
  79. data/app/views/admin/headers/_form.html.slim +2 -0
  80. data/app/views/admin/locators/edit.html.slim +1 -1
  81. data/app/views/admin/locators/show.html.slim +1 -2
  82. data/app/views/admin/manager/_form.html.slim +17 -3
  83. data/app/views/admin/manager/_modal_form.html.slim +19 -0
  84. data/app/views/admin/manager/_table.html.slim +3 -3
  85. data/app/views/admin/manager/show.html.slim +1 -0
  86. data/app/views/admin/shared/_content_actions.html.slim +39 -0
  87. data/app/views/admin/shared/_locale_tabs.html.slim +3 -3
  88. data/app/views/admin/shared/inputs/_checkbox_tree.html.slim +9 -3
  89. data/app/views/admin/structures/_form.html.slim +4 -7
  90. data/app/views/admin/users/_form.html.slim +2 -4
  91. data/app/views/admin/users/_search_form.html.slim +0 -1
  92. data/app/views/admin/users/_table.html.slim +8 -10
  93. data/app/views/layouts/admin/_footer.html.slim +3 -4
  94. data/app/views/layouts/admin/_navigation.html.slim +2 -2
  95. data/app/views/layouts/admin/application.html.slim +7 -9
  96. data/app/views/layouts/admin/devise.html.slim +3 -4
  97. data/config/locales/de.yml +319 -0
  98. data/config/locales/en.devise.yml +44 -31
  99. data/config/locales/en.yml +166 -143
  100. data/config/locales/it.devise.yml +54 -41
  101. data/config/locales/it.yml +178 -163
  102. data/config/locales/ru.devise.yml +70 -56
  103. data/config/locales/ru.yml +280 -264
  104. data/config/routes.rb +6 -3
  105. data/db/migrate/20130101000001_create_users.rb +7 -11
  106. data/db/migrate/20130101000003_create_assets.rb +5 -5
  107. data/db/migrate/20130101000004_create_headers.rb +2 -6
  108. data/db/migrate/20130101000005_create_static_pages.rb +1 -5
  109. data/db/migrate/20130101000006_create_structures.rb +5 -9
  110. data/db/migrate/20130101000007_base_translations.rb +3 -1
  111. data/db/migrate/20130101000008_create_admin_comments.rb +5 -5
  112. data/db/migrate/20130101000009_create_tracks.rb +20 -0
  113. data/lib/ab_admin.rb +36 -4
  114. data/lib/ab_admin/abstract_resource.rb +28 -7
  115. data/lib/ab_admin/carrierwave/base_uploader.rb +85 -5
  116. data/lib/ab_admin/carrierwave/glue.rb +6 -1
  117. data/lib/ab_admin/concerns/admin_addition.rb +26 -9
  118. data/lib/ab_admin/concerns/asset_human_names.rb +23 -0
  119. data/lib/ab_admin/concerns/fileuploads.rb +102 -0
  120. data/lib/ab_admin/concerns/has_tracking.rb +32 -0
  121. data/lib/ab_admin/concerns/nested_set.rb +9 -9
  122. data/lib/ab_admin/concerns/silencer.rb +5 -5
  123. data/lib/ab_admin/concerns/utilities.rb +28 -16
  124. data/lib/ab_admin/concerns/validations.rb +1 -1
  125. data/lib/ab_admin/config/base.rb +10 -2
  126. data/lib/ab_admin/controllers/callbacks.rb +2 -2
  127. data/lib/ab_admin/controllers/can_can_manager_resource.rb +3 -2
  128. data/lib/ab_admin/controllers/fv.rb +16 -0
  129. data/lib/ab_admin/controllers/head_options.rb +6 -4
  130. data/lib/ab_admin/core_ext/hash.rb +25 -70
  131. data/lib/ab_admin/core_ext/string.rb +17 -4
  132. data/lib/ab_admin/engine.rb +2 -8
  133. data/lib/ab_admin/hooks.rb +8 -3
  134. data/lib/ab_admin/hooks/active_model_hooks.rb +1 -1
  135. data/lib/ab_admin/hooks/globalize_hooks.rb +35 -0
  136. data/lib/ab_admin/hooks/paginate_hooks.rb +3 -1
  137. data/lib/ab_admin/i18n_tools/model_translator.rb +1 -1
  138. data/lib/ab_admin/menu/abstract_builder.rb +14 -0
  139. data/lib/ab_admin/menu/base_group.rb +26 -0
  140. data/lib/ab_admin/menu/builder.rb +16 -0
  141. data/lib/ab_admin/menu/group.rb +24 -0
  142. data/lib/ab_admin/menu/item.rb +23 -0
  143. data/lib/ab_admin/models/admin_comment.rb +68 -0
  144. data/lib/ab_admin/models/asset.rb +30 -19
  145. data/lib/ab_admin/models/attachment_file.rb +2 -1
  146. data/lib/ab_admin/models/header.rb +15 -0
  147. data/lib/ab_admin/models/locator.rb +1 -3
  148. data/lib/ab_admin/models/settings.rb +10 -10
  149. data/lib/ab_admin/models/structure.rb +20 -9
  150. data/lib/ab_admin/models/track.rb +61 -0
  151. data/lib/ab_admin/models/type_model.rb +30 -17
  152. data/lib/ab_admin/models/user.rb +18 -49
  153. data/lib/ab_admin/utils.rb +16 -7
  154. data/lib/ab_admin/utils/logger.rb +11 -7
  155. data/lib/ab_admin/utils/mysql.rb +10 -0
  156. data/lib/ab_admin/version.rb +1 -1
  157. data/lib/ab_admin/views/admin_helpers.rb +20 -9
  158. data/lib/ab_admin/views/admin_navigation_helpers.rb +44 -21
  159. data/lib/ab_admin/views/content_only_wrapper.rb +14 -0
  160. data/lib/ab_admin/views/form_builder.rb +27 -89
  161. data/lib/ab_admin/views/helpers.rb +1 -28
  162. data/lib/ab_admin/views/inputs/capture_block_input.rb +16 -0
  163. data/lib/ab_admin/views/inputs/date_time_picker_input.rb +45 -0
  164. data/lib/ab_admin/views/inputs/token_input.rb +2 -1
  165. data/lib/ab_admin/views/inputs/uploader_input.rb +101 -0
  166. data/lib/ab_admin/views/manager_helpers.rb +12 -0
  167. data/lib/ab_admin/views/search_form_builder.rb +36 -13
  168. data/lib/generators/ab_admin/ckeditor_assets/ckeditor_assets_generator.rb +1 -1
  169. data/lib/generators/ab_admin/install/install_generator.rb +3 -2
  170. data/lib/generators/ab_admin/install/templates/config/ab_admin.rb.erb +1 -1
  171. data/lib/generators/ab_admin/install/templates/config/admin_menu.rb +1 -1
  172. data/lib/generators/ab_admin/install/templates/config/i18n-js.yml +1 -1
  173. data/lib/generators/ab_admin/install/templates/config/nginx.conf +22 -9
  174. data/lib/generators/ab_admin/install/templates/config/robots.txt +7 -0
  175. data/lib/generators/ab_admin/install/templates/config/seeds.rb +2 -1
  176. data/lib/generators/ab_admin/install/templates/models/ability.rb +2 -7
  177. data/lib/generators/ab_admin/install/templates/models/admin_comment.rb +3 -28
  178. data/lib/generators/ab_admin/install/templates/models/asset.rb +4 -2
  179. data/lib/generators/ab_admin/install/templates/models/attachment_file.rb +1 -1
  180. data/lib/generators/ab_admin/install/templates/models/avatar.rb +2 -2
  181. data/lib/generators/ab_admin/install/templates/models/gender_type.rb +1 -1
  182. data/lib/generators/ab_admin/install/templates/models/header.rb +2 -2
  183. data/lib/generators/ab_admin/install/templates/models/locator.rb +0 -1
  184. data/lib/generators/ab_admin/install/templates/models/picture.rb +1 -1
  185. data/lib/generators/ab_admin/install/templates/models/settings.rb +1 -1
  186. data/lib/generators/ab_admin/install/templates/models/structure.rb +6 -8
  187. data/lib/generators/ab_admin/install/templates/models/track.rb +5 -0
  188. data/lib/generators/ab_admin/install/templates/models/user.rb +2 -3
  189. data/lib/generators/ab_admin/install/templates/script/unicorn.sh +0 -2
  190. data/lib/generators/ab_admin/install/templates/spec/factories/user_factory.rb +1 -2
  191. data/lib/generators/ab_admin/install/templates/uploaders/attachment_file_uploader.rb +1 -1
  192. data/lib/generators/ab_admin/install/templates/uploaders/avatar_uploader.rb +1 -1
  193. data/lib/generators/ab_admin/install/templates/uploaders/picture_uploader.rb +1 -1
  194. data/lib/generators/ab_admin/model/templates/resource.erb +1 -1
  195. data/lib/generators/ab_admin/resource/templates/_form.slim.erb +49 -45
  196. data/lib/generators/ab_admin/resource/templates/_table.slim.erb +1 -1
  197. data/lib/generators/template.rb +32 -56
  198. data/lib/tasks/assets.rake +1 -0
  199. metadata +197 -698
  200. data/.gitignore +0 -41
  201. data/Gemfile +0 -77
  202. data/Guardfile +0 -35
  203. data/TODO +0 -4
  204. data/ab_admin.gemspec +0 -59
  205. data/app/views/admin/fileupload/_asset.html.slim +0 -8
  206. data/app/views/admin/fileupload/_ftmpl.html.slim +0 -6
  207. data/app/views/admin/fileupload/_tmpl.html.slim +0 -9
  208. data/app/views/admin/fileupload/_vtmpl.html.slim +0 -10
  209. data/app/views/admin/shared/_batch_actions.html.slim +0 -27
  210. data/cucumber.yml +0 -10
  211. data/features/dsl/action_items.feature +0 -79
  212. data/features/dsl/admin_comments.feature +0 -30
  213. data/features/dsl/batch_actions.feature +0 -69
  214. data/features/dsl/config.feature +0 -44
  215. data/features/dsl/custom_actions.feature +0 -62
  216. data/features/dsl/export.feature +0 -42
  217. data/features/dsl/form.feature +0 -77
  218. data/features/dsl/in_place_edit.feature +0 -26
  219. data/features/dsl/list_edit.feature +0 -46
  220. data/features/dsl/parent_resource.feature +0 -18
  221. data/features/dsl/resource_action_items.feature +0 -40
  222. data/features/dsl/search.feature +0 -41
  223. data/features/dsl/show.feature +0 -37
  224. data/features/dsl/table.feature +0 -71
  225. data/features/dsl/tree.feature +0 -37
  226. data/features/index_views/table.feature +0 -20
  227. data/features/locators.feature +0 -40
  228. data/features/menu.feature +0 -35
  229. data/features/settings.feature +0 -36
  230. data/features/step_definitions/configuration_steps.rb +0 -94
  231. data/features/step_definitions/dsl/action_items_steps.rb +0 -13
  232. data/features/step_definitions/dsl/admin_comments_steps.rb +0 -12
  233. data/features/step_definitions/dsl/batch_actions_steps.rb +0 -27
  234. data/features/step_definitions/dsl/in_place_edit_steps.rb +0 -7
  235. data/features/step_definitions/dsl/parent_resource_steps.rb +0 -8
  236. data/features/step_definitions/dsl/resource_action_items_steps.rb +0 -14
  237. data/features/step_definitions/dsl/show_steps.rb +0 -8
  238. data/features/step_definitions/dsl/table_steps.rb +0 -38
  239. data/features/step_definitions/dsl/tree_steps.rb +0 -28
  240. data/features/step_definitions/menu_steps.rb +0 -20
  241. data/features/step_definitions/settings_steps.rb +0 -7
  242. data/features/step_definitions/structure_steps.rb +0 -7
  243. data/features/step_definitions/table_steps.rb +0 -23
  244. data/features/step_definitions/user_steps.rb +0 -72
  245. data/features/step_definitions/web_steps/browsing_steps.rb +0 -108
  246. data/features/step_definitions/web_steps/debug_steps.rb +0 -6
  247. data/features/step_definitions/web_steps/form_steps.rb +0 -190
  248. data/features/step_definitions/web_steps/i18n_steps.rb +0 -8
  249. data/features/step_definitions/web_steps/step_scoper.rb +0 -9
  250. data/features/step_definitions/web_steps/transforms_steps.rb +0 -3
  251. data/features/structure/tree.feature +0 -21
  252. data/features/support/capybara_helpers.rb +0 -15
  253. data/features/support/carrierwave.rb +0 -21
  254. data/features/support/env.rb +0 -40
  255. data/features/support/paths.rb +0 -55
  256. data/features/support/selector_helpers.rb +0 -9
  257. data/features/support/selectors.rb +0 -43
  258. data/features/support/tolerance_for_selenium_sync_issues.rb +0 -27
  259. data/features/user/sign_in.feature +0 -27
  260. data/features/user/sign_out.feature +0 -11
  261. data/features/user/user_edit.feature +0 -19
  262. data/features/user/user_show.feature +0 -9
  263. data/lib/ab_admin/hooks/quiet_scope_page.rb +0 -16
  264. data/lib/ab_admin/hooks/simple_form_hooks.rb +0 -31
  265. data/lib/ab_admin/menu_builder.rb +0 -89
  266. data/lib/ab_admin/views/inputs/date_time_input.rb +0 -65
  267. data/lib/generators/ab_admin/install/templates/models/user_state.rb +0 -6
  268. data/lib/generators/ab_admin/resource/templates/_form.haml.erb +0 -71
  269. data/lib/generators/ab_admin/resource/templates/_search_form.haml.erb +0 -35
  270. data/lib/generators/ab_admin/resource/templates/_table.haml.erb +0 -33
  271. data/spec/ab_admin_spec.rb +0 -23
  272. data/spec/dummy/Rakefile +0 -7
  273. data/spec/dummy/app/assets/images/rails.png +0 -0
  274. data/spec/dummy/app/assets/javascripts/application.js +0 -15
  275. data/spec/dummy/app/assets/stylesheets/application.css +0 -13
  276. data/spec/dummy/app/controllers/application_controller.rb +0 -3
  277. data/spec/dummy/app/controllers/products_controller.rb +0 -5
  278. data/spec/dummy/app/controllers/welcome_controller.rb +0 -5
  279. data/spec/dummy/app/mailers/.gitkeep +0 -0
  280. data/spec/dummy/app/models/ab_admin/ab_admin_catalogue.rb +0 -5
  281. data/spec/dummy/app/models/ab_admin/ab_admin_collection.rb +0 -35
  282. data/spec/dummy/app/models/ab_admin/ab_admin_product.rb +0 -74
  283. data/spec/dummy/app/models/admin_menu.rb +0 -18
  284. data/spec/dummy/app/models/catalogue.rb +0 -10
  285. data/spec/dummy/app/models/ckeditor/asset.rb +0 -7
  286. data/spec/dummy/app/models/ckeditor/attachment_file.rb +0 -7
  287. data/spec/dummy/app/models/ckeditor/picture.rb +0 -7
  288. data/spec/dummy/app/models/collection.rb +0 -20
  289. data/spec/dummy/app/models/product.rb +0 -32
  290. data/spec/dummy/app/uploaders/ckeditor_attachment_file_uploader.rb +0 -42
  291. data/spec/dummy/app/uploaders/ckeditor_picture_uploader.rb +0 -53
  292. data/spec/dummy/app/views/admin/collections/_form.html.slim +0 -24
  293. data/spec/dummy/app/views/layouts/application.html.erb +0 -14
  294. data/spec/dummy/app/views/products/show.html.erb +0 -2
  295. data/spec/dummy/app/views/welcome/index.html.erb +0 -2
  296. data/spec/dummy/config.ru +0 -4
  297. data/spec/dummy/config/application.rb +0 -82
  298. data/spec/dummy/config/boot.rb +0 -10
  299. data/spec/dummy/config/database.yml +0 -26
  300. data/spec/dummy/config/environment.rb +0 -5
  301. data/spec/dummy/config/environments/development.rb +0 -37
  302. data/spec/dummy/config/environments/production.rb +0 -67
  303. data/spec/dummy/config/environments/test.rb +0 -37
  304. data/spec/dummy/config/i18n-js.yml +0 -21
  305. data/spec/dummy/config/initializers/ab_admin.rb +0 -15
  306. data/spec/dummy/config/initializers/backtrace_silencers.rb +0 -7
  307. data/spec/dummy/config/initializers/ckeditor.rb +0 -18
  308. data/spec/dummy/config/initializers/devise.rb +0 -232
  309. data/spec/dummy/config/initializers/inflections.rb +0 -15
  310. data/spec/dummy/config/initializers/mime_types.rb +0 -5
  311. data/spec/dummy/config/initializers/secret_token.rb +0 -7
  312. data/spec/dummy/config/initializers/session_store.rb +0 -8
  313. data/spec/dummy/config/initializers/simple_form.rb +0 -142
  314. data/spec/dummy/config/initializers/simple_form_bootstrap.rb +0 -45
  315. data/spec/dummy/config/initializers/wrap_parameters.rb +0 -14
  316. data/spec/dummy/config/locales/devise.en.yml +0 -60
  317. data/spec/dummy/config/locales/en.yml +0 -5
  318. data/spec/dummy/config/locales/simple_form.en.yml +0 -26
  319. data/spec/dummy/config/routes.rb +0 -14
  320. data/spec/dummy/config/settings/development.local.yml +0 -9
  321. data/spec/dummy/config/settings/development.yml +0 -7
  322. data/spec/dummy/db/migrate/20130129151853_create_ckeditor_assets.rb +0 -26
  323. data/spec/dummy/db/migrate/20130130161853_create_collections.rb +0 -10
  324. data/spec/dummy/db/migrate/20130130162046_create_products.rb +0 -13
  325. data/spec/dummy/db/migrate/20130130175446_create_globalize_collection_product.rb +0 -11
  326. data/spec/dummy/db/migrate/20130207224516_create_catalogues.rb +0 -16
  327. data/spec/dummy/db/migrate/20130209223506_add_lat_lon_zoom_to_products.rb +0 -7
  328. data/spec/dummy/db/seeds.rb +0 -46
  329. data/spec/dummy/lib/assets/.gitkeep +0 -0
  330. data/spec/dummy/lib/capybara_irb.rb +0 -42
  331. data/spec/dummy/lib/tasks/.gitkeep +0 -0
  332. data/spec/dummy/lib/tasks/cucumber.rake +0 -65
  333. data/spec/dummy/lib/templates/slim/scaffold/_form.html.slim +0 -10
  334. data/spec/dummy/log/.gitkeep +0 -0
  335. data/spec/dummy/public/404.html +0 -26
  336. data/spec/dummy/public/422.html +0 -26
  337. data/spec/dummy/public/500.html +0 -25
  338. data/spec/dummy/public/favicon.ico +0 -0
  339. data/spec/dummy/script/cucumber +0 -10
  340. data/spec/dummy/script/rails +0 -6
  341. data/spec/factories/assets.rb +0 -52
  342. data/spec/factories/catalogues.rb +0 -7
  343. data/spec/factories/collections.rb +0 -8
  344. data/spec/factories/files/rails.png +0 -0
  345. data/spec/factories/products.rb +0 -17
  346. data/spec/factories/sequences.rb +0 -7
  347. data/spec/factories/structures.rb +0 -17
  348. data/spec/factories/users.rb +0 -30
  349. data/spec/generators/ckeditor_assets_generator_spec.rb +0 -19
  350. data/spec/generators/install_generator_spec.rb +0 -48
  351. data/spec/generators/model_generator_spec.rb +0 -31
  352. data/spec/generators/resource_generator_spec.rb +0 -36
  353. data/spec/models/ab_admin/abstract_resource_spec.rb +0 -5
  354. data/spec/models/avatar_spec.rb +0 -162
  355. data/spec/models/picture_uploader_spec.rb +0 -49
  356. data/spec/models/structure_spec.rb +0 -69
  357. data/spec/models/user_spec.rb +0 -159
  358. data/spec/shared_behaviors/concerns.rb +0 -20
  359. data/spec/spec_helper.rb +0 -96
  360. data/spec/support/controller_macros.rb +0 -52
  361. data/spec/support/custom_capybara_matchers.rb +0 -58
  362. data/spec/support/mailer_macros.rb +0 -17
  363. data/spec/support/shared_connection.rb +0 -11
  364. data/vendor/assets/images/ab_admin/clear.png +0 -0
  365. data/vendor/assets/images/ab_admin/loading.gif +0 -0
  366. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/core.js +0 -899
  367. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/index.js +0 -2
  368. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.bg.js +0 -14
  369. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.br.js +0 -13
  370. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.cs.js +0 -14
  371. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.da.js +0 -14
  372. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.de.js +0 -14
  373. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.es.js +0 -14
  374. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.fi.js +0 -14
  375. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.fr.js +0 -14
  376. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.id.js +0 -13
  377. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.is.js +0 -14
  378. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.it.js +0 -14
  379. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.ja.js +0 -13
  380. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.kr.js +0 -13
  381. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.lt.js +0 -15
  382. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.lv.js +0 -16
  383. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.ms.js +0 -14
  384. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.nb.js +0 -14
  385. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.nl.js +0 -14
  386. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.pl.js +0 -14
  387. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.pt-BR.js +0 -14
  388. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.pt.js +0 -14
  389. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.ro.js +0 -15
  390. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.ru.js +0 -14
  391. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.sk.js +0 -14
  392. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.sl.js +0 -14
  393. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.sv.js +0 -14
  394. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.th.js +0 -14
  395. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.tr.js +0 -15
  396. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.zh-CN.js +0 -14
  397. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.zh-TW.js +0 -13
  398. data/vendor/assets/javascripts/ab_admin/bootstrap-editable-inline.js +0 -2895
  399. data/vendor/assets/javascripts/ab_admin/bootstrap-editable.js +0 -4523
  400. data/vendor/assets/javascripts/ab_admin/bootstrap-tab-multi.js +0 -135
  401. data/vendor/assets/javascripts/ab_admin/bootstrap-timepicker.js +0 -377
  402. data/vendor/assets/javascripts/ab_admin/fileupload/admin-fileuploader.js.coffee +0 -111
  403. data/vendor/assets/javascripts/ab_admin/fileupload/fileuploader.js +0 -1301
  404. data/vendor/assets/javascripts/ab_admin/jquery.Jcrop.js +0 -1083
  405. data/vendor/assets/javascripts/ab_admin/jquery_nested_form.js.coffee +0 -66
  406. data/vendor/assets/javascripts/bootstrap-wysihtml5/locales/ru.js +0 -48
  407. data/vendor/assets/javascripts/handlebars.min.js +0 -1
  408. data/vendor/assets/javascripts/jquery.cookie.js +0 -42
  409. data/vendor/assets/javascripts/jquery.hotkeys.js +0 -106
  410. data/vendor/assets/javascripts/jquery.pjax.js +0 -688
  411. data/vendor/assets/javascripts/jquery.tmpl.min.js +0 -10
  412. data/vendor/assets/javascripts/jquery.ui.nestedSortable.js +0 -356
  413. data/vendor/assets/javascripts/jquery/jquery-ui.min.js +0 -15
  414. data/vendor/assets/javascripts/jquery/jquery.min.js +0 -4
  415. data/vendor/assets/javascripts/underscore.min.js +0 -5
  416. data/vendor/assets/stylesheets/ab_admin/bootstrap-datepicker.css.scss +0 -274
  417. data/vendor/assets/stylesheets/ab_admin/bootstrap-editable.scss +0 -461
  418. data/vendor/assets/stylesheets/ab_admin/bootstrap-timepicker.css.scss +0 -88
  419. data/vendor/assets/stylesheets/ab_admin/jquery.Jcrop.min.css.scss +0 -28
@@ -1,9 +1,7 @@
1
- //= require ab_admin/bootstrap-datepicker
2
- //= require ab_admin/bootstrap-timepicker
3
1
  //= require bootstrap-wysihtml5
4
2
  //= require ab_admin/bootstrap-editable
5
3
  //= require select2
6
4
  //= require fancybox
7
5
  //= require ab_admin/bootstrap_and_overrides
6
+ //= require ab_admin/bootstrap-datetimepicker
8
7
  //= require ab_admin/fileupload
9
- //q= require ab_admin/jquery.Jcrop.min
@@ -1,10 +1,7 @@
1
1
  class Admin::AdminCommentsController < Admin::BaseController
2
2
  load_and_authorize_resource
3
3
 
4
- before_create do |comment|
5
- comment.set_author(current_user)
6
- comment.user_id = comment.resource.user_id if comment.resource.respond_to?(:user_id)
7
- end
4
+ helper_method :commentable
8
5
 
9
6
  def create
10
7
  create! do |format|
@@ -18,4 +15,17 @@ class Admin::AdminCommentsController < Admin::BaseController
18
15
  end
19
16
  end
20
17
 
18
+ private
19
+
20
+ def collection
21
+ if xhr?
22
+ @collection = AdminComment.find_for_resource(commentable)
23
+ else
24
+ super
25
+ end
26
+ end
27
+
28
+ def commentable
29
+ @commentable ||= AdminComment.find_resource(params[:resource_type], params[:resource_id])
30
+ end
21
31
  end
@@ -1,44 +1,41 @@
1
1
  class Admin::AssetsController < ApplicationController
2
- before_filter :find_klass, only: [:create, :sort]
3
- before_filter :find_asset, only: [:destroy, :main, :rotate, :crop]
4
-
5
- respond_to :html, :xml
2
+ before_action :find_klass, only: :sort
3
+ before_action :find_asset, only: [:destroy, :main, :rotate, :crop]
6
4
 
7
5
  authorize_resource
8
6
 
9
- def create
10
- @asset = @klass.new(params[:asset])
7
+ respond_to :json
11
8
 
12
- @asset.assetable_type = params[:assetable_type]
13
- @asset.assetable_id = params[:assetable_id] || 0
9
+ def create
10
+ @asset = build_asset(params[:asset])
14
11
  @asset.guid = params[:guid]
15
- @asset.data = params[:data]
12
+ @asset.data = prepared_data
16
13
  @asset.user = current_user
17
- @asset.save
14
+ @asset.save!
18
15
 
19
- respond_with(@asset) do |format|
20
- format.html { head :ok }
21
- format.xml { render xml: @asset.to_xml }
22
- end
16
+ render json: @asset
23
17
  end
24
18
 
25
19
  def destroy
26
- @asset.destroy
27
-
28
- respond_with(@asset) do |format|
29
- format.html { head :ok }
30
- format.xml { render xml: @asset.to_xml }
31
- end
20
+ @asset.destroy!
21
+ head :ok
32
22
  end
33
23
 
34
24
  def sort
35
25
  params[:asset].each_with_index do |id, index|
36
26
  @klass.move_to(index, id)
37
27
  end
28
+ head :ok
29
+ end
38
30
 
39
- respond_with(@klass) do |format|
40
- format.html { head :ok }
41
- end
31
+ def batch_edit
32
+ @assets = Asset.includes(:translations).find(params[:ids])
33
+ render layout: false
34
+ end
35
+
36
+ def batch_update
37
+ Asset.update(params[:data].keys, params[:data].values)
38
+ head :ok
42
39
  end
43
40
 
44
41
  def rotate
@@ -55,18 +52,6 @@ class Admin::AssetsController < ApplicationController
55
52
 
56
53
  protected
57
54
 
58
- def find_assets
59
- assoc = params[:assetable_type].constantize.reflect_on_association(params[:assoc].to_sym)
60
- scope = assoc.klass.where(assetable_type: params[:assetable_type], is_main: !assoc.collection?)
61
- if params[:assetable_id].present?
62
- scope.where(assetable_id: params[:assetable_id])
63
- elsif params[:guid].present?
64
- scope.where(guid: params[:guid])
65
- else
66
- []
67
- end
68
- end
69
-
70
55
  def find_asset
71
56
  @asset = Asset.find(params[:id])
72
57
  end
@@ -74,4 +59,28 @@ class Admin::AssetsController < ApplicationController
74
59
  def find_klass
75
60
  @klass = params[:klass].blank? ? Asset : params[:klass].classify.constantize
76
61
  end
62
+
63
+ def prepared_data
64
+ params[:data].original_filename = "blob.#{params[:data].content_type.split('/').last}" if params[:data].original_filename == 'blob'
65
+ params[:data]
66
+ end
67
+
68
+ def build_asset(asset_params)
69
+ raise 'Can not build Asset without assetable_type' if params[:assetable_type].blank?
70
+
71
+ assetable_klass = params[:assetable_type].constantize
72
+ assoc = assetable_klass.reflect_on_association(params[:method].to_sym)
73
+ if params[:assetable_id].to_i.zero?
74
+ assoc_scope = assoc.scope ? assoc.klass.instance_exec(&assoc.scope) : assoc.klass
75
+ assoc_scope.where(assetable_type: assetable_klass.name, assetable_id: 0).new(asset_params)
76
+ else
77
+ assetable = assetable_klass.find(params[:assetable_id])
78
+ if assoc.collection?
79
+ assetable.send(params[:method]).new(asset_params)
80
+ else
81
+ assetable.send("build_#{params[:method]}", asset_params)
82
+ end
83
+ end
84
+ end
85
+
77
86
  end
@@ -3,22 +3,25 @@ class Admin::BaseController < ::InheritedResources::Base
3
3
 
4
4
  layout :set_layout
5
5
 
6
+ include AbAdmin::Controllers::Fv
6
7
  include AbAdmin::Controllers::Callbacks
8
+
7
9
  define_admin_callbacks :save, :create
8
10
 
9
- before_filter :authenticate_user!, :require_moderator
10
- before_filter :add_breadcrumbs, :set_title, :set_user_vars, unless: :xhr?
11
+ before_action :authenticate_user!, :require_require_admin_access, :set_user_vars
12
+ before_action :add_breadcrumbs, :set_title, unless: :xhr?
11
13
 
12
14
  class_attribute :export_builder, :batch_action_list, :button_scopes, instance_reader: false, instance_writer: false
13
15
 
14
- has_scope :ids, type: :array
16
+ defaults finder: :friendly_find
17
+
18
+ has_scope :by_ids, type: :array
15
19
 
16
20
  helper_method :admin?, :moderator?
17
21
 
18
22
  helper_method :button_scopes, :collection_action?, :action_items, :resource_action_items,
19
- :preview_resource_path, :get_subject, :settings, :batch_action_list, :tree_node_renderer
20
-
21
- respond_to :json
23
+ :preview_resource_path, :get_subject, :settings, :batch_action_list, :tree_node_renderer,
24
+ :normalized_index_views, :current_index_view, :pjax?, :xhr?
22
25
 
23
26
  rescue_from ::CanCan::AccessDenied, with: :render_unauthorized
24
27
 
@@ -26,11 +29,13 @@ class Admin::BaseController < ::InheritedResources::Base
26
29
  super do |format|
27
30
  format.js { render layout: false }
28
31
  format.csv do
32
+ authorize! :export, resource_class
29
33
  doc = AbAdmin::Utils::CsvDocument.new(collection, export_options)
30
34
  send_data(doc.render, filename: doc.filename, type: Mime::CSV, disposition: 'attachment')
31
35
  end
32
36
  if defined?(Mime::XLSX)
33
37
  format.xls do
38
+ authorize! :export, resource_class
34
39
  doc = AbAdmin::Utils::XlsDocument.new(collection, export_options)
35
40
  send_data(doc.render, filename: doc.filename, type: Mime::XLSX, disposition: 'attachment')
36
41
  end
@@ -52,11 +57,24 @@ class Admin::BaseController < ::InheritedResources::Base
52
57
  failure.html { render :edit }
53
58
  success.js { render layout: false }
54
59
  failure.js { render :edit, layout: false }
60
+ unless Admin::ManagerController.mimes_for_respond_to[:json]
61
+ success.json { head :no_content }
62
+ failure.json { head :unprocessable }
63
+ end
55
64
  end
56
65
  end
57
66
 
58
67
  def destroy
59
- destroy! { redirect_to_on_success }
68
+ destroy! do
69
+ track_action! if settings[:history]
70
+ redirect_to_on_success
71
+ end
72
+ end
73
+
74
+ def show
75
+ show! do |format|
76
+ format.js { render layout: false }
77
+ end
60
78
  end
61
79
 
62
80
  def edit
@@ -72,29 +90,47 @@ class Admin::BaseController < ::InheritedResources::Base
72
90
  end
73
91
 
74
92
  def batch
75
- raise 'No ids specified for batch action' unless params[:ids].present?
93
+ raise 'No ids specified for batch action' unless params[:by_ids].present?
76
94
  batch_action = params[:batch_action].to_sym
77
95
  if allow_batch_action?(batch_action) && collection.all?{|item| can?(batch_action, item) }
78
96
  count = collection.inject(0) { |c, item| apply_batch_action(item, batch_action) ? c + 1 : c }
79
- flash[:success] = I18n.t('admin.batch_actions.status', count: count, action: I18n.t("admin.actions.batch_#{batch_action}.title"))
97
+ batch_action_name = I18n.t("admin.actions.batch_#{batch_action}.title", default: batch_action.to_s.humanize)
98
+ flash[:success] = I18n.t('admin.batch_actions.status', count: count, action: batch_action_name)
80
99
  else
81
100
  raise CanCan::AccessDenied
82
101
  end
83
- redirect_to :back
102
+ redirect_to_back_or_root
103
+ end
104
+
105
+ protected
106
+
107
+ def default_url_options
108
+ options = {format: nil}
109
+ options.update instance_exec(&AbAdmin.default_url_options) if AbAdmin.default_url_options
110
+ options.update instance_exec(&settings[:default_url_options]) if settings[:default_url_options]
111
+ options
84
112
  end
85
113
 
86
114
  def apply_batch_action(item, batch_action)
87
- item.send(batch_action)
115
+ success = item.send(batch_action)
116
+ track_action!("batch_#{batch_action}", item) if settings[:history]
117
+ success
88
118
  end
89
119
 
90
120
  def allow_batch_action?(batch_action)
91
121
  resource_class.batch_actions.include?(batch_action)
92
122
  end
93
123
 
94
- protected
124
+ def redirect_to_back_or_root
125
+ redirect_to request.env['HTTP_REFERER'] ? :back : admin_root_path
126
+ end
95
127
 
96
- def default_url_options
97
- {format: nil}
128
+ def track_action(key=nil, item=nil)
129
+ (item || resource).track(key: key || action_name, user: current_user)
130
+ end
131
+
132
+ def track_action!(*args)
133
+ track_action(*args).save!
98
134
  end
99
135
 
100
136
  def batch_action_list
@@ -111,6 +147,7 @@ class Admin::BaseController < ::InheritedResources::Base
111
147
  base.class_eval do
112
148
  before_create :bind_current_user
113
149
  before_save :bind_current_updater
150
+ before_save { track_action if settings[:history] }
114
151
  end
115
152
  end
116
153
 
@@ -136,7 +173,7 @@ class Admin::BaseController < ::InheritedResources::Base
136
173
  end
137
174
 
138
175
  def settings
139
- {index_view: 'table', sidebar: collection_action?, well: (collection_action? || action_name == 'show'),
176
+ {index_view: 'table', sidebar: collection_action?, well: (collection_action? || %w(show history).include?(action_name)),
140
177
  search: true, batch: true, hotkeys: true}
141
178
  end
142
179
 
@@ -160,19 +197,13 @@ class Admin::BaseController < ::InheritedResources::Base
160
197
  end
161
198
 
162
199
  def button_scopes
163
- self.class.button_scopes ||= begin
164
- res = {}
165
- self.class.scopes_configuration.except(:ids).each do |k, v|
166
- res[k] = v if v[:type] == :default
167
- end
168
- res
169
- end
200
+ self.class.button_scopes ||= self.class.scopes_configuration.except(:ids).find_all{|_, s| s[:type] == :boolean }.to_h
170
201
  end
171
202
 
172
203
  def add_breadcrumbs
173
204
  @breadcrumbs = []
174
205
  if parent?
175
- @breadcrumbs << {name: parent_class.model_name.human(count: 9), url: parent_collection_path}
206
+ @breadcrumbs << {name: parent.class.model_name.human(count: 9), url: parent_collection_path}
176
207
  @breadcrumbs << {name: AbAdmin.display_name(parent), url: parent_path}
177
208
  end
178
209
  @breadcrumbs << {name: resource_class.model_name.human(count: 9), url: collection_path}
@@ -192,7 +223,7 @@ class Admin::BaseController < ::InheritedResources::Base
192
223
  end
193
224
 
194
225
  def parent_collection_path
195
- {action: :index, controller: "admin/#{parent_class.model_name.plural}"}
226
+ {action: :index, controller: "admin/#{parent.class.model_name.plural}"}
196
227
  end
197
228
 
198
229
  def tree_node_renderer
@@ -212,7 +243,7 @@ class Admin::BaseController < ::InheritedResources::Base
212
243
 
213
244
  def per_page
214
245
  return params[:per_page] if params[:per_page].present?
215
- if settings[:index_view] == 'tree'
246
+ if current_index_view == 'tree'
216
247
  params[:per_page] = 1000
217
248
  else
218
249
  params[:per_page] = cookies[:pp] || 50
@@ -223,8 +254,18 @@ class Admin::BaseController < ::InheritedResources::Base
223
254
  pjax? ? false : 'admin/application'
224
255
  end
225
256
 
226
- def pjax?
227
- request.headers['X-PJAX']
257
+ def normalized_index_views
258
+ Array(settings[:index_view])
259
+ end
260
+
261
+ def current_index_view
262
+ index_view = params[:index_view].presence || cookies[:iv].presence
263
+ if index_view && normalized_index_views.include?(index_view)
264
+ cookies[:iv] = index_view
265
+ index_view
266
+ else
267
+ normalized_index_views.first
268
+ end
228
269
  end
229
270
 
230
271
  def back_or_collection
@@ -253,14 +294,28 @@ class Admin::BaseController < ::InheritedResources::Base
253
294
  end
254
295
 
255
296
  def set_user_vars
256
- I18n.locale = Rails.application.config.i18n.default_locale
257
- gon.locale = I18n.locale
258
- gon.bg_color = current_user.bg_color
259
- gon.admin = admin?
260
- gon.test = Rails.env.test?
261
- gon.hotkeys = settings[:hotkeys]
297
+ I18n.locale = AbAdmin.locale
298
+ fv.locale = I18n.locale
299
+ fv.bg_color = current_user.bg_color
300
+ fv.admin = admin?
301
+ fv.hotkeys = settings[:hotkeys]
302
+ fv.env = Rails.env
303
+ if AbAdmin.test_env?
304
+ fv.test = true
305
+ AbAdmin.test_settings.each { |k, v| fv.set_variable k, v }
306
+ end
307
+ end
308
+
309
+ # utility methods
310
+ def pjax?
311
+ request.headers['X-PJAX']
262
312
  end
263
313
 
314
+ def xhr?
315
+ request.xhr?
316
+ end
317
+
318
+ # user role logic
264
319
  def moderator?
265
320
  user_signed_in? && current_user.moderator?
266
321
  end
@@ -269,6 +324,10 @@ class Admin::BaseController < ::InheritedResources::Base
269
324
  user_signed_in? && current_user.admin?
270
325
  end
271
326
 
327
+ def require_require_admin_access
328
+ raise CanCan::AccessDenied unless current_user.admin_access?
329
+ end
330
+
272
331
  def require_moderator
273
332
  raise CanCan::AccessDenied unless moderator?
274
333
  end
@@ -285,10 +344,6 @@ class Admin::BaseController < ::InheritedResources::Base
285
344
  resource.updater_id = current_user.id if resource.respond_to?(:updater_id)
286
345
  end
287
346
 
288
- def xhr?
289
- request.xhr?
290
- end
291
-
292
347
  # roles logic
293
348
  def role_given?
294
349
  fetch_role
@@ -319,7 +374,7 @@ class Admin::BaseController < ::InheritedResources::Base
319
374
  if pjax?
320
375
  render partial: 'admin/shared/flash', locals: {flash: {alert: exception.message}}
321
376
  elsif request.format.try(:html?)
322
- redirect_to (moderator? ? admin_root_path : root_path), alert: exception.message
377
+ redirect_to (current_user.try(:admin_access?) ? admin_root_path : root_path), alert: exception.message
323
378
  else
324
379
  head :unauthorized
325
380
  end
@@ -1,8 +1,8 @@
1
1
  class ::Admin::LocatorsController < ::Admin::BaseController
2
2
  authorize_resource
3
3
 
4
- before_filter :find_files, only: [:show, :edit, :update]
5
- before_filter :find_file, only: [:edit, :update]
4
+ before_action :find_files, only: [:show, :edit, :update]
5
+ before_action :find_file, only: [:edit, :update]
6
6
 
7
7
  def edit
8
8
  @locale_hash = YAML.load_file(@file)
@@ -56,6 +56,7 @@ class ::Admin::LocatorsController < ::Admin::BaseController
56
56
  end
57
57
 
58
58
  def find_file
59
+ redirect_to(admin_locators_path) and return if params[:filename].blank?
59
60
  @file = @files.detect{|path| File.basename(path) == params[:filename]}
60
61
  raise "File #{params[:filename]} not found" unless @file
61
62
  end
@@ -2,11 +2,11 @@ class ::Admin::ManagerController < ::Admin::BaseController
2
2
  include AbAdmin::Utils::EvalHelpers
3
3
  include AbAdmin::Controllers::Tree
4
4
 
5
- prepend_before_filter :manager
5
+ prepend_before_action :manager
6
6
 
7
7
  load_and_authorize_resource
8
8
 
9
- helper_method :manager, :admin_partial_name
9
+ helper_method :manager, :admin_partial_name, :history_resource_path, :fetch_admin_template
10
10
 
11
11
  def custom_action
12
12
  custom_action = manager.custom_action_for(params[:custom_action], self)
@@ -69,7 +69,9 @@ class ::Admin::ManagerController < ::Admin::BaseController
69
69
  end
70
70
 
71
71
  def apply_batch_action(item, batch_action)
72
- call_method_or_proc_on item, manager.batch_action_list.detect{|a| a.name == batch_action }.data, exec: false
72
+ success = call_method_or_proc_on item, manager.batch_action_list.detect{|a| a.name == batch_action }.data, exec: false
73
+ track_action!("batch_#{batch_action}", item) if settings[:history]
74
+ success
73
75
  end
74
76
 
75
77
  def allow_batch_action?(batch_action)
@@ -110,15 +112,19 @@ class ::Admin::ManagerController < ::Admin::BaseController
110
112
 
111
113
  def preview_resource_path(item)
112
114
  return unless manager.preview_path
113
- manager.preview_path.is_a?(Proc) ? manager.preview_path.bind(self).call(item) : send(manager.preview_path, item)
115
+ manager.preview_path.is_a?(Proc) ? instance_exec(item, &manager.preview_path) : send(manager.preview_path, item)
114
116
  end
115
117
 
116
118
  def admin_partial_name(builder)
117
119
  builder.partial ||= begin
118
120
  #if template_exists?(builder.partial_name, "admin/#{resource_collection_name}", true)
119
- if Dir[Rails.root.join("app/views/admin/#{resource_collection_name}/_#{builder.partial_name}.html.*")].present?
120
- "admin/#{resource_collection_name}/#{builder.partial_name}"
121
- end
121
+ fetch_admin_template(builder.partial_name, true)
122
+ end
123
+ end
124
+
125
+ def fetch_admin_template(template_name, partial=false)
126
+ if Dir[Rails.root.join("app/views/admin/#{resource_collection_name}/#{'_' if partial}#{template_name}.html.*")].present?
127
+ "admin/#{resource_collection_name}/#{template_name}"
122
128
  end
123
129
  end
124
130
 
@@ -142,14 +148,19 @@ class ::Admin::ManagerController < ::Admin::BaseController
142
148
  admin_new_path(options.merge(model_name: resource_collection_name))
143
149
  end
144
150
 
151
+ def resource_path(record=nil, options={})
152
+ record ||= resource
153
+ admin_show_path(options.merge(model_name: record.class.model_name.plural, id: record.id))
154
+ end
155
+
145
156
  def edit_resource_path(record=nil, options={})
146
157
  record ||= resource
147
158
  admin_edit_path(options.merge(model_name: record.class.model_name.plural, id: record.id))
148
159
  end
149
160
 
150
- def resource_path(record=nil, options={})
161
+ def history_resource_path(record=nil, options={})
151
162
  record ||= resource
152
- admin_show_path(options.merge(model_name: record.class.model_name.plural, id: record.id))
163
+ admin_history_path(options.merge(model_name: record.class.model_name.plural, id: record.id))
153
164
  end
154
165
 
155
166
  def self.cancan_resource_class