[Checkins]
SVN: zc.datetimewidget/branches/gintas-dateranges/src/zc/datetimewidget/
Preserve multiselections after calendar is closed.
Gintautas Miliauskas
gintas at pov.lt
Fri Sep 1 09:18:39 EDT 2006
Log message for revision 69914:
Preserve multiselections after calendar is closed.
Changed:
U zc.datetimewidget/branches/gintas-dateranges/src/zc/datetimewidget/datetimewidget.py
U zc.datetimewidget/branches/gintas-dateranges/src/zc/datetimewidget/datetimewidget.txt
U zc.datetimewidget/branches/gintas-dateranges/src/zc/datetimewidget/resources/datetimewidget.js
-=-
Modified: zc.datetimewidget/branches/gintas-dateranges/src/zc/datetimewidget/datetimewidget.py
===================================================================
--- zc.datetimewidget/branches/gintas-dateranges/src/zc/datetimewidget/datetimewidget.py 2006-09-01 13:14:58 UTC (rev 69913)
+++ zc.datetimewidget/branches/gintas-dateranges/src/zc/datetimewidget/datetimewidget.py 2006-09-01 13:18:39 UTC (rev 69914)
@@ -167,7 +167,8 @@
class CalendarWidgetConfiguration(object):
implements(ICalendarWidgetConfiguration)
- def __init__(self, **kw):
+ def __init__(self, name, **kw):
+ self.name = name.replace('.', '_')
self.multiple = False
self.enabled_weekdays = None
for name, field in getFieldsInOrder(ICalendarWidgetConfiguration):
@@ -206,9 +207,9 @@
row = ' %s: %s,' % (name, value_repr)
rows.append(row)
if self.multiple:
- rows.append(' multiple: [],') # TODO: add current values
- rows.append(' onClose: getMultipleDateClosedHandler("%s"),'
- % self.inputField)
+ 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)
@@ -223,6 +224,7 @@
<input type="button" value="..." id="%(trigger_name)s">
<script type="text/javascript">
%(langDef)s
+ %(multiple_init)s
%(calendarSetup)s
</script>
"""
@@ -247,14 +249,21 @@
widget_html = super(DatetimeBase, self).__call__()
conf = self._configuration()
trigger_name = '%s_trigger' % self.name
+
+ multiple_init = ''
+ if conf.multiple:
+ multiple_init = 'var multi_%s = [];' % self.name.replace('.', '_')
+
return template % dict(widget_html=widget_html,
trigger_name=trigger_name,
langDef=langDef,
+ multiple_init=multiple_init,
calendarSetup=conf.dumpJS())
def _configuration(self):
trigger_name = '%s_trigger' % self.name
- conf = CalendarWidgetConfiguration(showsTime=self._showsTime,
+ conf = CalendarWidgetConfiguration(self.name,
+ showsTime=self._showsTime,
ifFormat=self._format,
button=trigger_name,
inputField=self.name)
Modified: zc.datetimewidget/branches/gintas-dateranges/src/zc/datetimewidget/datetimewidget.txt
===================================================================
--- zc.datetimewidget/branches/gintas-dateranges/src/zc/datetimewidget/datetimewidget.txt 2006-09-01 13:14:58 UTC (rev 69913)
+++ zc.datetimewidget/branches/gintas-dateranges/src/zc/datetimewidget/datetimewidget.txt 2006-09-01 13:18:39 UTC (rev 69914)
@@ -12,7 +12,7 @@
Let's create a standard configuration object:
- >>> conf = CalendarWidgetConfiguration()
+ >>> conf = CalendarWidgetConfiguration('field.x')
>>> verifyObject(ICalendarWidgetConfiguration, conf)
True
@@ -28,7 +28,7 @@
We can customize some attributes during instantiation:
>>> import datetime
- >>> conf = CalendarWidgetConfiguration(date=datetime.date(2006, 8, 25))
+ >>> conf = CalendarWidgetConfiguration('x', date=datetime.date(2006, 8, 25))
>>> conf.date
datetime.date(2006, 8, 25)
@@ -38,15 +38,15 @@
Configuration can be dumped as JavaScript. First an empty configuration:
- >>> print CalendarWidgetConfiguration().dumpJS()
+ >>> print CalendarWidgetConfiguration('field.x').dumpJS()
Calendar.setup({
<BLANKLINE>
});
Now let's add a few customizations:
- >>> conf = CalendarWidgetConfiguration(daFormat=u'%m-%d', inputField='inp',
- ... eventName=None, date=conf.date)
+ >>> conf = CalendarWidgetConfiguration('x', daFormat=u'%m-%d',
+ ... inputField='inp', eventName=None, date=conf.date)
>>> print conf.dumpJS()
Calendar.setup({
inputField: 'inp',
@@ -57,7 +57,7 @@
Invalid arguments are not accepted:
- >>> conf = CalendarWidgetConfiguration(foo='bar')
+ >>> conf = CalendarWidgetConfiguration('x', foo='bar')
Traceback (most recent call last):
...
ValueError: unknown arguments: foo
@@ -75,18 +75,19 @@
>>> field.context = set()
>>> widget = DateSetWidget(field, object(), request)
- >>> print widget()
+ >>> print widget() # doctest: +REPORT_NDIFF
<BLANKLINE>
<input class="textType" id="field." name="field." size="30" type="text" value="" />
<input type="button" value="..." id="field._trigger">
<script type="text/javascript">
<BLANKLINE>
+ var multi_field_ = [];
Calendar.setup({
inputField: 'field.',
button: 'field._trigger',
ifFormat: '%Y-%m-%d',
- multiple: [],
- onClose: getMultipleDateClosedHandler("field.")
+ multiple: multi_field_,
+ onClose: getMultipleDateClosedHandler("field.", multi_field_)
});
<BLANKLINE>
</script>
Modified: zc.datetimewidget/branches/gintas-dateranges/src/zc/datetimewidget/resources/datetimewidget.js
===================================================================
--- zc.datetimewidget/branches/gintas-dateranges/src/zc/datetimewidget/resources/datetimewidget.js 2006-09-01 13:14:58 UTC (rev 69913)
+++ zc.datetimewidget/branches/gintas-dateranges/src/zc/datetimewidget/resources/datetimewidget.js 2006-09-01 13:18:39 UTC (rev 69914)
@@ -25,10 +25,9 @@
}
-function getMultipleDateClosedHandler(input_id) {
+function getMultipleDateClosedHandler(input_id, MA) {
return function(cal) {
var el = document.getElementById(input_id);
- var MA = cal.multiple;
// reset initial content.
el.value = "";
More information about the Checkins
mailing list