Personal tools
Skip to content. | Skip to navigation
CMFQuestions is a simple product written to collect data from people - feedback on a course, simple data collection etc. Has support for multiple choice and free answer questions.
Products.CMFQuickInstallerTool ============================== Features -------- CMFQuickInstallerTool is a facility for comfortable activation/deactivation of CMF compliant products inside a CMF site. Therefore it has to be installed as a tool inside a CMF portal, where it stores the information about the installed products. The requirements for a product to be installable with QuickInstallerTool are quite simple (almost all existing CMF products fulfill them):: External Product: The product has to implement an external method 'install' in a python module 'Install.py' in its Extensions directory. OR The product ships with a GenericSetup extension profile and has no install method. It can still use an uninstall method for custom uninstallation tasks though. Products can be uninstalled and QuickInstellerTool removes the following items a product creates during install: - portal actions, - portal skins, - portal types, - portalobjects (objects created in the root of the portal), - workflows, - left and right slots (also checks them only for the portal), - resource registry entries Attention: QuickInstallerTool just tracks which objects are ADDED, but not what is changed or deleted. Usage ----- In the ZMI click on portal_quickinstaller. The management screen allows you to select products for installation and uninstallation. You can browse into the installed products and see what was created and the logs of the install process. Customized uninstall -------------------- In order to use a customize uninstall, the following requirements must be met:: External Product: The product has to implement an external method 'uninstall in a python module 'Install.py' in its Extensions directory. Please note that the customized uninstall method is invoked before (and in addition to) the standard removal of objects.
Integration testing framework for CMF CMFTestCase is a thin layer on top of the ZopeTestCase package. It has been developed to simplify testing of CMF-based applications and products.
This product declares a topic content type for the Zope Content Management Framework (CMF).
CMFUid introduces a simple unique id implementation. Implementation ============== The supplied tools attach the unique ids to the objects. The objects do not have to be aware of unique ids. The current implementation depends on the portal catalog to find an object of a given unique id. The interfaces do not imply the use of the catalog (except the IUniqueIdBrainQuery). Which Tool does What? ===================== The 'portal_uidgenerator' tools responsibility is to generate unique ids. The 'portal_uidannotation' tool is responsible to attach unique ids to a content object, and enforce rules about what happens on object move/create/delete. The 'portal_uidhandler' manages registering and accessing unique ids. This design was chosen to allow users replacing only parts of the functionality without having to understand the whole thing. Unique Id API ============= 'portal_uidhandler' implementing 'IUniqueIdHandler' is the main API for playing with unique ids. Usage ===== 'portal_uidhandler' fully implements IUniqueIdHandler (IUniqueIdSet for registering/unregistering unique ids, IUniqueIdQuery for queries and IUniqueIdBrainQuery for more efficient queries by returning catalog brains instead of objects). The current implementation of get/queryBrain and get/queryObject do not return invisible objects (and brains of invisible objects). By invisible objects, we mean objects that would be filtered out by portal_catalog.searchResults due to expiry/effective date and/or user roles. It is often necessary to avoid this filtering in an application. To do this, use the unrestrictedGet/QueryBrain and unrestrictedGet/QueryObject as this will avoid 'None' results. Have a look at the interfaces. CMFUid's functionality is used by CMFDefault's favorite content type to follow linked objects. The favorite content type works as before if CMFUid is not installed.
The Zope ClockServer product provides a mechanism for users to call Zope object methods without the use of an external clock source (e.g. cron/wget). It operates by acting as a medusa "server", essentially coopting Zope's asyncore mainloop and injecting "fake" requests into Zope's ZPublisher. Despite the complicated description, it's rather easy to use.
Provides a archetypes field validator for content types of files
A Plone product that enables you to add portlets to the central column in a page
This product provides fully customizable workflows for the CMF portal_workflow tool. Developing a workflow ===================== This tool is easiest to use if you draw a state diagram first. Your diagram should have: - States (bubbles) - Transitions (arrows) - Variables (both in states and transitions) Remember to consider all the states your content can be in. Consider the actions users will perform to make the transitions between states. And consider not only who will be allowed to perform what functions, but also who will be *required* to perform certain functions. On the "States" tab, add a state with a simple ID for each state on your diagram. On the "Transitions" tab, add a transition with a simple ID for each group of arrows that point to the same state and have similar characteristics. Then for each state choose which transitions are allowed to leave that state. Variables are useful for keeping track of things that aren't very well represented as separate states, such as counters or information about the action that was last performed. You can create variables that get stored alongside the workflow state and you can make those variables available in catalog searches. Some variables, such as the review history, should not be stored at all. Those variables are accessible through the getInfoFor() interface. Worklists are a way to make people aware of tasks they are required to perform. Worklists are implemented as a catalog query that puts actions in the actions box when there is some task the user needs to perform. Most of the time you just need to enter a state ID, a role name, and the information to put in the actions box. You can manage all of the actions a user can perform on an object by setting up permissions to be managed by the workflow. Using the "Permissions" tab, select which permissions should be state-dependent. Then in each state, using the "permissions" tab, set up the role to permission mappings appropriate for that state. Finally, you can extend the workflow with scripts. Scripts can be External Methods, Python Scripts, DTML methods, or any other callable Zope object. They are accessible by name in expressions. Scripts are invoked with a state_change object as the first argument; see expressions.stx. Once you've crafted your workflow, you hook it up with a content type by using the portal_workflow top-level "Workflows" tab. Specify the workflow name in the target content type's box.
DCWorkflowGraph is a DCWorkflow graphic viewer now. It uses Graphviz. I want to make it a graphic editor for DCWorkflow, just like what OpenFlowEditor does.