Changeset 1207
- Timestamp:
- 2008-10-02 14:15:18 (3 months ago)
- Files:
-
- trunk/app/controllers/application.rb (modified) (1 diff)
- trunk/app/controllers/nodes_controller.rb (modified) (3 diffs)
- trunk/lib/parser/lib/rules/zena.rb (modified) (1 diff)
- trunk/test/helpers/zena_parser/basic.yml (modified) (1 diff)
- trunk/test/integration/navigation_test.rb (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/app/controllers/application.rb
r1206 r1207 583 583 # 8. 'test.host/fr' the redirect for this rule is called once we are sure the request is not for document data (lang in this case can be different from what the visitor is visiting due to caching optimization) 584 584 def set_lang 585 # TODO: how to include zena rules in file reload (in a better way then this hack) ?586 # load "#{RAILS_ROOT}/lib/parser/lib/rules/zena.rb" if RAILS_ENV == 'development'587 585 if params[:prefix] =~ /^\d+$/ 588 586 # this has nothing to do with set_lang... trunk/app/controllers/nodes_controller.rb
r1195 r1207 35 35 # Render badly formed urls 36 36 def catch_all 37 redirect_to "/" + ([prefix]+params[:path]).flatten.join('/') 37 url_params_list = [] 38 url_params.each do |k,v| 39 url_params_list << "#{k}=#{CGI.escape(v)}" 40 end 41 redirect_to "/" + ([prefix]+params[:path]).flatten.join('/') + (url_params_list == [] ? '' : "?#{url_params_list.join('&')}") 38 42 end 39 43 … … 384 388 when 'show' 385 389 # show must have a 'path' parameter 390 386 391 if params[:prefix] != prefix && !avoid_prefix_redirect 387 392 # lang changed 388 393 set_visitor_lang(params[:prefix]) 389 redirect_url = zen_path(@node, :mode => params[:mode])394 redirect_url = zen_path(@node, path_params) 390 395 elsif params[:path] != zen_path(@node, :format=>params[:format], :mode=>params[:mode], :asset=>params[:asset]).split('/')[2..-1] 391 396 # badly formed url 392 redirect_url = zen_path(@node, :mode => params[:mode])397 redirect_url = zen_path(@node, path_params) 393 398 elsif params[:mode] == 'edit' && !@node.can_write? 394 399 # special 'edit' mode … … 427 432 @node.kind_of?(Document) && params[:format] == @node.c_ext 428 433 end 434 435 # Url parameters (without format/mode/prefix...) 436 def url_params 437 res = {} 438 path_params.each do |k,v| 439 next if [:mode, :format, :asset].include?(k.to_sym) 440 res[k.to_sym] = v 441 end 442 res 443 end 444 445 # Url parameters (without action,controller,path,prefix) 446 def path_params 447 res = {} 448 params.each do |k,v| 449 next if [:action, :controller, :path, :prefix, :id].include?(k.to_sym) 450 res[k.to_sym] = v 451 end 452 res 453 end 429 454 end 430 455 trunk/lib/parser/lib/rules/zena.rb
r1206 r1207 2670 2670 end 2671 2671 when :test 2672 if value =~ /("[^"]*"|'[^']*'|[\w:\.\-]+)\s*(>=|<=|<>|<|=|>|lt|le|eq|ne|ge|gt)\s*("[^"]*"|'[^']*'|[\w \.\-]+)/2672 if value =~ /("[^"]*"|'[^']*'|[\w:\.\-]+)\s*(>=|<=|<>|<|=|>|lt|le|eq|ne|ge|gt)\s*("[^"]*"|'[^']*'|[\w:\.\-]+)/ 2673 2673 parts = [$1,$3] 2674 2674 op = {'lt' => '<','le' => '<=','eq' => '==', '=' => '==','ne' => '!=','ge' => '>=','gt' => '>'}[$2] || $2 trunk/test/helpers/zena_parser/basic.yml
r1206 r1207 539 539 tem: "<% if params[:f].to_i == 3 -%>three<% end -%> / <% if !params[:f].blank? -%>exist<% end -%>" 540 540 541 if_test_param_var: 542 src: "<r:set var='year'>3000</r:set><r:if test='year eq param:f'>funky!</r:if>" 543 tem: "<% set_year = capture do %>3000<% end -%><% if set_year.to_s == params[:f].to_s -%>funky!<% end -%>" 544 541 545 if_in_if: 542 546 src: "<r:if test='id eq 22'><r:if test='1 eq 2'>strange...<r:else>wrong!</r:else></r:if><r:else>other node</r:else></r:if>" trunk/test/integration/navigation_test.rb
r1184 r1207 144 144 get 'http://test.host/project29.html' 145 145 assert_redirected_to 'http://test.host/en/project29.html' 146 follow_redirect! 147 assert_response :success 148 end 149 150 def test_url_without_lang_redirect_keeps_url_params 151 get 'http://test.host/project29.html?page=2' 152 assert_redirected_to 'http://test.host/en/project29.html?page=2' 153 follow_redirect! 154 assert_response :success 155 end 156 157 def test_url_bad_class_redirect_keeps_url_params 158 get 'http://test.host/en/page29.html?page=2' 159 assert_redirected_to 'http://test.host/en/project29.html?page=2' 146 160 follow_redirect! 147 161 assert_response :success
