A miniguide to Dolmen packages
Sun, Sep 19, 2010,
900 Words
I'm finally starting a long-overdue project which I have decided to do with Dolmen. As usual, I start by studying its source code and the packages that are available for it. By itself it can will get me about 60% with the requirements for my project, so it's a pretty good starting base. I plan to also study and use some of the menhir.* packages, which are pretty good as generic CMS content types.
- dolmen
- Dolmen is an application development framework based on Grok and ZTK which also provides a CMS (Content Management System) out of the box. Dolmen is being made with four main objectives in mind: easily pluggable, rock solid and fast content type development, readability and speed.
- dolmen.app.authentication
- Users and group management in Dolmen
- dolmen.app.breadcrumbs
- Provides a breadcrumbs navigation for the Dolmen applications. It registers a viewlet to render the links.
- dolmen.app.clipboard
- Provides a useable "clipboard", that allows you to cut, copy and paste your objects.
- dolmen.app.container
- Is a collection of tools to work with containers in Dolmen applications.
- dolmen.app.content
- Provides out-of-the-box utilities for Dolmen applications content.
- dolmen.app.layout
- Provides ready-to-use components to get a fully functional and extensively pluggable User Interface for a Dolmen application
- dolmen.app.metadatas
- Forms and viewlets to edit ZopeDublinCore metadata
- dolmen.app.search
- Viewlets and utilities for permission-aware searching of objects in a Dolmen site.
- dolmen.app.security
- Roles and permissions for a Dolmen site
- dolmen.app.site
- The basic Dolmen objects that serve as roots of Dolmen sites
- dolmen.app.viewselector
- Allows basic management of alternate views
- dolmen.authentication
- Basic components for authentication
- dolmen.beaker
- Zope sessions implementation using beaker
- dolmen.blob
- A layer above zope.file using ZODB blobs as a storage facility. It offers a BlobFile content type and a BlobProperty property for complex schemas.
- dolmen.builtins
- A set of interfaces that apply to basic Python types, to better integrate them with ZCA
- dolmen.content
- Base classes and utilities to create content types
- dolmen.field
- Additional fields usable in schemas. At this moment there's just GlobalClass
- dolmen.file
- Allows you to manage and store files within the ZODB. It takes the core functionalities of zope.app.file, and simplifies them, using Grok for views and adapters registrations.
- dolmen.forms.base
- A package in charge of providing basic functionalities to work with zeam.form Forms.
- dolmen.forms.crud
- A package which helps developers create their C.R.U.D forms using Grok, zeam.form and dolmen.content. It provides a collection of base classes to add, edit, and access content. It innovates by providing adapters to customize the fields of a form.
- dolmen.menu
- Aims to provide the most flexible and explicit way to create and manage menus and their entries with Grok.
- dolmen.queue
- A simple layer on top of zc.async to provide queuing of tasks. Not ready?
- dolmen.relations
- Is a thin layer above zc.relation, allowing a simple and straightforward implementation of standalone relationships between objects.
- dolmen.storage
- Defines a clear high-level API to deal with pluggable storage components.
- dolmen.thumbnailer
- Is package specialized in Thumbnail generation. Using the dolmen.storage mechanisms, it allows a pluggable and flexible thumbnail storage.
- dolmen.widget.file
- A package that walks hand-in-hand with dolmen.file. It provides a useable and pluggable way to render the dolmen.file.FileField in a zeam.form Form.
- dolmen.widget.image
- A thin layer above dolmen.widget.file providing a widget suitable to fields implementing IImageField. It adds, thanks to dolmen.thumbnailer a preview of the uploaded image in both input and display mode.
- dolmen.widget.tinymce
- A package that provides a useable and pluggable way to render a text field as a WYSIWG editor in a zeam.form Form.
- dolmen.workflow
- Nothing here
- megrok.icon
- Allows registration of icons and associating them with content types
- megrok.resourcemerger
- Allows concatanation and packing of browser resources (css and js)
- menhir.contenttype.document
- An example document content type
- menhir.contenttype.file
- An example file content type
- menhir.contenttype.folder
- An example folder content type
- menhir.contenttype.image
- An example image content type
- menhir.contenttype.photoalbum
- An example photoalbum content type
- menhir.contenttype.rstdocument
- An example rstdocument content type
- menhir.contenttype.user
- An example user content type
- menhir.library.tablesorter
- Registers a jquery based library for HTML tables sorting
- menhir.simple.comments
- Simple commenting system with avatar integration
- menhir.simple.livesearch
- A viewlet that provides a livesearch box
- menhir.simple.navtree
- A viewlet providing a navigation tree
- menhir.simple.tag
- A tagging engine based on the lovely.tag
- menhir.skin.lightblue
- A complete skin for a Dolmen site.
- menhir.skin.snappy
- A skin for Snappy sites
- snappy.site
- The Snappy, a video sharing sample site
- snappy.transform
- Mimetype transform utilities. Not finished?
- snappy.video.flasher
- Utilities to mark files as Flash and allow to view them.
- snappy.video.player
- A video player for flash movies
- snappy.video.transforms
- Convert video files to flash movies and thumbnails
- zeam.form.base
- A form library designed to be grokish and simple
- zeam.form.ztk
- zope.schema integration for zeam.form. It provides widgets and default CRUD style actions.
- dolmen-documentation
- A few tutorials for Dolmen
- dolmenproject
- A Paste script extension that allows quick bootstrapping of new Dolmen projects
To download all the packages, I've ctrl+selected the git repositories names from http://gitweb.dolmen-project.org/, pasted them into a repositories.txt file and ran the following script:
import subprocess import os f = open('repositories.txt') for line in f.readlines(): git = line.strip() pkg = git if pkg.endswith('.git'): pkg = ".".join(pkg.split('.')[:-1]) if os.path.exists(pkg): subprocess.check_call(['git', 'pull'], cwd=pkg) else: subprocess.check_call(['git', 'clone', 'git://devel.dolmen-project.org/' + git])