web/widgets.py
branchtls-sprint
changeset 1101 0c067de38e46
parent 1016 26387b836099
child 1107 961a478593a5
equal deleted inserted replaced
1100:7ca89f4468e4 1101:0c067de38e46
   408             dvalue = html_escape(dvalue)
   408             dvalue = html_escape(dvalue)
   409         if entity.use_fckeditor(self.name):
   409         if entity.use_fckeditor(self.name):
   410             entity.req.fckeditor_config()
   410             entity.req.fckeditor_config()
   411             if with_format:
   411             if with_format:
   412                 if entity.has_eid():
   412                 if entity.has_eid():
   413                     format = entity.format(self.name)
   413                     format = entity.attribute_metadata(self.name, 'format')
   414                 else:
   414                 else:
   415                     format = ''
   415                     format = ''
   416                 frname = eid_param(self.name + '_format', entity.eid)
   416                 frname = eid_param(self.name + '_format', entity.eid)
   417                 hidden = u'<input type="hidden" name="edits-%s" value="%s"/>\n'\
   417                 hidden = u'<input type="hidden" name="edits-%s" value="%s"/>\n'\
   418                          '<input type="hidden" name="%s" value="text/html"/>\n' % (
   418                          '<input type="hidden" name="%s" value="text/html"/>\n' % (
   419                     frname, format, frname)
   419                     frname, format, frname)
   420             return u'%s<textarea cubicweb:type="wysiwyg" onkeypress="autogrow(this)" name="%s" %s>%s</textarea>' % (
   420             return u'%s<textarea cubicweb:type="wysiwyg" onkeypress="autogrow(this)" name="%s" %s>%s</textarea>' % (
   421                 hidden, self.rname, self.format_attrs(), dvalue)
   421                 hidden, self.rname, self.format_attrs(), dvalue)
   422         if with_format and entity.has_format(self.name):
   422         if with_format and entity.has_metadata(self.name, 'format'):
   423             fmtwdg = entity.get_widget(self.name + '_format')
   423             fmtwdg = entity.get_widget(self.name + '_format')
   424             fmtwdgstr = fmtwdg.edit_render(entity, tabindex=self.attrs['tabindex'])
   424             fmtwdgstr = fmtwdg.edit_render(entity, tabindex=self.attrs['tabindex'])
   425             self.attrs['tabindex'] = entity.req.next_tabindex()
   425             self.attrs['tabindex'] = entity.req.next_tabindex()
   426         else:
   426         else:
   427             fmtwdgstr = ''
   427             fmtwdgstr = ''
   465 class FileWidget(Widget):
   465 class FileWidget(Widget):
   466     need_multipart = True
   466     need_multipart = True
   467     def _file_wdg(self, entity):
   467     def _file_wdg(self, entity):
   468         wdgs = [u'<input type="file" name="%s" %s/>' % (self.rname, self.format_attrs())]
   468         wdgs = [u'<input type="file" name="%s" %s/>' % (self.rname, self.format_attrs())]
   469         req = entity.req
   469         req = entity.req
   470         if entity.has_format(self.name) or entity.has_text_encoding(self.name):
   470         if entity.has_metadata(self.name, 'format') or entity.has_metadata(self.name, 'encoding'):
   471             divid = '%s-%s-advanced' % (self.name, entity.eid)
   471             divid = '%s-%s-advanced' % (self.name, entity.eid)
   472             wdgs.append(u'<a href="%s" title="%s"><img src="%s" alt="%s"/></a>' %
   472             wdgs.append(u'<a href="%s" title="%s"><img src="%s" alt="%s"/></a>' %
   473                         (html_escape(toggle_action(divid)),
   473                         (html_escape(toggle_action(divid)),
   474                          req._('show advanced fields'),
   474                          req._('show advanced fields'),
   475                          html_escape(req.build_url('data/puce_down.png')),
   475                          html_escape(req.build_url('data/puce_down.png')),
   507                 ', or edit file content online with the widget below.')
   507                 ', or edit file content online with the widget below.')
   508         return msg
   508         return msg
   509     
   509     
   510     def _edit_render(self, entity):
   510     def _edit_render(self, entity):
   511         wdgs = [self._file_wdg(entity)]
   511         wdgs = [self._file_wdg(entity)]
   512         if entity.format(self.name) in ('text/plain', 'text/html', 'text/rest'):
   512         if entity.attribute_metadata(self.name, 'format') in ('text/plain', 'text/html', 'text/rest'):
   513             msg = self._edit_msg(entity)
   513             msg = self._edit_msg(entity)
   514             wdgs.append(u'<p><b>%s</b></p>' % msg)
   514             wdgs.append(u'<p><b>%s</b></p>' % msg)
   515             twdg = TextWidget(self.vreg, self.subjtype, self.rschema, self.objtype)
   515             twdg = TextWidget(self.vreg, self.subjtype, self.rschema, self.objtype)
   516             twdg.rname = self.rname
   516             twdg.rname = self.rname
   517             data = getattr(entity, self.name)
   517             data = getattr(entity, self.name)
   518             if data:
   518             if data:
   519                 encoding = entity.text_encoding(self.name)
   519                 encoding = entity.attribute_metadata(self.name, 'encoding')
   520                 try:
   520                 try:
   521                     entity[self.name] = unicode(data.getvalue(), encoding)
   521                     entity[self.name] = unicode(data.getvalue(), encoding)
   522                 except UnicodeError:
   522                 except UnicodeError:
   523                     pass
   523                     pass
   524                 else:
   524                 else: