[Plone-IT] Composizione Menu a 3 livelli con neteasy
ryuga
cascione a steponweb.it
Gio 12 Nov 2009 12:06:06 UTC
Ciao a tutti, forse non vi servirà cmq sia sotto il codice per comporre un
menu a tre livelli con neteasy.
In pratica dobrebbe apparire così:
____________________________________
home |cartella A(selezionata)|
|cartella B(sotto A selezionata) |cartella B2(sotto A)
cartella C(selezionata)| cartella C2
_________________________________
Mi scuso per il minidisegno che fa praticamente c....e ma spero renda
l'idea, veniamo al codice.
PATH neteasy.plone.subnavbar-1.0.0-py2.4.egg/neteasy/plone/subnavbar
FILE navbar_contents.PY
NB: IN GRASSETTO LE PARTI AGGIUNTE E/O MODIFICATE
""" neteasy.plone.subnavbar
Copyright (C) 2008-9, Jim Nelson <jim.nelson a neteasyinc.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
"""
from Products.CMFCore.utils import getToolByName
from AccessControl import ModuleSecurityInfo
modulesecurity = ModuleSecurityInfo()
modulesecurity.declarePublic('getSecondLevelList')
modulesecurity.declarePublic('getThirdLevelList')
def getSecondLevelList(context):
context = context.aq_inner
plone_utils = getToolByName(context, 'plone_utils')
# no reason to display second level nav on siteroot
if (context.meta_type == 'Plone Site'):
return {'selected':None, 'contents':[]}
# no reason to display second level nav for non-folderish content views
in the siteroot
if (not plone_utils.isStructuralFolder(context)) and
(context.aq_parent.meta_type == 'Plone Site'):
return {'selected':None, 'contents':[]}
selectedChild = context
item = context
itemparent = context.aq_parent
# iterate through the acquisition chain to get the first-level folder in
the plone site
while itemparent.meta_type != 'Plone Site':
selectedChild = item
item = itemparent
itemparent = item.aq_parent
basePath = '/'.join(item.getPhysicalPath())
catalog = getToolByName(context, 'portal_catalog')
query = {}
query['sort_on'] = 'getObjPositionInParent'
query['path'] = {'query' : basePath, 'depth' : 1}
searchresults = catalog.searchResults(query)
results = []
for searchitem in searchresults:
obj = searchitem.getObject()
if not obj.exclude_from_nav() and (obj.id != item.defaultView()):
results.append(obj)
return {'selected':selectedChild, 'contents':results}
def getThirdLevelList(context):
context = context.aq_inner
plone_utils = getToolByName(context, 'plone_utils')
selectedChild = context
item = context
itemparent = context.aq_parent
basePath = '/'.join(itemparent.getPhysicalPath())
catalog = getToolByName(context, 'portal_catalog')
query = {}
query['sort_on'] = 'getObjPositionInParent'
query['path'] = {'query' : basePath, 'depth' : 2}
searchresults = catalog.searchResults(query)
results = []
for searchitem in searchresults:
obj = searchitem.getObject()
if not obj.exclude_from_nav() and (obj.id != item.defaultView()):
if (selectedChild == obj.aq_parent or obj.aq_parent ==
itemparent):
if(obj.meta_type == 'ATFolder'):
if(obj.aq_parent.meta_type == 'ATFolder'):
if((obj.aq_parent.aq_parent.aq_parent).meta_type == 'Plone
Site'):
results.append(obj)
return {'selected':selectedChild, 'contents':results}
modulesecurity.apply(globals())
spero possa servire a qualcuno :-P
ciao ryuga
--
View this message in context: http://n2.nabble.com/Composizione-Menu-a-3-livelli-con-neteasy-tp3992361p3992361.html
Sent from the Plone - Italy mailing list archive at Nabble.com.
Maggiori informazioni sulla lista
Plone-IT