ab_admin 0.3.6 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
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