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""" |