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,"|","&#124;");
-
+        if (StringUtils.isNotEmpty(fieldValueStr)) {
+            fieldValueStr =3D JahiaTools.replacePattern(fieldValueStr,"|",=
"&#124;");
+        }
 =

 =

         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/>&nbsp;&nbsp;<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

Reply via email to