Changeset 1208

Show
Ignore:
Timestamp:
2008-10-02 16:34:45 (3 months ago)
Author:
gaspard
Message:

commit 207c84eff2dbe432cb8c6fff69c54e5425f446a6
Author: Gaspard Bucher <gaspard@teti.ch>

Updated vhost config file to make sure urls with query strings are sent to cluster and static file is not used. Renamed 'url_params', 'query_params' since this seems to be how apache calls this. Fixed a bug where pages with query_params would get stored in cache.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/app/controllers/application.rb

    r1207 r1208  
    238238    # Return true if we can cache the current page 
    239239    def caching_allowed(opts = {}) 
    240       return false if current_site.authentication? 
     240      return false if current_site.authentication? || query_params != {} 
    241241      opts[:authenticated] || visitor.is_anon? 
    242242    end 
     
    826826      obj.save 
    827827    end 
     828     
     829    # Url parameters (without format/mode/prefix...) 
     830    def query_params 
     831      res = {} 
     832      path_params.each do |k,v| 
     833        next if [:mode, :format, :asset].include?(k.to_sym) 
     834        res[k.to_sym] = v 
     835      end 
     836      res 
     837    end 
     838     
     839    # Url parameters (without action,controller,path,prefix) 
     840    def path_params 
     841      res = {} 
     842      params.each do |k,v| 
     843        next if [:action, :controller, :path, :prefix, :id].include?(k.to_sym) 
     844        res[k.to_sym] = v 
     845      end 
     846      res 
     847    end 
    828848end 
    829849 
  • trunk/app/controllers/nodes_controller.rb

    r1207 r1208  
    3535  # Render badly formed urls 
    3636  def catch_all 
    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('&')}") 
     37    query_params_list = [] 
     38    query_params.each do |k,v| 
     39      query_params_list << "#{k}=#{CGI.escape(v)}" 
     40    end 
     41    redirect_to "/" + ([prefix]+params[:path]).flatten.join('/') + (query_params_list == [] ? '' : "?#{query_params_list.join('&')}") 
    4242  end 
    4343   
     
    432432      @node.kind_of?(Document) && params[:format] == @node.c_ext 
    433433    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 
    454434end 
    455435 
  • trunk/config/vhost.rhtml

    r827 r1208  
    6363 
    6464  # Redirect all non-static requests to cluster 
    65   RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f 
     65  RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME}%{QUERY_STRING} !-f 
    6666  RewriteRule ^/(.*)$ balancer://<%= balancer %>%{REQUEST_URI} [P,QSA,L] 
    6767   
  • trunk/lib/parser/lib/rules/zena.rb

    r1207 r1208  
    568568      states = ((@params[:states] || 'todo, done') + ' ').split(',').map(&:strip) 
    569569       
    570       url_params = "node[#{@params[:attr]}]=\#{#{states.inspect}[ ((#{states.inspect}.index(#{node_attribute(@params[:attr])}.to_s) || 0)+1) % #{states.size}]}#{upd_both}" 
    571        
    572        
    573       out link_to_update(block, :url_params => url_params, :method => :put, :html_params => get_html_params(@params)) 
     570      query_params = "node[#{@params[:attr]}]=\#{#{states.inspect}[ ((#{states.inspect}.index(#{node_attribute(@params[:attr])}.to_s) || 0)+1) % #{states.size}]}#{upd_both}" 
     571       
     572       
     573      out link_to_update(block, :query_params => query_params, :method => :put, :html_params => get_html_params(@params)) 
    574574    end 
    575575     
     
    12351235     
    12361236      if role = @params[:set] || @params[:add] 
    1237         url_params = ["node[#{role}_id]=[id]"] 
    1238       else 
    1239         url_params = [] 
     1237        query_params = ["node[#{role}_id]=[id]"] 
     1238      else 
     1239        query_params = [] 
    12401240        # set='icon_for=[id], v_status='50', v_title='[v_title]' 
    12411241        @params.each do |k, v| 
     
    12431243          value, static = parse_attributes_in_value(v, :erb => false, :skip_node_attributes => true) 
    12441244          key = change == 'params' ? "params[#{k}]" : "node[#{k}]" 
    1245           url_params << "#{key}=#{CGI.escape(value)}" 
    1246         end 
    1247         return parser_error("missing parameters to set values") if url_params == [] 
    1248       end 
    1249      
    1250       url_params << "change=#{change}" if change == 'receiver' 
    1251       url_params << "t_url=#{CGI.escape(template_url)}" 
    1252       url_params << "dom_id=#{erb_dom_id}" 
    1253       url_params << start_node_s_param(:erb) 
    1254       url_params << "done=#{CGI.escape(@params[:done])}" if @params[:done] 
     1245          query_params << "#{key}=#{CGI.escape(value)}" 
     1246        end 
     1247        return parser_error("missing parameters to set values") if query_params == [] 
     1248      end 
     1249     
     1250      query_params << "change=#{change}" if change == 'receiver' 
     1251      query_params << "t_url=#{CGI.escape(template_url)}" 
     1252      query_params << "dom_id=#{erb_dom_id}" 
     1253      query_params << start_node_s_param(:erb) 
     1254      query_params << "done=#{CGI.escape(@params[:done])}" if @params[:done] 
    12551255     
    12561256      "<script type='text/javascript'> 
    12571257      //<![CDATA[ 
    1258       Droppables.add('#{erb_dom_id}', {hoverclass:'#{hover || 'drop_hover'}', onDrop:function(element){new Ajax.Request('/nodes/#{erb_node_id}/drop?#{url_params.join('&')}', {asynchronous:true, evalScripts:true, method:'put', parameters:'drop=' + encodeURIComponent(element.id)})}}) 
     1258      Droppables.add('#{erb_dom_id}', {hoverclass:'#{hover || 'drop_hover'}', onDrop:function(element){new Ajax.Request('/nodes/#{erb_node_id}/drop?#{query_params.join('&')}', {asynchronous:true, evalScripts:true, method:'put', parameters:'drop=' + encodeURIComponent(element.id)})}}) 
    12591259      //]]> 
    12601260      </script>" 
     
    17441744     
    17451745    def make_link(options = {}) 
    1746       url_params   = options[:url_params] || {} 
     1746      query_params   = options[:query_params] || {} 
    17471747      default_text = options[:default_text] 
    17481748      params = @params.dup 
     
    18061806       
    18071807      (params.keys - [:style, :class, :id, :rel, :name, :anchor, :attr, :tattr, :trans, :text, :page]).each do |k| 
    1808         url_params[k] = params[k] 
    1809       end 
    1810        
    1811       # TODO: merge these two url_params cleanup things into something cleaner. 
     1808        query_params[k] = params[k] 
     1809      end 
     1810       
     1811      # TODO: merge these two query_params cleanup things into something cleaner. 
    18121812      if remote_target 
    18131813        # ajax 
    1814         url_params_list = [] 
    1815         url_params.each do |k,v| 
     1814        query_params_list = [] 
     1815        query_params.each do |k,v| 
    18161816          if k == :date 
    18171817            if v == 'current_date' 
     
    18291829            str = static ? CGI.escape(attribute) : "\#{CGI.escape(\"#{attribute}\")}" 
    18301830          end 
    1831           url_params_list << "#{k.gsub('"','')}=#{str}" 
    1832         end 
    1833         pre_space + link_to_update(remote_target, :node_id => "#{lnode}.zip", :url_params => url_params_list, :default_text => default_text, :html_params => html_params) 
     1831          query_params_list << "#{k.gsub('"','')}=#{str}" 
     1832        end 
     1833        pre_space + link_to_update(remote_target, :node_id => "#{lnode}.zip", :query_params => query_params_list, :default_text => default_text, :html_params => html_params) 
    18341834      else 
    18351835        # direct link 
    1836         url_params.each do |k,v| 
     1836        query_params.each do |k,v| 
    18371837          if k == :date 
    18381838            if v == 'current_date' 
    1839               url_params[k] = current_date 
     1839              query_params[k] = current_date 
    18401840            elsif v =~ /\A\d/ 
    1841               url_params[k] = v.inspect 
     1841              query_params[k] = v.inspect 
    18421842            elsif v =~ /\[/ 
    18431843              attribute, static = parse_attributes_in_value(v.gsub('"',''), :erb => false) 
    1844               url_params[k] = "\"#{attribute}\"" 
     1844              query_params[k] = "\"#{attribute}\"" 
    18451845            else 
    1846               url_params[k] = node_attribute(v) 
     1846              query_params[k] = node_attribute(v) 
    18471847            end 
    18481848          else   
    18491849            attribute, static = parse_attributes_in_value(v.gsub('"',''), :erb => false) 
    1850             url_params[k] = "\"#{attribute}\"" 
    1851           end 
    1852         end 
    1853          
    1854         url_params.merge!(opts) 
     1850            query_params[k] = "\"#{attribute}\"" 
     1851          end 
     1852        end 
     1853         
     1854        query_params.merge!(opts) 
    18551855         
    18561856        opts_str = '' 
    1857         url_params.keys.sort {|a,b| a.to_s <=> b.to_s }.each do |k| 
    1858           opts_str << ",:#{k.to_s.gsub(/[^a-z_A-Z_]/,'')}=>#{url_params[k]}" 
     1857        query_params.keys.sort {|a,b| a.to_s <=> b.to_s }.each do |k| 
     1858          opts_str << ",:#{k.to_s.gsub(/[^a-z_A-Z_]/,'')}=>#{query_params[k]}" 
    18591859        end 
    18601860         
     
    18711871        @context[:vars] ||= [] 
    18721872        @context[:vars] << "#{pagination_key}_previous" 
    1873         out make_link(:default_text => "<%= set_#{pagination_key}_previous %>", :url_params => {pagination_key => "[#{pagination_key}_previous]"}) 
     1873        out make_link(:default_text => "<%= set_#{pagination_key}_previous %>", :query_params => {pagination_key => "[#{pagination_key}_previous]"}) 
    18741874        out "<% end -%>" 
    18751875      when 'next' 
     
    18771877        @context[:vars] ||= [] 
    18781878        @context[:vars] << "#{pagination_key}_next" 
    1879         out make_link(:default_text => "<%= set_#{pagination_key}_next %>", :url_params => {pagination_key => "[#{pagination_key}_next]"}) 
     1879        out make_link(:default_text => "<%= set_#{pagination_key}_next %>", :query_params => {pagination_key => "[#{pagination_key}_next]"}) 
    18801880        out "<% end -%>" 
    18811881      when 'list' 
     
    29522952      opts[:cond]   ||= "#{node}.can_write?" if method != :get 
    29532953       
    2954       url_params = [opts[:url_params]].flatten.compact 
     2954      query_params = [opts[:query_params]].flatten.compact 
    29552955       
    29562956      if method == :get 
    29572957        if target 
    2958           url_params << "t_url=#{CGI.escape(target.template_url)}"  
    2959           url_params << "dom_id=#{target.dom_id}" 
    2960         else 
    2961           url_params << "dom_id=_page" 
    2962         end 
    2963       else 
    2964         url_params << "t_url=#{CGI.escape(template_url)}" if method != :delete 
    2965          
    2966         url_params << "dom_id=#{dom_id}" 
     2958          query_params << "t_url=#{CGI.escape(target.template_url)}"  
     2959          query_params << "dom_id=#{target.dom_id}" 
     2960        else 
     2961          query_params << "dom_id=_page" 
     2962        end 
     2963      else 
     2964        query_params << "t_url=#{CGI.escape(template_url)}" if method != :delete 
     2965         
     2966        query_params << "dom_id=#{dom_id}" 
    29672967        if target != self 
    29682968          if target 
    2969             url_params << "u_url=#{CGI.escape(target.template_url)}" 
    2970             url_params << "udom_id=#{target.dom_id}" 
     2969            query_params << "u_url=#{CGI.escape(target.template_url)}" 
     2970            query_params << "udom_id=#{target.dom_id}" 
    29712971          else 
    2972             url_params << "udom_id=_page" 
    2973           end 
    2974         end 
    2975       end 
    2976        
    2977       url_params << "link_id=\#{#{node}.link_id}" if @context[:need_link_id] && node_kind_of?(Node) 
    2978       url_params << "node[v_status]=#{Zena::Status[:pub]}" if @params[:publish] 
    2979       url_params << start_node_s_param(:string) 
     2972            query_params << "udom_id=_page" 
     2973          end 
     2974        end 
     2975      end 
     2976       
     2977      query_params << "link_id=\#{#{node}.link_id}" if @context[:need_link_id] && node_kind_of?(Node) 
     2978      query_params << "node[v_status]=#{Zena::Status[:pub]}" if @params[:publish] 
     2979      query_params << start_node_s_param(:string) 
    29802980       
    29812981      res = '' 
    29822982      res += "<% if #{opts[:cond]} -%>" if opts[:cond] 
    2983       res += "<%= tag_to_remote({:url => \"#{url}?#{url_params.join('&')}\", :method => #{method.inspect}}#{params_to_erb(html_params)}) %>" 
     2983      res += "<%= tag_to_remote({:url => \"#{url}?#{query_params.join('&')}\", :method => #{method.inspect}}#{params_to_erb(html_params)}) %>" 
    29842984      res += text_for_link(opts[:default_text]) 
    29852985      res += "</a>"