You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cocoon.apache.org by bu...@apache.org on 2005/09/06 19:13:59 UTC
DO NOT REPLY [Bug 36524] New: -
Can't set cookie path etc. used by LocaleAction
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG�
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=36524>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND�
INSERTED IN THE BUG DATABASE.
http://issues.apache.org/bugzilla/show_bug.cgi?id=36524
Summary: Can't set cookie path etc. used by LocaleAction
Product: Cocoon 2
Version: 2.1.7
Platform: All
OS/Version: All
Status: NEW
Severity: normal
Priority: P3
Component: core
AssignedTo: dev@cocoon.apache.org
ReportedBy: ats37@hotmail.com
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...?
--
Configure bugmail: http://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.