[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[kagemai-users:0316] Re: ElementType.add_element_rendererについて
福岡です。
Mitsuru Shimamura san wrote:
| WikiのInterWikiNameもどきを仕込もうと思い
| replace.rbに追加すれば良さそうだとあたりをつけて作業していたのですが
| 同一のIDのフィールドに対しての操作が最後に記述した物しか有効にならなってくれません
ElementType::add_element_rederer で、同じIDのフィールドに対して複数の renderer が
登録されることをちゃんと考えていませんでした。
以下のパッチでどうでしょう。
Index: htmlhelper.rb
===================================================================
RCS file: /cvsroot/kagemai/kagemai/lib/kagemai/cgi/htmlhelper.rb,v
retrieving revision 1.2.2.1
diff -u -r1.2.2.1 htmlhelper.rb
--- htmlhelper.rb 24 Nov 2004 12:49:44 -0000 1.2.2.1
+++ htmlhelper.rb 26 Nov 2004 21:03:43 -0000
@@ -204,7 +204,11 @@
end
def self.add_element_renderer(thread, name, renderer)
- thread[:element_renderer][name] = renderer
+ if thread[:element_renderer].has_key?(name) then
+ thread[:element_renderer][name] << renderer
+ else
+ thread[:element_renderer][name] = [renderer]
+ end
end
def html_description()
@@ -221,9 +225,11 @@
end
def html_value(element, index_item = false)
- Thread.current[:element_renderer].each do |name, renderer|
- if name == element.id && (!renderer.index_only? || index_item) then
- add_temporal_renderer(renderer)
+ if Thread.current[:element_renderer].has_key?(element.id) then
+ Thread.current[:element_renderer][element.id].each do |renderer|
+ if !renderer.index_only? || index_item then
+ add_temporal_renderer(renderer)
+ end
end
end
ちなみに、
| ElementType.add_element_renderer(thread, 'body', ReplaceRenderer.new(/SA(\d?)/, '<a href="http://secunia.com/advisories/\1/">Secunia Advisory: SA\1</a>'))
の置換用の正規表現は /SA(\d+)/ でしょうか。たぶん。
--
福岡ともゆき <fukuoka@xxxxxxxxxxxxx>
http://www.daifukuya.com/