# HG changeset patch # User Adrien Di Mascio # Date 1235075799 -3600 # Node ID 90a1aea85637db8df56d3e0fd0ad4fd66c5bbb14 # Parent e0947007542abb80223860fd08d4ca27b6407941 DatePicker widget diff -r e0947007542a -r 90a1aea85637 web/form.py --- a/web/form.py Thu Feb 19 21:36:22 2009 +0100 +++ b/web/form.py Thu Feb 19 21:36:39 2009 +0100 @@ -318,7 +318,51 @@ class CheckBox(FieldWidget): -class DateTimePicker: pass + def _render_attrs(self, form, field): + name, value, attrs = super(CheckBox, self)._render_attrs(form, field) + if value: + attrs['checked'] = u'checked' + return name, None, attrs + +class Radio(FieldWidget): + pass + +class DateTimePicker(TextInput): + monthnames = ("january", "february", "march", "april", + "may", "june", "july", "august", + "september", "october", "november", "december") + + daynames = ("monday", "tuesday", "wednesday", "thursday", + "friday", "saturday", "sunday") + + @classmethod + def add_localized_infos(cls, req): + """inserts JS variables defining localized months and days""" + # import here to avoid dependancy from cubicweb-common to simplejson + _ = req._ + monthnames = [_(mname) for mname in cls.monthnames] + daynames = [_(dname) for dname in cls.daynames] + req.html_headers.define_var('MONTHNAMES', monthnames) + req.html_headers.define_var('DAYNAMES', daynames) + + def render(self, form, field): + txtwidget = super(DateTimePicker, self).render(form, field) + cal_button - self._render_calendar_popup(form, field) + return txtwidget + cal_button + + def _render_calendar_popup(self, form, field): + req = form.req + name, value, attrs = self._render_attrs(form, field) + helperid = '%shelper' % name + if not value: + value = _today() + year, month = value.year, value.month + onclick = "toggleCalendar('%s', '%s', %s, %s);" % ( + helperid, name, year, month) + return (u""" +""" + % (helperid, inputid, year, month, + self.iconurl, req._('calendar'), helperid) ) # fields ############