Redmineのプラグイン製作

RedmineプラグインにWiki機能をつける

投稿日:2015年4月4日 更新日:

環境

Wiki機能というよりは、Redmineのリッチなテキストエリアのパーツ群を使えるヘルパーの紹介になる.
Environment:
* Redmine version 3.0.1.devel
* Ruby version 2.1.5-p273 (2014-11-13) [x86_64-darwin14.0]
* Rails version 4.2.1
* Environment development
* Database adapter SQLite

フォーム

テキストエリアを追加する

クラスにwiki-editを追加すると、textareaをちょうど良い幅にしてくれる.

Wikiメニューバーを表示する

テキストエリアのidを指定する.

screenshot

表示

表示部をつくる

wikiクラスをつけて、textilizableヘルパーを使えばOK

プレビュー

やること

フォームにプレビューをつけるのは結構めんどい.
preview_linkというヘルパーが用意されていて、フォームの中からJavaScriptでpreviewというアクションにフォームのhtmlのidを指定すると、jQueryでフォームをシリアライズしてpostしてくれる.
次に、controllerで@textにtextareaの値をいれて、common/previewというパーシャルをrendarすると、ターゲットのdivにプレビューを表示してくれる.
何を言っているかわからないと思うが、application_helper.rbとかのpreview_linkからたどっていけばだいたいわかる.

View

preview_linkを設置する.

そして、form_forでidを指定する.

さらに、routes.rbでpreviewを設定しておく.
これで、jp_people_preview_path @objectで指定のコントローラーの指定のアクションを呼んでくれる.

と思ったら、新規作成の方のpostが404で呼べていなかった.
ので、次の通り修正した.

ちなみに、preview_linkのソースはこれ.

ターゲットはデフォルトでpreviewなので、viewにターゲットのdivを設定しておく.

そして、submitPreviewのソースはこれ.

Controller

で、@textを指定して、common/previewというパーシャルを呼べばOK
submitPreviewでフォームをparamsにシリアライズしてくれるので、普通にparamsから値を取り出すことができる.

screenshot

オートプレビュー

JavaScriptで、テキストエリアの入力を監視すれば、オートプレビューにもできる.
Redmine の wiki 編集画面を auto preview にする
ただし、プレビューの描画にいちいちサーバにアクセスしているので、サーバへの負荷を考慮する必要がある.
上のリンク先では1秒ごとに設定して負荷を軽減する工夫をしている.

-Redmineのプラグイン製作
-,

執筆者:

関連記事

Redmineプラグインで既存のモデルを修正する

By: Allen McGregor – CC BY 2.0 プラグイン インターナルを参考にした 目次1 Rubyのモジュール2 既存のモデルを拡張するRedmineプラグイン3 App …

Redmine3におけるインテグレーションテスト、UIテスト

By: Karoly Lorentey – CC BY 2.0 目次1 インテグレーションテスト?UIテスト?2 インテグレーションテスト3 UIテスト インテグレーションテスト?UIテス …

Redmineプラグインでマイページにオリジナルのブロックを追加する

目次1 追加方法は簡単2 翻訳3 参考になるプラグイン 追加方法は簡単 app/views/my/blocks以下にパーシャルを作っておいておけばOK www.redmine.org/projects

Rails4になったRedmineはprotected_attributesを使っているので注意が必要

By: Renaud Camus – CC BY 2.0 Rails4になったRedmineはprotected_attributesというgemを使っていますので、Rails3時代と同じ …

Redmine2.5でプラグイン作成のチュートリアルやってみた 3〜設定

目次1 前回2 init.rb3 設定画面4 値の使い方5 情報 前回 Redmine2.5でプラグイン作成のチュートリアルやってみた Redmine2.5でプラグイン作成のチュートリアルやってみた …