[Checkins] SVN: z3ext.formatter/trunk/ - Added 'fancyDatetime' formatter js implementation

Nikolay Kim fafhrd91 at gmail.com
Fri Oct 30 18:53:08 EDT 2009


Log message for revision 105397:
  - Added 'fancyDatetime' formatter js implementation

Changed:
  U   z3ext.formatter/trunk/CHANGES.txt
  U   z3ext.formatter/trunk/setup.py
  U   z3ext.formatter/trunk/src/z3ext/formatter/README.txt
  U   z3ext.formatter/trunk/src/z3ext/formatter/configure.zcml
  U   z3ext.formatter/trunk/src/z3ext/formatter/fancydatetime.py
  U   z3ext.formatter/trunk/src/z3ext/formatter/humandatetime.py
  A   z3ext.formatter/trunk/src/z3ext/formatter/resources/fancydatetime.js
  U   z3ext.formatter/trunk/src/z3ext/formatter/resources/humandatetime.js

-=-
Modified: z3ext.formatter/trunk/CHANGES.txt
===================================================================
--- z3ext.formatter/trunk/CHANGES.txt	2009-10-30 18:35:26 UTC (rev 105396)
+++ z3ext.formatter/trunk/CHANGES.txt	2009-10-30 22:53:07 UTC (rev 105397)
@@ -2,12 +2,14 @@
 CHANGES
 =======
 
-1.4.1 (Unreleased)
+1.4.1 (2009-10-30)
 ------------------
 
-- Add `humandatetime` formatter js implementation
+- Added 'fancyDatetime' formatter js implementation
 
+- Added `humandatetime` formatter js implementation
 
+
 1.4.0 (2009-08-11)
 ------------------
 

Modified: z3ext.formatter/trunk/setup.py
===================================================================
--- z3ext.formatter/trunk/setup.py	2009-10-30 18:35:26 UTC (rev 105396)
+++ z3ext.formatter/trunk/setup.py	2009-10-30 22:53:07 UTC (rev 105397)
@@ -66,6 +66,7 @@
                           'zope.app.pagetemplate',
                           'zope.app.publisher',
                           'z3c.pt',
