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