activeadmin 2.9.0 → 3.2.0
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +284 -1
- data/CONTRIBUTING.md +4 -12
- data/README.md +2 -2
- data/app/assets/javascripts/active_admin/base.js +13 -9
- data/app/assets/stylesheets/active_admin/_base.scss +53 -37
- data/app/assets/stylesheets/active_admin/_forms.scss +1 -11
- data/app/assets/stylesheets/active_admin/_normalize.scss +25 -123
- data/app/assets/stylesheets/active_admin/components/_date_picker.scss +1 -2
- data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +0 -1
- data/app/assets/stylesheets/active_admin/mixins/_variables.scss +9 -0
- data/app/assets/stylesheets/active_admin/structure/_footer.scss +6 -1
- data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +0 -1
- data/app/javascript/active_admin/initializers/has-many.js +4 -1
- data/app/views/active_admin/devise/shared/_links.erb +1 -1
- data/app/views/active_admin/page/index.html.arb +1 -0
- data/app/views/active_admin/resource/edit.html.arb +1 -0
- data/app/views/active_admin/resource/index.html.arb +1 -0
- data/app/views/active_admin/resource/new.html.arb +1 -0
- data/app/views/active_admin/resource/show.html.arb +1 -0
- data/app/views/layouts/active_admin.html.arb +1 -0
- data/app/views/layouts/active_admin_logged_out.html.erb +5 -4
- data/config/locales/ar.yml +0 -7
- data/config/locales/az.yml +0 -7
- data/config/locales/bg.yml +0 -7
- data/config/locales/bs.yml +0 -7
- data/config/locales/ca.yml +0 -7
- data/config/locales/cs.yml +0 -7
- data/config/locales/da.yml +0 -7
- data/config/locales/de-CH.yml +0 -7
- data/config/locales/de.yml +0 -8
- data/config/locales/el.yml +0 -7
- data/config/locales/en-CA.yml +0 -7
- data/config/locales/en-GB.yml +0 -7
- data/config/locales/en.yml +0 -8
- data/config/locales/eo.yml +0 -8
- data/config/locales/es-MX.yml +0 -7
- data/config/locales/es.yml +0 -8
- data/config/locales/fa.yml +0 -7
- data/config/locales/fi.yml +0 -7
- data/config/locales/fr.yml +3 -11
- data/config/locales/he.yml +0 -9
- data/config/locales/hr.yml +0 -7
- data/config/locales/hu.yml +0 -8
- data/config/locales/id.yml +0 -7
- data/config/locales/it.yml +0 -8
- data/config/locales/ja.yml +0 -8
- data/config/locales/ko.yml +1 -8
- data/config/locales/lt.yml +0 -8
- data/config/locales/lv.yml +0 -7
- data/config/locales/mk.yml +0 -8
- data/config/locales/nb.yml +0 -8
- data/config/locales/nl.yml +1 -9
- data/config/locales/pl.yml +0 -8
- data/config/locales/pt-BR.yml +0 -8
- data/config/locales/pt-PT.yml +0 -7
- data/config/locales/ro.yml +3 -9
- data/config/locales/ru.yml +0 -6
- data/config/locales/sk.yml +0 -8
- data/config/locales/sv-SE.yml +58 -39
- data/config/locales/tr.yml +0 -11
- data/config/locales/uk.yml +0 -6
- data/config/locales/vi.yml +34 -15
- data/config/locales/zh-CN.yml +34 -23
- data/config/locales/zh-TW.yml +0 -7
- data/lib/active_admin/abstract_view_factory.rb +1 -0
- data/lib/active_admin/application.rb +10 -10
- data/lib/active_admin/application_settings.rb +1 -0
- data/lib/active_admin/asset_registration.rb +4 -3
- data/lib/active_admin/authorization_adapter.rb +3 -0
- data/lib/active_admin/base_controller/authorization.rb +4 -3
- data/lib/active_admin/base_controller/menu.rb +1 -0
- data/lib/active_admin/base_controller.rb +2 -1
- data/lib/active_admin/batch_actions/controller.rb +1 -0
- data/lib/active_admin/batch_actions/resource_extension.rb +1 -0
- data/lib/active_admin/batch_actions/views/batch_action_form.rb +1 -0
- data/lib/active_admin/batch_actions/views/batch_action_selector.rb +1 -0
- data/lib/active_admin/batch_actions/views/selection_cells.rb +1 -0
- data/lib/active_admin/batch_actions.rb +1 -0
- data/lib/active_admin/callbacks.rb +1 -0
- data/lib/active_admin/cancan_adapter.rb +1 -0
- data/lib/active_admin/collection_decorator.rb +1 -0
- data/lib/active_admin/component.rb +1 -0
- data/lib/active_admin/controller_action.rb +1 -0
- data/lib/active_admin/csv_builder.rb +24 -16
- data/lib/active_admin/dependency.rb +1 -4
- data/lib/active_admin/devise.rb +11 -0
- data/lib/active_admin/dsl.rb +1 -0
- data/lib/active_admin/dynamic_setting.rb +1 -0
- data/lib/active_admin/dynamic_settings_node.rb +1 -0
- data/lib/active_admin/engine.rb +8 -2
- data/lib/active_admin/error.rb +1 -0
- data/lib/active_admin/filters/active.rb +1 -0
- data/lib/active_admin/filters/active_filter.rb +2 -1
- data/lib/active_admin/filters/active_sidebar.rb +2 -28
- data/lib/active_admin/filters/dsl.rb +1 -0
- data/lib/active_admin/filters/forms.rb +3 -2
- data/lib/active_admin/filters/formtastic_addons.rb +2 -1
- data/lib/active_admin/filters/resource_extension.rb +5 -4
- data/lib/active_admin/filters.rb +1 -0
- data/lib/active_admin/form_builder.rb +1 -0
- data/lib/active_admin/generators/boilerplate.rb +1 -0
- data/lib/active_admin/helpers/collection.rb +2 -0
- data/lib/active_admin/helpers/i18n.rb +1 -0
- data/lib/active_admin/helpers/optional_display.rb +1 -0
- data/lib/active_admin/helpers/routes/url_helpers.rb +1 -0
- data/lib/active_admin/helpers/scope_chain.rb +1 -0
- data/lib/active_admin/inputs/datepicker_input.rb +1 -0
- data/lib/active_admin/inputs/filters/base/search_method_select.rb +3 -2
- data/lib/active_admin/inputs/filters/base.rb +1 -0
- data/lib/active_admin/inputs/filters/boolean_input.rb +1 -0
- data/lib/active_admin/inputs/filters/check_boxes_input.rb +1 -0
- data/lib/active_admin/inputs/filters/date_picker_input.rb +1 -0
- data/lib/active_admin/inputs/filters/date_range_input.rb +3 -2
- data/lib/active_admin/inputs/filters/numeric_input.rb +2 -1
- data/lib/active_admin/inputs/filters/select_input.rb +3 -0
- data/lib/active_admin/inputs/filters/string_input.rb +2 -1
- data/lib/active_admin/inputs/filters/text_input.rb +1 -0
- data/lib/active_admin/inputs.rb +1 -0
- data/lib/active_admin/localizers/resource_localizer.rb +1 -0
- data/lib/active_admin/localizers.rb +1 -0
- data/lib/active_admin/menu.rb +2 -0
- data/lib/active_admin/menu_collection.rb +1 -0
- data/lib/active_admin/menu_item.rb +1 -0
- data/lib/active_admin/namespace.rb +4 -3
- data/lib/active_admin/namespace_settings.rb +2 -1
- data/lib/active_admin/order_clause.rb +1 -0
- data/lib/active_admin/orm/active_record/comments/comment.rb +9 -0
- data/lib/active_admin/orm/active_record/comments/namespace_helper.rb +1 -0
- data/lib/active_admin/orm/active_record/comments/resource_helper.rb +1 -0
- data/lib/active_admin/orm/active_record/comments/show_page_helper.rb +1 -0
- data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +2 -1
- data/lib/active_admin/orm/active_record/comments/views.rb +1 -0
- data/lib/active_admin/orm/active_record/comments.rb +9 -8
- data/lib/active_admin/orm/active_record.rb +1 -0
- data/lib/active_admin/orm/mongoid.rb +1 -0
- data/lib/active_admin/page.rb +1 -0
- data/lib/active_admin/page_controller.rb +1 -0
- data/lib/active_admin/page_dsl.rb +1 -0
- data/lib/active_admin/page_presenter.rb +1 -0
- data/lib/active_admin/pundit_adapter.rb +55 -13
- data/lib/active_admin/resource/action_items.rb +3 -2
- data/lib/active_admin/resource/attributes.rb +1 -0
- data/lib/active_admin/resource/belongs_to.rb +1 -0
- data/lib/active_admin/resource/controllers.rb +1 -0
- data/lib/active_admin/resource/includes.rb +1 -0
- data/lib/active_admin/resource/menu.rb +1 -0
- data/lib/active_admin/resource/model.rb +1 -0
- data/lib/active_admin/resource/naming.rb +1 -0
- data/lib/active_admin/resource/ordering.rb +1 -0
- data/lib/active_admin/resource/page_presenters.rb +1 -0
- data/lib/active_admin/resource/pagination.rb +1 -0
- data/lib/active_admin/resource/routes.rb +1 -0
- data/lib/active_admin/resource/scope_to.rb +1 -0
- data/lib/active_admin/resource/scopes.rb +1 -0
- data/lib/active_admin/resource/sidebars.rb +1 -0
- data/lib/active_admin/resource.rb +3 -2
- data/lib/active_admin/resource_collection.rb +1 -0
- data/lib/active_admin/resource_controller/action_builder.rb +1 -0
- data/lib/active_admin/resource_controller/data_access.rb +30 -4
- data/lib/active_admin/resource_controller/decorators.rb +1 -0
- data/lib/active_admin/resource_controller/polymorphic_routes.rb +1 -0
- data/lib/active_admin/resource_controller/resource_class_methods.rb +1 -0
- data/lib/active_admin/resource_controller/scoping.rb +1 -0
- data/lib/active_admin/resource_controller/sidebars.rb +1 -0
- data/lib/active_admin/resource_controller/streaming.rb +3 -2
- data/lib/active_admin/resource_controller.rb +1 -0
- data/lib/active_admin/resource_dsl.rb +7 -21
- data/lib/active_admin/router.rb +1 -0
- data/lib/active_admin/scope.rb +1 -0
- data/lib/active_admin/settings_node.rb +1 -0
- data/lib/active_admin/sidebar_section.rb +1 -0
- data/lib/active_admin/version.rb +2 -1
- data/lib/active_admin/view_factory.rb +1 -0
- data/lib/active_admin/view_helpers/active_admin_application_helper.rb +1 -0
- data/lib/active_admin/view_helpers/auto_link_helper.rb +2 -1
- data/lib/active_admin/view_helpers/breadcrumb_helper.rb +1 -0
- data/lib/active_admin/view_helpers/display_helper.rb +19 -4
- data/lib/active_admin/view_helpers/download_format_links_helper.rb +1 -0
- data/lib/active_admin/view_helpers/fields_for.rb +1 -0
- data/lib/active_admin/view_helpers/flash_helper.rb +1 -0
- data/lib/active_admin/view_helpers/form_helper.rb +1 -0
- data/lib/active_admin/view_helpers/method_or_proc_helper.rb +1 -0
- data/lib/active_admin/view_helpers/scope_name_helper.rb +1 -0
- data/lib/active_admin/view_helpers/sidebar_helper.rb +1 -0
- data/lib/active_admin/view_helpers/title_helper.rb +1 -0
- data/lib/active_admin/view_helpers/view_factory_helper.rb +1 -0
- data/lib/active_admin/view_helpers.rb +1 -0
- data/lib/active_admin/views/action_items.rb +1 -0
- data/lib/active_admin/views/components/active_admin_form.rb +2 -5
- data/lib/active_admin/views/components/active_filters_sidebar_content.rb +59 -0
- data/lib/active_admin/views/components/attributes_table.rb +1 -0
- data/lib/active_admin/views/components/blank_slate.rb +1 -0
- data/lib/active_admin/views/components/columns.rb +1 -0
- data/lib/active_admin/views/components/dropdown_menu.rb +3 -5
- data/lib/active_admin/views/components/index_list.rb +1 -0
- data/lib/active_admin/views/components/menu.rb +1 -0
- data/lib/active_admin/views/components/menu_item.rb +1 -0
- data/lib/active_admin/views/components/paginated_collection.rb +1 -0
- data/lib/active_admin/views/components/panel.rb +1 -0
- data/lib/active_admin/views/components/scopes.rb +1 -0
- data/lib/active_admin/views/components/sidebar.rb +1 -0
- data/lib/active_admin/views/components/sidebar_section.rb +1 -0
- data/lib/active_admin/views/components/site_title.rb +1 -0
- data/lib/active_admin/views/components/status_tag.rb +1 -0
- data/lib/active_admin/views/components/table_for.rb +1 -0
- data/lib/active_admin/views/components/tabs.rb +1 -0
- data/lib/active_admin/views/components/unsupported_browser.rb +1 -0
- data/lib/active_admin/views/footer.rb +1 -0
- data/lib/active_admin/views/header.rb +1 -0
- data/lib/active_admin/views/index_as_block.rb +1 -0
- data/lib/active_admin/views/index_as_blog.rb +1 -0
- data/lib/active_admin/views/index_as_grid.rb +1 -0
- data/lib/active_admin/views/index_as_table.rb +2 -5
- data/lib/active_admin/views/pages/base.rb +8 -4
- data/lib/active_admin/views/pages/form.rb +1 -0
- data/lib/active_admin/views/pages/index.rb +2 -1
- data/lib/active_admin/views/pages/layout.rb +1 -0
- data/lib/active_admin/views/pages/page.rb +1 -0
- data/lib/active_admin/views/pages/show.rb +2 -7
- data/lib/active_admin/views/tabbed_navigation.rb +1 -0
- data/lib/active_admin/views/title_bar.rb +1 -0
- data/lib/active_admin/views.rb +1 -0
- data/lib/active_admin.rb +6 -3
- data/lib/activeadmin.rb +1 -0
- data/lib/generators/active_admin/assets/assets_generator.rb +1 -0
- data/lib/generators/active_admin/devise/devise_generator.rb +1 -0
- data/lib/generators/active_admin/install/install_generator.rb +1 -0
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +18 -1
- data/lib/generators/active_admin/install/templates/dashboard.rb +1 -0
- data/lib/generators/active_admin/page/page_generator.rb +1 -0
- data/lib/generators/active_admin/page/templates/page.rb +1 -0
- data/lib/generators/active_admin/resource/resource_generator.rb +1 -0
- data/lib/generators/active_admin/webpacker/webpacker_generator.rb +1 -0
- metadata +26 -83
- data/docs/.gitignore +0 -1
- data/docs/0-installation.md +0 -142
- data/docs/1-general-configuration.md +0 -224
- data/docs/10-custom-pages.md +0 -150
- data/docs/11-decorators.md +0 -70
- data/docs/12-arbre-components.md +0 -214
- data/docs/13-authorization-adapter.md +0 -285
- data/docs/14-gotchas.md +0 -138
- data/docs/2-resource-customization.md +0 -475
- data/docs/3-index-pages/custom-index.md +0 -35
- data/docs/3-index-pages/index-as-block.md +0 -19
- data/docs/3-index-pages/index-as-blog.md +0 -69
- data/docs/3-index-pages/index-as-grid.md +0 -27
- data/docs/3-index-pages/index-as-table.md +0 -234
- data/docs/3-index-pages.md +0 -328
- data/docs/4-csv-format.md +0 -74
- data/docs/5-forms.md +0 -237
- data/docs/6-show-pages.md +0 -93
- data/docs/7-sidebars.md +0 -75
- data/docs/8-custom-actions.md +0 -177
- data/docs/9-batch-actions.md +0 -237
- data/docs/CNAME +0 -1
- data/docs/Gemfile +0 -3
- data/docs/Gemfile.lock +0 -259
- data/docs/README.md +0 -24
- data/docs/_config.yml +0 -4
- data/docs/_includes/footer.html +0 -8
- data/docs/_includes/google-analytics.html +0 -16
- data/docs/_includes/head.html +0 -7
- data/docs/_includes/toc.html +0 -98
- data/docs/_includes/top-menu.html +0 -17
- data/docs/_layouts/default.html +0 -21
- data/docs/documentation.md +0 -60
- data/docs/images/activeadmin.png +0 -0
- data/docs/images/code-header.png +0 -0
- data/docs/images/divider.png +0 -0
- data/docs/images/features.png +0 -0
- data/docs/images/tidelift.svg +0 -14
- data/docs/index.html +0 -226
- data/docs/stylesheets/main.css +0 -1205
- data/lib/active_admin/deprecation.rb +0 -10
- data/lib/ransack_ext.rb +0 -20
- /data/app/assets/stylesheets/active_admin/{print.scss → _print.scss} +0 -0
data/config/locales/vi.yml
CHANGED
|
@@ -1,4 +1,20 @@
|
|
|
1
1
|
vi:
|
|
2
|
+
activerecord:
|
|
3
|
+
models:
|
|
4
|
+
comment:
|
|
5
|
+
one: "Bình luận"
|
|
6
|
+
other: "Các bình luận"
|
|
7
|
+
active_admin/comment:
|
|
8
|
+
one: "Bình luận"
|
|
9
|
+
other: "Các bình luận"
|
|
10
|
+
attributes:
|
|
11
|
+
active_admin/comment:
|
|
12
|
+
author_type: "Loại tác giả"
|
|
13
|
+
body: "Nội dung"
|
|
14
|
+
created_at: "Đã tạo"
|
|
15
|
+
namespace: "Namespace"
|
|
16
|
+
resource_type: "Resource type"
|
|
17
|
+
updated_at: "Đã cập nhật"
|
|
2
18
|
active_admin:
|
|
3
19
|
dashboard: Bảng điều khiển
|
|
4
20
|
dashboard_welcome:
|
|
@@ -21,25 +37,20 @@ vi:
|
|
|
21
37
|
has_many_new: "Thêm mới %{model}"
|
|
22
38
|
has_many_delete: "Xóa"
|
|
23
39
|
has_many_remove: "Hủy bỏ"
|
|
40
|
+
move: "Di chuyển"
|
|
24
41
|
filters:
|
|
25
42
|
buttons:
|
|
26
43
|
filter: "Lọc"
|
|
27
44
|
clear: "Xóa dữ liệu lọc"
|
|
28
45
|
predicates:
|
|
29
|
-
contains: "Có chứa"
|
|
30
|
-
equals: "Bằng"
|
|
31
|
-
starts_with: "Bắt đầu với"
|
|
32
|
-
ends_with: "Kết thúc bởi"
|
|
33
|
-
greater_than: "Lớn hơn"
|
|
34
|
-
less_than: "Nhỏ hơn"
|
|
35
|
-
gteq_datetime: "Lớn hơn hoặc bằng"
|
|
36
|
-
lteq_datetime: "Nhỏ hơn hoặc bằng"
|
|
37
46
|
from: "Từ"
|
|
38
47
|
to: "Đến"
|
|
48
|
+
scopes:
|
|
49
|
+
all: "Tất cả"
|
|
39
50
|
search_status:
|
|
40
51
|
headline: "Danh sách tìm kiếm:"
|
|
41
52
|
current_scope: "Phạm vi:"
|
|
42
|
-
current_filters: "Bộ
|
|
53
|
+
current_filters: "Bộ lọc hiện tại:"
|
|
43
54
|
no_current_filters: "Không có"
|
|
44
55
|
status_tag:
|
|
45
56
|
"yes": "Có"
|
|
@@ -47,7 +58,7 @@ vi:
|
|
|
47
58
|
"unset": "Không Có"
|
|
48
59
|
main_content: "Xin bổ sung %{model}#main_content để hiển thị nội dung."
|
|
49
60
|
logout: "Đăng xuất"
|
|
50
|
-
powered_by: "
|
|
61
|
+
powered_by: "Bản quyền bởi %{active_admin} %{version}"
|
|
51
62
|
sidebars:
|
|
52
63
|
filters: "Bộ Lọc"
|
|
53
64
|
search_status: "Trạng thái tìm kiếm"
|
|
@@ -75,12 +86,13 @@ vi:
|
|
|
75
86
|
one: "Đã xóa thành công 1 %{model}"
|
|
76
87
|
other: "Đã xóa thành công %{count} %{plural_model}"
|
|
77
88
|
selection_toggle_explanation: "(Thay đổi lựa chọn)"
|
|
78
|
-
action_label: "%{title} được chọn"
|
|
89
|
+
action_label: "%{title} đã được chọn"
|
|
79
90
|
labels:
|
|
80
91
|
destroy: "Xóa"
|
|
81
92
|
comments:
|
|
82
93
|
created_at: "Đã tạo"
|
|
83
94
|
resource_type: "Resource Type"
|
|
95
|
+
author_type: "Loại tác giả"
|
|
84
96
|
body: "Nội dung"
|
|
85
97
|
author: "Tác giả"
|
|
86
98
|
add: "Thêm bình luận"
|
|
@@ -117,15 +129,22 @@ vi:
|
|
|
117
129
|
title: "Thay đổi mật khẩu của bạn"
|
|
118
130
|
submit: "Thay đổi mật khẩu của tôi"
|
|
119
131
|
unlock:
|
|
120
|
-
title: "
|
|
121
|
-
submit: "
|
|
132
|
+
title: "Gửi lại hướng dẫn mở khoá"
|
|
133
|
+
submit: "Gửi lại hướng dẫn mở khoá"
|
|
122
134
|
resend_confirmation_instructions:
|
|
123
|
-
title: "
|
|
124
|
-
submit: "
|
|
135
|
+
title: "Gửi lại hướng dẫn xác nhận"
|
|
136
|
+
submit: "Gửi lại hướng dẫn xác nhận"
|
|
125
137
|
links:
|
|
138
|
+
sign_up: "Đăng ký"
|
|
126
139
|
sign_in: "Đăng nhập"
|
|
127
140
|
forgot_your_password: "Quên mật khẩu của bạn?"
|
|
128
141
|
sign_in_with_omniauth_provider: "Đăng nhập với %{provider}"
|
|
142
|
+
resend_unlock_instructions: "Gửi lại hướng dẫn mở khoá"
|
|
143
|
+
resend_confirmation_instructions: "Gửi lại hướng dẫn xác nhận"
|
|
144
|
+
unsupported_browser:
|
|
145
|
+
headline: "Vui lòng lưu ý rằng ActiveAdmin không còn hỗ trợ trên Internet Explorer các phiên bản 8 và thấp hơn."
|
|
146
|
+
recommendation: "Chúng tôi khuyên bạn hãy vào <a href=\"http://browsehappy.com/\">nâng cấp trình duyệt của bạn </a> để cải thiện trải nghiệm của bạn."
|
|
147
|
+
turn_off_compatibility_view: "Nếu bạn đang sử dụng IE 9 hoặc mới hơn, hãy chắc chắn bạn <a href=\"https://support.microsoft.com/en-us/help/17471\">tắt \"Compatibility View\"</a>."
|
|
129
148
|
access_denied:
|
|
130
149
|
message: "Bạn không có quyền thực hiện tính năng này"
|
|
131
150
|
index_list:
|
data/config/locales/zh-CN.yml
CHANGED
|
@@ -1,4 +1,20 @@
|
|
|
1
1
|
"zh-CN":
|
|
2
|
+
activerecord:
|
|
3
|
+
models:
|
|
4
|
+
comment:
|
|
5
|
+
one: "评论"
|
|
6
|
+
other: "评论"
|
|
7
|
+
active_admin/comment:
|
|
8
|
+
one: "评论"
|
|
9
|
+
other: "评论"
|
|
10
|
+
attributes:
|
|
11
|
+
active_admin/comment:
|
|
12
|
+
author_type: "作者类型"
|
|
13
|
+
body: "内容"
|
|
14
|
+
created_at: "创建"
|
|
15
|
+
namespace: "Namespace"
|
|
16
|
+
resource_type: "Resource 类型"
|
|
17
|
+
updated_at: "更新"
|
|
2
18
|
active_admin:
|
|
3
19
|
dashboard: "控制面板"
|
|
4
20
|
dashboard_welcome:
|
|
@@ -8,8 +24,8 @@
|
|
|
8
24
|
edit: "编辑"
|
|
9
25
|
delete: "删除"
|
|
10
26
|
delete_confirmation: "确定删除?"
|
|
11
|
-
create_another: "
|
|
12
|
-
new_model: "
|
|
27
|
+
create_another: "新增另一个%{model}"
|
|
28
|
+
new_model: "新增%{model}"
|
|
13
29
|
edit_model: "编辑%{model}"
|
|
14
30
|
delete_model: "删除%{model}"
|
|
15
31
|
details: "%{model}详情"
|
|
@@ -17,37 +33,32 @@
|
|
|
17
33
|
empty: "未定义"
|
|
18
34
|
previous: "上一个"
|
|
19
35
|
next: "下一个"
|
|
20
|
-
download: "
|
|
21
|
-
has_many_new: "
|
|
36
|
+
download: "下载:"
|
|
37
|
+
has_many_new: "新增一个%{model}"
|
|
22
38
|
has_many_delete: "删除"
|
|
23
39
|
has_many_remove: "清除"
|
|
40
|
+
move: "移动"
|
|
24
41
|
filters:
|
|
25
42
|
buttons:
|
|
26
43
|
filter: "过滤"
|
|
27
44
|
clear: "清除条件"
|
|
28
45
|
predicates:
|
|
29
|
-
contains: "包含"
|
|
30
|
-
equals: "等于"
|
|
31
|
-
starts_with: "开头"
|
|
32
|
-
ends_with: "完与"
|
|
33
|
-
greater_than: "大于"
|
|
34
|
-
less_than: "小于"
|
|
35
|
-
gteq_datetime: "大于等于"
|
|
36
|
-
lteq_datetime: "小于等于"
|
|
37
46
|
from: "起"
|
|
38
47
|
to: "止"
|
|
48
|
+
scopes:
|
|
49
|
+
all: "所有"
|
|
39
50
|
search_status:
|
|
40
51
|
headline: "搜索条件:"
|
|
41
|
-
current_scope: "
|
|
52
|
+
current_scope: "范围:"
|
|
42
53
|
current_filters: "过滤条件:"
|
|
43
54
|
no_current_filters: "无"
|
|
44
55
|
status_tag:
|
|
45
56
|
"yes": "是"
|
|
46
57
|
"no": "否"
|
|
47
58
|
"unset": "否"
|
|
48
|
-
main_content: "请执行 %{model}#main_content
|
|
59
|
+
main_content: "请执行 %{model}#main_content 来显示内容。"
|
|
49
60
|
logout: "退出"
|
|
50
|
-
powered_by: "
|
|
61
|
+
powered_by: "构建程序为 %{active_admin} %{version}"
|
|
51
62
|
sidebars:
|
|
52
63
|
filters: "所有条件"
|
|
53
64
|
search_status: "搜索条件"
|
|
@@ -63,14 +74,14 @@
|
|
|
63
74
|
other: "条目"
|
|
64
75
|
any: "任何"
|
|
65
76
|
blank_slate:
|
|
66
|
-
content: "暂时还没有%{resource_name}
|
|
67
|
-
link: "
|
|
77
|
+
content: "暂时还没有%{resource_name}。"
|
|
78
|
+
link: "新增一个"
|
|
68
79
|
dropdown_actions:
|
|
69
|
-
button_label: "
|
|
80
|
+
button_label: "操作"
|
|
70
81
|
batch_actions:
|
|
71
82
|
button_label: "批处理"
|
|
72
|
-
default_confirmation: "
|
|
73
|
-
delete_confirmation: "你确定要删除这些%{plural_model}
|
|
83
|
+
default_confirmation: "你确定要这样做?"
|
|
84
|
+
delete_confirmation: "你确定要删除这些%{plural_model}?"
|
|
74
85
|
succesfully_destroyed:
|
|
75
86
|
one: "成功删除 1 %{model}"
|
|
76
87
|
other: "成功删除 %{count} %{plural_model}"
|
|
@@ -92,7 +103,7 @@
|
|
|
92
103
|
author_missing: "匿名"
|
|
93
104
|
title_content: "(%{count})条评论"
|
|
94
105
|
errors:
|
|
95
|
-
empty_text: "
|
|
106
|
+
empty_text: "评论保存失败,内空不能为空。"
|
|
96
107
|
devise:
|
|
97
108
|
username:
|
|
98
109
|
title: "用户名"
|
|
@@ -121,8 +132,8 @@
|
|
|
121
132
|
title: "重新发送送解锁命令"
|
|
122
133
|
submit: "重新发送送解锁命令"
|
|
123
134
|
resend_confirmation_instructions:
|
|
124
|
-
title: "
|
|
125
|
-
submit: "
|
|
135
|
+
title: " 重新发送确认说明"
|
|
136
|
+
submit: " 重新发送确认说明"
|
|
126
137
|
links:
|
|
127
138
|
sign_up: "注册"
|
|
128
139
|
sign_in: "登录"
|
data/config/locales/zh-TW.yml
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
require "active_admin/router"
|
|
2
3
|
require "active_admin/application_settings"
|
|
3
4
|
require "active_admin/namespace_settings"
|
|
@@ -75,7 +76,7 @@ module ActiveAdmin
|
|
|
75
76
|
|
|
76
77
|
namespace = namespaces[name.to_sym] ||= begin
|
|
77
78
|
namespace = Namespace.new(self, name)
|
|
78
|
-
ActiveSupport::Notifications.
|
|
79
|
+
ActiveSupport::Notifications.instrument ActiveAdmin::Namespace::RegisterEvent, { active_admin_namespace: namespace }
|
|
79
80
|
namespace
|
|
80
81
|
end
|
|
81
82
|
|
|
@@ -111,10 +112,10 @@ module ActiveAdmin
|
|
|
111
112
|
# To reload everything simply call `ActiveAdmin.unload!`
|
|
112
113
|
def load!
|
|
113
114
|
unless loaded?
|
|
114
|
-
ActiveSupport::Notifications.
|
|
115
|
+
ActiveSupport::Notifications.instrument BeforeLoadEvent, { active_admin_application: self } # before_load hook
|
|
115
116
|
files.each { |file| load file } # load files
|
|
116
117
|
namespace(default_namespace) # init AA resources
|
|
117
|
-
ActiveSupport::Notifications.
|
|
118
|
+
ActiveSupport::Notifications.instrument AfterLoadEvent, { active_admin_application: self } # after_load hook
|
|
118
119
|
@@loaded = true
|
|
119
120
|
end
|
|
120
121
|
end
|
|
@@ -125,7 +126,7 @@ module ActiveAdmin
|
|
|
125
126
|
|
|
126
127
|
# Returns ALL the files to be loaded
|
|
127
128
|
def files
|
|
128
|
-
load_paths.flatten.compact.uniq.flat_map { |path| Dir["#{path}/**/*.rb"] }
|
|
129
|
+
load_paths.flatten.compact.uniq.flat_map { |path| Dir["#{path}/**/*.rb"].sort }
|
|
129
130
|
end
|
|
130
131
|
|
|
131
132
|
# Creates all the necessary routes for the ActiveAdmin configurations
|
|
@@ -144,13 +145,13 @@ module ActiveAdmin
|
|
|
144
145
|
|
|
145
146
|
# Adds before, around and after filters to all controllers.
|
|
146
147
|
# Example usage:
|
|
147
|
-
# ActiveAdmin.
|
|
148
|
+
# ActiveAdmin.before_action :authenticate_admin!
|
|
148
149
|
#
|
|
149
150
|
AbstractController::Callbacks::ClassMethods.public_instance_methods.
|
|
150
|
-
select { |m| m.match(/
|
|
151
|
+
select { |m| m.match(/_action\z/) }.each do |name|
|
|
151
152
|
define_method name do |*args, &block|
|
|
152
|
-
|
|
153
|
-
|
|
153
|
+
ActiveSupport.on_load(:active_admin_controller) do
|
|
154
|
+
public_send name, *args, &block
|
|
154
155
|
end
|
|
155
156
|
end
|
|
156
157
|
end
|
|
@@ -164,8 +165,7 @@ module ActiveAdmin
|
|
|
164
165
|
private
|
|
165
166
|
|
|
166
167
|
def register_default_assets
|
|
167
|
-
register_stylesheet "active_admin.css", media: "
|
|
168
|
-
register_stylesheet "active_admin/print.css", media: "print"
|
|
168
|
+
register_stylesheet "active_admin.css", media: "all"
|
|
169
169
|
register_javascript "active_admin.js"
|
|
170
170
|
end
|
|
171
171
|
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
module ActiveAdmin
|
|
2
3
|
module AssetRegistration
|
|
3
4
|
|
|
@@ -13,12 +14,12 @@ module ActiveAdmin
|
|
|
13
14
|
stylesheets.clear
|
|
14
15
|
end
|
|
15
16
|
|
|
16
|
-
def register_javascript(
|
|
17
|
-
javascripts
|
|
17
|
+
def register_javascript(path, options = {})
|
|
18
|
+
javascripts[path] = options
|
|
18
19
|
end
|
|
19
20
|
|
|
20
21
|
def javascripts
|
|
21
|
-
@javascripts ||=
|
|
22
|
+
@javascripts ||= {}
|
|
22
23
|
end
|
|
23
24
|
|
|
24
25
|
def clear_javascripts!
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
module ActiveAdmin
|
|
2
3
|
class BaseController < ::InheritedResources::Base
|
|
3
4
|
module Authorization
|
|
@@ -6,9 +7,9 @@ module ActiveAdmin
|
|
|
6
7
|
ACTIONS_DICTIONARY = {
|
|
7
8
|
index: ActiveAdmin::Authorization::READ,
|
|
8
9
|
show: ActiveAdmin::Authorization::READ,
|
|
9
|
-
new: ActiveAdmin::Authorization::
|
|
10
|
+
new: ActiveAdmin::Authorization::NEW,
|
|
10
11
|
create: ActiveAdmin::Authorization::CREATE,
|
|
11
|
-
edit: ActiveAdmin::Authorization::
|
|
12
|
+
edit: ActiveAdmin::Authorization::EDIT,
|
|
12
13
|
update: ActiveAdmin::Authorization::UPDATE,
|
|
13
14
|
destroy: ActiveAdmin::Authorization::DESTROY
|
|
14
15
|
}
|
|
@@ -81,7 +82,7 @@ module ActiveAdmin
|
|
|
81
82
|
def active_admin_authorization_adapter
|
|
82
83
|
adapter = active_admin_namespace.authorization_adapter
|
|
83
84
|
if adapter.is_a? String
|
|
84
|
-
|
|
85
|
+
adapter.constantize
|
|
85
86
|
else
|
|
86
87
|
adapter
|
|
87
88
|
end
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
require "active_admin/base_controller/authorization"
|
|
2
3
|
require "active_admin/base_controller/menu"
|
|
3
4
|
|
|
@@ -6,7 +7,6 @@ module ActiveAdmin
|
|
|
6
7
|
# It implements ActiveAdmin controllers core features.
|
|
7
8
|
class BaseController < ::InheritedResources::Base
|
|
8
9
|
helper ::ActiveAdmin::ViewHelpers
|
|
9
|
-
helper_method :env
|
|
10
10
|
|
|
11
11
|
layout :determine_active_admin_layout
|
|
12
12
|
|
|
@@ -77,5 +77,6 @@ module ActiveAdmin
|
|
|
77
77
|
{ controller: controller, action: action }
|
|
78
78
|
end
|
|
79
79
|
|
|
80
|
+
ActiveSupport.run_load_hooks(:active_admin_controller, self)
|
|
80
81
|
end
|
|
81
82
|
end
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
module ActiveAdmin
|
|
2
3
|
# CSVBuilder stores CSV configuration
|
|
3
4
|
#
|
|
@@ -42,25 +43,19 @@ module ActiveAdmin
|
|
|
42
43
|
end
|
|
43
44
|
|
|
44
45
|
def build(controller, csv)
|
|
45
|
-
@collection = controller.send :find_collection, except: :pagination
|
|
46
46
|
columns = exec_columns controller.view_context
|
|
47
|
-
bom = options
|
|
47
|
+
bom = options[:byte_order_mark]
|
|
48
48
|
column_names = options.delete(:column_names) { true }
|
|
49
|
-
csv_options = options.except :encoding_options, :humanize_name
|
|
49
|
+
csv_options = options.except :encoding_options, :humanize_name, :byte_order_mark
|
|
50
50
|
|
|
51
51
|
csv << bom if bom
|
|
52
52
|
|
|
53
53
|
if column_names
|
|
54
|
-
csv << CSV.generate_line(columns.map { |c| encode
|
|
54
|
+
csv << CSV.generate_line(columns.map { |c| sanitize(encode(c.name, options)) }, **csv_options)
|
|
55
55
|
end
|
|
56
56
|
|
|
57
|
-
|
|
58
|
-
(
|
|
59
|
-
paginated_collection(page).each do |resource|
|
|
60
|
-
resource = controller.send :apply_decorator, resource
|
|
61
|
-
csv << CSV.generate_line(build_row(resource, columns, options), **csv_options)
|
|
62
|
-
end
|
|
63
|
-
end
|
|
57
|
+
controller.send(:in_paginated_batches) do |resource|
|
|
58
|
+
csv << CSV.generate_line(build_row(resource, columns, options), **csv_options)
|
|
64
59
|
end
|
|
65
60
|
|
|
66
61
|
csv
|
|
@@ -75,7 +70,7 @@ module ActiveAdmin
|
|
|
75
70
|
|
|
76
71
|
def build_row(resource, columns, options)
|
|
77
72
|
columns.map do |column|
|
|
78
|
-
encode
|
|
73
|
+
sanitize(encode(call_method_or_proc_on(resource, column.data), options))
|
|
79
74
|
end
|
|
80
75
|
end
|
|
81
76
|
|
|
@@ -91,6 +86,10 @@ module ActiveAdmin
|
|
|
91
86
|
end
|
|
92
87
|
end
|
|
93
88
|
|
|
89
|
+
def sanitize(content)
|
|
90
|
+
Sanitizer.sanitize(content)
|
|
91
|
+
end
|
|
92
|
+
|
|
94
93
|
def method_missing(method, *args, &block)
|
|
95
94
|
if @view_context.respond_to? method
|
|
96
95
|
@view_context.public_send method, *args, &block
|
|
@@ -124,13 +123,22 @@ module ActiveAdmin
|
|
|
124
123
|
def column_transitive_options
|
|
125
124
|
@column_transitive_options ||= @options.slice(*COLUMN_TRANSITIVE_OPTIONS)
|
|
126
125
|
end
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
# Prevents CSV Injection according to https://owasp.org/www-community/attacks/CSV_Injection
|
|
129
|
+
module Sanitizer
|
|
130
|
+
extend self
|
|
131
|
+
|
|
132
|
+
ATTACK_CHARACTERS = ["=", "+", "-", "@", "\t", "\r"].freeze
|
|
133
|
+
|
|
134
|
+
def sanitize(value)
|
|
135
|
+
return "'#{value}" if require_sanitization?(value)
|
|
127
136
|
|
|
128
|
-
|
|
129
|
-
@collection.public_send(Kaminari.config.page_method_name, page_no).per(batch_size)
|
|
137
|
+
value
|
|
130
138
|
end
|
|
131
139
|
|
|
132
|
-
def
|
|
133
|
-
|
|
140
|
+
def require_sanitization?(value)
|
|
141
|
+
value.is_a?(String) && value.starts_with?(*ATTACK_CHARACTERS)
|
|
134
142
|
end
|
|
135
143
|
end
|
|
136
144
|
end
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
module ActiveAdmin
|
|
2
3
|
module Dependency
|
|
3
4
|
module Requirements
|
|
@@ -55,10 +56,6 @@ module ActiveAdmin
|
|
|
55
56
|
Matcher.new name.to_s
|
|
56
57
|
end
|
|
57
58
|
|
|
58
|
-
def self.supports_zeitwerk?
|
|
59
|
-
rails >= "6.0.0.beta3" && RUBY_ENGINE != "jruby"
|
|
60
|
-
end
|
|
61
|
-
|
|
62
59
|
class Matcher
|
|
63
60
|
attr_reader :name
|
|
64
61
|
|
data/lib/active_admin/devise.rb
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
ActiveAdmin::Dependency.devise! ActiveAdmin::Dependency::Requirements::DEVISE
|
|
2
3
|
|
|
3
4
|
require "devise"
|
|
@@ -52,22 +53,32 @@ module ActiveAdmin
|
|
|
52
53
|
|
|
53
54
|
class SessionsController < ::Devise::SessionsController
|
|
54
55
|
include ::ActiveAdmin::Devise::Controller
|
|
56
|
+
|
|
57
|
+
ActiveSupport.run_load_hooks(:active_admin_controller, self)
|
|
55
58
|
end
|
|
56
59
|
|
|
57
60
|
class PasswordsController < ::Devise::PasswordsController
|
|
58
61
|
include ::ActiveAdmin::Devise::Controller
|
|
62
|
+
|
|
63
|
+
ActiveSupport.run_load_hooks(:active_admin_controller, self)
|
|
59
64
|
end
|
|
60
65
|
|
|
61
66
|
class UnlocksController < ::Devise::UnlocksController
|
|
62
67
|
include ::ActiveAdmin::Devise::Controller
|
|
68
|
+
|
|
69
|
+
ActiveSupport.run_load_hooks(:active_admin_controller, self)
|
|
63
70
|
end
|
|
64
71
|
|
|
65
72
|
class RegistrationsController < ::Devise::RegistrationsController
|
|
66
73
|
include ::ActiveAdmin::Devise::Controller
|
|
74
|
+
|
|
75
|
+
ActiveSupport.run_load_hooks(:active_admin_controller, self)
|
|
67
76
|
end
|
|
68
77
|
|
|
69
78
|
class ConfirmationsController < ::Devise::ConfirmationsController
|
|
70
79
|
include ::ActiveAdmin::Devise::Controller
|
|
80
|
+
|
|
81
|
+
ActiveSupport.run_load_hooks(:active_admin_controller, self)
|
|
71
82
|
end
|
|
72
83
|
|
|
73
84
|
def self.controllers_for_filters
|
data/lib/active_admin/dsl.rb
CHANGED
data/lib/active_admin/engine.rb
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
module ActiveAdmin
|
|
2
3
|
class Engine < ::Rails::Engine
|
|
3
|
-
|
|
4
|
+
# Set default values for app_path and load_paths before running initializers
|
|
5
|
+
initializer "active_admin.load_app_path", before: :load_config_initializers do |app|
|
|
4
6
|
ActiveAdmin::Application.setting :app_path, app.root
|
|
5
7
|
ActiveAdmin::Application.setting :load_paths, [File.expand_path("app/admin", app.root)]
|
|
6
8
|
end
|
|
@@ -10,7 +12,7 @@ module ActiveAdmin
|
|
|
10
12
|
ActiveAdmin.application.stylesheets.each do |path, _|
|
|
11
13
|
app.config.assets.precompile << path
|
|
12
14
|
end
|
|
13
|
-
ActiveAdmin.application.javascripts.each do |path|
|
|
15
|
+
ActiveAdmin.application.javascripts.each do |path, _|
|
|
14
16
|
app.config.assets.precompile << path
|
|
15
17
|
end
|
|
16
18
|
end
|
|
@@ -19,5 +21,9 @@ module ActiveAdmin
|
|
|
19
21
|
initializer "active_admin.routes" do
|
|
20
22
|
require "active_admin/helpers/routes/url_helpers"
|
|
21
23
|
end
|
|
24
|
+
|
|
25
|
+
initializer "active_admin.deprecator" do |app|
|
|
26
|
+
app.deprecators[:activeadmin] = ActiveAdmin.deprecator if app.respond_to?(:deprecators)
|
|
27
|
+
end
|
|
22
28
|
end
|
|
23
29
|
end
|
data/lib/active_admin/error.rb
CHANGED