EventPropertiesStep

Formatter angepaßt, so daß nun auch die Zeitzone berücksichtigt wird

git-svn-id: https://svn.libreccm.org/ccm/trunk@741 8810af33-2d31-482b-a856-94f89814c4df
master
quasi 2011-02-09 06:32:19 +00:00
parent a3e451f01a
commit 48b8c77d0e
3 changed files with 114 additions and 137 deletions

View File

@ -111,7 +111,8 @@ public class EventPropertiesStep extends SimpleEditStep {
if (e.getStartTime() == null) {
return DateFormat.getDateInstance(DateFormat.LONG, DispatcherHelper.getNegotiatedLocale()).format(e.getStartDate());
} else {
Date startDateTime = new Date(e.getStartDate().getTime() + e.getStartTime().getTime());
int timezoneOffset = Calendar.getInstance().get(Calendar.ZONE_OFFSET) + Calendar.getInstance().get(Calendar.DST_OFFSET) / (60 * 1000);
Date startDateTime = new Date(e.getStartDate().getTime() + e.getStartTime().getTime() + timezoneOffset);
return DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.SHORT, DispatcherHelper.getNegotiatedLocale()).format(startDateTime);
}
@ -134,7 +135,8 @@ public class EventPropertiesStep extends SimpleEditStep {
if (e.getEndTime() == null) {
return DateFormat.getDateInstance(DateFormat.LONG, DispatcherHelper.getNegotiatedLocale()).format(e.getEndDate());
} else {
Date endDateTime = new Date(e.getEndDate().getTime() + e.getEndTime().getTime());
int timezoneOffset = Calendar.getInstance().get(Calendar.ZONE_OFFSET) + Calendar.getInstance().get(Calendar.DST_OFFSET) / (60 * 1000);
Date endDateTime = new Date(e.getEndDate().getTime() + e.getEndTime().getTime() + timezoneOffset);
return DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.SHORT, DispatcherHelper.getNegotiatedLocale()).format(endDateTime);
}

View File

