adva-core 0.0.1
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/app/controllers/admin/base_controller.rb +21 -0
- data/app/controllers/admin/pages_controller.rb +9 -0
- data/app/controllers/admin/sections_controller.rb +36 -0
- data/app/controllers/admin/sites_controller.rb +18 -0
- data/app/controllers/articles_controller.rb +3 -0
- data/app/controllers/base_controller.rb +22 -0
- data/app/controllers/installations_controller.rb +28 -0
- data/app/controllers/pages_controller.rb +2 -0
- data/app/controllers/sections_controller.rb +3 -0
- data/app/helpers/form_helper.rb +13 -0
- data/app/helpers/sections_helper.rb +7 -0
- data/app/helpers/url_helper.rb +18 -0
- data/app/models/account.rb +3 -0
- data/app/models/article.rb +2 -0
- data/app/models/content.rb +4 -0
- data/app/models/page.rb +17 -0
- data/app/models/section.rb +59 -0
- data/app/models/site.rb +26 -0
- data/app/views/admin/pages/_menu.html.rb +30 -0
- data/app/views/admin/pages/new.html.rb +19 -0
- data/app/views/admin/pages/show.html.rb +25 -0
- data/app/views/admin/sections/_menu.html.rb +12 -0
- data/app/views/admin/sections/_section.html.rb +7 -0
- data/app/views/admin/sections/_select_type.html.rb +16 -0
- data/app/views/admin/sections/index.html.rb +28 -0
- data/app/views/admin/sites/_menu.html.rb +6 -0
- data/app/views/admin/sites/edit.html.rb +22 -0
- data/app/views/admin/sites/index.html.rb +12 -0
- data/app/views/admin/sites/new.html.rb +39 -0
- data/app/views/admin/sites/show.html.rb +7 -0
- data/app/views/installations/new.html.rb +39 -0
- data/app/views/installations/show.html.rb +9 -0
- data/app/views/layouts/_flash.html.rb +9 -0
- data/app/views/layouts/admin.rb +38 -0
- data/app/views/layouts/admin/_header.rb +48 -0
- data/app/views/layouts/admin/_tabs.html.rb +18 -0
- data/app/views/layouts/admin/_top.rb +56 -0
- data/app/views/layouts/base.rb +58 -0
- data/app/views/layouts/default.rb +31 -0
- data/app/views/layouts/default/_menu.rb +24 -0
- data/app/views/layouts/simple.rb +16 -0
- data/app/views/pages/show.html.rb +7 -0
- data/config/initializers/simple_form.rb +53 -0
- data/config/locales/en.yml +137 -0
- data/config/redirects.rb +8 -0
- data/config/routes.rb +21 -0
- data/lib/adva-core.rb +1 -0
- data/lib/adva.rb +37 -0
- data/lib/adva/active_record/has_options.rb +55 -0
- data/lib/adva/cli.rb +16 -0
- data/lib/adva/controller.rb +7 -0
- data/lib/adva/controller/abstract_actions.rb +87 -0
- data/lib/adva/controller/internal_redirect.rb +26 -0
- data/lib/adva/controller/references.rb +28 -0
- data/lib/adva/core.rb +84 -0
- data/lib/adva/engine.rb +64 -0
- data/lib/adva/engine/sliced_models.rb +35 -0
- data/lib/adva/generators.rb +8 -0
- data/lib/adva/generators/app.rb +121 -0
- data/lib/adva/generators/engine.rb +58 -0
- data/lib/adva/generators/gemfile.rb +50 -0
- data/lib/adva/generators/install.rb +31 -0
- data/lib/adva/generators/templates/app/app_template.rb +3 -0
- data/lib/adva/generators/templates/engine/Gemfile.erb +3 -0
- data/lib/adva/generators/templates/engine/all.rb +1 -0
- data/lib/adva/generators/templates/engine/en.yml.erb +2 -0
- data/lib/adva/generators/templates/engine/engine.rb.erb +11 -0
- data/lib/adva/generators/templates/engine/gemspec.erb +21 -0
- data/lib/adva/generators/templates/engine/migration.rb.erb +11 -0
- data/lib/adva/generators/templates/engine/redirects.rb.erb +3 -0
- data/lib/adva/generators/templates/engine/routes.rb.erb +3 -0
- data/lib/adva/generators/templates/engine/test_helper.rb.erb +3 -0
- data/lib/adva/rack.rb +5 -0
- data/lib/adva/rack/static.rb +50 -0
- data/lib/adva/registry.rb +62 -0
- data/lib/adva/responder.rb +21 -0
- data/lib/adva/responder/redirect.rb +31 -0
- data/lib/adva/routing_filters/section_path.rb +72 -0
- data/lib/adva/routing_filters/section_root.rb +65 -0
- data/lib/adva/tasks/core.rake +9 -0
- data/lib/adva/tasks/core.rb +160 -0
- data/lib/adva/testing.rb +57 -0
- data/lib/adva/testing/engine.rb +37 -0
- data/lib/adva/view.rb +7 -0
- data/lib/adva/view/form.rb +44 -0
- data/lib/adva/view/form/tabs.rb +46 -0
- data/lib/adva/view/menu.rb +51 -0
- data/lib/adva/view/menu/admin.rb +48 -0
- data/lib/adva/view/tabs.rb +28 -0
- data/lib/core_ext/rails/action_view/has_many_through_collection_helpers.rb +27 -0
- data/lib/core_ext/rails/active_record/skip_callbacks.rb +51 -0
- data/lib/core_ext/ruby/array/flatten_once.rb +9 -0
- data/lib/core_ext/ruby/kernel/silence_stream.rb +17 -0
- data/lib/core_ext/ruby/module/include_anonymous.rb +36 -0
- data/lib/core_ext/ruby/module/option_reader.rb +9 -0
- data/lib/patches/arel/table_initialization_fixes.rb +68 -0
- data/lib/patches/inherited_resources.rb +34 -0
- data/lib/patches/rails/arel_table_options_fix.rb +13 -0
- data/lib/patches/rails/asset_expansion_multiple_registrations.rb +21 -0
- data/lib/patches/rails/recognize_path_env.rb +43 -0
- data/lib/patches/rails/route_set_to_param.rb +25 -0
- data/lib/patches/rails/sti_associations.rb +17 -0
- data/lib/patches/rails/template_resolver_caching.rb +9 -0
- data/lib/patches/rails/url_for.rb +60 -0
- data/lib/patches/simple_form.rb +37 -0
- data/lib/patches/thor/core_ext/hash.rb +7 -0
- data/lib/patches/thor/group/symbolized_options.rb +8 -0
- data/lib/patches/webrat/links-data-method.rb +19 -0
- data/lib/patches/webrat/logger.rb +19 -0
- data/lib/patches/webrat/upload_file.rb +28 -0
- data/lib/testing/assertions.rb +19 -0
- data/lib/testing/factories.rb +30 -0
- data/lib/testing/helpers/global_helpers.rb +9 -0
- data/lib/testing/paths.rb +54 -0
- data/lib/testing/step_definitions/common_steps.rb +279 -0
- data/lib/testing/step_definitions/menu_steps.rb +11 -0
- data/lib/testing/step_definitions/routes_steps.rb +18 -0
- data/lib/testing/step_definitions/transforms.rb +43 -0
- data/lib/testing/step_definitions/webrat_steps.rb +291 -0
- data/lib/testing/step_definitions/within_steps.rb +17 -0
- data/lib/webrat/integrations/rails.rb +33 -0
- data/public/images/adva-core/admin/header_bg.png +0 -0
- data/public/images/adva-core/admin/menu_checkmark.png +0 -0
- data/public/images/adva-core/admin/section_menu_bg.png +0 -0
- data/public/images/adva-core/admin/tab_action_active.png +0 -0
- data/public/images/adva-core/admin/tab_main_active.png +0 -0
- data/public/images/adva-core/admin/tab_sidebar_active.png +0 -0
- data/public/images/adva-core/admin/tab_top_active.png +0 -0
- data/public/images/adva-core/asset_selected.png +0 -0
- data/public/images/adva-core/avatar.gif +0 -0
- data/public/images/adva-core/feed.mini.png +0 -0
- data/public/images/adva-core/filter-bg.png +0 -0
- data/public/images/adva-core/grid.png +0 -0
- data/public/images/adva-core/icons/accept.png +0 -0
- data/public/images/adva-core/icons/add.png +0 -0
- data/public/images/adva-core/icons/arrow_cross.png +0 -0
- data/public/images/adva-core/icons/arrow_cross_2.png +0 -0
- data/public/images/adva-core/icons/arrow_cross_3.png +0 -0
- data/public/images/adva-core/icons/arrow_up_down.png +0 -0
- data/public/images/adva-core/icons/assets/audio.png +0 -0
- data/public/images/adva-core/icons/assets/doc.png +0 -0
- data/public/images/adva-core/icons/assets/pdf.png +0 -0
- data/public/images/adva-core/icons/assets/video.png +0 -0
- data/public/images/adva-core/icons/attach.png +0 -0
- data/public/images/adva-core/icons/bin.png +0 -0
- data/public/images/adva-core/icons/bin_closed.png +0 -0
- data/public/images/adva-core/icons/bin_empty.png +0 -0
- data/public/images/adva-core/icons/bullet_black.png +0 -0
- data/public/images/adva-core/icons/bullet_delete.png +0 -0
- data/public/images/adva-core/icons/bullet_error.png +0 -0
- data/public/images/adva-core/icons/bullet_go.png +0 -0
- data/public/images/adva-core/icons/bullet_red.png +0 -0
- data/public/images/adva-core/icons/bullet_white.png +0 -0
- data/public/images/adva-core/icons/bullet_yellow.png +0 -0
- data/public/images/adva-core/icons/cancel.png +0 -0
- data/public/images/adva-core/icons/comment.gif +0 -0
- data/public/images/adva-core/icons/comment.png +0 -0
- data/public/images/adva-core/icons/comment_add.png +0 -0
- data/public/images/adva-core/icons/comment_blue.gif +0 -0
- data/public/images/adva-core/icons/comment_delete.png +0 -0
- data/public/images/adva-core/icons/comment_edit.png +0 -0
- data/public/images/adva-core/icons/comment_yellow.gif +0 -0
- data/public/images/adva-core/icons/cross.png +0 -0
- data/public/images/adva-core/icons/delete.png +0 -0
- data/public/images/adva-core/icons/eye.png +0 -0
- data/public/images/adva-core/icons/favorites.png +0 -0
- data/public/images/adva-core/icons/help.png +0 -0
- data/public/images/adva-core/icons/hourglass.png +0 -0
- data/public/images/adva-core/icons/icon_attachment.gif +0 -0
- data/public/images/adva-core/icons/icon_padlock.gif +0 -0
- data/public/images/adva-core/icons/link.png +0 -0
- data/public/images/adva-core/icons/lock.png +0 -0
- data/public/images/adva-core/icons/magnifier.png +0 -0
- data/public/images/adva-core/icons/minus.gif +0 -0
- data/public/images/adva-core/icons/page_add.png +0 -0
- data/public/images/adva-core/icons/page_delete.png +0 -0
- data/public/images/adva-core/icons/page_edit.png +0 -0
- data/public/images/adva-core/icons/page_favorites.png +0 -0
- data/public/images/adva-core/icons/page_go.png +0 -0
- data/public/images/adva-core/icons/page_green.png +0 -0
- data/public/images/adva-core/icons/page_red.png +0 -0
- data/public/images/adva-core/icons/page_white_add.png +0 -0
- data/public/images/adva-core/icons/page_white_delete.png +0 -0
- data/public/images/adva-core/icons/page_white_edit.png +0 -0
- data/public/images/adva-core/icons/page_white_go.png +0 -0
- data/public/images/adva-core/icons/page_white_link.png +0 -0
- data/public/images/adva-core/icons/page_white_magnify.png +0 -0
- data/public/images/adva-core/icons/pencil.png +0 -0
- data/public/images/adva-core/icons/star.png +0 -0
- data/public/images/adva-core/icons/stop.png +0 -0
- data/public/images/adva-core/icons/tag_green.png +0 -0
- data/public/images/adva-core/icons/tick.png +0 -0
- data/public/images/adva-core/icons/zoom.png +0 -0
- data/public/images/adva-core/indicator.gif +0 -0
- data/public/images/adva-core/lines.png +0 -0
- data/public/images/adva-core/preview.png +0 -0
- data/public/images/adva-core/rails.png +0 -0
- data/public/images/adva-core/sortable_tree/drag.png +0 -0
- data/public/images/adva-core/theme_selected.png +0 -0
- data/public/javascripts/adva-core/admin.js +21 -0
- data/public/javascripts/adva-core/jquery/jquery-1.4.2.min.js +154 -0
- data/public/javascripts/adva-core/jquery/jquery.table_tree.js +292 -0
- data/public/javascripts/adva-core/jquery/jquery.tablednd_0_5.js +386 -0
- data/public/javascripts/adva-core/rails.js +127 -0
- data/public/javascripts/backup/admin/jquery.admin.js +77 -0
- data/public/javascripts/backup/admin/jquery.article.js +22 -0
- data/public/javascripts/backup/admin/jquery.cached_pages.js +14 -0
- data/public/javascripts/backup/admin/jquery.table_tree.backup.js +279 -0
- data/public/javascripts/backup/admin/jquery.table_tree.js +10 -0
- data/public/javascripts/backup/application.js +38 -0
- data/public/javascripts/backup/application.prototype.js +135 -0
- data/public/javascripts/backup/builder.js +136 -0
- data/public/javascripts/backup/controls.js +965 -0
- data/public/javascripts/backup/cookie.js +49 -0
- data/public/javascripts/backup/dragdrop.js +975 -0
- data/public/javascripts/backup/effects.js +1130 -0
- data/public/javascripts/backup/flash.js +49 -0
- data/public/javascripts/backup/jquery.dates.js +49 -0
- data/public/javascripts/backup/jquery.flash.js +40 -0
- data/public/javascripts/backup/jquery.roles.js +23 -0
- data/public/javascripts/backup/jquery/jquery-lowpro.js +224 -0
- data/public/javascripts/backup/jquery/jquery-ui.js +273 -0
- data/public/javascripts/backup/jquery/jquery.js +19 -0
- data/public/javascripts/backup/jquery/jquery.qtip.min.js +15 -0
- data/public/javascripts/backup/json.js +139 -0
- data/public/javascripts/backup/lowpro.js +320 -0
- data/public/javascripts/backup/parseuri.js +39 -0
- data/public/javascripts/backup/prototype.js +4320 -0
- data/public/javascripts/backup/roles.js +16 -0
- data/public/javascripts/backup/scriptaculous.js +60 -0
- data/public/javascripts/backup/slider.js +275 -0
- data/public/javascripts/backup/sound.js +55 -0
- data/public/javascripts/backup/unittest.js +568 -0
- data/public/stylesheets/adva-core/admin/forms.css +172 -0
- data/public/stylesheets/adva-core/admin/layout.css +38 -0
- data/public/stylesheets/adva-core/admin/lists.css +54 -0
- data/public/stylesheets/adva-core/admin/navigation.css +234 -0
- data/public/stylesheets/adva-core/admin/sidebar.css +87 -0
- data/public/stylesheets/adva-core/admin/styles.css +128 -0
- data/public/stylesheets/adva-core/common/forms.css +174 -0
- data/public/stylesheets/adva-core/common/layout.css +93 -0
- data/public/stylesheets/adva-core/common/reset.css +42 -0
- data/public/stylesheets/adva-core/common/styles.css +41 -0
- data/public/stylesheets/adva-core/default/layout.css +0 -0
- data/public/stylesheets/adva-core/default/styles.css +30 -0
- data/public/stylesheets/adva-core/simple/layout.css +11 -0
- data/public/stylesheets/backup/alternate/common.css +76 -0
- data/public/stylesheets/backup/alternate/forms.css +121 -0
- data/public/stylesheets/backup/alternate/header.css +125 -0
- data/public/stylesheets/backup/alternate/layout.css +103 -0
- data/public/stylesheets/backup/alternate/lists.css +153 -0
- data/public/stylesheets/backup/alternate/sidebar.css +65 -0
- data/public/stylesheets/backup/alternate/top.css +123 -0
- data/public/stylesheets/backup/content.css +11 -0
- data/public/stylesheets/backup/helptip.css +35 -0
- data/public/stylesheets/backup/jquery/alternate/jquery.tooltip.css +13 -0
- data/public/stylesheets/backup/jquery/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/public/stylesheets/backup/jquery/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
- data/public/stylesheets/backup/jquery/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
- data/public/stylesheets/backup/jquery/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/public/stylesheets/backup/jquery/images/ui-bg_glass_75_dadada_1x400.png +0 -0
- data/public/stylesheets/backup/jquery/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
- data/public/stylesheets/backup/jquery/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- data/public/stylesheets/backup/jquery/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
- data/public/stylesheets/backup/jquery/images/ui-icons_222222_256x240.png +0 -0
- data/public/stylesheets/backup/jquery/images/ui-icons_2e83ff_256x240.png +0 -0
- data/public/stylesheets/backup/jquery/images/ui-icons_454545_256x240.png +0 -0
- data/public/stylesheets/backup/jquery/images/ui-icons_888888_256x240.png +0 -0
- data/public/stylesheets/backup/jquery/images/ui-icons_cd0a0a_256x240.png +0 -0
- data/public/stylesheets/backup/jquery/jquery-ui.css +406 -0
- data/public/stylesheets/backup/jquery/jquery.tooltip.css +10 -0
- data/public/stylesheets/backup/layout.css +22 -0
- data/public/stylesheets/backup/lists.css +17 -0
- data/public/stylesheets/backup/menu.css +129 -0
- data/public/stylesheets/backup/projection.css +118 -0
- data/public/stylesheets/backup/screen/top.css +8 -0
- data/public/stylesheets/backup/themes.css +49 -0
- data/public/stylesheets/backup/users.css +40 -0
- metadata +536 -0
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
require 'simple_form'
|
|
2
|
+
# Use this setup block to configure all options available in SimpleForm.
|
|
3
|
+
SimpleForm.setup do |config|
|
|
4
|
+
|
|
5
|
+
# Components used by the form builder to generate a complete input. You can remove
|
|
6
|
+
# any of them, change the order, or even add your own components to the stack.
|
|
7
|
+
# config.components = [ :label_input, :hint, :error ]
|
|
8
|
+
|
|
9
|
+
# Default tag used on hints.
|
|
10
|
+
# config.hint_tag = :span
|
|
11
|
+
|
|
12
|
+
# Default tag used on errors.
|
|
13
|
+
# config.error_tag = :span
|
|
14
|
+
|
|
15
|
+
# Method used to tidy up errors.
|
|
16
|
+
# config.error_method = :first
|
|
17
|
+
|
|
18
|
+
# Default tag used for error notification helper.
|
|
19
|
+
# config.error_notification_tag = :p
|
|
20
|
+
|
|
21
|
+
# You can wrap all inputs in a pre-defined tag.
|
|
22
|
+
# config.wrapper_tag = :div
|
|
23
|
+
|
|
24
|
+
# CSS class to add to all wrapper tags.
|
|
25
|
+
# config.wrapper_class = :input
|
|
26
|
+
|
|
27
|
+
# CSS class to add to the wrapper if the field has errors.
|
|
28
|
+
# config.wrapper_error_class = :field_with_errors
|
|
29
|
+
|
|
30
|
+
# How the label text should be generated altogether with the required text.
|
|
31
|
+
config.label_text = lambda { |label, required| "#{label}#{required}" }
|
|
32
|
+
|
|
33
|
+
# Whether attributes are required by default (or not). Default is true.
|
|
34
|
+
# config.required_by_default = true
|
|
35
|
+
|
|
36
|
+
# Series of attemps to detect a default label method for collection.
|
|
37
|
+
# config.collection_label_methods = [ :to_label, :name, :title, :to_s ]
|
|
38
|
+
|
|
39
|
+
# Series of attemps to detect a default value method for collection.
|
|
40
|
+
# config.collection_value_methods = [ :id, :to_s ]
|
|
41
|
+
|
|
42
|
+
# Collection of methods to detect if a file type was given.
|
|
43
|
+
# config.file_methods = [ :file?, :public_filename ]
|
|
44
|
+
|
|
45
|
+
# Default priority for time_zone inputs.
|
|
46
|
+
# config.time_zone_priority = nil
|
|
47
|
+
|
|
48
|
+
# Default priority for country inputs.
|
|
49
|
+
# config.country_priority = nil
|
|
50
|
+
|
|
51
|
+
# Default size for text inputs.
|
|
52
|
+
# config.default_input_size = 50
|
|
53
|
+
end
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
en:
|
|
2
|
+
a_or_b: '%{a} or %{b}'
|
|
3
|
+
flash:
|
|
4
|
+
actions:
|
|
5
|
+
create:
|
|
6
|
+
notice: '%{resource_name} successfully created.'
|
|
7
|
+
alert: '%{resource_name} could not be created.'
|
|
8
|
+
update:
|
|
9
|
+
notice: '%{resource_name} successfully updated.'
|
|
10
|
+
alert: '%{resource_name} could not be updated.'
|
|
11
|
+
destroy:
|
|
12
|
+
notice: '%{resource_name} successfully deleted.'
|
|
13
|
+
alert: '%{resource_name} could not be deleted.'
|
|
14
|
+
installation:
|
|
15
|
+
protected: "Installation for %{host} is already complete. Please log in with your admin account."
|
|
16
|
+
confirm:
|
|
17
|
+
delete: 'Do you really want to delete this %{model_name}?'
|
|
18
|
+
|
|
19
|
+
installations:
|
|
20
|
+
new:
|
|
21
|
+
title: adva-cms installation
|
|
22
|
+
welcome: |
|
|
23
|
+
Welcome to the adva-cms less-than-one-minute installation process:
|
|
24
|
+
Just fill in a name for your site below and you're done.
|
|
25
|
+
Don't worry. You can always change everything later.
|
|
26
|
+
section_name: Section Name
|
|
27
|
+
show:
|
|
28
|
+
title: Success!
|
|
29
|
+
confirm: You have successfully created your site. Enjoy!
|
|
30
|
+
link_to_admin: "Manage your new site »"
|
|
31
|
+
|
|
32
|
+
sections:
|
|
33
|
+
columns:
|
|
34
|
+
section: Section
|
|
35
|
+
actions: ""
|
|
36
|
+
|
|
37
|
+
admin:
|
|
38
|
+
sites:
|
|
39
|
+
index:
|
|
40
|
+
title: Sites
|
|
41
|
+
new:
|
|
42
|
+
title: Create a New Site
|
|
43
|
+
section_name: Section Name
|
|
44
|
+
edit:
|
|
45
|
+
title: Site Settings
|
|
46
|
+
show:
|
|
47
|
+
section:
|
|
48
|
+
new: New Section
|
|
49
|
+
site:
|
|
50
|
+
new: New Site
|
|
51
|
+
sections: All Sections
|
|
52
|
+
menu:
|
|
53
|
+
new: New Site
|
|
54
|
+
edit: Edit
|
|
55
|
+
destroy: Delete
|
|
56
|
+
new_item: New Section
|
|
57
|
+
confirm_destroy: "Do you really want to delete this %{model_name}?"
|
|
58
|
+
sections:
|
|
59
|
+
index:
|
|
60
|
+
title: Sections
|
|
61
|
+
view: View
|
|
62
|
+
edit: Edit
|
|
63
|
+
destroy: Delete
|
|
64
|
+
published: Published
|
|
65
|
+
confirm_destroy: "Do you really want to delete this %{model_name}?"
|
|
66
|
+
new:
|
|
67
|
+
title: Create a New Section
|
|
68
|
+
show:
|
|
69
|
+
title: Settings
|
|
70
|
+
menu:
|
|
71
|
+
sections: Sections
|
|
72
|
+
new: New
|
|
73
|
+
reorder: Reorder
|
|
74
|
+
pages:
|
|
75
|
+
show:
|
|
76
|
+
title: Edit Page
|
|
77
|
+
new:
|
|
78
|
+
title: Create a New Section
|
|
79
|
+
menu:
|
|
80
|
+
sections: Sections
|
|
81
|
+
new: New
|
|
82
|
+
show: Page
|
|
83
|
+
view: View
|
|
84
|
+
destroy: Delete
|
|
85
|
+
confirm_destroy: "Do you really want to delete this %{model_name}?"
|
|
86
|
+
posts:
|
|
87
|
+
edit:
|
|
88
|
+
title: Settings
|
|
89
|
+
|
|
90
|
+
tabs:
|
|
91
|
+
options: Options
|
|
92
|
+
assets: Assets
|
|
93
|
+
layouts:
|
|
94
|
+
default:
|
|
95
|
+
made_with: "Made with <a href=\"http://github.com/svenfuchs/adva-cms2\">adva cms 2</a>"
|
|
96
|
+
admin:
|
|
97
|
+
top:
|
|
98
|
+
sites: Sites
|
|
99
|
+
new_site: New Site
|
|
100
|
+
site: Overview
|
|
101
|
+
sections: Sections
|
|
102
|
+
new_section: New Section
|
|
103
|
+
settings: Settings
|
|
104
|
+
assets: Assets
|
|
105
|
+
header:
|
|
106
|
+
sign_in: "Sign in"
|
|
107
|
+
sign_out: "Sign out %{user}"
|
|
108
|
+
change_language: "Change language:"
|
|
109
|
+
website: "Website »"
|
|
110
|
+
|
|
111
|
+
section:
|
|
112
|
+
types:
|
|
113
|
+
page: Page
|
|
114
|
+
default_name: Home
|
|
115
|
+
|
|
116
|
+
simple_form:
|
|
117
|
+
"yes": 'Yes'
|
|
118
|
+
"no": 'No'
|
|
119
|
+
required:
|
|
120
|
+
text: required
|
|
121
|
+
mark: '*'
|
|
122
|
+
# You can uncomment the line below if you need to overwrite the whole required html.
|
|
123
|
+
# When using html, text and mark won't be used.
|
|
124
|
+
# html: '<abbr title="required">*</abbr>'
|
|
125
|
+
error_notification:
|
|
126
|
+
default_message: "Some errors were found, please take a look:"
|
|
127
|
+
# Labels and hints examples
|
|
128
|
+
# labels:
|
|
129
|
+
# password: 'Password'
|
|
130
|
+
# user:
|
|
131
|
+
# new:
|
|
132
|
+
# email: 'E-mail para efetuar o sign in.'
|
|
133
|
+
# edit:
|
|
134
|
+
# email: 'E-mail.'
|
|
135
|
+
# hints:
|
|
136
|
+
# username: 'User name to sign in.'
|
|
137
|
+
# password: 'No special characters, please.'
|
data/config/redirects.rb
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
Adva::Registry.set :redirect, {
|
|
2
|
+
'installations#create' => lambda { |c| c.installation_url(c.resource) },
|
|
3
|
+
'articles#show' => lambda { |c| c.show_parent_url },
|
|
4
|
+
|
|
5
|
+
'admin/sites#update' => lambda { |c| c.edit_url },
|
|
6
|
+
'admin/pages#update' => lambda { |c| c.show_url },
|
|
7
|
+
'admin/pages#destroy' => lambda { |c| c.index_url }
|
|
8
|
+
}
|
data/config/routes.rb
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
require 'routing_filter'
|
|
2
|
+
require 'adva/routing_filters/section_root'
|
|
3
|
+
require 'adva/routing_filters/section_path'
|
|
4
|
+
|
|
5
|
+
Rails.application.routes.draw do
|
|
6
|
+
filter :section_path, :section_root
|
|
7
|
+
|
|
8
|
+
namespace :admin do
|
|
9
|
+
resources :sites do
|
|
10
|
+
resources :sections, :only => [:index, :new, :create]
|
|
11
|
+
resources :pages
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
match 'pages/:id', :to => 'pages#show', :as => :page
|
|
16
|
+
match 'pages/:page_id/article', :to => 'articles#show', :as => :page_article
|
|
17
|
+
|
|
18
|
+
resources :installations, :only => [:new, :create, :show]
|
|
19
|
+
|
|
20
|
+
root :to => redirect('/installations/new') # should only match if no root section is present
|
|
21
|
+
end
|
data/lib/adva-core.rb
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require 'adva/core'
|
data/lib/adva.rb
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
require 'rails/engine'
|
|
2
|
+
|
|
3
|
+
module Adva
|
|
4
|
+
autoload :Engine, 'adva/engine'
|
|
5
|
+
autoload :Generators, 'adva/generators'
|
|
6
|
+
autoload :Rack, 'adva/rack'
|
|
7
|
+
autoload :Registry, 'adva/registry'
|
|
8
|
+
autoload :Responder, 'adva/responder'
|
|
9
|
+
autoload :Tasks, 'adva/tasks/core'
|
|
10
|
+
autoload :Testing, 'adva/testing'
|
|
11
|
+
autoload :View, 'adva/view'
|
|
12
|
+
|
|
13
|
+
mattr_accessor :out
|
|
14
|
+
self.out = $stdout
|
|
15
|
+
|
|
16
|
+
class << self
|
|
17
|
+
def engines
|
|
18
|
+
@engines ||= constants.map do |name|
|
|
19
|
+
constant = const_get(name)
|
|
20
|
+
constant if constant != Adva::Core && constant.is_a?(Class) && constant < ::Rails::Engine
|
|
21
|
+
end.compact.sort { |lft, rgt| lft.name <=> rgt.name }.unshift(Adva::Core)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def engine(name)
|
|
25
|
+
name = "Adva::#{name.camelize}" unless name.to_s.starts_with?('Adva::')
|
|
26
|
+
engines.detect { |engine| engine.name == name }
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def engine_names
|
|
30
|
+
@engine_names ||= engines.map { |constant| constant.name.split('::').last.underscore.to_sym }
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def engine?(name)
|
|
34
|
+
engine_names.include?(name)
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
module HasOptions
|
|
2
|
+
def has_option(*names)
|
|
3
|
+
unless respond_to?(:option_definitions)
|
|
4
|
+
include InstanceMethods
|
|
5
|
+
cattr_accessor :option_definitions
|
|
6
|
+
self.option_definitions ||= {}
|
|
7
|
+
serialize :options
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
definition = names.extract_options!
|
|
11
|
+
names.map(&:to_sym).each do |name|
|
|
12
|
+
self.option_definitions[name] = definition
|
|
13
|
+
|
|
14
|
+
class_eval <<-rb, __FILE__, __LINE__
|
|
15
|
+
def #{name}
|
|
16
|
+
self.options ||= {}
|
|
17
|
+
options.key?(:#{name}) ? options[:#{name}] : option_default(:#{name})
|
|
18
|
+
end
|
|
19
|
+
# alias #{name}_before_type_cast #{name}
|
|
20
|
+
|
|
21
|
+
def #{name}=(value)
|
|
22
|
+
options_will_change!
|
|
23
|
+
self.options ||= {}
|
|
24
|
+
options[:#{name}] = option_type_cast(:#{name}, value)
|
|
25
|
+
end
|
|
26
|
+
rb
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
module InstanceMethods
|
|
31
|
+
OPTION_DEFAULTS = { :default => nil, :type => :string }
|
|
32
|
+
|
|
33
|
+
[:type, :default].each do |reader|
|
|
34
|
+
define_method(:"option_#{reader}") do |name|
|
|
35
|
+
self.class.option_definitions[name].key?(reader) ? self.class.option_definitions[name][reader] : OPTION_DEFAULTS[reader]
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
define_method :option_type_cast do |name, value|
|
|
40
|
+
return nil if value.nil?
|
|
41
|
+
case option_type(name)
|
|
42
|
+
when :string then value.to_s
|
|
43
|
+
when :integer then value.to_i rescue value ? 1 : 0
|
|
44
|
+
when :float then value.to_f
|
|
45
|
+
when :datetime then ActiveRecord::ConnectionAdapters::Column.string_to_time(value)
|
|
46
|
+
when :time then ActiveRecord::ConnectionAdapters::Column.string_to_dummy_time(value)
|
|
47
|
+
when :date then ActiveRecord::ConnectionAdapters::Column.string_to_date(value)
|
|
48
|
+
when :boolean then ActiveRecord::ConnectionAdapters::Column.value_to_boolean(value)
|
|
49
|
+
else value
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
ActiveRecord::Base.extend(HasOptions)
|
data/lib/adva/cli.rb
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# TODO, needs to use the local Gemfile if we're in an app
|
|
2
|
+
ENV['BUNDLE_GEMFILE'] = File.expand_path('../../../../Gemfile', __FILE__)
|
|
3
|
+
|
|
4
|
+
require 'rubygems'
|
|
5
|
+
require 'bundler/setup'
|
|
6
|
+
Bundler.require(:default)
|
|
7
|
+
|
|
8
|
+
Adva.engines.each { |engine| engine.new.load_tasks }
|
|
9
|
+
|
|
10
|
+
if task = Thor::Util.find_by_namespace("adva:#{ARGV.first}")
|
|
11
|
+
ARGV.shift
|
|
12
|
+
else
|
|
13
|
+
task = Thor::Util.find_by_namespace("adva:app")
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
task.start
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
require 'action_controller'
|
|
2
|
+
|
|
3
|
+
# abstract_actions makes a base controller transparently use a concrete controller
|
|
4
|
+
# for certain actions. E.g. with an sti base model like Section and concrete model
|
|
5
|
+
# like Page if the route points to the SectionsController it still will use a
|
|
6
|
+
# PagesController if the current resource is a Page.
|
|
7
|
+
|
|
8
|
+
module Adva
|
|
9
|
+
module Controller
|
|
10
|
+
module AbstractActions
|
|
11
|
+
module ActMacro
|
|
12
|
+
def abstract_actions(options = {})
|
|
13
|
+
unless abstract_actions?
|
|
14
|
+
include InternalRedirect
|
|
15
|
+
include InstanceMethods
|
|
16
|
+
|
|
17
|
+
class_inheritable_accessor :abstract_action_options
|
|
18
|
+
self.abstract_action_options = options.reverse_merge(:except => [])
|
|
19
|
+
|
|
20
|
+
before_filter :internal_redirect
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def abstract_actions?
|
|
25
|
+
included_modules.include?(InstanceMethods)
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
module InstanceMethods
|
|
30
|
+
def internal_redirect
|
|
31
|
+
if redirect_to_concretion?
|
|
32
|
+
internal_redirect_to_concretion
|
|
33
|
+
elsif redirect_to_abstraction?
|
|
34
|
+
internal_redirect_to_abstraction
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
protected
|
|
39
|
+
|
|
40
|
+
def redirect_to_abstraction?
|
|
41
|
+
concrete_controller? && !concrete_action?
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def redirect_to_concretion?
|
|
45
|
+
!concrete_controller? && concrete_action?
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def internal_redirect_to_abstraction
|
|
49
|
+
params[abstract_instance_name] = params.delete(instance_name)
|
|
50
|
+
internal_redirect_to("#{abstract_controller_class.controller_path}##{params[:action]}")
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def internal_redirect_to_concretion
|
|
54
|
+
params[instance_name] = params.delete(abstract_instance_name)
|
|
55
|
+
internal_redirect_to("#{controller_namespace}/#{collection_name}##{params[:action]}")
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def concrete_controller?
|
|
59
|
+
!self.instance_of?(abstract_controller_class)
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def concrete_action?
|
|
63
|
+
!Array(abstract_action_options[:except]).include?(params[:action].to_sym)
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def abstract_controller_class
|
|
67
|
+
@abstract_controller_class ||= begin
|
|
68
|
+
abstract = self.class
|
|
69
|
+
abstract = abstract.superclass until abstract.superclass.controller_name == 'base'
|
|
70
|
+
abstract
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def abstract_instance_name
|
|
75
|
+
@abstract_instance_name ||= abstract_controller_class.controller_name.singularize
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def controller_namespace
|
|
79
|
+
@controller_namespace ||= controller_path.split('/')[0..-2].join('/')
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
ActionController::Base.extend(ActMacro)
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Internally redirects a request to another controller. This is used by the
|
|
2
|
+
# abstract_actions module.
|
|
3
|
+
|
|
4
|
+
module Adva
|
|
5
|
+
module Controller
|
|
6
|
+
module InternalRedirect
|
|
7
|
+
def internal_redirect_to(target, params = nil)
|
|
8
|
+
action, controller = target.split('#').reverse
|
|
9
|
+
controller ||= controller_path
|
|
10
|
+
|
|
11
|
+
params ||= self.params
|
|
12
|
+
params.merge!(:controller => controller, :action => action)
|
|
13
|
+
params = yield(params) if block_given?
|
|
14
|
+
|
|
15
|
+
rack_endpoint = "#{controller}_controller".classify.constantize.action(action)
|
|
16
|
+
env['action_dispatch.request.parameters'] = params
|
|
17
|
+
response = rack_endpoint.call(env)
|
|
18
|
+
|
|
19
|
+
self.status, self.headers, self.response_body = response
|
|
20
|
+
@_response.headers.replace(response[1])
|
|
21
|
+
|
|
22
|
+
response
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|