開発ブログ

株式会社Nextatのスタッフがお送りする技術コラムメインのブログ。

電話でのお問合わせ 075-744-6842 ([月]-[金] 10:00〜17:00)

  1. top >
  2. 開発ブログ >
  3. CMS >
  4. baserCMS >
  5. baserCMS3の自動保存プラグインをリリースしました
baserCMS3の自動保存プラグインをリリースしました

baserCMS3の自動保存プラグインをリリースしました

長い間スタッフブログから離れていましたナカエです。
記事を書くのも5か月ぶりくらいな気がします。お久しぶりです。


さてさて。


新規記事を作成中にうっかり戻るボタンやリンクをクリックして記事を消すという苦い経験は
baserCMSに限らずCMSやブログならよくあることですね。


もう一回この記事を書き直すのか……( ;∀;)


あの絶望といったら。


そして喉元を過ぎて熱さを忘れたころに


悲劇はまた繰り返す



私…すべての記事(主にうちのサイトの記事)を消滅する前に助け出したい。

 

自動保存プラグイン

そんなわけでこの度弊社では、前述のbaserCMS利用者(主に私です)の悩みを解決するbaserCMS3に対応したプラグインを開発しました。

固定ページとブログプラグインの新規登録ページにおいて入力データを自動保存し、再度新規登録画面を開いた際に復元するかどうかの選択を可能にします。

このプラグインさえあれば新規記事を編集中にページを移動したりブラウザを閉じてしまった場合も安心です。

 
仕様

フォームのデータをシリアライズしてブラウザのローカルストレージ(非対応のIEの場合はuserData Behaviorを利用)に保存します。
現在のところチェックボックス、ラジオボタンのデータの保存には非対応です。

導入方法についてはGitHubのリポジトリのページをご覧ください。

https://github.com/NextatBCPlugins/AutoSave

なお、ライセンスはMITライセンスです。
 

スクリーンショット

設定画面
autosave_config.png


復元の是非を問うダイアログ
autosave_restore.png


復元!
autosave_restored.png

 

 

プラグイン開発の感想

基本的にはCakePHPのイベントシステムをラップしたBcEventの仕組み(BcViewEventListener)を利用しています。
ViewのbeforeLayoutのタイミングで、
自動保存をオンに指定したコントローラー(ex. pages)とアクション(ex .admin_edit)の組み合わせを検出した際に
JSファイルとのJSコードを管理画面のHTMLに突っ込むという単純な動作です。

イベントの仕組みがあるとプラグインも柔軟に開発できていいですね。

残りはすべて偉大な先人のJSライブラリ頼みで余裕かと思っていたところ、
案外CKEdiorのイベント発火タイミングがなかなかの難敵でした。

フォームデータのシリアライズも未だ完璧ではないので今後ちょくちょくと修正していけたらと思います。


もしご利用された方で動作不具合・バグ・ご要望など連絡事項がございましたら、GitHubのIssueへどうぞ。



※ちなみにこのサイトはbaserCMS2系なので未導入です( ;∀;)
2014/04/19  baserCMS3系にアップデートしました。

2014/04/19  v0.9.0に不具合があったため、v0.9.1をリリースしました。導入テストをしてくださった方にはご迷惑おかけいたしました。
 
TOPに戻る