[Seaside] Re: strong undo
philippe.marschall at gmail.com
Mon Dec 16 12:31:28 UTC 2013
On Thu, Dec 12, 2013 at 11:38 PM, Paul DeBruicker <pdebruic at gmail.com> wrote:
> Something like that. I don't know where to find a definition I can point
> to. So to be less vague this is what I have in mind.
> As you both know the back button 'undoes' your navigation on regular links
> but can't undo a form submission or ajax requests that change things in the
> app. I'd like to be able to offer a way to undo/redo those too, when
> appropriate. To make experimenting and mistakes less costly for a user. So
> that they do not have to remember what they changed, and when.
> Ideally the undo of the navigation and the undo of the app changes would be
> tied either to the back button or just a button on the page. One canonical
> spot for 'undo-ing' things a user does. I know I can't undo things like
> sending emails, but I'd like to be able to say: if you spend a half hour
> experimenting on this you can get back to where you were exactly before you
> If it were a single user app I could probably get away with keeping a stack
> of model states for the user's whole model. Since it is a multi-user app
> that seems really complicated. User A's temporary changes may or may not
> conflict with user B's permanent changes.
> Maybe, as a first step, what I need is to just let a user make a copy of
> their whole model and pretend there is a playground/walled garden/simulator
> where a they can do experiments, and then when they're done either let them
> adopt the copy as their new model or keep it to mess with later.
> Anyway, if you have any ideas I'd love to hear them.
So you would like to be able to undo a database insert for example?
Strictly speaking through #states you can make any object backtracked.
The messages sent to it are #snapshotCopy and #restoreFromSnapshot:.
More information about the seaside