@ -77,60 +77,57 @@ import org.apache.log4j.Logger;
*/
public class PageTransformer implements PresentationManager {
private static final Logger s_log = Logger.getLogger
(PageTransformer.class);
private static final Logger s_log = Logger.getLogger(PageTransformer.class);
// this keeps track of all of the XSLParameters that can be added to
// stylesheets
private static final HashMap s_XSLParameters = new HashMap();
// load the default xsl parameter generators
static {
registerXSLParameterGenerator
("contextPath",
registerXSLParameterGenerator("contextPath",
new XSLParameterGenerator() {
public String generateValue(HttpServletRequest request) {
return request.getContextPath();
}
});
registerXSLParameterGenerator
("root-context-prefix",
registerXSLParameterGenerator("root-context-prefix",
new XSLParameterGenerator() {
public String generateValue(HttpServletRequest request) {
return Web.getConfig().getDispatcherContextPath();
}
});
registerXSLParameterGenerator
("context-prefix",
registerXSLParameterGenerator("context-prefix",
new XSLParameterGenerator() {
public String generateValue(HttpServletRequest request) {
return Web.getContext().getRequestURL().getContextPath();
}
});
registerXSLParameterGenerator
("static-prefix",
registerXSLParameterGenerator("static-prefix",
new XSLParameterGenerator() {
public String generateValue(HttpServletRequest request) {
return Web.getContext().getRequestURL().getContextPath() +
com.arsdigita.web.URL.STATIC_DIR;
return Web.getContext().getRequestURL().getContextPath()
+ com.arsdigita.web.URL.STATIC_DIR;
}
});
registerXSLParameterGenerator
("dispatcher-prefix",
registerXSLParameterGenerator("dispatcher-prefix",
new XSLParameterGenerator() {
public String generateValue(HttpServletRequest request) {
return com.arsdigita.web.URL.getDispatcherPath();
}
});
registerXSLParameterGenerator
("dcp-on-buttons",
registerXSLParameterGenerator("dcp-on-buttons",
new XSLParameterGenerator() {
public String generateValue(HttpServletRequest request) {
if (Bebop.getConfig().doubleClickProtectionOnButtons()) {
return "true";
@ -141,9 +138,9 @@ public class PageTransformer implements PresentationManager {
}
});
registerXSLParameterGenerator
("dcp-on-links",
registerXSLParameterGenerator("dcp-on-links",
new XSLParameterGenerator() {
public String generateValue(HttpServletRequest request) {
if (Bebop.getConfig().doubleClickProtectionOnLinks()) {
return "true";
@ -155,25 +152,23 @@ public class PageTransformer implements PresentationManager {
}
});
registerXSLParameterGenerator
("user-agent",
registerXSLParameterGenerator("user-agent",
new XSLParameterGenerator() {
public String generateValue(HttpServletRequest request) {
return request.getHeader("User-Agent");
}
});
registerXSLParameterGenerator
("negotiated-language",
registerXSLParameterGenerator("negotiated-language",
new XSLParameterGenerator() {
public String generateValue(HttpServletRequest request) {
return DispatcherHelper.getNegotiatedLocale().getLanguage();
}
});
}
// XXX These need to move somewhere else.
/**
* This is used to indicate that all xsl templates used should
* be pulled from the disk and not from the cache. If this
@ -181,7 +176,6 @@ public class PageTransformer implements PresentationManager {
* all XSL Stylesheets are pulled from the disk, not the cache
*/
public static final String CACHE_XSL_NONE = "cacheXSLNone";
/**
* This is used to indicate that the "fancy errors" should be
* used and that the errors should be placed in the request
@ -189,28 +183,22 @@ public class PageTransformer implements PresentationManager {
* with this name in the request with the value of Boolean.TRUE
*/
public static final String FANCY_ERRORS = "fancyErrors";
/**
* State flag for preventing caching in every case.
*/
public static final String CACHE_NONE = "none";
/**
* State flag for per-user caching.
*/
public static final String CACHE_USER = "user";
/**
* State flag for enabling caching in every case.
*/
public static final String CACHE_WORLD = "world";
/**
* State flag for disabling HTTP header caching.
*/
public static final String CACHE_DISABLE = "disable";
private static String s_defaultCachePolicy = CACHE_DISABLE;
/**
@ -241,8 +229,7 @@ public class PageTransformer implements PresentationManager {
s_log.warn("Using getOutputStream instead of getWriter");
try {
return new PrintWriter
(new OutputStreamWriter(resp.getOutputStream(),
return new PrintWriter(new OutputStreamWriter(resp.getOutputStream(),
charset));
} catch (IOException ex) {
throw new UncheckedWrapperException(ex);
@ -293,8 +280,7 @@ public class PageTransformer implements PresentationManager {
Profiler.startOp("XSLT");
try {
final String charset = Globalization.getDefaultCharset(Kernel
.getContext().getLocale());
final String charset = Globalization.getDefaultCharset(Kernel.getContext().getLocale());
final String output = req.getParameter("output");
s_log.info("output=" + output);
@ -308,8 +294,7 @@ public class PageTransformer implements PresentationManager {
// Get the stylesheet transformer object corresponding to the
// current request.
final XSLTemplate template = Templating.getTemplate(req,
fancyErrors, !Boolean.TRUE.equals(req
.getAttribute(CACHE_XSL_NONE)));
fancyErrors, !Boolean.TRUE.equals(req.getAttribute(CACHE_XSL_NONE)));
DeveloperSupport.endStage("PresMgr get stylesheet");
@ -337,8 +322,7 @@ public class PageTransformer implements PresentationManager {
while (entries.hasNext()) {
final Map.Entry entry = (Map.Entry) entries.next();
xf.setParameter((String) entry.getKey(), entry
.getValue());
xf.setParameter((String) entry.getKey(), entry.getValue());
}
}
@ -367,10 +351,8 @@ public class PageTransformer implements PresentationManager {
// copy and paste from BasePresentationManager
if (Kernel.getConfig().isDebugEnabled()) {
Document origDoc = (Document) req
.getAttribute("com.arsdigita.xml.Document");
Debugger.addDebugger(new TransformationDebugger(template
.getSource(), template.getDependents()));
Document origDoc = (Document) req.getAttribute("com.arsdigita.xml.Document");
Debugger.addDebugger(new TransformationDebugger(template.getSource(), template.getDependents()));
writer.print(Debugger.getDebugging(req));
}
@ -390,15 +372,10 @@ public class PageTransformer implements PresentationManager {
// Get the stylesheet transformer object corresponding to
// the
// current request.
template = Templating
.getTemplate(
template = Templating.getTemplate(
req,
Boolean.TRUE
.equals(req
.getAttribute(PageTransformer.FANCY_ERRORS)),
!Boolean.TRUE
.equals(req
.getAttribute(PageTransformer.CACHE_XSL_NONE)));
Boolean.TRUE.equals(req.getAttribute(PageTransformer.FANCY_ERRORS)),
!Boolean.TRUE.equals(req.getAttribute(PageTransformer.CACHE_XSL_NONE)));
endTransaction(req);
} finally {
DeveloperSupport.endStage("PresMgr get stylesheet");
@ -436,7 +413,6 @@ public class PageTransformer implements PresentationManager {
}
}
/**
* Ends the current transaction. Is a performance optimization to end ASAP before
* serving the page.
@ -458,8 +434,7 @@ public class PageTransformer implements PresentationManager {
* parameter name then all previous calls are overwritten and
* only the last registered generator is used.
*/
public static void registerXSLParameterGenerator
(String parameterName,
public static void registerXSLParameterGenerator(String parameterName,
XSLParameterGenerator parameterGenerator) {
s_XSLParameters.put(parameterName, parameterGenerator);
}
@ -480,7 +455,6 @@ public class PageTransformer implements PresentationManager {
return s_XSLParameters.keySet();
}
/**
* This takes a name and request and returns the value that should
* be used in the XSL for the given name
@ -488,7 +462,7 @@ public class PageTransformer implements PresentationManager {
public static String getXSLParameterValue(String name,
HttpServletRequest request) {
XSLParameterGenerator generator =
(XSLParameterGenerator)s_XSLParameters.get(name);
(XSLParameterGenerator) s_XSLParameters.get(name);
if (generator != null) {
return generator.generateValue(request);
} else {
@ -507,8 +481,7 @@ public class PageTransformer implements PresentationManager {
while (entries.hasNext()) {
final Map.Entry entry = (Map.Entry) entries.next();
String value = ((XSLParameterGenerator)entry.getValue())
.generateValue(request);
String value = ((XSLParameterGenerator) entry.getValue()).generateValue(request);
if (value == null) {
// XSL does not like nulls
value = "";

View File

@ -143,6 +143,8 @@ public final class KernelContext {
/**
* @return the locale for the current session
*/
@Deprecated
/** use {@link DispatcherHelper.getNegotiatedLocale()} instead */
public final Locale getLocale() {
return m_locale;
}