Go to content Go to navigation Go to search

Redmine と 他BTS(Bugzilla) をリンクで連携させてみた (2)

8月 15th, 2010 by mattari

前回の記事「Redmine と Bugzilla をリンクで連携させてみた」で書き忘れていたので追記します。

列によって bugzilla を例に、

他BTS(Bugzilla)に自動リンクを張る

 

チケットの本文やコメント欄に bugzilla# と書かれたときに、自動で Bugzilla チケットへのリンクを作成するようにtextile を拡張します。

redmine/app/helpers/application_helper.rb の textilizable() で、

       検索キーワードに bugzilla を追加します。

#     message#1218 -> Link to message with id 1218
text = text.gsub(%r{([\s\(,\-\>]|^)(!)?(attachment|document|version|commit|source|export|message|bugzilla)?((#|r)(\d+)|(:)([^"\s<>][^\s<>]*?|"[^"]+?"))(?=(?=[[:punct:]]\W)|,|\s|<|$)}) do |m|
    leading, esc, prefix, sep, identifier = $1, $2, $3, $5 || $7, $6 || $8

       bugzillaの文字をリンクに変換します。

when ‘message’
  if message = Message.find_by_id(oid, :include => [:parent, {:board => :project}], :conditions => Project.visible_by(User.current))
    link = link_to h(truncate(message.subject, :length => 60)), {:only_path => only_path,
                                                      :controller => ‘messages’,
                                                      :action => ‘show’,
                                                      :board_id => message.board,
                                                      :id => message.root,
                                                      :anchor => (message.parent ? "message-#{message.id}" : nil)},
                                       :class => ‘message’
  end

  when ‘bugzilla’
     link = "<a href=\
https://some.bugzilla.url/show_bug.cgi?id=#{identifier}\ target=\"blank\">#{prefix}#{sep}#{identifier}</a>"
  end
elsif sep == ‘:’
  # removes the double quotes if any
  name = identifier.gsub(%r{^"(.*)"$}, "\\1")

Redmine を再起動すれば完了です。

Leave a Reply

関連記事