activeadmin 2.9.0 → 3.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (278) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +284 -1
  3. data/CONTRIBUTING.md +4 -12
  4. data/README.md +2 -2
  5. data/app/assets/javascripts/active_admin/base.js +13 -9
  6. data/app/assets/stylesheets/active_admin/_base.scss +53 -37
  7. data/app/assets/stylesheets/active_admin/_forms.scss +1 -11
  8. data/app/assets/stylesheets/active_admin/_normalize.scss +25 -123
  9. data/app/assets/stylesheets/active_admin/components/_date_picker.scss +1 -2
  10. data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +0 -1
  11. data/app/assets/stylesheets/active_admin/mixins/_variables.scss +9 -0
  12. data/app/assets/stylesheets/active_admin/structure/_footer.scss +6 -1
  13. data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +0 -1
  14. data/app/javascript/active_admin/initializers/has-many.js +4 -1
  15. data/app/views/active_admin/devise/shared/_links.erb +1 -1
  16. data/app/views/active_admin/page/index.html.arb +1 -0
  17. data/app/views/active_admin/resource/edit.html.arb +1 -0
  18. data/app/views/active_admin/resource/index.html.arb +1 -0
  19. data/app/views/active_admin/resource/new.html.arb +1 -0
  20. data/app/views/active_admin/resource/show.html.arb +1 -0
  21. data/app/views/layouts/active_admin.html.arb +1 -0
  22. data/app/views/layouts/active_admin_logged_out.html.erb +5 -4
  23. data/config/locales/ar.yml +0 -7
  24. data/config/locales/az.yml +0 -7
  25. data/config/locales/bg.yml +0 -7
  26. data/config/locales/bs.yml +0 -7
  27. data/config/locales/ca.yml +0 -7
  28. data/config/locales/cs.yml +0 -7
  29. data/config/locales/da.yml +0 -7
  30. data/config/locales/de-CH.yml +0 -7
  31. data/config/locales/de.yml +0 -8
  32. data/config/locales/el.yml +0 -7
  33. data/config/locales/en-CA.yml +0 -7
  34. data/config/locales/en-GB.yml +0 -7
  35. data/config/locales/en.yml +0 -8
  36. data/config/locales/eo.yml +0 -8
  37. data/config/locales/es-MX.yml +0 -7
  38. data/config/locales/es.yml +0 -8
  39. data/config/locales/fa.yml +0 -7
  40. data/config/locales/fi.yml +0 -7
  41. data/config/locales/fr.yml +3 -11
  42. data/config/locales/he.yml +0 -9
  43. data/config/locales/hr.yml +0 -7
  44. data/config/locales/hu.yml +0 -8
  45. data/config/locales/id.yml +0 -7
  46. data/config/locales/it.yml +0 -8
  47. data/config/locales/ja.yml +0 -8
  48. data/config/locales/ko.yml +1 -8
  49. data/config/locales/lt.yml +0 -8
  50. data/config/locales/lv.yml +0 -7
  51. data/config/locales/mk.yml +0 -8
  52. data/config/locales/nb.yml +0 -8
  53. data/config/locales/nl.yml +1 -9
  54. data/config/locales/pl.yml +0 -8
  55. data/config/locales/pt-BR.yml +0 -8
  56. data/config/locales/pt-PT.yml +0 -7
  57. data/config/locales/ro.yml +3 -9
  58. data/config/locales/ru.yml +0 -6
  59. data/config/locales/sk.yml +0 -8
  60. data/config/locales/sv-SE.yml +58 -39
  61. data/config/locales/tr.yml +0 -11
  62. data/config/locales/uk.yml +0 -6
  63. data/config/locales/vi.yml +34 -15
  64. data/config/locales/zh-CN.yml +34 -23
  65. data/config/locales/zh-TW.yml +0 -7
  66. data/lib/active_admin/abstract_view_factory.rb +1 -0
  67. data/lib/active_admin/application.rb +10 -10
  68. data/lib/active_admin/application_settings.rb +1 -0
  69. data/lib/active_admin/asset_registration.rb +4 -3
  70. data/lib/active_admin/authorization_adapter.rb +3 -0
  71. data/lib/active_admin/base_controller/authorization.rb +4 -3
  72. data/lib/active_admin/base_controller/menu.rb +1 -0
  73. data/lib/active_admin/base_controller.rb +2 -1
  74. data/lib/active_admin/batch_actions/controller.rb +1 -0
  75. data/lib/active_admin/batch_actions/resource_extension.rb +1 -0
  76. data/lib/active_admin/batch_actions/views/batch_action_form.rb +1 -0
  77. data/lib/active_admin/batch_actions/views/batch_action_selector.rb +1 -0
  78. data/lib/active_admin/batch_actions/views/selection_cells.rb +1 -0
  79. data/lib/active_admin/batch_actions.rb +1 -0
  80. data/lib/active_admin/callbacks.rb +1 -0
  81. data/lib/active_admin/cancan_adapter.rb +1 -0
  82. data/lib/active_admin/collection_decorator.rb +1 -0
  83. data/lib/active_admin/component.rb +1 -0
  84. data/lib/active_admin/controller_action.rb +1 -0
  85. data/lib/active_admin/csv_builder.rb +24 -16
  86. data/lib/active_admin/dependency.rb +1 -4
  87. data/lib/active_admin/devise.rb +11 -0
  88. data/lib/active_admin/dsl.rb +1 -0
  89. data/lib/active_admin/dynamic_setting.rb +1 -0
  90. data/lib/active_admin/dynamic_settings_node.rb +1 -0
  91. data/lib/active_admin/engine.rb +8 -2
  92. data/lib/active_admin/error.rb +1 -0
  93. data/lib/active_admin/filters/active.rb +1 -0
  94. data/lib/active_admin/filters/active_filter.rb +2 -1
  95. data/lib/active_admin/filters/active_sidebar.rb +2 -28
  96. data/lib/active_admin/filters/dsl.rb +1 -0
  97. data/lib/active_admin/filters/forms.rb +3 -2
  98. data/lib/active_admin/filters/formtastic_addons.rb +2 -1
  99. data/lib/active_admin/filters/resource_extension.rb +5 -4
  100. data/lib/active_admin/filters.rb +1 -0
  101. data/lib/active_admin/form_builder.rb +1 -0
  102. data/lib/active_admin/generators/boilerplate.rb +1 -0
  103. data/lib/active_admin/helpers/collection.rb +2 -0
  104. data/lib/active_admin/helpers/i18n.rb +1 -0
  105. data/lib/active_admin/helpers/optional_display.rb +1 -0
  106. data/lib/active_admin/helpers/routes/url_helpers.rb +1 -0
  107. data/lib/active_admin/helpers/scope_chain.rb +1 -0
  108. data/lib/active_admin/inputs/datepicker_input.rb +1 -0
  109. data/lib/active_admin/inputs/filters/base/search_method_select.rb +3 -2
  110. data/lib/active_admin/inputs/filters/base.rb +1 -0
  111. data/lib/active_admin/inputs/filters/boolean_input.rb +1 -0
  112. data/lib/active_admin/inputs/filters/check_boxes_input.rb +1 -0
  113. data/lib/active_admin/inputs/filters/date_picker_input.rb +1 -0
  114. data/lib/active_admin/inputs/filters/date_range_input.rb +3 -2
  115. data/lib/active_admin/inputs/filters/numeric_input.rb +2 -1
  116. data/lib/active_admin/inputs/filters/select_input.rb +3 -0
  117. data/lib/active_admin/inputs/filters/string_input.rb +2 -1
  118. data/lib/active_admin/inputs/filters/text_input.rb +1 -0
  119. data/lib/active_admin/inputs.rb +1 -0
  120. data/lib/active_admin/localizers/resource_localizer.rb +1 -0
  121. data/lib/active_admin/localizers.rb +1 -0
  122. data/lib/active_admin/menu.rb +2 -0
  123. data/lib/active_admin/menu_collection.rb +1 -0
  124. data/lib/active_admin/menu_item.rb +1 -0
  125. data/lib/active_admin/namespace.rb +4 -3
  126. data/lib/active_admin/namespace_settings.rb +2 -1
  127. data/lib/active_admin/order_clause.rb +1 -0
  128. data/lib/active_admin/orm/active_record/comments/comment.rb +9 -0
  129. data/lib/active_admin/orm/active_record/comments/namespace_helper.rb +1 -0
  130. data/lib/active_admin/orm/active_record/comments/resource_helper.rb +1 -0
  131. data/lib/active_admin/orm/active_record/comments/show_page_helper.rb +1 -0
  132. data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +2 -1
  133. data/lib/active_admin/orm/active_record/comments/views.rb +1 -0
  134. data/lib/active_admin/orm/active_record/comments.rb +9 -8
  135. data/lib/active_admin/orm/active_record.rb +1 -0
  136. data/lib/active_admin/orm/mongoid.rb +1 -0
  137. data/lib/active_admin/page.rb +1 -0
  138. data/lib/active_admin/page_controller.rb +1 -0
  139. data/lib/active_admin/page_dsl.rb +1 -0
  140. data/lib/active_admin/page_presenter.rb +1 -0
  141. data/lib/active_admin/pundit_adapter.rb +55 -13
  142. data/lib/active_admin/resource/action_items.rb +3 -2
  143. data/lib/active_admin/resource/attributes.rb +1 -0
  144. data/lib/active_admin/resource/belongs_to.rb +1 -0
  145. data/lib/active_admin/resource/controllers.rb +1 -0
  146. data/lib/active_admin/resource/includes.rb +1 -0
  147. data/lib/active_admin/resource/menu.rb +1 -0
  148. data/lib/active_admin/resource/model.rb +1 -0
  149. data/lib/active_admin/resource/naming.rb +1 -0
  150. data/lib/active_admin/resource/ordering.rb +1 -0
  151. data/lib/active_admin/resource/page_presenters.rb +1 -0
  152. data/lib/active_admin/resource/pagination.rb +1 -0
  153. data/lib/active_admin/resource/routes.rb +1 -0
  154. data/lib/active_admin/resource/scope_to.rb +1 -0
  155. data/lib/active_admin/resource/scopes.rb +1 -0
  156. data/lib/active_admin/resource/sidebars.rb +1 -0
  157. data/lib/active_admin/resource.rb +3 -2
  158. data/lib/active_admin/resource_collection.rb +1 -0
  159. data/lib/active_admin/resource_controller/action_builder.rb +1 -0
  160. data/lib/active_admin/resource_controller/data_access.rb +30 -4
  161. data/lib/active_admin/resource_controller/decorators.rb +1 -0
  162. data/lib/active_admin/resource_controller/polymorphic_routes.rb +1 -0
  163. data/lib/active_admin/resource_controller/resource_class_methods.rb +1 -0
  164. data/lib/active_admin/resource_controller/scoping.rb +1 -0
  165. data/lib/active_admin/resource_controller/sidebars.rb +1 -0
  166. data/lib/active_admin/resource_controller/streaming.rb +3 -2
  167. data/lib/active_admin/resource_controller.rb +1 -0
  168. data/lib/active_admin/resource_dsl.rb +7 -21
  169. data/lib/active_admin/router.rb +1 -0
  170. data/lib/active_admin/scope.rb +1 -0
  171. data/lib/active_admin/settings_node.rb +1 -0
  172. data/lib/active_admin/sidebar_section.rb +1 -0
  173. data/lib/active_admin/version.rb +2 -1
  174. data/lib/active_admin/view_factory.rb +1 -0
  175. data/lib/active_admin/view_helpers/active_admin_application_helper.rb +1 -0
  176. data/lib/active_admin/view_helpers/auto_link_helper.rb +2 -1
  177. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +1 -0
  178. data/lib/active_admin/view_helpers/display_helper.rb +19 -4
  179. data/lib/active_admin/view_helpers/download_format_links_helper.rb +1 -0
  180. data/lib/active_admin/view_helpers/fields_for.rb +1 -0
  181. data/lib/active_admin/view_helpers/flash_helper.rb +1 -0
  182. data/lib/active_admin/view_helpers/form_helper.rb +1 -0
  183. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +1 -0
  184. data/lib/active_admin/view_helpers/scope_name_helper.rb +1 -0
  185. data/lib/active_admin/view_helpers/sidebar_helper.rb +1 -0
  186. data/lib/active_admin/view_helpers/title_helper.rb +1 -0
  187. data/lib/active_admin/view_helpers/view_factory_helper.rb +1 -0
  188. data/lib/active_admin/view_helpers.rb +1 -0
  189. data/lib/active_admin/views/action_items.rb +1 -0
  190. data/lib/active_admin/views/components/active_admin_form.rb +2 -5
  191. data/lib/active_admin/views/components/active_filters_sidebar_content.rb +59 -0
  192. data/lib/active_admin/views/components/attributes_table.rb +1 -0
  193. data/lib/active_admin/views/components/blank_slate.rb +1 -0
  194. data/lib/active_admin/views/components/columns.rb +1 -0
  195. data/lib/active_admin/views/components/dropdown_menu.rb +3 -5
  196. data/lib/active_admin/views/components/index_list.rb +1 -0
  197. data/lib/active_admin/views/components/menu.rb +1 -0
  198. data/lib/active_admin/views/components/menu_item.rb +1 -0
  199. data/lib/active_admin/views/components/paginated_collection.rb +1 -0
  200. data/lib/active_admin/views/components/panel.rb +1 -0
  201. data/lib/active_admin/views/components/scopes.rb +1 -0
  202. data/lib/active_admin/views/components/sidebar.rb +1 -0
  203. data/lib/active_admin/views/components/sidebar_section.rb +1 -0
  204. data/lib/active_admin/views/components/site_title.rb +1 -0
  205. data/lib/active_admin/views/components/status_tag.rb +1 -0
  206. data/lib/active_admin/views/components/table_for.rb +1 -0
  207. data/lib/active_admin/views/components/tabs.rb +1 -0
  208. data/lib/active_admin/views/components/unsupported_browser.rb +1 -0
  209. data/lib/active_admin/views/footer.rb +1 -0
  210. data/lib/active_admin/views/header.rb +1 -0
  211. data/lib/active_admin/views/index_as_block.rb +1 -0
  212. data/lib/active_admin/views/index_as_blog.rb +1 -0
  213. data/lib/active_admin/views/index_as_grid.rb +1 -0
  214. data/lib/active_admin/views/index_as_table.rb +2 -5
  215. data/lib/active_admin/views/pages/base.rb +8 -4
  216. data/lib/active_admin/views/pages/form.rb +1 -0
  217. data/lib/active_admin/views/pages/index.rb +2 -1
  218. data/lib/active_admin/views/pages/layout.rb +1 -0
  219. data/lib/active_admin/views/pages/page.rb +1 -0
  220. data/lib/active_admin/views/pages/show.rb +2 -7
  221. data/lib/active_admin/views/tabbed_navigation.rb +1 -0
  222. data/lib/active_admin/views/title_bar.rb +1 -0
  223. data/lib/active_admin/views.rb +1 -0
  224. data/lib/active_admin.rb +6 -3
  225. data/lib/activeadmin.rb +1 -0
  226. data/lib/generators/active_admin/assets/assets_generator.rb +1 -0
  227. data/lib/generators/active_admin/devise/devise_generator.rb +1 -0
  228. data/lib/generators/active_admin/install/install_generator.rb +1 -0
  229. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +18 -1
  230. data/lib/generators/active_admin/install/templates/dashboard.rb +1 -0
  231. data/lib/generators/active_admin/page/page_generator.rb +1 -0
  232. data/lib/generators/active_admin/page/templates/page.rb +1 -0
  233. data/lib/generators/active_admin/resource/resource_generator.rb +1 -0
  234. data/lib/generators/active_admin/webpacker/webpacker_generator.rb +1 -0
  235. metadata +26 -83
  236. data/docs/.gitignore +0 -1
  237. data/docs/0-installation.md +0 -142
  238. data/docs/1-general-configuration.md +0 -224
  239. data/docs/10-custom-pages.md +0 -150
  240. data/docs/11-decorators.md +0 -70
  241. data/docs/12-arbre-components.md +0 -214
  242. data/docs/13-authorization-adapter.md +0 -285
  243. data/docs/14-gotchas.md +0 -138
  244. data/docs/2-resource-customization.md +0 -475
  245. data/docs/3-index-pages/custom-index.md +0 -35
  246. data/docs/3-index-pages/index-as-block.md +0 -19
  247. data/docs/3-index-pages/index-as-blog.md +0 -69
  248. data/docs/3-index-pages/index-as-grid.md +0 -27
  249. data/docs/3-index-pages/index-as-table.md +0 -234
  250. data/docs/3-index-pages.md +0 -328
  251. data/docs/4-csv-format.md +0 -74
  252. data/docs/5-forms.md +0 -237
  253. data/docs/6-show-pages.md +0 -93
  254. data/docs/7-sidebars.md +0 -75
  255. data/docs/8-custom-actions.md +0 -177
  256. data/docs/9-batch-actions.md +0 -237
  257. data/docs/CNAME +0 -1
  258. data/docs/Gemfile +0 -3
  259. data/docs/Gemfile.lock +0 -259
  260. data/docs/README.md +0 -24
  261. data/docs/_config.yml +0 -4
  262. data/docs/_includes/footer.html +0 -8
  263. data/docs/_includes/google-analytics.html +0 -16
  264. data/docs/_includes/head.html +0 -7
  265. data/docs/_includes/toc.html +0 -98
  266. data/docs/_includes/top-menu.html +0 -17
  267. data/docs/_layouts/default.html +0 -21
  268. data/docs/documentation.md +0 -60
  269. data/docs/images/activeadmin.png +0 -0
  270. data/docs/images/code-header.png +0 -0
  271. data/docs/images/divider.png +0 -0
  272. data/docs/images/features.png +0 -0
  273. data/docs/images/tidelift.svg +0 -14
  274. data/docs/index.html +0 -226
  275. data/docs/stylesheets/main.css +0 -1205
  276. data/lib/active_admin/deprecation.rb +0 -10
  277. data/lib/ransack_ext.rb +0 -20
  278. /data/app/assets/stylesheets/active_admin/{print.scss → _print.scss} +0 -0
