282 _('boxes') |
282 _('boxes') |
283 _('components') |
283 _('components') |
284 _('contentnavigation') |
284 _('contentnavigation') |
285 |
285 |
286 |
286 |
287 def make_togglable_link(nodeid, label, cookiename, cookievalue): |
287 def make_togglable_link(nodeid, label, cookiename): |
288 """builds a HTML link that switches the visibility & remembers it""" |
288 """builds a HTML link that switches the visibility & remembers it""" |
289 action = u"javascript: toggle_and_remember_visibility('%s', '%s', '%s')" % \ |
289 action = u"javascript: toggle_and_remember_visibility('%s', '%s')" % \ |
290 (nodeid, cookiename, cookievalue) |
290 (nodeid, cookiename) |
291 return u'<a href="%s">%s</a>' % (action, label) |
291 return u'<a href="%s">%s</a>' % (action, label) |
|
292 |
|
293 def css_class(someclass): |
|
294 return someclass and 'class="%s"' % someclass or '' |
292 |
295 |
293 class SystemEpropertiesForm(FormMixIn, StartupView): |
296 class SystemEpropertiesForm(FormMixIn, StartupView): |
294 controller = 'edit' |
297 controller = 'edit' |
295 id = 'systemepropertiesform' |
298 id = 'systemepropertiesform' |
296 title = _('site configuration') |
299 title = _('site configuration') |
302 |
305 |
303 def url(self): |
306 def url(self): |
304 """return the url associated with this view. We can omit rql here""" |
307 """return the url associated with this view. We can omit rql here""" |
305 return self.build_url('view', vid=self.id) |
308 return self.build_url('view', vid=self.id) |
306 |
309 |
307 def _cookie_name_from_group(self, group): |
310 def _cookie_name(self, somestr): |
308 return str('%s_property_%s' % (self.config.appid, group)) |
311 return str('%s_property_%s' % (self.config.appid, somestr)) |
309 |
312 |
310 def _group_status(self, group, default=u'hidden'): |
313 def _group_status(self, group, default=u'hidden'): |
311 cookies = self.req.get_cookie() |
314 cookies = self.req.get_cookie() |
312 cookiename = self._cookie_name_from_group(group) |
315 cookiename = self._cookie_name(group) |
313 cookie = cookies.get(cookiename) |
316 cookie = cookies.get(cookiename) |
314 if cookie is None: |
317 if cookie is None: |
315 cookies[cookiename] = default |
318 cookies[cookiename] = default |
316 self.req.set_cookie(cookies, cookiename, maxage=None) |
319 self.req.set_cookie(cookies, cookiename, maxage=None) |
317 status = default |
320 status = default |
349 _ = req._ |
352 _ = req._ |
350 w(u'<h1>%s</h1>\n' % _(self.title)) |
353 w(u'<h1>%s</h1>\n' % _(self.title)) |
351 w(self.error_message()) |
354 w(self.error_message()) |
352 for label, group, form in sorted((_(g), g, f) |
355 for label, group, form in sorted((_(g), g, f) |
353 for g, f in mainopts.iteritems()): |
356 for g, f in mainopts.iteritems()): |
354 status = self._group_status(group) #hidden, or not ? |
357 status = css_class(self._group_status(group)) #'hidden' (collapsed), or '' (open) ? |
355 w(u'<h2 class="propertiesform">%s</h2>\n' % |
358 w(u'<h2 class="propertiesform">%s</h2>\n' % |
356 (make_togglable_link('fieldset_' + group, label, |
359 (make_togglable_link('fieldset_' + group, label, |
357 self._cookie_name_from_group(group), status))) |
360 self._cookie_name(group)))) |
358 statusclass = status and 'class="%s"' % status or '' |
361 w(u'<div id="fieldset_%s" %s>' % (group, status)) |
359 w(u'<div id="fieldset_%s" %s>' % (group, statusclass)) |
|
360 w(u'<fieldset class="subentity">') |
362 w(u'<fieldset class="subentity">') |
361 w(form) |
363 w(form) |
362 w(u'</fieldset></div>') |
364 w(u'</fieldset></div>') |
363 for label, group, objects in sorted((_(g), g, o) |
365 for label, group, objects in sorted((_(g), g, o) |
364 for g, o in groupedopts.iteritems()): |
366 for g, o in groupedopts.iteritems()): |
365 status = self._group_status(group) |
367 status = css_class(self._group_status(group)) |
366 w(u'<h2 class="propertiesform">%s</h2>\n' % |
368 w(u'<h2 class="propertiesform">%s</h2>\n' % |
367 (make_togglable_link('fieldset_' + group, label, |
369 (make_togglable_link('fieldset_' + group, label, |
368 self._cookie_name_from_group(group), status))) |
370 self._cookie_name(group)))) |
369 statusclass = status and 'class="%s"' % status or '' |
371 w(u'<div id="fieldset_%s" %s>' % (group, status)) |
370 w(u'<div id="fieldset_%s" %s>' % (group, statusclass)) |
|
371 for label, oid, form in sorted((self.req.__('%s_%s' % (group, o)), o, f) |
372 for label, oid, form in sorted((self.req.__('%s_%s' % (group, o)), o, f) |
372 for o, f in objects.iteritems()): |
373 for o, f in objects.iteritems()): |
373 w(u'<fieldset class="subentity">') |
374 w(u'<fieldset class="subentity">') |
374 w(u'<legend class="componentTitle">%s</legend>\n' % label) |
375 w(u'<legend class="componentTitle">%s</legend>\n' % label) |
375 docmsgid = '%s_%s_description' % (group, oid) |
376 docmsgid = '%s_%s_description' % (group, oid) |