##// END OF EJS Templates
Backported r2740 to r2742 from trunk....
Jean-Philippe Lang -
r2648:e27460a0a78d
parent child
Show More
@@ -1,44 +1,45
1 1 # redMine - project management software
2 2 # Copyright (C) 2006 Jean-Philippe Lang
3 3 #
4 4 # This program is free software; you can redistribute it and/or
5 5 # modify it under the terms of the GNU General Public License
6 6 # as published by the Free Software Foundation; either version 2
7 7 # of the License, or (at your option) any later version.
8 8 #
9 9 # This program is distributed in the hope that it will be useful,
10 10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 12 # GNU General Public License for more details.
13 13 #
14 14 # You should have received a copy of the GNU General Public License
15 15 # along with this program; if not, write to the Free Software
16 16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17 17
18 require 'rails_generator/secret_key_generator'
19
18 20 class Token < ActiveRecord::Base
19 21 belongs_to :user
22 validates_uniqueness_of :value
20 23
21 24 @@validity_time = 1.day
22 25
23 26 def before_create
24 27 self.value = Token.generate_token_value
25 28 end
26 29
27 30 # Return true if token has expired
28 31 def expired?
29 32 return Time.now > self.created_on + @@validity_time
30 33 end
31 34
32 35 # Delete all expired tokens
33 36 def self.destroy_expired
34 37 Token.delete_all ["action <> 'feeds' AND created_on < ?", Time.now - @@validity_time]
35 38 end
36 39
37 40 private
38 41 def self.generate_token_value
39 chars = ("a".."z").to_a + ("A".."Z").to_a + ("0".."9").to_a
40 token_value = ''
41 40.times { |i| token_value << chars[rand(chars.size-1)] }
42 token_value
42 s = Rails::SecretKeyGenerator.new(object_id).generate_secret
43 s[0, 40]
43 44 end
44 45 end
@@ -1,294 +1,300
1 1 # redMine - project management software
2 2 # Copyright (C) 2006-2007 Jean-Philippe Lang
3 3 #
4 4 # This program is free software; you can redistribute it and/or
5 5 # modify it under the terms of the GNU General Public License
6 6 # as published by the Free Software Foundation; either version 2
7 7 # of the License, or (at your option) any later version.
8 8 #
9 9 # This program is distributed in the hope that it will be useful,
10 10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 12 # GNU General Public License for more details.
13 13 #
14 14 # You should have received a copy of the GNU General Public License
15 15 # along with this program; if not, write to the Free Software
16 16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17 17
18 18 require "digest/sha1"
19 19
20 20 class User < ActiveRecord::Base
21 21
22 22 # Account statuses
23 23 STATUS_ANONYMOUS = 0
24 24 STATUS_ACTIVE = 1
25 25 STATUS_REGISTERED = 2
26 26 STATUS_LOCKED = 3
27 27
28 28 USER_FORMATS = {
29 29 :firstname_lastname => '#{firstname} #{lastname}',
30 30 :firstname => '#{firstname}',
31 31 :lastname_firstname => '#{lastname} #{firstname}',
32 32 :lastname_coma_firstname => '#{lastname}, #{firstname}',
33 33 :username => '#{login}'
34 34 }
35 35
36 36 has_many :memberships, :class_name => 'Member', :include => [ :project, :role ], :conditions => "#{Project.table_name}.status=#{Project::STATUS_ACTIVE}", :order => "#{Project.table_name}.name"
37 37 has_many :members, :dependent => :delete_all
38 38 has_many :projects, :through => :memberships
39 39 has_many :issue_categories, :foreign_key => 'assigned_to_id', :dependent => :nullify
40 40 has_many :changesets, :dependent => :nullify
41 41 has_one :preference, :dependent => :destroy, :class_name => 'UserPreference'
42 42 has_one :rss_token, :dependent => :destroy, :class_name => 'Token', :conditions => "action='feeds'"
43 43 belongs_to :auth_source
44 44
45 45 # Active non-anonymous users scope
46 46 named_scope :active, :conditions => "#{User.table_name}.status = #{STATUS_ACTIVE}"
47 47
48 48 acts_as_customizable
49 49
50 50 attr_accessor :password, :password_confirmation
51 51 attr_accessor :last_before_login_on
52 52 # Prevents unauthorized assignments
53 53 attr_protected :login, :admin, :password, :password_confirmation, :hashed_password
54 54
55 55 validates_presence_of :login, :firstname, :lastname, :mail, :if => Proc.new { |user| !user.is_a?(AnonymousUser) }
56 56 validates_uniqueness_of :login, :if => Proc.new { |user| !user.login.blank? }
57 57 validates_uniqueness_of :mail, :if => Proc.new { |user| !user.mail.blank? }
58 58 # Login must contain lettres, numbers, underscores only
59 59 validates_format_of :login, :with => /^[a-z0-9_\-@\.]*$/i
60 60 validates_length_of :login, :maximum => 30
61 61 validates_format_of :firstname, :lastname, :with => /^[\w\s\'\-\.]*$/i
62 62 validates_length_of :firstname, :lastname, :maximum => 30
63 63 validates_format_of :mail, :with => /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i, :allow_nil => true
64 64 validates_length_of :mail, :maximum => 60, :allow_nil => true
65 65 validates_length_of :password, :minimum => 4, :allow_nil => true
66 66 validates_confirmation_of :password, :allow_nil => true
67 67
68 68 def before_create
69 69 self.mail_notification = false
70 70 true
71 71 end
72 72
73 73 def before_save
74 74 # update hashed_password if password was set
75 75 self.hashed_password = User.hash_password(self.password) if self.password
76 76 end
77 77
78 78 def reload(*args)
79 79 @name = nil
80 80 super
81 81 end
82 82
83 83 # Returns the user that matches provided login and password, or nil
84 84 def self.try_to_login(login, password)
85 85 # Make sure no one can sign in with an empty password
86 86 return nil if password.to_s.empty?
87 87 user = find(:first, :conditions => ["login=?", login])
88 88 if user
89 89 # user is already in local database
90 90 return nil if !user.active?
91 91 if user.auth_source
92 92 # user has an external authentication method
93 93 return nil unless user.auth_source.authenticate(login, password)
94 94 else
95 95 # authentication with local password
96 96 return nil unless User.hash_password(password) == user.hashed_password
97 97 end
98 98 else
99 99 # user is not yet registered, try to authenticate with available sources
100 100 attrs = AuthSource.authenticate(login, password)
101 101 if attrs
102 102 user = new(*attrs)
103 103 user.login = login
104 104 user.language = Setting.default_language
105 105 if user.save
106 106 user.reload
107 107 logger.info("User '#{user.login}' created from the LDAP") if logger
108 108 end
109 109 end
110 110 end
111 111 user.update_attribute(:last_login_on, Time.now) if user && !user.new_record?
112 112 user
113 113 rescue => text
114 114 raise text
115 115 end
116 116
117 117 # Return user's full name for display
118 118 def name(formatter = nil)
119 119 if formatter
120 120 eval('"' + (USER_FORMATS[formatter] || USER_FORMATS[:firstname_lastname]) + '"')
121 121 else
122 122 @name ||= eval('"' + (USER_FORMATS[Setting.user_format] || USER_FORMATS[:firstname_lastname]) + '"')
123 123 end
124 124 end
125 125
126 126 def active?
127 127 self.status == STATUS_ACTIVE
128 128 end
129 129
130 130 def registered?
131 131 self.status == STATUS_REGISTERED
132 132 end
133 133
134 134 def locked?
135 135 self.status == STATUS_LOCKED
136 136 end
137 137
138 138 def check_password?(clear_password)
139 139 User.hash_password(clear_password) == self.hashed_password
140 140 end
141 141
142 142 def pref
143 143 self.preference ||= UserPreference.new(:user => self)
144 144 end
145 145
146 146 def time_zone
147 147 @time_zone ||= (self.pref.time_zone.blank? ? nil : ActiveSupport::TimeZone[self.pref.time_zone])
148 148 end
149 149
150 150 def wants_comments_in_reverse_order?
151 151 self.pref[:comments_sorting] == 'desc'
152 152 end
153 153
154 154 # Return user's RSS key (a 40 chars long string), used to access feeds
155 155 def rss_key
156 156 token = self.rss_token || Token.create(:user => self, :action => 'feeds')
157 157 token.value
158 158 end
159 159
160 160 # Return an array of project ids for which the user has explicitly turned mail notifications on
161 161 def notified_projects_ids
162 162 @notified_projects_ids ||= memberships.select {|m| m.mail_notification?}.collect(&:project_id)
163 163 end
164 164
165 165 def notified_project_ids=(ids)
166 166 Member.update_all("mail_notification = #{connection.quoted_false}", ['user_id = ?', id])
167 167 Member.update_all("mail_notification = #{connection.quoted_true}", ['user_id = ? AND project_id IN (?)', id, ids]) if ids && !ids.empty?
168 168 @notified_projects_ids = nil
169 169 notified_projects_ids
170 170 end
171 171
172 172 def self.find_by_rss_key(key)
173 173 token = Token.find_by_value(key)
174 174 token && token.user.active? ? token.user : nil
175 175 end
176 176
177 177 def self.find_by_autologin_key(key)
178 token = Token.find_by_action_and_value('autologin', key)
179 token && (token.created_on > Setting.autologin.to_i.day.ago) && token.user.active? ? token.user : nil
178 tokens = Token.find_all_by_action_and_value('autologin', key)
179 # Make sure there's only 1 token that matches the key
180 if tokens.size == 1
181 token = tokens.first
182 if (token.created_on > Setting.autologin.to_i.day.ago) && token.user && token.user.active?
183 token.user
184 end
185 end
180 186 end
181 187
182 188 # Makes find_by_mail case-insensitive
183 189 def self.find_by_mail(mail)
184 190 find(:first, :conditions => ["LOWER(mail) = ?", mail.to_s.downcase])
185 191 end
186 192
187 193 # Sort users by their display names
188 194 def <=>(user)
189 195 self.to_s.downcase <=> user.to_s.downcase
190 196 end
191 197
192 198 def to_s
193 199 name
194 200 end
195 201
196 202 def logged?
197 203 true
198 204 end
199 205
200 206 def anonymous?
201 207 !logged?
202 208 end
203 209
204 210 # Return user's role for project
205 211 def role_for_project(project)
206 212 # No role on archived projects
207 213 return nil unless project && project.active?
208 214 if logged?
209 215 # Find project membership
210 216 membership = memberships.detect {|m| m.project_id == project.id}
211 217 if membership
212 218 membership.role
213 219 else
214 220 @role_non_member ||= Role.non_member
215 221 end
216 222 else
217 223 @role_anonymous ||= Role.anonymous
218 224 end
219 225 end
220 226
221 227 # Return true if the user is a member of project
222 228 def member_of?(project)
223 229 role_for_project(project).member?
224 230 end
225 231
226 232 # Return true if the user is allowed to do the specified action on project
227 233 # action can be:
228 234 # * a parameter-like Hash (eg. :controller => 'projects', :action => 'edit')
229 235 # * a permission Symbol (eg. :edit_project)
230 236 def allowed_to?(action, project, options={})
231 237 if project
232 238 # No action allowed on archived projects
233 239 return false unless project.active?
234 240 # No action allowed on disabled modules
235 241 return false unless project.allows_to?(action)
236 242 # Admin users are authorized for anything else
237 243 return true if admin?
238 244
239 245 role = role_for_project(project)
240 246 return false unless role
241 247 role.allowed_to?(action) && (project.is_public? || role.member?)
242 248
243 249 elsif options[:global]
244 250 # authorize if user has at least one role that has this permission
245 251 roles = memberships.collect {|m| m.role}.uniq
246 252 roles.detect {|r| r.allowed_to?(action)} || (self.logged? ? Role.non_member.allowed_to?(action) : Role.anonymous.allowed_to?(action))
247 253 else
248 254 false
249 255 end
250 256 end
251 257
252 258 def self.current=(user)
253 259 @current_user = user
254 260 end
255 261
256 262 def self.current
257 263 @current_user ||= User.anonymous
258 264 end
259 265
260 266 def self.anonymous
261 267 anonymous_user = AnonymousUser.find(:first)
262 268 if anonymous_user.nil?
263 269 anonymous_user = AnonymousUser.create(:lastname => 'Anonymous', :firstname => '', :mail => '', :login => '', :status => 0)
264 270 raise 'Unable to create the anonymous user.' if anonymous_user.new_record?
265 271 end
266 272 anonymous_user
267 273 end
268 274
269 275 private
270 276 # Return password digest
271 277 def self.hash_password(clear_password)
272 278 Digest::SHA1.hexdigest(clear_password || "")
273 279 end
274 280 end
275 281
276 282 class AnonymousUser < User
277 283
278 284 def validate_on_create
279 285 # There should be only one AnonymousUser in the database
280 286 errors.add_to_base 'An anonymous user already exists.' if AnonymousUser.find(:first)
281 287 end
282 288
283 289 def available_custom_fields
284 290 []
285 291 end
286 292
287 293 # Overrides a few properties
288 294 def logged?; false end
289 295 def admin; false end
290 296 def name; 'Anonymous' end
291 297 def mail; nil end
292 298 def time_zone; nil end
293 299 def rss_key; nil end
294 300 end
@@ -1,911 +1,912
1 1 == Redmine changelog
2 2
3 3 Redmine - project management software
4 4 Copyright (C) 2006-2009 Jean-Philippe Lang
5 5 http://www.redmine.org/
6 6
7 7
8 8 == 2009-xx-xx v0.8.4
9 9
10 10 * Allow textile mailto links
11 11 * Fixed: memory consumption when uploading file
12 12 * Fixed: Mercurial integration doesn't work if Redmine is installed in folder path containing space
13 13 * Fixed: an error is raised when no tab is available on project settings
14 14 * Fixed: insert image macro corrupts urls with excalamation marks
15 15 * Fixed: error on cross-project gantt PNG export
16 16 * Fixed: self and alternate links in atom feeds do not respect Atom specs
17 17 * Fixed: accept any svn tunnel scheme in repository URL
18 18 * Fixed: issues/show should accept user's rss key
19 19 * Fixed: consistency of custom fields display on the issue detail view
20 20 * Fixed: wiki comments length validation is missing
21 * Fixed: weak autologin token generation algorithm causes duplicate tokens
21 22
22 23
23 24 == 2009-04-05 v0.8.3
24 25
25 26 * Separate project field and subject in cross-project issue view
26 27 * Ability to set language for redmine:load_default_data task using REDMINE_LANG environment variable
27 28 * Rescue Redmine::DefaultData::DataAlreadyLoaded in redmine:load_default_data task
28 29 * CSS classes to highlight own and assigned issues
29 30 * Hide "New file" link on wiki pages from printing
30 31 * Flush buffer when asking for language in redmine:load_default_data task
31 32 * Minimum project identifier length set to 1
32 33 * Include headers so that emails don't trigger vacation auto-responders
33 34 * Fixed: Time entries csv export links for all projects are malformed
34 35 * Fixed: Files without Version aren't visible in the Activity page
35 36 * Fixed: Commit logs are centered in the repo browser
36 37 * Fixed: News summary field content is not searchable
37 38 * Fixed: Journal#save has a wrong signature
38 39 * Fixed: Email footer signature convention
39 40 * Fixed: Timelog report do not show time for non-versioned issues
40 41
41 42
42 43 == 2009-03-07 v0.8.2
43 44
44 45 * Send an email to the user when an administrator activates a registered user
45 46 * Strip keywords from received email body
46 47 * Footer updated to 2009
47 48 * Show RSS-link even when no issues is found
48 49 * One click filter action in activity view
49 50 * Clickable/linkable line #'s while browsing the repo or viewing a file
50 51 * Links to versions on files list
51 52 * Added request and controller objects to the hooks by default
52 53 * Fixed: exporting an issue with attachments to PDF raises an error
53 54 * Fixed: "too few arguments" error may occur on activerecord error translation
54 55 * Fixed: "Default columns Displayed on the Issues list" setting is not easy to read
55 56 * Fixed: visited links to closed tickets are not striked through with IE6
56 57 * Fixed: MailHandler#plain_text_body returns nil if there was nothing to strip
57 58 * Fixed: MailHandler raises an error when processing an email without From header
58 59
59 60
60 61 == 2009-02-15 v0.8.1
61 62
62 63 * Select watchers on new issue form
63 64 * Issue description is no longer a required field
64 65 * Files module: ability to add files without version
65 66 * Jump to the current tab when using the project quick-jump combo
66 67 * Display a warning if some attachments were not saved
67 68 * Import custom fields values from emails on issue creation
68 69 * Show view/annotate/download links on entry and annotate views
69 70 * Admin Info Screen: Display if plugin assets directory is writable
70 71 * Adds a 'Create and continue' button on the new issue form
71 72 * IMAP: add options to move received emails
72 73 * Do not show Category field when categories are not defined
73 74 * Lower the project identifier limit to a minimum of two characters
74 75 * Add "closed" html class to closed entries in issue list
75 76 * Fixed: broken redirect URL on login failure
76 77 * Fixed: Deleted files are shown when using Darcs
77 78 * Fixed: Darcs adapter works on Win32 only
78 79 * Fixed: syntax highlight doesn't appear in new ticket preview
79 80 * Fixed: email notification for changes I make still occurs when running Repository.fetch_changesets
80 81 * Fixed: no error is raised when entering invalid hours on the issue update form
81 82 * Fixed: Details time log report CSV export doesn't honour date format from settings
82 83 * Fixed: invalid css classes on issue details
83 84 * Fixed: Trac importer creates duplicate custom values
84 85 * Fixed: inline attached image should not match partial filename
85 86
86 87
87 88 == 2008-12-30 v0.8.0
88 89
89 90 * Setting added in order to limit the number of diff lines that should be displayed
90 91 * Makes logged-in username in topbar linking to
91 92 * Mail handler: strip tags when receiving a html-only email
92 93 * Mail handler: add watchers before sending notification
93 94 * Adds a css class (overdue) to overdue issues on issue lists and detail views
94 95 * Fixed: project activity truncated after viewing user's activity
95 96 * Fixed: email address entered for password recovery shouldn't be case-sensitive
96 97 * Fixed: default flag removed when editing a default enumeration
97 98 * Fixed: default category ignored when adding a document
98 99 * Fixed: error on repository user mapping when a repository username is blank
99 100 * Fixed: Firefox cuts off large diffs
100 101 * Fixed: CVS browser should not show dead revisions (deleted files)
101 102 * Fixed: escape double-quotes in image titles
102 103 * Fixed: escape textarea content when editing a issue note
103 104 * Fixed: JS error on context menu with IE
104 105 * Fixed: bold syntax around single character in series doesn't work
105 106 * Fixed several XSS vulnerabilities
106 107 * Fixed a SQL injection vulnerability
107 108
108 109
109 110 == 2008-12-07 v0.8.0-rc1
110 111
111 112 * Wiki page protection
112 113 * Wiki page hierarchy. Parent page can be assigned on the Rename screen
113 114 * Adds support for issue creation via email
114 115 * Adds support for free ticket filtering and custom queries on Gantt chart and calendar
115 116 * Cross-project search
116 117 * Ability to search a project and its subprojects
117 118 * Ability to search the projects the user belongs to
118 119 * Adds custom fields on time entries
119 120 * Adds boolean and list custom fields for time entries as criteria on time report
120 121 * Cross-project time reports
121 122 * Display latest user's activity on account/show view
122 123 * Show last connexion time on user's page
123 124 * Obfuscates email address on user's account page using javascript
124 125 * wiki TOC rendered as an unordered list
125 126 * Adds the ability to search for a user on the administration users list
126 127 * Adds the ability to search for a project name or identifier on the administration projects list
127 128 * Redirect user to the previous page after logging in
128 129 * Adds a permission 'view wiki edits' so that wiki history can be hidden to certain users
129 130 * Adds permissions for viewing the watcher list and adding new watchers on the issue detail view
130 131 * Adds permissions to let users edit and/or delete their messages
131 132 * Link to activity view when displaying dates
132 133 * Hide Redmine version in atom feeds and pdf properties
133 134 * 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.
134 135 * Sort users by their display names so that user dropdown lists are sorted alphabetically
135 136 * Adds estimated hours to issue filters
136 137 * Switch order of current and previous revisions in side-by-side diff
137 138 * Render the commit changes list as a tree
138 139 * Adds watch/unwatch functionality at forum topic level
139 140 * When moving an issue to another project, reassign it to the category with same name if any
140 141 * Adds child_pages macro for wiki pages
141 142 * Use GET instead of POST on roadmap (#718), gantt and calendar forms
142 143 * Search engine: display total results count and count by result type
143 144 * Email delivery configuration moved to an unversioned YAML file (config/email.yml, see the sample file)
144 145 * Adds icons on search results
145 146 * Adds 'Edit' link on account/show for admin users
146 147 * Adds Lock/Unlock/Activate link on user edit screen
147 148 * Adds user count in status drop down on admin user list
148 149 * Adds multi-levels blockquotes support by using > at the beginning of lines
149 150 * Adds a Reply link to each issue note
150 151 * Adds plain text only option for mail notifications
151 152 * Gravatar support for issue detail, user grid, and activity stream (disabled by default)
152 153 * Adds 'Delete wiki pages attachments' permission
153 154 * Show the most recent file when displaying an inline image
154 155 * Makes permission screens localized
155 156 * AuthSource list: display associated users count and disable 'Delete' buton if any
156 157 * Make the 'duplicates of' relation asymmetric
157 158 * Adds username to the password reminder email
158 159 * Adds links to forum messages using message#id syntax
159 160 * Allow same name for custom fields on different object types
160 161 * One-click bulk edition using the issue list context menu within the same project
161 162 * 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.
162 163 * Adds checkboxes toggle links on permissions report
163 164 * Adds Trac-Like anchors on wiki headings
164 165 * Adds support for wiki links with anchor
165 166 * Adds category to the issue context menu
166 167 * Adds a workflow overview screen
167 168 * Appends the filename to the attachment url so that clients that ignore content-disposition http header get the real filename
168 169 * Dots allowed in custom field name
169 170 * Adds posts quoting functionality
170 171 * Adds an option to generate sequential project identifiers
171 172 * Adds mailto link on the user administration list
172 173 * Ability to remove enumerations (activities, priorities, document categories) that are in use. Associated objects can be reassigned to another value
173 174 * Gantt chart: display issues that don't have a due date if they are assigned to a version with a date
174 175 * Change projects homepage limit to 255 chars
175 176 * 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
176 177 * Adds "please select" to activity select box if no activity is set as default
177 178 * Do not silently ignore timelog validation failure on issue edit
178 179 * Adds a rake task to send reminder emails
179 180 * Allow empty cells in wiki tables
180 181 * Makes wiki text formatter pluggable
181 182 * Adds back textile acronyms support
182 183 * Remove pre tag attributes
183 184 * Plugin hooks
184 185 * Pluggable admin menu
185 186 * Plugins can provide activity content
186 187 * Moves plugin list to its own administration menu item
187 188 * Adds url and author_url plugin attributes
188 189 * Adds Plugin#requires_redmine method so that plugin compatibility can be checked against current Redmine version
189 190 * Adds atom feed on time entries details
190 191 * Adds project name to issues feed title
191 192 * Adds a css class on menu items in order to apply item specific styles (eg. icons)
192 193 * Adds a Redmine plugin generators
193 194 * Adds timelog link to the issue context menu
194 195 * Adds links to the user page on various views
195 196 * Turkish translation by Ismail Sezen
196 197 * Catalan translation
197 198 * Vietnamese translation
198 199 * Slovak translation
199 200 * Better naming of activity feed if only one kind of event is displayed
200 201 * Enable syntax highlight on issues, messages and news
201 202 * Add target version to the issue list context menu
202 203 * Hide 'Target version' filter if no version is defined
203 204 * Add filters on cross-project issue list for custom fields marked as 'For all projects'
204 205 * Turn ftp urls into links
205 206 * Hiding the View Differences button when a wiki page's history only has one version
206 207 * Messages on a Board can now be sorted by the number of replies
207 208 * Adds a class ('me') to events of the activity view created by current user
208 209 * Strip pre/code tags content from activity view events
209 210 * Display issue notes in the activity view
210 211 * Adds links to changesets atom feed on repository browser
211 212 * Track project and tracker changes in issue history
212 213 * Adds anchor to atom feed messages links
213 214 * Adds a key in lang files to set the decimal separator (point or comma) in csv exports
214 215 * Makes importer work with Trac 0.8.x
215 216 * Upgraded to Prototype 1.6.0.1
216 217 * File viewer for attached text files
217 218 * Menu mapper: add support for :before, :after and :last options to #push method and add #delete method
218 219 * Removed inconsistent revision numbers on diff view
219 220 * CVS: add support for modules names with spaces
220 221 * Log the user in after registration if account activation is not needed
221 222 * Mercurial adapter improvements
222 223 * Trac importer: read session_attribute table to find user's email and real name
223 224 * Ability to disable unused SCM adapters in application settings
224 225 * Adds Filesystem adapter
225 226 * Clear changesets and changes with raw sql when deleting a repository for performance
226 227 * Redmine.pm now uses the 'commit access' permission defined in Redmine
227 228 * Reposman can create any type of scm (--scm option)
228 229 * Reposman creates a repository if the 'repository' module is enabled at project level only
229 230 * Display svn properties in the browser, svn >= 1.5.0 only
230 231 * Reduces memory usage when importing large git repositories
231 232 * Wider SVG graphs in repository stats
232 233 * SubversionAdapter#entries performance improvement
233 234 * SCM browser: ability to download raw unified diffs
234 235 * More detailed error message in log when scm command fails
235 236 * Adds support for file viewing with Darcs 2.0+
236 237 * Check that git changeset is not in the database before creating it
237 238 * Unified diff viewer for attached files with .patch or .diff extension
238 239 * File size display with Bazaar repositories
239 240 * Git adapter: use commit time instead of author time
240 241 * Prettier url for changesets
241 242 * Makes changes link to entries on the revision view
242 243 * Adds a field on the repository view to browse at specific revision
243 244 * Adds new projects atom feed
244 245 * Added rake tasks to generate rcov code coverage reports
245 246 * Add Redcloth's :block_markdown_rule to allow horizontal rules in wiki
246 247 * Show the project hierarchy in the drop down list for new membership on user administration screen
247 248 * Split user edit screen into tabs
248 249 * Renames bundled RedCloth to RedCloth3 to avoid RedCloth 4 to be loaded instead
249 250 * Fixed: Roadmap crashes when a version has a due date > 2037
250 251 * Fixed: invalid effective date (eg. 99999-01-01) causes an error on version edition screen
251 252 * Fixed: login filter providing incorrect back_url for Redmine installed in sub-directory
252 253 * Fixed: logtime entry duplicated when edited from parent project
253 254 * Fixed: wrong digest for text files under Windows
254 255 * Fixed: associated revisions are displayed in wrong order on issue view
255 256 * Fixed: Git Adapter date parsing ignores timezone
256 257 * Fixed: Printing long roadmap doesn't split across pages
257 258 * Fixes custom fields display order at several places
258 259 * Fixed: urls containing @ are parsed as email adress by the wiki formatter
259 260 * Fixed date filters accuracy with SQLite
260 261 * Fixed: tokens not escaped in highlight_tokens regexp
261 262 * Fixed Bazaar shared repository browsing
262 263 * Fixes platform determination under JRuby
263 264 * Fixed: Estimated time in issue's journal should be rounded to two decimals
264 265 * Fixed: 'search titles only' box ignored after one search is done on titles only
265 266 * Fixed: non-ASCII subversion path can't be displayed
266 267 * Fixed: Inline images don't work if file name has upper case letters or if image is in BMP format
267 268 * Fixed: document listing shows on "my page" when viewing documents is disabled for the role
268 269 * Fixed: Latest news appear on the homepage for projects with the News module disabled
269 270 * Fixed: cross-project issue list should not show issues of projects for which the issue tracking module was disabled
270 271 * Fixed: the default status is lost when reordering issue statuses
271 272 * Fixes error with Postgresql and non-UTF8 commit logs
272 273 * Fixed: textile footnotes no longer work
273 274 * Fixed: http links containing parentheses fail to reder correctly
274 275 * Fixed: GitAdapter#get_rev should use current branch instead of hardwiring master
275 276
276 277
277 278 == 2008-07-06 v0.7.3
278 279
279 280 * Allow dot in firstnames and lastnames
280 281 * Add project name to cross-project Atom feeds
281 282 * Encoding set to utf8 in example database.yml
282 283 * HTML titles on forums related views
283 284 * Fixed: various XSS vulnerabilities
284 285 * Fixed: Entourage (and some old client) fails to correctly render notification styles
285 286 * Fixed: Fixed: timelog redirects inappropriately when :back_url is blank
286 287 * Fixed: wrong relative paths to images in wiki_syntax.html
287 288
288 289
289 290 == 2008-06-15 v0.7.2
290 291
291 292 * "New Project" link on Projects page
292 293 * Links to repository directories on the repo browser
293 294 * Move status to front in Activity View
294 295 * Remove edit step from Status context menu
295 296 * Fixed: No way to do textile horizontal rule
296 297 * Fixed: Repository: View differences doesn't work
297 298 * Fixed: attachement's name maybe invalid.
298 299 * Fixed: Error when creating a new issue
299 300 * Fixed: NoMethodError on @available_filters.has_key?
300 301 * Fixed: Check All / Uncheck All in Email Settings
301 302 * Fixed: "View differences" of one file at /repositories/revision/ fails
302 303 * Fixed: Column width in "my page"
303 304 * Fixed: private subprojects are listed on Issues view
304 305 * Fixed: Textile: bold, italics, underline, etc... not working after parentheses
305 306 * Fixed: Update issue form: comment field from log time end out of screen
306 307 * Fixed: Editing role: "issue can be assigned to this role" out of box
307 308 * Fixed: Unable use angular braces after include word
308 309 * Fixed: Using '*' as keyword for repository referencing keywords doesn't work
309 310 * Fixed: Subversion repository "View differences" on each file rise ERROR
310 311 * Fixed: View differences for individual file of a changeset fails if the repository URL doesn't point to the repository root
311 312 * Fixed: It is possible to lock out the last admin account
312 313 * Fixed: Wikis are viewable for anonymous users on public projects, despite not granting access
313 314 * Fixed: Issue number display clipped on 'my issues'
314 315 * Fixed: Roadmap version list links not carrying state
315 316 * Fixed: Log Time fieldset in IssueController#edit doesn't set default Activity as default
316 317 * Fixed: git's "get_rev" API should use repo's current branch instead of hardwiring "master"
317 318 * Fixed: browser's language subcodes ignored
318 319 * Fixed: Error on project selection with numeric (only) identifier.
319 320 * Fixed: Link to PDF doesn't work after creating new issue
320 321 * Fixed: "Replies" should not be shown on forum threads that are locked
321 322 * Fixed: SVN errors lead to svn username/password being displayed to end users (security issue)
322 323 * Fixed: http links containing hashes don't display correct
323 324 * Fixed: Allow ampersands in Enumeration names
324 325 * Fixed: Atom link on saved query does not include query_id
325 326 * Fixed: Logtime info lost when there's an error updating an issue
326 327 * Fixed: TOC does not parse colorization markups
327 328 * Fixed: CVS: add support for modules names with spaces
328 329 * Fixed: Bad rendering on projects/add
329 330 * Fixed: exception when viewing differences on cvs
330 331 * Fixed: export issue to pdf will messup when use Chinese language
331 332 * Fixed: Redmine::Scm::Adapters::GitAdapter#get_rev ignored GIT_BIN constant
332 333 * Fixed: Adding non-ASCII new issue type in the New Issue page have encoding error using IE
333 334 * Fixed: Importing from trac : some wiki links are messed
334 335 * Fixed: Incorrect weekend definition in Hebrew calendar locale
335 336 * Fixed: Atom feeds don't provide author section for repository revisions
336 337 * Fixed: In Activity views, changesets titles can be multiline while they should not
337 338 * Fixed: Ignore unreadable subversion directories (read disabled using authz)
338 339 * Fixed: lib/SVG/Graph/Graph.rb can't externalize stylesheets
339 340 * Fixed: Close statement handler in Redmine.pm
340 341
341 342
342 343 == 2008-05-04 v0.7.1
343 344
344 345 * Thai translation added (Gampol Thitinilnithi)
345 346 * Translations updates
346 347 * Escape HTML comment tags
347 348 * Prevent "can't convert nil into String" error when :sort_order param is not present
348 349 * Fixed: Updating tickets add a time log with zero hours
349 350 * Fixed: private subprojects names are revealed on the project overview
350 351 * Fixed: Search for target version of "none" fails with postgres 8.3
351 352 * Fixed: Home, Logout, Login links shouldn't be absolute links
352 353 * Fixed: 'Latest projects' box on the welcome screen should be hidden if there are no projects
353 354 * Fixed: error when using upcase language name in coderay
354 355 * Fixed: error on Trac import when :due attribute is nil
355 356
356 357
357 358 == 2008-04-28 v0.7.0
358 359
359 360 * Forces Redmine to use rails 2.0.2 gem when vendor/rails is not present
360 361 * Queries can be marked as 'For all projects'. Such queries will be available on all projects and on the global issue list.
361 362 * Add predefined date ranges to the time report
362 363 * Time report can be done at issue level
363 364 * Various timelog report enhancements
364 365 * Accept the following formats for "hours" field: 1h, 1 h, 1 hour, 2 hours, 30m, 30min, 1h30, 1h30m, 1:30
365 366 * Display the context menu above and/or to the left of the click if needed
366 367 * Make the admin project files list sortable
367 368 * Mercurial: display working directory files sizes unless browsing a specific revision
368 369 * Preserve status filter and page number when using lock/unlock/activate links on the users list
369 370 * Redmine.pm support for LDAP authentication
370 371 * Better error message and AR errors in log for failed LDAP on-the-fly user creation
371 372 * Redirected user to where he is coming from after logging hours
372 373 * Warn user that subprojects are also deleted when deleting a project
373 374 * Include subprojects versions on calendar and gantt
374 375 * Notify project members when a message is posted if they want to receive notifications
375 376 * Fixed: Feed content limit setting has no effect
376 377 * Fixed: Priorities not ordered when displayed as a filter in issue list
377 378 * Fixed: can not display attached images inline in message replies
378 379 * Fixed: Boards are not deleted when project is deleted
379 380 * Fixed: trying to preview a new issue raises an exception with postgresql
380 381 * Fixed: single file 'View difference' links do not work because of duplicate slashes in url
381 382 * Fixed: inline image not displayed when including a wiki page
382 383 * Fixed: CVS duplicate key violation
383 384 * Fixed: ActiveRecord::StaleObjectError exception on closing a set of circular duplicate issues
384 385 * Fixed: custom field filters behaviour
385 386 * Fixed: Postgresql 8.3 compatibility
386 387 * Fixed: Links to repository directories don't work
387 388
388 389
389 390 == 2008-03-29 v0.7.0-rc1
390 391
391 392 * Overall activity view and feed added, link is available on the project list
392 393 * Git VCS support
393 394 * Rails 2.0 sessions cookie store compatibility
394 395 * Use project identifiers in urls instead of ids
395 396 * Default configuration data can now be loaded from the administration screen
396 397 * Administration settings screen split to tabs (email notifications options moved to 'Settings')
397 398 * Project description is now unlimited and optional
398 399 * Wiki annotate view
399 400 * Escape HTML tag in textile content
400 401 * Add Redmine links to documents, versions, attachments and repository files
401 402 * 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:
402 403 * by using checkbox and/or the little pencil that will select/unselect all issues
403 404 * by clicking on the rows (but not on the links), Ctrl and Shift keys can be used to select multiple issues
404 405 * 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)
405 406 * User display format is now configurable in administration settings
406 407 * Issue list now supports bulk edit/move/delete (for a set of issues that belong to the same project)
407 408 * Merged 'change status', 'edit issue' and 'add note' actions:
408 409 * Users with 'edit issues' permission can now update any property including custom fields when adding a note or changing the status
409 410 * '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
410 411 * Details by assignees on issue summary view
411 412 * '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
412 413 * Change status select box default to current status
413 414 * Preview for issue notes, news and messages
414 415 * Optional description for attachments
415 416 * 'Fixed version' label changed to 'Target version'
416 417 * Let the user choose when deleting issues with reported hours to:
417 418 * delete the hours
418 419 * assign the hours to the project
419 420 * reassign the hours to another issue
420 421 * Date range filter and pagination on time entries detail view
421 422 * Propagate time tracking to the parent project
422 423 * Switch added on the project activity view to include subprojects
423 424 * Display total estimated and spent hours on the version detail view
424 425 * Weekly time tracking block for 'My page'
425 426 * Permissions to edit time entries
426 427 * Include subprojects on the issue list, calendar, gantt and timelog by default (can be turned off is administration settings)
427 428 * Roadmap enhancements (separate related issues from wiki contents, leading h1 in version wiki pages is hidden, smaller wiki headings)
428 429 * Make versions with same date sorted by name
429 430 * Allow issue list to be sorted by target version
430 431 * Related changesets messages displayed on the issue details view
431 432 * Create a journal and send an email when an issue is closed by commit
432 433 * Add 'Author' to the available columns for the issue list
433 434 * More appropriate default sort order on sortable columns
434 435 * Add issue subject to the time entries view and issue subject, description and tracker to the csv export
435 436 * Permissions to edit issue notes
436 437 * Display date/time instead of date on files list
437 438 * Do not show Roadmap menu item if the project doesn't define any versions
438 439 * Allow longer version names (60 chars)
439 440 * Ability to copy an existing workflow when creating a new role
440 441 * Display custom fields in two columns on the issue form
441 442 * Added 'estimated time' in the csv export of the issue list
442 443 * Display the last 30 days on the activity view rather than the current month (number of days can be configured in the application settings)
443 444 * Setting for whether new projects should be public by default
444 445 * User preference to choose how comments/replies are displayed: in chronological or reverse chronological order
445 446 * Added default value for custom fields
446 447 * Added tabindex property on wiki toolbar buttons (to easily move from field to field using the tab key)
447 448 * Redirect to issue page after creating a new issue
448 449 * Wiki toolbar improvements (mainly for Firefox)
449 450 * Display wiki syntax quick ref link on all wiki textareas
450 451 * Display links to Atom feeds
451 452 * Breadcrumb nav for the forums
452 453 * Show replies when choosing to display messages in the activity
453 454 * Added 'include' macro to include another wiki page
454 455 * RedmineWikiFormatting page available as a static HTML file locally
455 456 * Wrap diff content
456 457 * Strip out email address from authors in repository screens
457 458 * Highlight the current item of the main menu
458 459 * Added simple syntax highlighters for php and java languages
459 460 * Do not show empty diffs
460 461 * Show explicit error message when the scm command failed (eg. when svn binary is not available)
461 462 * Lithuanian translation added (Sergej Jegorov)
462 463 * Ukrainan translation added (Natalia Konovka & Mykhaylo Sorochan)
463 464 * Danish translation added (Mads Vestergaard)
464 465 * Added i18n support to the jstoolbar and various settings screen
465 466 * RedCloth's glyphs no longer user
466 467 * New icons for the wiki toolbar (from http://www.famfamfam.com/lab/icons/silk/)
467 468 * The following menus can now be extended by plugins: top_menu, account_menu, application_menu
468 469 * Added a simple rake task to fetch changesets from the repositories: rake redmine:fetch_changesets
469 470 * Remove hardcoded "Redmine" strings in account related emails and use application title instead
470 471 * Mantis importer preserve bug ids
471 472 * Trac importer: Trac guide wiki pages skipped
472 473 * Trac importer: wiki attachments migration added
473 474 * Trac importer: support database schema for Trac migration
474 475 * Trac importer: support CamelCase links
475 476 * Removes the Redmine version from the footer (can be viewed on admin -> info)
476 477 * Rescue and display an error message when trying to delete a role that is in use
477 478 * 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
478 479 * Add "--encoding utf8" option to the Mercurial "hg log" command in order to get utf8 encoded commit logs
479 480 * Fixed: Gantt and calendar not properly refreshed (fragment caching removed)
480 481 * Fixed: Textile image with style attribute cause internal server error
481 482 * Fixed: wiki TOC not rendered properly when used in an issue or document description
482 483 * Fixed: 'has already been taken' error message on username and email fields if left empty
483 484 * Fixed: non-ascii attachement filename with IE
484 485 * Fixed: wrong url for wiki syntax pop-up when Redmine urls are prefixed
485 486 * Fixed: search for all words doesn't work
486 487 * Fixed: Do not show sticky and locked checkboxes when replying to a message
487 488 * Fixed: Mantis importer: do not duplicate Mantis username in firstname and lastname if realname is blank
488 489 * Fixed: Date custom fields not displayed as specified in application settings
489 490 * Fixed: titles not escaped in the activity view
490 491 * Fixed: issue queries can not use custom fields marked as 'for all projects' in a project context
491 492 * 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
492 493 * Fixed: locked users should not receive email notifications
493 494 * Fixed: custom field selection is not saved when unchecking them all on project settings
494 495 * Fixed: can not lock a topic when creating it
495 496 * Fixed: Incorrect filtering for unset values when using 'is not' filter
496 497 * Fixed: PostgreSQL issues_seq_id not updated when using Trac importer
497 498 * Fixed: ajax pagination does not scroll up
498 499 * Fixed: error when uploading a file with no content-type specified by the browser
499 500 * Fixed: wiki and changeset links not displayed when previewing issue description or notes
500 501 * Fixed: 'LdapError: no bind result' error when authenticating
501 502 * Fixed: 'LdapError: invalid binding information' when no username/password are set on the LDAP account
502 503 * Fixed: CVS repository doesn't work if port is used in the url
503 504 * Fixed: Email notifications: host name is missing in generated links
504 505 * Fixed: Email notifications: referenced changesets, wiki pages, attachments... are not turned into links
505 506 * Fixed: Do not clear issue relations when moving an issue to another project if cross-project issue relations are allowed
506 507 * Fixed: "undefined method 'textilizable'" error on email notification when running Repository#fetch_changesets from the console
507 508 * Fixed: Do not send an email with no recipient, cc or bcc
508 509 * Fixed: fetch_changesets fails on commit comments that close 2 duplicates issues.
509 510 * Fixed: Mercurial browsing under unix-like os and for directory depth > 2
510 511 * Fixed: Wiki links with pipe can not be used in wiki tables
511 512 * Fixed: migrate_from_trac doesn't import timestamps of wiki and tickets
512 513 * Fixed: when bulk editing, setting "Assigned to" to "nobody" causes an sql error with Postgresql
513 514
514 515
515 516 == 2008-03-12 v0.6.4
516 517
517 518 * Fixed: private projects name are displayed on account/show even if the current user doesn't have access to these private projects
518 519 * Fixed: potential LDAP authentication security flaw
519 520 * Fixed: context submenus on the issue list don't show up with IE6.
520 521 * Fixed: Themes are not applied with Rails 2.0
521 522 * Fixed: crash when fetching Mercurial changesets if changeset[:files] is nil
522 523 * Fixed: Mercurial repository browsing
523 524 * Fixed: undefined local variable or method 'log' in CvsAdapter when a cvs command fails
524 525 * Fixed: not null constraints not removed with Postgresql
525 526 * Doctype set to transitional
526 527
527 528
528 529 == 2007-12-18 v0.6.3
529 530
530 531 * Fixed: upload doesn't work in 'Files' section
531 532
532 533
533 534 == 2007-12-16 v0.6.2
534 535
535 536 * Search engine: issue custom fields can now be searched
536 537 * News comments are now textilized
537 538 * Updated Japanese translation (Satoru Kurashiki)
538 539 * Updated Chinese translation (Shortie Lo)
539 540 * Fixed Rails 2.0 compatibility bugs:
540 541 * Unable to create a wiki
541 542 * Gantt and calendar error
542 543 * Trac importer error (readonly? is defined by ActiveRecord)
543 544 * Fixed: 'assigned to me' filter broken
544 545 * Fixed: crash when validation fails on issue edition with no custom fields
545 546 * Fixed: reposman "can't find group" error
546 547 * Fixed: 'LDAP account password is too long' error when leaving the field empty on creation
547 548 * Fixed: empty lines when displaying repository files with Windows style eol
548 549 * Fixed: missing body closing tag in repository annotate and entry views
549 550
550 551
551 552 == 2007-12-10 v0.6.1
552 553
553 554 * Rails 2.0 compatibility
554 555 * Custom fields can now be displayed as columns on the issue list
555 556 * Added version details view (accessible from the roadmap)
556 557 * Roadmap: more accurate completion percentage calculation (done ratio of open issues is now taken into account)
557 558 * Added per-project tracker selection. Trackers can be selected on project settings
558 559 * Anonymous users can now be allowed to create, edit, comment issues, comment news and post messages in the forums
559 560 * Forums: messages can now be edited/deleted (explicit permissions need to be given)
560 561 * Forums: topics can be locked so that no reply can be added
561 562 * Forums: topics can be marked as sticky so that they always appear at the top of the list
562 563 * Forums: attachments can now be added to replies
563 564 * Added time zone support
564 565 * Added a setting to choose the account activation strategy (available in application settings)
565 566 * Added 'Classic' theme (inspired from the v0.51 design)
566 567 * Added an alternate theme which provides issue list colorization based on issues priority
567 568 * Added Bazaar SCM adapter
568 569 * Added Annotate/Blame view in the repository browser (except for Darcs SCM)
569 570 * Diff style (inline or side by side) automatically saved as a user preference
570 571 * Added issues status changes on the activity view (by Cyril Mougel)
571 572 * Added forums topics on the activity view (disabled by default)
572 573 * Added an option on 'My account' for users who don't want to be notified of changes that they make
573 574 * Trac importer now supports mysql and postgresql databases
574 575 * Trac importer improvements (by Mat Trudel)
575 576 * 'fixed version' field can now be displayed on the issue list
576 577 * Added a couple of new formats for the 'date format' setting
577 578 * Added Traditional Chinese translation (by Shortie Lo)
578 579 * Added Russian translation (iGor kMeta)
579 580 * Project name format limitation removed (name can now contain any character)
580 581 * Project identifier maximum length changed from 12 to 20
581 582 * Changed the maximum length of LDAP account to 255 characters
582 583 * Removed the 12 characters limit on passwords
583 584 * Added wiki macros support
584 585 * Performance improvement on workflow setup screen
585 586 * More detailed html title on several views
586 587 * Custom fields can now be reordered
587 588 * Search engine: search can be restricted to an exact phrase by using quotation marks
588 589 * Added custom fields marked as 'For all projects' to the csv export of the cross project issue list
589 590 * Email notifications are now sent as Blind carbon copy by default
590 591 * Fixed: all members (including non active) should be deleted when deleting a project
591 592 * Fixed: Error on wiki syntax link (accessible from wiki/edit)
592 593 * Fixed: 'quick jump to a revision' form on the revisions list
593 594 * Fixed: error on admin/info if there's more than 1 plugin installed
594 595 * Fixed: svn or ldap password can be found in clear text in the html source in editing mode
595 596 * Fixed: 'Assigned to' drop down list is not sorted
596 597 * Fixed: 'View all issues' link doesn't work on issues/show
597 598 * Fixed: error on account/register when validation fails
598 599 * Fixed: Error when displaying the issue list if a float custom field is marked as 'used as filter'
599 600 * Fixed: Mercurial adapter breaks on missing :files entry in changeset hash (James Britt)
600 601 * Fixed: Wrong feed URLs on the home page
601 602 * Fixed: Update of time entry fails when the issue has been moved to an other project
602 603 * Fixed: Error when moving an issue without changing its tracker (Postgresql)
603 604 * Fixed: Changes not recorded when using :pserver string (CVS adapter)
604 605 * Fixed: admin should be able to move issues to any project
605 606 * Fixed: adding an attachment is not possible when changing the status of an issue
606 607 * Fixed: No mime-types in documents/files downloading
607 608 * Fixed: error when sorting the messages if there's only one board for the project
608 609 * Fixed: 'me' doesn't appear in the drop down filters on a project issue list.
609 610
610 611 == 2007-11-04 v0.6.0
611 612
612 613 * Permission model refactoring.
613 614 * Permissions: there are now 2 builtin roles that can be used to specify permissions given to other users than members of projects
614 615 * Permissions: some permissions (eg. browse the repository) can be removed for certain roles
615 616 * Permissions: modules (eg. issue tracking, news, documents...) can be enabled/disabled at project level
616 617 * Added Mantis and Trac importers
617 618 * New application layout
618 619 * Added "Bulk edit" functionality on the issue list
619 620 * More flexible mail notifications settings at user level
620 621 * 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
621 622 * 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
622 623 * Added the ability to customize issue list columns (at application level or for each saved query)
623 624 * Overdue versions (date reached and open issues > 0) are now always displayed on the roadmap
624 625 * Added the ability to rename wiki pages (specific permission required)
625 626 * Search engines now supports pagination. Results are sorted in reverse chronological order
626 627 * Added "Estimated hours" attribute on issues
627 628 * A category with assigned issue can now be deleted. 2 options are proposed: remove assignments or reassign issues to another category
628 629 * Forum notifications are now also sent to the authors of the thread, even if they donοΏ½t watch the board
629 630 * Added an application setting to specify the application protocol (http or https) used to generate urls in emails
630 631 * Gantt chart: now starts at the current month by default
631 632 * Gantt chart: month count and zoom factor are automatically saved as user preferences
632 633 * Wiki links can now refer to other project wikis
633 634 * Added wiki index by date
634 635 * Added preview on add/edit issue form
635 636 * Emails footer can now be customized from the admin interface (Admin -> Email notifications)
636 637 * 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)
637 638 * Calendar: first day of week can now be set in lang files
638 639 * Automatic closing of duplicate issues
639 640 * Added a cross-project issue list
640 641 * AJAXified the SCM browser (tree view)
641 642 * Pretty URL for the repository browser (Cyril Mougel)
642 643 * Search engine: added a checkbox to search titles only
643 644 * Added "% done" in the filter list
644 645 * Enumerations: values can now be reordered and a default value can be specified (eg. default issue priority)
645 646 * Added some accesskeys
646 647 * Added "Float" as a custom field format
647 648 * Added basic Theme support
648 649 * Added the ability to set the οΏ½done ratioοΏ½ of issues fixed by commit (Nikolay Solakov)
649 650 * Added custom fields in issue related mail notifications
650 651 * Email notifications are now sent in plain text and html
651 652 * Gantt chart can now be exported to a graphic file (png). This functionality is only available if RMagick is installed.
652 653 * Added syntax highlightment for repository files and wiki
653 654 * Improved automatic Redmine links
654 655 * Added automatic table of content support on wiki pages
655 656 * Added radio buttons on the documents list to sort documents by category, date, title or author
656 657 * Added basic plugin support, with a sample plugin
657 658 * Added a link to add a new category when creating or editing an issue
658 659 * Added a "Assignable" boolean on the Role model. If unchecked, issues can not be assigned to users having this role.
659 660 * Added an option to be able to relate issues in different projects
660 661 * Added the ability to move issues (to another project) without changing their trackers.
661 662 * Atom feeds added on project activity, news and changesets
662 663 * Added the ability to reset its own RSS access key
663 664 * Main project list now displays root projects with their subprojects
664 665 * Added anchor links to issue notes
665 666 * Added reposman Ruby version. This script can now register created repositories in Redmine (Nicolas Chuche)
666 667 * Issue notes are now included in search
667 668 * Added email sending test functionality
668 669 * Added LDAPS support for LDAP authentication
669 670 * Removed hard-coded URLs in mail templates
670 671 * Subprojects are now grouped by projects in the navigation drop-down menu
671 672 * Added a new value for date filters: this week
672 673 * Added cache for application settings
673 674 * Added Polish translation (Tomasz Gawryl)
674 675 * Added Czech translation (Jan Kadlecek)
675 676 * Added Romanian translation (Csongor Bartus)
676 677 * Added Hebrew translation (Bob Builder)
677 678 * Added Serbian translation (Dragan Matic)
678 679 * Added Korean translation (Choi Jong Yoon)
679 680 * Fixed: the link to delete issue relations is displayed even if the user is not authorized to delete relations
680 681 * Performance improvement on calendar and gantt
681 682 * Fixed: wiki preview doesnοΏ½t work on long entries
682 683 * Fixed: queries with multiple custom fields return no result
683 684 * Fixed: Can not authenticate user against LDAP if its DN contains non-ascii characters
684 685 * Fixed: URL with ~ broken in wiki formatting
685 686 * Fixed: some quotation marks are rendered as strange characters in pdf
686 687
687 688
688 689 == 2007-07-15 v0.5.1
689 690
690 691 * per project forums added
691 692 * added the ability to archive projects
692 693 * added οΏ½WatchοΏ½ functionality on issues. It allows users to receive notifications about issue changes
693 694 * custom fields for issues can now be used as filters on issue list
694 695 * added per user custom queries
695 696 * commit messages are now scanned for referenced or fixed issue IDs (keywords defined in Admin -> Settings)
696 697 * projects list now shows the list of public projects and private projects for which the user is a member
697 698 * versions can now be created with no date
698 699 * added issue count details for versions on Reports view
699 700 * added time report, by member/activity/tracker/version and year/month/week for the selected period
700 701 * each category can now be associated to a user, so that new issues in that category are automatically assigned to that user
701 702 * added autologin feature (disabled by default)
702 703 * optimistic locking added for wiki edits
703 704 * added wiki diff
704 705 * added the ability to destroy wiki pages (requires permission)
705 706 * a wiki page can now be attached to each version, and displayed on the roadmap
706 707 * attachments can now be added to wiki pages (original patch by Pavol Murin) and displayed online
707 708 * added an option to see all versions in the roadmap view (including completed ones)
708 709 * added basic issue relations
709 710 * added the ability to log time when changing an issue status
710 711 * account information can now be sent to the user when creating an account
711 712 * author and assignee of an issue always receive notifications (even if they turned of mail notifications)
712 713 * added a quick search form in page header
713 714 * added 'me' value for 'assigned to' and 'author' query filters
714 715 * added a link on revision screen to see the entire diff for the revision
715 716 * added last commit message for each entry in repository browser
716 717 * added the ability to view a file diff with free to/from revision selection.
717 718 * text files can now be viewed online when browsing the repository
718 719 * added basic support for other SCM: CVS (Ralph Vater), Mercurial and Darcs
719 720 * added fragment caching for svn diffs
720 721 * added fragment caching for calendar and gantt views
721 722 * login field automatically focused on login form
722 723 * subproject name displayed on issue list, calendar and gantt
723 724 * added an option to choose the date format: language based or ISO 8601
724 725 * added a simple mail handler. It lets users add notes to an existing issue by replying to the initial notification email.
725 726 * a 403 error page is now displayed (instead of a blank page) when trying to access a protected page
726 727 * added portuguese translation (Joao Carlos Clementoni)
727 728 * added partial online help japanese translation (Ken Date)
728 729 * added bulgarian translation (Nikolay Solakov)
729 730 * added dutch translation (Linda van den Brink)
730 731 * added swedish translation (Thomas Habets)
731 732 * italian translation update (Alessio Spadaro)
732 733 * japanese translation update (Satoru Kurashiki)
733 734 * fixed: error on history atom feed when thereοΏ½s no notes on an issue change
734 735 * fixed: error in journalizing an issue with longtext custom fields (Postgresql)
735 736 * fixed: creation of Oracle schema
736 737 * fixed: last day of the month not included in project activity
737 738 * fixed: files with an apostrophe in their names can't be accessed in SVN repository
738 739 * fixed: performance issue on RepositoriesController#revisions when a changeset has a great number of changes (eg. 100,000)
739 740 * fixed: open/closed issue counts are always 0 on reports view (postgresql)
740 741 * fixed: date query filters (wrong results and sql error with postgresql)
741 742 * fixed: confidentiality issue on account/show (private project names displayed to anyone)
742 743 * fixed: Long text custom fields displayed without line breaks
743 744 * fixed: Error when editing the wokflow after deleting a status
744 745 * fixed: SVN commit dates are now stored as local time
745 746
746 747
747 748 == 2007-04-11 v0.5.0
748 749
749 750 * added per project Wiki
750 751 * added rss/atom feeds at project level (custom queries can be used as feeds)
751 752 * added search engine (search in issues, news, commits, wiki pages, documents)
752 753 * simple time tracking functionality added
753 754 * added version due dates on calendar and gantt
754 755 * added subprojects issue count on project Reports page
755 756 * added the ability to copy an existing workflow when creating a new tracker
756 757 * added the ability to include subprojects on calendar and gantt
757 758 * added the ability to select trackers to display on calendar and gantt (Jeffrey Jones)
758 759 * added side by side svn diff view (Cyril Mougel)
759 760 * added back subproject filter on issue list
760 761 * added permissions report in admin area
761 762 * added a status filter on users list
762 763 * support for password-protected SVN repositories
763 764 * SVN commits are now stored in the database
764 765 * added simple svn statistics SVG graphs
765 766 * progress bars for roadmap versions (Nick Read)
766 767 * issue history now shows file uploads and deletions
767 768 * #id patterns are turned into links to issues in descriptions and commit messages
768 769 * japanese translation added (Satoru Kurashiki)
769 770 * chinese simplified translation added (Andy Wu)
770 771 * italian translation added (Alessio Spadaro)
771 772 * added scripts to manage SVN repositories creation and user access control using ssh+svn (Nicolas Chuche)
772 773 * better calendar rendering time
773 774 * fixed migration scripts to work with mysql 5 running in strict mode
774 775 * fixed: error when clicking "add" with no block selected on my/page_layout
775 776 * fixed: hard coded links in navigation bar
776 777 * fixed: table_name pre/suffix support
777 778
778 779
779 780 == 2007-02-18 v0.4.2
780 781
781 782 * Rails 1.2 is now required
782 783 * settings are now stored in the database and editable through the application in: Admin -> Settings (config_custom.rb is no longer used)
783 784 * added project roadmap view
784 785 * mail notifications added when a document, a file or an attachment is added
785 786 * tooltips added on Gantt chart and calender to view the details of the issues
786 787 * ability to set the sort order for roles, trackers, issue statuses
787 788 * added missing fields to csv export: priority, start date, due date, done ratio
788 789 * added total number of issues per tracker on project overview
789 790 * 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-)
790 791 * added back "fixed version" field on issue screen and in filters
791 792 * project settings screen split in 4 tabs
792 793 * custom fields screen split in 3 tabs (one for each kind of custom field)
793 794 * multiple issues pdf export now rendered as a table
794 795 * added a button on users/list to manually activate an account
795 796 * added a setting option to disable "password lost" functionality
796 797 * added a setting option to set max number of issues in csv/pdf exports
797 798 * fixed: subprojects count is always 0 on projects list
798 799 * fixed: locked users are proposed when adding a member to a project
799 800 * fixed: setting an issue status as default status leads to an sql error with SQLite
800 801 * fixed: unable to delete an issue status even if it's not used yet
801 802 * fixed: filters ignored when exporting a predefined query to csv/pdf
802 803 * fixed: crash when french "issue_edit" email notification is sent
803 804 * fixed: hide mail preference not saved (my/account)
804 805 * fixed: crash when a new user try to edit its "my page" layout
805 806
806 807
807 808 == 2007-01-03 v0.4.1
808 809
809 810 * fixed: emails have no recipient when one of the project members has notifications disabled
810 811
811 812
812 813 == 2007-01-02 v0.4.0
813 814
814 815 * simple SVN browser added (just needs svn binaries in PATH)
815 816 * comments can now be added on news
816 817 * "my page" is now customizable
817 818 * more powerfull and savable filters for issues lists
818 819 * improved issues change history
819 820 * new functionality: move an issue to another project or tracker
820 821 * new functionality: add a note to an issue
821 822 * new report: project activity
822 823 * "start date" and "% done" fields added on issues
823 824 * project calendar added
824 825 * gantt chart added (exportable to pdf)
825 826 * single/multiple issues pdf export added
826 827 * issues reports improvements
827 828 * multiple file upload for issues, documents and files
828 829 * option to set maximum size of uploaded files
829 830 * textile formating of issue and news descritions (RedCloth required)
830 831 * integration of DotClear jstoolbar for textile formatting
831 832 * calendar date picker for date fields (LGPL DHTML Calendar http://sourceforge.net/projects/jscalendar)
832 833 * new filter in issues list: Author
833 834 * ajaxified paginators
834 835 * news rss feed added
835 836 * option to set number of results per page on issues list
836 837 * localized csv separator (comma/semicolon)
837 838 * csv output encoded to ISO-8859-1
838 839 * user custom field displayed on account/show
839 840 * default configuration improved (default roles, trackers, status, permissions and workflows)
840 841 * language for default configuration data can now be chosen when running 'load_default_data' task
841 842 * javascript added on custom field form to show/hide fields according to the format of custom field
842 843 * fixed: custom fields not in csv exports
843 844 * fixed: project settings now displayed according to user's permissions
844 845 * fixed: application error when no version is selected on projects/add_file
845 846 * fixed: public actions not authorized for members of non public projects
846 847 * fixed: non public projects were shown on welcome screen even if current user is not a member
847 848
848 849
849 850 == 2006-10-08 v0.3.0
850 851
851 852 * user authentication against multiple LDAP (optional)
852 853 * token based "lost password" functionality
853 854 * user self-registration functionality (optional)
854 855 * custom fields now available for issues, users and projects
855 856 * new custom field format "text" (displayed as a textarea field)
856 857 * project & administration drop down menus in navigation bar for quicker access
857 858 * text formatting is preserved for long text fields (issues, projects and news descriptions)
858 859 * urls and emails are turned into clickable links in long text fields
859 860 * "due date" field added on issues
860 861 * tracker selection filter added on change log
861 862 * Localization plugin replaced with GLoc 1.1.0 (iconv required)
862 863 * error messages internationalization
863 864 * german translation added (thanks to Karim Trott)
864 865 * data locking for issues to prevent update conflicts (using ActiveRecord builtin optimistic locking)
865 866 * new filter in issues list: "Fixed version"
866 867 * active filters are displayed with colored background on issues list
867 868 * custom configuration is now defined in config/config_custom.rb
868 869 * user object no more stored in session (only user_id)
869 870 * news summary field is no longer required
870 871 * tables and forms redesign
871 872 * Fixed: boolean custom field not working
872 873 * Fixed: error messages for custom fields are not displayed
873 874 * Fixed: invalid custom fields should have a red border
874 875 * Fixed: custom fields values are not validated on issue update
875 876 * Fixed: unable to choose an empty value for 'List' custom fields
876 877 * Fixed: no issue categories sorting
877 878 * Fixed: incorrect versions sorting
878 879
879 880
880 881 == 2006-07-12 - v0.2.2
881 882
882 883 * Fixed: bug in "issues list"
883 884
884 885
885 886 == 2006-07-09 - v0.2.1
886 887
887 888 * new databases supported: Oracle, PostgreSQL, SQL Server
888 889 * projects/subprojects hierarchy (1 level of subprojects only)
889 890 * environment information display in admin/info
890 891 * more filter options in issues list (rev6)
891 892 * default language based on browser settings (Accept-Language HTTP header)
892 893 * issues list exportable to CSV (rev6)
893 894 * simple_format and auto_link on long text fields
894 895 * more data validations
895 896 * Fixed: error when all mail notifications are unchecked in admin/mail_options
896 897 * Fixed: all project news are displayed on project summary
897 898 * Fixed: Can't change user password in users/edit
898 899 * Fixed: Error on tables creation with PostgreSQL (rev5)
899 900 * Fixed: SQL error in "issue reports" view with PostgreSQL (rev5)
900 901
901 902
902 903 == 2006-06-25 - v0.1.0
903 904
904 905 * multiple users/multiple projects
905 906 * role based access control
906 907 * issue tracking system
907 908 * fully customizable workflow
908 909 * documents/files repository
909 910 * email notifications on issue creation and update
910 911 * multilanguage support (except for error messages):english, french, spanish
911 912 * online manual in french (unfinished)
General Comments 0
You need to be logged in to leave comments. Login now