diff options
author | Go MAEDA <maeda@farend.jp> | 2018-05-07 01:13:12 +0000 |
---|---|---|
committer | Go MAEDA <maeda@farend.jp> | 2018-05-07 01:13:12 +0000 |
commit | ca2875fab2c3c3d96dcdbad5c3eb1068887dadd4 (patch) | |
tree | 5cc6aa92db02475ea06e2be225b91cb985d9f027 /app | |
parent | 43d9bea7c5da32a99c3ebdb828e23d6a02c31c12 (diff) | |
download | redmine-ca2875fab2c3c3d96dcdbad5c3eb1068887dadd4.tar.gz redmine-ca2875fab2c3c3d96dcdbad5c3eb1068887dadd4.zip |
Allow switching the encoding to UTF-8 when exporting to CSV (#26279).
Patch by Mizuki ISHIKAWA.
git-svn-id: http://svn.redmine.org/redmine/trunk@17328 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app')
-rw-r--r-- | app/helpers/application_helper.rb | 13 | ||||
-rw-r--r-- | app/helpers/queries_helper.rb | 4 | ||||
-rw-r--r-- | app/helpers/timelog_helper.rb | 2 | ||||
-rw-r--r-- | app/views/issues/index.html.erb | 1 | ||||
-rw-r--r-- | app/views/timelog/index.html.erb | 1 | ||||
-rw-r--r-- | app/views/timelog/report.html.erb | 24 |
6 files changed, 40 insertions, 5 deletions
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 55b6230c6..48794aa95 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -1494,6 +1494,19 @@ module ApplicationHelper encoding = l(:general_csv_encoding) end + def export_csv_encoding_select_tag + return if l(:general_csv_encoding).casecmp('UTF-8') == 0 + options = [l(:general_csv_encoding), 'UTF-8'] + content_tag(:p) do + concat( + content_tag(:label) do + concat l(:label_encoding) + ' ' + concat select_tag('encoding', options_for_select(options, l(:general_csv_encoding))) + end + ) + end + end + private def wiki_helper diff --git a/app/helpers/queries_helper.rb b/app/helpers/queries_helper.rb index 9d3f2468e..01d10d883 100644 --- a/app/helpers/queries_helper.rb +++ b/app/helpers/queries_helper.rb @@ -275,7 +275,7 @@ module QueriesHelper def query_to_csv(items, query, options={}) columns = query.columns - Redmine::Export::CSV.generate do |csv| + Redmine::Export::CSV.generate(:encoding => params[:encoding]) do |csv| # csv header fields csv << columns.map {|c| c.caption.to_s} # csv lines @@ -370,7 +370,7 @@ module QueriesHelper tags end - + def query_hidden_sort_tag(query) hidden_field_tag("sort", query.sort_criteria.to_param, :id => nil) end diff --git a/app/helpers/timelog_helper.rb b/app/helpers/timelog_helper.rb index d1174fe78..aa6e0f3b6 100644 --- a/app/helpers/timelog_helper.rb +++ b/app/helpers/timelog_helper.rb @@ -76,7 +76,7 @@ module TimelogHelper end def report_to_csv(report) - Redmine::Export::CSV.generate do |csv| + Redmine::Export::CSV.generate(:encoding => params[:encoding]) do |csv| # Column headers headers = report.criteria.collect {|criteria| l(report.available_criteria[criteria][:label]) } headers += report.periods diff --git a/app/views/issues/index.html.erb b/app/views/issues/index.html.erb index 005b92138..c02c18368 100644 --- a/app/views/issues/index.html.erb +++ b/app/views/issues/index.html.erb @@ -38,6 +38,7 @@ <label><%= check_box_tag 'c[]', 'description', @query.has_column?(:description) %> <%= l(:field_description) %></label> <label><%= check_box_tag 'c[]', 'last_notes', @query.has_column?(:last_notes) %> <%= l(:label_last_notes) %></label> </p> + <%= export_csv_encoding_select_tag %> <% if @issue_count > Setting.issues_export_limit.to_i %> <p class="icon icon-warning"> <%= l(:setting_issues_export_limit) %>: <%= Setting.issues_export_limit.to_i %> diff --git a/app/views/timelog/index.html.erb b/app/views/timelog/index.html.erb index 65ca4855d..9f320d637 100644 --- a/app/views/timelog/index.html.erb +++ b/app/views/timelog/index.html.erb @@ -31,6 +31,7 @@ <label><%= radio_button_tag 'c[]', '', true %> <%= l(:description_selected_columns) %></label><br /> <label><%= radio_button_tag 'c[]', 'all_inline' %> <%= l(:description_all_columns) %></label> </p> + <%= export_csv_encoding_select_tag %> <p class="buttons"> <%= submit_tag l(:button_export), :name => nil, :onclick => "hideModal(this);", :data => { :disable_with => false } %> <%= submit_tag l(:button_cancel), :name => nil, :onclick => "hideModal(this);", :type => 'button', :data => { :disable_with => false } %> diff --git a/app/views/timelog/report.html.erb b/app/views/timelog/report.html.erb index 0565c662b..b5307c4af 100644 --- a/app/views/timelog/report.html.erb +++ b/app/views/timelog/report.html.erb @@ -1,5 +1,5 @@ <div class="contextual"> -<%= link_to l(:button_log_time), +<%= link_to l(:button_log_time), _new_time_entry_path(@project, @issue), :class => 'icon icon-time-add' if User.current.allowed_to?(:log_time, @project, :global => true) %> </div> @@ -24,6 +24,7 @@ :disabled => (@report.criteria.length >= 3), :id => "criterias") %> <%= link_to l(:button_clear), {:params => request.query_parameters.merge(:criteria => nil)}, :class => 'icon icon-reload' %></p> + <%= hidden_field_tag 'encoding', l(:general_csv_encoding) unless l(:general_csv_encoding).casecmp('UTF-8') == 0 %> <% end %> <% if @query.valid? %> @@ -62,9 +63,17 @@ </div> <% other_formats_links do |f| %> - <%= f.link_to_with_query_parameters 'CSV' %> + <%= f.link_to_with_query_parameters 'CSV', {}, :onclick => "showModal('csv-export-options', '330px'); return false;" %> <% end %> <% end %> +<div id="csv-export-options" style="display: none;"> + <h3 class="title"><%= l(:label_export_options, :export_format => 'CSV') %></h3> + <%= export_csv_encoding_select_tag %> + <p class="buttons"> + <%= submit_tag l(:button_export), :name => nil, :id => 'csv-export-button' %> + <%= submit_tag l(:button_cancel), :name => nil, :onclick => 'hideModal(this);', :type => 'button' %> + </p> +</div> <% end %> <% end %> @@ -74,3 +83,14 @@ <% html_title(@query.new_record? ? l(:label_spent_time) : @query.name, l(:label_report)) %> + +<%= javascript_tag do %> +$(document).ready(function(){ + $('input#csv-export-button').click(function(){ + $('form input#encoding').val($('select#encoding option:selected').val()); + $('form#query_form').attr('action', '<%= report_time_entries_path(:format => 'csv') %>').submit(); + $('form#query_form').attr('action', '<%= report_time_entries_path %>'); + hideModal(this); + }); +}); +<% end %> |