Author: sshyrkov
Date: Mon Sep 10 20:33:58 2007
New Revision: 18415
URL: https://svndev.jahia.net/websvn/listing.php?sc=3D1&rev=3D18415&repname=
=3Djahia
Log:
ACG-17: Composant calendrier pour choisir date de s=C3=A9ance affiche mauva=
ise heure une fois valid=C3=A9
http://www.jahia.net/jira/browse/ACG-17
Resolution: convert the date into milliseconds on the server-side and not o=
n the client using JavaScript
Modified:
branches/JAHIA-4-1-BRANCH/src/java/org/jahia/data/fields/JahiaDateField=
Util.java
branches/JAHIA-4-1-BRANCH/src/java/org/jahia/engines/shared/Date_Field.=
java
branches/JAHIA-4-1-BRANCH/src/views/jsp/jahia/engines/shared/date_field=
.jsp
Modified: branches/JAHIA-4-1-BRANCH/src/java/org/jahia/data/fields/JahiaDat=
eFieldUtil.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-4-1-BR=
ANCH/src/java/org/jahia/data/fields/JahiaDateFieldUtil.java&rev=3D18415&rep=
name=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-4-1-BRANCH/src/java/org/jahia/data/fields/JahiaDateField=
Util.java (original)
+++ branches/JAHIA-4-1-BRANCH/src/java/org/jahia/data/fields/JahiaDateField=
Util.java Mon Sep 10 20:33:58 2007
@@ -69,17 +69,12 @@
* @param locale the current locale
* @return the date format for the specified locale, created using the f=
ormat,
* parsed from the default field value
- * @deprecated use getDateFormat(String, Locale) instead
*/
public static SimpleDateFormat getSimpleDateFormat(String defaultValue,
String defaultFormat, Locale locale) {
SimpleDateFormat sdf =3D null;
- String pattern =3D null;
- if (defaultValue !=3D null && defaultValue.length() > 0)
- pattern =3D parseDatePattern(defaultValue);
try {
- sdf =3D new SimpleDateFormat(pattern !=3D null ? pattern
- : DEFAULT_PATTERN, locale);
+ sdf =3D new SimpleDateFormat(getDateFormatPattern(defaultValue, =
locale), locale);
} catch (Throwable t) {
}
if (sdf =3D=3D null || "".equals(sdf.toPattern())) {
@@ -104,12 +99,9 @@
public static FastDateFormat getDateFormat(String defaultValue,
Locale locale) {
FastDateFormat fdf =3D null;
- String pattern =3D null;
- if (defaultValue !=3D null && defaultValue.length() > 0)
- pattern =3D parseDatePattern(defaultValue);
try {
- fdf =3D FastDateFormat.getInstance(pattern !=3D null ? pattern
- : DEFAULT_PATTERN, locale);
+ fdf =3D FastDateFormat.getInstance(getDateFormatPattern(defaultV=
alue,
+ locale), locale);
} catch (Throwable t) {
}
if (fdf =3D=3D null || "".equals(fdf.getPattern())) {
@@ -119,6 +111,40 @@
} =
=
/**
+ * Returns the date format for the specified locale and default time zon=
e,
+ * created using the format, parsed from the default field value, e.g. f=
rom
+ * <code><jahia_calendar[dd.MM.yyyy / HH:mm]></code>.
+ * =
+ * @param defaultValue the default value string
+ * @param locale the current locale
+ * @return the date format for the specified locale, created using the f=
ormat,
+ * parsed from the default field value
+ */
+ public static SimpleDateFormat getDateFormatForParsing(String defaultVal=
ue,
+ Locale locale) {
+ return getSimpleDateFormat(defaultValue, DEFAULT_PATTERN, locale);
+ } =
+
+ /**
+ * Returns the date format pattern for the specified locale and defaul=
t time
+ * zone, created using the format, parsed from the default field value=
, e.g.
+ * from <code><jahia_calendar[dd.MM.yyyy / HH:mm]></code>.
+ * =
+ * @param defaultValue
+ * the default value string
+ * @param locale
+ * the current locale
+ * @return the date format pattern for the specified locale, created u=
sing
+ * the format, parsed from the default field value
+ */
+ public static String getDateFormatPattern(String defaultValue, Locale =
locale) {
+ String pattern =3D null;
+ if (defaultValue !=3D null && defaultValue.length() > 0)
+ pattern =3D parseDatePattern(defaultValue);
+ return pattern !=3D null ? pattern : DEFAULT_PATTERN;
+ } =
+
+ /**
* Returns the default date parsed from the default date marker of the f=
orm
* <code><jahia_calendar[dd.MM.yyyy / HH:mm]>09.05.1979 07:30</code>. The
* following patterns are also supported:<br>
Modified: branches/JAHIA-4-1-BRANCH/src/java/org/jahia/engines/shared/Date_=
Field.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-4-1-BR=
ANCH/src/java/org/jahia/engines/shared/Date_Field.java&rev=3D18415&repname=
=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-4-1-BRANCH/src/java/org/jahia/engines/shared/Date_Field.=
java (original)
+++ branches/JAHIA-4-1-BRANCH/src/java/org/jahia/engines/shared/Date_Field.=
java Mon Sep 10 20:33:58 2007
@@ -19,15 +19,19 @@
=
package org.jahia.engines.shared;
=
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
import java.util.HashMap;
=
+import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.jahia.data.ConnectionTypes;
import org.jahia.data.FormDataManager;
import org.jahia.data.containers.JahiaContainer;
+import org.jahia.data.fields.JahiaDateFieldUtil;
import org.jahia.data.fields.JahiaFieldDefinitionProperties;
import org.jahia.data.fields.JahiaField;
-import org.jahia.engines.EngineMessages;
import org.jahia.engines.EngineParams;
import org.jahia.engines.JahiaEngine;
import org.jahia.engines.JahiaEngineTools;
@@ -101,40 +105,45 @@
private boolean getFormData( ParamBean jParams, HashMap engineMap, Jah=
iaField theField )
throws JahiaException
{
- boolean out =3D true;
-
- String fieldValue =3D jParams.getRequest().getParameter( "_"=
+ new Integer(theField.getID()).toString() );
- String fieldValueStr =3D jParams.getRequest().getParameter( "_S=
tr" + new Integer(theField.getID()).toString() );
+ String fieldValueStr =3D jParams.getRequest().getParameter( "_S=
tr" + theField.getID());
String engineParams =3D jParams.getRequest().getParameter( "en=
gine_params" );
- fieldValue =3D JahiaTools.replacePattern(fieldValue,"|","|");
-
+ if (StringUtils.isNotEmpty(fieldValueStr)) {
+ fieldValueStr =3D JahiaTools.replacePattern(fieldValueStr,"|",=
"|");
+ }
=
=
EngineParams eParams =3D new EngineParams( engineParams );
String localSwitch =3D eParams.getParameter( "localswitch" );
String dataSourceUrl =3D eParams.getParameter( "dsurl" );
=
+ String defValue =3D theField.getDefinition().getDefaultValue(jPara=
ms.getPage().getPageTemplateID());
+ =
if (dataSourceUrl !=3D null) {
theField.setValue( dataSourceUrl );
theField.setConnectType( ConnectionTypes.DATASOURCE );
} else if (localSwitch !=3D null) {
- theField.setValue( theField.getDefinition().getDefaultValue( j=
Params.getPage().getPageTemplateID() ) );
+ theField.setValue( defValue );
theField.setConnectType( ConnectionTypes.LOCAL );
- } else if (fieldValue !=3D null) {
- EngineMessages resultMessages =3D new EngineMessages();
- if (FormDataManager.getInstance().checkIntegrity(fieldValue, r=
esultMessages)) {
- theField.setObject( fieldValue );
- theField.setValue( fieldValueStr );
- } else {
- theField.setObject( fieldValue );
- theField.setValue( fieldValueStr );
- out =3D false;
+ } else if (fieldValueStr !=3D null) {
+ Date parsedValue =3D null;
+ SimpleDateFormat fmt =3D null;
+ if (fieldValueStr.length() > 0) {
+ try {
+ fmt =3D JahiaDateFieldUtil.getDateFormatForParsing(def=
Value,
+ jParams.getLocale());
+ parsedValue =3D fmt.parse(fieldValueStr);
+ } catch (ParseException ex) {
+ logger.warn("Unable to parse date value '" + fieldValu=
eStr
+ + "' using pattern '"
+ + (fmt !=3D null ? fmt.toPattern() : "null"), =
ex);
+ }
}
- //System.out.println("%%%%%%%%%%% getForm - Object: "+fieldVal=
ue);
- //System.out.println("%%%%%%%%%%% getForm - Value: "+fieldValu=
eStr);
+ theField.setObject(parsedValue !=3D null ? String.valueOf(pars=
edValue
+ .getTime()) : null);
+ theField.setValue( fieldValueStr );
}
=
- return out;
+ return true;
} // end getFormData
=
=
Modified: branches/JAHIA-4-1-BRANCH/src/views/jsp/jahia/engines/shared/date=
_field.jsp
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-4-1-BR=
ANCH/src/views/jsp/jahia/engines/shared/date_field.jsp&rev=3D18415&repname=
=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-4-1-BRANCH/src/views/jsp/jahia/engines/shared/date_field=
.jsp (original)
+++ branches/JAHIA-4-1-BRANCH/src/views/jsp/jahia/engines/shared/date_field=
.jsp Mon Sep 10 20:33:58 2007
@@ -35,7 +35,6 @@
FastDateFormat dateFormat =3D
JahiaDateFieldUtil.getDateFormat(defValue, =
jParams.getLocale());
=
String theOldField =3D theField.getValue();
- String theOldField_long =3D (String) theField.getObject();
%>
<link rel=3D"stylesheet" type=3D"text/css" media=3D"all" href=3D"<%=3DtheU=
RL%>../javascript/jscalendar-1.0/calendar-blue.css">
<% Boolean alreadyIncluedCalendar =3D (Boolean) request.getAttribute("=
alreadyInclucedCalendar");
@@ -47,7 +46,7 @@
<script type=3D"text/javascript" src=3D"<%=3DtheURL%>../javascript/jscalen=
dar-1.0/calendar-setup.js"></script>
<script type=3D"text/javascript" src=3D"<%=3DtheURL%>../javascript/javascr=
ipt_toolbox/date_compacted.js"></script>
<% } %>
-<input type=3D"text" name=3D"_datebox<c:out value=3D"${fieldId}"/>" id=3D"=
_datebox<c:out value=3D"${fieldId}"/>_id" value=3D"<%=3DtheOldField%>" onch=
ange=3D"setValue<c:out value=3D"${calendarId}"/>(this.value);" disabled=3D"=
disabled"">
+<input type=3D"text" name=3D"_datebox<c:out value=3D"${fieldId}"/>" id=3D"=
_datebox<c:out value=3D"${fieldId}"/>_id" value=3D"<%=3DtheOldField%>" onch=
ange=3D"setValue<c:out value=3D"${calendarId}"/>(this.value);" disabled=3D"=
disabled">
<img src=3D"<%=3DtheURL%>/images/date.gif" id=3D"_datebox_trigger<c:out va=
lue=3D"${fieldId}"/>" style=3D"cursor: pointer;" title=3D"<jahia:engineReso=
urceBundle resourceName=3D'org.jahia.engines.shared.Date_Field.selectDate.l=
abel'/>" alt=3D" ">
<a href=3D"javascript:resetDate<c:out value=3D"${calendarId}"/>()"><jahia:=
engineResourceBundle resourceName=3D'org.jahia.engines.shared.Date_Field.re=
setDate.label'/></a>
<br/> <span style=3D"font-size:0.9em; color: #7184A6;" title=3D=
"<%=3DTimeZone.getDefault().getDisplayName(true, TimeZone.LONG, jParams.get=
Locale())%> [<%=3D dateFormat.getPattern() %>]">[<%=3D dateFormat.getPatter=
n() %>] (<%=3DTimeZone.getDefault().getDisplayName(true, TimeZone.SHORT, jP=
arams.getLocale())%>)</span>
@@ -56,41 +55,20 @@
function setValue<c:out value=3D"${calendarId}"/>(txt) {
if (txt.replace(/ /g, '').length =3D=3D 0) {
// the value is empty
- document.mainForm.elements["_<c:out
value=3D"${fieldId}"/>"].value =3D =
"";
document.mainForm.elements["_Str<c:out
value=3D"${fieldId}"/>"].value =
=3D "";
}
else {
// use JavaScript Toolbox - Date Functions to parse date
var parsedDate =3D Date.parseString(txt, '<%=3D
dateFormat.getPattern()=
%>');
- document.mainForm.elements["_<c:out
value=3D"${fieldId}"/>"].value =3D =
parsedDate !=3D null ? parsedDate.getTime() : "0";
- document.mainForm.elements["_Str<c:out
value=3D"${fieldId}"/>"].value =
=3D parsedDate !=3D null ? txt : "0";
+ document.mainForm.elements["_Str<c:out
value=3D"${fieldId}"/>"].value =
=3D parsedDate !=3D null ? txt : txt;
}
}
=
function resetDate<c:out value=3D"${calendarId}"/>() {
document.mainForm.elements["_datebox<c:out value=3D"${fieldId}"/>"=
].value =3D "<%=3DtheOldField%>";
- document.mainForm.elements["_<c:out value=3D"${fieldId}"/>"].value=
=3D "<%=3DtheOldField_long%>";
document.mainForm.elements["_Str<c:out value=3D"${fieldId}"/>"].va=
lue =3D "<%=3DtheOldField%>";
}
=
- function onCalendarUpdate<c:out value=3D"${calendarId}"/>(calendar) {
- if (calendar.dateClicked) {
- document.mainForm.elements["_<c:out value=3D"${fieldId}"/>"].va=
lue =3D calendar.date.getTime();; =
- } =
- }
- =
- function onSelect<c:out value=3D"${calendarId}"/>(calendar, date) {
- if (calendar.dateClicked) {
- var input_field =3D document.mainForm.elements["_datebox<c:out=
value=3D"${fieldId}"/>"];
- input_field.value =3D date;
-
- //update hidden values
- setValue<c:out
value=3D"${calendarId}"/>(input_field.value);
- onCalendarUpdate<c:out
value=3D"${calendarId}"/>(calendar);
- }
- }
- =
-
//convert format from Java format
var dateFormat =3D "<%=3D dateFormat.getPattern() %>";
dateFormat =3D dateFormat.replace(/d{2,}/g, "FULLDAY"); // full Day
@@ -113,13 +91,12 @@
{
inputField : "_datebox<c:out value=3D"${fieldId}"/>_id",
ifFormat : dateFormat,
- button : "_datebox_trigger<c:out value=3D"${fieldId}"/>",
+ button : "_datebox_trigger<c:out value=3D"${fieldId}"/>=
",
singleClick : false,
- onSelect : onSelect<c:out value=3D"${calendarId}"/>, =
=
- showsTime : true
+ showsTime : true,
+ electric : false
}
);
//-->
</script>
-<input type=3D"hidden" name=3D"_<c:out value=3D"${fieldId}"/>" value=3D"<%=
=3DtheOldField_long%>">
<input type=3D"hidden" name=3D"_Str<c:out value=3D"${fieldId}"/>" value=3D=
"<%=3DtheOldField%>">
_______________________________________________
cvs_list mailing list
[email protected]
http://lists.jahia.org/cgi-bin/mailman/listinfo/cvs_list