Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How does tinyMCE's undo work?

Tags:

undo

tinymce

One of my users has a major frustration with the undo feature in tinyMCE. Instead of undoing the last minor change, it undoes many changes. Is this a timing thing were a snapshot is taken every few seconds? Is this configurable?

Additional Information: The user is copying and pasting information from Word to the editor. Then cleaning up the crud that Word leaves behind. This includes deleting the extra blank lines between bullets, deleting extra garbage that the Paste from Word function leaves behind, etc. What happens is she does an oops and deletes too much. So she hits undo and it'll undo a lot more than the last oops. Making her do everything again. The undo has even completely removed all of the text she has pasted in initially (even though that wasn't the last edit).

like image 874
Mike Wills Avatar asked Mar 10 '11 21:03

Mike Wills


1 Answers

Undo works in a special way. There are undo steps (snapshots of the editors content) produced by tinymce when special events occur (return, delete, paste, ... ). There is no interval in what snapshots are taken.

You even may catch events and add your own undo steps. Here is an example (i use in one of my own plugins):

// save undo step when space is pressed
ed.onKeyUp.add(function(ed, evt)
  if (evt.keyCode == 32) {
    ed.undoManager.add();
  }
});

For more information have a look at the undomanager section of the tinymce api.

like image 87
Thariama Avatar answered Sep 28 '22 12:09

Thariama