Hikiハック
30分プログラム、その53。Hikiをちょっとだけ改造しよう。
内輪Wikiで、TODO管理をしていたら、誰かから『sageでやれ』と怒られた。いい機会なので、sageでやりやすいように改造しよう。
- sage自体は「タイムスタンプを更新する」チェックボックスをはずせばいい
- 毎回はずすのは面倒
- そうだ、前回、はずしたかつけたかを記憶させておけばいいんだ
で、この辺の処理はhiki/command.rbでおこなわれているので、そのあたりを読んでみると
- cmd_saveで、データを書きこんだあと、dbにキーワードやタイトルなどの属性を保存している
- cmd_viewで、data[:update_timestamp]に' checked'が代入される
なので、保存時にチェックボックスの値を保存して、表示するときにそれに従ってチェックボックスを設定するように変更。
Index: hiki/command.rb =================================================================== --- hiki/command.rb (リビジョン 5) +++ hiki/command.rb (作業コピー) @@ -320,7 +320,7 @@ data[:differ] = differ data[:body] = preview_text ? formatter.apply_tdiary_theme(preview_text) : nil data[:keyword] ||= CGI.escapeHTML( @db.get_attribute(page, :keyword).join("\n") ) - data[:update_timestamp] ||= ' checked' + data[:update_timestamp] ||= @db.get_attribute(page, :update_timestamp) == 'off' ? '' : ' checked' data[:page_title] = page_title data[:form_proc] = @plugin.form_proc data[:session_id] = @session_id || '' @@ -364,7 +364,8 @@ if @plugin.save( page, text, md5hex, update_timestamp ) keyword = @params['keyword'][0].split("\n").collect {|k| k.chomp.strip}.delete_if{|k| k.size == 0} - attr = [[:keyword, keyword.uniq], [:title, title]] + attr = [[:keyword, keyword.uniq], [:title, title],[:update_timestamp, + update_timestamp ? update_timestamp : 'off']] attr << [:editor, @plugin.user] @db.set_attribute(page, attr) else
- リビジョン5っていうのは、勝手につかってるSubversionのリビジョンであって、本家とは関係ない