Author: jmorliaguet Date: Tue Apr 11 21:55:10 2006 New Revision: 2823 Added: cpsskins/branches/jmo-perspectives/standard/ds/menuitem.py - copied, changed from r2820, cpsskins/branches/jmo-perspectives/standard/ds/item.py cpsskins/branches/jmo-perspectives/standard/ds/menuitems.py (contents, props changed) Removed: cpsskins/branches/jmo-perspectives/standard/ds/item.py cpsskins/branches/jmo-perspectives/standard/ds/items.py Modified: cpsskins/branches/jmo-perspectives/doc/portlet-rendering.txt cpsskins/branches/jmo-perspectives/elements/configure.zcml cpsskins/branches/jmo-perspectives/standard/ds/README.txt cpsskins/branches/jmo-perspectives/standard/ds/configure.zcml cpsskins/branches/jmo-perspectives/standard/filters/widget/widgets.zcml cpsskins/branches/jmo-perspectives/standard/portlets/actions/configure.zcml cpsskins/branches/jmo-perspectives/standard/portlets/actions/portlet.py cpsskins/branches/jmo-perspectives/standard/portlets/breadcrumbs/configure.zcml cpsskins/branches/jmo-perspectives/standard/portlets/breadcrumbs/portlet.py cpsskins/branches/jmo-perspectives/standard/portlets/custom/configure.zcml cpsskins/branches/jmo-perspectives/standard/portlets/dummy/configure.zcml cpsskins/branches/jmo-perspectives/standard/portlets/image/configure.zcml cpsskins/branches/jmo-perspectives/standard/portlets/macroslot/configure.zcml cpsskins/branches/jmo-perspectives/tests/test_ds.py Log:
- doc update - renamed 'Item' as 'MenuItem', etc. Modified: cpsskins/branches/jmo-perspectives/doc/portlet-rendering.txt ============================================================================== --- cpsskins/branches/jmo-perspectives/doc/portlet-rendering.txt (original) +++ cpsskins/branches/jmo-perspectives/doc/portlet-rendering.txt Tue Apr 11 21:55:10 2006 @@ -11,40 +11,58 @@ >>> from zope.publisher.interfaces import IRequest >>> request = TestRequest() -The dummy portlet is an example implementation of a portlet. +Portlets use a context info structure to transmit data further down in the +rendering chain. This structure is created by the page renderer but since +there is no page renderer in this example, we create a fake info structure: + + >>> from cpsskins.browser.rendering.context import ContextInfo + >>> info = ContextInfo({'data': None, 'metadata': None}) + >>> info.globals = ContextInfo({'request': request}) + +Portlets +-------- + +Portlets are the first elements in the rendering chain, they are content +providers. They can provide both unstructured data (HTML markup) and +structured data (data structures implementing specific data schemas). + +The dummy portlet is an example implementation of a portlet which provides +HTML markup: >>> from cpsskins.standard.portlets.dummy.portlet import Dummy \ ... as DummyPortlet >>> portlet = DummyPortlet(title=u'Example portlet', ... text=u'Dummy text.') - >>> portlet.title - u'Example portlet' +To get HTML markup from the portlet we pass the info structure to it: -The rendering of a portlet is done in three steps -------------------------------------------------- + >>> portlet(info) + u'Dummy text.' -1) a portlet has some data to display, called the 'Display Data'. - it corresponds to the model in the Model-View-Controller paradigm. +the portlet can also modify the info structure that it receives, however in +the case of the Dummy portlet the info structure is left unchanged: - to obtain data from the portlet the __call__() method is used: + >>> info.data, info.metadata = None, None - >>> from cpsskins.browser.rendering.context import ContextInfo - >>> info = ContextInfo({'data': None, 'metadata': None}) - >>> info.globals = ContextInfo({'request': request}) - >>> portlet(info=info) - u'Dummy text.' +Rendering steps +--------------- + +A portlet is rendered in three steps: + +1) a portlet has some data to display, called the 'Display Data'. + it corresponds to the model in the Model-View-Controller paradigm. + + the display data can be for instance: - the actual content of the display data is either: + - a list of menu items - - a list of items (items.Items, item.Item) + >>> from cpsskins.standard.ds.menuitems import MenuItems + >>> from cpsskins.standard.ds.menuitem import MenuItem - >>> from cpsskins.standard.ds.item import Item - >>> from cpsskins.standard.ds.items import Items - >>> item = Item(title=u'Item title', url=u'@@url.html', icon=u'') + >>> item = MenuItem(title=u'Item title', url=u'@@url.html', icon=u'') >>> pprint(item()) {'description': u'', 'icon': u'', @@ -52,9 +70,9 @@ 'title': u'Item title', 'url': u'@@url.html'} - >>> content = Items([item]) + >>> content = MenuItems([item]) >>> content() - [<Item 'Item title'>] + [<Menu item 'Item title'>] - ... @@ -101,12 +119,12 @@ Available widgets: ================== -Widgets displaying items ------------------------- +Widgets displaying menu items +----------------------------- - >>> itemA = Item(title=u'Item A', url=u'@@urlA.html', icon=u'') - >>> itemB = Item(title=u'Item B', url=u'@@urlB.html', icon=u'') - >>> info.data = Items([itemA, itemB]) + >>> itemA = MenuItem(title=u'Item A', url=u'@@urlA.html', icon=u'') + >>> itemB = MenuItem(title=u'Item B', url=u'@@urlB.html', icon=u'') + >>> info.data = MenuItems([itemA, itemB]) a) vertical menu ---------------- Modified: cpsskins/branches/jmo-perspectives/elements/configure.zcml ============================================================================== --- cpsskins/branches/jmo-perspectives/elements/configure.zcml (original) +++ cpsskins/branches/jmo-perspectives/elements/configure.zcml Tue Apr 11 21:55:10 2006 @@ -216,7 +216,7 @@ <cpsskins:format name="widget" - types="page_body" + types="standard.page_body" /> <cpsskins:format @@ -273,7 +273,7 @@ <cpsskins:format name="widget" - types="table_frame" + types="standard.table_frame" /> <cpsskins:format @@ -331,7 +331,7 @@ <cpsskins:format name="widget" - types="table_cell" + types="standard.table_cell" /> <cpsskins:format @@ -395,7 +395,8 @@ <cpsskins:format name="widget" - types="frame_box vertical_menu" + types="standard.frame_box + standard.vertical_menu" /> <cpsskins:format @@ -428,7 +429,7 @@ <cpsskins:format name="widget" - types="plain_html" + types="standard.plain_html" /> <cpsskins:format Modified: cpsskins/branches/jmo-perspectives/standard/ds/README.txt ============================================================================== --- cpsskins/branches/jmo-perspectives/standard/ds/README.txt (original) +++ cpsskins/branches/jmo-perspectives/standard/ds/README.txt Tue Apr 11 21:55:10 2006 @@ -1,8 +1,8 @@ $id:$ -This package contains the data structures used by content elements such as portlets -to represent information. +This package contains the data structures used by content elements such as +portlets to represent information. Available data structures are: @@ -10,6 +10,6 @@ - Item -- Items +- MenuItems - Image Modified: cpsskins/branches/jmo-perspectives/standard/ds/configure.zcml ============================================================================== --- cpsskins/branches/jmo-perspectives/standard/ds/configure.zcml (original) +++ cpsskins/branches/jmo-perspectives/standard/ds/configure.zcml Tue Apr 11 21:55:10 2006 @@ -12,20 +12,20 @@ </class> - <class class=".item.Item"> + <class class=".menuitem.MenuItem"> <require permission="zope.View" - interface=".item.IItem" + interface=".menuitem.IMenuItem" /> </class> - <class class=".items.Items"> + <class class=".menuitems.MenuItems"> <require permission="zope.View" - interface=".items.IItems" + interface=".menuitems.IMenuItems" /> </class> Copied: cpsskins/branches/jmo-perspectives/standard/ds/menuitem.py (from r2820, cpsskins/branches/jmo-perspectives/standard/ds/item.py) ============================================================================== --- cpsskins/branches/jmo-perspectives/standard/ds/item.py (original) +++ cpsskins/branches/jmo-perspectives/standard/ds/menuitem.py Tue Apr 11 21:55:10 2006 @@ -25,12 +25,9 @@ _ = MessageFactory("cpsskins") -class IItem(Interface): - """Item. +class IMenuItem(Interface): + """Menu item. """ - def __getitem__(k): - """Get the item""" - title = TextLine( title=_(u"Item title"), description=_(u"The title of the item."), @@ -61,12 +58,13 @@ required=False, ) -IItem.setTaggedValue('name', u'item') + def __getitem__(k): + """Get the item""" -class Item(object): - """Some item +class MenuItem(object): + """A menu item - >>> menuitem = Item(title=u'Item title', + >>> menuitem = MenuItem(title=u'Item title', ... description=u'Item description', ... url=u'/@@itemurl.html') ... selected=True, @@ -85,10 +83,10 @@ >>> menuitem['unknown'] Traceback (most recent call last): ... - AttributeError: 'Item' object has no attribute 'unknown' + AttributeError: 'MenuItem' object has no attribute 'unknown' """ - implements(IItem) + implements(IMenuItem) def __init__(self, title=u'', description=u'', url=u'', selected=False, icon=u''): @@ -99,7 +97,7 @@ self.icon = icon def __repr__(self): - return "<Item '%s'>" % self.title + return "<Menu item '%s'>" % self.title def __call__(self): return { Added: cpsskins/branches/jmo-perspectives/standard/ds/menuitems.py ============================================================================== --- (empty file) +++ cpsskins/branches/jmo-perspectives/standard/ds/menuitems.py Tue Apr 11 21:55:10 2006 @@ -0,0 +1,63 @@ +############################################################################## +# +# Copyright (c) 2005-2006 Nuxeo and Contributors. +# All Rights Reserved. +# +# This software is subject to the provisions of the Zope Public License, +# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. +# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED +# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS +# FOR A PARTICULAR PURPOSE. +# +############################################################################## +""" + +$Id$ +""" +__docformat__ = "reStructuredText" + +from pprint import pprint + +from zope.interface import implements, Interface +from zope.i18nmessageid import MessageFactory +from zope.schema import List + +_ = MessageFactory("cpsskins") + +class IMenuItems(Interface): + """Menu items. + """ + items = List( + title=_(u"Items"), + description=_(u"An ordered collection of items"), + required=False, + ) + + def __iter__(): + """Iterates through items """ + +class MenuItems(object): + """A list of menu items + + >>> from cpsskins.standard.ds.menuitem import MenuItem + >>> item = MenuItem(title=u'item') + >>> items = MenuItems([item]) + >>> [i for i in items] + [<Menu item 'item'>] + + """ + implements(IMenuItems) + + def __init__(self, items=[]): + self.items = items + + def __repr__(self): + return "<Items>" + + def __call__(self): + return list(self.items) + + def __iter__(self): + return iter(self.items) + Modified: cpsskins/branches/jmo-perspectives/standard/filters/widget/widgets.zcml ============================================================================== --- cpsskins/branches/jmo-perspectives/standard/filters/widget/widgets.zcml (original) +++ cpsskins/branches/jmo-perspectives/standard/filters/widget/widgets.zcml Tue Apr 11 21:55:10 2006 @@ -20,15 +20,15 @@ <widget name="standard.plain_item" view=".widgets.BasicItemView" - for="cpsskins.standard.ds.item.IItem" - title="Basic item view" + for="cpsskins.standard.ds.menuitem.IMenuItem" + title="Basic menu item view" /> <widget name="standard.plain_items" view=".widgets.BasicItemsView" - for="cpsskins.standard.ds.items.IItems" - title="Basic items view" + for="cpsskins.standard.ds.menuitems.IMenuItems" + title="Basic menu items view" /> @@ -83,35 +83,35 @@ name="standard.vertical_menu" title="Vertical menu" view=".widgets.VerticalMenu" - for="cpsskins.standard.ds.items.IItems" + for="cpsskins.standard.ds.menuitems.IMenuItems" /> <widget name="standard.horizontal_tabs" title="Horizontal tabs" view=".widgets.HorizontalTabs" - for="cpsskins.standard.ds.items.IItems" + for="cpsskins.standard.ds.menuitems.IMenuItems" /> <widget name="standard.menu_bar" title="Menu bar" view=".widgets.MenuBar" - for="cpsskins.standard.ds.items.IItems" + for="cpsskins.standard.ds.menuitems.IMenuItems" /> <widget name="standard.horizontal_trail" title="Horizontal trail" view=".widgets.HorizontalTrail" - for="cpsskins.standard.ds.items.IItems" + for="cpsskins.standard.ds.menuitems.IMenuItems" /> <widget name="standard.dropdown_list" title="Drop-down list" view=".widgets.DropDownList" - for="cpsskins.standard.ds.items.IItems" + for="cpsskins.standard.ds.menuitems.IMenuItems" /> Modified: cpsskins/branches/jmo-perspectives/standard/portlets/actions/configure.zcml ============================================================================== --- cpsskins/branches/jmo-perspectives/standard/portlets/actions/configure.zcml (original) +++ cpsskins/branches/jmo-perspectives/standard/portlets/actions/configure.zcml Tue Apr 11 21:55:10 2006 @@ -25,7 +25,7 @@ <format name="widget" - types="vertical_menu" + types="standard.vertical_menu" /> <format Modified: cpsskins/branches/jmo-perspectives/standard/portlets/actions/portlet.py ============================================================================== --- cpsskins/branches/jmo-perspectives/standard/portlets/actions/portlet.py (original) +++ cpsskins/branches/jmo-perspectives/standard/portlets/actions/portlet.py Tue Apr 11 21:55:10 2006 @@ -25,8 +25,8 @@ from cpsskins import Portlet from cpsskins.interfaces import IPortlet -from cpsskins.standard.ds.item import Item -from cpsskins.standard.ds.items import Items +from cpsskins.standard.ds.menuitem import MenuItem +from cpsskins.standard.ds.menuitems import MenuItems _ = MessageFactory("cpsskins") @@ -56,13 +56,8 @@ except ComponentLookupError: items = [] else: - items = [ - Item( - title=ac['title'], - url=ac['action'], - icon=ac['icon'], - ) - for ac in menu] + items = [Item(title=ac['title'], url=ac['action'], icon=ac['icon']) + for ac in menu] - info.data = Items(items) + info.data = MenuItems(items) Modified: cpsskins/branches/jmo-perspectives/standard/portlets/breadcrumbs/configure.zcml ============================================================================== --- cpsskins/branches/jmo-perspectives/standard/portlets/breadcrumbs/configure.zcml (original) +++ cpsskins/branches/jmo-perspectives/standard/portlets/breadcrumbs/configure.zcml Tue Apr 11 21:55:10 2006 @@ -27,7 +27,7 @@ <format name="widget" - types="horizontal_trail" + types="standard.horizontal_trail" /> <format Modified: cpsskins/branches/jmo-perspectives/standard/portlets/breadcrumbs/portlet.py ============================================================================== --- cpsskins/branches/jmo-perspectives/standard/portlets/breadcrumbs/portlet.py (original) +++ cpsskins/branches/jmo-perspectives/standard/portlets/breadcrumbs/portlet.py Tue Apr 11 21:55:10 2006 @@ -24,8 +24,8 @@ from cpsskins import Portlet from cpsskins.interfaces import IPortlet -from cpsskins.standard.ds.item import Item -from cpsskins.standard.ds.items import Items +from cpsskins.standard.ds.menuitem import MenuItem +from cpsskins.standard.ds.menuitems import MenuItems _ = MessageFactory("cpsskins") @@ -45,9 +45,7 @@ location = info.globals.location url = getMultiAdapter((location, request), IAbsoluteURL) - items = [ - Item(title=bc['name'], url=bc['url']) - for bc in url.breadcrumbs() - ] + items = [MenuItem(title=bc['name'], url=bc['url']) + for bc in url.breadcrumbs()] - info.data = Items(items) + info.data = MenuItems(items) Modified: cpsskins/branches/jmo-perspectives/standard/portlets/custom/configure.zcml ============================================================================== --- cpsskins/branches/jmo-perspectives/standard/portlets/custom/configure.zcml (original) +++ cpsskins/branches/jmo-perspectives/standard/portlets/custom/configure.zcml Tue Apr 11 21:55:10 2006 @@ -28,7 +28,7 @@ <format name="widget" - types="plain_html" + types="standard.plain_html" /> <format Modified: cpsskins/branches/jmo-perspectives/standard/portlets/dummy/configure.zcml ============================================================================== --- cpsskins/branches/jmo-perspectives/standard/portlets/dummy/configure.zcml (original) +++ cpsskins/branches/jmo-perspectives/standard/portlets/dummy/configure.zcml Tue Apr 11 21:55:10 2006 @@ -27,7 +27,7 @@ <format name="widget" - types="plain_html" + types="standard.plain_html" /> <format Modified: cpsskins/branches/jmo-perspectives/standard/portlets/image/configure.zcml ============================================================================== --- cpsskins/branches/jmo-perspectives/standard/portlets/image/configure.zcml (original) +++ cpsskins/branches/jmo-perspectives/standard/portlets/image/configure.zcml Tue Apr 11 21:55:10 2006 @@ -27,7 +27,7 @@ <format name="widget" - types="image" + types="standard.image" /> <format Modified: cpsskins/branches/jmo-perspectives/standard/portlets/macroslot/configure.zcml ============================================================================== --- cpsskins/branches/jmo-perspectives/standard/portlets/macroslot/configure.zcml (original) +++ cpsskins/branches/jmo-perspectives/standard/portlets/macroslot/configure.zcml Tue Apr 11 21:55:10 2006 @@ -28,7 +28,7 @@ <format name="widget" - types="plain_html" + types="standard.plain_html" /> <format Modified: cpsskins/branches/jmo-perspectives/tests/test_ds.py ============================================================================== --- cpsskins/branches/jmo-perspectives/tests/test_ds.py (original) +++ cpsskins/branches/jmo-perspectives/tests/test_ds.py Tue Apr 11 21:55:10 2006 @@ -23,8 +23,8 @@ def test_suite(): return unittest.TestSuite(( - DocTestSuite('cpsskins.standard.ds.item'), - DocTestSuite('cpsskins.standard.ds.items'), + DocTestSuite('cpsskins.standard.ds.menuitem'), + DocTestSuite('cpsskins.standard.ds.menuitems'), DocTestSuite('cpsskins.standard.ds.metadata'), DocTestSuite('cpsskins.standard.ds.image'), )) -- http://lists.nuxeo.com/mailman/listinfo/z3lab-checkins