[Hiki-dev:00784] InterWikiNameが無いときのInterWikiの扱い

Back to archive index

Kouhei Sutou kou****@cozmi*****
2005年 6月 14日 (火) 21:06:14 JST


須藤です.

  [[XXX:YYY]]

というInterWikiを使った時に,XXXに該当するInterWikiNameが登
録されていない場合は,

  XXX:YYY

が表示されますが,これを

  「XXX:YYY」ページへのリンク

として欲しいです.


パッチ中のmake_linkはwhen :wikiname, :bracketnameをそのまま
抜き出しただけです.
-------------- next part --------------
Index: hiki/interwiki.rb
===================================================================
RCS file: /cvsroot/hiki/hiki/hiki/interwiki.rb,v
retrieving revision 1.7
diff -u -p -r1.7 interwiki.rb
--- hiki/interwiki.rb	20 Mar 2005 01:48:11 -0000	1.7
+++ hiki/interwiki.rb	14 Jun 2005 08:14:40 -0000
@@ -41,7 +41,7 @@ module Hiki
           @plugin.make_anchor("#{@interwiki_names[s][:url]}#{page}", display_text)
         end
       else
-        "#{s}:#{p}".escapeHTML
+        nil
       end
     end
 
Index: style/default/html_formatter.rb
===================================================================
RCS file: /cvsroot/hiki/hiki/style/default/html_formatter.rb,v
retrieving revision 1.27
diff -u -p -r1.27 html_formatter.rb
--- style/default/html_formatter.rb	8 Jun 2005 05:12:44 -0000	1.27
+++ style/default/html_formatter.rb	14 Jun 2005 08:14:41 -0000
@@ -154,28 +154,14 @@ module Hiki
         s[:html] << @plugin.make_anchor( t[:href], t[:s].escapeHTML, 'external' )
         s[:toc_title] << t[:s] if s[:toc_level] > 0
       when :wikiname, :bracketname
-        disp =****@db*****_attribute(t[:s], :title)
-        disp = t[:s] if disp.empty?
-        t[:href] =****@alias*****_names.key(t[:href]) || t[:href]
-        if t[:e] == :bracketname
-          orig =****@db***** {|p| p[:title] == t[:href]}
-          t[:href] = orig[0] if orig[0]
-        end
-        if !@conf.use_wikiname and t[:e] == :wikiname
-          s[:html] << disp.escapeHTML
-        elsif****@db*****?( t[:href] )
-           s[:html] << @plugin.hiki_anchor(t[:href].escape, disp.escapeHTML)
-          @references << t[:href]
+        make_link(t, s)
+      when :interwiki
+        inter_link =****@inter*****(t[:href], t[:p], t[:s])
+        if inter_link
+          s[:html] << inter_link
         else
-          missing_anchor_title =****@conf*****_missing_anchor_title % [ disp.escapeHTML ]
-          wikiname_anchor =****@plugi*****? ? "#{disp.escapeHTML}<a class=\"nodisp\" href=\"#{@conf.cgi_name}?c=edit;p=#{t[:href].escape}\" title=\"#{missing_anchor_title}\">?</a>" : disp.escapeHTML
-                         #   outer_alias =****@inter*****_alias(t[:href]) || "#{disp.escapeHTML}<a class=\"nodisp\" href=\"#{@conf.cgi_name}?c=edit;p=#{t[:href].escape}\" title=\"#{missing_anchor_title}\">?</a>"
-          outer_alias =****@inter*****_alias(t[:href]) || wikiname_anchor
-          s[:html] << outer_alias
+          make_link(t, s)
         end
-        s[:toc_title] << t[:href] if s[:toc_level] > 0
-      when :interwiki
-        s[:html] << @interwiki.interwiki(t[:href], t[:p], t[:s])
       when :empty
         s[:html] << "\n"
       when :heading1_open, :heading2_open, :heading3_open, :heading4_open, :heading5_open
@@ -274,5 +260,28 @@ EOS
       str = t[:method].gsub(/&/, '&amp;').gsub(/</, '&lt;').gsub(/>/, '&gt;')
       return apply_plugin( str, @plugin, @conf )
     end
+
+    def make_link(t, s)
+      disp =****@db*****_attribute(t[:s], :title)
+      disp = t[:s] if disp.empty?
+      t[:href] =****@alias*****_names.key(t[:href]) || t[:href]
+      if t[:e] == :bracketname
+        orig =****@db***** {|p| p[:title] == t[:href]}
+        t[:href] = orig[0] if orig[0]
+      end
+      if !@conf.use_wikiname and t[:e] == :wikiname
+        s[:html] << disp.escapeHTML
+      elsif****@db*****?( t[:href] )
+        s[:html] << @plugin.hiki_anchor(t[:href].escape, disp.escapeHTML)
+        @references << t[:href]
+      else
+        missing_anchor_title =****@conf*****_missing_anchor_title % [ disp.escapeHTML ]
+        wikiname_anchor =****@plugi*****? ? "#{disp.escapeHTML}<a class=\"nodisp\" href=\"#{@conf.cgi_name}?c=edit;p=#{t[:href].escape}\" title=\"#{missing_anchor_title}\">?</a>" : disp.escapeHTML
+        #   outer_alias =****@inter*****_alias(t[:href]) || "#{disp.escapeHTML}<a class=\"nodisp\" href=\"#{@conf.cgi_name}?c=edit;p=#{t[:href].escape}\" title=\"#{missing_anchor_title}\">?</a>"
+        outer_alias =****@inter*****_alias(t[:href]) || wikiname_anchor
+        s[:html] << outer_alias
+        s[:toc_title] << t[:href] if s[:toc_level] > 0
+      end
+    end
   end
 end


Hiki-dev メーリングリストの案内
Back to archive index