Changeset 1197 in products


Ignore:
Timestamp:
Jul 31, 2009 11:38:15 AM (15 years ago)
Author:
piv
Message:

basically implement content tabs functionality, add show_icons setting

Location:
quintagroup.dropdownmenu/trunk/quintagroup/dropdownmenu
Files:
1 added
1 deleted
5 edited

Legend:

Unmodified
Added
Removed
  • quintagroup.dropdownmenu/trunk/quintagroup/dropdownmenu/browser/configure.zcml

    r1194 r1197  
    2222      /> 
    2323 
     24  <class class=".menu.DropDownMenuQueryBuilder"> 
     25    <allow interface="plone.app.layout.navigation.interfaces.INavigationQueryBuilder" /> 
     26  </class> 
     27 
     28  <class class=".menu.DropDownMenuStrategy"> 
     29        <allow interface="plone.app.layout.navigation.interfaces.INavtreeStrategy" /> 
     30  </class> 
     31 
     32  <adapter 
     33      for="* *" 
     34      factory=".menu.DropDownMenuStrategy" 
     35      provides="plone.app.layout.navigation.interfaces.INavtreeStrategy" /> 
     36 
    2437  <!-- Returns javascript which makes IE<7 understand hover for all html elements --> 
    2538  <browser:view 
  • quintagroup.dropdownmenu/trunk/quintagroup/dropdownmenu/browser/templates/sections_recurse.pt

    r1194 r1197  
    2222                       title node/Description; 
    2323                       class string:$item_class${li_class}${li_extr_class}${li_folder_class}"> 
    24         <img tal:replace="structure item_icon/html_tag" /> 
     24        <img tal:condition="view/conf/show_icons" 
     25             tal:replace="structure item_icon/html_tag" /> 
    2526        <span tal:content="node/Title">Selected Item Title</span> 
    2627    </a> 
  • quintagroup.dropdownmenu/trunk/quintagroup/dropdownmenu/browser/viewlets.py

    r1194 r1197  
    22from Acquisition import aq_inner 
    33 
    4 from zope.component import getMultiAdapter, queryUtility 
     4from zope.component import getMultiAdapter, getUtility 
    55 
    66from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile 
     
    1111from plone.memoize.instance import memoize 
    1212from plone.app.layout.viewlets import common 
     13from plone.app.layout.navigation.navtree import buildFolderTree 
     14from plone.app.layout.navigation.interfaces import INavtreeStrategy 
     15from plone.app.layout.navigation.interfaces import INavigationQueryBuilder 
    1316from plone.registry.interfaces import IRegistry 
    1417 
    1518from quintagroup.dropdownmenu.interfaces import IDropDownMenuSettings 
     19from quintagroup.dropdownmenu.browser.menu import DropDownMenuQueryBuilder 
    1620 
    1721 
     
    2933        self.conf = conf = self._settings() 
    3034        self.tool = getToolByName(context, 'portal_actions') 
     35 
     36        #import pdb;pdb.set_trace() 
    3137 
    3238        # fetch actions-based tabs? 
     
    7985            if level <= self.conf.actions_tabs_level: 
    8086                # try to find out appropriate subcategory 
    81                 subcat_id = self.conf.nested_category_prefix + info['id'] + \ 
    82                          self.conf.nested_category_sufix 
     87                subcat_id = info['id'] + self.conf.nested_category_sufix 
     88                if self.conf.nested_category_prefix is not None: 
     89                    subcat_id = self.conf.nested_category_prefix + subcat_id 
    8390                if subcat_id in category.objectIds(): 
    8491                    subcat = category._getOb(subcat_id) 
     
    122129    def _content_tabs(self): 
    123130        """Return tree of tabs based on content structure""" 
    124         return [] 
     131        # TODO: check currentItem functionality 
     132        context = aq_inner(self.context) 
     133 
     134        queryBuilder = DropDownMenuQueryBuilder(context) 
     135        strategy = getMultiAdapter((context, None), INavtreeStrategy) 
     136        # XXX This works around a bug in plone.app.portlets which was 
     137        # fixed in http://dev.plone.org/svn/plone/changeset/18836 
     138        # When a release with that fix is made this workaround can be 
     139        # removed and the plone.app.portlets requirement in setup.py 
     140        # be updated. 
     141        if strategy.rootPath is not None and strategy.rootPath.endswith("/"): 
     142            strategy.rootPath = strategy.rootPath[:-1] 
     143 
     144        return buildFolderTree(context, obj=context, query=queryBuilder(), 
     145                               strategy=strategy).get('children', []) 
    125146 
    126147    @memoize 
    127148    def _settings(self): 
    128149        """Fetch dropdown menu settings registry""" 
    129         registry = queryUtility(IRegistry) 
     150        registry = getUtility(IRegistry) 
    130151        return registry.forInterface(IDropDownMenuSettings) 
    131152 
  • quintagroup.dropdownmenu/trunk/quintagroup/dropdownmenu/interfaces.py

    r1194 r1197  
    1717    configuration registry and obtainable via plone.registry. 
    1818    """ 
    19      
     19 
     20    show_icons = schema.Bool( 
     21        title=_(u"Show tabs icons"), 
     22        description=_(u"Use this setting to enable or disable icons for menu " 
     23                      u"items."), 
     24        default=False) 
     25 
    2026    show_content_tabs = schema.Bool( 
    2127        title=_(u"Show content tabs"), 
     
    5763                      u"nested menu stops. 0 means no limit. 1 only includes " 
    5864                      u"the root folder."), 
    59         default=0, 
    60         required=False) 
     65        default=0) 
    6166 
    6267    actions_category = schema.TextLine( 
  • quintagroup.dropdownmenu/trunk/quintagroup/dropdownmenu/tests/test_controlpanel.py

    r1181 r1197  
    2727        self.failUnless('dropdownmenu' in [a.getAction(self)['id'] 
    2828                            for a in self.controlpanel.listActions()]) 
     29 
     30    def test_show_icons(self): 
     31        # Check show_icons record 
     32        show_icons = self.registry.records[IPREFIX+'show_icons'] 
     33 
     34        self.failUnless('show_icons' in IDropDownMenuSettings) 
     35        self.assertEquals(self.registry[IPREFIX+'show_icons'], False) 
    2936 
    3037    def test_show_content_tabs(self): 
Note: See TracChangeset for help on using the changeset viewer.