web/views/baseforms.py
branchtls-sprint
changeset 1084 98cd7c5cea4c
parent 1066 3cebd690a114
child 1085 dc406357f208
equal deleted inserted replaced
1083:343698c0863d 1084:98cd7c5cea4c
   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