[Checkins]
SVN: zc.datetimewidget/branches/gintas-dateranges/src/zc/datetimewidget/datetimewidget.
Fixed some uncleanliness in the date widget. Multiple-date widgets
Gintautas Miliauskas
gintas at pov.lt
Mon Sep 4 13:32:08 EDT 2006
Log message for revision 69956:
Fixed some uncleanliness in the date widget. Multiple-date widgets
now have less special-case code.
Changed:
U zc.datetimewidget/branches/gintas-dateranges/src/zc/datetimewidget/datetimewidget.py
U zc.datetimewidget/branches/gintas-dateranges/src/zc/datetimewidget/datetimewidget.txt
-=-
Modified: zc.datetimewidget/branches/gintas-dateranges/src/zc/datetimewidget/datetimewidget.py
===================================================================
--- zc.datetimewidget/branches/gintas-dateranges/src/zc/datetimewidget/datetimewidget.py 2006-09-04 15:54:50 UTC (rev 69955)
+++ zc.datetimewidget/branches/gintas-dateranges/src/zc/datetimewidget/datetimewidget.py 2006-09-04 17:32:07 UTC (rev 69956)
@@ -61,6 +61,10 @@
return dt
+class JavascriptObject(TextLine):
+ pass
+
+
class ICalendarWidgetConfiguration(Interface):
"""Configuration schema for the calendar widget.
@@ -94,7 +98,7 @@
title=u"Calendar is in single-click mode",
default=True)
# disableFunc - deprecated
- dateStatusFunc = TextLine(
+ dateStatusFunc = JavascriptObject(
title=u"Date status function",
description=u"""
A function that receives a JS Date object and returns a boolean or a
@@ -130,11 +134,11 @@
title=u"Custom click-on-date handler",
default=None,
required=False)
- onClose = TextLine(
+ onClose = JavascriptObject(
title=u"Custom handler of 'calendar closed' event",
default=None,
required=False)
- onUpdate = TextLine(
+ onUpdate = JavascriptObject(
title=u"Custom handler of 'calendar updated' event",
default=None,
required=False)
@@ -162,14 +166,21 @@
showOthers = Bool(
title=u"Show days belonging to other months",
default=False)
+ multiple = JavascriptObject(
+ title=u"Multiple dates",
+ description=u"""
+ A JavaScript list of dates that stores the dates to be preselected
+ on the widget.
+ """,
+ default=None)
+
class CalendarWidgetConfiguration(object):
implements(ICalendarWidgetConfiguration)
def __init__(self, name, **kw):
self.name = name.replace('.', '_')
- self.multiple = False
self.enabled_weekdays = None
for name, field in getFieldsInOrder(ICalendarWidgetConfiguration):
if name in kw:
@@ -181,8 +192,10 @@
raise ValueError('unknown arguments: %s' % ', '.join(kw.keys()))
def setMultiple(self, dates):
- self.multiple = True
- self._multiple_dates = dates
+ self._multiple_dates = dates # TODO: add the dates
+ self.multiple = 'multi_%s' % self.name
+ self.onClose = ('getMultipleDateClosedHandler("%s", multi_%s)'
+ % (self.inputField, self.name))
def setEnabledWeekdays(self, enabled_weekdays):
self.enabled_weekdays = enabled_weekdays
@@ -195,6 +208,8 @@
if value != field.default:
if value is None:
value_repr = 'null'
+ elif isinstance(field, JavascriptObject):
+ value_repr = str(value)
elif isinstance(value, basestring):
value_repr = repr(str(value))
elif isinstance(value, bool):
@@ -206,10 +221,6 @@
raise ValueError(value)
row = ' %s: %s,' % (name, value_repr)
rows.append(row)
- if self.multiple:
- rows.append(' multiple: multi_%s,' % self.name) # TODO: add current values
- rows.append(' onClose: getMultipleDateClosedHandler('
- '"%s", multi_%s),' % (self.inputField, self.name))
if self.enabled_weekdays is not None:
rows.append(' dateStatusFunc: enabledWeekdays([%s]),'
% ', '.join(str(weekday)
@@ -251,7 +262,7 @@
trigger_name = '%s_trigger' % self.name
multiple_init = ''
- if conf.multiple:
+ if getattr(conf, 'multiple', None):
multiple_init = 'var multi_%s = [];' % self.name.replace('.', '_')
return template % dict(widget_html=widget_html,
Modified: zc.datetimewidget/branches/gintas-dateranges/src/zc/datetimewidget/datetimewidget.txt
===================================================================
--- zc.datetimewidget/branches/gintas-dateranges/src/zc/datetimewidget/datetimewidget.txt 2006-09-04 15:54:50 UTC (rev 69955)
+++ zc.datetimewidget/branches/gintas-dateranges/src/zc/datetimewidget/datetimewidget.txt 2006-09-04 17:32:07 UTC (rev 69956)
@@ -86,8 +86,8 @@
inputField: 'field.',
button: 'field._trigger',
ifFormat: '%Y-%m-%d',
- multiple: multi_field_,
- onClose: getMultipleDateClosedHandler("field.", multi_field_)
+ onClose: getMultipleDateClosedHandler("field.", multi_field_),
+ multiple: multi_field_
});
<BLANKLINE>
</script>
More information about the Checkins
mailing list