Tracのヘッダロゴをプロジェクト名に置き換える、TracReplaceLogo pluginを作成しました

前回までに環境を作ったので、念願のTracヘッダロゴを単なるプロジェクト名にするプラグインを作りました。

一応 Trac0.12 ja版で動作させて動きますが、自己責任でお願いします。
多分1.0でも動くと思われますが、やってないのでわかりません。

hrsano645/TracReplaceLogo

実はgithubにコードをプッシュするのも初めてです。https認証出来るようになったなんて知らなかった。

それとSourceTreeも初めて使いました。まだプッシュとコミットぐらいしかやっていませんが非常に快適に感じてます。

概要

このプラグインは、Tracのヘッダロゴをプロジェクト名に置き換える機能を提供します。

仕組みは単純で、Tracサイトにプロジェクト名を仕込んだMetaタグをプラグイン側で処理し、jqueryでヘッダロゴとMETAタグ内のプロジェクト名に置き換えているだけです。今のところ、置き換えのタグはh1です。

ビフォー

[pe2-image src="http://lh6.ggpht.com/-5RKUF8JWyEo/Un5Qv8bkRkI/AAAAAAAAJYw/gR5fpHHnnLQ/s144-o/%2525E3%252582%2525B9%2525E3%252582%2525AF%2525E3%252583%2525AA%2525E3%252583%2525BC%2525E3%252583%2525B3%2525E3%252582%2525B7%2525E3%252583%2525A7%2525E3%252583%252583%2525E3%252583%252588%2525202013-11-10%2525200.07.19.png" href="https://picasaweb.google.com/100906785915765419544/TracReplaceLogoPlugin#5944277342781457986" caption="スクリーンショット 2013-11-10 0.07.19.png" type="image" alt="スクリーンショット 2013-11-10 0.07.19.png" ]

アフター

[pe2-image src="http://lh4.ggpht.com/-cd2FYKZs1gY/Un5Qv3-qlII/AAAAAAAAJY0/wJTCUdYwzvo/s144-o/%2525E3%252582%2525B9%2525E3%252582%2525AF%2525E3%252583%2525AA%2525E3%252583%2525BC%2525E3%252583%2525B3%2525E3%252582%2525B7%2525E3%252583%2525A7%2525E3%252583%252583%2525E3%252583%252588%2525202013-11-10%2525200.07.48.png" href="https://picasaweb.google.com/100906785915765419544/TracReplaceLogoPlugin#5944277341586494594" caption="スクリーンショット 2013-11-10 0.07.48.png" type="image" alt="スクリーンショット 2013-11-10 0.07.48.png" ]

詳しくはgithubを御覧ください。

裏話

Tracのプラグインの書き方と仕組みはまだ良くわかっていません。

プラグインを使ってTracサイトのテンプレートをある程度自由に扱えるか調べたものの難しいらしいです。

ThemeEnginePluginというテーマを利用できるプラグインがあるのですが、これでオリジナルのテーマを作れば良いかも知れません。

そうではなくて、単純にヘッダロゴを消したかった!わけなので、もっと楽にできないかと探して思いついたのですが。

TracはJQuery内蔵されているので、DOM経由でヘッダロゴをプロジェクト名の見出し1(h1)に変えるといったことができないかと考えました。

アイディアの元はTracWysiwygPluginです。このプラグインも多くを拝借させていただいています。本当に有難うございました。

JQueryで行うこと自体はそれほど問題はなかったものの、どうやってプロジェクト名をJavascriptに渡すべきかわかりませんでした。最初はこれを考えたのですが

  • Postパラメーターに入れる
  • できそうですが方法がわからなかった。
  • Genshiのテンプレートを使う
  • Javascriptでは利用できないっぽいです。

(2013/11/10:このエントリ書いている段階で気が付いたのですが、trac.web.chromeの関数一覧にadd_script_dataというものがあって、多分これでJavascriptへ値を渡す(JSON形式らしいです)ことができますね・・・)

苦し紛れに考えたのは、trac.web.chromeにあるadd_meta関数を利用することです。これはTracサイトのheadタグ内にmetaタグを挿入できるらしいです。

metaタグに適当な名前とコンテンツを入れておいて、JQueryで属性を参照することで、値を渡すことが出来るようになりました。

Metaタグを自由に定義して利用して良いものかいまいちわからなかったけど、Tracの情報をJavascriptへ渡すにはこの方法しか思いつかなかった><

今後は

更新予定は特に無いのですが、このプラグインを有効にした時点で置き換えたプロジェクト名のリンクをTracプロジェクトのURLへ変更する(traciniのheader_logoセクションのlinkをプロジェクトのURLにする)ことをやろうと思います。Tracプロジェクトを有効にした時に実行する方法が見つかればですが。

Trac-hackへ登録するようなクオリティではないと思われるので、やる予定はありません。(そんな滅相もない話です)

参考

About Me

買ったり作ったり考えたり試したの日々の記録です