activeadmin 0.3.4 → 0.4.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.
- data/.gitignore +1 -0
- data/.travis.yml +3 -0
- data/CHANGELOG.md +164 -5
- data/CONTRIBUTING.md +113 -0
- data/Gemfile +7 -9
- data/LICENSE +1 -1
- data/README.rdoc +19 -20
- data/activeadmin.gemspec +4 -2
- data/app/assets/javascripts/active_admin/application.js +9 -0
- data/app/assets/javascripts/active_admin/base.js +4 -12
- data/app/assets/stylesheets/active_admin/_base.css.scss +17 -341
- data/app/assets/stylesheets/active_admin/_forms.css.scss +13 -7
- data/app/assets/stylesheets/active_admin/_header.css.scss +23 -4
- data/app/assets/stylesheets/active_admin/components/_blank_slates.scss +31 -0
- data/app/assets/stylesheets/active_admin/components/_breadcrumbs.scss +20 -0
- data/app/assets/stylesheets/active_admin/components/_buttons.scss +12 -0
- data/app/assets/stylesheets/active_admin/components/_flash_messages.css.scss +2 -0
- data/app/assets/stylesheets/active_admin/components/_grid.scss +9 -0
- data/app/assets/stylesheets/active_admin/components/_links.scss +5 -0
- data/app/assets/stylesheets/active_admin/components/_pagination.scss +34 -0
- data/app/assets/stylesheets/active_admin/components/_panels.scss +6 -0
- data/app/assets/stylesheets/active_admin/components/_scopes.scss +10 -0
- data/app/assets/stylesheets/active_admin/components/_status_tags.scss +12 -0
- data/app/assets/stylesheets/active_admin/components/_table_tools.css.scss +101 -0
- data/app/assets/stylesheets/active_admin/components/_tables.css.scss +43 -2
- data/app/assets/stylesheets/active_admin/mixins/_all.css.scss +2 -1
- data/app/assets/stylesheets/active_admin/mixins/_buttons.css.scss +50 -13
- data/app/assets/stylesheets/active_admin/mixins/_gradients.css.scss +9 -1
- data/app/assets/stylesheets/active_admin/mixins/_sections.css.scss +7 -5
- data/app/assets/stylesheets/active_admin/mixins/_shadows.css.scss +1 -0
- data/app/assets/stylesheets/active_admin/mixins/_typography.scss +3 -0
- data/app/assets/stylesheets/active_admin/mixins/_utilities.scss +9 -0
- data/app/assets/stylesheets/active_admin/mixins/_variables.css.scss +1 -0
- data/app/assets/stylesheets/active_admin/pages/_dashboard.scss +5 -0
- data/app/assets/stylesheets/active_admin/pages/_logged_out.scss +44 -0
- data/app/assets/stylesheets/active_admin/structure/_footer.scss +14 -0
- data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +26 -0
- data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +44 -0
- 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/sessions/new.html.erb +1 -1
- data/app/views/active_admin/devise/shared/_links.erb +1 -1
- data/app/views/active_admin/devise/unlocks/new.html.erb +1 -1
- data/app/views/active_admin/page/index.html.arb +1 -0
- data/app/views/layouts/active_admin_logged_out.html.erb +2 -2
- data/cucumber.yml +3 -2
- data/docs/1-general-configuration.md +46 -10
- data/docs/6-show-screens.md +7 -0
- data/docs/8-custom-actions.md +12 -2
- data/docs/9-custom-pages.md +84 -0
- data/features/belongs_to.feature +27 -0
- data/features/comments/commenting.feature +3 -2
- data/features/dashboard.feature +18 -0
- data/features/development_reloading.feature +43 -0
- data/features/index/filter_with_check_boxes.feature +25 -0
- data/features/index/index_as_table.feature +14 -0
- data/features/index/index_scopes.feature +59 -0
- data/features/index/pagination.feature +19 -1
- data/features/menu.feature +22 -2
- data/features/registering_assets.feature +2 -2
- data/features/registering_pages.feature +66 -0
- data/features/specifying_actions.feature +5 -0
- data/features/step_definitions/action_item_steps.rb +2 -6
- data/features/step_definitions/action_link_steps.rb +7 -0
- data/features/step_definitions/additional_web_steps.rb +11 -3
- data/features/step_definitions/asset_steps.rb +5 -1
- data/features/step_definitions/breadcrumb_steps.rb +5 -0
- data/features/step_definitions/comment_steps.rb +3 -3
- data/features/step_definitions/configuration_steps.rb +69 -13
- data/features/step_definitions/dashboard_steps.rb +7 -3
- data/features/step_definitions/factory_steps.rb +9 -2
- data/features/step_definitions/flash_steps.rb +9 -1
- data/features/step_definitions/format_steps.rb +9 -1
- data/features/step_definitions/index_scope_steps.rb +18 -6
- data/features/step_definitions/member_link_steps.rb +7 -0
- data/features/step_definitions/pagination_steps.rb +2 -2
- data/features/step_definitions/site_title_steps.rb +15 -0
- data/features/step_definitions/tab_steps.rb +1 -1
- data/features/step_definitions/user_steps.rb +1 -1
- data/features/step_definitions/web_steps.rb +4 -4
- data/features/support/paths.rb +6 -0
- data/features/users/logging_out.feature +11 -0
- data/lib/active_admin.rb +26 -10
- data/lib/active_admin/application.rb +64 -22
- data/lib/active_admin/arbre.rb +0 -1
- data/lib/active_admin/arbre/builder.rb +8 -5
- data/lib/active_admin/arbre/context.rb +1 -1
- data/lib/active_admin/arbre/html/attributes.rb +1 -1
- data/lib/active_admin/arbre/html/class_list.rb +0 -4
- data/lib/active_admin/arbre/html/collection.rb +2 -2
- data/lib/active_admin/arbre/html/document.rb +1 -1
- data/lib/active_admin/arbre/html/element.rb +19 -9
- data/lib/active_admin/arbre/html/tag.rb +3 -3
- data/lib/active_admin/arbre/html/text_node.rb +2 -2
- data/lib/active_admin/asset_registration.rb +15 -2
- data/lib/active_admin/base_controller.rb +61 -0
- data/lib/active_admin/{resource_controller → base_controller}/menu.rb +1 -1
- data/lib/active_admin/callbacks.rb +16 -18
- data/lib/active_admin/comments.rb +48 -54
- data/lib/active_admin/comments/comment.rb +13 -2
- data/lib/active_admin/comments/namespace_helper.rb +1 -1
- data/lib/active_admin/comments/views/active_admin_comments.rb +7 -3
- data/lib/active_admin/dashboards.rb +4 -0
- data/lib/active_admin/dashboards/dashboard_controller.rb +21 -5
- data/lib/active_admin/dsl.rb +6 -159
- data/lib/active_admin/event.rb +5 -3
- data/lib/active_admin/filter_form_builder.rb +53 -0
- data/lib/active_admin/form_builder.rb +25 -19
- data/lib/active_admin/helpers/settings.rb +6 -10
- data/lib/active_admin/inputs.rb +14 -0
- data/lib/active_admin/inputs/datepicker_input.rb +11 -0
- data/lib/active_admin/inputs/filter_base.rb +46 -0
- data/lib/active_admin/inputs/filter_check_boxes_input.rb +40 -0
- data/lib/active_admin/inputs/filter_date_range_input.rb +34 -0
- data/lib/active_admin/inputs/filter_numeric_input.rb +55 -0
- data/lib/active_admin/inputs/filter_select_input.rb +23 -0
- data/lib/active_admin/inputs/filter_string_input.rb +22 -0
- data/lib/active_admin/locales/ca.yml +44 -0
- data/lib/active_admin/locales/cs.yml +14 -10
- data/lib/active_admin/locales/de.yml +44 -0
- data/lib/active_admin/locales/en.yml +5 -0
- data/lib/active_admin/locales/hr.yml +40 -0
- data/lib/active_admin/locales/hu.yml +45 -0
- data/lib/active_admin/locales/it.yml +11 -6
- data/lib/active_admin/locales/ko.yml +40 -0
- data/lib/active_admin/locales/lv.yml +43 -0
- data/lib/active_admin/locales/nl.yml +40 -0
- data/lib/active_admin/locales/no-NB.yml +40 -0
- data/lib/active_admin/locales/pl.yml +7 -1
- data/lib/active_admin/locales/pt-BR.yml +6 -2
- data/lib/active_admin/menu_item.rb +25 -17
- data/lib/active_admin/namespace.rb +48 -33
- data/lib/active_admin/page.rb +65 -0
- data/lib/active_admin/page_controller.rb +15 -0
- data/lib/active_admin/page_dsl.rb +21 -0
- data/lib/active_admin/page_presenter.rb +30 -0
- data/lib/active_admin/reloader.rb +109 -42
- data/lib/active_admin/resource.rb +38 -44
- data/lib/active_admin/resource/action_items.rb +5 -0
- data/lib/active_admin/resource/belongs_to.rb +4 -2
- data/lib/active_admin/resource/controllers.rb +35 -0
- data/lib/active_admin/resource/menu.rb +1 -2
- data/lib/active_admin/resource/naming.rb +53 -31
- data/lib/active_admin/resource/page_presenters.rb +28 -0
- data/lib/active_admin/resource/scopes.rb +16 -3
- data/lib/active_admin/resource/sidebars.rb +4 -0
- data/lib/active_admin/resource_collection.rb +88 -0
- data/lib/active_admin/resource_controller.rb +18 -54
- data/lib/active_admin/resource_controller/action_builder.rb +1 -1
- data/lib/active_admin/resource_controller/actions.rb +8 -8
- data/lib/active_admin/resource_controller/callbacks.rb +1 -1
- data/lib/active_admin/resource_controller/collection.rb +8 -4
- data/lib/active_admin/resource_controller/filters.rb +1 -1
- data/lib/active_admin/resource_controller/resource_class_methods.rb +24 -0
- data/lib/active_admin/resource_controller/scoping.rb +1 -1
- data/lib/active_admin/resource_controller/sidebars.rb +1 -1
- data/lib/active_admin/resource_dsl.rb +157 -0
- data/lib/active_admin/router.rb +21 -14
- data/lib/active_admin/scope.rb +15 -3
- data/lib/active_admin/version.rb +1 -1
- data/lib/active_admin/view_factory.rb +4 -3
- data/lib/active_admin/view_helpers/auto_link_helper.rb +1 -10
- data/lib/active_admin/view_helpers/breadcrumb_helper.rb +25 -21
- data/lib/active_admin/view_helpers/filter_form_helper.rb +0 -150
- data/lib/active_admin/views/components/attributes_table.rb +1 -1
- data/lib/active_admin/views/components/columns.rb +4 -4
- data/lib/active_admin/views/components/paginated_collection.rb +42 -13
- data/lib/active_admin/views/components/panel.rb +8 -0
- data/lib/active_admin/views/components/scopes.rb +24 -18
- data/lib/active_admin/views/components/status_tag.rb +6 -5
- data/lib/active_admin/views/components/table_for.rb +6 -2
- data/lib/active_admin/views/header_renderer.rb +31 -12
- data/lib/active_admin/views/index_as_block.rb +2 -2
- data/lib/active_admin/views/index_as_blog.rb +3 -3
- data/lib/active_admin/views/index_as_grid.rb +4 -4
- data/lib/active_admin/views/index_as_table.rb +13 -6
- data/lib/active_admin/views/pages/base.rb +4 -4
- data/lib/active_admin/views/pages/form.rb +49 -0
- data/lib/active_admin/views/pages/index.rb +18 -6
- data/lib/active_admin/views/pages/page.rb +24 -0
- data/lib/active_admin/views/pages/show.rb +1 -1
- data/lib/generators/active_admin/assets/assets_generator.rb +19 -1
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +38 -12
- data/lib/generators/active_admin/install/templates/dashboards.rb +6 -0
- data/script/use_rails +14 -7
- data/spec/spec_helper.rb +9 -14
- data/spec/spec_helper_without_rails.rb +10 -0
- data/spec/support/detect_rails_version.rb +22 -3
- data/spec/support/integration_example_group.rb +5 -7
- data/spec/support/rails_template.rb +11 -0
- data/spec/support/rails_template_with_data.rb +25 -0
- data/spec/support/templates/cucumber_with_reloading.rb +5 -0
- data/spec/unit/active_admin_spec.rb +8 -0
- data/spec/unit/application_spec.rb +48 -2
- data/spec/unit/arbre/context_spec.rb +1 -1
- data/spec/unit/arbre/html/element_finder_methods_spec.rb +58 -2
- data/spec/unit/arbre/html/element_spec.rb +18 -5
- data/spec/unit/arbre/html/tag_attributes_spec.rb +3 -3
- data/spec/unit/arbre/html/tag_spec.rb +1 -1
- data/spec/unit/arbre/html_spec.rb +32 -22
- data/spec/unit/asset_registration_spec.rb +9 -3
- data/spec/unit/auto_link_spec.rb +2 -2
- data/spec/unit/base_controller_shared_examples.rb +28 -0
- data/spec/unit/base_controller_spec.rb +8 -0
- data/spec/unit/belongs_to_spec.rb +30 -33
- data/spec/unit/comments_spec.rb +45 -15
- data/spec/unit/config_shared_examples.rb +119 -0
- data/spec/unit/dashboard_controller_spec.rb +44 -0
- data/spec/unit/event_spec.rb +6 -0
- data/spec/unit/filter_form_builder_spec.rb +9 -0
- data/spec/unit/form_builder_spec.rb +8 -14
- data/spec/unit/menu_item_spec.rb +25 -20
- data/spec/unit/namespace/register_page_spec.rb +102 -0
- data/spec/unit/namespace/register_resource_spec.rb +188 -0
- data/spec/unit/namespace_spec.rb +11 -183
- data/spec/unit/page_controller_spec.rb +8 -0
- data/spec/unit/page_spec.rb +60 -0
- data/spec/unit/reloader_spec.rb +82 -38
- data/spec/unit/resource/menu_spec.rb +1 -51
- data/spec/unit/resource/naming_spec.rb +25 -20
- data/spec/unit/resource/page_presenters_spec.rb +32 -0
- data/spec/unit/resource/scopes_spec.rb +13 -0
- data/spec/unit/resource_collection_spec.rb +101 -0
- data/spec/unit/resource_controller_spec.rb +40 -32
- data/spec/unit/{registration_spec.rb → resource_registration_spec.rb} +0 -0
- data/spec/unit/resource_spec.rb +8 -24
- data/spec/unit/routing_spec.rb +50 -1
- data/spec/unit/scope_spec.rb +18 -4
- data/spec/unit/views/components/paginated_collection_spec.rb +163 -0
- data/spec/unit/views/components/panel_spec.rb +9 -0
- data/spec/unit/views/components/status_tag_spec.rb +9 -0
- data/spec/unit/views/tabbed_navigation_spec.rb +2 -1
- data/tasks/test.rake +44 -26
- metadata +176 -69
- data/app/assets/javascripts/active_admin/vendor.js +0 -382
- data/lib/active_admin/arbre/core_extensions.rb +0 -5
- data/lib/active_admin/comments/configuration.rb +0 -18
- data/lib/active_admin/page_config.rb +0 -15
- data/lib/active_admin/resource_controller/form.rb +0 -42
- data/lib/active_admin/resource_controller/page_configurations.rb +0 -53
- data/lib/active_admin/views/pages/edit.rb +0 -28
- data/lib/active_admin/views/pages/new.rb +0 -28
- data/lib/generators/active_admin/assets/templates/3.0/active_admin.js +0 -427
- data/spec/integration/belongs_to_spec.rb +0 -42
data/lib/active_admin/arbre.rb
CHANGED
|
@@ -65,7 +65,7 @@ module Arbre
|
|
|
65
65
|
# Render the blocks contents
|
|
66
66
|
if block_given?
|
|
67
67
|
with_current_dom_context tag do
|
|
68
|
-
|
|
68
|
+
append_return_block(yield)
|
|
69
69
|
end
|
|
70
70
|
end
|
|
71
71
|
end
|
|
@@ -98,10 +98,13 @@ module Arbre
|
|
|
98
98
|
end
|
|
99
99
|
alias_method :within, :with_current_dom_context
|
|
100
100
|
|
|
101
|
-
#
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
101
|
+
# Appends the value to the current DOM element if there are no
|
|
102
|
+
# existing DOM Children and it responds to #to_s
|
|
103
|
+
def append_return_block(tag)
|
|
104
|
+
return nil if current_dom_context.children?
|
|
105
|
+
|
|
106
|
+
if !tag.is_a?(Arbre::HTML::Element) && tag.respond_to?(:to_s)
|
|
107
|
+
current_dom_context << Arbre::HTML::TextNode.from_string(tag.to_s)
|
|
105
108
|
end
|
|
106
109
|
end
|
|
107
110
|
end
|
|
@@ -35,7 +35,7 @@ module Arbre
|
|
|
35
35
|
|
|
36
36
|
def build(*args, &block)
|
|
37
37
|
# Render the block passing ourselves in
|
|
38
|
-
|
|
38
|
+
append_return_block(block.call(self)) if block
|
|
39
39
|
end
|
|
40
40
|
|
|
41
41
|
def add_child(child)
|
|
@@ -70,6 +70,10 @@ module Arbre
|
|
|
70
70
|
add_child(child)
|
|
71
71
|
end
|
|
72
72
|
|
|
73
|
+
def children?
|
|
74
|
+
@children.any?
|
|
75
|
+
end
|
|
76
|
+
|
|
73
77
|
def parent=(parent)
|
|
74
78
|
@parent = parent
|
|
75
79
|
end
|
|
@@ -97,12 +101,22 @@ module Arbre
|
|
|
97
101
|
end
|
|
98
102
|
alias_method :find_by_tag, :get_elements_by_tag_name
|
|
99
103
|
|
|
104
|
+
def get_elements_by_class_name(class_name)
|
|
105
|
+
elements = Collection.new
|
|
106
|
+
children.each do |child|
|
|
107
|
+
elements << child if child.class_list =~ /#{class_name}/
|
|
108
|
+
elements.concat(child.get_elements_by_tag_name(tag_name))
|
|
109
|
+
end
|
|
110
|
+
elements
|
|
111
|
+
end
|
|
112
|
+
alias_method :find_by_class, :get_elements_by_class_name
|
|
113
|
+
|
|
100
114
|
def content
|
|
101
|
-
children.
|
|
115
|
+
children.to_s
|
|
102
116
|
end
|
|
103
117
|
|
|
104
118
|
def html_safe
|
|
105
|
-
|
|
119
|
+
to_s
|
|
106
120
|
end
|
|
107
121
|
|
|
108
122
|
def indent_level
|
|
@@ -110,18 +124,14 @@ module Arbre
|
|
|
110
124
|
end
|
|
111
125
|
|
|
112
126
|
def each(&block)
|
|
113
|
-
[
|
|
114
|
-
end
|
|
115
|
-
|
|
116
|
-
def to_s
|
|
117
|
-
to_html
|
|
127
|
+
[to_s].each(&block)
|
|
118
128
|
end
|
|
119
129
|
|
|
120
130
|
def to_str
|
|
121
131
|
to_s
|
|
122
132
|
end
|
|
123
133
|
|
|
124
|
-
def
|
|
134
|
+
def to_s
|
|
125
135
|
content
|
|
126
136
|
end
|
|
127
137
|
|
|
@@ -65,14 +65,14 @@ module Arbre
|
|
|
65
65
|
|
|
66
66
|
# Returns a string of classes
|
|
67
67
|
def class_names
|
|
68
|
-
class_list.
|
|
68
|
+
class_list.to_s
|
|
69
69
|
end
|
|
70
70
|
|
|
71
71
|
def class_list
|
|
72
72
|
get_attribute(:class) || set_attribute(:class, ClassList.new)
|
|
73
73
|
end
|
|
74
74
|
|
|
75
|
-
def
|
|
75
|
+
def to_s
|
|
76
76
|
indent("<#{tag_name}#{attributes_html}>", content, "</#{tag_name}>").html_safe
|
|
77
77
|
end
|
|
78
78
|
|
|
@@ -118,7 +118,7 @@ module Arbre
|
|
|
118
118
|
|
|
119
119
|
|
|
120
120
|
def attributes_html
|
|
121
|
-
attributes.any? ? " " + attributes.
|
|
121
|
+
attributes.any? ? " " + attributes.to_s : nil
|
|
122
122
|
end
|
|
123
123
|
|
|
124
124
|
def set_for_attribute(record)
|
|
@@ -3,8 +3,8 @@ module ActiveAdmin
|
|
|
3
3
|
|
|
4
4
|
# Stylesheets
|
|
5
5
|
|
|
6
|
-
def register_stylesheet(
|
|
7
|
-
stylesheets <<
|
|
6
|
+
def register_stylesheet(*args)
|
|
7
|
+
stylesheets << ActiveAdmin::Stylesheet.new(*args)
|
|
8
8
|
end
|
|
9
9
|
|
|
10
10
|
def stylesheets
|
|
@@ -31,4 +31,17 @@ module ActiveAdmin
|
|
|
31
31
|
end
|
|
32
32
|
|
|
33
33
|
end
|
|
34
|
+
|
|
35
|
+
# Wrapper class for stylesheet registration
|
|
36
|
+
class Stylesheet
|
|
37
|
+
|
|
38
|
+
attr_reader :options, :path
|
|
39
|
+
|
|
40
|
+
def initialize(*args)
|
|
41
|
+
@options = args.extract_options!
|
|
42
|
+
@path = args.first if args.first
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
end
|
|
46
|
+
|
|
34
47
|
end
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
require 'inherited_resources'
|
|
2
|
+
require 'active_admin/base_controller/menu'
|
|
3
|
+
|
|
4
|
+
module ActiveAdmin
|
|
5
|
+
# BaseController for ActiveAdmin.
|
|
6
|
+
# It implements ActiveAdmin controllers core features.
|
|
7
|
+
class BaseController < ::InheritedResources::Base
|
|
8
|
+
helper ::ActiveAdmin::ViewHelpers
|
|
9
|
+
|
|
10
|
+
layout 'active_admin'
|
|
11
|
+
|
|
12
|
+
before_filter :only_render_implemented_actions
|
|
13
|
+
before_filter :authenticate_active_admin_user
|
|
14
|
+
|
|
15
|
+
class << self
|
|
16
|
+
# Ensure that this method is available for the DSL
|
|
17
|
+
public :actions
|
|
18
|
+
|
|
19
|
+
# Reference to the Resource object which initialized
|
|
20
|
+
# this controller
|
|
21
|
+
attr_accessor :active_admin_config
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# By default Rails will render un-implemented actions when the view exists. Becuase Active
|
|
25
|
+
# Admin allows you to not render any of the actions by using the #actions method, we need
|
|
26
|
+
# to check if they are implemented.
|
|
27
|
+
def only_render_implemented_actions
|
|
28
|
+
raise AbstractController::ActionNotFound unless action_methods.include?(params[:action])
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
include Menu
|
|
32
|
+
|
|
33
|
+
private
|
|
34
|
+
|
|
35
|
+
# Calls the authentication method as defined in ActiveAdmin.authentication_method
|
|
36
|
+
def authenticate_active_admin_user
|
|
37
|
+
send(active_admin_namespace.authentication_method) if active_admin_namespace.authentication_method
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def current_active_admin_user
|
|
41
|
+
send(active_admin_namespace.current_user_method) if active_admin_namespace.current_user_method
|
|
42
|
+
end
|
|
43
|
+
helper_method :current_active_admin_user
|
|
44
|
+
|
|
45
|
+
def current_active_admin_user?
|
|
46
|
+
!current_active_admin_user.nil?
|
|
47
|
+
end
|
|
48
|
+
helper_method :current_active_admin_user?
|
|
49
|
+
|
|
50
|
+
def active_admin_config
|
|
51
|
+
self.class.active_admin_config
|
|
52
|
+
end
|
|
53
|
+
helper_method :active_admin_config
|
|
54
|
+
|
|
55
|
+
def active_admin_namespace
|
|
56
|
+
active_admin_config.namespace
|
|
57
|
+
end
|
|
58
|
+
helper_method :active_admin_namespace
|
|
59
|
+
|
|
60
|
+
end
|
|
61
|
+
end
|
|
@@ -2,25 +2,23 @@ module ActiveAdmin
|
|
|
2
2
|
module Callbacks
|
|
3
3
|
extend ActiveSupport::Concern
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
protected
|
|
5
|
+
protected
|
|
7
6
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
end
|
|
7
|
+
# Simple callback system. Implements before and after callbacks for
|
|
8
|
+
# use within the controllers.
|
|
9
|
+
#
|
|
10
|
+
# We didn't use the ActiveSupport callbacks becuase they do not support
|
|
11
|
+
# passing in any arbitrary object into the callback method (which we
|
|
12
|
+
# need to do)
|
|
13
|
+
|
|
14
|
+
def call_callback_with(method, *args)
|
|
15
|
+
case method
|
|
16
|
+
when Symbol
|
|
17
|
+
send(method, *args)
|
|
18
|
+
when Proc
|
|
19
|
+
instance_exec(*args, &method)
|
|
20
|
+
else
|
|
21
|
+
raise "Please register with callbacks using a symbol or a block/proc."
|
|
24
22
|
end
|
|
25
23
|
end
|
|
26
24
|
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
require 'active_admin/comments/configuration'
|
|
2
1
|
require 'active_admin/comments/comment'
|
|
3
2
|
require 'active_admin/comments/views'
|
|
4
3
|
require 'active_admin/comments/show_page_helper'
|
|
@@ -6,7 +5,7 @@ require 'active_admin/comments/namespace_helper'
|
|
|
6
5
|
require 'active_admin/comments/resource_helper'
|
|
7
6
|
|
|
8
7
|
# Add the comments configuration
|
|
9
|
-
ActiveAdmin::Application.
|
|
8
|
+
ActiveAdmin::Application.inheritable_setting :allow_comments, true
|
|
10
9
|
|
|
11
10
|
# Add the comments module to ActiveAdmin::Namespace
|
|
12
11
|
ActiveAdmin::Namespace.send :include, ActiveAdmin::Comments::NamespaceHelper
|
|
@@ -18,71 +17,66 @@ ActiveAdmin::Resource.send :include, ActiveAdmin::Comments::ResourceHelper
|
|
|
18
17
|
ActiveAdmin.application.view_factory.show_page.send :include, ActiveAdmin::Comments::ShowPageHelper
|
|
19
18
|
|
|
20
19
|
# Generate a Comment resource when namespaces are registered
|
|
21
|
-
ActiveAdmin::Event.subscribe ActiveAdmin::
|
|
22
|
-
|
|
23
|
-
namespace.
|
|
24
|
-
|
|
20
|
+
ActiveAdmin::Event.subscribe ActiveAdmin::Application::LoadEvent do |app|
|
|
21
|
+
app.namespaces.values.each do |namespace|
|
|
22
|
+
if namespace.comments?
|
|
23
|
+
namespace.register ActiveAdmin::Comment, :as => 'Comment' do
|
|
24
|
+
actions :index, :show, :create
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
# Don't display in the menu
|
|
27
|
+
menu false
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
# Don't allow comments on comments
|
|
30
|
+
config.comments = false
|
|
31
31
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
32
|
+
# Filter Comments by date
|
|
33
|
+
filter :resource_type
|
|
34
|
+
filter :body
|
|
35
|
+
filter :created_at
|
|
36
36
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
37
|
+
# Only view comments in this namespace
|
|
38
|
+
scope :all, :default => true do |comments|
|
|
39
|
+
comments.where(:namespace => active_admin_config.namespace.name.to_s)
|
|
40
|
+
end
|
|
41
41
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
42
|
+
# Always redirect to the resource on show
|
|
43
|
+
before_filter :only => :show do
|
|
44
|
+
flash[:notice] = flash[:notice].dup if flash[:notice]
|
|
45
|
+
comment = ActiveAdmin::Comment.find(params[:id])
|
|
46
|
+
resource_config = active_admin_config.namespace.resource_for(comment.resource.class)
|
|
47
|
+
redirect_to send(resource_config.route_instance_path, comment.resource)
|
|
48
|
+
end
|
|
49
49
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
50
|
+
# Store the author and namespace
|
|
51
|
+
before_save do |comment|
|
|
52
|
+
comment.namespace = active_admin_config.namespace.name
|
|
53
|
+
comment.author = current_active_admin_user
|
|
54
|
+
end
|
|
55
55
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
56
|
+
# Redirect to the resource show page when failing to add a comment
|
|
57
|
+
# TODO: Provide helpers to make such kind of customization much simpler
|
|
58
|
+
controller do
|
|
59
|
+
def create
|
|
60
|
+
create! do |success, failure|
|
|
61
|
+
failure.html do
|
|
62
|
+
resource_config = active_admin_config.namespace.resource_for(@comment.resource.class)
|
|
63
|
+
flash[:error] = "Comment wasn't saved, text was empty."
|
|
64
|
+
redirect_to send(resource_config.route_instance_path, @comment.resource)
|
|
65
|
+
end
|
|
65
66
|
end
|
|
66
67
|
end
|
|
67
68
|
end
|
|
68
|
-
end
|
|
69
|
-
|
|
70
69
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
70
|
+
# Display as a table
|
|
71
|
+
index do
|
|
72
|
+
column("Resource"){|comment| auto_link(comment.resource) }
|
|
73
|
+
column("Author"){|comment| auto_link(comment.author) }
|
|
74
|
+
column :body
|
|
75
|
+
end
|
|
76
76
|
end
|
|
77
77
|
end
|
|
78
78
|
end
|
|
79
79
|
end
|
|
80
80
|
|
|
81
|
-
#
|
|
82
|
-
ActiveAdmin::
|
|
83
|
-
if resource.comments?
|
|
84
|
-
resource.resource.has_many :active_admin_comments, :class_name => "ActiveAdmin::Comment",
|
|
85
|
-
:as => :resource,
|
|
86
|
-
:dependent => :destroy
|
|
87
|
-
end
|
|
88
|
-
end
|
|
81
|
+
# @deprecated #allow_comments_on - Remove in 0.5.0
|
|
82
|
+
ActiveAdmin::Application.deprecated_setting :allow_comments_in, [], 'The "allow_comments_in = []" setting is deprecated and will be remove by Active Admin 0.5.0. Please use "allow_comments = true|false" instead.'
|