activeadmin 1.3.0 → 2.0.0.rc1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of activeadmin might be problematic. Click here for more details.

Files changed (423) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +307 -123
  3. data/CODE_OF_CONDUCT.md +64 -12
  4. data/CONTRIBUTING.md +90 -46
  5. data/README.md +66 -19
  6. data/app/assets/javascripts/active_admin/base.es6 +23 -0
  7. data/app/assets/javascripts/active_admin/ext/jquery-ui.es6 +7 -0
  8. data/app/assets/javascripts/active_admin/ext/jquery.es6 +9 -0
  9. data/app/assets/javascripts/active_admin/initializers/datepicker.es6 +16 -0
  10. data/app/assets/javascripts/active_admin/initializers/filters.es6 +45 -0
  11. data/app/assets/javascripts/active_admin/initializers/tabs.es6 +6 -0
  12. data/app/assets/javascripts/active_admin/lib/active_admin.es6 +41 -0
  13. data/app/assets/javascripts/active_admin/lib/batch_actions.es6 +55 -0
  14. data/app/assets/javascripts/active_admin/lib/checkbox-toggler.es6 +49 -0
  15. data/app/assets/javascripts/active_admin/lib/dropdown-menu.es6 +123 -0
  16. data/app/assets/javascripts/active_admin/lib/has_many.es6 +95 -0
  17. data/app/assets/javascripts/active_admin/lib/modal_dialog.es6 +61 -0
  18. data/app/assets/javascripts/active_admin/lib/per_page.es6 +47 -0
  19. data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.es6 +36 -0
  20. data/app/assets/stylesheets/active_admin/_forms.scss +3 -15
  21. data/app/assets/stylesheets/active_admin/components/_scopes.scss +3 -0
  22. data/app/assets/stylesheets/active_admin/components/_status_tags.scss +0 -5
  23. data/app/assets/stylesheets/active_admin/components/_tabs.scss +1 -1
  24. data/app/assets/stylesheets/active_admin/mixins/_gradients.scss +1 -1
  25. data/app/views/active_admin/devise/confirmations/new.html.erb +2 -2
  26. data/app/views/active_admin/devise/passwords/edit.html.erb +2 -2
  27. data/app/views/active_admin/devise/passwords/new.html.erb +2 -2
  28. data/app/views/active_admin/devise/registrations/new.html.erb +2 -3
  29. data/app/views/active_admin/devise/sessions/new.html.erb +1 -1
  30. data/app/views/active_admin/devise/shared/_error_messages.html.erb +15 -0
  31. data/app/views/active_admin/devise/unlocks/new.html.erb +2 -2
  32. data/app/views/layouts/active_admin_logged_out.html.erb +2 -2
  33. data/config/locales/bg.yml +0 -1
  34. data/config/locales/de.yml +10 -0
  35. data/config/locales/en.yml +19 -1
  36. data/config/locales/es.yml +20 -1
  37. data/config/locales/fi.yml +1 -1
  38. data/config/locales/he.yml +0 -1
  39. data/config/locales/hu.yml +4 -0
  40. data/config/locales/it.yml +4 -0
  41. data/config/locales/lt.yml +2 -2
  42. data/config/locales/nb.yml +15 -5
  43. data/config/locales/nl.yml +11 -0
  44. data/config/locales/pl.yml +71 -3
  45. data/config/locales/ru.yml +2 -0
  46. data/config/locales/tr.yml +9 -0
  47. data/config/locales/uk.yml +2 -0
  48. data/config/locales/zh-CN.yml +33 -5
  49. data/docs/.gitignore +1 -0
  50. data/docs/0-installation.md +2 -2
  51. data/docs/1-general-configuration.md +16 -1
  52. data/docs/10-custom-pages.md +14 -0
  53. data/docs/12-arbre-components.md +28 -1
  54. data/docs/13-authorization-adapter.md +40 -21
  55. data/docs/2-resource-customization.md +8 -3
  56. data/docs/3-index-pages/custom-index.md +1 -1
  57. data/docs/3-index-pages/index-as-blog.md +1 -1
  58. data/docs/3-index-pages/index-as-table.md +5 -5
  59. data/docs/3-index-pages.md +17 -0
  60. data/docs/5-forms.md +16 -2
  61. data/docs/8-custom-actions.md +11 -0
  62. data/docs/CNAME +1 -1
  63. data/docs/Gemfile +2 -0
  64. data/docs/Gemfile.lock +249 -0
  65. data/docs/_config.yml +1 -1
  66. data/docs/_includes/toc.html +1 -1
  67. data/docs/_includes/top-menu.html +9 -1
  68. data/docs/documentation.md +1 -1
  69. data/docs/images/tidelift.svg +14 -0
  70. data/docs/index.html +2 -2
  71. data/docs/stylesheets/main.css +26 -2
  72. data/lib/active_admin/abstract_view_factory.rb +13 -51
  73. data/lib/active_admin/application.rb +49 -155
  74. data/lib/active_admin/application_settings.rb +42 -0
  75. data/lib/active_admin/asset_registration.rb +0 -8
  76. data/lib/active_admin/base_controller/authorization.rb +3 -6
  77. data/lib/active_admin/base_controller.rb +6 -6
  78. data/lib/active_admin/batch_actions/controller.rb +2 -2
  79. data/lib/active_admin/batch_actions/resource_extension.rb +4 -4
  80. data/lib/active_admin/callbacks.rb +1 -1
  81. data/lib/active_admin/csv_builder.rb +1 -1
  82. data/lib/active_admin/dependency.rb +1 -69
  83. data/lib/active_admin/deprecation.rb +0 -25
  84. data/lib/active_admin/dsl.rb +1 -8
  85. data/lib/active_admin/dynamic_setting.rb +38 -0
  86. data/lib/active_admin/dynamic_settings_node.rb +28 -0
  87. data/lib/active_admin/engine.rb +5 -0
  88. data/lib/active_admin/error.rb +1 -1
  89. data/lib/active_admin/filters/active_filter.rb +4 -2
  90. data/lib/active_admin/filters/active_sidebar.rb +5 -1
  91. data/lib/active_admin/filters/forms.rb +7 -4
  92. data/lib/active_admin/filters/formtastic_addons.rb +1 -1
  93. data/lib/active_admin/filters/resource_extension.rb +4 -4
  94. data/lib/active_admin/form_builder.rb +97 -62
  95. data/lib/active_admin/generators/boilerplate.rb +1 -1
  96. data/lib/active_admin/helpers/scope_chain.rb +1 -0
  97. data/lib/active_admin/inputs/datepicker_input.rb +8 -1
  98. data/lib/active_admin/inputs/filters/base/search_method_select.rb +2 -2
  99. data/lib/active_admin/menu.rb +2 -8
  100. data/lib/active_admin/menu_item.rb +4 -32
  101. data/lib/active_admin/namespace.rb +20 -8
  102. data/lib/active_admin/namespace_settings.rb +110 -0
  103. data/lib/active_admin/orm/active_record/comments/comment.rb +2 -2
  104. data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +10 -5
  105. data/lib/active_admin/orm/active_record/comments.rb +15 -4
  106. data/lib/active_admin/page_dsl.rb +1 -1
  107. data/lib/active_admin/pundit_adapter.rb +13 -4
  108. data/lib/active_admin/resource/action_items.rb +7 -2
  109. data/lib/active_admin/resource/attributes.rb +7 -4
  110. data/lib/active_admin/resource/menu.rb +3 -3
  111. data/lib/active_admin/resource/naming.rb +3 -3
  112. data/lib/active_admin/resource/routes.rb +9 -4
  113. data/lib/active_admin/resource/scopes.rb +3 -3
  114. data/lib/active_admin/resource/sidebars.rb +1 -1
  115. data/lib/active_admin/resource.rb +2 -2
  116. data/lib/active_admin/resource_collection.rb +2 -2
  117. data/lib/active_admin/resource_controller/action_builder.rb +10 -0
  118. data/lib/active_admin/resource_controller/decorators.rb +3 -3
  119. data/lib/active_admin/resource_controller/resource_class_methods.rb +2 -0
  120. data/lib/active_admin/resource_controller/scoping.rb +1 -1
  121. data/lib/active_admin/resource_dsl.rb +5 -3
  122. data/lib/active_admin/router.rb +89 -84
  123. data/lib/active_admin/scope.rb +9 -5
  124. data/lib/active_admin/settings_node.rb +19 -0
  125. data/lib/active_admin/version.rb +1 -1
  126. data/lib/active_admin/view_helpers/display_helper.rb +10 -2
  127. data/lib/active_admin/view_helpers/download_format_links_helper.rb +1 -0
  128. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +3 -0
  129. data/lib/active_admin/view_helpers.rb +1 -1
  130. data/lib/active_admin/views/components/active_admin_form.rb +9 -4
  131. data/lib/active_admin/views/components/attributes_table.rb +3 -3
  132. data/lib/active_admin/views/components/menu.rb +32 -0
  133. data/lib/active_admin/views/components/menu_item.rb +58 -0
  134. data/lib/active_admin/views/components/paginated_collection.rb +1 -1
  135. data/lib/active_admin/views/components/scopes.rb +11 -4
  136. data/lib/active_admin/views/components/sidebar.rb +13 -0
  137. data/lib/active_admin/views/components/sidebar_section.rb +0 -3
  138. data/lib/active_admin/views/components/site_title.rb +5 -6
  139. data/lib/active_admin/views/components/status_tag.rb +1 -18
  140. data/lib/active_admin/views/components/table_for.rb +3 -12
  141. data/lib/active_admin/views/components/tabs.rb +15 -3
  142. data/lib/active_admin/views/footer.rb +3 -7
  143. data/lib/active_admin/views/header.rb +3 -15
  144. data/lib/active_admin/views/index_as_blog.rb +1 -1
  145. data/lib/active_admin/views/index_as_grid.rb +25 -25
  146. data/lib/active_admin/views/index_as_table.rb +11 -10
  147. data/lib/active_admin/views/pages/base.rb +30 -53
  148. data/lib/active_admin/views/tabbed_navigation.rb +4 -59
  149. data/lib/active_admin/views.rb +1 -1
  150. data/lib/active_admin.rb +9 -4
  151. data/lib/generators/active_admin/assets/assets_generator.rb +2 -2
  152. data/lib/generators/active_admin/assets/templates/active_admin.js +1 -0
  153. data/lib/generators/active_admin/install/install_generator.rb +6 -2
  154. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +20 -1
  155. data/lib/generators/active_admin/install/templates/dashboard.rb +2 -3
  156. data/lib/generators/active_admin/install/templates/migrations/create_active_admin_comments.rb.erb +1 -15
  157. data/lib/generators/active_admin/page/page_generator.rb +1 -1
  158. data/lib/generators/active_admin/resource/resource_generator.rb +1 -1
  159. data/lib/ransack_ext.rb +3 -3
  160. data/vendor/assets/javascripts/jquery-ui/form-reset-mixin.js +80 -0
  161. data/vendor/assets/javascripts/jquery-ui/form.js +22 -0
  162. data/vendor/assets/javascripts/jquery-ui/labels.js +65 -0
  163. data/vendor/assets/javascripts/jquery-ui/widgets/checkboxradio.js +274 -283
  164. metadata +120 -523
  165. data/.github/ISSUE_TEMPLATE.md +0 -20
  166. data/.gitignore +0 -49
  167. data/.mdlrc +0 -1
  168. data/.rubocop.yml +0 -76
  169. data/.simplecov +0 -13
  170. data/.travis.yml +0 -51
  171. data/.yardopts +0 -7
  172. data/Gemfile +0 -58
  173. data/Rakefile +0 -54
  174. data/activeadmin.gemspec +0 -32
  175. data/app/assets/javascripts/active_admin/base.js.coffee +0 -13
  176. data/app/assets/javascripts/active_admin/ext/jquery-ui.js.coffee +0 -6
  177. data/app/assets/javascripts/active_admin/ext/jquery.js.coffee +0 -7
  178. data/app/assets/javascripts/active_admin/initializers/batch_actions.js.coffee +0 -11
  179. data/app/assets/javascripts/active_admin/initializers/datepicker.js.coffee +0 -14
  180. data/app/assets/javascripts/active_admin/initializers/filters.js.coffee +0 -26
  181. data/app/assets/javascripts/active_admin/initializers/tabs.js.coffee +0 -7
  182. data/app/assets/javascripts/active_admin/lib/batch_actions.js.coffee +0 -42
  183. data/app/assets/javascripts/active_admin/lib/checkbox-toggler.js.coffee +0 -46
  184. data/app/assets/javascripts/active_admin/lib/dropdown-menu.js.coffee +0 -104
  185. data/app/assets/javascripts/active_admin/lib/flash.js.coffee +0 -19
  186. data/app/assets/javascripts/active_admin/lib/has_many.js.coffee +0 -79
  187. data/app/assets/javascripts/active_admin/lib/modal_dialog.js.coffee +0 -45
  188. data/app/assets/javascripts/active_admin/lib/per_page.js.coffee +0 -46
  189. data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.js.coffee +0 -22
  190. data/codecov.yml +0 -25
  191. data/config/i18n-tasks.yml +0 -26
  192. data/config/mdl_style.rb +0 -9
  193. data/cucumber.yml +0 -3
  194. data/features/action_item.feature +0 -73
  195. data/features/authorization.feature +0 -64
  196. data/features/authorization_cancan.feature +0 -52
  197. data/features/authorization_pundit.feature +0 -37
  198. data/features/belongs_to.feature +0 -124
  199. data/features/breadcrumb.feature +0 -75
  200. data/features/comments/commenting.feature +0 -178
  201. data/features/comments/viewing_index.feature +0 -19
  202. data/features/create_another.feature +0 -55
  203. data/features/dashboard.feature +0 -16
  204. data/features/decorators.feature +0 -43
  205. data/features/development_reloading.feature +0 -28
  206. data/features/edit_page.feature +0 -116
  207. data/features/favicon.feature +0 -20
  208. data/features/first_boot.feature +0 -16
  209. data/features/footer.feature +0 -28
  210. data/features/global_navigation.feature +0 -29
  211. data/features/i18n.feature +0 -55
  212. data/features/index/batch_actions.feature +0 -218
  213. data/features/index/filters.feature +0 -250
  214. data/features/index/format_as_csv.feature +0 -220
  215. data/features/index/formats.feature +0 -88
  216. data/features/index/index_as_block.feature +0 -15
  217. data/features/index/index_as_blog.feature +0 -69
  218. data/features/index/index_as_grid.feature +0 -45
  219. data/features/index/index_as_table.feature +0 -291
  220. data/features/index/index_blank_slate.feature +0 -83
  221. data/features/index/index_parameters.feature +0 -75
  222. data/features/index/index_scope_to.feature +0 -56
  223. data/features/index/index_scopes.feature +0 -285
  224. data/features/index/page_title.feature +0 -41
  225. data/features/index/pagination.feature +0 -63
  226. data/features/index/switch_index_view.feature +0 -73
  227. data/features/menu.feature +0 -72
  228. data/features/meta_tags.feature +0 -21
  229. data/features/new_page.feature +0 -136
  230. data/features/registering_assets.feature +0 -38
  231. data/features/registering_pages.feature +0 -237
  232. data/features/registering_resources.feature +0 -33
  233. data/features/renamed_resource.feature +0 -30
  234. data/features/root_to.feature +0 -17
  235. data/features/show/attributes_table_title.feature +0 -54
  236. data/features/show/columns.feature +0 -40
  237. data/features/show/default_content.feature +0 -44
  238. data/features/show/page_title.feature +0 -58
  239. data/features/show/tabs.feature +0 -33
  240. data/features/sidebar_sections.feature +0 -210
  241. data/features/site_title.feature +0 -47
  242. data/features/specifying_actions.feature +0 -118
  243. data/features/step_definitions/action_item_steps.rb +0 -7
  244. data/features/step_definitions/action_link_steps.rb +0 -19
  245. data/features/step_definitions/additional_web_steps.rb +0 -81
  246. data/features/step_definitions/asset_steps.rb +0 -15
  247. data/features/step_definitions/attribute_steps.rb +0 -18
  248. data/features/step_definitions/attributes_table_title_steps.rb +0 -11
  249. data/features/step_definitions/batch_action_steps.rb +0 -81
  250. data/features/step_definitions/blog_steps.rb +0 -3
  251. data/features/step_definitions/breadcrumb_steps.rb +0 -3
  252. data/features/step_definitions/column_steps.rb +0 -8
  253. data/features/step_definitions/comment_steps.rb +0 -32
  254. data/features/step_definitions/configuration_steps.rb +0 -100
  255. data/features/step_definitions/dashboard_steps.rb +0 -15
  256. data/features/step_definitions/factory_steps.rb +0 -35
  257. data/features/step_definitions/filter_steps.rb +0 -47
  258. data/features/step_definitions/flash_steps.rb +0 -11
  259. data/features/step_definitions/footer_steps.rb +0 -11
  260. data/features/step_definitions/format_steps.rb +0 -56
  261. data/features/step_definitions/i18n_steps.rb +0 -11
  262. data/features/step_definitions/index_scope_steps.rb +0 -29
  263. data/features/step_definitions/index_views_steps.rb +0 -3
  264. data/features/step_definitions/layout_steps.rb +0 -3
  265. data/features/step_definitions/member_link_steps.rb +0 -7
  266. data/features/step_definitions/menu_steps.rb +0 -11
  267. data/features/step_definitions/meta_tag_steps.rb +0 -3
  268. data/features/step_definitions/pagination_steps.rb +0 -15
  269. data/features/step_definitions/sidebar_steps.rb +0 -11
  270. data/features/step_definitions/site_title_steps.rb +0 -17
  271. data/features/step_definitions/tab_steps.rb +0 -8
  272. data/features/step_definitions/table_steps.rb +0 -116
  273. data/features/step_definitions/user_steps.rb +0 -52
  274. data/features/step_definitions/web_steps.rb +0 -86
  275. data/features/sti_resource.feature +0 -65
  276. data/features/strong_parameters.feature +0 -69
  277. data/features/support/env.rb +0 -122
  278. data/features/support/paths.rb +0 -73
  279. data/features/support/regular_env.rb +0 -7
  280. data/features/support/reload_env.rb +0 -7
  281. data/features/support/selectors.rb +0 -45
  282. data/features/users/logging_in.feature +0 -36
  283. data/features/users/logging_out.feature +0 -13
  284. data/features/users/resetting_password.feature +0 -34
  285. data/gemfiles/rails_42.gemfile +0 -10
  286. data/gemfiles/rails_50.gemfile +0 -10
  287. data/gemfiles/rails_51.gemfile +0 -10
  288. data/gemfiles/rails_52.gemfile +0 -11
  289. data/lib/active_admin/event.rb +0 -24
  290. data/lib/active_admin/helpers/output_safety_helper.rb +0 -35
  291. data/lib/active_admin/helpers/settings.rb +0 -114
  292. data/lib/bug_report_templates/active_admin_master.rb +0 -112
  293. data/lib/generators/active_admin/assets/templates/active_admin.js.coffee +0 -1
  294. data/spec/bug_report_templates_spec.rb +0 -26
  295. data/spec/javascripts/coffeescripts/jquery.aa.checkbox-toggler-spec.js.coffee +0 -50
  296. data/spec/javascripts/coffeescripts/jquery.aa.flash.js.coffee +0 -25
  297. data/spec/javascripts/coffeescripts/jquery.aa.table-checkbox-toggler-spec.js.coffee +0 -34
  298. data/spec/javascripts/fixtures/checkboxes.html +0 -9
  299. data/spec/javascripts/fixtures/flashes.html +0 -2
  300. data/spec/javascripts/fixtures/table_checkboxes.html +0 -17
  301. data/spec/javascripts/helpers/SpecHelper.js +0 -3
  302. data/spec/javascripts/support/jasmine.yml +0 -74
  303. data/spec/javascripts/support/jasmine_runner.rb +0 -19
  304. data/spec/rails_helper.rb +0 -59
  305. data/spec/requests/default_namespace_spec.rb +0 -81
  306. data/spec/requests/memory_spec.rb +0 -25
  307. data/spec/requests/stylesheets_spec.rb +0 -18
  308. data/spec/spec_helper.rb +0 -1
  309. data/spec/support/active_admin_integration_spec_helper.rb +0 -73
  310. data/spec/support/active_admin_request_helpers.rb +0 -39
  311. data/spec/support/rails_template.rb +0 -153
  312. data/spec/support/rails_template_with_data.rb +0 -327
  313. data/spec/support/templates/admin/stores.rb +0 -7
  314. data/spec/support/templates/en.yml +0 -8
  315. data/spec/support/templates/manifest.js +0 -3
  316. data/spec/support/templates/policies/active_admin/comment_policy.rb +0 -9
  317. data/spec/support/templates/policies/active_admin/page_policy.rb +0 -18
  318. data/spec/support/templates/policies/admin_user_policy.rb +0 -11
  319. data/spec/support/templates/policies/application_policy.rb +0 -44
  320. data/spec/support/templates/policies/category_policy.rb +0 -7
  321. data/spec/support/templates/policies/post_policy.rb +0 -15
  322. data/spec/support/templates/policies/store_policy.rb +0 -11
  323. data/spec/support/templates/policies/user_policy.rb +0 -11
  324. data/spec/support/templates/post_decorator.rb +0 -24
  325. data/spec/unit/abstract_view_factory_spec.rb +0 -78
  326. data/spec/unit/action_builder_spec.rb +0 -158
  327. data/spec/unit/active_admin_spec.rb +0 -11
  328. data/spec/unit/application_spec.rb +0 -184
  329. data/spec/unit/asset_registration_spec.rb +0 -81
  330. data/spec/unit/authorization/authorization_adapter_spec.rb +0 -61
  331. data/spec/unit/authorization/controller_authorization_spec.rb +0 -43
  332. data/spec/unit/authorization/index_overriding_spec.rb +0 -23
  333. data/spec/unit/auto_link_spec.rb +0 -93
  334. data/spec/unit/batch_actions/resource_spec.rb +0 -84
  335. data/spec/unit/batch_actions/settings_spec.rb +0 -61
  336. data/spec/unit/belongs_to_spec.rb +0 -76
  337. data/spec/unit/cancan_adapter_spec.rb +0 -43
  338. data/spec/unit/comments_spec.rb +0 -176
  339. data/spec/unit/component_spec.rb +0 -18
  340. data/spec/unit/config_shared_examples.rb +0 -59
  341. data/spec/unit/controller_filters_spec.rb +0 -41
  342. data/spec/unit/csv_builder_spec.rb +0 -313
  343. data/spec/unit/dependency_spec.rb +0 -135
  344. data/spec/unit/devise_spec.rb +0 -110
  345. data/spec/unit/dsl_spec.rb +0 -120
  346. data/spec/unit/filters/active_filter_spec.rb +0 -189
  347. data/spec/unit/filters/active_spec.rb +0 -24
  348. data/spec/unit/filters/filter_form_builder_spec.rb +0 -524
  349. data/spec/unit/filters/resource_spec.rb +0 -128
  350. data/spec/unit/form_builder_spec.rb +0 -990
  351. data/spec/unit/generators/install_spec.rb +0 -31
  352. data/spec/unit/helpers/collection_spec.rb +0 -68
  353. data/spec/unit/helpers/output_safety_helper_spec.rb +0 -79
  354. data/spec/unit/helpers/scope_chain_spec.rb +0 -35
  355. data/spec/unit/helpers/settings_spec.rb +0 -30
  356. data/spec/unit/i18n_spec.rb +0 -29
  357. data/spec/unit/localizers/resource_localizer_spec.rb +0 -36
  358. data/spec/unit/menu_collection_spec.rb +0 -62
  359. data/spec/unit/menu_item_spec.rb +0 -141
  360. data/spec/unit/menu_spec.rb +0 -71
  361. data/spec/unit/namespace/authorization_spec.rb +0 -27
  362. data/spec/unit/namespace/register_page_spec.rb +0 -99
  363. data/spec/unit/namespace/register_resource_spec.rb +0 -162
  364. data/spec/unit/namespace_spec.rb +0 -124
  365. data/spec/unit/order_clause_spec.rb +0 -81
  366. data/spec/unit/page_controller_spec.rb +0 -5
  367. data/spec/unit/page_spec.rb +0 -128
  368. data/spec/unit/pretty_format_spec.rb +0 -82
  369. data/spec/unit/pundit_adapter_spec.rb +0 -98
  370. data/spec/unit/resource/action_items_spec.rb +0 -69
  371. data/spec/unit/resource/attributes_spec.rb +0 -49
  372. data/spec/unit/resource/includes_spec.rb +0 -21
  373. data/spec/unit/resource/menu_spec.rb +0 -18
  374. data/spec/unit/resource/naming_spec.rb +0 -122
  375. data/spec/unit/resource/ordering_spec.rb +0 -35
  376. data/spec/unit/resource/page_presenters_spec.rb +0 -44
  377. data/spec/unit/resource/pagination_spec.rb +0 -38
  378. data/spec/unit/resource/routes_spec.rb +0 -125
  379. data/spec/unit/resource/scopes_spec.rb +0 -50
  380. data/spec/unit/resource/sidebars_spec.rb +0 -43
  381. data/spec/unit/resource_collection_spec.rb +0 -175
  382. data/spec/unit/resource_controller/data_access_spec.rb +0 -234
  383. data/spec/unit/resource_controller/decorators_spec.rb +0 -94
  384. data/spec/unit/resource_controller/sidebars_spec.rb +0 -37
  385. data/spec/unit/resource_controller_spec.rb +0 -273
  386. data/spec/unit/resource_registration_spec.rb +0 -61
  387. data/spec/unit/resource_spec.rb +0 -320
  388. data/spec/unit/routing_spec.rb +0 -211
  389. data/spec/unit/scope_spec.rb +0 -209
  390. data/spec/unit/settings_spec.rb +0 -117
  391. data/spec/unit/view_factory_spec.rb +0 -19
  392. data/spec/unit/view_helpers/breadcrumbs_spec.rb +0 -253
  393. data/spec/unit/view_helpers/display_helper_spec.rb +0 -203
  394. data/spec/unit/view_helpers/download_format_links_helper_spec.rb +0 -39
  395. data/spec/unit/view_helpers/fields_for_spec.rb +0 -50
  396. data/spec/unit/view_helpers/flash_helper_spec.rb +0 -24
  397. data/spec/unit/view_helpers/form_helper_spec.rb +0 -42
  398. data/spec/unit/view_helpers/method_or_proc_helper_spec.rb +0 -138
  399. data/spec/unit/views/components/attributes_table_spec.rb +0 -271
  400. data/spec/unit/views/components/batch_action_selector_spec.rb +0 -43
  401. data/spec/unit/views/components/blank_slate_spec.rb +0 -27
  402. data/spec/unit/views/components/columns_spec.rb +0 -187
  403. data/spec/unit/views/components/index_list_spec.rb +0 -49
  404. data/spec/unit/views/components/index_table_for_spec.rb +0 -127
  405. data/spec/unit/views/components/paginated_collection_spec.rb +0 -249
  406. data/spec/unit/views/components/panel_spec.rb +0 -58
  407. data/spec/unit/views/components/sidebar_section_spec.rb +0 -68
  408. data/spec/unit/views/components/site_title_spec.rb +0 -76
  409. data/spec/unit/views/components/status_tag_spec.rb +0 -265
  410. data/spec/unit/views/components/table_for_spec.rb +0 -436
  411. data/spec/unit/views/components/tabs_spec.rb +0 -67
  412. data/spec/unit/views/components/unsupported_browser_spec.rb +0 -41
  413. data/spec/unit/views/index_as_blog_spec.rb +0 -76
  414. data/spec/unit/views/pages/form_spec.rb +0 -54
  415. data/spec/unit/views/pages/index_spec.rb +0 -60
  416. data/spec/unit/views/pages/layout_spec.rb +0 -59
  417. data/spec/unit/views/pages/show_spec.rb +0 -32
  418. data/spec/unit/views/tabbed_navigation_spec.rb +0 -158
  419. data/tasks/docs.rake +0 -64
  420. data/tasks/lint.rake +0 -21
  421. data/tasks/local.rake +0 -25
  422. data/tasks/parallel_tests.rake +0 -66
  423. data/tasks/test.rake +0 -29