+                          'z3ext.jquery.i18n',
                           ],
       extras_require = dict(test=['zope.app.testing',
                                   'zope.testing',

Modified: z3ext.formatter/trunk/src/z3ext/formatter/README.txt
===================================================================
--- z3ext.formatter/trunk/src/z3ext/formatter/README.txt	2009-10-30 18:35:26 UTC (rev 105396)
+++ z3ext.formatter/trunk/src/z3ext/formatter/README.txt	2009-10-30 22:53:07 UTC (rev 105397)
@@ -140,10 +140,10 @@
    >>> fpage.pt_edit(u'''
    ... <html>
    ...   <body>
-   ...     <tal:block tal:content="formatter:fancyDatetime:options/now" />
-   ...     <tal:block tal:content="formatter:fancyDatetime,short:options/now" />
-   ...     <tal:block tal:content="formatter:fancyDatetime,medium:options/now" />
-   ...     <tal:block tal:content="formatter:fancyDatetime,full:options/now" />
+   ...     <tal:block tal:content="structure formatter:fancyDatetime:options/now" />
+   ...     <tal:block tal:content="structure formatter:fancyDatetime,short:options/now" />
+   ...     <tal:block tal:content="structure formatter:fancyDatetime,medium:options/now" />
+   ...     <tal:block tal:content="structure formatter:fancyDatetime,full:options/now" />
    ...   </body>
    ... </html>''', 'text/html')
 
@@ -154,10 +154,10 @@
    >>> print fpage.render(request, now=today)
    <html>
      <body>
-       Today at ...
-       Today at ...
-       Today at ...
-       Today at ...
+       ...Today at ...
+       ...Today at ...
+       ...Today at ...
+       ...Today at ...
      </body>
    </html>
 
@@ -169,10 +169,10 @@
    >>> print fpage.render(request, now=yesterday)
    <html>
      <body>
-       Yesterday at ...
-       Yesterday at ...
-       Yesterday at ...
-       Yesterday at ...
+       ...Yesterday at ...
+       ...Yesterday at ...
+       ...Yesterday at ...
+       ...Yesterday at ...
      </body>
    </html>
 
@@ -183,10 +183,10 @@
    >>> print fpage.render(request, now=now)
    <html>
      <body>
-       Today at ...
-       Today at ...
-       Today at ...
-       Today at ...
+       ...Today at ...
+       ...Today at ...
+       ...Today at ...
+       ...Today at ...
      </body>
    </html>
 

Modified: z3ext.formatter/trunk/src/z3ext/formatter/configure.zcml
===================================================================
--- z3ext.formatter/trunk/src/z3ext/formatter/configure.zcml	2009-10-30 18:35:26 UTC (rev 105396)
+++ z3ext.formatter/trunk/src/z3ext/formatter/configure.zcml	2009-10-30 22:53:07 UTC (rev 105397)
@@ -72,11 +72,17 @@
     <z3ext:resourceinclude
        name="humandatetime.js"
        type="javascript"
-       library="z3ext-formatter"
+       library="z3ext"
        require="jquery-plugins"
-       file="resources/humandatetime.js"
-       />
+       file="resources/humandatetime.js" />
 
+    <z3ext:resourceinclude
+       name="fancydatetime.js"
+       type="javascript"
+       library="z3ext"
+       require="jquery-plugins"
+       file="resources/fancydatetime.js" />
+
   </configure>
 
   <!-- Registering documentation with API doc -->

Modified: z3ext.formatter/trunk/src/z3ext/formatter/fancydatetime.py
===================================================================
--- z3ext.formatter/trunk/src/z3ext/formatter/fancydatetime.py	2009-10-30 18:35:26 UTC (rev 105396)
+++ z3ext.formatter/trunk/src/z3ext/formatter/fancydatetime.py	2009-10-30 22:53:07 UTC (rev 105397)
@@ -57,29 +57,41 @@
 
         delta = d1 - d2
 
+        fdate = unicode(value.strftime(str(getattr(configlet,'date_'+self.tp))))
+        ftime = unicode(value.strftime(str(getattr(configlet,'time_'+self.tp))))
+
         if delta.days == 0:
             format = str(getattr(configlet, 'time_'+self.tp))
 
-            value = translate(
+            formattedvalue = translate(
                 u'Today at ${value}', 'z3ext.formatter',
                 mapping={'value': value.strftime(format)})
-            return value
+            return u'<span class="z3ext-formatter-fancydatetime" date="%s" time="%s" value="%s">%s</span>' \
+                % (fdate, ftime, value.strftime('%B %d, %Y %H:%M:%S %z'),
+                   formattedvalue)
 
         if delta.days == 1:
             format = str(getattr(configlet, 'time_'+self.tp))
 
-            value = translate(
+            formattedvalue = translate(
                 u'Yesterday at ${value}', 'z3ext.formatter',
                 mapping={'value': value.strftime(format)})
-            return value
 
+            return u'<span class="z3ext-formatter-fancydatetime" date="%s" time="%s" value="%s">%s</span>' \
+                % (fdate, ftime, value.strftime('%B %d, %Y %H:%M:%S %z'),
+                   formattedvalue)
+
         format = '%s %s'%(
             getattr(configlet, 'date_'+self.tp),
             getattr(configlet, 'time_'+self.tp))
 
-        return unicode(value.strftime(str(format)))
+        formatted = unicode(value.strftime(str(format)))
 
+        return u'<span class="z3ext-formatter-fancydatetime" date="%s" time="%s" value="%s">%s</span>' \
+            % (fdate, ftime, value.strftime('%B %d, %Y %H:%M:%S %z'), formatted)
 
+
+
 class FancyDatetimeFormatterFactory(object):
     component.adapts(IHTTPRequest)
     interface.implements(IFormatterFactory)

Modified: z3ext.formatter/trunk/src/z3ext/formatter/humandatetime.py
===================================================================
--- z3ext.formatter/trunk/src/z3ext/formatter/humandatetime.py	2009-10-30 18:35:26 UTC (rev 105396)
+++ z3ext.formatter/trunk/src/z3ext/formatter/humandatetime.py	2009-10-30 22:53:07 UTC (rev 105397)
@@ -37,13 +37,13 @@
                          'second': u'${value} second(s) ago',
                          },
                 'future': {'year': u'in ${value} year(s)',
-                         'month': u'in ${value} month(s)',
-                         'week': u'in ${value} week(s)',
-                         'day': u'in ${value} day(s)',
-                         'hour': u'in ${value} hour(s)',
-                         'minute': u'in ${value} minute(s)',
-                         'second': u'in ${value} second(s)',
-                         }}
+                           'month': u'in ${value} month(s)',
+                           'week': u'in ${value} week(s)',
+                           'day': u'in ${value} day(s)',
+                           'hour': u'in ${value} hour(s)',
+                           'minute': u'in ${value} minute(s)',
+                           'second': u'in ${value} second(s)',
+                           }}
 
     def __init__(self, request, *args):
         self.request = request

