activeadmin 2.4.0 → 2.13.1

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 (261) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +364 -31
  3. data/CONTRIBUTING.md +42 -62
  4. data/README.md +4 -4
  5. data/app/assets/javascripts/active_admin/base.js +524 -0
  6. data/app/assets/stylesheets/active_admin/_base.scss +53 -37
  7. data/app/assets/stylesheets/active_admin/_forms.scss +0 -10
  8. data/app/assets/stylesheets/active_admin/_header.scss +40 -8
  9. data/app/assets/stylesheets/active_admin/_mixins.scss +1 -1
  10. data/{vendor → app}/assets/stylesheets/active_admin/_normalize.scss +25 -123
  11. data/app/assets/stylesheets/active_admin/{print.scss → _print.scss} +2 -2
  12. data/app/assets/stylesheets/active_admin/components/_comments.scss +2 -2
  13. data/app/assets/stylesheets/active_admin/components/_date_picker.scss +1 -2
  14. data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +0 -1
  15. data/app/assets/stylesheets/active_admin/components/_tables.scss +1 -2
  16. data/app/assets/stylesheets/active_admin/mixins/_all.scss +8 -8
  17. data/app/assets/stylesheets/active_admin/mixins/_variables.scss +17 -0
  18. data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +1 -1
  19. data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +0 -1
  20. data/app/javascript/active_admin/base.js +28 -0
  21. data/app/{assets/javascripts/active_admin/ext/jquery-ui.es6 → javascript/active_admin/ext/jquery-ui.js} +0 -0
  22. data/app/{assets/javascripts/active_admin/ext/jquery.es6 → javascript/active_admin/ext/jquery.js} +0 -0
  23. data/app/{assets/javascripts/active_admin/lib/batch_actions.es6 → javascript/active_admin/initializers/batch-actions.js} +4 -2
  24. data/app/javascript/active_admin/initializers/checkbox-toggler.js +3 -0
  25. data/app/{assets/javascripts/active_admin/initializers/datepicker.es6 → javascript/active_admin/initializers/datepicker.js} +0 -0
  26. data/app/javascript/active_admin/initializers/dropdown-menu.js +9 -0
  27. data/app/javascript/active_admin/initializers/filters.js +10 -0
  28. data/app/{assets/javascripts/active_admin/lib/has_many.es6 → javascript/active_admin/initializers/has-many.js} +4 -1
  29. data/app/javascript/active_admin/initializers/per-page.js +13 -0
  30. data/app/javascript/active_admin/initializers/table-checkbox-toggler.js +3 -0
  31. data/app/{assets/javascripts/active_admin/initializers/tabs.es6 → javascript/active_admin/initializers/tabs.js} +0 -0
  32. data/app/{assets/javascripts/active_admin/lib/checkbox-toggler.es6 → javascript/active_admin/lib/checkbox-toggler.js} +5 -5
  33. data/app/{assets/javascripts/active_admin/lib/dropdown-menu.es6 → javascript/active_admin/lib/dropdown-menu.js} +3 -10
  34. data/app/javascript/active_admin/lib/filters.js +39 -0
  35. data/app/{assets/javascripts/active_admin/lib/modal_dialog.es6 → javascript/active_admin/lib/modal-dialog.js} +10 -8
  36. data/app/javascript/active_admin/lib/per-page.js +38 -0
  37. data/app/{assets/javascripts/active_admin/lib/table-checkbox-toggler.es6 → javascript/active_admin/lib/table-checkbox-toggler.js} +5 -3
  38. data/app/javascript/active_admin/lib/utils.js +40 -0
  39. data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +1 -1
  40. data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +2 -2
  41. data/app/views/active_admin/devise/shared/_links.erb +1 -1
  42. data/app/views/active_admin/page/index.html.arb +1 -0
  43. data/app/views/active_admin/resource/edit.html.arb +1 -0
  44. data/app/views/active_admin/resource/index.html.arb +1 -0
  45. data/app/views/active_admin/resource/new.html.arb +1 -0
  46. data/app/views/active_admin/resource/show.html.arb +1 -0
  47. data/app/views/layouts/active_admin.html.arb +1 -0
  48. data/app/views/layouts/active_admin_logged_out.html.erb +15 -5
  49. data/config/locales/ar.yml +6 -6
  50. data/config/locales/az.yml +138 -0
  51. data/config/locales/en-CA.yml +3 -3
  52. data/config/locales/en-GB.yml +3 -3
  53. data/config/locales/en.yml +3 -3
  54. data/config/locales/es-MX.yml +2 -1
  55. data/config/locales/es.yml +5 -5
  56. data/config/locales/fr.yml +4 -4
  57. data/config/locales/it.yml +18 -0
  58. data/config/locales/ja.yml +3 -3
  59. data/config/locales/ko.yml +1 -1
  60. data/config/locales/lv.yml +2 -2
  61. data/config/locales/nl.yml +1 -1
  62. data/config/locales/ro.yml +3 -2
  63. data/config/locales/vi.yml +6 -5
  64. data/docs/0-installation.md +27 -3
  65. data/docs/1-general-configuration.md +20 -0
  66. data/docs/11-decorators.md +16 -5
  67. data/docs/2-resource-customization.md +10 -1
  68. data/docs/3-index-pages.md +1 -1
  69. data/docs/5-forms.md +9 -3
  70. data/docs/6-show-pages.md +12 -0
  71. data/docs/8-custom-actions.md +1 -1
  72. data/docs/9-batch-actions.md +2 -2
  73. data/docs/Gemfile +3 -2
  74. data/docs/Gemfile.lock +192 -157
  75. data/docs/_includes/top-menu.html +1 -1
  76. data/docs/documentation.md +1 -1
  77. data/docs/index.html +6 -6
  78. data/lib/active_admin/abstract_view_factory.rb +1 -0
  79. data/lib/active_admin/application.rb +20 -20
  80. data/lib/active_admin/application_settings.rb +4 -3
  81. data/lib/active_admin/asset_registration.rb +1 -0
  82. data/lib/active_admin/authorization_adapter.rb +4 -3
  83. data/lib/active_admin/base_controller/authorization.rb +15 -13
  84. data/lib/active_admin/base_controller/menu.rb +1 -0
  85. data/lib/active_admin/base_controller.rb +6 -5
  86. data/lib/active_admin/batch_actions/controller.rb +4 -3
  87. data/lib/active_admin/batch_actions/resource_extension.rb +10 -8
  88. data/lib/active_admin/batch_actions/views/batch_action_form.rb +4 -3
  89. data/lib/active_admin/batch_actions/views/batch_action_selector.rb +7 -6
  90. data/lib/active_admin/batch_actions/views/selection_cells.rb +4 -3
  91. data/lib/active_admin/batch_actions.rb +1 -0
  92. data/lib/active_admin/callbacks.rb +1 -0
  93. data/lib/active_admin/cancan_adapter.rb +2 -1
  94. data/lib/active_admin/collection_decorator.rb +32 -0
  95. data/lib/active_admin/component.rb +1 -0
  96. data/lib/active_admin/controller_action.rb +1 -0
  97. data/lib/active_admin/csv_builder.rb +12 -21
  98. data/lib/active_admin/dependency.rb +13 -12
  99. data/lib/active_admin/deprecation.rb +1 -0
  100. data/lib/active_admin/devise.rb +16 -5
  101. data/lib/active_admin/dsl.rb +2 -1
  102. data/lib/active_admin/dynamic_setting.rb +1 -0
  103. data/lib/active_admin/dynamic_settings_node.rb +3 -2
  104. data/lib/active_admin/engine.rb +13 -9
  105. data/lib/active_admin/error.rb +1 -2
  106. data/lib/active_admin/filters/active.rb +2 -1
  107. data/lib/active_admin/filters/active_filter.rb +7 -7
  108. data/lib/active_admin/filters/active_sidebar.rb +4 -30
  109. data/lib/active_admin/filters/dsl.rb +1 -0
  110. data/lib/active_admin/filters/forms.rb +7 -6
  111. data/lib/active_admin/filters/formtastic_addons.rb +2 -6
  112. data/lib/active_admin/filters/resource_extension.rb +2 -1
  113. data/lib/active_admin/filters.rb +8 -7
  114. data/lib/active_admin/form_builder.rb +25 -20
  115. data/lib/active_admin/generators/boilerplate.rb +2 -1
  116. data/lib/active_admin/helpers/collection.rb +2 -0
  117. data/lib/active_admin/helpers/i18n.rb +1 -0
  118. data/lib/active_admin/helpers/optional_display.rb +3 -2
  119. data/lib/active_admin/helpers/routes/url_helpers.rb +1 -0
  120. data/lib/active_admin/helpers/scope_chain.rb +1 -0
  121. data/lib/active_admin/inputs/datepicker_input.rb +2 -1
  122. data/lib/active_admin/inputs/filters/base/search_method_select.rb +5 -4
  123. data/lib/active_admin/inputs/filters/base.rb +2 -1
  124. data/lib/active_admin/inputs/filters/boolean_input.rb +2 -1
  125. data/lib/active_admin/inputs/filters/check_boxes_input.rb +2 -1
  126. data/lib/active_admin/inputs/filters/date_picker_input.rb +1 -0
  127. data/lib/active_admin/inputs/filters/date_range_input.rb +16 -12
  128. data/lib/active_admin/inputs/filters/numeric_input.rb +1 -0
  129. data/lib/active_admin/inputs/filters/select_input.rb +3 -2
  130. data/lib/active_admin/inputs/filters/string_input.rb +1 -0
  131. data/lib/active_admin/inputs/filters/text_input.rb +1 -0
  132. data/lib/active_admin/inputs.rb +1 -0
  133. data/lib/active_admin/localizers/resource_localizer.rb +4 -3
  134. data/lib/active_admin/localizers.rb +2 -1
  135. data/lib/active_admin/menu.rb +7 -3
  136. data/lib/active_admin/menu_collection.rb +1 -0
  137. data/lib/active_admin/menu_item.rb +8 -7
  138. data/lib/active_admin/namespace.rb +15 -14
  139. data/lib/active_admin/namespace_settings.rb +9 -5
  140. data/lib/active_admin/order_clause.rb +2 -1
  141. data/lib/active_admin/orm/active_record/comments/comment.rb +4 -3
  142. data/lib/active_admin/orm/active_record/comments/namespace_helper.rb +1 -0
  143. data/lib/active_admin/orm/active_record/comments/resource_helper.rb +1 -0
  144. data/lib/active_admin/orm/active_record/comments/show_page_helper.rb +1 -0
  145. data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +20 -19
  146. data/lib/active_admin/orm/active_record/comments/views.rb +3 -2
  147. data/lib/active_admin/orm/active_record/comments.rb +20 -19
  148. data/lib/active_admin/orm/active_record.rb +2 -1
  149. data/lib/active_admin/orm/mongoid.rb +1 -0
  150. data/lib/active_admin/page.rb +2 -1
  151. data/lib/active_admin/page_controller.rb +1 -0
  152. data/lib/active_admin/page_dsl.rb +1 -0
  153. data/lib/active_admin/page_presenter.rb +1 -0
  154. data/lib/active_admin/pundit_adapter.rb +59 -15
  155. data/lib/active_admin/resource/action_items.rb +6 -5
  156. data/lib/active_admin/resource/attributes.rb +2 -1
  157. data/lib/active_admin/resource/belongs_to.rb +3 -2
  158. data/lib/active_admin/resource/controllers.rb +2 -1
  159. data/lib/active_admin/resource/includes.rb +1 -0
  160. data/lib/active_admin/resource/menu.rb +5 -4
  161. data/lib/active_admin/resource/model.rb +1 -0
  162. data/lib/active_admin/resource/naming.rb +6 -5
  163. data/lib/active_admin/resource/ordering.rb +1 -0
  164. data/lib/active_admin/resource/page_presenters.rb +1 -0
  165. data/lib/active_admin/resource/pagination.rb +1 -0
  166. data/lib/active_admin/resource/routes.rb +6 -7
  167. data/lib/active_admin/resource/scope_to.rb +8 -7
  168. data/lib/active_admin/resource/scopes.rb +1 -0
  169. data/lib/active_admin/resource/sidebars.rb +2 -1
  170. data/lib/active_admin/resource.rb +21 -20
  171. data/lib/active_admin/resource_collection.rb +1 -0
  172. data/lib/active_admin/resource_controller/action_builder.rb +1 -0
  173. data/lib/active_admin/resource_controller/data_access.rb +31 -5
  174. data/lib/active_admin/resource_controller/decorators.rb +7 -28
  175. data/lib/active_admin/resource_controller/polymorphic_routes.rb +4 -2
  176. data/lib/active_admin/resource_controller/resource_class_methods.rb +1 -0
  177. data/lib/active_admin/resource_controller/scoping.rb +1 -0
  178. data/lib/active_admin/resource_controller/sidebars.rb +1 -0
  179. data/lib/active_admin/resource_controller/streaming.rb +9 -7
  180. data/lib/active_admin/resource_controller.rb +13 -11
  181. data/lib/active_admin/resource_dsl.rb +11 -25
  182. data/lib/active_admin/router.rb +1 -0
  183. data/lib/active_admin/scope.rb +7 -6
  184. data/lib/active_admin/settings_node.rb +1 -0
  185. data/lib/active_admin/sidebar_section.rb +1 -0
  186. data/lib/active_admin/version.rb +2 -1
  187. data/lib/active_admin/view_factory.rb +18 -17
  188. data/lib/active_admin/view_helpers/active_admin_application_helper.rb +1 -0
  189. data/lib/active_admin/view_helpers/auto_link_helper.rb +1 -0
  190. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +4 -3
  191. data/lib/active_admin/view_helpers/display_helper.rb +15 -7
  192. data/lib/active_admin/view_helpers/download_format_links_helper.rb +2 -1
  193. data/lib/active_admin/view_helpers/fields_for.rb +3 -2
  194. data/lib/active_admin/view_helpers/flash_helper.rb +1 -0
  195. data/lib/active_admin/view_helpers/form_helper.rb +1 -0
  196. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +1 -0
  197. data/lib/active_admin/view_helpers/scope_name_helper.rb +1 -0
  198. data/lib/active_admin/view_helpers/sidebar_helper.rb +1 -0
  199. data/lib/active_admin/view_helpers/title_helper.rb +1 -0
  200. data/lib/active_admin/view_helpers/view_factory_helper.rb +1 -0
  201. data/lib/active_admin/view_helpers.rb +2 -1
  202. data/lib/active_admin/views/action_items.rb +1 -0
  203. data/lib/active_admin/views/components/active_admin_form.rb +7 -6
  204. data/lib/active_admin/views/components/active_filters_sidebar_content.rb +59 -0
  205. data/lib/active_admin/views/components/attributes_table.rb +6 -5
  206. data/lib/active_admin/views/components/blank_slate.rb +2 -1
  207. data/lib/active_admin/views/components/columns.rb +1 -0
  208. data/lib/active_admin/views/components/dropdown_menu.rb +7 -9
  209. data/lib/active_admin/views/components/index_list.rb +4 -3
  210. data/lib/active_admin/views/components/menu.rb +2 -1
  211. data/lib/active_admin/views/components/menu_item.rb +5 -4
  212. data/lib/active_admin/views/components/paginated_collection.rb +20 -18
  213. data/lib/active_admin/views/components/panel.rb +2 -1
  214. data/lib/active_admin/views/components/scopes.rb +8 -5
  215. data/lib/active_admin/views/components/sidebar.rb +1 -0
  216. data/lib/active_admin/views/components/sidebar_section.rb +1 -0
  217. data/lib/active_admin/views/components/site_title.rb +2 -1
  218. data/lib/active_admin/views/components/status_tag.rb +12 -11
  219. data/lib/active_admin/views/components/table_for.rb +19 -17
  220. data/lib/active_admin/views/components/tabs.rb +4 -3
  221. data/lib/active_admin/views/components/unsupported_browser.rb +1 -0
  222. data/lib/active_admin/views/footer.rb +3 -1
  223. data/lib/active_admin/views/header.rb +3 -2
  224. data/lib/active_admin/views/index_as_block.rb +1 -0
  225. data/lib/active_admin/views/index_as_blog.rb +2 -1
  226. data/lib/active_admin/views/index_as_grid.rb +2 -1
  227. data/lib/active_admin/views/index_as_table.rb +17 -16
  228. data/lib/active_admin/views/pages/base.rb +19 -12
  229. data/lib/active_admin/views/pages/form.rb +1 -0
  230. data/lib/active_admin/views/pages/index.rb +16 -13
  231. data/lib/active_admin/views/pages/layout.rb +1 -0
  232. data/lib/active_admin/views/pages/page.rb +1 -0
  233. data/lib/active_admin/views/pages/show.rb +1 -0
  234. data/lib/active_admin/views/tabbed_navigation.rb +3 -2
  235. data/lib/active_admin/views/title_bar.rb +2 -1
  236. data/lib/active_admin/views.rb +2 -1
  237. data/lib/active_admin.rb +63 -64
  238. data/lib/activeadmin.rb +2 -1
  239. data/lib/generators/active_admin/assets/assets_generator.rb +3 -2
  240. data/lib/generators/active_admin/assets/templates/active_admin.scss +2 -2
  241. data/lib/generators/active_admin/devise/devise_generator.rb +6 -5
  242. data/lib/generators/active_admin/install/install_generator.rb +15 -8
  243. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +9 -2
  244. data/lib/generators/active_admin/install/templates/dashboard.rb +1 -0
  245. data/lib/generators/active_admin/page/page_generator.rb +2 -1
  246. data/lib/generators/active_admin/page/templates/page.rb +1 -0
  247. data/lib/generators/active_admin/resource/resource_generator.rb +4 -3
  248. data/lib/generators/active_admin/webpacker/plugins/jquery.js +7 -0
  249. data/lib/generators/active_admin/webpacker/templates/active_admin.js +5 -0
  250. data/lib/generators/active_admin/webpacker/templates/active_admin.scss +17 -0
  251. data/lib/generators/active_admin/webpacker/templates/print.scss +2 -0
  252. data/lib/generators/active_admin/webpacker/webpacker_generator.rb +27 -0
  253. data/lib/ransack_ext.rb +9 -8
  254. metadata +54 -91
  255. data/app/assets/images/active_admin/nested_menu_arrow.gif +0 -0
  256. data/app/assets/images/active_admin/nested_menu_arrow_dark.gif +0 -0
  257. data/app/assets/images/active_admin/orderable.png +0 -0
  258. data/app/assets/javascripts/active_admin/base.es6 +0 -23
  259. data/app/assets/javascripts/active_admin/initializers/filters.es6 +0 -45
  260. data/app/assets/javascripts/active_admin/lib/active_admin.es6 +0 -41
  261. data/app/assets/javascripts/active_admin/lib/per_page.es6 +0 -47
