##// END OF EJS Templates
set default category_id instead of the object (#11665)...
set default category_id instead of the object (#11665) Rails 2.3 still has issues with synchronizing the association_id and association attributes of an object. That means, if you set the association with an object first and then just set the id afterwards, the object wins and the setting of the id gets lost. This is not an issue in Rails >= 3.1 anymore. Contributed by Holger Just. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.4-stable@10226 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r9264:32fd503cbbdf
r10043:14dcefaa97f9
Show More
issues_helper.rb
354 lines | 13.3 KiB | text/x-ruby | RubyLexer
Jean-Philippe Lang
Added encoding comment to helpers (#9792)....
r8090 # encoding: utf-8
#
Jean-Philippe Lang
Keep track of issue description changes (#746)....
r4834 # Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 #
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
Toshi MARUYAMA
remove trailing white-spaces from issues helper source....
r5711 #
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
Toshi MARUYAMA
remove trailing white-spaces from issues helper source....
r5711 #
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
module IssuesHelper
Jean-Philippe Lang
Fixed: Date and time formats defined in settings not applied to the issues CSV export....
r928 include ApplicationHelper
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330
Jean-Philippe Lang
Issue list improvements for subtasking (#5196):...
r3504 def issue_list(issues, &block)
ancestors = []
issues.each do |issue|
while (ancestors.any? && !issue.is_descendant_of?(ancestors.last))
ancestors.pop
end
yield issue, ancestors.size
Jean-Philippe Lang
Slight optimization in issue tree rendering....
r3506 ancestors << issue unless issue.leaf?
Jean-Philippe Lang
Issue list improvements for subtasking (#5196):...
r3504 end
end
Eric Davis
Document render_issue_tooltip...
r4052
# Renders a HTML/CSS tooltip
#
# To use, a trigger div is needed. This is a div with the class of "tooltip"
# that contains this method wrapped in a span with the class of "tip"
#
# <div class="tooltip"><%= link_to_issue(issue) %>
# <span class="tip"><%= render_issue_tooltip(issue) %></span>
# </div>
#
Jean-Philippe Lang
Performance improvement on calendar and gantt (about 45% on gantt for large number of issues)....
r783 def render_issue_tooltip(issue)
Eric Davis
Add Issue Status to the tooltip. #6169...
r3838 @cached_label_status ||= l(:field_status)
Jean-Philippe Lang
Performance improvement on calendar and gantt (about 45% on gantt for large number of issues)....
r783 @cached_label_start_date ||= l(:field_start_date)
@cached_label_due_date ||= l(:field_due_date)
@cached_label_assigned_to ||= l(:field_assigned_to)
@cached_label_priority ||= l(:field_priority)
Eric Davis
Rewrite the Gantt chart. #6276...
r3958 @cached_label_project ||= l(:field_project)
Toshi MARUYAMA
Rails3: helper: html_safe for IssuesHelper render_issue_tooltip method...
r8334 link_to_issue(issue) + "<br /><br />".html_safe +
"<strong>#{@cached_label_project}</strong>: #{link_to_project(issue.project)}<br />".html_safe +
"<strong>#{@cached_label_status}</strong>: #{h(issue.status.name)}<br />".html_safe +
"<strong>#{@cached_label_start_date}</strong>: #{format_date(issue.start_date)}<br />".html_safe +
"<strong>#{@cached_label_due_date}</strong>: #{format_date(issue.due_date)}<br />".html_safe +
"<strong>#{@cached_label_assigned_to}</strong>: #{h(issue.assigned_to)}<br />".html_safe +
"<strong>#{@cached_label_priority}</strong>: #{h(issue.priority.name)}".html_safe
Jean-Philippe Lang
Performance improvement on calendar and gantt (about 45% on gantt for large number of issues)....
r783 end
Toshi MARUYAMA
remove trailing white-spaces from issues helper source....
r5711
Jean-Philippe Lang
Adds a helper for issue heading (#7647)....
r5327 def issue_heading(issue)
h("#{issue.tracker} ##{issue.id}")
end
Toshi MARUYAMA
remove trailing white-spaces from issues helper source....
r5711
Jean-Philippe Lang
Adds subtasking (#443) including:...
r3459 def render_issue_subject_with_tree(issue)
s = ''
Jean-Philippe Lang
Private issues (#7414)....
r5346 ancestors = issue.root? ? [] : issue.ancestors.visible.all
Jean-Philippe Lang
Save 2 queries when displaying a root issue....
r5124 ancestors.each do |ancestor|
Jean-Philippe Lang
Adds subtasking (#443) including:...
r3459 s << '<div>' + content_tag('p', link_to_issue(ancestor))
end
Jean-Philippe Lang
Private issues (#7414)....
r5346 s << '<div>'
subject = h(issue.subject)
if issue.is_private?
subject = content_tag('span', l(:field_is_private), :class => 'private') + ' ' + subject
end
s << content_tag('h3', subject)
Jean-Philippe Lang
Save 2 queries when displaying a root issue....
r5124 s << '</div>' * (ancestors.size + 1)
Toshi MARUYAMA
Rails3: use String#html_safe for render_issue_subject_with_tree() at IssuesHelper....
r6376 s.html_safe
Jean-Philippe Lang
Adds subtasking (#443) including:...
r3459 end
Toshi MARUYAMA
remove trailing white-spaces from issues helper source....
r5711
Jean-Philippe Lang
Adds subtasking (#443) including:...
r3459 def render_descendants_tree(issue)
s = '<form><table class="list issues">'
Jean-Philippe Lang
Private issues (#7414)....
r5346 issue_list(issue.descendants.visible.sort_by(&:lft)) do |child, level|
Jean-Philippe Lang
Adds subtasking (#443) including:...
r3459 s << content_tag('tr',
Jean-Philippe Lang
Slight UI changes to the subtasks tree....
r3463 content_tag('td', check_box_tag("ids[]", child.id, false, :id => nil), :class => 'checkbox') +
Jean-Philippe Lang
Issue list improvements for subtasking (#5196):...
r3504 content_tag('td', link_to_issue(child, :truncate => 60), :class => 'subject') +
Jean-Philippe Lang
Adds subtasking (#443) including:...
r3459 content_tag('td', h(child.status)) +
content_tag('td', link_to_user(child.assigned_to)) +
content_tag('td', progress_bar(child.done_ratio, :width => '80px')),
Jean-Philippe Lang
Issue list improvements for subtasking (#5196):...
r3504 :class => "issue issue-#{child.id} hascontextmenu #{level > 0 ? "idnt idnt-#{level}" : nil}")
Jean-Philippe Lang
Adds subtasking (#443) including:...
r3459 end
Jean-Philippe Lang
Fixed malformed HTML....
r7941 s << '</table></form>'
Toshi MARUYAMA
Rails3: use String#html_safe for render_descendants_tree() at IssuesHelper....
r6377 s.html_safe
Jean-Philippe Lang
Adds subtasking (#443) including:...
r3459 end
Toshi MARUYAMA
remove trailing white-spaces from issues helper source....
r5711
Jean-Philippe Lang
Fixed: custom fields are not displayed in the same order on issue form and view....
r2722 def render_custom_fields_rows(issue)
return if issue.custom_field_values.empty?
ordered_values = []
half = (issue.custom_field_values.size / 2.0).ceil
half.times do |i|
ordered_values << issue.custom_field_values[i]
ordered_values << issue.custom_field_values[i + half]
end
s = "<tr>\n"
n = 0
ordered_values.compact.each do |value|
s << "</tr>\n<tr>\n" if n > 0 && (n % 2) == 0
s << "\t<th>#{ h(value.custom_field.name) }:</th><td>#{ simple_format_without_paragraph(h(show_value(value))) }</td>\n"
n += 1
end
s << "</tr>\n"
Toshi MARUYAMA
Rails3: use String#html_safe for render_custom_fields_rows() at IssuesHelper....
r6378 s.html_safe
Jean-Philippe Lang
Fixed: custom fields are not displayed in the same order on issue form and view....
r2722 end
Toshi MARUYAMA
remove trailing white-spaces from issues helper source....
r5711
Jean-Philippe Lang
Warn about subtasks before deleting a parent issue (#6562)....
r5375 def issues_destroy_confirmation_message(issues)
issues = [issues] unless issues.is_a?(Array)
message = l(:text_issues_destroy_confirmation)
descendant_count = issues.inject(0) {|memo, i| memo += (i.right - i.left - 1)/2}
if descendant_count > 0
issues.each do |issue|
next if issue.root?
issues.each do |other_issue|
descendant_count -= 1 if issue.is_descendant_of?(other_issue)
end
end
if descendant_count > 0
message << "\n" + l(:text_issues_destroy_descendants_confirmation, :count => descendant_count)
end
end
message
end
Toshi MARUYAMA
remove trailing white-spaces from issues helper source....
r5711
Jean-Philippe Lang
Queries can be marked as 'For all projects'. Such queries will be available on all projects and on the global issue list (#897, closes #671)....
r1296 def sidebar_queries
unless @sidebar_queries
Jean-Philippe Lang
Use Query.visible scope....
r7966 @sidebar_queries = Query.visible.all(
:order => "#{Query.table_name}.name ASC",
# Project specific queries and global queries
:conditions => (@project.nil? ? ["project_id IS NULL"] : ["project_id IS NULL OR project_id = ?", @project.id])
)
Jean-Philippe Lang
Queries can be marked as 'For all projects'. Such queries will be available on all projects and on the global issue list (#897, closes #671)....
r1296 end
@sidebar_queries
end
Jean-Philippe Lang
Performance improvement on calendar and gantt (about 45% on gantt for large number of issues)....
r783
Jean-Philippe Lang
Splits private/public issue queries in the sidebar (#1067)....
r4788 def query_links(title, queries)
Jean-Philippe Lang
Preserve Issues/Gantt/Calendar tab when displaying a saved query (#7605)....
r4789 # links to #index on issues/show
url_params = controller_name == 'issues' ? {:controller => 'issues', :action => 'index', :project_id => @project} : params
Toshi MARUYAMA
remove trailing white-spaces from issues helper source....
r5711
Toshi MARUYAMA
HTML escape at app/helpers/app/helpers/issues_helper.rb....
r6232 content_tag('h3', h(title)) +
Jean-Philippe Lang
Splits private/public issue queries in the sidebar (#1067)....
r4788 queries.collect {|query|
Jean-Philippe Lang
Highlight active issue query in the sidebar....
r8540 css = 'query'
css << ' selected' if query == @query
link_to(h(query.name), url_params.merge(:query_id => query), :class => css)
Jean-Philippe Lang
html_safe for Rails3...
r8148 }.join('<br />').html_safe
Jean-Philippe Lang
Splits private/public issue queries in the sidebar (#1067)....
r4788 end
Toshi MARUYAMA
remove trailing white-spaces from issues helper source....
r5711
Jean-Philippe Lang
Splits private/public issue queries in the sidebar (#1067)....
r4788 def render_sidebar_queries
Jean-Philippe Lang
html_safe for Rails3...
r8148 out = ''.html_safe
Jean-Philippe Lang
Splits private/public issue queries in the sidebar (#1067)....
r4788 queries = sidebar_queries.select {|q| !q.is_public?}
out << query_links(l(:label_my_queries), queries) if queries.any?
queries = sidebar_queries.select {|q| q.is_public?}
out << query_links(l(:label_query_plural), queries) if queries.any?
out
end
Jean-Philippe Lang
Adds support for multiselect custom fields (#1189)....
r8601 # Returns the textual representation of a journal details
# as an array of strings
Jean-Philippe Lang
Mailer#url_for not called in views with Rails 3.1....
r8903 def details_to_strings(details, no_html=false, options={})
options[:only_path] = (options[:only_path] == false ? false : true)
Jean-Philippe Lang
Adds support for multiselect custom fields (#1189)....
r8601 strings = []
values_by_field = {}
details.each do |detail|
if detail.property == 'cf'
field_id = detail.prop_key
field = CustomField.find_by_id(field_id)
if field && field.multiple?
values_by_field[field_id] ||= {:added => [], :deleted => []}
if detail.old_value
values_by_field[field_id][:deleted] << detail.old_value
end
if detail.value
values_by_field[field_id][:added] << detail.value
end
next
end
end
Jean-Philippe Lang
Mailer#url_for not called in views with Rails 3.1....
r8903 strings << show_detail(detail, no_html, options)
Jean-Philippe Lang
Adds support for multiselect custom fields (#1189)....
r8601 end
values_by_field.each do |field_id, changes|
detail = JournalDetail.new(:property => 'cf', :prop_key => field_id)
if changes[:added].any?
detail.value = changes[:added]
Jean-Philippe Lang
Mailer#url_for not called in views with Rails 3.1....
r8903 strings << show_detail(detail, no_html, options)
Jean-Philippe Lang
Adds support for multiselect custom fields (#1189)....
r8601 elsif changes[:deleted].any?
detail.old_value = changes[:deleted]
Jean-Philippe Lang
Mailer#url_for not called in views with Rails 3.1....
r8903 strings << show_detail(detail, no_html, options)
Jean-Philippe Lang
Adds support for multiselect custom fields (#1189)....
r8601 end
end
strings
end
# Returns the textual representation of a single journal detail
Jean-Philippe Lang
Mailer#url_for not called in views with Rails 3.1....
r8903 def show_detail(detail, no_html=false, options={})
Jean-Philippe Lang
Adds support for multiselect custom fields (#1189)....
r8601 multiple = false
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 case detail.property
when 'attr'
Eric Davis
Refactor: Extract similar logic in IssuesHelper#show_detail to a new method....
r3439 field = detail.prop_key.to_s.gsub(/\_id$/, "")
label = l(("field_" + field).to_sym)
Jean-Philippe Lang
Code cleanup....
r8604 case detail.prop_key
when 'due_date', 'start_date'
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 value = format_date(detail.value.to_date) if detail.value
old_value = format_date(detail.old_value.to_date) if detail.old_value
Eric Davis
Refactor: Remove duplicated case statements....
r3440
Jean-Philippe Lang
Code cleanup....
r8604 when 'project_id', 'status_id', 'tracker_id', 'assigned_to_id',
'priority_id', 'category_id', 'fixed_version_id'
Eric Davis
Refactor: Extract similar logic in IssuesHelper#show_detail to a new method....
r3439 value = find_name_by_reflection(field, detail.value)
old_value = find_name_by_reflection(field, detail.old_value)
Eric Davis
Refactor: Remove duplicated case statements....
r3440
Jean-Philippe Lang
Code cleanup....
r8604 when 'estimated_hours'
Jean-Philippe Lang
Fixed: Estimated time in issue's journal should be rounded to two decimals (#1793)....
r1753 value = "%0.02f" % detail.value.to_f unless detail.value.blank?
old_value = "%0.02f" % detail.old_value.to_f unless detail.old_value.blank?
Jean-Philippe Lang
Fixed: Wrong label in issue-journal for subtask-changes (#5090)....
r3479
Jean-Philippe Lang
Code cleanup....
r8604 when 'parent_id'
Jean-Philippe Lang
Fixed: Wrong label in issue-journal for subtask-changes (#5090)....
r3479 label = l(:field_parent_issue)
value = "##{detail.value}" unless detail.value.blank?
old_value = "##{detail.old_value}" unless detail.old_value.blank?
Toshi MARUYAMA
remove trailing white-spaces from issues helper source....
r5711
Jean-Philippe Lang
Code cleanup....
r8604 when 'is_private'
Jean-Philippe Lang
Private issues (#7414)....
r5346 value = l(detail.value == "0" ? :general_text_No : :general_text_Yes) unless detail.value.blank?
old_value = l(detail.old_value == "0" ? :general_text_No : :general_text_Yes) unless detail.old_value.blank?
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 end
when 'cf'
custom_field = CustomField.find_by_id(detail.prop_key)
if custom_field
Jean-Philippe Lang
Adds support for multiselect custom fields (#1189)....
r8601 multiple = custom_field.multiple?
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 label = custom_field.name
value = format_value(detail.value, custom_field.field_format) if detail.value
old_value = format_value(detail.old_value, custom_field.field_format) if detail.old_value
end
Jean-Philippe Lang
Feature 9867 Allow file upload in comment and add to issue history...
r422 when 'attachment'
label = l(:label_attachment)
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 end
Toshi MARUYAMA
code layout clean up issues helper...
r7905 call_hook(:helper_issues_show_detail_after_setting,
{:detail => detail, :label => label, :value => value, :old_value => old_value })
Jean-Philippe Lang
Merged hooks branch @ r1785 into trunk....
r1785
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 label ||= detail.prop_key
value ||= detail.value
old_value ||= detail.old_value
Toshi MARUYAMA
remove trailing white-spaces from issues helper source....
r5711
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 unless no_html
label = content_tag('strong', label)
old_value = content_tag("i", h(old_value)) if detail.old_value
Jean-Philippe Lang
Use #blank? instead....
r6203 old_value = content_tag("strike", old_value) if detail.old_value and detail.value.blank?
Toshi MARUYAMA
add a view link to note attachment file (#4774)...
r9192 if detail.property == 'attachment' && !value.blank? && atta = Attachment.find_by_id(detail.prop_key)
Jean-Philippe Lang
Main project list now displays root projects with their subprojects....
r718 # Link to the attachment if it has not been removed
Toshi MARUYAMA
add a view link to note attachment file (#4774)...
r9192 value = link_to_attachment(atta, :download => true, :only_path => options[:only_path])
Jean-Philippe Lang
Do not display the magnifier for added files in email notifications (#4774)....
r9199 if options[:only_path] != false && atta.is_text?
Toshi MARUYAMA
add a view link to note attachment file (#4774)...
r9192 value += link_to(
image_tag('magnifier.png'),
:controller => 'attachments', :action => 'show',
:id => atta, :filename => atta.filename
)
end
Jean-Philippe Lang
Main project list now displays root projects with their subprojects....
r718 else
value = content_tag("i", h(value)) if value
end
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 end
Toshi MARUYAMA
remove trailing white-spaces from issues helper source....
r5711
Jean-Philippe Lang
Keep track of issue description changes (#746)....
r4834 if detail.property == 'attr' && detail.prop_key == 'description'
s = l(:text_journal_changed_no_detail, :label => label)
unless no_html
Toshi MARUYAMA
remove trailing white-spaces from issues helper source....
r5711 diff_link = link_to 'diff',
Toshi MARUYAMA
code layout cleanup app/helpers/issues_helper.rb...
r9191 {:controller => 'journals', :action => 'diff', :id => detail.journal_id,
:detail_id => detail.id, :only_path => options[:only_path]},
Jean-Philippe Lang
Keep track of issue description changes (#746)....
r4834 :title => l(:label_view_diff)
s << " (#{ diff_link })"
end
Toshi MARUYAMA
Rails3: helper: html_safe for issues helper "show_detail" method...
r7904 s.html_safe
Jean-Philippe Lang
Code cleanup....
r8604 elsif detail.value.present?
Jean-Philippe Lang
Feature 9867 Allow file upload in comment and add to issue history...
r422 case detail.property
when 'attr', 'cf'
Jean-Philippe Lang
Code cleanup....
r8604 if detail.old_value.present?
Toshi MARUYAMA
Rails3: helper: html_safe for issues helper "show_detail" method...
r7904 l(:text_journal_changed, :label => label, :old => old_value, :new => value).html_safe
Jean-Philippe Lang
Adds support for multiselect custom fields (#1189)....
r8601 elsif multiple
l(:text_journal_added, :label => label, :value => value).html_safe
Jean-Philippe Lang
Feature 9867 Allow file upload in comment and add to issue history...
r422 else
Toshi MARUYAMA
Rails3: helper: html_safe for issues helper "show_detail" method...
r7904 l(:text_journal_set_to, :label => label, :value => value).html_safe
Jean-Philippe Lang
Feature 9867 Allow file upload in comment and add to issue history...
r422 end
when 'attachment'
Toshi MARUYAMA
Rails3: helper: html_safe for issues helper "show_detail" method...
r7904 l(:text_journal_added, :label => label, :value => value).html_safe
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 end
else
Toshi MARUYAMA
Rails3: helper: html_safe for issues helper "show_detail" method...
r7904 l(:text_journal_deleted, :label => label, :old => old_value).html_safe
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 end
Jean-Philippe Lang
improved issues change history...
r52 end
Eric Davis
Refactor: Extract similar logic in IssuesHelper#show_detail to a new method....
r3439
# Find the name of an associated record stored in the field attribute
def find_name_by_reflection(field, id)
association = Issue.reflect_on_association(field.to_sym)
if association
record = association.class_name.constantize.find_by_id(id)
return record.name if record
end
end
Toshi MARUYAMA
remove trailing white-spaces from issues helper source....
r5711
Jean-Philippe Lang
Adds subtasks to GET /issues/:id API (#5338)....
r4351 # Renders issue children recursively
def render_api_issue_children(issue, api)
return if issue.leaf?
api.array :children do
issue.children.each do |child|
api.issue(:id => child.id) do
api.tracker(:id => child.tracker_id, :name => child.tracker.name) unless child.tracker.nil?
api.subject child.subject
render_api_issue_children(child, api)
end
end
end
end
Toshi MARUYAMA
remove trailing white-spaces from issues helper source....
r5711
Jean-Philippe Lang
Adds a dialog box for CSV export options (#4742)....
r7754 def issues_to_csv(issues, project, query, options={})
Jean-Philippe Lang
Adds a key in lang files (general_csv_decimal_separator) to set the decimal separator (point or comma) in csv exports (#1372)....
r1577 decimal_separator = l(:general_csv_decimal_separator)
Jean-Philippe Lang
Adds a dialog box for CSV export options (#4742)....
r7754 encoding = l(:general_csv_encoding)
columns = (options[:columns] == 'all' ? query.available_columns : query.columns)
Jean-Philippe Lang
Use FasterCSV or ruby1.9 CSV instead of ruby1.8 builtin CSV....
r2893 export = FCSV.generate(:col_sep => l(:general_csv_separator)) do |csv|
Jean-Philippe Lang
ProjectsController#list_issues, #export_issues_csv and #export_issues_pdf merged into IssuesController#index...
r874 # csv header fields
Jean-Philippe Lang
Adds a dialog box for CSV export options (#4742)....
r7754 csv << [ "#" ] + columns.collect {|c| Redmine::CodesetUtil.from_utf8(c.caption.to_s, encoding) } +
(options[:description] ? [Redmine::CodesetUtil.from_utf8(l(:field_description), encoding)] : [])
Jean-Philippe Lang
ProjectsController#list_issues, #export_issues_csv and #export_issues_pdf merged into IssuesController#index...
r874 # csv lines
issues.each do |issue|
Jean-Philippe Lang
Adds a dialog box for CSV export options (#4742)....
r7754 col_values = columns.collect do |column|
s = if column.is_a?(QueryCustomFieldColumn)
Jean-Philippe Lang
Display of multi custom fields....
r8606 cv = issue.custom_field_values.detect {|v| v.custom_field_id == column.custom_field.id}
Jean-Philippe Lang
Adds a dialog box for CSV export options (#4742)....
r7754 show_value(cv)
else
Jean-Philippe Lang
Merged r9381 from trunk....
r9264 value = column.value(issue)
Jean-Philippe Lang
Adds a dialog box for CSV export options (#4742)....
r7754 if value.is_a?(Date)
format_date(value)
elsif value.is_a?(Time)
format_time(value)
elsif value.is_a?(Float)
Jean-Philippe Lang
Fixed rounding issue on spent hours column in CSV export (#10150)....
r8644 ("%.2f" % value).gsub('.', decimal_separator)
Jean-Philippe Lang
Adds a dialog box for CSV export options (#4742)....
r7754 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)] : [])
Jean-Philippe Lang
ProjectsController#list_issues, #export_issues_csv and #export_issues_pdf merged into IssuesController#index...
r874 end
end
export
end
Jean-Philippe Lang
Initial commit...
r2 end