117 |
117 |
118 class ClickAndEditForm(FormMixIn, EntityView): |
118 class ClickAndEditForm(FormMixIn, EntityView): |
119 id = 'reledit' |
119 id = 'reledit' |
120 __select__ = match_kwargs('rtype') |
120 __select__ = match_kwargs('rtype') |
121 |
121 |
122 #FIXME editableField class could be toggleable from userprefs |
122 # FIXME editableField class could be toggleable from userprefs |
123 |
123 |
124 EDITION_BODY = ''' |
|
125 <div class="editableField" id="%(divid)s" |
|
126 ondblclick="showInlineEditionForm(%(eid)s, '%(rtype)s', '%(divid)s')">%(value)s</div> |
|
127 <form style="display: none;" onsubmit="return inlineValidateForm('%(divid)s-form', '%(rtype)s', '%(eid)s', '%(divid)s', %(reload)s);" id="%(divid)s-form" action="#"> |
|
128 <fieldset> |
|
129 <input type="hidden" name="eid" value="%(eid)s" /> |
|
130 <input type="hidden" name="__maineid" value="%(eid)s" /> |
|
131 <input type="hidden" name="__type:%(eid)s" value="%(etype)s" /> |
|
132 %(attrform)s |
|
133 </fieldset> |
|
134 <div class="buttonbar"> |
|
135 %(ok)s |
|
136 %(cancel)s |
|
137 </div> |
|
138 </form> |
|
139 ''' |
|
140 def cell_call(self, row, col, rtype=None, role='subject', reload=False): |
124 def cell_call(self, row, col, rtype=None, role='subject', reload=False): |
141 entity = self.entity(row, col) |
125 entity = self.entity(row, col) |
142 if getattr(entity, rtype) is None: |
126 if getattr(entity, rtype) is None: |
143 value = self.req._('not specified') |
127 value = self.req._('not specified') |
144 else: |
128 else: |
148 return |
132 return |
149 self.req.add_js( ('cubicweb.ajax.js', 'cubicweb.edition.js') ) |
133 self.req.add_js( ('cubicweb.ajax.js', 'cubicweb.edition.js') ) |
150 eid = entity.eid |
134 eid = entity.eid |
151 edit_key = make_uid('%s-%s' % (rtype, eid)) |
135 edit_key = make_uid('%s-%s' % (rtype, eid)) |
152 divid = 'd%s' % edit_key |
136 divid = 'd%s' % edit_key |
153 widget = entity.get_widget(rtype, 'subject') |
137 reload = dumps(reload) |
154 eschema = entity.e_schema |
138 buttons = [tags.input(klass="validateButton", type="submit", name="__action_apply", |
155 attrform = widget.edit_render(entity, useid='i%s' % edit_key) |
139 value=self.req._(stdmsgs.BUTTON_OK), tabindex=self.req.next_tabindex()), |
156 ok = (u'<input class="validateButton" type="submit" name="__action_apply" value="%s" tabindex="%s" />' |
140 tags.input(klass="validateButton", type="button", |
157 % (self.req._(stdmsgs.BUTTON_OK), self.req.next_tabindex())) |
141 value=self.req._(stdmsgs.BUTTON_CANCEL), |
158 cancel = (u'<input class="validateButton" type="button" ' |
142 onclick="cancelInlineEdit(%s,\'%s\',\'%s\')" % (eid, rtype, divid), |
159 'value="%s" onclick="cancelInlineEdit(%s, \'%s\', \'%s\')" tabindex="%s" />' |
143 tabindex=self.req.next_tabindex())] |
160 % (self.req._(stdmsgs.BUTTON_CANCEL), eid, rtype, divid, |
144 form = self.vreg.select_object('forms', 'edition', self.req, self.rset, row=row, col=col, |
161 self.req.next_tabindex())) |
145 entity=entity, domid='%s-form' % divid, action='#', |
162 self.w(self.EDITION_BODY % { |
146 cssstyle='display: none', buttons=buttons, |
163 'eid': eid, |
147 onsubmit="return inlineValidateForm('%(divid)s-form', '%(rtype)s', '%(eid)s', '%(divid)s', %(reload)s);" % locals()) |
164 'rtype': rtype, |
148 renderer = FormRenderer(display_label=False, display_help=False, |
165 'etype': entity.e_schema, |
149 display_fields=(rtype,), button_bar_class='buttonbar') |
166 'attrform': attrform, |
150 self.w(tags.div(value, klass='editableField', id=divid, |
167 'action' : self.build_url('edit'), # NOTE: actually never gets called |
151 ondblclick="showInlineEditionForm(%(eid)s, '%(rtype)s', '%(divid)s')" % locals())) |
168 'ok': ok, |
152 self.w(form.render(renderer=renderer) |
169 'cancel': cancel, |
|
170 'value': value, |
|
171 'reload': dumps(reload), |
|
172 'divid': divid, |
|
173 }) |
|
174 |
153 |
175 |
154 |
176 class EditionForm(FormMixIn, EntityView): |
155 class EditionForm(FormMixIn, EntityView): |
177 """primary entity edition form |
156 """primary entity edition form |
178 |
157 |