##// END OF EJS Templates
Merged r10294 from trunk....
Jean-Philippe Lang -
r10114:8cc56cce6683
parent child
Show More
@@ -1,1130 +1,1132
1 # encoding: utf-8
1 # encoding: utf-8
2 #
2 #
3 # Redmine - project management software
3 # Redmine - project management software
4 # Copyright (C) 2006-2011 Jean-Philippe Lang
4 # Copyright (C) 2006-2011 Jean-Philippe Lang
5 #
5 #
6 # This program is free software; you can redistribute it and/or
6 # This program is free software; you can redistribute it and/or
7 # modify it under the terms of the GNU General Public License
7 # modify it under the terms of the GNU General Public License
8 # as published by the Free Software Foundation; either version 2
8 # as published by the Free Software Foundation; either version 2
9 # of the License, or (at your option) any later version.
9 # of the License, or (at your option) any later version.
10 #
10 #
11 # This program is distributed in the hope that it will be useful,
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 # GNU General Public License for more details.
14 # GNU General Public License for more details.
15 #
15 #
16 # You should have received a copy of the GNU General Public License
16 # You should have received a copy of the GNU General Public License
17 # along with this program; if not, write to the Free Software
17 # along with this program; if not, write to the Free Software
18 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19
19
20 require 'forwardable'
20 require 'forwardable'
21 require 'cgi'
21 require 'cgi'
22
22
23 module ApplicationHelper
23 module ApplicationHelper
24 include Redmine::WikiFormatting::Macros::Definitions
24 include Redmine::WikiFormatting::Macros::Definitions
25 include Redmine::I18n
25 include Redmine::I18n
26 include GravatarHelper::PublicMethods
26 include GravatarHelper::PublicMethods
27
27
28 extend Forwardable
28 extend Forwardable
29 def_delegators :wiki_helper, :wikitoolbar_for, :heads_for_wiki_formatter
29 def_delegators :wiki_helper, :wikitoolbar_for, :heads_for_wiki_formatter
30
30
31 # Return true if user is authorized for controller/action, otherwise false
31 # Return true if user is authorized for controller/action, otherwise false
32 def authorize_for(controller, action)
32 def authorize_for(controller, action)
33 User.current.allowed_to?({:controller => controller, :action => action}, @project)
33 User.current.allowed_to?({:controller => controller, :action => action}, @project)
34 end
34 end
35
35
36 # Display a link if user is authorized
36 # Display a link if user is authorized
37 #
37 #
38 # @param [String] name Anchor text (passed to link_to)
38 # @param [String] name Anchor text (passed to link_to)
39 # @param [Hash] options Hash params. This will checked by authorize_for to see if the user is authorized
39 # @param [Hash] options Hash params. This will checked by authorize_for to see if the user is authorized
40 # @param [optional, Hash] html_options Options passed to link_to
40 # @param [optional, Hash] html_options Options passed to link_to
41 # @param [optional, Hash] parameters_for_method_reference Extra parameters for link_to
41 # @param [optional, Hash] parameters_for_method_reference Extra parameters for link_to
42 def link_to_if_authorized(name, options = {}, html_options = nil, *parameters_for_method_reference)
42 def link_to_if_authorized(name, options = {}, html_options = nil, *parameters_for_method_reference)
43 link_to(name, options, html_options, *parameters_for_method_reference) if authorize_for(options[:controller] || params[:controller], options[:action])
43 link_to(name, options, html_options, *parameters_for_method_reference) if authorize_for(options[:controller] || params[:controller], options[:action])
44 end
44 end
45
45
46 # Display a link to remote if user is authorized
46 # Display a link to remote if user is authorized
47 def link_to_remote_if_authorized(name, options = {}, html_options = nil)
47 def link_to_remote_if_authorized(name, options = {}, html_options = nil)
48 url = options[:url] || {}
48 url = options[:url] || {}
49 link_to_remote(name, options, html_options) if authorize_for(url[:controller] || params[:controller], url[:action])
49 link_to_remote(name, options, html_options) if authorize_for(url[:controller] || params[:controller], url[:action])
50 end
50 end
51
51
52 # Displays a link to user's account page if active
52 # Displays a link to user's account page if active
53 def link_to_user(user, options={})
53 def link_to_user(user, options={})
54 if user.is_a?(User)
54 if user.is_a?(User)
55 name = h(user.name(options[:format]))
55 name = h(user.name(options[:format]))
56 if user.active?
56 if user.active?
57 link_to name, :controller => 'users', :action => 'show', :id => user
57 link_to name, :controller => 'users', :action => 'show', :id => user
58 else
58 else
59 name
59 name
60 end
60 end
61 else
61 else
62 h(user.to_s)
62 h(user.to_s)
63 end
63 end
64 end
64 end
65
65
66 # Displays a link to +issue+ with its subject.
66 # Displays a link to +issue+ with its subject.
67 # Examples:
67 # Examples:
68 #
68 #
69 # link_to_issue(issue) # => Defect #6: This is the subject
69 # link_to_issue(issue) # => Defect #6: This is the subject
70 # link_to_issue(issue, :truncate => 6) # => Defect #6: This i...
70 # link_to_issue(issue, :truncate => 6) # => Defect #6: This i...
71 # link_to_issue(issue, :subject => false) # => Defect #6
71 # link_to_issue(issue, :subject => false) # => Defect #6
72 # link_to_issue(issue, :project => true) # => Foo - Defect #6
72 # link_to_issue(issue, :project => true) # => Foo - Defect #6
73 #
73 #
74 def link_to_issue(issue, options={})
74 def link_to_issue(issue, options={})
75 title = nil
75 title = nil
76 subject = nil
76 subject = nil
77 if options[:subject] == false
77 if options[:subject] == false
78 title = truncate(issue.subject, :length => 60)
78 title = truncate(issue.subject, :length => 60)
79 else
79 else
80 subject = issue.subject
80 subject = issue.subject
81 if options[:truncate]
81 if options[:truncate]
82 subject = truncate(subject, :length => options[:truncate])
82 subject = truncate(subject, :length => options[:truncate])
83 end
83 end
84 end
84 end
85 s = link_to "#{h(issue.tracker)} ##{issue.id}", {:controller => "issues", :action => "show", :id => issue},
85 s = link_to "#{h(issue.tracker)} ##{issue.id}", {:controller => "issues", :action => "show", :id => issue},
86 :class => issue.css_classes,
86 :class => issue.css_classes,
87 :title => title
87 :title => title
88 s << h(": #{subject}") if subject
88 s << h(": #{subject}") if subject
89 s = h("#{issue.project} - ") + s if options[:project]
89 s = h("#{issue.project} - ") + s if options[:project]
90 s
90 s
91 end
91 end
92
92
93 # Generates a link to an attachment.
93 # Generates a link to an attachment.
94 # Options:
94 # Options:
95 # * :text - Link text (default to attachment filename)
95 # * :text - Link text (default to attachment filename)
96 # * :download - Force download (default: false)
96 # * :download - Force download (default: false)
97 def link_to_attachment(attachment, options={})
97 def link_to_attachment(attachment, options={})
98 text = options.delete(:text) || attachment.filename
98 text = options.delete(:text) || attachment.filename
99 action = options.delete(:download) ? 'download' : 'show'
99 action = options.delete(:download) ? 'download' : 'show'
100 opt_only_path = {}
100 opt_only_path = {}
101 opt_only_path[:only_path] = (options[:only_path] == false ? false : true)
101 opt_only_path[:only_path] = (options[:only_path] == false ? false : true)
102 options.delete(:only_path)
102 options.delete(:only_path)
103 link_to(h(text),
103 link_to(h(text),
104 {:controller => 'attachments', :action => action,
104 {:controller => 'attachments', :action => action,
105 :id => attachment, :filename => attachment.filename}.merge(opt_only_path),
105 :id => attachment, :filename => attachment.filename}.merge(opt_only_path),
106 options)
106 options)
107 end
107 end
108
108
109 # Generates a link to a SCM revision
109 # Generates a link to a SCM revision
110 # Options:
110 # Options:
111 # * :text - Link text (default to the formatted revision)
111 # * :text - Link text (default to the formatted revision)
112 def link_to_revision(revision, repository, options={})
112 def link_to_revision(revision, repository, options={})
113 if repository.is_a?(Project)
113 if repository.is_a?(Project)
114 repository = repository.repository
114 repository = repository.repository
115 end
115 end
116 text = options.delete(:text) || format_revision(revision)
116 text = options.delete(:text) || format_revision(revision)
117 rev = revision.respond_to?(:identifier) ? revision.identifier : revision
117 rev = revision.respond_to?(:identifier) ? revision.identifier : revision
118 link_to(
118 link_to(
119 h(text),
119 h(text),
120 {:controller => 'repositories', :action => 'revision', :id => repository.project, :repository_id => repository.identifier_param, :rev => rev},
120 {:controller => 'repositories', :action => 'revision', :id => repository.project, :repository_id => repository.identifier_param, :rev => rev},
121 :title => l(:label_revision_id, format_revision(revision))
121 :title => l(:label_revision_id, format_revision(revision))
122 )
122 )
123 end
123 end
124
124
125 # Generates a link to a message
125 # Generates a link to a message
126 def link_to_message(message, options={}, html_options = nil)
126 def link_to_message(message, options={}, html_options = nil)
127 link_to(
127 link_to(
128 h(truncate(message.subject, :length => 60)),
128 h(truncate(message.subject, :length => 60)),
129 { :controller => 'messages', :action => 'show',
129 { :controller => 'messages', :action => 'show',
130 :board_id => message.board_id,
130 :board_id => message.board_id,
131 :id => message.root,
131 :id => message.root,
132 :r => (message.parent_id && message.id),
132 :r => (message.parent_id && message.id),
133 :anchor => (message.parent_id ? "message-#{message.id}" : nil)
133 :anchor => (message.parent_id ? "message-#{message.id}" : nil)
134 }.merge(options),
134 }.merge(options),
135 html_options
135 html_options
136 )
136 )
137 end
137 end
138
138
139 # Generates a link to a project if active
139 # Generates a link to a project if active
140 # Examples:
140 # Examples:
141 #
141 #
142 # link_to_project(project) # => link to the specified project overview
142 # link_to_project(project) # => link to the specified project overview
143 # link_to_project(project, :action=>'settings') # => link to project settings
143 # link_to_project(project, :action=>'settings') # => link to project settings
144 # link_to_project(project, {:only_path => false}, :class => "project") # => 3rd arg adds html options
144 # link_to_project(project, {:only_path => false}, :class => "project") # => 3rd arg adds html options
145 # link_to_project(project, {}, :class => "project") # => html options with default url (project overview)
145 # link_to_project(project, {}, :class => "project") # => html options with default url (project overview)
146 #
146 #
147 def link_to_project(project, options={}, html_options = nil)
147 def link_to_project(project, options={}, html_options = nil)
148 if project.active?
148 if project.active?
149 url = {:controller => 'projects', :action => 'show', :id => project}.merge(options)
149 url = {:controller => 'projects', :action => 'show', :id => project}.merge(options)
150 link_to(h(project), url, html_options)
150 link_to(h(project), url, html_options)
151 else
151 else
152 h(project)
152 h(project)
153 end
153 end
154 end
154 end
155
155
156 def toggle_link(name, id, options={})
156 def toggle_link(name, id, options={})
157 onclick = "Element.toggle('#{id}'); "
157 onclick = "Element.toggle('#{id}'); "
158 onclick << (options[:focus] ? "Form.Element.focus('#{options[:focus]}'); " : "this.blur(); ")
158 onclick << (options[:focus] ? "Form.Element.focus('#{options[:focus]}'); " : "this.blur(); ")
159 onclick << "return false;"
159 onclick << "return false;"
160 link_to(name, "#", :onclick => onclick)
160 link_to(name, "#", :onclick => onclick)
161 end
161 end
162
162
163 def image_to_function(name, function, html_options = {})
163 def image_to_function(name, function, html_options = {})
164 html_options.symbolize_keys!
164 html_options.symbolize_keys!
165 tag(:input, html_options.merge({
165 tag(:input, html_options.merge({
166 :type => "image", :src => image_path(name),
166 :type => "image", :src => image_path(name),
167 :onclick => (html_options[:onclick] ? "#{html_options[:onclick]}; " : "") + "#{function};"
167 :onclick => (html_options[:onclick] ? "#{html_options[:onclick]}; " : "") + "#{function};"
168 }))
168 }))
169 end
169 end
170
170
171 def prompt_to_remote(name, text, param, url, html_options = {})
171 def prompt_to_remote(name, text, param, url, html_options = {})
172 html_options[:onclick] = "promptToRemote('#{text}', '#{param}', '#{url_for(url)}'); return false;"
172 html_options[:onclick] = "promptToRemote('#{text}', '#{param}', '#{url_for(url)}'); return false;"
173 link_to name, {}, html_options
173 link_to name, {}, html_options
174 end
174 end
175
175
176 def format_activity_title(text)
176 def format_activity_title(text)
177 h(truncate_single_line(text, :length => 100))
177 h(truncate_single_line(text, :length => 100))
178 end
178 end
179
179
180 def format_activity_day(date)
180 def format_activity_day(date)
181 date == Date.today ? l(:label_today).titleize : format_date(date)
181 date == Date.today ? l(:label_today).titleize : format_date(date)
182 end
182 end
183
183
184 def format_activity_description(text)
184 def format_activity_description(text)
185 h(truncate(text.to_s, :length => 120).gsub(%r{[\r\n]*<(pre|code)>.*$}m, '...')
185 h(truncate(text.to_s, :length => 120).gsub(%r{[\r\n]*<(pre|code)>.*$}m, '...')
186 ).gsub(/[\r\n]+/, "<br />").html_safe
186 ).gsub(/[\r\n]+/, "<br />").html_safe
187 end
187 end
188
188
189 def format_version_name(version)
189 def format_version_name(version)
190 if version.project == @project
190 if version.project == @project
191 h(version)
191 h(version)
192 else
192 else
193 h("#{version.project} - #{version}")
193 h("#{version.project} - #{version}")
194 end
194 end
195 end
195 end
196
196
197 def due_date_distance_in_words(date)
197 def due_date_distance_in_words(date)
198 if date
198 if date
199 l((date < Date.today ? :label_roadmap_overdue : :label_roadmap_due_in), distance_of_date_in_words(Date.today, date))
199 l((date < Date.today ? :label_roadmap_overdue : :label_roadmap_due_in), distance_of_date_in_words(Date.today, date))
200 end
200 end
201 end
201 end
202
202
203 def render_page_hierarchy(pages, node=nil, options={})
203 def render_page_hierarchy(pages, node=nil, options={})
204 content = ''
204 content = ''
205 if pages[node]
205 if pages[node]
206 content << "<ul class=\"pages-hierarchy\">\n"
206 content << "<ul class=\"pages-hierarchy\">\n"
207 pages[node].each do |page|
207 pages[node].each do |page|
208 content << "<li>"
208 content << "<li>"
209 content << link_to(h(page.pretty_title), {:controller => 'wiki', :action => 'show', :project_id => page.project, :id => page.title},
209 content << link_to(h(page.pretty_title), {:controller => 'wiki', :action => 'show', :project_id => page.project, :id => page.title},
210 :title => (options[:timestamp] && page.updated_on ? l(:label_updated_time, distance_of_time_in_words(Time.now, page.updated_on)) : nil))
210 :title => (options[:timestamp] && page.updated_on ? l(:label_updated_time, distance_of_time_in_words(Time.now, page.updated_on)) : nil))
211 content << "\n" + render_page_hierarchy(pages, page.id, options) if pages[page.id]
211 content << "\n" + render_page_hierarchy(pages, page.id, options) if pages[page.id]
212 content << "</li>\n"
212 content << "</li>\n"
213 end
213 end
214 content << "</ul>\n"
214 content << "</ul>\n"
215 end
215 end
216 content.html_safe
216 content.html_safe
217 end
217 end
218
218
219 # Renders flash messages
219 # Renders flash messages
220 def render_flash_messages
220 def render_flash_messages
221 s = ''
221 s = ''
222 flash.each do |k,v|
222 flash.each do |k,v|
223 s << (content_tag('div', v.html_safe, :class => "flash #{k}"))
223 s << (content_tag('div', v.html_safe, :class => "flash #{k}"))
224 end
224 end
225 s.html_safe
225 s.html_safe
226 end
226 end
227
227
228 # Renders tabs and their content
228 # Renders tabs and their content
229 def render_tabs(tabs)
229 def render_tabs(tabs)
230 if tabs.any?
230 if tabs.any?
231 render :partial => 'common/tabs', :locals => {:tabs => tabs}
231 render :partial => 'common/tabs', :locals => {:tabs => tabs}
232 else
232 else
233 content_tag 'p', l(:label_no_data), :class => "nodata"
233 content_tag 'p', l(:label_no_data), :class => "nodata"
234 end
234 end
235 end
235 end
236
236
237 # Renders the project quick-jump box
237 # Renders the project quick-jump box
238 def render_project_jump_box
238 def render_project_jump_box
239 return unless User.current.logged?
239 return unless User.current.logged?
240 projects = User.current.memberships.collect(&:project).compact.uniq
240 projects = User.current.memberships.collect(&:project).compact.uniq
241 if projects.any?
241 if projects.any?
242 s = '<select onchange="if (this.value != \'\') { window.location = this.value; }">' +
242 s = '<select onchange="if (this.value != \'\') { window.location = this.value; }">' +
243 "<option value=''>#{ l(:label_jump_to_a_project) }</option>" +
243 "<option value=''>#{ l(:label_jump_to_a_project) }</option>" +
244 '<option value="" disabled="disabled">---</option>'
244 '<option value="" disabled="disabled">---</option>'
245 s << project_tree_options_for_select(projects, :selected => @project) do |p|
245 s << project_tree_options_for_select(projects, :selected => @project) do |p|
246 { :value => url_for(:controller => 'projects', :action => 'show', :id => p, :jump => current_menu_item) }
246 { :value => url_for(:controller => 'projects', :action => 'show', :id => p, :jump => current_menu_item) }
247 end
247 end
248 s << '</select>'
248 s << '</select>'
249 s.html_safe
249 s.html_safe
250 end
250 end
251 end
251 end
252
252
253 def project_tree_options_for_select(projects, options = {})
253 def project_tree_options_for_select(projects, options = {})
254 s = ''
254 s = ''
255 project_tree(projects) do |project, level|
255 project_tree(projects) do |project, level|
256 name_prefix = (level > 0 ? ('&nbsp;' * 2 * level + '&#187; ').html_safe : '')
256 name_prefix = (level > 0 ? ('&nbsp;' * 2 * level + '&#187; ').html_safe : '')
257 tag_options = {:value => project.id}
257 tag_options = {:value => project.id}
258 if project == options[:selected] || (options[:selected].respond_to?(:include?) && options[:selected].include?(project))
258 if project == options[:selected] || (options[:selected].respond_to?(:include?) && options[:selected].include?(project))
259 tag_options[:selected] = 'selected'
259 tag_options[:selected] = 'selected'
260 else
260 else
261 tag_options[:selected] = nil
261 tag_options[:selected] = nil
262 end
262 end
263 tag_options.merge!(yield(project)) if block_given?
263 tag_options.merge!(yield(project)) if block_given?
264 s << content_tag('option', name_prefix + h(project), tag_options)
264 s << content_tag('option', name_prefix + h(project), tag_options)
265 end
265 end
266 s.html_safe
266 s.html_safe
267 end
267 end
268
268
269 # Yields the given block for each project with its level in the tree
269 # Yields the given block for each project with its level in the tree
270 #
270 #
271 # Wrapper for Project#project_tree
271 # Wrapper for Project#project_tree
272 def project_tree(projects, &block)
272 def project_tree(projects, &block)
273 Project.project_tree(projects, &block)
273 Project.project_tree(projects, &block)
274 end
274 end
275
275
276 def project_nested_ul(projects, &block)
276 def project_nested_ul(projects, &block)
277 s = ''
277 s = ''
278 if projects.any?
278 if projects.any?
279 ancestors = []
279 ancestors = []
280 projects.sort_by(&:lft).each do |project|
280 projects.sort_by(&:lft).each do |project|
281 if (ancestors.empty? || project.is_descendant_of?(ancestors.last))
281 if (ancestors.empty? || project.is_descendant_of?(ancestors.last))
282 s << "<ul>\n"
282 s << "<ul>\n"
283 else
283 else
284 ancestors.pop
284 ancestors.pop
285 s << "</li>"
285 s << "</li>"
286 while (ancestors.any? && !project.is_descendant_of?(ancestors.last))
286 while (ancestors.any? && !project.is_descendant_of?(ancestors.last))
287 ancestors.pop
287 ancestors.pop
288 s << "</ul></li>\n"
288 s << "</ul></li>\n"
289 end
289 end
290 end
290 end
291 s << "<li>"
291 s << "<li>"
292 s << yield(project).to_s
292 s << yield(project).to_s
293 ancestors << project
293 ancestors << project
294 end
294 end
295 s << ("</li></ul>\n" * ancestors.size)
295 s << ("</li></ul>\n" * ancestors.size)
296 end
296 end
297 s.html_safe
297 s.html_safe
298 end
298 end
299
299
300 def principals_check_box_tags(name, principals)
300 def principals_check_box_tags(name, principals)
301 s = ''
301 s = ''
302 principals.sort.each do |principal|
302 principals.sort.each do |principal|
303 s << "<label>#{ check_box_tag name, principal.id, false } #{h principal}</label>\n"
303 s << "<label>#{ check_box_tag name, principal.id, false } #{h principal}</label>\n"
304 end
304 end
305 s.html_safe
305 s.html_safe
306 end
306 end
307
307
308 # Returns a string for users/groups option tags
308 # Returns a string for users/groups option tags
309 def principals_options_for_select(collection, selected=nil)
309 def principals_options_for_select(collection, selected=nil)
310 s = ''
310 s = ''
311 if collection.include?(User.current)
311 if collection.include?(User.current)
312 s << content_tag('option', "<< #{l(:label_me)} >>".html_safe, :value => User.current.id)
312 s << content_tag('option', "<< #{l(:label_me)} >>".html_safe, :value => User.current.id)
313 end
313 end
314 groups = ''
314 groups = ''
315 collection.sort.each do |element|
315 collection.sort.each do |element|
316 selected_attribute = ' selected="selected"' if option_value_selected?(element, selected)
316 selected_attribute = ' selected="selected"' if option_value_selected?(element, selected)
317 (element.is_a?(Group) ? groups : s) << %(<option value="#{element.id}"#{selected_attribute}>#{h element.name}</option>)
317 (element.is_a?(Group) ? groups : s) << %(<option value="#{element.id}"#{selected_attribute}>#{h element.name}</option>)
318 end
318 end
319 unless groups.empty?
319 unless groups.empty?
320 s << %(<optgroup label="#{h(l(:label_group_plural))}">#{groups}</optgroup>)
320 s << %(<optgroup label="#{h(l(:label_group_plural))}">#{groups}</optgroup>)
321 end
321 end
322 s
322 s
323 end
323 end
324
324
325 # Truncates and returns the string as a single line
325 # Truncates and returns the string as a single line
326 def truncate_single_line(string, *args)
326 def truncate_single_line(string, *args)
327 truncate(string.to_s, *args).gsub(%r{[\r\n]+}m, ' ')
327 truncate(string.to_s, *args).gsub(%r{[\r\n]+}m, ' ')
328 end
328 end
329
329
330 # Truncates at line break after 250 characters or options[:length]
330 # Truncates at line break after 250 characters or options[:length]
331 def truncate_lines(string, options={})
331 def truncate_lines(string, options={})
332 length = options[:length] || 250
332 length = options[:length] || 250
333 if string.to_s =~ /\A(.{#{length}}.*?)$/m
333 if string.to_s =~ /\A(.{#{length}}.*?)$/m
334 "#{$1}..."
334 "#{$1}..."
335 else
335 else
336 string
336 string
337 end
337 end
338 end
338 end
339
339
340 def anchor(text)
340 def anchor(text)
341 text.to_s.gsub(' ', '_')
341 text.to_s.gsub(' ', '_')
342 end
342 end
343
343
344 def html_hours(text)
344 def html_hours(text)
345 text.gsub(%r{(\d+)\.(\d+)}, '<span class="hours hours-int">\1</span><span class="hours hours-dec">.\2</span>').html_safe
345 text.gsub(%r{(\d+)\.(\d+)}, '<span class="hours hours-int">\1</span><span class="hours hours-dec">.\2</span>').html_safe
346 end
346 end
347
347
348 def authoring(created, author, options={})
348 def authoring(created, author, options={})
349 l(options[:label] || :label_added_time_by, :author => link_to_user(author), :age => time_tag(created)).html_safe
349 l(options[:label] || :label_added_time_by, :author => link_to_user(author), :age => time_tag(created)).html_safe
350 end
350 end
351
351
352 def time_tag(time)
352 def time_tag(time)
353 text = distance_of_time_in_words(Time.now, time)
353 text = distance_of_time_in_words(Time.now, time)
354 if @project
354 if @project
355 link_to(text, {:controller => 'activities', :action => 'index', :id => @project, :from => time.to_date}, :title => format_time(time))
355 link_to(text, {:controller => 'activities', :action => 'index', :id => @project, :from => time.to_date}, :title => format_time(time))
356 else
356 else
357 content_tag('acronym', text, :title => format_time(time))
357 content_tag('acronym', text, :title => format_time(time))
358 end
358 end
359 end
359 end
360
360
361 def syntax_highlight_lines(name, content)
361 def syntax_highlight_lines(name, content)
362 lines = []
362 lines = []
363 syntax_highlight(name, content).each_line { |line| lines << line }
363 syntax_highlight(name, content).each_line { |line| lines << line }
364 lines
364 lines
365 end
365 end
366
366
367 def syntax_highlight(name, content)
367 def syntax_highlight(name, content)
368 Redmine::SyntaxHighlighting.highlight_by_filename(content, name)
368 Redmine::SyntaxHighlighting.highlight_by_filename(content, name)
369 end
369 end
370
370
371 def to_path_param(path)
371 def to_path_param(path)
372 path.to_s.split(%r{[/\\]}).select {|p| !p.blank?}
372 path.to_s.split(%r{[/\\]}).select {|p| !p.blank?}
373 end
373 end
374
374
375 def pagination_links_full(paginator, count=nil, options={})
375 def pagination_links_full(paginator, count=nil, options={})
376 page_param = options.delete(:page_param) || :page
376 page_param = options.delete(:page_param) || :page
377 per_page_links = options.delete(:per_page_links)
377 per_page_links = options.delete(:per_page_links)
378 url_param = params.dup
378 url_param = params.dup
379
379
380 html = ''
380 html = ''
381 if paginator.current.previous
381 if paginator.current.previous
382 # \xc2\xab(utf-8) = &#171;
382 # \xc2\xab(utf-8) = &#171;
383 html << link_to_content_update(
383 html << link_to_content_update(
384 "\xc2\xab " + l(:label_previous),
384 "\xc2\xab " + l(:label_previous),
385 url_param.merge(page_param => paginator.current.previous)) + ' '
385 url_param.merge(page_param => paginator.current.previous)) + ' '
386 end
386 end
387
387
388 html << (pagination_links_each(paginator, options) do |n|
388 html << (pagination_links_each(paginator, options) do |n|
389 link_to_content_update(n.to_s, url_param.merge(page_param => n))
389 link_to_content_update(n.to_s, url_param.merge(page_param => n))
390 end || '')
390 end || '')
391
391
392 if paginator.current.next
392 if paginator.current.next
393 # \xc2\xbb(utf-8) = &#187;
393 # \xc2\xbb(utf-8) = &#187;
394 html << ' ' + link_to_content_update(
394 html << ' ' + link_to_content_update(
395 (l(:label_next) + " \xc2\xbb"),
395 (l(:label_next) + " \xc2\xbb"),
396 url_param.merge(page_param => paginator.current.next))
396 url_param.merge(page_param => paginator.current.next))
397 end
397 end
398
398
399 unless count.nil?
399 unless count.nil?
400 html << " (#{paginator.current.first_item}-#{paginator.current.last_item}/#{count})"
400 html << " (#{paginator.current.first_item}-#{paginator.current.last_item}/#{count})"
401 if per_page_links != false && links = per_page_links(paginator.items_per_page)
401 if per_page_links != false && links = per_page_links(paginator.items_per_page)
402 html << " | #{links}"
402 html << " | #{links}"
403 end
403 end
404 end
404 end
405
405
406 html.html_safe
406 html.html_safe
407 end
407 end
408
408
409 def per_page_links(selected=nil)
409 def per_page_links(selected=nil)
410 links = Setting.per_page_options_array.collect do |n|
410 links = Setting.per_page_options_array.collect do |n|
411 n == selected ? n : link_to_content_update(n, params.merge(:per_page => n))
411 n == selected ? n : link_to_content_update(n, params.merge(:per_page => n))
412 end
412 end
413 links.size > 1 ? l(:label_display_per_page, links.join(', ')) : nil
413 links.size > 1 ? l(:label_display_per_page, links.join(', ')) : nil
414 end
414 end
415
415
416 def reorder_links(name, url, method = :post)
416 def reorder_links(name, url, method = :post)
417 link_to(image_tag('2uparrow.png', :alt => l(:label_sort_highest)),
417 link_to(image_tag('2uparrow.png', :alt => l(:label_sort_highest)),
418 url.merge({"#{name}[move_to]" => 'highest'}),
418 url.merge({"#{name}[move_to]" => 'highest'}),
419 :method => method, :title => l(:label_sort_highest)) +
419 :method => method, :title => l(:label_sort_highest)) +
420 link_to(image_tag('1uparrow.png', :alt => l(:label_sort_higher)),
420 link_to(image_tag('1uparrow.png', :alt => l(:label_sort_higher)),
421 url.merge({"#{name}[move_to]" => 'higher'}),
421 url.merge({"#{name}[move_to]" => 'higher'}),
422 :method => method, :title => l(:label_sort_higher)) +
422 :method => method, :title => l(:label_sort_higher)) +
423 link_to(image_tag('1downarrow.png', :alt => l(:label_sort_lower)),
423 link_to(image_tag('1downarrow.png', :alt => l(:label_sort_lower)),
424 url.merge({"#{name}[move_to]" => 'lower'}),
424 url.merge({"#{name}[move_to]" => 'lower'}),
425 :method => method, :title => l(:label_sort_lower)) +
425 :method => method, :title => l(:label_sort_lower)) +
426 link_to(image_tag('2downarrow.png', :alt => l(:label_sort_lowest)),
426 link_to(image_tag('2downarrow.png', :alt => l(:label_sort_lowest)),
427 url.merge({"#{name}[move_to]" => 'lowest'}),
427 url.merge({"#{name}[move_to]" => 'lowest'}),
428 :method => method, :title => l(:label_sort_lowest))
428 :method => method, :title => l(:label_sort_lowest))
429 end
429 end
430
430
431 def breadcrumb(*args)
431 def breadcrumb(*args)
432 elements = args.flatten
432 elements = args.flatten
433 elements.any? ? content_tag('p', (args.join(" \xc2\xbb ") + " \xc2\xbb ").html_safe, :class => 'breadcrumb') : nil
433 elements.any? ? content_tag('p', (args.join(" \xc2\xbb ") + " \xc2\xbb ").html_safe, :class => 'breadcrumb') : nil
434 end
434 end
435
435
436 def other_formats_links(&block)
436 def other_formats_links(&block)
437 concat('<p class="other-formats">'.html_safe + l(:label_export_to))
437 concat('<p class="other-formats">'.html_safe + l(:label_export_to))
438 yield Redmine::Views::OtherFormatsBuilder.new(self)
438 yield Redmine::Views::OtherFormatsBuilder.new(self)
439 concat('</p>'.html_safe)
439 concat('</p>'.html_safe)
440 end
440 end
441
441
442 def page_header_title
442 def page_header_title
443 if @project.nil? || @project.new_record?
443 if @project.nil? || @project.new_record?
444 h(Setting.app_title)
444 h(Setting.app_title)
445 else
445 else
446 b = []
446 b = []
447 ancestors = (@project.root? ? [] : @project.ancestors.visible.all)
447 ancestors = (@project.root? ? [] : @project.ancestors.visible.all)
448 if ancestors.any?
448 if ancestors.any?
449 root = ancestors.shift
449 root = ancestors.shift
450 b << link_to_project(root, {:jump => current_menu_item}, :class => 'root')
450 b << link_to_project(root, {:jump => current_menu_item}, :class => 'root')
451 if ancestors.size > 2
451 if ancestors.size > 2
452 b << "\xe2\x80\xa6"
452 b << "\xe2\x80\xa6"
453 ancestors = ancestors[-2, 2]
453 ancestors = ancestors[-2, 2]
454 end
454 end
455 b += ancestors.collect {|p| link_to_project(p, {:jump => current_menu_item}, :class => 'ancestor') }
455 b += ancestors.collect {|p| link_to_project(p, {:jump => current_menu_item}, :class => 'ancestor') }
456 end
456 end
457 b << h(@project)
457 b << h(@project)
458 b.join(" \xc2\xbb ").html_safe
458 b.join(" \xc2\xbb ").html_safe
459 end
459 end
460 end
460 end
461
461
462 def html_title(*args)
462 def html_title(*args)
463 if args.empty?
463 if args.empty?
464 title = @html_title || []
464 title = @html_title || []
465 title << @project.name if @project
465 title << @project.name if @project
466 title << Setting.app_title unless Setting.app_title == title.last
466 title << Setting.app_title unless Setting.app_title == title.last
467 title.select {|t| !t.blank? }.join(' - ')
467 title.select {|t| !t.blank? }.join(' - ')
468 else
468 else
469 @html_title ||= []
469 @html_title ||= []
470 @html_title += args
470 @html_title += args
471 end
471 end
472 end
472 end
473
473
474 # Returns the theme, controller name, and action as css classes for the
474 # Returns the theme, controller name, and action as css classes for the
475 # HTML body.
475 # HTML body.
476 def body_css_classes
476 def body_css_classes
477 css = []
477 css = []
478 if theme = Redmine::Themes.theme(Setting.ui_theme)
478 if theme = Redmine::Themes.theme(Setting.ui_theme)
479 css << 'theme-' + theme.name
479 css << 'theme-' + theme.name
480 end
480 end
481
481
482 css << 'controller-' + controller_name
482 css << 'controller-' + controller_name
483 css << 'action-' + action_name
483 css << 'action-' + action_name
484 css.join(' ')
484 css.join(' ')
485 end
485 end
486
486
487 def accesskey(s)
487 def accesskey(s)
488 Redmine::AccessKeys.key_for s
488 Redmine::AccessKeys.key_for s
489 end
489 end
490
490
491 # Formats text according to system settings.
491 # Formats text according to system settings.
492 # 2 ways to call this method:
492 # 2 ways to call this method:
493 # * with a String: textilizable(text, options)
493 # * with a String: textilizable(text, options)
494 # * with an object and one of its attribute: textilizable(issue, :description, options)
494 # * with an object and one of its attribute: textilizable(issue, :description, options)
495 def textilizable(*args)
495 def textilizable(*args)
496 options = args.last.is_a?(Hash) ? args.pop : {}
496 options = args.last.is_a?(Hash) ? args.pop : {}
497 case args.size
497 case args.size
498 when 1
498 when 1
499 obj = options[:object]
499 obj = options[:object]
500 text = args.shift
500 text = args.shift
501 when 2
501 when 2
502 obj = args.shift
502 obj = args.shift
503 attr = args.shift
503 attr = args.shift
504 text = obj.send(attr).to_s
504 text = obj.send(attr).to_s
505 else
505 else
506 raise ArgumentError, 'invalid arguments to textilizable'
506 raise ArgumentError, 'invalid arguments to textilizable'
507 end
507 end
508 return '' if text.blank?
508 return '' if text.blank?
509 project = options[:project] || @project || (obj && obj.respond_to?(:project) ? obj.project : nil)
509 project = options[:project] || @project || (obj && obj.respond_to?(:project) ? obj.project : nil)
510 only_path = options.delete(:only_path) == false ? false : true
510 only_path = options.delete(:only_path) == false ? false : true
511
511
512 text = Redmine::WikiFormatting.to_html(Setting.text_formatting, text, :object => obj, :attribute => attr)
512 text = Redmine::WikiFormatting.to_html(Setting.text_formatting, text, :object => obj, :attribute => attr)
513
513
514 @parsed_headings = []
514 @parsed_headings = []
515 @heading_anchors = {}
515 @heading_anchors = {}
516 @current_section = 0 if options[:edit_section_links]
516 @current_section = 0 if options[:edit_section_links]
517
517
518 parse_sections(text, project, obj, attr, only_path, options)
518 parse_sections(text, project, obj, attr, only_path, options)
519 text = parse_non_pre_blocks(text) do |text|
519 text = parse_non_pre_blocks(text) do |text|
520 [:parse_inline_attachments, :parse_wiki_links, :parse_redmine_links, :parse_macros].each do |method_name|
520 [:parse_inline_attachments, :parse_wiki_links, :parse_redmine_links, :parse_macros].each do |method_name|
521 send method_name, text, project, obj, attr, only_path, options
521 send method_name, text, project, obj, attr, only_path, options
522 end
522 end
523 end
523 end
524 parse_headings(text, project, obj, attr, only_path, options)
524 parse_headings(text, project, obj, attr, only_path, options)
525
525
526 if @parsed_headings.any?
526 if @parsed_headings.any?
527 replace_toc(text, @parsed_headings)
527 replace_toc(text, @parsed_headings)
528 end
528 end
529
529
530 text.html_safe
530 text.html_safe
531 end
531 end
532
532
533 def parse_non_pre_blocks(text)
533 def parse_non_pre_blocks(text)
534 s = StringScanner.new(text)
534 s = StringScanner.new(text)
535 tags = []
535 tags = []
536 parsed = ''
536 parsed = ''
537 while !s.eos?
537 while !s.eos?
538 s.scan(/(.*?)(<(\/)?(pre|code)(.*?)>|\z)/im)
538 s.scan(/(.*?)(<(\/)?(pre|code)(.*?)>|\z)/im)
539 text, full_tag, closing, tag = s[1], s[2], s[3], s[4]
539 text, full_tag, closing, tag = s[1], s[2], s[3], s[4]
540 if tags.empty?
540 if tags.empty?
541 yield text
541 yield text
542 end
542 end
543 parsed << text
543 parsed << text
544 if tag
544 if tag
545 if closing
545 if closing
546 if tags.last == tag.downcase
546 if tags.last == tag.downcase
547 tags.pop
547 tags.pop
548 end
548 end
549 else
549 else
550 tags << tag.downcase
550 tags << tag.downcase
551 end
551 end
552 parsed << full_tag
552 parsed << full_tag
553 end
553 end
554 end
554 end
555 # Close any non closing tags
555 # Close any non closing tags
556 while tag = tags.pop
556 while tag = tags.pop
557 parsed << "</#{tag}>"
557 parsed << "</#{tag}>"
558 end
558 end
559 parsed
559 parsed
560 end
560 end
561
561
562 def parse_inline_attachments(text, project, obj, attr, only_path, options)
562 def parse_inline_attachments(text, project, obj, attr, only_path, options)
563 # when using an image link, try to use an attachment, if possible
563 # when using an image link, try to use an attachment, if possible
564 if options[:attachments] || (obj && obj.respond_to?(:attachments))
564 if options[:attachments] || (obj && obj.respond_to?(:attachments))
565 attachments = options[:attachments] || obj.attachments
565 attachments = options[:attachments] || obj.attachments
566 text.gsub!(/src="([^\/"]+\.(bmp|gif|jpg|jpe|jpeg|png))"(\s+alt="([^"]*)")?/i) do |m|
566 text.gsub!(/src="([^\/"]+\.(bmp|gif|jpg|jpe|jpeg|png))"(\s+alt="([^"]*)")?/i) do |m|
567 filename, ext, alt, alttext = $1.downcase, $2, $3, $4
567 filename, ext, alt, alttext = $1.downcase, $2, $3, $4
568 # search for the picture in attachments
568 # search for the picture in attachments
569 if found = Attachment.latest_attach(attachments, filename)
569 if found = Attachment.latest_attach(attachments, filename)
570 image_url = url_for :only_path => only_path, :controller => 'attachments',
570 image_url = url_for :only_path => only_path, :controller => 'attachments',
571 :action => 'download', :id => found
571 :action => 'download', :id => found
572 desc = found.description.to_s.gsub('"', '')
572 desc = found.description.to_s.gsub('"', '')
573 if !desc.blank? && alttext.blank?
573 if !desc.blank? && alttext.blank?
574 alt = " title=\"#{desc}\" alt=\"#{desc}\""
574 alt = " title=\"#{desc}\" alt=\"#{desc}\""
575 end
575 end
576 "src=\"#{image_url}\"#{alt}"
576 "src=\"#{image_url}\"#{alt}"
577 else
577 else
578 m
578 m
579 end
579 end
580 end
580 end
581 end
581 end
582 end
582 end
583
583
584 # Wiki links
584 # Wiki links
585 #
585 #
586 # Examples:
586 # Examples:
587 # [[mypage]]
587 # [[mypage]]
588 # [[mypage|mytext]]
588 # [[mypage|mytext]]
589 # wiki links can refer other project wikis, using project name or identifier:
589 # wiki links can refer other project wikis, using project name or identifier:
590 # [[project:]] -> wiki starting page
590 # [[project:]] -> wiki starting page
591 # [[project:|mytext]]
591 # [[project:|mytext]]
592 # [[project:mypage]]
592 # [[project:mypage]]
593 # [[project:mypage|mytext]]
593 # [[project:mypage|mytext]]
594 def parse_wiki_links(text, project, obj, attr, only_path, options)
594 def parse_wiki_links(text, project, obj, attr, only_path, options)
595 text.gsub!(/(!)?(\[\[([^\]\n\|]+)(\|([^\]\n\|]+))?\]\])/) do |m|
595 text.gsub!(/(!)?(\[\[([^\]\n\|]+)(\|([^\]\n\|]+))?\]\])/) do |m|
596 link_project = project
596 link_project = project
597 esc, all, page, title = $1, $2, $3, $5
597 esc, all, page, title = $1, $2, $3, $5
598 if esc.nil?
598 if esc.nil?
599 if page =~ /^([^\:]+)\:(.*)$/
599 if page =~ /^([^\:]+)\:(.*)$/
600 link_project = Project.find_by_identifier($1) || Project.find_by_name($1)
600 link_project = Project.find_by_identifier($1) || Project.find_by_name($1)
601 page = $2
601 page = $2
602 title ||= $1 if page.blank?
602 title ||= $1 if page.blank?
603 end
603 end
604
604
605 if link_project && link_project.wiki
605 if link_project && link_project.wiki
606 # extract anchor
606 # extract anchor
607 anchor = nil
607 anchor = nil
608 if page =~ /^(.+?)\#(.+)$/
608 if page =~ /^(.+?)\#(.+)$/
609 page, anchor = $1, $2
609 page, anchor = $1, $2
610 end
610 end
611 anchor = sanitize_anchor_name(anchor) if anchor.present?
611 anchor = sanitize_anchor_name(anchor) if anchor.present?
612 # check if page exists
612 # check if page exists
613 wiki_page = link_project.wiki.find_page(page)
613 wiki_page = link_project.wiki.find_page(page)
614 url = if anchor.present? && wiki_page.present? && (obj.is_a?(WikiContent) || obj.is_a?(WikiContent::Version)) && obj.page == wiki_page
614 url = if anchor.present? && wiki_page.present? && (obj.is_a?(WikiContent) || obj.is_a?(WikiContent::Version)) && obj.page == wiki_page
615 "##{anchor}"
615 "##{anchor}"
616 else
616 else
617 case options[:wiki_links]
617 case options[:wiki_links]
618 when :local; "#{page.present? ? Wiki.titleize(page) : ''}.html" + (anchor.present? ? "##{anchor}" : '')
618 when :local; "#{page.present? ? Wiki.titleize(page) : ''}.html" + (anchor.present? ? "##{anchor}" : '')
619 when :anchor; "##{page.present? ? Wiki.titleize(page) : title}" + (anchor.present? ? "_#{anchor}" : '') # used for single-file wiki export
619 when :anchor; "##{page.present? ? Wiki.titleize(page) : title}" + (anchor.present? ? "_#{anchor}" : '') # used for single-file wiki export
620 else
620 else
621 wiki_page_id = page.present? ? Wiki.titleize(page) : nil
621 wiki_page_id = page.present? ? Wiki.titleize(page) : nil
622 parent = wiki_page.nil? && obj.is_a?(WikiContent) && obj.page && project == link_project ? obj.page.title : nil
622 parent = wiki_page.nil? && obj.is_a?(WikiContent) && obj.page && project == link_project ? obj.page.title : nil
623 url_for(:only_path => only_path, :controller => 'wiki', :action => 'show', :project_id => link_project,
623 url_for(:only_path => only_path, :controller => 'wiki', :action => 'show', :project_id => link_project,
624 :id => wiki_page_id, :anchor => anchor, :parent => parent)
624 :id => wiki_page_id, :anchor => anchor, :parent => parent)
625 end
625 end
626 end
626 end
627 link_to(title.present? ? title.html_safe : h(page), url, :class => ('wiki-page' + (wiki_page ? '' : ' new')))
627 link_to(title.present? ? title.html_safe : h(page), url, :class => ('wiki-page' + (wiki_page ? '' : ' new')))
628 else
628 else
629 # project or wiki doesn't exist
629 # project or wiki doesn't exist
630 all
630 all
631 end
631 end
632 else
632 else
633 all
633 all
634 end
634 end
635 end
635 end
636 end
636 end
637
637
638 # Redmine links
638 # Redmine links
639 #
639 #
640 # Examples:
640 # Examples:
641 # Issues:
641 # Issues:
642 # #52 -> Link to issue #52
642 # #52 -> Link to issue #52
643 # Changesets:
643 # Changesets:
644 # r52 -> Link to revision 52
644 # r52 -> Link to revision 52
645 # commit:a85130f -> Link to scmid starting with a85130f
645 # commit:a85130f -> Link to scmid starting with a85130f
646 # Documents:
646 # Documents:
647 # document#17 -> Link to document with id 17
647 # document#17 -> Link to document with id 17
648 # document:Greetings -> Link to the document with title "Greetings"
648 # document:Greetings -> Link to the document with title "Greetings"
649 # document:"Some document" -> Link to the document with title "Some document"
649 # document:"Some document" -> Link to the document with title "Some document"
650 # Versions:
650 # Versions:
651 # version#3 -> Link to version with id 3
651 # version#3 -> Link to version with id 3
652 # version:1.0.0 -> Link to version named "1.0.0"
652 # version:1.0.0 -> Link to version named "1.0.0"
653 # version:"1.0 beta 2" -> Link to version named "1.0 beta 2"
653 # version:"1.0 beta 2" -> Link to version named "1.0 beta 2"
654 # Attachments:
654 # Attachments:
655 # attachment:file.zip -> Link to the attachment of the current object named file.zip
655 # attachment:file.zip -> Link to the attachment of the current object named file.zip
656 # Source files:
656 # Source files:
657 # source:some/file -> Link to the file located at /some/file in the project's repository
657 # source:some/file -> Link to the file located at /some/file in the project's repository
658 # source:some/file@52 -> Link to the file's revision 52
658 # source:some/file@52 -> Link to the file's revision 52
659 # source:some/file#L120 -> Link to line 120 of the file
659 # source:some/file#L120 -> Link to line 120 of the file
660 # source:some/file@52#L120 -> Link to line 120 of the file's revision 52
660 # source:some/file@52#L120 -> Link to line 120 of the file's revision 52
661 # export:some/file -> Force the download of the file
661 # export:some/file -> Force the download of the file
662 # Forum messages:
662 # Forum messages:
663 # message#1218 -> Link to message with id 1218
663 # message#1218 -> Link to message with id 1218
664 #
664 #
665 # Links can refer other objects from other projects, using project identifier:
665 # Links can refer other objects from other projects, using project identifier:
666 # identifier:r52
666 # identifier:r52
667 # identifier:document:"Some document"
667 # identifier:document:"Some document"
668 # identifier:version:1.0.0
668 # identifier:version:1.0.0
669 # identifier:source:some/file
669 # identifier:source:some/file
670 def parse_redmine_links(text, project, obj, attr, only_path, options)
670 def parse_redmine_links(text, project, obj, attr, only_path, options)
671 text.gsub!(%r{([\s\(,\-\[\>]|^)(!)?(([a-z0-9\-_]+):)?(attachment|document|version|forum|news|message|project|commit|source|export)?(((#)|((([a-z0-9\-]+)\|)?(r)))((\d+)((#note)?-(\d+))?)|(:)([^"\s<>][^\s<>]*?|"[^"]+?"))(?=(?=[[:punct:]][^A-Za-z0-9_/])|,|\s|\]|<|$)}) do |m|
671 text.gsub!(%r{([\s\(,\-\[\>]|^)(!)?(([a-z0-9\-_]+):)?(attachment|document|version|forum|news|message|project|commit|source|export)?(((#)|((([a-z0-9\-]+)\|)?(r)))((\d+)((#note)?-(\d+))?)|(:)([^"\s<>][^\s<>]*?|"[^"]+?"))(?=(?=[[:punct:]][^A-Za-z0-9_/])|,|\s|\]|<|$)}) do |m|
672 leading, esc, project_prefix, project_identifier, prefix, repo_prefix, repo_identifier, sep, identifier, comment_suffix, comment_id = $1, $2, $3, $4, $5, $10, $11, $8 || $12 || $18, $14 || $19, $15, $17
672 leading, esc, project_prefix, project_identifier, prefix, repo_prefix, repo_identifier, sep, identifier, comment_suffix, comment_id = $1, $2, $3, $4, $5, $10, $11, $8 || $12 || $18, $14 || $19, $15, $17
673 link = nil
673 link = nil
674 if project_identifier
674 if project_identifier
675 project = Project.visible.find_by_identifier(project_identifier)
675 project = Project.visible.find_by_identifier(project_identifier)
676 end
676 end
677 if esc.nil?
677 if esc.nil?
678 if prefix.nil? && sep == 'r'
678 if prefix.nil? && sep == 'r'
679 if project
679 if project
680 repository = nil
680 repository = nil
681 if repo_identifier
681 if repo_identifier
682 repository = project.repositories.detect {|repo| repo.identifier == repo_identifier}
682 repository = project.repositories.detect {|repo| repo.identifier == repo_identifier}
683 else
683 else
684 repository = project.repository
684 repository = project.repository
685 end
685 end
686 # project.changesets.visible raises an SQL error because of a double join on repositories
686 # project.changesets.visible raises an SQL error because of a double join on repositories
687 if repository && (changeset = Changeset.visible.find_by_repository_id_and_revision(repository.id, identifier))
687 if repository && (changeset = Changeset.visible.find_by_repository_id_and_revision(repository.id, identifier))
688 link = link_to(h("#{project_prefix}#{repo_prefix}r#{identifier}"), {:only_path => only_path, :controller => 'repositories', :action => 'revision', :id => project, :repository_id => repository.identifier_param, :rev => changeset.revision},
688 link = link_to(h("#{project_prefix}#{repo_prefix}r#{identifier}"), {:only_path => only_path, :controller => 'repositories', :action => 'revision', :id => project, :repository_id => repository.identifier_param, :rev => changeset.revision},
689 :class => 'changeset',
689 :class => 'changeset',
690 :title => truncate_single_line(changeset.comments, :length => 100))
690 :title => truncate_single_line(changeset.comments, :length => 100))
691 end
691 end
692 end
692 end
693 elsif sep == '#'
693 elsif sep == '#'
694 oid = identifier.to_i
694 oid = identifier.to_i
695 case prefix
695 case prefix
696 when nil
696 when nil
697 if issue = Issue.visible.find_by_id(oid, :include => :status)
697 if issue = Issue.visible.find_by_id(oid, :include => :status)
698 anchor = comment_id ? "note-#{comment_id}" : nil
698 anchor = comment_id ? "note-#{comment_id}" : nil
699 link = link_to("##{oid}", {:only_path => only_path, :controller => 'issues', :action => 'show', :id => oid, :anchor => anchor},
699 link = link_to("##{oid}", {:only_path => only_path, :controller => 'issues', :action => 'show', :id => oid, :anchor => anchor},
700 :class => issue.css_classes,
700 :class => issue.css_classes,
701 :title => "#{truncate(issue.subject, :length => 100)} (#{issue.status.name})")
701 :title => "#{truncate(issue.subject, :length => 100)} (#{issue.status.name})")
702 end
702 end
703 when 'document'
703 when 'document'
704 if document = Document.visible.find_by_id(oid)
704 if document = Document.visible.find_by_id(oid)
705 link = link_to h(document.title), {:only_path => only_path, :controller => 'documents', :action => 'show', :id => document},
705 link = link_to h(document.title), {:only_path => only_path, :controller => 'documents', :action => 'show', :id => document},
706 :class => 'document'
706 :class => 'document'
707 end
707 end
708 when 'version'
708 when 'version'
709 if version = Version.visible.find_by_id(oid)
709 if version = Version.visible.find_by_id(oid)
710 link = link_to h(version.name), {:only_path => only_path, :controller => 'versions', :action => 'show', :id => version},
710 link = link_to h(version.name), {:only_path => only_path, :controller => 'versions', :action => 'show', :id => version},
711 :class => 'version'
711 :class => 'version'
712 end
712 end
713 when 'message'
713 when 'message'
714 if message = Message.visible.find_by_id(oid, :include => :parent)
714 if message = Message.visible.find_by_id(oid, :include => :parent)
715 link = link_to_message(message, {:only_path => only_path}, :class => 'message')
715 link = link_to_message(message, {:only_path => only_path}, :class => 'message')
716 end
716 end
717 when 'forum'
717 when 'forum'
718 if board = Board.visible.find_by_id(oid)
718 if board = Board.visible.find_by_id(oid)
719 link = link_to h(board.name), {:only_path => only_path, :controller => 'boards', :action => 'show', :id => board, :project_id => board.project},
719 link = link_to h(board.name), {:only_path => only_path, :controller => 'boards', :action => 'show', :id => board, :project_id => board.project},
720 :class => 'board'
720 :class => 'board'
721 end
721 end
722 when 'news'
722 when 'news'
723 if news = News.visible.find_by_id(oid)
723 if news = News.visible.find_by_id(oid)
724 link = link_to h(news.title), {:only_path => only_path, :controller => 'news', :action => 'show', :id => news},
724 link = link_to h(news.title), {:only_path => only_path, :controller => 'news', :action => 'show', :id => news},
725 :class => 'news'
725 :class => 'news'
726 end
726 end
727 when 'project'
727 when 'project'
728 if p = Project.visible.find_by_id(oid)
728 if p = Project.visible.find_by_id(oid)
729 link = link_to_project(p, {:only_path => only_path}, :class => 'project')
729 link = link_to_project(p, {:only_path => only_path}, :class => 'project')
730 end
730 end
731 end
731 end
732 elsif sep == ':'
732 elsif sep == ':'
733 # removes the double quotes if any
733 # removes the double quotes if any
734 name = identifier.gsub(%r{^"(.*)"$}, "\\1")
734 name = identifier.gsub(%r{^"(.*)"$}, "\\1")
735 case prefix
735 case prefix
736 when 'document'
736 when 'document'
737 if project && document = project.documents.visible.find_by_title(name)
737 if project && document = project.documents.visible.find_by_title(name)
738 link = link_to h(document.title), {:only_path => only_path, :controller => 'documents', :action => 'show', :id => document},
738 link = link_to h(document.title), {:only_path => only_path, :controller => 'documents', :action => 'show', :id => document},
739 :class => 'document'
739 :class => 'document'
740 end
740 end
741 when 'version'
741 when 'version'
742 if project && version = project.versions.visible.find_by_name(name)
742 if project && version = project.versions.visible.find_by_name(name)
743 link = link_to h(version.name), {:only_path => only_path, :controller => 'versions', :action => 'show', :id => version},
743 link = link_to h(version.name), {:only_path => only_path, :controller => 'versions', :action => 'show', :id => version},
744 :class => 'version'
744 :class => 'version'
745 end
745 end
746 when 'forum'
746 when 'forum'
747 if project && board = project.boards.visible.find_by_name(name)
747 if project && board = project.boards.visible.find_by_name(name)
748 link = link_to h(board.name), {:only_path => only_path, :controller => 'boards', :action => 'show', :id => board, :project_id => board.project},
748 link = link_to h(board.name), {:only_path => only_path, :controller => 'boards', :action => 'show', :id => board, :project_id => board.project},
749 :class => 'board'
749 :class => 'board'
750 end
750 end
751 when 'news'
751 when 'news'
752 if project && news = project.news.visible.find_by_title(name)
752 if project && news = project.news.visible.find_by_title(name)
753 link = link_to h(news.title), {:only_path => only_path, :controller => 'news', :action => 'show', :id => news},
753 link = link_to h(news.title), {:only_path => only_path, :controller => 'news', :action => 'show', :id => news},
754 :class => 'news'
754 :class => 'news'
755 end
755 end
756 when 'commit', 'source', 'export'
756 when 'commit', 'source', 'export'
757 if project
757 if project
758 repository = nil
758 repository = nil
759 if name =~ %r{^(([a-z0-9\-]+)\|)(.+)$}
759 if name =~ %r{^(([a-z0-9\-]+)\|)(.+)$}
760 repo_prefix, repo_identifier, name = $1, $2, $3
760 repo_prefix, repo_identifier, name = $1, $2, $3
761 repository = project.repositories.detect {|repo| repo.identifier == repo_identifier}
761 repository = project.repositories.detect {|repo| repo.identifier == repo_identifier}
762 else
762 else
763 repository = project.repository
763 repository = project.repository
764 end
764 end
765 if prefix == 'commit'
765 if prefix == 'commit'
766 if repository && (changeset = Changeset.visible.find(:first, :conditions => ["repository_id = ? AND scmid LIKE ?", repository.id, "#{name}%"]))
766 if repository && (changeset = Changeset.visible.find(:first, :conditions => ["repository_id = ? AND scmid LIKE ?", repository.id, "#{name}%"]))
767 link = link_to h("#{project_prefix}#{repo_prefix}#{name}"), {:only_path => only_path, :controller => 'repositories', :action => 'revision', :id => project, :repository_id => repository.identifier_param, :rev => changeset.identifier},
767 link = link_to h("#{project_prefix}#{repo_prefix}#{name}"), {:only_path => only_path, :controller => 'repositories', :action => 'revision', :id => project, :repository_id => repository.identifier_param, :rev => changeset.identifier},
768 :class => 'changeset',
768 :class => 'changeset',
769 :title => truncate_single_line(h(changeset.comments), :length => 100)
769 :title => truncate_single_line(h(changeset.comments), :length => 100)
770 end
770 end
771 else
771 else
772 if repository && User.current.allowed_to?(:browse_repository, project)
772 if repository && User.current.allowed_to?(:browse_repository, project)
773 name =~ %r{^[/\\]*(.*?)(@([0-9a-f]+))?(#(L\d+))?$}
773 name =~ %r{^[/\\]*(.*?)(@([0-9a-f]+))?(#(L\d+))?$}
774 path, rev, anchor = $1, $3, $5
774 path, rev, anchor = $1, $3, $5
775 link = link_to h("#{project_prefix}#{prefix}:#{repo_prefix}#{name}"), {:controller => 'repositories', :action => 'entry', :id => project, :repository_id => repository.identifier_param,
775 link = link_to h("#{project_prefix}#{prefix}:#{repo_prefix}#{name}"), {:controller => 'repositories', :action => 'entry', :id => project, :repository_id => repository.identifier_param,
776 :path => to_path_param(path),
776 :path => to_path_param(path),
777 :rev => rev,
777 :rev => rev,
778 :anchor => anchor,
778 :anchor => anchor,
779 :format => (prefix == 'export' ? 'raw' : nil)},
779 :format => (prefix == 'export' ? 'raw' : nil)},
780 :class => (prefix == 'export' ? 'source download' : 'source')
780 :class => (prefix == 'export' ? 'source download' : 'source')
781 end
781 end
782 end
782 end
783 repo_prefix = nil
783 repo_prefix = nil
784 end
784 end
785 when 'attachment'
785 when 'attachment'
786 attachments = options[:attachments] || (obj && obj.respond_to?(:attachments) ? obj.attachments : nil)
786 attachments = options[:attachments] || (obj && obj.respond_to?(:attachments) ? obj.attachments : nil)
787 if attachments && attachment = attachments.detect {|a| a.filename == name }
787 if attachments && attachment = attachments.detect {|a| a.filename == name }
788 link = link_to h(attachment.filename), {:only_path => only_path, :controller => 'attachments', :action => 'download', :id => attachment},
788 link = link_to h(attachment.filename), {:only_path => only_path, :controller => 'attachments', :action => 'download', :id => attachment},
789 :class => 'attachment'
789 :class => 'attachment'
790 end
790 end
791 when 'project'
791 when 'project'
792 if p = Project.visible.find(:first, :conditions => ["identifier = :s OR LOWER(name) = :s", {:s => name.downcase}])
792 if p = Project.visible.find(:first, :conditions => ["identifier = :s OR LOWER(name) = :s", {:s => name.downcase}])
793 link = link_to_project(p, {:only_path => only_path}, :class => 'project')
793 link = link_to_project(p, {:only_path => only_path}, :class => 'project')
794 end
794 end
795 end
795 end
796 end
796 end
797 end
797 end
798 (leading + (link || "#{project_prefix}#{prefix}#{repo_prefix}#{sep}#{identifier}#{comment_suffix}"))
798 (leading + (link || "#{project_prefix}#{prefix}#{repo_prefix}#{sep}#{identifier}#{comment_suffix}"))
799 end
799 end
800 end
800 end
801
801
802 HEADING_RE = /(<h(1|2|3|4)( [^>]+)?>(.+?)<\/h(1|2|3|4)>)/i unless const_defined?(:HEADING_RE)
802 HEADING_RE = /(<h(\d)( [^>]+)?>(.+?)<\/h(\d)>)/i unless const_defined?(:HEADING_RE)
803
803
804 def parse_sections(text, project, obj, attr, only_path, options)
804 def parse_sections(text, project, obj, attr, only_path, options)
805 return unless options[:edit_section_links]
805 return unless options[:edit_section_links]
806 text.gsub!(HEADING_RE) do
806 text.gsub!(HEADING_RE) do
807 heading = $1
807 heading = $1
808 @current_section += 1
808 @current_section += 1
809 if @current_section > 1
809 if @current_section > 1
810 content_tag('div',
810 content_tag('div',
811 link_to(image_tag('edit.png'), options[:edit_section_links].merge(:section => @current_section)),
811 link_to(image_tag('edit.png'), options[:edit_section_links].merge(:section => @current_section)),
812 :class => 'contextual',
812 :class => 'contextual',
813 :title => l(:button_edit_section)) + heading.html_safe
813 :title => l(:button_edit_section)) + heading.html_safe
814 else
814 else
815 heading
815 heading
816 end
816 end
817 end
817 end
818 end
818 end
819
819
820 # Headings and TOC
820 # Headings and TOC
821 # Adds ids and links to headings unless options[:headings] is set to false
821 # Adds ids and links to headings unless options[:headings] is set to false
822 def parse_headings(text, project, obj, attr, only_path, options)
822 def parse_headings(text, project, obj, attr, only_path, options)
823 return if options[:headings] == false
823 return if options[:headings] == false
824
824
825 text.gsub!(HEADING_RE) do
825 text.gsub!(HEADING_RE) do
826 level, attrs, content = $2.to_i, $3, $4
826 level, attrs, content = $2.to_i, $3, $4
827 item = strip_tags(content).strip
827 item = strip_tags(content).strip
828 anchor = sanitize_anchor_name(item)
828 anchor = sanitize_anchor_name(item)
829 # used for single-file wiki export
829 # used for single-file wiki export
830 anchor = "#{obj.page.title}_#{anchor}" if options[:wiki_links] == :anchor && (obj.is_a?(WikiContent) || obj.is_a?(WikiContent::Version))
830 anchor = "#{obj.page.title}_#{anchor}" if options[:wiki_links] == :anchor && (obj.is_a?(WikiContent) || obj.is_a?(WikiContent::Version))
831 @heading_anchors[anchor] ||= 0
831 @heading_anchors[anchor] ||= 0
832 idx = (@heading_anchors[anchor] += 1)
832 idx = (@heading_anchors[anchor] += 1)
833 if idx > 1
833 if idx > 1
834 anchor = "#{anchor}-#{idx}"
834 anchor = "#{anchor}-#{idx}"
835 end
835 end
836 @parsed_headings << [level, anchor, item]
836 @parsed_headings << [level, anchor, item]
837 "<a name=\"#{anchor}\"></a>\n<h#{level} #{attrs}>#{content}<a href=\"##{anchor}\" class=\"wiki-anchor\">&para;</a></h#{level}>"
837 "<a name=\"#{anchor}\"></a>\n<h#{level} #{attrs}>#{content}<a href=\"##{anchor}\" class=\"wiki-anchor\">&para;</a></h#{level}>"
838 end
838 end
839 end
839 end
840
840
841 MACROS_RE = /
841 MACROS_RE = /
842 (!)? # escaping
842 (!)? # escaping
843 (
843 (
844 \{\{ # opening tag
844 \{\{ # opening tag
845 ([\w]+) # macro name
845 ([\w]+) # macro name
846 (\(([^\}]*)\))? # optional arguments
846 (\(([^\}]*)\))? # optional arguments
847 \}\} # closing tag
847 \}\} # closing tag
848 )
848 )
849 /x unless const_defined?(:MACROS_RE)
849 /x unless const_defined?(:MACROS_RE)
850
850
851 # Macros substitution
851 # Macros substitution
852 def parse_macros(text, project, obj, attr, only_path, options)
852 def parse_macros(text, project, obj, attr, only_path, options)
853 text.gsub!(MACROS_RE) do
853 text.gsub!(MACROS_RE) do
854 esc, all, macro = $1, $2, $3.downcase
854 esc, all, macro = $1, $2, $3.downcase
855 args = ($5 || '').split(',').each(&:strip)
855 args = ($5 || '').split(',').each(&:strip)
856 if esc.nil?
856 if esc.nil?
857 begin
857 begin
858 exec_macro(macro, obj, args)
858 exec_macro(macro, obj, args)
859 rescue => e
859 rescue => e
860 "<div class=\"flash error\">Error executing the <strong>#{macro}</strong> macro (#{e})</div>"
860 "<div class=\"flash error\">Error executing the <strong>#{macro}</strong> macro (#{e})</div>"
861 end || all
861 end || all
862 else
862 else
863 all
863 all
864 end
864 end
865 end
865 end
866 end
866 end
867
867
868 TOC_RE = /<p>\{\{([<>]?)toc\}\}<\/p>/i unless const_defined?(:TOC_RE)
868 TOC_RE = /<p>\{\{([<>]?)toc\}\}<\/p>/i unless const_defined?(:TOC_RE)
869
869
870 # Renders the TOC with given headings
870 # Renders the TOC with given headings
871 def replace_toc(text, headings)
871 def replace_toc(text, headings)
872 text.gsub!(TOC_RE) do
872 text.gsub!(TOC_RE) do
873 # Keep only the 4 first levels
874 headings = headings.select{|level, anchor, item| level <= 4}
873 if headings.empty?
875 if headings.empty?
874 ''
876 ''
875 else
877 else
876 div_class = 'toc'
878 div_class = 'toc'
877 div_class << ' right' if $1 == '>'
879 div_class << ' right' if $1 == '>'
878 div_class << ' left' if $1 == '<'
880 div_class << ' left' if $1 == '<'
879 out = "<ul class=\"#{div_class}\"><li>"
881 out = "<ul class=\"#{div_class}\"><li>"
880 root = headings.map(&:first).min
882 root = headings.map(&:first).min
881 current = root
883 current = root
882 started = false
884 started = false
883 headings.each do |level, anchor, item|
885 headings.each do |level, anchor, item|
884 if level > current
886 if level > current
885 out << '<ul><li>' * (level - current)
887 out << '<ul><li>' * (level - current)
886 elsif level < current
888 elsif level < current
887 out << "</li></ul>\n" * (current - level) + "</li><li>"
889 out << "</li></ul>\n" * (current - level) + "</li><li>"
888 elsif started
890 elsif started
889 out << '</li><li>'
891 out << '</li><li>'
890 end
892 end
891 out << "<a href=\"##{anchor}\">#{item}</a>"
893 out << "<a href=\"##{anchor}\">#{item}</a>"
892 current = level
894 current = level
893 started = true
895 started = true
894 end
896 end
895 out << '</li></ul>' * (current - root)
897 out << '</li></ul>' * (current - root)
896 out << '</li></ul>'
898 out << '</li></ul>'
897 end
899 end
898 end
900 end
899 end
901 end
900
902
901 # Same as Rails' simple_format helper without using paragraphs
903 # Same as Rails' simple_format helper without using paragraphs
902 def simple_format_without_paragraph(text)
904 def simple_format_without_paragraph(text)
903 text.to_s.
905 text.to_s.
904 gsub(/\r\n?/, "\n"). # \r\n and \r -> \n
906 gsub(/\r\n?/, "\n"). # \r\n and \r -> \n
905 gsub(/\n\n+/, "<br /><br />"). # 2+ newline -> 2 br
907 gsub(/\n\n+/, "<br /><br />"). # 2+ newline -> 2 br
906 gsub(/([^\n]\n)(?=[^\n])/, '\1<br />'). # 1 newline -> br
908 gsub(/([^\n]\n)(?=[^\n])/, '\1<br />'). # 1 newline -> br
907 html_safe
909 html_safe
908 end
910 end
909
911
910 def lang_options_for_select(blank=true)
912 def lang_options_for_select(blank=true)
911 (blank ? [["(auto)", ""]] : []) +
913 (blank ? [["(auto)", ""]] : []) +
912 valid_languages.collect{|lang| [ ll(lang.to_s, :general_lang_name), lang.to_s]}.sort{|x,y| x.last <=> y.last }
914 valid_languages.collect{|lang| [ ll(lang.to_s, :general_lang_name), lang.to_s]}.sort{|x,y| x.last <=> y.last }
913 end
915 end
914
916
915 def label_tag_for(name, option_tags = nil, options = {})
917 def label_tag_for(name, option_tags = nil, options = {})
916 label_text = l(("field_"+field.to_s.gsub(/\_id$/, "")).to_sym) + (options.delete(:required) ? @template.content_tag("span", " *", :class => "required"): "")
918 label_text = l(("field_"+field.to_s.gsub(/\_id$/, "")).to_sym) + (options.delete(:required) ? @template.content_tag("span", " *", :class => "required"): "")
917 content_tag("label", label_text)
919 content_tag("label", label_text)
918 end
920 end
919
921
920 def labelled_tabular_form_for(*args, &proc)
922 def labelled_tabular_form_for(*args, &proc)
921 ActiveSupport::Deprecation.warn "ApplicationHelper#labelled_tabular_form_for is deprecated and will be removed in Redmine 1.5. Use #labelled_form_for instead."
923 ActiveSupport::Deprecation.warn "ApplicationHelper#labelled_tabular_form_for is deprecated and will be removed in Redmine 1.5. Use #labelled_form_for instead."
922 args << {} unless args.last.is_a?(Hash)
924 args << {} unless args.last.is_a?(Hash)
923 options = args.last
925 options = args.last
924 options[:html] ||= {}
926 options[:html] ||= {}
925 options[:html][:class] = 'tabular' unless options[:html].has_key?(:class)
927 options[:html][:class] = 'tabular' unless options[:html].has_key?(:class)
926 options.merge!({:builder => Redmine::Views::LabelledFormBuilder})
928 options.merge!({:builder => Redmine::Views::LabelledFormBuilder})
927 form_for(*args, &proc)
929 form_for(*args, &proc)
928 end
930 end
929
931
930 def labelled_form_for(*args, &proc)
932 def labelled_form_for(*args, &proc)
931 args << {} unless args.last.is_a?(Hash)
933 args << {} unless args.last.is_a?(Hash)
932 options = args.last
934 options = args.last
933 options.merge!({:builder => Redmine::Views::LabelledFormBuilder})
935 options.merge!({:builder => Redmine::Views::LabelledFormBuilder})
934 form_for(*args, &proc)
936 form_for(*args, &proc)
935 end
937 end
936
938
937 def labelled_fields_for(*args, &proc)
939 def labelled_fields_for(*args, &proc)
938 args << {} unless args.last.is_a?(Hash)
940 args << {} unless args.last.is_a?(Hash)
939 options = args.last
941 options = args.last
940 options.merge!({:builder => Redmine::Views::LabelledFormBuilder})
942 options.merge!({:builder => Redmine::Views::LabelledFormBuilder})
941 fields_for(*args, &proc)
943 fields_for(*args, &proc)
942 end
944 end
943
945
944 def labelled_remote_form_for(*args, &proc)
946 def labelled_remote_form_for(*args, &proc)
945 args << {} unless args.last.is_a?(Hash)
947 args << {} unless args.last.is_a?(Hash)
946 options = args.last
948 options = args.last
947 options.merge!({:builder => Redmine::Views::LabelledFormBuilder})
949 options.merge!({:builder => Redmine::Views::LabelledFormBuilder})
948 remote_form_for(*args, &proc)
950 remote_form_for(*args, &proc)
949 end
951 end
950
952
951 def error_messages_for(*objects)
953 def error_messages_for(*objects)
952 html = ""
954 html = ""
953 objects = objects.map {|o| o.is_a?(String) ? instance_variable_get("@#{o}") : o}.compact
955 objects = objects.map {|o| o.is_a?(String) ? instance_variable_get("@#{o}") : o}.compact
954 errors = objects.map {|o| o.errors.full_messages}.flatten
956 errors = objects.map {|o| o.errors.full_messages}.flatten
955 if errors.any?
957 if errors.any?
956 html << "<div id='errorExplanation'><ul>\n"
958 html << "<div id='errorExplanation'><ul>\n"
957 errors.each do |error|
959 errors.each do |error|
958 html << "<li>#{h error}</li>\n"
960 html << "<li>#{h error}</li>\n"
959 end
961 end
960 html << "</ul></div>\n"
962 html << "</ul></div>\n"
961 end
963 end
962 html.html_safe
964 html.html_safe
963 end
965 end
964
966
965 def back_url_hidden_field_tag
967 def back_url_hidden_field_tag
966 back_url = params[:back_url] || request.env['HTTP_REFERER']
968 back_url = params[:back_url] || request.env['HTTP_REFERER']
967 back_url = CGI.unescape(back_url.to_s)
969 back_url = CGI.unescape(back_url.to_s)
968 hidden_field_tag('back_url', CGI.escape(back_url), :id => nil) unless back_url.blank?
970 hidden_field_tag('back_url', CGI.escape(back_url), :id => nil) unless back_url.blank?
969 end
971 end
970
972
971 def check_all_links(form_name)
973 def check_all_links(form_name)
972 link_to_function(l(:button_check_all), "checkAll('#{form_name}', true)") +
974 link_to_function(l(:button_check_all), "checkAll('#{form_name}', true)") +
973 " | ".html_safe +
975 " | ".html_safe +
974 link_to_function(l(:button_uncheck_all), "checkAll('#{form_name}', false)")
976 link_to_function(l(:button_uncheck_all), "checkAll('#{form_name}', false)")
975 end
977 end
976
978
977 def progress_bar(pcts, options={})
979 def progress_bar(pcts, options={})
978 pcts = [pcts, pcts] unless pcts.is_a?(Array)
980 pcts = [pcts, pcts] unless pcts.is_a?(Array)
979 pcts = pcts.collect(&:round)
981 pcts = pcts.collect(&:round)
980 pcts[1] = pcts[1] - pcts[0]
982 pcts[1] = pcts[1] - pcts[0]
981 pcts << (100 - pcts[1] - pcts[0])
983 pcts << (100 - pcts[1] - pcts[0])
982 width = options[:width] || '100px;'
984 width = options[:width] || '100px;'
983 legend = options[:legend] || ''
985 legend = options[:legend] || ''
984 content_tag('table',
986 content_tag('table',
985 content_tag('tr',
987 content_tag('tr',
986 (pcts[0] > 0 ? content_tag('td', '', :style => "width: #{pcts[0]}%;", :class => 'closed') : ''.html_safe) +
988 (pcts[0] > 0 ? content_tag('td', '', :style => "width: #{pcts[0]}%;", :class => 'closed') : ''.html_safe) +
987 (pcts[1] > 0 ? content_tag('td', '', :style => "width: #{pcts[1]}%;", :class => 'done') : ''.html_safe) +
989 (pcts[1] > 0 ? content_tag('td', '', :style => "width: #{pcts[1]}%;", :class => 'done') : ''.html_safe) +
988 (pcts[2] > 0 ? content_tag('td', '', :style => "width: #{pcts[2]}%;", :class => 'todo') : ''.html_safe)
990 (pcts[2] > 0 ? content_tag('td', '', :style => "width: #{pcts[2]}%;", :class => 'todo') : ''.html_safe)
989 ), :class => 'progress', :style => "width: #{width};").html_safe +
991 ), :class => 'progress', :style => "width: #{width};").html_safe +
990 content_tag('p', legend, :class => 'pourcent').html_safe
992 content_tag('p', legend, :class => 'pourcent').html_safe
991 end
993 end
992
994
993 def checked_image(checked=true)
995 def checked_image(checked=true)
994 if checked
996 if checked
995 image_tag 'toggle_check.png'
997 image_tag 'toggle_check.png'
996 end
998 end
997 end
999 end
998
1000
999 def context_menu(url)
1001 def context_menu(url)
1000 unless @context_menu_included
1002 unless @context_menu_included
1001 content_for :header_tags do
1003 content_for :header_tags do
1002 javascript_include_tag('context_menu') +
1004 javascript_include_tag('context_menu') +
1003 stylesheet_link_tag('context_menu')
1005 stylesheet_link_tag('context_menu')
1004 end
1006 end
1005 if l(:direction) == 'rtl'
1007 if l(:direction) == 'rtl'
1006 content_for :header_tags do
1008 content_for :header_tags do
1007 stylesheet_link_tag('context_menu_rtl')
1009 stylesheet_link_tag('context_menu_rtl')
1008 end
1010 end
1009 end
1011 end
1010 @context_menu_included = true
1012 @context_menu_included = true
1011 end
1013 end
1012 javascript_tag "new ContextMenu('#{ url_for(url) }')"
1014 javascript_tag "new ContextMenu('#{ url_for(url) }')"
1013 end
1015 end
1014
1016
1015 def calendar_for(field_id)
1017 def calendar_for(field_id)
1016 include_calendar_headers_tags
1018 include_calendar_headers_tags
1017 image_tag("calendar.png", {:id => "#{field_id}_trigger",:class => "calendar-trigger"}) +
1019 image_tag("calendar.png", {:id => "#{field_id}_trigger",:class => "calendar-trigger"}) +
1018 javascript_tag("Calendar.setup({inputField : '#{field_id}', ifFormat : '%Y-%m-%d', button : '#{field_id}_trigger' });")
1020 javascript_tag("Calendar.setup({inputField : '#{field_id}', ifFormat : '%Y-%m-%d', button : '#{field_id}_trigger' });")
1019 end
1021 end
1020
1022
1021 def include_calendar_headers_tags
1023 def include_calendar_headers_tags
1022 unless @calendar_headers_tags_included
1024 unless @calendar_headers_tags_included
1023 @calendar_headers_tags_included = true
1025 @calendar_headers_tags_included = true
1024 content_for :header_tags do
1026 content_for :header_tags do
1025 start_of_week = case Setting.start_of_week.to_i
1027 start_of_week = case Setting.start_of_week.to_i
1026 when 1
1028 when 1
1027 'Calendar._FD = 1;' # Monday
1029 'Calendar._FD = 1;' # Monday
1028 when 7
1030 when 7
1029 'Calendar._FD = 0;' # Sunday
1031 'Calendar._FD = 0;' # Sunday
1030 when 6
1032 when 6
1031 'Calendar._FD = 6;' # Saturday
1033 'Calendar._FD = 6;' # Saturday
1032 else
1034 else
1033 '' # use language
1035 '' # use language
1034 end
1036 end
1035
1037
1036 javascript_include_tag('calendar/calendar') +
1038 javascript_include_tag('calendar/calendar') +
1037 javascript_include_tag("calendar/lang/calendar-#{current_language.to_s.downcase}.js") +
1039 javascript_include_tag("calendar/lang/calendar-#{current_language.to_s.downcase}.js") +
1038 javascript_tag(start_of_week) +
1040 javascript_tag(start_of_week) +
1039 javascript_include_tag('calendar/calendar-setup') +
1041 javascript_include_tag('calendar/calendar-setup') +
1040 stylesheet_link_tag('calendar')
1042 stylesheet_link_tag('calendar')
1041 end
1043 end
1042 end
1044 end
1043 end
1045 end
1044
1046
1045 def content_for(name, content = nil, &block)
1047 def content_for(name, content = nil, &block)
1046 @has_content ||= {}
1048 @has_content ||= {}
1047 @has_content[name] = true
1049 @has_content[name] = true
1048 super(name, content, &block)
1050 super(name, content, &block)
1049 end
1051 end
1050
1052
1051 def has_content?(name)
1053 def has_content?(name)
1052 (@has_content && @has_content[name]) || false
1054 (@has_content && @has_content[name]) || false
1053 end
1055 end
1054
1056
1055 def email_delivery_enabled?
1057 def email_delivery_enabled?
1056 !!ActionMailer::Base.perform_deliveries
1058 !!ActionMailer::Base.perform_deliveries
1057 end
1059 end
1058
1060
1059 # Returns the avatar image tag for the given +user+ if avatars are enabled
1061 # Returns the avatar image tag for the given +user+ if avatars are enabled
1060 # +user+ can be a User or a string that will be scanned for an email address (eg. 'joe <joe@foo.bar>')
1062 # +user+ can be a User or a string that will be scanned for an email address (eg. 'joe <joe@foo.bar>')
1061 def avatar(user, options = { })
1063 def avatar(user, options = { })
1062 if Setting.gravatar_enabled?
1064 if Setting.gravatar_enabled?
1063 options.merge!({:ssl => (defined?(request) && request.ssl?), :default => Setting.gravatar_default})
1065 options.merge!({:ssl => (defined?(request) && request.ssl?), :default => Setting.gravatar_default})
1064 email = nil
1066 email = nil
1065 if user.respond_to?(:mail)
1067 if user.respond_to?(:mail)
1066 email = user.mail
1068 email = user.mail
1067 elsif user.to_s =~ %r{<(.+?)>}
1069 elsif user.to_s =~ %r{<(.+?)>}
1068 email = $1
1070 email = $1
1069 end
1071 end
1070 return gravatar(email.to_s.downcase, options) unless email.blank? rescue nil
1072 return gravatar(email.to_s.downcase, options) unless email.blank? rescue nil
1071 else
1073 else
1072 ''
1074 ''
1073 end
1075 end
1074 end
1076 end
1075
1077
1076 def sanitize_anchor_name(anchor)
1078 def sanitize_anchor_name(anchor)
1077 anchor.gsub(%r{[^\w\s\-]}, '').gsub(%r{\s+(\-+\s*)?}, '-')
1079 anchor.gsub(%r{[^\w\s\-]}, '').gsub(%r{\s+(\-+\s*)?}, '-')
1078 end
1080 end
1079
1081
1080 # Returns the javascript tags that are included in the html layout head
1082 # Returns the javascript tags that are included in the html layout head
1081 def javascript_heads
1083 def javascript_heads
1082 tags = javascript_include_tag(:defaults)
1084 tags = javascript_include_tag(:defaults)
1083 unless User.current.pref.warn_on_leaving_unsaved == '0'
1085 unless User.current.pref.warn_on_leaving_unsaved == '0'
1084 tags << "\n".html_safe + javascript_tag("Event.observe(window, 'load', function(){ new WarnLeavingUnsaved('#{escape_javascript( l(:text_warn_on_leaving_unsaved) )}'); });")
1086 tags << "\n".html_safe + javascript_tag("Event.observe(window, 'load', function(){ new WarnLeavingUnsaved('#{escape_javascript( l(:text_warn_on_leaving_unsaved) )}'); });")
1085 end
1087 end
1086 tags
1088 tags
1087 end
1089 end
1088
1090
1089 def favicon
1091 def favicon
1090 "<link rel='shortcut icon' href='#{image_path('/favicon.ico')}' />".html_safe
1092 "<link rel='shortcut icon' href='#{image_path('/favicon.ico')}' />".html_safe
1091 end
1093 end
1092
1094
1093 def robot_exclusion_tag
1095 def robot_exclusion_tag
1094 '<meta name="robots" content="noindex,follow,noarchive" />'.html_safe
1096 '<meta name="robots" content="noindex,follow,noarchive" />'.html_safe
1095 end
1097 end
1096
1098
1097 # Returns true if arg is expected in the API response
1099 # Returns true if arg is expected in the API response
1098 def include_in_api_response?(arg)
1100 def include_in_api_response?(arg)
1099 unless @included_in_api_response
1101 unless @included_in_api_response
1100 param = params[:include]
1102 param = params[:include]
1101 @included_in_api_response = param.is_a?(Array) ? param.collect(&:to_s) : param.to_s.split(',')
1103 @included_in_api_response = param.is_a?(Array) ? param.collect(&:to_s) : param.to_s.split(',')
1102 @included_in_api_response.collect!(&:strip)
1104 @included_in_api_response.collect!(&:strip)
1103 end
1105 end
1104 @included_in_api_response.include?(arg.to_s)
1106 @included_in_api_response.include?(arg.to_s)
1105 end
1107 end
1106
1108
1107 # Returns options or nil if nometa param or X-Redmine-Nometa header
1109 # Returns options or nil if nometa param or X-Redmine-Nometa header
1108 # was set in the request
1110 # was set in the request
1109 def api_meta(options)
1111 def api_meta(options)
1110 if params[:nometa].present? || request.headers['X-Redmine-Nometa']
1112 if params[:nometa].present? || request.headers['X-Redmine-Nometa']
1111 # compatibility mode for activeresource clients that raise
1113 # compatibility mode for activeresource clients that raise
1112 # an error when unserializing an array with attributes
1114 # an error when unserializing an array with attributes
1113 nil
1115 nil
1114 else
1116 else
1115 options
1117 options
1116 end
1118 end
1117 end
1119 end
1118
1120
1119 private
1121 private
1120
1122
1121 def wiki_helper
1123 def wiki_helper
1122 helper = Redmine::WikiFormatting.helper_for(Setting.text_formatting)
1124 helper = Redmine::WikiFormatting.helper_for(Setting.text_formatting)
1123 extend helper
1125 extend helper
1124 return self
1126 return self
1125 end
1127 end
1126
1128
1127 def link_to_content_update(text, url_params = {}, html_options = {})
1129 def link_to_content_update(text, url_params = {}, html_options = {})
1128 link_to(text, url_params, html_options)
1130 link_to(text, url_params, html_options)
1129 end
1131 end
1130 end
1132 end
@@ -1,2031 +1,2032
1 == Redmine changelog
1 == Redmine changelog
2
2
3 Redmine - project management software
3 Redmine - project management software
4 Copyright (C) 2006-2012 Jean-Philippe Lang
4 Copyright (C) 2006-2012 Jean-Philippe Lang
5 http://www.redmine.org/
5 http://www.redmine.org/
6
6
7 == TBD v1.4.5
7 == TBD v1.4.5
8
8
9 * Defect #10818: Running rake in test environment causes exception
9 * Defect #10818: Running rake in test environment causes exception
10 * Defect #11192: Make repository identifier accept underscores
10 * Defect #11192: Make repository identifier accept underscores
11 * Defect #11307: Can't filter for negative numeric custom fields
11 * Defect #11307: Can't filter for negative numeric custom fields
12 * Defect #11365: Attachment description length is not validated
12 * Defect #11365: Attachment description length is not validated
13 * Defect #11541: Version sharing is missing in the REST API
13 * Defect #11541: Version sharing is missing in the REST API
14 * Defect #11789: Edit section links broken with h5/h6 headings
14 * Feature #11338: Exclude emails with auto-submitted => auto-generated
15 * Feature #11338: Exclude emails with auto-submitted => auto-generated
15 * Patch #11328: Fix Japanese mistranslation for 'label_language_based'
16 * Patch #11328: Fix Japanese mistranslation for 'label_language_based'
16 * Patch #11448: Russian translation for 1.4-stable and 2.0-stable
17 * Patch #11448: Russian translation for 1.4-stable and 2.0-stable
17 * Patch #11600: Fix plural form of the abbreviation for hours in Brazilian Portuguese
18 * Patch #11600: Fix plural form of the abbreviation for hours in Brazilian Portuguese
18
19
19 == 2012-06-18 v1.4.4
20 == 2012-06-18 v1.4.4
20
21
21 * Defect #10688: PDF export from Wiki - Problems with tables
22 * Defect #10688: PDF export from Wiki - Problems with tables
22 * Defect #11061: Cannot choose commit versions to view differences in Git/Mercurial repository view
23 * Defect #11061: Cannot choose commit versions to view differences in Git/Mercurial repository view
23 * Defect #11112: REST API - custom fields in POST/PUT ignored for time_entries
24 * Defect #11112: REST API - custom fields in POST/PUT ignored for time_entries
24 * Defect #11133: Wiki-page section edit link can point to incorrect section
25 * Defect #11133: Wiki-page section edit link can point to incorrect section
25 * Defect #11160: SQL Error on time report if a custom field has multiple values for an entry
26 * Defect #11160: SQL Error on time report if a custom field has multiple values for an entry
26 * Defect #11178: Spent time sorted by date-descending order lists same-date entries in physical order
27 * Defect #11178: Spent time sorted by date-descending order lists same-date entries in physical order
27 * Defect #11185: Redmine fails to delete a project with parent/child task
28 * Defect #11185: Redmine fails to delete a project with parent/child task
28 * Feature #6597: Configurable session lifetime and timeout
29 * Feature #6597: Configurable session lifetime and timeout
29 * Patch #11113: Small glitch in German localization
30 * Patch #11113: Small glitch in German localization
30 * Fix for Rails vulnerabilities CVE-2012-2694 and CVE-2012-2695
31 * Fix for Rails vulnerabilities CVE-2012-2694 and CVE-2012-2695
31
32
32 == 2012-06-05 v1.4.3
33 == 2012-06-05 v1.4.3
33
34
34 * Defect #11038: "Create and continue" should preserve project, issue and activity when logging time
35 * Defect #11038: "Create and continue" should preserve project, issue and activity when logging time
35 * Defect #11046: Redmine.pm does not support "bind as user" ldap authentication
36 * Defect #11046: Redmine.pm does not support "bind as user" ldap authentication
36 * Defect #11051: reposman.rb fails in 1.4.2 because of missing require for rubygems
37 * Defect #11051: reposman.rb fails in 1.4.2 because of missing require for rubygems
37 * Fix for Rails vulnerability CVE-2012-2660
38 * Fix for Rails vulnerability CVE-2012-2660
38
39
39 == 2012-05-13 v1.4.2
40 == 2012-05-13 v1.4.2
40
41
41 * Defect #10744: rake task redmine:email:test broken
42 * Defect #10744: rake task redmine:email:test broken
42 * Defect #10787: "Allow users to unsubscribe" option is confusing
43 * Defect #10787: "Allow users to unsubscribe" option is confusing
43 * Defect #10827: Cannot access Repositories page and Settings in a Project - Error 500
44 * Defect #10827: Cannot access Repositories page and Settings in a Project - Error 500
44 * Defect #10829: db:migrate fails 0.8.2 -> 1.4.1
45 * Defect #10829: db:migrate fails 0.8.2 -> 1.4.1
45 * Defect #10832: REST Uploads fail with fastcgi
46 * Defect #10832: REST Uploads fail with fastcgi
46 * Defect #10837: reposman and rdm-mailhandler not working with ruby 1.9.x
47 * Defect #10837: reposman and rdm-mailhandler not working with ruby 1.9.x
47 * Defect #10856: can not load translations from hr.yml with ruby1.9.3-p194
48 * Defect #10856: can not load translations from hr.yml with ruby1.9.3-p194
48 * Defect #10865: Filter reset when deleting locked user
49 * Defect #10865: Filter reset when deleting locked user
49 * Feature #9790: Allow filtering text custom fields on "is null" and "is not null"
50 * Feature #9790: Allow filtering text custom fields on "is null" and "is not null"
50 * Feature #10778: svn:ignore for config/additional_environment.rb
51 * Feature #10778: svn:ignore for config/additional_environment.rb
51 * Feature #10875: Partial Albanian Translations
52 * Feature #10875: Partial Albanian Translations
52 * Feature #10888: Bring back List-Id to help aid Gmail filtering
53 * Feature #10888: Bring back List-Id to help aid Gmail filtering
53 * Patch #10733: Traditional Chinese language file (to r9502)
54 * Patch #10733: Traditional Chinese language file (to r9502)
54 * Patch #10745: Japanese translation update (r9519)
55 * Patch #10745: Japanese translation update (r9519)
55 * Patch #10750: Swedish Translation for r9522
56 * Patch #10750: Swedish Translation for r9522
56 * Patch #10785: Bulgarian translation (jstoolbar)
57 * Patch #10785: Bulgarian translation (jstoolbar)
57 * Patch #10800: Simplified Chinese translation
58 * Patch #10800: Simplified Chinese translation
58
59
59 == 2012-04-20 v1.4.1
60 == 2012-04-20 v1.4.1
60
61
61 * Defect #8574: Time report: date range fields not enabled when using the calendar popup
62 * Defect #8574: Time report: date range fields not enabled when using the calendar popup
62 * Defect #10642: Nested textile ol/ul lists generate invalid HTML
63 * Defect #10642: Nested textile ol/ul lists generate invalid HTML
63 * Defect #10668: RSS key is generated twice when user is not reloaded
64 * Defect #10668: RSS key is generated twice when user is not reloaded
64 * Defect #10669: Token.destroy_expired should not delete API tokens
65 * Defect #10669: Token.destroy_expired should not delete API tokens
65 * Defect #10675: "Submit and continue" is broken
66 * Defect #10675: "Submit and continue" is broken
66 * Defect #10711: User cannot change account details with "Login has already been taken" error
67 * Defect #10711: User cannot change account details with "Login has already been taken" error
67 * Feature #10664: Unsubscribe Own User Account
68 * Feature #10664: Unsubscribe Own User Account
68 * Patch #10693: German Translation Update
69 * Patch #10693: German Translation Update
69
70
70 == 2012-04-14 v1.4.0
71 == 2012-04-14 v1.4.0
71
72
72 * Defect #2719: Increase username length limit from 30 to 60
73 * Defect #2719: Increase username length limit from 30 to 60
73 * Defect #3087: Revision referring to issues across all projects
74 * Defect #3087: Revision referring to issues across all projects
74 * Defect #4824: Unable to connect (can't convert Net::LDAP::LdapError into String)
75 * Defect #4824: Unable to connect (can't convert Net::LDAP::LdapError into String)
75 * Defect #5058: reminder mails are not sent when delivery_method is :async_smtp
76 * Defect #5058: reminder mails are not sent when delivery_method is :async_smtp
76 * Defect #6859: Moving issues to a tracker with different custom fields should let fill these fields
77 * Defect #6859: Moving issues to a tracker with different custom fields should let fill these fields
77 * Defect #7398: Error when trying to quick create a version with required custom field
78 * Defect #7398: Error when trying to quick create a version with required custom field
78 * Defect #7495: Python multiline comments highlighting problem in Repository browser
79 * Defect #7495: Python multiline comments highlighting problem in Repository browser
79 * Defect #7826: bigdecimal-segfault-fix.rb must be removed for Oracle
80 * Defect #7826: bigdecimal-segfault-fix.rb must be removed for Oracle
80 * Defect #7920: Attempted to update a stale object when copying a project
81 * Defect #7920: Attempted to update a stale object when copying a project
81 * Defect #8857: Git: Too long in fetching repositories after upgrade from 1.1 or new branch at first time
82 * Defect #8857: Git: Too long in fetching repositories after upgrade from 1.1 or new branch at first time
82 * Defect #9472: The git scm module causes an excess amount of DB traffic.
83 * Defect #9472: The git scm module causes an excess amount of DB traffic.
83 * Defect #9685: Adding multiple times the same related issue relation is possible
84 * Defect #9685: Adding multiple times the same related issue relation is possible
84 * Defect #9798: Release 1.3.0 does not detect rubytree under ruby 1.9.3p0 / rails 2.3.14
85 * Defect #9798: Release 1.3.0 does not detect rubytree under ruby 1.9.3p0 / rails 2.3.14
85 * Defect #9978: Japanese "permission_add_issue_watchers" is wrong
86 * Defect #9978: Japanese "permission_add_issue_watchers" is wrong
86 * Defect #10006: Email reminders are sent for closed issues
87 * Defect #10006: Email reminders are sent for closed issues
87 * Defect #10150: CSV export and spent time: rounding issue
88 * Defect #10150: CSV export and spent time: rounding issue
88 * Defect #10168: CSV export breaks custom columns
89 * Defect #10168: CSV export breaks custom columns
89 * Defect #10181: Issue context menu and bulk edit form show irrelevant statuses
90 * Defect #10181: Issue context menu and bulk edit form show irrelevant statuses
90 * Defect #10198: message_id regex in pop3.rb only recognizes Message-ID header (not Message-Id)
91 * Defect #10198: message_id regex in pop3.rb only recognizes Message-ID header (not Message-Id)
91 * Defect #10251: Description diff link in note details is relative when received by email
92 * Defect #10251: Description diff link in note details is relative when received by email
92 * Defect #10272: Ruby 1.9.3: "incompatible character encoding" with LDAP auth
93 * Defect #10272: Ruby 1.9.3: "incompatible character encoding" with LDAP auth
93 * Defect #10275: Message object not passed to wiki macros for head topic and in preview edit mode
94 * Defect #10275: Message object not passed to wiki macros for head topic and in preview edit mode
94 * Defect #10334: Full name is not unquoted when creating users from emails
95 * Defect #10334: Full name is not unquoted when creating users from emails
95 * Defect #10410: [Localization] Grammar issue of Simplified Chinese in zh.yml
96 * Defect #10410: [Localization] Grammar issue of Simplified Chinese in zh.yml
96 * Defect #10442: Ruby 1.9.3 Time Zone setting Internal error.
97 * Defect #10442: Ruby 1.9.3 Time Zone setting Internal error.
97 * Defect #10467: Confusing behavior while moving issue to a project with disabled Issues module
98 * Defect #10467: Confusing behavior while moving issue to a project with disabled Issues module
98 * Defect #10575: Uploading of attachments which filename contains non-ASCII chars fails with Ruby 1.9
99 * Defect #10575: Uploading of attachments which filename contains non-ASCII chars fails with Ruby 1.9
99 * Defect #10590: WikiContent::Version#text return string with #<Encoding:ASCII-8BIT> when uncompressed
100 * Defect #10590: WikiContent::Version#text return string with #<Encoding:ASCII-8BIT> when uncompressed
100 * Defect #10593: Error: 'incompatible character encodings: UTF-8 and ASCII-8BIT' (old annoing issue) on ruby-1.9.3
101 * Defect #10593: Error: 'incompatible character encodings: UTF-8 and ASCII-8BIT' (old annoing issue) on ruby-1.9.3
101 * Defect #10600: Watchers search generates an Internal error
102 * Defect #10600: Watchers search generates an Internal error
102 * Defect #10605: Bulk edit selected issues does not allow selection of blank values for custom fields
103 * Defect #10605: Bulk edit selected issues does not allow selection of blank values for custom fields
103 * Defect #10619: When changing status before tracker, it shows improper status
104 * Defect #10619: When changing status before tracker, it shows improper status
104 * Feature #779: Multiple SCM per project
105 * Feature #779: Multiple SCM per project
105 * Feature #971: Add "Spent time" column to query
106 * Feature #971: Add "Spent time" column to query
106 * Feature #1060: Add a LDAP-filter using external auth sources
107 * Feature #1060: Add a LDAP-filter using external auth sources
107 * Feature #1102: Shortcut for assigning an issue to me
108 * Feature #1102: Shortcut for assigning an issue to me
108 * Feature #1189: Multiselect custom fields
109 * Feature #1189: Multiselect custom fields
109 * Feature #1363: Allow underscores in project identifiers
110 * Feature #1363: Allow underscores in project identifiers
110 * Feature #1913: LDAP - authenticate as user
111 * Feature #1913: LDAP - authenticate as user
111 * Feature #1972: Attachments for News
112 * Feature #1972: Attachments for News
112 * Feature #2009: Manually add related revisions
113 * Feature #2009: Manually add related revisions
113 * Feature #2323: Workflow permissions for administrators
114 * Feature #2323: Workflow permissions for administrators
114 * Feature #2416: {background:color} doesn't work in text formatting
115 * Feature #2416: {background:color} doesn't work in text formatting
115 * Feature #2694: Notification on loosing assignment
116 * Feature #2694: Notification on loosing assignment
116 * Feature #2715: "Magic links" to notes
117 * Feature #2715: "Magic links" to notes
117 * Feature #2850: Add next/previous navigation to issue
118 * Feature #2850: Add next/previous navigation to issue
118 * Feature #3055: Option to copy attachments when copying an issue
119 * Feature #3055: Option to copy attachments when copying an issue
119 * Feature #3108: set parent automatically for new pages
120 * Feature #3108: set parent automatically for new pages
120 * Feature #3463: Export all wiki pages to PDF
121 * Feature #3463: Export all wiki pages to PDF
121 * Feature #4050: Ruby 1.9 support
122 * Feature #4050: Ruby 1.9 support
122 * Feature #4769: Ability to move an issue to a different project from the update form
123 * Feature #4769: Ability to move an issue to a different project from the update form
123 * Feature #4774: Change the hyperlink for file attachment to view and download
124 * Feature #4774: Change the hyperlink for file attachment to view and download
124 * Feature #5159: Ability to add Non-Member watchers to the watch list
125 * Feature #5159: Ability to add Non-Member watchers to the watch list
125 * Feature #5638: Use Bundler (Gemfile) for gem management
126 * Feature #5638: Use Bundler (Gemfile) for gem management
126 * Feature #5643: Add X-Redmine-Sender header to email notifications
127 * Feature #5643: Add X-Redmine-Sender header to email notifications
127 * Feature #6296: Bulk-edit custom fields through context menu
128 * Feature #6296: Bulk-edit custom fields through context menu
128 * Feature #6386: Issue mail should render the HTML version of the issue details
129 * Feature #6386: Issue mail should render the HTML version of the issue details
129 * Feature #6449: Edit a wiki page's parent on the edit page
130 * Feature #6449: Edit a wiki page's parent on the edit page
130 * Feature #6555: Double-click on "Submit" and "Save" buttons should not send two requests to server
131 * Feature #6555: Double-click on "Submit" and "Save" buttons should not send two requests to server
131 * Feature #7361: Highlight active query in the side bar
132 * Feature #7361: Highlight active query in the side bar
132 * Feature #7420: Rest API for projects members
133 * Feature #7420: Rest API for projects members
133 * Feature #7603: Please make editing issues more obvious than "Change properties (More)"
134 * Feature #7603: Please make editing issues more obvious than "Change properties (More)"
134 * Feature #8171: Adding attachments through the REST API
135 * Feature #8171: Adding attachments through the REST API
135 * Feature #8691: Better handling of issue update conflict
136 * Feature #8691: Better handling of issue update conflict
136 * Feature #9803: Change project through REST API issue update
137 * Feature #9803: Change project through REST API issue update
137 * Feature #9923: User type custom fields should be filterable by "Me".
138 * Feature #9923: User type custom fields should be filterable by "Me".
138 * Feature #9985: Group time report by the Status field
139 * Feature #9985: Group time report by the Status field
139 * Feature #9995: Time entries insertion, "Create and continue" button
140 * Feature #9995: Time entries insertion, "Create and continue" button
140 * Feature #10020: Enable global time logging at /time_entries/new
141 * Feature #10020: Enable global time logging at /time_entries/new
141 * Feature #10042: Bulk change private flag
142 * Feature #10042: Bulk change private flag
142 * Feature #10126: Add members of subprojects in the assignee and author filters
143 * Feature #10126: Add members of subprojects in the assignee and author filters
143 * Feature #10131: Include custom fiels in time entries API responses
144 * Feature #10131: Include custom fiels in time entries API responses
144 * Feature #10207: Git: use default branch from HEAD
145 * Feature #10207: Git: use default branch from HEAD
145 * Feature #10208: Estonian translation
146 * Feature #10208: Estonian translation
146 * Feature #10253: Better handling of attachments when validation fails
147 * Feature #10253: Better handling of attachments when validation fails
147 * Feature #10350: Bulk copy should allow for changing the target version
148 * Feature #10350: Bulk copy should allow for changing the target version
148 * Feature #10607: Ignore out-of-office incoming emails
149 * Feature #10607: Ignore out-of-office incoming emails
149 * Feature #10635: Adding time like "123 Min" is invalid
150 * Feature #10635: Adding time like "123 Min" is invalid
150 * Patch #9998: Make attachement "Optional Description" less wide
151 * Patch #9998: Make attachement "Optional Description" less wide
151 * Patch #10066: i18n not working with russian gem
152 * Patch #10066: i18n not working with russian gem
152 * Patch #10128: Disable IE 8 compatibility mode to fix wrong div.autoscroll scroll bar behaviour
153 * Patch #10128: Disable IE 8 compatibility mode to fix wrong div.autoscroll scroll bar behaviour
153 * Patch #10155: Russian translation changed
154 * Patch #10155: Russian translation changed
154 * Patch #10464: Enhanced PDF output for Issues list
155 * Patch #10464: Enhanced PDF output for Issues list
155 * Patch #10470: Efficiently process new git revisions in a single batch
156 * Patch #10470: Efficiently process new git revisions in a single batch
156 * Patch #10513: Dutch translation improvement
157 * Patch #10513: Dutch translation improvement
157
158
158 == 2012-04-14 v1.3.3
159 == 2012-04-14 v1.3.3
159
160
160 * Defect #10505: Error when exporting to PDF with NoMethodError (undefined method `downcase' for nil:NilClass)
161 * Defect #10505: Error when exporting to PDF with NoMethodError (undefined method `downcase' for nil:NilClass)
161 * Defect #10554: Defect symbols when exporting tasks in pdf
162 * Defect #10554: Defect symbols when exporting tasks in pdf
162 * Defect #10564: Unable to change locked, sticky flags and board when editing a message
163 * Defect #10564: Unable to change locked, sticky flags and board when editing a message
163 * Defect #10591: Dutch "label_file_added" translation is wrong
164 * Defect #10591: Dutch "label_file_added" translation is wrong
164 * Defect #10622: "Default administrator account changed" is always true
165 * Defect #10622: "Default administrator account changed" is always true
165 * Patch #10555: rake redmine:send_reminders aborted if issue assigned to group
166 * Patch #10555: rake redmine:send_reminders aborted if issue assigned to group
166 * Patch #10611: Simplified Chinese translations for 1.3-stable
167 * Patch #10611: Simplified Chinese translations for 1.3-stable
167
168
168 == 2012-03-11 v1.3.2
169 == 2012-03-11 v1.3.2
169
170
170 * Defect #8194: {{toc}} uses identical anchors for subsections with the same name
171 * Defect #8194: {{toc}} uses identical anchors for subsections with the same name
171 * Defect #9143: Partial diff comparison should be done on actual code, not on html
172 * Defect #9143: Partial diff comparison should be done on actual code, not on html
172 * Defect #9523: {{toc}} does not display headers with @ code markup
173 * Defect #9523: {{toc}} does not display headers with @ code markup
173 * Defect #9815: Release 1.3.0 does not detect rubytree with rubgems 1.8
174 * Defect #9815: Release 1.3.0 does not detect rubytree with rubgems 1.8
174 * Defect #10053: undefined method `<=>' for nil:NilClass when accessing the settings of a project
175 * Defect #10053: undefined method `<=>' for nil:NilClass when accessing the settings of a project
175 * Defect #10135: ActionView::TemplateError (can't convert Fixnum into String)
176 * Defect #10135: ActionView::TemplateError (can't convert Fixnum into String)
176 * Defect #10193: Unappropriate icons in highlighted code block
177 * Defect #10193: Unappropriate icons in highlighted code block
177 * Defect #10199: No wiki section edit when title contains code
178 * Defect #10199: No wiki section edit when title contains code
178 * Defect #10218: Error when creating a project with a version custom field
179 * Defect #10218: Error when creating a project with a version custom field
179 * Defect #10241: "get version by ID" fails with "401 not authorized" error when using API access key
180 * Defect #10241: "get version by ID" fails with "401 not authorized" error when using API access key
180 * Defect #10284: Note added by commit from a subproject does not contain project identifier
181 * Defect #10284: Note added by commit from a subproject does not contain project identifier
181 * Defect #10374: User list is empty when adding users to project / group if remaining users are added late
182 * Defect #10374: User list is empty when adding users to project / group if remaining users are added late
182 * Defect #10390: Mass assignment security vulnerability
183 * Defect #10390: Mass assignment security vulnerability
183 * Patch #8413: Confirmation message before deleting a relationship
184 * Patch #8413: Confirmation message before deleting a relationship
184 * Patch #10160: Bulgarian translation (r8777)
185 * Patch #10160: Bulgarian translation (r8777)
185 * Patch #10242: Migrate Redmine.pm from Digest::Sha1 to Digest::Sha
186 * Patch #10242: Migrate Redmine.pm from Digest::Sha1 to Digest::Sha
186 * Patch #10258: Italian translation for 1.3-stable
187 * Patch #10258: Italian translation for 1.3-stable
187
188
188 == 2012-02-06 v1.3.1
189 == 2012-02-06 v1.3.1
189
190
190 * Defect #9775: app/views/repository/_revision_graph.html.erb sets window.onload directly..
191 * Defect #9775: app/views/repository/_revision_graph.html.erb sets window.onload directly..
191 * Defect #9792: Ruby 1.9: [v1.3.0] Error: incompatible character encodings for it translation on Calendar page
192 * Defect #9792: Ruby 1.9: [v1.3.0] Error: incompatible character encodings for it translation on Calendar page
192 * Defect #9793: Bad spacing between numbered list and heading (recently broken).
193 * Defect #9793: Bad spacing between numbered list and heading (recently broken).
193 * Defect #9795: Unrelated error message when creating a group with an invalid name
194 * Defect #9795: Unrelated error message when creating a group with an invalid name
194 * Defect #9832: Revision graph height should depend on height of rows in revisions table
195 * Defect #9832: Revision graph height should depend on height of rows in revisions table
195 * Defect #9937: Repository settings are not saved when all SCM are disabled
196 * Defect #9937: Repository settings are not saved when all SCM are disabled
196 * Defect #9961: Ukrainian "default_tracker_bug" is wrong
197 * Defect #9961: Ukrainian "default_tracker_bug" is wrong
197 * Defect #10013: Rest API - Create Version -> Internal server error 500
198 * Defect #10013: Rest API - Create Version -> Internal server error 500
198 * Defect #10115: Javascript error - Can't attach more than 1 file on IE 6 and 7
199 * Defect #10115: Javascript error - Can't attach more than 1 file on IE 6 and 7
199 * Defect #10130: Broken italic text style in edited comment preview
200 * Defect #10130: Broken italic text style in edited comment preview
200 * Defect #10152: Attachment diff type is not saved in user preference
201 * Defect #10152: Attachment diff type is not saved in user preference
201 * Feature #9943: Arabic translation
202 * Feature #9943: Arabic translation
202 * Patch #9874: pt-BR translation updates
203 * Patch #9874: pt-BR translation updates
203 * Patch #9922: Spanish translation updated
204 * Patch #9922: Spanish translation updated
204 * Patch #10137: Korean language file ko.yml updated to Redmine 1.3.0
205 * Patch #10137: Korean language file ko.yml updated to Redmine 1.3.0
205
206
206 == 2011-12-10 v1.3.0
207 == 2011-12-10 v1.3.0
207
208
208 * Defect #2109: Context menu is being submitted twice per right click
209 * Defect #2109: Context menu is being submitted twice per right click
209 * Defect #7717: MailHandler user creation for unknown_user impossible due to diverging length-limits of login and email fields
210 * Defect #7717: MailHandler user creation for unknown_user impossible due to diverging length-limits of login and email fields
210 * Defect #7917: Creating users via email fails if user real name containes special chars
211 * Defect #7917: Creating users via email fails if user real name containes special chars
211 * Defect #7966: MailHandler does not include JournalDetail for attached files
212 * Defect #7966: MailHandler does not include JournalDetail for attached files
212 * Defect #8368: Bad decimal separator in time entry CSV
213 * Defect #8368: Bad decimal separator in time entry CSV
213 * Defect #8371: MySQL error when filtering a custom field using the REST api
214 * Defect #8371: MySQL error when filtering a custom field using the REST api
214 * Defect #8549: Export CSV has character encoding error
215 * Defect #8549: Export CSV has character encoding error
215 * Defect #8573: Do not show inactive Enumerations where not needed
216 * Defect #8573: Do not show inactive Enumerations where not needed
216 * Defect #8611: rake/rdoctask is deprecated
217 * Defect #8611: rake/rdoctask is deprecated
217 * Defect #8751: Email notification: bug, when number of recipients more then 8
218 * Defect #8751: Email notification: bug, when number of recipients more then 8
218 * Defect #8894: Private issues - make it more obvious in the UI?
219 * Defect #8894: Private issues - make it more obvious in the UI?
219 * Defect #8994: Hardcoded French string "anonyme"
220 * Defect #8994: Hardcoded French string "anonyme"
220 * Defect #9043: Hardcoded string "diff" in Wiki#show and Repositories_Helper
221 * Defect #9043: Hardcoded string "diff" in Wiki#show and Repositories_Helper
221 * Defect #9051: wrong "text_issue_added" in russian translation.
222 * Defect #9051: wrong "text_issue_added" in russian translation.
222 * Defect #9108: Custom query not saving status filter
223 * Defect #9108: Custom query not saving status filter
223 * Defect #9252: Regression: application title escaped 2 times
224 * Defect #9252: Regression: application title escaped 2 times
224 * Defect #9264: Bad Portuguese translation
225 * Defect #9264: Bad Portuguese translation
225 * Defect #9470: News list is missing Avatars
226 * Defect #9470: News list is missing Avatars
226 * Defect #9471: Inline markup broken in Wiki link labels
227 * Defect #9471: Inline markup broken in Wiki link labels
227 * Defect #9489: Label all input field and control tags
228 * Defect #9489: Label all input field and control tags
228 * Defect #9534: Precedence: bulk email header is non standard and discouraged
229 * Defect #9534: Precedence: bulk email header is non standard and discouraged
229 * Defect #9540: Issue filter by assigned_to_role is not project specific
230 * Defect #9540: Issue filter by assigned_to_role is not project specific
230 * Defect #9619: Time zone ignored when logging time while editing ticket
231 * Defect #9619: Time zone ignored when logging time while editing ticket
231 * Defect #9638: Inconsistent image filename extensions
232 * Defect #9638: Inconsistent image filename extensions
232 * Defect #9669: Issue list doesn't sort assignees/authors regarding user display format
233 * Defect #9669: Issue list doesn't sort assignees/authors regarding user display format
233 * Defect #9672: Message-quoting in forums module broken
234 * Defect #9672: Message-quoting in forums module broken
234 * Defect #9719: Filtering by numeric custom field types broken after update to master
235 * Defect #9719: Filtering by numeric custom field types broken after update to master
235 * Defect #9724: Can't remote add new categories
236 * Defect #9724: Can't remote add new categories
236 * Defect #9738: Setting of cross-project custom query is not remembered inside project
237 * Defect #9738: Setting of cross-project custom query is not remembered inside project
237 * Defect #9748: Error about configuration.yml validness should mention file path
238 * Defect #9748: Error about configuration.yml validness should mention file path
238 * Feature #69: Textilized description in PDF
239 * Feature #69: Textilized description in PDF
239 * Feature #401: Add pdf export for WIKI page
240 * Feature #401: Add pdf export for WIKI page
240 * Feature #1567: Make author column sortable and groupable
241 * Feature #1567: Make author column sortable and groupable
241 * Feature #2222: Single section edit.
242 * Feature #2222: Single section edit.
242 * Feature #2269: Default issue start date should become configurable.
243 * Feature #2269: Default issue start date should become configurable.
243 * Feature #2371: character encoding for attachment file
244 * Feature #2371: character encoding for attachment file
244 * Feature #2964: Ability to assign issues to groups
245 * Feature #2964: Ability to assign issues to groups
245 * Feature #3033: Bug Reporting: Using "Create and continue" should show bug id of saved bug
246 * Feature #3033: Bug Reporting: Using "Create and continue" should show bug id of saved bug
246 * Feature #3261: support attachment images in PDF export
247 * Feature #3261: support attachment images in PDF export
247 * Feature #4264: Update CodeRay to 1.0 final
248 * Feature #4264: Update CodeRay to 1.0 final
248 * Feature #4324: Redmine renames my files, it shouldn't.
249 * Feature #4324: Redmine renames my files, it shouldn't.
249 * Feature #4729: Add Date-Based Filters for Issues List
250 * Feature #4729: Add Date-Based Filters for Issues List
250 * Feature #4742: CSV export: option to export selected or all columns
251 * Feature #4742: CSV export: option to export selected or all columns
251 * Feature #4976: Allow rdm-mailhandler to read the API key from a file
252 * Feature #4976: Allow rdm-mailhandler to read the API key from a file
252 * Feature #5501: Git: Mercurial: Adding visual merge/branch history to repository view
253 * Feature #5501: Git: Mercurial: Adding visual merge/branch history to repository view
253 * Feature #5634: Export issue to PDF does not include Subtasks and Related Issues
254 * Feature #5634: Export issue to PDF does not include Subtasks and Related Issues
254 * Feature #5670: Cancel option for file upload
255 * Feature #5670: Cancel option for file upload
255 * Feature #5737: Custom Queries available through the REST Api
256 * Feature #5737: Custom Queries available through the REST Api
256 * Feature #6180: Searchable custom fields do not provide adequate operators
257 * Feature #6180: Searchable custom fields do not provide adequate operators
257 * Feature #6954: Filter from date to date
258 * Feature #6954: Filter from date to date
258 * Feature #7180: List of statuses in REST API
259 * Feature #7180: List of statuses in REST API
259 * Feature #7181: List of trackers in REST API
260 * Feature #7181: List of trackers in REST API
260 * Feature #7366: REST API for Issue Relations
261 * Feature #7366: REST API for Issue Relations
261 * Feature #7403: REST API for Versions
262 * Feature #7403: REST API for Versions
262 * Feature #7671: REST API for reading attachments
263 * Feature #7671: REST API for reading attachments
263 * Feature #7832: Ability to assign issue categories to groups
264 * Feature #7832: Ability to assign issue categories to groups
264 * Feature #8420: Consider removing #7013 workaround
265 * Feature #8420: Consider removing #7013 workaround
265 * Feature #9196: Improve logging in MailHandler when user creation fails
266 * Feature #9196: Improve logging in MailHandler when user creation fails
266 * Feature #9496: Adds an option in mailhandler to disable server certificate verification
267 * Feature #9496: Adds an option in mailhandler to disable server certificate verification
267 * Feature #9553: CRUD operations for "Issue categories" in REST API
268 * Feature #9553: CRUD operations for "Issue categories" in REST API
268 * Feature #9593: HTML title should be reordered
269 * Feature #9593: HTML title should be reordered
269 * Feature #9600: Wiki links for news and forums
270 * Feature #9600: Wiki links for news and forums
270 * Feature #9607: Filter for issues without start date (or any another field based on date type)
271 * Feature #9607: Filter for issues without start date (or any another field based on date type)
271 * Feature #9609: Upgrade to Rails 2.3.14
272 * Feature #9609: Upgrade to Rails 2.3.14
272 * Feature #9612: "side by side" and "inline" patch view for attachments
273 * Feature #9612: "side by side" and "inline" patch view for attachments
273 * Feature #9667: Check attachment size before upload
274 * Feature #9667: Check attachment size before upload
274 * Feature #9690: Link in notification pointing to the actual update
275 * Feature #9690: Link in notification pointing to the actual update
275 * Feature #9720: Add note number for single issue's PDF
276 * Feature #9720: Add note number for single issue's PDF
276 * Patch #8617: Indent subject of subtask ticket in exported issues PDF
277 * Patch #8617: Indent subject of subtask ticket in exported issues PDF
277 * Patch #8778: Traditional Chinese 'issue' translation change
278 * Patch #8778: Traditional Chinese 'issue' translation change
278 * Patch #9053: Fix up Russian translation
279 * Patch #9053: Fix up Russian translation
279 * Patch #9129: Improve wording of Git repository note at project setting
280 * Patch #9129: Improve wording of Git repository note at project setting
280 * Patch #9148: Better handling of field_due_date italian translation
281 * Patch #9148: Better handling of field_due_date italian translation
281 * Patch #9273: Fix typos in russian localization
282 * Patch #9273: Fix typos in russian localization
282 * Patch #9484: Limit SCM annotate to text files under the maximum file size for viewing
283 * Patch #9484: Limit SCM annotate to text files under the maximum file size for viewing
283 * Patch #9659: Indexing rows in auth_sources/index view
284 * Patch #9659: Indexing rows in auth_sources/index view
284 * Patch #9692: Fix Textilized description in PDF for CodeRay
285 * Patch #9692: Fix Textilized description in PDF for CodeRay
285
286
286 == 2011-12-10 v1.2.3
287 == 2011-12-10 v1.2.3
287
288
288 * Defect #8707: Reposman: wrong constant name
289 * Defect #8707: Reposman: wrong constant name
289 * Defect #8809: Table in timelog report overflows
290 * Defect #8809: Table in timelog report overflows
290 * Defect #9055: Version files in Files module cannot be downloaded if issue tracking is disabled
291 * Defect #9055: Version files in Files module cannot be downloaded if issue tracking is disabled
291 * Defect #9137: db:encrypt fails to handle repositories with blank password
292 * Defect #9137: db:encrypt fails to handle repositories with blank password
292 * Defect #9394: Custom date field only validating on regex and not a valid date
293 * Defect #9394: Custom date field only validating on regex and not a valid date
293 * Defect #9405: Any user with :log_time permission can edit time entries via context menu
294 * Defect #9405: Any user with :log_time permission can edit time entries via context menu
294 * Defect #9448: The attached images are not shown in documents
295 * Defect #9448: The attached images are not shown in documents
295 * Defect #9520: Copied private query not visible after project copy
296 * Defect #9520: Copied private query not visible after project copy
296 * Defect #9552: Error when reading ciphered text from the database without cipher key configured
297 * Defect #9552: Error when reading ciphered text from the database without cipher key configured
297 * Defect #9566: Redmine.pm considers all projects private when login_required is enabled
298 * Defect #9566: Redmine.pm considers all projects private when login_required is enabled
298 * Defect #9567: Redmine.pm potential security issue with cache credential enabled and subversion
299 * Defect #9567: Redmine.pm potential security issue with cache credential enabled and subversion
299 * Defect #9577: Deleting a subtasks doesn't update parent's rgt & lft values
300 * Defect #9577: Deleting a subtasks doesn't update parent's rgt & lft values
300 * Defect #9597: Broken version links in wiki annotate history
301 * Defect #9597: Broken version links in wiki annotate history
301 * Defect #9682: Wiki HTML Export only useful when Access history is accessible
302 * Defect #9682: Wiki HTML Export only useful when Access history is accessible
302 * Defect #9737: Custom values deleted before issue submit
303 * Defect #9737: Custom values deleted before issue submit
303 * Defect #9741: calendar-hr.js (Croatian) is not UTF-8
304 * Defect #9741: calendar-hr.js (Croatian) is not UTF-8
304 * Patch #9558: Simplified Chinese translation for 1.2.2 updated
305 * Patch #9558: Simplified Chinese translation for 1.2.2 updated
305 * Patch #9695: Bulgarian translation (r7942)
306 * Patch #9695: Bulgarian translation (r7942)
306
307
307 == 2011-11-11 v1.2.2
308 == 2011-11-11 v1.2.2
308
309
309 * Defect #3276: Incorrect handling of anchors in Wiki to HTML export
310 * Defect #3276: Incorrect handling of anchors in Wiki to HTML export
310 * Defect #7215: Wiki formatting mangles links to internal headers
311 * Defect #7215: Wiki formatting mangles links to internal headers
311 * Defect #7613: Generated test instances may share the same attribute value object
312 * Defect #7613: Generated test instances may share the same attribute value object
312 * Defect #8411: Can't remove "Project" column on custom query
313 * Defect #8411: Can't remove "Project" column on custom query
313 * Defect #8615: Custom 'version' fields don't show shared versions
314 * Defect #8615: Custom 'version' fields don't show shared versions
314 * Defect #8633: Pagination counts non visible issues
315 * Defect #8633: Pagination counts non visible issues
315 * Defect #8651: Email attachments are not added to issues any more in v1.2
316 * Defect #8651: Email attachments are not added to issues any more in v1.2
316 * Defect #8825: JRuby + Windows: SCMs do not work on Redmine 1.2
317 * Defect #8825: JRuby + Windows: SCMs do not work on Redmine 1.2
317 * Defect #8836: Additional workflow transitions not available when set to both author and assignee
318 * Defect #8836: Additional workflow transitions not available when set to both author and assignee
318 * Defect #8865: Custom field regular expression is not validated
319 * Defect #8865: Custom field regular expression is not validated
319 * Defect #8880: Error deleting issue with grandchild
320 * Defect #8880: Error deleting issue with grandchild
320 * Defect #8884: Assignee is cleared when updating issue with locked assignee
321 * Defect #8884: Assignee is cleared when updating issue with locked assignee
321 * Defect #8892: Unused fonts in rfpdf plugin folder
322 * Defect #8892: Unused fonts in rfpdf plugin folder
322 * Defect #9161: pt-BR field_warn_on_leaving_unsaved has a small gramatical error
323 * Defect #9161: pt-BR field_warn_on_leaving_unsaved has a small gramatical error
323 * Defect #9308: Search fails when a role haven't "view wiki" permission
324 * Defect #9308: Search fails when a role haven't "view wiki" permission
324 * Defect #9465: Mercurial: can't browse named branch below Mercurial 1.5
325 * Defect #9465: Mercurial: can't browse named branch below Mercurial 1.5
325
326
326 == 2011-07-11 v1.2.1
327 == 2011-07-11 v1.2.1
327
328
328 * Defect #5089: i18N error on truncated revision diff view
329 * Defect #5089: i18N error on truncated revision diff view
329 * Defect #7501: Search options get lost after clicking on a specific result type
330 * Defect #7501: Search options get lost after clicking on a specific result type
330 * Defect #8229: "project.xml" response does not include the parent ID
331 * Defect #8229: "project.xml" response does not include the parent ID
331 * Defect #8449: Wiki annotated page does not display author of version 1
332 * Defect #8449: Wiki annotated page does not display author of version 1
332 * Defect #8467: Missing german translation - Warn me when leaving a page with unsaved text
333 * Defect #8467: Missing german translation - Warn me when leaving a page with unsaved text
333 * Defect #8468: No warning when leaving page with unsaved text that has not lost focus
334 * Defect #8468: No warning when leaving page with unsaved text that has not lost focus
334 * Defect #8472: Private checkbox ignored on issue creation with "Set own issues public or private" permission
335 * Defect #8472: Private checkbox ignored on issue creation with "Set own issues public or private" permission
335 * Defect #8510: JRuby: Can't open administrator panel if scm command is not available
336 * Defect #8510: JRuby: Can't open administrator panel if scm command is not available
336 * Defect #8512: Syntax highlighter on Welcome page
337 * Defect #8512: Syntax highlighter on Welcome page
337 * Defect #8554: Translation missing error on custom field validation
338 * Defect #8554: Translation missing error on custom field validation
338 * Defect #8565: JRuby: Japanese PDF export error
339 * Defect #8565: JRuby: Japanese PDF export error
339 * Defect #8566: Exported PDF UTF-8 Vietnamese not correct
340 * Defect #8566: Exported PDF UTF-8 Vietnamese not correct
340 * Defect #8569: JRuby: PDF export error with TypeError
341 * Defect #8569: JRuby: PDF export error with TypeError
341 * Defect #8576: Missing german translation - different things
342 * Defect #8576: Missing german translation - different things
342 * Defect #8616: Circular relations
343 * Defect #8616: Circular relations
343 * Defect #8646: Russian translation "label_follows" and "label_follows" are wrong
344 * Defect #8646: Russian translation "label_follows" and "label_follows" are wrong
344 * Defect #8712: False 'Description updated' journal details messages
345 * Defect #8712: False 'Description updated' journal details messages
345 * Defect #8729: Not-public queries are not private
346 * Defect #8729: Not-public queries are not private
346 * Defect #8737: Broken line of long issue description on issue PDF.
347 * Defect #8737: Broken line of long issue description on issue PDF.
347 * Defect #8738: Missing revision number/id of associated revisions on issue PDF
348 * Defect #8738: Missing revision number/id of associated revisions on issue PDF
348 * Defect #8739: Workflow copy does not copy advanced workflow settings
349 * Defect #8739: Workflow copy does not copy advanced workflow settings
349 * Defect #8759: Setting issue attributes from mail should be case-insensitive
350 * Defect #8759: Setting issue attributes from mail should be case-insensitive
350 * Defect #8777: Mercurial: Not able to Resetting Redmine project respository
351 * Defect #8777: Mercurial: Not able to Resetting Redmine project respository
351
352
352 == 2011-05-30 v1.2.0
353 == 2011-05-30 v1.2.0
353
354
354 * Defect #61: Broken character encoding in pdf export
355 * Defect #61: Broken character encoding in pdf export
355 * Defect #1965: Redmine is not Tab Safe
356 * Defect #1965: Redmine is not Tab Safe
356 * Defect #2274: Filesystem Repository path encoding of non UTF-8 characters
357 * Defect #2274: Filesystem Repository path encoding of non UTF-8 characters
357 * Defect #2664: Mercurial: Repository path encoding of non UTF-8 characters
358 * Defect #2664: Mercurial: Repository path encoding of non UTF-8 characters
358 * Defect #3421: Mercurial reads files from working dir instead of changesets
359 * Defect #3421: Mercurial reads files from working dir instead of changesets
359 * Defect #3462: CVS: Repository path encoding of non UTF-8 characters
360 * Defect #3462: CVS: Repository path encoding of non UTF-8 characters
360 * Defect #3715: Login page should not show projects link and search box if authentication is required
361 * Defect #3715: Login page should not show projects link and search box if authentication is required
361 * Defect #3724: Mercurial repositories display revision ID instead of changeset ID
362 * Defect #3724: Mercurial repositories display revision ID instead of changeset ID
362 * Defect #3761: Most recent CVS revisions are missing in "revisions" view
363 * Defect #3761: Most recent CVS revisions are missing in "revisions" view
363 * Defect #4270: CVS Repository view in Project doesn't show Author, Revision, Comment
364 * Defect #4270: CVS Repository view in Project doesn't show Author, Revision, Comment
364 * Defect #5138: Don't use Ajax for pagination
365 * Defect #5138: Don't use Ajax for pagination
365 * Defect #5152: Cannot use certain characters for user and role names.
366 * Defect #5152: Cannot use certain characters for user and role names.
366 * Defect #5251: Git: Repository path encoding of non UTF-8 characters
367 * Defect #5251: Git: Repository path encoding of non UTF-8 characters
367 * Defect #5373: Translation missing when adding invalid watchers
368 * Defect #5373: Translation missing when adding invalid watchers
368 * Defect #5817: Shared versions not shown in subproject's gantt chart
369 * Defect #5817: Shared versions not shown in subproject's gantt chart
369 * Defect #6013: git tab,browsing, very slow -- even after first time
370 * Defect #6013: git tab,browsing, very slow -- even after first time
370 * Defect #6148: Quoting, newlines, and nightmares...
371 * Defect #6148: Quoting, newlines, and nightmares...
371 * Defect #6256: Redmine considers non ASCII and UTF-16 text files as binary in SCM
372 * Defect #6256: Redmine considers non ASCII and UTF-16 text files as binary in SCM
372 * Defect #6476: Subproject's issues are not shown in the subproject's gantt
373 * Defect #6476: Subproject's issues are not shown in the subproject's gantt
373 * Defect #6496: Remove i18n 0.3.x/0.4.x hack for Rails 2.3.5
374 * Defect #6496: Remove i18n 0.3.x/0.4.x hack for Rails 2.3.5
374 * Defect #6562: Context-menu deletion of issues deletes all subtasks too without explicit prompt
375 * Defect #6562: Context-menu deletion of issues deletes all subtasks too without explicit prompt
375 * Defect #6604: Issues targeted at parent project versions' are not shown on gantt chart
376 * Defect #6604: Issues targeted at parent project versions' are not shown on gantt chart
376 * Defect #6706: Resolving issues with the commit message produces the wrong comment with CVS
377 * Defect #6706: Resolving issues with the commit message produces the wrong comment with CVS
377 * Defect #6901: Copy/Move an issue does not give any history of who actually did the action.
378 * Defect #6901: Copy/Move an issue does not give any history of who actually did the action.
378 * Defect #6905: Specific heading-content breaks CSS
379 * Defect #6905: Specific heading-content breaks CSS
379 * Defect #7000: Project filter not applied on versions in Gantt chart
380 * Defect #7000: Project filter not applied on versions in Gantt chart
380 * Defect #7097: Starting day of week cannot be set to Saturday
381 * Defect #7097: Starting day of week cannot be set to Saturday
381 * Defect #7114: New gantt doesn't display some projects
382 * Defect #7114: New gantt doesn't display some projects
382 * Defect #7146: Git adapter lost commits before 7 days from database latest changeset
383 * Defect #7146: Git adapter lost commits before 7 days from database latest changeset
383 * Defect #7218: Date range error on issue query
384 * Defect #7218: Date range error on issue query
384 * Defect #7257: "Issues by" version links bad criterias
385 * Defect #7257: "Issues by" version links bad criterias
385 * Defect #7279: CSS class ".icon-home" is not used.
386 * Defect #7279: CSS class ".icon-home" is not used.
386 * Defect #7320: circular dependency >2 issues
387 * Defect #7320: circular dependency >2 issues
387 * Defect #7352: Filters not working in Gantt charts
388 * Defect #7352: Filters not working in Gantt charts
388 * Defect #7367: Receiving pop3 email should not output debug messages
389 * Defect #7367: Receiving pop3 email should not output debug messages
389 * Defect #7373: Error with PDF output and ruby 1.9.2
390 * Defect #7373: Error with PDF output and ruby 1.9.2
390 * Defect #7379: Remove extraneous hidden_field on wiki history
391 * Defect #7379: Remove extraneous hidden_field on wiki history
391 * Defect #7516: Redmine does not work with RubyGems 1.5.0
392 * Defect #7516: Redmine does not work with RubyGems 1.5.0
392 * Defect #7518: Mercurial diff can be wrong if the previous changeset isn't the parent
393 * Defect #7518: Mercurial diff can be wrong if the previous changeset isn't the parent
393 * Defect #7581: Not including a spent time value on the main issue update screen causes silent data loss
394 * Defect #7581: Not including a spent time value on the main issue update screen causes silent data loss
394 * Defect #7582: hiding form pages from search engines
395 * Defect #7582: hiding form pages from search engines
395 * Defect #7597: Subversion and Mercurial log have the possibility to miss encoding
396 * Defect #7597: Subversion and Mercurial log have the possibility to miss encoding
396 * Defect #7604: ActionView::TemplateError (undefined method `name' for nil:NilClass)
397 * Defect #7604: ActionView::TemplateError (undefined method `name' for nil:NilClass)
397 * Defect #7605: Using custom queries always redirects to "Issues" tab
398 * Defect #7605: Using custom queries always redirects to "Issues" tab
398 * Defect #7615: CVS diffs do not handle new files properly
399 * Defect #7615: CVS diffs do not handle new files properly
399 * Defect #7618: SCM diffs do not handle one line new files properly
400 * Defect #7618: SCM diffs do not handle one line new files properly
400 * Defect #7639: Some date fields do not have requested format.
401 * Defect #7639: Some date fields do not have requested format.
401 * Defect #7657: Wrong commit range in git log command on Windows
402 * Defect #7657: Wrong commit range in git log command on Windows
402 * Defect #7818: Wiki pages don't use the local timezone to display the "Updated ? hours ago" mouseover
403 * Defect #7818: Wiki pages don't use the local timezone to display the "Updated ? hours ago" mouseover
403 * Defect #7821: Git "previous" and "next" revisions are incorrect
404 * Defect #7821: Git "previous" and "next" revisions are incorrect
404 * Defect #7827: CVS: Age column on repository view is off by timezone delta
405 * Defect #7827: CVS: Age column on repository view is off by timezone delta
405 * Defect #7843: Add a relation between issues = explicit login window ! (basic authentication popup is prompted on AJAX request)
406 * Defect #7843: Add a relation between issues = explicit login window ! (basic authentication popup is prompted on AJAX request)
406 * Defect #8011: {{toc}} does not display headlines with inline code markup
407 * Defect #8011: {{toc}} does not display headlines with inline code markup
407 * Defect #8029: List of users for adding to a group may be empty if 100 first users have been added
408 * Defect #8029: List of users for adding to a group may be empty if 100 first users have been added
408 * Defect #8064: Text custom fields do not wrap on the issue list
409 * Defect #8064: Text custom fields do not wrap on the issue list
409 * Defect #8071: Watching a subtask from the context menu updates main issue watch link
410 * Defect #8071: Watching a subtask from the context menu updates main issue watch link
410 * Defect #8072: Two untranslatable default role names
411 * Defect #8072: Two untranslatable default role names
411 * Defect #8075: Some "notifiable" names are not i18n-enabled
412 * Defect #8075: Some "notifiable" names are not i18n-enabled
412 * Defect #8081: GIT: Commits missing when user has the "decorate" git option enabled
413 * Defect #8081: GIT: Commits missing when user has the "decorate" git option enabled
413 * Defect #8088: Colorful indentation of subprojects must be on right in RTL locales
414 * Defect #8088: Colorful indentation of subprojects must be on right in RTL locales
414 * Defect #8239: notes field is not propagated during issue copy
415 * Defect #8239: notes field is not propagated during issue copy
415 * Defect #8356: GET /time_entries.xml ignores limit/offset parameters
416 * Defect #8356: GET /time_entries.xml ignores limit/offset parameters
416 * Defect #8432: Private issues information shows up on Activity page for unauthorized users
417 * Defect #8432: Private issues information shows up on Activity page for unauthorized users
417 * Feature #746: Versioned issue descriptions
418 * Feature #746: Versioned issue descriptions
418 * Feature #1067: Differentiate public/private saved queries in the sidebar
419 * Feature #1067: Differentiate public/private saved queries in the sidebar
419 * Feature #1236: Make destination folder for attachment uploads configurable
420 * Feature #1236: Make destination folder for attachment uploads configurable
420 * Feature #1735: Per project repository log encoding setting
421 * Feature #1735: Per project repository log encoding setting
421 * Feature #1763: Autologin-cookie should be configurable
422 * Feature #1763: Autologin-cookie should be configurable
422 * Feature #1981: display mercurial tags
423 * Feature #1981: display mercurial tags
423 * Feature #2074: Sending email notifications when comments are added in the news section
424 * Feature #2074: Sending email notifications when comments are added in the news section
424 * Feature #2096: Custom fields referencing system tables (users and versions)
425 * Feature #2096: Custom fields referencing system tables (users and versions)
425 * Feature #2732: Allow additional workflow transitions for author and assignee
426 * Feature #2732: Allow additional workflow transitions for author and assignee
426 * Feature #2910: Warning on leaving edited issue/wiki page without saving
427 * Feature #2910: Warning on leaving edited issue/wiki page without saving
427 * Feature #3396: Git: use --encoding=UTF-8 in "git log"
428 * Feature #3396: Git: use --encoding=UTF-8 in "git log"
428 * Feature #4273: SCM command availability automatic check in administration panel
429 * Feature #4273: SCM command availability automatic check in administration panel
429 * Feature #4477: Use mime types in downloading from repository
430 * Feature #4477: Use mime types in downloading from repository
430 * Feature #5518: Graceful fallback for "missing translation" needed
431 * Feature #5518: Graceful fallback for "missing translation" needed
431 * Feature #5520: Text format buttons and preview link missing when editing comment
432 * Feature #5520: Text format buttons and preview link missing when editing comment
432 * Feature #5831: Parent Task to Issue Bulk Edit
433 * Feature #5831: Parent Task to Issue Bulk Edit
433 * Feature #6887: Upgrade to Rails 2.3.11
434 * Feature #6887: Upgrade to Rails 2.3.11
434 * Feature #7139: Highlight changes inside diff lines
435 * Feature #7139: Highlight changes inside diff lines
435 * Feature #7236: Collapse All for Groups
436 * Feature #7236: Collapse All for Groups
436 * Feature #7246: Handle "named branch" for mercurial
437 * Feature #7246: Handle "named branch" for mercurial
437 * Feature #7296: Ability for admin to delete users
438 * Feature #7296: Ability for admin to delete users
438 * Feature #7318: Add user agent to Redmine Mailhandler
439 * Feature #7318: Add user agent to Redmine Mailhandler
439 * Feature #7408: Add an application configuration file
440 * Feature #7408: Add an application configuration file
440 * Feature #7409: Cross project Redmine links
441 * Feature #7409: Cross project Redmine links
441 * Feature #7410: Add salt to user passwords
442 * Feature #7410: Add salt to user passwords
442 * Feature #7411: Option to cipher LDAP ans SCM passwords stored in the database
443 * Feature #7411: Option to cipher LDAP ans SCM passwords stored in the database
443 * Feature #7412: Add an issue visibility level to each role
444 * Feature #7412: Add an issue visibility level to each role
444 * Feature #7414: Private issues
445 * Feature #7414: Private issues
445 * Feature #7517: Configurable path of executable for scm adapters
446 * Feature #7517: Configurable path of executable for scm adapters
446 * Feature #7640: Add "mystery man" gravatar to options
447 * Feature #7640: Add "mystery man" gravatar to options
447 * Feature #7858: RubyGems 1.6 support
448 * Feature #7858: RubyGems 1.6 support
448 * Feature #7893: Group filter on the users list
449 * Feature #7893: Group filter on the users list
449 * Feature #7899: Box for editing comments should open with the formatting toolbar
450 * Feature #7899: Box for editing comments should open with the formatting toolbar
450 * Feature #7921: issues by pulldown should have 'status' option
451 * Feature #7921: issues by pulldown should have 'status' option
451 * Feature #7996: Bulk edit and context menu for time entries
452 * Feature #7996: Bulk edit and context menu for time entries
452 * Feature #8006: Right click context menu for Related Issues
453 * Feature #8006: Right click context menu for Related Issues
453 * Feature #8209: I18n YAML files not parsable with psych yaml library
454 * Feature #8209: I18n YAML files not parsable with psych yaml library
454 * Feature #8345: Link to user profile from account page
455 * Feature #8345: Link to user profile from account page
455 * Feature #8365: Git: per project setting to report last commit or not in repository tree
456 * Feature #8365: Git: per project setting to report last commit or not in repository tree
456 * Patch #5148: metaKey not handled in issues selection
457 * Patch #5148: metaKey not handled in issues selection
457 * Patch #5629: Wrap text fields properly in PDF
458 * Patch #5629: Wrap text fields properly in PDF
458 * Patch #7418: Redmine Persian Translation
459 * Patch #7418: Redmine Persian Translation
459 * Patch #8295: Wrap title fields properly in PDF
460 * Patch #8295: Wrap title fields properly in PDF
460 * Patch #8310: fixes automatic line break problem with TCPDF
461 * Patch #8310: fixes automatic line break problem with TCPDF
461 * Patch #8312: Switch to TCPDF from FPDF for PDF export
462 * Patch #8312: Switch to TCPDF from FPDF for PDF export
462
463
463 == 2011-04-29 v1.1.3
464 == 2011-04-29 v1.1.3
464
465
465 * Defect #5773: Email reminders are sent to locked users
466 * Defect #5773: Email reminders are sent to locked users
466 * Defect #6590: Wrong file list link in email notification on new file upload
467 * Defect #6590: Wrong file list link in email notification on new file upload
467 * Defect #7589: Wiki page with backslash in title can not be found
468 * Defect #7589: Wiki page with backslash in title can not be found
468 * Defect #7785: Mailhandler keywords are not removed when updating issues
469 * Defect #7785: Mailhandler keywords are not removed when updating issues
469 * Defect #7794: Internal server error on formatting an issue as a PDF in Japanese
470 * Defect #7794: Internal server error on formatting an issue as a PDF in Japanese
470 * Defect #7838: Gantt- Issues does not show up in green when start and end date are the same
471 * Defect #7838: Gantt- Issues does not show up in green when start and end date are the same
471 * Defect #7846: Headers (h1, etc.) containing backslash followed by a digit are not displayed correctly
472 * Defect #7846: Headers (h1, etc.) containing backslash followed by a digit are not displayed correctly
472 * Defect #7875: CSV export separators in polish locale (pl.yml)
473 * Defect #7875: CSV export separators in polish locale (pl.yml)
473 * Defect #7890: Internal server error when referencing an issue without project in commit message
474 * Defect #7890: Internal server error when referencing an issue without project in commit message
474 * Defect #7904: Subprojects not properly deleted when deleting a parent project
475 * Defect #7904: Subprojects not properly deleted when deleting a parent project
475 * Defect #7939: Simultaneous Wiki Updates Cause Internal Error
476 * Defect #7939: Simultaneous Wiki Updates Cause Internal Error
476 * Defect #7951: Atom links broken on wiki index
477 * Defect #7951: Atom links broken on wiki index
477 * Defect #7954: IE 9 can not select issues, does not display context menu
478 * Defect #7954: IE 9 can not select issues, does not display context menu
478 * Defect #7985: Trying to do a bulk edit results in "Internal Error"
479 * Defect #7985: Trying to do a bulk edit results in "Internal Error"
479 * Defect #8003: Error raised by reposman.rb under Windows server 2003
480 * Defect #8003: Error raised by reposman.rb under Windows server 2003
480 * Defect #8012: Wrong selection of modules when adding new project after validation error
481 * Defect #8012: Wrong selection of modules when adding new project after validation error
481 * Defect #8038: Associated Revisions OL/LI items are not styled properly in issue view
482 * Defect #8038: Associated Revisions OL/LI items are not styled properly in issue view
482 * Defect #8067: CSV exporting in Italian locale
483 * Defect #8067: CSV exporting in Italian locale
483 * Defect #8235: bulk edit issues and copy issues error in es, gl and ca locales
484 * Defect #8235: bulk edit issues and copy issues error in es, gl and ca locales
484 * Defect #8244: selected modules are not activated when copying a project
485 * Defect #8244: selected modules are not activated when copying a project
485 * Patch #7278: Update Simplified Chinese translation to 1.1
486 * Patch #7278: Update Simplified Chinese translation to 1.1
486 * Patch #7390: Fixes in Czech localization
487 * Patch #7390: Fixes in Czech localization
487 * Patch #7963: Reminder email: Link for show all issues does not sort
488 * Patch #7963: Reminder email: Link for show all issues does not sort
488
489
489 == 2011-03-07 v1.1.2
490 == 2011-03-07 v1.1.2
490
491
491 * Defect #3132: Bulk editing menu non-functional in Opera browser
492 * Defect #3132: Bulk editing menu non-functional in Opera browser
492 * Defect #6090: Most binary files become corrupted when downloading from CVS repository browser when Redmine is running on a Windows server
493 * Defect #6090: Most binary files become corrupted when downloading from CVS repository browser when Redmine is running on a Windows server
493 * Defect #7280: Issues subjects wrap in Gantt
494 * Defect #7280: Issues subjects wrap in Gantt
494 * Defect #7288: Non ASCII filename downloaded from repo is broken on Internet Explorer.
495 * Defect #7288: Non ASCII filename downloaded from repo is broken on Internet Explorer.
495 * Defect #7317: Gantt tab gives internal error due to nil avatar icon
496 * Defect #7317: Gantt tab gives internal error due to nil avatar icon
496 * Defect #7497: Aptana Studio .project file added to version 1.1.1-stable
497 * Defect #7497: Aptana Studio .project file added to version 1.1.1-stable
497 * Defect #7611: Workflow summary shows X icon for workflow with exactly 1 status transition
498 * Defect #7611: Workflow summary shows X icon for workflow with exactly 1 status transition
498 * Defect #7625: Syntax highlighting unavailable from board new topic or topic edit preview
499 * Defect #7625: Syntax highlighting unavailable from board new topic or topic edit preview
499 * Defect #7630: Spent time in commits not recognized
500 * Defect #7630: Spent time in commits not recognized
500 * Defect #7656: MySQL SQL Syntax Error when filtering issues by Assignee's Group
501 * Defect #7656: MySQL SQL Syntax Error when filtering issues by Assignee's Group
501 * Defect #7718: Minutes logged in commit message are converted to hours
502 * Defect #7718: Minutes logged in commit message are converted to hours
502 * Defect #7763: Email notification are sent to watchers even if 'No events' setting is chosen
503 * Defect #7763: Email notification are sent to watchers even if 'No events' setting is chosen
503 * Feature #7608: Add "retro" gravatars
504 * Feature #7608: Add "retro" gravatars
504 * Patch #7598: Extensible MailHandler
505 * Patch #7598: Extensible MailHandler
505 * Patch #7795: Internal server error at journals#index with custom fields
506 * Patch #7795: Internal server error at journals#index with custom fields
506
507
507 == 2011-01-30 v1.1.1
508 == 2011-01-30 v1.1.1
508
509
509 * Defect #4899: Redmine fails to list files for darcs repository
510 * Defect #4899: Redmine fails to list files for darcs repository
510 * Defect #7245: Wiki fails to find pages with cyrillic characters using postgresql
511 * Defect #7245: Wiki fails to find pages with cyrillic characters using postgresql
511 * Defect #7256: redmine/public/.htaccess must be moved for non-fastcgi installs/upgrades
512 * Defect #7256: redmine/public/.htaccess must be moved for non-fastcgi installs/upgrades
512 * Defect #7258: Automatic spent time logging does not work properly with SQLite3
513 * Defect #7258: Automatic spent time logging does not work properly with SQLite3
513 * Defect #7259: Released 1.1.0 uses "devel" label inside admin information
514 * Defect #7259: Released 1.1.0 uses "devel" label inside admin information
514 * Defect #7265: "Loading..." icon does not disappear after add project member
515 * Defect #7265: "Loading..." icon does not disappear after add project member
515 * Defect #7266: Test test_due_date_distance_in_words fail due to undefined locale
516 * Defect #7266: Test test_due_date_distance_in_words fail due to undefined locale
516 * Defect #7274: CSV value separator in dutch locale
517 * Defect #7274: CSV value separator in dutch locale
517 * Defect #7277: Enabling gravatas causes usernames to overlap first name field in user list
518 * Defect #7277: Enabling gravatas causes usernames to overlap first name field in user list
518 * Defect #7294: "Notifiy for only project I select" is not available anymore in 1.1.0
519 * Defect #7294: "Notifiy for only project I select" is not available anymore in 1.1.0
519 * Defect #7307: HTTP 500 error on query for empty revision
520 * Defect #7307: HTTP 500 error on query for empty revision
520 * Defect #7313: Label not translated in french in Settings/Email Notification tab
521 * Defect #7313: Label not translated in french in Settings/Email Notification tab
521 * Defect #7329: <code class="javascript"> with long strings may hang server
522 * Defect #7329: <code class="javascript"> with long strings may hang server
522 * Defect #7337: My page french translation
523 * Defect #7337: My page french translation
523 * Defect #7348: French Translation of "Connection"
524 * Defect #7348: French Translation of "Connection"
524 * Defect #7385: Error when viewing an issue which was related to a deleted subtask
525 * Defect #7385: Error when viewing an issue which was related to a deleted subtask
525 * Defect #7386: NoMethodError on pdf export
526 * Defect #7386: NoMethodError on pdf export
526 * Defect #7415: Darcs adapter recognizes new files as modified files above Darcs 2.4
527 * Defect #7415: Darcs adapter recognizes new files as modified files above Darcs 2.4
527 * Defect #7421: no email sent with 'Notifiy for any event on the selected projects only'
528 * Defect #7421: no email sent with 'Notifiy for any event on the selected projects only'
528 * Feature #5344: Update to latest CodeRay 0.9.x
529 * Feature #5344: Update to latest CodeRay 0.9.x
529
530
530 == 2011-01-09 v1.1.0
531 == 2011-01-09 v1.1.0
531
532
532 * Defect #2038: Italics in wiki headers show-up wrong in the toc
533 * Defect #2038: Italics in wiki headers show-up wrong in the toc
533 * Defect #3449: Redmine Takes Too Long On Large Mercurial Repository
534 * Defect #3449: Redmine Takes Too Long On Large Mercurial Repository
534 * Defect #3567: Sorting for changesets might go wrong on Mercurial repos
535 * Defect #3567: Sorting for changesets might go wrong on Mercurial repos
535 * Defect #3707: {{toc}} doesn't work with {{include}}
536 * Defect #3707: {{toc}} doesn't work with {{include}}
536 * Defect #5096: Redmine hangs up while browsing Git repository
537 * Defect #5096: Redmine hangs up while browsing Git repository
537 * Defect #6000: Safe Attributes prevents plugin extension of Issue model...
538 * Defect #6000: Safe Attributes prevents plugin extension of Issue model...
538 * Defect #6064: Modules not assigned to projects created via API
539 * Defect #6064: Modules not assigned to projects created via API
539 * Defect #6110: MailHandler should allow updating Issue Priority and Custom fields
540 * Defect #6110: MailHandler should allow updating Issue Priority and Custom fields
540 * Defect #6136: JSON API holds less information than XML API
541 * Defect #6136: JSON API holds less information than XML API
541 * Defect #6345: xml used by rest API is invalid
542 * Defect #6345: xml used by rest API is invalid
542 * Defect #6348: Gantt chart PDF rendering errors
543 * Defect #6348: Gantt chart PDF rendering errors
543 * Defect #6403: Updating an issue with custom fields fails
544 * Defect #6403: Updating an issue with custom fields fails
544 * Defect #6467: "Member of role", "Member of group" filter not work correctly
545 * Defect #6467: "Member of role", "Member of group" filter not work correctly
545 * Defect #6473: New gantt broken after clearing issue filters
546 * Defect #6473: New gantt broken after clearing issue filters
546 * Defect #6541: Email notifications send to everybody
547 * Defect #6541: Email notifications send to everybody
547 * Defect #6549: Notification settings not migrated properly
548 * Defect #6549: Notification settings not migrated properly
548 * Defect #6591: Acronyms must have a minimum of three characters
549 * Defect #6591: Acronyms must have a minimum of three characters
549 * Defect #6674: Delete time log broken after changes to REST
550 * Defect #6674: Delete time log broken after changes to REST
550 * Defect #6681: Mercurial, Bazaar and Darcs auto close issue text should be commit id instead of revision number
551 * Defect #6681: Mercurial, Bazaar and Darcs auto close issue text should be commit id instead of revision number
551 * Defect #6724: Wiki uploads does not work anymore (SVN 4266)
552 * Defect #6724: Wiki uploads does not work anymore (SVN 4266)
552 * Defect #6746: Wiki links are broken on Activity page
553 * Defect #6746: Wiki links are broken on Activity page
553 * Defect #6747: Wiki diff does not work since r4265
554 * Defect #6747: Wiki diff does not work since r4265
554 * Defect #6763: New gantt charts: subject displayed twice on issues
555 * Defect #6763: New gantt charts: subject displayed twice on issues
555 * Defect #6826: Clicking "Add" twice creates duplicate member record
556 * Defect #6826: Clicking "Add" twice creates duplicate member record
556 * Defect #6844: Unchecking status filter on the issue list has no effect
557 * Defect #6844: Unchecking status filter on the issue list has no effect
557 * Defect #6895: Wrong Polish translation of "blocks"
558 * Defect #6895: Wrong Polish translation of "blocks"
558 * Defect #6943: Migration from boolean to varchar fails on PostgreSQL 8.1
559 * Defect #6943: Migration from boolean to varchar fails on PostgreSQL 8.1
559 * Defect #7064: Mercurial adapter does not recognize non alphabetic nor numeric in UTF-8 copied files
560 * Defect #7064: Mercurial adapter does not recognize non alphabetic nor numeric in UTF-8 copied files
560 * Defect #7128: New gantt chart does not render subtasks under parent task
561 * Defect #7128: New gantt chart does not render subtasks under parent task
561 * Defect #7135: paging mechanism returns the same last page forever
562 * Defect #7135: paging mechanism returns the same last page forever
562 * Defect #7188: Activity page not refreshed when changing language
563 * Defect #7188: Activity page not refreshed when changing language
563 * Defect #7195: Apply CLI-supplied defaults for incoming mail only to new issues not replies
564 * Defect #7195: Apply CLI-supplied defaults for incoming mail only to new issues not replies
564 * Defect #7197: Tracker reset to default when replying to an issue email
565 * Defect #7197: Tracker reset to default when replying to an issue email
565 * Defect #7213: Copy project does not copy all roles and permissions
566 * Defect #7213: Copy project does not copy all roles and permissions
566 * Defect #7225: Project settings: Trackers & Custom fields only relevant if module Issue tracking is active
567 * Defect #7225: Project settings: Trackers & Custom fields only relevant if module Issue tracking is active
567 * Feature #630: Allow non-unique names for projects
568 * Feature #630: Allow non-unique names for projects
568 * Feature #1738: Add a "Visible" flag to project/user custom fields
569 * Feature #1738: Add a "Visible" flag to project/user custom fields
569 * Feature #2803: Support for Javascript in Themes
570 * Feature #2803: Support for Javascript in Themes
570 * Feature #2852: Clean Incoming Email of quoted text "----- Reply above this line ------"
571 * Feature #2852: Clean Incoming Email of quoted text "----- Reply above this line ------"
571 * Feature #2995: Improve error message when trying to access an archived project
572 * Feature #2995: Improve error message when trying to access an archived project
572 * Feature #3170: Autocomplete issue relations on subject
573 * Feature #3170: Autocomplete issue relations on subject
573 * Feature #3503: Administrator Be Able To Modify Email settings Of Users
574 * Feature #3503: Administrator Be Able To Modify Email settings Of Users
574 * Feature #4155: Automatic spent time logging from commit messages
575 * Feature #4155: Automatic spent time logging from commit messages
575 * Feature #5136: Parent select on Wiki rename page
576 * Feature #5136: Parent select on Wiki rename page
576 * Feature #5338: Descendants (subtasks) should be available via REST API
577 * Feature #5338: Descendants (subtasks) should be available via REST API
577 * Feature #5494: Wiki TOC should display heading from level 4
578 * Feature #5494: Wiki TOC should display heading from level 4
578 * Feature #5594: Improve MailHandler's keyword handling
579 * Feature #5594: Improve MailHandler's keyword handling
579 * Feature #5622: Allow version to be set via incoming email
580 * Feature #5622: Allow version to be set via incoming email
580 * Feature #5712: Reload themes
581 * Feature #5712: Reload themes
581 * Feature #5869: Issue filters by Group and Role
582 * Feature #5869: Issue filters by Group and Role
582 * Feature #6092: Truncate Git revision labels in Activity page/feed and allow configurable length
583 * Feature #6092: Truncate Git revision labels in Activity page/feed and allow configurable length
583 * Feature #6112: Accept localized keywords when receiving emails
584 * Feature #6112: Accept localized keywords when receiving emails
584 * Feature #6140: REST issues response with issue count limit and offset
585 * Feature #6140: REST issues response with issue count limit and offset
585 * Feature #6260: REST API for Users
586 * Feature #6260: REST API for Users
586 * Feature #6276: Gantt Chart rewrite
587 * Feature #6276: Gantt Chart rewrite
587 * Feature #6446: Remove length limits on project identifier and name
588 * Feature #6446: Remove length limits on project identifier and name
588 * Feature #6628: Improvements in truncate email
589 * Feature #6628: Improvements in truncate email
589 * Feature #6779: Project JSON API
590 * Feature #6779: Project JSON API
590 * Feature #6823: REST API for time tracker.
591 * Feature #6823: REST API for time tracker.
591 * Feature #7072: REST API for news
592 * Feature #7072: REST API for news
592 * Feature #7111: Expose more detail on journal entries
593 * Feature #7111: Expose more detail on journal entries
593 * Feature #7141: REST API: get information about current user
594 * Feature #7141: REST API: get information about current user
594 * Patch #4807: Allow to set the done_ratio field with the incoming mail system
595 * Patch #4807: Allow to set the done_ratio field with the incoming mail system
595 * Patch #5441: Initialize TimeEntry attributes with params[:time_entry]
596 * Patch #5441: Initialize TimeEntry attributes with params[:time_entry]
596 * Patch #6762: Use GET instead of POST to retrieve context_menu
597 * Patch #6762: Use GET instead of POST to retrieve context_menu
597 * Patch #7160: French translation ofr "not_a_date" is missing
598 * Patch #7160: French translation ofr "not_a_date" is missing
598 * Patch #7212: Missing remove_index in AddUniqueIndexOnMembers down migration
599 * Patch #7212: Missing remove_index in AddUniqueIndexOnMembers down migration
599
600
600
601
601 == 2010-12-23 v1.0.5
602 == 2010-12-23 v1.0.5
602
603
603 * #6656: Mercurial adapter loses seconds of commit times
604 * #6656: Mercurial adapter loses seconds of commit times
604 * #6996: Migration trac(sqlite3) -> redmine(postgresql) doesnt escape ' char
605 * #6996: Migration trac(sqlite3) -> redmine(postgresql) doesnt escape ' char
605 * #7013: v-1.0.4 trunk - see {{count}} in page display rather than value
606 * #7013: v-1.0.4 trunk - see {{count}} in page display rather than value
606 * #7016: redundant 'field_start_date' in ja.yml
607 * #7016: redundant 'field_start_date' in ja.yml
607 * #7018: 'undefined method `reschedule_after' for nil:NilClass' on new issues
608 * #7018: 'undefined method `reschedule_after' for nil:NilClass' on new issues
608 * #7024: E-mail notifications about Wiki changes.
609 * #7024: E-mail notifications about Wiki changes.
609 * #7033: 'class' attribute of <pre> tag shouldn't be truncate
610 * #7033: 'class' attribute of <pre> tag shouldn't be truncate
610 * #7035: CSV value separator in russian
611 * #7035: CSV value separator in russian
611 * #7122: Issue-description Quote-button missing
612 * #7122: Issue-description Quote-button missing
612 * #7144: custom queries making use of deleted custom fields cause a 500 error
613 * #7144: custom queries making use of deleted custom fields cause a 500 error
613 * #7162: Multiply defined label in french translation
614 * #7162: Multiply defined label in french translation
614
615
615 == 2010-11-28 v1.0.4
616 == 2010-11-28 v1.0.4
616
617
617 * #5324: Git not working if color.ui is enabled
618 * #5324: Git not working if color.ui is enabled
618 * #6447: Issues API doesn't allow full key auth for all actions
619 * #6447: Issues API doesn't allow full key auth for all actions
619 * #6457: Edit User group problem
620 * #6457: Edit User group problem
620 * #6575: start date being filled with current date even when blank value is submitted
621 * #6575: start date being filled with current date even when blank value is submitted
621 * #6740: Max attachment size, incorrect usage of 'KB'
622 * #6740: Max attachment size, incorrect usage of 'KB'
622 * #6760: Select box sorted by ID instead of name in Issue Category
623 * #6760: Select box sorted by ID instead of name in Issue Category
623 * #6766: Changing target version name can cause an internal error
624 * #6766: Changing target version name can cause an internal error
624 * #6784: Redmine not working with i18n gem 0.4.2
625 * #6784: Redmine not working with i18n gem 0.4.2
625 * #6839: Hardcoded absolute links in my/page_layout
626 * #6839: Hardcoded absolute links in my/page_layout
626 * #6841: Projects API doesn't allow full key auth for all actions
627 * #6841: Projects API doesn't allow full key auth for all actions
627 * #6860: svn: Write error: Broken pipe when browsing repository
628 * #6860: svn: Write error: Broken pipe when browsing repository
628 * #6874: API should return XML description when creating a project
629 * #6874: API should return XML description when creating a project
629 * #6932: submitting wrong parent task input creates a 500 error
630 * #6932: submitting wrong parent task input creates a 500 error
630 * #6966: Records of Forums are remained, deleting project
631 * #6966: Records of Forums are remained, deleting project
631 * #6990: Layout problem in workflow overview
632 * #6990: Layout problem in workflow overview
632 * #5117: mercurial_adapter should ensure the right LANG environment variable
633 * #5117: mercurial_adapter should ensure the right LANG environment variable
633 * #6782: Traditional Chinese language file (to r4352)
634 * #6782: Traditional Chinese language file (to r4352)
634 * #6783: Swedish Translation for r4352
635 * #6783: Swedish Translation for r4352
635 * #6804: Bugfix: spelling fixes
636 * #6804: Bugfix: spelling fixes
636 * #6814: Japanese Translation for r4362
637 * #6814: Japanese Translation for r4362
637 * #6948: Bulgarian translation
638 * #6948: Bulgarian translation
638 * #6973: Update es.yml
639 * #6973: Update es.yml
639
640
640 == 2010-10-31 v1.0.3
641 == 2010-10-31 v1.0.3
641
642
642 * #4065: Redmine.pm doesn't work with LDAPS and a non-standard port
643 * #4065: Redmine.pm doesn't work with LDAPS and a non-standard port
643 * #4416: Link from version details page to edit the wiki.
644 * #4416: Link from version details page to edit the wiki.
644 * #5484: Add new issue as subtask to an existing ticket
645 * #5484: Add new issue as subtask to an existing ticket
645 * #5948: Update help/wiki_syntax_detailed.html with more link options
646 * #5948: Update help/wiki_syntax_detailed.html with more link options
646 * #6494: Typo in pt_BR translation for 1.0.2
647 * #6494: Typo in pt_BR translation for 1.0.2
647 * #6508: Japanese translation update
648 * #6508: Japanese translation update
648 * #6509: Localization pt-PT (new strings)
649 * #6509: Localization pt-PT (new strings)
649 * #6511: Rake task to test email
650 * #6511: Rake task to test email
650 * #6525: Traditional Chinese language file (to r4225)
651 * #6525: Traditional Chinese language file (to r4225)
651 * #6536: Patch for swedish translation
652 * #6536: Patch for swedish translation
652 * #6548: Rake tasks to add/remove i18n strings
653 * #6548: Rake tasks to add/remove i18n strings
653 * #6569: Updated Hebrew translation
654 * #6569: Updated Hebrew translation
654 * #6570: Japanese Translation for r4231
655 * #6570: Japanese Translation for r4231
655 * #6596: pt-BR translation updates
656 * #6596: pt-BR translation updates
656 * #6629: Change field-name of issues start date
657 * #6629: Change field-name of issues start date
657 * #6669: Bulgarian translation
658 * #6669: Bulgarian translation
658 * #6731: Macedonian translation fix
659 * #6731: Macedonian translation fix
659 * #6732: Japanese Translation for r4287
660 * #6732: Japanese Translation for r4287
660 * #6735: Add user-agent to reposman
661 * #6735: Add user-agent to reposman
661 * #6736: Traditional Chinese language file (to r4288)
662 * #6736: Traditional Chinese language file (to r4288)
662 * #6739: Swedish Translation for r4288
663 * #6739: Swedish Translation for r4288
663 * #6765: Traditional Chinese language file (to r4302)
664 * #6765: Traditional Chinese language file (to r4302)
664 * Fixed #5324: Git not working if color.ui is enabled
665 * Fixed #5324: Git not working if color.ui is enabled
665 * Fixed #5652: Bad URL parsing in the wiki when it ends with right-angle-bracket(greater-than mark).
666 * Fixed #5652: Bad URL parsing in the wiki when it ends with right-angle-bracket(greater-than mark).
666 * Fixed #5803: Precedes/Follows Relationships Broke
667 * Fixed #5803: Precedes/Follows Relationships Broke
667 * Fixed #6435: Links to wikipages bound to versions do not respect version-sharing in Settings -> Versions
668 * Fixed #6435: Links to wikipages bound to versions do not respect version-sharing in Settings -> Versions
668 * Fixed #6438: Autologin cannot be disabled again once it's enabled
669 * Fixed #6438: Autologin cannot be disabled again once it's enabled
669 * Fixed #6513: "Move" and "Copy" are not displayed when deployed in subdirectory
670 * Fixed #6513: "Move" and "Copy" are not displayed when deployed in subdirectory
670 * Fixed #6521: Tooltip/label for user "search-refinment" field on group/project member list
671 * Fixed #6521: Tooltip/label for user "search-refinment" field on group/project member list
671 * Fixed #6563: i18n-issues on calendar view
672 * Fixed #6563: i18n-issues on calendar view
672 * Fixed #6598: Wrong caption for button_create_and_continue in German language file
673 * Fixed #6598: Wrong caption for button_create_and_continue in German language file
673 * Fixed #6607: Unclear caption for german button_update
674 * Fixed #6607: Unclear caption for german button_update
674 * Fixed #6612: SortHelper missing from CalendarsController
675 * Fixed #6612: SortHelper missing from CalendarsController
675 * Fixed #6740: Max attachment size, incorrect usage of 'KB'
676 * Fixed #6740: Max attachment size, incorrect usage of 'KB'
676 * Fixed #6750: ActionView::TemplateError (undefined method `empty?' for nil:NilClass) on line #12 of app/views/context_menus/issues.html.erb:
677 * Fixed #6750: ActionView::TemplateError (undefined method `empty?' for nil:NilClass) on line #12 of app/views/context_menus/issues.html.erb:
677
678
678 == 2010-09-26 v1.0.2
679 == 2010-09-26 v1.0.2
679
680
680 * #2285: issue-refinement: pressing enter should result to an "apply"
681 * #2285: issue-refinement: pressing enter should result to an "apply"
681 * #3411: Allow mass status update trough context menu
682 * #3411: Allow mass status update trough context menu
682 * #5929: https-enabled gravatars when called over https
683 * #5929: https-enabled gravatars when called over https
683 * #6189: Japanese Translation for r4011
684 * #6189: Japanese Translation for r4011
684 * #6197: Traditional Chinese language file (to r4036)
685 * #6197: Traditional Chinese language file (to r4036)
685 * #6198: Updated german translation
686 * #6198: Updated german translation
686 * #6208: Macedonian translation
687 * #6208: Macedonian translation
687 * #6210: Swedish Translation for r4039
688 * #6210: Swedish Translation for r4039
688 * #6248: nl translation update for r4050
689 * #6248: nl translation update for r4050
689 * #6263: Catalan translation update
690 * #6263: Catalan translation update
690 * #6275: After submitting a related issue, the Issue field should be re-focused
691 * #6275: After submitting a related issue, the Issue field should be re-focused
691 * #6289: Checkboxes in issues list shouldn't be displayed when printing
692 * #6289: Checkboxes in issues list shouldn't be displayed when printing
692 * #6290: Make journals theming easier
693 * #6290: Make journals theming easier
693 * #6291: User#allowed_to? is not tested
694 * #6291: User#allowed_to? is not tested
694 * #6306: Traditional Chinese language file (to r4061)
695 * #6306: Traditional Chinese language file (to r4061)
695 * #6307: Korean translation update for 4066(4061)
696 * #6307: Korean translation update for 4066(4061)
696 * #6316: pt_BR update
697 * #6316: pt_BR update
697 * #6339: SERBIAN Updated
698 * #6339: SERBIAN Updated
698 * #6358: Updated Polish translation
699 * #6358: Updated Polish translation
699 * #6363: Japanese Translation for r4080
700 * #6363: Japanese Translation for r4080
700 * #6365: Traditional Chinese language file (to r4081)
701 * #6365: Traditional Chinese language file (to r4081)
701 * #6382: Issue PDF export variable usage
702 * #6382: Issue PDF export variable usage
702 * #6428: Interim solution for i18n >= 0.4
703 * #6428: Interim solution for i18n >= 0.4
703 * #6441: Japanese Translation for r4162
704 * #6441: Japanese Translation for r4162
704 * #6451: Traditional Chinese language file (to r4167)
705 * #6451: Traditional Chinese language file (to r4167)
705 * #6465: Japanese Translation for r4171
706 * #6465: Japanese Translation for r4171
706 * #6466: Traditional Chinese language file (to r4171)
707 * #6466: Traditional Chinese language file (to r4171)
707 * #6490: pt-BR translation for 1.0.2
708 * #6490: pt-BR translation for 1.0.2
708 * Fixed #3935: stylesheet_link_tag with plugin doesn't take into account relative_url_root
709 * Fixed #3935: stylesheet_link_tag with plugin doesn't take into account relative_url_root
709 * Fixed #4998: Global issue list's context menu has enabled options for parent menus but there are no valid selections
710 * Fixed #4998: Global issue list's context menu has enabled options for parent menus but there are no valid selections
710 * Fixed #5170: Done ratio can not revert to 0% if status is used for done ratio
711 * Fixed #5170: Done ratio can not revert to 0% if status is used for done ratio
711 * Fixed #5608: broken with i18n 0.4.0
712 * Fixed #5608: broken with i18n 0.4.0
712 * Fixed #6054: Error 500 on filenames with whitespace in git reposities
713 * Fixed #6054: Error 500 on filenames with whitespace in git reposities
713 * Fixed #6135: Default logger configuration grows without bound.
714 * Fixed #6135: Default logger configuration grows without bound.
714 * Fixed #6191: Deletion of a main task deletes all subtasks
715 * Fixed #6191: Deletion of a main task deletes all subtasks
715 * Fixed #6195: Missing move issues between projects
716 * Fixed #6195: Missing move issues between projects
716 * Fixed #6242: can't switch between inline and side-by-side diff
717 * Fixed #6242: can't switch between inline and side-by-side diff
717 * Fixed #6249: Create and continue returns 404
718 * Fixed #6249: Create and continue returns 404
718 * Fixed #6267: changing the authentication mode from ldap to internal with setting the password
719 * Fixed #6267: changing the authentication mode from ldap to internal with setting the password
719 * Fixed #6270: diff coderay malformed in the "news" page
720 * Fixed #6270: diff coderay malformed in the "news" page
720 * Fixed #6278: missing "cant_link_an_issue_with_a_descendant"from locale files
721 * Fixed #6278: missing "cant_link_an_issue_with_a_descendant"from locale files
721 * Fixed #6333: Create and continue results in a 404 Error
722 * Fixed #6333: Create and continue results in a 404 Error
722 * Fixed #6346: Age column on repository view is skewed for git, probably CVS too
723 * Fixed #6346: Age column on repository view is skewed for git, probably CVS too
723 * Fixed #6351: Context menu on roadmap broken
724 * Fixed #6351: Context menu on roadmap broken
724 * Fixed #6388: New Subproject leads to a 404
725 * Fixed #6388: New Subproject leads to a 404
725 * Fixed #6392: Updated/Created links to activity broken
726 * Fixed #6392: Updated/Created links to activity broken
726 * Fixed #6413: Error in SQL
727 * Fixed #6413: Error in SQL
727 * Fixed #6443: Redirect to project settings after Copying a Project
728 * Fixed #6443: Redirect to project settings after Copying a Project
728 * Fixed #6448: Saving a wiki page with no content has a translation missing
729 * Fixed #6448: Saving a wiki page with no content has a translation missing
729 * Fixed #6452: Unhandled exception on creating File
730 * Fixed #6452: Unhandled exception on creating File
730 * Fixed #6471: Typo in label_report in Czech translation
731 * Fixed #6471: Typo in label_report in Czech translation
731 * Fixed #6479: Changing tracker type will lose watchers
732 * Fixed #6479: Changing tracker type will lose watchers
732 * Fixed #6499: Files with leading or trailing whitespace are not shown in git.
733 * Fixed #6499: Files with leading or trailing whitespace are not shown in git.
733
734
734 == 2010-08-22 v1.0.1
735 == 2010-08-22 v1.0.1
735
736
736 * #819: Add a body ID and class to all pages
737 * #819: Add a body ID and class to all pages
737 * #871: Commit new CSS styles!
738 * #871: Commit new CSS styles!
738 * #3301: Add favicon to base layout
739 * #3301: Add favicon to base layout
739 * #4656: On Issue#show page, clicking on Ò€œAdd related issueҀ� should focus on the input
740 * #4656: On Issue#show page, clicking on Ò€œAdd related issueҀ� should focus on the input
740 * #4896: Project identifier should be a limited field
741 * #4896: Project identifier should be a limited field
741 * #5084: Filter all isssues by projects
742 * #5084: Filter all isssues by projects
742 * #5477: Replace Test::Unit::TestCase with ActiveSupport::TestCase
743 * #5477: Replace Test::Unit::TestCase with ActiveSupport::TestCase
743 * #5591: 'calendar' action is used with 'issue' controller in issue/sidebar
744 * #5591: 'calendar' action is used with 'issue' controller in issue/sidebar
744 * #5735: Traditional Chinese language file (to r3810)
745 * #5735: Traditional Chinese language file (to r3810)
745 * #5740: Swedish Translation for r3810
746 * #5740: Swedish Translation for r3810
746 * #5785: pt-BR translation update
747 * #5785: pt-BR translation update
747 * #5898: Projects should be displayed as links in users/memberships
748 * #5898: Projects should be displayed as links in users/memberships
748 * #5910: Chinese translation to redmine-1.0.0
749 * #5910: Chinese translation to redmine-1.0.0
749 * #5912: Translation update for french locale
750 * #5912: Translation update for french locale
750 * #5962: Hungarian translation update to r3892
751 * #5962: Hungarian translation update to r3892
751 * #5971: Remove falsly applied chrome on revision links
752 * #5971: Remove falsly applied chrome on revision links
752 * #5972: Updated Hebrew translation for 1.0.0
753 * #5972: Updated Hebrew translation for 1.0.0
753 * #5982: Updated german translation
754 * #5982: Updated german translation
754 * #6008: Move admin_menu to Redmine::MenuManager
755 * #6008: Move admin_menu to Redmine::MenuManager
755 * #6012: RTL layout
756 * #6012: RTL layout
756 * #6021: Spanish translation 1.0.0-RC
757 * #6021: Spanish translation 1.0.0-RC
757 * #6025: nl translation updated for r3905
758 * #6025: nl translation updated for r3905
758 * #6030: Japanese Translation for r3907
759 * #6030: Japanese Translation for r3907
759 * #6074: sr-CY.yml contains DOS-type newlines (\r\n)
760 * #6074: sr-CY.yml contains DOS-type newlines (\r\n)
760 * #6087: SERBIAN translation updated
761 * #6087: SERBIAN translation updated
761 * #6093: Updated italian translation
762 * #6093: Updated italian translation
762 * #6142: Swedish Translation for r3940
763 * #6142: Swedish Translation for r3940
763 * #6153: Move view_calendar and view_gantt to own modules
764 * #6153: Move view_calendar and view_gantt to own modules
764 * #6169: Add issue status to issue tooltip
765 * #6169: Add issue status to issue tooltip
765 * Fixed #3834: Add a warning when not choosing a member role
766 * Fixed #3834: Add a warning when not choosing a member role
766 * Fixed #3922: Bad english arround "Assigned to" text in journal entries
767 * Fixed #3922: Bad english arround "Assigned to" text in journal entries
767 * Fixed #5158: Simplified Chinese language file zh.yml updated to r3608
768 * Fixed #5158: Simplified Chinese language file zh.yml updated to r3608
768 * Fixed #5162: translation missing: zh-TW, field_time_entrie
769 * Fixed #5162: translation missing: zh-TW, field_time_entrie
769 * Fixed #5297: openid not validated correctly
770 * Fixed #5297: openid not validated correctly
770 * Fixed #5628: Wrong commit range in git log command
771 * Fixed #5628: Wrong commit range in git log command
771 * Fixed #5760: Assigned_to and author filters in "Projects>View all issues" should be based on user's project visibility
772 * Fixed #5760: Assigned_to and author filters in "Projects>View all issues" should be based on user's project visibility
772 * Fixed #5771: Problem when importing git repository
773 * Fixed #5771: Problem when importing git repository
773 * Fixed #5775: ldap authentication in admin menu should have an icon
774 * Fixed #5775: ldap authentication in admin menu should have an icon
774 * Fixed #5811: deleting statuses doesnt delete workflow entries
775 * Fixed #5811: deleting statuses doesnt delete workflow entries
775 * Fixed #5834: Emails with trailing spaces incorrectly detected as invalid
776 * Fixed #5834: Emails with trailing spaces incorrectly detected as invalid
776 * Fixed #5846: ChangeChangesPathLengthLimit does not remove default for MySQL
777 * Fixed #5846: ChangeChangesPathLengthLimit does not remove default for MySQL
777 * Fixed #5861: Vertical scrollbar always visible in Wiki "code" blocks in Chrome.
778 * Fixed #5861: Vertical scrollbar always visible in Wiki "code" blocks in Chrome.
778 * Fixed #5883: correct label_project_latest Chinese translation
779 * Fixed #5883: correct label_project_latest Chinese translation
779 * Fixed #5892: Changing status from contextual menu opens the ticket instead
780 * Fixed #5892: Changing status from contextual menu opens the ticket instead
780 * Fixed #5904: Global gantt PDF and PNG should display project names
781 * Fixed #5904: Global gantt PDF and PNG should display project names
781 * Fixed #5925: parent task's priority edit should be disabled through shortcut menu in issues list page
782 * Fixed #5925: parent task's priority edit should be disabled through shortcut menu in issues list page
782 * Fixed #5935: Add Another file to ticket doesn't work in IE Internet Explorer
783 * Fixed #5935: Add Another file to ticket doesn't work in IE Internet Explorer
783 * Fixed #5937: Harmonize french locale "zero" translation with other locales
784 * Fixed #5937: Harmonize french locale "zero" translation with other locales
784 * Fixed #5945: Forum message permalinks don't take pagination into account
785 * Fixed #5945: Forum message permalinks don't take pagination into account
785 * Fixed #5978: Debug code still remains
786 * Fixed #5978: Debug code still remains
786 * Fixed #6009: When using "English (British)", the repository browser (svn) shows files over 1000 bytes as floating point (2.334355)
787 * Fixed #6009: When using "English (British)", the repository browser (svn) shows files over 1000 bytes as floating point (2.334355)
787 * Fixed #6045: Repository file Diff view sometimes shows more than selected file
788 * Fixed #6045: Repository file Diff view sometimes shows more than selected file
788 * Fixed #6079: German Translation error in TimeEntryActivity
789 * Fixed #6079: German Translation error in TimeEntryActivity
789 * Fixed #6100: User's profile should display all visible projects
790 * Fixed #6100: User's profile should display all visible projects
790 * Fixed #6132: Allow Key based authentication in the Boards atom feed
791 * Fixed #6132: Allow Key based authentication in the Boards atom feed
791 * Fixed #6163: Bad CSS class for calendar project menu_item
792 * Fixed #6163: Bad CSS class for calendar project menu_item
792 * Fixed #6172: Browsing to a missing user's page shows the admin sidebar
793 * Fixed #6172: Browsing to a missing user's page shows the admin sidebar
793
794
794 == 2010-07-18 v1.0.0 (Release candidate)
795 == 2010-07-18 v1.0.0 (Release candidate)
795
796
796 * #443: Adds context menu to the roadmap issue lists
797 * #443: Adds context menu to the roadmap issue lists
797 * #443: Subtasking
798 * #443: Subtasking
798 * #741: Description preview while editing an issue
799 * #741: Description preview while editing an issue
799 * #1131: Add support for alternate (non-LDAP) authentication
800 * #1131: Add support for alternate (non-LDAP) authentication
800 * #1214: REST API for Issues
801 * #1214: REST API for Issues
801 * #1223: File upload on wiki edit form
802 * #1223: File upload on wiki edit form
802 * #1755: add "blocked by" as a related issues option
803 * #1755: add "blocked by" as a related issues option
803 * #2420: Fetching emails from an POP server
804 * #2420: Fetching emails from an POP server
804 * #2482: Named scopes in Issue and ActsAsWatchable plus some view refactoring (logic extraction).
805 * #2482: Named scopes in Issue and ActsAsWatchable plus some view refactoring (logic extraction).
805 * #2924: Make the right click menu more discoverable using a cursor property
806 * #2924: Make the right click menu more discoverable using a cursor property
806 * #2985: Make syntax highlighting pluggable
807 * #2985: Make syntax highlighting pluggable
807 * #3201: Workflow Check/Uncheck All Rows/Columns
808 * #3201: Workflow Check/Uncheck All Rows/Columns
808 * #3359: Update CodeRay 0.9
809 * #3359: Update CodeRay 0.9
809 * #3706: Allow assigned_to field configuration on Issue creation by email
810 * #3706: Allow assigned_to field configuration on Issue creation by email
810 * #3936: configurable list of models to include in search
811 * #3936: configurable list of models to include in search
811 * #4480: Create a link to the user profile from the administration interface
812 * #4480: Create a link to the user profile from the administration interface
812 * #4482: Cache textile rendering
813 * #4482: Cache textile rendering
813 * #4572: Make it harder to ruin your database
814 * #4572: Make it harder to ruin your database
814 * #4573: Move github gems to Gemcutter
815 * #4573: Move github gems to Gemcutter
815 * #4664: Add pagination to forum threads
816 * #4664: Add pagination to forum threads
816 * #4732: Make login case-insensitive also for PostgreSQL
817 * #4732: Make login case-insensitive also for PostgreSQL
817 * #4812: Create links to other projects
818 * #4812: Create links to other projects
818 * #4819: Replace images with smushed ones for speed
819 * #4819: Replace images with smushed ones for speed
819 * #4945: Allow custom fields attached to project to be searchable
820 * #4945: Allow custom fields attached to project to be searchable
820 * #5121: Fix issues list layout overflow
821 * #5121: Fix issues list layout overflow
821 * #5169: Issue list view hook request
822 * #5169: Issue list view hook request
822 * #5208: Aibility to edit wiki sidebar
823 * #5208: Aibility to edit wiki sidebar
823 * #5281: Remove empty ul tags in the issue history
824 * #5281: Remove empty ul tags in the issue history
824 * #5291: Updated basque translations
825 * #5291: Updated basque translations
825 * #5328: Automatically add "Repository" menu_item after repository creation
826 * #5328: Automatically add "Repository" menu_item after repository creation
826 * #5415: Fewer SQL statements generated for watcher_recipients
827 * #5415: Fewer SQL statements generated for watcher_recipients
827 * #5416: Exclude "fields_for" from overridden methods in TabularFormBuilder
828 * #5416: Exclude "fields_for" from overridden methods in TabularFormBuilder
828 * #5573: Allow issue assignment in email
829 * #5573: Allow issue assignment in email
829 * #5595: Allow start date and due dates to be set via incoming email
830 * #5595: Allow start date and due dates to be set via incoming email
830 * #5752: The projects view (/projects) renders ul's wrong
831 * #5752: The projects view (/projects) renders ul's wrong
831 * #5781: Allow to use more macros on the welcome page and project list
832 * #5781: Allow to use more macros on the welcome page and project list
832 * Fixed #1288: Unable to past escaped wiki syntax in an issue description
833 * Fixed #1288: Unable to past escaped wiki syntax in an issue description
833 * Fixed #1334: Wiki formatting character *_ and _*
834 * Fixed #1334: Wiki formatting character *_ and _*
834 * Fixed #1416: Inline code with less-then/greater-than produces @lt; and @gt; respectively
835 * Fixed #1416: Inline code with less-then/greater-than produces @lt; and @gt; respectively
835 * Fixed #2473: Login and mail should not be case sensitive
836 * Fixed #2473: Login and mail should not be case sensitive
836 * Fixed #2990: Ruby 1.9 - wrong number of arguments (1 for 0) on rake db:migrate
837 * Fixed #2990: Ruby 1.9 - wrong number of arguments (1 for 0) on rake db:migrate
837 * Fixed #3089: Text formatting sometimes breaks when combined
838 * Fixed #3089: Text formatting sometimes breaks when combined
838 * Fixed #3690: Status change info duplicates on the issue screen
839 * Fixed #3690: Status change info duplicates on the issue screen
839 * Fixed #3691: Redmine allows two files with the same file name to be uploaded to the same issue
840 * Fixed #3691: Redmine allows two files with the same file name to be uploaded to the same issue
840 * Fixed #3764: ApplicationHelperTest fails with JRuby
841 * Fixed #3764: ApplicationHelperTest fails with JRuby
841 * Fixed #4265: Unclosed code tags in issue descriptions affects main UI
842 * Fixed #4265: Unclosed code tags in issue descriptions affects main UI
842 * Fixed #4745: Bug in index.xml.builder (issues)
843 * Fixed #4745: Bug in index.xml.builder (issues)
843 * Fixed #4852: changing user/roles of project member not possible without javascript
844 * Fixed #4852: changing user/roles of project member not possible without javascript
844 * Fixed #4857: Week number calculation in date picker is wrong if a week starts with Sunday
845 * Fixed #4857: Week number calculation in date picker is wrong if a week starts with Sunday
845 * Fixed #4883: Bottom "contextual" placement in issue with associated changeset
846 * Fixed #4883: Bottom "contextual" placement in issue with associated changeset
846 * Fixed #4918: Revisions r3453 and r3454 broke On-the-fly user creation with LDAP
847 * Fixed #4918: Revisions r3453 and r3454 broke On-the-fly user creation with LDAP
847 * Fixed #4935: Navigation to the Master Timesheet page (time_entries)
848 * Fixed #4935: Navigation to the Master Timesheet page (time_entries)
848 * Fixed #5043: Flash messages are not displayed after the project settings[module/activity] saved
849 * Fixed #5043: Flash messages are not displayed after the project settings[module/activity] saved
849 * Fixed #5081: Broken links on public/help/wiki_syntax_detailed.html
850 * Fixed #5081: Broken links on public/help/wiki_syntax_detailed.html
850 * Fixed #5104: Description of document not wikified on documents index
851 * Fixed #5104: Description of document not wikified on documents index
851 * Fixed #5108: Issue linking fails inside of []s
852 * Fixed #5108: Issue linking fails inside of []s
852 * Fixed #5199: diff code coloring using coderay
853 * Fixed #5199: diff code coloring using coderay
853 * Fixed #5233: Add a hook to the issue report (Summary) view
854 * Fixed #5233: Add a hook to the issue report (Summary) view
854 * Fixed #5265: timetracking: subtasks time is added to the main task
855 * Fixed #5265: timetracking: subtasks time is added to the main task
855 * Fixed #5343: acts_as_event Doesn't Accept Outside URLs
856 * Fixed #5343: acts_as_event Doesn't Accept Outside URLs
856 * Fixed #5440: UI Inconsistency : Administration > Enumerations table row headers should be enclosed in <thead>
857 * Fixed #5440: UI Inconsistency : Administration > Enumerations table row headers should be enclosed in <thead>
857 * Fixed #5463: 0.9.4 INSTALL and/or UPGRADE, missing session_store.rb
858 * Fixed #5463: 0.9.4 INSTALL and/or UPGRADE, missing session_store.rb
858 * Fixed #5524: Update_parent_attributes doesn't work for the old parent issue when reparenting
859 * Fixed #5524: Update_parent_attributes doesn't work for the old parent issue when reparenting
859 * Fixed #5548: SVN Repository: Can not list content of a folder which includes square brackets.
860 * Fixed #5548: SVN Repository: Can not list content of a folder which includes square brackets.
860 * Fixed #5589: "with subproject" malfunction
861 * Fixed #5589: "with subproject" malfunction
861 * Fixed #5676: Search for Numeric Value
862 * Fixed #5676: Search for Numeric Value
862 * Fixed #5696: Redmine + PostgreSQL 8.4.4 fails on _dir_list_content.rhtml
863 * Fixed #5696: Redmine + PostgreSQL 8.4.4 fails on _dir_list_content.rhtml
863 * Fixed #5698: redmine:email:receive_imap fails silently for mails with subject longer than 255 characters
864 * Fixed #5698: redmine:email:receive_imap fails silently for mails with subject longer than 255 characters
864 * Fixed #5700: TimelogController#destroy assumes success
865 * Fixed #5700: TimelogController#destroy assumes success
865 * Fixed #5751: developer role is mispelled
866 * Fixed #5751: developer role is mispelled
866 * Fixed #5769: Popup Calendar doesn't Advance in Chrome
867 * Fixed #5769: Popup Calendar doesn't Advance in Chrome
867 * Fixed #5771: Problem when importing git repository
868 * Fixed #5771: Problem when importing git repository
868 * Fixed #5823: Error in comments in plugin.rb
869 * Fixed #5823: Error in comments in plugin.rb
869
870
870
871
871 == 2010-07-07 v0.9.6
872 == 2010-07-07 v0.9.6
872
873
873 * Fixed: Redmine.pm access by unauthorized users
874 * Fixed: Redmine.pm access by unauthorized users
874
875
875 == 2010-06-24 v0.9.5
876 == 2010-06-24 v0.9.5
876
877
877 * Linkify folder names on revision view
878 * Linkify folder names on revision view
878 * "fiters" and "options" should be hidden in print view via css
879 * "fiters" and "options" should be hidden in print view via css
879 * Fixed: NoMethodError when no issue params are submitted
880 * Fixed: NoMethodError when no issue params are submitted
880 * Fixed: projects.atom with required authentication
881 * Fixed: projects.atom with required authentication
881 * Fixed: External links not correctly displayed in Wiki TOC
882 * Fixed: External links not correctly displayed in Wiki TOC
882 * Fixed: Member role forms in project settings are not hidden after member added
883 * Fixed: Member role forms in project settings are not hidden after member added
883 * Fixed: pre can't be inside p
884 * Fixed: pre can't be inside p
884 * Fixed: session cookie path does not respect RAILS_RELATIVE_URL_ROOT
885 * Fixed: session cookie path does not respect RAILS_RELATIVE_URL_ROOT
885 * Fixed: mail handler fails when the from address is empty
886 * Fixed: mail handler fails when the from address is empty
886
887
887
888
888 == 2010-05-01 v0.9.4
889 == 2010-05-01 v0.9.4
889
890
890 * Filters collapsed by default on issues index page for a saved query
891 * Filters collapsed by default on issues index page for a saved query
891 * Fixed: When categories list is too big the popup menu doesn't adjust (ex. in the issue list)
892 * Fixed: When categories list is too big the popup menu doesn't adjust (ex. in the issue list)
892 * Fixed: remove "main-menu" div when the menu is empty
893 * Fixed: remove "main-menu" div when the menu is empty
893 * Fixed: Code syntax highlighting not working in Document page
894 * Fixed: Code syntax highlighting not working in Document page
894 * Fixed: Git blame/annotate fails on moved files
895 * Fixed: Git blame/annotate fails on moved files
895 * Fixed: Failing test in test_show_atom
896 * Fixed: Failing test in test_show_atom
896 * Fixed: Migrate from trac - not displayed Wikis
897 * Fixed: Migrate from trac - not displayed Wikis
897 * Fixed: Email notifications on file upload sent to empty recipient list
898 * Fixed: Email notifications on file upload sent to empty recipient list
898 * Fixed: Migrating from trac is not possible, fails to allocate memory
899 * Fixed: Migrating from trac is not possible, fails to allocate memory
899 * Fixed: Lost password no longer flashes a confirmation message
900 * Fixed: Lost password no longer flashes a confirmation message
900 * Fixed: Crash while deleting in-use enumeration
901 * Fixed: Crash while deleting in-use enumeration
901 * Fixed: Hard coded English string at the selection of issue watchers
902 * Fixed: Hard coded English string at the selection of issue watchers
902 * Fixed: Bazaar v2.1.0 changed behaviour
903 * Fixed: Bazaar v2.1.0 changed behaviour
903 * Fixed: Roadmap display can raise an exception if no trackers are selected
904 * Fixed: Roadmap display can raise an exception if no trackers are selected
904 * Fixed: Gravatar breaks layout of "logged in" page
905 * Fixed: Gravatar breaks layout of "logged in" page
905 * Fixed: Reposman.rb on Windows
906 * Fixed: Reposman.rb on Windows
906 * Fixed: Possible error 500 while moving an issue to another project with SQLite
907 * Fixed: Possible error 500 while moving an issue to another project with SQLite
907 * Fixed: backslashes in issue description/note should be escaped when quoted
908 * Fixed: backslashes in issue description/note should be escaped when quoted
908 * Fixed: Long text in <pre> disrupts Associated revisions
909 * Fixed: Long text in <pre> disrupts Associated revisions
909 * Fixed: Links to missing wiki pages not red on project overview page
910 * Fixed: Links to missing wiki pages not red on project overview page
910 * Fixed: Cannot delete a project with subprojects that shares versions
911 * Fixed: Cannot delete a project with subprojects that shares versions
911 * Fixed: Update of Subversion changesets broken under Solaris
912 * Fixed: Update of Subversion changesets broken under Solaris
912 * Fixed: "Move issues" permission not working for Non member
913 * Fixed: "Move issues" permission not working for Non member
913 * Fixed: Sidebar overlap on Users tab of Group editor
914 * Fixed: Sidebar overlap on Users tab of Group editor
914 * Fixed: Error on db:migrate with table prefix set (hardcoded name in principal.rb)
915 * Fixed: Error on db:migrate with table prefix set (hardcoded name in principal.rb)
915 * Fixed: Report shows sub-projects for non-members
916 * Fixed: Report shows sub-projects for non-members
916 * Fixed: 500 internal error when browsing any Redmine page in epiphany
917 * Fixed: 500 internal error when browsing any Redmine page in epiphany
917 * Fixed: Watchers selection lost when issue creation fails
918 * Fixed: Watchers selection lost when issue creation fails
918 * Fixed: When copying projects, redmine should not generate an email to people who created issues
919 * Fixed: When copying projects, redmine should not generate an email to people who created issues
919 * Fixed: Issue "#" table cells should have a class attribute to enable fine-grained CSS theme
920 * Fixed: Issue "#" table cells should have a class attribute to enable fine-grained CSS theme
920 * Fixed: Plugin generators should display help if no parameter is given
921 * Fixed: Plugin generators should display help if no parameter is given
921
922
922
923
923 == 2010-02-28 v0.9.3
924 == 2010-02-28 v0.9.3
924
925
925 * Adds filter for system shared versions on the cross project issue list
926 * Adds filter for system shared versions on the cross project issue list
926 * Makes project identifiers searchable
927 * Makes project identifiers searchable
927 * Remove invalid utf8 sequences from commit comments and author name
928 * Remove invalid utf8 sequences from commit comments and author name
928 * Fixed: Wrong link when "http" not included in project "Homepage" link
929 * Fixed: Wrong link when "http" not included in project "Homepage" link
929 * Fixed: Escaping in html email templates
930 * Fixed: Escaping in html email templates
930 * Fixed: Pound (#) followed by number with leading zero (0) removes leading zero when rendered in wiki
931 * Fixed: Pound (#) followed by number with leading zero (0) removes leading zero when rendered in wiki
931 * Fixed: Deselecting textile text formatting causes interning empty string errors
932 * Fixed: Deselecting textile text formatting causes interning empty string errors
932 * Fixed: error with postgres when entering a non-numeric id for an issue relation
933 * Fixed: error with postgres when entering a non-numeric id for an issue relation
933 * Fixed: div.task incorrectly wrapping on Gantt Chart
934 * Fixed: div.task incorrectly wrapping on Gantt Chart
934 * Fixed: Project copy loses wiki pages hierarchy
935 * Fixed: Project copy loses wiki pages hierarchy
935 * Fixed: parent project field doesn't include blank value when a member with 'add subproject' permission edits a child project
936 * Fixed: parent project field doesn't include blank value when a member with 'add subproject' permission edits a child project
936 * Fixed: Repository.fetch_changesets tries to fetch changesets for archived projects
937 * Fixed: Repository.fetch_changesets tries to fetch changesets for archived projects
937 * Fixed: Duplicated project name for subproject version on gantt chart
938 * Fixed: Duplicated project name for subproject version on gantt chart
938 * Fixed: roadmap shows subprojects issues even if subprojects is unchecked
939 * Fixed: roadmap shows subprojects issues even if subprojects is unchecked
939 * Fixed: IndexError if all the :last menu items are deleted from a menu
940 * Fixed: IndexError if all the :last menu items are deleted from a menu
940 * Fixed: Very high CPU usage for a long time when fetching commits from a large Git repository
941 * Fixed: Very high CPU usage for a long time when fetching commits from a large Git repository
941
942
942
943
943 == 2010-02-07 v0.9.2
944 == 2010-02-07 v0.9.2
944
945
945 * Fixed: Sub-project repository commits not displayed on parent project issues
946 * Fixed: Sub-project repository commits not displayed on parent project issues
946 * Fixed: Potential security leak on my page calendar
947 * Fixed: Potential security leak on my page calendar
947 * Fixed: Project tree structure is broken by deleting the project with the subproject
948 * Fixed: Project tree structure is broken by deleting the project with the subproject
948 * Fixed: Error message shown duplicated when creating a new group
949 * Fixed: Error message shown duplicated when creating a new group
949 * Fixed: Firefox cuts off large pages
950 * Fixed: Firefox cuts off large pages
950 * Fixed: Invalid format parameter returns a DoubleRenderError on issues index
951 * Fixed: Invalid format parameter returns a DoubleRenderError on issues index
951 * Fixed: Unnecessary Quote button on locked forum message
952 * Fixed: Unnecessary Quote button on locked forum message
952 * Fixed: Error raised when trying to view the gantt or calendar with a grouped query
953 * Fixed: Error raised when trying to view the gantt or calendar with a grouped query
953 * Fixed: PDF support for Korean locale
954 * Fixed: PDF support for Korean locale
954 * Fixed: Deprecation warning in extra/svn/reposman.rb
955 * Fixed: Deprecation warning in extra/svn/reposman.rb
955
956
956
957
957 == 2010-01-30 v0.9.1
958 == 2010-01-30 v0.9.1
958
959
959 * Vertical alignment for inline images in formatted text set to 'middle'
960 * Vertical alignment for inline images in formatted text set to 'middle'
960 * Fixed: Redmine.pm error "closing dbh with active statement handles at /usr/lib/perl5/Apache/Redmine.pm"
961 * Fixed: Redmine.pm error "closing dbh with active statement handles at /usr/lib/perl5/Apache/Redmine.pm"
961 * Fixed: copyright year in footer set to 2010
962 * Fixed: copyright year in footer set to 2010
962 * Fixed: Trac migration script may not output query lines
963 * Fixed: Trac migration script may not output query lines
963 * Fixed: Email notifications may affect language of notice messages on the UI
964 * Fixed: Email notifications may affect language of notice messages on the UI
964 * Fixed: Can not search for 2 letters word
965 * Fixed: Can not search for 2 letters word
965 * Fixed: Attachments get saved on issue update even if validation fails
966 * Fixed: Attachments get saved on issue update even if validation fails
966 * Fixed: Tab's 'border-bottom' not absent when selected
967 * Fixed: Tab's 'border-bottom' not absent when selected
967 * Fixed: Issue summary tables that list by user are not sorted
968 * Fixed: Issue summary tables that list by user are not sorted
968 * Fixed: Issue pdf export fails if target version is set
969 * Fixed: Issue pdf export fails if target version is set
969 * Fixed: Issue list export to PDF breaks when issues are sorted by a custom field
970 * Fixed: Issue list export to PDF breaks when issues are sorted by a custom field
970 * Fixed: SQL error when adding a group
971 * Fixed: SQL error when adding a group
971 * Fixes: Min password length during password reset always displays as 4 chars
972 * Fixes: Min password length during password reset always displays as 4 chars
972
973
973
974
974 == 2010-01-09 v0.9.0 (Release candidate)
975 == 2010-01-09 v0.9.0 (Release candidate)
975
976
976 * Unlimited subproject nesting
977 * Unlimited subproject nesting
977 * Multiple roles per user per project
978 * Multiple roles per user per project
978 * User groups
979 * User groups
979 * Inheritence of versions
980 * Inheritence of versions
980 * OpenID login
981 * OpenID login
981 * "Watched by me" issue filter
982 * "Watched by me" issue filter
982 * Project copy
983 * Project copy
983 * Project creation by non admin users
984 * Project creation by non admin users
984 * Accept emails from anyone on a private project
985 * Accept emails from anyone on a private project
985 * Add email notification on Wiki changes
986 * Add email notification on Wiki changes
986 * Make issue description non-required field
987 * Make issue description non-required field
987 * Custom fields for Versions
988 * Custom fields for Versions
988 * Being able to sort the issue list by custom fields
989 * Being able to sort the issue list by custom fields
989 * Ability to close versions
990 * Ability to close versions
990 * User display/editing of custom fields attached to their user profile
991 * User display/editing of custom fields attached to their user profile
991 * Add "follows" issue relation
992 * Add "follows" issue relation
992 * Copy workflows between trackers and roles
993 * Copy workflows between trackers and roles
993 * Defaults enabled modules list for project creation
994 * Defaults enabled modules list for project creation
994 * Weighted version completion percentage on the roadmap
995 * Weighted version completion percentage on the roadmap
995 * Autocreate user account when user submits email that creates new issue
996 * Autocreate user account when user submits email that creates new issue
996 * CSS class on overdue issues on the issue list
997 * CSS class on overdue issues on the issue list
997 * Enable tracker update on issue edit form
998 * Enable tracker update on issue edit form
998 * Remove issue watchers
999 * Remove issue watchers
999 * Ability to move threads between project forums
1000 * Ability to move threads between project forums
1000 * Changed custom field "Possible values" to a textarea
1001 * Changed custom field "Possible values" to a textarea
1001 * Adds projects association on tracker form
1002 * Adds projects association on tracker form
1002 * Set session store to cookie store by default
1003 * Set session store to cookie store by default
1003 * Set a default wiki page on project creation
1004 * Set a default wiki page on project creation
1004 * Roadmap for main project should see Roadmaps for sub projects
1005 * Roadmap for main project should see Roadmaps for sub projects
1005 * Ticket grouping on the issue list
1006 * Ticket grouping on the issue list
1006 * Hierarchical Project links in the page header
1007 * Hierarchical Project links in the page header
1007 * Allow My Page blocks to be added to from a plugin
1008 * Allow My Page blocks to be added to from a plugin
1008 * Sort issues by multiple columns
1009 * Sort issues by multiple columns
1009 * Filters of saved query are now visible and be adjusted without editing the query
1010 * Filters of saved query are now visible and be adjusted without editing the query
1010 * Saving "sort order" in custom queries
1011 * Saving "sort order" in custom queries
1011 * Url to fetch changesets for a repository
1012 * Url to fetch changesets for a repository
1012 * Managers able to create subprojects
1013 * Managers able to create subprojects
1013 * Issue Totals on My Page Modules
1014 * Issue Totals on My Page Modules
1014 * Convert Enumerations to single table inheritance (STI)
1015 * Convert Enumerations to single table inheritance (STI)
1015 * Allow custom my_page blocks to define drop-down names
1016 * Allow custom my_page blocks to define drop-down names
1016 * "View Issues" user permission added
1017 * "View Issues" user permission added
1017 * Ask user what to do with child pages when deleting a parent wiki page
1018 * Ask user what to do with child pages when deleting a parent wiki page
1018 * Contextual quick search
1019 * Contextual quick search
1019 * Allow resending of password by email
1020 * Allow resending of password by email
1020 * Change reply subject to be a link to the reply itself
1021 * Change reply subject to be a link to the reply itself
1021 * Include Logged Time as part of the project's Activity history
1022 * Include Logged Time as part of the project's Activity history
1022 * REST API for authentication
1023 * REST API for authentication
1023 * Browse through Git branches
1024 * Browse through Git branches
1024 * Setup Object Daddy to replace test fixtures
1025 * Setup Object Daddy to replace test fixtures
1025 * Setup shoulda to make it easier to test
1026 * Setup shoulda to make it easier to test
1026 * Custom fields and overrides on Enumerations
1027 * Custom fields and overrides on Enumerations
1027 * Add or remove columns from the issue list
1028 * Add or remove columns from the issue list
1028 * Ability to add new version from issues screen
1029 * Ability to add new version from issues screen
1029 * Setting to choose which day calendars start
1030 * Setting to choose which day calendars start
1030 * Asynchronous email delivery method
1031 * Asynchronous email delivery method
1031 * RESTful URLs for (almost) everything
1032 * RESTful URLs for (almost) everything
1032 * Include issue status in search results and activity pages
1033 * Include issue status in search results and activity pages
1033 * Add email to admin user search filter
1034 * Add email to admin user search filter
1034 * Proper content type for plain text mails
1035 * Proper content type for plain text mails
1035 * Default value of project jump box
1036 * Default value of project jump box
1036 * Tree based menus
1037 * Tree based menus
1037 * Ability to use issue status to update percent done
1038 * Ability to use issue status to update percent done
1038 * Second set of issue "Action Links" at the bottom of an issue page
1039 * Second set of issue "Action Links" at the bottom of an issue page
1039 * Proper exist status code for rdm-mailhandler.rb
1040 * Proper exist status code for rdm-mailhandler.rb
1040 * Remove incoming email body via a delimiter
1041 * Remove incoming email body via a delimiter
1041 * Fixed: Custom querry 'Export to PDF' ignores field selection
1042 * Fixed: Custom querry 'Export to PDF' ignores field selection
1042 * Fixed: Related e-mail notifications aren't threaded
1043 * Fixed: Related e-mail notifications aren't threaded
1043 * Fixed: No warning when the creation of a categories from the issue form fails
1044 * Fixed: No warning when the creation of a categories from the issue form fails
1044 * Fixed: Actually block issues from closing when relation 'blocked by' isn't closed
1045 * Fixed: Actually block issues from closing when relation 'blocked by' isn't closed
1045 * Fixed: Include both first and last name when sorting by users
1046 * Fixed: Include both first and last name when sorting by users
1046 * Fixed: Table cell with multiple line text
1047 * Fixed: Table cell with multiple line text
1047 * Fixed: Project overview page shows disabled trackers
1048 * Fixed: Project overview page shows disabled trackers
1048 * Fixed: Cross project issue relations and user permissions
1049 * Fixed: Cross project issue relations and user permissions
1049 * Fixed: My page shows tickets the user doesn't have access to
1050 * Fixed: My page shows tickets the user doesn't have access to
1050 * Fixed: TOC does not parse wiki page reference links with description
1051 * Fixed: TOC does not parse wiki page reference links with description
1051 * Fixed: Target version-list on bulk edit form is incorrectly sorted
1052 * Fixed: Target version-list on bulk edit form is incorrectly sorted
1052 * Fixed: Cannot modify/delete project named "Documents"
1053 * Fixed: Cannot modify/delete project named "Documents"
1053 * Fixed: Email address in brackets breaks html
1054 * Fixed: Email address in brackets breaks html
1054 * Fixed: Timelog detail loose issue filter passing to report tab
1055 * Fixed: Timelog detail loose issue filter passing to report tab
1055 * Fixed: Inform about custom field's name maximum length
1056 * Fixed: Inform about custom field's name maximum length
1056 * Fixed: Activity page and Atom feed links contain project id instead of identifier
1057 * Fixed: Activity page and Atom feed links contain project id instead of identifier
1057 * Fixed: no Atom key for forums with only 1 forum
1058 * Fixed: no Atom key for forums with only 1 forum
1058 * Fixed: When reading RSS feed in MS Outlook, the inline links are broken.
1059 * Fixed: When reading RSS feed in MS Outlook, the inline links are broken.
1059 * Fixed: Sometimes new posts don't show up in the topic list of a forum.
1060 * Fixed: Sometimes new posts don't show up in the topic list of a forum.
1060 * Fixed: The all/active filter selection in the project view does not stick.
1061 * Fixed: The all/active filter selection in the project view does not stick.
1061 * Fixed: Login box has Different width
1062 * Fixed: Login box has Different width
1062 * Fixed: User removed from project - still getting project update emails
1063 * Fixed: User removed from project - still getting project update emails
1063 * Fixed: Project with the identifier of 'new' cannot be viewed
1064 * Fixed: Project with the identifier of 'new' cannot be viewed
1064 * Fixed: Artefacts in search view (Cyrillic)
1065 * Fixed: Artefacts in search view (Cyrillic)
1065 * Fixed: Allow [#id] as subject to reply by email
1066 * Fixed: Allow [#id] as subject to reply by email
1066 * Fixed: Wrong language used when closing an issue via a commit message
1067 * Fixed: Wrong language used when closing an issue via a commit message
1067 * Fixed: email handler drops emails for new issues with no subject
1068 * Fixed: email handler drops emails for new issues with no subject
1068 * Fixed: Calendar misspelled under Roles/Permissions
1069 * Fixed: Calendar misspelled under Roles/Permissions
1069 * Fixed: Emails from no-reply redmine's address hell cycle
1070 * Fixed: Emails from no-reply redmine's address hell cycle
1070 * Fixed: child_pages macro fails on wiki page history
1071 * Fixed: child_pages macro fails on wiki page history
1071 * Fixed: Pre-filled time tracking date ignores timezone
1072 * Fixed: Pre-filled time tracking date ignores timezone
1072 * Fixed: Links on locked users lead to 404 page
1073 * Fixed: Links on locked users lead to 404 page
1073 * Fixed: Page changes in issue-list when using context menu
1074 * Fixed: Page changes in issue-list when using context menu
1074 * Fixed: diff parser removes lines starting with multiple dashes
1075 * Fixed: diff parser removes lines starting with multiple dashes
1075 * Fixed: Quoting in forums resets message subject
1076 * Fixed: Quoting in forums resets message subject
1076 * Fixed: Editing issue comment removes quote link
1077 * Fixed: Editing issue comment removes quote link
1077 * Fixed: Redmine.pm ignore browse_repository permission
1078 * Fixed: Redmine.pm ignore browse_repository permission
1078 * Fixed: text formatting breaks on [msg1][msg2]
1079 * Fixed: text formatting breaks on [msg1][msg2]
1079 * Fixed: Spent Time Default Value of 0.0
1080 * Fixed: Spent Time Default Value of 0.0
1080 * Fixed: Wiki pages in search results are referenced by project number, not by project identifier.
1081 * Fixed: Wiki pages in search results are referenced by project number, not by project identifier.
1081 * Fixed: When logging in via an autologin cookie the user's last_login_on should be updated
1082 * Fixed: When logging in via an autologin cookie the user's last_login_on should be updated
1082 * Fixed: 50k users cause problems in project->settings->members screen
1083 * Fixed: 50k users cause problems in project->settings->members screen
1083 * Fixed: Document timestamp needs to show updated timestamps
1084 * Fixed: Document timestamp needs to show updated timestamps
1084 * Fixed: Users getting notifications for issues they are no longer allowed to view
1085 * Fixed: Users getting notifications for issues they are no longer allowed to view
1085 * Fixed: issue summary counts should link to the issue list without subprojects
1086 * Fixed: issue summary counts should link to the issue list without subprojects
1086 * Fixed: 'Delete' link on LDAP list has no effect
1087 * Fixed: 'Delete' link on LDAP list has no effect
1087
1088
1088
1089
1089 == 2009-11-15 v0.8.7
1090 == 2009-11-15 v0.8.7
1090
1091
1091 * Fixed: Hide paragraph terminator at the end of headings on html export
1092 * Fixed: Hide paragraph terminator at the end of headings on html export
1092 * Fixed: pre tags containing "<pre*"
1093 * Fixed: pre tags containing "<pre*"
1093 * Fixed: First date of the date range not included in the time report with SQLite
1094 * Fixed: First date of the date range not included in the time report with SQLite
1094 * Fixed: Password field not styled correctly on alternative stylesheet
1095 * Fixed: Password field not styled correctly on alternative stylesheet
1095 * Fixed: Error when sumbitting a POST request that requires a login
1096 * Fixed: Error when sumbitting a POST request that requires a login
1096 * Fixed: CSRF vulnerabilities
1097 * Fixed: CSRF vulnerabilities
1097
1098
1098
1099
1099 == 2009-11-04 v0.8.6
1100 == 2009-11-04 v0.8.6
1100
1101
1101 * Change links to closed issues to be a grey color
1102 * Change links to closed issues to be a grey color
1102 * Change subversion adapter to not cache authentication and run non interactively
1103 * Change subversion adapter to not cache authentication and run non interactively
1103 * Fixed: Custom Values with a nil value cause HTTP error 500
1104 * Fixed: Custom Values with a nil value cause HTTP error 500
1104 * Fixed: Failure to convert HTML entities when editing an Issue reply
1105 * Fixed: Failure to convert HTML entities when editing an Issue reply
1105 * Fixed: Error trying to show repository when there are no comments in a changeset
1106 * Fixed: Error trying to show repository when there are no comments in a changeset
1106 * Fixed: account/show/:user_id should not be accessible for other users not in your projects
1107 * Fixed: account/show/:user_id should not be accessible for other users not in your projects
1107 * Fixed: XSS vulnerabilities
1108 * Fixed: XSS vulnerabilities
1108 * Fixed: IssuesController#destroy should accept POST only
1109 * Fixed: IssuesController#destroy should accept POST only
1109 * Fixed: Inline images in wiki headings
1110 * Fixed: Inline images in wiki headings
1110
1111
1111
1112
1112 == 2009-09-13 v0.8.5
1113 == 2009-09-13 v0.8.5
1113
1114
1114 * Incoming mail handler : Allow spaces between keywords and colon
1115 * Incoming mail handler : Allow spaces between keywords and colon
1115 * Do not require a non-word character after a comma in Redmine links
1116 * Do not require a non-word character after a comma in Redmine links
1116 * Include issue hyperlinks in reminder emails
1117 * Include issue hyperlinks in reminder emails
1117 * Prevent nil error when retrieving svn version
1118 * Prevent nil error when retrieving svn version
1118 * Various plugin hooks added
1119 * Various plugin hooks added
1119 * Add plugins information to script/about
1120 * Add plugins information to script/about
1120 * Fixed: 500 Internal Server Error is raised if add an empty comment to the news
1121 * Fixed: 500 Internal Server Error is raised if add an empty comment to the news
1121 * Fixed: Atom links for wiki pages are not correct
1122 * Fixed: Atom links for wiki pages are not correct
1122 * Fixed: Atom feeds leak email address
1123 * Fixed: Atom feeds leak email address
1123 * Fixed: Case sensitivity in Issue filtering
1124 * Fixed: Case sensitivity in Issue filtering
1124 * Fixed: When reading RSS feed, the inline-embedded images are not properly shown
1125 * Fixed: When reading RSS feed, the inline-embedded images are not properly shown
1125
1126
1126
1127
1127 == 2009-05-17 v0.8.4
1128 == 2009-05-17 v0.8.4
1128
1129
1129 * Allow textile mailto links
1130 * Allow textile mailto links
1130 * Fixed: memory consumption when uploading file
1131 * Fixed: memory consumption when uploading file
1131 * Fixed: Mercurial integration doesn't work if Redmine is installed in folder path containing space
1132 * Fixed: Mercurial integration doesn't work if Redmine is installed in folder path containing space
1132 * Fixed: an error is raised when no tab is available on project settings
1133 * Fixed: an error is raised when no tab is available on project settings
1133 * Fixed: insert image macro corrupts urls with excalamation marks
1134 * Fixed: insert image macro corrupts urls with excalamation marks
1134 * Fixed: error on cross-project gantt PNG export
1135 * Fixed: error on cross-project gantt PNG export
1135 * Fixed: self and alternate links in atom feeds do not respect Atom specs
1136 * Fixed: self and alternate links in atom feeds do not respect Atom specs
1136 * Fixed: accept any svn tunnel scheme in repository URL
1137 * Fixed: accept any svn tunnel scheme in repository URL
1137 * Fixed: issues/show should accept user's rss key
1138 * Fixed: issues/show should accept user's rss key
1138 * Fixed: consistency of custom fields display on the issue detail view
1139 * Fixed: consistency of custom fields display on the issue detail view
1139 * Fixed: wiki comments length validation is missing
1140 * Fixed: wiki comments length validation is missing
1140 * Fixed: weak autologin token generation algorithm causes duplicate tokens
1141 * Fixed: weak autologin token generation algorithm causes duplicate tokens
1141
1142
1142
1143
1143 == 2009-04-05 v0.8.3
1144 == 2009-04-05 v0.8.3
1144
1145
1145 * Separate project field and subject in cross-project issue view
1146 * Separate project field and subject in cross-project issue view
1146 * Ability to set language for redmine:load_default_data task using REDMINE_LANG environment variable
1147 * Ability to set language for redmine:load_default_data task using REDMINE_LANG environment variable
1147 * Rescue Redmine::DefaultData::DataAlreadyLoaded in redmine:load_default_data task
1148 * Rescue Redmine::DefaultData::DataAlreadyLoaded in redmine:load_default_data task
1148 * CSS classes to highlight own and assigned issues
1149 * CSS classes to highlight own and assigned issues
1149 * Hide "New file" link on wiki pages from printing
1150 * Hide "New file" link on wiki pages from printing
1150 * Flush buffer when asking for language in redmine:load_default_data task
1151 * Flush buffer when asking for language in redmine:load_default_data task
1151 * Minimum project identifier length set to 1
1152 * Minimum project identifier length set to 1
1152 * Include headers so that emails don't trigger vacation auto-responders
1153 * Include headers so that emails don't trigger vacation auto-responders
1153 * Fixed: Time entries csv export links for all projects are malformed
1154 * Fixed: Time entries csv export links for all projects are malformed
1154 * Fixed: Files without Version aren't visible in the Activity page
1155 * Fixed: Files without Version aren't visible in the Activity page
1155 * Fixed: Commit logs are centered in the repo browser
1156 * Fixed: Commit logs are centered in the repo browser
1156 * Fixed: News summary field content is not searchable
1157 * Fixed: News summary field content is not searchable
1157 * Fixed: Journal#save has a wrong signature
1158 * Fixed: Journal#save has a wrong signature
1158 * Fixed: Email footer signature convention
1159 * Fixed: Email footer signature convention
1159 * Fixed: Timelog report do not show time for non-versioned issues
1160 * Fixed: Timelog report do not show time for non-versioned issues
1160
1161
1161
1162
1162 == 2009-03-07 v0.8.2
1163 == 2009-03-07 v0.8.2
1163
1164
1164 * Send an email to the user when an administrator activates a registered user
1165 * Send an email to the user when an administrator activates a registered user
1165 * Strip keywords from received email body
1166 * Strip keywords from received email body
1166 * Footer updated to 2009
1167 * Footer updated to 2009
1167 * Show RSS-link even when no issues is found
1168 * Show RSS-link even when no issues is found
1168 * One click filter action in activity view
1169 * One click filter action in activity view
1169 * Clickable/linkable line #'s while browsing the repo or viewing a file
1170 * Clickable/linkable line #'s while browsing the repo or viewing a file
1170 * Links to versions on files list
1171 * Links to versions on files list
1171 * Added request and controller objects to the hooks by default
1172 * Added request and controller objects to the hooks by default
1172 * Fixed: exporting an issue with attachments to PDF raises an error
1173 * Fixed: exporting an issue with attachments to PDF raises an error
1173 * Fixed: "too few arguments" error may occur on activerecord error translation
1174 * Fixed: "too few arguments" error may occur on activerecord error translation
1174 * Fixed: "Default columns Displayed on the Issues list" setting is not easy to read
1175 * Fixed: "Default columns Displayed on the Issues list" setting is not easy to read
1175 * Fixed: visited links to closed tickets are not striked through with IE6
1176 * Fixed: visited links to closed tickets are not striked through with IE6
1176 * Fixed: MailHandler#plain_text_body returns nil if there was nothing to strip
1177 * Fixed: MailHandler#plain_text_body returns nil if there was nothing to strip
1177 * Fixed: MailHandler raises an error when processing an email without From header
1178 * Fixed: MailHandler raises an error when processing an email without From header
1178
1179
1179
1180
1180 == 2009-02-15 v0.8.1
1181 == 2009-02-15 v0.8.1
1181
1182
1182 * Select watchers on new issue form
1183 * Select watchers on new issue form
1183 * Issue description is no longer a required field
1184 * Issue description is no longer a required field
1184 * Files module: ability to add files without version
1185 * Files module: ability to add files without version
1185 * Jump to the current tab when using the project quick-jump combo
1186 * Jump to the current tab when using the project quick-jump combo
1186 * Display a warning if some attachments were not saved
1187 * Display a warning if some attachments were not saved
1187 * Import custom fields values from emails on issue creation
1188 * Import custom fields values from emails on issue creation
1188 * Show view/annotate/download links on entry and annotate views
1189 * Show view/annotate/download links on entry and annotate views
1189 * Admin Info Screen: Display if plugin assets directory is writable
1190 * Admin Info Screen: Display if plugin assets directory is writable
1190 * Adds a 'Create and continue' button on the new issue form
1191 * Adds a 'Create and continue' button on the new issue form
1191 * IMAP: add options to move received emails
1192 * IMAP: add options to move received emails
1192 * Do not show Category field when categories are not defined
1193 * Do not show Category field when categories are not defined
1193 * Lower the project identifier limit to a minimum of two characters
1194 * Lower the project identifier limit to a minimum of two characters
1194 * Add "closed" html class to closed entries in issue list
1195 * Add "closed" html class to closed entries in issue list
1195 * Fixed: broken redirect URL on login failure
1196 * Fixed: broken redirect URL on login failure
1196 * Fixed: Deleted files are shown when using Darcs
1197 * Fixed: Deleted files are shown when using Darcs
1197 * Fixed: Darcs adapter works on Win32 only
1198 * Fixed: Darcs adapter works on Win32 only
1198 * Fixed: syntax highlight doesn't appear in new ticket preview
1199 * Fixed: syntax highlight doesn't appear in new ticket preview
1199 * Fixed: email notification for changes I make still occurs when running Repository.fetch_changesets
1200 * Fixed: email notification for changes I make still occurs when running Repository.fetch_changesets
1200 * Fixed: no error is raised when entering invalid hours on the issue update form
1201 * Fixed: no error is raised when entering invalid hours on the issue update form
1201 * Fixed: Details time log report CSV export doesn't honour date format from settings
1202 * Fixed: Details time log report CSV export doesn't honour date format from settings
1202 * Fixed: invalid css classes on issue details
1203 * Fixed: invalid css classes on issue details
1203 * Fixed: Trac importer creates duplicate custom values
1204 * Fixed: Trac importer creates duplicate custom values
1204 * Fixed: inline attached image should not match partial filename
1205 * Fixed: inline attached image should not match partial filename
1205
1206
1206
1207
1207 == 2008-12-30 v0.8.0
1208 == 2008-12-30 v0.8.0
1208
1209
1209 * Setting added in order to limit the number of diff lines that should be displayed
1210 * Setting added in order to limit the number of diff lines that should be displayed
1210 * Makes logged-in username in topbar linking to
1211 * Makes logged-in username in topbar linking to
1211 * Mail handler: strip tags when receiving a html-only email
1212 * Mail handler: strip tags when receiving a html-only email
1212 * Mail handler: add watchers before sending notification
1213 * Mail handler: add watchers before sending notification
1213 * Adds a css class (overdue) to overdue issues on issue lists and detail views
1214 * Adds a css class (overdue) to overdue issues on issue lists and detail views
1214 * Fixed: project activity truncated after viewing user's activity
1215 * Fixed: project activity truncated after viewing user's activity
1215 * Fixed: email address entered for password recovery shouldn't be case-sensitive
1216 * Fixed: email address entered for password recovery shouldn't be case-sensitive
1216 * Fixed: default flag removed when editing a default enumeration
1217 * Fixed: default flag removed when editing a default enumeration
1217 * Fixed: default category ignored when adding a document
1218 * Fixed: default category ignored when adding a document
1218 * Fixed: error on repository user mapping when a repository username is blank
1219 * Fixed: error on repository user mapping when a repository username is blank
1219 * Fixed: Firefox cuts off large diffs
1220 * Fixed: Firefox cuts off large diffs
1220 * Fixed: CVS browser should not show dead revisions (deleted files)
1221 * Fixed: CVS browser should not show dead revisions (deleted files)
1221 * Fixed: escape double-quotes in image titles
1222 * Fixed: escape double-quotes in image titles
1222 * Fixed: escape textarea content when editing a issue note
1223 * Fixed: escape textarea content when editing a issue note
1223 * Fixed: JS error on context menu with IE
1224 * Fixed: JS error on context menu with IE
1224 * Fixed: bold syntax around single character in series doesn't work
1225 * Fixed: bold syntax around single character in series doesn't work
1225 * Fixed several XSS vulnerabilities
1226 * Fixed several XSS vulnerabilities
1226 * Fixed a SQL injection vulnerability
1227 * Fixed a SQL injection vulnerability
1227
1228
1228
1229
1229 == 2008-12-07 v0.8.0-rc1
1230 == 2008-12-07 v0.8.0-rc1
1230
1231
1231 * Wiki page protection
1232 * Wiki page protection
1232 * Wiki page hierarchy. Parent page can be assigned on the Rename screen
1233 * Wiki page hierarchy. Parent page can be assigned on the Rename screen
1233 * Adds support for issue creation via email
1234 * Adds support for issue creation via email
1234 * Adds support for free ticket filtering and custom queries on Gantt chart and calendar
1235 * Adds support for free ticket filtering and custom queries on Gantt chart and calendar
1235 * Cross-project search
1236 * Cross-project search
1236 * Ability to search a project and its subprojects
1237 * Ability to search a project and its subprojects
1237 * Ability to search the projects the user belongs to
1238 * Ability to search the projects the user belongs to
1238 * Adds custom fields on time entries
1239 * Adds custom fields on time entries
1239 * Adds boolean and list custom fields for time entries as criteria on time report
1240 * Adds boolean and list custom fields for time entries as criteria on time report
1240 * Cross-project time reports
1241 * Cross-project time reports
1241 * Display latest user's activity on account/show view
1242 * Display latest user's activity on account/show view
1242 * Show last connexion time on user's page
1243 * Show last connexion time on user's page
1243 * Obfuscates email address on user's account page using javascript
1244 * Obfuscates email address on user's account page using javascript
1244 * wiki TOC rendered as an unordered list
1245 * wiki TOC rendered as an unordered list
1245 * Adds the ability to search for a user on the administration users list
1246 * Adds the ability to search for a user on the administration users list
1246 * Adds the ability to search for a project name or identifier on the administration projects list
1247 * Adds the ability to search for a project name or identifier on the administration projects list
1247 * Redirect user to the previous page after logging in
1248 * Redirect user to the previous page after logging in
1248 * Adds a permission 'view wiki edits' so that wiki history can be hidden to certain users
1249 * Adds a permission 'view wiki edits' so that wiki history can be hidden to certain users
1249 * Adds permissions for viewing the watcher list and adding new watchers on the issue detail view
1250 * Adds permissions for viewing the watcher list and adding new watchers on the issue detail view
1250 * Adds permissions to let users edit and/or delete their messages
1251 * Adds permissions to let users edit and/or delete their messages
1251 * Link to activity view when displaying dates
1252 * Link to activity view when displaying dates
1252 * Hide Redmine version in atom feeds and pdf properties
1253 * Hide Redmine version in atom feeds and pdf properties
1253 * Maps repository users to Redmine users. Users with same username or email are automatically mapped. Mapping can be manually adjusted in repository settings. Multiple usernames can be mapped to the same Redmine user.
1254 * Maps repository users to Redmine users. Users with same username or email are automatically mapped. Mapping can be manually adjusted in repository settings. Multiple usernames can be mapped to the same Redmine user.
1254 * Sort users by their display names so that user dropdown lists are sorted alphabetically
1255 * Sort users by their display names so that user dropdown lists are sorted alphabetically
1255 * Adds estimated hours to issue filters
1256 * Adds estimated hours to issue filters
1256 * Switch order of current and previous revisions in side-by-side diff
1257 * Switch order of current and previous revisions in side-by-side diff
1257 * Render the commit changes list as a tree
1258 * Render the commit changes list as a tree
1258 * Adds watch/unwatch functionality at forum topic level
1259 * Adds watch/unwatch functionality at forum topic level
1259 * When moving an issue to another project, reassign it to the category with same name if any
1260 * When moving an issue to another project, reassign it to the category with same name if any
1260 * Adds child_pages macro for wiki pages
1261 * Adds child_pages macro for wiki pages
1261 * Use GET instead of POST on roadmap (#718), gantt and calendar forms
1262 * Use GET instead of POST on roadmap (#718), gantt and calendar forms
1262 * Search engine: display total results count and count by result type
1263 * Search engine: display total results count and count by result type
1263 * Email delivery configuration moved to an unversioned YAML file (config/email.yml, see the sample file)
1264 * Email delivery configuration moved to an unversioned YAML file (config/email.yml, see the sample file)
1264 * Adds icons on search results
1265 * Adds icons on search results
1265 * Adds 'Edit' link on account/show for admin users
1266 * Adds 'Edit' link on account/show for admin users
1266 * Adds Lock/Unlock/Activate link on user edit screen
1267 * Adds Lock/Unlock/Activate link on user edit screen
1267 * Adds user count in status drop down on admin user list
1268 * Adds user count in status drop down on admin user list
1268 * Adds multi-levels blockquotes support by using > at the beginning of lines
1269 * Adds multi-levels blockquotes support by using > at the beginning of lines
1269 * Adds a Reply link to each issue note
1270 * Adds a Reply link to each issue note
1270 * Adds plain text only option for mail notifications
1271 * Adds plain text only option for mail notifications
1271 * Gravatar support for issue detail, user grid, and activity stream (disabled by default)
1272 * Gravatar support for issue detail, user grid, and activity stream (disabled by default)
1272 * Adds 'Delete wiki pages attachments' permission
1273 * Adds 'Delete wiki pages attachments' permission
1273 * Show the most recent file when displaying an inline image
1274 * Show the most recent file when displaying an inline image
1274 * Makes permission screens localized
1275 * Makes permission screens localized
1275 * AuthSource list: display associated users count and disable 'Delete' buton if any
1276 * AuthSource list: display associated users count and disable 'Delete' buton if any
1276 * Make the 'duplicates of' relation asymmetric
1277 * Make the 'duplicates of' relation asymmetric
1277 * Adds username to the password reminder email
1278 * Adds username to the password reminder email
1278 * Adds links to forum messages using message#id syntax
1279 * Adds links to forum messages using message#id syntax
1279 * Allow same name for custom fields on different object types
1280 * Allow same name for custom fields on different object types
1280 * One-click bulk edition using the issue list context menu within the same project
1281 * One-click bulk edition using the issue list context menu within the same project
1281 * Adds support for commit logs reencoding to UTF-8 before insertion in the database. Source encoding of commit logs can be selected in Application settings -> Repositories.
1282 * Adds support for commit logs reencoding to UTF-8 before insertion in the database. Source encoding of commit logs can be selected in Application settings -> Repositories.
1282 * Adds checkboxes toggle links on permissions report
1283 * Adds checkboxes toggle links on permissions report
1283 * Adds Trac-Like anchors on wiki headings
1284 * Adds Trac-Like anchors on wiki headings
1284 * Adds support for wiki links with anchor
1285 * Adds support for wiki links with anchor
1285 * Adds category to the issue context menu
1286 * Adds category to the issue context menu
1286 * Adds a workflow overview screen
1287 * Adds a workflow overview screen
1287 * Appends the filename to the attachment url so that clients that ignore content-disposition http header get the real filename
1288 * Appends the filename to the attachment url so that clients that ignore content-disposition http header get the real filename
1288 * Dots allowed in custom field name
1289 * Dots allowed in custom field name
1289 * Adds posts quoting functionality
1290 * Adds posts quoting functionality
1290 * Adds an option to generate sequential project identifiers
1291 * Adds an option to generate sequential project identifiers
1291 * Adds mailto link on the user administration list
1292 * Adds mailto link on the user administration list
1292 * Ability to remove enumerations (activities, priorities, document categories) that are in use. Associated objects can be reassigned to another value
1293 * Ability to remove enumerations (activities, priorities, document categories) that are in use. Associated objects can be reassigned to another value
1293 * Gantt chart: display issues that don't have a due date if they are assigned to a version with a date
1294 * Gantt chart: display issues that don't have a due date if they are assigned to a version with a date
1294 * Change projects homepage limit to 255 chars
1295 * Change projects homepage limit to 255 chars
1295 * Improved on-the-fly account creation. If some attributes are missing (eg. not present in the LDAP) or are invalid, the registration form is displayed so that the user is able to fill or fix these attributes
1296 * Improved on-the-fly account creation. If some attributes are missing (eg. not present in the LDAP) or are invalid, the registration form is displayed so that the user is able to fill or fix these attributes
1296 * Adds "please select" to activity select box if no activity is set as default
1297 * Adds "please select" to activity select box if no activity is set as default
1297 * Do not silently ignore timelog validation failure on issue edit
1298 * Do not silently ignore timelog validation failure on issue edit
1298 * Adds a rake task to send reminder emails
1299 * Adds a rake task to send reminder emails
1299 * Allow empty cells in wiki tables
1300 * Allow empty cells in wiki tables
1300 * Makes wiki text formatter pluggable
1301 * Makes wiki text formatter pluggable
1301 * Adds back textile acronyms support
1302 * Adds back textile acronyms support
1302 * Remove pre tag attributes
1303 * Remove pre tag attributes
1303 * Plugin hooks
1304 * Plugin hooks
1304 * Pluggable admin menu
1305 * Pluggable admin menu
1305 * Plugins can provide activity content
1306 * Plugins can provide activity content
1306 * Moves plugin list to its own administration menu item
1307 * Moves plugin list to its own administration menu item
1307 * Adds url and author_url plugin attributes
1308 * Adds url and author_url plugin attributes
1308 * Adds Plugin#requires_redmine method so that plugin compatibility can be checked against current Redmine version
1309 * Adds Plugin#requires_redmine method so that plugin compatibility can be checked against current Redmine version
1309 * Adds atom feed on time entries details
1310 * Adds atom feed on time entries details
1310 * Adds project name to issues feed title
1311 * Adds project name to issues feed title
1311 * Adds a css class on menu items in order to apply item specific styles (eg. icons)
1312 * Adds a css class on menu items in order to apply item specific styles (eg. icons)
1312 * Adds a Redmine plugin generators
1313 * Adds a Redmine plugin generators
1313 * Adds timelog link to the issue context menu
1314 * Adds timelog link to the issue context menu
1314 * Adds links to the user page on various views
1315 * Adds links to the user page on various views
1315 * Turkish translation by Ismail Sezen
1316 * Turkish translation by Ismail Sezen
1316 * Catalan translation
1317 * Catalan translation
1317 * Vietnamese translation
1318 * Vietnamese translation
1318 * Slovak translation
1319 * Slovak translation
1319 * Better naming of activity feed if only one kind of event is displayed
1320 * Better naming of activity feed if only one kind of event is displayed
1320 * Enable syntax highlight on issues, messages and news
1321 * Enable syntax highlight on issues, messages and news
1321 * Add target version to the issue list context menu
1322 * Add target version to the issue list context menu
1322 * Hide 'Target version' filter if no version is defined
1323 * Hide 'Target version' filter if no version is defined
1323 * Add filters on cross-project issue list for custom fields marked as 'For all projects'
1324 * Add filters on cross-project issue list for custom fields marked as 'For all projects'
1324 * Turn ftp urls into links
1325 * Turn ftp urls into links
1325 * Hiding the View Differences button when a wiki page's history only has one version
1326 * Hiding the View Differences button when a wiki page's history only has one version
1326 * Messages on a Board can now be sorted by the number of replies
1327 * Messages on a Board can now be sorted by the number of replies
1327 * Adds a class ('me') to events of the activity view created by current user
1328 * Adds a class ('me') to events of the activity view created by current user
1328 * Strip pre/code tags content from activity view events
1329 * Strip pre/code tags content from activity view events
1329 * Display issue notes in the activity view
1330 * Display issue notes in the activity view
1330 * Adds links to changesets atom feed on repository browser
1331 * Adds links to changesets atom feed on repository browser
1331 * Track project and tracker changes in issue history
1332 * Track project and tracker changes in issue history
1332 * Adds anchor to atom feed messages links
1333 * Adds anchor to atom feed messages links
1333 * Adds a key in lang files to set the decimal separator (point or comma) in csv exports
1334 * Adds a key in lang files to set the decimal separator (point or comma) in csv exports
1334 * Makes importer work with Trac 0.8.x
1335 * Makes importer work with Trac 0.8.x
1335 * Upgraded to Prototype 1.6.0.1
1336 * Upgraded to Prototype 1.6.0.1
1336 * File viewer for attached text files
1337 * File viewer for attached text files
1337 * Menu mapper: add support for :before, :after and :last options to #push method and add #delete method
1338 * Menu mapper: add support for :before, :after and :last options to #push method and add #delete method
1338 * Removed inconsistent revision numbers on diff view
1339 * Removed inconsistent revision numbers on diff view
1339 * CVS: add support for modules names with spaces
1340 * CVS: add support for modules names with spaces
1340 * Log the user in after registration if account activation is not needed
1341 * Log the user in after registration if account activation is not needed
1341 * Mercurial adapter improvements
1342 * Mercurial adapter improvements
1342 * Trac importer: read session_attribute table to find user's email and real name
1343 * Trac importer: read session_attribute table to find user's email and real name
1343 * Ability to disable unused SCM adapters in application settings
1344 * Ability to disable unused SCM adapters in application settings
1344 * Adds Filesystem adapter
1345 * Adds Filesystem adapter
1345 * Clear changesets and changes with raw sql when deleting a repository for performance
1346 * Clear changesets and changes with raw sql when deleting a repository for performance
1346 * Redmine.pm now uses the 'commit access' permission defined in Redmine
1347 * Redmine.pm now uses the 'commit access' permission defined in Redmine
1347 * Reposman can create any type of scm (--scm option)
1348 * Reposman can create any type of scm (--scm option)
1348 * Reposman creates a repository if the 'repository' module is enabled at project level only
1349 * Reposman creates a repository if the 'repository' module is enabled at project level only
1349 * Display svn properties in the browser, svn >= 1.5.0 only
1350 * Display svn properties in the browser, svn >= 1.5.0 only
1350 * Reduces memory usage when importing large git repositories
1351 * Reduces memory usage when importing large git repositories
1351 * Wider SVG graphs in repository stats
1352 * Wider SVG graphs in repository stats
1352 * SubversionAdapter#entries performance improvement
1353 * SubversionAdapter#entries performance improvement
1353 * SCM browser: ability to download raw unified diffs
1354 * SCM browser: ability to download raw unified diffs
1354 * More detailed error message in log when scm command fails
1355 * More detailed error message in log when scm command fails
1355 * Adds support for file viewing with Darcs 2.0+
1356 * Adds support for file viewing with Darcs 2.0+
1356 * Check that git changeset is not in the database before creating it
1357 * Check that git changeset is not in the database before creating it
1357 * Unified diff viewer for attached files with .patch or .diff extension
1358 * Unified diff viewer for attached files with .patch or .diff extension
1358 * File size display with Bazaar repositories
1359 * File size display with Bazaar repositories
1359 * Git adapter: use commit time instead of author time
1360 * Git adapter: use commit time instead of author time
1360 * Prettier url for changesets
1361 * Prettier url for changesets
1361 * Makes changes link to entries on the revision view
1362 * Makes changes link to entries on the revision view
1362 * Adds a field on the repository view to browse at specific revision
1363 * Adds a field on the repository view to browse at specific revision
1363 * Adds new projects atom feed
1364 * Adds new projects atom feed
1364 * Added rake tasks to generate rcov code coverage reports
1365 * Added rake tasks to generate rcov code coverage reports
1365 * Add Redcloth's :block_markdown_rule to allow horizontal rules in wiki
1366 * Add Redcloth's :block_markdown_rule to allow horizontal rules in wiki
1366 * Show the project hierarchy in the drop down list for new membership on user administration screen
1367 * Show the project hierarchy in the drop down list for new membership on user administration screen
1367 * Split user edit screen into tabs
1368 * Split user edit screen into tabs
1368 * Renames bundled RedCloth to RedCloth3 to avoid RedCloth 4 to be loaded instead
1369 * Renames bundled RedCloth to RedCloth3 to avoid RedCloth 4 to be loaded instead
1369 * Fixed: Roadmap crashes when a version has a due date > 2037
1370 * Fixed: Roadmap crashes when a version has a due date > 2037
1370 * Fixed: invalid effective date (eg. 99999-01-01) causes an error on version edition screen
1371 * Fixed: invalid effective date (eg. 99999-01-01) causes an error on version edition screen
1371 * Fixed: login filter providing incorrect back_url for Redmine installed in sub-directory
1372 * Fixed: login filter providing incorrect back_url for Redmine installed in sub-directory
1372 * Fixed: logtime entry duplicated when edited from parent project
1373 * Fixed: logtime entry duplicated when edited from parent project
1373 * Fixed: wrong digest for text files under Windows
1374 * Fixed: wrong digest for text files under Windows
1374 * Fixed: associated revisions are displayed in wrong order on issue view
1375 * Fixed: associated revisions are displayed in wrong order on issue view
1375 * Fixed: Git Adapter date parsing ignores timezone
1376 * Fixed: Git Adapter date parsing ignores timezone
1376 * Fixed: Printing long roadmap doesn't split across pages
1377 * Fixed: Printing long roadmap doesn't split across pages
1377 * Fixes custom fields display order at several places
1378 * Fixes custom fields display order at several places
1378 * Fixed: urls containing @ are parsed as email adress by the wiki formatter
1379 * Fixed: urls containing @ are parsed as email adress by the wiki formatter
1379 * Fixed date filters accuracy with SQLite
1380 * Fixed date filters accuracy with SQLite
1380 * Fixed: tokens not escaped in highlight_tokens regexp
1381 * Fixed: tokens not escaped in highlight_tokens regexp
1381 * Fixed Bazaar shared repository browsing
1382 * Fixed Bazaar shared repository browsing
1382 * Fixes platform determination under JRuby
1383 * Fixes platform determination under JRuby
1383 * Fixed: Estimated time in issue's journal should be rounded to two decimals
1384 * Fixed: Estimated time in issue's journal should be rounded to two decimals
1384 * Fixed: 'search titles only' box ignored after one search is done on titles only
1385 * Fixed: 'search titles only' box ignored after one search is done on titles only
1385 * Fixed: non-ASCII subversion path can't be displayed
1386 * Fixed: non-ASCII subversion path can't be displayed
1386 * Fixed: Inline images don't work if file name has upper case letters or if image is in BMP format
1387 * Fixed: Inline images don't work if file name has upper case letters or if image is in BMP format
1387 * Fixed: document listing shows on "my page" when viewing documents is disabled for the role
1388 * Fixed: document listing shows on "my page" when viewing documents is disabled for the role
1388 * Fixed: Latest news appear on the homepage for projects with the News module disabled
1389 * Fixed: Latest news appear on the homepage for projects with the News module disabled
1389 * Fixed: cross-project issue list should not show issues of projects for which the issue tracking module was disabled
1390 * Fixed: cross-project issue list should not show issues of projects for which the issue tracking module was disabled
1390 * Fixed: the default status is lost when reordering issue statuses
1391 * Fixed: the default status is lost when reordering issue statuses
1391 * Fixes error with Postgresql and non-UTF8 commit logs
1392 * Fixes error with Postgresql and non-UTF8 commit logs
1392 * Fixed: textile footnotes no longer work
1393 * Fixed: textile footnotes no longer work
1393 * Fixed: http links containing parentheses fail to reder correctly
1394 * Fixed: http links containing parentheses fail to reder correctly
1394 * Fixed: GitAdapter#get_rev should use current branch instead of hardwiring master
1395 * Fixed: GitAdapter#get_rev should use current branch instead of hardwiring master
1395
1396
1396
1397
1397 == 2008-07-06 v0.7.3
1398 == 2008-07-06 v0.7.3
1398
1399
1399 * Allow dot in firstnames and lastnames
1400 * Allow dot in firstnames and lastnames
1400 * Add project name to cross-project Atom feeds
1401 * Add project name to cross-project Atom feeds
1401 * Encoding set to utf8 in example database.yml
1402 * Encoding set to utf8 in example database.yml
1402 * HTML titles on forums related views
1403 * HTML titles on forums related views
1403 * Fixed: various XSS vulnerabilities
1404 * Fixed: various XSS vulnerabilities
1404 * Fixed: Entourage (and some old client) fails to correctly render notification styles
1405 * Fixed: Entourage (and some old client) fails to correctly render notification styles
1405 * Fixed: Fixed: timelog redirects inappropriately when :back_url is blank
1406 * Fixed: Fixed: timelog redirects inappropriately when :back_url is blank
1406 * Fixed: wrong relative paths to images in wiki_syntax.html
1407 * Fixed: wrong relative paths to images in wiki_syntax.html
1407
1408
1408
1409
1409 == 2008-06-15 v0.7.2
1410 == 2008-06-15 v0.7.2
1410
1411
1411 * "New Project" link on Projects page
1412 * "New Project" link on Projects page
1412 * Links to repository directories on the repo browser
1413 * Links to repository directories on the repo browser
1413 * Move status to front in Activity View
1414 * Move status to front in Activity View
1414 * Remove edit step from Status context menu
1415 * Remove edit step from Status context menu
1415 * Fixed: No way to do textile horizontal rule
1416 * Fixed: No way to do textile horizontal rule
1416 * Fixed: Repository: View differences doesn't work
1417 * Fixed: Repository: View differences doesn't work
1417 * Fixed: attachement's name maybe invalid.
1418 * Fixed: attachement's name maybe invalid.
1418 * Fixed: Error when creating a new issue
1419 * Fixed: Error when creating a new issue
1419 * Fixed: NoMethodError on @available_filters.has_key?
1420 * Fixed: NoMethodError on @available_filters.has_key?
1420 * Fixed: Check All / Uncheck All in Email Settings
1421 * Fixed: Check All / Uncheck All in Email Settings
1421 * Fixed: "View differences" of one file at /repositories/revision/ fails
1422 * Fixed: "View differences" of one file at /repositories/revision/ fails
1422 * Fixed: Column width in "my page"
1423 * Fixed: Column width in "my page"
1423 * Fixed: private subprojects are listed on Issues view
1424 * Fixed: private subprojects are listed on Issues view
1424 * Fixed: Textile: bold, italics, underline, etc... not working after parentheses
1425 * Fixed: Textile: bold, italics, underline, etc... not working after parentheses
1425 * Fixed: Update issue form: comment field from log time end out of screen
1426 * Fixed: Update issue form: comment field from log time end out of screen
1426 * Fixed: Editing role: "issue can be assigned to this role" out of box
1427 * Fixed: Editing role: "issue can be assigned to this role" out of box
1427 * Fixed: Unable use angular braces after include word
1428 * Fixed: Unable use angular braces after include word
1428 * Fixed: Using '*' as keyword for repository referencing keywords doesn't work
1429 * Fixed: Using '*' as keyword for repository referencing keywords doesn't work
1429 * Fixed: Subversion repository "View differences" on each file rise ERROR
1430 * Fixed: Subversion repository "View differences" on each file rise ERROR
1430 * Fixed: View differences for individual file of a changeset fails if the repository URL doesn't point to the repository root
1431 * Fixed: View differences for individual file of a changeset fails if the repository URL doesn't point to the repository root
1431 * Fixed: It is possible to lock out the last admin account
1432 * Fixed: It is possible to lock out the last admin account
1432 * Fixed: Wikis are viewable for anonymous users on public projects, despite not granting access
1433 * Fixed: Wikis are viewable for anonymous users on public projects, despite not granting access
1433 * Fixed: Issue number display clipped on 'my issues'
1434 * Fixed: Issue number display clipped on 'my issues'
1434 * Fixed: Roadmap version list links not carrying state
1435 * Fixed: Roadmap version list links not carrying state
1435 * Fixed: Log Time fieldset in IssueController#edit doesn't set default Activity as default
1436 * Fixed: Log Time fieldset in IssueController#edit doesn't set default Activity as default
1436 * Fixed: git's "get_rev" API should use repo's current branch instead of hardwiring "master"
1437 * Fixed: git's "get_rev" API should use repo's current branch instead of hardwiring "master"
1437 * Fixed: browser's language subcodes ignored
1438 * Fixed: browser's language subcodes ignored
1438 * Fixed: Error on project selection with numeric (only) identifier.
1439 * Fixed: Error on project selection with numeric (only) identifier.
1439 * Fixed: Link to PDF doesn't work after creating new issue
1440 * Fixed: Link to PDF doesn't work after creating new issue
1440 * Fixed: "Replies" should not be shown on forum threads that are locked
1441 * Fixed: "Replies" should not be shown on forum threads that are locked
1441 * Fixed: SVN errors lead to svn username/password being displayed to end users (security issue)
1442 * Fixed: SVN errors lead to svn username/password being displayed to end users (security issue)
1442 * Fixed: http links containing hashes don't display correct
1443 * Fixed: http links containing hashes don't display correct
1443 * Fixed: Allow ampersands in Enumeration names
1444 * Fixed: Allow ampersands in Enumeration names
1444 * Fixed: Atom link on saved query does not include query_id
1445 * Fixed: Atom link on saved query does not include query_id
1445 * Fixed: Logtime info lost when there's an error updating an issue
1446 * Fixed: Logtime info lost when there's an error updating an issue
1446 * Fixed: TOC does not parse colorization markups
1447 * Fixed: TOC does not parse colorization markups
1447 * Fixed: CVS: add support for modules names with spaces
1448 * Fixed: CVS: add support for modules names with spaces
1448 * Fixed: Bad rendering on projects/add
1449 * Fixed: Bad rendering on projects/add
1449 * Fixed: exception when viewing differences on cvs
1450 * Fixed: exception when viewing differences on cvs
1450 * Fixed: export issue to pdf will messup when use Chinese language
1451 * Fixed: export issue to pdf will messup when use Chinese language
1451 * Fixed: Redmine::Scm::Adapters::GitAdapter#get_rev ignored GIT_BIN constant
1452 * Fixed: Redmine::Scm::Adapters::GitAdapter#get_rev ignored GIT_BIN constant
1452 * Fixed: Adding non-ASCII new issue type in the New Issue page have encoding error using IE
1453 * Fixed: Adding non-ASCII new issue type in the New Issue page have encoding error using IE
1453 * Fixed: Importing from trac : some wiki links are messed
1454 * Fixed: Importing from trac : some wiki links are messed
1454 * Fixed: Incorrect weekend definition in Hebrew calendar locale
1455 * Fixed: Incorrect weekend definition in Hebrew calendar locale
1455 * Fixed: Atom feeds don't provide author section for repository revisions
1456 * Fixed: Atom feeds don't provide author section for repository revisions
1456 * Fixed: In Activity views, changesets titles can be multiline while they should not
1457 * Fixed: In Activity views, changesets titles can be multiline while they should not
1457 * Fixed: Ignore unreadable subversion directories (read disabled using authz)
1458 * Fixed: Ignore unreadable subversion directories (read disabled using authz)
1458 * Fixed: lib/SVG/Graph/Graph.rb can't externalize stylesheets
1459 * Fixed: lib/SVG/Graph/Graph.rb can't externalize stylesheets
1459 * Fixed: Close statement handler in Redmine.pm
1460 * Fixed: Close statement handler in Redmine.pm
1460
1461
1461
1462
1462 == 2008-05-04 v0.7.1
1463 == 2008-05-04 v0.7.1
1463
1464
1464 * Thai translation added (Gampol Thitinilnithi)
1465 * Thai translation added (Gampol Thitinilnithi)
1465 * Translations updates
1466 * Translations updates
1466 * Escape HTML comment tags
1467 * Escape HTML comment tags
1467 * Prevent "can't convert nil into String" error when :sort_order param is not present
1468 * Prevent "can't convert nil into String" error when :sort_order param is not present
1468 * Fixed: Updating tickets add a time log with zero hours
1469 * Fixed: Updating tickets add a time log with zero hours
1469 * Fixed: private subprojects names are revealed on the project overview
1470 * Fixed: private subprojects names are revealed on the project overview
1470 * Fixed: Search for target version of "none" fails with postgres 8.3
1471 * Fixed: Search for target version of "none" fails with postgres 8.3
1471 * Fixed: Home, Logout, Login links shouldn't be absolute links
1472 * Fixed: Home, Logout, Login links shouldn't be absolute links
1472 * Fixed: 'Latest projects' box on the welcome screen should be hidden if there are no projects
1473 * Fixed: 'Latest projects' box on the welcome screen should be hidden if there are no projects
1473 * Fixed: error when using upcase language name in coderay
1474 * Fixed: error when using upcase language name in coderay
1474 * Fixed: error on Trac import when :due attribute is nil
1475 * Fixed: error on Trac import when :due attribute is nil
1475
1476
1476
1477
1477 == 2008-04-28 v0.7.0
1478 == 2008-04-28 v0.7.0
1478
1479
1479 * Forces Redmine to use rails 2.0.2 gem when vendor/rails is not present
1480 * Forces Redmine to use rails 2.0.2 gem when vendor/rails is not present
1480 * Queries can be marked as 'For all projects'. Such queries will be available on all projects and on the global issue list.
1481 * Queries can be marked as 'For all projects'. Such queries will be available on all projects and on the global issue list.
1481 * Add predefined date ranges to the time report
1482 * Add predefined date ranges to the time report
1482 * Time report can be done at issue level
1483 * Time report can be done at issue level
1483 * Various timelog report enhancements
1484 * Various timelog report enhancements
1484 * Accept the following formats for "hours" field: 1h, 1 h, 1 hour, 2 hours, 30m, 30min, 1h30, 1h30m, 1:30
1485 * Accept the following formats for "hours" field: 1h, 1 h, 1 hour, 2 hours, 30m, 30min, 1h30, 1h30m, 1:30
1485 * Display the context menu above and/or to the left of the click if needed
1486 * Display the context menu above and/or to the left of the click if needed
1486 * Make the admin project files list sortable
1487 * Make the admin project files list sortable
1487 * Mercurial: display working directory files sizes unless browsing a specific revision
1488 * Mercurial: display working directory files sizes unless browsing a specific revision
1488 * Preserve status filter and page number when using lock/unlock/activate links on the users list
1489 * Preserve status filter and page number when using lock/unlock/activate links on the users list
1489 * Redmine.pm support for LDAP authentication
1490 * Redmine.pm support for LDAP authentication
1490 * Better error message and AR errors in log for failed LDAP on-the-fly user creation
1491 * Better error message and AR errors in log for failed LDAP on-the-fly user creation
1491 * Redirected user to where he is coming from after logging hours
1492 * Redirected user to where he is coming from after logging hours
1492 * Warn user that subprojects are also deleted when deleting a project
1493 * Warn user that subprojects are also deleted when deleting a project
1493 * Include subprojects versions on calendar and gantt
1494 * Include subprojects versions on calendar and gantt
1494 * Notify project members when a message is posted if they want to receive notifications
1495 * Notify project members when a message is posted if they want to receive notifications
1495 * Fixed: Feed content limit setting has no effect
1496 * Fixed: Feed content limit setting has no effect
1496 * Fixed: Priorities not ordered when displayed as a filter in issue list
1497 * Fixed: Priorities not ordered when displayed as a filter in issue list
1497 * Fixed: can not display attached images inline in message replies
1498 * Fixed: can not display attached images inline in message replies
1498 * Fixed: Boards are not deleted when project is deleted
1499 * Fixed: Boards are not deleted when project is deleted
1499 * Fixed: trying to preview a new issue raises an exception with postgresql
1500 * Fixed: trying to preview a new issue raises an exception with postgresql
1500 * Fixed: single file 'View difference' links do not work because of duplicate slashes in url
1501 * Fixed: single file 'View difference' links do not work because of duplicate slashes in url
1501 * Fixed: inline image not displayed when including a wiki page
1502 * Fixed: inline image not displayed when including a wiki page
1502 * Fixed: CVS duplicate key violation
1503 * Fixed: CVS duplicate key violation
1503 * Fixed: ActiveRecord::StaleObjectError exception on closing a set of circular duplicate issues
1504 * Fixed: ActiveRecord::StaleObjectError exception on closing a set of circular duplicate issues
1504 * Fixed: custom field filters behaviour
1505 * Fixed: custom field filters behaviour
1505 * Fixed: Postgresql 8.3 compatibility
1506 * Fixed: Postgresql 8.3 compatibility
1506 * Fixed: Links to repository directories don't work
1507 * Fixed: Links to repository directories don't work
1507
1508
1508
1509
1509 == 2008-03-29 v0.7.0-rc1
1510 == 2008-03-29 v0.7.0-rc1
1510
1511
1511 * Overall activity view and feed added, link is available on the project list
1512 * Overall activity view and feed added, link is available on the project list
1512 * Git VCS support
1513 * Git VCS support
1513 * Rails 2.0 sessions cookie store compatibility
1514 * Rails 2.0 sessions cookie store compatibility
1514 * Use project identifiers in urls instead of ids
1515 * Use project identifiers in urls instead of ids
1515 * Default configuration data can now be loaded from the administration screen
1516 * Default configuration data can now be loaded from the administration screen
1516 * Administration settings screen split to tabs (email notifications options moved to 'Settings')
1517 * Administration settings screen split to tabs (email notifications options moved to 'Settings')
1517 * Project description is now unlimited and optional
1518 * Project description is now unlimited and optional
1518 * Wiki annotate view
1519 * Wiki annotate view
1519 * Escape HTML tag in textile content
1520 * Escape HTML tag in textile content
1520 * Add Redmine links to documents, versions, attachments and repository files
1521 * Add Redmine links to documents, versions, attachments and repository files
1521 * New setting to specify how many objects should be displayed on paginated lists. There are 2 ways to select a set of issues on the issue list:
1522 * New setting to specify how many objects should be displayed on paginated lists. There are 2 ways to select a set of issues on the issue list:
1522 * by using checkbox and/or the little pencil that will select/unselect all issues
1523 * by using checkbox and/or the little pencil that will select/unselect all issues
1523 * by clicking on the rows (but not on the links), Ctrl and Shift keys can be used to select multiple issues
1524 * by clicking on the rows (but not on the links), Ctrl and Shift keys can be used to select multiple issues
1524 * Context menu disabled on links so that the default context menu of the browser is displayed when right-clicking on a link (click anywhere else on the row to display the context menu)
1525 * Context menu disabled on links so that the default context menu of the browser is displayed when right-clicking on a link (click anywhere else on the row to display the context menu)
1525 * User display format is now configurable in administration settings
1526 * User display format is now configurable in administration settings
1526 * Issue list now supports bulk edit/move/delete (for a set of issues that belong to the same project)
1527 * Issue list now supports bulk edit/move/delete (for a set of issues that belong to the same project)
1527 * Merged 'change status', 'edit issue' and 'add note' actions:
1528 * Merged 'change status', 'edit issue' and 'add note' actions:
1528 * Users with 'edit issues' permission can now update any property including custom fields when adding a note or changing the status
1529 * Users with 'edit issues' permission can now update any property including custom fields when adding a note or changing the status
1529 * 'Change issue status' permission removed. To change an issue status, a user just needs to have either 'Edit' or 'Add note' permissions and some workflow transitions allowed
1530 * 'Change issue status' permission removed. To change an issue status, a user just needs to have either 'Edit' or 'Add note' permissions and some workflow transitions allowed
1530 * Details by assignees on issue summary view
1531 * Details by assignees on issue summary view
1531 * 'New issue' link in the main menu (accesskey 7). The drop-down lists to add an issue on the project overview and the issue list are removed
1532 * 'New issue' link in the main menu (accesskey 7). The drop-down lists to add an issue on the project overview and the issue list are removed
1532 * Change status select box default to current status
1533 * Change status select box default to current status
1533 * Preview for issue notes, news and messages
1534 * Preview for issue notes, news and messages
1534 * Optional description for attachments
1535 * Optional description for attachments
1535 * 'Fixed version' label changed to 'Target version'
1536 * 'Fixed version' label changed to 'Target version'
1536 * Let the user choose when deleting issues with reported hours to:
1537 * Let the user choose when deleting issues with reported hours to:
1537 * delete the hours
1538 * delete the hours
1538 * assign the hours to the project
1539 * assign the hours to the project
1539 * reassign the hours to another issue
1540 * reassign the hours to another issue
1540 * Date range filter and pagination on time entries detail view
1541 * Date range filter and pagination on time entries detail view
1541 * Propagate time tracking to the parent project
1542 * Propagate time tracking to the parent project
1542 * Switch added on the project activity view to include subprojects
1543 * Switch added on the project activity view to include subprojects
1543 * Display total estimated and spent hours on the version detail view
1544 * Display total estimated and spent hours on the version detail view
1544 * Weekly time tracking block for 'My page'
1545 * Weekly time tracking block for 'My page'
1545 * Permissions to edit time entries
1546 * Permissions to edit time entries
1546 * Include subprojects on the issue list, calendar, gantt and timelog by default (can be turned off is administration settings)
1547 * Include subprojects on the issue list, calendar, gantt and timelog by default (can be turned off is administration settings)
1547 * Roadmap enhancements (separate related issues from wiki contents, leading h1 in version wiki pages is hidden, smaller wiki headings)
1548 * Roadmap enhancements (separate related issues from wiki contents, leading h1 in version wiki pages is hidden, smaller wiki headings)
1548 * Make versions with same date sorted by name
1549 * Make versions with same date sorted by name
1549 * Allow issue list to be sorted by target version
1550 * Allow issue list to be sorted by target version
1550 * Related changesets messages displayed on the issue details view
1551 * Related changesets messages displayed on the issue details view
1551 * Create a journal and send an email when an issue is closed by commit
1552 * Create a journal and send an email when an issue is closed by commit
1552 * Add 'Author' to the available columns for the issue list
1553 * Add 'Author' to the available columns for the issue list
1553 * More appropriate default sort order on sortable columns
1554 * More appropriate default sort order on sortable columns
1554 * Add issue subject to the time entries view and issue subject, description and tracker to the csv export
1555 * Add issue subject to the time entries view and issue subject, description and tracker to the csv export
1555 * Permissions to edit issue notes
1556 * Permissions to edit issue notes
1556 * Display date/time instead of date on files list
1557 * Display date/time instead of date on files list
1557 * Do not show Roadmap menu item if the project doesn't define any versions
1558 * Do not show Roadmap menu item if the project doesn't define any versions
1558 * Allow longer version names (60 chars)
1559 * Allow longer version names (60 chars)
1559 * Ability to copy an existing workflow when creating a new role
1560 * Ability to copy an existing workflow when creating a new role
1560 * Display custom fields in two columns on the issue form
1561 * Display custom fields in two columns on the issue form
1561 * Added 'estimated time' in the csv export of the issue list
1562 * Added 'estimated time' in the csv export of the issue list
1562 * Display the last 30 days on the activity view rather than the current month (number of days can be configured in the application settings)
1563 * Display the last 30 days on the activity view rather than the current month (number of days can be configured in the application settings)
1563 * Setting for whether new projects should be public by default
1564 * Setting for whether new projects should be public by default
1564 * User preference to choose how comments/replies are displayed: in chronological or reverse chronological order
1565 * User preference to choose how comments/replies are displayed: in chronological or reverse chronological order
1565 * Added default value for custom fields
1566 * Added default value for custom fields
1566 * Added tabindex property on wiki toolbar buttons (to easily move from field to field using the tab key)
1567 * Added tabindex property on wiki toolbar buttons (to easily move from field to field using the tab key)
1567 * Redirect to issue page after creating a new issue
1568 * Redirect to issue page after creating a new issue
1568 * Wiki toolbar improvements (mainly for Firefox)
1569 * Wiki toolbar improvements (mainly for Firefox)
1569 * Display wiki syntax quick ref link on all wiki textareas
1570 * Display wiki syntax quick ref link on all wiki textareas
1570 * Display links to Atom feeds
1571 * Display links to Atom feeds
1571 * Breadcrumb nav for the forums
1572 * Breadcrumb nav for the forums
1572 * Show replies when choosing to display messages in the activity
1573 * Show replies when choosing to display messages in the activity
1573 * Added 'include' macro to include another wiki page
1574 * Added 'include' macro to include another wiki page
1574 * RedmineWikiFormatting page available as a static HTML file locally
1575 * RedmineWikiFormatting page available as a static HTML file locally
1575 * Wrap diff content
1576 * Wrap diff content
1576 * Strip out email address from authors in repository screens
1577 * Strip out email address from authors in repository screens
1577 * Highlight the current item of the main menu
1578 * Highlight the current item of the main menu
1578 * Added simple syntax highlighters for php and java languages
1579 * Added simple syntax highlighters for php and java languages
1579 * Do not show empty diffs
1580 * Do not show empty diffs
1580 * Show explicit error message when the scm command failed (eg. when svn binary is not available)
1581 * Show explicit error message when the scm command failed (eg. when svn binary is not available)
1581 * Lithuanian translation added (Sergej Jegorov)
1582 * Lithuanian translation added (Sergej Jegorov)
1582 * Ukrainan translation added (Natalia Konovka & Mykhaylo Sorochan)
1583 * Ukrainan translation added (Natalia Konovka & Mykhaylo Sorochan)
1583 * Danish translation added (Mads Vestergaard)
1584 * Danish translation added (Mads Vestergaard)
1584 * Added i18n support to the jstoolbar and various settings screen
1585 * Added i18n support to the jstoolbar and various settings screen
1585 * RedCloth's glyphs no longer user
1586 * RedCloth's glyphs no longer user
1586 * New icons for the wiki toolbar (from http://www.famfamfam.com/lab/icons/silk/)
1587 * New icons for the wiki toolbar (from http://www.famfamfam.com/lab/icons/silk/)
1587 * The following menus can now be extended by plugins: top_menu, account_menu, application_menu
1588 * The following menus can now be extended by plugins: top_menu, account_menu, application_menu
1588 * Added a simple rake task to fetch changesets from the repositories: rake redmine:fetch_changesets
1589 * Added a simple rake task to fetch changesets from the repositories: rake redmine:fetch_changesets
1589 * Remove hardcoded "Redmine" strings in account related emails and use application title instead
1590 * Remove hardcoded "Redmine" strings in account related emails and use application title instead
1590 * Mantis importer preserve bug ids
1591 * Mantis importer preserve bug ids
1591 * Trac importer: Trac guide wiki pages skipped
1592 * Trac importer: Trac guide wiki pages skipped
1592 * Trac importer: wiki attachments migration added
1593 * Trac importer: wiki attachments migration added
1593 * Trac importer: support database schema for Trac migration
1594 * Trac importer: support database schema for Trac migration
1594 * Trac importer: support CamelCase links
1595 * Trac importer: support CamelCase links
1595 * Removes the Redmine version from the footer (can be viewed on admin -> info)
1596 * Removes the Redmine version from the footer (can be viewed on admin -> info)
1596 * Rescue and display an error message when trying to delete a role that is in use
1597 * Rescue and display an error message when trying to delete a role that is in use
1597 * Add various 'X-Redmine' headers to email notifications: X-Redmine-Host, X-Redmine-Site, X-Redmine-Project, X-Redmine-Issue-Id, -Author, -Assignee, X-Redmine-Topic-Id
1598 * Add various 'X-Redmine' headers to email notifications: X-Redmine-Host, X-Redmine-Site, X-Redmine-Project, X-Redmine-Issue-Id, -Author, -Assignee, X-Redmine-Topic-Id
1598 * Add "--encoding utf8" option to the Mercurial "hg log" command in order to get utf8 encoded commit logs
1599 * Add "--encoding utf8" option to the Mercurial "hg log" command in order to get utf8 encoded commit logs
1599 * Fixed: Gantt and calendar not properly refreshed (fragment caching removed)
1600 * Fixed: Gantt and calendar not properly refreshed (fragment caching removed)
1600 * Fixed: Textile image with style attribute cause internal server error
1601 * Fixed: Textile image with style attribute cause internal server error
1601 * Fixed: wiki TOC not rendered properly when used in an issue or document description
1602 * Fixed: wiki TOC not rendered properly when used in an issue or document description
1602 * Fixed: 'has already been taken' error message on username and email fields if left empty
1603 * Fixed: 'has already been taken' error message on username and email fields if left empty
1603 * Fixed: non-ascii attachement filename with IE
1604 * Fixed: non-ascii attachement filename with IE
1604 * Fixed: wrong url for wiki syntax pop-up when Redmine urls are prefixed
1605 * Fixed: wrong url for wiki syntax pop-up when Redmine urls are prefixed
1605 * Fixed: search for all words doesn't work
1606 * Fixed: search for all words doesn't work
1606 * Fixed: Do not show sticky and locked checkboxes when replying to a message
1607 * Fixed: Do not show sticky and locked checkboxes when replying to a message
1607 * Fixed: Mantis importer: do not duplicate Mantis username in firstname and lastname if realname is blank
1608 * Fixed: Mantis importer: do not duplicate Mantis username in firstname and lastname if realname is blank
1608 * Fixed: Date custom fields not displayed as specified in application settings
1609 * Fixed: Date custom fields not displayed as specified in application settings
1609 * Fixed: titles not escaped in the activity view
1610 * Fixed: titles not escaped in the activity view
1610 * Fixed: issue queries can not use custom fields marked as 'for all projects' in a project context
1611 * Fixed: issue queries can not use custom fields marked as 'for all projects' in a project context
1611 * Fixed: on calendar, gantt and in the tracker filter on the issue list, only active trackers of the project (and its sub projects) should be available
1612 * Fixed: on calendar, gantt and in the tracker filter on the issue list, only active trackers of the project (and its sub projects) should be available
1612 * Fixed: locked users should not receive email notifications
1613 * Fixed: locked users should not receive email notifications
1613 * Fixed: custom field selection is not saved when unchecking them all on project settings
1614 * Fixed: custom field selection is not saved when unchecking them all on project settings
1614 * Fixed: can not lock a topic when creating it
1615 * Fixed: can not lock a topic when creating it
1615 * Fixed: Incorrect filtering for unset values when using 'is not' filter
1616 * Fixed: Incorrect filtering for unset values when using 'is not' filter
1616 * Fixed: PostgreSQL issues_seq_id not updated when using Trac importer
1617 * Fixed: PostgreSQL issues_seq_id not updated when using Trac importer
1617 * Fixed: ajax pagination does not scroll up
1618 * Fixed: ajax pagination does not scroll up
1618 * Fixed: error when uploading a file with no content-type specified by the browser
1619 * Fixed: error when uploading a file with no content-type specified by the browser
1619 * Fixed: wiki and changeset links not displayed when previewing issue description or notes
1620 * Fixed: wiki and changeset links not displayed when previewing issue description or notes
1620 * Fixed: 'LdapError: no bind result' error when authenticating
1621 * Fixed: 'LdapError: no bind result' error when authenticating
1621 * Fixed: 'LdapError: invalid binding information' when no username/password are set on the LDAP account
1622 * Fixed: 'LdapError: invalid binding information' when no username/password are set on the LDAP account
1622 * Fixed: CVS repository doesn't work if port is used in the url
1623 * Fixed: CVS repository doesn't work if port is used in the url
1623 * Fixed: Email notifications: host name is missing in generated links
1624 * Fixed: Email notifications: host name is missing in generated links
1624 * Fixed: Email notifications: referenced changesets, wiki pages, attachments... are not turned into links
1625 * Fixed: Email notifications: referenced changesets, wiki pages, attachments... are not turned into links
1625 * Fixed: Do not clear issue relations when moving an issue to another project if cross-project issue relations are allowed
1626 * Fixed: Do not clear issue relations when moving an issue to another project if cross-project issue relations are allowed
1626 * Fixed: "undefined method 'textilizable'" error on email notification when running Repository#fetch_changesets from the console
1627 * Fixed: "undefined method 'textilizable'" error on email notification when running Repository#fetch_changesets from the console
1627 * Fixed: Do not send an email with no recipient, cc or bcc
1628 * Fixed: Do not send an email with no recipient, cc or bcc
1628 * Fixed: fetch_changesets fails on commit comments that close 2 duplicates issues.
1629 * Fixed: fetch_changesets fails on commit comments that close 2 duplicates issues.
1629 * Fixed: Mercurial browsing under unix-like os and for directory depth > 2
1630 * Fixed: Mercurial browsing under unix-like os and for directory depth > 2
1630 * Fixed: Wiki links with pipe can not be used in wiki tables
1631 * Fixed: Wiki links with pipe can not be used in wiki tables
1631 * Fixed: migrate_from_trac doesn't import timestamps of wiki and tickets
1632 * Fixed: migrate_from_trac doesn't import timestamps of wiki and tickets
1632 * Fixed: when bulk editing, setting "Assigned to" to "nobody" causes an sql error with Postgresql
1633 * Fixed: when bulk editing, setting "Assigned to" to "nobody" causes an sql error with Postgresql
1633
1634
1634
1635
1635 == 2008-03-12 v0.6.4
1636 == 2008-03-12 v0.6.4
1636
1637
1637 * Fixed: private projects name are displayed on account/show even if the current user doesn't have access to these private projects
1638 * Fixed: private projects name are displayed on account/show even if the current user doesn't have access to these private projects
1638 * Fixed: potential LDAP authentication security flaw
1639 * Fixed: potential LDAP authentication security flaw
1639 * Fixed: context submenus on the issue list don't show up with IE6.
1640 * Fixed: context submenus on the issue list don't show up with IE6.
1640 * Fixed: Themes are not applied with Rails 2.0
1641 * Fixed: Themes are not applied with Rails 2.0
1641 * Fixed: crash when fetching Mercurial changesets if changeset[:files] is nil
1642 * Fixed: crash when fetching Mercurial changesets if changeset[:files] is nil
1642 * Fixed: Mercurial repository browsing
1643 * Fixed: Mercurial repository browsing
1643 * Fixed: undefined local variable or method 'log' in CvsAdapter when a cvs command fails
1644 * Fixed: undefined local variable or method 'log' in CvsAdapter when a cvs command fails
1644 * Fixed: not null constraints not removed with Postgresql
1645 * Fixed: not null constraints not removed with Postgresql
1645 * Doctype set to transitional
1646 * Doctype set to transitional
1646
1647
1647
1648
1648 == 2007-12-18 v0.6.3
1649 == 2007-12-18 v0.6.3
1649
1650
1650 * Fixed: upload doesn't work in 'Files' section
1651 * Fixed: upload doesn't work in 'Files' section
1651
1652
1652
1653
1653 == 2007-12-16 v0.6.2
1654 == 2007-12-16 v0.6.2
1654
1655
1655 * Search engine: issue custom fields can now be searched
1656 * Search engine: issue custom fields can now be searched
1656 * News comments are now textilized
1657 * News comments are now textilized
1657 * Updated Japanese translation (Satoru Kurashiki)
1658 * Updated Japanese translation (Satoru Kurashiki)
1658 * Updated Chinese translation (Shortie Lo)
1659 * Updated Chinese translation (Shortie Lo)
1659 * Fixed Rails 2.0 compatibility bugs:
1660 * Fixed Rails 2.0 compatibility bugs:
1660 * Unable to create a wiki
1661 * Unable to create a wiki
1661 * Gantt and calendar error
1662 * Gantt and calendar error
1662 * Trac importer error (readonly? is defined by ActiveRecord)
1663 * Trac importer error (readonly? is defined by ActiveRecord)
1663 * Fixed: 'assigned to me' filter broken
1664 * Fixed: 'assigned to me' filter broken
1664 * Fixed: crash when validation fails on issue edition with no custom fields
1665 * Fixed: crash when validation fails on issue edition with no custom fields
1665 * Fixed: reposman "can't find group" error
1666 * Fixed: reposman "can't find group" error
1666 * Fixed: 'LDAP account password is too long' error when leaving the field empty on creation
1667 * Fixed: 'LDAP account password is too long' error when leaving the field empty on creation
1667 * Fixed: empty lines when displaying repository files with Windows style eol
1668 * Fixed: empty lines when displaying repository files with Windows style eol
1668 * Fixed: missing body closing tag in repository annotate and entry views
1669 * Fixed: missing body closing tag in repository annotate and entry views
1669
1670
1670
1671
1671 == 2007-12-10 v0.6.1
1672 == 2007-12-10 v0.6.1
1672
1673
1673 * Rails 2.0 compatibility
1674 * Rails 2.0 compatibility
1674 * Custom fields can now be displayed as columns on the issue list
1675 * Custom fields can now be displayed as columns on the issue list
1675 * Added version details view (accessible from the roadmap)
1676 * Added version details view (accessible from the roadmap)
1676 * Roadmap: more accurate completion percentage calculation (done ratio of open issues is now taken into account)
1677 * Roadmap: more accurate completion percentage calculation (done ratio of open issues is now taken into account)
1677 * Added per-project tracker selection. Trackers can be selected on project settings
1678 * Added per-project tracker selection. Trackers can be selected on project settings
1678 * Anonymous users can now be allowed to create, edit, comment issues, comment news and post messages in the forums
1679 * Anonymous users can now be allowed to create, edit, comment issues, comment news and post messages in the forums
1679 * Forums: messages can now be edited/deleted (explicit permissions need to be given)
1680 * Forums: messages can now be edited/deleted (explicit permissions need to be given)
1680 * Forums: topics can be locked so that no reply can be added
1681 * Forums: topics can be locked so that no reply can be added
1681 * Forums: topics can be marked as sticky so that they always appear at the top of the list
1682 * Forums: topics can be marked as sticky so that they always appear at the top of the list
1682 * Forums: attachments can now be added to replies
1683 * Forums: attachments can now be added to replies
1683 * Added time zone support
1684 * Added time zone support
1684 * Added a setting to choose the account activation strategy (available in application settings)
1685 * Added a setting to choose the account activation strategy (available in application settings)
1685 * Added 'Classic' theme (inspired from the v0.51 design)
1686 * Added 'Classic' theme (inspired from the v0.51 design)
1686 * Added an alternate theme which provides issue list colorization based on issues priority
1687 * Added an alternate theme which provides issue list colorization based on issues priority
1687 * Added Bazaar SCM adapter
1688 * Added Bazaar SCM adapter
1688 * Added Annotate/Blame view in the repository browser (except for Darcs SCM)
1689 * Added Annotate/Blame view in the repository browser (except for Darcs SCM)
1689 * Diff style (inline or side by side) automatically saved as a user preference
1690 * Diff style (inline or side by side) automatically saved as a user preference
1690 * Added issues status changes on the activity view (by Cyril Mougel)
1691 * Added issues status changes on the activity view (by Cyril Mougel)
1691 * Added forums topics on the activity view (disabled by default)
1692 * Added forums topics on the activity view (disabled by default)
1692 * Added an option on 'My account' for users who don't want to be notified of changes that they make
1693 * Added an option on 'My account' for users who don't want to be notified of changes that they make
1693 * Trac importer now supports mysql and postgresql databases
1694 * Trac importer now supports mysql and postgresql databases
1694 * Trac importer improvements (by Mat Trudel)
1695 * Trac importer improvements (by Mat Trudel)
1695 * 'fixed version' field can now be displayed on the issue list
1696 * 'fixed version' field can now be displayed on the issue list
1696 * Added a couple of new formats for the 'date format' setting
1697 * Added a couple of new formats for the 'date format' setting
1697 * Added Traditional Chinese translation (by Shortie Lo)
1698 * Added Traditional Chinese translation (by Shortie Lo)
1698 * Added Russian translation (iGor kMeta)
1699 * Added Russian translation (iGor kMeta)
1699 * Project name format limitation removed (name can now contain any character)
1700 * Project name format limitation removed (name can now contain any character)
1700 * Project identifier maximum length changed from 12 to 20
1701 * Project identifier maximum length changed from 12 to 20
1701 * Changed the maximum length of LDAP account to 255 characters
1702 * Changed the maximum length of LDAP account to 255 characters
1702 * Removed the 12 characters limit on passwords
1703 * Removed the 12 characters limit on passwords
1703 * Added wiki macros support
1704 * Added wiki macros support
1704 * Performance improvement on workflow setup screen
1705 * Performance improvement on workflow setup screen
1705 * More detailed html title on several views
1706 * More detailed html title on several views
1706 * Custom fields can now be reordered
1707 * Custom fields can now be reordered
1707 * Search engine: search can be restricted to an exact phrase by using quotation marks
1708 * Search engine: search can be restricted to an exact phrase by using quotation marks
1708 * Added custom fields marked as 'For all projects' to the csv export of the cross project issue list
1709 * Added custom fields marked as 'For all projects' to the csv export of the cross project issue list
1709 * Email notifications are now sent as Blind carbon copy by default
1710 * Email notifications are now sent as Blind carbon copy by default
1710 * Fixed: all members (including non active) should be deleted when deleting a project
1711 * Fixed: all members (including non active) should be deleted when deleting a project
1711 * Fixed: Error on wiki syntax link (accessible from wiki/edit)
1712 * Fixed: Error on wiki syntax link (accessible from wiki/edit)
1712 * Fixed: 'quick jump to a revision' form on the revisions list
1713 * Fixed: 'quick jump to a revision' form on the revisions list
1713 * Fixed: error on admin/info if there's more than 1 plugin installed
1714 * Fixed: error on admin/info if there's more than 1 plugin installed
1714 * Fixed: svn or ldap password can be found in clear text in the html source in editing mode
1715 * Fixed: svn or ldap password can be found in clear text in the html source in editing mode
1715 * Fixed: 'Assigned to' drop down list is not sorted
1716 * Fixed: 'Assigned to' drop down list is not sorted
1716 * Fixed: 'View all issues' link doesn't work on issues/show
1717 * Fixed: 'View all issues' link doesn't work on issues/show
1717 * Fixed: error on account/register when validation fails
1718 * Fixed: error on account/register when validation fails
1718 * Fixed: Error when displaying the issue list if a float custom field is marked as 'used as filter'
1719 * Fixed: Error when displaying the issue list if a float custom field is marked as 'used as filter'
1719 * Fixed: Mercurial adapter breaks on missing :files entry in changeset hash (James Britt)
1720 * Fixed: Mercurial adapter breaks on missing :files entry in changeset hash (James Britt)
1720 * Fixed: Wrong feed URLs on the home page
1721 * Fixed: Wrong feed URLs on the home page
1721 * Fixed: Update of time entry fails when the issue has been moved to an other project
1722 * Fixed: Update of time entry fails when the issue has been moved to an other project
1722 * Fixed: Error when moving an issue without changing its tracker (Postgresql)
1723 * Fixed: Error when moving an issue without changing its tracker (Postgresql)
1723 * Fixed: Changes not recorded when using :pserver string (CVS adapter)
1724 * Fixed: Changes not recorded when using :pserver string (CVS adapter)
1724 * Fixed: admin should be able to move issues to any project
1725 * Fixed: admin should be able to move issues to any project
1725 * Fixed: adding an attachment is not possible when changing the status of an issue
1726 * Fixed: adding an attachment is not possible when changing the status of an issue
1726 * Fixed: No mime-types in documents/files downloading
1727 * Fixed: No mime-types in documents/files downloading
1727 * Fixed: error when sorting the messages if there's only one board for the project
1728 * Fixed: error when sorting the messages if there's only one board for the project
1728 * Fixed: 'me' doesn't appear in the drop down filters on a project issue list.
1729 * Fixed: 'me' doesn't appear in the drop down filters on a project issue list.
1729
1730
1730 == 2007-11-04 v0.6.0
1731 == 2007-11-04 v0.6.0
1731
1732
1732 * Permission model refactoring.
1733 * Permission model refactoring.
1733 * Permissions: there are now 2 builtin roles that can be used to specify permissions given to other users than members of projects
1734 * Permissions: there are now 2 builtin roles that can be used to specify permissions given to other users than members of projects
1734 * Permissions: some permissions (eg. browse the repository) can be removed for certain roles
1735 * Permissions: some permissions (eg. browse the repository) can be removed for certain roles
1735 * Permissions: modules (eg. issue tracking, news, documents...) can be enabled/disabled at project level
1736 * Permissions: modules (eg. issue tracking, news, documents...) can be enabled/disabled at project level
1736 * Added Mantis and Trac importers
1737 * Added Mantis and Trac importers
1737 * New application layout
1738 * New application layout
1738 * Added "Bulk edit" functionality on the issue list
1739 * Added "Bulk edit" functionality on the issue list
1739 * More flexible mail notifications settings at user level
1740 * More flexible mail notifications settings at user level
1740 * Added AJAX based context menu on the project issue list that provide shortcuts for editing, re-assigning, changing the status or the priority, moving or deleting an issue
1741 * Added AJAX based context menu on the project issue list that provide shortcuts for editing, re-assigning, changing the status or the priority, moving or deleting an issue
1741 * Added the hability to copy an issue. It can be done from the "issue/show" view or from the context menu on the issue list
1742 * Added the hability to copy an issue. It can be done from the "issue/show" view or from the context menu on the issue list
1742 * Added the ability to customize issue list columns (at application level or for each saved query)
1743 * Added the ability to customize issue list columns (at application level or for each saved query)
1743 * Overdue versions (date reached and open issues > 0) are now always displayed on the roadmap
1744 * Overdue versions (date reached and open issues > 0) are now always displayed on the roadmap
1744 * Added the ability to rename wiki pages (specific permission required)
1745 * Added the ability to rename wiki pages (specific permission required)
1745 * Search engines now supports pagination. Results are sorted in reverse chronological order
1746 * Search engines now supports pagination. Results are sorted in reverse chronological order
1746 * Added "Estimated hours" attribute on issues
1747 * Added "Estimated hours" attribute on issues
1747 * A category with assigned issue can now be deleted. 2 options are proposed: remove assignments or reassign issues to another category
1748 * A category with assigned issue can now be deleted. 2 options are proposed: remove assignments or reassign issues to another category
1748 * Forum notifications are now also sent to the authors of the thread, even if they donΓ―ΒΏΒ½t watch the board
1749 * Forum notifications are now also sent to the authors of the thread, even if they donΓ―ΒΏΒ½t watch the board
1749 * Added an application setting to specify the application protocol (http or https) used to generate urls in emails
1750 * Added an application setting to specify the application protocol (http or https) used to generate urls in emails
1750 * Gantt chart: now starts at the current month by default
1751 * Gantt chart: now starts at the current month by default
1751 * Gantt chart: month count and zoom factor are automatically saved as user preferences
1752 * Gantt chart: month count and zoom factor are automatically saved as user preferences
1752 * Wiki links can now refer to other project wikis
1753 * Wiki links can now refer to other project wikis
1753 * Added wiki index by date
1754 * Added wiki index by date
1754 * Added preview on add/edit issue form
1755 * Added preview on add/edit issue form
1755 * Emails footer can now be customized from the admin interface (Admin -> Email notifications)
1756 * Emails footer can now be customized from the admin interface (Admin -> Email notifications)
1756 * Default encodings for repository files can now be set in application settings (used to convert files content and diff to UTF-8 so that theyΓ―ΒΏΒ½re properly displayed)
1757 * Default encodings for repository files can now be set in application settings (used to convert files content and diff to UTF-8 so that theyΓ―ΒΏΒ½re properly displayed)
1757 * Calendar: first day of week can now be set in lang files
1758 * Calendar: first day of week can now be set in lang files
1758 * Automatic closing of duplicate issues
1759 * Automatic closing of duplicate issues
1759 * Added a cross-project issue list
1760 * Added a cross-project issue list
1760 * AJAXified the SCM browser (tree view)
1761 * AJAXified the SCM browser (tree view)
1761 * Pretty URL for the repository browser (Cyril Mougel)
1762 * Pretty URL for the repository browser (Cyril Mougel)
1762 * Search engine: added a checkbox to search titles only
1763 * Search engine: added a checkbox to search titles only
1763 * Added "% done" in the filter list
1764 * Added "% done" in the filter list
1764 * Enumerations: values can now be reordered and a default value can be specified (eg. default issue priority)
1765 * Enumerations: values can now be reordered and a default value can be specified (eg. default issue priority)
1765 * Added some accesskeys
1766 * Added some accesskeys
1766 * Added "Float" as a custom field format
1767 * Added "Float" as a custom field format
1767 * Added basic Theme support
1768 * Added basic Theme support
1768 * Added the ability to set the Γ―ΒΏΒ½done ratioΓ―ΒΏΒ½ of issues fixed by commit (Nikolay Solakov)
1769 * Added the ability to set the Γ―ΒΏΒ½done ratioΓ―ΒΏΒ½ of issues fixed by commit (Nikolay Solakov)
1769 * Added custom fields in issue related mail notifications
1770 * Added custom fields in issue related mail notifications
1770 * Email notifications are now sent in plain text and html
1771 * Email notifications are now sent in plain text and html
1771 * Gantt chart can now be exported to a graphic file (png). This functionality is only available if RMagick is installed.
1772 * Gantt chart can now be exported to a graphic file (png). This functionality is only available if RMagick is installed.
1772 * Added syntax highlightment for repository files and wiki
1773 * Added syntax highlightment for repository files and wiki
1773 * Improved automatic Redmine links
1774 * Improved automatic Redmine links
1774 * Added automatic table of content support on wiki pages
1775 * Added automatic table of content support on wiki pages
1775 * Added radio buttons on the documents list to sort documents by category, date, title or author
1776 * Added radio buttons on the documents list to sort documents by category, date, title or author
1776 * Added basic plugin support, with a sample plugin
1777 * Added basic plugin support, with a sample plugin
1777 * Added a link to add a new category when creating or editing an issue
1778 * Added a link to add a new category when creating or editing an issue
1778 * Added a "Assignable" boolean on the Role model. If unchecked, issues can not be assigned to users having this role.
1779 * Added a "Assignable" boolean on the Role model. If unchecked, issues can not be assigned to users having this role.
1779 * Added an option to be able to relate issues in different projects
1780 * Added an option to be able to relate issues in different projects
1780 * Added the ability to move issues (to another project) without changing their trackers.
1781 * Added the ability to move issues (to another project) without changing their trackers.
1781 * Atom feeds added on project activity, news and changesets
1782 * Atom feeds added on project activity, news and changesets
1782 * Added the ability to reset its own RSS access key
1783 * Added the ability to reset its own RSS access key
1783 * Main project list now displays root projects with their subprojects
1784 * Main project list now displays root projects with their subprojects
1784 * Added anchor links to issue notes
1785 * Added anchor links to issue notes
1785 * Added reposman Ruby version. This script can now register created repositories in Redmine (Nicolas Chuche)
1786 * Added reposman Ruby version. This script can now register created repositories in Redmine (Nicolas Chuche)
1786 * Issue notes are now included in search
1787 * Issue notes are now included in search
1787 * Added email sending test functionality
1788 * Added email sending test functionality
1788 * Added LDAPS support for LDAP authentication
1789 * Added LDAPS support for LDAP authentication
1789 * Removed hard-coded URLs in mail templates
1790 * Removed hard-coded URLs in mail templates
1790 * Subprojects are now grouped by projects in the navigation drop-down menu
1791 * Subprojects are now grouped by projects in the navigation drop-down menu
1791 * Added a new value for date filters: this week
1792 * Added a new value for date filters: this week
1792 * Added cache for application settings
1793 * Added cache for application settings
1793 * Added Polish translation (Tomasz Gawryl)
1794 * Added Polish translation (Tomasz Gawryl)
1794 * Added Czech translation (Jan Kadlecek)
1795 * Added Czech translation (Jan Kadlecek)
1795 * Added Romanian translation (Csongor Bartus)
1796 * Added Romanian translation (Csongor Bartus)
1796 * Added Hebrew translation (Bob Builder)
1797 * Added Hebrew translation (Bob Builder)
1797 * Added Serbian translation (Dragan Matic)
1798 * Added Serbian translation (Dragan Matic)
1798 * Added Korean translation (Choi Jong Yoon)
1799 * Added Korean translation (Choi Jong Yoon)
1799 * Fixed: the link to delete issue relations is displayed even if the user is not authorized to delete relations
1800 * Fixed: the link to delete issue relations is displayed even if the user is not authorized to delete relations
1800 * Performance improvement on calendar and gantt
1801 * Performance improvement on calendar and gantt
1801 * Fixed: wiki preview doesnΓ―ΒΏΒ½t work on long entries
1802 * Fixed: wiki preview doesnΓ―ΒΏΒ½t work on long entries
1802 * Fixed: queries with multiple custom fields return no result
1803 * Fixed: queries with multiple custom fields return no result
1803 * Fixed: Can not authenticate user against LDAP if its DN contains non-ascii characters
1804 * Fixed: Can not authenticate user against LDAP if its DN contains non-ascii characters
1804 * Fixed: URL with ~ broken in wiki formatting
1805 * Fixed: URL with ~ broken in wiki formatting
1805 * Fixed: some quotation marks are rendered as strange characters in pdf
1806 * Fixed: some quotation marks are rendered as strange characters in pdf
1806
1807
1807
1808
1808 == 2007-07-15 v0.5.1
1809 == 2007-07-15 v0.5.1
1809
1810
1810 * per project forums added
1811 * per project forums added
1811 * added the ability to archive projects
1812 * added the ability to archive projects
1812 * added Γ―ΒΏΒ½WatchΓ―ΒΏΒ½ functionality on issues. It allows users to receive notifications about issue changes
1813 * added Γ―ΒΏΒ½WatchΓ―ΒΏΒ½ functionality on issues. It allows users to receive notifications about issue changes
1813 * custom fields for issues can now be used as filters on issue list
1814 * custom fields for issues can now be used as filters on issue list
1814 * added per user custom queries
1815 * added per user custom queries
1815 * commit messages are now scanned for referenced or fixed issue IDs (keywords defined in Admin -> Settings)
1816 * commit messages are now scanned for referenced or fixed issue IDs (keywords defined in Admin -> Settings)
1816 * projects list now shows the list of public projects and private projects for which the user is a member
1817 * projects list now shows the list of public projects and private projects for which the user is a member
1817 * versions can now be created with no date
1818 * versions can now be created with no date
1818 * added issue count details for versions on Reports view
1819 * added issue count details for versions on Reports view
1819 * added time report, by member/activity/tracker/version and year/month/week for the selected period
1820 * added time report, by member/activity/tracker/version and year/month/week for the selected period
1820 * each category can now be associated to a user, so that new issues in that category are automatically assigned to that user
1821 * each category can now be associated to a user, so that new issues in that category are automatically assigned to that user
1821 * added autologin feature (disabled by default)
1822 * added autologin feature (disabled by default)
1822 * optimistic locking added for wiki edits
1823 * optimistic locking added for wiki edits
1823 * added wiki diff
1824 * added wiki diff
1824 * added the ability to destroy wiki pages (requires permission)
1825 * added the ability to destroy wiki pages (requires permission)
1825 * a wiki page can now be attached to each version, and displayed on the roadmap
1826 * a wiki page can now be attached to each version, and displayed on the roadmap
1826 * attachments can now be added to wiki pages (original patch by Pavol Murin) and displayed online
1827 * attachments can now be added to wiki pages (original patch by Pavol Murin) and displayed online
1827 * added an option to see all versions in the roadmap view (including completed ones)
1828 * added an option to see all versions in the roadmap view (including completed ones)
1828 * added basic issue relations
1829 * added basic issue relations
1829 * added the ability to log time when changing an issue status
1830 * added the ability to log time when changing an issue status
1830 * account information can now be sent to the user when creating an account
1831 * account information can now be sent to the user when creating an account
1831 * author and assignee of an issue always receive notifications (even if they turned of mail notifications)
1832 * author and assignee of an issue always receive notifications (even if they turned of mail notifications)
1832 * added a quick search form in page header
1833 * added a quick search form in page header
1833 * added 'me' value for 'assigned to' and 'author' query filters
1834 * added 'me' value for 'assigned to' and 'author' query filters
1834 * added a link on revision screen to see the entire diff for the revision
1835 * added a link on revision screen to see the entire diff for the revision
1835 * added last commit message for each entry in repository browser
1836 * added last commit message for each entry in repository browser
1836 * added the ability to view a file diff with free to/from revision selection.
1837 * added the ability to view a file diff with free to/from revision selection.
1837 * text files can now be viewed online when browsing the repository
1838 * text files can now be viewed online when browsing the repository
1838 * added basic support for other SCM: CVS (Ralph Vater), Mercurial and Darcs
1839 * added basic support for other SCM: CVS (Ralph Vater), Mercurial and Darcs
1839 * added fragment caching for svn diffs
1840 * added fragment caching for svn diffs
1840 * added fragment caching for calendar and gantt views
1841 * added fragment caching for calendar and gantt views
1841 * login field automatically focused on login form
1842 * login field automatically focused on login form
1842 * subproject name displayed on issue list, calendar and gantt
1843 * subproject name displayed on issue list, calendar and gantt
1843 * added an option to choose the date format: language based or ISO 8601
1844 * added an option to choose the date format: language based or ISO 8601
1844 * added a simple mail handler. It lets users add notes to an existing issue by replying to the initial notification email.
1845 * added a simple mail handler. It lets users add notes to an existing issue by replying to the initial notification email.
1845 * a 403 error page is now displayed (instead of a blank page) when trying to access a protected page
1846 * a 403 error page is now displayed (instead of a blank page) when trying to access a protected page
1846 * added portuguese translation (Joao Carlos Clementoni)
1847 * added portuguese translation (Joao Carlos Clementoni)
1847 * added partial online help japanese translation (Ken Date)
1848 * added partial online help japanese translation (Ken Date)
1848 * added bulgarian translation (Nikolay Solakov)
1849 * added bulgarian translation (Nikolay Solakov)
1849 * added dutch translation (Linda van den Brink)
1850 * added dutch translation (Linda van den Brink)
1850 * added swedish translation (Thomas Habets)
1851 * added swedish translation (Thomas Habets)
1851 * italian translation update (Alessio Spadaro)
1852 * italian translation update (Alessio Spadaro)
1852 * japanese translation update (Satoru Kurashiki)
1853 * japanese translation update (Satoru Kurashiki)
1853 * fixed: error on history atom feed when thereΓ―ΒΏΒ½s no notes on an issue change
1854 * fixed: error on history atom feed when thereΓ―ΒΏΒ½s no notes on an issue change
1854 * fixed: error in journalizing an issue with longtext custom fields (Postgresql)
1855 * fixed: error in journalizing an issue with longtext custom fields (Postgresql)
1855 * fixed: creation of Oracle schema
1856 * fixed: creation of Oracle schema
1856 * fixed: last day of the month not included in project activity
1857 * fixed: last day of the month not included in project activity
1857 * fixed: files with an apostrophe in their names can't be accessed in SVN repository
1858 * fixed: files with an apostrophe in their names can't be accessed in SVN repository
1858 * fixed: performance issue on RepositoriesController#revisions when a changeset has a great number of changes (eg. 100,000)
1859 * fixed: performance issue on RepositoriesController#revisions when a changeset has a great number of changes (eg. 100,000)
1859 * fixed: open/closed issue counts are always 0 on reports view (postgresql)
1860 * fixed: open/closed issue counts are always 0 on reports view (postgresql)
1860 * fixed: date query filters (wrong results and sql error with postgresql)
1861 * fixed: date query filters (wrong results and sql error with postgresql)
1861 * fixed: confidentiality issue on account/show (private project names displayed to anyone)
1862 * fixed: confidentiality issue on account/show (private project names displayed to anyone)
1862 * fixed: Long text custom fields displayed without line breaks
1863 * fixed: Long text custom fields displayed without line breaks
1863 * fixed: Error when editing the wokflow after deleting a status
1864 * fixed: Error when editing the wokflow after deleting a status
1864 * fixed: SVN commit dates are now stored as local time
1865 * fixed: SVN commit dates are now stored as local time
1865
1866
1866
1867
1867 == 2007-04-11 v0.5.0
1868 == 2007-04-11 v0.5.0
1868
1869
1869 * added per project Wiki
1870 * added per project Wiki
1870 * added rss/atom feeds at project level (custom queries can be used as feeds)
1871 * added rss/atom feeds at project level (custom queries can be used as feeds)
1871 * added search engine (search in issues, news, commits, wiki pages, documents)
1872 * added search engine (search in issues, news, commits, wiki pages, documents)
1872 * simple time tracking functionality added
1873 * simple time tracking functionality added
1873 * added version due dates on calendar and gantt
1874 * added version due dates on calendar and gantt
1874 * added subprojects issue count on project Reports page
1875 * added subprojects issue count on project Reports page
1875 * added the ability to copy an existing workflow when creating a new tracker
1876 * added the ability to copy an existing workflow when creating a new tracker
1876 * added the ability to include subprojects on calendar and gantt
1877 * added the ability to include subprojects on calendar and gantt
1877 * added the ability to select trackers to display on calendar and gantt (Jeffrey Jones)
1878 * added the ability to select trackers to display on calendar and gantt (Jeffrey Jones)
1878 * added side by side svn diff view (Cyril Mougel)
1879 * added side by side svn diff view (Cyril Mougel)
1879 * added back subproject filter on issue list
1880 * added back subproject filter on issue list
1880 * added permissions report in admin area
1881 * added permissions report in admin area
1881 * added a status filter on users list
1882 * added a status filter on users list
1882 * support for password-protected SVN repositories
1883 * support for password-protected SVN repositories
1883 * SVN commits are now stored in the database
1884 * SVN commits are now stored in the database
1884 * added simple svn statistics SVG graphs
1885 * added simple svn statistics SVG graphs
1885 * progress bars for roadmap versions (Nick Read)
1886 * progress bars for roadmap versions (Nick Read)
1886 * issue history now shows file uploads and deletions
1887 * issue history now shows file uploads and deletions
1887 * #id patterns are turned into links to issues in descriptions and commit messages
1888 * #id patterns are turned into links to issues in descriptions and commit messages
1888 * japanese translation added (Satoru Kurashiki)
1889 * japanese translation added (Satoru Kurashiki)
1889 * chinese simplified translation added (Andy Wu)
1890 * chinese simplified translation added (Andy Wu)
1890 * italian translation added (Alessio Spadaro)
1891 * italian translation added (Alessio Spadaro)
1891 * added scripts to manage SVN repositories creation and user access control using ssh+svn (Nicolas Chuche)
1892 * added scripts to manage SVN repositories creation and user access control using ssh+svn (Nicolas Chuche)
1892 * better calendar rendering time
1893 * better calendar rendering time
1893 * fixed migration scripts to work with mysql 5 running in strict mode
1894 * fixed migration scripts to work with mysql 5 running in strict mode
1894 * fixed: error when clicking "add" with no block selected on my/page_layout
1895 * fixed: error when clicking "add" with no block selected on my/page_layout
1895 * fixed: hard coded links in navigation bar
1896 * fixed: hard coded links in navigation bar
1896 * fixed: table_name pre/suffix support
1897 * fixed: table_name pre/suffix support
1897
1898
1898
1899
1899 == 2007-02-18 v0.4.2
1900 == 2007-02-18 v0.4.2
1900
1901
1901 * Rails 1.2 is now required
1902 * Rails 1.2 is now required
1902 * settings are now stored in the database and editable through the application in: Admin -> Settings (config_custom.rb is no longer used)
1903 * settings are now stored in the database and editable through the application in: Admin -> Settings (config_custom.rb is no longer used)
1903 * added project roadmap view
1904 * added project roadmap view
1904 * mail notifications added when a document, a file or an attachment is added
1905 * mail notifications added when a document, a file or an attachment is added
1905 * tooltips added on Gantt chart and calender to view the details of the issues
1906 * tooltips added on Gantt chart and calender to view the details of the issues
1906 * ability to set the sort order for roles, trackers, issue statuses
1907 * ability to set the sort order for roles, trackers, issue statuses
1907 * added missing fields to csv export: priority, start date, due date, done ratio
1908 * added missing fields to csv export: priority, start date, due date, done ratio
1908 * added total number of issues per tracker on project overview
1909 * added total number of issues per tracker on project overview
1909 * all icons replaced (new icons are based on GPL icon set: "KDE Crystal Diamond 2.5" -by paolino- and "kNeu! Alpha v0.1" -by Pablo Fabregat-)
1910 * all icons replaced (new icons are based on GPL icon set: "KDE Crystal Diamond 2.5" -by paolino- and "kNeu! Alpha v0.1" -by Pablo Fabregat-)
1910 * added back "fixed version" field on issue screen and in filters
1911 * added back "fixed version" field on issue screen and in filters
1911 * project settings screen split in 4 tabs
1912 * project settings screen split in 4 tabs
1912 * custom fields screen split in 3 tabs (one for each kind of custom field)
1913 * custom fields screen split in 3 tabs (one for each kind of custom field)
1913 * multiple issues pdf export now rendered as a table
1914 * multiple issues pdf export now rendered as a table
1914 * added a button on users/list to manually activate an account
1915 * added a button on users/list to manually activate an account
1915 * added a setting option to disable "password lost" functionality
1916 * added a setting option to disable "password lost" functionality
1916 * added a setting option to set max number of issues in csv/pdf exports
1917 * added a setting option to set max number of issues in csv/pdf exports
1917 * fixed: subprojects count is always 0 on projects list
1918 * fixed: subprojects count is always 0 on projects list
1918 * fixed: locked users are proposed when adding a member to a project
1919 * fixed: locked users are proposed when adding a member to a project
1919 * fixed: setting an issue status as default status leads to an sql error with SQLite
1920 * fixed: setting an issue status as default status leads to an sql error with SQLite
1920 * fixed: unable to delete an issue status even if it's not used yet
1921 * fixed: unable to delete an issue status even if it's not used yet
1921 * fixed: filters ignored when exporting a predefined query to csv/pdf
1922 * fixed: filters ignored when exporting a predefined query to csv/pdf
1922 * fixed: crash when french "issue_edit" email notification is sent
1923 * fixed: crash when french "issue_edit" email notification is sent
1923 * fixed: hide mail preference not saved (my/account)
1924 * fixed: hide mail preference not saved (my/account)
1924 * fixed: crash when a new user try to edit its "my page" layout
1925 * fixed: crash when a new user try to edit its "my page" layout
1925
1926
1926
1927
1927 == 2007-01-03 v0.4.1
1928 == 2007-01-03 v0.4.1
1928
1929
1929 * fixed: emails have no recipient when one of the project members has notifications disabled
1930 * fixed: emails have no recipient when one of the project members has notifications disabled
1930
1931
1931
1932
1932 == 2007-01-02 v0.4.0
1933 == 2007-01-02 v0.4.0
1933
1934
1934 * simple SVN browser added (just needs svn binaries in PATH)
1935 * simple SVN browser added (just needs svn binaries in PATH)
1935 * comments can now be added on news
1936 * comments can now be added on news
1936 * "my page" is now customizable
1937 * "my page" is now customizable
1937 * more powerfull and savable filters for issues lists
1938 * more powerfull and savable filters for issues lists
1938 * improved issues change history
1939 * improved issues change history
1939 * new functionality: move an issue to another project or tracker
1940 * new functionality: move an issue to another project or tracker
1940 * new functionality: add a note to an issue
1941 * new functionality: add a note to an issue
1941 * new report: project activity
1942 * new report: project activity
1942 * "start date" and "% done" fields added on issues
1943 * "start date" and "% done" fields added on issues
1943 * project calendar added
1944 * project calendar added
1944 * gantt chart added (exportable to pdf)
1945 * gantt chart added (exportable to pdf)
1945 * single/multiple issues pdf export added
1946 * single/multiple issues pdf export added
1946 * issues reports improvements
1947 * issues reports improvements
1947 * multiple file upload for issues, documents and files
1948 * multiple file upload for issues, documents and files
1948 * option to set maximum size of uploaded files
1949 * option to set maximum size of uploaded files
1949 * textile formating of issue and news descritions (RedCloth required)
1950 * textile formating of issue and news descritions (RedCloth required)
1950 * integration of DotClear jstoolbar for textile formatting
1951 * integration of DotClear jstoolbar for textile formatting
1951 * calendar date picker for date fields (LGPL DHTML Calendar http://sourceforge.net/projects/jscalendar)
1952 * calendar date picker for date fields (LGPL DHTML Calendar http://sourceforge.net/projects/jscalendar)
1952 * new filter in issues list: Author
1953 * new filter in issues list: Author
1953 * ajaxified paginators
1954 * ajaxified paginators
1954 * news rss feed added
1955 * news rss feed added
1955 * option to set number of results per page on issues list
1956 * option to set number of results per page on issues list
1956 * localized csv separator (comma/semicolon)
1957 * localized csv separator (comma/semicolon)
1957 * csv output encoded to ISO-8859-1
1958 * csv output encoded to ISO-8859-1
1958 * user custom field displayed on account/show
1959 * user custom field displayed on account/show
1959 * default configuration improved (default roles, trackers, status, permissions and workflows)
1960 * default configuration improved (default roles, trackers, status, permissions and workflows)
1960 * language for default configuration data can now be chosen when running 'load_default_data' task
1961 * language for default configuration data can now be chosen when running 'load_default_data' task
1961 * javascript added on custom field form to show/hide fields according to the format of custom field
1962 * javascript added on custom field form to show/hide fields according to the format of custom field
1962 * fixed: custom fields not in csv exports
1963 * fixed: custom fields not in csv exports
1963 * fixed: project settings now displayed according to user's permissions
1964 * fixed: project settings now displayed according to user's permissions
1964 * fixed: application error when no version is selected on projects/add_file
1965 * fixed: application error when no version is selected on projects/add_file
1965 * fixed: public actions not authorized for members of non public projects
1966 * fixed: public actions not authorized for members of non public projects
1966 * fixed: non public projects were shown on welcome screen even if current user is not a member
1967 * fixed: non public projects were shown on welcome screen even if current user is not a member
1967
1968
1968
1969
1969 == 2006-10-08 v0.3.0
1970 == 2006-10-08 v0.3.0
1970
1971
1971 * user authentication against multiple LDAP (optional)
1972 * user authentication against multiple LDAP (optional)
1972 * token based "lost password" functionality
1973 * token based "lost password" functionality
1973 * user self-registration functionality (optional)
1974 * user self-registration functionality (optional)
1974 * custom fields now available for issues, users and projects
1975 * custom fields now available for issues, users and projects
1975 * new custom field format "text" (displayed as a textarea field)
1976 * new custom field format "text" (displayed as a textarea field)
1976 * project & administration drop down menus in navigation bar for quicker access
1977 * project & administration drop down menus in navigation bar for quicker access
1977 * text formatting is preserved for long text fields (issues, projects and news descriptions)
1978 * text formatting is preserved for long text fields (issues, projects and news descriptions)
1978 * urls and emails are turned into clickable links in long text fields
1979 * urls and emails are turned into clickable links in long text fields
1979 * "due date" field added on issues
1980 * "due date" field added on issues
1980 * tracker selection filter added on change log
1981 * tracker selection filter added on change log
1981 * Localization plugin replaced with GLoc 1.1.0 (iconv required)
1982 * Localization plugin replaced with GLoc 1.1.0 (iconv required)
1982 * error messages internationalization
1983 * error messages internationalization
1983 * german translation added (thanks to Karim Trott)
1984 * german translation added (thanks to Karim Trott)
1984 * data locking for issues to prevent update conflicts (using ActiveRecord builtin optimistic locking)
1985 * data locking for issues to prevent update conflicts (using ActiveRecord builtin optimistic locking)
1985 * new filter in issues list: "Fixed version"
1986 * new filter in issues list: "Fixed version"
1986 * active filters are displayed with colored background on issues list
1987 * active filters are displayed with colored background on issues list
1987 * custom configuration is now defined in config/config_custom.rb
1988 * custom configuration is now defined in config/config_custom.rb
1988 * user object no more stored in session (only user_id)
1989 * user object no more stored in session (only user_id)
1989 * news summary field is no longer required
1990 * news summary field is no longer required
1990 * tables and forms redesign
1991 * tables and forms redesign
1991 * Fixed: boolean custom field not working
1992 * Fixed: boolean custom field not working
1992 * Fixed: error messages for custom fields are not displayed
1993 * Fixed: error messages for custom fields are not displayed
1993 * Fixed: invalid custom fields should have a red border
1994 * Fixed: invalid custom fields should have a red border
1994 * Fixed: custom fields values are not validated on issue update
1995 * Fixed: custom fields values are not validated on issue update
1995 * Fixed: unable to choose an empty value for 'List' custom fields
1996 * Fixed: unable to choose an empty value for 'List' custom fields
1996 * Fixed: no issue categories sorting
1997 * Fixed: no issue categories sorting
1997 * Fixed: incorrect versions sorting
1998 * Fixed: incorrect versions sorting
1998
1999
1999
2000
2000 == 2006-07-12 - v0.2.2
2001 == 2006-07-12 - v0.2.2
2001
2002
2002 * Fixed: bug in "issues list"
2003 * Fixed: bug in "issues list"
2003
2004
2004
2005
2005 == 2006-07-09 - v0.2.1
2006 == 2006-07-09 - v0.2.1
2006
2007
2007 * new databases supported: Oracle, PostgreSQL, SQL Server
2008 * new databases supported: Oracle, PostgreSQL, SQL Server
2008 * projects/subprojects hierarchy (1 level of subprojects only)
2009 * projects/subprojects hierarchy (1 level of subprojects only)
2009 * environment information display in admin/info
2010 * environment information display in admin/info
2010 * more filter options in issues list (rev6)
2011 * more filter options in issues list (rev6)
2011 * default language based on browser settings (Accept-Language HTTP header)
2012 * default language based on browser settings (Accept-Language HTTP header)
2012 * issues list exportable to CSV (rev6)
2013 * issues list exportable to CSV (rev6)
2013 * simple_format and auto_link on long text fields
2014 * simple_format and auto_link on long text fields
2014 * more data validations
2015 * more data validations
2015 * Fixed: error when all mail notifications are unchecked in admin/mail_options
2016 * Fixed: error when all mail notifications are unchecked in admin/mail_options
2016 * Fixed: all project news are displayed on project summary
2017 * Fixed: all project news are displayed on project summary
2017 * Fixed: Can't change user password in users/edit
2018 * Fixed: Can't change user password in users/edit
2018 * Fixed: Error on tables creation with PostgreSQL (rev5)
2019 * Fixed: Error on tables creation with PostgreSQL (rev5)
2019 * Fixed: SQL error in "issue reports" view with PostgreSQL (rev5)
2020 * Fixed: SQL error in "issue reports" view with PostgreSQL (rev5)
2020
2021
2021
2022
2022 == 2006-06-25 - v0.1.0
2023 == 2006-06-25 - v0.1.0
2023
2024
2024 * multiple users/multiple projects
2025 * multiple users/multiple projects
2025 * role based access control
2026 * role based access control
2026 * issue tracking system
2027 * issue tracking system
2027 * fully customizable workflow
2028 * fully customizable workflow
2028 * documents/files repository
2029 * documents/files repository
2029 * email notifications on issue creation and update
2030 * email notifications on issue creation and update
2030 * multilanguage support (except for error messages):english, french, spanish
2031 * multilanguage support (except for error messages):english, french, spanish
2031 * online manual in french (unfinished)
2032 * online manual in french (unfinished)
General Comments 0
You need to be logged in to leave comments. Login now