@@ -1,7 +1,10 @@
1
+ //= require jquery-ui/escape-selector
2
+ //= require jquery-ui/form-reset-mixin
3
+ //= require jquery-ui/labels
1
4
  //= require jquery-ui/widget
2
5
 
3
6
  /*!
4
- * jQuery UI Controlgroup 1.12.1
7
+ * jQuery UI Checkboxradio 1.12.1
5
8
  * http://jqueryui.com
6
9
  *
7
10
  * Copyright jQuery Foundation and other contributors
@@ -9,292 +12,280 @@
9
12
  * http://jquery.org/license
10
13
  */
11
14
 
12
- //>>label: Controlgroup
15
+ //>>label: Checkboxradio
13
16
  //>>group: Widgets
14
- //>>description: Visually groups form control widgets
15
- //>>docs: http://api.jqueryui.com/controlgroup/
16
- //>>demos: http://jqueryui.com/controlgroup/
17
+ //>>description: Enhances a form with multiple themeable checkboxes or radio buttons.
18
+ //>>docs: http://api.jqueryui.com/checkboxradio/
19
+ //>>demos: http://jqueryui.com/checkboxradio/
17
20
  //>>css.structure: ../../themes/base/core.css
18
- //>>css.structure: ../../themes/base/controlgroup.css
21
+ //>>css.structure: ../../themes/base/button.css
22
+ //>>css.structure: ../../themes/base/checkboxradio.css
19
23
  //>>css.theme: ../../themes/base/theme.css
