I do not know how this could be generalized for all apps. In the
simple
cases -- maybe. Consider the following scenarios that you would
need to
handle:
* Change happens, the updated data affects the next 5 actions (via
the
current user or another user(s)) and then the user requests an undo --
hard. Imagine a change such as a picklist item deletion -- where
other
users ordering the bundle that place orders after the fact have a
bundle
that is limited via the deletion. admin users goes woops and trys
to undo
-- now how do you reconcile the state?
* Change happens from multiple sources creating a complex merge
list of
different fields -- "undoing" this in different orders or pieces
may leave
the data state in a poor state.
Undo (or at least intelligent undo) is a very hard problem in all
but the
simplist of shared applications.
Undo is not easy to implement when then is shared data (like in your
examples).
But when it's about a shared application letting multiple users
manipulate their very own private data, IMHO it's definitely a
manageable problem.
Rememberthemilk is a good example of this.
The OK or Cancel button is not there because of lazy programming
practices,
it is usually there because you are entering a state where a
backout is too
hard to do or just does not make sense because of the context.
You may be
better served just putting in undo actions in the places where the
action
makes real sense and ignore a list apart's box top screaming.
I agree, not every action is undoable and the article in A List Apart
goes a bit too far on usability and lacks about feasibility/
usefulness. But I still think a common infrastructure could help in
some cases. Desktop apps have had this kind of functionality for
years, yet it is not too common in web applications.
--
Matthieu Codron
[EMAIL PROTECTED]
_______________________________________________
List: Catalyst@lists.rawmode.org
Listinfo: http://lists.rawmode.org/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/catalyst@lists.rawmode.org/
Dev site: http://dev.catalyst.perl.org/