Many desktop applications offer the possibility for the user to
undo the recent changes : a similar undo feature has now been
integrated into the CubicWeb framework.
Because a semantic web application and a common desktop
application are not the same thing at all, especially as far as
undoing is concerned, we will first introduce what is the undo
feature for now.
A CubicWeb application acts upon an Entity-Relationship model,
described by a schema. This ensures some data integrity
properties. It also implies that changes are made by group called transaction : so as to insure the data integrity the transaction is completely applied or none of it is applied.
What may appear as a simple atomic action to a user can actually consist in several actions for the framework. The end-user has no need to know the details of all actions in those transactions. Only the so-called public actions will appear in the description of the an undoable transaction.
Lets take a simple example: posting a "comment" for a blog entry will create the entity itself and the link to the blog entry.
For now there are two ways to access the undo feature when
it has been activated in the instance configuration file with
the option undo-support=yes. Immediately after having done something the undo** link appears in the "creation" message.
Otherwise, one can access at any time the undo-history view
accessible from the start-up page.
This view shows the transactions, and each provides its own
undo link. Only the transactions the user has permissions to
see and undo will be shown.
If the user attempts to undo a transaction which can't be undone or whose undoing fails, then a message will explain the situation and
no partial undoing will be left behind.
The undo feature is functional but the interface and configuration
options are quite limited. One major, planned, improvement would be enable the user to filter which transactions or actions
he sees in the undo-history view. Another critical
improvement would be to selectively enable the undo feature on part of the entity-relationship schema to avoid storing too much
data and reduce the underlying overhead.
Feedback on this undo feature for specific CubicWeb applications is welcome.
More detailed information regarding the undo feature will be published in the CubicWeb book when the patches make it through the review process.