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() |
---|