activeadmin 2.13.1 → 2.14.0

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 (68) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +58 -0
  3. data/CONTRIBUTING.md +3 -4
  4. data/README.md +2 -2
  5. data/app/assets/javascripts/active_admin/base.js +1 -4
  6. data/app/assets/stylesheets/active_admin/_forms.scss +1 -1
  7. data/app/assets/stylesheets/active_admin/structure/_footer.scss +6 -1
  8. data/app/views/layouts/active_admin_logged_out.html.erb +5 -4
  9. data/config/locales/fr.yml +3 -3
  10. data/config/locales/vi.yml +34 -7
  11. data/config/locales/zh-CN.yml +36 -17
  12. data/lib/active_admin/asset_registration.rb +3 -3
  13. data/lib/active_admin/authorization_adapter.rb +2 -0
  14. data/lib/active_admin/base_controller/authorization.rb +2 -2
  15. data/lib/active_admin/dependency.rb +0 -4
  16. data/lib/active_admin/engine.rb +1 -1
  17. data/lib/active_admin/filters/resource_extension.rb +4 -4
  18. data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +1 -1
  19. data/lib/active_admin/orm/active_record/comments.rb +8 -8
  20. data/lib/active_admin/pundit_adapter.rb +0 -2
  21. data/lib/active_admin/resource/action_items.rb +2 -2
  22. data/lib/active_admin/version.rb +1 -1
  23. data/lib/active_admin/view_helpers/auto_link_helper.rb +1 -1
  24. data/lib/active_admin/views/index_as_table.rb +1 -1
  25. data/lib/active_admin/views/pages/base.rb +4 -3
  26. data/lib/active_admin/views/pages/index.rb +1 -1
  27. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +17 -0
  28. metadata +5 -44
  29. data/docs/.gitignore +0 -1
  30. data/docs/0-installation.md +0 -142
  31. data/docs/1-general-configuration.md +0 -224
  32. data/docs/10-custom-pages.md +0 -150
  33. data/docs/11-decorators.md +0 -70
  34. data/docs/12-arbre-components.md +0 -214
  35. data/docs/13-authorization-adapter.md +0 -285
  36. data/docs/14-gotchas.md +0 -138
  37. data/docs/2-resource-customization.md +0 -475
  38. data/docs/3-index-pages/custom-index.md +0 -35
  39. data/docs/3-index-pages/index-as-block.md +0 -19
  40. data/docs/3-index-pages/index-as-blog.md +0 -69
  41. data/docs/3-index-pages/index-as-grid.md +0 -27
  42. data/docs/3-index-pages/index-as-table.md +0 -234
  43. data/docs/3-index-pages.md +0 -328
  44. data/docs/4-csv-format.md +0 -74
  45. data/docs/5-forms.md +0 -238
  46. data/docs/6-show-pages.md +0 -93
  47. data/docs/7-sidebars.md +0 -75
  48. data/docs/8-custom-actions.md +0 -177
  49. data/docs/9-batch-actions.md +0 -237
  50. data/docs/CNAME +0 -1
  51. data/docs/Gemfile +0 -4
  52. data/docs/Gemfile.lock +0 -283
  53. data/docs/README.md +0 -24
  54. data/docs/_config.yml +0 -4
  55. data/docs/_includes/footer.html +0 -8
  56. data/docs/_includes/google-analytics.html +0 -16
  57. data/docs/_includes/head.html +0 -7
  58. data/docs/_includes/toc.html +0 -98
  59. data/docs/_includes/top-menu.html +0 -17
  60. data/docs/_layouts/default.html +0 -21
  61. data/docs/documentation.md +0 -60
  62. data/docs/images/activeadmin.png +0 -0
  63. data/docs/images/code-header.png +0 -0
  64. data/docs/images/divider.png +0 -0
  65. data/docs/images/features.png +0 -0
  66. data/docs/images/tidelift.svg +0 -14
  67. data/docs/index.html +0 -226
  68. data/docs/stylesheets/main.css +0 -1205
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module ActiveAdmin
3
- VERSION = "2.13.1"
3
+ VERSION = "2.14.0"
4
4
  end
