Overview and Prerequisits
Preamble
While I've found good documentation on may different aspects of Plone customization and development, I found it difficult to bring the information from those sources together into something I could use to accomplish a customization goal.This documentation is based on my first pass at custom content type and my first major Plone customization. As such, I'm sure it's not done in an optimal manner, and probably won't work for you at all. In fact, I have no idea what I'm doing whatsoever. So, consult this information at your own risk. Also, if you know a better approach to the things I'm doing, please post a comment so that I can learn from that as well.
Overview
Up until this point, my organization had simply used Plone for storing uploaded files on the intranet. PDFs, Office documents, etc and the greatest selling points for us on this tool was it's ease of use and fantastic search capibilities. Users had broad access to upload and modify files, and workflow was largely ignored.We needed a business suggestion submittal system that would take anonymous submissions from intranet users and allow those submissions to go through an approval/rejection process that was visible to the end users.
We wanted to be able to add custom content via a form, and have that data change permissions as it traveled through a proper workflow. We also wanted to to allow anonymous intranet users to be able to make these submissions, and have visibility to the documents as they progressed through the workflow.
I started by building in archtype by hand, which worked. But, as I was/am new to Plone/Zope, it was a little hard to get started, and I didn't feel like I was making good progress. Then in my research, I found a better way. I could design my data form and my desired workflow in UML and have that converted to the base Plone product. Once that was customized and the correct permissions defined I could finish my project in a very short period of time.
Prerequisites
Most of the tutorials I found were not targeted at the complete novice, so I'll try to explain in as much detail as possible.That being said, setup and installation is beyond the scope of this document. You will need the following software, though:
- ArgoUML
- Be sure to install the ArchGenXML profile listed at the bottom of this ArgoUML+ArchGenXML tutorial.
- ArchGenXML
- Plone 2.1+
- Python
My development environment is Plone 2.5 running on WindowXP, though this process should work regardless of your environment. The code I developed in this env was deployed to a Plone 2.1 instance running on Redhat Enterprise Linux 3.