source: products/quintagroup.dropdownmenu/trunk/quintagroup/dropdownmenu/browser/menu.py @ 1200

Last change on this file since 1200 was 1200, checked in by piv, 15 years ago

implement nonfolderish items functionality

  • Property svn:eol-style set to native
File size: 1.7 KB
Line 
1# -*- coding: utf-8 -*-
2from zope.interface import implements
3from zope.component import getUtility
4
5from Products.CMFPlone.browser.navtree import SitemapQueryBuilder
6from Products.CMFPlone.browser.navtree import DefaultNavtreeStrategy
7
8from plone.app.layout.navigation.interfaces import INavtreeStrategy
9from plone.app.layout.navigation.interfaces import INavigationQueryBuilder
10from plone.registry.interfaces import IRegistry
11
12from quintagroup.dropdownmenu.interfaces import IDropDownMenuSettings
13
14
15class DropDownMenuQueryBuilder(SitemapQueryBuilder):
16
17    implements(INavigationQueryBuilder)
18
19    def __init__(self, context):
20        super(DropDownMenuQueryBuilder, self).__init__(context)
21
22        # customize depth according to dropdown menu settings
23        if self._settings.content_tabs_level > 0:
24            self.query['path']['depth'] = self._settings.content_tabs_level
25        elif self.query['path'].has_key('depth'):
26            del self.query['path']['depth']
27
28        # constrain non-folderish objects if required
29        if not self._settings.show_nonfolderish_tabs:
30            self.query['is_folderish'] = True
31
32    @property
33    def _settings(self):
34        """Fetch dropdown menu settings registry"""
35        registry = getUtility(IRegistry)
36        return registry.forInterface(IDropDownMenuSettings)
37
38
39class DropDownMenuStrategy(DefaultNavtreeStrategy):
40
41    implements(INavtreeStrategy)
42
43    def __init__(self, context, view=None):
44        super(DropDownMenuStrategy, self).__init__(context, view)
45        self.bottomLevel = self._settings.content_tabs_level
46
47    @property
48    def _settings(self):
49        """Fetch dropdown menu settings registry"""
50        registry = getUtility(IRegistry)
51        return registry.forInterface(IDropDownMenuSettings)
Note: See TracBrowser for help on using the repository browser.