作成したLokkaプラグインのまとめ

Lokkaプラグインをいくつか作りましたので、そのまとめを書きたいと思います。
Lokka本体との違いは、プラグイン部分以外はGemfile、i18n、public/admin/layout.hamlの3つです。プラグインなので、本当は本体に依存してはいけないのですが、ここぐらいが私の限界です。もちろん、JavaScriptを駆使して、layout.hamlプラグイン側から書き換えるという方法もあるのですが、そこまでやりたくないなと思いました。

lokka-elastic_admin_menu

Lokka管理画面の左サイドメニューを伸縮化させるプラグイン。Lokkaの左サイド(#aside)の仕様が変わらなければ、後で項目が増えても動くはずです。

http://github.com/nkmrshn/lokka-elastic_admin_menu

lokka-uploader

ファイルをアップロードするフロントエンドプラグイン
これだけでは正常に動作せず、バックエンドプラグインが必要。upload_filesテーブルをデータベースに作り、そこにファイル名などを保存します。投稿時、テキストエリアのツールバーに、専用のアイコンを表示し、サムネイルから画像を選択すると、テキストエリアに画像(imgタグ)を貼り付けます。
このプラグインの仕様は、『Lokkaにファイルアップロード機能を追加してみた』もご覧ください。

http://github.com/nkmrshn/lokka-uploaders *1

lokka-db_uploader

データベースにファイルを保存するlokka-uploaderのバックエンドプラグイン
upload_filesテーブルのdataフィールド(Text型)に、Base64エンコードして保存します。アップロードできるファイルは、1ファイル1MBまでとしましたが、Herokuなどデータベースの大きさに制限がある環境ではファイルサイズにご注意ください。
http://github.com/nkmrshn/lokka-db_uploader

lokka-file_uploader

ローカルストレージにファイルを保存するlokka-uploaderのバックエンドプラグイン
管理画面の[プラグイン]->[ファイル]で、保存先に[File]を選択。保存先の絶対パスを指定し、[編集]ボタンを押下してください。HerokuやGAEなど、ローカルストレージにファイルを作成できない環境では使えませんのでご注意ください。
http://github.com/nkmrshn/lokka-file_uploader

lokka-fotolife_uploader

はてなフォトライフに画像ファイルを保存するlokka-uploaderのバックエンドプラグイン
管理画面の[プラグイン]->[ファイル]で、保存先に[Fotolife]を選択。はてなIDとパスワードを指定し、[編集]ボタンを押下してください。フォルダ名は任意で、指定すればフォトライフにそのフォルダを作って画像ファイルを保存します。保存できる画像ファイルは、gif/png/jpg/bmpの10MB以内。
パスワードは、データベースのoptionsテーブルにBlowfishで暗号化して保存しますが、復号化する為にキーも保存しているため、データベースが流出すればパスワードがばれる危険性があります。このプラグインを使う場合は、その辺のリスクもご承知おきください。
http://github.com/nkmrshn/lokka-fotolife_uploader

最後に

これで、Lokkaのプラグイン作成は一区切りつけたいと思います。現状のLokkaは、プラグインを管理する機構がないので、Lokka本体に依存する部分がでてきてしまうためです。

  1. プラグインで使用するgemを、Gemfileと別にプラグイン側で管理する方法。(現状:Lokka本体のGemfileに書くしかない。)
  2. プラグインで使用するi18nのen/ja.yml。(現状:Lokka保体のen/ja.ymlに追記するしかない。)
  3. プラグインの読み込む順番。(現状:読み込む順番を設定できない。)
  4. プラグインの有効・無効。(現状:public/plugin/lokka-<プラグイン名>は全部有効。)
  5. プラグインのアップロード・削除機能。(現状:ターミナルのコマンドなどでプラグインファイルを追加・削除する必要がある。)
  6. public/admin/layout.hamlのdiv#aside(左側サイドメニュー)にプラグインのメニュー項目を追加。(現状:layout.hamlに追記するしかない。)

*1:git clone後、プラグインのルートディレクトリで「bundle exec rake db:migrate」してください。