Prevent loss of unsaved form data

Notice: This plugin is unmaintained and available for adoption.


This plugin prevents unsaved form data loss by providing a restore button to context-navigation.

Suppose you write a lengthy wiki page, but accidentally hit refresh or the back button. With this plugin, a link called "Restore Form" will allow you to retrieve your data from your last save. Any time you navigate away from a form page, the contents will be saved in a cookie and when you return to it, you can simply click "Restore Form" to retrieve it.

Screenshot of the "Restore Form" link with German localization ("Wiederherstellen") provided by DataSaverPlugin within Trac 0.12:

»Restore Form« button of a patched version of DataSaverPlugin in German Trac 0.12 test environment

It could previously be found among the meta-navigation bar, but was moved since changeset [8702], see #7518 for details.

Bugs/Feature Requests

If you have any issues, check existing bugs and feature requests here.

In case this is a new issue, you're welcome to create a new ticket.

Patches welcome in favor of complete files, in case you have already developed some better code. Include version, if patch is not against current stable release or trunk development version.


7 / 7


2 / 3


2 / 2


Download the zipped source from here.


You can check out DataSaverPlugin from here using Subversion, or browse the source with Trac.


General instructions on installing Trac plugins can be found on the TracPlugins page.

If you are taking the install-into-Python route, add the following to your trac.ini file:

datasaver.* = enabled

About i18n/l10n support

The development version of this plugin is prepared for localization.
But English message texts are still the (POSIX) default. If this isn't your preferred language, you can

  1. check if it is already available from the Trac plugin l10n project at Transifex or
  2. do it yourself, see the l10n cookbook page for Trac plugins for more details.

Contributing your translation is highly appreciated.
You could send it to the plugin's maintainer or contribute to Trac plugin l10n project via Transifex:

Top translations: Trac_Plugin-L10N » datasaver

Top translations: Trac_Plugin-L10N » datasaver-js

Kindly provided by

Preparing the plugin from source requires the additional step of compiling message catalog files. This will be done automatically by invoking a suitable Babel install. Walk through:

cd datasaver
python ./ compile_catalog -f
python ./ bdist_egg

Step 2 is almost obsolete, and only needed to include translations marked as # fuzzy by the translator, since the compilation before packaging will do message catalog compilation compile only without the extra -f argument. Again, for more details see the l10n cookbook page for Trac plugins.

Recent Changes

17318 by rjollos on 2018-12-10 22:39:30
TracDataSaver 3.0dev: Replace deprecated unload

The method is deprecated in jQuery 1.8 and removed in
jQuery 3.0.

Patch by clemens.

Fixes #13509.

17317 by rjollos on 2018-12-10 22:32:20
TracDataSaver 3.0dev: Require Trac >= 1.0

Changed plugin name in preparation for publishing to PyPI.
Remove old plugin using pip before installing new plugin:

$ pip uninstall DataSaverPlugin

Refs #13509

15561 by rjollos on 2016-05-29 07:28:33
2.0dev: Check if js resource exists before adding

Fixes #12785.



Author: rharkins
Maintainer: none (needsadoption)
Contributors: jun66j5

Last modified 8 years ago Last modified on Sep 12, 2016, 7:50:30 PM