diff -r 2e552353c42a -r 828bbf500bcc web/formwidgets.py --- a/web/formwidgets.py Fri Apr 10 16:48:03 2009 +0200 +++ b/web/formwidgets.py Fri Apr 10 16:48:28 2009 +0200 @@ -267,22 +267,29 @@ # ajax widgets ################################################################ +def init_ajax_attributes(attrs, wdgtype, loadtype=u'auto'): + try: + attrs[u'klass'] += u' widget' + except KeyError: + attrs[u'klass'] = u'widget' + attrs.setdefault(u'cubicweb:wdgtype', wdgtype) + attrs.setdefault(u'cubicweb:loadtype', loadtype) + + class AjaxWidget(FieldWidget): """simple
based ajax widget""" def __init__(self, wdgtype, inputid=None, **kwargs): super(AjaxWidget, self).__init__(**kwargs) - self.attrs.setdefault('class', 'widget') - self.attrs.setdefault('cubicweb:loadtype', 'auto') - self.attrs['cubicweb:wdgtype'] = wdgtype + init_ajax_attributes(self.attrs, wdgtype) if inputid is not None: - self.attrs['cubicweb:inputid'] = inputid + self.attrs[u'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. @@ -296,12 +303,7 @@ name, values, attrs = super(AutoCompletionWidget, self)._render_attrs(form, field) if not values[0]: values = (INTERNAL_FIELD_VALUE,) - try: - attrs['klass'] += ' widget' - except KeyError: - attrs['klass'] = 'widget' - attrs.setdefault('cubicweb:wdgtype', self.wdgtype) - attrs.setdefault('cubicweb:loadtype', self.loadtype) + init_ajax_attributes(attrs, self.wdgtype, self.loadtype) # XXX entity form specific attrs['cubicweb:dataurl'] = self._get_url(form.edited_entity) return name, values, attrs @@ -324,6 +326,23 @@ wdgtype = 'RestrictedSuggestField' +class AddComboBoxWidget(Select): + def _render_attrs(self, form, field): + name, values, attrs = super(AddComboBoxWidget, self)._render_attrs(form, field) + init_ajax_attributes(self.attrs, 'AddComboBox') + # XXX entity form specific + entity = form.edited_entity + 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''' +
+ +  
+''' + # buttons ###################################################################### class Button(Input): @@ -385,4 +404,4 @@ return '%(label)s%(label)s' % self.__dict__ -# XXX EntityLinkComboBoxWidget, AddComboBoxWidget, RawDynamicComboBoxWidget +# XXX EntityLinkComboBoxWidget, [Raw]DynamicComboBoxWidget