60 done = set() |
60 done = set() |
61 for entity in self.rset.entities(): |
61 for entity in self.rset.entities(): |
62 if entity.eid in done: |
62 if entity.eid in done: |
63 continue |
63 continue |
64 done.add(entity.eid) |
64 done.add(entity.eid) |
65 subform = self.vreg.select('forms', 'base', self.req, entity=entity, |
65 subform = self.vreg['forms'].select('base', self.req, entity=entity, |
66 mainform=False) |
66 mainform=False) |
67 self.form_add_subform(subform) |
67 self.form_add_subform(subform) |
68 |
68 |
69 |
69 |
70 class DeleteConfFormView(FormViewMixIn, EntityView): |
70 class DeleteConfFormView(FormViewMixIn, EntityView): |
71 """form used to confirm deletion of some entities""" |
71 """form used to confirm deletion of some entities""" |
81 _ = req._ |
81 _ = req._ |
82 w(u'<script type="text/javascript">updateMessage(\'%s\');</script>\n' |
82 w(u'<script type="text/javascript">updateMessage(\'%s\');</script>\n' |
83 % _('this action is not reversible!')) |
83 % _('this action is not reversible!')) |
84 # XXX above message should have style of a warning |
84 # XXX above message should have style of a warning |
85 w(u'<h4>%s</h4>\n' % _('Do you want to delete the following element(s) ?')) |
85 w(u'<h4>%s</h4>\n' % _('Do you want to delete the following element(s) ?')) |
86 form = self.vreg.select('forms', self.id, req, rset=self.rset, |
86 form = self.vreg['forms'].select(self.id, req, rset=self.rset, |
87 onsubmit=onsubmit) |
87 onsubmit=onsubmit) |
88 w(u'<ul>\n') |
88 w(u'<ul>\n') |
89 for entity in self.rset.entities(): |
89 for entity in self.rset.entities(): |
90 # don't use outofcontext view or any other that may contain inline edition form |
90 # don't use outofcontext view or any other that may contain inline edition form |
91 w(u'<li>%s</li>' % tags.a(entity.view('textoutofcontext'), |
91 w(u'<li>%s</li>' % tags.a(entity.view('textoutofcontext'), |
92 href=entity.absolute_url())) |
92 href=entity.absolute_url())) |
125 |
125 |
126 def _build_landing_zone(self, lzone): |
126 def _build_landing_zone(self, lzone): |
127 return lzone or self._defaultlandingzone % {'msg' : xml_escape(self.req._(self._landingzonemsg))} |
127 return lzone or self._defaultlandingzone % {'msg' : xml_escape(self.req._(self._landingzonemsg))} |
128 |
128 |
129 def _build_renderer(self, entity, rtype, role): |
129 def _build_renderer(self, entity, rtype, role): |
130 return self.vreg.select_object('formrenderers', 'base', self.req, |
130 return self.vreg['formrenderers'].select( |
131 entity=entity, |
131 'base', self.req, entity=entity, display_label=False, |
132 display_label=False, display_help=False, |
132 display_help=False, display_fields=[(rtype, role)], table_class='', |
133 display_fields=[(rtype, role)], |
133 button_bar_class='buttonbar', display_progress_div=False) |
134 table_class='', button_bar_class='buttonbar', |
|
135 display_progress_div=False) |
|
136 |
134 |
137 def cell_call(self, row, col, rtype=None, role='subject', |
135 def cell_call(self, row, col, rtype=None, role='subject', |
138 reload=False, # controls reloading the whole page after change |
136 reload=False, # controls reloading the whole page after change |
139 rvid=None, # vid to be applied to other side of rtype |
137 rvid=None, # vid to be applied to other side of rtype |
140 default=None, # default value |
138 default=None, # default value |
205 onsubmit = ("return inlineValidateRelationForm('%(rtype)s', '%(role)s', '%(eid)s', " |
203 onsubmit = ("return inlineValidateRelationForm('%(rtype)s', '%(role)s', '%(eid)s', " |
206 "'%(divid)s', %(reload)s, '%(vid)s', '%(default)s', '%(lzone)s');" |
204 "'%(divid)s', %(reload)s, '%(vid)s', '%(default)s', '%(lzone)s');" |
207 % event_data) |
205 % event_data) |
208 cancelclick = "hideInlineEdit(%s,\'%s\',\'%s\')" % ( |
206 cancelclick = "hideInlineEdit(%s,\'%s\',\'%s\')" % ( |
209 entity.eid, rtype, divid) |
207 entity.eid, rtype, divid) |
210 form = self.vreg.select('forms', 'base', self.req, entity=entity, |
208 form = self.vreg['forms'].select('base', self.req, entity=entity, |
211 domid='%s-form' % divid, cssstyle='display: none', |
209 domid='%s-form' % divid, cssstyle='display: none', |
212 onsubmit=onsubmit, action='#', |
210 onsubmit=onsubmit, action='#', |
213 form_buttons=[SubmitButton(), |
211 form_buttons=[SubmitButton(), |
214 Button(stdmsgs.BUTTON_CANCEL, |
212 Button(stdmsgs.BUTTON_CANCEL, |
215 onclick=cancelclick)]) |
213 onclick=cancelclick)]) |
216 field = guess_field(entity.e_schema, entity.schema.rschema(rtype), role) |
214 field = guess_field(entity.e_schema, entity.schema.rschema(rtype), role) |
217 form.append_field(field) |
215 form.append_field(field) |
218 w = self.w |
216 w = self.w |
219 w(u'<div id="%s-reledit" class="field">' % divid) |
217 w(u'<div id="%s-reledit" class="field">' % divid) |
220 w(tags.div(lzone, klass='editableField', id=divid, |
218 w(tags.div(lzone, klass='editableField', id=divid, |
241 "%(reload)s, '%(default)s');") |
239 "%(reload)s, '%(default)s');") |
242 buttons = [SubmitButton(stdmsgs.BUTTON_OK), |
240 buttons = [SubmitButton(stdmsgs.BUTTON_OK), |
243 Button(stdmsgs.BUTTON_CANCEL, |
241 Button(stdmsgs.BUTTON_CANCEL, |
244 onclick="hideInlineEdit(%s,\'%s\',\'%s\')" % ( |
242 onclick="hideInlineEdit(%s,\'%s\',\'%s\')" % ( |
245 eid, rtype, divid))] |
243 eid, rtype, divid))] |
246 form = self.vreg.select('forms', 'edition', self.req, rset=self.rset, |
244 form = self.vreg['forms'].select('edition', self.req, rset=self.rset, |
247 row=row, col=col, form_buttons=buttons, |
245 row=row, col=col, form_buttons=buttons, |
248 attrcategories=self.attrcategories, |
246 attrcategories=self.attrcategories, |
249 domid='%s-form' % divid, action='#', |
247 domid='%s-form' % divid, action='#', |
250 cssstyle='display: none', |
248 cssstyle='display: none', |
251 onsubmit=onsubmit % event_data) |
249 onsubmit=onsubmit % event_data) |
252 w = self.w |
250 w = self.w |
253 w(u'<div class="field">') |
251 w(u'<div class="field">') |
254 w(u'<div id="%s" style="display: inline">' % divid) |
252 w(u'<div id="%s" style="display: inline">' % divid) |
255 w(tags.div(lzone, klass='editableField', |
253 w(tags.div(lzone, klass='editableField', |
256 onclick=self._onclick % event_data)) |
254 onclick=self._onclick % event_data)) |
276 self.render_form(entity) |
274 self.render_form(entity) |
277 |
275 |
278 def render_form(self, entity): |
276 def render_form(self, entity): |
279 """fetch and render the form""" |
277 """fetch and render the form""" |
280 self.form_title(entity) |
278 self.form_title(entity) |
281 form = self.vreg.select('forms', 'edition', self.req, rset=entity.rset, |
279 form = self.vreg['forms'].select('edition', self.req, rset=entity.rset, |
282 row=entity.row, col=entity.col, entity=entity, |
280 row=entity.row, col=entity.col, entity=entity, |
283 submitmsg=self.submited_message()) |
281 submitmsg=self.submited_message()) |
284 self.init_form(form, entity) |
282 self.init_form(form, entity) |
285 self.w(form.form_render(formvid=u'edition')) |
283 self.w(form.form_render(formvid=u'edition')) |
286 |
284 |
287 def init_form(self, form, entity): |
285 def init_form(self, form, entity): |
288 """customize your form before rendering here""" |
286 """customize your form before rendering here""" |
395 |
393 |
396 def __init__(self, req, rset, **kwargs): |
394 def __init__(self, req, rset, **kwargs): |
397 kwargs.setdefault('__redirectrql', rset.printable_rql()) |
395 kwargs.setdefault('__redirectrql', rset.printable_rql()) |
398 super(TableEditForm, self).__init__(req, rset, **kwargs) |
396 super(TableEditForm, self).__init__(req, rset, **kwargs) |
399 for row in xrange(len(self.rset)): |
397 for row in xrange(len(self.rset)): |
400 form = self.vreg.select('forms', 'edition', self.req, rset=self.rset, |
398 form = self.vreg['forms'].select('edition', self.req, |
401 row=row, attrcategories=('primary',), |
399 rset=self.rset, row=row, |
402 mainform=False) |
400 attrcategories=('primary',), |
|
401 mainform=False) |
403 # XXX rely on the EntityCompositeFormRenderer to put the eid input |
402 # XXX rely on the EntityCompositeFormRenderer to put the eid input |
404 form.remove_field(form.field_by_name('eid')) |
403 form.remove_field(form.field_by_name('eid')) |
405 self.form_add_subform(form) |
404 self.form_add_subform(form) |
406 |
405 |
407 |
406 |
413 def call(self, **kwargs): |
412 def call(self, **kwargs): |
414 """a view to edit multiple entities of the same type the first column |
413 """a view to edit multiple entities of the same type the first column |
415 should be the eid |
414 should be the eid |
416 """ |
415 """ |
417 #self.form_title(entity) |
416 #self.form_title(entity) |
418 form = self.vreg.select('forms', self.id, self.req, rset=self.rset) |
417 form = self.vreg['forms'].select(self.id, self.req, rset=self.rset) |
419 self.w(form.form_render()) |
418 self.w(form.form_render()) |
420 |
419 |
421 |
420 |
422 class InlineEntityEditionFormView(FormViewMixIn, EntityView): |
421 class InlineEntityEditionFormView(FormViewMixIn, EntityView): |
423 id = 'inline-edition' |
422 id = 'inline-edition' |
444 entity.eid) |
443 entity.eid) |
445 self.render_form(entity, peid, rtype, role, divonclick=divonclick) |
444 self.render_form(entity, peid, rtype, role, divonclick=divonclick) |
446 |
445 |
447 def render_form(self, entity, peid, rtype, role, **kwargs): |
446 def render_form(self, entity, peid, rtype, role, **kwargs): |
448 """fetch and render the form""" |
447 """fetch and render the form""" |
449 form = self.vreg.select('forms', 'edition', self.req, entity=entity, |
448 form = self.vreg['forms'].select('edition', self.req, entity=entity, |
450 form_renderer_id='inline', mainform=False, |
449 form_renderer_id='inline', |
451 copy_nav_params=False) |
450 mainform=False, copy_nav_params=False) |
452 self.add_hiddens(form, entity, peid, rtype, role) |
451 self.add_hiddens(form, entity, peid, rtype, role) |
453 divid = '%s-%s-%s' % (peid, rtype, entity.eid) |
452 divid = '%s-%s-%s' % (peid, rtype, entity.eid) |
454 title = self.schema.rschema(rtype).display_name(self.req, role) |
453 title = self.schema.rschema(rtype).display_name(self.req, role) |
455 removejs = self.removejs % (peid, rtype,entity.eid) |
454 removejs = self.removejs % (peid, rtype,entity.eid) |
456 countkey = '%s_count' % rtype |
455 countkey = '%s_count' % rtype |