google-code-prettify

2006-10-20

Tracの各ページに情報の新鮮度を表示する


Trac0.8.1の各ページに、最終更新日からの経過時間を*の個数で表すようにした。*は1か月ごとに一つ減ってゆく。

まず、templates/wiki.csを以下のように書き換え、modtime関数(関数なのか?)を呼ぶようにする(真ん中の行を追加した)。

<?cs if wiki.action == "view" ?>
<div class="wikipage">Freshness: <?cs var:wiki.modtime ?></div>
<div id="searchable"><?cs var:wiki.page_html ?></div>


trac/Wiki.pyのWikiModuleクラスのrenderメソッドの最後に、以下のコードを追加する。

# add modtime
cursor = self.db.cursor()
cursor.execute ('SELECT time FROM wiki '
'WHERE name=%s AND version=%s'
'ORDER BY version ASC',
self.page.name, self.page.version)
res = cursor.fetchall()
if not res:
self.req.hdf.setValue('wiki.modtime', 'unknown')
else:
time_cnt = 10 - ((int(time.time()) - int(res[-1][0])) / (86400*30))
if time_cnt < 0: time_cnt = 0
time_str = '*' * time_cnt + "</font>"
if time_cnt < 3:
time_str = '<font color="#cc0000">' + time_str + "(rotten)"
elif time_cnt < 6:
time_str = '<font color="#cccc00">' + time_str + "(old)"
else:
time_str = '<font color="#00cc00">' + time_str + "(fresh)"
self.req.hdf.setValue('wiki.modtime', time_str)

Trac0.8.1で作ったので、最新のTracでは動作しないかも。

06/10/23:
resがnilだった時(本文が無い時)にエラーしてしまうのを修正。

0 件のコメント: