« チケット変更履歴の文字色を変えるプラグイン | Main | チケット変更履歴の文字色を変えるプラグインその3 »

2008.10.06

チケット変更履歴の文字色を変えるプラグインその2

 Tracのiniファイルから値を取得する場合は、color = self.config.get('ticketchangecolor', 'color', 'black')のような感じで記述すればOK。ただ、これだけだと、iniファイルを(シェルなどから)直接編集する必要があるため、IniAdminPluginを経由して編集できるようにしたいところ。

 そういう場合は、プラグインを記述しているクラスに対して、Option(他にListOptionやIntOption、BoolOptionなどがあるようです。config.pyにて定義されています)を指定すればOKのようです。「登録ボタン」などは、IniAdminPluginが自動的に構築してくれます。

上記の内容を反映したものとしては、こんな感じ。

# -*- coding: utf-8 -*-

from trac.core import *
from genshi.filters.transform import Transformer
from trac.web.api import ITemplateStreamFilter
from genshi.builder import tag
from trac.config import Option

class TicketChangeColor(Component):
    implements(ITemplateStreamFilter)

    Option('ticketchangecolor', 'color', 'black',
        doc = u"""チケットのステータス変更情報の文字色を設定します。
        色の名前あるいは#rrggbbの形式で指定します""")

    # ITemplateStreamFilter methods
    def filter_stream(self, req, method, filename, stream, formdata):
        color = self.config.get('ticketchangecolor', 'color', 'black')
        if (filename == 'ticket.html'):
            xpath = '//ul[contains(@class, "changes")]'
            stream |= Transformer(xpath).attr('style', 'color: %s' % color)
        return stream

IniAdminPluginが利用可能な環境においては、管理者画面のtrac.iniの部分に項目が追加されているはずです。

#もちろん、自前で設定画面を書くという手もあるかとは思いますが。

なお、このサンプルプラグインは、htmlのサニタイジングなどは行っておりませんので、取り扱いには注意するようにしてください(っていうか、それ以前にどの程度の実用性があるのか不明ですが(^^;)。

|

« チケット変更履歴の文字色を変えるプラグイン | Main | チケット変更履歴の文字色を変えるプラグインその3 »

Subversion・Trac・etc.」カテゴリの記事

Comments

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/3959/42685030

Listed below are links to weblogs that reference チケット変更履歴の文字色を変えるプラグインその2:

« チケット変更履歴の文字色を変えるプラグイン | Main | チケット変更履歴の文字色を変えるプラグインその3 »