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

Last change on this file since 3511 was 3511, checked in by kroman0, 12 years ago

Fixed 'no record' error

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