diff -r 717dea3362c0 -r 716f0742ee7f web/formwidgets.py --- a/web/formwidgets.py Fri Apr 24 15:38:11 2009 +0200 +++ b/web/formwidgets.py Fri Apr 24 15:38:19 2009 +0200 @@ -20,7 +20,7 @@ # automatically set id and tabindex attributes ? setdomid = True settabindex = True - + def __init__(self, attrs=None, setdomid=None, settabindex=None): if attrs is None: attrs = {} @@ -38,7 +38,7 @@ form.req.add_js(self.needs_js) if self.needs_css: form.req.add_css(self.needs_css) - + def render(self, form, field): """render the widget for the given `field` of `form`. To override in concrete class @@ -63,10 +63,10 @@ class Input(FieldWidget): """abstract widget class for tag based widgets""" type = None - + def render(self, form, field): """render the widget for the given `field` of `form`. - + Generate one tag for each field's value """ self.add_media(form) @@ -88,7 +88,7 @@ -confirm as name) """ type = 'password' - + def render(self, form, field): self.add_media(form) name, values, attrs = self._render_attrs(form, field) @@ -109,20 +109,20 @@ class FileInput(Input): """""" type = 'file' - + def _render_attrs(self, form, field): # ignore value which makes no sense here (XXX even on form validation error?) name, values, attrs = super(FileInput, self)._render_attrs(form, field) return name, ('',), attrs - + class HiddenInput(Input): """""" type = 'hidden' setdomid = False # by default, don't set id attribute on hidden input settabindex = False - + class ButtonInput(Input): """ @@ -151,18 +151,18 @@ def __init__(self, *args, **kwargs): super(FCKEditor, self).__init__(*args, **kwargs) self.attrs['cubicweb:type'] = 'wysiwyg' - + def render(self, form, field): form.req.fckeditor_config() return super(FCKEditor, self).render(form, field) class Select(FieldWidget): - """, for field having a specific vocabulary""" def __init__(self, attrs=None, multiple=False): super(Select, self).__init__(attrs) self.multiple = multiple - + def render(self, form, field): name, curvalues, attrs = self._render_attrs(form, field) if not 'size' in attrs: @@ -183,9 +183,9 @@ class CheckBox(Input): """, for field having a specific vocabulary. One input will be generated for each possible value. - """ + """ type = 'checkbox' - + def render(self, form, field): name, curvalues, attrs = self._render_attrs(form, field) options = [] @@ -199,13 +199,13 @@ options.append(tag + label) return '
\n'.join(options) - + class Radio(Input): """, for field having a specific vocabulary. One input will be generated for each possible value. - """ + """ type = 'radio' - + def render(self, form, field): name, curvalues, attrs = self._render_attrs(form, field) domid = attrs.pop('id', None) @@ -235,7 +235,7 @@ needs_js = ('cubicweb.calendar.js',) needs_css = ('cubicweb.calendar_popup.css',) - + @classmethod def add_localized_infos(cls, req): """inserts JS variables defining localized months and days""" @@ -245,13 +245,13 @@ 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) self.add_localized_infos(form.req) cal_button = self._render_calendar_popup(form, field) return txtwidget + cal_button - + def _render_calendar_popup(self, form, field): value = form.form_field_value(field) if not value: @@ -265,7 +265,7 @@ form.req.external_resource('CALENDAR_ICON'), form.req._('calendar'), helperid) ) - + # ajax widgets ################################################################ @@ -285,13 +285,13 @@ init_ajax_attributes(self.attrs, wdgtype) if inputid is not None: self.attrs['cubicweb:inputid'] = inputid - + def render(self, form, field): self.add_media(form) attrs = self._render_attrs(form, field)[-1] return tags.div(**attrs) - + class AutoCompletionWidget(TextInput): """ajax widget for StringField, proposing matching existing values as you type. @@ -300,7 +300,7 @@ needs_css = ('jquery.autocomplete.css',) wdgtype = 'SuggestField' loadtype = 'auto' - + def _render_attrs(self, form, field): name, values, attrs = super(AutoCompletionWidget, self)._render_attrs(form, field) if not values[0]: @@ -309,7 +309,7 @@ # XXX entity form specific attrs['cubicweb:dataurl'] = self._get_url(form.edited_entity) return name, values, attrs - + def _get_url(self, entity): return entity.req.build_url('json', fname=entity.autocomplete_initfuncs[self.rschema], pageid=entity.req.pageid, mode='remote') @@ -318,14 +318,14 @@ class StaticFileAutoCompletionWidget(AutoCompletionWidget): """XXX describe me""" wdgtype = 'StaticFileSuggestField' - + def _get_url(self, entity): return entity.req.datadir_url + entity.autocomplete_initfuncs[self.rschema] class RestrictedAutoCompletionWidget(AutoCompletionWidget): """XXX describe me""" - wdgtype = 'RestrictedSuggestField' + wdgtype = 'RestrictedSuggestField' class AddComboBoxWidget(Select): @@ -337,7 +337,7 @@ attrs['cubicweb:etype_to'] = entity.e_schema etype_from = entity.e_schema.subject_relation(self.name).objects(entity.e_schema)[0] attrs['cubicweb:etype_from'] = etype_from - + def render(self, form, field): return super(AddComboBoxWidget, self).render(form, field) + u'''
@@ -364,7 +364,7 @@ self.onclick = onclick self.cwaction = cwaction self.attrs.setdefault('klass', 'validateButton') - + def render(self, form, field=None): label = form.req._(self.label) attrs = self.attrs.copy() @@ -382,12 +382,12 @@ attrs['tabindex'] = form.req.next_tabindex() return tags.input(value=label, type=self.type, **attrs) - + class SubmitButton(Button): """, main button to submit a form""" type = 'submit' - + class ResetButton(Button): """, main button to reset a form. You usually don't want this. @@ -407,7 +407,7 @@ self.href = href self.imgressource = imgressource self.label = label - + def render(self, form, field=None): label = form.req._(self.label) imgsrc = form.req.external_resource(self.imgressource) @@ -415,7 +415,7 @@ '%(label)s%(label)s' % { 'label': label, 'imgsrc': imgsrc, 'domid': self.domid, 'href': self.href} - + - + # XXX EntityLinkComboBoxWidget, [Raw]DynamicComboBoxWidget