activeadmin 0.4.4 → 0.5.0.pre
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.
- data/.gitignore +3 -0
- data/.travis.yml +5 -0
- data/CHANGELOG.md +50 -0
- data/CONTRIBUTING.md +2 -4
- data/Gemfile +10 -4
- data/Guardfile +0 -1
- data/LICENSE +1 -1
- data/README.rdoc +19 -8
- data/Rakefile +10 -1
- data/activeadmin.gemspec +2 -1
- data/app/assets/javascripts/active_admin/application.js +3 -9
- data/app/assets/javascripts/active_admin/base.js +1 -0
- data/app/assets/javascripts/active_admin/components/jquery.aa.checkbox-toggler.js.coffee +64 -0
- data/app/assets/javascripts/active_admin/components/jquery.aa.dropdown-menu.js.coffee +107 -0
- data/app/assets/javascripts/active_admin/components/jquery.aa.popover.js.coffee +100 -0
- data/app/assets/javascripts/active_admin/components/jquery.aa.table-checkbox-toggler.js.coffee +27 -0
- data/app/assets/javascripts/active_admin/lib/namespace.js.coffee +3 -0
- data/app/assets/javascripts/active_admin/pages/application.js.coffee +13 -0
- data/app/assets/javascripts/active_admin/pages/batch_actions.js.coffee +26 -0
- data/app/assets/stylesheets/active_admin/_base.css.scss +32 -26
- data/app/assets/stylesheets/active_admin/_forms.css.scss +12 -5
- data/app/assets/stylesheets/active_admin/_header.css.scss +1 -2
- data/app/assets/stylesheets/active_admin/_typography.css.scss +1 -1
- data/app/assets/stylesheets/active_admin/components/_batch_actions.css.scss +11 -0
- data/app/assets/stylesheets/active_admin/components/_buttons.scss +1 -2
- data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +151 -0
- data/app/assets/stylesheets/active_admin/components/_flash_messages.css.scss +3 -3
- data/app/assets/stylesheets/active_admin/components/_popovers.css.scss +123 -0
- data/app/assets/stylesheets/active_admin/components/_status_tags.scss +1 -1
- data/app/assets/stylesheets/active_admin/components/_table_tools.css.scss +20 -27
- data/app/assets/stylesheets/active_admin/components/_tables.css.scss +1 -0
- data/app/assets/stylesheets/active_admin/mixins/_buttons.css.scss +38 -36
- data/app/assets/stylesheets/active_admin/mixins/_gradients.css.scss +5 -5
- data/app/assets/stylesheets/active_admin/mixins/_icons.css.scss +7 -3
- data/app/assets/stylesheets/active_admin/mixins/_variables.css.scss +19 -17
- data/app/assets/stylesheets/active_admin/pages/_logged_out.scss +2 -2
- data/app/assets/stylesheets/active_admin/print.css.scss +290 -0
- data/app/views/active_admin/dashboard/index.html.arb +1 -1
- data/app/views/active_admin/devise/passwords/edit.html.erb +17 -14
- data/app/views/active_admin/devise/passwords/new.html.erb +4 -4
- data/app/views/active_admin/devise/sessions/new.html.erb +6 -6
- data/app/views/active_admin/devise/shared/_links.erb +6 -6
- data/app/views/active_admin/page/index.html.arb +1 -1
- data/app/views/active_admin/resource/edit.html.arb +1 -1
- data/app/views/active_admin/resource/index.csv.erb +1 -1
- data/app/views/active_admin/resource/index.html.arb +1 -1
- data/app/views/active_admin/resource/new.html.arb +1 -1
- data/app/views/active_admin/resource/show.html.arb +1 -1
- data/app/views/layouts/active_admin.html.arb +1 -1
- data/app/views/layouts/active_admin_logged_out.html.erb +2 -2
- data/cucumber.yml +1 -1
- data/docs/0-installation.md +10 -1
- data/docs/{9-custom-pages.md → 10-custom-pages.md} +0 -0
- data/docs/2-resource-customization.md +19 -1
- data/docs/3-index-pages.md +31 -0
- data/docs/4-csv-format.md +9 -0
- data/docs/6-show-screens.md +1 -1
- data/docs/9-batch-actions.md +161 -0
- data/features/dashboard.feature +31 -8
- data/features/development_reloading.feature +1 -1
- data/features/edit_page.feature +3 -3
- data/features/i18n.feature +35 -0
- data/features/index/batch_actions.feature +98 -0
- data/features/index/filters.feature +26 -0
- data/features/index/format_as_csv.feature +35 -0
- data/features/index/index_as_table.feature +30 -2
- data/features/index/index_blank_slate.feature +8 -3
- data/features/index/index_scopes.feature +130 -24
- data/features/index/page_title.feature +12 -0
- data/features/new_page.feature +3 -3
- data/features/registering_pages.feature +61 -0
- data/features/root_to.feature +17 -0
- data/features/show/default_content.feature +1 -1
- data/features/show/page_title.feature +14 -0
- data/features/sidebar_sections.feature +26 -0
- data/features/site_title.feature +1 -1
- data/features/specifying_actions.feature +7 -6
- data/features/step_definitions/action_link_steps.rb +1 -1
- data/features/step_definitions/additional_web_steps.rb +7 -1
- data/features/step_definitions/batch_action_steps.rb +94 -0
- data/features/step_definitions/configuration_steps.rb +30 -8
- data/features/step_definitions/factory_steps.rb +12 -0
- data/features/step_definitions/format_steps.rb +6 -2
- data/features/step_definitions/i18n_steps.rb +3 -0
- data/features/step_definitions/table_steps.rb +114 -0
- data/features/step_definitions/user_steps.rb +30 -4
- data/features/support/env.rb +54 -15
- data/features/support/paths.rb +2 -0
- data/features/users/logging_in.feature +1 -1
- data/features/users/logging_out.feature +2 -1
- data/features/users/resetting_password.feature +34 -0
- data/lib/active_admin.rb +46 -7
- data/lib/active_admin/application.rb +30 -15
- data/lib/active_admin/base_controller/menu.rb +3 -3
- data/lib/active_admin/batch_actions.rb +17 -0
- data/lib/active_admin/batch_actions/controller.rb +25 -0
- data/lib/active_admin/batch_actions/resource_extension.rb +126 -0
- data/lib/active_admin/batch_actions/views/batch_action_form.rb +35 -0
- data/lib/active_admin/batch_actions/views/batch_action_popover.rb +28 -0
- data/lib/active_admin/batch_actions/views/batch_action_selector.rb +63 -0
- data/lib/active_admin/batch_actions/views/selection_cells.rb +37 -0
- data/lib/active_admin/comments.rb +5 -2
- data/lib/active_admin/comments/comment.rb +4 -3
- data/lib/active_admin/comments/views/active_admin_comments.rb +5 -5
- data/lib/active_admin/component.rb +1 -18
- data/lib/active_admin/csv_builder.rb +8 -3
- data/lib/active_admin/dashboards.rb +21 -4
- data/lib/active_admin/dashboards/dashboard_controller.rb +1 -5
- data/lib/active_admin/dependency_checker.rb +1 -1
- data/lib/active_admin/dsl.rb +61 -4
- data/lib/active_admin/engine.rb +1 -1
- data/lib/active_admin/filters.rb +8 -0
- data/lib/active_admin/filters/dsl.rb +12 -0
- data/lib/active_admin/filters/forms.rb +93 -0
- data/lib/active_admin/filters/resource_extension.rb +92 -0
- data/lib/active_admin/form_builder.rb +88 -33
- data/lib/active_admin/helpers/collection.rb +23 -0
- data/lib/active_admin/helpers/optional_display.rb +1 -1
- data/lib/active_admin/inputs/filter_select_input.rb +1 -1
- data/lib/active_admin/locales/bg.yml +37 -1
- data/lib/active_admin/locales/ca.yml +36 -0
- data/lib/active_admin/locales/cs.yml +36 -0
- data/lib/active_admin/locales/da.yml +36 -0
- data/lib/active_admin/locales/de.yml +42 -0
- data/lib/active_admin/locales/en.yml +27 -2
- data/lib/active_admin/locales/es.yml +45 -4
- data/lib/active_admin/locales/fr.yml +22 -0
- data/lib/active_admin/locales/{he_il.yml → he.yml} +37 -2
- data/lib/active_admin/locales/hr.yml +49 -5
- data/lib/active_admin/locales/hu.yml +21 -0
- data/lib/active_admin/locales/it.yml +36 -1
- data/lib/active_admin/locales/ja.yml +36 -0
- data/lib/active_admin/locales/ko.yml +36 -1
- data/lib/active_admin/locales/lv.yml +28 -2
- data/lib/active_admin/locales/nl.yml +42 -1
- data/lib/active_admin/locales/no-NB.yml +15 -0
- data/lib/active_admin/locales/pl.yml +45 -1
- data/lib/active_admin/locales/pt-BR.yml +36 -1
- data/lib/active_admin/locales/ro.yml +67 -0
- data/lib/active_admin/locales/ru.yml +43 -3
- data/lib/active_admin/locales/sv-SE.yml +41 -1
- data/lib/active_admin/locales/tr.yml +80 -0
- data/lib/active_admin/locales/vi.yml +80 -0
- data/lib/active_admin/locales/{zh_cn.yml → zh-CN.yml} +42 -2
- data/lib/active_admin/locales/zh-TW.yml +36 -1
- data/lib/active_admin/menu.rb +55 -30
- data/lib/active_admin/menu_builder.rb +65 -0
- data/lib/active_admin/menu_item.rb +55 -14
- data/lib/active_admin/namespace.rb +25 -55
- data/lib/active_admin/page.rb +15 -10
- data/lib/active_admin/resource.rb +9 -0
- data/lib/active_admin/resource/action_items.rb +4 -4
- data/lib/active_admin/resource/controllers.rb +1 -1
- data/lib/active_admin/resource/menu.rb +19 -21
- data/lib/active_admin/resource/naming.rb +55 -45
- data/lib/active_admin/resource/sidebars.rb +0 -13
- data/lib/active_admin/resource_collection.rb +10 -10
- data/lib/active_admin/resource_controller.rb +5 -5
- data/lib/active_admin/resource_controller/actions.rb +2 -0
- data/lib/active_admin/resource_controller/collection.rb +13 -4
- data/lib/active_admin/resource_dsl.rb +12 -6
- data/lib/active_admin/router.rb +27 -8
- data/lib/active_admin/scope.rb +1 -0
- data/lib/active_admin/sidebar_section.rb +2 -6
- data/lib/active_admin/version.rb +1 -1
- data/lib/active_admin/view_factory.rb +18 -13
- data/lib/active_admin/view_helpers.rb +0 -2
- data/lib/active_admin/view_helpers/auto_link_helper.rb +2 -1
- data/lib/active_admin/view_helpers/breadcrumb_helper.rb +24 -25
- data/lib/active_admin/view_helpers/display_helper.rb +1 -1
- data/lib/active_admin/view_helpers/fields_for.rb +44 -0
- data/lib/active_admin/view_helpers/form_helper.rb +6 -0
- data/lib/active_admin/view_helpers/view_factory_helper.rb +1 -1
- data/lib/active_admin/views/components/action_list_popover.rb +29 -0
- data/lib/active_admin/views/components/attributes_table.rb +6 -2
- data/lib/active_admin/views/components/dropdown_menu.rb +73 -0
- data/lib/active_admin/views/components/paginated_collection.rb +13 -14
- data/lib/active_admin/views/components/popover.rb +27 -0
- data/lib/active_admin/views/components/scopes.rb +8 -13
- data/lib/active_admin/views/components/sidebar_section.rb +1 -1
- data/lib/active_admin/views/components/site_title.rb +55 -0
- data/lib/active_admin/views/components/status_tag.rb +4 -4
- data/lib/active_admin/views/components/table_for.rb +18 -18
- data/lib/active_admin/views/dashboard_section_renderer.rb +1 -1
- data/lib/active_admin/views/footer.rb +18 -0
- data/lib/active_admin/views/header.rb +31 -0
- data/lib/active_admin/views/index_as_block.rb +3 -0
- data/lib/active_admin/views/index_as_blog.rb +4 -0
- data/lib/active_admin/views/index_as_grid.rb +2 -0
- data/lib/active_admin/views/index_as_table.rb +19 -6
- data/lib/active_admin/views/pages/base.rb +14 -48
- data/lib/active_admin/views/pages/form.rb +3 -3
- data/lib/active_admin/views/pages/index.rb +56 -24
- data/lib/active_admin/views/pages/layout.rb +2 -2
- data/lib/active_admin/views/pages/page.rb +10 -4
- data/lib/active_admin/views/pages/show.rb +11 -8
- data/lib/active_admin/views/tabbed_navigation.rb +3 -3
- data/lib/active_admin/views/title_bar.rb +50 -0
- data/lib/active_admin/views/utility_nav.rb +41 -0
- data/lib/generators/active_admin/assets/assets_generator.rb +1 -1
- data/lib/generators/active_admin/assets/templates/3.0/active_admin.js +1 -0
- data/lib/generators/active_admin/assets/templates/3.1/active_admin.css.scss +26 -3
- data/lib/generators/active_admin/devise/devise_generator.rb +2 -2
- data/lib/generators/active_admin/install/install_generator.rb +10 -10
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +21 -1
- data/lib/generators/active_admin/install/templates/admin_user.rb.erb +20 -0
- data/lib/generators/active_admin/install/templates/dashboard.rb +33 -0
- data/lib/generators/active_admin/resource/templates/admin.rb +1 -1
- data/spec/integration/memory_spec.rb +1 -11
- data/spec/javascripts/coffeescripts/jquery.aa.checkbox-toggler-spec.js.coffee +50 -0
- data/spec/javascripts/coffeescripts/jquery.aa.popover-spec.js.coffee +82 -0
- data/spec/javascripts/coffeescripts/jquery.aa.table-checkbox-toggler-spec.js.coffee +34 -0
- data/spec/javascripts/compiled/jquery.aa.checkbox-toggler-spec.js +60 -0
- data/spec/javascripts/compiled/jquery.aa.popover-spec.js +106 -0
- data/spec/javascripts/compiled/jquery.aa.table-checkbox-toggler-spec.js +37 -0
- data/spec/javascripts/fixtures/checkboxes.html +9 -0
- data/spec/javascripts/fixtures/table_checkboxes.html +17 -0
- data/spec/javascripts/helpers/SpecHelper.js +3 -0
- data/spec/javascripts/helpers/vendor/jasmine-fixture-0.0.5.js +108 -0
- data/spec/javascripts/helpers/vendor/jasmine-jquery.js +288 -0
- data/spec/javascripts/helpers/vendor/sinon-1.2.0.js +2915 -0
- data/spec/javascripts/support/jasmine.yml +74 -0
- data/spec/javascripts/support/jasmine_config.rb +23 -0
- data/spec/javascripts/support/jasmine_runner.rb +32 -0
- data/spec/javascripts/support/jquery-ui-1.8.16.custom.min.js +34 -0
- data/spec/javascripts/support/jquery.min.js +4 -0
- data/spec/spec_helper.rb +13 -13
- data/spec/spec_helper_without_rails.rb +2 -3
- data/spec/support/detect_rails_version.rb +16 -10
- data/spec/support/rails_template.rb +13 -1
- data/spec/support/templates/admin/stores.rb +1 -0
- data/spec/support/templates/en.yml +6 -0
- data/spec/unit/action_builder_spec.rb +38 -0
- data/spec/unit/application_spec.rb +12 -16
- data/spec/unit/base_controller_shared_examples.rb +3 -6
- data/spec/unit/batch_actions/resource_spec.rb +91 -0
- data/spec/unit/batch_actions/settings_spec.rb +61 -0
- data/spec/unit/breadcrumbs_spec.rb +33 -0
- data/spec/unit/comments_spec.rb +6 -0
- data/spec/unit/config_shared_examples.rb +17 -64
- data/spec/unit/csv_builder_spec.rb +12 -2
- data/spec/unit/dashboard_controller_spec.rb +11 -5
- data/spec/unit/dsl_include_spec.rb +20 -0
- data/spec/unit/{filter_form_builder_spec.rb → filters/filter_form_builder_spec.rb} +10 -7
- data/spec/unit/filters/resource_spec.rb +60 -0
- data/spec/unit/form_builder_spec.rb +180 -28
- data/spec/unit/helpers/collection_spec.rb +65 -0
- data/spec/unit/menu_item_spec.rb +48 -53
- data/spec/unit/menu_spec.rb +46 -32
- data/spec/unit/namespace/register_page_spec.rb +0 -6
- data/spec/unit/namespace/register_resource_spec.rb +1 -8
- data/spec/unit/namespace_spec.rb +8 -2
- data/spec/unit/page_spec.rb +20 -8
- data/spec/unit/resource/naming_spec.rb +27 -26
- data/spec/unit/resource/sidebars_spec.rb +0 -7
- data/spec/unit/resource_collection_spec.rb +11 -11
- data/spec/unit/resource_controller/collection_spec.rb +23 -1
- data/spec/unit/resource_controller/sidebars_spec.rb +46 -0
- data/spec/unit/resource_controller_spec.rb +43 -0
- data/spec/unit/resource_registration_spec.rb +2 -13
- data/spec/unit/resource_spec.rb +0 -42
- data/spec/unit/routing_spec.rb +60 -14
- data/spec/unit/scope_spec.rb +7 -0
- data/spec/unit/view_factory_spec.rb +9 -6
- data/spec/unit/view_helpers/fields_for_spec.rb +41 -0
- data/spec/unit/view_helpers/form_helper_spec.rb +18 -0
- data/spec/unit/views/components/action_list_popover_spec.rb +30 -0
- data/spec/unit/views/components/attributes_table_spec.rb +32 -20
- data/spec/unit/views/components/batch_action_popover_spec.rb +33 -0
- data/spec/unit/views/components/blank_slate_spec.rb +5 -3
- data/spec/unit/views/components/columns_spec.rb +32 -22
- data/spec/unit/views/components/paginated_collection_spec.rb +54 -12
- data/spec/unit/views/components/panel_spec.rb +11 -6
- data/spec/unit/views/components/popover_spec.rb +33 -0
- data/spec/unit/views/components/sidebar_section_spec.rb +6 -6
- data/spec/unit/views/components/site_title_spec.rb +78 -0
- data/spec/unit/views/components/status_tag_spec.rb +17 -10
- data/spec/unit/views/components/table_for_spec.rb +37 -17
- data/spec/unit/views/pages/layout_spec.rb +51 -10
- data/spec/unit/views/tabbed_navigation_spec.rb +44 -23
- data/tasks/js.rake +32 -0
- data/tasks/test.rake +1 -1
- metadata +233 -200
- data/lib/active_admin/arbre.rb +0 -22
- data/lib/active_admin/arbre/builder.rb +0 -125
- data/lib/active_admin/arbre/context.rb +0 -45
- data/lib/active_admin/arbre/html/attributes.rb +0 -20
- data/lib/active_admin/arbre/html/class_list.rb +0 -24
- data/lib/active_admin/arbre/html/collection.rb +0 -27
- data/lib/active_admin/arbre/html/document.rb +0 -42
- data/lib/active_admin/arbre/html/element.rb +0 -161
- data/lib/active_admin/arbre/html/html5_elements.rb +0 -47
- data/lib/active_admin/arbre/html/tag.rb +0 -145
- data/lib/active_admin/arbre/html/text_node.rb +0 -35
- data/lib/active_admin/filter_form_builder.rb +0 -53
- data/lib/active_admin/renderer.rb +0 -87
- data/lib/active_admin/resource_controller/filters.rb +0 -58
- data/lib/active_admin/stylesheets/active_admin/mixins/_utilities.scss +0 -0
- data/lib/active_admin/view_helpers/filter_form_helper.rb +0 -36
- data/lib/active_admin/view_helpers/renderer_helper.rb +0 -29
- data/lib/active_admin/views/header_renderer.rb +0 -82
- data/lib/generators/active_admin/assets/templates/dashboards.rb +0 -36
- data/lib/generators/active_admin/install/templates/dashboards.rb +0 -44
- data/spec/unit/arbre/context_spec.rb +0 -35
- data/spec/unit/arbre/html/element_finder_methods_spec.rb +0 -110
- data/spec/unit/arbre/html/element_spec.rb +0 -236
- data/spec/unit/arbre/html/tag_attributes_spec.rb +0 -61
- data/spec/unit/arbre/html/tag_spec.rb +0 -63
- data/spec/unit/arbre/html_spec.rb +0 -228
- data/spec/unit/renderer_spec.rb +0 -126
@@ -1,47 +0,0 @@
|
|
1
|
-
module Arbre
|
2
|
-
module HTML
|
3
|
-
|
4
|
-
AUTO_BUILD_ELEMENTS = [ :a, :abbr, :address, :area, :article, :aside, :audio, :b, :base,
|
5
|
-
:bdo, :blockquote, :body, :br, :button, :canvas, :caption, :cite,
|
6
|
-
:code, :col, :colgroup, :command, :datalist, :dd, :del, :details,
|
7
|
-
:dfn, :div, :dl, :dt, :em, :embed, :fieldset, :figcaption, :figure,
|
8
|
-
:footer, :form, :h1, :h2, :h3, :h4, :h5, :h6, :head, :header, :hgroup,
|
9
|
-
:hr, :html, :i, :iframe, :img, :input, :ins, :keygen, :kbd, :label,
|
10
|
-
:legend, :li, :link, :map, :mark, :menu, :meta, :meter, :nav, :noscript,
|
11
|
-
:object, :ol, :optgroup, :option, :output, :pre, :progress, :q,
|
12
|
-
:s, :samp, :script, :section, :select, :small, :source, :span,
|
13
|
-
:strong, :style, :sub, :summary, :sup, :table, :tbody, :td,
|
14
|
-
:textarea, :tfoot, :th, :thead, :time, :title, :tr, :ul, :var, :video ]
|
15
|
-
|
16
|
-
HTML5_ELEMENTS = [ :p ] + AUTO_BUILD_ELEMENTS
|
17
|
-
|
18
|
-
AUTO_BUILD_ELEMENTS.each do |name|
|
19
|
-
class_eval <<-EOF
|
20
|
-
class #{name.to_s.capitalize} < Tag
|
21
|
-
builder_method :#{name}
|
22
|
-
end
|
23
|
-
EOF
|
24
|
-
end
|
25
|
-
|
26
|
-
class P < Tag
|
27
|
-
builder_method :para
|
28
|
-
end
|
29
|
-
|
30
|
-
class Table < Tag
|
31
|
-
def initialize(*)
|
32
|
-
super
|
33
|
-
set_table_tag_defaults
|
34
|
-
end
|
35
|
-
|
36
|
-
protected
|
37
|
-
|
38
|
-
# Set some good defaults for tables
|
39
|
-
def set_table_tag_defaults
|
40
|
-
set_attribute :border, 0
|
41
|
-
set_attribute :cellspacing, 0
|
42
|
-
set_attribute :cellpadding, 0
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
end
|
47
|
-
end
|
@@ -1,145 +0,0 @@
|
|
1
|
-
require 'erb'
|
2
|
-
|
3
|
-
module Arbre
|
4
|
-
module HTML
|
5
|
-
|
6
|
-
class Tag < Element
|
7
|
-
attr_reader :attributes
|
8
|
-
|
9
|
-
def initialize(*)
|
10
|
-
super
|
11
|
-
@attributes = Attributes.new
|
12
|
-
end
|
13
|
-
|
14
|
-
def build(*args)
|
15
|
-
super
|
16
|
-
attributes = args.extract_options!
|
17
|
-
self.content = args.first if args.first
|
18
|
-
|
19
|
-
set_for_attribute(attributes.delete(:for))
|
20
|
-
|
21
|
-
attributes.each do |key, value|
|
22
|
-
set_attribute(key, value)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
def set_attribute(name, value)
|
27
|
-
@attributes[name.to_sym] = value
|
28
|
-
end
|
29
|
-
|
30
|
-
def get_attribute(name)
|
31
|
-
@attributes[name.to_sym]
|
32
|
-
end
|
33
|
-
alias :attr :get_attribute
|
34
|
-
|
35
|
-
def has_attribute?(name)
|
36
|
-
@attributes.has_key?(name.to_sym)
|
37
|
-
end
|
38
|
-
|
39
|
-
def remove_attribute(name)
|
40
|
-
@attributes.delete(name.to_sym)
|
41
|
-
end
|
42
|
-
|
43
|
-
def id
|
44
|
-
get_attribute(:id)
|
45
|
-
end
|
46
|
-
|
47
|
-
# Generates and id for the object if it doesn't exist already
|
48
|
-
def id!
|
49
|
-
return id if id
|
50
|
-
self.id = object_id.to_s
|
51
|
-
id
|
52
|
-
end
|
53
|
-
|
54
|
-
def id=(id)
|
55
|
-
set_attribute(:id, id)
|
56
|
-
end
|
57
|
-
|
58
|
-
def add_class(class_names)
|
59
|
-
class_list.add class_names
|
60
|
-
end
|
61
|
-
|
62
|
-
def remove_class(class_names)
|
63
|
-
class_list.delete(class_names)
|
64
|
-
end
|
65
|
-
|
66
|
-
# Returns a string of classes
|
67
|
-
def class_names
|
68
|
-
class_list.to_s
|
69
|
-
end
|
70
|
-
|
71
|
-
def class_list
|
72
|
-
get_attribute(:class) || set_attribute(:class, ClassList.new)
|
73
|
-
end
|
74
|
-
|
75
|
-
def to_s
|
76
|
-
indent(opening_tag, content, closing_tag).html_safe
|
77
|
-
end
|
78
|
-
|
79
|
-
private
|
80
|
-
|
81
|
-
def opening_tag
|
82
|
-
"<#{tag_name}#{attributes_html}>"
|
83
|
-
end
|
84
|
-
|
85
|
-
def closing_tag
|
86
|
-
"</#{tag_name}>"
|
87
|
-
end
|
88
|
-
|
89
|
-
INDENT_SIZE = 2
|
90
|
-
|
91
|
-
def indent(open_tag, child_content, close_tag)
|
92
|
-
spaces = ' ' * indent_level * INDENT_SIZE
|
93
|
-
|
94
|
-
html = ""
|
95
|
-
|
96
|
-
if no_child? || child_is_text?
|
97
|
-
if self_closing_tag?
|
98
|
-
html << spaces << open_tag.sub( />$/, '/>' )
|
99
|
-
else
|
100
|
-
# one line
|
101
|
-
html << spaces << open_tag << child_content << close_tag
|
102
|
-
end
|
103
|
-
else
|
104
|
-
# multiple lines
|
105
|
-
html << spaces << open_tag << "\n"
|
106
|
-
html << child_content # the child takes care of its own spaces
|
107
|
-
html << spaces << close_tag
|
108
|
-
end
|
109
|
-
|
110
|
-
html << "\n"
|
111
|
-
|
112
|
-
html
|
113
|
-
end
|
114
|
-
|
115
|
-
def self_closing_tag?
|
116
|
-
%w|meta link|.include?(tag_name)
|
117
|
-
end
|
118
|
-
|
119
|
-
def no_child?
|
120
|
-
children.empty?
|
121
|
-
end
|
122
|
-
|
123
|
-
def child_is_text?
|
124
|
-
children.size == 1 && children.first.is_a?(TextNode)
|
125
|
-
end
|
126
|
-
|
127
|
-
|
128
|
-
def attributes_html
|
129
|
-
attributes.any? ? " " + attributes.to_s : nil
|
130
|
-
end
|
131
|
-
|
132
|
-
def set_for_attribute(record)
|
133
|
-
return unless record
|
134
|
-
set_attribute :id, ActionController::RecordIdentifier.dom_id(record, default_id_for_prefix)
|
135
|
-
add_class ActionController::RecordIdentifier.dom_class(record)
|
136
|
-
end
|
137
|
-
|
138
|
-
def default_id_for_prefix
|
139
|
-
nil
|
140
|
-
end
|
141
|
-
|
142
|
-
end
|
143
|
-
|
144
|
-
end
|
145
|
-
end
|
@@ -1,35 +0,0 @@
|
|
1
|
-
require 'erb'
|
2
|
-
|
3
|
-
module Arbre
|
4
|
-
module HTML
|
5
|
-
|
6
|
-
class TextNode < Element
|
7
|
-
|
8
|
-
builder_method :text_node
|
9
|
-
|
10
|
-
# Builds a text node from a string
|
11
|
-
def self.from_string(string)
|
12
|
-
node = new
|
13
|
-
node.build(string)
|
14
|
-
node
|
15
|
-
end
|
16
|
-
|
17
|
-
def add_child(*args)
|
18
|
-
raise "TextNodes do not have children"
|
19
|
-
end
|
20
|
-
|
21
|
-
def build(string)
|
22
|
-
@content = string
|
23
|
-
end
|
24
|
-
|
25
|
-
def tag_name
|
26
|
-
nil
|
27
|
-
end
|
28
|
-
|
29
|
-
def to_s
|
30
|
-
ERB::Util.html_escape(@content.to_s)
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
end
|
35
|
-
end
|
@@ -1,53 +0,0 @@
|
|
1
|
-
module ActiveAdmin
|
2
|
-
# This form builder defines methods to build filter forms such
|
3
|
-
# as the one found in the sidebar of the index page of a standard resource.
|
4
|
-
class FilterFormBuilder < FormBuilder
|
5
|
-
|
6
|
-
def filter(method, options = {})
|
7
|
-
return "" if method.nil? || method == ""
|
8
|
-
options[:as] ||= default_input_type(method)
|
9
|
-
return "" unless options[:as]
|
10
|
-
content = input(method, options)
|
11
|
-
form_buffers.last << content.html_safe if content
|
12
|
-
end
|
13
|
-
|
14
|
-
protected
|
15
|
-
|
16
|
-
# Returns the default filter type for a given attribute
|
17
|
-
def default_input_type(method, options = {})
|
18
|
-
if column = column_for(method)
|
19
|
-
case column.type
|
20
|
-
when :date, :datetime
|
21
|
-
return :date_range
|
22
|
-
when :string, :text
|
23
|
-
return :string
|
24
|
-
when :integer
|
25
|
-
return :select if reflection_for(method.to_s.gsub('_id','').to_sym)
|
26
|
-
return :numeric
|
27
|
-
when :float, :decimal
|
28
|
-
return :numeric
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
if reflection = reflection_for(method)
|
33
|
-
return :select if reflection.macro == :belongs_to && !reflection.options[:polymorphic]
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
def custom_input_class_name(as)
|
38
|
-
"ActiveAdmin::Inputs::Filter#{as.to_s.camelize}Input"
|
39
|
-
end
|
40
|
-
|
41
|
-
# Returns the column for an attribute on the object being searched
|
42
|
-
# if it exists. Otherwise returns nil
|
43
|
-
def column_for(method)
|
44
|
-
@object.base.columns_hash[method.to_s] if @object.base.respond_to?(:columns_hash)
|
45
|
-
end
|
46
|
-
|
47
|
-
# Returns the association reflection for the method if it exists
|
48
|
-
def reflection_for(method)
|
49
|
-
@object.base.reflect_on_association(method) if @object.base.respond_to?(:reflect_on_association)
|
50
|
-
end
|
51
|
-
|
52
|
-
end
|
53
|
-
end
|
@@ -1,87 +0,0 @@
|
|
1
|
-
module ActiveAdmin
|
2
|
-
class Renderer
|
3
|
-
|
4
|
-
include ::ActiveAdmin::ViewHelpers::RendererHelper
|
5
|
-
include Arbre::Builder
|
6
|
-
|
7
|
-
attr_accessor :view, :assigns
|
8
|
-
|
9
|
-
# For use in html
|
10
|
-
alias_method :helpers, :view
|
11
|
-
|
12
|
-
def initialize(view_or_renderer)
|
13
|
-
@view = view_or_renderer.is_a?(Renderer) ? view_or_renderer.view : view_or_renderer
|
14
|
-
|
15
|
-
if view.respond_to?(:assigns)
|
16
|
-
@assigns = view.assigns.each { |key, value| instance_variable_set("@#{key}", value) }
|
17
|
-
else
|
18
|
-
@assigns = {}
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
def method_missing(name,*args, &block)
|
23
|
-
if view.respond_to?(name)
|
24
|
-
view.send(name, *args, &block)
|
25
|
-
else
|
26
|
-
super
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
def to_html(*args)
|
31
|
-
end
|
32
|
-
|
33
|
-
def to_s(*args)
|
34
|
-
to_html(*args)
|
35
|
-
end
|
36
|
-
|
37
|
-
def haml(template)
|
38
|
-
begin
|
39
|
-
require 'haml' unless defined?(Haml)
|
40
|
-
rescue LoadError
|
41
|
-
raise LoadError, "Please install the HAML gem to use the HAML method with ActiveAdmin"
|
42
|
-
end
|
43
|
-
|
44
|
-
# Find the first non whitespace character in the template
|
45
|
-
indent = template.index(/\S/)
|
46
|
-
|
47
|
-
# Remove the indent if its greater than 0
|
48
|
-
if indent > 0
|
49
|
-
template = template.split("\n").collect do |line|
|
50
|
-
line[indent..-1]
|
51
|
-
end.join("\n")
|
52
|
-
end
|
53
|
-
|
54
|
-
# Render it baby
|
55
|
-
Haml::Engine.new(template).render(self)
|
56
|
-
end
|
57
|
-
|
58
|
-
protected
|
59
|
-
|
60
|
-
# Although we make a copy of all the instance variables on the way in, it
|
61
|
-
# doesn't mean that we can set new instance variables that are stored in
|
62
|
-
# the context of the view. This method allows you to do that. It can be useful
|
63
|
-
# when trying to share variables with a layout.
|
64
|
-
def set_ivar_on_view(name, value)
|
65
|
-
view.instance_variable_set(name, value)
|
66
|
-
end
|
67
|
-
|
68
|
-
# Many times throughout the views we want to either call a method on an object
|
69
|
-
# or instance_exec a proc passing in the object as the first parameter. This
|
70
|
-
# method takes care of this functionality.
|
71
|
-
#
|
72
|
-
# call_method_or_proc_on(@my_obj, :size) same as @my_obj.size
|
73
|
-
# OR
|
74
|
-
# proc = Proc.new{|s| s.size }
|
75
|
-
# call_method_or_proc_on(@my_obj, proc)
|
76
|
-
#
|
77
|
-
def call_method_or_proc_on(obj, symbol_or_proc)
|
78
|
-
case symbol_or_proc
|
79
|
-
when Symbol, String
|
80
|
-
obj.send(symbol_or_proc.to_sym)
|
81
|
-
when Proc
|
82
|
-
instance_exec(obj, &symbol_or_proc)
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
end
|
87
|
-
end
|
@@ -1,58 +0,0 @@
|
|
1
|
-
module ActiveAdmin
|
2
|
-
class ResourceController < BaseController
|
3
|
-
|
4
|
-
module Filters
|
5
|
-
extend ActiveSupport::Concern
|
6
|
-
|
7
|
-
included do
|
8
|
-
helper_method :filters_config
|
9
|
-
end
|
10
|
-
|
11
|
-
module ClassMethods
|
12
|
-
def filter(attribute, options = {})
|
13
|
-
return false if attribute.nil?
|
14
|
-
@filters ||= []
|
15
|
-
@filters << options.merge(:attribute => attribute)
|
16
|
-
end
|
17
|
-
|
18
|
-
def filters_config
|
19
|
-
@filters && @filters.any? ? @filters : default_filters_config
|
20
|
-
end
|
21
|
-
|
22
|
-
def reset_filters!
|
23
|
-
@filters = []
|
24
|
-
end
|
25
|
-
|
26
|
-
# Returns a sane set of filters by default for the object
|
27
|
-
def default_filters_config
|
28
|
-
default_association_filters + default_content_filters
|
29
|
-
end
|
30
|
-
|
31
|
-
# Returns a default set of filters for the associations
|
32
|
-
def default_association_filters
|
33
|
-
if resource_class.respond_to?(:reflections)
|
34
|
-
resource_class.reflections.collect{|name, r| { :attribute => name }}
|
35
|
-
else
|
36
|
-
[]
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
# Returns a default set of filters for the content columns
|
41
|
-
def default_content_filters
|
42
|
-
if resource_class.respond_to?(:content_columns)
|
43
|
-
resource_class.content_columns.collect{|c| { :attribute => c.name.to_sym } }
|
44
|
-
else
|
45
|
-
[]
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
protected
|
51
|
-
|
52
|
-
def filters_config
|
53
|
-
self.class.filters_config
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
end
|
58
|
-
end
|
File without changes
|
@@ -1,36 +0,0 @@
|
|
1
|
-
module ActiveAdmin
|
2
|
-
|
3
|
-
module ViewHelpers
|
4
|
-
module FilterFormHelper
|
5
|
-
|
6
|
-
# Helper method to render a filter form
|
7
|
-
def active_admin_filters_form_for(search, filters, options = {})
|
8
|
-
options[:builder] ||= ActiveAdmin::FilterFormBuilder
|
9
|
-
options[:url] ||= collection_path
|
10
|
-
options[:html] ||= {}
|
11
|
-
options[:html][:method] = :get
|
12
|
-
options[:html][:class] ||= "filter_form"
|
13
|
-
options[:as] = :q
|
14
|
-
clear_link = link_to(I18n.t('active_admin.clear_filters'), "#", :class => "clear_filters_btn")
|
15
|
-
form_for search, options do |f|
|
16
|
-
filters.each do |filter_options|
|
17
|
-
filter_options = filter_options.dup
|
18
|
-
attribute = filter_options.delete(:attribute)
|
19
|
-
f.filter attribute, filter_options
|
20
|
-
end
|
21
|
-
|
22
|
-
buttons = content_tag :div, :class => "buttons" do
|
23
|
-
f.submit(I18n.t('active_admin.filter')) +
|
24
|
-
clear_link +
|
25
|
-
hidden_field_tag("order", params[:order]) +
|
26
|
-
hidden_field_tag("scope", params[:scope])
|
27
|
-
end
|
28
|
-
|
29
|
-
f.form_buffers.last + buttons
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
end
|