Metadata-Version: 1.0
Name: collective.portlet.contentprovider
Version: 1.0
Summary: Renders a content provider in a portlet
Home-page: http://svn.plone.org/svn/collective/
Author: Steve McMahon
Author-email: steve@dcn.org
License: GPL
Description: Introduction
        ============
        
        collective.portlet.contentprovider allows you to put content providers like
        viewletmanagers into portlets. This tool is meant for use by experienced
        theme developers since real-life use is going to require the ability to
        rewire viewlets and viewlet managers in ZCML and Generic Setup profiles.
        
        Installation is typical for a Plone add on. Add collective.portlet.contentprovider
        to your eggs list in your buildout. If using an early version of plone, also
        add it to the zcml slugs.
        
        Using collective.portlet.contentprovider
        ========================================
        
        Use is probably best demonstrate with a real use case: adding a Products.Carousel
        slideshow to a portlet. Normally, Carousel adds its banner viewlet,
        Products.Carousel.viewlet, to the IContentViews viewletmanager. Let's say we
        wish, instead, to display it in a collective.portlet.contentprovider
        portlet.
        
        Viewlets aren't meant for use as direct content providers (they need a manager),
        so we need to tell a contentprovider portlet to show a viewletmanager
        that displays Products.Carousel.viewlet. So, we could just add a contentprovider
        portlet and tell it (in the provider field in the portlet editor) to display
        plone.contentviews. This works, but it also drags in everything else handled
        by plone.contentviews.
        
        So, to do this right, we need to do the typical viewlet dance for moving viewlets
        from one manager to another. We'll also make use of the fact that collective.portlet.contentprovider
        registers a viewlet manager that isn't used anywhere else. So, in our theme
        product's configure.zcml,
        all we need to do is set that manager to handle the carousel ::
        
        <browser:viewlet
        name="Products.Carousel.pviewlet"
        for="*"
        manager="collective.portlet.contentprovider.interfaces.IContentProviderPortlet"
        class="Products.Carousel.browser.viewlet.CarouselViewlet"
        permission="zope2.View"
        layer=".interfaces.IThemeSpecific"
        />
        
        And, in our viewlets.xml setup file, hide the Carousel viewlet in the old manager::
        
        <hidden manager="plone.contentviews" skinname="plonetheme.ucdvaw">
        <viewlet name="Products.Carousel.viewlet"/>
        </hidden>
        
        Finally, just add a contentprovider portlet and tell it to display collective.portlet.contentprovider_vmanager.
        Changelog
        =========
        
        1.0dev (unreleased)
        -------------------
        
        - Initial release
        
Platform: UNKNOWN
Classifier: Framework :: Plone
Classifier: Programming Language :: Python
