1 | ## Controller Python Script "silo_navigation_edit" |
---|
2 | ##bind container=container |
---|
3 | ##bind context=context |
---|
4 | ##bind namespace= |
---|
5 | ##bind script=script |
---|
6 | ##bind state=state |
---|
7 | ##bind subpath=traverse_subpath |
---|
8 | ##title=Update Folder Property |
---|
9 | ##parameters= menu_ids='' |
---|
10 | # |
---|
11 | |
---|
12 | from Products.CMFCore.utils import getToolByName |
---|
13 | |
---|
14 | silo_items = [] |
---|
15 | for id in menu_ids: |
---|
16 | default_page = '' |
---|
17 | if getattr(context.aq_explicit, id, None): |
---|
18 | item = getattr(context.aq_explicit, id) |
---|
19 | else: |
---|
20 | continue |
---|
21 | if item.portal_type in ['Folder', 'Large Plone Folder', 'CMFFolder']: |
---|
22 | ids = {} |
---|
23 | for i in item.objectIds(): |
---|
24 | ids[i] = 1 |
---|
25 | pages = item.getProperty('default_page', []) |
---|
26 | if isinstance(pages, basestring): |
---|
27 | pages = [pages] |
---|
28 | for page in pages: |
---|
29 | if page and ids.has_key(page): |
---|
30 | default_page = page |
---|
31 | break |
---|
32 | if default_page == '': |
---|
33 | site_properties = getToolByName(context, 'portal_properties').site_properties |
---|
34 | for page in site_properties.getProperty('default_page', []): |
---|
35 | if page and ids.has_key(page): |
---|
36 | default_page = page |
---|
37 | break |
---|
38 | silo_items.append(id+'|'+default_page+'|'+context.REQUEST.get(id+'_title','')) |
---|
39 | if context.hasProperty('silo_items'): |
---|
40 | context.manage_changeProperties({'silo_items': silo_items}) |
---|
41 | else: |
---|
42 | context.manage_addProperty('silo_items', silo_items, type='lines') |
---|
43 | |
---|
44 | return state.set(status='success', portal_status_message='Silo Navigation property have been saved.') |
---|