You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cocoon.apache.org by "Vincent Oostindiƫ (JIRA)" <ji...@apache.org> on 2005/11/13 20:59:24 UTC

[jira] Updated: (COCOON-1592) Can't set cookie path etc. used by LocaleAction

     [ http://issues.apache.org/jira/browse/COCOON-1592?page=all ]

Vincent Oostindiƫ updated COCOON-1592:
--------------------------------------

    Attachment: locale-cookie-settings

The attached file patches this issue in the SVN 2.1.x trunk. 

It adds parameters to the LocaleAction in the sitemap, allowing you to set the domain, path and maximum age (among others).

I made no changes to the design of the code.I only added code in the same style as the existing code.

> Can't set cookie path etc. used by LocaleAction
> -----------------------------------------------
>
>          Key: COCOON-1592
>          URL: http://issues.apache.org/jira/browse/COCOON-1592
>      Project: Cocoon
>         Type: Bug
>   Components: * Cocoon Core
>     Versions: 2.1.7
>  Environment: Operating System: All
> Platform: All
>     Reporter: Andrew Stevens
>     Assignee: Cocoon Developers Team
>  Attachments: locale-cookie-settings
>
> I have a sitemap which can return pages in various languages, using the
> LocaleAction to determine which one to return for any given request.  I want to
> use <store-in-cookie>true</store-in-cookie> in the configuration of the
> LocaleAction.  However,
> org.apache.cocoon.i18n.I18nUtils.storeLocale(Map, String, String, boolean,
> boolean, boolean, boolean)
> uses
>             response.addCookie(response.createCookie(attribute, locale));
> and
> org.apache.cocoon.environment.http.HttpResponse.createCookie(String, String)
> simply does
>         return new HttpCookie(name, value);
> which means that although addCookie would set the the cookie domain/path/expiry
> to whatever is on the cookie it is passed, in practise the LocaleAction will
> always use the javax.servlet.http.Cookie defaults.
> My site has a reasonably deep page hierarchy.  Unfortunately, by default the
> cookies are only returned at or below the level of the page which set them.  So,
> if I request e.g
> /site/a?locale=en
> followed by
> /site/a/b?locale=zh_CN
> to switch the site to the Chinese version, I end up with two locale cookies
> stored for the site at different levels, and a subsequent request for
> /site/c
> returns the English version of the page instead of Chinese as was selected last
> :-(  In fact, if I select a different languages in several pages in various
> locations around the site, I can easily find myself browsing around and getting
> a different language on every page I visit!
> The other limitation, of course, is that the default MaxAge value is -1, forcing
> the browser to use a session cookie.  This means that if the user switches to a
> non-default (as determined by the Accept-Language header) language, then they'll
> have to do this again next time they come back to the site.  It would be nice to
> be able to specify e.g. a one month expiry on the cookie instead.
> I'm guessing this shouldn't be too difficult to add since
> o.a.c.environment.http.HttpCookie already contains setters for these other
> fields; just (!) some extra optional configuration parameters for LocaleAction
> to go with store-in-cookie, overload the storeLocale method in I18Utils to take
> the extra arguments and call the additional setters between the createCookie and
> addCookie calls...?

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira