読者です 読者をやめる 読者になる 読者になる

( ꒪⌓꒪) ゆるよろ日記

( ゚∀゚)o彡°オパーイ!オパーイ! ( ;゚皿゚)ノシΣ フィンギィィーーッ!!!

Formの入力内容をCookieに自動保存し、あとで復元できるようにするTracPluginを作りました。

Trac Plugin

またまたTracのPluginです。


たとえば、新しくチケットを書いているときに、ブラウザがクラッシュしたとか、操作を間違えて頑張って入力したチケットの内容が時空の彼方へと消え去ったりとか、悔しい思いをされたかたは多いのではないでしょうか?




f:id:yuroyoro:20100119173151p:image
『おっ・・・・ お師・・・・・・ お師さ〜〜〜〜ん!! な・・・なぜ こんなに苦しいのなら悲しいのなら・・・・・・・・・・・ Tracなどいらぬ!! おれはその時からTracをすてた! いや帝王の星がめざめたのだ!! 帝王にTracなどいらぬ!』





などという悲劇を引き起こし、Excelのバグ票で聖帝十字陵を築いたり七つの傷を持つ北斗の男に倒されたりしないように、こんなPluginを作りました。


shibuya-tracのrepositoryにコミットしてます。

これはなに?

FormAutoSavePluginといいます。


rikrikrik.com - jQuery autosave plug-inというjQueryプラグインを利用して、チケットの登録画面などのフォームの入力内容を一定間隔でCookieに保存し、あとで復元できるようにするものです。
Trac 0.11.5.ja1とMacOSX Safari4.0.4とFirefox3.5.5で動作確認しています。


ここまで頑張って入力して。。。
f:id:yuroyoro:20100119173458p:image


ブラウザがクラッシュ! 入力したのが消えた (;´Д`)
f:id:yuroyoro:20100119173459p:image


落ち着け! "Cookieから復元"を押すんだ!
f:id:yuroyoro:20100119173152p:image


復元! ふぅ、あぶなかったぜ。。。(´∀`)
f:id:yuroyoro:20100119173458p:image


インスコ

shibuya-tracリポジトリからsvn coでチェックアウトしてください。

svn checkout http://svn.sourceforge.jp/svnroot/shibuya-trac/plugins/FormAutoSavePlugin/trunk/0.11/ FormAutoSavePlugin

チェックアウトした後、FormAutoSavePluginディレクトリに移動し、以下のコマンドでeggを作成します。

cd FormAutoSavePlugin/
./setup.py bdist_egg


distディレクトリにFormAutoSavePlugin-1.0-py2.5.eggというファイルが作成されるので、このファイルをtracのプロジェクト環境があるディレクトリのpluginsディレクトリにコピーしてください。

使い方

プラグインが有効になると、Tracのチケット登録画面の下の方に、こんなリンクが表示されるようになります。
f:id:yuroyoro:20100119173152p:image


この状態では、一定時間(デフォルトでは5秒おき)にCookieに保存されます。ブラウザを閉じたりした後に、同じURLに戻ってきた場合は、この"Cookieから復元"リンクをクリックすることで、保存された状態にFormを復元できます。

設定

trac.iniの"components"セクションの末尾に、以下のように記入してプラグインを有効にしてください。(IniAdminプラグインの画面から有効にしてもおけです。)

[components] 
...省略
formautosave.* = enabled


動作をカスタマイズするには、trac.iniに"formautosave"セクションを追加して、設定を行ってください。

[formautosave]                                                                                                     
interval = 5000

設計項目の内容は以下の通りです。

項目 説明 デフォルト
interval 自動保存を実行する間隔をミリ秒で指定します。デフォルトは5秒です。 50000


設定は、IniAdminプラグインの画面からも行うことができます。

f:id:yuroyoro:20100119173500p:image