@@ -1,4 +1,4 @@
1
- ActiveAdmin.CheckboxToggler = class CheckboxToggler {
1
+ class CheckboxToggler {
2
2
  constructor(options, container){
3
3
  this.options = options;
4
4
  this.container = container;
@@ -6,7 +6,7 @@ ActiveAdmin.CheckboxToggler = class CheckboxToggler {
6
6
  this._bind();
7
7
  }
8
8
 
9
- option(key, value) {
9
+ option(_key, _value) {
10
10
  }
11
11
 
12
12
  _init() {
@@ -30,7 +30,7 @@ ActiveAdmin.CheckboxToggler = class CheckboxToggler {
30
30
  this.toggle_all_checkbox.change(() => this._didChangeToggleAllCheckbox());
31
31
  }
32
32
 
33
- _didChangeCheckbox(checkbox){
33
+ _didChangeCheckbox(_checkbox){
34
34
  const numChecked = this.checkboxes.filter(':checked').length;
35
35
 
36
36
  const allChecked = numChecked === this.checkboxes.length;
@@ -44,6 +44,6 @@ ActiveAdmin.CheckboxToggler = class CheckboxToggler {
44
44
  this.checkboxes.prop({ checked: setting });
45
45
  return setting;
46
46
  }
47
- };
47
+ }
48
48
 
49
- $.widget.bridge('checkboxToggler', ActiveAdmin.CheckboxToggler);
49
+ export default CheckboxToggler;
@@ -1,5 +1,4 @@
1
- ActiveAdmin.DropdownMenu = class DropdownMenu {
2
-
1
+ class DropdownMenu {
3
2
  constructor(options, element) {
4
3
  this.options = options;
5
4
  this.element = element;
@@ -112,12 +111,6 @@ ActiveAdmin.DropdownMenu = class DropdownMenu {
112
111
  this.$nipple.css('left', menu_center - nipple_center);
113
112
  }
114
113
  }
115
- };
116
-
117
- $.widget.bridge('aaDropdownMenu', ActiveAdmin.DropdownMenu);
118
-
119
- const onDOMReady = () => $('.dropdown_menu').aaDropdownMenu();
114
+ }
120
115
 
121
- $(document).
122
- ready(onDOMReady).
123
- on('page:load turbolinks:load', onDOMReady);
116
+ export default DropdownMenu;
@@ -0,0 +1,39 @@
1
+ import { queryStringToParams, hasTurbolinks, turbolinksVisit, toQueryString } from '../lib/utils';
2
+
3
+ class Filters {
4
+
5
+ static _clearForm(event) {
6
+ const regex = /^(q\[|q%5B|q%5b|page|utf8|commit)/;
7
+ const params = queryStringToParams()
8
+ .filter(({name}) => !name.match(regex));
9
+
10
+ event.preventDefault();
11
+
12
+ if (hasTurbolinks()) {
13
+ turbolinksVisit(params);
14
+ } else {
15
+ window.location.search = toQueryString(params);
16
+ }
17
+ }
18
+
19
+ static _disableEmptyInputFields(event) {
20
+ const params = $(this)
21
+ .find(':input')
22
+ .filter((i, input) => input.value === '')
23
+ .prop({ disabled: true })
24
+ .end()
25
+ .serializeArray();
26
+
27
+ if (hasTurbolinks()) {
28
+ event.preventDefault();
29
+ turbolinksVisit(params);
30
+ }
31
+ }
32
+
33
+ static _setSearchType() {
34
+ $(this).siblings('input').prop({name: `q[${this.value}]`});
35
+ }
36
+
37
+ }
38
+
39
+ export default Filters;
@@ -1,14 +1,14 @@
1
- ActiveAdmin.modal_dialog = function(message, inputs, callback){
1
+ function ModalDialog(message, inputs, callback){
2
2
  let html = `<form id="dialog_confirm" title="${message}"><ul>`;
3
3
  for (let name in inputs) {
4
- var elem, opts, wrapper;
4
+ var opts, wrapper;
5
5
  let type = inputs[name];
6
6
  if (/^(datepicker|checkbox|text|number)$/.test(type)) {
7
7
  wrapper = 'input';
8
8
  } else if (type === 'textarea') {
9
9
  wrapper = 'textarea';
10
10
  } else if ($.isArray(type)) {
11
- [wrapper, elem, opts, type] = ['select', 'option', type, ''];
11
+ [wrapper, opts, type] = ['select', type, ''];
12
12
  } else {
13
13
  throw new Error(`Unsupported input type: {${name}: ${type}}`);
14
14
  }
@@ -21,20 +21,20 @@ ActiveAdmin.modal_dialog = function(message, inputs, callback){
21
21
  const result = [];
22
22
 
23
23
  opts.forEach(v => {
24
- const $elem = $(`<${elem}/>`);
24
+ const $elem = $('<option></option>');
25
25
  if ($.isArray(v)) {
26
26
  $elem.text(v[0]).val(v[1]);
27
27
  } else {
28
28
  $elem.text(v);
29
29
  }
30
- result.push($elem.wrap('<div>').parent().html());
30
+ result.push($elem.wrap('<div></div>').parent().html());
31
31
  });
32
32
 
33
33
  return result;
34
34
  })()).join('') : '') +
35
35
  `</${wrapper}>` +
36
36
  "</li>";
37
- [wrapper, elem, opts, type, klass] = []; // unset any temporary variables
37
+ [wrapper, opts, type, klass] = []; // unset any temporary variables
38
38
  }
39
39
 
40
40
  html += "</ul></form>";
@@ -44,7 +44,7 @@ ActiveAdmin.modal_dialog = function(message, inputs, callback){
44
44
 
45
45
  form.dialog({
46
46
  modal: true,
47
- open(event, ui) {
47
+ open(_event, _ui) {
48
48
  $('body').trigger('modal_dialog:after_open', [form]);
49
49
  },
50
50
  dialogClass: 'active_admin_dialog',
@@ -58,4 +58,6 @@ ActiveAdmin.modal_dialog = function(message, inputs, callback){
58
58
  }
59
59
  }
60
60
  });
61
- };
61
+ }
62
+
63
+ export default ModalDialog;
@@ -0,0 +1,38 @@
1
+ import { queryStringToParams, hasTurbolinks, turbolinksVisit, toQueryString } from './utils';
2
+
3
+ class PerPage {
4
+ constructor(element) {
5
+ this.element = element;
6
+ }
7
+
8
+ update() {
9
+ const params = queryStringToParams()
10
+ .filter(({name}) => name != 'per_page' || name != 'page')
11
+
12
+ params.push({ name: 'per_page', value: this.element.value });
13
+
14
+ if (hasTurbolinks()) {
15
+ turbolinksVisit(params);
16
+ } else {
17
+ window.location.search = toQueryString(params);
18
+ }
19
+ }
20
+
21
+ static _jQueryInterface(config) {
22
+ return this.each(function () {
23
+ const $this = $(this)
24
+ let data = $this.data('perPage')
25
+
26
+ if (!data) {
27
+ data = new PerPage(this)
28
+ $this.data('perPage', data)
29
+ }
30
+
31
+ if (config === 'update') {
32
+ data[config]()
33
+ }
34
+ })
35
+ }
36
+ }
37
+
38
+ export default PerPage;
@@ -1,4 +1,6 @@
1
- ActiveAdmin.TableCheckboxToggler = class TableCheckboxToggler extends ActiveAdmin.CheckboxToggler {
1
+ import CheckboxToggler from "./checkbox-toggler";
2
+
3
+ class TableCheckboxToggler extends CheckboxToggler {
2
4
  _bind() {
3
5
  super._bind(...arguments);
4
6
 
@@ -31,6 +33,6 @@ ActiveAdmin.TableCheckboxToggler = class TableCheckboxToggler extends ActiveAdmi
31
33
  .find(':checkbox')
32
34
  .click();
33
35
  }
34
- };
36
+ }
35
37
 
36
- $.widget.bridge('tableCheckboxToggler', ActiveAdmin.TableCheckboxToggler);
38
+ export default TableCheckboxToggler;
@@ -0,0 +1,40 @@
1
+ function hasTurbolinks() {
2
+ return (typeof Turbolinks !== 'undefined' && Turbolinks.supported);
3
+ }
4
+
5
+ function turbolinksVisit(params) {
6
+ const path = [window.location.pathname, '?', toQueryString(params)].join('')
7
+ Turbolinks.visit(path);
8
+ }
9
+
10
+ function queryString() {
11
+ return (window.location.search || '').replace(/^\?/, '');
12
+ }
13
+
14
+ function queryStringToParams() {
15
+ const decode = (value) => decodeURIComponent((value || '').replace(/\+/g, '%20'));
16
+
17
+ return queryString()
18
+ .split("&")
19
+ .map(pair => pair.split("="))
20
+ .map(([key, value]) => {
21
+ return { name: decode(key), value: decode(value) }
22
+ });
23
+ }
24
+
25
+ function toQueryString(params) {
26
+ const encode = (value) => encodeURIComponent(value || '');
27
+
28
+ return params
29
+ .map(({name, value}) => [ encode(name), encode(value) ])
30
+ .map(pair => pair.join('='))
31
+ .join('&')
32
+ }
33
+
34
+ export {
35
+ hasTurbolinks,
36
+ turbolinksVisit,
37
+ queryString,
38
+ queryStringToParams,
39
+ toQueryString
40
+ };
@@ -2,7 +2,7 @@
2
2
 
3
3
  <p>Someone has requested a link to change your password, and you can do this through the link below.</p>
4
4
 
5
- <p><%= link_to 'Change my password', edit_password_url(@resource, reset_password_token: @resource.reset_password_token) %></p>
5
+ <p><%= link_to 'Change my password', edit_password_url(@resource, reset_password_token: @token) %></p>
6
6
 
7
7
  <p>If you didn't request this, please ignore this email.</p>
8
8
  <p>Your password won't change until you access the link above and create a new one.</p>
@@ -1,7 +1,7 @@
1
1
  <p>Hello <%= @resource.email %>!</p>
2
2
 
3
- <p>Your account has been locked due to an excessive amount of unsuccessful sign in attempts.</p>
3
+ <p>Your account has been locked due to an excessive number of unsuccessful sign in attempts.</p>
4
4
 
5
5
  <p>Click the link below to unlock your account:</p>
6
6
 
7
- <p><%= link_to 'Unlock my account', unlock_url(@resource, unlock_token: @resource.unlock_token) %></p>
7
+ <p><%= link_to 'Unlock my account', unlock_url(@resource, unlock_token: @token) %></p>
@@ -27,7 +27,7 @@
27
27
  <%- if devise_mapping.omniauthable? %>
28
28
  <%- resource_class.omniauth_providers.each do |provider| %>
29
29
  <%= link_to t('active_admin.devise.links.sign_in_with_omniauth_provider', provider: provider.to_s.titleize),
30
- omniauth_authorize_path(resource_name, provider) %>
30
+ omniauth_authorize_path(resource_name, provider), method: :post %>
31
31
  <br>
32
32
  <% end -%>
33
33
  <% end -%>
@@ -1 +1,2 @@
1
+ # frozen_string_literal: true
1
2
  insert_tag active_admin_application.view_factory["page"]
@@ -1 +1,2 @@
1
+ # frozen_string_literal: true
1
2
  insert_tag renderer_for(:edit)
@@ -1 +1,2 @@
1
+ # frozen_string_literal: true
1
2
  insert_tag renderer_for(:index)
@@ -1 +1,2 @@
1
+ # frozen_string_literal: true
1
2
  insert_tag renderer_for(:new)
@@ -1 +1,2 @@
1
+ # frozen_string_literal: true
1
2
  insert_tag renderer_for(:show)
@@ -1 +1,2 @@
1
+ # frozen_string_literal: true
1
2
  insert_tag view_factory.layout
@@ -6,10 +6,18 @@
6
6
  <title><%= [@page_title, ActiveAdmin.application.site_title(self)].compact.join(" | ") %></title>
7
7
 
8
8
  <% ActiveAdmin.application.stylesheets.each do |style, options| %>
9
- <%= stylesheet_link_tag style, options %>
9
+ <% if ActiveAdmin.application.use_webpacker %>
10
+ <%= stylesheet_pack_tag style, **options %>
11
+ <% else %>
12
+ <%= stylesheet_link_tag style, **options %>
13
+ <% end %>
10
14
  <% end %>
11
15
  <% ActiveAdmin.application.javascripts.each do |path| %>
12
- <%= javascript_include_tag path %>
16
+ <% if ActiveAdmin.application.use_webpacker %>
17
+ <%= javascript_pack_tag path %>
18
+ <% else %>
19
+ <%= javascript_include_tag path %>
20
+ <% end %>
13
21
  <% end %>
14
22
 
15
23
  <%= favicon_link_tag ActiveAdmin.application.favicon if ActiveAdmin.application.favicon %>
@@ -24,9 +32,11 @@
24
32
  <div id="wrapper">
25
33
 
26
34
  <div id="content_wrapper">
27
- <% flash_messages.each do |type, message| %>
28
- <%= content_tag :div, message, class: "flash flash_#{type}" %>
29
- <% end %>
35
+ <div class="flashes">
36
+ <% flash_messages.each do |type, message| %>
37
+ <%= content_tag :div, message, class: "flash flash_#{type}" %>
38
+ <% end %>
39
+ </div>
30
40
  <div id="active_admin_content">
31
41
  <%= yield %>
32
42
  </div>
@@ -8,7 +8,7 @@ ar:
8
8
  edit: "تعديل"
9
9
  delete: "حذف"
10
10
  delete_confirmation: "هل تريد تأكيد الحذف؟"
11
- new_model: "جديد %{model}"
11
+ new_model: "%{model} جديد"
12
12
  edit_model: "تعديل %{model}"
13
13
  delete_model: "حذف %{model}"
14
14
  details: "تفاصيل %{model}"
@@ -97,12 +97,12 @@ ar:
97
97
  password:
98
98
  title: "كلمة المرور"
99
99
  sign_up:
100
- title: "تسجيل الدخول"
101
- submit: "تسجيل الدخول"
100
+ title: "تسجيل"
101
+ submit: "تسجيل"
102
102
  login:
103
- title: "دخول"
103
+ title: "تسجيل الدخول"
104
104
  remember_me: "تذكرني"
105
- submit: "تسحيل"
105
+ submit: "تسجيل الدخول"
106
106
  reset_password:
107
107
  title: "هل نسيت كلمة المرور؟"
108
108
  submit: "استرجاع كلمة المرور"
@@ -117,7 +117,7 @@ ar:
117
117
  submit: "إعادة ارسال تعليمات التأكيد"
118
118
  links:
119
119
  sign_up: "التسجيل"
120
- sign_in: "دخول"
120
+ sign_in: "تسجيل الدخول"
121
121
  forgot_your_password: "هل نسيت كلمة المرور؟"
122
122
  sign_in_with_omniauth_provider: "تسجيل الدخول بـ %{provider}"
123
123
  resend_unlock_instructions: "إعادة إرسال تعليمات تنشيط الحساب"
@@ -0,0 +1,138 @@
1
+ az:
2
+ active_admin:
3
+ dashboard: "İdarəetmə paneli"
4
+ dashboard_welcome:
5
+ welcome: "Active Admin-ə xoş gəlmişsiniz. Bu saytla idarəetmənin standart səhifəsidir."
6
+ call_to_action: "Buraya nə isə əlavə etmək üçün 'app/admin/dashboard.rb' sənədini dəyişin"
7
+ view: "Aç"
8
+ edit: "Dəyiş"
9
+ delete: "Sil"
10
+ delete_confirmation: "Siz bunu silmək istədiyinizdən əminsiniz?"
11
+ new_model: "%{model} yarat"
12
+ edit_model: "%{model} dəyiş"
13
+ delete_model: "%{model} sil"
14
+ details: "%{model} haqqında"
15
+ cancel: "İmtina"
16
+ empty: "Boş"
17
+ previous: "Geri"
18
+ next: "İrəli"
19
+ download: "Yüklənmə:"
20
+ has_many_new: "%{model} əlavə et"
21
+ has_many_delete: "Sil"
22
+ has_many_remove: "Yığışdır"
23
+ filters:
24
+ buttons:
25
+ filter: "Filtrlə"
26
+ clear: "Təmizlə"
27
+ predicates:
28
+ contains: "Yerləşir"
29
+ equals: "Bərabərdir"
30
+ starts_with: "Başlayır"
31
+ ends_with: "Bitir"
32
+ greater_than: "böyük"
33
+ less_than: "kiçik"
34
+ search_status:
35
+ headline: "Axtarışın statusu:"
36
+ current_scope: "Sahə:"
37
+ current_filters: "Cari filter:"
38
+ no_current_filters: "Heç biri"
39
+ status_tag:
40
+ "yes": "Bəli"
41
+ "no": "Xeyr"
42
+ main_content: "Создайте %{model}#main_content для отображения содержимого."
43
+ logout: "Çıxış"
44
+ powered_by: "Работает на %{active_admin} %{version}"
45
+ sidebars:
46
+ filters: "Filterlə"
47
+ search_status: "Axtarışın statusu"
48
+ pagination:
49
+ empty: "%{model} tapılmadı"
50
+ one: "Nəticə: <b>1</b> %{model}"
51
+ one_page: "Nəticə: <b>%{n}</b> %{model}"
52
+ multiple: "Nəticə: %{model} <b>%{from}&nbsp;-&nbsp;%{to}</b> <b>%{total}</b>"
53
+ multiple_without_total: "Nəticə: %{model} <b>%{from}&nbsp;-&nbsp;%{to}</b>"
54
+ entry:
55
+ one: "yazı"
56
+ few: "yazı"
57
+ many: "yazı"
58
+ other: "yazı"
59
+ any: "İstənilən"
60
+ blank_slate:
61
+ content: "%{resource_name} hələ yoxdur."
62
+ link: "Yarat"
63
+ dropdown_actions:
64
+ button_label: "Əməliyyatlar"
65
+ batch_actions:
66
+ button_label: "Qrup əməliyyatları"
67
+ default_confirmation: "Siz bunu etməyinizə əminsiniz?"
68
+ delete_confirmation: "Siz %{plural_model} silməyə əminsiniz?"
69
+ succesfully_destroyed:
70
+ one: "Uğurla silindi: 1 %{model}"
71
+ few: "Uğurla silindi: %{count} %{plural_model}"
72
+ many: "Uğurla silindi: %{count} %{plural_model}"
73
+ other: "Uğurla silindi: %{count} %{plural_model}"
74
+ selection_toggle_explanation: "(Hamısını seç / Seçilmişləri sıfırla)"
75
+ action_label: "%{title} seçilmiş"
76
+ labels:
77
+ destroy: "Sil"
78
+ comments:
79
+ created_at: "Yaranma tarixi"
80
+ resource_type: "Resursun tipi"
81
+ author_type: "Müəllifin tipi"
82
+ body: "Mətn"
83
+ author: "Müəllif"
84
+ add: "Şərh əlavə et"
85
+ delete: "Şərhi sil"
86
+ delete_confirmation: "Siz bu şərhi silmək istədiyinizdən əminsiniz?"
87
+ resource: "Resurs"
88
+ no_comments_yet: "Hələ şərhlər yoxdur."
89
+ author_missing: "Naməlum"
90
+ title_content: "Şərhlər (%{count})"
91
+ errors:
92
+ empty_text: "Şərh yadda saxlanılmadı, mətn boş ola bilməz."
93
+ devise:
94
+ username:
95
+ title: "İstifadəçi adı"
96
+ email:
97
+ title: "E-poçt"
98
+ subdomain:
99
+ title: "Subdomen"
100
+ password:
101
+ title: "Şifrə"
102
+ sign_up:
103
+ title: "Qeydiyyat"
104
+ submit: "Qeydiyyatdan keç"
105
+ login:
106
+ title: "Giriş"
107
+ remember_me: "Məni yadda saxla"
108
+ submit: "Daxil ol"
109
+ reset_password:
110
+ title: "Şifrəni unutmusunuz?"
111
+ submit: "Şifrəni sıfırla"
112
+ change_password:
113
+ title: "Şifrənin dəyişdirilməsi"
114
+ submit: "Şifrəni dəyiş"
115
+ unlock:
116
+ title: "Blokdan çıxarma üzrə təlimatı yenidən göndərmək"
117
+ submit: "Blokdan çıxarma üzrə təlimatı yenidən göndərmək"
118
+ resend_confirmation_instructions:
119
+ title: "Aktivləşdirmə ismarışını yenidən göndərmək"
120
+ submit: "Aktivləşdirmə ismarışını yenidən göndərmək"
121
+ links:
122
+ sign_up: "Qeydiyyat"
123
+ sign_in: "Giriş"
124
+ forgot_your_password: "Şifrəni unutmusunuz?"
125
+ sign_in_with_omniauth_provider: "%{provider} vasitəsilə daxil ol"
126
+ resend_unlock_instructions: "Blokdan çıxarma üzrə təlimatı yenidən göndərilməsi"
127
+ resend_confirmation_instructions: "Aktivləşdirmə ismarışını yenidən göndərilməsi"
128
+ unsupported_browser:
129
+ headline: "Zəhmət olmasa, bilin ki, Active Admin artıq Internet Explorer-in köhnə versiyalarını daha dəstəkləmir və yalnız IE 8 versiyasından başlayaraq dəstəkləyir"
130
+ recommendation: "Biz sizin brauzerinizin versiyasını yeniləməyi məsləhət görürük (<a href=\"http://windows.microsoft.com/ie\">Internet Explorer</a>, <a href=\"https://chrome.google.com/\">Google Chrome</a>, və ya <a href=\"https://mozilla.org/firefox/\">Firefox</a>)."
131
+ turn_off_compatibility_view: "Əgər siz IE 9 və ya daha yeni versiya istifadə edirsinizsə, əmin olun ki, <a href=\"https://support.microsoft.com/ru-ru/help/17471\">\"Uyğunluğun rejimində baxış\"</a> seçimini söndürmüsünüz."
132
+ access_denied:
133
+ message: "Bunu etmək üçün daxil olmalısınız."
134
+ index_list:
135
+ table: "Cədvəl"
136
+ block: "Siyahı"
137
+ grid: "Tor"
138
+ blog: "Bloq"
@@ -68,8 +68,8 @@
68
68
  default_confirmation: "Are you sure you want to do this?"
69
69
  delete_confirmation: "Are you sure you want to delete these %{plural_model}?"
70
70
  succesfully_destroyed:
71
- one: "Successfully destroyed 1 %{model}"
72
- other: "Successfully destroyed %{count} %{plural_model}"
71
+ one: "Successfully deleted 1 %{model}"
72
+ other: "Successfully deleted %{count} %{plural_model}"
73
73
  selection_toggle_explanation: "(Toggle Selection)"
74
74
  action_label: "%{title} Selected"
75
75
  labels:
@@ -82,7 +82,7 @@
82
82
  author: "Author"
83
83
  add: "Add Comment"
84
84
  delete: "Delete Comment"
85
- delete_confirmation: "Are you sure you want to delete these comment?"
85
+ delete_confirmation: "Are you sure you want to delete these comments?"
86
86
  resource: "Resource"
87
87
  no_comments_yet: "No comments yet."
88
88
  author_missing: "Anonymous"
@@ -68,8 +68,8 @@
68
68
  default_confirmation: "Are you sure you want to do this?"
69
69
  delete_confirmation: "Are you sure you want to delete these %{plural_model}?"
70
70
  succesfully_destroyed:
71
- one: "Successfully destroyed 1 %{model}"
72
- other: "Successfully destroyed %{count} %{plural_model}"
71
+ one: "Successfully deleted 1 %{model}"
72
+ other: "Successfully deleted %{count} %{plural_model}"
73
73
  selection_toggle_explanation: "(Toggle Selection)"
74
74
  action_label: "%{title} Selected"
75
75
  labels:
@@ -82,7 +82,7 @@
82
82
  author: "Author"
83
83
  add: "Add Comment"
84
84
  delete: "Delete Comment"
85
- delete_confirmation: "Are you sure you want to delete these comment?"
85
+ delete_confirmation: "Are you sure you want to delete these comments?"
86
86
  resource: "Resource"
87
87
  no_comments_yet: "No comments yet."
88
88
  author_missing: "Anonymous"
@@ -91,8 +91,8 @@ en:
91
91
  default_confirmation: "Are you sure you want to do this?"
92
92
  delete_confirmation: "Are you sure you want to delete these %{plural_model}?"
93
93
  succesfully_destroyed:
94
- one: "Successfully destroyed 1 %{model}"
95
- other: "Successfully destroyed %{count} %{plural_model}"
94
+ one: "Successfully deleted 1 %{model}"
95
+ other: "Successfully deleted %{count} %{plural_model}"
96
96
  selection_toggle_explanation: "(Toggle Selection)"
97
97
  action_label: "%{title} Selected"
98
98
  labels:
@@ -105,7 +105,7 @@ en:
105
105
  author: "Author"
106
106
  add: "Add Comment"
107
107
  delete: "Delete Comment"
108
- delete_confirmation: "Are you sure you want to delete these comment?"
108
+ delete_confirmation: "Are you sure you want to delete these comments?"
109
109
  resource: "Resource"
110
110
  no_comments_yet: "No comments yet."
111
111
  author_missing: "Anonymous"
@@ -86,7 +86,8 @@ es-MX:
86
86
  title: "Cambie su contraseña"
87
87
  submit: "Cambiar mi contraseña"
88
88
  links:
89
- sign_in: "Registrarse"
89
+ sign_in: "Iniciar Sesión"
90
+ sign_up: "Registrarse"
90
91
  forgot_your_password: "¿Olvidó su contraseña?"
91
92
  sign_in_with_omniauth_provider: "Conéctate con %{provider}"
92
93
  index_list:
@@ -23,7 +23,7 @@ es:
23
23
  view: "Ver"
24
24
  edit: "Editar"
25
25
  delete: "Eliminar"
26
- delete_confirmation: "¿Está seguro de que quiere eliminar esto?"
26
+ delete_confirmation: "¿Confirma que desea borrar este elemento?"
27
27
  create_another: "Crear otro %{model}"
28
28
  new_model: "Añadir %{model}"
29
29
  edit_model: "Editar %{model}"
@@ -89,7 +89,7 @@ es:
89
89
  batch_actions:
90
90
  button_label: "Acciones en masa"
91
91
  default_confirmation: "¿Seguro que quieres hacer esto?"
92
- delete_confirmation: "Eliminar %{plural_model}: ¿Está seguro?"
92
+ delete_confirmation: "Se eliminarán %{plural_model}. ¿Desea continuar?"
93
93
  succesfully_destroyed:
94
94
  one: "Se ha destruido 1 %{model} con éxito"
95
95
  other: "Se han destruido %{count} %{plural_model} con éxito"
@@ -105,7 +105,7 @@ es:
105
105
  author: "Autor"
106
106
  add: "Comentar"
107
107
  delete: "Borrar Comentario"
108
- delete_confirmation: "¿Está seguro que desea borrar este comentario?"
108
+ delete_confirmation: "¿Confirma que desea borrar este comentario?"
109
109
  resource: "Recurso"
110
110
  no_comments_yet: "No hay comentarios aún."
111
111
  author_missing: "Anónimo"
@@ -143,8 +143,8 @@ es:
143
143
  title: "Reenviar instrucciones de confirmación"
144
144
  submit: "Reenviar instrucciones de confirmación"
145
145
  links:
146
- sign_up: "Ingresar"
147
- sign_in: "Registrarse"
146
+ sign_up: "Registrarse"
147
+ sign_in: "Iniciar Sesión"
148
148
  forgot_your_password: "¿Olvidó su contraseña?"
149
149
  sign_in_with_omniauth_provider: "Conéctate con %{provider}"
150
150
  resend_unlock_instructions: "Reenviar instrucciones de desbloqueo"
@@ -7,7 +7,7 @@ fr:
7
7
  view: "Voir"
8
8
  edit: "Modifier"
9
9
  delete: "Supprimer"
10
- delete_confirmation: "Êtes-vous certain de vouloir supprimer ceci ?"
10
+ delete_confirmation: "Voulez-vous vraiment supprimer ceci ?"
11
11
  create_another: "Créer autre %{model}"
12
12
  new_model: "Créer %{model}"
13
13
  edit_model: "Modifier %{model}"
@@ -69,8 +69,8 @@ fr:
69
69
  button_label: "Actions"
70
70
  batch_actions:
71
71
  button_label: "Actions groupées"
72
- default_confirmation: "Êtes-vous sûr de vouloir faire cela ?"
73
- delete_confirmation: "Êtes-vous sûr de vouloir supprimer ces %{plural_model} ?"
72
+ default_confirmation: "Voulez-vous vraiment faire cela ?"
73
+ delete_confirmation: "Voulez-vous vraiment supprimer ces %{plural_model} ?"
74
74
  succesfully_destroyed:
75
75
  one: "1 %{model} supprimé"
76
76
  other: "%{count} %{plural_model} supprimés"
@@ -86,7 +86,7 @@ fr:
86
86
  author: "Auteur"
87
87
  add: "Ajouter un commentaire"
88
88
  delete: "Supprimer ce commentaire"
89
- delete_confirmation: "Êtes-vous sûr de vouloir supprimer ce commentaire ?"
89
+ delete_confirmation: "Voulez-vous vraiment supprimer ce commentaire ?"
90
90
  resource: "Ressource"
91
91
  no_comments_yet: "Aucun commentaire actuellement"
92
92
  author_missing: "Anonyme"