初めまして。Lilia と申します。
kw.rb のことでちょっと便乗させてください。
生成される検索リンクはプラグインの設定画面から編集できるように
なっていますが、フォーム内ではURL中の & が & と表示され
そのままサブミットして設定すると、生成されるリンクのURLが
http://www.google.com/search?ie=euc-jp&q=KEYWORD
ではなく
http://www.google.com/search?ie=euc-jp&q=KEYWORD
のようになってしまいます。
なので自分のところでは、フォーム表示時に CGI::escapeHTML() する
ように修正して利用しています。
http://nursery.s8.xrea.com/d/20040524.html
↑以前このことについて書いた記事
個人的な必要から
<%= kw 'キーワード', 'アンカー文字列', 'タイトル' %>
という風に title 属性も指定可能にしているため、余計な変更部分が
含まれますが、参考までに差分を添えておきます。
先に書いたフォームからの編集に関わるのは最後の一箇所だけです。
あまり Ruby に通じていず、おかしなところなどあるかもしれません。
どうぞよろしくお願いします。
--
Lilia <nursery@...>
http://nursery.s8.xrea.com/d/
--- plugin/kw.rb.orig
+++ plugin/kw.rb
@@ -4,6 +4,7 @@
# Parameters:
# keyword: keyword or InterWikiName (separated by ':').
# name: anchor string (optional).
+# title: title attribute (optional).
#
# @options['kw.dic']
# array of dictionary table array. an item of array is:
@@ -27,6 +28,11 @@
# Copyright (C) 2003, TADA Tadashi <sho@...>
# You can distribute this under GPL.
#
+=begin ChangeLog
+2004-05-24 Lilia <nursery at s8.xrea.com>
+ * kw: add the title attribute and allow users to specify it.
+ * add_conf_proc: escapeHTML.
+=end
def kw_parse( str )
kw_list = []
@@ -60,7 +66,7 @@
kw_dic
end
-def kw( keyword, name = nil )
+def kw( keyword, name = nil, title = nil )
@kw_dic = kw_generate_dic unless @kw_dic
show_inter = @options['kw.show_inter'] == nil ? true : @options['kw.show_inter']
@@ -71,6 +77,7 @@
end
keyword = key unless show_inter
name = keyword unless name
+ title = title ? %Q[ title="#{title}"] : ''
begin
key = CGI::escape( case @kw_dic[inter][1]
when 'euc-jp'
@@ -87,7 +94,7 @@
inter = nil
retry
end
- %Q[<a href="#{@kw_dic[inter][0].sub( /\$1/, key )}">#{name}</a>]
+ %Q[<a href="#{@kw_dic[inter][0].sub( /\$1/, key )}"#{title}>#{name}</a>]
end
#
@@ -129,7 +136,7 @@
end
<<-HTML
#{kw_desc}
- <p><textarea name="kw.dic" cols="60" rows="10">#{dic.collect{|a|a.flatten.join( " " )}.join( "\n" )}</textarea></p>
+ <p><textarea name="kw.dic" cols="60" rows="10">#{CGI::escapeHTML( dic.collect{|a|a.flatten.join( " " )}.join( "\n" ) )}</textarea></p>
HTML
end
|