Added: z3ext.formatter/trunk/src/z3ext/formatter/resources/fancydatetime.js
===================================================================
--- z3ext.formatter/trunk/src/z3ext/formatter/resources/fancydatetime.js	                        (rev 0)
+++ z3ext.formatter/trunk/src/z3ext/formatter/resources/fancydatetime.js	2009-10-30 22:53:07 UTC (rev 105397)
@@ -0,0 +1,44 @@
+function setFancydatetimeFormatter(el)
+{
+    var time = new Date();
+    var value = el.attr('value');
+    time.setTime(Date.parse(value));
+    var new_time = new Date();
+    delta = new_time-time;
+    if (delta < 0) {
+        delta = Math.abs(delta);
+    }
+    years = Math.floor(delta/(365*24*60*60*1000.0));
+    months = Math.floor(delta/(30*24*60*60*1000.0));
+    weeks = Math.floor(delta/(7*24*60*60*1000.0));
+    days = Math.floor(delta/(24*60*60*1000.0));
+    hours = Math.floor(delta/(60*60*1000.0));
+    minutes = Math.floor(delta/(60*1000.0));
+
+    var res;
+
+    if (!years && !months && !weeks && days == 1) {
+        res = 'Yesterday at ' + el.attr('time');
+
+    } else if (!years & !months & !weeks & days == 0) {
+        res = 'Today at ' + el.attr('time');
+    } else {
+        res = el.attr('date') + ' ' + el.attr('time');
+    }
+
+    el.text(res);
+    el.attr('processed', 'true')
+}
+
+
+$(document).ready(function() {
+    
+    var elems = $("span.z3ext-formatter-fancydatetime");
+    for (var i = 0; i < elems.length; i++)
+    {
+        var el = $(elems[i]);
+        if (!el.attr('processed')) {
+            setFancydatetimeFormatter(el);
+        }
+    }
+});

Modified: z3ext.formatter/trunk/src/z3ext/formatter/resources/humandatetime.js
===================================================================
--- z3ext.formatter/trunk/src/z3ext/formatter/resources/humandatetime.js	2009-10-30 18:35:26 UTC (rev 105396)
+++ z3ext.formatter/trunk/src/z3ext/formatter/resources/humandatetime.js	2009-10-30 22:53:07 UTC (rev 105397)
@@ -1,4 +1,4 @@
-var past_dictionary = {
+var formatter_past_dictionary = {
     '%s year(s) ago'  : '%s year(s) ago',
     '%s month(s) ago'  : '%s month(s) ago',
     '%s week(s) ago': '%s week(s) ago',
@@ -8,26 +8,26 @@
     '%s second(s) ago' : '%s second(s) ago'
 };
 
-var future_dictionary = {
-        '%s year(s) ago'  : '%s year(s) ago',
-        '%s month(s) ago'  : '%s month(s) ago',
-        '%s week(s) ago': '%s week(s) ago',
-        '%s day(s) ago' : '%s day(s) ago',
-        '%s hour(s) ago' : '%s hour(s) ago',
-        '%s minute(s) ago' : '%s minute(s) ago',
-        '%s second(s) ago' : '%s second(s) ago'
-    };
+var formatter_future_dictionary = {
+    '%s year(s) ago'  : '%s year(s) ago',
+    '%s month(s) ago'  : '%s month(s) ago',
+    '%s week(s) ago': '%s week(s) ago',
+    '%s day(s) ago' : '%s day(s) ago',
+    '%s hour(s) ago' : '%s hour(s) ago',
+    '%s minute(s) ago' : '%s minute(s) ago',
+    '%s second(s) ago' : '%s second(s) ago'
+};
 
-function setFormatter(el)
+function setHumandatetimeFormatter(el)
 {
     var time = new Date();
     time.setTime(Date.parse(el.attr('value')));
     var new_time = new Date();
     delta = new_time-time;
-    $.i18n.setDictionary(past_dictionary);
+    $.i18n.setDictionary(formatter_past_dictionary);
     if (delta < 0) {
         delta = Math.abs(delta);
-        $.i18n.setDictionary(future_dictionary)
+        $.i18n.setDictionary(formatter_future_dictionary)
     }
     years = Math.floor(delta/(365*24*60*60*1000.0));
     months = Math.floor(delta/(30*24*60*60*1000.0));
@@ -62,7 +62,7 @@
     {
         var el = $(elems[i]);
         if (!el.attr('processed')) {
-            setFormatter(el);
+            setHumandatetimeFormatter(el);
         }
     }
 });
\ No newline at end of file



More information about the checkins mailing list