Defect #61 » prawn.patch
| app/helpers/pdf_helper.rb (wersja 0) | ||
|---|---|---|
| 1 |
# redMine - project management software |
|
| 2 |
# Copyright (C) 2006 Jean-Philippe Lang |
|
| 3 |
# |
|
| 4 |
# This program is free software; you can redistribute it and/or |
|
| 5 |
# modify it under the terms of the GNU General Public License |
|
| 6 |
# as published by the Free Software Foundation; either version 2 |
|
| 7 |
# of the License, or (at your option) any later version. |
|
| 8 |
# |
|
| 9 |
# This program is distributed in the hope that it will be useful, |
|
| 10 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
| 11 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
| 12 |
# GNU General Public License for more details. |
|
| 13 |
# |
|
| 14 |
# You should have received a copy of the GNU General Public License |
|
| 15 |
# along with this program; if not, write to the Free Software |
|
| 16 |
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
|
| 17 | ||
| 18 |
module PdfHelper |
|
| 19 |
def PdfHelper.font_for_lang(lang) |
|
| 20 |
case lang.to_s |
|
| 21 |
when 'ja' |
|
| 22 |
return "#{Prawn::BASEDIR}/data/fonts/gkai00mp.ttf"
|
|
| 23 |
when 'zh' |
|
| 24 |
return "#{Prawn::BASEDIR}/data/fonts/gkai00mp.ttf"
|
|
| 25 |
when 'zh-tw' |
|
| 26 |
return "#{Prawn::BASEDIR}/data/fonts/gkai00mp.ttf"
|
|
| 27 |
else |
|
| 28 |
return "#{Prawn::BASEDIR}/data/fonts/DejaVuSans.ttf"
|
|
| 29 |
end |
|
| 30 |
end |
|
| 31 |
end |
|
| app/controllers/issues_controller.rb (kopia robocza) | ||
|---|---|---|
| 67 | 67 |
format.html { render :template => 'issues/index.rhtml', :layout => !request.xhr? }
|
| 68 | 68 |
format.atom { render_feed(@issues, :title => "#{@project || Setting.app_title}: #{l(:label_issue_plural)}") }
|
| 69 | 69 |
format.csv { send_data(issues_to_csv(@issues, @project).read, :type => 'text/csv; header=present', :filename => 'export.csv') }
|
| 70 |
format.pdf { send_data(render(:template => 'issues/index.rfpdf', :layout => false), :type => 'application/pdf', :filename => 'export.pdf') }
|
|
| 70 |
format.pdf { send_data(render(:template => 'issues/index.pdf.prawn', :layout => false), :type => 'application/pdf', :filename => 'export.pdf') }
|
|
| 71 | 71 |
end |
| 72 | 72 |
else |
| 73 | 73 |
# Send html if the query is not valid |
| app/views/issues/index.pdf.prawn (wersja 0) | ||
|---|---|---|
| 1 |
Prawn::Document.generate('index.pdf', :page_layout => :landscape) do |pdf|
|
|
| 2 |
pdf.font(PdfHelper.font_for_lang(current_language)) |
|
| 3 |
title = @project ? "#{@project.name} - #{l(:label_issue_plural)}" : "#{l(:label_issue_plural)}"
|
|
| 4 | ||
| 5 |
pdf.header pdf.margin_box.top_left do |
|
| 6 |
pdf.text title , :size => 12, :align => :left |
|
| 7 |
pdf.stroke_horizontal_rule |
|
| 8 |
end |
|
| 9 | ||
| 10 |
pdf.footer [pdf.margin_box.left, pdf.margin_box.bottom + 20] do |
|
| 11 |
pdf.stroke_horizontal_rule |
|
| 12 |
pdf.text format_date(Date.today), :size => 12 |
|
| 13 |
end |
|
| 14 | ||
| 15 |
pdf.move_down 25 |
|
| 16 | ||
| 17 |
#rows |
|
| 18 |
rows=[] |
|
| 19 |
i=0 |
|
| 20 |
@issues.each do |issue| |
|
| 21 |
rows[i] = [issue.id.to_s, issue.tracker.name, issue.status.name, |
|
| 22 |
issue.priority.name, issue.assigned_to ? issue.assigned_to.name : '', |
|
| 23 |
format_date(issue.updated_on), |
|
| 24 |
@project == issue.project ? issue.subject : "#{issue.project.name} - #{issue.subject}"]
|
|
| 25 |
i=i+1 |
|
| 26 |
end |
|
| 27 | ||
| 28 | ||
| 29 |
pdf.table rows, |
|
| 30 |
:font_size => 11, |
|
| 31 |
:horizontal_padding => 10, |
|
| 32 |
:vertical_padding => 3, |
|
| 33 |
:border_width => 1, |
|
| 34 |
:position => :left, |
|
| 35 |
:headers => ["#", l(:field_tracker), l(:field_status), l(:field_priority), l(:field_assigned_to), l(:field_updated_on), l(:field_subject)], |
|
| 36 |
:align => {0 => :center},
|
|
| 37 |
:align_headers => :left, |
|
| 38 |
:widths => {6 => 250},
|
|
| 39 |
:row_colors => ["ffffff","cccccc"] |
|
| 40 |
|
|
| 41 |
end |
|