[2584] | 1 | from zope.component import getMultiAdapter |
---|
| 2 | from Products.CMFCore.utils import getToolByName |
---|
| 3 | from Products.Five.browser import BrowserView |
---|
| 4 | from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile |
---|
| 5 | from Products.statusmessages.interfaces import IStatusMessage |
---|
| 6 | |
---|
| 7 | |
---|
| 8 | |
---|
| 9 | class PrefsDropDownView(BrowserView): |
---|
| 10 | """DropDown configlet. |
---|
| 11 | |
---|
| 12 | """ |
---|
| 13 | |
---|
| 14 | template = ViewPageTemplateFile('templates/prefs_dropdownmenu_edit_form.pt') |
---|
| 15 | |
---|
| 16 | def __init__(self, context, request): |
---|
| 17 | super(PrefsDropDownView, self).__init__(context, request) |
---|
| 18 | self.portal_state = getMultiAdapter((self.context, self.request), |
---|
| 19 | name='plone_portal_state') |
---|
| 20 | self.portal = self.portal_state.portal() |
---|
| 21 | self.pp = getToolByName(self.portal, 'portal_properties') |
---|
| 22 | self.dp = getattr(self.pp, 'dropdownmenu_properties', None) |
---|
| 23 | |
---|
| 24 | def menu(self): |
---|
| 25 | menu = '' |
---|
| 26 | if self.dp is not None: |
---|
| 27 | menu = self.dp.getProperty('menu', '') |
---|
| 28 | return menu |
---|
| 29 | |
---|
| 30 | def __call__(self): |
---|
| 31 | save = self.request.get('save', None) |
---|
| 32 | update = self.request.get('regenerate_menu', None) |
---|
| 33 | status = IStatusMessage(self.request) |
---|
| 34 | |
---|
| 35 | if save is not None: |
---|
| 36 | |
---|
| 37 | if self.dp is None: |
---|
| 38 | status.addStatusMessage( |
---|
| 39 | """Dropdown menu property sheet does not exist. |
---|
| 40 | Please, firstly regenerate menu before editing it.""") |
---|
| 41 | return self.template() |
---|
| 42 | |
---|
| 43 | menu = self.menu() |
---|
| 44 | if not menu: |
---|
| 45 | status.addStatusMessage( |
---|
| 46 | """Menu field does not exist in dropdown menu property sheet. |
---|
| 47 | Please, firstly regenerate menu before editing it.""") |
---|
| 48 | return self.template() |
---|
| 49 | |
---|
| 50 | self.dp.manage_changeProperties(menu=self.request.get('menu')) |
---|
| 51 | status.addStatusMessage("DropDown Menu updated.") |
---|
| 52 | return self.template() |
---|
| 53 | |
---|
| 54 | if update is not None: |
---|
| 55 | getToolByName(self.portal, 'portal_dropdownmenu').regenerateMenu() |
---|
| 56 | status.addStatusMessage("DropDown Menu regenerated.") |
---|
| 57 | |
---|
| 58 | return self.template() |
---|