RE: Issue Closed Date » экспорт_в_csv.patch
app/controllers/issues_controller.rb (working copy) | ||
---|---|---|
84 | 84 |
format.xml { render :layout => false } |
85 | 85 |
format.json { render :text => @issues.to_json, :layout => false } |
86 | 86 |
format.atom { render_feed(@issues, :title => "#{@project || Setting.app_title}: #{l(:label_issue_plural)}") } |
87 |
format.csv { send_data(issues_to_csv(@issues, @project), :type => 'text/csv; header=present', :filename => 'export.csv') } |
|
87 |
# format.csv { send_data(issues_to_csv(@issues, @project), :type => 'text/csv; header=present', :filename => 'export.csv') } |
|
88 |
format.csv { send_data(issues_to_csv_query(@issues, @query, @project), :type => 'text/csv; header=present', :filename => 'export.csv') } |
|
88 | 89 |
format.pdf { send_data(issues_to_pdf(@issues, @project, @query), :type => 'application/pdf', :filename => 'export.pdf') } |
89 | 90 |
end |
90 | 91 |
else |
app/helpers/issues_helper.rb (working copy) | ||
---|---|---|
175 | 175 |
return record.name if record |
176 | 176 |
end |
177 | 177 |
end |
178 |
|
|
178 |
|
|
179 |
#??????? ? csv ? ?????? ?????????? ??????? |
|
180 |
def issues_to_csv_query(issues, query, project = nil) |
|
181 |
ic = Iconv.new(l(:general_csv_encoding), 'UTF-8') |
|
182 |
decimal_separator = l(:general_csv_decimal_separator) |
|
183 |
export = FCSV.generate(:col_sep => l(:general_csv_separator)) do |csv| |
|
184 |
# csv header fields |
|
185 |
headers = [ "#"] |
|
186 |
query.columns.each do |column| |
|
187 |
headers << column.caption.to_s |
|
188 |
end |
|
189 |
csv << headers.collect {|c| begin; ic.iconv(c.to_s); rescue; c.to_s; end } |
|
190 |
# csv lines |
|
191 |
issues.each do |issue| |
|
192 |
fields = [issue.id.to_s] |
|
193 |
query.columns.each do |column| |
|
194 |
fields << txt_column_content(column, issue) |
|
195 |
end |
|
196 |
csv << fields.collect {|c| begin; ic.iconv(c.to_s); rescue; c.to_s; end } |
|
197 |
end |
|
198 |
end |
|
199 |
export |
|
200 |
end |
|
201 |
|
|
202 |
#"??????????" ??????? ???????? ? CSV |
|
179 | 203 |
def issues_to_csv(issues, project = nil) |
180 | 204 |
ic = Iconv.new(l(:general_csv_encoding), 'UTF-8') |
181 | 205 |
decimal_separator = l(:general_csv_decimal_separator) |
app/helpers/queries_helper.rb (working copy) | ||
---|---|---|
26 | 26 |
:default_order => column.default_order) : |
27 | 27 |
content_tag('th', column.caption) |
28 | 28 |
end |
29 |
|
|
30 |
#?????????? ???????? ?? ???????? ???? ???????. ??? HTML. |
|
31 |
def txt_column_content(column, issue) |
|
32 |
value = column.value(issue) |
|
33 |
|
|
34 |
case value.class.name |
|
35 |
when 'String' |
|
36 |
value |
|
37 |
when 'Time' |
|
38 |
format_time(value) |
|
39 |
when 'Date' |
|
40 |
format_date(value) |
|
41 |
when 'Fixnum', 'Float' |
|
42 |
value.to_s |
|
43 |
when 'User' |
|
44 |
value |
|
45 |
when 'Project' |
|
46 |
value |
|
47 |
when 'Version' |
|
48 |
value |
|
49 |
when 'TrueClass' |
|
50 |
l(:general_text_Yes) |
|
51 |
when 'FalseClass' |
|
52 |
l(:general_text_No) |
|
53 |
when 'Issue' |
|
54 |
value |
|
55 |
else |
|
56 |
value |
|
57 |
end |
|
58 |
end |
|
59 |
|
|
29 | 60 |
|
30 | 61 |
def column_content(column, issue) |
31 | 62 |
value = column.value(issue) |