[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