Metadata-Version: 1.0
Name: betahaus.openmember
Version: 0.1b
Summary: A member database to track membership over time
Home-page: http://www.betahaus.net
Author: Betahaus
Author-email: robin@betahaus.net
License: GPL
Description: **This is in beta stage.**
        
        
        Contents
        ========
        
        * `Introduction`_
        * `Installation`_
        * `Configuration`_
        * `Extending the control panel`_
        * `Contributors`_
        
        
        Introduction
        ------------
        
        ``betahaus.openmeber`` is a database for managing members and tracking changes to their personal information.
        This includes memberships to fiscal years, participation to events etc.
        
        
        Installation
        ------------
        
        buildout:
        - Add ``betahaus.openmember`` entries to eggs and zcml in the appropriate buildout configuration file. (typcially buildout.cfg)
        - Re-run buildout. (./bin/buildout)
        - Restart the instance
        - Install via portal_quickinstaller or Site Setup in plone
        
        Events
        ------
        There are four events available OMemberAddedEvent, OMemberWillBeModifiedEvent, OMemberModifiedEvent and OMemberDeletedEvent.
        Register a listener like::
        
        <subscriber
        for="betahaus.openmember.interfaces.IOMemberAddedEvent"
        handler=".handlers.added"
        />
        
        where handlers.py looks like::
        
        >>> def added(event):
        ...     contenttype_object = event.object
        ...     databse_object = event.om_object
        
        
        Configuration
        -------------
        
        After following the install instructions you need to configure the database for what content to monitor and what fields of that content to monitor.
        Now you can choose to use a shipped content type called MemberPerson.
        Or you can take any content type that you like and make sure it implements the interface ``betahaus.openmember.interfaces.IOpenMember``.
        The recommended way is to add a zcml ``five:implements`` entry::
        
        <five:implements
        class="path.to.your.contentType"
        interface="betahaus.openmember.interfaces.IOpenMember"/>
        
        
        Next you need to configure what fields on your content type that will be monitored.
        This is done via the openmember controlpanel reachable from the Site Setup. Each field configuration should have the structure of::
        
        field_name | index_type | label
        
        field_name
        This is the field name of the content type.
        
        index_type
        This is the type of index to be used, typical indexes are ``ZCTextIndex``, ``DateIndex`` and ``KeywordIndex``.
        
        label
        What should be displayed for this field. This parameter is optional.
        
        You can also set what fields that should be title fields. These fields are the fields that show up in the search portlet and result table.
        
        Extending the control panel
        ---------------------------
        
        Open Member can easily be extended with extra functionality. Sometimes the extension requires configuration using a configuration panel.
        To help the user in having all the configurations related to ``OpenMember`` in the same place you can register sub sections to the
        OpenMember configuration panel.
        
        Two parts are needed to register an extension to the configuration panel. One schema that defines the fields that make up the configuration panel,
        and one adapter the implements the schema and takes care of reading/writing the values.
        
        The schema should have the following structure::
        
        >>> from betahaus.openmember.interfaces import IOMControlPanelForm
        >>> from zope import schema
        >>> class ExampleSchema(IOMControlPanelForm):
        ...     """Example schema for openmember sub control panel"""
        ...     example = schema.List(name='example')
        
        
        The key point here is that the schema must inherit from the ``IOMControlPanelForm`` and have a schema based on zope.schema.
        
        The adapter should have the following structure::
        
        >>> from Products.CMFDefault.formlib.schema import SchemaAdapterBase
        >>> from Products.CMFPlone.interfaces import IPloneSiteRoot
        >>> from betahaus.openmember.browser.controlpanel import registerForm
        >>> class ExamplePanelAdapter(SchemaAdapterBase):
        ...     """Openmember control panel extension for examples settings."""
        ...     implements(ExampleSchema)
        ...     adapts(IPloneSiteRoot)
        ...
        ...     def getId(self):
        ...         """The Id must be lowercase"""
        ...         return 'example'
        ...
        ...     def getLabel(self):
        ...         """The label can be translated to any language"""
        ...         return _(u'Example')
        ...
        --- Getters and setters for the schema defined above. ---
        >>> registerForm(ExampleSchema)
        
        The key points here are::
        - The adapter should inherit from ``SchemaAdapterBase`` or has that in the inheritance chain.
        - The adapter must implement the Schema defined previously, including the functions ``getId`` and ``getLabel``
        - The registration of the schema with the OpenMember control panel
        
        The last step is to register the adapter in zcml::
        
        <adapter factory=".controlpanel.ExamplePanelAdapter" />
        
        Now you are done.
        
        Change history
        ==============
        
        0.1b (2010-02-10)
        -----------------
        
        * Results have a link to the original content [mlundwall]
        * Configuration of indexes to show in table and portlet [mlundwall]
        * Batching on search page and Fiscal Year [mlundwall]
        * Lots more...
        
        0.1a1 - (2009-06-16)
        --------------------
        
        * First Alpha release
        
        
        Contributors
        ============
        
        * `Martin Lundwall <http://plone.org/author/mlundwall/>`_, Author.
        * `Robin Harms Oredsson <http://plone.org/author/robinharms/>`_, Author and founder of project.
        * Jocke Sundqvist, General stuff and keeping us on track.
        * `Svea.org <http://svea.org/>`_, Financial Support
        
        Known Issues
        ============
        
        * Unicode characters are displayed weird in Safari. They are not handled properly.
        * The results template don't display labels from vocabularies but the ids instead.
Keywords: plone
Platform: UNKNOWN
Classifier: Framework :: Plone
Classifier: Programming Language :: Python
Classifier: Topic :: Software Development :: Libraries :: Python Modules
