summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2011-11-20 13:23:20 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2011-11-20 13:23:20 +0000
commitca300ccdeaf3cae3015a548ba3fffa9c6f112c55 (patch)
tree9b7d5d049a044c2cc39d44ca9a3e7d8af7edb614
parent617cb8d270acdf78f2c0c144d89668cd28750691 (diff)
downloadredmine-ca300ccdeaf3cae3015a548ba3fffa9c6f112c55.tar.gz
redmine-ca300ccdeaf3cae3015a548ba3fffa9c6f112c55.zip
Adds a dialog box for CSV export options (#4742).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@7874 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r--app/controllers/issues_controller.rb2
-rw-r--r--app/helpers/issues_helper.rb79
-rw-r--r--app/views/issues/index.html.erb19
-rw-r--r--config/locales/bg.yml3
-rw-r--r--config/locales/bs.yml3
-rw-r--r--config/locales/ca.yml3
-rw-r--r--config/locales/cs.yml3
-rw-r--r--config/locales/da.yml3
-rw-r--r--config/locales/de.yml3
-rw-r--r--config/locales/el.yml3
-rw-r--r--config/locales/en-GB.yml3
-rw-r--r--config/locales/en.yml3
-rw-r--r--config/locales/es.yml3
-rw-r--r--config/locales/eu.yml3
-rw-r--r--config/locales/fa.yml3
-rw-r--r--config/locales/fi.yml3
-rw-r--r--config/locales/fr.yml7
-rw-r--r--config/locales/gl.yml3
-rw-r--r--config/locales/he.yml3
-rw-r--r--config/locales/hr.yml3
-rw-r--r--config/locales/hu.yml3
-rw-r--r--config/locales/id.yml3
-rw-r--r--config/locales/it.yml3
-rw-r--r--config/locales/ja.yml3
-rw-r--r--config/locales/ko.yml3
-rw-r--r--config/locales/lt.yml3
-rw-r--r--config/locales/lv.yml3
-rw-r--r--config/locales/mk.yml3
-rw-r--r--config/locales/mn.yml3
-rw-r--r--config/locales/nl.yml3
-rw-r--r--config/locales/no.yml3
-rw-r--r--config/locales/pl.yml3
-rw-r--r--config/locales/pt-BR.yml3
-rw-r--r--config/locales/pt.yml3
-rw-r--r--config/locales/ro.yml3
-rw-r--r--config/locales/ru.yml3
-rw-r--r--config/locales/sk.yml3
-rw-r--r--config/locales/sl.yml3
-rw-r--r--config/locales/sr-YU.yml3
-rw-r--r--config/locales/sr.yml3
-rw-r--r--config/locales/sv.yml3
-rw-r--r--config/locales/th.yml3
-rw-r--r--config/locales/tr.yml3
-rw-r--r--config/locales/uk.yml3
-rw-r--r--config/locales/vi.yml3
-rw-r--r--config/locales/zh-TW.yml3
-rw-r--r--config/locales/zh.yml3
-rw-r--r--public/javascripts/application.js33
-rw-r--r--public/stylesheets/application.css6
-rw-r--r--test/functional/issues_controller_test.rb42
50 files changed, 253 insertions, 64 deletions
diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb
index d782a7965..7978bc001 100644
--- a/app/controllers/issues_controller.rb
+++ b/app/controllers/issues_controller.rb
@@ -94,7 +94,7 @@ class IssuesController < ApplicationController
Issue.load_relations(@issues) if include_in_api_response?('relations')
}
format.atom { render_feed(@issues, :title => "#{@project || Setting.app_title}: #{l(:label_issue_plural)}") }
- format.csv { send_data(issues_to_csv(@issues, @project), :type => 'text/csv; header=present', :filename => 'export.csv') }
+ format.csv { send_data(issues_to_csv(@issues, @project, @query, params), :type => 'text/csv; header=present', :filename => 'export.csv') }
format.pdf { send_data(issues_to_pdf(@issues, @project, @query), :type => 'application/pdf', :filename => 'export.pdf') }
end
else
diff --git a/app/helpers/issues_helper.rb b/app/helpers/issues_helper.rb
index 9ef9e0458..ff97aed5b 100644
--- a/app/helpers/issues_helper.rb
+++ b/app/helpers/issues_helper.rb
@@ -263,62 +263,39 @@ module IssuesHelper
end
end
- def issues_to_csv(issues, project = nil)
+ def issues_to_csv(issues, project, query, options={})
+ ic = Iconv.new(l(:general_csv_encoding), 'UTF-8')
decimal_separator = l(:general_csv_decimal_separator)
+ encoding = l(:general_csv_encoding)
+ columns = (options[:columns] == 'all' ? query.available_columns : query.columns)
+
export = FCSV.generate(:col_sep => l(:general_csv_separator)) do |csv|
# csv header fields
- headers = [ "#",
- l(:field_status),
- l(:field_project),
- l(:field_tracker),
- l(:field_priority),
- l(:field_subject),
- l(:field_assigned_to),
- l(:field_category),
- l(:field_fixed_version),
- l(:field_author),
- l(:field_start_date),
- l(:field_due_date),
- l(:field_done_ratio),
- l(:field_estimated_hours),
- l(:field_parent_issue),
- l(:field_created_on),
- l(:field_updated_on)
- ]
- # Export project custom fields if project is given
- # otherwise export custom fields marked as "For all projects"
- custom_fields = project.nil? ? IssueCustomField.for_all : project.all_issue_custom_fields
- custom_fields.each {|f| headers << f.name}
- # Description in the last column
- headers << l(:field_description)
- csv << headers.collect {|c| Redmine::CodesetUtil.from_utf8(
- c.to_s,
- l(:general_csv_encoding) ) }
+ csv << [ "#" ] + columns.collect {|c| Redmine::CodesetUtil.from_utf8(c.caption.to_s, encoding) } +
+ (options[:description] ? [Redmine::CodesetUtil.from_utf8(l(:field_description), encoding)] : [])
+
# csv lines
issues.each do |issue|
- fields = [issue.id,
- issue.status.name,
- issue.project.name,
- issue.tracker.name,
- issue.priority.name,
- issue.subject,
- issue.assigned_to,
- issue.category,
- issue.fixed_version,
- issue.author.name,
- format_date(issue.start_date),
- format_date(issue.due_date),
- issue.done_ratio,
- issue.estimated_hours.to_s.gsub('.', decimal_separator),
- issue.parent_id,
- format_time(issue.created_on),
- format_time(issue.updated_on)
- ]
- custom_fields.each {|f| fields << show_value(issue.custom_value_for(f)) }
- fields << issue.description
- csv << fields.collect {|c| Redmine::CodesetUtil.from_utf8(
- c.to_s,
- l(:general_csv_encoding) ) }
+ col_values = columns.collect do |column|
+ s = if column.is_a?(QueryCustomFieldColumn)
+ cv = issue.custom_values.detect {|v| v.custom_field_id == column.custom_field.id}
+ show_value(cv)
+ else
+ value = issue.send(column.name)
+ if value.is_a?(Date)
+ format_date(value)
+ elsif value.is_a?(Time)
+ format_time(value)
+ elsif value.is_a?(Float)
+ value.to_s.gsub('.', decimal_separator)
+ else
+ value
+ end
+ end
+ s.to_s
+ 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)] : [])
end
end
export
diff --git a/app/views/issues/index.html.erb b/app/views/issues/index.html.erb
index a5e657ec1..22791a9ae 100644
--- a/app/views/issues/index.html.erb
+++ b/app/views/issues/index.html.erb
@@ -54,10 +54,27 @@
<% other_formats_links do |f| %>
<%= f.link_to 'Atom', :url => params.merge(:key => User.current.rss_key) %>
- <%= f.link_to 'CSV', :url => params %>
+ <%= f.link_to 'CSV', :url => params, :onclick => "showModal('csv-export-options', '330px'); return false;" %>
<%= f.link_to 'PDF', :url => params %>
<% end %>
+<div id="csv-export-options" style="display:none;">
+ <h3 class="title"><%= l(:label_export_options, :export_format => 'CSV') %></h3>
+ <% form_tag(params.merge({:format => 'csv',:page=>nil}), :method => :get, :id => 'csv-export-form') do %>
+ <p>
+ <label><%= radio_button_tag 'columns', '', true %> <%= l(:description_selected_columns) %></label><br />
+ <label><%= radio_button_tag 'columns', 'all' %> <%= l(:description_all_columns) %></label>
+ </p>
+ <p>
+ <label><%= check_box_tag 'description', '1' %> <%= l(:field_description) %></label>
+ </p>
+ <p style="text-align:right; margin-bottom:0">
+ <%= submit_tag l(:button_export), :name => nil, :onclick => "hideModal(this);" %>
+ <%= submit_tag l(:button_cancel), :name => nil, :onclick => "hideModal(this);", :type => 'button' %>
+ </p>
+ <% end %>
+</div>
+
<% end %>
<%= call_hook(:view_issues_index_bottom, { :issues => @issues, :project => @project, :query => @query }) %>
diff --git a/config/locales/bg.yml b/config/locales/bg.yml
index 3c234a376..666948714 100644
--- a/config/locales/bg.yml
+++ b/config/locales/bg.yml
@@ -1000,3 +1000,6 @@ bg:
description_date_from: Въведете начална дата
description_date_to: Въведете крайна дата
setting_repositories_encodings: Attachments and repositories encodings
+ description_all_columns: All Columns
+ button_export: Export
+ label_export_options: "%{export_format} export options"
diff --git a/config/locales/bs.yml b/config/locales/bs.yml
index 07b43487f..1087e1a26 100644
--- a/config/locales/bs.yml
+++ b/config/locales/bs.yml
@@ -1016,3 +1016,6 @@ bs:
setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues
button_edit_section: Edit this section
setting_repositories_encodings: Attachments and repositories encodings
+ description_all_columns: All Columns
+ button_export: Export
+ label_export_options: "%{export_format} export options"
diff --git a/config/locales/ca.yml b/config/locales/ca.yml
index 110f05148..3737830ff 100644
--- a/config/locales/ca.yml
+++ b/config/locales/ca.yml
@@ -1005,3 +1005,6 @@ ca:
setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues
button_edit_section: Edit this section
setting_repositories_encodings: Attachments and repositories encodings
+ description_all_columns: All Columns
+ button_export: Export
+ label_export_options: "%{export_format} export options"
diff --git a/config/locales/cs.yml b/config/locales/cs.yml
index c4c2ef7b1..6c8dcc924 100644
--- a/config/locales/cs.yml
+++ b/config/locales/cs.yml
@@ -1006,3 +1006,6 @@ cs:
setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues
button_edit_section: Edit this section
setting_repositories_encodings: Attachments and repositories encodings
+ description_all_columns: All Columns
+ button_export: Export
+ label_export_options: "%{export_format} export options"
diff --git a/config/locales/da.yml b/config/locales/da.yml
index 6dead5564..de532a420 100644
--- a/config/locales/da.yml
+++ b/config/locales/da.yml
@@ -1019,3 +1019,6 @@ da:
setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues
button_edit_section: Edit this section
setting_repositories_encodings: Attachments and repositories encodings
+ description_all_columns: All Columns
+ button_export: Export
+ label_export_options: "%{export_format} export options"
diff --git a/config/locales/de.yml b/config/locales/de.yml
index daf694cfa..8dcbb686a 100644
--- a/config/locales/de.yml
+++ b/config/locales/de.yml
@@ -1023,3 +1023,6 @@ de:
setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues
button_edit_section: Edit this section
setting_repositories_encodings: Attachments and repositories encodings
+ description_all_columns: All Columns
+ button_export: Export
+ label_export_options: "%{export_format} export options"
diff --git a/config/locales/el.yml b/config/locales/el.yml
index fdb1cb711..372830b8e 100644
--- a/config/locales/el.yml
+++ b/config/locales/el.yml
@@ -1002,3 +1002,6 @@ el:
setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues
button_edit_section: Edit this section
setting_repositories_encodings: Attachments and repositories encodings
+ description_all_columns: All Columns
+ button_export: Export
+ label_export_options: "%{export_format} export options"
diff --git a/config/locales/en-GB.yml b/config/locales/en-GB.yml
index be143756e..7c5844dc4 100644
--- a/config/locales/en-GB.yml
+++ b/config/locales/en-GB.yml
@@ -1005,3 +1005,6 @@ en-GB:
label_child_revision: Child
button_edit_section: Edit this section
setting_repositories_encodings: Attachments and repositories encodings
+ description_all_columns: All Columns
+ button_export: Export
+ label_export_options: "%{export_format} export options"
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 16bb6a9cd..a4f366848 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -827,6 +827,7 @@ en:
label_git_report_last_commit: Report last commit for files and directories
label_parent_revision: Parent
label_child_revision: Child
+ label_export_options: %{export_format} export options
button_login: Login
button_submit: Submit
@@ -875,6 +876,7 @@ en:
button_duplicate: Duplicate
button_show: Show
button_edit_section: Edit this section
+ button_export: Export
status_active: active
status_registered: registered
@@ -994,6 +996,7 @@ en:
description_user_mail_notification: Mail notification settings
description_available_columns: Available Columns
description_selected_columns: Selected Columns
+ description_all_columns: All Columns
description_issue_category_reassign: Choose issue category
description_wiki_subpages_reassign: Choose new parent page
description_date_range_list: Choose range from list
diff --git a/config/locales/es.yml b/config/locales/es.yml
index 45ee938b1..6d0d19c4b 100644
--- a/config/locales/es.yml
+++ b/config/locales/es.yml
@@ -1039,3 +1039,6 @@ es:
setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues
button_edit_section: Edit this section
setting_repositories_encodings: Attachments and repositories encodings
+ description_all_columns: All Columns
+ button_export: Export
+ label_export_options: "%{export_format} export options"
diff --git a/config/locales/eu.yml b/config/locales/eu.yml
index 78295da47..010379275 100644
--- a/config/locales/eu.yml
+++ b/config/locales/eu.yml
@@ -1006,3 +1006,6 @@ eu:
setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues
button_edit_section: Edit this section
setting_repositories_encodings: Attachments and repositories encodings
+ description_all_columns: All Columns
+ button_export: Export
+ label_export_options: "%{export_format} export options"
diff --git a/config/locales/fa.yml b/config/locales/fa.yml
index a0c1c7b3a..db4961b72 100644
--- a/config/locales/fa.yml
+++ b/config/locales/fa.yml
@@ -1005,3 +1005,6 @@ fa:
setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues
button_edit_section: Edit this section
setting_repositories_encodings: Attachments and repositories encodings
+ description_all_columns: All Columns
+ button_export: Export
+ label_export_options: "%{export_format} export options"
diff --git a/config/locales/fi.yml b/config/locales/fi.yml
index 36da700a7..970c99f6f 100644
--- a/config/locales/fi.yml
+++ b/config/locales/fi.yml
@@ -1023,3 +1023,6 @@ fi:
setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues
button_edit_section: Edit this section
setting_repositories_encodings: Attachments and repositories encodings
+ description_all_columns: All Columns
+ button_export: Export
+ label_export_options: "%{export_format} export options"
diff --git a/config/locales/fr.yml b/config/locales/fr.yml
index 3ba06c451..8412a5e9d 100644
--- a/config/locales/fr.yml
+++ b/config/locales/fr.yml
@@ -803,6 +803,7 @@ fr:
label_issues_visibility_all: Toutes les demandes
label_issues_visibility_public: Toutes les demandes non privées
label_issues_visibility_own: Demandes créées par ou assignées à l'utilisateur
+ label_export_options: Options d'exportation %{export_format}
button_login: Connexion
button_submit: Soumettre
@@ -850,6 +851,7 @@ fr:
button_duplicate: Dupliquer
button_show: Afficher
button_edit_section: Modifier cette section
+ button_export: Exporter
status_active: actif
status_registered: enregistré
@@ -1002,7 +1004,8 @@ fr:
description_user_mail_notification: Mail notification settings
description_date_from: Enter start date
description_message_content: Message content
- description_available_columns: Available Columns
+ description_available_columns: Colonnes disponibles
+ description_all_columns: Toutes les colonnes
description_date_range_interval: Choose range by selecting start and end date
description_issue_category_reassign: Choose issue category
description_search: Searchfield
@@ -1012,7 +1015,7 @@ fr:
description_date_to: Enter end date
description_query_sort_criteria_attribute: Sort attribute
description_wiki_subpages_reassign: Choose new parent page
- description_selected_columns: Selected Columns
+ description_selected_columns: Colonnes sélectionnées
label_parent_revision: Parent
label_child_revision: Child
error_scm_annotate_big_text_file: The entry cannot be annotated, as it exceeds the maximum text file size.
diff --git a/config/locales/gl.yml b/config/locales/gl.yml
index 4d4f58f61..4f1347563 100644
--- a/config/locales/gl.yml
+++ b/config/locales/gl.yml
@@ -1014,3 +1014,6 @@ gl:
setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues
button_edit_section: Edit this section
setting_repositories_encodings: Attachments and repositories encodings
+ description_all_columns: All Columns
+ button_export: Export
+ label_export_options: "%{export_format} export options"
diff --git a/config/locales/he.yml b/config/locales/he.yml
index a7b7ae5b2..22c1c20e9 100644
--- a/config/locales/he.yml
+++ b/config/locales/he.yml
@@ -1007,3 +1007,6 @@ he:
setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues
button_edit_section: Edit this section
setting_repositories_encodings: Attachments and repositories encodings
+ description_all_columns: All Columns
+ button_export: Export
+ label_export_options: "%{export_format} export options"
diff --git a/config/locales/hr.yml b/config/locales/hr.yml
index 3a1fc3963..a90cd6b4d 100644
--- a/config/locales/hr.yml
+++ b/config/locales/hr.yml
@@ -1009,3 +1009,6 @@ hr:
setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues
button_edit_section: Edit this section
setting_repositories_encodings: Attachments and repositories encodings
+ description_all_columns: All Columns
+ button_export: Export
+ label_export_options: "%{export_format} export options"
diff --git a/config/locales/hu.yml b/config/locales/hu.yml
index 79030c3f2..ec80dac6b 100644
--- a/config/locales/hu.yml
+++ b/config/locales/hu.yml
@@ -1021,3 +1021,6 @@
setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues
button_edit_section: Edit this section
setting_repositories_encodings: Attachments and repositories encodings
+ description_all_columns: All Columns
+ button_export: Export
+ label_export_options: "%{export_format} export options"
diff --git a/config/locales/id.yml b/config/locales/id.yml
index 70899ffc4..3895f9318 100644
--- a/config/locales/id.yml
+++ b/config/locales/id.yml
@@ -1010,3 +1010,6 @@ id:
setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues
button_edit_section: Edit this section
setting_repositories_encodings: Attachments and repositories encodings
+ description_all_columns: All Columns
+ button_export: Export
+ label_export_options: "%{export_format} export options"
diff --git a/config/locales/it.yml b/config/locales/it.yml
index 5b89ecf1b..61d6ba4c6 100644
--- a/config/locales/it.yml
+++ b/config/locales/it.yml
@@ -1003,3 +1003,6 @@ it:
setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues
button_edit_section: Edit this section
setting_repositories_encodings: Attachments and repositories encodings
+ description_all_columns: All Columns
+ button_export: Export
+ label_export_options: "%{export_format} export options"
diff --git a/config/locales/ja.yml b/config/locales/ja.yml
index 3b106bd04..55958d26c 100644
--- a/config/locales/ja.yml
+++ b/config/locales/ja.yml
@@ -1032,3 +1032,6 @@ ja:
error_scm_annotate_big_text_file: The entry cannot be annotated, as it exceeds the maximum text file size.
setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues
button_edit_section: Edit this section
+ description_all_columns: All Columns
+ button_export: Export
+ label_export_options: "%{export_format} export options"
diff --git a/config/locales/ko.yml b/config/locales/ko.yml
index 1d909da25..7ed420999 100644
--- a/config/locales/ko.yml
+++ b/config/locales/ko.yml
@@ -1054,3 +1054,6 @@ ko:
setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues
button_edit_section: Edit this section
setting_repositories_encodings: Attachments and repositories encodings
+ description_all_columns: All Columns
+ button_export: Export
+ label_export_options: "%{export_format} export options"
diff --git a/config/locales/lt.yml b/config/locales/lt.yml
index 55654da51..7cd3879a2 100644
--- a/config/locales/lt.yml
+++ b/config/locales/lt.yml
@@ -1062,3 +1062,6 @@ lt:
setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues
button_edit_section: Edit this section
setting_repositories_encodings: Attachments and repositories encodings
+ description_all_columns: All Columns
+ button_export: Export
+ label_export_options: "%{export_format} export options"
diff --git a/config/locales/lv.yml b/config/locales/lv.yml
index ed6186780..5be9a3f19 100644
--- a/config/locales/lv.yml
+++ b/config/locales/lv.yml
@@ -997,3 +997,6 @@ lv:
setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues
button_edit_section: Edit this section
setting_repositories_encodings: Attachments and repositories encodings
+ description_all_columns: All Columns
+ button_export: Export
+ label_export_options: "%{export_format} export options"
diff --git a/config/locales/mk.yml b/config/locales/mk.yml
index fc0fb9d1c..b3ff76b9a 100644
--- a/config/locales/mk.yml
+++ b/config/locales/mk.yml
@@ -1002,3 +1002,6 @@ mk:
setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues
button_edit_section: Edit this section
setting_repositories_encodings: Attachments and repositories encodings
+ description_all_columns: All Columns
+ button_export: Export
+ label_export_options: "%{export_format} export options"
diff --git a/config/locales/mn.yml b/config/locales/mn.yml
index da04b9f29..16128e4ae 100644
--- a/config/locales/mn.yml
+++ b/config/locales/mn.yml
@@ -1003,3 +1003,6 @@ mn:
setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues
button_edit_section: Edit this section
setting_repositories_encodings: Attachments and repositories encodings
+ description_all_columns: All Columns
+ button_export: Export
+ label_export_options: "%{export_format} export options"
diff --git a/config/locales/nl.yml b/config/locales/nl.yml
index f610520f4..f6bb27d16 100644
--- a/config/locales/nl.yml
+++ b/config/locales/nl.yml
@@ -984,3 +984,6 @@ nl:
setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues
button_edit_section: Edit this section
setting_repositories_encodings: Attachments and repositories encodings
+ description_all_columns: All Columns
+ button_export: Export
+ label_export_options: "%{export_format} export options"
diff --git a/config/locales/no.yml b/config/locales/no.yml
index 33572781f..69bf7490b 100644
--- a/config/locales/no.yml
+++ b/config/locales/no.yml
@@ -992,3 +992,6 @@
setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues
button_edit_section: Edit this section
setting_repositories_encodings: Attachments and repositories encodings
+ description_all_columns: All Columns
+ button_export: Export
+ label_export_options: "%{export_format} export options"
diff --git a/config/locales/pl.yml b/config/locales/pl.yml
index 41abb1ff5..4e53459ad 100644
--- a/config/locales/pl.yml
+++ b/config/locales/pl.yml
@@ -1019,3 +1019,6 @@ pl:
setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues
button_edit_section: Edit this section
setting_repositories_encodings: Attachments and repositories encodings
+ description_all_columns: All Columns
+ button_export: Export
+ label_export_options: "%{export_format} export options"
diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml
index 0baa3b092..a5b26fe02 100644
--- a/config/locales/pt-BR.yml
+++ b/config/locales/pt-BR.yml
@@ -1023,3 +1023,6 @@ pt-BR:
setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues
button_edit_section: Edit this section
setting_repositories_encodings: Attachments and repositories encodings
+ description_all_columns: All Columns
+ button_export: Export
+ label_export_options: "%{export_format} export options"
diff --git a/config/locales/pt.yml b/config/locales/pt.yml
index a951e719f..2ff204dc6 100644
--- a/config/locales/pt.yml
+++ b/config/locales/pt.yml
@@ -1007,3 +1007,6 @@ pt:
setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues
button_edit_section: Edit this section
setting_repositories_encodings: Attachments and repositories encodings
+ description_all_columns: All Columns
+ button_export: Export
+ label_export_options: "%{export_format} export options"
diff --git a/config/locales/ro.yml b/config/locales/ro.yml
index 19631bd65..c430fe3a8 100644
--- a/config/locales/ro.yml
+++ b/config/locales/ro.yml
@@ -995,3 +995,6 @@ ro:
setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues
button_edit_section: Edit this section
setting_repositories_encodings: Attachments and repositories encodings
+ description_all_columns: All Columns
+ button_export: Export
+ label_export_options: "%{export_format} export options"
diff --git a/config/locales/ru.yml b/config/locales/ru.yml
index 66976fdca..0a15b80e6 100644
--- a/config/locales/ru.yml
+++ b/config/locales/ru.yml
@@ -1115,3 +1115,6 @@ ru:
setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues
button_edit_section: Edit this section
setting_repositories_encodings: Attachments and repositories encodings
+ description_all_columns: All Columns
+ button_export: Export
+ label_export_options: "%{export_format} export options"
diff --git a/config/locales/sk.yml b/config/locales/sk.yml
index ac69b9cd7..628812d12 100644
--- a/config/locales/sk.yml
+++ b/config/locales/sk.yml
@@ -997,3 +997,6 @@ sk:
setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues
button_edit_section: Edit this section
setting_repositories_encodings: Attachments and repositories encodings
+ description_all_columns: All Columns
+ button_export: Export
+ label_export_options: "%{export_format} export options"
diff --git a/config/locales/sl.yml b/config/locales/sl.yml
index 5949313b2..0b4f060cb 100644
--- a/config/locales/sl.yml
+++ b/config/locales/sl.yml
@@ -1002,3 +1002,6 @@ sl:
setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues
button_edit_section: Edit this section
setting_repositories_encodings: Attachments and repositories encodings
+ description_all_columns: All Columns
+ button_export: Export
+ label_export_options: "%{export_format} export options"
diff --git a/config/locales/sr-YU.yml b/config/locales/sr-YU.yml
index 2545636e2..662ef51eb 100644
--- a/config/locales/sr-YU.yml
+++ b/config/locales/sr-YU.yml
@@ -1002,3 +1002,6 @@ sr-YU:
setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues
button_edit_section: Edit this section
setting_repositories_encodings: Attachments and repositories encodings
+ description_all_columns: All Columns
+ button_export: Export
+ label_export_options: "%{export_format} export options"
diff --git a/config/locales/sr.yml b/config/locales/sr.yml
index c9d7689a7..390f24e2e 100644
--- a/config/locales/sr.yml
+++ b/config/locales/sr.yml
@@ -1003,3 +1003,6 @@ sr:
setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues
button_edit_section: Edit this section
setting_repositories_encodings: Attachments and repositories encodings
+ description_all_columns: All Columns
+ button_export: Export
+ label_export_options: "%{export_format} export options"
diff --git a/config/locales/sv.yml b/config/locales/sv.yml
index ae0fb5ba9..841da7b15 100644
--- a/config/locales/sv.yml
+++ b/config/locales/sv.yml
@@ -1043,3 +1043,6 @@ sv:
setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues
button_edit_section: Edit this section
setting_repositories_encodings: Attachments and repositories encodings
+ description_all_columns: All Columns
+ button_export: Export
+ label_export_options: "%{export_format} export options"
diff --git a/config/locales/th.yml b/config/locales/th.yml
index 9e0a24be8..c625e68bd 100644
--- a/config/locales/th.yml
+++ b/config/locales/th.yml
@@ -999,3 +999,6 @@ th:
setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues
button_edit_section: Edit this section
setting_repositories_encodings: Attachments and repositories encodings
+ description_all_columns: All Columns
+ button_export: Export
+ label_export_options: "%{export_format} export options"
diff --git a/config/locales/tr.yml b/config/locales/tr.yml
index e494b86f1..1bde02b64 100644
--- a/config/locales/tr.yml
+++ b/config/locales/tr.yml
@@ -1021,3 +1021,6 @@ tr:
setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues
button_edit_section: Edit this section
setting_repositories_encodings: Attachments and repositories encodings
+ description_all_columns: All Columns
+ button_export: Export
+ label_export_options: "%{export_format} export options"
diff --git a/config/locales/uk.yml b/config/locales/uk.yml
index 264e75724..3f2643485 100644
--- a/config/locales/uk.yml
+++ b/config/locales/uk.yml
@@ -998,3 +998,6 @@ uk:
setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues
button_edit_section: Edit this section
setting_repositories_encodings: Attachments and repositories encodings
+ description_all_columns: All Columns
+ button_export: Export
+ label_export_options: "%{export_format} export options"
diff --git a/config/locales/vi.yml b/config/locales/vi.yml
index 9b19d392c..d766a69e6 100644
--- a/config/locales/vi.yml
+++ b/config/locales/vi.yml
@@ -1053,3 +1053,6 @@ vi:
setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues
button_edit_section: Edit this section
setting_repositories_encodings: Attachments and repositories encodings
+ description_all_columns: All Columns
+ button_export: Export
+ label_export_options: "%{export_format} export options"
diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml
index 7fc8c6e62..e0e612c6c 100644
--- a/config/locales/zh-TW.yml
+++ b/config/locales/zh-TW.yml
@@ -1082,3 +1082,6 @@
description_date_to: 輸入結束日期
button_edit_section: Edit this section
setting_repositories_encodings: Attachments and repositories encodings
+ description_all_columns: All Columns
+ button_export: Export
+ label_export_options: "%{export_format} export options"
diff --git a/config/locales/zh.yml b/config/locales/zh.yml
index 161d897f3..410dc84a9 100644
--- a/config/locales/zh.yml
+++ b/config/locales/zh.yml
@@ -1004,3 +1004,6 @@ zh:
setting_default_issue_start_date_to_creation_date: 使用当前日期作为新问题的开始日期
button_edit_section: Edit this section
setting_repositories_encodings: Attachments and repositories encodings
+ description_all_columns: All Columns
+ button_export: Export
+ label_export_options: "%{export_format} export options"
diff --git a/public/javascripts/application.js b/public/javascripts/application.js
index 19aef77b8..230e40b5d 100644
--- a/public/javascripts/application.js
+++ b/public/javascripts/application.js
@@ -186,6 +186,39 @@ function promptToRemote(text, param, url) {
}
}
+function showModal(id, width) {
+ el = $(id);
+ if (el == undefined || el.visible()) {return;}
+ var h = $$('body')[0].getHeight();
+ var d = document.createElement("div");
+ d.id = 'modalbg';
+ $('main').appendChild(d);
+ $('modalbg').setStyle({ width: '100%', height: h + 'px' });
+ $('modalbg').show();
+
+ var pageWidth = document.viewport.getWidth();
+ el.setStyle({'width': width});
+ el.setStyle({'left': (((pageWidth - el.getWidth())/2 *100) / pageWidth) + '%'});
+ el.addClassName('modal');
+ el.show();
+
+ var submit = el.down("input[type=submit]");
+ if (submit) {
+ submit.focus();
+ }
+}
+
+function hideModal(el) {
+ var modal = Element.up(el, 'div.modal');
+ if (modal) {
+ modal.hide();
+ }
+ var bg = $('modalbg');
+ if (bg) {
+ bg.remove();
+ }
+}
+
function collapseScmEntry(id) {
var els = document.getElementsByClassName(id, 'browser');
for (var i = 0; i < els.length; i++) {
diff --git a/public/stylesheets/application.css b/public/stylesheets/application.css
index 4f708c907..715cfdd78 100644
--- a/public/stylesheets/application.css
+++ b/public/stylesheets/application.css
@@ -91,6 +91,12 @@ html>body #content { min-height: 600px; }
#login-form label {font-weight: bold;}
#login-form input#username, #login-form input#password { width: 300px; }
+#modalbg {position:absolute; top:0; left:0; width:100%; height:100%; background:#ccc; z-index:49; opacity:0.5;}
+html>body #modalbg {position:fixed;}
+div.modal { border-radius:5px; position:absolute; top:25%; background:#fff; border:2px solid #759FCF; z-index:50; padding:0px; padding:8px;}
+div.modal h3.title {background:#759FCF; color:#fff; border:0; padding-left:8px; margin:-8px; margin-bottom: 1em; border-top-left-radius:2px;border-top-right-radius:2px;}
+html>body div.modal {position:fixed;}
+
input#openid_url { background: url(../images/openid-bg.gif) no-repeat; background-color: #fff; background-position: 0 50%; padding-left: 18px; }
.clear:after{ content: "."; display: block; height: 0; clear: both; visibility: hidden; }
diff --git a/test/functional/issues_controller_test.rb b/test/functional/issues_controller_test.rb
index b350512af..017f47451 100644
--- a/test/functional/issues_controller_test.rb
+++ b/test/functional/issues_controller_test.rb
@@ -281,21 +281,43 @@ class IssuesControllerTest < ActionController::TestCase
get :index, :sort => 'tracker'
end
- def test_index_csv_with_project
- Setting.default_language = 'en'
-
+ def test_index_csv
get :index, :format => 'csv'
assert_response :success
assert_not_nil assigns(:issues)
assert_equal 'text/csv', @response.content_type
assert @response.body.starts_with?("#,")
+ lines = @response.body.chomp.split("\n")
+ assert_equal assigns(:query).columns.size + 1, lines[0].split(',').size
+ end
+ def test_index_csv_with_project
get :index, :project_id => 1, :format => 'csv'
assert_response :success
assert_not_nil assigns(:issues)
assert_equal 'text/csv', @response.content_type
end
+ def test_index_csv_with_description
+ get :index, :format => 'csv', :description => '1'
+ assert_response :success
+ assert_not_nil assigns(:issues)
+ assert_equal 'text/csv', @response.content_type
+ assert @response.body.starts_with?("#,")
+ lines = @response.body.chomp.split("\n")
+ assert_equal assigns(:query).columns.size + 2, lines[0].split(',').size
+ end
+
+ def test_index_csv_with_all_columns
+ get :index, :format => 'csv', :columns => 'all'
+ assert_response :success
+ assert_not_nil assigns(:issues)
+ assert_equal 'text/csv', @response.content_type
+ assert @response.body.starts_with?("#,")
+ lines = @response.body.chomp.split("\n")
+ assert_equal assigns(:query).available_columns.size + 1, lines[0].split(',').size
+ end
+
def test_index_csv_big_5
with_settings :default_language => "zh-TW" do
str_utf8 = "\xe4\xb8\x80\xe6\x9c\x88"
@@ -314,7 +336,7 @@ class IssuesControllerTest < ActionController::TestCase
:op => '=', :values => [str_utf8],
:format => 'csv'
assert_equal 'text/csv', @response.content_type
- lines = @response.body.chomp.split("\n")
+ lines = @response.body.chomp.split("\n")
s1 = "\xaa\xac\xbaA"
if str_utf8.respond_to?(:force_encoding)
s1.force_encoding('Big5')
@@ -338,17 +360,19 @@ class IssuesControllerTest < ActionController::TestCase
get :index, :project_id => 1,
:f => ['subject'],
:op => '=', :values => [str_utf8],
- :format => 'csv'
+ :c => ['status', 'subject'],
+ :format => 'csv',
+ :set_filter => 1
assert_equal 'text/csv', @response.content_type
- lines = @response.body.chomp.split("\n")
- s1 = "\xaa\xac\xbaA"
+ lines = @response.body.chomp.split("\n")
+ s1 = "\xaa\xac\xbaA" # status
if str_utf8.respond_to?(:force_encoding)
s1.force_encoding('Big5')
end
assert lines[0].include?(s1)
- s2 = lines[1].split(",")[5]
+ s2 = lines[1].split(",")[2]
if s1.respond_to?(:force_encoding)
- s3 = "\xa5H?"
+ s3 = "\xa5H?" # subject
s3.force_encoding('Big5')
assert_equal s3, s2
elsif RUBY_PLATFORM == 'java'