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,68 @@
|
|
|
1
|
+
require 'gem_patching'
|
|
2
|
+
|
|
3
|
+
# Arel 1.0.0.rc1 Arel::Table#initialize and #table_exists? does not support
|
|
4
|
+
# instantiating an Arel::Table before the database table has been created.
|
|
5
|
+
#
|
|
6
|
+
# This happens in adva-cms2 during the setup of the cucumber test application
|
|
7
|
+
# where the environment has to be loaded (and thus models will be loaded) and
|
|
8
|
+
# migrations will only be run afterwards.
|
|
9
|
+
#
|
|
10
|
+
# see http://github.com/rails/arel/commit/19c5a95f1093653d2628dfb2f53637b0425dbba4#commitcomment-133903
|
|
11
|
+
#
|
|
12
|
+
# Also, in Arel 1.0.0.rc1 Arel::Table#initialize @options won't be initialized
|
|
13
|
+
# if the second argument is an engine, so #as will crash subsequently.
|
|
14
|
+
#
|
|
15
|
+
# These issues have been fixed in:
|
|
16
|
+
#
|
|
17
|
+
# http://github.com/svenfuchs/arel/commit/4b476404cbbecfedc255039c66c6eececb667d7f
|
|
18
|
+
# http://github.com/svenfuchs/arel/commit/3b1b24551106bc116cba404c992b513c5fbd137b
|
|
19
|
+
|
|
20
|
+
Gem.patching('arel', '1.0.1') do
|
|
21
|
+
Arel::Table.class_eval do
|
|
22
|
+
def initialize(name, options = {})
|
|
23
|
+
@name = name.to_s
|
|
24
|
+
@table_exists = nil
|
|
25
|
+
@table_alias = nil
|
|
26
|
+
@christener = Arel::Sql::Christener.new
|
|
27
|
+
@attributes = nil
|
|
28
|
+
@matching_attributes = nil
|
|
29
|
+
|
|
30
|
+
if options.is_a?(Hash)
|
|
31
|
+
@options = options
|
|
32
|
+
@engine = options[:engine] || Arel::Table.engine
|
|
33
|
+
|
|
34
|
+
if options[:as]
|
|
35
|
+
as = options[:as].to_s
|
|
36
|
+
@table_alias = as unless as == @name
|
|
37
|
+
end
|
|
38
|
+
else
|
|
39
|
+
@engine = options # Table.new('foo', engine)
|
|
40
|
+
@options = {}
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
if @engine.connection
|
|
44
|
+
begin
|
|
45
|
+
require "arel/engines/sql/compilers/#{@engine.adapter_name.downcase}_compiler"
|
|
46
|
+
rescue LoadError
|
|
47
|
+
begin
|
|
48
|
+
# try to load an externally defined compiler, in case this adapter has defined the compiler on its own.
|
|
49
|
+
require "#{@engine.adapter_name.downcase}/arel_compiler"
|
|
50
|
+
rescue LoadError
|
|
51
|
+
raise "#{@engine.adapter_name} is not supported by Arel."
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
@@tables ||= engine.connection.tables
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def as(table_alias)
|
|
60
|
+
@options ||= {}
|
|
61
|
+
Arel::Table.new(name, options.merge(:as => table_alias))
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def table_exists?
|
|
65
|
+
@table_exists ||= @@tables.include?(name) || engine.connection.table_exists?(name)
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
require 'inherited_resources'
|
|
2
|
+
|
|
3
|
+
Gem.patching('inherited_resources', '1.1.2') do
|
|
4
|
+
InheritedResources::Actions.module_eval do
|
|
5
|
+
module Actions
|
|
6
|
+
def index(options={}, &block)
|
|
7
|
+
respond_with(*(with_chain(resource_class) << options), &block)
|
|
8
|
+
end
|
|
9
|
+
alias :index! :index
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
InheritedResources::BaseHelpers.module_eval do
|
|
14
|
+
def collection
|
|
15
|
+
get_collection_ivar || begin
|
|
16
|
+
collection = end_of_association_chain
|
|
17
|
+
collection = collection.find(:all) unless collection.respond_to?(:each)
|
|
18
|
+
set_collection_ivar(collection)
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def build_resource
|
|
23
|
+
get_resource_ivar || begin
|
|
24
|
+
resource = end_of_association_chain.send(method_for_build, params[resource_instance_name] || {})
|
|
25
|
+
# check if resource is included to prevent deleting from a relation
|
|
26
|
+
if method_for_build == :build && end_of_association_chain.include?(resource)
|
|
27
|
+
end_of_association_chain.delete(resource)
|
|
28
|
+
end
|
|
29
|
+
set_resource_ivar(resource)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# require 'gem_patching'
|
|
2
|
+
#
|
|
3
|
+
# # Arel w/ Rails 3.0.0.rc2 breaks when #as is called on a table that was initialized w/
|
|
4
|
+
# # an engine as second parameter
|
|
5
|
+
# Gem.patching('rails', '3.0.0.rc2') do
|
|
6
|
+
# Arel::Table.class_eval do
|
|
7
|
+
# def initialize_with_options_fix(name, options = {})
|
|
8
|
+
# initialize_without_options_fix(name, options)
|
|
9
|
+
# @options ||= {}
|
|
10
|
+
# end
|
|
11
|
+
# alias_method_chain :initialize, :options_fix
|
|
12
|
+
# end
|
|
13
|
+
# end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Allow to register javascript/stylesheet_expansions to existing symbols
|
|
2
|
+
#
|
|
3
|
+
# see https://rails.lighthouseapp.com/projects/8994/tickets/1975-allow-to-register-javascriptstylesheet_expansions-to-existing-symbols
|
|
4
|
+
|
|
5
|
+
require 'action_view/helpers/asset_tag_helper'
|
|
6
|
+
|
|
7
|
+
module ActionView::Helpers::AssetTagHelper
|
|
8
|
+
def self.register_javascript_expansion(expansions)
|
|
9
|
+
expansions.each do |key, values|
|
|
10
|
+
@@javascript_expansions[key] ||= []
|
|
11
|
+
@@javascript_expansions[key] += Array(values)
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def self.register_stylesheet_expansion(expansions)
|
|
16
|
+
expansions.each do |key, values|
|
|
17
|
+
@@stylesheet_expansions[key] ||= []
|
|
18
|
+
@@stylesheet_expansions[key] += Array(values)
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
require 'action_dispatch/routing/mapper'
|
|
2
|
+
require 'action_dispatch/routing/route_set'
|
|
3
|
+
|
|
4
|
+
module ActionDispatch
|
|
5
|
+
module Routing
|
|
6
|
+
class RouteSet
|
|
7
|
+
def recognize_path(path, environment = {})
|
|
8
|
+
method = (environment[:method] || "GET").to_s.upcase
|
|
9
|
+
path = Rack::Mount::Utils.normalize_path(path)
|
|
10
|
+
|
|
11
|
+
begin
|
|
12
|
+
|
|
13
|
+
# TODO submit a rails patch
|
|
14
|
+
|
|
15
|
+
# env = Rack::MockRequest.env_for(path, {:method => method})
|
|
16
|
+
env = Rack::MockRequest.env_for(path, {:method => method}).merge(environment)
|
|
17
|
+
rescue URI::InvalidURIError => e
|
|
18
|
+
raise ActionController::RoutingError, e.message
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
req = Rack::Request.new(env)
|
|
22
|
+
@set.recognize(req) do |route, matches, params|
|
|
23
|
+
params.each do |key, value|
|
|
24
|
+
if value.is_a?(String)
|
|
25
|
+
value = value.dup.force_encoding(Encoding::BINARY) if value.encoding_aware?
|
|
26
|
+
params[key] = URI.unescape(value)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
dispatcher = route.app
|
|
31
|
+
dispatcher = dispatcher.app while dispatcher.is_a?(Mapper::Constraints)
|
|
32
|
+
|
|
33
|
+
if dispatcher.is_a?(Dispatcher) && dispatcher.controller(params, false)
|
|
34
|
+
dispatcher.prepare_params!(params)
|
|
35
|
+
return params
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
raise ActionController::RoutingError, "No route matches #{path.inspect}"
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# make route_set generator pass the current segment/param name to to_param
|
|
2
|
+
# if arity allows it. so we can use param names in routes and distinguish them
|
|
3
|
+
# in the model.
|
|
4
|
+
|
|
5
|
+
require 'action_dispatch/routing/route_set'
|
|
6
|
+
|
|
7
|
+
ActionDispatch::Routing::RouteSet::Generator.class_eval do
|
|
8
|
+
def opts
|
|
9
|
+
parameterize = lambda do |name, value|
|
|
10
|
+
if name == :controller
|
|
11
|
+
value
|
|
12
|
+
elsif value.is_a?(Array)
|
|
13
|
+
value.map { |v| Rack::Mount::Utils.escape_uri(to_param(name, v)) }.join('/')
|
|
14
|
+
else
|
|
15
|
+
return nil unless param = to_param(name, value)
|
|
16
|
+
param.split('/').map { |v| Rack::Mount::Utils.escape_uri(v) }.join("/")
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
{:parameterize => parameterize}
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def to_param(name, value)
|
|
23
|
+
value.method(:to_param).arity == 1 ? value.to_param(name) : value.to_param
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
require 'gem_patching'
|
|
2
|
+
|
|
3
|
+
# Make build associations have their given type
|
|
4
|
+
# i.e.: site.sections.build(:type => 'Page').class == Page
|
|
5
|
+
# http://pragmatig.com/2010/06/04/fixing-rails-nested-attributes-on-collections-with-sti
|
|
6
|
+
|
|
7
|
+
Gem.patching('rails', '3.0.0') do
|
|
8
|
+
class ActiveRecord::Reflection::AssociationReflection
|
|
9
|
+
def build_association(*options)
|
|
10
|
+
if options.first.is_a?(Hash) && options.first[:type].present?
|
|
11
|
+
options.first[:type].to_s.constantize.new(*options)
|
|
12
|
+
else
|
|
13
|
+
klass.new(*options)
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# Gem.patching('rails', '3.0.0.rc') do
|
|
2
|
+
# require 'action_view/template/resolver'
|
|
3
|
+
# ActionView::Resolver.class_eval do
|
|
4
|
+
# def caching?
|
|
5
|
+
# # @caching ||= !defined?(Rails.application) || Rails.application.config.cache_classes
|
|
6
|
+
# @caching ||= !defined?(Rails.application) || Rails.application.nil? || Rails.application.config.cache_classes
|
|
7
|
+
# end
|
|
8
|
+
# end
|
|
9
|
+
# end
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
require 'gem_patching'
|
|
2
|
+
|
|
3
|
+
# remove trailing segments '.1' and query params '?=1' from url
|
|
4
|
+
Gem.patching('rails', '3.0.0') do
|
|
5
|
+
ActionDispatch::Routing::RouteSet.class_eval do
|
|
6
|
+
def url_for_with_singleton_resource_patch(options)
|
|
7
|
+
url_for_without_singleton_resource_patch(options).
|
|
8
|
+
sub(/\.\d+(\Z|\?)/) { $1 || '' }.
|
|
9
|
+
sub(/\?=\d+$/, '')
|
|
10
|
+
end
|
|
11
|
+
alias_method_chain :url_for, :singleton_resource_patch
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# walks up the inheritance chain for given records if the generated named route
|
|
16
|
+
# helper does not exist
|
|
17
|
+
# see https://rails.lighthouseapp.com/projects/8994-ruby-on-rails/tickets/2986-polymorphic_url-should-handle-sti-better
|
|
18
|
+
Gem.patching('rails', '3.0.0') do
|
|
19
|
+
require 'action_dispatch/routing/polymorphic_routes'
|
|
20
|
+
|
|
21
|
+
ActionDispatch::Routing::PolymorphicRoutes.module_eval do
|
|
22
|
+
def build_named_route_call_with_sti_fallbacks(records, inflection, options = {})
|
|
23
|
+
# FIXME should cache successful transformation for reuse
|
|
24
|
+
# FIXME currently only works if records is an array (also might be a single record or a Hash)
|
|
25
|
+
original_records = records
|
|
26
|
+
records = records.dup unless records.is_a?(Symbol)
|
|
27
|
+
method = build_named_route_call_without_sti_fallbacks(records, inflection, options)
|
|
28
|
+
if !respond_to?(method, true) && original_records.is_a?(Array) && records = walk_sti_for_named_route_call(original_records.dup)
|
|
29
|
+
build_named_route_call_with_sti_fallbacks(records, inflection, options)
|
|
30
|
+
else
|
|
31
|
+
method
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
alias_method_chain :build_named_route_call, :sti_fallbacks
|
|
35
|
+
|
|
36
|
+
def walk_sti_for_named_route_call(records)
|
|
37
|
+
walked = []
|
|
38
|
+
while record = records.pop
|
|
39
|
+
if record.is_a?(ActiveRecord::Base) && record.class.superclass != ActiveRecord::Base
|
|
40
|
+
return records + [record.becomes(record.class.superclass)] + walked
|
|
41
|
+
end
|
|
42
|
+
walked << record
|
|
43
|
+
end
|
|
44
|
+
nil
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# ActionDispatch::Integration::Runner defines method_missing but no accompaning
|
|
50
|
+
# respond_to? method. It thus doesn't respond_to? to named route url helpers even
|
|
51
|
+
# though it actually responds to them. Happens with the PolymorphicRoutes patch
|
|
52
|
+
# above, so this patch is here as well.
|
|
53
|
+
Gem.patching('rails', '3.0.0') do
|
|
54
|
+
ActionDispatch::Integration::Runner.module_eval do
|
|
55
|
+
def respond_to?(method, include_private = false)
|
|
56
|
+
@integration_session.respond_to?(method, include_private) || super
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
require 'gem_patching'
|
|
2
|
+
|
|
3
|
+
# add "blog edit_blog" as css classes. should propose a patch to simple_form
|
|
4
|
+
|
|
5
|
+
Gem.patching('simple_form', '1.2.2') do
|
|
6
|
+
SimpleForm::ActionViewExtensions::FormHelper.module_eval do
|
|
7
|
+
[:form_for, :fields_for, :remote_form_for].each do |helper|
|
|
8
|
+
class_eval <<-METHOD, __FILE__, __LINE__
|
|
9
|
+
def simple_#{helper}(record_or_name_or_array, *args, &block)
|
|
10
|
+
css_classes = simple_css_classes(record_or_name_or_array)
|
|
11
|
+
|
|
12
|
+
options = args.extract_options!
|
|
13
|
+
options[:builder] = SimpleForm::FormBuilder
|
|
14
|
+
options[:html] ||= {}
|
|
15
|
+
options[:html][:class] = "simple_form \#{css_classes} \#{options[:html][:class]}".strip
|
|
16
|
+
|
|
17
|
+
with_custom_field_error_proc do
|
|
18
|
+
#{helper}(record_or_name_or_array, *(args << options), &block)
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
METHOD
|
|
22
|
+
|
|
23
|
+
def simple_css_classes(record_or_name_or_array)
|
|
24
|
+
css_classes = case record_or_name_or_array
|
|
25
|
+
when String, Symbol
|
|
26
|
+
record_or_name_or_array.to_s
|
|
27
|
+
when Array
|
|
28
|
+
record = record_or_name_or_array.last
|
|
29
|
+
action = record.new_record? ? 'new' : 'edit'
|
|
30
|
+
[dom_class(record), dom_class(record, action)].join(' ')
|
|
31
|
+
else
|
|
32
|
+
dom_class(record_or_name_or_array)
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
begin
|
|
2
|
+
require 'webrat'
|
|
3
|
+
rescue LoadError
|
|
4
|
+
end
|
|
5
|
+
require 'gem_patching'
|
|
6
|
+
|
|
7
|
+
Gem.patching('webrat', '0.7.0') do
|
|
8
|
+
Webrat::Link.class_eval do
|
|
9
|
+
def http_method
|
|
10
|
+
if !@element["data-method"].blank?
|
|
11
|
+
@element["data-method"]
|
|
12
|
+
elsif !onclick.blank? && onclick.include?("f.submit()")
|
|
13
|
+
http_method_from_js_form
|
|
14
|
+
else
|
|
15
|
+
:get
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end if defined?(Webrat)
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
begin
|
|
2
|
+
require 'webrat'
|
|
3
|
+
rescue LoadError
|
|
4
|
+
end
|
|
5
|
+
# require 'webrat/core/logging'
|
|
6
|
+
require 'gem_patching'
|
|
7
|
+
|
|
8
|
+
Gem.patching('webrat', '0.7.0') do
|
|
9
|
+
Webrat::Logging.class_eval do
|
|
10
|
+
def logger
|
|
11
|
+
case Webrat.configuration.mode
|
|
12
|
+
when :rails
|
|
13
|
+
defined?(Rails) ? Rails.logger : nil
|
|
14
|
+
else
|
|
15
|
+
super
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end if defined?(Webrat)
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
begin
|
|
2
|
+
require 'webrat'
|
|
3
|
+
rescue LoadError
|
|
4
|
+
end
|
|
5
|
+
# require 'webrat/core/logging'
|
|
6
|
+
require 'gem_patching'
|
|
7
|
+
|
|
8
|
+
Gem.patching('webrat', '0.7.0') do
|
|
9
|
+
Webrat::FileField.class_eval do
|
|
10
|
+
include ActionDispatch::TestProcess
|
|
11
|
+
|
|
12
|
+
def test_uploaded_file
|
|
13
|
+
return "" if @value.blank?
|
|
14
|
+
|
|
15
|
+
case Webrat.configuration.mode
|
|
16
|
+
when :rails
|
|
17
|
+
if content_type
|
|
18
|
+
# Rails 3 does not have an ActionController::TestUploadedFile anymore
|
|
19
|
+
Rack::Test::UploadedFile.new(@value, content_type)
|
|
20
|
+
else
|
|
21
|
+
Rack::Test::UploadedFile.new(@value)
|
|
22
|
+
end
|
|
23
|
+
when :rack, :merb
|
|
24
|
+
Rack::Test::UploadedFile.new(@value, content_type)
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end if defined?(Webrat)
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
def assert_email_sent(attributes)
|
|
2
|
+
emails = ::ActionMailer::Base.deliveries
|
|
3
|
+
assert !emails.empty?, "No emails were sent"
|
|
4
|
+
matching_emails = emails.select do |email|
|
|
5
|
+
attributes.all? do |name, value|
|
|
6
|
+
case name
|
|
7
|
+
when 'body'
|
|
8
|
+
value.split(',').map(&:strip).all? { |value| email.body.include?(value) }
|
|
9
|
+
else
|
|
10
|
+
email.send(name).to_s == value
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
assert !matching_emails.empty?, begin
|
|
15
|
+
msg = ["None of the #{emails.size} emails matched #{attributes.inspect}.\nInstead, there are the following emails:"]
|
|
16
|
+
msg += emails.map { |email| attributes.keys.map { |key| [key, email.send(key)] }.map { |key, value| "#{key}: #{value}" }.join(',') }
|
|
17
|
+
msg.join("\n")
|
|
18
|
+
end
|
|
19
|
+
end
|