大人数でRedmineを使っていると、エクセル大好きな人もいると思う。
全てをCSVに出して、加工し、レポートを作成する。
それが良いか悪いかは別として、RedmineのCSV出力でちょっと足りない項目を付け足してみた。
「注記」については200コメントまで出力するように制限した。(CSVのカラム数制限のある旧エクセル対策として)
<Redmineでの設定>
- 「関係しているリビジョン」を出すには、関連するリポジトリのあるプロジェクトで、リポジトリ参照権限があること。
<Redmineソースの改造>(v.1.3.0ベース)
- 「関連するチケット」「注記」「関係しているリビジョン」を出力するCSVに追加できるようにする改造。
export = FCSV.generate(:col_sep => l(:general_csv_separator)) do |csv|
# csv header fields
csv << [ "#" ] + columns.collect {|c| Redmine::CodesetUtil.from_utf8(c.caption.to_s, encoding) } +
- (options[:description] ? [Redmine::CodesetUtil.from_utf8(l(:field_description), encoding)] : [])
+ (options[:issue_to] ? [Redmine::CodesetUtil.from_utf8(l(:field_issue_to)+"-from", encoding)] : []) +
+ (options[:issue_to] ? [Redmine::CodesetUtil.from_utf8(l(:field_issue_to)+"-to", encoding)] : []) +
+ (options[:revision] ? [Redmine::CodesetUtil.from_utf8(l(:label_associated_revisions), encoding)] : []) +
+ (options[:description] ? [Redmine::CodesetUtil.from_utf8(l(:field_description), encoding)] : []) +
+ (options[:notes] ? [Redmine::CodesetUtil.from_utf8(l(:field_notes), encoding)] : [])
# csv lines
issues.each do |issue|
:
:
end
s.to_s
end
+
+ if options[:issue_to]
+ related_from = []
+ issue.relations_from.each do |relation|
+ related_from << Redmine::CodesetUtil.from_utf8("#{relation.relation_type}:#{relation.issue_to_id.to_s}", encoding)
+ end
+ related_from = related_from.join("\x0D\x0A")
+
+ related_to = []
+ issue.relations_to.each do |relation|
+ related_to << Redmine::CodesetUtil.from_utf8("#{relation.relation_type}:#{relation.issue_from_id.to_s}", encoding)
+ end
+ related_to = related_to.join("\x0D\x0A")
+ end
+
+ if options[:revision]
+ revision = []
+ issue.changesets.each do |c|
+ revision << Redmine::CodesetUtil.from_utf8(c.revision, encoding)
+ end
+ revision = revision.join("\x0D\x0A")
+ end
+
+ if options[:notes]
+ notes = []
+ Journal.find(:all,
+ :conditions => ["journalized_id= ?", issue.id],
+ :order => :created_on,
+ :limit => 200).map(&:notes).uniq.each do |note|
+ notes << Redmine::CodesetUtil.from_utf8(note, encoding)
+ end
+ end
csv << [ issue.id.to_s ] + col_values.collect {|c| Redmine::CodesetUtil.from_utf8(c.to_s, encoding) } +
- (options[:description] ? [Redmine::CodesetUtil.from_utf8(issue.description, encoding)] : [])
+ (options[:issue_to] ? [related_from] : []) +
+ (options[:issue_to] ? [related_to] : []) +
+ (options[:revision] ? [revision] : []) +
+ (options[:description] ? [Redmine::CodesetUtil.from_utf8(issue.description, encoding)] : []) +
+ (options[:notes] ? notes : [])
+
end
end
export
<label><%= radio_button_tag 'columns', 'all' %> <%= l(:description_all_columns) %></label>
</p>
<p>
- <label><%= check_box_tag 'description', '1' %> <%= l(:field_description) %></label>
+ <label><%= check_box_tag 'issue_to', '1' %> <%= l(:field_issue_to) %></label><br />
+<% if !@project.repository.nil? && User.current.allowed_to?(:view_changesets, @project) -%>
+ <label><%= check_box_tag 'revision', '1' %> <%= l(:label_associated_revisions) %></label>< br />
+<% end -%>
+ <label><%= check_box_tag 'description', '1' %> <%= l(:field_description) %></label>< br />
+ <label><%= check_box_tag 'notes', '1' %> <%= l(:field_notes) %></label>
</p>
<p class="buttons">
<%= submit_tag l(:button_export), :name => nil, :onclick => "hideModal(this);" %>
#↑ブラウザによっては、SyntaxHighlighterがコード中の一部の-を変に認識しているから注意!
0 件のコメント:
コメントを投稿