197 """ |
197 """ |
198 type = 'checkbox' |
198 type = 'checkbox' |
199 |
199 |
200 def render(self, form, field): |
200 def render(self, form, field): |
201 name, curvalues, attrs = self._render_attrs(form, field) |
201 name, curvalues, attrs = self._render_attrs(form, field) |
202 options = [] |
|
203 for label, value in field.vocabulary(form): |
|
204 if value in curvalues: |
|
205 tag = tags.input(name=name, value=value, type=self.type, |
|
206 checked='checked', **attrs) |
|
207 else: |
|
208 tag = tags.input(name=name, value=value, type=self.type, |
|
209 **attrs) |
|
210 options.append(tag + label) |
|
211 return '<br/>\n'.join(options) |
|
212 |
|
213 |
|
214 class Radio(Input): |
|
215 """<input type='radio'>, for field having a specific vocabulary. One |
|
216 input will be generated for each possible value. |
|
217 """ |
|
218 type = 'radio' |
|
219 |
|
220 def render(self, form, field): |
|
221 name, curvalues, attrs = self._render_attrs(form, field) |
|
222 domid = attrs.pop('id', None) |
202 domid = attrs.pop('id', None) |
|
203 sep = attrs.pop('separator', u'<br/>') |
223 options = [] |
204 options = [] |
224 for i, (label, value) in enumerate(field.vocabulary(form)): |
205 for i, (label, value) in enumerate(field.vocabulary(form)): |
225 iattrs = attrs.copy() |
206 iattrs = attrs.copy() |
226 if i == 0 and domid is not None: |
207 if i == 0 and domid is not None: |
227 iattrs['id'] = domid |
208 iattrs['id'] = domid |
228 if value in curvalues: |
209 if value in curvalues: |
229 iattrs['checked'] = u'checked' |
210 iattrs['checked'] = u'checked' |
230 tag = tags.input(name=name, type=self.type, value=value, **iattrs) |
211 tag = tags.input(name=name, type=self.type, value=value, **iattrs) |
231 options.append(tag + label + '<br/>') |
212 options.append(tag + label + sep) |
232 return '\n'.join(options) |
213 return '\n'.join(options) |
233 |
214 |
|
215 |
|
216 class Radio(CheckBox): |
|
217 """<input type='radio'>, for field having a specific vocabulary. One |
|
218 input will be generated for each possible value. |
|
219 """ |
|
220 type = 'radio' |
234 |
221 |
235 # javascript widgets ########################################################### |
222 # javascript widgets ########################################################### |
236 |
223 |
237 class DateTimePicker(TextInput): |
224 class DateTimePicker(TextInput): |
238 """<input type='text' + javascript date/time picker for date or datetime |
225 """<input type='text' + javascript date/time picker for date or datetime |
316 name, values, attrs = super(AutoCompletionWidget, self)._render_attrs(form, field) |
303 name, values, attrs = super(AutoCompletionWidget, self)._render_attrs(form, field) |
317 if not values[0]: |
304 if not values[0]: |
318 values = (INTERNAL_FIELD_VALUE,) |
305 values = (INTERNAL_FIELD_VALUE,) |
319 init_ajax_attributes(attrs, self.wdgtype, self.loadtype) |
306 init_ajax_attributes(attrs, self.wdgtype, self.loadtype) |
320 # XXX entity form specific |
307 # XXX entity form specific |
321 attrs['cubicweb:dataurl'] = self._get_url(form.edited_entity) |
308 attrs['cubicweb:dataurl'] = self._get_url(form.edited_entity, field) |
322 return name, values, attrs |
309 return name, values, attrs |
323 |
310 |
324 def _get_url(self, entity): |
311 def _get_url(self, entity, field): |
325 return entity.req.build_url('json', fname=entity.autocomplete_initfuncs[self.rschema], |
312 fname = entity.autocomplete_initfuncs[field.name] |
326 pageid=entity.req.pageid, mode='remote') |
313 return entity.req.build_url('json', fname=fname, mode='remote', |
|
314 pageid=entity.req.pageid) |
327 |
315 |
328 |
316 |
329 class StaticFileAutoCompletionWidget(AutoCompletionWidget): |
317 class StaticFileAutoCompletionWidget(AutoCompletionWidget): |
330 """XXX describe me""" |
318 """XXX describe me""" |
331 wdgtype = 'StaticFileSuggestField' |
319 wdgtype = 'StaticFileSuggestField' |
332 |
320 |
333 def _get_url(self, entity): |
321 def _get_url(self, entity, field): |
334 return entity.req.datadir_url + entity.autocomplete_initfuncs[self.rschema] |
322 return entity.req.datadir_url + entity.autocomplete_initfuncs[field.name] |
335 |
323 |
336 |
324 |
337 class RestrictedAutoCompletionWidget(AutoCompletionWidget): |
325 class RestrictedAutoCompletionWidget(AutoCompletionWidget): |
338 """XXX describe me""" |
326 """XXX describe me""" |
339 wdgtype = 'RestrictedSuggestField' |
327 wdgtype = 'RestrictedSuggestField' |