[1197] | 1 | # -*- coding: utf-8 -*- |
---|
| 2 | from zope.interface import implements |
---|
| 3 | |
---|
| 4 | from Products.CMFPlone.browser.navtree import SitemapQueryBuilder |
---|
| 5 | from Products.CMFPlone.browser.navtree import DefaultNavtreeStrategy |
---|
| 6 | |
---|
| 7 | from plone.app.layout.navigation.interfaces import INavtreeStrategy |
---|
| 8 | from plone.app.layout.navigation.interfaces import INavigationQueryBuilder |
---|
| 9 | |
---|
[1319] | 10 | from quintagroup.dropdownmenu.util import getDropDownMenuSettings |
---|
[1197] | 11 | |
---|
| 12 | |
---|
| 13 | class DropDownMenuQueryBuilder(SitemapQueryBuilder): |
---|
| 14 | |
---|
| 15 | implements(INavigationQueryBuilder) |
---|
| 16 | |
---|
| 17 | def __init__(self, context): |
---|
| 18 | super(DropDownMenuQueryBuilder, self).__init__(context) |
---|
[1319] | 19 | self.context = context |
---|
[1200] | 20 | |
---|
| 21 | # customize depth according to dropdown menu settings |
---|
[1197] | 22 | if self._settings.content_tabs_level > 0: |
---|
| 23 | self.query['path']['depth'] = self._settings.content_tabs_level |
---|
[3151] | 24 | elif 'depth' in self.query['path']: |
---|
[1197] | 25 | del self.query['path']['depth'] |
---|
| 26 | |
---|
[1200] | 27 | # constrain non-folderish objects if required |
---|
| 28 | if not self._settings.show_nonfolderish_tabs: |
---|
| 29 | self.query['is_folderish'] = True |
---|
| 30 | |
---|
[1197] | 31 | @property |
---|
| 32 | def _settings(self): |
---|
| 33 | """Fetch dropdown menu settings registry""" |
---|
[1319] | 34 | return getDropDownMenuSettings(self.context) |
---|
[1197] | 35 | |
---|
| 36 | |
---|
| 37 | class DropDownMenuStrategy(DefaultNavtreeStrategy): |
---|
| 38 | |
---|
| 39 | implements(INavtreeStrategy) |
---|
| 40 | |
---|
| 41 | def __init__(self, context, view=None): |
---|
| 42 | super(DropDownMenuStrategy, self).__init__(context, view) |
---|
| 43 | self.bottomLevel = self._settings.content_tabs_level |
---|
| 44 | |
---|
| 45 | @property |
---|
| 46 | def _settings(self): |
---|
| 47 | """Fetch dropdown menu settings registry""" |
---|
[1319] | 48 | return getDropDownMenuSettings(self.context) |
---|