backporting r16742,r17492 for proper dojo timestamp handling
authorphasefx <phasefx@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Wed, 5 Jan 2011 21:54:39 +0000 (21:54 +0000)
committerphasefx <phasefx@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Wed, 5 Jan 2011 21:54:39 +0000 (21:54 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/branches/rel_1_6@19126 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/web/js/dojo/openils/Util.js
Open-ILS/web/js/dojo/openils/widget/AutoFieldWidget.js

index 9d16036..7a918da 100644 (file)
@@ -26,6 +26,31 @@ if(!dojo._hasResource["openils.Util"]) {
     dojo.declare('openils.Util', null, {});
 
 
+    openils.Util.timeStampRegexp =
+        /^(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}[\+-]\d{2})(\d{2})$/;
+
+    openils.Util.timeStampAsDateObj = function(s) {
+        if (s.constructor.name == "Date") return s;
+        return dojo.date.stamp.fromISOString(
+            s.replace(openils.Util.timeStampRegexp, "$1:$2")
+        );
+    }
+
+    /**
+     * Returns a locale-appropriate representation of a timestamp when the
+     * timestamp (first argument) is actually a string as provided by
+     * fieldmapper objects.
+     * The second argument is an optional argument that will be provided
+     * as the second argument to dojo.date.locale.format()
+     */
+    openils.Util.timeStamp = function(s, opts) {
+        if (typeof(opts) == "undefined") opts = {};
+
+        return dojo.date.locale.format(
+            openils.Util.timeStampAsDateObj(s), opts
+        );
+    };
+
     /**
      * Wrapper for dojo.addOnLoad that verifies a valid login session is active
      * before adding the function to the onload set
index 6cf7513..53ae36e 100644 (file)
@@ -144,10 +144,9 @@ if(!dojo._hasResource['openils.widget.AutoFieldWidget']) {
                     }
                 case 'timestamp':
                     if (!value) return '';
-                    dojo.require('dojo.date.locale');
-                    dojo.require('dojo.date.stamp');
-                    var date = dojo.date.stamp.fromISOString(value);
-                    return dojo.date.locale.format(date, {formatLength:'short'});
+                    return openils.Util.timeStamp(
+                        value, {"formatLength": "short"}
+                    );
                 case 'org_unit':
                     if(value === null || value === undefined) return '';
                     return fieldmapper.aou.findOrgUnit(value).shortname();
@@ -223,8 +222,11 @@ if(!dojo._hasResource['openils.widget.AutoFieldWidget']) {
                         dojo.require('dijit.form.DateTextBox');
                         dojo.require('dojo.date.stamp');
                         this.widget = new dijit.form.DateTextBox(this.dijitArgs, this.parentNode);
-                        if(this.widgetValue != null) 
-                            this.widgetValue = dojo.date.stamp.fromISOString(this.widgetValue);
+                        if (this.widgetValue != null) {
+                            this.widgetValue = openils.Util.timeStampAsDateObj(
+                                this.widgetValue
+                            );
+                        }
                         break;
 
                     case 'bool':