Changeset 5636


Ignore:
Timestamp:
2010-07-08 09:13:04 (3 years ago)
Author:
karel
Message:

fix problems with dsyreset parameter introduced yesterday

For logged in users the version mode is now stored in the session
for guest users the version mode is tored in a cookie.
This way we no longer need the dsyreset parameter

Location:
trunk/daisy/applications/daisywiki
Files:
3 deleted
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/daisy/applications/daisywiki/frontend/src/main/java/org/outerj/daisy/frontend/FrontEndContext.java

    r5632 r5636  
    5555    private String localeAsString; 
    5656    private Logger logger; 
    57     private VersionMode versionMode; 
    5857 
    5958    public static final String REQUEST_ATTR_KEY = "daisyFrontEndContext"; 
     
    6867        setDaisyCocoonPath(daisyCocoonPath); 
    6968        setDaisyContextPath(daisyContextPath); 
    70  
    71         Cookie versionModeCookie = (Cookie)request.getCookieMap().get("dsyVersionMode"); 
    72         if (versionModeCookie == null) { 
    73             versionMode = VersionMode.LIVE; 
    74         } else { 
    75             versionMode = VersionMode.get(versionModeCookie.getValue()); 
    76         } 
    77   
    7869    } 
    7970 
     
    249240 
    250241    public VersionMode getVersionMode() { 
    251         return versionMode; 
     242        Session session = request.getSession(false); 
     243        VersionMode versionMode = null; 
     244        if (session != null) 
     245            versionMode = (VersionMode)session.getAttribute("dsyVersionMode"); 
     246 
     247        if (versionMode != null) 
     248            return versionMode; 
     249         
     250        Cookie cookie = (Cookie)request.getCookieMap().get("dsyVersionMode"); 
     251        if (cookie != null) 
     252            return VersionMode.get(cookie.getValue()); 
     253 
     254        return VersionMode.LIVE; 
    252255    } 
    253256 
    254257    public void setVersionMode(VersionMode versionMode) { 
    255         this.versionMode = versionMode; 
     258        Session session = request.getSession(false); 
     259        String mode = null; 
     260        if (session != null) { 
     261            session.setAttribute("dsyVersionMode", versionMode); 
     262            return; 
     263        } 
     264         
    256265        Cookie c = new HttpCookie("dsyVersionMode", String.valueOf(versionMode)); 
    257266        response.addCookie(c); 
     
    314323    } 
    315324 
    316     public void reset() { 
    317         versionMode = VersionMode.LAST; 
    318         HttpCookie cookie = (HttpCookie)request.getCookieMap().get("dsyVersionMode"); 
    319         if (cookie != null) { 
    320             cookie.setValue(versionMode.toString()); 
    321             cookie.setMaxAge(0); 
    322             response.addCookie(cookie); 
    323         } 
    324     } 
    325325} 
  • trunk/daisy/applications/daisywiki/frontend/src/main/java/org/outerj/daisy/frontend/util/ResponseUtil.java

    r5632 r5636  
    4242     
    4343    /** 
    44      * @param request 
    45      * @param location 
    46      * @return returns the result of appending the request's query parameters beginning with "dsy" to the location 
    47      */ 
    48     public static String addDaisyParameters(Request request, String location) { 
    49         Enumeration<String> params = request.getParameterNames(); 
    50          
    51         StringBuffer newLocation = new StringBuffer(location); 
    52          
    53         String separator = "?"; 
    54         if (location.endsWith("?") || location.endsWith("&")) 
    55             separator = ""; 
    56         else if (location.contains("?"))  
    57             separator = "&"; 
    58          
    59         while (params.hasMoreElements()) { 
    60             String param = params.nextElement(); 
    61             if (param.startsWith("dsy")) { 
    62                 for (String paramValue: request.getParameterValues(param)) { 
    63                     newLocation.append(separator).append(param).append("=").append(paramValue); 
    64                 } 
    65             } 
    66         } 
    67          
    68         return newLocation.toString(); 
    69     } 
    70     /** 
    7144     * Redirects to the given location, but give a head-up when the location is a complete URL. (i.e. only relative and absolute paths, which let the user stay on the same host are accepted) 
    7245     */ 
     
    7952            throw new IllegalArgumentException("Attention! Somebody may be trying to trick you into going to " + location + ".  If you are sure that is not the case, copy the url to the address bar and proceed");  
    8053        } catch (MalformedURLException me) { 
    81             response.redirectTo(addDaisyParameters(request.getCocoonRequest(), location)); 
     54            response.redirectTo(location); 
    8255        } 
    8356    } 
  • trunk/daisy/applications/daisywiki/runtime/src/cocoon/webapp/daisy/sitemap.xmap

    r5632 r5636  
    7878    <map:action name="HandleSite" src="org.outerj.daisy.frontend.HandleSiteAction"/> 
    7979    <map:action name="SessionInvalidate" src="org.apache.cocoon.acting.SessionInvalidatorAction"/> 
    80     <map:action name="DaisyReset" src="org.outerj.daisy.frontend.DaisyResetAction"/> 
    81     <map:action name="DaisyRedirect" src="org.outerj.daisy.frontend.DaisyRedirectAction"/> 
    82     <map:action name="AddQueryParams" src="org.outerj.daisy.frontend.AddQueryParamsAction"/> 
    8380    <map:action name="ResourceExists" src="org.apache.cocoon.acting.ResourceExistsAction"/> 
    8481    <map:action name="SetVersionHeader" src="org.outerj.daisy.frontend.SetVersionHeaderAction"/> 
     
    587584        --> 
    588585     <map:match pattern="**;jsessionid=**"> 
    589        <map:act type="DaisyRedirect"> 
    590          <map:parameter name="location" value="{1}"/> 
    591        </map:act> 
     586       <map:redirect-to uri="{1}"/> 
    592587     </map:match> 
    593588 
     
    627622          resources pipeline, since there the cache is controlled by the expires parameter of the map:pipeline --> 
    628623     <map:act type="SetCacheHeader"/> 
    629  
    630      <!-- Clears cookies if there is a query parameter (dsyreset='true') --> 
    631      <map:act type="DaisyReset"/> 
    632624 
    633625     <!-- 
     
    654646 
    655647     <map:match pattern="admin"> 
    656        <map:act type="DaisyRedirect"> 
    657          <map:parameter name="location" value="admin/"/> 
    658          <map:parameter name="global" value="true/"/> 
    659        </map:act> 
     648       <map:redirect-to uri="admin/" global="true"/> 
    660649     </map:match> 
    661650 
     
    734723     <map:match pattern="logout"> 
    735724       <map:act type="SessionInvalidate"/> 
    736        <map:act type="AddQueryParams"> 
    737          <map:parameter name="baseUri" value=""/> 
    738          <map:parameter name="queryParams" value="dsyreset=true"/> 
    739        </map:act> 
    740        <map:act type="DaisyRedirect"> 
    741          <map:parameter name="location" value="{request-attr:redirectUri}"/> 
    742        </map:act> 
     725       <map:redirect-to uri=""/> 
    743726     </map:match> 
    744727 
     
    756739 
    757740     <map:match pattern="books"> 
    758        <map:act type="DaisyRedirect"> 
    759          <map:parameter name="location" value="books/"/> 
    760        </map:act> 
     741       <map:redirect-to uri="books/"/> 
    761742     </map:match> 
    762743 
     
    790771 
    791772       <map:match pattern="*/"> 
    792          <map:act type="DaisyRedirect"> 
    793            <map:parameter name="location" value="{request:getAttribute(., 'siteConf')/homePage}"/> 
    794          </map:act> 
     773         <map:redirect-to uri="{request:getAttribute(., 'siteConf')/homePage}"/> 
    795774       </map:match> 
    796775 
    797776       <map:match pattern="*/logout"> 
    798777         <map:act type="SessionInvalidate"/> 
    799          <map:act type="AddQueryParams"> 
    800            <map:parameter name="baseUri" value=""/> 
    801            <map:parameter name="queryParams" value="dsyreset=true"/> 
    802          </map:act> 
    803          <map:act type="DaisyRedirect"> 
    804            <map:parameter name="location" value="{request-attr:redirectUri}"/> 
    805          </map:act> 
     778         <map:redirect-to uri=""/> 
    806779       </map:match> 
    807780 
Note: See TracChangeset for help on using the changeset viewer.