Personal tools
Skip to content. | Skip to navigation
A table input component for Plone. Uses Javascript to make entering tabular data more user friendly process - there are no round trip HTTP requests to the server when inserting or deleting rows. Features o Any number of columns set by a developer o Any number of rows filled by a user o Insert and deleting rows without submitting a form o Many different column types
A Zope 2 catalog index with support for indexing of recurring events, following the icalendar standard. It is a drop-in replacement for the Zope2 DateIndex and will produce the same results for non-recurring dates. The DateRecurringIndex accepts following parameters: id Required. The name of the field or object attribute to be indexed. recurdef Required. The name of the object attribute, which returns the icalendar rrule (recurrence rule) string. until Optional. The name of the objects attribute, which returns the date, until the recurrence should happen. The recurrence definition can also contain an UNTIL component. If both are defined, the recurrence calculation stops whenever the first until-date is met. If not given at all, there is a MAXCOUNT ceiling constant, defined in plone.event.recurrence, which defines the maximum number of occurences. Datetime.DateTime vs. datetime.datetime Inside Zope2 everybody uses DateTime.DateTime or iow the Zope-DateTime. At time of writing Zope-DateTime (around 1998) there was no good date/time implementation in python. But these days we have a better implementation. Even if the pythons datetime implementation has its problems, together with pytz for timezone handling it is very mature. So, why is it covered here? Just because dst-handling over recurring events works only if the start and until values are non-naive python datetimes. Just keep it in mind when using this index: If you use recurring dates and you want dst-adjust make sure your implementation returns a python datetime. And also keep in mind: If youre i.e. in Austria with CET timezone, add a recurring date: it will look fine to you, every day at 11:00am, doesnt matter if DST or not, your event happens. If you go international and your event is shown in a different timezone - or in the same in a country without DST at all - it might differ and is not always at the the time.
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.