[1205] | 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 | |
---|
[1180] | 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 | |
---|
[1205] | 18 | def applyChanges(self, data): |
---|
| 19 | """To save a few fields into portal_properties tool""" |
---|
| 20 | result = super(DropDownMenuSettingsEditForm, self).applyChanges(data) |
---|
[3153] | 21 | self._settings(data['show_content_tabs'], |
---|
| 22 | data['show_nonfolderish_tabs']) |
---|
[1205] | 23 | return result |
---|
[1180] | 24 | |
---|
[1205] | 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]) |
---|
[3151] | 30 | self._overrideValue(self.widgets['show_nonfolderish_tabs'], |
---|
| 31 | not conf[1]) |
---|
[1205] | 32 | |
---|
| 33 | def _overrideValue(self, widget, value): |
---|
| 34 | if value: |
---|
[2630] | 35 | widget.value = ['selected'] |
---|
| 36 | |
---|
[1205] | 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', |
---|
[3151] | 46 | 'value': term.token, 'label': label, 'checked': checked}) |
---|
[1205] | 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 | |
---|
[1180] | 67 | class DropDownMenuSettingsControlPanel(controlpanel.ControlPanelFormWrapper): |
---|
| 68 | form = DropDownMenuSettingsEditForm |
---|