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プラグインでマイページにオリジナルのブロックを追加する

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

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

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

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

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

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

目次1 前回2 情報3 ViewHook4 フックの名称を調べる5 Redmine::Hook::ViewListenerを継承したクラスをつくる6 使いたいフックと同じ名称のメソッドを実装する7 i …

Redmineでプロジェクトの一覧を表示するプラグインつくった〜projects_table

目次1 機能2 作った理由3 リポジトリ4 同名のプラグイン発見 機能 プロジェクトの一覧を表示する 期日が一番近いバージョンを表示する 最後に更新したチケットを表示する 期日が一番近いチケットを表示 …