web/views/cwproperties.py
branchstable
changeset 1870 015dfeaf1d89
parent 1865 62d3726ad8cb
child 1879 cb3466e08d81
equal deleted inserted replaced
1868:af1ae863606d 1870:015dfeaf1d89
   121 
   121 
   122         w = self.w
   122         w = self.w
   123         req = self.req
   123         req = self.req
   124         _ = req._
   124         _ = req._
   125         w(u'<h1>%s</h1>\n' % _(self.title))
   125         w(u'<h1>%s</h1>\n' % _(self.title))
   126         # we don't want this in each sub-forms XXX
       
   127         w(u'<div id="progress">%s</div>' % self.req._('validating...'))
       
   128         for label, group, form in sorted((_(g), g, f)
   126         for label, group, form in sorted((_(g), g, f)
   129                                          for g, f in mainopts.iteritems()):
   127                                          for g, f in mainopts.iteritems()):
   130             status = css_class(self._group_status(group))
   128             status = css_class(self._group_status(group))
   131             w(u'<h2 class="propertiesform">%s</h2>\n' %
   129             w(u'<h2 class="propertiesform">%s</h2>\n' %
   132             (make_togglable_link('fieldset_' + group, label.capitalize())))
   130             (make_togglable_link('fieldset_' + group, label.capitalize())))
   139                                             for g, o in groupedopts.iteritems()):
   137                                             for g, o in groupedopts.iteritems()):
   140             status = css_class(self._group_status(group))
   138             status = css_class(self._group_status(group))
   141             w(u'<h2 class="propertiesform">%s</h2>\n' %
   139             w(u'<h2 class="propertiesform">%s</h2>\n' %
   142               (make_togglable_link('fieldset_' + group, label.capitalize())))
   140               (make_togglable_link('fieldset_' + group, label.capitalize())))
   143             w(u'<div id="fieldset_%s" %s>' % (group, status))
   141             w(u'<div id="fieldset_%s" %s>' % (group, status))
   144 	    
   142 
   145 	    # create selection
   143 	    # create selection
   146 	    sorted_objects =  sorted((self.req.__('%s_%s' % (group, o)), o, f)
   144 	    sorted_objects =  sorted((self.req.__('%s_%s' % (group, o)), o, f)
   147                                            for o, f in objects.iteritems())
   145                                            for o, f in objects.iteritems())
   148 	    for label, oid, form in sorted_objects:
   146 	    for label, oid, form in sorted_objects:
   149                 w(u'''<div class="componentLink"><a href="javascript:noop();" onclick="javascript:toggleVisibility('field_%(oid)s_%(group)s')" class="componentTitle">%(label)s</a>''' % {'label':label, 'oid':oid, 'group':group})
   147                 w(u'<div class="component">')
   150                 w(u''' (<div class="openlink"><a href="javascript:noop();" onclick="javascript:closeFieldset('fieldset_%(group)s')">%(label)s</a></div>)'''
   148                 w(u'''<div class="componentLink"><a href="javascript:noop();"
   151                   % {'label':_('close all'), 'group':group})
   149                            onclick="javascript:toggleVisibility('field_%(oid)s_%(group)s')"
       
   150                            class="componentTitle">%(label)s</a>''' % {'label':label, 'oid':oid, 'group':group})
       
   151                 w(u''' (<div class="openlink"><a href="javascript:noop();"
       
   152                              onclick="javascript:openFieldset('fieldset_%(group)s')">%(label)s</a></div>)'''
       
   153                   % {'label':_('open all'), 'group':group})
   152                 w(u'</div>')
   154                 w(u'</div>')
   153                 docmsgid = '%s_%s_description' % (group, oid)
   155                 docmsgid = '%s_%s_description' % (group, oid)
   154                 doc = _(docmsgid)
   156                 doc = _(docmsgid)
   155                 if doc != docmsgid:
   157                 if doc != docmsgid:
   156                     w(u'<div class="helper">%s</div>' % html_escape(doc).capitalize())
   158                     w(u'<div class="helper">%s</div>' % html_escape(doc).capitalize())
   157 		    
   159                 w(u'</div>')
   158 		w(u'<fieldset id="field_%(oid)s_%(group)s" class="%(group)s preferences">'
   160 		w(u'<fieldset id="field_%(oid)s_%(group)s" class="%(group)s preferences hidden">'
   159                   % {'oid':oid, 'group':group})
   161                   % {'oid':oid, 'group':group})
   160 		w(form)
   162 		w(form)
   161                 w(u'</fieldset>')
   163                 w(u'</fieldset>')
   162             w(u'</div>')
   164             w(u'</div>')
   163 
   165 
   186         return entity
   188         return entity
   187 
   189 
   188     def form(self, formid, keys, splitlabel=False):
   190     def form(self, formid, keys, splitlabel=False):
   189         buttons = [SubmitButton()]
   191         buttons = [SubmitButton()]
   190         form = CompositeForm(self.req, domid=formid, action=self.build_url(),
   192         form = CompositeForm(self.req, domid=formid, action=self.build_url(),
   191                              form_buttons=buttons, 
   193                              form_buttons=buttons,
   192 			     onsubmit="return validatePrefsForm('%s')" % formid,
   194 			     onsubmit="return validatePrefsForm('%s')" % formid,
   193                              submitmsg=self.req._('changes applied'))
   195                              submitmsg=self.req._('changes applied'))
   194 	path = self.req.relative_path()
   196 	path = self.req.relative_path()
   195         if '?' in path:
   197         if '?' in path:
   196             path, params = path.split('?', 1)
   198             path, params = path.split('?', 1)
   207         if splitlabel:
   209         if splitlabel:
   208             label = key.split('.')[-1]
   210             label = key.split('.')[-1]
   209         else:
   211         else:
   210             label = key
   212             label = key
   211 	subform = EntityFieldsForm(self.req, entity=entity, set_error_url=False)
   213 	subform = EntityFieldsForm(self.req, entity=entity, set_error_url=False)
   212 	
   214 
   213         subform.append_field(PropertyValueField(name='value', label=label,
   215         subform.append_field(PropertyValueField(name='value', label=label,
   214                                                 eidparam=True))
   216                                                 eidparam=True))
   215         subform.vreg = self.vreg
   217         subform.vreg = self.vreg
   216         subform.form_add_hidden('pkey', key, eidparam=True)
   218         subform.form_add_hidden('pkey', key, eidparam=True)
   217  	subform.form_add_hidden("current-value:%s" % entity.eid,)
   219  	subform.form_add_hidden("current-value:%s" % entity.eid,)
   218         form.form_add_subform(subform)
   220         form.form_add_subform(subform)
   219         return subform
   221         return subform
   220     
   222 
   221 def is_user_prefs(cls, req, rset, row=None, col=0, **kwargs):
   223 def is_user_prefs(cls, req, rset, row=None, col=0, **kwargs):
   222     return req.user.eid == rset[row or 0][col]
   224     return req.user.eid == rset[row or 0][col]
   223 
   225 
   224 
   226 
   225 class EPropertiesForm(SystemEPropertiesForm):
   227 class EPropertiesForm(SystemEPropertiesForm):
   337         self.help = pdef['help']
   339         self.help = pdef['help']
   338         vocab = pdef['vocabulary']
   340         vocab = pdef['vocabulary']
   339         if vocab is not None:
   341         if vocab is not None:
   340             if callable(vocab):
   342             if callable(vocab):
   341                 # list() just in case its a generator function
   343                 # list() just in case its a generator function
   342                 self.choices = list(vocab(form.req)) 
   344                 self.choices = list(vocab(form.req))
   343             else:
   345             else:
   344                 self.choices = vocab
   346                 self.choices = vocab
   345             wdg = Select()
   347             wdg = Select()
   346         else:
   348         else:
   347             wdg = FIELDS[pdef['type']].widget()
   349             wdg = FIELDS[pdef['type']].widget()
   355     """specific renderer for cwproperties"""
   357     """specific renderer for cwproperties"""
   356 
   358 
   357     def open_form(self, form, values):
   359     def open_form(self, form, values):
   358 	err = '<div class="formsg"></div>'
   360 	err = '<div class="formsg"></div>'
   359 	return super(EPropertiesFormRenderer, self).open_form(form, values) + err
   361 	return super(EPropertiesFormRenderer, self).open_form(form, values) + err
   360     
   362 
   361     def _render_fields(self, fields, w, form):
   363     def _render_fields(self, fields, w, form):
   362 	for field in fields:
   364 	for field in fields:
   363 	    w(u'<div class="preffield">\n')
   365 	    w(u'<div class="preffield">\n')
   364 	    if self.display_label:
   366 	    if self.display_label:
   365 		w(u'%s' % self.render_label(form, field))
   367 		w(u'%s' % self.render_label(form, field))