Metadata-Version: 1.0
Name: menhir.contenttype.image
Version: 0.2
Summary: Dolmen content-type extension : image
Home-page: http://tracker.trollfot.org/
Author: Souheil Chelfouh
Author-email: souheil@chelfouh.com
License: GPL
Download-URL: http://pypi.python.org/pypi/menhir.contenttype.image
Description: 
        
        ``menhir.contenttype.image`` provides an image-centered content type
        for `Dolmen` based `Grok` applications.
        
        Schema
        ======
        
        The ``menhir.contenttype.image`` `Image` content provides a custom schema,
        extending the `IBaseContent` interface, from ``dolmen.content``::
        
          >>> from dolmen.content import IBaseContent
          >>> from menhir.contenttype.image import IImage
        
          >>> IImage.isOrExtends(IBaseContent)
          True
        
        The `IImage` interface describes the image field, that is to store the
        uploaded image data. The field comes from ``dolmen.file``::
        
          >>> for attr, doc in IImage.namesAndDescriptions():
          ...   print attr, ':', doc
          image : <dolmen.file.field.ImageField object at ...>
        
        
        Factory
        =======
        
        The ``menhir.contenttype.image`` `Image` content uses a ZODB Blob to
        store the data. The `image` attribute of the factory class, `Image`,
        is a blob property from ``dolmen.blob``::
        
          >>> from menhir.contenttype.image import Image
          >>> Image.image
          <dolmen.blob.property.BlobProperty object at ...>
        
        The instanciation is fairly straightforward::
        
          >>> import os.path
          >>> path = os.path.join(os.path.dirname(__file__), 'image.png')
        
          >>> imagefile = open(path)
          >>> image = Image(title=u"My Image", image=imagefile)
          >>> imagefile.close()
        
        The factory is protected by a common ``dolmen.app.security`` right::
        
          >>> from dolmen.content import require
          >>> print require.bind().get(image)
          dolmen.content.Add
        
        
        Icon
        ====
        
        The content registers an icon, thanks to the ``dolmen.app.content``
        package::
        
          >>> from zope.component import getMultiAdapter
          >>> from zope.publisher.browser import TestRequest
        
          >>> request = TestRequest()
          >>> icon = getMultiAdapter((image, request), name="icon")
          >>> print icon
          <zope.browserresource.icon.IconView object at ...>
        
        
        View
        ====
        
        The content registers its own index view. It displays the image and a
        download link. To be able to display the content, we need it persisted
        in a locatable tree, as the links depend on the urls::
        
          >>> from zope.component.hooks import getSite
          >>> site = getSite()
          >>> site['image'] = image
        
        We can now summon the view and render it. The view is a
        ``dolmen.app.layout`` `Page`::
        
          >>> from dolmen.app.layout import Page
          >>> index = getMultiAdapter((image, request), name="index")
          >>> isinstance(index, Page)
          True
        
          >>> index.update()
          >>> print index.content()
          <h1>My Image</h1>
          <div class="content">
            <p class="download">
              <a href="http://127.0.0.1/image/++download++image"
                 title="Download">Download</a>
              &mdash;
              <span>1 KB</span>
            </p>
            <div class="image">
              <a href="http://127.0.0.1/image/++thumbnail++image.large"
                 class="image-link" title="My Image">
                <img src="http://127.0.0.1/image/++thumbnail++image.preview" />
              </a>
            </div>
          </div>
        
        Changelog
        =========
        
        0.2 (2010-07-27)
        ----------------
        
        * Packaging corrections.
        
        
        0.1 (2010-07-21)
        ----------------
        
        * Initial release
        
Keywords: Grok Zope3 CMS Dolmen
Platform: Any
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Web Environment
Classifier: Framework :: Zope3
Classifier: Intended Audience :: Other Audience
Classifier: License :: OSI Approved :: GNU General Public License (GPL)
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
