No I didn't found. However I've faced another bug on updating an issue, it was a bug with i18n handling. I've do some patches :
Index: lib/redmine/i18n.rb
===================================================================
--- lib/redmine/i18n.rb (revision 3733)
+++ lib/redmine/i18n.rb (working copy)
@@ -7,15 +7,23 @@
def l(*args)
case args.size
when 1
- ::I18n.t(*args)
+ begin
+ ::I18n.t(*args)
+ rescue
+ args
+ end
when 2
- if args.last.is_a?(Hash)
- ::I18n.t(*args)
- elsif args.last.is_a?(String)
- ::I18n.t(args.first, :value => args.last)
- else
- ::I18n.t(args.first, :count => args.last)
- end
+ begin
+ if args.last.is_a?(Hash)
+ ::I18n.t(*args)
+ elsif args.last.is_a?(String)
+ ::I18n.t(args.first, :value => args.last)
+ else
+ ::I18n.t(args.first, :count => args.last)
+ end
+ rescue
+ args
+ end
else
raise "Translation string with multiple values: #{args.first}"
end
Index: lib/redmine/export/pdf.rb
===================================================================
--- lib/redmine/export/pdf.rb (revision 3733)
+++ lib/redmine/export/pdf.rb (working copy)
@@ -91,7 +91,7 @@
def Cell(w,h=0,txt='',border=0,ln=0,align='',fill=0,link='')
@ic ||= Iconv.new(l(:general_pdf_encoding), 'UTF-8')
# these quotation marks are not correctly rendered in the pdf
- txt = txt.gsub(/[“�]/, '"') if txt
+ #txt = txt.gsub(/[“�]/, '"') if txt
txt = begin
# 0x5c char handling
txtar = txt.split('\\')
Index: lib/redmine/helpers/gantt.rb
===================================================================
--- lib/redmine/helpers/gantt.rb (revision 3733)
+++ lib/redmine/helpers/gantt.rb (working copy)
@@ -52,29 +52,23 @@
@date_to = (@date_from >> @months) - 1
end
-
def events=(e)
- @events = e
- # Adds all ancestors
- root_ids = e.select {|i| i.is_a?(Issue) && i.parent_id? }.collect(&:root_id).uniq
- if root_ids.any?
- # Retrieves all nodes
- parents = Issue.find_all_by_root_id(root_ids, :conditions => ["rgt - lft > 1"])
- # Only add ancestors
- @events += parents.select {|p| @events.detect {|i| i.is_a?(Issue) && p.is_ancestor_of?(i)}}
- end
- @events.uniq!
- # Sort issues by hierarchy and start dates
- @events.sort! {|x,y|
- if x.is_a?(Issue) && y.is_a?(Issue)
- gantt_issue_compare(x, y, @events)
- else
- gantt_start_compare(x, y)
- end
- }
- # Removes issues that have no start or end date
- @events.reject! {|i| i.is_a?(Issue) && (i.start_date.nil? || i.due_before.nil?) }
- @events
+ #@events = e.sort {|x,y| x.start_date <=> y.start_date }
+ @events = e.sort {|x,y|
+ if x.kind_of?(Issue) and y.kind_of?(Issue)
+ if x.assigned_to == y.assigned_to
+ x.start_date <=> y.start_date
+ else
+ x.assigned_to <=> y.assigned_to
+ end
+ else
+ if x.class == y.class
+ x.start_date <=> y.start_date
+ else
+ x.class.to_s <=> y.class.to_s
+ end
+ end
+ }
end
def params
@@ -239,36 +233,6 @@
imgl.format = format
imgl.to_blob
end if Object.const_defined?(:Magick)
-
- private
-
- def gantt_issue_compare(x, y, issues)
- if x.parent_id == y.parent_id
- gantt_start_compare(x, y)
- elsif x.is_ancestor_of?(y)
- -1
- elsif y.is_ancestor_of?(x)
- 1
- else
- ax = issues.select {|i| i.is_a?(Issue) && i.is_ancestor_of?(x) && !i.is_ancestor_of?(y) }.sort_by(&:lft).first
- ay = issues.select {|i| i.is_a?(Issue) && i.is_ancestor_of?(y) && !i.is_ancestor_of?(x) }.sort_by(&:lft).first
- if ax.nil? && ay.nil?
- gantt_start_compare(x, y)
- else
- gantt_issue_compare(ax || x, ay || y, issues)
- end
- end
- end
-
- def gantt_start_compare(x, y)
- if x.start_date.nil?
- -1
- elsif y.start_date.nil?
- 1
- else
- x.start_date <=> y.start_date
- end
- end
end
end
end