1 | # -*- coding: utf-8 -*- |
---|
2 | from zope.i18n import translate |
---|
3 | from zope.schema.interfaces import ITitledTokenizedTerm |
---|
4 | |
---|
5 | from Products.CMFCore.utils import getToolByName |
---|
6 | |
---|
7 | from plone.app.registry.browser import controlpanel |
---|
8 | |
---|
9 | from quintagroup.dropdownmenu.interfaces import IDropDownMenuSettings, _ |
---|
10 | |
---|
11 | |
---|
12 | class 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'], |
---|
31 | not conf[1]) |
---|
32 | |
---|
33 | def _overrideValue(self, widget, value): |
---|
34 | if value: |
---|
35 | widget.value = ['selected'] |
---|
36 | |
---|
37 | widget.items = [] |
---|
38 | for count, term in enumerate(widget.terms): |
---|
39 | checked = widget.isChecked(term) |
---|
40 | id = '%s-%i' % (widget.id, count) |
---|
41 | label = term.token |
---|
42 | if ITitledTokenizedTerm.providedBy(term): |
---|
43 | label = translate(term.title, context=widget.request, |
---|
44 | default=term.title) |
---|
45 | widget.items.append({'id': id, 'name': widget.name + ':list', |
---|
46 | 'value': term.token, 'label': label, 'checked': checked}) |
---|
47 | |
---|
48 | def _settings(self, folder=None, nonfolderish=None): |
---|
49 | """Return portal_properties settings""" |
---|
50 | props = [True, True] |
---|
51 | prop_tool = getToolByName(self.context, 'portal_properties') |
---|
52 | if 'site_properties' in prop_tool.objectIds(): |
---|
53 | sheet = prop_tool._getOb('site_properties') |
---|
54 | if sheet.hasProperty('disable_folder_sections'): |
---|
55 | if folder is not None: |
---|
56 | sheet.manage_changeProperties( |
---|
57 | disable_folder_sections=not folder) |
---|
58 | props[0] = sheet.getProperty('disable_folder_sections') |
---|
59 | if sheet.hasProperty('disable_nonfolderish_sections'): |
---|
60 | if nonfolderish is not None: |
---|
61 | sheet.manage_changeProperties( |
---|
62 | disable_nonfolderish_sections=not nonfolderish) |
---|
63 | props[1] = sheet.getProperty('disable_nonfolderish_sections') |
---|
64 | return props |
---|
65 | |
---|
66 | |
---|
67 | class DropDownMenuSettingsControlPanel(controlpanel.ControlPanelFormWrapper): |
---|
68 | form = DropDownMenuSettingsEditForm |
---|