@@ -29,7 +29,7 @@ module ActiveAdmin
29
29
  authorized?(ActiveAdmin::Auth::READ, resource)
30
30
  url_for config.route_instance_path resource, url_options
31
31
  elsif config.controller.action_methods.include?("edit") &&
32
- authorized?(ActiveAdmin::Auth::UPDATE, resource)
32
+ authorized?(ActiveAdmin::Auth::EDIT, resource)
33
33
  url_for config.route_edit_instance_path resource, url_options
34
34
  end
35
35
  end
@@ -377,7 +377,7 @@ module ActiveAdmin
377
377
  if controller.action_methods.include?("show") && authorized?(ActiveAdmin::Auth::READ, resource)
378
378
  item localizer.t(:view), resource_path(resource), class: "view_link #{options[:css_class]}", title: localizer.t(:view)
379
379
  end
380
- if controller.action_methods.include?("edit") && authorized?(ActiveAdmin::Auth::UPDATE, resource)
380
+ if controller.action_methods.include?("edit") && authorized?(ActiveAdmin::Auth::EDIT, resource)
381
381
  item localizer.t(:edit), edit_resource_path(resource), class: "edit_link #{options[:css_class]}", title: localizer.t(:edit)
382
382
  end
383
383
  if controller.action_methods.include?("destroy") && authorized?(ActiveAdmin::Auth::DESTROY, resource)
@@ -38,8 +38,8 @@ module ActiveAdmin
38
38
  text_node(meta(name: name, content: content))
39
39
  end
40
40
 
41
- active_admin_application.javascripts.each do |path|
42
- javascript_tag = active_admin_namespace.use_webpacker ? javascript_pack_tag(path) : javascript_include_tag(path)
41
+ active_admin_application.javascripts.each do |path, options|
42
+ javascript_tag = active_admin_namespace.use_webpacker ? javascript_pack_tag(path, **options) : javascript_include_tag(path, **options)
43
43
  text_node(javascript_tag)
44
44
  end
45
45
 
@@ -49,7 +49,8 @@ module ActiveAdmin
49
49
  text_node(favicon_tag)
50
50
  end
51
51
 
52
- text_node csrf_meta_tag
52
+ text_node csrf_meta_tags
53
+ text_node csp_meta_tag
53
54
  end
54
55
  end
55
56
 
@@ -112,7 +112,7 @@ module ActiveAdmin
112
112
 
113
113
  def render_blank_slate
114
114
  blank_slate_content = I18n.t("active_admin.blank_slate.content", resource_name: active_admin_config.plural_resource_label)
115
- if controller.action_methods.include?("new") && authorized?(ActiveAdmin::Auth::CREATE, active_admin_config.resource_class)
115
+ if controller.action_methods.include?("new") && authorized?(ActiveAdmin::Auth::NEW, active_admin_config.resource_class)
116
116
  blank_slate_content = [blank_slate_content, blank_slate_link].compact.join(" ")
117
117
  end
118
118
  insert_tag(view_factory.blank_slate, blank_slate_content)
@@ -18,6 +18,23 @@ ActiveAdmin.setup do |config|
18
18
  #
19
19
  # config.site_title_image = "logo.png"
20
20
 
21
+ # == Load Paths
22
+ #
23
+ # By default Active Admin files go inside app/admin/.
24
+ # You can change this directory.
25
+ #
26
+ # eg:
27
+ # config.load_paths = [File.join(Rails.root, 'app', 'ui')]
28
+ #
29
+ # Or, you can also load more directories.
30
+ # Useful when setting namespaces with users that are not your main AdminUser entity.
31
+ #
32
+ # eg:
33
+ # config.load_paths = [
34
+ # File.join(Rails.root, 'app', 'admin'),
35
+ # File.join(Rails.root, 'app', 'cashier')
36
+ # ]
37
+
21
38
  # == Default Namespace
