Yesterday and today, I did something I’ve been wanting to do for a long time - refactor the more generic bits of b-org out into more generic components. I have the luxury of targeting Plone 3.0 only, so I could use a lot of new APIs and components only available there. The results are:
- borg.localrole - a standalone release of the PAS plug-in which allows you to define local roles in an adapter. This will probably work on Plone 2.5, but on its own it does nothing.
- borg.project - an easy-to-use implementation of the “project workspace” metaphor.
The latter is possibly more interesting. When you install it, a manager can add a new Project, and configure a list of managers (who get the Manager role); a list of members (who get the TeamMember role); and a list of content types which project members will be able to add inside the workspace. There is also a local workflow policy (using CMFPlacefulWorkflow - watch out, you need to install this manually now in Plone 3).
This is no different to what the same part of b-org did, except:
- It’s completely standalone
- It works on any kind of user, not just Membrane ones
- It has few dependencies - it doesn’t need Membrane; in fact, it doesn’t even use Archetypes.
- It shows off a number of cool Plone 3-like features, such as add forms, formlib-based edit forms, factories, browser views, events and doctests
I know the Teamspace guys have been working on similar things (such as team spaces working with plain members). From what I know, Teamspace is more powerful and ambitious, possibly also a bit more complex. I must admit that the ability to work against plain Plone 3, starting from a clean slate was a strong driving force. I got to exercise a lot of things that we want people to be able to do - I even fixed a few Plone 3 bugs in the process, which I probably wouldn’t have found before the release otherwise.
Both projects are in the Cheesehop. Both have README.txt files with doctests and background info. If you want to see how you may code against Plone 3, or you need a simple, lightweight project workspace, give it a go!
If you just want to have a browse of the code, look in the Collective.
May 8, 2007 at 10:00 pm
[...] Martin Aspeli: Developing with Plone 3 - borg.localrole and borg.project [...]
May 8, 2007 at 10:53 pm
Why would you release plone add-on products to the cheeseshop rather than the Plone Collective?
May 8, 2007 at 10:54 pm
Never mind. Commented before I read the last sentence.
May 8, 2007 at 11:04 pm
The Cheese Shop and the Collective are not similar. The Collective is a subversion repository, the Cheese Shop is a bit more like http://plone.org/products in that it lists projects and downloadables.
The advantage of a Cheese Shop release is that you can install things with easy_install or zc.buildout (really: with setuptools) more easily. Also, it’s dead-simple to make such a release - one command on the command line.
I want to list this in http://plone.org/products as well eventually.
May 9, 2007 at 6:15 am
The link to the collective should read:
http://dev.plone.org/collective/browser/borg/components
August 9, 2007 at 5:07 am
I’ve installed both of these from source and eggs. I can’t get project to show up in the Pl3 installer so I can install it. It’s there OK in the Zope product folder. What am I doing wrong? Thanks.
August 9, 2007 at 7:30 am
Jim - did you add a ZCML slug? In etc/package-includes in your Zope instance, add in a file called configure-borg.project.zcml… or: if you have your own product managing a site policy, then add that line to its configure.zcml.
August 9, 2007 at 1:37 pm
I didn’t. I’ll give that a try - and pull out my Zope3 book for some more reading! Thanks for the help.
August 10, 2007 at 12:32 am
Yep-all set. Thanks.
February 7, 2008 at 11:01 pm
Adding borg.project to your buildout.cfg:
— buildout.cfg (revision 24)
+++ buildout.cfg (working copy)
@@ -21,6 +21,7 @@
eggs =
elementtree
PIL
+ borg.project
# Reference any eggs you are developing here, one per line
# e.g.: develop = src/my.package
@@ -72,6 +73,7 @@
# e.g. zcml = my.package my.other.package
zcml =
Products.qi
+ borg.project
products =
${productdistros:location}
This works, and I can add ‘borg.project’ (and
dependencies) via QuickInstaller; after adding
a “project workspace”, however, the “Edit” tab
policy settings seem borked:
- The “search” and “update” buttons for managers
and members are no-ops.
- The “addable types” list gets saved, but not
enforced.