trac をプロジェクトのポータルサイトとして使うために

trac は標準でもかなり高機能なんだけど、使っているうちにそれなりに不満点は出てくる。
個人的に、標準では使いにくいと思うものがいくつかあって、今のところこれくらい。

  1. ユーザ管理
    -> 標準だとコマンドラインで trac-admin するしかない。
    -> サーバまで移動する or リモートログイン。面倒。
  2. ニュースの表示
    -> 一番目立つ WikiStart を編集するとか?
    -> ニュースであることが気付き難いし、過去のニュースが追えない。
  • 関連する情報へのリンク
    ->手動で関連情報にリンク。
    -> めんどくさいし、漏れが出るのは確実だろう。

あとは議論するための仕組み(-> DiscussionPlugin ?)とか、自分のタスク一覧確認(-> デフォルトのレポート7?)が必要かとも思うけど、標準でもなんとかなるように思う。

trac の場合、プラグインやマクロを使えばある程度はカバーできて、自分もそうしている。
今までインストール方法はいくつかメモしたけど、ポータルサイトとして使うためにどこまで拡張するか書いてなかったのでメモしておく。
前提とする環境は trac 0.10 beta1 on Windows + Python 2.4 の環境。

ユーザ管理

ブラウザ上からユーザ管理を可能にするために、以下の3つのプラグインを使う。

WebAdminPlugin 0.1.1 dev-r2765

前提とする環境ではインストール済み。

AccountManagerPlugin 0.1.2

コマンドラインから easy_install を叩けばいい。
http://trac-hacks.org/svn/accountmanagerplugin/trunk だと失敗した。

c:\python24\scripts\easy_install http://trac-hacks.org/svn/accountmanagerplugin/0.9

trac.ini に以下の設定を追加する。

[account-manager]
password_format = htpasswd
password_store = HtPasswdStore #0.10系だと必要らしい。
password_file = c:/repos/trac/.htpasswd
WebAdminUsersPlugin 0.1.0

ダウンロードしたzipを展開して、setup.py の3行目、4行目をコメントアウトした状態で setup.py を叩けばいい。

#setup.py のコメントアウト
#import ez_setup
#ez_setup.use_setuptools()
python setup.py install


上記3つのプラグインを有効にすると admin メニューに「User Accounts」というサブメニューが出来て、ユーザ管理が出来るようになる。

2006/09/20 追記
アカウントに直接権限を与えるのではなくて、developerとかmanagerとかグループを作成する。グループに権限を与えて、そのグループにアカウントを所属させるようにすると楽。

ニュース表示

Trac Hacksっぽくニュースを表示するために、以下の3つのプラグインを使う。

TagsPlugin 0.4

TracTags-0.4-py2.4.egg をダウンロードして、easy_install。

c:\python24\scripts\easy_install TracTags-0.4-py2.4.egg
TracBlogPlugin 0.2.1 dev

ダウンロードしたzipを展開して、0.10フォルダにある setup.py を叩けばいい。

python setup.py install
NewsFlashMacro 0.1 (マクロと言いながらプラグイン?)

ダウンロードしたzipを展開して、0.9フォルダにある setup.py を叩けばいい。

python setup.py install


次に trac.ini を以下のように編集する。

[components]
trac.wiki.web_ui.wikimodule = disabled # 追加
[trac]
default_handler = TagsWikiModule # WikiModule から変更


最後に上記3つのプラグインを有効にした状態で trac プロジェクトをアップグレードする。

python c:\python24\scripts\trac-admin c:\repos\trac\projectname upgrade


この状態で WikiStart 等に以下のように記述するとニュースが表示されるようになる。
(もちろんニュースを投稿している状態で)

2006/09/20 追記
1つ利点に気付いた。blog機能をニュース投稿のみに使って、そのRSSフィードをRSSリーダに登録するようにすれば、プロジェクトのMLにメールを流す必要がなくなる。ある程度の規模のプロジェクトならこの効果は大きいと思う。
[[NewsFlashStart]]
[[BlogPost(tag=(blog,news),readonly=1)]]
[[BlogShow(news,num_posts=3,hidecal=true)]]
----
過去のニュースは[/projectname/blog こちら]
[[NewsFlashEnd]]

関連する情報へのリンク

以下のマクロを使う。

BackLinksMacro

ダウンロードした BackLinks.py を c:\repos\trac\projectname\wiki-macros にコピーする。
あとはリンクを張りたいwikiページに以下のようにマクロを記述すればいい。

[[BackLinks(TargetWikiPage)]]

チケットにも同じような仕組みがあると助かるけど、今のところ見つからない。
これに関してはもう一工夫必要かと思う。

2006/09/20 追記
不具合?を見つけた。WikiPageNameにマッチしない単語でページを作ると、リンクしてなくてもその単語が含まれていれば一覧に表示されてしまう。

あると便利なもの

あとは必要に応じてマクロを追加するくらい。といっても使うのはこれくらいかな。

2006/09/20 追記
脚注に日本語が使えなくなっていた。結構致命的で、作者もアイデアが思いうかばないっぽい。