Commit 2b966b414091e3bd225405ab442f223c66b26249
1 parent
2623f171
Exists in
master
and in
29 other branches
ActionItem519: routing hosted domain paths into content_viewer
controller git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@2319 3f533792-8f58-4932-b0fe-aaf55b0a4547
Showing
6 changed files
with
50 additions
and
3 deletions
Show diff stats
config/environment.rb
... | ... | @@ -104,6 +104,8 @@ require 'acts_as_having_image' |
104 | 104 | require 'sqlite_extension' |
105 | 105 | require 'will_paginate' |
106 | 106 | |
107 | +require 'route_if' | |
108 | + | |
107 | 109 | # load a local configuration if present, but not under test environment. |
108 | 110 | if ENV['RAILS_ENV'] != 'test' |
109 | 111 | localconfigfile = File.join(RAILS_ROOT, 'config', 'local.rb') | ... | ... |
config/routes.rb
... | ... | @@ -15,9 +15,14 @@ ActionController::Routing::Routes.draw do |map| |
15 | 15 | ## Public controllers |
16 | 16 | ###################################################### |
17 | 17 | |
18 | - map.connect 'test/:controller/:action/:id' , :controller => /.*test.*/ | |
18 | + # You can have the root of your site routed by hooking up '' | |
19 | + hosted_domain_matcher = lambda do |env| | |
20 | + Domain.find_by_name(env[:host]) | |
21 | + end | |
22 | + map.connect '*page', :controller => 'content_viewer', :action => 'view_page', :conditions => { :if => hosted_domain_matcher } | |
23 | + | |
24 | + map.connect 'test/:controller/:action/:id' , :controller => /.*test.*/ | |
19 | 25 | |
20 | - # You can have the root of your site routed by hooking up '' | |
21 | 26 | # -- just remember to delete public/index.html. |
22 | 27 | map.connect '', :controller => "home" |
23 | 28 | ... | ... |
lib/needs_profile.rb
... | ... | @@ -0,0 +1,18 @@ |
1 | +require 'action_controller/routing' | |
2 | + | |
3 | +class ActionController::Routing::RouteSet | |
4 | + alias :orig_extract_request_environment :extract_request_environment | |
5 | + def extract_request_environment(request) | |
6 | + orig_extract_request_environment(request).merge(:host => request.host) | |
7 | + end | |
8 | +end | |
9 | + | |
10 | +class ActionController::Routing::Route | |
11 | + alias :orig_recognition_conditions :recognition_conditions | |
12 | + def recognition_conditions | |
13 | + result = orig_recognition_conditions | |
14 | + result << "conditions[:if].call(env)" if conditions[:if] | |
15 | + result | |
16 | + end | |
17 | +end | |
18 | + | ... | ... |
test/functional/content_viewer_controller_test.rb
... | ... | @@ -286,4 +286,16 @@ class ContentViewerControllerTest < Test::Unit::TestCase |
286 | 286 | assert_no_tag :tag => 'div', :attributes => { :id => 'profile-disabled' }, :content => Environment.default.message_for_disabled_enterprise |
287 | 287 | end |
288 | 288 | |
289 | + should 'load the correct profile when using hosted domain' do | |
290 | + profile = create_user('mytestuser').person | |
291 | + profile.domains << Domain.create!(:name => 'micojones.net') | |
292 | + profile.save! | |
293 | + | |
294 | + ActionController::TestRequest.any_instance.expects(:host).returns('www.micojones.net').at_least_once | |
295 | + | |
296 | + get :view_page, :page => [] | |
297 | + | |
298 | + assert_equal profile, assigns(:profile) | |
299 | + end | |
300 | + | |
289 | 301 | end | ... | ... |
test/integration/routing_test.rb
... | ... | @@ -156,4 +156,14 @@ class RoutingTest < ActionController::IntegrationTest |
156 | 156 | assert_routing('/catalog/profile.withdot/1234', :controller => 'catalog', :action => 'show', :profile => 'profile.withdot', :id => '1234') |
157 | 157 | end |
158 | 158 | |
159 | + def test_hosted_domain_routing | |
160 | + | |
161 | + user = create_user('testuser').person | |
162 | + domain = Domain.create!(:name => 'example.com', :owner => user) | |
163 | + | |
164 | + ActionController::TestRequest.any_instance.expects(:host).returns('www.example.com') | |
165 | + | |
166 | + assert_routing('/work/free-software', :controller => 'content_viewer', :action => 'view_page', :page => [ 'work', 'free-software'] ) | |
167 | + end | |
168 | + | |
159 | 169 | end | ... | ... |