web/views/editforms.py
branchstable
changeset 2335 b78249be8a4b
parent 2334 464c896bee65
child 2336 a15d3f54f0f2
equal deleted inserted replaced
2334:464c896bee65 2335:b78249be8a4b
    88     id = 'reledit'
    88     id = 'reledit'
    89     __select__ = non_final_entity() & match_kwargs('rtype')
    89     __select__ = non_final_entity() & match_kwargs('rtype')
    90 
    90 
    91     # FIXME editableField class could be toggleable from userprefs
    91     # FIXME editableField class could be toggleable from userprefs
    92 
    92 
    93     _ondblclick = "showInlineEditionForm(%(eid)s, '%(rtype)s', '%(divid)s')"
    93     _onclick = "showInlineEditionForm(%(eid)s, '%(rtype)s', '%(divid)s')"
    94     _defaultlandingzone = u'<img title="%s" src="data/file.gif"/>'
    94     _defaultlandingzone = u'<img title="%s" src="data/file.gif"/>'
    95     _landingzonemsg = _('double click to edit this field')
    95     _landingzonemsg = _('click to edit this field')
    96     # default relation vids according to cardinality
    96     # default relation vids according to cardinality
    97     _one_rvid = 'incontext'
    97     _one_rvid = 'incontext'
    98     _many_rvid = 'csv'
    98     _many_rvid = 'csv'
    99 
    99 
   100     def _compute_best_vid(self, entity, rtype, role):
   100     def _compute_best_vid(self, entity, rtype, role):
   103                                role) in '+*':
   103                                role) in '+*':
   104             return self._many_rvid
   104             return self._many_rvid
   105         return self._one_rvid
   105         return self._one_rvid
   106 
   106 
   107     def cell_call(self, row, col, rtype=None, role='subject',
   107     def cell_call(self, row, col, rtype=None, role='subject',
   108                   reload=False,      # controls reloading the whole page after change
   108                   reload=True,      # controls reloading the whole page after change
   109                   rvid=None,         # vid to be applied to other side of rtype
   109                   rvid=None,         # vid to be applied to other side of rtype
   110                   escape=True,       # depending on the vid, will xml_escape or not
   110                   escape=True,       # depending on the vid, will xml_escape or not
   111                   default=None,      # default value
   111                   default=None,      # default value
   112                   landing_zone=None  # prepend value with a separate html element to click onto
   112                   landing_zone=None  # prepend value with a separate html element to click onto
   113                                      # (esp. needed when values are links)
   113                                      # (esp. needed when values are links)
   157         divid = 'd%s' % make_uid('%s-%s' % (rtype, entity.eid))
   157         divid = 'd%s' % make_uid('%s-%s' % (rtype, entity.eid))
   158         event_data = {'divid' : divid, 'eid' : entity.eid, 'rtype' : rtype, 'vid' : rvid,
   158         event_data = {'divid' : divid, 'eid' : entity.eid, 'rtype' : rtype, 'vid' : rvid,
   159                       'reload' : reload, 'default' : default, 'role' : role,
   159                       'reload' : reload, 'default' : default, 'role' : role,
   160                       'escape' : escape, 'lzone' : lzone}
   160                       'escape' : escape, 'lzone' : lzone}
   161         onsubmit = ("return inlineValidateRelationForm('%(divid)s-form', '%(rtype)s', "
   161         onsubmit = ("return inlineValidateRelationForm('%(divid)s-form', '%(rtype)s', "
   162                     "'%(role)s', '%(eid)s', '%(divid)s', '%(reload)s', '%(vid)s', "
   162                     "'%(role)s', '%(eid)s', '%(divid)s', %(reload)s, '%(vid)s', "
   163                     "'%(default)s', '%(escape)s', '%(lzone)s');"
   163                     "'%(default)s', '%(escape)s', '%(lzone)s');"
   164                     % event_data)
   164                     % event_data)
   165         cancelclick = "cancelInlineEdit(%s,\'%s\',\'%s\')" % (
   165         cancelclick = "cancelInlineEdit(%s,\'%s\',\'%s\')" % (
   166             entity.eid, rtype, divid)
   166             entity.eid, rtype, divid)
   167         form = self.vreg.select_object('forms', 'base', self.req, entity=entity,
   167         form = self.vreg.select_object('forms', 'base', self.req, entity=entity,
   171                                                      Button(stdmsgs.BUTTON_CANCEL,
   171                                                      Button(stdmsgs.BUTTON_CANCEL,
   172                                                        onclick=cancelclick)])
   172                                                        onclick=cancelclick)])
   173         field = guess_field(entity.e_schema, entity.schema.rschema(rtype), role)
   173         field = guess_field(entity.e_schema, entity.schema.rschema(rtype), role)
   174         form.append_field(field)
   174         form.append_field(field)
   175         self.w(tags.div(value, klass='editableField', id=divid,
   175         self.w(tags.div(value, klass='editableField', id=divid,
   176                         ondblclick=self._ondblclick % event_data))
   176                         onclick=self._onclick % event_data))
   177         return form
   177         return form
   178 
   178 
   179     def _build_attribute_form(self, entity, value, rtype, role, reload, row, col, default, lzone):
   179     def _build_attribute_form(self, entity, value, rtype, role, reload, row, col, default, lzone):
   180         eid = entity.eid
   180         eid = entity.eid
   181         divid = 'd%s' % make_uid('%s-%s' % (rtype, eid))
   181         divid = 'd%s' % make_uid('%s-%s' % (rtype, eid))
   191                                        row=row, col=col, form_buttons=buttons,
   191                                        row=row, col=col, form_buttons=buttons,
   192                                        domid='%s-form' % divid, action='#',
   192                                        domid='%s-form' % divid, action='#',
   193                                        cssstyle='display: none',
   193                                        cssstyle='display: none',
   194                                        onsubmit=onsubmit % event_data)
   194                                        onsubmit=onsubmit % event_data)
   195         self.w(tags.div(value, klass='editableField', id=divid,
   195         self.w(tags.div(value, klass='editableField', id=divid,
   196                         ondblclick=self._ondblclick % event_data))
   196                         onclick=self._onclick % event_data))
   197         return form
   197         return form
   198 
   198 
   199 
   199 
   200 class EditionFormView(FormViewMixIn, EntityView):
   200 class EditionFormView(FormViewMixIn, EntityView):
   201     """display primary entity edition form"""
   201     """display primary entity edition form"""