source: products/quintagroup.dropdownmenu/trunk/quintagroup/dropdownmenu/browser/controlpanel.py @ 2630

Last change on this file since 2630 was 2630, checked in by fenix, 14 years ago

fixed bug in checkbox widget overrides.

  • Property svn:eol-style set to native
File size: 2.8 KB
Line 
1# -*- coding: utf-8 -*-
2from zope.i18n import translate
3from zope.schema.interfaces import ITitledTokenizedTerm
4
5from Products.CMFCore.utils import getToolByName
6
7from plone.app.registry.browser import controlpanel
8
9from quintagroup.dropdownmenu.interfaces import IDropDownMenuSettings, _
10
11
12class DropDownMenuSettingsEditForm(controlpanel.RegistryEditForm):
13
14    schema = IDropDownMenuSettings
15    label = _(u"DropDown Menu settings")
16    description = _(u"Please enter the options specified")
17
18    def applyChanges(self, data):
19        """To save a few fields into portal_properties tool"""
20        result = super(DropDownMenuSettingsEditForm, self).applyChanges(data)
21        dummy = self._settings(data['show_content_tabs'],
22                               data['show_nonfolderish_tabs'])
23        return result
24
25    def update(self):
26        """Also get values for a few fields from portal_properties tool"""
27        super(DropDownMenuSettingsEditForm, self).update()
28        conf = self._settings()
29        self._overrideValue(self.widgets['show_content_tabs'], not conf[0])
30        self._overrideValue(self.widgets['show_nonfolderish_tabs'], not conf[1])
31
32    def _overrideValue(self, widget, value):
33        if value:
34            widget.value = ['selected']
35
36        widget.items = []
37        for count, term in enumerate(widget.terms):
38            checked = widget.isChecked(term)
39            id = '%s-%i' % (widget.id, count)
40            label = term.token
41            if ITitledTokenizedTerm.providedBy(term):
42                label = translate(term.title, context=widget.request,
43                                  default=term.title)
44            widget.items.append({'id': id, 'name': widget.name + ':list',
45                'value':term.token, 'label':label, 'checked':checked})
46
47    def _settings(self, folder=None, nonfolderish=None):
48        """Return portal_properties settings"""
49        props = [True, True]
50        prop_tool = getToolByName(self.context, 'portal_properties')
51        if 'site_properties' in prop_tool.objectIds():
52            sheet = prop_tool._getOb('site_properties')
53            if sheet.hasProperty('disable_folder_sections'):
54                if folder is not None:
55                    sheet.manage_changeProperties(
56                        disable_folder_sections=not folder)
57                props[0] = sheet.getProperty('disable_folder_sections')
58            if sheet.hasProperty('disable_nonfolderish_sections'):
59                if nonfolderish is not None:
60                    sheet.manage_changeProperties(
61                        disable_nonfolderish_sections=not nonfolderish)
62                props[1] = sheet.getProperty('disable_nonfolderish_sections')
63        return props
64
65
66class DropDownMenuSettingsControlPanel(controlpanel.ControlPanelFormWrapper):
67    form = DropDownMenuSettingsEditForm
Note: See TracBrowser for help on using the repository browser.