22
39
  #
23
40
  # Set the default namespace each administration resource
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activeadmin
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.13.1
4
+ version: 2.14.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Charles Maresh
@@ -15,7 +15,7 @@ authors:
15
15
  autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
- date: 2022-05-20 00:00:00.000000000 Z
18
+ date: 2023-06-22 00:00:00.000000000 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: arbre
@@ -309,46 +309,6 @@ files:
309
309
  - config/locales/vi.yml
310
310
  - config/locales/zh-CN.yml
311
311
  - config/locales/zh-TW.yml
312
- - docs/.gitignore
313
- - docs/0-installation.md
314
- - docs/1-general-configuration.md
315
- - docs/10-custom-pages.md
316
- - docs/11-decorators.md
317
- - docs/12-arbre-components.md
318
- - docs/13-authorization-adapter.md
319
- - docs/14-gotchas.md
320
- - docs/2-resource-customization.md
321
- - docs/3-index-pages.md
322
- - docs/3-index-pages/custom-index.md
323
- - docs/3-index-pages/index-as-block.md
324
- - docs/3-index-pages/index-as-blog.md
325
- - docs/3-index-pages/index-as-grid.md
326
- - docs/3-index-pages/index-as-table.md
327
- - docs/4-csv-format.md
328
- - docs/5-forms.md
329
- - docs/6-show-pages.md
330
- - docs/7-sidebars.md
331
- - docs/8-custom-actions.md
332
- - docs/9-batch-actions.md
333
- - docs/CNAME
334
- - docs/Gemfile
335
- - docs/Gemfile.lock
336
- - docs/README.md
337
- - docs/_config.yml
338
- - docs/_includes/footer.html
339
- - docs/_includes/google-analytics.html
340
- - docs/_includes/head.html
341
- - docs/_includes/toc.html
342
- - docs/_includes/top-menu.html
343
- - docs/_layouts/default.html
344
- - docs/documentation.md
345
- - docs/images/activeadmin.png
346
- - docs/images/code-header.png
347
- - docs/images/divider.png
348
- - docs/images/features.png
349
- - docs/images/tidelift.svg
350
- - docs/index.html
351
- - docs/stylesheets/main.css
352
312
  - lib/active_admin.rb
353
313
  - lib/active_admin/abstract_view_factory.rb
354
314
  - lib/active_admin/application.rb
@@ -562,7 +522,8 @@ files:
562
522
  homepage: https://activeadmin.info
563
523
  licenses:
564
524
  - MIT
565
- metadata: {}
525
+ metadata:
526
+ rubygems_mfa_required: 'true'
566
527
  post_install_message:
567
528
  rdoc_options: []
568
529
  require_paths:
@@ -578,7 +539,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
578
539
  - !ruby/object:Gem::Version
579
540
  version: '0'
580
541
  requirements: []
581
- rubygems_version: 3.3.7
542
+ rubygems_version: 3.4.13
582
543
  signing_key:
583
544
  specification_version: 4
584
545
  summary: Active Admin is a Ruby on Rails plugin for generating administration style
