activeadmin 1.4.2 → 2.3.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +306 -144
- data/CONTRIBUTING.md +21 -16
- data/README.md +44 -11
- data/app/assets/javascripts/active_admin/base.es6 +23 -0
- data/app/assets/javascripts/active_admin/ext/jquery-ui.es6 +7 -0
- data/app/assets/javascripts/active_admin/ext/jquery.es6 +9 -0
- data/app/assets/javascripts/active_admin/initializers/datepicker.es6 +16 -0
- data/app/assets/javascripts/active_admin/initializers/filters.es6 +45 -0
- data/app/assets/javascripts/active_admin/initializers/tabs.es6 +6 -0
- data/app/assets/javascripts/active_admin/lib/active_admin.es6 +41 -0
- data/app/assets/javascripts/active_admin/lib/batch_actions.es6 +59 -0
- data/app/assets/javascripts/active_admin/lib/checkbox-toggler.es6 +49 -0
- data/app/assets/javascripts/active_admin/lib/dropdown-menu.es6 +123 -0
- data/app/assets/javascripts/active_admin/lib/has_many.es6 +95 -0
- data/app/assets/javascripts/active_admin/lib/modal_dialog.es6 +61 -0
- data/app/assets/javascripts/active_admin/lib/per_page.es6 +47 -0
- data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.es6 +36 -0
- data/app/assets/stylesheets/active_admin/_forms.scss +2 -14
- data/app/assets/stylesheets/active_admin/components/_status_tags.scss +0 -5
- data/app/assets/stylesheets/active_admin/components/_tabs.scss +1 -1
- data/app/assets/stylesheets/active_admin/mixins/_gradients.scss +1 -1
- data/app/views/active_admin/devise/confirmations/new.html.erb +1 -1
- data/app/views/active_admin/devise/passwords/edit.html.erb +1 -1
- data/app/views/active_admin/devise/passwords/new.html.erb +1 -1
- data/app/views/active_admin/devise/registrations/new.html.erb +1 -2
- data/app/views/active_admin/devise/shared/_error_messages.html.erb +15 -0
- data/app/views/active_admin/devise/unlocks/new.html.erb +1 -1
- data/app/views/kaminari/active_admin_countless/_first_page.html.erb +11 -0
- data/app/views/kaminari/active_admin_countless/_gap.html.erb +8 -0
- data/app/views/kaminari/active_admin_countless/_next_page.html.erb +11 -0
- data/app/views/kaminari/active_admin_countless/_page.html.erb +12 -0
- data/app/views/kaminari/active_admin_countless/_paginator.html.erb +24 -0
- data/app/views/kaminari/active_admin_countless/_prev_page.html.erb +11 -0
- data/app/views/layouts/active_admin_logged_out.html.erb +1 -1
- data/config/locales/ar.yml +3 -2
- data/config/locales/bg.yml +1 -1
- data/config/locales/bs.yml +1 -0
- data/config/locales/ca.yml +1 -1
- data/config/locales/cs.yml +1 -0
- data/config/locales/da.yml +1 -0
- data/config/locales/de-CH.yml +1 -0
- data/config/locales/de.yml +1 -0
- data/config/locales/el.yml +1 -0
- data/config/locales/en-CA.yml +1 -0
- data/config/locales/en-GB.yml +1 -0
- data/config/locales/en.yml +1 -0
- data/config/locales/eo.yml +1 -0
- data/config/locales/es-MX.yml +1 -0
- data/config/locales/es.yml +1 -0
- data/config/locales/fa.yml +1 -0
- data/config/locales/fi.yml +1 -0
- data/config/locales/fr.yml +2 -1
- data/config/locales/he.yml +1 -1
- data/config/locales/hr.yml +1 -0
- data/config/locales/hu.yml +5 -0
- data/config/locales/id.yml +1 -0
- data/config/locales/it.yml +1 -0
- data/config/locales/ja.yml +1 -0
- data/config/locales/ko.yml +1 -0
- data/config/locales/lt.yml +3 -2
- data/config/locales/lv.yml +1 -0
- data/config/locales/mk.yml +134 -0
- data/config/locales/nb.yml +1 -0
- data/config/locales/nl.yml +1 -0
- data/config/locales/pl.yml +1 -0
- data/config/locales/pt-BR.yml +1 -0
- data/config/locales/pt-PT.yml +1 -0
- data/config/locales/ro.yml +1 -0
- data/config/locales/ru.yml +1 -0
- data/config/locales/sk.yml +1 -0
- data/config/locales/sv-SE.yml +1 -0
- data/config/locales/tr.yml +1 -0
- data/config/locales/uk.yml +3 -0
- data/config/locales/vi.yml +1 -0
- data/config/locales/zh-CN.yml +1 -0
- data/config/locales/zh-TW.yml +1 -0
- data/docs/0-installation.md +2 -2
- data/docs/12-arbre-components.md +13 -0
- data/docs/13-authorization-adapter.md +6 -6
- data/docs/2-resource-customization.md +1 -1
- data/docs/3-index-pages/index-as-table.md +7 -0
- data/docs/CNAME +1 -1
- data/docs/Gemfile +0 -1
- data/docs/Gemfile.lock +3 -4
- data/docs/_config.yml +2 -0
- data/docs/_includes/top-menu.html +2 -2
- data/docs/index.html +109 -8
- data/docs/stylesheets/main.css +29 -0
- data/lib/active_admin.rb +10 -4
- data/lib/active_admin/application.rb +11 -18
- data/lib/active_admin/application_settings.rb +3 -0
- data/lib/active_admin/asset_registration.rb +0 -8
- data/lib/active_admin/base_controller.rb +6 -6
- data/lib/active_admin/base_controller/authorization.rb +3 -4
- data/lib/active_admin/batch_actions/controller.rb +2 -2
- data/lib/active_admin/batch_actions/resource_extension.rb +9 -5
- data/lib/active_admin/callbacks.rb +1 -1
- data/lib/active_admin/controller_action.rb +2 -1
- data/lib/active_admin/csv_builder.rb +4 -3
- data/lib/active_admin/dependency.rb +3 -75
- data/lib/active_admin/dsl.rb +1 -8
- data/lib/active_admin/error.rb +4 -2
- data/lib/active_admin/filters/active_filter.rb +5 -4
- data/lib/active_admin/filters/active_sidebar.rb +5 -1
- data/lib/active_admin/filters/forms.rb +2 -2
- data/lib/active_admin/filters/formtastic_addons.rb +1 -1
- data/lib/active_admin/filters/resource_extension.rb +3 -3
- data/lib/active_admin/form_builder.rb +3 -3
- data/lib/active_admin/generators/boilerplate.rb +12 -4
- data/lib/active_admin/helpers/scope_chain.rb +1 -0
- data/lib/active_admin/inputs/datepicker_input.rb +1 -1
- data/lib/active_admin/inputs/filters/base/search_method_select.rb +2 -2
- data/lib/active_admin/menu_item.rb +1 -1
- data/lib/active_admin/namespace.rb +2 -2
- data/lib/active_admin/namespace_settings.rb +7 -4
- data/lib/active_admin/orm/active_record/comments.rb +4 -4
- data/lib/active_admin/orm/active_record/comments/comment.rb +2 -2
- data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +10 -5
- data/lib/active_admin/page_dsl.rb +1 -1
- data/lib/active_admin/page_presenter.rb +2 -1
- data/lib/active_admin/pundit_adapter.rb +18 -5
- data/lib/active_admin/resource.rb +17 -3
- data/lib/active_admin/resource/action_items.rb +1 -1
- data/lib/active_admin/resource/attributes.rb +7 -4
- data/lib/active_admin/resource/belongs_to.rb +6 -1
- data/lib/active_admin/resource/menu.rb +3 -3
- data/lib/active_admin/resource/model.rb +15 -0
- data/lib/active_admin/resource/naming.rb +3 -3
- data/lib/active_admin/resource/routes.rb +20 -7
- data/lib/active_admin/resource/scopes.rb +3 -3
- data/lib/active_admin/resource/sidebars.rb +1 -1
- data/lib/active_admin/resource_collection.rb +2 -2
- data/lib/active_admin/resource_controller.rb +2 -0
- data/lib/active_admin/resource_controller/action_builder.rb +10 -0
- data/lib/active_admin/resource_controller/polymorphic_routes.rb +36 -0
- data/lib/active_admin/resource_controller/resource_class_methods.rb +2 -0
- data/lib/active_admin/resource_controller/scoping.rb +1 -1
- data/lib/active_admin/resource_dsl.rb +6 -4
- data/lib/active_admin/router.rb +3 -2
- data/lib/active_admin/scope.rb +11 -7
- data/lib/active_admin/settings_node.rb +1 -1
- data/lib/active_admin/sidebar_section.rb +3 -1
- data/lib/active_admin/version.rb +1 -1
- data/lib/active_admin/view_helpers.rb +1 -1
- data/lib/active_admin/view_helpers/breadcrumb_helper.rb +2 -2
- data/lib/active_admin/view_helpers/display_helper.rb +13 -4
- data/lib/active_admin/view_helpers/download_format_links_helper.rb +1 -0
- data/lib/active_admin/view_helpers/method_or_proc_helper.rb +3 -0
- data/lib/active_admin/views.rb +1 -1
- data/lib/active_admin/views/components/active_admin_form.rb +7 -1
- data/lib/active_admin/views/components/attributes_table.rb +3 -3
- data/lib/active_admin/views/components/paginated_collection.rb +2 -2
- data/lib/active_admin/views/components/sidebar_section.rb +0 -3
- data/lib/active_admin/views/components/status_tag.rb +6 -19
- data/lib/active_admin/views/components/table_for.rb +2 -2
- data/lib/active_admin/views/components/tabs.rb +11 -2
- data/lib/active_admin/views/footer.rb +1 -1
- data/lib/active_admin/views/index_as_table.rb +12 -4
- data/lib/active_admin/views/pages/base.rb +3 -0
- data/lib/generators/active_admin/assets/assets_generator.rb +2 -2
- data/lib/generators/active_admin/assets/templates/active_admin.js +1 -0
- data/lib/generators/active_admin/install/install_generator.rb +6 -2
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +24 -2
- data/lib/generators/active_admin/install/templates/dashboard.rb +2 -3
- data/lib/generators/active_admin/install/templates/migrations/create_active_admin_comments.rb.erb +1 -15
- data/lib/generators/active_admin/page/page_generator.rb +1 -1
- data/lib/generators/active_admin/resource/resource_generator.rb +1 -1
- data/lib/generators/active_admin/resource/templates/admin.rb.erb +40 -37
- data/lib/ransack_ext.rb +3 -3
- data/vendor/assets/javascripts/jquery-ui/form-reset-mixin.js +80 -0
- data/vendor/assets/javascripts/jquery-ui/form.js +22 -0
- data/vendor/assets/javascripts/jquery-ui/labels.js +65 -0
- data/vendor/assets/javascripts/jquery-ui/widgets/checkboxradio.js +274 -283
- metadata +113 -100
- data/.circleci/config.yml +0 -467
- data/.github/ISSUE_TEMPLATE.md +0 -20
- data/.gitignore +0 -46
- data/.mdlrc +0 -1
- data/.rspec +0 -1
- data/.rspec_parallel +0 -2
- data/.rubocop.yml +0 -94
- data/.simplecov +0 -11
- data/.yardopts +0 -7
- data/Gemfile +0 -10
- data/Gemfile.common +0 -53
- data/Gemfile.lock +0 -431
- data/Rakefile +0 -23
- data/activeadmin.gemspec +0 -32
- data/app/assets/javascripts/active_admin/base.js.coffee +0 -13
- data/app/assets/javascripts/active_admin/ext/jquery-ui.js.coffee +0 -6
- data/app/assets/javascripts/active_admin/ext/jquery.js.coffee +0 -7
- data/app/assets/javascripts/active_admin/initializers/batch_actions.js.coffee +0 -11
- data/app/assets/javascripts/active_admin/initializers/datepicker.js.coffee +0 -14
- data/app/assets/javascripts/active_admin/initializers/filters.js.coffee +0 -26
- data/app/assets/javascripts/active_admin/initializers/tabs.js.coffee +0 -7
- data/app/assets/javascripts/active_admin/lib/batch_actions.js.coffee +0 -42
- data/app/assets/javascripts/active_admin/lib/checkbox-toggler.js.coffee +0 -46
- data/app/assets/javascripts/active_admin/lib/dropdown-menu.js.coffee +0 -104
- data/app/assets/javascripts/active_admin/lib/flash.js.coffee +0 -19
- data/app/assets/javascripts/active_admin/lib/has_many.js.coffee +0 -79
- data/app/assets/javascripts/active_admin/lib/modal_dialog.js.coffee +0 -45
- data/app/assets/javascripts/active_admin/lib/per_page.js.coffee +0 -46
- data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.js.coffee +0 -22
- data/bin/install_chromedriver.sh +0 -17
- data/codecov.yml +0 -25
- data/config/i18n-tasks.yml +0 -26
- data/config/mdl_style.rb +0 -11
- data/cucumber.yml +0 -7
- data/gemfiles/rails_42.gemfile +0 -10
- data/gemfiles/rails_42.gemfile.lock +0 -410
- data/gemfiles/rails_50.gemfile +0 -10
- data/gemfiles/rails_50.gemfile.lock +0 -424
- data/gemfiles/rails_51.gemfile +0 -10
- data/gemfiles/rails_51.gemfile.lock +0 -423
- data/lib/active_admin/event.rb +0 -24
- data/lib/active_admin/helpers/output_safety_helper.rb +0 -35
- data/lib/active_admin/reloader.rb +0 -25
- data/lib/bug_report_templates/active_admin_master.rb +0 -111
- data/lib/generators/active_admin/assets/templates/active_admin.js.coffee +0 -1
- data/tasks/application_generator.rb +0 -48
- data/tasks/docs.rake +0 -64
- data/tasks/gemfiles.rake +0 -8
- data/tasks/lint.rake +0 -110
- data/tasks/local.rake +0 -27
- data/tasks/test.rake +0 -43
@@ -12,9 +12,9 @@ module ActiveAdmin
|
|
12
12
|
# 1. try using `display_name` if we can locate a DB object
|
13
13
|
# 2. try using the model name translation
|
14
14
|
# 3. default to calling `titlecase` on the URL fragment
|
15
|
-
if part =~ /\A(\d+|[a-f0-9]{24}|(?:[a-f0-9]{8}-(?:[a-f0-9]{4}-){3}[a-f0-9]{12}))\z/ && parts[index-1]
|
15
|
+
if part =~ /\A(\d+|[a-f0-9]{24}|(?:[a-f0-9]{8}-(?:[a-f0-9]{4}-){3}[a-f0-9]{12}))\z/ && parts[index - 1]
|
16
16
|
parent = active_admin_config.belongs_to_config.try :target
|
17
|
-
config = parent && parent.resource_name.route_key == parts[index-1] ? parent : active_admin_config
|
17
|
+
config = parent && parent.resource_name.route_key == parts[index - 1] ? parent : active_admin_config
|
18
18
|
name = display_name config.find_resource part
|
19
19
|
end
|
20
20
|
name ||= I18n.t "activerecord.models.#{part.singularize}", count: ::ActiveAdmin::Helpers::I18n::PLURAL_MANY_COUNT, default: part.titlecase
|
@@ -2,8 +2,9 @@ module ActiveAdmin
|
|
2
2
|
module ViewHelpers
|
3
3
|
module DisplayHelper
|
4
4
|
|
5
|
-
DISPLAY_NAME_FALLBACK = ->{
|
6
|
-
name
|
5
|
+
DISPLAY_NAME_FALLBACK = -> {
|
6
|
+
name = ""
|
7
|
+
klass = self.class
|
7
8
|
name << klass.model_name.human if klass.respond_to? :model_name
|
8
9
|
name << " ##{send(klass.primary_key)}" if klass.respond_to? :primary_key
|
9
10
|
name.present? ? name : to_s
|
@@ -15,7 +16,7 @@ module ActiveAdmin
|
|
15
16
|
# Attempts to call any known display name methods on the resource.
|
16
17
|
# See the setting in `application.rb` for the list of methods and their priority.
|
17
18
|
def display_name(resource)
|
18
|
-
|
19
|
+
ERB::Util.html_escape(render_in_context(resource, display_name_method_for(resource))) unless resource.nil?
|
19
20
|
end
|
20
21
|
|
21
22
|
# Looks up and caches the first available display name method.
|
@@ -25,7 +26,7 @@ module ActiveAdmin
|
|
25
26
|
@@display_name_methods_cache ||= {}
|
26
27
|
@@display_name_methods_cache[resource.class] ||= begin
|
27
28
|
methods = active_admin_application.display_name_methods - association_methods_for(resource)
|
28
|
-
method = methods.detect{ |method| resource.respond_to? method }
|
29
|
+
method = methods.detect { |method| resource.respond_to? method }
|
29
30
|
|
30
31
|
if method != :to_s || resource.method(method).source_location
|
31
32
|
method
|
@@ -69,16 +70,24 @@ module ActiveAdmin
|
|
69
70
|
object.to_s
|
70
71
|
when Date, Time
|
71
72
|
I18n.localize object, format: active_admin_application.localize_format
|
73
|
+
when Array
|
74
|
+
format_collection(object)
|
72
75
|
else
|
73
76
|
if defined?(::ActiveRecord) && object.is_a?(ActiveRecord::Base) ||
|
74
77
|
defined?(::Mongoid) && object.class.include?(Mongoid::Document)
|
75
78
|
auto_link object
|
79
|
+
elsif defined?(::ActiveRecord) && object.is_a?(ActiveRecord::Relation)
|
80
|
+
format_collection(object)
|
76
81
|
else
|
77
82
|
display_name object
|
78
83
|
end
|
79
84
|
end
|
80
85
|
end
|
81
86
|
|
87
|
+
def format_collection(collection)
|
88
|
+
safe_join(collection.map { |item| pretty_format(item) }, ', ')
|
89
|
+
end
|
90
|
+
|
82
91
|
def boolean_attr?(resource, attr, value)
|
83
92
|
case value
|
84
93
|
when TrueClass, FalseClass
|
data/lib/active_admin/views.rb
CHANGED
@@ -57,6 +57,12 @@ module ActiveAdmin
|
|
57
57
|
end
|
58
58
|
insert_tag(SemanticInputsProxy, form_builder, *args, &wrapped_block)
|
59
59
|
else
|
60
|
+
# Set except option to prevent sensitive fields from being shown in forms by default.
|
61
|
+
opts = args.extract_options!
|
62
|
+
opts[:except] ||= []
|
63
|
+
ActiveAdmin.application.filter_attributes.each { |e| opts[:except] << e }
|
64
|
+
args << opts
|
65
|
+
|
60
66
|
proxy_call_to_form(:inputs, *args, &block)
|
61
67
|
end
|
62
68
|
end
|
@@ -125,7 +131,7 @@ module ActiveAdmin
|
|
125
131
|
legend = args.shift if args.first.is_a?(::String)
|
126
132
|
legend = html_options.delete(:name) if html_options.key?(:name)
|
127
133
|
legend_tag = legend ? "<legend><span>#{legend}</span></legend>" : ""
|
128
|
-
fieldset_attrs = html_options.map {|k, v| %Q{#{k}="#{v}"} }.join(" ")
|
134
|
+
fieldset_attrs = html_options.map { |k, v| %Q{#{k}="#{v}"} }.join(" ")
|
129
135
|
@opening_tag = "<fieldset #{fieldset_attrs}>#{legend_tag}<ol>"
|
130
136
|
@closing_tag = "</ol></fieldset>"
|
131
137
|
super(*(args << html_options), &block)
|
@@ -7,7 +7,7 @@ module ActiveAdmin
|
|
7
7
|
def build(obj, *attrs)
|
8
8
|
@collection = Array.wrap(obj)
|
9
9
|
@resource_class = @collection.first.class
|
10
|
-
options = {
|
10
|
+
options = {}
|
11
11
|
options[:for] = @collection.first if single_record?
|
12
12
|
super(options)
|
13
13
|
@table = table
|
@@ -16,7 +16,7 @@ module ActiveAdmin
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def rows(*attrs)
|
19
|
-
attrs.each {|attr| row(attr) }
|
19
|
+
attrs.each { |attr| row(attr) }
|
20
20
|
end
|
21
21
|
|
22
22
|
def row(*args, &block)
|
@@ -26,7 +26,7 @@ module ActiveAdmin
|
|
26
26
|
if options[:class]
|
27
27
|
classes << options[:class]
|
28
28
|
elsif title.present?
|
29
|
-
classes << "row-#{
|
29
|
+
classes << "row-#{title.to_s.parameterize(separator: "_")}"
|
30
30
|
end
|
31
31
|
options[:class] = classes.join(' ')
|
32
32
|
|
@@ -92,7 +92,7 @@ module ActiveAdmin
|
|
92
92
|
end
|
93
93
|
|
94
94
|
def build_pagination
|
95
|
-
options = { theme: 'active_admin' }
|
95
|
+
options = { theme: @display_total ? 'active_admin' : 'active_admin_countless' }
|
96
96
|
options[:params] = @params if @params
|
97
97
|
options[:param_name] = @param_name if @param_name
|
98
98
|
|
@@ -102,7 +102,7 @@ module ActiveAdmin
|
|
102
102
|
# you pass in the :total_pages option. We issue a query to determine
|
103
103
|
# if there is another page or not, but the limit/offset make this
|
104
104
|
# query fast.
|
105
|
-
offset = collection.offset(collection.current_page *
|
105
|
+
offset = collection.offset(collection.current_page * collection.limit_value).limit(1).count
|
106
106
|
options[:total_pages] = collection.current_page + offset
|
107
107
|
options[:right] = 0
|
108
108
|
end
|
@@ -1,11 +1,8 @@
|
|
1
|
-
require 'active_admin/helpers/output_safety_helper'
|
2
|
-
|
3
1
|
module ActiveAdmin
|
4
2
|
module Views
|
5
3
|
|
6
4
|
class SidebarSection < Panel
|
7
5
|
builder_method :sidebar_section
|
8
|
-
include OutputSafetyHelper
|
9
6
|
|
10
7
|
# Takes a ActiveAdmin::SidebarSection instance
|
11
8
|
def build(section)
|
@@ -28,11 +28,7 @@ module ActiveAdmin
|
|
28
28
|
# status_tag('active', class: 'important', id: 'status_123', label: 'on')
|
29
29
|
# # => <span class='status_tag active important' id='status_123'>on</span>
|
30
30
|
#
|
31
|
-
def build(
|
32
|
-
options = args.extract_options!
|
33
|
-
status = args[0]
|
34
|
-
type = args[1]
|
35
|
-
|
31
|
+
def build(status, options = {})
|
36
32
|
label = options.delete(:label)
|
37
33
|
classes = options.delete(:class)
|
38
34
|
status = convert_to_boolean_status(status)
|
@@ -46,19 +42,6 @@ module ActiveAdmin
|
|
46
42
|
super(content, options)
|
47
43
|
|
48
44
|
add_class(status_to_class(status)) if status
|
49
|
-
|
50
|
-
if type
|
51
|
-
Deprecation.warn <<-MSG.strip_heredoc
|
52
|
-
The `type` parameter has been deprecated. Provide the "#{type}" type as
|
53
|
-
a class instead. For example, `status_tag(status, :#{type}, class: "abc")`
|
54
|
-
would change to `status_tag(status, class: "#{type} abc")`. Also note that
|
55
|
-
the "#{type}" CSS rule will be removed too, so you'll have to provide
|
56
|
-
the styles yourself. See https://github.com/activeadmin/activeadmin/blob/master/CHANGELOG.md#110-
|
57
|
-
for more information.
|
58
|
-
MSG
|
59
|
-
add_class(type.to_s)
|
60
|
-
end
|
61
|
-
|
62
45
|
add_class(classes) if classes
|
63
46
|
end
|
64
47
|
|
@@ -68,8 +51,10 @@ module ActiveAdmin
|
|
68
51
|
case status
|
69
52
|
when true, 'true'
|
70
53
|
'Yes'
|
71
|
-
when false, 'false'
|
54
|
+
when false, 'false'
|
72
55
|
'No'
|
56
|
+
when nil
|
57
|
+
'Unset'
|
73
58
|
else
|
74
59
|
status
|
75
60
|
end
|
@@ -77,6 +62,8 @@ module ActiveAdmin
|
|
77
62
|
|
78
63
|
def status_to_class(status)
|
79
64
|
case status
|
65
|
+
when 'Unset'
|
66
|
+
'unset no'
|
80
67
|
when String, Symbol
|
81
68
|
status.to_s.titleize.gsub(/\s/, '').underscore
|
82
69
|
else
|
@@ -22,7 +22,7 @@ module ActiveAdmin
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def columns(*attrs)
|
25
|
-
attrs.each {|attr| column(attr) }
|
25
|
+
attrs.each { |attr| column(attr) }
|
26
26
|
end
|
27
27
|
|
28
28
|
def column(*args, &block)
|
@@ -147,7 +147,7 @@ module ActiveAdmin
|
|
147
147
|
if @options.has_key?(:class)
|
148
148
|
html_classes << @options.delete(:class)
|
149
149
|
elsif @title.present?
|
150
|
-
html_classes << "col-#{
|
150
|
+
html_classes << "col-#{@title.to_s.parameterize(separator: "_")}"
|
151
151
|
end
|
152
152
|
@html_class = html_classes.join(' ')
|
153
153
|
@data = args[1] || args[0]
|
@@ -15,7 +15,8 @@ module ActiveAdmin
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def build_menu_item(title, options, &block)
|
18
|
-
fragment = options.fetch(:id, title
|
18
|
+
fragment = options.fetch(:id, fragmentize(title))
|
19
|
+
|
19
20
|
html_options = options.fetch(:html_options, {})
|
20
21
|
li html_options do
|
21
22
|
link_to title, "##{fragment}"
|
@@ -23,9 +24,17 @@ module ActiveAdmin
|
|
23
24
|
end
|
24
25
|
|
25
26
|
def build_content_item(title, options, &block)
|
26
|
-
options = options.reverse_merge(id: title
|
27
|
+
options = options.reverse_merge(id: fragmentize(title))
|
27
28
|
div(options, &block)
|
28
29
|
end
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
def fragmentize(string)
|
34
|
+
result = string.parameterize
|
35
|
+
result = URI.encode(string) if result.blank?
|
36
|
+
result
|
37
|
+
end
|
29
38
|
end
|
30
39
|
end
|
31
40
|
end
|
@@ -21,7 +21,7 @@ module ActiveAdmin
|
|
21
21
|
|
22
22
|
def powered_by_message
|
23
23
|
I18n.t('active_admin.powered_by',
|
24
|
-
active_admin: link_to("Active Admin", "
|
24
|
+
active_admin: link_to("Active Admin", "https://activeadmin.info"),
|
25
25
|
version: ActiveAdmin::VERSION).html_safe
|
26
26
|
end
|
27
27
|
|
@@ -192,6 +192,13 @@ module ActiveAdmin
|
|
192
192
|
# end
|
193
193
|
# ```
|
194
194
|
#
|
195
|
+
# You can also define associated objects to include outside of the
|
196
|
+
# `scoped_collection` method:
|
197
|
+
#
|
198
|
+
# ```ruby
|
199
|
+
# includes :publisher
|
200
|
+
# ```
|
201
|
+
#
|
195
202
|
# Then it's simple to sort by any Publisher attribute from within the index table:
|
196
203
|
#
|
197
204
|
# ```ruby
|
@@ -365,15 +372,16 @@ module ActiveAdmin
|
|
365
372
|
private
|
366
373
|
|
367
374
|
def defaults(resource, options = {})
|
375
|
+
localizer = ActiveAdmin::Localizers.resource(active_admin_config)
|
368
376
|
if controller.action_methods.include?('show') && authorized?(ActiveAdmin::Auth::READ, resource)
|
369
|
-
item
|
377
|
+
item localizer.t(:view), resource_path(resource), class: "view_link #{options[:css_class]}", title: localizer.t(:view)
|
370
378
|
end
|
371
379
|
if controller.action_methods.include?('edit') && authorized?(ActiveAdmin::Auth::UPDATE, resource)
|
372
|
-
item
|
380
|
+
item localizer.t(:edit), edit_resource_path(resource), class: "edit_link #{options[:css_class]}", title: localizer.t(:edit)
|
373
381
|
end
|
374
382
|
if controller.action_methods.include?('destroy') && authorized?(ActiveAdmin::Auth::DESTROY, resource)
|
375
|
-
item
|
376
|
-
method: :delete, data: {confirm:
|
383
|
+
item localizer.t(:delete), resource_path(resource), class: "delete_link #{options[:css_class]}", title: localizer.t(:delete),
|
384
|
+
method: :delete, data: { confirm: localizer.t(:delete_confirmation) }
|
377
385
|
end
|
378
386
|
end
|
379
387
|
|
@@ -4,6 +4,7 @@ module ActiveAdmin
|
|
4
4
|
class Base < Arbre::HTML::Document
|
5
5
|
|
6
6
|
def build(*args)
|
7
|
+
set_attribute :lang, I18n.locale
|
7
8
|
build_active_admin_head
|
8
9
|
build_page
|
9
10
|
end
|
@@ -25,6 +26,8 @@ module ActiveAdmin
|
|
25
26
|
within head do
|
26
27
|
html_title [title, helpers.active_admin_namespace.site_title(self)].compact.join(" | ")
|
27
28
|
|
29
|
+
text_node(active_admin_namespace.head)
|
30
|
+
|
28
31
|
active_admin_application.stylesheets.each do |style, options|
|
29
32
|
text_node stylesheet_link_tag(style, options).html_safe
|
30
33
|
end
|
@@ -2,10 +2,10 @@ module ActiveAdmin
|
|
2
2
|
module Generators
|
3
3
|
class AssetsGenerator < Rails::Generators::Base
|
4
4
|
|
5
|
-
source_root File.expand_path(
|
5
|
+
source_root File.expand_path('templates', __dir__)
|
6
6
|
|
7
7
|
def install_assets
|
8
|
-
template 'active_admin.js
|
8
|
+
template 'active_admin.js', 'app/assets/javascripts/active_admin.js'
|
9
9
|
template "active_admin.scss", "app/assets/stylesheets/active_admin.scss"
|
10
10
|
end
|
11
11
|
|
@@ -0,0 +1 @@
|
|
1
|
+
//= require active_admin/base
|
@@ -7,12 +7,14 @@ module ActiveAdmin
|
|
7
7
|
argument :name, type: :string, default: "AdminUser"
|
8
8
|
|
9
9
|
hook_for :users, default: "devise", desc: "Admin user generator to run. Skip with --skip-users"
|
10
|
+
class_option :skip_comments, type: :boolean, default: false, desc: "Skip installation of comments"
|
10
11
|
|
11
|
-
source_root File.expand_path(
|
12
|
+
source_root File.expand_path('templates', __dir__)
|
12
13
|
|
13
14
|
def copy_initializer
|
14
15
|
@underscored_user_name = name.underscore.gsub('/', '_')
|
15
16
|
@use_authentication_method = options[:users].present?
|
17
|
+
@skip_comments = options[:skip_comments]
|
16
18
|
template 'active_admin.rb.erb', 'config/initializers/active_admin.rb'
|
17
19
|
end
|
18
20
|
|
@@ -38,7 +40,9 @@ module ActiveAdmin
|
|
38
40
|
end
|
39
41
|
|
40
42
|
def create_migrations
|
41
|
-
|
43
|
+
unless options[:skip_comments]
|
44
|
+
migration_template 'migrations/create_active_admin_comments.rb.erb', 'db/migrate/create_active_admin_comments.rb'
|
45
|
+
end
|
42
46
|
end
|
43
47
|
end
|
44
48
|
end
|
@@ -69,6 +69,11 @@ ActiveAdmin.setup do |config|
|
|
69
69
|
# case when Pundit is unable to find suitable policy.
|
70
70
|
# config.pundit_default_policy = "MyDefaultPunditPolicy"
|
71
71
|
|
72
|
+
# If you wish to maintain a separate set of Pundit policies for admin
|
73
|
+
# resources, you may set a namespace here that Pundit will search
|
74
|
+
# within when looking for a resource's policy.
|
75
|
+
# config.pundit_policy_namespace = :admin
|
76
|
+
|
72
77
|
# You can customize your CanCan Ability class name here.
|
73
78
|
# config.cancan_ability_class = "Ability"
|
74
79
|
|
@@ -119,7 +124,7 @@ ActiveAdmin.setup do |config|
|
|
119
124
|
# This allows your users to comment on any resource registered with Active Admin.
|
120
125
|
#
|
121
126
|
# You can completely disable comments:
|
122
|
-
|
127
|
+
<% unless @skip_comments %># <% end %>config.comments = false
|
123
128
|
#
|
124
129
|
# You can change the name under which comments are registered:
|
125
130
|
# config.comments_registration_name = 'AdminComment'
|
@@ -147,11 +152,21 @@ ActiveAdmin.setup do |config|
|
|
147
152
|
#
|
148
153
|
# config.before_action :do_something_awesome
|
149
154
|
|
155
|
+
# == Attribute Filters
|
156
|
+
#
|
157
|
+
# You can exclude possibly sensitive model attributes from being displayed,
|
158
|
+
# added to forms, or exported by default by ActiveAdmin
|
159
|
+
#
|
160
|
+
config.filter_attributes = [:encrypted_password, :password, :password_confirmation]
|
161
|
+
|
150
162
|
# == Localize Date/Time Format
|
151
163
|
#
|
152
164
|
# Set the localize format to display dates and times.
|
153
165
|
# To understand how to localize your app with I18n, read more at
|
154
|
-
# https://
|
166
|
+
# https://guides.rubyonrails.org/i18n.html
|
167
|
+
#
|
168
|
+
# You can run `bin/rails runner 'puts I18n.t("date.formats")'` to see the
|
169
|
+
# available formats in your application.
|
155
170
|
#
|
156
171
|
config.localize_format = :long
|
157
172
|
|
@@ -277,6 +292,13 @@ ActiveAdmin.setup do |config|
|
|
277
292
|
#
|
278
293
|
# config.include_default_association_filters = true
|
279
294
|
|
295
|
+
# == Head
|
296
|
+
#
|
297
|
+
# You can add your own content to the site head like analytics. Make sure
|
298
|
+
# you only pass content you trust.
|
299
|
+
#
|
300
|
+
# config.head = ''.html_safe
|
301
|
+
|
280
302
|
# == Footer
|
281
303
|
#
|
282
304
|
# By default, the footer shows the current Active Admin version. You can
|
@@ -1,8 +1,7 @@
|
|
1
1
|
ActiveAdmin.register_page "Dashboard" do
|
2
|
+
menu priority: 1, label: proc { I18n.t("active_admin.dashboard") }
|
2
3
|
|
3
|
-
|
4
|
-
|
5
|
-
content title: proc{ I18n.t("active_admin.dashboard") } do
|
4
|
+
content title: proc { I18n.t("active_admin.dashboard") } do
|
6
5
|
div class: "blank_slate_container", id: "dashboard_default_message" do
|
7
6
|
span class: "blank_slate" do
|
8
7
|
span I18n.t("active_admin.dashboard_welcome.welcome")
|