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