data/docs/.gitignore DELETED
@@ -1 +0,0 @@
1
- _site/
@@ -1,142 +0,0 @@
1
- ---
2
- redirect_from: /docs/0-installation.html
3
- ---
4
-
5
- # Installation
6
-
7
- Active Admin is a Ruby Gem.
8
-
9
- ```ruby
10
- gem 'activeadmin'
11
-
12
- # Plus integrations with:
13
- gem 'devise'
14
- gem 'cancancan'
15
- gem 'draper'
16
- gem 'pundit'
17
- ```
18
-
19
- More accurately, it's a [Rails Engine](http://guides.rubyonrails.org/engines.html)
20
- that can be injected into your existing Ruby on Rails application.
21
-
22
- ## Setting up Active Admin
23
-
24
- After installing the gem, you need to run the generator. Here are your options:
25
-
26
- * If you don't want to use Devise, run it with `--skip-users`:
27
-
28
- ```sh
29
- rails g active_admin:install --skip-users
30
- ```
31
-
32
- * If you want to customize the name of the generated user class, or if you want to use an existing user class, provide the class name as an argument:
33
-
34
- ```sh
35
- rails g active_admin:install User
36
- ```
37
-
38
- * Otherwise, with no arguments we will create an `AdminUser` class to use with Devise:
39
-
40
- ```sh
41
- rails g active_admin:install
42
- ```
43
-
44
- The generator adds these core files, among others:
45
-
46
- * `app/admin/dashboard.rb`
47
- * `app/assets/javascripts/active_admin.js`
48
- * `app/assets/stylesheets/active_admin.scss`
49
- * `config/initializers/active_admin.rb`
50
-
51
- Now, migrate and seed your database before starting the server:
52
-
53
- ```sh
54
- rails db:migrate
55
- rails db:seed
56
- rails server
57
- ```
58
-
59
- Visit `http://localhost:3000/admin` and log in as the default user:
60
-
61
- * __User__: admin@example.com
62
- * __Password__: password
63
-
64
- Voila! You're on your brand new Active Admin dashboard.
65
-
66
- To register an existing model with Active Admin:
67
-
68
- ```sh
69
- rails generate active_admin:resource MyModel
70
- ```
71
-
72
- This creates a file at `app/admin/my_model.rb` to set up the UI; refresh your
73
- browser to see it.
74
-
75
- # Upgrading
76
-
77
- When upgrading to a new version, it's a good idea to check the [CHANGELOG].
78
-
79
- To update the JS & CSS assets:
80
-
81
- ```sh
82
- rails generate active_admin:assets
83
- ```
84
-
85
- You should also sync these files with their counterparts in the AA source code:
86
-
87
- * app/admin/dashboard.rb [~>][dashboard.rb]
88
- * config/initializers/active_admin.rb [~>][active_admin.rb]
89
-
90
- # Gem compatibility
91
-
92
- ## will_paginate
93
-
94
- If you use `will_paginate` in your app, you need to configure an initializer for
95
- Kaminari to avoid conflicts.
96
-
97
- ```ruby
98
- # config/initializers/kaminari.rb
99
- Kaminari.configure do |config|
100
- config.page_method_name = :per_page_kaminari
101
- end
102
- ```
103
-
104
- If you are also using [Draper](https://github.com/drapergem/draper), you may
105
- want to make sure `per_page_kaminari` is delegated correctly:
106
-
107
- ```ruby
108
- Draper::CollectionDecorator.send :delegate, :per_page_kaminari
109
- ```
110
-
111
- ## simple_form
112
-
113
- If you're getting the error `wrong number of arguments (6 for 4..5)`, [read #2703].
114
-
115
- ## webpacker
116
-
117
- You can **opt-in to using Webpacker for ActiveAdmin assets** as well by updating your configuration to turn on the `use_webpacker` option, either at installation time or manually.
118
-
119
- * at active_admin installation:
120
-
121
- ```sh
122
- rails g active_admin:install --use_webpacker
123
- ```
124
-
125
- * manually:
126
-
127
- ```ruby
128
- ActiveAdmin.setup do |config|
129
- config.use_webpacker = true
130
- end
131
- ```
132
-
133
- And run the generator to get default Active Admin assets:
134
-
135
- ```sh
136
- rails g active_admin:webpacker
137
- ```
138
-
139
- [CHANGELOG]: https://github.com/activeadmin/activeadmin/blob/master/CHANGELOG.md
140
- [dashboard.rb]: https://github.com/activeadmin/activeadmin/blob/master/lib/generators/active_admin/install/templates/dashboard.rb
141
- [active_admin.rb]: https://github.com/activeadmin/activeadmin/blob/master/lib/generators/active_admin/install/templates/active_admin.rb.erb
142
- [read #2703]: https://github.com/activeadmin/activeadmin/issues/2703#issuecomment-38140864
@@ -1,224 +0,0 @@
1
- ---
2
- redirect_from: /docs/1-general-configuration.html
3
- ---
4
-
5
- # General Configuration
6
-
7
- You can configure Active Admin settings in `config/initializers/active_admin.rb`.
8
- Here are a few common configurations:
9
-
10
- ## Authentication
11
-
12
- Active Admin requires two settings to authenticate and use the current user
13
- within your application.
14
-
15
- + the method controllers used to force authentication
16
-
17
- ```ruby
18
- config.authentication_method = :authenticate_admin_user!
19
- ```
20
-
21
- + the method used to access the current user
22
-
23
- ```ruby
24
- config.current_user_method = :current_admin_user
25
- ```
26
-
27
- Both of these settings can be set to false to turn off authentication.
28
-
29
- ```ruby
30
- config.authentication_method = false
31
- config.current_user_method = false
32
- ```
33
-
34
- ## Site Title Options
35
-
36
- Every page has what's called the site title on the left side of the menu bar.
37
- If you want, you can customize it.
38
-
39
- ```ruby
40
- config.site_title = "My Admin Site"
41
- config.site_title_link = "/"
42
- config.site_title_image = "site_image.png"
43
- config.site_title_image = "http://www.google.com/images/logos/google_logo_41.png"
44
- config.site_title_image = ->(context) { context.current_user.company.logo_url }
45
- ```
46
-
47
- ## Internationalization (I18n)
48
-
49
- Active Admin comes with translations for a lot of
50
- [locales](https://github.com/activeadmin/activeadmin/blob/master/config/locales/).
51
- Active Admin does not provide the translations for the kaminari gem it uses for pagination,
52
- to get these you can use the
53
- [kaminari-i18n](https://github.com/tigrish/kaminari-i18n) gem.
54
-
55
- To translate Active Admin to a new language or customize an existing
56
- translation, you can copy
57
- [config/locales/en.yml](https://github.com/activeadmin/activeadmin/blob/master/config/locales/en.yml)
58
- to your application's `config/locales` folder and update it. We welcome
59
- new/updated translations, so feel free to
60
- [contribute](https://github.com/activeadmin/activeadmin/blob/master/CONTRIBUTING.md)!
61
-
62
- When using [devise](https://github.com/plataformatec/devise) for authentication,
63
- you can use the [devise-i18n](https://github.com/tigrish/devise-i18n)
64
- gem to get the devise translations for other locales.
65
-
66
- ## Localize Format For Dates and Times
67
-
68
- Active Admin sets `:long` as default localize format for dates and times.
69
- If you want, you can customize it.
70
-
71
- ```ruby
72
- config.localize_format = :short
73
- ```
74
-
75
- ## Namespaces
76
-
77
- When registering resources in Active Admin, they are loaded into a namespace.
78
- The default namespace is "admin".
79
-
80
- ```ruby
81
- # app/admin/posts.rb
82
- ActiveAdmin.register Post do
83
- # ...
84
- end
85
- ```
86
-
87
- The Post resource will be loaded into the "admin" namespace and will be
88
- available at `/admin/posts`. Each namespace holds on to its own settings that
89
- inherit from the application's configuration.
90
-
91
- For example, if you have two namespaces (`:admin` and `:super_admin`) and want to
92
- have different site title's for each, you can use the `config.namespace(name)`
93
- block within the initializer file to configure them individually.
94
-
95
- ```ruby
96
- ActiveAdmin.setup do |config|
97
- config.site_title = "My Default Site Title"
98
-
99
- config.namespace :admin do |admin|
100
- admin.site_title = "Admin Site"
101
- end
102
-
103
- config.namespace :super_admin do |super_admin|
104
- super_admin.site_title = "Super Admin Site"
105
- end
106
- end
107
- ```
108
-
109
- If you are creating a multi-tenant application you may want to have multiple namespaces mounted to the same path. We can do this using the `route_options` settings on the namespace
110
-
111
- ```ruby
112
- config.namespace :site_1 do |admin|
113
- admin.route_options = { path: :admin, constraints: ->(request){ request.domain == "site1.com" } }
114
- end
115
-
116
- config.namespace :site_2 do |admin|
117
- admin.route_options = { path: :admin, constraints: ->(request){ request.domain == "site2.com" } }
118
- end
119
- ```
120
-
121
- If you would like to mount the namespace to a subdomain instead of path we can use the `route_options` for this as well
122
-
123
- ```ruby
124
- config.namespace :admin do |admin|
125
- admin.route_options = { path: '', subdomain: 'admin' }
126
- end
127
- ```
128
-
129
- Each setting available in the Active Admin setup block is configurable on a per
130
- namespace basis.
131
-
132
- ## Load paths
133
-
134
- By default Active Admin files go inside `app/admin/`. You can change this
135
- directory in the initializer file:
136
-
137
- ```ruby
138
- ActiveAdmin.setup do |config|
139
- config.load_paths = [File.join(Rails.root, "app", "ui")]
140
- end
141
- ```
142
-
143
- ## Comments
144
-
145
- By default Active Admin includes comments on resources. Sometimes, this is
146
- undesired. To disable comments:
147
-
148
- ```ruby
149
- # For the entire application:
150
- ActiveAdmin.setup do |config|
151
- config.comments = false
152
- end
153
-
154
- # For a namespace:
155
- ActiveAdmin.setup do |config|
156
- config.namespace :admin do |admin|
157
- admin.comments = false
158
- end
159
- end
160
-
161
- # For a given resource:
162
- ActiveAdmin.register Post do
163
- config.comments = false
164
- end
165
- ```
166
-
167
- You can change the name under which comments are registered:
168
-
169
- ```ruby
170
- config.comments_registration_name = 'AdminComment'
171
- ```
172
-
173
- You can change the order for the comments and you can change the column to be
174
- used for ordering:
175
-
176
- ```ruby
177
- config.comments_order = 'created_at ASC'
178
- ```
179
-
180
- You can disable the menu item for the comments index page:
181
-
182
- ```ruby
183
- config.comments_menu = false
184
- ```
185
-
186
- You can customize the comment menu:
187
-
188
- ```ruby
189
- config.comments_menu = { parent: 'Admin', priority: 1 }
190
- ```
191
-
192
- Remember to indicate where to place the comments and form with:
193
-
194
- ```ruby
195
- active_admin_comments
196
- ```
197
-
198
- ## Utility Navigation
199
-
200
- The "utility navigation" shown at the top right normally shows the current user
201
- and a link to log out. However, the utility navigation is just like any other
202
- menu in the system; you can provide your own menu to be rendered in its place.
203
-
204
- ```ruby
205
- ActiveAdmin.setup do |config|
206
- config.namespace :admin do |admin|
207
- admin.build_menu :utility_navigation do |menu|
208
- menu.add label: "ActiveAdmin.info", url: "http://www.activeadmin.info",
209
- html_options: { target: :blank }
210
- admin.add_current_user_to_menu menu
211
- admin.add_logout_button_to_menu menu
212
- end
213
- end
214
- end
215
- ```
216
-
217
- ## Footer Customization
218
-
219
- By default, Active Admin displays a "Powered by ActiveAdmin" message on every
220
- page. You can override this message and show domain-specific messaging:
221
-
222
- ```ruby
223
- config.footer = "MyApp Revision v1.3"
224
- ```
@@ -1,150 +0,0 @@
1
- ---
2
- redirect_from: /docs/10-custom-pages.html
3
- ---
4
-
5
- # Custom Pages
6
-
7
- If you have data you want on a standalone page that isn't tied to a resource,
8
- custom pages provide you with a familiar syntax and feature set:
9
-
10
- * a menu item
11
- * sidebars
12
- * action items
13
- * page actions
14
-
15
- ## Create a new Page
16
-
17
- Creating a page is as simple as calling `register_page`:
18
-
19
- ```ruby
20
- # app/admin/calendar.rb
21
- ActiveAdmin.register_page "Calendar" do
22
- content do
23
- para "Hello World"
24
- end
25
- end
26
- ```
27
-
28
- Anything rendered within `content` will be the main content on the page.
29
- Partials behave exactly the same way as they do for resources:
30
-
31
- ```ruby
32
- # app/admin/calendar.rb
33
- ActiveAdmin.register_page "Calendar" do
34
- content do
35
- render partial: 'calendar'
36
- end
37
- end
38
-
39
- # app/views/admin/calendar/_calendar.html.arb
40
- table do
41
- thead do
42
- tr do
43
- %w[Sunday Monday Tuesday Wednesday Thursday Friday Saturday].each &method(:th)
44
- end
45
- end
46
- tbody do
47
- # ...
48
- end
49
- end
50
- ```
51
-
52
- ## Customize the Menu
53
-
54
- See the [Menu](2-resource-customization.md#customize-the-menu) documentation.
55
-
56
- ## Customize the breadcrumbs
57
-
58
- ```ruby
59
- ActiveAdmin.register_page "Calendar" do
60
- breadcrumb do
61
- ['admin', 'calendar']
62
- end
63
- end
64
- ```
65
-
66
- ## Customize the Namespace
67
-
68
- We use the `admin` namespace by default, but you can use anything:
69
-
70
- ```ruby
71
- # Available at /today/calendar
72
- ActiveAdmin.register_page "Calendar", namespace: :today
73
-
74
- # Available at /calendar
75
- ActiveAdmin.register_page "Calendar", namespace: false
76
- ```
77
-
78
- ## Belongs To
79
-
80
- To nest the page within another resource, you can use the `belongs_to` method:
81
-
82
- ```ruby
83
- ActiveAdmin.register Project
84
- ActiveAdmin.register_page "Status" do
85
- belongs_to :project
86
- end
87
- ```
88
-
89
- See also the [Belongs To](2-resource-customization.md#belongs-to) documentation
90
- and examples.
91
-
92
- ## Add a Sidebar
93
-
94
- See the [Sidebars](7-sidebars.md) documentation.
95
-
96
- ## Add an Action Item
97
-
98
- Just like other resources, you can add action items. The difference here being that
99
- `:only` and `:except` don't apply because there's only one page it could apply to.
100
-
101
- ```ruby
102
- action_item :view_site do
103
- link_to "View Site", "/"
104
- end
105
- ```
106
-
107
- ## Add a Page Action
108
-
109
- Page actions are custom controller actions (which mirror the resource DSL for
110
- the same feature).
111
-
112
- ```ruby
113
- page_action :add_event, method: :post do
114
- # ...
115
- redirect_to admin_calendar_path, notice: "Your event was added"
116
- end
117
-
118
- action_item :add do
119
- link_to "Add Event", admin_calendar_add_event_path, method: :post
120
- end
121
- ```
122
-
123
- This defines the route `/admin/calendar/add_event` which can handle HTTP POST requests.
124
-
125
- Clicking on the action item will reload page and display the message "Your event
126
- was added"
127
-
128
- Page actions can handle multiple HTTP verbs.
129
-
130
- ```ruby
131
- page_action :add_event, method: [:get, :post] do
132
- # ...
133
- end
134
- ```
135
-
136
- See also the [Custom Actions](8-custom-actions.md#http-verbs) example.
137
-
138
- ## Use custom column as id
139
-
140
- You can use custom parameter instead of id
141
-
142
- ```ruby
143
- ActiveAdmin.register User do
144
- controller do
145
- defaults :finder => :find_by_name
146
- end
147
- end
148
- ```
149
-
150
- This defines the resource route as `/admin/users/john` if user name is john