Lokkathon #1でプラグインで管理画面を作れるようにしました。
サンプルとしてGoogle Analyticsのプラグインを作りました。
管理画面の作り方
管理画面からIDともしあれば、サブドメインを入力できます。(@nkmrshnさん作)
module Lokka
module GoogleAnalytics
def self.registered(app)
app.get '/admin/plugins/google_analytics' do
haml :"plugin/lokka-google_analytics/views/index", :layout => :"admin/layout"
end
app.put '/admin/plugins/google_analytics' do
Option.tracker = params['tracker']
Option.tracker_dn = params['tracker_dn']
flash[:notice] = 'Updated.'
redirect '/admin/plugins/google_analytics'
end
app.before do
tracker = Option.tracker
if !tracker.blank? and ENV['RACK_ENV'] == 'production' and !logged_in?
dn = Option.tracker_dn
tracker_script = ""
(snip...)
content_for :header do
tracker_script
end
end
end
end
end
end
管理画面を作るプラグインのコードはこんな感じです。管理画面のURLを '/admin/plugins/プラグイン名' にすると、プラグイン一覧のプラグイン名から自動的にリンクが張られます。
/admin/〜というURLには自動的に認証が係るので、プラグイン内で認証を気にする必要はありません。
テンプレートへの挿入
テンプレートの中にはheader, footerという外部から何かを挿入できるポイントがあります。(テーマ側でこのheader, footerが無い場合は何も起きません)
要はyieldなので、プラグインの中からそれぞれの場所にcontent_forしてあげればプラグインからテンプレートにタグを挿し込むことができます。
content_for :footer do
'<p>created by unk</p>'
end
この仕組を使えばjavascriptを使ったプラグインなどが簡単に作れそうです。