{ "info": { "author": "Souheil Chelfouh", "author_email": "trollfot@gmail.com", "bugtrack_url": null, "classifiers": [ "Environment :: Web Environment", "Framework :: Zope3", "License :: OSI Approved :: GNU General Public License (GPL)", "Operating System :: OS Independent", "Programming Language :: Python" ], "description": "=================\ndolmen.app.layout\n=================\n\n`dolmen.app.layout` provides ready-to-use components to get a fully\nfunctional and extensively pluggable User Interface for a Dolmen\napplication (see `dolmen.app.site`).\n\n\nAbout Dolmen\n============\n\nDolmen is an application development framework based on Grok and ZTK\nwhich also provides a CMS (Content Management System) out of the\nbox. Dolmen is being made with four main objectives in mind: easily\npluggable, rock solid and fast content type development, readability\nand speed.\n\n\nGetting started\n===============\n\nWe import all the needed dependencies of the tests::\n\n >>> from dolmen import content\n >>> from grokcore.component import testing\n >>> from zope.site.hooks import getSite\n >>> from zope.component import getMultiAdapter \n >>> from zope.publisher.browser import TestRequest\n \nWe import everything needed for the API verification::\n\n >>> from zope.interface import verify\n >>> from dolmen.app.layout import interfaces as API\n \nWe define and intanciate a Context object and a request for our tests\nto come::\n\n >>> class Mammoth(content.Content):\n ... content.name(u'Furry Mammoth')\n\n >>> testing.grok_component('mammoth', Mammoth)\n True\n\n >>> root = getSite()\n >>> root['manfred'] = Mammoth()\n >>> manfred = root['manfred']\n\n >>> request = TestRequest()\n\n\nGlobal interface\n================\n \n >>> from dolmen.app.layout import master\n\n >>> API.IGlobalUI.extends(API.IContentProviders)\n True\n\n >>> API.IGlobalUI.providedBy(master)\n True\n >>> verify.verifyObject(API.IGlobalUI, master)\n True\n\n\nContent providers\n-----------------\n \nDescription\n~~~~~~~~~~~\n\n >>> for name, attr in API.IContentProviders.namesAndDescriptions():\n ... print \"%s: %s\" % (name, attr.getDoc())\n Footer: Viewlet manager for the bottom part of the body.\n AboveBody: Viewlet manager located above the main content.\n BelowBody: Viewlet manager located below the main content.\n Header: Viewlet manager involved in rendering the HTML head.\n Top: Viewlet manager for the top part of the body.\n Resources: Viewlet manager including resources.\n\n\nLayout\n------\n\nDescription\n~~~~~~~~~~~\n\n >>> interfaceDescription(API.IGlobalUI)\n Master: Base layout using all the `IContentProviders` components to build a coherent yet overridable rendering.\n\n\nContextual UI\n=============\n\n >>> from dolmen.app.layout import viewlets\n\n >>> API.IContextualUI.providedBy(viewlets)\n True\n >>> verify.verifyObject(API.IContextualUI, viewlets)\n True\n\nDescription\n-----------\n\n >>> interfaceDescription(API.IContextualUI)\n ContextualActions: Viewlet rendering contextual actions.\n FlashMessages: Viewlet displaying site-wide messages.\n\n\nView components\n===============\n\n >>> from dolmen.app.layout import models\n\nModels\n------\n\nModels are base classes to be used in your own\nclasses. `dolmen.app.layout` provides a collections of ready-to-use\nmodels::\n\n >>> API.IModels.providedBy(models)\n True\n >>> verify.verifyObject(API.IModels, models)\n True\n\nDescription\n~~~~~~~~~~~\n\n >>> interfaceDescription(API.IModels)\n Index: Page showing as default view on an object.\n Form: Generic page form.\n Page: Page embedded in a layout.\n\nDefault views\n-------------\n\n`dolmen.app.layout` registers some views, out-of-the-box, to allow you\nto interact with your `dolmen.content` objects and your application::\n\n >>> API.IBaseViews.providedBy(models)\n True\n >>> verify.verifyObject(API.IBaseViews, models)\n True\n\nDescription\n~~~~~~~~~~~\n\n >>> interfaceDescription(API.IBaseViews)\n Edit: Default edit form.\n Add: Default add form.\n DefaultView: Display form used as index.\n Delete: Default delete form.\n\nQuery\n~~~~~\n\nWe can now test to see if our default views are retrieved::\n\n >>> view = getMultiAdapter((manfred, request), name=\"index\")\n >>> view\n \n\n >>> edit = getMultiAdapter((manfred, request), name=\"edit\")\n >>> edit\n \n\nThe add form is a bit different, as it relies on an adding view (see\n`dolmen.forms.crud` and `dolmen.content` for more information)::\n\n >>> from dolmen.forms.crud import Adder\n\n >>> adding = Adder(root, request)\n >>> adding\n \n\n >>> adding.traverse(\"dolmen.app.layout.Mammoth\", None)\n \n\n\nSkins\n=====\n\n`dolmen.app.layout` provides a browser layer and a skin, to serve as a\nbase component for your own skins::\n\n >>> from dolmen.app.layout import skin\n\n >>> API.ISkin.providedBy(skin)\n True\n >>> verify.verifyObject(API.ISkin, skin)\n True\n\nDescription\n-----------\n\n >>> interfaceDescription(API.ISkin)\n IBaseSkin: Skin providing the IBaseLayer. Can be applied directly or inherited.\n IBaseLayer: Layer used to register all the Dolmen centric view components.\n Resource: Viewlet component used to include resources\n\n\nMenus\n=====\n\n >>> from dolmen.app.layout import menus\n\n >>> API.IMenus.providedBy(menus)\n True\n >>> verify.verifyObject(API.IMenus, menus)\n True\n\nDescription\n-----------\n\n >>> interfaceDescription(API.IMenus)\n ContextualMenu: Menu defining contextual actions.\n MenuViewlet: Generic viewlet rendering a `IBrowserMenu`.\n\nContextual menu\n---------------\n\n >>> manager = master.Top(manfred, request, view)\n >>> manager\n \n\n >>> manager.update()\n >>> print manager.render()\n
\n
Contextual actions
\n
\n \n
\n
\n\n\nCredits\n=======\n\nAll Dolmen packages are sponsorised by NPAI (http://www.npai.fr)\n\n\nChangelog\n=========\n\n1.0 (unreleased)\n----------------\n\n* Update to use grokcore.layout instead of megrok.layout.\n\n1.0b2 (2011-02-01)\n------------------\n\n* Updated versions dependencies to remove the use of\n ``megrok.resource`` in favor of ``fanstatic``.\n\n\n1.0b1 (2010-11-16)\n------------------\n\n* The ContextualMenu viewlet now computes the URL using the 'url'\n attribute of the entries, as it should be.\n\n\n1.0a2 (2010-11-05)\n------------------\n\n* Dependencies have been slimmed down : ``dolmen.app.layout`` now longer\n provides coverage for the ``megrok.z3ctable`` and ``zeam.form.composed``\n packages. We now rely on the grokcore packages and no longer on the\n ``grok`` package itself.\n\n* Tests no longer use ``zope.testing``.\n\n\n1.0a1 (2010-06-03)\n------------------\n\n* The flash messages are now retrieved thanks to `grokcore.message`.\n\n* Tests have been corrected and simplified.\n\n* Using now `zeam.form` instead of `z3c.form`.\n\n* Using now `dolmen.menu` instead of `megrok.menu`.\n\n* `dolmen.app.layout` now required python2.6 to work. This is due to\n the use of class decorators.\n\n\n0.5.1 (2010-02-26)\n------------------\n\n* Corrected the success message getter for the `Delete` form. It used\n to fetch the property object and try to persist it. Now, it gets its\n value as it should.\n\n\n0.5.0 (2010-02-25)\n------------------\n\n* Using now the latest ``megrok.layout``. This removes the need for the\n `ApplicationAwareView` mixin. This version of ``dolmen.app.layout`` will\n only work with `Grok >= 1.1rc1`.\n\n\n0.4.0 (2010-02-17)\n------------------\n\n* INotFound errors are not located in the `index.html` view. This\n allows to use a layout transparently. The __parent__ is set to the\n `ob` attribute of the INotFound object.\n\n* The contextual menu is no longer restricted to `IBaseContent`\n objects. It is now registered for `Interface`.\n\n* The dependencies have been greatly reduced by the removal of all the\n `zope.app` packages.\n\n\n0.3.1 (2010-01-21)\n------------------\n\n* Bug fix: the success message of a Delete form is a property and\n can't be called directly through the class. We need to use fget.\n\n\n0.3 (2009-12-26)\n----------------\n\n* The layout now provides and uses a way to include resources, using\n megrok.resourceviewlet. Two components have been added for that:\n `ResourcesManager` and `Resource`, respectively a viewletmanager and\n a viewlet base class.\n\n* The imports has been modified to avoid using any zope.app package.\n\n\n0.2.2 (2009-11-03)\n------------------\n\n* Now the configure.zcml includes the `megrok.z3ctable` meta.zcml.\n\n* Updated dependencies in setup.py\n\n\n0.2.1 (2009-11-02)\n------------------\n\n* Corrected flash messages and redirection in the delete form.\n\n\n0.2 (2009-11-02)\n----------------\n\n* Added Delete form to complete the CRUD actions.\n\n\n0.1 (2009-11-02)\n----------------\n\n* Initial release", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://gitweb.dolmen-project.org/", "keywords": "Grok Zope3 CMS Dolmen", "license": "GPL", "maintainer": null, "maintainer_email": null, "name": "dolmen.app.layout", "package_url": "https://pypi.org/project/dolmen.app.layout/", "platform": "Any", "project_url": "https://pypi.org/project/dolmen.app.layout/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://gitweb.dolmen-project.org/" }, "release_url": "https://pypi.org/project/dolmen.app.layout/1.0/", "requires_dist": null, "requires_python": null, "summary": "Layout and page models for Dolmen applications", "version": "1.0" }, "last_serial": 907651, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "8b9e530d38c75d846a00c7cddddafe2c", "sha256": "1a1f7cea0e755f512c8543f49a621f9c7e74f63e7451806343f291165999a69d" }, "downloads": -1, "filename": "dolmen.app.layout-0.1.tar.gz", "has_sig": false, "md5_digest": "8b9e530d38c75d846a00c7cddddafe2c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12421, "upload_time": "2009-11-02T13:06:51", "url": "https://files.pythonhosted.org/packages/77/6c/883cb281027328f6abff2da531b40a84f1fe77b85568dd3aa178dc8ac664/dolmen.app.layout-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "9f749da67e218a709c769673b1e48f4d", "sha256": "c652dfc47d2e7d4360341b2d1cc4b73e051b7c98995f39884f13d680ce02a23e" }, "downloads": -1, "filename": "dolmen.app.layout-0.2.tar.gz", "has_sig": false, "md5_digest": "9f749da67e218a709c769673b1e48f4d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10742, "upload_time": "2009-11-02T16:58:02", "url": "https://files.pythonhosted.org/packages/e6/13/2df0a589ddb1f512059a529a519fdbfe608a07f9acf1d909012ebc6380a4/dolmen.app.layout-0.2.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "f585f44af03a681ab27a5953f3dd448d", "sha256": "c8fe14e29506b727d852ade83a249cbe6a7ebdab2f233c3ed8f53ef0946dbb28" }, "downloads": -1, "filename": "dolmen.app.layout-0.2.1.tar.gz", "has_sig": false, "md5_digest": "f585f44af03a681ab27a5953f3dd448d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10836, "upload_time": "2009-11-02T18:53:34", "url": "https://files.pythonhosted.org/packages/15/e0/d8956afe58300b0b9e3471ba96e16e6086c0c6183ce52c2a97324e99d877/dolmen.app.layout-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "8e7ec8b87b594713b185e84628d58288", "sha256": "3a315a7355006f88c69212bc6909638364289e53b55a6cfd593c1d1e88441b37" }, "downloads": -1, "filename": "dolmen.app.layout-0.2.2.tar.gz", "has_sig": false, "md5_digest": "8e7ec8b87b594713b185e84628d58288", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10900, "upload_time": "2009-11-03T19:07:21", "url": "https://files.pythonhosted.org/packages/30/54/6bd230e2ca89563743e1aa62f04ff61b5452dbcf94b277fc833ed498c2e7/dolmen.app.layout-0.2.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "e4d2c74c4ea2d8cb22b3834a32c229a7", "sha256": "5bcd908b7b3764d5ec7524bb240b067ceea176073af6b1dc633ce381b27f7111" }, "downloads": -1, "filename": "dolmen.app.layout-0.3.tar.gz", "has_sig": false, "md5_digest": "e4d2c74c4ea2d8cb22b3834a32c229a7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10856, "upload_time": "2009-12-26T21:18:50", "url": "https://files.pythonhosted.org/packages/3f/fe/00cec446f08e34a7eede849d6651e735ab3640e0791889952487212fff7b/dolmen.app.layout-0.3.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "5220092cf0b5f635596d3a137a57c52b", "sha256": "8a48f48b98b4dd2afd1a784ee3cce864e6fd3705791f9a14e060251e5f650092" }, "downloads": -1, "filename": "dolmen.app.layout-0.3.1.tar.gz", "has_sig": false, "md5_digest": "5220092cf0b5f635596d3a137a57c52b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13433, "upload_time": "2010-01-21T20:56:48", "url": "https://files.pythonhosted.org/packages/cc/ed/3dacd49df942ee4f800dbbce8784d1a21d7de07cc8368b9bbddff3c0ff3a/dolmen.app.layout-0.3.1.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "8c994ee890a88d079cba54769aff8f53", "sha256": "18a3b857e3b20ad8edb76938db9e43a486a98afe734dab8fa0f09e82b11d150a" }, "downloads": -1, "filename": "dolmen.app.layout-0.4.0.tar.gz", "has_sig": false, "md5_digest": "8c994ee890a88d079cba54769aff8f53", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14229, "upload_time": "2010-02-17T18:26:54", "url": "https://files.pythonhosted.org/packages/b9/cb/86ed43abc660239ea3c1854db13434c734c420115cd5658be3dc56c63cbb/dolmen.app.layout-0.4.0.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "2aa0d70066d2c988f78b3322018018c1", "sha256": "3065582a796d2018101d196eb1698bbe81b5c7ac257f4206e91a120c3369ebf9" }, "downloads": -1, "filename": "dolmen.app.layout-0.5.tar.gz", "has_sig": false, "md5_digest": "2aa0d70066d2c988f78b3322018018c1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14243, "upload_time": "2010-02-25T20:31:22", "url": "https://files.pythonhosted.org/packages/28/ca/aa624ac6896636fc981ed8900a23177c8a7fa40d492c658b98e263eacd38/dolmen.app.layout-0.5.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "14fcc35ab8a693c8ea64d8e5ce832eb3", "sha256": "d8d7830123e7e675669a3292d0d9b84a5f47957f2c92d4621ec948225e3d3a91" }, "downloads": -1, "filename": "dolmen.app.layout-0.5.1.tar.gz", "has_sig": false, "md5_digest": "14fcc35ab8a693c8ea64d8e5ce832eb3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14425, "upload_time": "2010-02-26T19:02:58", "url": "https://files.pythonhosted.org/packages/a1/fd/3d774fb40cc1a0297803dc776e68057481872c714447f3f19a8f2ea01ecc/dolmen.app.layout-0.5.1.tar.gz" } ], "1.0": [ { "comment_text": "", "digests": { "md5": "091312be37a0db31002356b247a373fc", "sha256": "9cabf25d01f42267fad7f0c2cc61e6d1d90391e26fde4d12a744ab0072fa0e3c" }, "downloads": -1, "filename": "dolmen.app.layout-1.0.tar.gz", "has_sig": false, "md5_digest": "091312be37a0db31002356b247a373fc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13913, "upload_time": "2013-10-30T19:35:16", "url": "https://files.pythonhosted.org/packages/0b/e6/4cbc666e2793dc93006cb6cb0309981b29cde7ffc50de1e613e67fea4b25/dolmen.app.layout-1.0.tar.gz" } ], "1.0a1": [ { "comment_text": "", "digests": { "md5": "eaea0cc2d7b65b9c122d697159006490", "sha256": "6b24d673c06f72905f4c7d8d887bd23aa5bf2ca184c0bac49f12e673c8cf7578" }, "downloads": -1, "filename": "dolmen.app.layout-1.0a1.tar.gz", "has_sig": false, "md5_digest": "eaea0cc2d7b65b9c122d697159006490", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13698, "upload_time": "2010-06-03T16:25:26", "url": "https://files.pythonhosted.org/packages/f7/f3/8dbe81f581ede0912ef2cf9a77f1244002eeb3a0e35257e6594859ed6f8a/dolmen.app.layout-1.0a1.tar.gz" } ], "1.0a2": [ { "comment_text": "", "digests": { "md5": "b2730afc429ed84839178e5a9da4a3b6", "sha256": "1b295c4357cc84e49543c05393c17685e3569c26e32d0f0540b368c38764c50d" }, "downloads": -1, "filename": "dolmen.app.layout-1.0a2.tar.gz", "has_sig": false, "md5_digest": "b2730afc429ed84839178e5a9da4a3b6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11231, "upload_time": "2010-11-05T22:42:13", "url": "https://files.pythonhosted.org/packages/77/47/df7ce2e0dc89176ddf540319b74dbae50764bd786a02003751c73f18d381/dolmen.app.layout-1.0a2.tar.gz" } ], "1.0b1": [ { "comment_text": "", "digests": { "md5": "f11c6896b2d787c4aaf2419d1bf9a0de", "sha256": "700783335fce66272c9c6d6f630a43469a093c56a43d59d266464c4fd5293962" }, "downloads": -1, "filename": "dolmen.app.layout-1.0b1.tar.gz", "has_sig": false, "md5_digest": "f11c6896b2d787c4aaf2419d1bf9a0de", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13723, "upload_time": "2010-11-16T15:16:59", "url": "https://files.pythonhosted.org/packages/ab/a2/5ea85705a4eceea26940e6ae46db4081f437540f712337183df2909871a9/dolmen.app.layout-1.0b1.tar.gz" } ], "1.0b2": [ { "comment_text": "", "digests": { "md5": "5c5f8fc1fb471856a91c9d3e82545289", "sha256": "2422ecd58fdd3a410cc0c7c16330f0e93ae6e5dffefaf9581555c395b512f3df" }, "downloads": -1, "filename": "dolmen.app.layout-1.0b2.tar.gz", "has_sig": false, "md5_digest": "5c5f8fc1fb471856a91c9d3e82545289", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13879, "upload_time": "2011-02-01T16:34:22", "url": "https://files.pythonhosted.org/packages/d0/f9/4be22dddf3c69e7392dc5e351e6e32eef65bee362f0c477d0ed3222672c2/dolmen.app.layout-1.0b2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "091312be37a0db31002356b247a373fc", "sha256": "9cabf25d01f42267fad7f0c2cc61e6d1d90391e26fde4d12a744ab0072fa0e3c" }, "downloads": -1, "filename": "dolmen.app.layout-1.0.tar.gz", "has_sig": false, "md5_digest": "091312be37a0db31002356b247a373fc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13913, "upload_time": "2013-10-30T19:35:16", "url": "https://files.pythonhosted.org/packages/0b/e6/4cbc666e2793dc93006cb6cb0309981b29cde7ffc50de1e613e67fea4b25/dolmen.app.layout-1.0.tar.gz" } ] }