@@ -1,234 +0,0 @@
1
- ---
2
- redirect_from: /docs/3-index-pages/index-as-table.html
3
- ---
4
-
5
- # Index as a Table
6
-
7
- By default, the index page is a table with each of the models content columns and links to
8
- show, edit and delete the object. There are many ways to customize what gets
9
- displayed.
10
-
11
- ## Defining Columns
12
-
13
- To display an attribute or a method on a resource, simply pass a symbol into the
14
- column method:
15
-
16
- ```ruby
17
- index do
18
- selectable_column
19
- column :title
20
- end
21
- ```
22
-
23
- For association columns we make an educated guess on what to display by
24
- calling the following methods in the following order:
25
-
26
- ```ruby
27
- :display_name, :full_name, :name, :username, :login, :title, :email, :to_s
28
- ```
29
-
30
- This can be customized in `config/initializers/active_admin.rb`.
31
-
32
- If the default title does not work for you, pass it as the first argument:
33
-
34
- ```ruby
35
- index do
36
- selectable_column
37
- column "My Custom Title", :title
38
- end
39
- ```
40
-
41
- Sometimes that just isn't enough and you need to write some view-specific code.
42
- For example, say we wanted a "Title" column that links to the posts admin screen.
43
-
44
- `column` accepts a block that will be rendered for each of the objects in the collection.
45
- The block is called once for each resource, which is passed as an argument to the block.
46
-
47
- ```ruby
48
- index do
49
- selectable_column
50
- column "Title" do |post|
51
- link_to post.title, admin_post_path(post)
52
- end
53
- end
54
- ```
55
-
56
- ## Defining Actions
57
-
58
- To setup links to View, Edit and Delete a resource, use the `actions` method:
59
-
60
- ```ruby
61
- index do
62
- selectable_column
63
- column :title
64
- actions
65
- end
66
- ```
67
-
68
- You can also append custom links to the default links:
69
-
70
- ```ruby
71
- index do
72
- selectable_column
73
- column :title
74
- actions do |post|
75
- item "Preview", admin_preview_post_path(post), class: "member_link"
76
- end
77
- end
78
- ```
79
-
80
- Or forego the default links entirely:
81
-
82
- ```ruby
83
- index do
84
- column :title
85
- actions defaults: false do |post|
86
- item "View", admin_post_path(post)
87
- end
88
- end
89
- ```
90
-
91
- Or append custom action with custom html via arbre:
92
-
93
- ```ruby
94
- index do
95
- column :title
96
- actions do |post|
97
- a "View", href: admin_post_path(post)
98
- end
99
- end
100
- ```
101
-
102
- In case you prefer to list actions links in a dropdown menu:
103
-
104
- ```ruby
105
- index do
106
- selectable_column
107
- column :title
108
- actions dropdown: true do |post|
109
- item "Preview", admin_preview_post_path(post)
110
- end
111
- end
112
- ```
113
-
114
- In addition, you can insert the position of the row in the greater
115
- collection by using the index_column special command:
116
-
117
- ```ruby
118
- index do
119
- selectable_column
120
- index_column
121
- column :title
122
- end
123
- ```
124
-
125
- index_column take an optional offset parameter to allow a developer to set
126
- the starting number for the index (default is 1).
127
-
128
- ## Sorting
129
-
130
- When a column is generated from an Active Record attribute, the table is
131
- sortable by default. If you are creating a custom column, you may need to give
132
- Active Admin a hint for how to sort the table.
133
-
134
- You can pass the key specifying the attribute which gets used to sort objects using Active Record.
135
- By default, this is the column on the resource's table that the attribute corresponds to.
136
- Otherwise, any attribute that the resource collection responds to can be used.
137
-
138
- ```ruby
139
- index do
140
- column :title, sortable: :title do |post|
141
- link_to post.title, admin_post_path(post)
142
- end
143
- end
144
- ```
145
-
146
- You can turn off sorting on any column by passing false:
147
-
148
- ```ruby
149
- index do
150
- column :title, sortable: false
151
- end
152
- ```
153
-
154
- It's also possible to sort by PostgreSQL's hstore column key. You should set `sortable`
155
- option to a `column->'key'` value:
156
-
157
- ```ruby
158
- index do
159
- column :keywords, sortable: "meta->'keywords'"
160
- end
161
- ```
162
-
163
- ## Custom sorting
164
-
165
- It is also possible to use database specific expressions and options for sorting by column
166
-
167
- ```ruby
168
- order_by(:title) do |order_clause|
169
- if order_clause.order == 'desc'
170
- [order_clause.to_sql, 'NULLS LAST'].join(' ')
171
- else
172
- [order_clause.to_sql, 'NULLS FIRST'].join(' ')
173
- end
174
- end
175
-
176
- index do
177
- column :title
178
- end
179
- ```
180
-
181
- ## Associated Sorting
182
-
183
- You're normally able to sort columns alphabetically, but by default you
184
- can't sort by associated objects. Though with a few simple changes, you can.
185
-
186
- Assuming you're on the Books index page, and Book has_one Publisher:
187
-
188
- ```ruby
189
- controller do
190
- def scoped_collection
191
- super.includes :publisher # prevents N+1 queries to your database
192
- end
193
- end
194
- ```
195
-
196
- You can also define associated objects to include outside of the
197
- `scoped_collection` method:
198
-
199
- ```ruby
200
- includes :publisher
201
- ```
202
-
203
- Then it's simple to sort by any Publisher attribute from within the index table:
204
-
205
- ```ruby
206
- index do
207
- column :publisher, sortable: 'publishers.name'
208
- end
209
- ```
210
-
211
- ## Showing and Hiding Columns
212
-
213
- The entire index block is rendered within the context of the view, so you can
214
- easily do things that show or hide columns based on the current context.
215
-
216
- For example, if you were using CanCan:
217
-
218
- ```ruby
219
- index do
220
- column :title, sortable: false
221
- column :secret_data if can? :manage, Post
222
- end
223
- ```
224
-
225
- ## Custom row class
226
-
227
- In order to add special class to table rows pass the proc object as a `:row_class` option
228
- of the `index` method.
229
-
230
- ```ruby
231
- index row_class: ->elem { 'active' if elem.active? } do
232
- # columns
233
- end
234
- ```
@@ -1,328 +0,0 @@
1
- ---
2
- redirect_from: /docs/3-index-pages.html
3
- ---
4
-
5
- # Customizing the Index Page
6
-
7
- Filtering and listing resources is one of the most important tasks for
8
- administering a web application. Active Admin provides many different tools for
9
- you to build a compelling interface into your data for the admin staff.
10
-
11
- Built in, Active Admin has the following index renderers:
12
-
13
- * *Table*: A table drawn with each row being a resource ([View Table Docs](3-index-pages/index-as-table.md))
14
- * *Grid*: A set of rows and columns each cell being a resource ([View Grid Docs](3-index-pages/index-as-grid.md))
15
- * *Blocks*: A set of rows (not tabular) each row being a resource ([View Blocks Docs](3-index-pages/index-as-block.md))
16
- * *Blog*: A title and body content, similar to a blog index ([View Blog Docs](3-index-pages/index-as-blog.md))
17
-
18
- All index pages also support scopes, filters, pagination, action items, and
19
- sidebar sections.
20
-
21
- ## Multiple Index Pages
22
-
23
- Sometime you may want more than one index page for a resource to represent
24
- different views to the user. If multiple index pages exist, Active Admin will
25
- automatically build links at the top of the default index page. Including
26
- multiple views is simple and requires creating multiple index components in
27
- your resource.
28
-
29
- ```ruby
30
- index do
31
- id_column
32
- column :image_title
33
- actions
34
- end
35
-
36
- index as: :grid do |product|
37
- link_to image_tag(product.image_path), admin_product_path(product)
38
- end
39
- ```
40
-
41
- The first index component will be the default index page unless you indicate
42
- otherwise by setting `:default` to true.
43
-
44
- ```ruby
45
- index do
46
- column :image_title
47
- actions
48
- end
49
-
50
- index as: :grid, default: true do |product|
51
- link_to image_tag(product.image_path), admin_product_path(product)
52
- end
53
- ```
54
-
55
- ## Custom Index
56
-
57
- Active Admin does not limit the index page to be a table, block, blog or grid.
58
- If you've created your own [custom index](3-index-pages/custom-index.md) page it
59
- can be included by setting `:as` to the class of the index component you created.
60
-
61
- ```ruby
62
- index as: ActiveAdmin::Views::IndexAsMyIdea do
63
- column :image_title
64
- actions
65
- end
66
- ```
67
-
68
- ## Index Filters
69
-
70
- By default the index screen includes a "Filters" sidebar on the right hand side
71
- with a filter for each attribute of the registered model. You can customize the
72
- filters that are displayed as well as the type of widgets they use.
73
-
74
- To display a filter for an attribute, use the `filter` method
75
-
76
- ```ruby
77
- ActiveAdmin.register Post do
78
- filter :title
79
- end
80
- ```
81
-
82
- Out of the box, Active Admin supports the following filter types:
83
-
84
- * *:string* - A drop down for selecting "Contains", "Equals", "Starts with",
85
- "Ends with" and an input for a value.
86
- * *:date_range* - A start and end date field with calendar inputs
87
- * *:numeric* - A drop down for selecting "Equal To", "Greater Than" or "Less
88
- Than" and an input for a value.
89
- * *:select* - A drop down which filters based on a selected item in a collection
90
- or all.
91
- * *:check_boxes* - A list of check boxes users can turn on and off to filter
92
-
93
- By default, Active Admin will pick the most relevant filter based on the
94
- attribute type. You can force the type by passing the `:as` option.
95
-
96
- ```ruby
97
- filter :author, as: :check_boxes
98
- ```
99
-
100
- The `:check_boxes` and `:select` types accept options for the collection. By default
101
- it attempts to create a collection based on an association. But you can pass in
102
- the collection as a proc to be called at render time.
103
-
104
- ```ruby
105
- filter :author, as: :check_boxes, collection: proc { Author.all }
106
- ```
107
-
108
- To override options for string or numeric filter pass `filters` option.
109
-
110
- ```ruby
111
- filter :title, filters: [:starts_with, :ends_with]
112
- ```
113
-
114
- Also, if you don't need the select with the options 'contains', 'equals',
115
- 'starts_with' or 'ends_with' just add the option to the filter name with an
116
- underscore.
117
-
118
- For example:
119
-
120
- ```ruby
121
- filter :name_equals
122
- # or
123
- filter :name_contains
124
- ```
125
-
126
- You can change the filter label by passing a label option:
127
-
128
- ```ruby
129
- filter :author, label: 'Something else'
130
- ```
131
-
132
- By default, Active Admin will try to use ActiveModel I18n to determine the label.
133
-
134
- You can also filter on more than one attribute of a model using the [Ransack
135
- search predicate
136
- syntax](https://github.com/activerecord-hackery/ransack/wiki/Basic-Searching).
137
- If using a custom search method, you will also need to specify the field type
138
- using `:as` and the label.
139
-
140
- ```ruby
141
- filter :first_name_or_last_name_cont, as: :string, label: "Name"
142
- ```
143
-
144
- Filters can also be disabled for a resource, a namespace or the entire
145
- application.
146
-
147
- To disable for a specific resource:
148
-
149
- ```ruby
150
- ActiveAdmin.register Post do
151
- config.filters = false
152
- end
153
- ```
154
-
155
- To disable for a namespace, in the initializer:
156
-
157
- ```ruby
158
- ActiveAdmin.setup do |config|
159
- config.namespace :my_namespace do |my_namespace|
160
- my_namespace.filters = false
161
- end
162
- end
163
- ```
164
-
165
- Or to disable for the entire application:
166
-
167
- ```ruby
168
- ActiveAdmin.setup do |config|
169
- config.filters = false
170
- end
171
- ```
172
-
173
- You can also add a filter and still preserve the default filters:
174
-
175
- ```ruby
176
- preserve_default_filters!
177
- filter :author
178
- ```
179
-
180
- Or you can also remove a filter and still preserve the default filters:
181
-
182
- ```ruby
183
- preserve_default_filters!
184
- remove_filter :id
185
- ```
186
-
187
- ## Index Scopes
188
-
189
- You can define custom scopes for your index page. This will add a tab bar above
190
- the index table to quickly filter your collection on pre-defined scopes. There
191
- are a number of ways to define your scopes:
192
-
193
- ```ruby
194
- scope :all, default: true
195
-
196
- # assumes the model has a scope called ':active'
197
- scope :active
198
-
199
- # renames model scope ':leaves' to ':subcategories'
200
- scope "Subcategories", :leaves
201
-
202
- # Dynamic scope name
203
- scope ->{ Date.today.strftime '%A' }, :published_today
204
-
205
- # custom scope not defined on the model
206
- scope("Inactive") { |scope| scope.where(active: false) }
207
-
208
- # conditionally show a custom controller scope
209
- scope "Published", if: -> { current_admin_user.can? :manage, Posts } do |posts|
210
- posts.published
211
- end
212
- ```
213
-
214
- Scopes can be labelled with a translation, e.g.
215
- `active_admin.scopes.scope_method`.
216
-
217
- ### Scopes groups
218
-
219
- You can assign group names to scopes to keep related scopes together and separate them from the rest.
220
-
221
- ```ruby
222
- # a scope in the default group
223
- scope :all
224
-
225
- # two scopes used to filter by status
226
- scope :active, group: :status
227
- scope :inactive, group: :status
228
-
229
- # two scopes used to filter by date
230
- scope :today, group: :date
231
- scope :tomorrow, group: :date
232
- ```
233
-
234
- ## Index default sort order
235
-
236
- You can define the default sort order for index pages:
237
-
238
- ```ruby
239
- ActiveAdmin.register Post do
240
- config.sort_order = 'name_asc'
241
- end
242
- ```
243
-
244
- ## Index pagination
245
-
246
- You can set the number of records per page as default:
247
-
248
- ```ruby
249
- ActiveAdmin.setup do |config|
250
- config.default_per_page = 30
251
- end
252
- ```
253
-
254
- You can set the number of records per page per resources:
255
-
256
- ```ruby
257
- ActiveAdmin.register Post do
258
- config.per_page = 10
259
- end
260
- ```
261
-
262
- Or allow users to choose themselves using dropdown with values
263
-
264
- ```ruby
265
- ActiveAdmin.register Post do
266
- config.per_page = [10, 50, 100]
267
- end
268
- ```
269
-
270
- You can change it per request / action too:
271
-
272
- ```ruby
273
- controller do
274
- before_action only: :index do
275
- @per_page = 100
276
- end
277
- end
278
- ```
279
-
280
- You can also disable pagination:
281
-
282
- ```ruby
283
- ActiveAdmin.register Post do
284
- config.paginate = false
285
- end
286
- ```
287
-
288
- If you have a very large database, you might want to disable `SELECT COUNT(*)`
289
- queries caused by the pagination info at the bottom of the page:
290
-
291
- ```ruby
292
- ActiveAdmin.register Post do
293
- index pagination_total: false do
294
- # ...
295
- end
296
- end
297
- ```
298
-
299
- ## Customizing Download Links
300
-
301
- You can easily remove or customize the download links you want displayed:
302
-
303
- ```ruby
304
- # Per resource:
305
- ActiveAdmin.register Post do
306
-
307
- index download_links: false
308
- index download_links: [:pdf]
309
- index download_links: proc{ current_user.can_view_download_links? }
310
-
311
- end
312
-
313
- # For the entire application:
314
- ActiveAdmin.setup do |config|
315
-
316
- config.download_links = false
317
- config.download_links = [:csv, :xml, :json, :pdf]
318
- config.download_links = proc { current_user.can_view_download_links? }
319
-
320
- end
321
- ```
322
-
323
- Note: you have to actually implement PDF rendering for your action, ActiveAdmin
324
- does not provide this feature. This setting just allows you to specify formats
325
- that you want to show up under the index collection.
326
-
327
- You'll need to use a PDF rendering library like PDFKit or WickedPDF to get the
328
- PDF generation you want.
data/docs/4-csv-format.md DELETED
@@ -1,74 +0,0 @@
1
- ---
2
- redirect_from: /docs/4-csv-format.html
3
- ---
4
-
5
- # Customizing the CSV format
6
-
7
- Active Admin provides CSV file downloads on the index screen for each Resource.
8
- By default it will render a CSV file with all the content columns of your
9
- registered model.
10
-
11
- Customizing the CSV format is as simple as customizing the index page.
12
-
13
- ```ruby
14
- ActiveAdmin.register Post do
15
- csv do
16
- column :title
17
- column(:author) { |post| post.author.full_name }
18
- column('bODY', humanize_name: false) # preserve case
19
- end
20
- end
21
- ```
22
-
23
- You can also set custom CSV settings for an individual resource:
24
-
25
- ```ruby
26
- ActiveAdmin.register Post do
27
- csv force_quotes: true, col_sep: ';', column_names: false do
28
- column :title
29
- column(:author) { |post| post.author.full_name }
30
- end
31
- end
32
- ```
33
-
34
- Or system-wide:
35
-
36
- ```ruby
37
- # config/initializers/active_admin.rb
38
-
39
- # Set the CSV builder separator
40
- config.csv_options = { col_sep: ';' }
41
-
42
- # Force the use of quotes
43
- config.csv_options = { force_quotes: true }
44
- ```
45
-
46
- You can customize the filename by overriding `csv_filename` in the controller block.
47
-
48
- ```ruby
49
- ActiveAdmin.register User do
50
- controller do
51
- def csv_filename
52
- 'User Details.csv'
53
- end
54
- end
55
- end
56
- ```
57
-
58
- ## Streaming
59
-
60
- By default Active Admin streams the CSV response to your browser as it's generated.
61
- This is good because it prevents request timeouts, for example the infamous H12
62
- error on Heroku.
63
-
64
- However if an exception occurs while generating the CSV, the request will eventually
65
- time out, with the last line containing the exception message. CSV streaming is
66
- disabled in development to help debug these exceptions. That lets you use tools like
67
- better_errors and web-console to debug the issue. If you want to customize the
68
- environments where CSV streaming is disabled, you can change this setting:
69
-
70
- ```ruby
71
- # config/initializers/active_admin.rb
72
-
73
- config.disable_streaming_in = ['development', 'staging']
74
- ```