20
24
 
21
25
  ( function( factory ) {
22
- if ( typeof define === "function" && define.amd ) {
23
-
24
- // AMD. Register as an anonymous module.
25
- define( [
26
- "jquery",
27
- "../widget"
28
- ], factory );
29
- } else {
30
-
31
- // Browser globals
32
- factory( jQuery );
33
- }
26
+ if ( typeof define === "function" && define.amd ) {
27
+
28
+ // AMD. Register as an anonymous module.
29
+ define( [
30
+ "jquery",
31
+ "../escape-selector",
32
+ "../form-reset-mixin",
33
+ "../labels",
34
+ "../widget"
35
+ ], factory );
36
+ } else {
37
+
38
+ // Browser globals
39
+ factory( jQuery );
40
+ }
34
41
  }( function( $ ) {
35
- var controlgroupCornerRegex = /ui-corner-([a-z]){2,6}/g;
36
-
37
- return $.widget( "ui.controlgroup", {
38
- version: "1.12.1",
39
- defaultElement: "<div>",
40
- options: {
41
- direction: "horizontal",
42
- disabled: null,
43
- onlyVisible: true,
44
- items: {
45
- "button": "input[type=button], input[type=submit], input[type=reset], button, a",
46
- "controlgroupLabel": ".ui-controlgroup-label",
47
- "checkboxradio": "input[type='checkbox'], input[type='radio']",
48
- "selectmenu": "select",
49
- "spinner": ".ui-spinner-input"
50
- }
51
- },
52
-
53
- _create: function() {
54
- this._enhance();
55
- },
56
-
57
- // To support the enhanced option in jQuery Mobile, we isolate DOM manipulation
58
- _enhance: function() {
59
- this.element.attr( "role", "toolbar" );
60
- this.refresh();
61
- },
62
-
63
- _destroy: function() {
64
- this._callChildMethod( "destroy" );
65
- this.childWidgets.removeData( "ui-controlgroup-data" );
66
- this.element.removeAttr( "role" );
67
- if ( this.options.items.controlgroupLabel ) {
68
- this.element
69
- .find( this.options.items.controlgroupLabel )
70
- .find( ".ui-controlgroup-label-contents" )
71
- .contents().unwrap();
72
- }
73
- },
74
-
75
- _initWidgets: function() {
76
- var that = this,
77
- childWidgets = [];
78
-
79
- // First we iterate over each of the items options
80
- $.each( this.options.items, function( widget, selector ) {
81
- var labels;
82
- var options = {};
83
-
84
- // Make sure the widget has a selector set
85
- if ( !selector ) {
86
- return;
87
- }
88
-
89
- if ( widget === "controlgroupLabel" ) {
90
- labels = that.element.find( selector );
91
- labels.each( function() {
92
- var element = $( this );
93
-
94
- if ( element.children( ".ui-controlgroup-label-contents" ).length ) {
95
- return;
96
- }
97
- element.contents()
98
- .wrapAll( "<span class='ui-controlgroup-label-contents'></span>" );
99
- } );
100
- that._addClass( labels, null, "ui-widget ui-widget-content ui-state-default" );
101
- childWidgets = childWidgets.concat( labels.get() );
102
- return;
103
- }
104
-
105
- // Make sure the widget actually exists
106
- if ( !$.fn[ widget ] ) {
107
- return;
108
- }
109
-
110
- // We assume everything is in the middle to start because we can't determine
111
- // first / last elements until all enhancments are done.
112
- if ( that[ "_" + widget + "Options" ] ) {
113
- options = that[ "_" + widget + "Options" ]( "middle" );
114
- } else {
115
- options = { classes: {} };
116
- }
117
-
118
- // Find instances of this widget inside controlgroup and init them
119
- that.element
120
- .find( selector )
121
- .each( function() {
122
- var element = $( this );
123
- var instance = element[ widget ]( "instance" );
124
-
125
- // We need to clone the default options for this type of widget to avoid
126
- // polluting the variable options which has a wider scope than a single widget.
127
- var instanceOptions = $.widget.extend( {}, options );
128
-
129
- // If the button is the child of a spinner ignore it
130
- // TODO: Find a more generic solution
131
- if ( widget === "button" && element.parent( ".ui-spinner" ).length ) {
132
- return;
133
- }
134
-
135
- // Create the widget if it doesn't exist
136
- if ( !instance ) {
137
- instance = element[ widget ]()[ widget ]( "instance" );
138
- }
139
- if ( instance ) {
140
- instanceOptions.classes =
141
- that._resolveClassesValues( instanceOptions.classes, instance );
142
- }
143
- element[ widget ]( instanceOptions );
144
-
145
- // Store an instance of the controlgroup to be able to reference
146
- // from the outermost element for changing options and refresh
147
- var widgetElement = element[ widget ]( "widget" );
148
- $.data( widgetElement[ 0 ], "ui-controlgroup-data",
149
- instance ? instance : element[ widget ]( "instance" ) );
150
-
151
- childWidgets.push( widgetElement[ 0 ] );
152
- } );
153
- } );
154
-
155
- this.childWidgets = $( $.unique( childWidgets ) );
156
- this._addClass( this.childWidgets, "ui-controlgroup-item" );
157
- },
158
-
159
- _callChildMethod: function( method ) {
160
- this.childWidgets.each( function() {
161
- var element = $( this ),
162
- data = element.data( "ui-controlgroup-data" );
163
- if ( data && data[ method ] ) {
164
- data[ method ]();
165
- }
166
- } );
167
- },
168
-
169
- _updateCornerClass: function( element, position ) {
170
- var remove = "ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all";
171
- var add = this._buildSimpleOptions( position, "label" ).classes.label;
172
-
173
- this._removeClass( element, null, remove );
174
- this._addClass( element, null, add );
175
- },
176
-
177
- _buildSimpleOptions: function( position, key ) {
178
- var direction = this.options.direction === "vertical";
179
- var result = {
180
- classes: {}
181
- };
182
- result.classes[ key ] = {
183
- "middle": "",
184
- "first": "ui-corner-" + ( direction ? "top" : "left" ),
185
- "last": "ui-corner-" + ( direction ? "bottom" : "right" ),
186
- "only": "ui-corner-all"
187
- }[ position ];
188
-
189
- return result;
190
- },
191
-
192
- _spinnerOptions: function( position ) {
193
- var options = this._buildSimpleOptions( position, "ui-spinner" );
194
-
195
- options.classes[ "ui-spinner-up" ] = "";
196
- options.classes[ "ui-spinner-down" ] = "";
197
-
198
- return options;
199
- },
200
-
201
- _buttonOptions: function( position ) {
202
- return this._buildSimpleOptions( position, "ui-button" );
203
- },
204
-
205
- _checkboxradioOptions: function( position ) {
206
- return this._buildSimpleOptions( position, "ui-checkboxradio-label" );
207
- },
208
-
209
- _selectmenuOptions: function( position ) {
210
- var direction = this.options.direction === "vertical";
211
- return {
212
- width: direction ? "auto" : false,
213
- classes: {
214
- middle: {
215
- "ui-selectmenu-button-open": "",
216
- "ui-selectmenu-button-closed": ""
217
- },
218
- first: {
219
- "ui-selectmenu-button-open": "ui-corner-" + ( direction ? "top" : "tl" ),
220
- "ui-selectmenu-button-closed": "ui-corner-" + ( direction ? "top" : "left" )
221
- },
222
- last: {
223
- "ui-selectmenu-button-open": direction ? "" : "ui-corner-tr",
224
- "ui-selectmenu-button-closed": "ui-corner-" + ( direction ? "bottom" : "right" )
225
- },
226
- only: {
227
- "ui-selectmenu-button-open": "ui-corner-top",
228
- "ui-selectmenu-button-closed": "ui-corner-all"
229
- }
230
-
231
- }[ position ]
232
- };
233
- },
234
-
235
- _resolveClassesValues: function( classes, instance ) {
236
- var result = {};
237
- $.each( classes, function( key ) {
238
- var current = instance.options.classes[ key ] || "";
239
- current = $.trim( current.replace( controlgroupCornerRegex, "" ) );
240
- result[ key ] = ( current + " " + classes[ key ] ).replace( /\s+/g, " " );
241
- } );
242
- return result;
243
- },
244
-
245
- _setOption: function( key, value ) {
246
- if ( key === "direction" ) {
247
- this._removeClass( "ui-controlgroup-" + this.options.direction );
248
- }
249
-
250
- this._super( key, value );
251
- if ( key === "disabled" ) {
252
- this._callChildMethod( value ? "disable" : "enable" );
253
- return;
254
- }
255
-
256
- this.refresh();
257
- },
258
-
259
- refresh: function() {
260
- var children,
261
- that = this;
262
-
263
- this._addClass( "ui-controlgroup ui-controlgroup-" + this.options.direction );
264
-
265
- if ( this.options.direction === "horizontal" ) {
266
- this._addClass( null, "ui-helper-clearfix" );
267
- }
268
- this._initWidgets();
269
-
270
- children = this.childWidgets;
271
-
272
- // We filter here because we need to track all childWidgets not just the visible ones
273
- if ( this.options.onlyVisible ) {
274
- children = children.filter( ":visible" );
275
- }
276
-
277
- if ( children.length ) {
278
-
279
- // We do this last because we need to make sure all enhancment is done
280
- // before determining first and last
281
- $.each( [ "first", "last" ], function( index, value ) {
282
- var instance = children[ value ]().data( "ui-controlgroup-data" );
283
-
284
- if ( instance && that[ "_" + instance.widgetName + "Options" ] ) {
285
- var options = that[ "_" + instance.widgetName + "Options" ](
286
- children.length === 1 ? "only" : value
287
- );
288
- options.classes = that._resolveClassesValues( options.classes, instance );
289
- instance.element[ instance.widgetName ]( options );
290
- } else {
291
- that._updateCornerClass( children[ value ](), value );
292
- }
293
- } );
294
-
295
- // Finally call the refresh method on each of the child widgets.
296
- this._callChildMethod( "refresh" );
297
- }
298
- }
299
- } );
42
+
43
+ $.widget( "ui.checkboxradio", [ $.ui.formResetMixin, {
44
+ version: "1.12.1",
45
+ options: {
46
+ disabled: null,
47
+ label: null,
48
+ icon: true,
49
+ classes: {
50
+ "ui-checkboxradio-label": "ui-corner-all",
51
+ "ui-checkboxradio-icon": "ui-corner-all"
52
+ }
53
+ },
54
+
55
+ _getCreateOptions: function() {
56
+ var disabled, labels;
57
+ var that = this;
58
+ var options = this._super() || {};
59
+
60
+ // We read the type here, because it makes more sense to throw a element type error first,
61
+ // rather then the error for lack of a label. Often if its the wrong type, it
62
+ // won't have a label (e.g. calling on a div, btn, etc)
63
+ this._readType();
64
+
65
+ labels = this.element.labels();
66
+
67
+ // If there are multiple labels, use the last one
68
+ this.label = $( labels[ labels.length - 1 ] );
69
+ if ( !this.label.length ) {
70
+ $.error( "No label found for checkboxradio widget" );
71
+ }
72
+
73
+ this.originalLabel = "";
74
+
75
+ // We need to get the label text but this may also need to make sure it does not contain the
76
+ // input itself.
77
+ this.label.contents().not( this.element[ 0 ] ).each( function() {
78
+
79
+ // The label contents could be text, html, or a mix. We concat each element to get a
80
+ // string representation of the label, without the input as part of it.
81
+ that.originalLabel += this.nodeType === 3 ? $( this ).text() : this.outerHTML;
82
+ } );
83
+
84
+ // Set the label option if we found label text
85
+ if ( this.originalLabel ) {
86
+ options.label = this.originalLabel;
87
+ }
88
+
89
+ disabled = this.element[ 0 ].disabled;
90
+ if ( disabled != null ) {
91
+ options.disabled = disabled;
92
+ }
93
+ return options;
94
+ },
95
+
96
+ _create: function() {
97
+ var checked = this.element[ 0 ].checked;
98
+
99
+ this._bindFormResetHandler();
100
+
101
+ if ( this.options.disabled == null ) {
102
+ this.options.disabled = this.element[ 0 ].disabled;
103
+ }
104
+
105
+ this._setOption( "disabled", this.options.disabled );
106
+ this._addClass( "ui-checkboxradio", "ui-helper-hidden-accessible" );
107
+ this._addClass( this.label, "ui-checkboxradio-label", "ui-button ui-widget" );
108
+
109
+ if ( this.type === "radio" ) {
110
+ this._addClass( this.label, "ui-checkboxradio-radio-label" );
111
+ }
112
+
113
+ if ( this.options.label && this.options.label !== this.originalLabel ) {
114
+ this._updateLabel();
115
+ } else if ( this.originalLabel ) {
116
+ this.options.label = this.originalLabel;
117
+ }
118
+
119
+ this._enhance();
120
+
121
+ if ( checked ) {
122
+ this._addClass( this.label, "ui-checkboxradio-checked", "ui-state-active" );
123
+ if ( this.icon ) {
124
+ this._addClass( this.icon, null, "ui-state-hover" );
125
+ }
126
+ }
127
+
128
+ this._on( {
129
+ change: "_toggleClasses",
130
+ focus: function() {
131
+ this._addClass( this.label, null, "ui-state-focus ui-visual-focus" );
132
+ },
133
+ blur: function() {
134
+ this._removeClass( this.label, null, "ui-state-focus ui-visual-focus" );
135
+ }
136
+ } );
137
+ },
138
+
139
+ _readType: function() {
140
+ var nodeName = this.element[ 0 ].nodeName.toLowerCase();
141
+ this.type = this.element[ 0 ].type;
142
+ if ( nodeName !== "input" || !/radio|checkbox/.test( this.type ) ) {
143
+ $.error( "Can't create checkboxradio on element.nodeName=" + nodeName +
144
+ " and element.type=" + this.type );
145
+ }
146
+ },
147
+
148
+ // Support jQuery Mobile enhanced option
149
+ _enhance: function() {
150
+ this._updateIcon( this.element[ 0 ].checked );
151
+ },
152
+
153
+ widget: function() {
154
+ return this.label;
155
+ },
156
+
157
+ _getRadioGroup: function() {
158
+ var group;
159
+ var name = this.element[ 0 ].name;
160
+ var nameSelector = "input[name='" + $.ui.escapeSelector( name ) + "']";
161
+
162
+ if ( !name ) {
163
+ return $( [] );
164
+ }
165
+
166
+ if ( this.form.length ) {
167
+ group = $( this.form[ 0 ].elements ).filter( nameSelector );
168
+ } else {
169
+
170
+ // Not inside a form, check all inputs that also are not inside a form
171
+ group = $( nameSelector ).filter( function() {
172
+ return $( this ).form().length === 0;
173
+ } );
174
+ }
175
+
176
+ return group.not( this.element );
177
+ },
178
+
179
+ _toggleClasses: function() {
180
+ var checked = this.element[ 0 ].checked;
181
+ this._toggleClass( this.label, "ui-checkboxradio-checked", "ui-state-active", checked );
182
+
183
+ if ( this.options.icon && this.type === "checkbox" ) {
184
+ this._toggleClass( this.icon, null, "ui-icon-check ui-state-checked", checked )
185
+ ._toggleClass( this.icon, null, "ui-icon-blank", !checked );
186
+ }
187
+
188
+ if ( this.type === "radio" ) {
189
+ this._getRadioGroup()
190
+ .each( function() {
191
+ var instance = $( this ).checkboxradio( "instance" );
192
+
193
+ if ( instance ) {
194
+ instance._removeClass( instance.label,
195
+ "ui-checkboxradio-checked", "ui-state-active" );
196
+ }
197
+ } );
198
+ }
199
+ },
200
+
201
+ _destroy: function() {
202
+ this._unbindFormResetHandler();
203
+
204
+ if ( this.icon ) {
205
+ this.icon.remove();
206
+ this.iconSpace.remove();
207
+ }
208
+ },
209
+
210
+ _setOption: function( key, value ) {
211
+
212
+ // We don't allow the value to be set to nothing
213
+ if ( key === "label" && !value ) {
214
+ return;
215
+ }
216
+
217
+ this._super( key, value );
218
+
219
+ if ( key === "disabled" ) {
220
+ this._toggleClass( this.label, null, "ui-state-disabled", value );
221
+ this.element[ 0 ].disabled = value;
222
+
223
+ // Don't refresh when setting disabled
224
+ return;
225
+ }
226
+ this.refresh();
227
+ },
228
+
229
+ _updateIcon: function( checked ) {
230
+ var toAdd = "ui-icon ui-icon-background ";
231
+
232
+ if ( this.options.icon ) {
233
+ if ( !this.icon ) {
234
+ this.icon = $( "<span>" );
235
+ this.iconSpace = $( "<span> </span>" );
236
+ this._addClass( this.iconSpace, "ui-checkboxradio-icon-space" );
237
+ }
238
+
239
+ if ( this.type === "checkbox" ) {
240
+ toAdd += checked ? "ui-icon-check ui-state-checked" : "ui-icon-blank";
241
+ this._removeClass( this.icon, null, checked ? "ui-icon-blank" : "ui-icon-check" );
242
+ } else {
243
+ toAdd += "ui-icon-blank";
244
+ }
245
+ this._addClass( this.icon, "ui-checkboxradio-icon", toAdd );
246
+ if ( !checked ) {
247
+ this._removeClass( this.icon, null, "ui-icon-check ui-state-checked" );
248
+ }
249
+ this.icon.prependTo( this.label ).after( this.iconSpace );
250
+ } else if ( this.icon !== undefined ) {
251
+ this.icon.remove();
252
+ this.iconSpace.remove();
253
+ delete this.icon;
254
+ }
255
+ },
256
+
257
+ _updateLabel: function() {
258
+
259
+ // Remove the contents of the label ( minus the icon, icon space, and input )
260
+ var contents = this.label.contents().not( this.element[ 0 ] );
261
+ if ( this.icon ) {
262
+ contents = contents.not( this.icon[ 0 ] );
263
+ }
264
+ if ( this.iconSpace ) {
265
+ contents = contents.not( this.iconSpace[ 0 ] );
266
+ }
267
+ contents.remove();
268
+
269
+ this.label.append( this.options.label );
270
+ },
271
+
272
+ refresh: function() {
273
+ var checked = this.element[ 0 ].checked,
274
+ isDisabled = this.element[ 0 ].disabled;
275
+
276
+ this._updateIcon( checked );
277
+ this._toggleClass( this.label, "ui-checkboxradio-checked", "ui-state-active", checked );
278
+ if ( this.options.label !== null ) {
279
+ this._updateLabel();
280
+ }
281
+
282
+ if ( isDisabled !== this.options.disabled ) {
283
+ this._setOptions( { "disabled": isDisabled } );
284
+ }
285
+ }
286
+
287
+ } ] );
288
+
289
+ return $.ui.checkboxradio;
290
+
300
291
  } ) );