Compare commits

..

1984 Commits
1.3.0 ... 2.1.0

Author SHA1 Message Date
Jean-Philippe Lang
2a4774627d tagged version 2.1.0
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/tags/2.1.0@10395 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-16 12:47:11 +00:00
Jean-Philippe Lang
5eab4af70d Merged r10391 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.1-stable@10392 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-16 12:43:43 +00:00
Toshi MARUYAMA
96b2e00015 Merged r10379 from trunk (#11836)
Japanese translation updated by Go MAEDA.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.1-stable@10380 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-15 12:02:36 +00:00
Jean-Philippe Lang
9939fbeef6 Merged r10375 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.1-stable@10376 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-12 19:16:31 +00:00
Jean-Philippe Lang
b369f82d15 Merged r10368 to r10373 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.1-stable@10374 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-11 19:40:59 +00:00
Jean-Philippe Lang
0ad5dfaba0 Set branch to stable.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.1-stable@10367 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-11 16:33:49 +00:00
Jean-Philippe Lang
d7d18689b7 Added 2.1-stable branch.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.1-stable@10366 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-11 16:30:57 +00:00
Jean-Philippe Lang
4cd22bb53a Set version to 2.1.0.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10365 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-11 16:30:07 +00:00
Toshi MARUYAMA
7d8db59dae do not show estimated time if it is nil on issue page
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10364 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-11 14:13:30 +00:00
Toshi MARUYAMA
d1606fd3e3 add asserting that issue estimated hours is nil when creating minimal issue
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10363 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-11 14:13:11 +00:00
Toshi MARUYAMA
097d9661c9 gantt: use content_tag instead of html tag at the tooltip
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10362 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-11 03:45:06 +00:00
Toshi MARUYAMA
f8cedf00a8 gantt: use content_tag instead of html tag at the label on the right
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10361 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-11 03:44:52 +00:00
Toshi MARUYAMA
2461d12388 gantt: remove redundant empty lines from unit gantt helper test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10360 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-11 02:58:59 +00:00
Toshi MARUYAMA
bcd8ce2de2 gantt: use content_tag instead of html tag at subject for project
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10359 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-11 02:16:32 +00:00
Toshi MARUYAMA
0cd9149e7a gantt: use content_tag instead of html tag at the markers
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10358 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-11 02:16:18 +00:00
Toshi MARUYAMA
69d0660760 gantt: code layout cleanup to_pdf method of lib/redmine/helpers/gantt.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10357 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-11 02:16:03 +00:00
Toshi MARUYAMA
3f7a7d9b14 gantt: fix unit gantt helper test fails
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10356 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-11 01:53:34 +00:00
Toshi MARUYAMA
66f881aad3 gantt: use content_tag instead of html tag at the task bar
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10355 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-11 00:57:10 +00:00
Toshi MARUYAMA
d3d719c0e7 gantt: code layout cleanup image_task method of lib/redmine/helpers/gantt.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10354 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-11 00:56:56 +00:00
Toshi MARUYAMA
03aa7037a5 gantt: code layout cleanup to_image method of lib/redmine/helpers/gantt.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10353 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-11 00:56:41 +00:00
Toshi MARUYAMA
ffb981255c gantt: use content_tag instead of html tag at helper subject_for_version method
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10352 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-11 00:09:01 +00:00
Toshi MARUYAMA
3bbb2566c8 gantt: code layout cleanup pdf_task method of lib/redmine/helpers/gantt.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10351 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-11 00:08:46 +00:00
Toshi MARUYAMA
8cfec7ddf5 gantt: code layout cleanup pdf_subject method of lib/redmine/helpers/gantt.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10350 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-11 00:08:32 +00:00
Toshi MARUYAMA
af177c3a59 gantt: code layout cleanup to_pdf method of lib/redmine/helpers/gantt.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10349 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-11 00:08:16 +00:00
Toshi MARUYAMA
25aeb4c3d3 gantt: use content_tag instead of html tag at subject gravatar
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10348 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-10 22:57:24 +00:00
Toshi MARUYAMA
b75afd49de gantt: code layout cleanup html_subject method of lib/redmine/helpers/gantt.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10347 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-10 22:56:56 +00:00
Toshi MARUYAMA
0cd08ed08c gantt: code layout cleanup line_for_issue method of lib/redmine/helpers/gantt.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10346 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-10 22:56:15 +00:00
Toshi MARUYAMA
ad71bffe34 gantt: code layout cleanup line_for_version method of lib/redmine/helpers/gantt.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10345 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-10 22:55:44 +00:00
Toshi MARUYAMA
a2edef9035 gantt: code layout cleanup render method of lib/redmine/helpers/gantt.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10344 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-10 22:55:13 +00:00
Toshi MARUYAMA
abcfbd9c75 gantt: code layout cleanup params* method of lib/redmine/helpers/gantt.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10343 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-10 11:55:13 +00:00
Toshi MARUYAMA
d0ca8eb703 gantt: code layout cleanup initialize method of lib/redmine/helpers/gantt.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10342 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-10 11:54:49 +00:00
Toshi MARUYAMA
e637c15660 gantt: remove redundant empty lines from lib/redmine/helpers/gantt.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10341 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-10 11:54:24 +00:00
Jean-Philippe Lang
f9d0b4776f Fixed TLS configuration in example (#11034).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10340 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-09 15:24:34 +00:00
Jean-Philippe Lang
3b5fd45fae Log current user on each request.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10339 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-09 14:54:22 +00:00
Jean-Philippe Lang
6b0e8fd82a Deep headings in TOC are too small.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10338 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-09 14:13:25 +00:00
Jean-Philippe Lang
972a991a92 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10337 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-09 11:34:35 +00:00
Jean-Philippe Lang
62d5b4c710 Issues assigned to a locked/closed version are now copied (#11207).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10336 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-09 11:04:55 +00:00
Jean-Philippe Lang
197a14a82e Fixed that the reminder email excludes issues assigned to groups (#11723).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10335 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-09 11:02:13 +00:00
Jean-Philippe Lang
ff86c37ed3 Fixed: Issues associated with a locked version are not copied when copying a project (#11207).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10334 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-09 10:11:49 +00:00
Jean-Philippe Lang
5e9320137b Fixed that target version is lost on project copy for issues that are assigned to a shared version from another project.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10333 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-09 10:01:03 +00:00
Jean-Philippe Lang
18ed4cf373 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10332 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-09 09:51:44 +00:00
Toshi MARUYAMA
8303e7c168 Bulgarian translation updated by Ivan Cenov (#11799)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10331 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-08 09:21:26 +00:00
Jean-Philippe Lang
eb58c62f26 Filling locales (#6965).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10330 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-08 06:18:55 +00:00
Jean-Philippe Lang
b72d40a429 Do not copy subtasks twice when copying an issue and its descendants (#6965).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10329 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-08 06:14:35 +00:00
Jean-Philippe Lang
6a37151b5c Adapt subtasks copy when copying a project (#6965).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10328 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-08 05:56:48 +00:00
Jean-Philippe Lang
5003927f13 Option to copy subtasks when copying issue(s) (#6965).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10327 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-08 05:34:07 +00:00
Toshi MARUYAMA
ffcf1925e3 gantt: code layout cleanup html days headers
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10326 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-08 03:21:55 +00:00
Toshi MARUYAMA
ad4ee1c8d8 gantt: code layout cleanup html weeks headers
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10325 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-08 03:21:17 +00:00
Toshi MARUYAMA
d4fc347a8a gantt: use content_tag instead of html tag at days headers
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10324 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-08 02:47:27 +00:00
Toshi MARUYAMA
c25d175623 gantt: use content_tag instead of html tag at gantt header outline
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10323 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-08 02:00:32 +00:00
Toshi MARUYAMA
47e375b271 gantt: code layout cleanup ruby code at head of show.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10322 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-08 02:00:17 +00:00
Toshi MARUYAMA
eeedd287ad gantt: code layout cleanup html months headers
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10321 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-08 00:59:42 +00:00
Toshi MARUYAMA
2edb8d597a gantt: use content_tag instead of html tag at gantt subject
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10320 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-08 00:59:08 +00:00
Toshi MARUYAMA
23eae0bf3c gantt: code cleanup html today red line
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10319 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-08 00:58:41 +00:00
Toshi MARUYAMA
822a627c44 gantt: fix code indents of html today red line
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10318 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-08 00:57:57 +00:00
Toshi MARUYAMA
3431b860ad gantt: use content_tag instead of html tag at gantt today red line
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10317 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-07 23:03:40 +00:00
Toshi MARUYAMA
3483938185 gantt: use content_tag instead of html tag at gantt weeks headers
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10316 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-07 23:03:16 +00:00
Toshi MARUYAMA
2af4bb6a86 gantt: use content_tag instead of html tag at gantt months headers
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10315 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-07 14:35:33 +00:00
Toshi MARUYAMA
b9586dd570 gantt: code layout cleanup html gantt days headers
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10314 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-07 14:35:20 +00:00
Toshi MARUYAMA
40df75243b code layout cleanup app/views/gantts/show.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10313 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-07 11:59:48 +00:00
Toshi MARUYAMA
0486ce9976 code layout cleanup gantt weeks headers
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10312 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-07 11:59:34 +00:00
Toshi MARUYAMA
621b15c923 code layout cleanup gantt months headers
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10311 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-07 11:59:19 +00:00
Toshi MARUYAMA
d1eb07dd8b fix code indent of gantt days headers
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10310 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-07 11:59:05 +00:00
Toshi MARUYAMA
9c5f339efb code layout cleanup app/views/gantts/show.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10309 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-07 01:36:16 +00:00
Toshi MARUYAMA
bbed770fa4 remove redundant empty lines from app/views/repositories/_revision_graph.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10308 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-07 01:35:18 +00:00
Jean-Philippe Lang
1f7a944d14 XML output broken with builder 3.0.1.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10306 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-06 22:34:21 +00:00
Jean-Philippe Lang
ef8c393290 Let plugin override mailer views (#11776).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10304 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-06 17:34:14 +00:00
Jean-Philippe Lang
bcb4c2cde4 Parse any heading level (#11789).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10294 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-06 17:03:13 +00:00
Toshi MARUYAMA
3dfef8a00d remove redundant empty lines from revision_graph.js
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10293 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-06 06:46:28 +00:00
Toshi MARUYAMA
ee2481a3b9 replace tab to space at revision_graph.js
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10292 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-06 06:46:13 +00:00
Toshi MARUYAMA
99913e80f0 show JQuery datepicker today button
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10291 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-05 17:22:08 +00:00
Toshi MARUYAMA
48ac467981 Traditional Chinese translation updated by ChunChang Lo (#11766)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10290 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-04 09:48:44 +00:00
Toshi MARUYAMA
6e21342c60 fix redmine_plugin generator output in USAGE
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10287 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-03 17:14:42 +00:00
Toshi MARUYAMA
3f63b5ea93 fix plugin generator script name of USAGE on Rails3
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10286 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-03 17:14:28 +00:00
Jean-Philippe Lang
ca7498c2d6 Create role by copy (#9258).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10285 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-03 17:04:28 +00:00
Jean-Philippe Lang
1b64e4be5e Set radio button when selecting a date with the date picker.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10284 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-02 17:24:29 +00:00
Jean-Philippe Lang
3a32edc3bd Adds a view for editing all trackers fields.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10283 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-02 16:55:16 +00:00
Jean-Philippe Lang
462c986452 Moved link to the contextual menu.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10282 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-02 15:13:40 +00:00
Jean-Philippe Lang
c3170e9264 Redmine.pm: Allow fallback to other Apache auth providers (#11475).
Contributed by Yasin Al Farhad.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10281 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-02 14:51:56 +00:00
Jean-Philippe Lang
2a9c001625 Doc update.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10280 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-02 13:00:19 +00:00
Jean-Philippe Lang
94db7c0029 Redmine.pm: HEAD is not considered as a read-only method (#11749).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10279 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-02 12:59:27 +00:00
Toshi MARUYAMA
e1492f771c remove redundant empty lines from test/test_helper.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10278 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-02 11:09:56 +00:00
Toshi MARUYAMA
48b9b805b2 fix typo "MACROS_SUB_RE" (#11736)
Contributed by Anton Argirov.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10277 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-02 11:09:43 +00:00
Jean-Philippe Lang
8b72710d7e Fixed: New multi-line macros regexp is too eager (#11736).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10276 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-02 10:24:56 +00:00
Jean-Philippe Lang
265baa1b2c Upgrade to Rails 3.2.8 (#11758).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10275 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-02 10:08:51 +00:00
Toshi MARUYAMA
139ddd639f backout r10247
Gemfile: pin i18n gem version 0.6.0.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10265 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-01 05:33:58 +00:00
Toshi MARUYAMA
e4b7b7cc38 code cleanup test_with_a_start_date_attribute_* of unit IssuesHelperTest
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10264 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-01 05:33:43 +00:00
Toshi MARUYAMA
8eb39d682d replace shoulder "with a due_date attribute" context of unit IssuesHelperTest and use with_settings
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10263 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-01 05:33:28 +00:00
Toshi MARUYAMA
4bca584024 use date_format setting at unit IssuesHelperTest test_with_a_start_date_attribute_*
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10257 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-01 04:10:33 +00:00
Toshi MARUYAMA
935d8e594b add missing fixtures to test/unit/lib/redmine/hook_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10256 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-01 03:47:20 +00:00
Toshi MARUYAMA
374a0cc7cb add missing fixture to test/unit/lib/redmine/safe_attributes_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10255 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-01 02:55:13 +00:00
Toshi MARUYAMA
53dd8dc11a add unit query test of French label
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10254 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-01 02:37:20 +00:00
Toshi MARUYAMA
444987ce91 replace shoulder "with a start_date attribute" context of test/unit/helpers/issues_helper_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10253 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-01 02:23:59 +00:00
Toshi MARUYAMA
43add0d306 scm: git: use with_settings at test_diff_truncated of functional test (#11752)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10252 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-01 02:23:44 +00:00
Toshi MARUYAMA
3581782ec2 scm: git: use diff_max_lines_displayed setting at test_diff_with_rev_and_path of functional test (#11752)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10251 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-01 02:23:29 +00:00
Toshi MARUYAMA
8d4c0e5ecd set language en to test_label_for at test/unit/query_test.rb
Test on CI Server fails.

http://www.redmine.org/builds/logs/build_trunk_sqlite3_ruby-1.9.3-p194_581.html

<pre>
Failure:
  <"Assignee">("US-ASCII") expected but was
  <"Assigné à">("UTF-8").
test_label_for(QueryTest)
test/unit/query_test.rb:860:in `test_label_for'
</pre>

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10249 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-01 01:29:48 +00:00
Toshi MARUYAMA
9a57cc18e3 Gemfile: pin i18n gem version 0.6.0
Tests on CI server fails.
http://www.redmine.org/builds/logs/build_trunk_sqlite3_ruby-1.9.3-p194_580.html

<pre>
Failure:
  <"Due date changed from 01 01 2010 to 31 01 2010"> expected to be =~
  </01\/31\/2010/>.
test: IssuesHelper#show_detail with a due_date attribute should format the current date. (IssuesHelperTest)
test/unit/helpers/issues_helper_test.rb:127:in `block (3 levels) in <class:IssuesHelperTest>'
</pre>

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10247 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-31 23:44:35 +00:00
Toshi MARUYAMA
564de36c08 remove trailing white-space from app/controllers/wiki_controller.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10246 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-31 23:01:51 +00:00
Toshi MARUYAMA
6ea1bc725a scm: git: add functional test of diff with revision and path (#11752)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10245 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-31 22:22:26 +00:00
Jean-Philippe Lang
a7be337a4c Updates test for r10243.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10244 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-27 11:21:08 +00:00
Jean-Philippe Lang
3a77d543fd Code cleanup: removed the obsolete with_limit scope.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10243 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-27 10:54:01 +00:00
Jean-Philippe Lang
d33fa1f8c8 Do not build a projects_by_role Hash that gets updated when accessing a key that is not present (#11662).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10242 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-27 10:11:20 +00:00
Jean-Philippe Lang
50506ef621 Make sure we don't build an empty IN () statement (#11662).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10241 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-27 10:09:08 +00:00
Jean-Philippe Lang
c68ee7f545 Fixed that destroying a user from the edit page returns a 404 response (#11691).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10240 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-26 10:50:59 +00:00
Jean-Philippe Lang
ebc979e9b1 Do not use escaped back_url param (#11691).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10239 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-26 10:40:09 +00:00
Jean-Philippe Lang
3cc6d5e815 Reverted r10234 and r10235 that broke redirect after login (#11691).
Tests in account_controller_test.rb should not have been changed.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10238 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-26 09:29:48 +00:00
Jean-Philippe Lang
a2e59cc956 Don't use tag helper in layout (#11704).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10237 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-26 09:25:25 +00:00
Jean-Philippe Lang
5969df8142 MailHandler: Match assignee on the full display name (#11552).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10236 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-26 09:03:17 +00:00
Etienne Massip
2ed4364c8a Reverted changes made to tests for r1893 (#11691).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10235 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-24 21:41:52 +00:00
Etienne Massip
70226f1833 Use a back_url parameter instead of referrer to refresh the page after user deletion (#11691).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10234 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-24 21:23:10 +00:00
Toshi MARUYAMA
a1d8cab6c6 remove empty setup method from unit enumeration test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10232 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-22 16:31:26 +00:00
Toshi MARUYAMA
3478a21c2f add unit test that enumeration returns default in regardless of active or not
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10231 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-22 16:31:13 +00:00
Toshi MARUYAMA
44c15c7560 add check default document category is not defined on database in tests (#11665)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10230 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-22 16:18:01 +00:00
Toshi MARUYAMA
d1a52fd301 use Rails3 Active Record syntax in DocumentCategory model
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10228 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-22 00:13:31 +00:00
Toshi MARUYAMA
377ef084ad add position to DocumentCategory in enumerations fixture (#11665)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10222 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-21 16:14:33 +00:00
Toshi MARUYAMA
665a331cc4 force set default document category if it is not set on database (#11665)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10221 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-21 13:45:53 +00:00
Toshi MARUYAMA
185ab2a020 add unit test to get default document category defined on database (#11665)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10220 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-21 13:45:40 +00:00
Toshi MARUYAMA
02fb4c3b2c add functional test to create non default document category (#11665)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10219 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-21 06:15:29 +00:00
Toshi MARUYAMA
8376311ee1 add missing fixtures to test/functional/documents_controller_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10216 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-21 04:49:22 +00:00
Toshi MARUYAMA
ac5e3c2036 add missing fixtures to test/unit/document_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10213 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-21 02:15:04 +00:00
Jean-Philippe Lang
a5c4fcc8f0 Updated macro documentation.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10212 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-18 12:55:00 +00:00
Jean-Philippe Lang
29d54f5d50 Validate macro name and options.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10211 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-18 12:35:14 +00:00
Jean-Philippe Lang
fc3a09e49a Let macros optionally accept a block of text (#3061).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10210 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-18 08:25:22 +00:00
Jean-Philippe Lang
73aece0baf Macros processing overhaul (#3061, #11633).
* macro arguments are no longer parsed by text formatters
* macro output is escaped unless it's html safe

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10209 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-17 14:46:55 +00:00
Jean-Philippe Lang
af5a814f4c Prevents "Overwriting existing method Issue.open" warning (#11545).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10208 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-17 14:34:10 +00:00
Toshi MARUYAMA
91a09bd474 fix unit test fails on JRuby 1.6.7.2 (#11577)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10207 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-14 00:30:23 +00:00
Jean-Philippe Lang
3673fbd881 Fixed: Can't use non-latin anchor in wiki (#11577).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10206 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-13 19:36:00 +00:00
Jean-Philippe Lang
d79bcc4369 Fixed that text email templates are escaped (#11355).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10205 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-13 19:05:42 +00:00
Jean-Philippe Lang
327660eb7f Respond with 404 on ActionView::MissingTemplate (#11503).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10204 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-13 18:34:00 +00:00
Jean-Philippe Lang
49e80c2cea Adds .settings to svn:ignore and removes svk property.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10203 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-13 18:16:45 +00:00
Jean-Philippe Lang
3119d1996c Use abbr_day_name to get the first letter of the day name (#9839).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10202 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-13 18:13:10 +00:00
Jean-Philippe Lang
11d4d8177c Escape filter values using .text instead of .html.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10201 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-13 14:59:59 +00:00
Jean-Philippe Lang
861ca78179 Fixed that roadmap anchor links can be ambigous (#11540).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10200 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-13 14:41:53 +00:00
Jean-Philippe Lang
8fb1a7e3cc Fixed that open scope on Project#issues raises an error (#11545).
Patch by Petr Pospisil.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10199 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-13 14:23:33 +00:00
Jean-Philippe Lang
91c875437d Adds a title to the issue link in the flash message.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10198 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-13 14:04:00 +00:00
Jean-Philippe Lang
60574bfb9c Context menu style.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10197 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-13 13:48:20 +00:00
Jean-Philippe Lang
3e4cbec95e Custom JQueryUI theme.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10196 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-13 13:39:21 +00:00
Jean-Philippe Lang
dbf41dba68 Set application/javascript as javascript mime tpye (#11621).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10195 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-13 12:39:11 +00:00
Toshi MARUYAMA
163659d0a5 cherry-pick avatar test from reverted r10184
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10194 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-11 00:31:18 +00:00
Jean-Philippe Lang
ec02853141 Raised the max-height.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10193 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-10 18:49:30 +00:00
Jean-Philippe Lang
2118f3a1fd Adds a max-height to projects lists.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10192 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-10 18:48:53 +00:00
Jean-Philippe Lang
145e5997b2 Removed duplicated helper (#11539).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10191 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-10 18:41:24 +00:00
Jean-Philippe Lang
32fcdff69f Removed p around ul.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10190 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-10 18:39:49 +00:00
Jean-Philippe Lang
c0c491dd61 Display a projects tree instead of a flat list in notification preferences (#11539).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10189 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-10 17:30:35 +00:00
Jean-Philippe Lang
0a6c1d9c13 Extract code to render nested listed of projects in an helper (#11539).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10188 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-10 17:09:48 +00:00
Jean-Philippe Lang
e52219f09d Fixed that projects are not ordered alphabetically after renaming project (#11508).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10187 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-10 16:50:15 +00:00
Jean-Philippe Lang
02b2a61e15 Reverted r10184 (#9365).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10186 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-10 16:35:58 +00:00
Jean-Philippe Lang
8b12702ebe Fixed that search results are escaped twice.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10185 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-10 16:22:26 +00:00
Jean-Philippe Lang
cbfafcd5e2 Use SSL for gravatars according to the protocol in settings (#9365).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10184 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-09 18:04:54 +00:00
Jean-Philippe Lang
e06bf0c464 Don't show the project dropdown when logging time on an issue.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10183 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-09 17:12:24 +00:00
Jean-Philippe Lang
f1650b8ff4 Adds autocomplete to issue field on time logging form.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10182 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-09 16:58:36 +00:00
Jean-Philippe Lang
f82a7a35b0 Adds autocomplete to "Related issue" field on revision (#11102).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10181 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-09 16:46:13 +00:00
Jean-Philippe Lang
908b960e71 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10180 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-09 16:43:12 +00:00
Jean-Philippe Lang
0ce0b52342 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10179 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-08 21:28:07 +00:00
Jean-Philippe Lang
b907398788 Slight change to the macro regexp.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10178 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-08 18:54:01 +00:00
Jean-Philippe Lang
2e4f3d5a60 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10177 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-08 18:47:52 +00:00
Jean-Philippe Lang
e0faf5cf84 Headings style.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10176 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-08 16:50:06 +00:00
Jean-Philippe Lang
9553325ee3 Use the accessor.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10175 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-08 16:35:25 +00:00
Jean-Philippe Lang
e2d6f0af4e Adds an option to macro definition to disable arguments parsing (#11578).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10174 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-08 16:28:33 +00:00
Toshi MARUYAMA
405bcc10c0 fix plural form of the abbreviation for hours in Brazilian Portuguese (#11600)
Contributed by Mauricio Piacentini.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10169 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-08 00:00:14 +00:00
Toshi MARUYAMA
2e536a2c56 Gemfile: mocha version up 0.12.3
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10167 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-07 23:10:50 +00:00
Jean-Philippe Lang
b6be9bff35 Log successful authentications.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10166 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-07 19:50:18 +00:00
Jean-Philippe Lang
b418e27283 Filling locales.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10165 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-07 19:24:03 +00:00
Jean-Philippe Lang
3676783052 Ability to filter issues using project, author, assignee and target version custom fields (#8161).
Custom fields must be marked as "Used as filter" to show up in the filters list.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10164 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-07 19:17:59 +00:00
Jean-Philippe Lang
599736aca7 Update the new custom field form with remotely.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10163 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-07 16:58:51 +00:00
Jean-Philippe Lang
1749fbf3e6 Build issue filters using javascript.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10162 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-07 16:41:46 +00:00
Jean-Philippe Lang
e9de6c1415 Removed csshover for IE6.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10161 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-07 16:16:19 +00:00
Jean-Philippe Lang
962134ab4f Prevent "Overwriting existing method User.active" warning, scope is already defined on the base class (#11545).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10160 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-07 16:14:24 +00:00
Jean-Philippe Lang
2e35a6800f Prevents "Overwriting existing method Issue.open" warning (#11545).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10159 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-07 16:13:04 +00:00
Jean-Philippe Lang
0a5828ee4a Added SVG mime-type (#11595).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10158 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-06 21:18:24 +00:00
Jean-Philippe Lang
1949f61d0c Fixed: Custom fields of type version not proper handled in receiving e-mails (#11571).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10157 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-06 21:16:19 +00:00
Jean-Philippe Lang
3f1c35b71e Tests not running after upgrade to mocha 0.12.2.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10155 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-02 17:37:03 +00:00
Jean-Philippe Lang
1a38434d5f Error running tests with ruby 1.9.3p194 (2012-04-20) [i386-mingw32].
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10154 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-02 17:20:36 +00:00
Jean-Philippe Lang
f8183429a9 Adjust the comment.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10153 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-02 16:48:23 +00:00
Jean-Philippe Lang
2275f46138 Makes Version#<=> consistent with SQL sort.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10152 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-02 16:47:53 +00:00
Jean-Philippe Lang
34cdac1669 Sort issues by scheduled versions first then unscheduled versions.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10151 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-02 16:47:06 +00:00
Toshi MARUYAMA
c7b712067e add translator name to Bulgarian yaml (#11561)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10150 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-01 12:59:00 +00:00
Toshi MARUYAMA
6ca1c117ab Bulgarian translation updated by Ivan Cenov (#11556)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10149 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-31 23:04:09 +00:00
Jean-Philippe Lang
b603aa74f9 Adds sharing attribute to the versions API (#11541).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10148 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-31 18:14:28 +00:00
Jean-Philippe Lang
c57a2974d1 Fixed that Mailer.with_synched_deliveries does not use delivery settings (#11550).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10147 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-31 18:09:33 +00:00
Jean-Philippe Lang
77d94818a4 Removed AuthSourceLdap.human_attribute_name.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10146 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-31 17:30:01 +00:00
Jean-Philippe Lang
a53894dd22 Set @previewed for rendering preview partial.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10145 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-31 17:22:17 +00:00
Jean-Philippe Lang
d99dbe9f0c Eager loading and no extra count query.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10144 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-31 17:21:14 +00:00
Jean-Philippe Lang
3f88fd44ef Filling locales.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10143 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-31 17:18:35 +00:00
Jean-Philippe Lang
bc153cb61d Support for subforums (#3831).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10142 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-31 17:17:52 +00:00
Jean-Philippe Lang
9554f0133f New edit icon.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10141 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-31 16:40:05 +00:00
Toshi MARUYAMA
f50da1593e Gemfile: prevent "rake db:migrate RAILS_ENV=test" causes exception on Ruby 1.9.3 (#10320, #10818)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10137 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-31 02:32:40 +00:00
Toshi MARUYAMA
96306f9dff replace tabs to spaces at app/views/repositories/_dir_list_content.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10136 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-30 01:32:31 +00:00
Jean-Baptiste Barth
8f0947e578 Fixed rake redmine:plugins:test:* not running some tests in subdirectories (#11533)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10135 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-29 18:27:13 +00:00
Jean-Baptiste Barth
d048d86c50 Invoke db:schema:dump after plugin migrations so that db/schema.rb stays up-to-date
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10134 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-29 18:01:13 +00:00
Jean-Philippe Lang
95457c434e Stylesheet cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10133 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-29 15:38:32 +00:00
Jean-Philippe Lang
42570c4426 Slight changes to syntax highlightment styles.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10132 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-29 15:30:47 +00:00
Jean-Philippe Lang
e4518af32a Removed line numbers from syntax highlightment.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10131 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-29 14:52:57 +00:00
Jean-Philippe Lang
08f200c487 Fixed legend tag position.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10130 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-29 12:13:47 +00:00
Jean-Philippe Lang
64f66daedd Duplicate ul tags.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10129 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-29 12:12:32 +00:00
Jean-Philippe Lang
0c72347d61 Fixed label with invalid for attribute.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10128 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-29 12:10:34 +00:00
Jean-Philippe Lang
15341bd844 Make labels clickable in Adminstration/Settings (#11496).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10127 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-29 12:08:10 +00:00
Jean-Philippe Lang
7a4c6d2a19 Add labels on SCMs.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10126 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-29 12:04:49 +00:00
Jean-Philippe Lang
1e6938a119 Removed duplicate ids.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10125 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-29 12:04:11 +00:00
Jean-Philippe Lang
9ef719f15e Add links to forums.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10124 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-29 11:52:50 +00:00
Jean-Philippe Lang
2175e4a901 Add links to repositories on repository list.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10123 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-29 11:51:09 +00:00
Jean-Philippe Lang
3692369584 html5 compliance.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10122 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-29 11:34:00 +00:00
Jean-Philippe Lang
75b0c01431 Typo.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10121 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-29 11:33:47 +00:00
Jean-Philippe Lang
d252848b2e Removed inline styles.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10120 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-29 11:32:24 +00:00
Jean-Philippe Lang
3a7207672e html5 compliance.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10119 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-29 11:30:43 +00:00
Jean-Philippe Lang
f8de723c46 Removed inline styles.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10118 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-29 11:28:22 +00:00
Jean-Philippe Lang
a0b2ab338e Removed inline styles.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10117 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-29 11:23:59 +00:00
Jean-Philippe Lang
308010c7c9 Fixed assertion.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10116 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-29 11:17:36 +00:00
Jean-Philippe Lang
6918a8974c Removed self closing a tags.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10115 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-29 11:16:19 +00:00
Jean-Philippe Lang
ba9f1c0388 html5 compliance.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10114 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-29 10:53:02 +00:00
Jean-Philippe Lang
45d9763090 Removed invalid html5 meta (Rails sets an equivalent response header natively) (#10128).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10113 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-29 10:46:04 +00:00
Jean-Philippe Lang
62d5b359c0 html5 compliance.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10112 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-29 10:21:27 +00:00
Jean-Philippe Lang
33d6f9e7a1 Label should be escaped.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10111 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-29 10:15:20 +00:00
Jean-Philippe Lang
c6106543e1 html5 compliance.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10110 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-29 10:12:26 +00:00
Jean-Philippe Lang
8ee2ae1846 html5 compliance.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10109 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-29 10:06:41 +00:00
Jean-Philippe Lang
a7caf3faf0 Use assert_select instead of assert_tag.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10108 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-28 18:41:08 +00:00
Jean-Philippe Lang
cc79feabe2 Adds assertions for subversion annotate.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10107 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-28 18:36:03 +00:00
Jean-Philippe Lang
71c5d6c8ee Use assert_select instead of assert_tag.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10106 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-28 18:16:55 +00:00
Jean-Philippe Lang
65524cc1cc Don't repeat revision on annotate view.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10105 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-28 18:11:03 +00:00
Jean-Philippe Lang
138f6736b2 Restores bottom border on h4.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10104 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-28 17:05:42 +00:00
Jean-Philippe Lang
0880096162 Same heading on message edit/show views.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10103 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-28 17:00:45 +00:00
Jean-Philippe Lang
571d316b13 Removed bottom border on headings.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10102 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-28 16:58:02 +00:00
Jean-Philippe Lang
93d9d459c5 Fixed broken assertion.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10101 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-28 16:54:21 +00:00
Jean-Philippe Lang
c544e9b9c6 Lighter blue for the header.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10100 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-28 16:46:26 +00:00
Jean-Philippe Lang
5565a078f3 Do not scroll to the preview.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10099 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-28 16:42:10 +00:00
Jean-Philippe Lang
7306c733bf HTML5 doctype.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10098 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-28 16:38:39 +00:00
Jean-Philippe Lang
969a5be7da New icons for the repository browser.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10097 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-28 16:25:02 +00:00
Jean-Philippe Lang
6851b0ca81 Lighter blue for links.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10096 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-28 16:07:51 +00:00
Jean-Philippe Lang
a7a0d47f2e Merged and minified jstoolbar.js and textile.js.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10095 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-28 15:58:54 +00:00
Jean-Philippe Lang
93a65c3c82 Moved syntax highlight styles to application.css.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10094 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-28 15:54:23 +00:00
Jean-Philippe Lang
1a088fb31e Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10093 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-28 15:45:36 +00:00
Jean-Philippe Lang
6e7507d580 Adds a replacement for deprecated link_to_function helper.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10092 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-28 15:26:45 +00:00
Jean-Philippe Lang
42fdc1d54d Fixed API key display on my account.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10091 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-28 15:14:56 +00:00
Jean-Philippe Lang
afc8239bf7 Fixed apply link on gantt.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10090 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-28 15:06:53 +00:00
Jean-Philippe Lang
8088749f10 Fixed tests broken by r10088.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10089 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-28 14:59:36 +00:00
Jean-Philippe Lang
3c3bdb8bb0 Adds JSONP support to the API (#11469).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10088 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-27 19:56:49 +00:00
Jean-Philippe Lang
9b4d29dc0d Do not propose non-assignable version (#11506).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10087 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-27 19:41:36 +00:00
Jean-Philippe Lang
9eb041fbc7 Versions that are not shared should not be assignable when selecting another project (#11506).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10086 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-27 19:36:53 +00:00
Jean-Philippe Lang
ed165f6716 Do not user user session for API requests.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10085 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-27 18:24:42 +00:00
Toshi MARUYAMA
8ed4620bb9 fix confirmation page has broken HTML when a project folding sub project is deleted (#11511)
Contributed by Haruka Yoshihara.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10083 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-26 23:45:17 +00:00
Jean-Philippe Lang
8e1f7607ec Identifier is now frozen.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10082 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-26 18:41:44 +00:00
Jean-Philippe Lang
87f284dcb6 Repository Identifier should be frozen (#11109).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10081 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-26 17:41:47 +00:00
Jean-Philippe Lang
04f9a321b1 Adds a task to duplicate a string in locales.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10080 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-26 17:32:22 +00:00
Jean-Philippe Lang
f03e21fb45 Changed issues css class from priority-{position} to status-{id} (#2071).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10079 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-26 16:55:40 +00:00
Jean-Philippe Lang
88efd302a7 Changed issues css class from status-{position} to status-{id} (#11304).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10078 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-26 16:50:39 +00:00
Jean-Philippe Lang
28cdc8adfc Don't turn #nnn with leading zeros into link (#11494).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10077 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-24 21:51:10 +00:00
Jean-Philippe Lang
3209c4c5e4 Sort versions ascending when grouping issues by version (#11153).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10076 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-24 18:41:04 +00:00
Jean-Philippe Lang
8fa787719a Fixed broken test.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10075 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-24 18:39:14 +00:00
Jean-Philippe Lang
bdd29295b4 In case the column is not found.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10074 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-24 17:42:45 +00:00
Jean-Philippe Lang
faab8678d4 Ability to group and sort the issue list by user/version custom field (#9419).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10073 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-24 17:39:30 +00:00
Jean-Philippe Lang
44fcc8919d Adds Version.fields_for_order_statement.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10072 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-24 16:32:39 +00:00
Jean-Philippe Lang
0b31c8ac85 Adds CustomField#group_statement.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10071 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-24 16:28:34 +00:00
Jean-Philippe Lang
46b1a49453 Use JQuery Dialog (#11445).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10070 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-22 15:42:29 +00:00
Jean-Philippe Lang
cd54e15a8d Use JQuery Datepicker (#11445).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10069 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-22 14:43:19 +00:00
Jean-Philippe Lang
6a2ca5e034 JQuery in, Prototype/Scriptaculous out (#11445).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10068 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-22 13:29:26 +00:00
Jean-Philippe Lang
387836f8aa Fixed that settings raises an error if not trackers exist (#11467).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10067 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-21 15:43:44 +00:00
Toshi MARUYAMA
1f84a8d83e code layout cleanup lib/redmine/helpers/gantt.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10066 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-21 13:03:29 +00:00
Toshi MARUYAMA
dc393cc480 replace tabs to spaces and fix indents at lib/redmine/helpers/gantt.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10065 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-21 12:53:06 +00:00
Toshi MARUYAMA
d41d493128 code layout cleanup app/views/gantts/show.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10064 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-21 11:00:59 +00:00
Toshi MARUYAMA
dadd294a25 code layout cleanup test/unit/lib/redmine/helpers/gantt_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10063 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-21 08:08:06 +00:00
Toshi MARUYAMA
bd85428b01 add copyright statement to test/functional/gantts_controller_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10062 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-21 07:12:18 +00:00
Toshi MARUYAMA
eb62603144 replace shoulda to Rails standard tests at functional gantts controller test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10061 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-21 07:03:36 +00:00
Jean-Philippe Lang
387f09d4f4 Removed -moz-border-radius styles.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10060 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-21 06:49:18 +00:00
Jean-Philippe Lang
47e496f049 Removes RJS from UsersController.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10059 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-21 06:35:49 +00:00
Jean-Philippe Lang
d3bfbb800c Removes RJS from MembersController.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10058 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-21 06:35:11 +00:00
Toshi MARUYAMA
9c3045eeda Russian translation for 1.4-stable and 2.0-stable updated by Александр Закревский (#11448)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10055 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-20 09:31:39 +00:00
Jean-Philippe Lang
3eaa998c28 Removes RJS from JournalsController.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10054 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-19 19:10:18 +00:00
Jean-Philippe Lang
e8469e2c5b Removes RJS from MessagesController.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10053 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-19 18:23:45 +00:00
Jean-Philippe Lang
3386008491 Removes RJS from VersionsController.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10052 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-19 18:13:21 +00:00
Jean-Philippe Lang
dee586e9eb Removes RJS from WikisController.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10051 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-19 18:13:08 +00:00
Jean-Philippe Lang
5b6732cfaf Removes RJS from IssuesController.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10050 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-19 17:54:26 +00:00
Jean-Philippe Lang
b53f9c688b Fixed migration broken by r9977.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10049 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-19 17:34:37 +00:00
Jean-Philippe Lang
87da04c808 Removes RJS from RepositoriesController.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10048 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-19 17:27:14 +00:00
Jean-Philippe Lang
38060a2cf0 Removes RJS from WatchersController.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10047 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-19 17:17:10 +00:00
Jean-Philippe Lang
c178aded61 Test cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10046 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-19 17:07:43 +00:00
Jean-Philippe Lang
8553107016 Removes RJS from IssueRelationsController.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10045 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-19 17:06:30 +00:00
Jean-Philippe Lang
21ee2e2cf2 Removes RJS from GroupsController.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10044 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-19 16:57:59 +00:00
Jean-Philippe Lang
035805fbd0 Start removing the RJS stuff.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10043 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-19 16:43:33 +00:00
Jean-Philippe Lang
51d5a52029 Do not let is_private be required.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10042 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-19 16:21:28 +00:00
Jean-Philippe Lang
6668d7ebd1 Removed deprecated #labelled_tabular_form_for helper.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10041 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-18 19:14:35 +00:00
Jean-Philippe Lang
1c8d03c1e9 ApplicationHelper#labelled_remote_form_for deprecated.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10040 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-18 19:13:30 +00:00
Jean-Philippe Lang
c790f1ca41 ApplicationHelper#link_to_remote_if_authorized deprecated.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10039 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-18 19:10:08 +00:00
Jean-Philippe Lang
d4f7b4af6d Removes calls to link_to_remote.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10038 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-18 19:09:52 +00:00
Jean-Philippe Lang
690b0fb08c Removes calls to link_to_remote.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10037 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-18 18:54:19 +00:00
Jean-Philippe Lang
cc553764ba Removes a call to form_remote_tag.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10036 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-18 18:48:39 +00:00
Jean-Philippe Lang
705f96ccde Removes calls to remote_form_for.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10035 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-18 18:43:13 +00:00
Jean-Philippe Lang
cd39b12f2c Removes a call to form_remote_tag.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10034 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-18 18:35:25 +00:00
Jean-Philippe Lang
7e5bad993d Removes most of the ajax stuff on my page layout.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10033 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-18 18:26:10 +00:00
Jean-Philippe Lang
c9a46950de Removes calls to link_to_remote.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10032 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-18 18:01:14 +00:00
Jean-Philippe Lang
ff68fff80e Adds a helper for preview links.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10031 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-18 17:47:19 +00:00
Jean-Philippe Lang
bb2af97dcf Removes calls to link_to_remote.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10030 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-18 17:34:11 +00:00
Jean-Philippe Lang
ccc5f64a99 Removes calls to link_to_remote.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10029 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-18 16:50:10 +00:00
Jean-Philippe Lang
6f3c339e5e Removes a call to link_to_remote.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10028 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-18 16:47:30 +00:00
Jean-Philippe Lang
b0757bbdf6 Removes a call to link_to_remote.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10027 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-18 16:36:08 +00:00
Jean-Philippe Lang
a49d50614f Removes a call to link_to_remote.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10026 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-18 16:31:36 +00:00
Jean-Philippe Lang
7b3aaca83c Removes a call to link_to_remote.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10025 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-18 16:28:07 +00:00
Jean-Philippe Lang
922f1d5243 Removes a call to link_to_remote.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10024 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-18 16:24:23 +00:00
Toshi MARUYAMA
ee3478f389 Traditional Chinese translation updated by ChunChang Lo (#11436)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10023 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-18 03:50:31 +00:00
Toshi MARUYAMA
07546b4943 remove trailing white-space from app/models/changeset.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10022 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-17 23:55:32 +00:00
Toshi MARUYAMA
2b642c0662 Bulgarian translation updated by Ivan Cenov (#11433)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10021 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-17 22:50:45 +00:00
Toshi MARUYAMA
3e3714c2d6 Japanese translation updated by Go MAEDA (#11427)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10020 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-17 14:47:31 +00:00
Toshi MARUYAMA
b5a4446f18 fix disordered use of long sound in Japanese "user" translation (#11411)
Contributed by Kenichi Maehashi.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10019 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-17 05:25:46 +00:00
Toshi MARUYAMA
4fdbeea686 Simplified Chinese translation updated by Steven Wong (#11417)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10018 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-17 04:59:06 +00:00
Toshi MARUYAMA
bbb14cb57c fix wrong Japanese "label_attachment" translation (#11419)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10017 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-17 04:58:36 +00:00
Toshi MARUYAMA
07ce80be2d fix unnatural Japanese message when users failed to login (#11412)
Contributed by Kenichi Maehashi.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10016 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-17 04:58:04 +00:00
Jean-Philippe Lang
c3c7f1f900 Removed debug message.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10015 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-16 17:56:08 +00:00
Jean-Philippe Lang
fe95692f10 Test if convert binary is available.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10014 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-16 17:37:24 +00:00
Jean-Philippe Lang
537be80be2 Adds a macro for inserting thumbnails in formatted text (#3510).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10013 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-16 17:15:40 +00:00
Jean-Philippe Lang
5c2de4dfc9 Adds Attachment#title.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10012 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-16 16:42:23 +00:00
Jean-Philippe Lang
570e1b1d62 Removed assertion that is susceptible to fail if test runs slowly.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10011 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-16 16:35:21 +00:00
Jean-Philippe Lang
7f1fb7ce81 Don't show "Required" option for standard/custom fields that are always required.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10010 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-16 16:33:27 +00:00
Toshi MARUYAMA
5ac4b6670f Japanese translation added for default role names by Kenichi Maehashi (#11402)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10009 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-16 14:47:04 +00:00
Toshi MARUYAMA
898873a22d Fix Japanese mistranslation for "button_submit" (#11401)
Contributed by Kenichi Maehashi.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10007 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-16 13:16:28 +00:00
Toshi MARUYAMA
74ee5c078f German translation updated by Hannes Meier (#11404)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10006 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-16 13:15:59 +00:00
Toshi MARUYAMA
185175c78e German translation for configurable session lifetime and timeout updated by Hannes Meier (#11406, #11404)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10005 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-16 13:15:27 +00:00
Jean-Philippe Lang
ba647689f4 Additional tests for custom field formats.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10004 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-15 19:30:47 +00:00
Jean-Philippe Lang
471f631dbd Use named routes.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10003 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-15 19:14:23 +00:00
Jean-Philippe Lang
54d2b07bff Test for when group does not exist.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10002 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-15 19:05:34 +00:00
Jean-Philippe Lang
e23511076c No blank option for custom fields marked as required on workflow settings.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10001 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-15 16:57:04 +00:00
Jean-Philippe Lang
072475b8a5 Remember "Only display used statuses" checkbox value after update.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9997 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-15 15:50:57 +00:00
Jean-Philippe Lang
071cf55fc8 Hard-coded strings.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9996 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-15 15:46:53 +00:00
Jean-Philippe Lang
a7bdc5e0af Adds option for displaying all statuses on workflow permissions.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9995 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-15 15:46:14 +00:00
Jean-Philippe Lang
712e5be29f Find role and tracker only when param is present.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9994 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-15 15:39:36 +00:00
Jean-Philippe Lang
5097f51784 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9993 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-15 15:37:49 +00:00
Jean-Philippe Lang
8a3126e175 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9992 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-15 15:36:45 +00:00
Jean-Philippe Lang
2f55caa1ba Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9991 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-15 15:35:02 +00:00
Jean-Philippe Lang
4c8c5e9187 Display all fields if tracker statuses are not yet set.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9990 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-15 15:34:44 +00:00
Jean-Philippe Lang
7946f4a696 Adds a sorted scope to IssueStatus model.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9989 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-15 15:33:17 +00:00
Jean-Philippe Lang
cb09055d60 Colorize transitions.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9988 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-15 15:25:26 +00:00
Jean-Philippe Lang
9e06942ef0 Moved code for replacing permissions to WorkflowPermission model.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9987 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-15 15:05:34 +00:00
Jean-Philippe Lang
02e7025685 Adds tmp/thumbnails directory.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9986 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-15 14:56:38 +00:00
Jean-Philippe Lang
88e1ae892c ruby1.8 compatibility (#703, #3521).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9985 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-15 14:50:38 +00:00
Jean-Philippe Lang
7f0bb136ad Validate attachment description length (#11365).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9984 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-15 14:42:00 +00:00
Jean-Philippe Lang
391d9b14fb Rewrites assertions with assert_select.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9983 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-15 14:36:13 +00:00
Jean-Philippe Lang
e0fb60c6b5 Adds maxlength=255 attribute on attachment description input field (#11365).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9982 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-15 14:34:28 +00:00
Jean-Philippe Lang
6c1db9c3a8 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9981 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-15 14:28:18 +00:00
Jean-Philippe Lang
7c6582009a Fills locales (#703, #3521).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9980 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-15 14:19:42 +00:00
Jean-Philippe Lang
b636695631 Removed hard-coded strings (#703, #3521).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9979 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-15 14:19:01 +00:00
Jean-Philippe Lang
004a13b75c Routing tests for r9977.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9978 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-15 14:13:48 +00:00
Jean-Philippe Lang
d7b669e50b Workflow enhancement: editable and required fields configurable by role, tracker and status (#703, #3521).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9977 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-15 14:12:17 +00:00
Jean-Philippe Lang
54d55a360a Adds assertions on response status and body.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9976 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-14 08:31:45 +00:00
Jean-Philippe Lang
18f693f9f7 Fixed that 200 API responses have a body containing one space (#11388).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9975 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-14 08:13:55 +00:00
Etienne Massip
6bf60e8c20 Fixes transparency issue.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9974 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-11 00:17:45 +00:00
Etienne Massip
823ac010c5 File handling cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9973 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-11 00:14:56 +00:00
Etienne Massip
0dbe234226 Use tabs instead of spaces for consistency.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9972 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-10 20:27:06 +00:00
Etienne Massip
9c9b0a4150 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9971 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-10 20:23:49 +00:00
Etienne Massip
7502ac484e Make sure that file handle is freed when an error is raised to prevent access exception on subsequent deletion attempt.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9970 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-10 20:16:07 +00:00
Etienne Massip
e2851a8b2a Use 1.8.7 compatible @Pathname#to_s@ alias for @Pathname#to_path@.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9969 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-10 20:14:06 +00:00
Etienne Massip
c929ab5c16 Set temporary path cache variable as a String back again so that TCPDF handles error messages fine.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9968 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-10 19:53:03 +00:00
Jean-Philippe Lang
165c2be523 Fixed that link to the assignee is escaped twice on the issue view (#11352).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9967 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-09 16:46:22 +00:00
Toshi MARUYAMA
b9d7a02b51 Traditional Chinese translation updated by ChunChang Lo (#11350)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9966 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-09 09:59:38 +00:00
Toshi MARUYAMA
2984dc903c Bulgarian translation updated by Ivan Cenov (#11347)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9965 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-09 09:59:06 +00:00
Jean-Philippe Lang
5d90228866 Test failure.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9964 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-08 17:10:58 +00:00
Jean-Philippe Lang
2dbabde7f4 Adds Etags on attachments.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9963 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-08 15:26:40 +00:00
Jean-Philippe Lang
e74d4ecf5f Compute issue ids array only once.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9962 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-08 13:31:22 +00:00
Jean-Philippe Lang
23a1ef543f Show shared versions when editing issues from different projects with the context menu (#11345).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9961 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-08 13:19:46 +00:00
Jean-Philippe Lang
7acd04fb87 Tests should not change settings.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9949 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-08 12:23:47 +00:00
Jean-Philippe Lang
133ca59edb Removed unused helper.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9948 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-08 07:58:28 +00:00
Jean-Philippe Lang
1c825df549 Adds a scope for sorting groups.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9947 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-08 07:40:31 +00:00
Jean-Philippe Lang
c11f5a23fe Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9946 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-08 07:36:58 +00:00
Jean-Philippe Lang
ab96a29460 Fixed test failure.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9945 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-08 07:20:48 +00:00
Jean-Philippe Lang
c02594af96 Test failure.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9944 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-07 22:08:10 +00:00
Jean-Philippe Lang
193b571e67 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9943 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-07 18:27:34 +00:00
Jean-Philippe Lang
a1d0acd632 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9942 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-07 18:05:32 +00:00
Jean-Philippe Lang
6adf61fd02 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9941 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-07 17:55:54 +00:00
Jean-Philippe Lang
986ffb2434 Use named routes.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9940 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-07 17:45:12 +00:00
Jean-Philippe Lang
efc6abea07 Fixed that deleting the last reply of a topic does not update last_reply_id.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9939 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-07 15:09:57 +00:00
Jean-Philippe Lang
851fbaf750 Use named routes.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9938 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-07 14:39:29 +00:00
Jean-Philippe Lang
7b40767428 Deprecated :confirm => 'Text' option.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9937 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-07 14:36:49 +00:00
Jean-Philippe Lang
56666a41b8 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9936 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-07 13:59:26 +00:00
Jean-Philippe Lang
7a529b24ee Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9935 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-07 13:53:38 +00:00
Jean-Philippe Lang
b379397d95 Fills locales (#1006).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9934 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-07 13:48:48 +00:00
Jean-Philippe Lang
a0c495b953 Displays thumbnails of attached images of the issue view (#1006).
This behaviour can be turned on/off in Settings -> Display (off by default). Thumbnail size can be configured there too.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9933 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-07 13:48:07 +00:00
Jean-Philippe Lang
b0bd506201 Fills locales (#8978).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9932 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-07 09:37:40 +00:00
Jean-Philippe Lang
3b207ee77c Adds a configurable timeout for LDAP authentication (#8978).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9931 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-07 09:36:04 +00:00
Jean-Philippe Lang
553066e804 Fixed test case name.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9930 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-07 09:26:26 +00:00
Jean-Philippe Lang
76a4b81cf3 Fixed: Openid registration form should not require user to enter password (#11331).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9929 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-07 06:22:35 +00:00
Jean-Philippe Lang
6086aa1be4 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9928 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-07 05:42:52 +00:00
Jean-Philippe Lang
8a080d8e53 Enable openid in test case setup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9927 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-07 05:41:58 +00:00
Jean-Philippe Lang
6351631ec6 Moved openid functional tests for their own test case.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9926 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-07 05:40:01 +00:00
Jean-Philippe Lang
5981aee06d Fixed: escaped link in conflict resolution form (#11341).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9925 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-07 05:23:52 +00:00
Jean-Philippe Lang
232edc6237 Ignore emails with "Auto-Submitted: auto-*" header (#11338).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9924 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-07 05:08:58 +00:00
Toshi MARUYAMA
d4dd35a78c Traditional Chinese translation updated by ChunChang Lo (#11336)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9923 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-06 13:08:14 +00:00
Toshi MARUYAMA
f4a2d1f342 Bulgarian translation updated by Ivan Cenov (#11335)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9922 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-06 13:07:36 +00:00
Toshi MARUYAMA
232d57450a sort files in locales:update rake task
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9921 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-06 13:06:48 +00:00
Jean-Philippe Lang
196f96fff1 Adds Private filter to the issue list (#8577).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9920 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-05 13:51:56 +00:00
Jean-Philippe Lang
1d7c0eb7c0 Makes Private column available on the issue list (#8577).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9919 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-05 13:29:07 +00:00
Jean-Philippe Lang
bd927eea88 Perf: don't load preferences for the anonymous user.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9917 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-05 13:05:11 +00:00
Jean-Philippe Lang
a1f17b982c Perf: use a custom decoder for Role#permissions instead of YAML.load.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9916 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-05 13:04:38 +00:00
Toshi MARUYAMA
cc2ee90f97 sort files in locales:check_interpolation and locales:check_parsing_by_psych rake tasks
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9915 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-05 12:52:28 +00:00
Toshi MARUYAMA
1eebd030ca generate translation files (#1091)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9914 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-05 12:52:06 +00:00
Jean-Philippe Lang
4cecc1beed Ability to disable standard fields on a per tracker basis (#1091).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9912 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-05 12:20:07 +00:00
Toshi MARUYAMA
51a1bf90dd fix Japanese mistranslation for 'label_language_based' (#11328)
Contributed by Go MAEDA.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9911 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-05 11:22:33 +00:00
Jean-Philippe Lang
ad68830a1b Fixed test failure.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9910 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-04 19:24:25 +00:00
Jean-Philippe Lang
1d1aef9d61 Fixed: unified diff link broken on specific file/revision diff (#11325).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9909 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-04 19:17:43 +00:00
Jean-Philippe Lang
d00ba6d2bb Fixed: Can't filter for negative numeric custom field (#11307).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9908 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-04 18:50:09 +00:00
Jean-Philippe Lang
86617fc437 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9907 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-04 18:28:05 +00:00
Jean-Philippe Lang
65b4515e1a Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9906 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-04 17:55:46 +00:00
Jean-Philippe Lang
a8e5ba0007 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9905 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-04 17:37:03 +00:00
Jean-Philippe Lang
df41255105 Perf: don't load parent message for generating a link.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9904 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-07-04 17:34:37 +00:00
Toshi MARUYAMA
bf69f9af9f Bulgarian translation updated by Ivan Cenov (#11272)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9903 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-27 13:01:03 +00:00
Toshi MARUYAMA
0c435ce630 Traditional Chinese translation updated by ChunChang Lo (#11268)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9902 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-27 13:00:37 +00:00
Jean-Philippe Lang
3e5dfed5d6 Typo in french locale.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9901 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-26 22:13:18 +00:00
Jean-Philippe Lang
a265e323ad Slight change to french locale.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9900 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-26 22:05:16 +00:00
Etienne Massip
56cf381357 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9899 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-26 17:36:29 +00:00
Jean-Philippe Lang
eb8f455c13 More specific flash message when creating a user account.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9898 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-26 17:14:44 +00:00
Jean-Philippe Lang
6c9401b624 Additional "Log time" link on project overview (#11181).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9897 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-26 17:05:02 +00:00
Jean-Philippe Lang
f9f5e9e7c6 Fixed: Link is escaped in wiki added/updated notification email (#11262).
Patch by Łukasz Jachymczyk.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9896 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-26 17:03:08 +00:00
Jean-Philippe Lang
6529035ee1 Fixed that wiki diff may produce html (#11209).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9895 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-26 16:57:09 +00:00
Jean-Philippe Lang
7f6ac407ef Fixed that root projects are escaped twice in the project drop down (#11217).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9894 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-26 16:54:30 +00:00
Toshi MARUYAMA
0ecab46229 Japanese translation updated by Go MAEDA (#11260)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9892 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-26 10:55:04 +00:00
Toshi MARUYAMA
c38c3c9436 Simplified Chinese translation updated by Steven Wong (#11259)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9891 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-26 10:37:24 +00:00
Toshi MARUYAMA
2007543539 Simplified Chinese translation updated by Steven Wong (#11261)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9890 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-26 10:36:58 +00:00
Toshi MARUYAMA
72e5b638e9 Traditional Chinese translation added and changed by ChunChang Lo (#11256)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9889 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-26 03:26:58 +00:00
Toshi MARUYAMA
66390fd0e6 Bulgarian translation updated by Ivan Cenov (#11254)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9888 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-25 23:29:57 +00:00
Jean-Philippe Lang
21ac4a3d0e Makes Redmine.pm handle project status (#3640).
Repositories of archived projects are no longer accessible. Repositories of closed projects are read-only.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9887 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-25 20:08:49 +00:00
Jean-Philippe Lang
2ceb6b8230 Moved logic relative to project status from User to Project model (#3640).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9886 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-25 18:44:25 +00:00
Jean-Philippe Lang
7fb2ddefde Visual hint for closed projects on project list (#3640).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9885 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-25 18:39:23 +00:00
Jean-Philippe Lang
8334651c4d Fills locales (#3640).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9884 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-25 17:50:14 +00:00
Jean-Philippe Lang
ac56c0c99c Ability to close projects (read-only) (#3640).
A new permission (Close/reopen project) is available to give non-admin users the ability to close their projects.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9883 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-25 17:49:35 +00:00
Toshi MARUYAMA
5961a1e70d add missing fixture to test/unit/query_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9882 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-23 23:29:42 +00:00
Etienne Massip
1221b79e98 Removed test line committed accidently (#11073).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9881 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-23 16:51:54 +00:00
Etienne Massip
0cc817fba3 Use base class name as customized type to fix @UserCustomField#order_statement@.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9880 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-23 15:47:19 +00:00
Jean-Philippe Lang
7ed2c481d8 Reversed order of priorities on the issue summary page (#11205).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9879 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-20 19:24:58 +00:00
Jean-Philippe Lang
26e75568cf Makes repository url read-only after saving.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9878 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-20 18:45:51 +00:00
Toshi MARUYAMA
37cbbcea71 Korean translation updated by Kihyun Yun (#11201)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9877 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-20 08:27:26 +00:00
Jean-Philippe Lang
585d08765e Safe attributes for repositories.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9876 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-19 19:47:54 +00:00
Jean-Philippe Lang
3b854bee59 Make repository identifier accept underscores (#11192).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9875 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-19 19:12:17 +00:00
Toshi MARUYAMA
6c6aae07a2 fix test_global_index of functional activities controller test fails around UTC 00:00
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9871 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-19 00:43:10 +00:00
Toshi MARUYAMA
9c060fe33a scm: git: fix unable to run unit lib test if git binary is not available on Windows
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9870 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-18 23:57:27 +00:00
Jean-Philippe Lang
d3aa9c6a7b Removed invalid nested p tags.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9869 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-18 21:40:16 +00:00
Jean-Philippe Lang
a787325ed2 Updates for 2.0.3 release.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9864 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-18 18:40:05 +00:00
Jean-Philippe Lang
2311f80c5d Fix: Unable to run unit and functional tests if git binary is not available.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9861 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-18 18:33:33 +00:00
Jean-Philippe Lang
f62507dae5 Fixed that deleting a project with subtasks may fail (#11185).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9858 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-18 17:16:13 +00:00
Toshi MARUYAMA
9e878a9384 Traditional Chinese translation updated by ChunChang Lo (#11186)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9856 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-18 03:45:52 +00:00
Toshi MARUYAMA
e3eab40ec4 fix PDF export tables problems (#10688)
Contributed by Jun NAITOH.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9853 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-17 13:05:05 +00:00
Toshi MARUYAMA
b93e040bb8 fix unit test fails on Ruby 1.8 and JRuby (#2190)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9850 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-17 09:34:12 +00:00
Etienne Massip
dbdc9b9da7 Display dates using user's locale if available (#2190).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9838 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-16 21:45:47 +00:00
Jean-Philippe Lang
2c07b478bb Fixed that time entries should be sorted by date and created_on (#11178).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9837 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-16 20:09:12 +00:00
Jean-Philippe Lang
542b355210 Fixed that sticky messages are not displayed first (#11170).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9836 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-16 19:34:19 +00:00
Etienne Massip
897e83a556 Added missing local variable declaration.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9835 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-14 21:12:03 +00:00
Etienne Massip
768e36caf0 Added a min-width to revision graph holder style to fix its rendering in Chrome (#11061).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9832 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-14 20:57:28 +00:00
Jean-Philippe Lang
76eeb64d1a Fixed that time report raises a SQL error if there are multiple CustomValue for a time entry (#11160).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9831 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-14 10:47:04 +00:00
Jean-Philippe Lang
c804151780 Upgrade to Rails 3.2.6 (#11162).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9830 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-14 10:33:30 +00:00
Jean-Philippe Lang
e199c4b823 Adds support for Git's smart HTTP protocol to Redmine.pm (#4905).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9829 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-14 08:13:53 +00:00
Jean-Philippe Lang
9eef74f09a Additional tests for Redmine.pm.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9828 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-14 08:04:44 +00:00
Jean-Philippe Lang
48a557a79e Use a random filename.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9827 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-12 19:59:28 +00:00
Jean-Philippe Lang
4fda1f6cd1 Start implementing tests for Redmine.pm perl module.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9826 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-12 19:33:09 +00:00
Jean-Philippe Lang
12ea96066b Doc cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9825 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-12 19:14:06 +00:00
Jean-Philippe Lang
13dced9d76 Run only unit, functional then integration tests for coverage.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9824 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-12 19:04:24 +00:00
Jean-Philippe Lang
667693b32c Fixed that Subversion#load_entries_changesets raises an error if entries is nil.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9823 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-12 17:43:23 +00:00
Jean-Philippe Lang
965ef33192 Fixed that lines with spaces only before headings break wiki section extraction (#11133).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9822 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-11 17:51:14 +00:00
Toshi MARUYAMA
462d0ddfe8 Simplified Chinese translation updated (#11130)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9817 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-11 06:30:23 +00:00
Toshi MARUYAMA
9989ae5a06 Bulgarian translation updated by Ivan Cenov (#11129)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9816 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-11 06:29:59 +00:00
Toshi MARUYAMA
89feb8a3fb Japanese translation update by Go MAEDA (#11128)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9815 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-11 06:29:33 +00:00
Toshi MARUYAMA
fdd36ce713 fix test_user_index of activities controller test fails at Japanese morning and afternoon
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9814 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-11 04:42:54 +00:00
Toshi MARUYAMA
21dac7287b remove trailing white-spaces from config/settings.yml
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9813 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-11 01:25:45 +00:00
Toshi MARUYAMA
74a2c5a521 scm: mercurial: use Rails3 ActiveRecord syntax with same as git r9807 at find_changeset_by_name
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9812 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-11 00:18:24 +00:00
Toshi MARUYAMA
96f5d315ea add some avatar tests
* the default size was 50px
* class="gravatar"'
* some tests to test the default and option parsing

Contributed Felix Schäfer.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9811 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-11 00:18:09 +00:00
Jean-Philippe Lang
9b63117856 Extract code from view.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9809 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-10 19:19:22 +00:00
Jean-Philippe Lang
888d284136 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9808 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-10 18:56:42 +00:00
Jean-Philippe Lang
f673027bc1 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9807 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-10 18:38:31 +00:00
Jean-Philippe Lang
8a491dbae9 Faster changesets loading for subversion.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9806 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-10 18:32:48 +00:00
Jean-Philippe Lang
7c105ec9e9 Adds a method to load changesets for repository entries.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9805 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-10 18:32:09 +00:00
Jean-Philippe Lang
9b60214b3a Fixed that Repository#entries returns an Array.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9804 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-10 17:01:33 +00:00
Jean-Philippe Lang
4d12bea397 Make sure we look for a feeds token.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9801 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-10 13:29:47 +00:00
Jean-Philippe Lang
490bfc2934 Stringify tokens.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9800 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-10 13:27:51 +00:00
Jean-Philippe Lang
c47293edb1 Stringify User.try_to_login arguments.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9799 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-10 13:24:28 +00:00
Jean-Philippe Lang
be4ad60058 Make sure that #api_key_from_request returns a String.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9798 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-10 13:23:01 +00:00
Jean-Philippe Lang
74645eb017 Configurable session lifetime and timeout (#6597).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9797 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-10 13:16:56 +00:00
Jean-Philippe Lang
26ff9e1c26 Fixed: German umlauts in Subject get striped with ruby1.8 (#11065).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9796 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-10 08:15:22 +00:00
Jean-Philippe Lang
c73823cd0f Set human size precision to Rails' default which is now 3 (#11118).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9794 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-09 14:09:23 +00:00
Jean-Philippe Lang
8d4e528f22 Force rendering of activity view if activity items count changed.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9787 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-09 10:53:17 +00:00
Jean-Philippe Lang
898a4164a0 Fixed that link to user is escaped in activity title (#11124).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9786 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-09 10:32:34 +00:00
Jean-Philippe Lang
d21bacb01d Fixed that content_for does not work in Hook.render_on (#11105).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9785 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-09 09:19:15 +00:00
Jean-Philippe Lang
8b381e3bd4 Restored KB instead of kB (#11118).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9784 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-09 07:57:38 +00:00
Jean-Philippe Lang
9f788310b1 Fixed that custom_fields property is ignored for time entries in REST API (#11112).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9783 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-09 07:55:26 +00:00
Jean-Philippe Lang
7fba8bc682 Change in Rails' for handling localized number precision (#11118).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9782 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-09 07:46:07 +00:00
Jean-Philippe Lang
2314e41474 Priorities have the same position and can't be reordered (#11098).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9781 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-09 07:27:43 +00:00
Jean-Philippe Lang
77bac4b14d Ability to set default column order in issue list (#11068).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9780 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-08 18:50:22 +00:00
Toshi MARUYAMA
b7a435f7a0 fix German "field_multiple" translation glitch by Andreas Deininger (#11113)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9777 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-08 07:45:39 +00:00
Jean-Philippe Lang
234e5d59ac Show repository images inline when clicking 'View' (#10362).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9776 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-07 17:00:29 +00:00
Jean-Philippe Lang
44ea32afba Updates for 2.0.2 release.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9770 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-05 17:19:00 +00:00
Jean-Philippe Lang
c8226509fd Fixed that wiki start page can't be changed (#11085).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9768 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-03 22:20:33 +00:00
Jean-Philippe Lang
327d5d2132 Makes users optional in GET /groups/:id (#8981).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9765 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-03 13:32:14 +00:00
Jean-Philippe Lang
1c5b214056 Upgrade to Rails 3.2.5 (#11084).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9764 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-03 13:16:16 +00:00
Jean-Philippe Lang
5bfe80949c Rails 3.2.5 compatibility.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9763 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-03 12:29:21 +00:00
Jean-Philippe Lang
0523ac387b Test failure due to a regression in Rails 3.2.5.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9762 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-03 12:15:55 +00:00
Jean-Philippe Lang
ef01cada8b Fixed argument to repository_path that triggers an error with Rails 3.2.5.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9761 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-03 12:02:46 +00:00
Jean-Philippe Lang
182a215c7b Renamed #changes association to #ticket_changes.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9760 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-03 11:47:26 +00:00
Jean-Philippe Lang
2cbf9c9cc4 Renamed #changes association to #filechanges (clash with AR::Base.changes that triggers errors with Rails 3.2.5).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9759 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-03 11:46:58 +00:00
Jean-Philippe Lang
dd9c2cafa7 REST Api for Groups (#8981).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9758 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-03 10:40:32 +00:00
Jean-Philippe Lang
3142183b30 Fixed that Redmine.pm does not support "bind as user" ldap authentication (#11046).
Patch contributed by Adi Kriegisch.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9755 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-03 08:49:46 +00:00
Toshi MARUYAMA
ba25d27e3a scm: git: skip Latin-1 path tests on Git for Windows above 1.7.10
Git for Windows (msysGit) changed internal API from ANSI to Unicode in 1.7.10.
http://code.google.com/p/msysgit/issues/detail?id=80

So, Latin-1 path tests fail on Japanese Windows

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9750 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-02 18:36:23 +00:00
Toshi MARUYAMA
69b46ab1be scm: mercurial: remove comment about Mercurial 0.9.5 compatibility from redminehelper.py
Redmine supports Mercurial 1.2 or higher from r7650.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9749 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-02 10:39:27 +00:00
Jean-Philippe Lang
dd1cb4a5bf Adds #find_group filter.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9748 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-01 19:41:06 +00:00
Jean-Philippe Lang
d58e5a0a1e Removed auto-generated comments.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9747 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-01 19:07:22 +00:00
Jean-Philippe Lang
9f531a4380 Use safe_attributes in GroupsController.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9746 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-01 19:06:16 +00:00
Jean-Philippe Lang
733fef458c Replaced group[lastname] parameter with group[name].
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9745 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-01 18:24:33 +00:00
Etienne Massip
121ce2a390 Use time_zone_select specific helper.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9744 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-01 13:38:03 +00:00
Etienne Massip
fc7b790081 Get rid of ActiveSupport::Concern InstanceMethods deprecation warnings.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9743 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-30 18:33:26 +00:00
Jean-Philippe Lang
d915a5e36d Adds missing require 'rubygems' (#11051).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9742 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-30 17:56:39 +00:00
Jean-Philippe Lang
4ee133e77e Fixed that project, issue and activity should be preserved when logging time with "Create and continue" (#11038).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9741 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-29 18:54:26 +00:00
Jean-Philippe Lang
53a0cee57a Fixed that logging time inside redirects at global time logging (#11038).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9740 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-29 17:07:07 +00:00
Jean-Philippe Lang
251d62c2bf Adds redmine:plugins:test rake tasks for running plugins tests.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9738 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-28 10:02:24 +00:00
Jean-Philippe Lang
afbff44fb4 Fixes test templates for plugins.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9737 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-28 09:00:21 +00:00
Jean-Philippe Lang
3ba6718805 Fixed test_helper template for plugins.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9736 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-28 08:40:20 +00:00
Toshi MARUYAMA
e1268faa4a code layout cleanup app/views/users/_mail_notifications.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9735 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-28 08:24:46 +00:00
Toshi MARUYAMA
cfaa0fc23e fix project list is not shown on Email notifications (#11032)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9734 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-28 08:24:31 +00:00
Jean-Philippe Lang
cfddd2ff48 Updates for 2.0.1 release.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9731 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-28 07:23:48 +00:00
Toshi MARUYAMA
87783362cf code layout cleanup test/functional/users_controller_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9730 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-28 07:07:00 +00:00
Jean-Philippe Lang
9aef7a3242 Fixed test failures on wiki_page updated_on eager loading (#10996).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9727 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-26 19:35:25 +00:00
Jean-Philippe Lang
189be55235 Fixed time zone issues introduced by r9719 (#10996).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9726 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-26 12:07:56 +00:00
Jean-Philippe Lang
84084b0168 Restores local time zone for timestamps for 1.x compatibility (#10996).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9719 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-26 09:12:04 +00:00
Jean-Philippe Lang
3a4a708d51 Fixed that plugin model generator does not generate the migration (#11024).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9718 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-26 08:50:32 +00:00
Jean-Philippe Lang
e4332ba35f Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9717 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-25 20:54:11 +00:00
Jean-Philippe Lang
d664fdcde9 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9716 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-25 20:51:43 +00:00
Jean-Philippe Lang
aa18cd54c7 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9715 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-25 20:43:18 +00:00
Jean-Philippe Lang
59cbc68dde Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9714 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-25 20:18:55 +00:00
Jean-Philippe Lang
221585c7b5 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9713 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-25 19:48:22 +00:00
Jean-Philippe Lang
e7b9a9c6ff Replace RAILS_DEFAULT_LOGGER with ::Rails.logger (#11013).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9712 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-25 16:54:23 +00:00
Jean-Philippe Lang
472d3a00a3 Fixed that some input fields are escaped on validation failures (#11027).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9711 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-25 16:50:25 +00:00
Jean-Philippe Lang
235238b583 Fixed that project identifier can always be updated (#11028).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9710 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-25 16:43:18 +00:00
Jean-Philippe Lang
73500a349b Fixed that the issue link is escaped on my page spent time (#10991).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9709 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-25 16:34:40 +00:00
Toshi MARUYAMA
b587f693ab Korean translation added and changed by jongyoon Choi (#10988)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9708 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-25 13:50:12 +00:00
Jean-Philippe Lang
c77370a9eb Use a modal form to create a category from the issue form.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9707 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-24 17:31:53 +00:00
Jean-Philippe Lang
6206c88dfa Fixed that updated_on is not updated when updating an issue (#10964).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9703 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-21 18:23:03 +00:00
Jean-Philippe Lang
1ab9e42b9b Fixed that columns selection in not displayed on the custom query form (#10972).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9702 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-21 16:55:48 +00:00
Etienne Massip
ae8830ed61 Added yard to development gems.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9701 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-18 13:52:49 +00:00
Jean-Philippe Lang
1996af104d Fixed that watchers delete links are escaped on the issue view (#10932).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9700 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-15 19:33:42 +00:00
Jean-Philippe Lang
e68043e13c Fixed that creating a new version from project settings does not redirect to versions tab (#10923).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9699 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-15 17:25:27 +00:00
Jean-Philippe Lang
05481fe96b Updates for 2.0.0 release.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9696 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-14 22:17:57 +00:00
Jean-Philippe Lang
034539c988 CHANGELOG updated.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9691 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-13 19:08:25 +00:00
Jean-Philippe Lang
48c28f717d Removed delete_broken_cookies filter.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9689 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-13 11:26:21 +00:00
Jean-Philippe Lang
23a06ec022 Restored List-Id header in email notifications (#10888).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9687 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-13 10:44:41 +00:00
Jean-Philippe Lang
4f0aa2432c Fixes custom_field_tag helper broken by r9682.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9686 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-13 10:21:24 +00:00
Jean-Philippe Lang
426b1d6fcd Fixed that option tags are escaped.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9683 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-13 09:00:26 +00:00
Jean-Philippe Lang
478a549356 Use content_tag helper.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9682 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-13 08:47:54 +00:00
Jean-Philippe Lang
69e55fb1ef Fixed that enumerations option tags are escaped.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9681 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-13 08:45:15 +00:00
Jean-Philippe Lang
46400e355e Use content_tag helper.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9680 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-13 08:42:19 +00:00
Jean-Philippe Lang
dc7569ecae Fixed that group filter is escaped on users index.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9679 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-13 08:38:35 +00:00
Jean-Philippe Lang
7c97832002 Redirect to referer when deleting a user (#10865).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9678 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-13 08:33:55 +00:00
Jean-Philippe Lang
46e48ad3f7 Updated INSTALL and UPGRADING docs with new rake task (#10891).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9677 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-12 13:14:53 +00:00
Jean-Philippe Lang
a59257dfb6 Fixed #set_scm in reposman (#10837).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9675 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-12 12:54:46 +00:00
Jean-Philippe Lang
9382d856b4 Adds script synopsis.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9674 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-12 12:50:15 +00:00
Jean-Philippe Lang
30d2bed1fe Fixed reposman arguments parsing (#10837).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9673 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-12 12:47:51 +00:00
Jean-Philippe Lang
a99c61b471 Adds all/none operators to text custom field filters (#9790).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9671 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-12 12:23:20 +00:00
Jean-Philippe Lang
1d677ac968 Restored :generate_session_store as a deprecated rake task (#10891).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9670 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-12 07:48:21 +00:00
Toshi MARUYAMA
1ccc975f3f set svn:eol-style native to Albanian translation files (#10875)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9667 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-11 04:33:01 +00:00
Toshi MARUYAMA
dca52d6729 Albanian translation added by Dimitri Toslluku (#10875)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9666 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-11 04:25:43 +00:00
Jean-Philippe Lang
1831861eac Tests for Setting.per_page_options_array.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9665 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-10 18:53:32 +00:00
Jean-Philippe Lang
5bd90548b0 Adaptive display of "Per page" links (#7720).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9664 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-10 18:51:11 +00:00
Toshi MARUYAMA
0bb937152b change mailer model method comments to Rails3 style
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9663 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-09 15:14:45 +00:00
Toshi MARUYAMA
804864beca replace Mailer deliver syntax to Rails3 style at reminders method of mailer model
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9662 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-09 15:14:30 +00:00
Toshi MARUYAMA
2ed78d95f6 code layout cleanup app/views/wiki/edit.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9661 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-09 14:18:53 +00:00
Toshi MARUYAMA
678469cf09 additional comment at config/environments/test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9660 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-09 13:58:59 +00:00
Toshi MARUYAMA
11746c44f8 set svn:executable '*' to script/*
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9659 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-09 13:10:04 +00:00
Toshi MARUYAMA
411f0874ab replace comment "config/environment.rb" to "config/application.rb" at head of config/environments/*.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9658 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-09 12:04:10 +00:00
Toshi MARUYAMA
0ba0a7bcc9 remove commented out Rails2 including from lib/redmine/hook.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9657 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-09 10:50:10 +00:00
Jean-Philippe Lang
ddfb2315aa Replaced "Allow users to unsubscribe" with "Allow users to delete their own account" (#10787).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9654 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-08 11:03:45 +00:00
Jean-Philippe Lang
1ad003dcc7 Fixed that REST Uploads fail with fastcgi (#10832).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9652 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-08 10:11:09 +00:00
Jean-Philippe Lang
7b6d11ed6a Removed comments.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9651 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-07 17:24:20 +00:00
Jean-Philippe Lang
04fe0412e1 Use optparse instead rdoc/usage in rdm-mailhandler (#10837).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9650 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-07 17:23:30 +00:00
Jean-Philippe Lang
03e9c51776 Formatting.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9649 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-06 21:18:31 +00:00
Jean-Philippe Lang
3710bbfda1 Use optparse instead rdoc/usage in reposman (#10837).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9648 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-06 21:16:54 +00:00
Jean-Philippe Lang
df7ddf5c0e Use uppercase NAME and VERSION environment variables for plugin migration tasks (#10838).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9647 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-06 21:03:30 +00:00
Toshi MARUYAMA
31d2d1284a remove redundant code from app/models/mail_handler.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9646 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-06 13:50:30 +00:00
Jean-Philippe Lang
f6882cd69e Stub Mailer with mocha.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9645 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-06 08:43:44 +00:00
Jean-Philippe Lang
18852b765a Trackers should be sorted by position not by name.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9644 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-05 16:21:22 +00:00
Jean-Philippe Lang
ee8dcab9db Fixed that activities option tags on the time entry bulk edit form are escaped.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9643 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-05 16:09:27 +00:00
Toshi MARUYAMA
02f704bb01 add Copyright statement to test/integration/repositories_git_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9642 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-05 14:48:45 +00:00
Toshi MARUYAMA
f08b648cce fix error of AdminControllerTest test_test_email_failure_should_display_the_error
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9641 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-05 14:34:16 +00:00
Jean-Philippe Lang
19e56045dd Fixed deprecated render calls in Mailer.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9640 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-05 13:21:58 +00:00
Jean-Philippe Lang
6fc909a402 Adds a deprecation warning to Mailer.deliver_*.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9639 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-05 13:17:18 +00:00
Toshi MARUYAMA
7af8d7caf0 replace Mailer deliver syntax to Rails3 style
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9638 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-05 13:07:12 +00:00
Jean-Philippe Lang
e876d1bfc0 Changes RedMine to Redmine in copyright notices.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9637 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-05 13:02:45 +00:00
Jean-Philippe Lang
ba5a052c8c Copyright update.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9636 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-05 12:56:53 +00:00
Toshi MARUYAMA
6e7eadf9fb move unit mailer test last_email method to the bottom and change to private
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9635 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-05 12:20:18 +00:00
Toshi MARUYAMA
5ce2987ea9 add missing fixture to test/unit/mailer_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9634 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-05 12:20:01 +00:00
Jean-Philippe Lang
a3c25c18d7 Code cleanup, reuse the visible scope.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9633 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-05 09:54:50 +00:00
Jean-Philippe Lang
61a1fa1b6e Do not trigger model validations when rebuilding the nested set (#10829).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9632 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-05 09:39:38 +00:00
Jean-Philippe Lang
1ab261dda6 Use Mail instead of TMail in MailHandler.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9630 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-05 09:19:23 +00:00
Toshi MARUYAMA
255a84878d svn propset "svn:eol-style" native test/integration/repositories_git_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9629 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-05 05:34:17 +00:00
Toshi MARUYAMA
6bcbdd44fc route: scm: fix diff of two revisions
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9628 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-05 05:29:58 +00:00
Toshi MARUYAMA
66d62504ef test: route: scm: move changes action tests to non revisions path tests
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9627 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-05 05:29:43 +00:00
Toshi MARUYAMA
17d19febc6 fix typo of integration users test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9626 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-05 05:29:28 +00:00
Toshi MARUYAMA
b0414ec1fb route: scm: split entry and raw actions
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9625 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-05 01:01:29 +00:00
Toshi MARUYAMA
569e1b37cc model: convert news finder to Rails3 syntax
Contributed by Felix Schäfer.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9624 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-04 23:35:29 +00:00
Toshi MARUYAMA
bef28f7dab test: switch to Rails3 Active Record syntax at test_destroy of unit/repository_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9623 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-04 23:07:10 +00:00
Toshi MARUYAMA
49fc255b48 test: switch to Rails3 Active Record syntax at unit/query_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9622 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-04 23:06:47 +00:00
Toshi MARUYAMA
6c6467879a scm: fix revision graph left padding
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9621 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-04 17:07:38 +00:00
Jean-Philippe Lang
9f396a6dfb Fixed undefined method `<=>' for nil:NilClass when sorting repositories with nil identifiers (#10827).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9619 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-04 16:57:15 +00:00
Toshi MARUYAMA
ad8193dcde fix label_for_field of LabelledFormBuilder always has class="error" in label tag
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9618 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-04 14:33:35 +00:00
Toshi MARUYAMA
b4350ca91a route: scm: fix git and mercurial changes action
If branch name has special character, "View revisions" link has route error.
For example, Redmine Mercurial hgsubversion mirror has "../sandbox/rails-3.2" named branch.

Git default branch of bare repository is defined at HEAD.
In most cases, it is *master*.
Mercurial GUI standard behavior is showing all revisions on top page.
So, Redmine default branch is *nil*.
Mercurial top page "View revisions" link has route error.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9617 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-03 14:49:29 +00:00
Toshi MARUYAMA
2c28d6b5d1 scm: git: fix creating and updating repository
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9616 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-03 11:48:33 +00:00
Jean-Philippe Lang
36ee2b24bd Load rake tasks from Redmine plugins (#10816).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9615 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-02 16:30:16 +00:00
Jean-Philippe Lang
d2278b63a1 Fixed path for loading plugin Gemfile (#10811).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9614 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-02 16:20:32 +00:00
Toshi MARUYAMA
d658ab22d6 scm: fix broken main repository 'root' link
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9613 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-02 15:58:03 +00:00
Toshi MARUYAMA
1446c9b7f0 scm: fix git and mercurial branch list box action
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9612 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-02 13:19:16 +00:00
Toshi MARUYAMA
9be6dfbe10 code layout clean up test/integration/routing/repositories_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9611 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-02 13:18:56 +00:00
Jean-Philippe Lang
38011c0fb1 Fixed error on commits per month graph (#10806).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9610 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-01 21:12:47 +00:00
Jean-Philippe Lang
d1372107e5 Updated test for r9608.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9609 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-01 18:01:21 +00:00
Jean-Philippe Lang
c085367bb6 Adds css class to custom field input tags.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9608 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-01 16:50:42 +00:00
Jean-Philippe Lang
bebe429472 Fixed the path displayed in error message.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9605 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-01 15:50:16 +00:00
Jean-Philippe Lang
0491488554 Updates dispatch.fcgi.example to work with Rails3 and removes CGI handlers.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9604 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-01 15:48:46 +00:00
Jean-Philippe Lang
785825900a Adds environment information display to /admin/info.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9603 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-01 14:49:53 +00:00
Toshi MARUYAMA
017d974dd8 remove trailing white-spaces from test/unit/mailer_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9602 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-01 12:45:39 +00:00
Jean-Philippe Lang
5b680625c1 Adds a simple script/about.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9601 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-01 11:41:15 +00:00
Jean-Philippe Lang
6fca028905 Make sure we don't boot with plugins in vendor/plugins.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9600 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-01 10:42:25 +00:00
Jean-Philippe Lang
b097a1753e Let redmine:plugins:assets mirror a single plugin assets with name=.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9599 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-01 10:25:22 +00:00
Jean-Philippe Lang
f54ecfc55f Fixed that sidebar with hook content only should not be hidden.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9598 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-01 10:19:06 +00:00
Jean-Philippe Lang
45093230a9 Adds deprecated tasks for plugins migration.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9597 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-01 09:02:34 +00:00
Toshi MARUYAMA
f4b9d2a7ee route: remove duplicate repository committers
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9596 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-01 05:08:07 +00:00
Toshi MARUYAMA
e1920cc9e4 recovery base.html.erb "call_hook :view_layouts_base_sidebar" changed in Rails3 r9528
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9595 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-01 03:58:53 +00:00
Jean-Philippe Lang
f10fed295a Fixed generated shebang in script/rails.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9594 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-30 18:52:19 +00:00
Toshi MARUYAMA
0fcc82482e Simplified Chinese translation updated (#10800)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9591 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-30 13:10:42 +00:00
Toshi MARUYAMA
ee4928d17c remove trailing white-spaces from lib/tasks/ciphering.rake
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9590 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-29 13:26:54 +00:00
Toshi MARUYAMA
8a67fe30af remove trailing white-spaces from lib/tasks/deprecated.rake
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9589 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-29 13:26:26 +00:00
Toshi MARUYAMA
db9a2c1c58 remove trailing white-spaces from lib/tasks/ci.rake
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9588 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-29 13:25:40 +00:00
Toshi MARUYAMA
767a057333 remove trailing white-spaces from lib/tasks/redmine.rake
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9587 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-29 13:25:07 +00:00
Toshi MARUYAMA
30ceec20a6 remove trailing white-spaces from lib/tasks/reminder.rake
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9586 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-29 13:24:34 +00:00
Toshi MARUYAMA
910cb8ff06 replace tabs to spaces at lib/tasks/migrate_from_mantis.rake
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9585 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-29 13:23:59 +00:00
Toshi MARUYAMA
6a1a4e006d remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9584 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-29 12:21:18 +00:00
Jean-Philippe Lang
d2378ea641 Don't send test email asynchronously.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9583 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-29 10:09:39 +00:00
Jean-Philippe Lang
8d17242b82 Fixed task redmine:email:test broken by r9080.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9582 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-29 10:04:25 +00:00
Jean-Philippe Lang
1e491c0bfd Makes migrate_from_mantis compatible with Rails3.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9581 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-29 09:49:02 +00:00
Jean-Philippe Lang
fb8ca0d2f8 Makes migrate_from_trac compatible with Rails3.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9580 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-29 09:19:08 +00:00
Jean-Philippe Lang
d8c70d7a11 Fixed openid redirect.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9579 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-29 08:48:50 +00:00
Jean-Philippe Lang
253b02bd22 Adds an id to the flash message divs (#9034).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9578 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-29 08:25:50 +00:00
Jean-Philippe Lang
99cfca6f83 Adds assertions for r9572.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9577 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-29 07:47:58 +00:00
Jean-Philippe Lang
6143d119fe Merged #merge! calls.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9576 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-29 07:42:48 +00:00
Jean-Philippe Lang
0162222bb2 Tests broken by r9573.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9575 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-29 07:34:57 +00:00
Toshi MARUYAMA
ab92280a7f view: labelled_remote_form_for: equals sign mandatory to print blocks and use :as
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9574 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-29 04:08:59 +00:00
Toshi MARUYAMA
c0891e8a78 helper: replace remote_form_for to form_for at labelled_remote_form_for
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9573 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-29 04:08:44 +00:00
Toshi MARUYAMA
f624d01fd8 view: labelled_form_for: equals sign mandatory to print blocks and use :as
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9572 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-29 02:47:36 +00:00
Toshi MARUYAMA
4b2fc90431 view: remote_form_for: equals sign mandatory to print blocks and replace to form_for and use :remote => true and :as
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9571 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-29 02:43:42 +00:00
Jean-Philippe Lang
49b28fca68 Clean up custom field format definition.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9570 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-28 16:19:32 +00:00
Jean-Philippe Lang
1e3e23d756 RecordNotFound exception still raised with Rails3.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9569 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-28 13:00:16 +00:00
Jean-Philippe Lang
68d5af3dd8 Set the default session store.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9568 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-28 12:26:24 +00:00
Jean-Philippe Lang
bceaf8be94 Let the secret token be set in configuration.yml.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9567 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-28 12:00:45 +00:00
Jean-Philippe Lang
52986e8cd1 Displays an explicit message when trying to start Redmine with an old session_store.rb.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9566 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-28 11:48:34 +00:00
Jean-Philippe Lang
10c0634413 Removed /vendor/plugins directory. Redmine plugins should be dropped in /plugins now.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9565 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-28 11:34:52 +00:00
Jean-Philippe Lang
e4a9ce6db0 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9564 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-28 11:20:13 +00:00
Jean-Philippe Lang
584fbc8f8b Fix no longer required with Rails 3.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9563 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-28 11:14:16 +00:00
Jean-Philippe Lang
5985713335 Restores plugin assets mirroring on startup, but it can now be disabled in configuration.yml.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9561 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-28 11:07:59 +00:00
Jean-Philippe Lang
68f8470d4a Makes image_tag pick the image from the current theme if it exists.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9560 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-28 09:47:09 +00:00
Jean-Philippe Lang
da43f785be Adds support for :plugin option to image_tag helper.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9559 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-28 09:18:12 +00:00
Jean-Philippe Lang
03335d014c Restores support for :plugin support to stylesheet_link_tag and javascript_include_tag helpers.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9558 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-28 09:10:46 +00:00
Jean-Philippe Lang
f12942ff40 Make sure that "today" does not change during tests.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9557 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-27 23:53:34 +00:00
Jean-Philippe Lang
c7d78ef094 Fixed gantt_test, Date.today and 0.day.from_now may not be the same depending on time and time zone.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9556 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-27 23:50:56 +00:00
Toshi MARUYAMA
5909b00a46 Gemfile: pin shoulda version
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9555 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-27 22:52:05 +00:00
Jean-Philippe Lang
ee0d4a12a3 Adds a message for when assertion fails.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9554 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-27 21:08:34 +00:00
Jean-Philippe Lang
705b6b16a5 Fixed that hr.yml and pt-BR.yml cannot be loaded with ruby-1.9.3-p194-i386-mingw32.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9553 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-27 21:07:57 +00:00
Jean-Philippe Lang
301e0386f5 Reverts r9547 that breaks 2 tests.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9552 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-27 17:04:37 +00:00
Jean-Philippe Lang
a97e2593af Added config/additional_environment.rb to svn:ignore (#10778).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9551 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-27 16:36:24 +00:00
Jean-Philippe Lang
f2ec23d80c set_table_name deprecated.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9550 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-27 16:31:51 +00:00
Jean-Philippe Lang
d940797aa7 set_table_name and set_locking_column are deprecated.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9549 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-27 16:28:35 +00:00
Toshi MARUYAMA
d2f779d6e8 remove trailing white-spaces from config/routes.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9548 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-27 16:17:31 +00:00
Toshi MARUYAMA
8047a8cd28 route: use constraints for repositories ":format => 'raw'" and :action
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9547 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-27 16:17:17 +00:00
Toshi MARUYAMA
dd23e07111 route: add constraints to repositories which are lost in Rails3 route
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9546 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-27 16:17:03 +00:00
Toshi MARUYAMA
d7e14cb7b7 Bulgarian translation (jstoolbar) updated by Ivan Cenov (#10785)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9543 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-27 11:44:38 +00:00
Toshi MARUYAMA
882d46661e Estonian translation updated by Heigo Toom (#10782)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9542 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-27 03:33:39 +00:00
Toshi MARUYAMA
6fcea5ef9d scm: git: fix test revision value of unit lib test
Hash value range is from 0 to 9 and a to f

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9541 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-27 01:33:04 +00:00
Toshi MARUYAMA
d19a7dee42 add fixtures to test/unit/lib/redmine/helpers/gantt_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9540 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-27 00:55:37 +00:00
Toshi MARUYAMA
6f8d7d6e76 remove Rails2 named_scope wrapper from config/initializers/10-patches.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9539 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-26 23:51:40 +00:00
Toshi MARUYAMA
bf4d779ea2 replace Rails2 "named_scope" to Rails3 "scope" at lib/plugins/acts_as_watchable/lib/acts_as_watchable.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9538 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-26 23:51:25 +00:00
Toshi MARUYAMA
d0d01d4e70 model: replace Rails2 "named_scope" to Rails3 "scope"
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9537 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-26 23:51:10 +00:00
Jean-Philippe Lang
71649ba2f1 Removed #utf8nize! that is no longer used with Rails 3.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9536 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-26 20:11:10 +00:00
Jean-Philippe Lang
79091382cc Removed tzinfo gem requirement.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9535 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-26 18:28:41 +00:00
Jean-Philippe Lang
cb16661d36 Removes the XML declaration that breaks the parser with JRuby.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9534 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-26 17:57:49 +00:00
Jean-Philippe Lang
8d73ddf73f Moved Rails plugins required by the core to lib/plugins.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9533 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-26 17:23:24 +00:00
Jean-Philippe Lang
26868d8b14 Port async delivery methods to Rails 3.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9532 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-26 16:55:53 +00:00
Jean-Philippe Lang
abdcd7d705 Removed Rails 2.3 patch for ruby1.9.3.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9531 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-26 16:31:50 +00:00
Jean-Philippe Lang
6d41de61a5 Do not sanitize escaped text in NullFormatter.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9530 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-25 19:49:26 +00:00
Jean-Philippe Lang
d15ab86459 Manually generates the javascript that prototype_helper fails to do with ruby1.9.2.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9529 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-25 18:17:00 +00:00
Jean-Philippe Lang
5e57a1a9d9 Merged rails-3.2 branch.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9528 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-25 17:17:49 +00:00
Toshi MARUYAMA
34e20c4373 Swedish translation updated by Nicklas Holm (#10750)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9523 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-24 09:44:56 +00:00
Toshi MARUYAMA
70d98acf9a Japanese translation updated by Go MAEDA (#10745)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9520 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-24 07:27:58 +00:00
Toshi MARUYAMA
215f4adcd7 Traditional Chinese translation updated by ChunChang Lo (#10733)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9509 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-23 08:33:33 +00:00
Jean-Philippe Lang
ccf37f59a9 Methods moved.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9473 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-22 12:47:50 +00:00
Jean-Philippe Lang
0fad78f53f Removed Query.generate_default! helper.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9472 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-22 12:46:43 +00:00
Jean-Philippe Lang
2e3bf71e9a Removed #generate_with_protected helper methods.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9471 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-22 12:45:13 +00:00
Jean-Philippe Lang
95f9246a46 Renamed object_daddy_helper and removed exemplars.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9470 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-22 11:58:05 +00:00
Jean-Philippe Lang
b960470d78 Removed object_daddy dependency.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9469 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-22 11:56:47 +00:00
Jean-Philippe Lang
4a3f038595 Use create!.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9468 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-22 08:42:32 +00:00
Jean-Philippe Lang
1c31e32df7 No need to save journal details.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9467 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-22 08:26:45 +00:00
Jean-Philippe Lang
4598c64ebd Additional tests for IssuesHelper#show_detail.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9466 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-22 08:24:39 +00:00
Jean-Philippe Lang
9305c84093 Reverted r9464 that broke a test. Project identifiers or ids can be used as parameters.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9465 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-22 07:19:45 +00:00
Toshi MARUYAMA
72ab3e22b1 Rails3: use Project.visible.find_by_identifier instead of .find for adding watchers dialog on new issue
On Rails 3.0.12, find_project method returns render_404

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9464 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-22 04:01:04 +00:00
Toshi MARUYAMA
e95ab31983 Rails3: helper: html_safe for watchers_checkboxes in WatchersHelper
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9463 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-22 02:57:39 +00:00
Toshi MARUYAMA
fcbeee78c1 Rails3: view: html_safe for principals_options_for_select in ApplicationHelper
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9462 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-21 01:44:38 +00:00
Jean-Philippe Lang
306af1d017 Updates for 1.4.1 release.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9459 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-20 09:59:51 +00:00
Jean-Philippe Lang
5a35c5b2e2 Fixed that date range fields don't get enabled when using the calendar popup (#8574).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9452 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-19 12:26:19 +00:00
Jean-Philippe Lang
b3bddcd31f Load Gemfile.local with absolute path.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9450 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-19 09:22:55 +00:00
Jean-Philippe Lang
b0f35a3cde Fixed that users with different case logins cannot update their accounts (#10711).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9449 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-19 08:42:07 +00:00
Jean-Philippe Lang
62eb536e32 Additional test for MailHandler.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9448 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-19 08:26:53 +00:00
Jean-Philippe Lang
67f90df175 Additional test for memberships API.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9447 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-19 08:18:27 +00:00
Jean-Philippe Lang
c88fbfbdad Additional tests for Principal scopes.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9446 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-19 08:01:28 +00:00
Jean-Philippe Lang
424a70978e Additional tests for the PDF export of an issue.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9445 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-19 07:58:02 +00:00
Jean-Philippe Lang
24e6dbc709 Updated ru and uk locales (#10664).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9444 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-19 07:25:32 +00:00
Jean-Philippe Lang
d856e62ccf Fixed that "Create and continue" buttons are broken by r9391 (#10675).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9442 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-19 07:17:48 +00:00
Jean-Philippe Lang
143c29d8e1 Additional test for TrackersController.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9441 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-18 19:49:10 +00:00
Jean-Philippe Lang
f79961f1c5 Additional tests for TimelogController.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9440 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-18 19:42:18 +00:00
Jean-Philippe Lang
327a74b406 Additional test for Tracker model.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9439 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-18 19:33:29 +00:00
Jean-Philippe Lang
864054c005 Additional test for MyController.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9438 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-18 19:30:08 +00:00
Jean-Philippe Lang
6f71a508eb Additional tests for CustomFieldsController.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9437 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-18 19:25:54 +00:00
Toshi MARUYAMA
7366fb23bb fix typo of German "text_account_destroy_confirmation" (#10693, #10664)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9433 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-18 13:15:56 +00:00
Jean-Philippe Lang
0a4a49992e Removed invalid css property.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9431 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-18 12:05:00 +00:00
Jean-Philippe Lang
2cc294aa27 Fixed that textile nested lists are not properly closed in output (#10642).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9430 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-18 12:00:54 +00:00
Toshi MARUYAMA
ee559c6820 German translation changed by Hannes Meier (#10693)
* mail_body_account_information_external
* label_overall_activity
* label_send_information

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9427 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-17 23:47:38 +00:00
Toshi MARUYAMA
2581d00c69 German translation for #10664 updated by Hannes Meier (#10693)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9426 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-17 23:47:06 +00:00
Toshi MARUYAMA
41b986db06 German translation for 1.4.0 updated by Hannes Meier (#10693)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9425 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-17 23:46:43 +00:00
Toshi MARUYAMA
b949d49ed3 Bulgarian translation updated by Ivan Cenov (#10671, #10664)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9424 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-16 08:05:18 +00:00
Jean-Philippe Lang
f529cdddb3 Cleanup in rake scripts.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9423 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-15 15:57:35 +00:00
Jean-Philippe Lang
147f717c86 Adds a rake task to remove expired tokens: redmine:tokens:prune.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9422 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-15 15:56:58 +00:00
Jean-Philippe Lang
0cb633c688 Adds new strings to locales.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9421 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-15 15:47:25 +00:00
Jean-Philippe Lang
c7149f4184 Fixed that Token.destroy_expired destroys API tokens.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9420 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-15 15:44:51 +00:00
Jean-Philippe Lang
24c361eb0a Fixed that rss key is generated twice when user is not reloaded (#10668).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9419 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-15 15:34:14 +00:00
Jean-Philippe Lang
9817e1d744 Additional test for Watcher.prune.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9418 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-15 15:13:28 +00:00
Jean-Philippe Lang
28f0c4f131 Adds the ability for users to delete their own account (#10664). Can be disabled in application settings.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9417 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-15 14:31:54 +00:00
Jean-Philippe Lang
638583012a French local update.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9412 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-14 08:07:56 +00:00
Jean-Philippe Lang
55ea557fe8 Note about the mysql2 adapter in database.yml.example.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9409 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-14 06:51:16 +00:00
Jean-Philippe Lang
552ed9693e Updated trunk CHANGELOG.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9406 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-14 06:31:33 +00:00
Jean-Philippe Lang
231282ddcb Fixed MissingFeatureException: let user choose to copy attachments or not when bulk copying issues.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9405 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-14 06:21:03 +00:00
Jean-Philippe Lang
09375960d6 When copying issues, let the status be changed to default or left unchanged.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9404 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-14 05:45:16 +00:00
Jean-Philippe Lang
354e09811b Removed deprecated accept_key_auth methods.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9392 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-13 19:40:18 +00:00
Jean-Philippe Lang
43c677b489 Disable submit buttons when submitting a form (#6555).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9391 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-13 17:01:46 +00:00
Jean-Philippe Lang
4edc30d157 Ignore emails with Auto-Submitted: auto-replied header (#10607).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9390 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-13 16:55:04 +00:00
Etienne Massip
dd8d8e0560 Updated CodeRay to 1.0.6.
Fixed multiline comments highlighting issue in file view (#7495).

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9389 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-12 17:54:55 +00:00
Jean-Philippe Lang
de0689d4f4 Makes time syntax case insensitive (#10635).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9387 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-11 17:37:13 +00:00
Jean-Philippe Lang
1511b1435a Additional assertions on creation of relations.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9385 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-11 17:27:11 +00:00
Jean-Philippe Lang
12b71ebc8e Strip issue id when adding a relation.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9384 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-11 17:25:05 +00:00
Jean-Philippe Lang
04e7b18869 Fixed that export links include page parameter.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9382 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-11 17:02:21 +00:00
Jean-Philippe Lang
d88ffd11e2 CSV export breaks custom columns (#10168).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9381 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-09 21:32:54 +00:00
Jean-Philippe Lang
e4ba838c6b Fixed that rake redmine:send_reminders fails if an issue is assigned to a group (#10555).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9380 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-09 20:23:36 +00:00
Jean-Philippe Lang
269e9057dd Fixed that "Default administrator account changed" is always true (#10622).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9379 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-09 15:53:48 +00:00
Jean-Philippe Lang
ea307619be Fixed that improper statuses are proposed when changing status before tracker on the issue form (#10619).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9378 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-09 09:39:27 +00:00
Jean-Philippe Lang
6d62ab64e6 Upgrade required pg gem (#6941).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9374 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-08 21:10:02 +00:00
Jean-Philippe Lang
78dd564a82 Disable IE 8 compatibility mode (#10128).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9372 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-08 20:13:38 +00:00
Jean-Philippe Lang
d2cb9d5289 Adds missing route to project search.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9371 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-08 20:06:53 +00:00
Jean-Philippe Lang
d427d8e567 Reverted r9368.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9370 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-08 19:29:26 +00:00
Jean-Philippe Lang
e436285b6f Slight changes to the plain text issue notification.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9369 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-08 19:25:26 +00:00
Jean-Philippe Lang
1334cbf78c Adds double quotes around issue change details in plain text notifications (#10603).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9368 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-08 17:30:08 +00:00
Jean-Philippe Lang
fde9c7315a Fixed: reminder mails are not sent when delivery_method is :async_smtp (#5058).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9367 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-06 18:57:05 +00:00
Jean-Philippe Lang
cfb06a2607 Additional test for gzipped wiki history.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9366 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-06 17:53:25 +00:00
Jean-Philippe Lang
5e4bb16a7f Additional tests for WatchersController.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9365 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-06 16:55:53 +00:00
Jean-Philippe Lang
2e240103f3 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9364 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-06 16:53:12 +00:00
Jean-Philippe Lang
18270ee587 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9363 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-06 16:51:10 +00:00
Jean-Philippe Lang
eabbab6e2b Adds assertions on the content of a versioned wiki page export (#6941).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9362 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-06 15:31:06 +00:00
Jean-Philippe Lang
d25defe276 Adds assertions on the content of a wiki page export (#6941).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9361 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-06 14:09:15 +00:00
Jean-Philippe Lang
ab28a55b4e Fixed test_show_with_permission_should_display_the_new_message_form broken by r9351.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9359 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-06 13:51:16 +00:00
Jean-Philippe Lang
dd1163b58a Makes the mail handler ignore out-of-office emails (#10607).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9358 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-06 13:24:30 +00:00
Toshi MARUYAMA
051794dffc remove 1.3-stable merged issues from CHANGELOG 1.4.0 list
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9355 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-06 12:57:39 +00:00
Jean-Philippe Lang
54bb145c76 Removed permissions logic from view.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9351 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-06 12:21:45 +00:00
Jean-Philippe Lang
a7bacf70fb Fixed: Unable to change locked, sticky flags and board when editing a message (#10564).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9350 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-06 12:20:47 +00:00
Jean-Philippe Lang
07d20cc5f7 Let non required list/user/version custom fields to be set to blank when bulk editing (#10605).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9349 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-06 11:56:30 +00:00
Jean-Philippe Lang
dee17f4677 Adds a note about Gemfile.local in the INSTALL doc.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9347 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-06 11:16:58 +00:00
Jean-Philippe Lang
2658730302 Load Gemfile.local if present.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9346 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-06 11:12:50 +00:00
Toshi MARUYAMA
e06b60d1b9 Simplified Chinese translation updated by fangzheng (#10611)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9343 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-06 10:41:16 +00:00
Jean-Philippe Lang
7d458e0b27 Do not install rmagick gem with jruby.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9341 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-06 10:26:55 +00:00
Jean-Philippe Lang
725ff27c37 Typo in database rake task.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9339 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-06 10:24:36 +00:00
Jean-Philippe Lang
6a9e16deda Set version to 1.4.0.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9336 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-06 09:40:38 +00:00
Jean-Philippe Lang
7993f2f329 Adds a quick and dirty task for creating databases on the CI server.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9335 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-06 09:36:07 +00:00
Jean-Philippe Lang
b4975862d6 Uploading of attachments which filename contains non-ASCII chars fails with Ruby 1.9 on issue update (#10575).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9334 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-06 09:31:29 +00:00
Jean-Philippe Lang
331cf23345 Do not display the magnifier for added files in email notifications (#4774).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9333 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-06 09:20:40 +00:00
Jean-Philippe Lang
f05f84a2ea Moved the magnifier just after the filename.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9332 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-06 08:49:04 +00:00
Jean-Philippe Lang
dd5b091321 Aligns the magnifier in issue history details.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9331 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-06 08:48:04 +00:00
Jean-Philippe Lang
bac7dff5bb Force encoding of custom field possible values (#10593).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9330 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-06 07:39:50 +00:00
Jean-Philippe Lang
f1cae4f7af WikiContent::Version#text may return ascii-8bit encoded string (#10590).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9329 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-06 07:21:51 +00:00
Toshi MARUYAMA
e964135b62 delete :only_path option from link_to options at application_helper link_to_attachment (#10602)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9328 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-06 06:07:13 +00:00
Toshi MARUYAMA
8828c0f13e fix attachment link has get parameter :class (#10602)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9327 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-06 05:45:04 +00:00
Toshi MARUYAMA
f277f127c6 add a view link to note attachment file (#4774)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9326 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-06 05:44:48 +00:00
Toshi MARUYAMA
b88586b56d code layout cleanup app/helpers/issues_helper.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9325 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-06 05:44:30 +00:00
Toshi MARUYAMA
c1dd88b015 replace tabs to spaces at app/views/attachments/_links.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9324 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-06 05:44:14 +00:00
Etienne Massip
d36d64f664 Fixed Internal Error in watchers XHR search (#10600).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9323 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-05 18:10:54 +00:00
Toshi MARUYAMA
ddce7ef142 code layout clean up app/views/repositories/show.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9321 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-04 10:43:29 +00:00
Toshi MARUYAMA
9aefe8b1e9 fix html tag at app/views/repositories/show.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9320 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-04 10:43:15 +00:00
Toshi MARUYAMA
72590ea997 code layout clean up app/views/repositories/show.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9319 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-04 10:19:55 +00:00
Toshi MARUYAMA
a5b480c62e replace tabs to spaces at app/views/repositories/show.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9318 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-04 10:19:41 +00:00
Toshi MARUYAMA
b96710fb57 fix source indents of lib/diff.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9317 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-03 15:20:39 +00:00
Toshi MARUYAMA
f0f7158d87 fix typo "RedMine" at app/models/wiki_content.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9316 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-03 14:04:38 +00:00
Toshi MARUYAMA
bc2a22e17f Dutch translation updated (#10591)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9315 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-03 12:29:34 +00:00
Toshi MARUYAMA
186f9400d0 fix Dutch "label_file_added" translation (#10591)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9313 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-03 11:53:21 +00:00
Toshi MARUYAMA
1a87912b06 pdf: fix tcpdf automatic line break bug (#10554)
Contributed by Jun NAITOH.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9312 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-03 11:22:21 +00:00
Toshi MARUYAMA
29782860b7 scm: mercurial: git: save parents in creating changesets (#10470)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9311 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-03 08:05:30 +00:00
Toshi MARUYAMA
cd250714e5 Japanese translation updated by Go MAEDA (#10587)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9310 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-02 23:18:33 +00:00
Toshi MARUYAMA
4df99674ff Bulgarian translation updated by Ivan Cenov (#10586)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9309 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-02 23:18:11 +00:00
Toshi MARUYAMA
f93261a7ea German translation updated by Hannes Meier (#10585)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9308 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-02 16:05:27 +00:00
Toshi MARUYAMA
aaa8232a27 generate i18n "label_search_for_watchers" key (#5159)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9307 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-02 14:33:31 +00:00
Toshi MARUYAMA
c11dc925de Japanese translation updated by Go MAEDA (#10584)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9306 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-02 14:33:15 +00:00
Toshi MARUYAMA
f800d2185e remove trailing white-spaces from vendor/plugins/acts_as_searchable/lib/acts_as_searchable.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9305 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-02 13:50:12 +00:00
Toshi MARUYAMA
90bd015467 remove trailing white-spaces from vendor/plugins/acts_as_event/lib/acts_as_event.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9304 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-02 13:49:57 +00:00
Toshi MARUYAMA
dd5c702e11 remove trailing white-spaces from vendor/plugins/acts_as_customizable/lib/acts_as_customizable.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9303 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-02 13:49:43 +00:00
Toshi MARUYAMA
f9d123c08f remove trailing white-spaces from vendor/plugins/acts_as_attachable/lib/acts_as_attachable.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9302 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-02 13:49:28 +00:00
Toshi MARUYAMA
0e7a2dd688 remove trailing white-spaces from vendor/plugins/acts_as_activity_provider/lib/acts_as_activity_provider.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9301 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-02 13:49:13 +00:00
Toshi MARUYAMA
b054ccf9c7 fix lib/generators/redmine_plugin/USAGE
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9300 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-02 10:20:22 +00:00
Toshi MARUYAMA
f0936aaf18 scm: fix revisions page "OK" button always returns 404 error (#10567)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9299 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-02 05:09:36 +00:00
Toshi MARUYAMA
3db1fa6b83 remove Rails 2.1 lang/en.yml from lib/generators/redmine_plugin
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9298 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-01 13:57:56 +00:00
Toshi MARUYAMA
3b6be9ca4e remove trailing white-spaces from lib/generators/redmine_plugin_model/redmine_plugin_model_generator.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9297 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-01 12:42:09 +00:00
Toshi MARUYAMA
fc71741101 remove trailing white-spaces from lib/generators/redmine_plugin_controller/redmine_plugin_controller_generator.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9296 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-01 12:41:55 +00:00
Toshi MARUYAMA
3847223841 remove trailing white-spaces from extra/sample_plugin/init.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9295 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-01 12:41:40 +00:00
Toshi MARUYAMA
db110ba35e remove trailing white-spaces from extra/sample_plugin/app/models/meeting.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9294 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-01 12:41:25 +00:00
Toshi MARUYAMA
a81927361e remove trailing white-spaces from extra/sample_plugin/app/controllers/example_controller.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9293 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-01 12:41:10 +00:00
Toshi MARUYAMA
be04f1dd62 remove trailing white-spaces from extra/mail_handler/rdm-mailhandler.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9292 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-01 12:19:25 +00:00
Toshi MARUYAMA
0098c7b128 fix source indents of app/views/repositories/revisions.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9291 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-30 01:48:59 +00:00
Toshi MARUYAMA
f36eb54141 scm: git: use Changeset#create and Changeset#create_change as same with Subversion and Mercurial
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9290 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-29 22:41:20 +00:00
Toshi MARUYAMA
cdb7ea8b91 scm: git: add test of from_path at unit model test_fetch_changesets_from_scratch
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9289 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-29 21:37:10 +00:00
Toshi MARUYAMA
b2a2cb68dd scm: mercurial: transaction for each imported revisions (#10470)
Subversion transaction switched at r2563.
Subversion and Mercurial have a sequential revision number.
So, Mercurial can use the same logic with Subversion.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9288 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-29 16:50:10 +00:00
Toshi MARUYAMA
76435033e7 scm: git: add the comment of the reason to scan database in fetching every time (#10470)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9287 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-29 10:05:13 +00:00
Toshi MARUYAMA
27dca22c91 scm: git: fix typo in fetching revisions comment.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9286 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-29 02:42:20 +00:00
Toshi MARUYAMA
d2c80656f1 scm: git: fix test revision value of unit app test
Hash range is from 0 to 9 and a to f

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9285 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-28 17:18:33 +00:00
Toshi MARUYAMA
5232d379f9 scm: git: fix model source indents (#10470)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9284 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-28 17:18:19 +00:00
Toshi MARUYAMA
9b333e1c87 scm: git: process new git revisions all at once rather than per branch (#10470)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9283 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-28 17:18:04 +00:00
Toshi MARUYAMA
3e11f9abfe scm: git: use stdin instead of command line in "git log" (#10470)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9282 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-28 15:40:37 +00:00
Toshi MARUYAMA
fbe959b2a8 scm: git: rename "scm_cmd" to "git_cmd" and not use variable argument (#10470)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9281 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-28 11:21:26 +00:00
Toshi MARUYAMA
2145b650a6 Ruby1.9: scm: use :set_encoding instead of "RUBY_VERSION < '1.9'" for IO.popen (#10470)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9280 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-28 10:54:38 +00:00
Toshi MARUYAMA
5f37d0d1c8 replace tabs to spaces and fix indents at app/views/issues/new.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9279 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-28 03:34:39 +00:00
Toshi MARUYAMA
5c9dd16295 reposman: allow underscores in project identifiers (#1363)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9277 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-27 14:01:23 +00:00
Jean-Philippe Lang
274566f13b Failing test with 1.8.7 and jruby (#10538).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9270 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-25 20:21:04 +00:00
Jean-Philippe Lang
706f8b1691 Override watcher_user_ids= to make ids uniq (#10538).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9269 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-25 19:52:24 +00:00
Jean-Philippe Lang
6115a079ec Remove duplicate watchers (#10538).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9268 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-25 19:35:32 +00:00
Jean-Philippe Lang
1294f72175 Fixed that issues can be moved to projects with issue tracking disabled (#10467).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9267 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-25 19:32:05 +00:00
Jean-Philippe Lang
5663ca89fa Fixes error message for LDAP filter (#1060).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9258 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-24 14:07:42 +00:00
Jean-Philippe Lang
ee8002b0c9 Adds the repository identifier in the activity and search results (#779).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9257 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-24 13:51:28 +00:00
Jean-Philippe Lang
f071b39d26 Makes Redmine.pm work with multiple repositories per project (#779).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9256 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-24 13:21:43 +00:00
Jean-Philippe Lang
bb36fa5d12 Adds the repository identifier to Changeset#text_tag (#779).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9255 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-24 13:03:36 +00:00
Jean-Philippe Lang
fae5250e52 Ability to add non-member watchers on issue creation (#5159).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9254 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-24 12:57:28 +00:00
Toshi MARUYAMA
e2bb8721d9 Replace tables that were using the 'width' attribute with inline styles (should be replaced with an ID/class).
Contributed by Andrew Smith.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9253 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-24 00:03:05 +00:00
Toshi MARUYAMA
103cd46f78 Remove some inline styling and some depreciated table cell attributes and replace them with proper class names.
Contributed by Andrew Smith.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9252 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-24 00:02:49 +00:00
Toshi MARUYAMA
8bc638f404 Fix missing cells at app/views/issues/show.html.erb
Contributed by Andrew Smith.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9251 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-24 00:02:35 +00:00
Toshi MARUYAMA
27c390bb62 Fix duplicated 'back_url' IDs
Various hidden input fields are used to hold a URL to send the user back
to the correct page after submitting a form, however, they all use the
same ID which isn't allowed in HTML. Passing in 'id' as nil stops the
'hidden_field_tag' from adding an ID attribute to the tag.

Contributed by Andrew Smith.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9250 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-24 00:02:20 +00:00
Toshi MARUYAMA
c8af69342b Dutch "field_login" translation changed by Siebe Joris Jochems (#10513)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9249 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-22 22:33:40 +00:00
Toshi MARUYAMA
aeef75d49d Dutch "field_password_confirmation" translation changed by Siebe Joris Jochems (#10513)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9248 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-22 04:09:58 +00:00
Toshi MARUYAMA
13b13089ea replace GMail configuration guide url
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9247 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-20 22:37:30 +00:00
Toshi MARUYAMA
e55c8f6b67 pdf: enhanced issues list (#10464)
* Automatic calculation of the size of table columns depending on their content
* Output table header on each page

Contributed by Yuri Makarov.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9246 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-20 07:09:15 +00:00
Toshi MARUYAMA
b17b673039 remove trailing white-spaces from lib/redmine/export/pdf.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9245 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-19 23:22:04 +00:00
Jean-Philippe Lang
fec3e6c84b Fixed: ruby 1.9.3 Time Zone setting Internal error (#10442).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9244 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-17 12:49:47 +00:00
Jean-Philippe Lang
7c5635f6c6 Typo (#1913).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9243 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-17 12:19:01 +00:00
Jean-Philippe Lang
77314ebe8f Fixed test names (#1913).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9242 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-17 12:18:23 +00:00
Jean-Philippe Lang
fdeb398c5e LDAP: adds the ability to bind with user's account (#1913).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9241 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-17 12:09:59 +00:00
Toshi MARUYAMA
ef77825f10 replace hard-coded non ASCII literal to UTF-8 hexadecimal at test/unit/mail_handler_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9240 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-14 01:16:52 +00:00
Toshi MARUYAMA
224331dacb replace hard-coded non ASCII literal to UTF-8 hexadecimal at test/unit/wiki_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9239 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-14 01:16:05 +00:00
Toshi MARUYAMA
ae5edac243 remove hard-coded non ASCII literal from unit git lib test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9238 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-14 01:15:41 +00:00
Jean-Philippe Lang
95b10f3bd3 Don't use #delete on String in Mailer.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9237 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-12 18:34:12 +00:00
Toshi MARUYAMA
dd1b2876b1 add missing fixtures to unit wiki_content_test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9236 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-12 12:07:52 +00:00
Jean-Philippe Lang
60e6a623bd Adds an icon to the "Test" link.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9235 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-11 12:15:56 +00:00
Jean-Philippe Lang
a8e392c0e5 Fixed that LDAP error is not displayed when testing connection.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9234 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-11 12:01:41 +00:00
Jean-Philippe Lang
71e636ff71 Resourcified auth_sources.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9233 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-11 11:53:28 +00:00
Jean-Philippe Lang
bd47af098f Merged LdapAuthSourceController into AuthSourceController.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9232 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-11 11:43:27 +00:00
Jean-Philippe Lang
81185a8d93 Additional tests for UsersController.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9231 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-11 10:25:44 +00:00
Jean-Philippe Lang
16fbb3664c Updates for 1.3.2 release.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9228 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-11 08:20:41 +00:00
Toshi MARUYAMA
30829e73ac set svn:eol-style native app/controllers/*.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9227 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-11 07:17:44 +00:00
Toshi MARUYAMA
592fd5dcf8 set svn:eol-style native app/views/users/*.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9226 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-11 07:15:03 +00:00
Toshi MARUYAMA
6cb1eace43 set svn:eol-style native app/views/timelog/bulk_edit.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9225 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-11 07:13:06 +00:00
Toshi MARUYAMA
27f14b86ce set svn:eol-style native app/views/projects/_members_box.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9224 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-11 07:08:22 +00:00
Toshi MARUYAMA
78731c2577 set svn:eol-style native app/views/issues/_action_menu.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9223 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-11 07:06:15 +00:00
Toshi MARUYAMA
3aa894392e set svn:eol-style native app/views/context_menus/time_entries.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9222 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-11 06:48:48 +00:00
Toshi MARUYAMA
0dd11fc6a6 set svn:eol-style native app/views/auth_sources/_form.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9221 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-11 06:44:14 +00:00
Toshi MARUYAMA
d26300bd45 set svn:eol-style native test/unit/*.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9220 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-11 06:26:44 +00:00
Toshi MARUYAMA
2f04b443c0 set svn:eol-style native test/functional/*.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9219 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-11 06:24:03 +00:00
Toshi MARUYAMA
dec1447816 set svn:eol-style native test/integration/api_test/*.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9218 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-11 06:20:22 +00:00
Toshi MARUYAMA
fd2af060a9 remove trailing white-spaces from lib/generators/redmine_plugin/redmine_plugin_generator.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9217 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-11 06:09:48 +00:00
Toshi MARUYAMA
ea2e5d959f set svn:eol-style native lib/generators/redmine_plugin/templates/en_rails_i18n.yml
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9216 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-11 06:02:04 +00:00
Toshi MARUYAMA
7d60e70709 set svn:eol-style native doc/README_FOR_APP
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9215 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-11 05:54:04 +00:00
Toshi MARUYAMA
fe6d37812d set svn:eol-style native lib/redmine/core_ext/date/calculations.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9214 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-11 04:55:57 +00:00
Toshi MARUYAMA
d131cf88c1 set svn:eol-style native lib/redmine/core_ext/date.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9213 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-11 04:54:16 +00:00
Toshi MARUYAMA
0773d24a87 set svn:eol-style native test/integration/layout_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9212 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-11 04:06:36 +00:00
Toshi MARUYAMA
41875368cd set svn:eol-style native app/helpers/*.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9211 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-11 04:00:19 +00:00
Toshi MARUYAMA
d34396fd08 set svn:eol-style native test/unit/lib/redmine_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9210 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-11 03:55:27 +00:00
Toshi MARUYAMA
358ee48112 set svn:eol-style native test/unit/helpers/*.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9209 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-11 03:51:59 +00:00
Toshi MARUYAMA
9c77a39a00 set svn:executable '*' script/process/inspector
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9208 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-11 03:43:06 +00:00
Toshi MARUYAMA
73c8ea65dc unset svn:eol-style native script/process/inspector
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9207 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-11 03:41:47 +00:00
Toshi MARUYAMA
c86c07e22f unset svn property "executable" script/process/reaper
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9206 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-11 03:40:51 +00:00
Toshi MARUYAMA
d9c9814d31 set svn:executable '*' script/performance/request
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9205 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-11 03:36:36 +00:00
Toshi MARUYAMA
8268e5b704 unset svn:eol-style native script/performance/request
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9204 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-11 03:35:23 +00:00
Toshi MARUYAMA
d0d1754a5d set svn:executable '*' script/dbconsole
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9203 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-11 03:32:20 +00:00
Toshi MARUYAMA
bd31e2ee26 unset svn:eol-style native script/dbconsole
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9202 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-11 03:29:51 +00:00
Toshi MARUYAMA
517139dade set svn:eol-style native config/additional_environment.rb.example
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9201 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-11 03:24:54 +00:00
Toshi MARUYAMA
a999bd4074 set svn:eol-style native test/unit/lib/redmine/helpers/gantt_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9200 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-11 01:14:00 +00:00
Toshi MARUYAMA
7558f82407 set svn:eol-style native test/unit/lib/redmine/notifiable_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9199 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-11 01:11:38 +00:00
Toshi MARUYAMA
af2c20273d set svn:eol-style native test/unit/lib/redmine/codeset_util_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9198 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-11 01:05:23 +00:00
Toshi MARUYAMA
de263d460d set svn:eol-style native test/unit/lib/redmine/menu_manager_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9197 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-11 01:00:33 +00:00
Toshi MARUYAMA
1e1ccfab3f set svn:eol-style native test/unit/lib/redmine/menu_manager/*.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9196 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-11 00:58:22 +00:00
Toshi MARUYAMA
a825d0fd35 set svn:eol-style native public/javascripts/repository_navigation.js
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9195 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-11 00:54:00 +00:00
Toshi MARUYAMA
f4ea7827d2 set svn:eol-style native test/fixtures/mail_handler/*.eml
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9194 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-11 00:50:38 +00:00
Toshi MARUYAMA
a65f1e09e4 set svn:eol-style native test/fixtures/mail_handler/ticket_with_long_subject.eml
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9193 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-11 00:47:35 +00:00
Toshi MARUYAMA
0be826d93a set svn:eol-style native test/fixtures/mail_handler/ticket_with_invalid_attributes.eml
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9192 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-11 00:43:12 +00:00
Toshi MARUYAMA
4b2aff84d5 set svn:eol-style native test/fixtures/mail_handler/ticket_with_attachment.eml
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9191 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-11 00:42:17 +00:00
Toshi MARUYAMA
40cb7435a0 set svn:eol-style native test/fixtures/mail_handler/ticket_reply.eml
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9190 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-11 00:41:28 +00:00
Toshi MARUYAMA
e691fd682d set svn:eol-style native test/fixtures/mail_handler/ticket_on_given_project.eml
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9189 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-11 00:38:18 +00:00
Toshi MARUYAMA
ad90ffd9b3 set svn:eol-style native test/fixtures/mail_handler/ticket_by_unknown_user.eml
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9188 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-11 00:35:49 +00:00
Toshi MARUYAMA
8a4fb95d8e set svn:eol-style native test/fixtures/mail_handler/ticket_by_empty_user.eml
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9187 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-11 00:34:53 +00:00
Toshi MARUYAMA
1c09aa9901 set svn:eol-style native test/fixtures/mail_handler/issue_update_with_quoted_reply_above.eml
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9186 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-11 00:33:16 +00:00
Toshi MARUYAMA
99b7cc7b16 set svn:eol-style native test/fixtures/mail_handler/issue_update_with_multiple_quoted_reply_above.eml
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9185 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-11 00:31:12 +00:00
Toshi MARUYAMA
018a6a92a1 set svn:eol-style native test/fixtures/mail_handler/ticket_with_localized_attributes.eml
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9184 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-11 00:27:21 +00:00
Toshi MARUYAMA
b68a7cdf20 set svn:eol-style native test/unit/lib/redmine/export/pdf_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9183 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-10 21:23:51 +00:00
Toshi MARUYAMA
a220bd7429 set svn:eol-style native test/unit/initializers/patches_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9182 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-10 21:19:39 +00:00
Toshi MARUYAMA
c3afc8d3a6 set svn:eol-style native test/object_daddy_helpers.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9181 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-10 21:14:57 +00:00
Toshi MARUYAMA
0b9826b995 set svn:eol-style native test/unit/lib/redmine/scm/adapters/*.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9180 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-10 21:11:43 +00:00
Toshi MARUYAMA
e065f9a35a set svn:eol-style native lib/redmine/*.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9179 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-10 21:08:56 +00:00
Toshi MARUYAMA
abea976214 set svn:eol-style native lib/redmine/scm/base.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9178 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-10 21:05:41 +00:00
Jean-Philippe Lang
a74e86ddce Additional tests for IssuesController.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9177 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-10 18:37:51 +00:00
Jean-Philippe Lang
dbda62849d Removed dead code.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9176 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-10 18:20:07 +00:00
Etienne Massip
8612fa2fc1 Fixed Gantt months/weeks/days headers display with Ruby 1.9.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9175 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-10 15:10:32 +00:00
Jean-Philippe Lang
934dd07fa7 Adds a test for #9076.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9174 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-10 13:57:31 +00:00
Jean-Philippe Lang
33cb9c87a9 More functional tests for NewsController.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9173 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-10 13:47:28 +00:00
Jean-Philippe Lang
125f5e1710 Use #find_project_by_project_id from super-class.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9172 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-10 13:44:52 +00:00
Etienne Massip
aebaaad85a Variable declaration cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9171 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-10 13:44:04 +00:00
Jean-Philippe Lang
25620a7429 More function tests for AdminController.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9170 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-10 13:41:56 +00:00
Etienne Massip
24bd39d8ed Moved head refs to node titles.
Refs shoud not be displayed in the graph because they'll be necessarily truncated.


git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9169 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-10 13:41:09 +00:00
Jean-Philippe Lang
2de9e782ad More function tests for MessagesController.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9168 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-10 13:21:34 +00:00
Toshi MARUYAMA
d849d06b56 set svn:eol-style native lib/tasks/*.rake
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9167 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-10 00:22:07 +00:00
Toshi MARUYAMA
e7dd193a76 set svn:eol-style native lib/tasks/ci.rake
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9166 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-09 11:46:04 +00:00
Toshi MARUYAMA
cfdef5e11a Simplified Chinese "over_x_years" translation changed by fangzheng (#10410)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9165 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-09 11:40:07 +00:00
Toshi MARUYAMA
099759eda1 set svn:eol-style native app/views/repositories/_revision_graph.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9164 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-09 09:48:05 +00:00
Toshi MARUYAMA
839ac5105c set svn:eol-style native public/javascripts/revision_graph.js
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9163 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-09 09:46:16 +00:00
Toshi MARUYAMA
17fabcad8e set svn:eol-style native public/stylesheets/*.css
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9162 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-09 08:49:56 +00:00
Toshi MARUYAMA
2e6ccfa95c set svn:eol-style native public/javascripts/jstoolbar/lang/*.js
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9161 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-09 08:40:27 +00:00
Jean-Philippe Lang
036b81abfd Use #find_project_by_project_id from super-class.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9160 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-07 20:03:05 +00:00
Jean-Philippe Lang
67e8d1113e Adds a test for when query is not found.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9159 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-07 20:00:38 +00:00
Toshi MARUYAMA
0cbbb9fda8 remove trailing white-space from app/models/repository/git.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9145 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-07 07:56:30 +00:00
Toshi MARUYAMA
999a4ba30d scm: git: performance improvements in fetching revisions (#8857, #9472)
Parse a revision for a given branch,
just if we haven't parsed it for any branches before.
Moved the db check to for existing revisions into a grouped search.
Search for many revisions at once: this reduces db load.
Revisions are grouped into sets of 100.
This is to improve memory consumption.
There will be just one query instead of each 100.
The above two methods significantly increase parsing speed.
Test case was a git repo with 6000+ commits on a master branch,
and several other branches originating for master.
Speed improved from 1.4h to 18min.

Contributed by Gergely Fábián.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9144 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-07 07:56:15 +00:00
Toshi MARUYAMA
bcba955456 scm: git: reduce saving heads times in fetching revisions (#8857, #9472)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9143 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-07 05:57:59 +00:00
Toshi MARUYAMA
f0987e4b8f scm: git: backout r8839 (#8857)
call "git log" only once instead of per branch in fetching revisions.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9142 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-07 05:57:44 +00:00
Toshi MARUYAMA
374c2aa705 scm: git: backout r8840 (#8857, #9472)
reduce saving heads times in fetching revisions.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9141 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-07 05:57:29 +00:00
Jean-Philippe Lang
2bcf9f2871 Prevent mass-assignment when adding/updating a forum (#10390).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9140 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-06 21:36:28 +00:00
Jean-Philippe Lang
87356648f6 Set user_id as a protected attribute (#10390).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9139 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-06 20:57:33 +00:00
Jean-Philippe Lang
efddab48be Prevent mass-assignment when adding/updating a wiki (#10390).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9138 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-06 20:34:38 +00:00
Jean-Philippe Lang
fef2e4b672 Prevent mass-assignment when adding/updating a version (#10390).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9137 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-06 20:31:45 +00:00
Jean-Philippe Lang
1ec2d98c14 Prevent mass-assignment when adding/updating a time entry (#10390).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9136 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-06 20:23:00 +00:00
Jean-Philippe Lang
0ee1de5686 Use safe_attributes= just like in #create.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9135 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-06 19:52:10 +00:00
Jean-Philippe Lang
d0356fe935 Prevent mass-assignment when adding/updating a news (#10390).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9134 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-06 19:50:10 +00:00
Jean-Philippe Lang
286bda14f1 Prevent mass-assignment when adding/updating a forum message (#10390).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9133 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-06 19:46:59 +00:00
Jean-Philippe Lang
2c6ad7525a Prevent mass-assignment when adding a project member (#10390).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9132 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-06 19:39:37 +00:00
Jean-Philippe Lang
460239d1f9 Prevent mass-assignment when adding/updating an issue category (#10390).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9131 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-06 18:59:32 +00:00
Jean-Philippe Lang
809d35d34b Prevent mass-assignment when adding/updating a document (#10390).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9130 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-06 18:54:41 +00:00
Jean-Philippe Lang
bdf6e90f05 Prevent mass-assignment when adding a news comment (#10390).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9129 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-06 18:48:47 +00:00
Jean-Philippe Lang
6aad82e524 Fixed that the proposed users list may be empty when adding a project member (#10374).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9128 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-06 18:37:30 +00:00
Toshi MARUYAMA
b7555bd1ff Bulgarian translation updated by Ivan Cenov (#10376)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9126 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-06 03:25:14 +00:00
Jean-Philippe Lang
89dc7bb60b Sort values for assertion.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9124 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-05 19:54:03 +00:00
Jean-Philippe Lang
d906ff8d7b Italian translation (#10258).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9122 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-05 17:13:37 +00:00
Jean-Philippe Lang
aa9238912b Changed assertions to make them work with Rails2/3 ruby1.8/1.9 different behaviours.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9108 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-05 11:03:26 +00:00
Jean-Philippe Lang
97ca65d1b2 Changed assertions to make them work with Rails2/3 ruby1.8/1.9 different behaviours.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9107 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-05 10:55:19 +00:00
Jean-Philippe Lang
d4372ab747 Array#to_s behaviour changed in ruby 1.9.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9106 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-05 10:49:05 +00:00
Jean-Philippe Lang
9bb056e54d Array#to_s behaviour changed in ruby 1.9.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9105 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-05 10:47:04 +00:00
Toshi MARUYAMA
d8b0981330 Traditional Chinese translation updated by ChunChang Lo (#10366)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9104 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-05 04:15:36 +00:00
Toshi MARUYAMA
2f1d6cd94d remove trailing white-spaces from public/javascripts/select_list_move.js
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9103 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-05 04:15:15 +00:00
Toshi MARUYAMA
1214365611 replace tabs to spaces at public/javascripts/select_list_move.js
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9102 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-05 04:14:51 +00:00
Toshi MARUYAMA
12ad36f474 set svn:eol-style native public/javascripts/calendar/lang/*.js
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9101 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-05 04:12:04 +00:00
Toshi MARUYAMA
ee54720556 set svn:eol-style native db/migrate/*.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9100 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-05 03:55:03 +00:00
Toshi MARUYAMA
865c2b02e5 set svn:eol-style native public/javascripts/select_list_move.js
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9099 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-04 18:36:41 +00:00
Toshi MARUYAMA
5756ef2941 set svn:eol-style native db/migrate/020_add_role_position.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9098 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-04 16:32:50 +00:00
Toshi MARUYAMA
3e0c70a6f5 set svn:eol-style native public/javascripts/calendar/lang/calendar-pl.js
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9097 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-04 16:20:27 +00:00
Toshi MARUYAMA
d92dbc3dd5 set svn:eol-style native test/exemplars/*.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9096 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-04 15:28:22 +00:00
Jean-Philippe Lang
6b47cad8ce Cleanup in TimelogController#destroy.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9095 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-04 15:24:14 +00:00
Jean-Philippe Lang
dc50edae5e Adds a template for API error messages so that it does not depend on AR::Errors serialization.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9094 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-04 15:16:50 +00:00
Jean-Philippe Lang
5803bf9fc4 Strip login and password read from the email body.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9093 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-04 14:08:19 +00:00
Jean-Philippe Lang
df89c24e37 Adds an helper to get the body of an email in tests.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9092 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-04 14:01:54 +00:00
Jean-Philippe Lang
67d52acb84 Rails 3.1 compatibility.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9091 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-04 13:55:25 +00:00
Jean-Philippe Lang
fa12fad4f2 Include ERB::Util in helpers tests.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9090 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-04 13:53:38 +00:00
Jean-Philippe Lang
8071b71c5d No need to delete fixtures.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9089 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-04 13:48:44 +00:00
Jean-Philippe Lang
80663e694d Removed shoulda assertions.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9088 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-04 13:43:17 +00:00
Jean-Philippe Lang
a6992aa6fc Rails 3.1 compatibility.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9087 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-04 13:39:57 +00:00
Jean-Philippe Lang
3aaf2b9ed0 Adds helpers for testing email body.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9086 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-04 13:28:18 +00:00
Toshi MARUYAMA
b1d5f42237 set svn:eol-style native lib/redmine/scm/adapters/mercurial/redminehelper.py
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9085 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-04 13:15:00 +00:00
Jean-Philippe Lang
9b576d7d0a Rails3: :order option has no effect here because of the default_scope on Enumeration.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9084 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-04 12:50:19 +00:00
Jean-Philippe Lang
45e2e57afb Test cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9083 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-04 12:44:58 +00:00
Jean-Philippe Lang
7ec8a9a100 Rails 3.1 compatibility.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9082 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-04 12:43:55 +00:00
Jean-Philippe Lang
b06223738e Test cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9081 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-04 12:41:31 +00:00
Jean-Philippe Lang
d862843c9d Renamed Mailer#test to Mailer#test_email.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9080 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-04 12:38:34 +00:00
Jean-Philippe Lang
1b923819e8 Removed some generate! calls.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9079 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-04 12:29:52 +00:00
Jean-Philippe Lang
7dbc3e4774 Removed some generate! calls.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9078 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-04 12:15:57 +00:00
Jean-Philippe Lang
bcd8c64384 No need to save the record.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9077 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-04 12:03:59 +00:00
Jean-Philippe Lang
c30a6dffe0 Use :joins instead of :include.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9076 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-04 11:54:52 +00:00
Jean-Philippe Lang
60b0a6c4b8 Removed sort order on issues association.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9075 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-04 11:53:15 +00:00
Jean-Philippe Lang
bf05656c36 Rails 3.1 compatibility.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9074 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-04 11:45:15 +00:00
Jean-Philippe Lang
64d843a4d7 Rails 3.1 compatibility.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9073 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-04 11:41:10 +00:00
Toshi MARUYAMA
858e317e6e set svn:eol-style native test/exemplars/version_exemplar.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9072 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-04 11:08:32 +00:00
Jean-Philippe Lang
af75583b23 Adds Redmine::Utils.random_hex for generating a random hex string.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9071 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-04 11:05:02 +00:00
Toshi MARUYAMA
8db9ffbd8b set svn:eol-style native lib/tasks/migrate_plugins.rake
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9070 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-04 11:00:28 +00:00
Toshi MARUYAMA
a0de4c1576 set svn:eol-style native lib/tasks/migrate_from_mantis.rake
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9069 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-04 10:55:12 +00:00
Toshi MARUYAMA
d13ae4604c set svn:eol-style native lib/tasks/load_default_data.rake
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9068 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-04 10:45:33 +00:00
Jean-Philippe Lang
70ced2f2af Rails 3.1 compatibility.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9067 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-04 10:44:59 +00:00
Toshi MARUYAMA
eb5a9f83c9 set svn:eol-style native lib/tasks/fetch_changesets.rake
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9066 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-04 10:35:28 +00:00
Jean-Philippe Lang
c7b1a42d19 Adds Redmine::Plugin.public_directory to be used instead of Engines.public_directory.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9065 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-04 10:29:47 +00:00
Toshi MARUYAMA
c474d59b0b set svn:eol-style native lib/tasks/email.rake
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9064 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-04 10:24:01 +00:00
Jean-Philippe Lang
739820141a Extracted auto_link and auto_mailto to a module.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9063 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-04 10:04:46 +00:00
Jean-Philippe Lang
b4f22b93e9 Use regular create! instead of generate!
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9062 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-03 19:47:20 +00:00
Jean-Philippe Lang
b3866b05c1 Removes all #verify calls in controllers. Verification is handled at routing level now that the default route is removed.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9061 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-03 15:09:20 +00:00
Jean-Philippe Lang
bf8f854546 Removed obsolete demo environment file.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9060 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-03 12:43:59 +00:00
Jean-Philippe Lang
41fffe1b97 Use require instead of require_library_or_gem.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9059 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-03 12:41:23 +00:00
Jean-Philippe Lang
7edf345fbe Adds a test for displaying list custom fields on the new issue form.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9058 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-02 16:57:57 +00:00
Jean-Philippe Lang
9c4014f446 Use a single query to retrieve issues on the roadmap.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9057 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-02 16:27:14 +00:00
Jean-Philippe Lang
1c0988cad3 Use a single query to retrieve issues_count, open_issues_count and closed_issues_count.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9056 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-02 16:26:06 +00:00
Jean-Philippe Lang
fe481453c4 Use #issues_count which is already retrieved.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9055 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-02 16:23:10 +00:00
Jean-Philippe Lang
9634fe054a Adds a test for when updating a news fails.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9054 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-02 11:43:33 +00:00
Jean-Philippe Lang
9ffccf5304 Adds functional test for #test_connection.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9053 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-02 11:31:44 +00:00
Jean-Philippe Lang
8fda77dc40 Adds functional tests for LdapAuthSourcesController.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9052 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-02 11:25:19 +00:00
Jean-Philippe Lang
4eb7ac1107 Fixed DarcsAdapter for ruby 1.9.3.
Unlike 1.8 and 1.9.2, Entries#compact returns an Array with 1.9.3, instead of an Entries object, resulting in a "undefined method `sort_by_name'" error.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9051 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-02 08:40:41 +00:00
Jean-Philippe Lang
53f9979696 Use valid filters in #test_index_with_sort_filters.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9050 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-02 07:38:43 +00:00
Jean-Philippe Lang
55bbfa19b6 Prevent test:scm:setup:* task to overwrite if the test repository already exists.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9049 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-01 21:01:37 +00:00
Jean-Philippe Lang
f1358200d6 Removed obsolete helper empty test class.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9048 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-01 20:46:06 +00:00
Jean-Philippe Lang
2009a9ff25 Random test failures in #test_..._if_an_exception_is_raised with ruby1.8.7-p358 and sqlite3.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9047 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-01 20:34:41 +00:00
Jean-Philippe Lang
7448e0dbc4 Fixed that the bulk edit/copy form does not propose versions and categories for the target project (#10350).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9046 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-01 20:22:08 +00:00
Jean-Philippe Lang
ac46497f1a Fixes LDAP test.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9045 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-01 19:47:03 +00:00
Jean-Philippe Lang
60741b3e1c Adds an optional LDAP filter (#1060).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9044 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-01 16:26:10 +00:00
Jean-Philippe Lang
ab46c52d4a MailHandler: fixed that sender's fullname is not unquoted (#10334).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9043 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-01 15:32:34 +00:00
Toshi MARUYAMA
2df6c99e67 back out from r9031 to r9036
On Rails3, 'to_s' is not alias of 'encoded'.
'to_s' is alias of 'decoded'.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9037 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-01 11:40:22 +00:00
Toshi MARUYAMA
30ce0cd8fb Rails3: test: add .to_s for mail's bodies check at unit/mailer_test.rb
On Rails3, mail's bodies must be checked calling 'encoded'.
'to_s' is alias of 'encoded' of Mail::Message of Rails3.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9036 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-01 08:10:27 +00:00
Toshi MARUYAMA
7cdce2aeac Rails3: test: add .to_s for mail's bodies check at unit/repository_test.rb
On Rails3, mail's bodies must be checked calling 'encoded'.
'to_s' is alias of 'encoded' of Mail::Message of Rails3.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9035 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-01 08:09:35 +00:00
Toshi MARUYAMA
e70f7ba75c Rails3: test: add .to_s for mail's bodies check at functional/users_controller_test.rb
On Rails3, mail's bodies must be checked calling 'encoded'.
'to_s' is alias of 'encoded' of Mail::Message of Rails3.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9034 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-01 08:08:58 +00:00
Toshi MARUYAMA
fd18bcef95 Rails3: test: add .to_s for mail's bodies check at functional/messages_controller_test.rb
On Rails3, mail's bodies must be checked calling 'encoded'.
'to_s' is alias of 'encoded' of Mail::Message of Rails3.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9033 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-01 08:08:25 +00:00
Toshi MARUYAMA
41217ffea0 Rails3: test: add .to_s for mail's bodies check at functional/issues_controller_test.rb
On Rails3, mail's bodies must be checked calling 'encoded'.
'to_s' is alias of 'encoded' of Mail::Message of Rails3.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9032 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-01 08:07:41 +00:00
Toshi MARUYAMA
12ba0ba1c5 Rails3: test: add .to_s for mail's bodies check at functional/files_controller_test.rb
On Rails3, mail's bodies must be checked calling 'encoded'.
'to_s' is alias of 'encoded' of Mail::Message of Rails3.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9031 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-01 08:07:10 +00:00
Jean-Philippe Lang
e1d1a3a0c2 Fixes r9029.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9030 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-28 06:27:23 +00:00
Jean-Philippe Lang
df3c2466f8 Implements the behaviour expected in user_test.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9029 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-28 05:46:33 +00:00
Jean-Philippe Lang
c0048f7954 Fixed potential test failure.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9028 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-28 05:35:33 +00:00
Jean-Philippe Lang
c3d079aeb8 Fixed potential test failure.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9027 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-28 05:33:46 +00:00
Jean-Philippe Lang
586661caad Fixed potential test failure.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9026 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-28 05:29:36 +00:00
Jean-Philippe Lang
c7e81dfa9b Fixed potential test failure.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9025 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-28 05:25:26 +00:00
Jean-Philippe Lang
774e5f3b5e Fixed potential test failure.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9024 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-28 05:25:04 +00:00
Jean-Philippe Lang
e6b9ddad18 Mailer#url_for not called in views with Rails 3.1.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9023 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-27 20:43:25 +00:00
Etienne Massip
7056649a4b Override @#url_for@ in AM to force generation of absolute links (#10251).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9022 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-27 18:42:03 +00:00
Jean-Philippe Lang
81554eae5a Fixed routing failure with jruby 1.6.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9021 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-27 18:35:10 +00:00
Jean-Philippe Lang
fba7789bb1 Adds a test for project menu item when displaying a revision.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9020 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-27 15:26:35 +00:00
Jean-Philippe Lang
4384db597c Adds a test for when displaying the new message form on boards#show.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9019 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-27 15:11:50 +00:00
Jean-Philippe Lang
0d2a22f37a Use controller_name and action_name instead of params.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9018 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-26 19:20:37 +00:00
Jean-Philippe Lang
7c568cccaf Adds a helper for displaying validation error messages.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9017 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-26 18:07:13 +00:00
Toshi MARUYAMA
9c264a7e66 Rails3: scm: cvs: fix error of test_fetch_changesets_incremental at unit model test
On Rails 3.1, ActiveRecord::HasManyThroughCantAssociateThroughHasOneOrManyReflection error raises.
For more details, see r7062.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9016 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-26 14:09:21 +00:00
Jean-Philippe Lang
ad2036aaba Rails 3.1 compatibility (order declared on association takes precedence).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9015 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-26 13:05:19 +00:00
Jean-Philippe Lang
39aa4cac86 Moved tests about session reset to functional tests.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9014 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-26 12:00:41 +00:00
Jean-Philippe Lang
65b4d8a649 Make sure that projects_to_search is a Project Array.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9013 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-26 11:42:29 +00:00
Toshi MARUYAMA
3363e4f790 remove trailing white-spaces from app/models/attachment.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9012 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-26 10:16:09 +00:00
Toshi MARUYAMA
aa0935c13b Rails3: html_safe for project_tree_options_for_select method in application helper
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9011 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-26 07:10:54 +00:00
Toshi MARUYAMA
8e899d9677 remove trailing white-spaces from vendor/plugins/acts_as_watchable/lib/acts_as_watchable.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9010 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-26 04:28:12 +00:00
Jean-Philippe Lang
33d4821923 Rewrite test without shoulda macros.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9009 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-25 20:47:23 +00:00
Jean-Philippe Lang
4f153083ac Removed assertions on blank template.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9008 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-25 20:42:31 +00:00
Jean-Philippe Lang
4f31027f08 Rails 3.1 compatibility.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9007 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-25 16:33:00 +00:00
Jean-Philippe Lang
62c8ad4df4 Rails 3.1 compatibility.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9006 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-25 16:31:13 +00:00
Jean-Philippe Lang
888287c602 Rails 3.1 compatibility.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9005 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-25 15:23:20 +00:00
Jean-Philippe Lang
10a37f4b6b Rails 3.1 compatibility.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9004 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-25 15:20:28 +00:00
Etienne Massip
2b12146e81 Updated Ruby required version.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9003 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-25 13:26:51 +00:00
Jean-Philippe Lang
b6742bda3d Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9002 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-25 13:04:34 +00:00
Jean-Philippe Lang
cf9154f924 Can not use Project#find on scopes with Rails 3.1.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9001 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-25 12:57:30 +00:00
Jean-Philippe Lang
0cc60f3631 Use content_tag for empty option.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9000 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-25 12:37:28 +00:00
Jean-Philippe Lang
21607751c9 Clean up assertion.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8999 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-25 12:35:22 +00:00
Jean-Philippe Lang
56a5f598f1 Preserve xml output with Rails 3.1.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8998 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-25 12:19:56 +00:00
Jean-Philippe Lang
231683e8d7 Undefined #builtin= with Rails 3.1.3.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8997 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-25 11:48:29 +00:00
Jean-Philippe Lang
a98b65c2d4 Fixed migration broken with Rails 3.1.3 (#10320).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8996 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-25 11:46:19 +00:00
Jean-Philippe Lang
f01b97eb06 YAML files parsing issues.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8995 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-25 11:33:30 +00:00
Jean-Philippe Lang
b795bd5ace Fixed escaping issue with Rails 3.1.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8994 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-25 11:06:14 +00:00
Jean-Philippe Lang
61b14f6391 Use content_tag for empty option.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8993 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-25 11:04:38 +00:00
Jean-Philippe Lang
9964e20a03 Adds missing format parameter.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8992 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-25 10:41:22 +00:00
Jean-Philippe Lang
28503d83cb Do not do assertions on mail class.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8991 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-25 09:58:23 +00:00
Jean-Philippe Lang
f1b26008b8 Fixed escaping issue with Rails 3.1.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8990 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-25 09:37:18 +00:00
Jean-Philippe Lang
36fa1ff9a9 Use content_tag for "no change" options.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8989 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-25 09:29:56 +00:00
Toshi MARUYAMA
b4630c03f7 Rails3: prevent double rendering file view and annotate on Rails 3.0.11 and Rails 3.1.3
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8988 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-25 06:01:48 +00:00
Toshi MARUYAMA
b7ead65fde Rails3: test: fix ordering functional/comments_controller_test.rb
On Rails 3.0.11, test fails.

<pre>
Failure: <"This is a test comment"> expected but was
<"my first comment">.
test_add_comment(CommentsControllerTest)
test/functional/comments_controller_test.rb:34:in `test_add_comment'
</pre>

Contributed by Sylvain Utard.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8987 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-25 01:43:11 +00:00
Jean-Philippe Lang
f04c7a7680 Fixed Version#issues_progress for Rails 3.1.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8986 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-25 00:07:09 +00:00
Jean-Philippe Lang
30282f20da Fixed escaping issues in #textilizable with Rails 3.1.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8985 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-25 00:00:58 +00:00
Jean-Philippe Lang
7ad40e22fe Replace auto_link with link_to in email templates.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8984 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-24 23:16:59 +00:00
Jean-Philippe Lang
4a6de486ba Use fixture.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8983 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-24 21:24:00 +00:00
Jean-Philippe Lang
d04b4aafb6 Use :joins instead of :include.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8982 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-24 18:55:09 +00:00
Jean-Philippe Lang
cc19635b6e Potential test failure fixed.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8981 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-24 18:43:35 +00:00
Jean-Philippe Lang
430477d4d6 Round hours when reading TimeEntry attribute.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8980 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-24 18:40:22 +00:00
Jean-Philippe Lang
492cce7975 Cleanup instance variables when reloading a project.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8979 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-24 18:38:05 +00:00
Jean-Philippe Lang
67d816705d Removed useless option.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8978 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-24 18:27:38 +00:00
Jean-Philippe Lang
528735b955 Use subclasses method instead of class variable.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8977 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-24 18:23:58 +00:00
Toshi MARUYAMA
55a8087f67 Rails3: scm: mercurial: use .to_s for overriding human_attribute_name parameter
On Rails 3.0.11, parameter is symbol not string in activerecord validation.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8976 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-24 14:59:54 +00:00
Toshi MARUYAMA
ebb109b67e Rails3: scm: git: use .to_s for overriding human_attribute_name parameter
On Rails 3.0.11, parameter is symbol not string in activerecord validation.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8975 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-24 14:59:31 +00:00
Toshi MARUYAMA
e6916cf72f Rails3: scm: filesystem: use .to_s for overriding human_attribute_name parameter
On Rails 3.0.11, parameter is symbol not string in activerecord validation.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8974 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-24 14:59:06 +00:00
Toshi MARUYAMA
7100ca61ba Rails3: scm: darcs: use .to_s for overriding human_attribute_name parameter
On Rails 3.0.11, parameter is symbol not string in activerecord validation.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8973 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-24 14:58:43 +00:00
Toshi MARUYAMA
e5bcac1572 Rails3: scm: cvs: use .to_s for overriding human_attribute_name parameter
On Rails 3.0.11, parameter is symbol not string in activerecord validation.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8972 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-24 14:58:18 +00:00
Toshi MARUYAMA
565ac00b70 Rails3: scm: bazaar: use .to_s for overriding human_attribute_name parameter
On Rails 3.0.11, parameter is symbol not string in activerecord validation.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8971 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-24 14:57:52 +00:00
Toshi MARUYAMA
cd9b62d734 Rails3: scm: use .to_s for overriding human_attribute_name parameter at repository model
On Rails 3.0.11, parameter is symbol not string in activerecord validation.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8970 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-24 14:57:26 +00:00
Toshi MARUYAMA
a4ee104bd7 Rails3: use .to_s for overriding human_attribute_name parameter at group model
On Rails 3.0.11, parameter is symbol not string in activerecord validation.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8969 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-24 14:56:54 +00:00
Toshi MARUYAMA
1f2f32f58c scm: cvs: add test to override human_attribute_name
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8968 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-24 14:02:26 +00:00
Toshi MARUYAMA
e323a0c20c scm: filesystem: add test to override human_attribute_name of "Root directory"
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8967 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-24 13:04:06 +00:00
Toshi MARUYAMA
41c16ecb2f scm: mercurial: remove unnecessary log_encoding from overriding human_attribute_name test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8966 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-24 12:38:58 +00:00
Toshi MARUYAMA
c5ed7bbce5 scm: git: remove unnecessary log_encoding from overriding human_attribute_name test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8965 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-24 12:38:35 +00:00
Toshi MARUYAMA
beb3b23fb6 scm: mercurial: add test to override human_attribute_name of "path to repository"
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8964 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-24 11:31:59 +00:00
Toshi MARUYAMA
ca9e41280a scm: git: add test to override human_attribute_name of "path to repository"
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8963 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-24 11:31:38 +00:00
Toshi MARUYAMA
d004d83183 scm: mercurial: split unit model test setup whether repository required or not
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8962 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-24 11:18:59 +00:00
Toshi MARUYAMA
4a7de0cd63 scm: git: split unit model test setup whether repository required or not
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8961 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-24 11:18:37 +00:00
Toshi MARUYAMA
9f581b9eeb scm: bazaar: add test to override human_attribute_name of "path to repository"
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8960 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-24 10:02:20 +00:00
Toshi MARUYAMA
b73d5d7ecc scm: darcs: add test to override human_attribute_name of "path to repository"
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8959 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-24 10:01:58 +00:00
Toshi MARUYAMA
873e57dc86 code layout cleanup test/unit/repository_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8958 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-24 04:09:06 +00:00
Toshi MARUYAMA
c0cdde6506 scm: add test to override human_attribute_name of log_encoding
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8957 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-24 04:08:47 +00:00
Toshi MARUYAMA
34d14500c9 Rails3: view: html_safe for auto_link of project homepage
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8956 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-23 23:08:00 +00:00
Jean-Philippe Lang
77aab5c468 Fixes HTML.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8955 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-23 15:42:15 +00:00
Jean-Philippe Lang
71c83e1155 Adds functional tests.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8954 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-23 15:41:29 +00:00
Jean-Philippe Lang
8cfc080470 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8953 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-23 15:28:49 +00:00
Jean-Philippe Lang
0bb9579088 Adds required fixtures back.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8952 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-23 15:23:58 +00:00
Jean-Philippe Lang
3be511cdab Removed dead code.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8951 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-23 15:23:03 +00:00
Jean-Philippe Lang
0a8b35718a Pass the message id when previewing in edit mode (#10275).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8950 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-23 15:17:13 +00:00
Jean-Philippe Lang
3762a92a35 Pass the topic objet to #textilizable (#10275).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8949 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-23 15:11:17 +00:00
Jean-Philippe Lang
c49ef8e543 Adds functional tests.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8948 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-23 14:39:55 +00:00
Jean-Philippe Lang
e6a64aa00b Adds functional tests.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8947 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-23 14:26:30 +00:00
Jean-Philippe Lang
95811c8e4c Removed dead code.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8946 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-23 14:19:42 +00:00
Jean-Philippe Lang
0f721f6f7b Adds functional tests.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8945 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-23 14:18:54 +00:00
Jean-Philippe Lang
8f24aa6c67 Preserve uploaded files when on documents.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8944 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-23 13:10:51 +00:00
Jean-Philippe Lang
3871cbc75c Preserve uploaded files when on news.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8943 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-23 13:08:32 +00:00
Jean-Philippe Lang
707ce0beef Preserve uploaded files when on news.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8942 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-23 13:07:27 +00:00
Jean-Philippe Lang
4f217618af Do not check the request http method.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8941 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-23 13:05:10 +00:00
Jean-Philippe Lang
435a634ac7 Preserve uploaded files when creating a forum topic.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8940 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-23 13:02:35 +00:00
Jean-Philippe Lang
4669c41e51 i18n not working with russian gem (#10066).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8939 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-23 12:55:22 +00:00
Toshi MARUYAMA
6bdc2c36f1 scm: mercurial: use to_s for revision in find_changeset_by_name method
On Rails 3.0.11, functional test fails.

<pre>
Error: test_diff_two_revs(RepositoriesMercurialControllerTest)
NoMethodError: undefined method `empty?' for 4:Fixnum
app/models/repository/mercurial.rb:76:in `find_changeset_by_name'
</pre>

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8938 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-23 12:18:30 +00:00
Jean-Philippe Lang
7e347069d5 Better message for file size validation error.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8937 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-23 12:18:10 +00:00
Toshi MARUYAMA
9774782cab Rails3: test: scm: mercurial: use "repository_path_hash" for path param
Rails3 new route format returns path param as string not array.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8936 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-23 12:18:03 +00:00
Toshi MARUYAMA
844d904426 Rails3: test: scm: darcs: use "repository_path_hash" for path param
Rails3 new route format returns path param as string not array.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8935 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-23 12:17:32 +00:00
Jean-Philippe Lang
10a37e2769 Makes container_id and container_type columns nullables.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8934 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-23 11:15:39 +00:00
Jean-Philippe Lang
afa6c1a9a7 Removed testing code.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8933 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-23 10:57:50 +00:00
Toshi MARUYAMA
09d243f4e1 add vendor/cache to .hgignore and .gitignore
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8932 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-23 10:21:27 +00:00
Toshi MARUYAMA
a261006666 scm: use to_s for revision in find_changeset_by_name method
On Rails 3.0.11, Subversion functional test fails.

<pre>
Error: test_directory_diff(RepositoriesSubversionControllerTest)
NoMethodError: undefined method `match' for 2:Fixnum
app/models/repository.rb:234:in `find_changeset_by_name'
</pre>

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8931 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-23 10:11:19 +00:00
Toshi MARUYAMA
5033a155b3 Rails3: test: scm: subversion: use "repository_path_hash" for path param
Rails3 new route format returns path param as string not array.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8930 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-23 10:10:48 +00:00
Jean-Philippe Lang
cc79bc6ffe Adds vendor/cache to svn:ignore.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8929 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-23 10:02:10 +00:00
Jean-Philippe Lang
77626ef6fb Adds support for adding attachments to issues through the REST API (#8171).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8928 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-23 10:01:16 +00:00
Toshi MARUYAMA
d086683b17 Rails3: test: scm: bazaar: use "repository_path_hash" for path param
Rails3 new route format returns path param as string not array.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8927 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-23 08:49:05 +00:00
Toshi MARUYAMA
00ec4e189f Rails3: test: scm: cvs: use "repository_path_hash" for path param
Rails3 new route format returns path param as string not array.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8926 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-23 07:33:44 +00:00
Toshi MARUYAMA
1e7340b448 Rails3: test: scm: filesystem: use "repository_path_hash" for path param
Rails3 new route format returns path param as string not array.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8925 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-23 06:12:44 +00:00
Toshi MARUYAMA
08811bd259 Rails3: test: scm: git: use "repository_path_hash" for path param
Rails3 new route format returns path param as string not array.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8924 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-23 06:12:22 +00:00
Toshi MARUYAMA
21cb2ee817 Rails3: test: scm: move "repository_path_hash" method in repositories routing test to test_helper.rb for common use
Rails3 new route format returns path param as string not array.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8923 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-23 06:11:59 +00:00
Toshi MARUYAMA
aa286a8e3f add ":id => nil" to "Overall activity" link_to
On Rails 3.2.1, "Overall activity" link becomes "/assets?controller=activities".

Contributed by John Yani.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8922 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-22 14:36:31 +00:00
Toshi MARUYAMA
d7692b2575 code layout cleanup app/views/users/show.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8921 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-22 14:36:16 +00:00
Toshi MARUYAMA
4fcac7d3b1 Rails3: use image_tag instead of hard-coded html tag to prevent escaping in gravatar plugin
Contributed by Sernin van de Krol.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8920 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-22 11:41:07 +00:00
Toshi MARUYAMA
652871d4c3 Rails3: view: html_safe for common/_diff.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8919 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-22 03:38:08 +00:00
Toshi MARUYAMA
f5c4607769 use English as default language at "test_reminders_should_not_include_closed_issues" of unit mailer test
On Rails 3.1.3, test fails and output is not English.

<pre>
Error: test_reminders_should_not_include_closed_issues(MailerTest)
ActiveRecord::RecordInvalid: Validation failed: Tracker non è incluso nella lista
test/unit/mailer_test.rb:459:in `test_reminders_should_not_include_closed_issues'
</pre>

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8918 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-22 03:28:42 +00:00
Jean-Philippe Lang
77287d1f0b Fixed magic link in the note added when closing an issue by a commit from a subproject (#10284).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8917 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-20 21:58:57 +00:00
Toshi MARUYAMA
5b48e4ae58 use assert_select instead of include? at "test_register" of unit mailer test
On Rails 3.0.11, token breaks with new line.
So, test fails.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8916 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-20 14:36:43 +00:00
Jean-Philippe Lang
a9161a3fde Don't use auth_sources fixtures when not needed.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8915 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-19 21:51:03 +00:00
Jean-Philippe Lang
148bc9448b Fixed a test that writes into fixtures directory.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8914 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-19 21:42:09 +00:00
Jean-Philippe Lang
dedfdefcf3 Disabled on the fly registration for auth_source fixture.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8913 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-19 21:39:29 +00:00
Jean-Philippe Lang
21617889e8 Changed bundle setup error message.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8912 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-19 20:15:30 +00:00
Jean-Philippe Lang
3e3d7c8d4f Friendly response when the LDAP connection fails.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8911 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-19 18:13:46 +00:00
Jean-Philippe Lang
59c2530001 Fixed random failures in RepositoriesControllerTest with ruby-1.8.7-p358.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8909 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-19 15:34:06 +00:00
Jean-Philippe Lang
cd9412fe52 Upgrade to net-ldap 0.3.1 (#10272).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8908 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-19 15:05:20 +00:00
Jean-Philippe Lang
97075c85e8 Require net/ldap.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8907 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-19 15:04:10 +00:00
Jean-Philippe Lang
d7f0919277 Removed faster_csv from lib (#5638).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8906 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-19 14:44:48 +00:00
Jean-Philippe Lang
28338a6f4a Removed vendored gems (#5638).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8905 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-19 14:42:10 +00:00
Jean-Philippe Lang
9315039e0a Use Bundler for gem management (#5638).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8904 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-19 14:30:46 +00:00
Jean-Philippe Lang
37575f27fe Do not recognize invalid textile attributes.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8902 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-17 22:31:01 +00:00
Toshi MARUYAMA
e484eb2dc8 fix Italian "description_date_range_list" translation by pasquale [:dedalus] (#10258)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8900 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-17 14:28:24 +00:00
Toshi MARUYAMA
421db739c5 scm: git: replace "write_attribute" at unit model test for database order consistency (#5357)
On Rails 3.0.11, "NoMethodError: private method `write_attribute'" error raises.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8899 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-17 14:28:08 +00:00
Toshi MARUYAMA
ff65babd1c scm: git: replace "order" at unit model test of fetching from scratch (#5357)
On Rails 3.0.11, this test fails.
Revision order of Git and Mercurial is not date/time order.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8898 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-17 14:27:52 +00:00
Toshi MARUYAMA
5e08a0bc9d Italian translation for 1.3-stable updated by Andrea Saccavini (#10258)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8896 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-17 11:01:09 +00:00
Toshi MARUYAMA
f6e7daaf18 Rails3: view: mail: html_safe for auto_link
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8895 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-17 09:20:49 +00:00
Toshi MARUYAMA
c495dba18a Rails3: view: mail: html_safe for header and footer
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8894 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-17 08:23:59 +00:00
Jean-Philippe Lang
b455ac2a27 Adds a rake test that removes old unattached uploads (#10253).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8893 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-16 21:18:01 +00:00
Jean-Philippe Lang
4c090e869e Missing argument to new_project_query_path named route (#10254).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8892 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-16 21:01:48 +00:00
Jean-Philippe Lang
d4e6355eb3 Better handling of attachments when issue validation fails (#10253).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8891 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-16 21:00:11 +00:00
Toshi MARUYAMA
a8f98bb749 remove trailing white-spaces from public/javascripts/context_menu.js
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8890 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-16 01:35:52 +00:00
Toshi MARUYAMA
fc7b71b334 replace tabs to spaces and fix indents public/javascripts/context_menu.js
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8889 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-16 01:35:23 +00:00
Toshi MARUYAMA
a6bad4a47d replace tabs to spaces app/views/issues/show.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8888 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-16 01:34:58 +00:00
Toshi MARUYAMA
8c6a68ba4c replace tabs to spaces app/views/issues/new.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8887 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-16 01:34:28 +00:00
Toshi MARUYAMA
84dd4ecbd4 route: split issue preview route to adding and editing
"No route matches" error raises in "preview_issue_path"
at app/views/issues/new.html.erb:35 on Rails 3.0.11 and Rails 3.1.3 new route format.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8886 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-15 22:49:03 +00:00
Toshi MARUYAMA
f7618160ad use with_settings instead of direct "Setting" at "test_index" of functional issues controller test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8885 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-15 21:42:34 +00:00
Jean-Philippe Lang
9599875f48 Adds confirmation message to changeset/issue relation delete link.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8884 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-15 20:19:16 +00:00
Jean-Philippe Lang
8792131e03 Adds confirmation message to relation delete link (#8413).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8883 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-15 20:18:10 +00:00
Jean-Philippe Lang
6a290cc281 Use Digest::SHA instead of Digest::SHA1 in Redmine.pm (#10242).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8882 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-15 19:25:16 +00:00
Etienne Massip
f84273ca91 Prevents SCM browser to overlay over the new repository sidebar (#779).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8881 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-15 18:24:23 +00:00
Jean-Philippe Lang
4cf6901057 Allow API auth on GET /versions/:id (#10241).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8880 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-15 18:09:03 +00:00
Jean-Philippe Lang
9f71ca95d9 Adds the syntax for links to notes in the help.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8879 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-15 18:03:43 +00:00
Jean-Philippe Lang
3c75601976 Moved redmine links escaping assertions to their own test.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8878 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-15 17:59:13 +00:00
Jean-Philippe Lang
5c3ac1a40e Adds support for "Magic links" to notes (#2715).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8877 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-15 17:49:31 +00:00
Jean-Philippe Lang
6aae25209a Fixed that partial diffs are done against html instead of original code (#9143).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8876 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-15 17:39:47 +00:00
Jean-Philippe Lang
008557581d Makes user autocompleters work with firstname and lastname.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8875 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-14 16:29:48 +00:00
Jean-Philippe Lang
bd2581e7c9 Restyles user search fields and ajax indicator.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8874 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-14 15:34:27 +00:00
Jean-Philippe Lang
0729ee143b Focus the first text input or submit button when showing a modal box.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8873 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-14 15:28:30 +00:00
Jean-Philippe Lang
a5037783d4 Adds a shadow to modal boxes.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8872 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-14 15:25:38 +00:00
Jean-Philippe Lang
4ccb898360 Fixed: {{toc}} uses identical anchors for subsections with the same name (#8194).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8871 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-14 08:09:23 +00:00
Toshi MARUYAMA
ad668f4277 remove trailing white-spaces from config/locales/et.yml
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8870 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-14 07:58:45 +00:00
Toshi MARUYAMA
6437e7f366 Estonian translation updated by John Wilcox (#10208)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8869 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-14 07:58:10 +00:00
Etienne Massip
75f8c152ce Removed useless style.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8868 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-14 06:27:23 +00:00
Etienne Massip
d8fed7d515 Better handling of horizontal position.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8867 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-14 06:22:23 +00:00
Etienne Massip
c5317a14ac Redraw revision graph on window resize (#10206).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8866 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-13 20:20:18 +00:00
Jean-Philippe Lang
cccfed7006 Fixed: error when creating a project with a version format custom field (#10218).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8865 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-13 18:57:12 +00:00
Jean-Philippe Lang
7fa18cad57 Prevent ActiveRecord::StaleObjectError in Issue#reschedule_after (#7920).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8864 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-12 19:41:42 +00:00
Jean-Philippe Lang
d289619c75 Fixed potential error when sorting members without role (#10053).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8863 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-12 14:54:30 +00:00
Jean-Philippe Lang
10a462369b Adds a css class (noborder) for making borderless tables text formatting.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8862 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-12 14:23:08 +00:00
Jean-Philippe Lang
83458ee824 Updated test against r8860.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8861 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-12 14:18:32 +00:00
Jean-Philippe Lang
0ede069d2c Allows custom styles in textile formatting using a white list of styles (#2416).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8860 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-12 14:00:43 +00:00
Jean-Philippe Lang
e14a9f5503 Adds Estonian translation by Kaitseministeerium (#10208).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8859 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-12 10:56:45 +00:00
Jean-Philippe Lang
96757857c4 Removed "clear:both" divs that break the issue form with long sidebar content.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8858 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-12 10:50:41 +00:00
Toshi MARUYAMA
58996e891e scm: git: explicitly return string as default branch (#10207)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8857 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-12 08:26:31 +00:00
Toshi MARUYAMA
2fa19441a7 scm: git: use default branch from HEAD (#10207)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8856 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-12 06:22:59 +00:00
Toshi MARUYAMA
804482ef2b scm: git: update test repository (#10207)
New "master-20120212" branch is added.
Git branch is the reference to the specific revision.
This branch points the same revision with "master" branch.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8855 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-12 06:22:33 +00:00
Jean-Philippe Lang
8ddcc4caf5 Adds a News#commentable? method to easily specific additional rules.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8854 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-11 17:14:56 +00:00
Etienne Massip
9678e335a4 Moved revision graph holder div out of the table structure.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8853 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-11 15:32:24 +00:00
Etienne Massip
2da8e97268 Included scm stylesheet in changes page.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8852 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-11 15:31:11 +00:00
Etienne Massip
ec537f6ea4 Use of local variable for consistency.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8851 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-11 14:59:57 +00:00
Etienne Massip
1ad977f712 Integrated revision graph into scmid column.
Allow wrapping of comment text so that the width doesn't overlap the sidebar while using multiple repositories.
Some code cleanup also.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8850 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-11 14:57:44 +00:00
Jean-Philippe Lang
627754366c Prevent random failures due to params order.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8849 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-11 14:53:31 +00:00
Jean-Philippe Lang
b5fabd052b Adds a test for changeset/issue relations deletion.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8848 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-11 14:19:16 +00:00
Jean-Philippe Lang
8f92121606 Fixed that changesets parents associations are not deleted when deleting a repository.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8847 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-11 14:17:47 +00:00
Jean-Philippe Lang
17d5118de6 Move the calendar in front of the modal box.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8846 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-11 13:12:30 +00:00
Jean-Philippe Lang
60b9e59d15 Displays the full form when creating a version from the issue form so that required custom fields can be filled (#7398).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8845 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-11 13:05:41 +00:00
Jean-Philippe Lang
2ec55c5337 Only show statuses that can be applied to all issues on the bulk edit form (#10181).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8844 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-11 12:03:48 +00:00
Jean-Philippe Lang
004968caf3 Removed extra argument from SubversionAdapter#diff.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8843 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-11 11:33:17 +00:00
Jean-Philippe Lang
1e66a0c069 POP3 task only recognizes Message-ID header, not Message-Id (#10198).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8842 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-11 10:06:14 +00:00
Jean-Philippe Lang
686430ee36 Fixed: wrong section edit links when a heading contains inline code (#10199).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8841 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-11 10:02:24 +00:00
Toshi MARUYAMA
165327a074 scm: git: reduce saving heads times in fetching revisions (#8857, #9472)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8840 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-11 05:42:43 +00:00
Toshi MARUYAMA
1e5f16722f scm: git: call "git log" only once instead of per branch in fetching revisions (#8857)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8839 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-11 05:42:06 +00:00
Toshi MARUYAMA
c2943ffd29 code layout cleanup app/views/repositories/committers.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8838 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-11 03:37:09 +00:00
Toshi MARUYAMA
d90cdb1b10 scm: git: raise exception if "git log" is error and block is given in lib revision method (#8857)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8837 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-10 22:56:54 +00:00
Toshi MARUYAMA
c5c8cd43c0 Traditional Chinese translation updated by ChunChang Lo (#10195)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8836 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-10 22:56:28 +00:00
Jean-Philippe Lang
c0491d298b Makes error class more specific to prevent clashes with syntax highlight (#10193).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8835 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-10 18:03:10 +00:00
Jean-Philippe Lang
71f3589238 Removed unused style.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8834 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-10 17:49:40 +00:00
Toshi MARUYAMA
a2c362a88d Ruby1.9: move setting Encoding.default_external after boot (#4050, #4796)
"ruby test/functional/repositories_git_controller_test.rb" fails
on Japanese Windows and Mingw Ruby 1.9.3p0
because "Rails" is not defined.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8833 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-10 13:08:53 +00:00
Toshi MARUYAMA
4d5d51e322 scm: git: clarify the purpose of the unit model test to fetch history editing revisions
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8832 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-10 07:25:27 +00:00
Toshi MARUYAMA
2cfdb8306d remove tailing white spaces from public/javascripts/application.js
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8831 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-10 00:36:21 +00:00
Toshi MARUYAMA
30a9cf0f03 replace tabs to spaces and fix indents public/javascripts/application.js
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8830 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-10 00:35:58 +00:00
Jean-Philippe Lang
daacea11dc Do not hide context menu when clicking on a folder menu item.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8829 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-09 20:25:01 +00:00
Jean-Philippe Lang
e1072a3c4f Slight change to the context menu style.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8828 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-09 20:18:21 +00:00
Jean-Philippe Lang
8c38510ee5 Use #reduce instead of #inject for getting the intersection of arrays.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8827 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-09 20:06:36 +00:00
Jean-Philippe Lang
8b3ed4175d Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8826 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-09 19:51:38 +00:00
Jean-Philippe Lang
07a93c2731 Only show allowed statuses in context menu (#10181).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8825 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-09 19:34:56 +00:00
Jean-Philippe Lang
5e0c1cc5ce Bulk-edit custom fields through context menu (#6296).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8824 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-09 18:22:11 +00:00
Jean-Philippe Lang
de7c49c6ca Moved #context_menu_link to a new helper.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8823 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-09 18:00:22 +00:00
Toshi MARUYAMA
c94426d21e scm: git: add explicit :excludes option to calling revision method in "test_revisions_includes_master_two_revs_from_origin" of unit lib test (#8857)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8822 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-09 15:07:11 +00:00
Toshi MARUYAMA
7f70d2faaa scm: git: add test of get revisions from disjointed histories to unit lib test (#8857)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8821 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-09 08:34:24 +00:00
Toshi MARUYAMA
e34dab7443 scm: git: update test repository (#8857)
New disjointed history revisions are added.
This test repository has two origins.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8820 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-09 08:20:37 +00:00
Toshi MARUYAMA
a9ad2a4dcc scm: git: remove redundant comma from test_revisions_includes_master_two_revs_from_origin of unit lib test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8819 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-09 07:39:27 +00:00
Toshi MARUYAMA
f4de82510a scm: git: code cleanup "test_branches" of unit lib test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8818 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-09 06:43:42 +00:00
Toshi MARUYAMA
19909bc4c8 scm: git: add lib test to get master branch revisions from origin (#8857)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8817 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-09 06:05:10 +00:00
Toshi MARUYAMA
693191e8bf scm: git: add model method to get heads from extra_info branches hash (#8857)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8816 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-09 00:11:03 +00:00
Toshi MARUYAMA
34b3a9851f scm: git: add includes and excludes options to lib revisions method (#8857)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8815 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-08 23:38:35 +00:00
Toshi MARUYAMA
adb81b1ff6 scm: git: split fetch_changesets method
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8814 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-08 11:10:46 +00:00
Toshi MARUYAMA
f319409abc scm: git: remove unused "--all" option of "git log" in lib revisions method
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8813 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-08 03:18:20 +00:00
Toshi MARUYAMA
40a37b194d scm: git: use explicit "master" instead of all for revisions method at unit lib test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8812 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-08 03:04:03 +00:00
Toshi MARUYAMA
186abba94b code layout cleanup test/unit/lib/redmine/scm/adapters/git_adapter_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8811 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-08 03:03:39 +00:00
Toshi MARUYAMA
ed8f988a9b scm: git: use explicit "master" for latest_changesets at unit app test
If revision is not set, controller sets default branch for latest_changesets.
"git log" returns HEAD on bare repository if revision is not set.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8810 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-07 23:27:51 +00:00
Toshi MARUYAMA
1489623584 scm: git: remove "test_getting_certain_revisions" from unit lib test
Redmine does not use '899a15d^' syntax.
This test is covered by "test_revisions_master_merged_rev".

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8809 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-07 15:40:56 +00:00
Toshi MARUYAMA
75dd5084f6 Bulgarian translation for trunk updated by Ivan Cenov (#10160)
changed:
* setting_commit_cross_project_ref
added:
* permission_manage_related_issues

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8807 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-06 23:16:16 +00:00
Toshi MARUYAMA
a3f9209379 Bulgarian translation for 1.3-stable updated by Ivan Cenov (#10160)
added:
* setting_repositories_encodings
changed:
* setting_cache_formatted_text

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8806 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-06 23:15:52 +00:00
Jean-Philippe Lang
cdcf813fa7 Adds membership ids to /users/:id API response.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8805 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-06 16:32:50 +00:00
Jean-Philippe Lang
dfbab5d61e Fixed "can't convert Fixnum into String" error on projects with numerical identifier (#10135).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8804 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-06 14:44:40 +00:00
Jean-Philippe Lang
6f1d553cff Typo
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8803 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-06 11:33:39 +00:00
Jean-Philippe Lang
fd4071fadb Updates for 1.3.1 release.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8800 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-06 11:14:52 +00:00
Jean-Philippe Lang
be246de161 Adds a simple API for listing roles (#9725).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8799 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-06 10:06:32 +00:00
Jean-Philippe Lang
c5665276b7 REST API for project memberships (#7420).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8798 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-06 09:47:10 +00:00
Toshi MARUYAMA
942651ecdf Russian translation changed by Igor Zubkov (#10155)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8797 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-06 05:26:16 +00:00
Toshi MARUYAMA
d2216bfe54 scm: fix revision graph height is hard-coded (#9832)
Contributed by Jakob Skjerning.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8795 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-06 02:58:34 +00:00
Toshi MARUYAMA
2ef86a2f0a code layout cleanup app/views/repositories/_related_issues.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8794 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-05 23:51:26 +00:00
Toshi MARUYAMA
d360ca4e14 code layout cleanup app/views/wiki/edit.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8793 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-05 23:51:03 +00:00
Toshi MARUYAMA
297d4f8bab replace tabs to spaces at app/views/wiki/edit.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8792 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-05 23:50:36 +00:00
Toshi MARUYAMA
e0b0f1315b replace tabs to spaces at app/views/issues/_conflict.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8791 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-05 23:50:01 +00:00
Toshi MARUYAMA
adbe4097b3 replace tabs to spaces at app/views/issues/_edit.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8790 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-05 23:49:19 +00:00
Jean-Philippe Lang
78bd24c6f7 Resourcified project memberships.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8789 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-05 16:35:27 +00:00
Jean-Philippe Lang
229b2f8d2a Removed bigdecimal-segfault-fix.rb now that ruby is fixed (#7826).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8788 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-05 14:38:12 +00:00
Jean-Philippe Lang
001b255b08 Ability to edit a wiki page's parent on the edit page (#6449).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8787 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-05 14:35:27 +00:00
Jean-Philippe Lang
6c27093a8b Fixed an assertion for ruby1.9.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8786 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-05 13:48:16 +00:00
Jean-Philippe Lang
967f42aa98 Adds a X-Redmine-Sender header to email notifications (#5643).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8785 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-05 12:57:19 +00:00
Jean-Philippe Lang
f52f18c281 Removed unsafe attributes assignment.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8784 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-05 12:21:21 +00:00
Jean-Philippe Lang
4128a8bfd0 Removed mocha availability checks in tests.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8783 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-05 12:20:41 +00:00
Jean-Philippe Lang
9f6496b0bc Fixed registration form broken by r8479.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8782 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-05 12:17:29 +00:00
Jean-Philippe Lang
d57fbc9512 Fixed: Can't attach more than 1 file on IE 6 and 7 (#10115).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8780 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-05 11:54:38 +00:00
Toshi MARUYAMA
232fca78a2 scm: rename JavaScript "branchGraph" function name to "revisionGraph"
"Branch" is not a common concept in the SCMs.

Mercurial "branch" has three terms.
* named branch
* unnamed branch (multiple heads)
* big-picture branch (cloning repository)

Git "branch" is a reference to a specific revision.

It is popular that Mercurial GUI shows all revisions on the top page.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8779 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-05 11:51:43 +00:00
Jean-Philippe Lang
a00f04886f Increase username length limit from 30 to 60 (#2719).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8778 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-05 11:50:53 +00:00
Jean-Philippe Lang
1d4ef8964d Adds a "Manage related isses" permission to add/remove commits/issues relations manually from the changeset view (#2009).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8777 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-05 10:56:27 +00:00
Toshi MARUYAMA
c4ea429acb Bulgarian translation updated by Ivan Cenov (#10154)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8776 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-05 01:44:43 +00:00
Jean-Philippe Lang
ddc3814d45 Fixes assertion.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8775 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-04 20:08:05 +00:00
Jean-Philippe Lang
fb3b904b8f Better handling of issue update conflicts (#8691).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8774 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-04 17:36:15 +00:00
Etienne Massip
b9c26d6ddc Revision graph code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8773 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-04 14:02:31 +00:00
Toshi MARUYAMA
be050be5e5 replace tabs to spaces at public/help/wiki_syntax_detailed.html
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8772 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-04 11:48:02 +00:00
Jean-Philippe Lang
06f8c4b27a Removed useless code.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8771 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-04 11:41:43 +00:00
Jean-Philippe Lang
333a6cc370 Fixed rounding issue on spent hours column in CSV export (#10150).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8764 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-04 11:03:44 +00:00
Toshi MARUYAMA
2789cf2506 attachment: fix that diff type is not saved in user preference (#10152)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8761 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-04 06:23:38 +00:00
Toshi MARUYAMA
af50c1e13e scm: git: add test that diff type is saved in user preference (#10152)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8760 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-04 06:23:00 +00:00
Toshi MARUYAMA
3b75e9f90a remove Korean yaml comment header
It is too hard to maintain.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8758 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-02 23:27:46 +00:00
Toshi MARUYAMA
8f2888e228 Korean translation for 1.3-stable updated by Ki Won Kim (#10137)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8757 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-02 23:27:23 +00:00
Toshi MARUYAMA
7574ab730d code layout cleanup app/controllers/sys_controller.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8756 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-02 23:26:54 +00:00
Jean-Philippe Lang
46ab7b45d7 Permissions report: display role names on each permission group (#10119).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8755 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-02 22:31:00 +00:00
Jean-Philippe Lang
e4ef0b04ef Adds specific css class for information in forms.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8754 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-02 20:07:37 +00:00
Jean-Philippe Lang
b47c5af0b8 Fixed broken italic text style in edited comment preview (#10130).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8752 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-02 19:45:40 +00:00
Jean-Philippe Lang
73f9b825f0 Replaced ruby-net-ldap with net-ldap 0.2.2 gem.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8751 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-02 19:30:01 +00:00
Jean-Philippe Lang
d02f6a8e32 Adds a setting that allows to reference/fix issues of all projects (#3087).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8750 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-02 18:09:37 +00:00
Jean-Philippe Lang
3dc73dcb88 Fixed: associated changesets from other projects are not visible if the current project doesn't have the repository module enabled (#3087).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8749 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-02 17:43:36 +00:00
Jean-Philippe Lang
b13f85e456 Adds custom field in TimeEntry API responses (#10131).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8748 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-01 21:15:13 +00:00
Jean-Philippe Lang
2808adf99f Adds members of subprojects in assignee and author filters (#10126).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8747 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-01 20:07:01 +00:00
Jean-Philippe Lang
0154d7477b Simplifies Principal.active scope (status defaults to 1 for groups).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8746 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-02-01 19:35:49 +00:00
Toshi MARUYAMA
5dd08133ef code layout cleanup app/models/mail_handler.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8745 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-31 12:49:06 +00:00
Toshi MARUYAMA
7b600cdb91 code layout cleanup app/models/mail_handler.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8744 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-31 10:19:04 +00:00
Toshi MARUYAMA
bcef0de43b replace tabs to spaces at app/views/wiki/index.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8743 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-31 03:53:37 +00:00
Toshi MARUYAMA
406633491f Rails3: add number.format to ro and sk locales (#4796)
Test fails on Rails 3.0.11 and Ruby 1.8.7.

<pre>
Failure:
test_number_to_human_size_for_each_language(Redmine::I18nTest)
    [test/unit/lib/redmine/i18n_test.rb:114:in `test_number_to_human_size_for_each_language'
     test/unit/lib/redmine/i18n_test.rb:112:in `each'
     test/unit/lib/redmine/i18n_test.rb:112:in `test_number_to_human_size_for_each_language']:
sk failure.
Exception raised:
TypeError(<can't convert nil into String>)
</pre>

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8742 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-31 02:41:40 +00:00
Toshi MARUYAMA
65a1f54f71 code layout clean up test/unit/mail_handler_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8741 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-30 23:27:15 +00:00
Jean-Philippe Lang
be9f1c592e Removed border around wiki pages in PDF.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8740 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-30 23:11:26 +00:00
Jean-Philippe Lang
7abaa570c6 Fix for ruby1.9.3.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8739 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-30 22:53:53 +00:00
Toshi MARUYAMA
682efe399d code layout cleanup unit mail handler test fixtures
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8738 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-30 22:51:55 +00:00
Toshi MARUYAMA
fbe351287a Bulgarian translation updated by Ivan Cenov (#10087)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8737 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-30 22:51:30 +00:00
Jean-Philippe Lang
7409963c9a Fix for ruby1.9.3.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8736 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-30 20:11:08 +00:00
Jean-Philippe Lang
2664693ae8 Removed useless permission check in wiki controller.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8735 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-30 18:50:04 +00:00
Jean-Philippe Lang
3d27bf5318 Adds export of all wiki pages to a PDF file (#3463).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8734 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-30 18:42:14 +00:00
Jean-Philippe Lang
a03c585a84 Check parent wiki page by default.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8733 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-30 18:19:29 +00:00
Jean-Philippe Lang
a749e788ab Adds bookmarks to PDF when exporting a grouped issue list.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8732 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-30 18:01:47 +00:00
Jean-Philippe Lang
967e6413e5 Fixed that tag[0] may be nil.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8731 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-30 17:57:51 +00:00
Toshi MARUYAMA
2c6edb9f3c remove trailing tabs from app/views/news/_form.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8730 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-30 01:38:58 +00:00
Jean-Philippe Lang
e8cfa65155 Enable attached images to be displayed inline on the news list.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8729 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-29 22:42:12 +00:00
Jean-Philippe Lang
24138187eb Allows attachments on news (#1972).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8728 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-29 22:39:06 +00:00
Jean-Philippe Lang
992aebf6df Locales update.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8727 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-29 22:03:19 +00:00
Jean-Philippe Lang
79b12c73d9 Display of multi custom fields.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8726 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-29 22:01:40 +00:00
Jean-Philippe Lang
0cd62a3c77 Display custom_field_values instead of custom_values.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8725 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-29 21:21:45 +00:00
Jean-Philippe Lang
cd4a19241a Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8724 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-29 21:12:10 +00:00
Jean-Philippe Lang
f84688687b Allow existing single value custom fields to be changed to multiselect.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8723 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-29 21:10:18 +00:00
Jean-Philippe Lang
8d5f932660 Do not validate blank default custom field value.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8722 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-29 21:09:44 +00:00
Jean-Philippe Lang
cd6db6a3cb Adds support for multiselect custom fields (#1189).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8721 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-29 20:51:48 +00:00
Jean-Philippe Lang
0c5af16e14 Support for nested array in API builder.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8720 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-29 18:29:09 +00:00
Toshi MARUYAMA
64b59f1502 test: add attachment tests at unit mail handler test for Rails3
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8719 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-29 11:24:48 +00:00
Toshi MARUYAMA
f49d8d8c5f route: repository: move :repository_id routes before non :repository_id routes
On Rails3 new route format, tests pass except following routes.

* 'projects/:id/repository' :action => 'show'
* 'projects/:id/repository/:repository_id' :action => 'show'

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8718 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-29 01:23:15 +00:00
Jean-Philippe Lang
83e7ee6729 Extracts custom field values validation from CustomValue so that they can be validated globally from the customized object (#1189).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8717 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-28 11:16:58 +00:00
Toshi MARUYAMA
d4d27bd2d8 Ruby1.9: skip enforcing UTF-8 encodings on the params hash on Rails2 if it is frozen (#4050, #4796)
Tests on CI server fail.
http://www.redmine.org/builds/build_trunk-1.9.2-sqlite3_257.html

<pre>
  1) Error:
test_index_with_short_filters(IssuesControllerTest):
RuntimeError: can't modify frozen string
    /var/lib/hudson/jobs/trunk-1.9.2-sqlite3/workspace/app/controllers/application_controller.rb:58:in `force_encoding'
    /var/lib/hudson/jobs/trunk-1.9.2-sqlite3/workspace/app/controllers/application_controller.rb:58:in `utf8nize!'
    /var/lib/hudson/jobs/trunk-1.9.2-sqlite3/workspace/app/controllers/application_controller.rb:60:in `block in utf8nize!'
    /var/lib/hudson/jobs/trunk-1.9.2-sqlite3/workspace/app/controllers/application_controller.rb:60:in `each'
    /var/lib/hudson/jobs/trunk-1.9.2-sqlite3/workspace/app/controllers/application_controller.rb:60:in `utf8nize!'
    /var/lib/hudson/jobs/trunk-1.9.2-sqlite3/workspace/app/controllers/application_controller.rb:52:in `params_filter'
    /var/lib/hudson/ruby1.9.2/lib/ruby/gems/1.9.1/gems/activesupport-2.3.14/lib/active_support/callbacks.rb:178:in `evaluate_method'
    /var/lib/hudson/ruby1.9.2/lib/ruby/gems/1.9.1/gems/activesupport-2.3.14/lib/active_support/callbacks.rb:166:in `call'
    /var/lib/hudson/ruby1.9.2/lib/ruby/gems/1.9.1/gems/actionpack-2.3.14/lib/action_controller/filters.rb:225:in `call'
    /var/lib/hudson/ruby1.9.2/lib/ruby/gems/1.9.1/gems/actionpack-2.3.14/lib/action_controller/filters.rb:629:in `run_before_filters'
    /var/lib/hudson/ruby1.9.2/lib/ruby/gems/1.9.1/gems/actionpack-2.3.14/lib/action_controller/filters.rb:615:in `call_filters'
    /var/lib/hudson/ruby1.9.2/lib/ruby/gems/1.9.1/gems/actionpack-2.3.14/lib/action_controller/filters.rb:610:in `perform_action_with_filters'
    /var/lib/hudson/ruby1.9.2/lib/ruby/gems/1.9.1/gems/actionpack-2.3.14/lib/action_controller/benchmarking.rb:68:in `block in perform_action_with_benchmark'
    /var/lib/hudson/ruby1.9.2/lib/ruby/gems/1.9.1/gems/activesupport-2.3.14/lib/active_support/core_ext/benchmark.rb:17:in `block in ms'
</pre>

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8716 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-28 10:26:34 +00:00
Toshi MARUYAMA
189bc0f7c8 test: route: repositories: split tests whether 'show' action or not
On Rails3, 'show' action has some problems.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8715 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-28 06:51:08 +00:00
Toshi MARUYAMA
24d73d4644 Ruby1.9: enforce UTF-8 encodings on the params hash on Rails2 (#4050, #4796)
Without this change, non ASCII subject issue cannot be created on Ruby 1.9.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8714 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-28 04:58:11 +00:00
Toshi MARUYAMA
84e2822e27 Ruby1.9: set Encoding.default_external on only Rails2 (#4050, #4796)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8713 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-28 04:57:54 +00:00
Toshi MARUYAMA
adf77fa6c2 German "text_project_identifier_info" translated by Felix Schäfer (#1363)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8712 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-27 22:48:33 +00:00
Toshi MARUYAMA
2fabe0797f Dutch "text_project_identifier_info" translated by Pieter Nicolai (#1363)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8711 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-27 22:48:16 +00:00
Toshi MARUYAMA
490eff8524 replace i18n "text_project_identifier_info" (#1363)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8710 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-27 21:38:58 +00:00
Jean-Philippe Lang
9fbb235d81 Accept project identifier with underscore.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8709 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-27 19:29:07 +00:00
Jean-Philippe Lang
9d372ce6f5 Allow underscores in project identifiers (#1363).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8708 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-27 17:34:58 +00:00
Jean-Philippe Lang
ffbd3c0522 Makes all workflow transitions defined for all roles available to administrators (#2323).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8707 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-26 20:30:47 +00:00
Toshi MARUYAMA
30579e6619 replace tabs to spaces at app/views/projects/settings/_repositories.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8706 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-26 12:07:48 +00:00
Toshi MARUYAMA
cdbbe8fd42 Bulgarian translation updated by Ivan Cenov (#10057)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8705 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-26 08:33:56 +00:00
Toshi MARUYAMA
73b175df8f code layout cleanup app/views/repositories/revisions.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8704 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-26 06:40:55 +00:00
Toshi MARUYAMA
564653167e code layout cleanup app/views/repositories/_revisions.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8703 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-26 06:40:29 +00:00
Toshi MARUYAMA
09c305d29f Rails3.2: pdf: comment out ::ActionView::TemplateHandlers::ERB of rfpdf plugin (#4796)
ActionView::TemplateHandlers is deprecated on Rails3.2
and Redmine cannot boot on Rails3.2.
Redmine does not use this rfpdf plugin feature.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8702 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-26 05:15:40 +00:00
Jean-Philippe Lang
6714d69767 Fixed javascript error when changing time period on time report.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8701 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-24 21:01:49 +00:00
Jean-Philippe Lang
1fa341df1c Fixed links to versions anchors on the roadmap.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8700 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-24 18:47:38 +00:00
Jean-Philippe Lang
af0fcd22e4 Provide a direct access to completed versions form the roadmap.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8699 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-24 18:45:40 +00:00
Jean-Philippe Lang
858bd8dc40 Moved javascript filters functions to application.js.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8698 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-24 18:02:22 +00:00
Jean-Philippe Lang
669a8c68a7 Set a minimum width for filter values drop-down.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8697 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-24 17:56:28 +00:00
Jean-Philippe Lang
7f4e3771d8 Allows bulk change issue private flag (#10042).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8696 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-23 18:35:11 +00:00
Jean-Philippe Lang
22317105f9 Notify previous assignee when assignee changes (#2694).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8695 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-23 17:55:29 +00:00
Jean-Philippe Lang
f2e7aa596b Adds support for multiple repositories to redmine links (#779).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8694 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-22 14:23:10 +00:00
Jean-Philippe Lang
13f28858ba Fixed that project is ignored when entering an issue id on /time_entries/new form (#10020).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8693 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-22 10:37:57 +00:00
Jean-Philippe Lang
41e82c4598 Keep back_url param for when continuing creating issues.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8692 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-21 14:34:55 +00:00
Jean-Philippe Lang
41eab6615b Enable global time logging at /time_entries/new (#10020).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8691 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-21 14:26:51 +00:00
Jean-Philippe Lang
94b621a99f Fixed that reminders are sent for closed issues (#10006).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8690 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-21 12:28:39 +00:00
Jean-Philippe Lang
f2a7f83c82 Adds a <<me>> option for assignee in the context menu (#1102).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8689 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-21 11:11:13 +00:00
Jean-Philippe Lang
45e3dafa8f Adds a <<me>> option at the top of the assignee drop-down (#1102).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8688 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-21 11:06:59 +00:00
Jean-Philippe Lang
1d07bb91a7 Adds a 'Create and continue' button on the spent time form (#9995).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8687 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-21 10:37:19 +00:00
Jean-Philippe Lang
11725be278 Makes Version REST API accept due_date attribute (#10013).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8686 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-21 09:39:29 +00:00
Jean-Philippe Lang
4d6596e534 Resizes the attachment description field and moves the label to a placeholder attribute so that the field doesn't overflows (#9998).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8685 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-21 09:33:04 +00:00
Toshi MARUYAMA
3fc9a606eb route: scm: fix indents of repository revision requirement
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8684 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-21 06:09:43 +00:00
Toshi MARUYAMA
58ece4b887 route: scm: add revision requirements for git/mercurial branches (#10026)
hgsubversion mirror (https://bitbucket.org/redmine/redmine-all) has
"../sandbox/rails-2.3" and "../sandbox/rails-2.2" *named* branches.

"View revisions" link of "../sandbox/rails-2.3" generates
"repository/revisions/..%2Fsandbox%2Frails-2.3/changes".
But, passenger returns "Not Found".

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8683 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-21 05:16:02 +00:00
Jean-Philippe Lang
f8d9254b64 Updated footer.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8682 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-20 22:54:59 +00:00
Jean-Philippe Lang
fdd79c0448 Updated assertion that fails after r8680.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8681 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-20 22:54:20 +00:00
Jean-Philippe Lang
ef086beed1 Localized string for issue position in results.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8680 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-20 20:11:07 +00:00
Jean-Philippe Lang
80f3834159 Fixes admin menu display.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8679 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-20 20:02:04 +00:00
Jean-Philippe Lang
83e45cad9f Fixed: Git: Mercurial: Branch dropdown broken on repositories page (#10026).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8678 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-20 19:46:28 +00:00
Jean-Philippe Lang
fbf30eec7c Adds an option of the copy form to enable/disable attachments copy (#3055).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8677 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-20 18:22:43 +00:00
Jean-Philippe Lang
8a3623733f Copy attachments on issue and project copy (#3055).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8676 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-20 17:56:28 +00:00
Toshi MARUYAMA
e347fba11a add newline at end of app/views/repositories/edit.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8675 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-20 13:46:31 +00:00
Toshi MARUYAMA
f92b2cb7b5 add newline at end of app/views/repositories/_form.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8674 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-20 13:45:42 +00:00
Toshi MARUYAMA
8135b3c730 Bulgarian translation updated by Ivan Cenov (#10031)
set "human.delimiter" position with same en.yml.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8673 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-20 01:56:55 +00:00
Toshi MARUYAMA
2dd183b808 Bulgarian translation updated by Ivan Cenov (#10031)
Translated:
* field_repository_is_default
* label_repository_new

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8672 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-20 01:56:29 +00:00
Toshi MARUYAMA
4c7bca296b generate i18n "field_repository_is_default" key (#779)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8671 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-20 01:39:11 +00:00
Jean-Philippe Lang
b4cf4fca9d Fixed an error when trying to copy an issue that does not exist.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8670 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-17 20:20:59 +00:00
Jean-Philippe Lang
8b994475c4 Sort repositories in settings (#779).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8669 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-17 18:43:34 +00:00
Jean-Philippe Lang
0c6830f8e0 Moved the "Main repository" checkbox before the identifier (#779).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8668 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-17 18:40:52 +00:00
Jean-Philippe Lang
24c8a76b9e French translation update.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8667 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-16 20:27:00 +00:00
Jean-Philippe Lang
141630e771 Removed duplicated test.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8666 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-16 20:23:25 +00:00
Jean-Philippe Lang
346fccf782 Do not show revisions links and field on filesystem repositories.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8665 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-16 20:22:12 +00:00
Jean-Philippe Lang
f8e401b475 Changes the style of the links for sorting documents.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8664 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-16 20:02:43 +00:00
Jean-Philippe Lang
44a898a210 Display the position of the current issue in the query results.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8663 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-16 18:24:59 +00:00
Jean-Philippe Lang
dfe26befdd Change color of selection in the sidebar.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8662 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-16 18:10:01 +00:00
Jean-Philippe Lang
ad1330c780 Search for changeset in the current repository (#779).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8661 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-16 18:03:18 +00:00
Jean-Philippe Lang
0dcc879b3c Highlight active issue query in the sidebar.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8660 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-16 18:01:34 +00:00
Jean-Philippe Lang
61bd06dde7 Changes the style of selected repository (#779).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8659 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-16 17:55:14 +00:00
Jean-Philippe Lang
34d1683087 Skip a bunch of useless "UPDATE repositories SET extra_info = ..." queries when navigating in repositories.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8658 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-16 17:52:54 +00:00
Jean-Philippe Lang
fef82e44a6 Fixed previous/next links when navigating in a saved query.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8657 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-16 17:49:04 +00:00
Jean-Philippe Lang
276e647779 Display repository identifier in breadcrumbs (#779).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8656 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-15 23:09:15 +00:00
Jean-Philippe Lang
c102fa6cac Set tab caption to plural.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8655 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-15 22:55:14 +00:00
Jean-Philippe Lang
83bb41d3a3 Display identifier for the default repository too (#779).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8654 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-15 22:25:20 +00:00
Jean-Philippe Lang
abc0b0ea3e Don't use a disabled SCM as a default repository SCM (#779).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8653 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-15 22:23:56 +00:00
Jean-Philippe Lang
cba13a21e9 Removed unused partial.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8652 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-15 18:31:37 +00:00
Jean-Philippe Lang
5f7995f977 Adds repository_id param for activity and search results (#779).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8651 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-15 18:30:52 +00:00
Jean-Philippe Lang
1bd5e58c84 Adds support for multiple repositories per project (#779).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8650 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-15 18:19:19 +00:00
Jean-Philippe Lang
d996cc0584 Restore scm rake task.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8649 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-15 14:23:38 +00:00
Jean-Philippe Lang
fb1a2fd7cd Resourcified repositories for CRUD operations to prepare for multiple SCM per project (#779).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8648 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-15 14:23:06 +00:00
Jean-Philippe Lang
6f462d373f Adds icons for css, html, java, js files in the repository browser.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8647 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-14 16:26:52 +00:00
Etienne Massip
54c0b531e1 Fixed double escaping of Atom feed links.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8646 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-14 16:08:51 +00:00
Jean-Philippe Lang
002081f224 Change attachment link to download and add a view link for text attachments (#4774).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8645 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-14 15:55:54 +00:00
Jean-Philippe Lang
18ea835739 Display "none" inside square brackets.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8644 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-14 09:55:49 +00:00
Jean-Philippe Lang
a6a627f445 Adds "Status" to the time report criteria (#9985).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8643 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-14 09:51:56 +00:00
Jean-Philippe Lang
dc7a0ebcf2 Removed email.yml reference in fa locale.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8641 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-14 09:39:04 +00:00
Jean-Philippe Lang
08bb5e0c0a Fixed wrong assertion.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8640 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-14 09:36:51 +00:00
Jean-Philippe Lang
51030fbe25 Removed assertion that depends on the order of returned records.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8639 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-13 21:22:45 +00:00
Jean-Philippe Lang
980b6db5c0 Adds "me" to user custom fields filters (#9923).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8638 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-13 19:38:06 +00:00
Jean-Philippe Lang
919d0a68c3 Adds "my projects" filter on the cross-project issue list.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8637 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-13 18:16:15 +00:00
Toshi MARUYAMA
1054237d82 add missing groups_users fixture to unit issue test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8636 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-11 14:03:29 +00:00
Toshi MARUYAMA
e545285ffe Bulgarian translation updated by Ivan Cenov (#9968)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8635 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-11 11:21:42 +00:00
Toshi MARUYAMA
41312d1a1d fix Japanese permission_*_issue_watchers (#9978)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8634 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-11 11:21:18 +00:00
Jean-Philippe Lang
3f33692cb3 Adds assertions to issue destroy tests.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8633 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-10 23:02:46 +00:00
Jean-Philippe Lang
3c75d6036f Fixed: Routing error when deleting an issue with spent time.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8632 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-10 22:58:14 +00:00
Jean-Philippe Lang
0bbbaa0dbd Removed hard-coded styles.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8631 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-10 18:24:12 +00:00
Jean-Philippe Lang
0367266f66 Use named routes.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8630 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-10 18:08:46 +00:00
Jean-Philippe Lang
9daa667d0a Adds total number of issues for each version on the roadmap.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8629 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-10 18:05:49 +00:00
Jean-Philippe Lang
8eef72aa1a Separated new/edit views for the timelog controller.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8628 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-10 17:35:09 +00:00
Toshi MARUYAMA
4fc8c11cc0 remove trailing white-spaces from config/locales/vi.yml
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8627 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-10 14:46:04 +00:00
Toshi MARUYAMA
a8b9f4d7e3 remove trailing white-spaces from config/locales/th.yml
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8626 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-10 14:45:40 +00:00
Toshi MARUYAMA
00c5ce3b12 remove trailing white-spaces from config/locales/sv.yml
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8625 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-10 14:45:01 +00:00
Toshi MARUYAMA
e817d20376 remove trailing white-spaces from config/locales/sr.yml
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8624 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-10 14:44:28 +00:00
Toshi MARUYAMA
38445c1e73 remove trailing white-spaces from config/locales/sr-YU.yml
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8623 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-10 14:43:56 +00:00
Toshi MARUYAMA
a08de7d629 remove trailing white-spaces from config/locales/nl.yml
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8622 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-10 14:43:16 +00:00
Toshi MARUYAMA
5409595e60 remove trailing white-spaces from config/locales/pl.yml
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8621 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-10 14:42:37 +00:00
Toshi MARUYAMA
7620a6d4af remove trailing white-spaces from config/locales/ro.yml
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8620 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-10 14:12:00 +00:00
Toshi MARUYAMA
73c26d830f remove trailing white-spaces from config/locales/sk.yml
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8619 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-10 14:11:36 +00:00
Toshi MARUYAMA
2f2c9800de remove trailing white-spaces from config/locales/id.yml
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8618 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-10 14:11:10 +00:00
Toshi MARUYAMA
a134f256ad remove trailing white-spaces from config/locales/ko.yml
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8617 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-10 12:48:43 +00:00
Toshi MARUYAMA
b4872624c9 remove trailing white-spaces from config/locales/lt.yml
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8616 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-10 12:48:19 +00:00
Toshi MARUYAMA
c9e0601ba3 remove trailing white-spaces from config/locales/lv.yml
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8615 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-10 12:47:55 +00:00
Toshi MARUYAMA
107d2fb59c remove trailing white-spaces from config/locales/mn.yml
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8614 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-10 11:18:30 +00:00
Toshi MARUYAMA
460bbd88de remove trailing white-spaces from config/locales/hr.yml
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8613 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-10 09:36:45 +00:00
Toshi MARUYAMA
c2ac58ad8a remove trailing white-spaces from config/locales/gl.yml
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8612 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-10 09:36:20 +00:00
Toshi MARUYAMA
f9b0cfb63e code layout clean up app/views/users/_memberships.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8611 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-10 08:43:32 +00:00
Toshi MARUYAMA
04df8dcb39 code layout clean up app/views/groups/_users.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8610 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-10 08:42:59 +00:00
Toshi MARUYAMA
ad47832960 code layout clean up app/views/groups/_memberships.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8609 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-10 08:42:26 +00:00
Toshi MARUYAMA
e5b2be3b3d remove trailing white-spaces from config/locales/fi.yml
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8606 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-10 08:07:51 +00:00
Toshi MARUYAMA
f6d7ff7168 remove trailing white-spaces from config/locales/fa.yml
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8605 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-10 08:07:19 +00:00
Toshi MARUYAMA
b0824ea5a4 code layout clean up app/views/issues/_relations.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8604 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-10 08:06:46 +00:00
Toshi MARUYAMA
35a5369473 code layout clean up app/views/issues/show.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8603 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-10 08:06:06 +00:00
Toshi MARUYAMA
e2e872dc72 code layout clean up app/views/projects/settings/_members.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8602 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-10 08:05:28 +00:00
Toshi MARUYAMA
413b0cc324 code layout clean up app/views/messages/show.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8601 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-10 08:04:57 +00:00
Toshi MARUYAMA
54b0b70737 remove trailing white-spaces from config/locales/uk.yml
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8600 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-10 07:01:47 +00:00
Toshi MARUYAMA
79314863cf fix Ukrainian "default_tracker_bug" (#9961)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8599 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-10 06:51:13 +00:00
Toshi MARUYAMA
f6f583a33a remove trailing white-spaces from config/locales/eu.yml
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8598 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-10 06:10:57 +00:00
Toshi MARUYAMA
4e5490ddef replace tabs to spaces at app/views/news/new.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8597 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-10 05:13:19 +00:00
Jean-Philippe Lang
c131a38d7c Do not call _before_save hook without saving.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8596 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-09 18:52:07 +00:00
Jean-Philippe Lang
919e686e93 Do not call _before_save hook without saving.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8595 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-09 18:51:40 +00:00
Jean-Philippe Lang
087186ef34 Check if width parameter is present.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8594 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-09 18:48:36 +00:00
Jean-Philippe Lang
c23e497c42 Avoid an AJAX query if the watchers form is already loaded.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8593 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-09 18:46:37 +00:00
Jean-Philippe Lang
1b1c510ff9 Ability to add non-member users as watchers (#5159).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8592 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-09 18:37:16 +00:00
Toshi MARUYAMA
c22f60271f recovery copyright statement in Arabic calendar JavaScript (#9943)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8589 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-09 14:52:49 +00:00
Toshi MARUYAMA
61acd53af4 fix Arabic JavaScript variable name (#9943)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8588 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-09 14:52:04 +00:00
Toshi MARUYAMA
602b245ad9 remove trailing white-spaces from config/locales/es.yml
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8587 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-09 13:48:57 +00:00
Toshi MARUYAMA
1022ca0574 remove trailing white-spaces from config/locales/en-GB.yml
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8586 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-09 13:48:13 +00:00
Toshi MARUYAMA
d27f6b754f remove trailing white-spaces from config/locales/el.yml
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8585 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-09 13:47:35 +00:00
Toshi MARUYAMA
528c7f4f30 remove trailing white-spaces from config/locales/de.yml
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8584 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-09 13:46:43 +00:00
Toshi MARUYAMA
40ec912caa remove trailing white-spaces from config/locales/da.yml
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8583 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-09 13:08:36 +00:00
Toshi MARUYAMA
9b6282c064 remove trailing white-spaces from config/locales/ar.yml
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8582 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-09 13:07:52 +00:00
Toshi MARUYAMA
857307cde8 remove trailing white-spaces from config/locales/cs.yml
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8581 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-09 12:52:57 +00:00
Toshi MARUYAMA
74d8ca531b remove trailing white-spaces from config/locales/ca.yml
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8580 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-09 12:52:10 +00:00
Toshi MARUYAMA
7550b091f1 remove trailing white-spaces from config/locales/bs.yml
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8579 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-09 12:51:22 +00:00
Toshi MARUYAMA
8829cafd59 fix failing month number test of Arabic (#9943)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8578 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-09 12:50:36 +00:00
Toshi MARUYAMA
a146d9e477 svn propset "svn:eol-style" native Vietnamese JavaScript files
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8577 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-09 10:19:23 +00:00
Toshi MARUYAMA
7c9fd45b50 svn propset "svn:eol-style" native Arabic translation files (#9943)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8576 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-09 10:15:56 +00:00
Toshi MARUYAMA
6c929d1a2d add missing keys for trunk to Arabic yaml (#9943)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8575 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-09 10:10:13 +00:00
Toshi MARUYAMA
1f8a86d07f add missing keys for 1.3-stable to Arabic yaml (#9943)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8574 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-09 10:09:48 +00:00
Toshi MARUYAMA
ce075327b3 fix Arabic JavaScript variable name (#9943)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8573 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-09 10:09:22 +00:00
Toshi MARUYAMA
abd7d82af7 change Arabic "general_lang_name" (#9943)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8572 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-09 10:08:57 +00:00
Toshi MARUYAMA
6063d71adf add Arabic translations (#9943)
Contributed by Ahmad AlTwaijiry.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8571 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-09 10:08:31 +00:00
Toshi MARUYAMA
5835648290 route: use ":controller" instead of ":as" for project_enumerations
Rails3 new route format needs this syntax.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8570 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-09 00:08:50 +00:00
Jean-Philippe Lang
417219bfc4 Fixed: error when displaying an issue with a query sorted by an association, eg. priority (#9936).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8569 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-08 18:21:00 +00:00
Jean-Philippe Lang
381319c4e8 Fixed that SCM selection is not saved when all SCM are disabled (#9937).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8568 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-08 18:03:37 +00:00
Jean-Philippe Lang
839daae8d0 Do not generate duplicate ids.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8567 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-08 17:40:27 +00:00
Jean-Philippe Lang
0960f5e4c6 Moved the div to a valid place.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8566 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-08 17:34:06 +00:00
Jean-Philippe Lang
c93f4723d0 Removed invalid div.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8565 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-08 17:31:58 +00:00
Jean-Philippe Lang
f56949af8b Do not add invalid label attribute to input tags.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8564 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-08 17:30:34 +00:00
Jean-Philippe Lang
d5a00cc29b Do not generate duplicate ids.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8563 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-08 17:20:08 +00:00
Jean-Philippe Lang
20f9c98de2 Form tag without action attribute is invalid.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8562 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-08 17:18:53 +00:00
Jean-Philippe Lang
32b91e685e Do not generate duplicate ids and fixes tag attribute.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8561 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-08 17:16:46 +00:00
Jean-Philippe Lang
f1b93601b5 Removes spaces in versions anchors.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8560 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-08 17:14:17 +00:00
Toshi MARUYAMA
3ed0c93857 route: remove redundant :path_prefix from time entries route scoped under project
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8559 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-08 16:04:09 +00:00
Toshi MARUYAMA
89b06fa75d test: route: add test for '/' path
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8558 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-08 13:59:14 +00:00
Jean-Philippe Lang
1fd824f0c1 Do not generate empty uls.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8557 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-08 13:08:06 +00:00
Jean-Philippe Lang
a66718239f Do not generate duplicate ids.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8556 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-08 13:06:19 +00:00
Jean-Philippe Lang
31149700cb Fixed labels tags referencing wrong ids.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8555 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-08 13:01:37 +00:00
Jean-Philippe Lang
906fcd290c Initialize watcher_user_ids for new records to prevent useless queries on each #watched_by?.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8554 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-08 12:26:57 +00:00
Jean-Philippe Lang
2a55d37619 Check project assignment on issue copy/move.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8553 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-08 11:48:36 +00:00
Jean-Philippe Lang
121bc44cc5 Use the regular issue form to copy a single issue.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8552 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-08 11:16:54 +00:00
Toshi MARUYAMA
f134eeef45 svn propset "svn:eol-style" native test/integration/routing/*.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8551 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-08 08:06:59 +00:00
Toshi MARUYAMA
6e290b7251 test: route: add issue_statuses test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8550 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-08 07:55:27 +00:00
Toshi MARUYAMA
b6c920a976 test: route: split documents test whether scoped under project or not
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8549 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-08 06:18:16 +00:00
Toshi MARUYAMA
917d42733a test: route: split issue categories test whether scoped under project or not
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8548 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-08 06:17:21 +00:00
Toshi MARUYAMA
c5f41baa94 test: route: split news tests
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8547 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-08 02:38:41 +00:00
Toshi MARUYAMA
03e10cbc8f route: move news after project scope
On Rails 3.0, news test passes.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8546 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-08 02:37:59 +00:00
Toshi MARUYAMA
b151e0eba9 test: route: add trackers test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8545 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-08 01:02:37 +00:00
Toshi MARUYAMA
df5551a4e5 test: route: simplify /issues/bulk_edit test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8544 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-08 00:41:44 +00:00
Toshi MARUYAMA
5e27e32dae replace tabs to spaces at public/stylesheets/scm.css
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8543 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-08 00:41:21 +00:00
Jean-Philippe Lang
f7e1ed71fc Typo.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8542 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-07 20:54:51 +00:00
Etienne Massip
48fecd6285 Prevent selection of line numbers when selecting file/code contents (#3382).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8541 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-07 19:05:13 +00:00
Etienne Massip
59789c7997 Moved Date months/weeks calculations used in Graph to lib.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8540 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-07 19:02:10 +00:00
Jean-Philippe Lang
1653735758 Deprecated Issue#move_to_project.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8539 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-07 18:02:02 +00:00
Jean-Philippe Lang
065376c160 Copy issues via bulk update action.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8538 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-07 17:27:47 +00:00
Jean-Philippe Lang
464cef8643 Removed the "Move" button for issues since they can be moved from the bulk edit form.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8537 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-07 16:26:12 +00:00
Jean-Philippe Lang
d29638845a Allows project to be changed from the bulk edit form.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8536 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-07 16:18:53 +00:00
Toshi MARUYAMA
dc8fcbaf03 test: route: add groups tests defined as resources
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8535 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-07 13:20:11 +00:00
Jean-Philippe Lang
c164211c3f Render projects as a tree in the project select field.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8534 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-07 12:57:13 +00:00
Jean-Philippe Lang
14267311aa Removed the "Move" button for single issue since it can be moved from the reguler update form.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8533 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-07 12:46:36 +00:00
Jean-Philippe Lang
6539d04622 Check permission before retrieving projects.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8532 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-07 12:39:26 +00:00
Jean-Philippe Lang
81cf6b2343 Allows project to be changed from the regular issue update action (#4769, #9803).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8531 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-07 12:34:52 +00:00
Toshi MARUYAMA
3dd97a87c6 test: route: add attachment delete method test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8530 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-07 08:16:22 +00:00
Toshi MARUYAMA
61f7d37a9d test: route: simplify test_issues_form_update
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8529 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-07 05:24:46 +00:00
Jean-Philippe Lang
bc3c151236 Makes /projects/:project_id/issues/new accept PUT requests for when serializing a form with a PUT _method hidden tag.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8528 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-06 21:01:35 +00:00
Jean-Philippe Lang
6d974eb018 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8527 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-06 20:46:45 +00:00
Jean-Philippe Lang
f3a2c8d7f7 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8526 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-06 20:34:42 +00:00
Jean-Philippe Lang
ca1958972e Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8525 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-06 20:06:25 +00:00
Jean-Philippe Lang
b3c678da87 Extracted some code from #move_to_project to a callback.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8524 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-06 19:50:02 +00:00
Jean-Philippe Lang
266521a1d3 Use #context_menu helper.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8523 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-06 17:37:32 +00:00
Toshi MARUYAMA
206c7eca78 remove duplicate "private" from MailHandler model
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8522 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-06 07:48:03 +00:00
Toshi MARUYAMA
16cb0ce1c9 remove redundant "email" parameter from MailHandler#create_user_from_email
"email" is defined as attr_reader.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8521 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-06 07:47:38 +00:00
Toshi MARUYAMA
f01dc24877 Rails3: replace deprecated Errors#on to Errors#[] at app/models/mail_handler.rb
On Rails2, Errors#[] returns single error if one error raises.
But, on Rails3, Errors#[] always returns the array.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8520 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-05 14:47:35 +00:00
Toshi MARUYAMA
d7856a4b74 remove trailing white-space from test/unit/mail_handler_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8519 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-05 14:47:11 +00:00
Toshi MARUYAMA
c3c1d4c7ec replace hard-coded Japanese literal to utf-8 hexadecimal at test/unit/mail_handler_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8518 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-05 14:46:37 +00:00
Toshi MARUYAMA
93a0daa383 test: route: repositories: add show, changes and annotate actions in revisions scope
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8517 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-05 10:17:15 +00:00
Toshi MARUYAMA
e97db2589d route: code layout clean up timelog route
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8516 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-05 08:03:53 +00:00
Toshi MARUYAMA
05e897896a test: route: add tests of timelogs report global scope format route and issues scope routes
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8515 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-05 08:03:06 +00:00
Toshi MARUYAMA
077ddfbea3 code layout clean up app/views/issues/index.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8514 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-05 08:02:19 +00:00
Toshi MARUYAMA
0bd651330b code layout clean up app/models/news.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8513 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-05 03:46:19 +00:00
Toshi MARUYAMA
a6a9670fe9 Spanish translation for trunk updated by Gonzalo Fernández-Victorio (#9922)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8510 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-05 01:22:39 +00:00
Toshi MARUYAMA
bca5808d59 Spanish "field_subject" translation changed by Gonzalo Fernández-Victorio (#9922)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8509 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-05 01:22:15 +00:00
Toshi MARUYAMA
022f1a2f79 Spanish translation for 1.3-stable updated by Gonzalo Fernández-Victorio (#9922)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8508 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-05 01:21:51 +00:00
Jean-Philippe Lang
a5ed9c7e2d Adds avatar on changeset view.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8507 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-04 18:41:50 +00:00
Jean-Philippe Lang
87b51d847c Fixed invalid html.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8506 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-04 18:34:38 +00:00
Jean-Philippe Lang
9b27e1cd83 Prevent empty table from being rendered.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8505 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-04 18:31:27 +00:00
Jean-Philippe Lang
091de63f30 Use explicit path name.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8504 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-04 18:24:28 +00:00
Jean-Philippe Lang
f7aa6d4198 Adjusts avatar position on headings.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8503 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-04 18:20:29 +00:00
Jean-Philippe Lang
fd07cb8c54 Moved the avatar to the left on the issue view.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8502 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-04 18:12:34 +00:00
Toshi MARUYAMA
50a2a1321d code layout clean up app/views/messages/edit.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8501 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-04 12:55:07 +00:00
Toshi MARUYAMA
f25aa90490 Rails3: view: use explicit post method at messages/edit.html.erb
On Rails3, form_for generates hidden "put" input tag.
So, 'No route matches "/boards/1/topics/1/edit"' error raises.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8500 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-04 12:54:24 +00:00
Toshi MARUYAMA
8d9dcfa39b route: fix messages quote action method defined at r8162
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8499 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-04 12:38:20 +00:00
Toshi MARUYAMA
cda307dfd2 Rails3: test: route: add private method to convert path parameter at repositories test
On Rails3, route returns "path/to/file.c" as :path parameter

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8498 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-04 10:01:19 +00:00
Toshi MARUYAMA
6e17b5dccf route: simplify repositories route
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8497 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-04 08:51:00 +00:00
Toshi MARUYAMA
5636228f79 test: route: simplify repositories test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8496 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-04 08:50:36 +00:00
Toshi MARUYAMA
1812e68198 Rails3: view: change html special characters to hexadecimal utf-8 strings at issues/show.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8495 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-04 08:09:20 +00:00
Toshi MARUYAMA
25477e452c Rails3: view: html_safe for repositories/_revision_graph.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8494 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-04 08:08:43 +00:00
Toshi MARUYAMA
4786706591 use i18n label for previous and next issue (#2850)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8493 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-04 05:50:10 +00:00
Toshi MARUYAMA
27731d637f fix code indents application.css div.flash.warning
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8492 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-04 02:13:38 +00:00
Toshi MARUYAMA
9073a70b27 fix code indents application.css @media print
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8491 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-04 02:12:52 +00:00
Jean-Philippe Lang
86a52eaedf Makes .find_ids return integers.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8490 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-03 21:35:00 +00:00
Jean-Philippe Lang
ce45b03732 Set columns width on issue attributes table.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8489 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-03 20:49:50 +00:00
Jean-Philippe Lang
b1504ceb43 Adds previous/next links to issue (#2850).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8488 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-03 20:09:44 +00:00
Jean-Philippe Lang
bbe1ff3ec9 Faster query.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8487 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-03 18:10:03 +00:00
Jean-Philippe Lang
818988c419 Removed ApplicationControllerTest.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8486 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-03 17:51:09 +00:00
Jean-Philippe Lang
610a92c4d1 Moved test from ApplicationControllerTest.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8485 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-03 17:48:18 +00:00
Toshi MARUYAMA
3d562490d8 code layout clean up app/views/wiki/rename.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8484 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-03 12:09:34 +00:00
Toshi MARUYAMA
27828590d1 Rails3: view: use explicit post method at wiki/rename.html.erb
On Rails3, form_for generates hidden "put" input tag.
So, 'No route matches "/projects/id/wiki/wikiname/rename"' error raises.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8483 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-03 12:08:54 +00:00
Toshi MARUYAMA
bddd2a740d Rails3: view: use explicit post method at projects/settings/_modules.html.erb
On Rails3, form_for generates hidden "put" input tag.
So, 'No route matches "/projects/id/modules"' error raises.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8482 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-03 10:48:40 +00:00
Toshi MARUYAMA
737655cebc Rails3: view: use explicit post method at my/account.html.erb
On Rails3, form_for generates hidden "put" input tag.
So, 'No route matches "/my/account"' error raises.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8481 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-03 10:13:00 +00:00
Toshi MARUYAMA
4cc2731996 code layout clean up app/views/wiki/index.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8480 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-03 06:24:43 +00:00
Jean-Philippe Lang
d5030c8b81 View cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8479 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-02 22:53:39 +00:00
Jean-Philippe Lang
6b5f75bb1d Test cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8478 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-02 20:09:53 +00:00
Jean-Philippe Lang
131f258f5f Test cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8477 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-02 19:59:52 +00:00
Jean-Philippe Lang
395fe0d777 Test cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8476 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-02 19:49:51 +00:00
Jean-Philippe Lang
606ca39d10 Test cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8475 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-02 19:44:37 +00:00
Jean-Philippe Lang
bbba385198 Missing html_safe.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8474 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-02 17:40:03 +00:00
Jean-Philippe Lang
f488ee8b0a Missing html_safe.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8473 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-02 15:39:38 +00:00
Toshi MARUYAMA
65959100f4 code layout cleanup app/views/repositories/_navigation.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8472 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-02 14:41:02 +00:00
Toshi MARUYAMA
888f9fd5e1 route: code layout clean up repositories route
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8471 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-02 13:26:00 +00:00
Toshi MARUYAMA
a9f25961af route: code layout clean up repositories route
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8470 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-02 12:13:32 +00:00
Toshi MARUYAMA
313bfa5408 test: replace should "include the emails_header" at unit mailer test to Rails standard test suite
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8469 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-02 11:38:29 +00:00
Toshi MARUYAMA
2ab7dba964 Rails3: model: mailer: use .to_s at redmine_headers method
On Rails 3.0:
<pre>
DEPRECATION WARNING: Using a non-String object for a header's value is deprecated.
You specified 15 (a Fixnum) for X-Redmine-Issue-Id.
</pre>

On Rails 3.1.3:
<pre>
Error:
test_message_posted_message_id(MailerTest):
NoMethodError: undefined method `index' for 1:Fixnum
    test/unit/mailer_test.rb:226:in `test_message_posted_message_id'
</pre>

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8468 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-02 09:35:50 +00:00
Toshi MARUYAMA
1b61fbf739 Rails3.1: test: include ERB::Util in unit/helpers/search_helper_test.rb
undefined method `h' error raises on Rails 3.1.3 and Ruby 1.8.7.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8467 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-02 09:07:57 +00:00
Toshi MARUYAMA
e7de511bbc svn propset "svn:eol-style" native test/functional/auth_sources_controller_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8466 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-01 22:18:25 +00:00
Jean-Philippe Lang
be5169249a Test cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8465 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-01 21:09:33 +00:00
Jean-Philippe Lang
8364f86af1 Give explicit url option.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8464 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-01 20:25:33 +00:00
Jean-Philippe Lang
53d5ff299a Test cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8463 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-01 20:02:39 +00:00
Jean-Philippe Lang
13dca2fd3d Test cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8462 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-01 19:57:30 +00:00
Jean-Philippe Lang
84f8245abb Test cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8461 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-01 19:50:51 +00:00
Jean-Philippe Lang
ed1320f3c9 Use #scoped instead of .with_scope
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8460 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-01 18:23:45 +00:00
Jean-Philippe Lang
1f6764e2af Rails3 compat.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8459 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-01 17:58:14 +00:00
Jean-Philippe Lang
cd256fe89f Order is already defined on attachments association.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8458 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-01 17:35:34 +00:00
Jean-Philippe Lang
d84660c823 Use Errors#count instead of #length.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8457 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-01 17:23:12 +00:00
Toshi MARUYAMA
979a4ecb22 Rails3: helper: html_safe for SearchHelper render_results_by_type method
Contributed by Sylvain Utard.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8456 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-01 13:45:30 +00:00
Toshi MARUYAMA
c86cb730f1 Rails3: helper: html_safe for SearchHelper highlight_tokens method
Contributed by Sylvain Utard.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8455 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-01 13:44:35 +00:00
Toshi MARUYAMA
b67353fdb5 Rails3: helper: html_safe for IssuesHelper render_issue_tooltip method
Contributed by Sylvain Utard.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8454 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-01 11:45:18 +00:00
Toshi MARUYAMA
56ca36ede1 Rails3: view: html_safe for wiki/show.html.erb
Contributed by Sylvain Utard.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8453 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-01 11:44:32 +00:00
Toshi MARUYAMA
29edbd605b Rails3: view: html_safe for my/page_layout.html.erb
Contributed by Sylvain Utard.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8452 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-01 09:51:30 +00:00
Toshi MARUYAMA
2b2eeb0192 Rails3: helper: html_safe for JournalsHelper render_notes method
Contributed by Sernin van de Krol.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8451 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-01 06:39:35 +00:00
Toshi MARUYAMA
48fae14403 Rails3: view: html_safe for timelog/report.html.erb
Contributed by Eric Cline.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8450 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-01 06:11:46 +00:00
Toshi MARUYAMA
09e4fd0500 Rails3: view: html_safe for timelog/_report_criteria.html.erb
Contributed by Eric Cline.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8449 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-01 06:11:01 +00:00
Toshi MARUYAMA
5340a48253 Rails3: view: html_safe for issue_moves/new.html.erb
Contributed by Eric Cline.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8448 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-01 05:52:26 +00:00
Toshi MARUYAMA
0fe8a4248d Rails3: view: html_safe for issues/bulk_edit.html.erb
Contributed by Eric Cline.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8447 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-01-01 04:45:49 +00:00
Toshi MARUYAMA
25ead5fd42 route: move time entries matchings and resources after /issues matchings
Time log tests pass except /time_entries delete action on Rails 3.0.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8446 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-31 06:19:12 +00:00
Toshi MARUYAMA
d17b4c8e4f test: route: split wiki tests
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8445 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-31 05:08:54 +00:00
Toshi MARUYAMA
ab60ce54f5 test: route: split roadmap test in versions test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8444 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-31 02:51:41 +00:00
Toshi MARUYAMA
e5cc53c19c route: move queries resources after projects resources
This change passes queries test on Rails 3.0.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8443 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-30 23:53:29 +00:00
Toshi MARUYAMA
dd769d2af8 route: change order users resources and matchings
This changes pass users tests on Rails 3.0.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8442 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-30 16:08:42 +00:00
Toshi MARUYAMA
561f7090c8 route: change order of some issues and projects resources and matchings
This change passes issues and projects routing tests on Rails 3.0.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8441 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-30 14:55:05 +00:00
Toshi MARUYAMA
dbc78746d2 route: move 'issues/new' matching before project/issues resources
On Rails3.0, 'match' needs before resources.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8440 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-30 12:53:15 +00:00
Toshi MARUYAMA
5127f3dcbc route: move attachments resources after matching
On Rails3.0, 'match' needs before resources.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8439 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-30 12:52:08 +00:00
Toshi MARUYAMA
49ceb577ec route: code layout clean up versions resources
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8438 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-30 10:10:02 +00:00
Toshi MARUYAMA
1a8338dbaf test: route: rearrange issues tests for each scopes
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8437 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-30 10:09:04 +00:00
Toshi MARUYAMA
11946ecd87 test: route: split versions tests whether scoped under project or not
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8436 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-30 10:07:56 +00:00
Toshi MARUYAMA
96de4a0822 route: code layout clean up project_enumerations route
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8435 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-30 05:15:18 +00:00
Toshi MARUYAMA
ff3230bd9a route: code layout clean up issues bulk deletion route
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8434 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-30 05:14:51 +00:00
Toshi MARUYAMA
9835f4b800 test: route: split issues rest actions tests whether scoped under project or not
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8433 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-30 05:14:25 +00:00
Toshi MARUYAMA
1b252d68f3 test: route: split news tests whether scoped under project or not
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8432 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-30 05:14:01 +00:00
Toshi MARUYAMA
ba44548332 route: code layout clean up issues resources
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8431 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-30 02:17:47 +00:00
Toshi MARUYAMA
5b71790843 route: code layout clean up issue_moves route
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8430 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-30 02:17:23 +00:00
Toshi MARUYAMA
f00c851fc5 route: code layout clean up issues context menu route
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8429 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-30 02:16:53 +00:00
Toshi MARUYAMA
510647e864 route: code layout clean up previews route
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8428 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-30 02:16:22 +00:00
Toshi MARUYAMA
f099ddb301 route: code layout clean up auto_completes route
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8427 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-30 02:15:40 +00:00
Toshi MARUYAMA
1951cbd236 test: route: add time entries context menus test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8426 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-30 02:15:04 +00:00
Toshi MARUYAMA
23c4ceca9d route: remove unused roles/workflow route
This controller action  was removed at r1914.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8425 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-29 21:51:50 +00:00
Toshi MARUYAMA
2e1601cf27 test: route: split queries tests
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8424 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-29 21:51:20 +00:00
Toshi MARUYAMA
e754883df2 route: code layout clean up bulk edit time logs
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8423 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-29 11:56:36 +00:00
Toshi MARUYAMA
4ac7e94ad7 test: route: add bulk edit time logs tests
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8422 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-29 11:55:51 +00:00
Toshi MARUYAMA
50848da16c replace tabs to spaces at application.css
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8421 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-29 11:55:01 +00:00
Jean-Philippe Lang
eca7bab6fe Tabs style update.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8420 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-29 08:59:00 +00:00
Toshi MARUYAMA
77c08c8d5d route: code layout clean up new issues route
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8419 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-29 08:36:45 +00:00
Toshi MARUYAMA
037ccaf46d route: code layout clean up wikis route
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8418 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-29 08:36:19 +00:00
Toshi MARUYAMA
6c3987bbe6 route: simplify project settings and issues copy route
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8417 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-29 08:05:17 +00:00
Toshi MARUYAMA
f2b8672f08 route: code layout clean up activities route
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8416 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-29 08:04:43 +00:00
Toshi MARUYAMA
c4c4931c6b route: code layout clean up welcome route
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8415 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-29 08:04:00 +00:00
Toshi MARUYAMA
fac50f1143 Traditional Chinese translation updated by ChunChang Lo (#9882)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8414 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-27 22:49:09 +00:00
Toshi MARUYAMA
2be616b931 route: code layout clean up settings route
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8413 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-27 13:50:12 +00:00
Toshi MARUYAMA
02c7772cd0 route: code layout clean up workflows route
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8412 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-27 13:49:45 +00:00
Toshi MARUYAMA
aac01fbf22 route: code layout clean up ldap_auth_sources route
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8411 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-27 13:49:12 +00:00
Toshi MARUYAMA
d6378fe395 svn propset 'svn:eol-style' native test/integration/routing/*.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8410 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-27 13:38:07 +00:00
Toshi MARUYAMA
0b83c7cb98 test: route: add ldap_auth_sources test defined at r8162
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8409 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-27 13:29:21 +00:00
Toshi MARUYAMA
3e42f2685d route: code layout clean up auth_sources route
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8408 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-27 12:49:52 +00:00
Toshi MARUYAMA
0d630a3937 test: route: add auth_sources test defined at r8162
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8407 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-27 12:49:29 +00:00
Toshi MARUYAMA
45a492df2b test: route: add settings test defined at r8162
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8406 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-27 12:12:53 +00:00
Toshi MARUYAMA
02cf2b3826 test: route: add workflows test defined at r8162
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8405 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-27 12:12:29 +00:00
Toshi MARUYAMA
6178780a3d test: route: split repository route test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8404 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-27 12:11:51 +00:00
Toshi MARUYAMA
ac51ab12f0 route: code layout clean up repository route
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8403 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-27 11:08:22 +00:00
Toshi MARUYAMA
50d320a35e route: code layout clean up admin route
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8402 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-27 10:05:29 +00:00
Toshi MARUYAMA
d9425b8229 test: route: add admin tests defined at r8162
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8401 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-27 10:05:02 +00:00
Toshi MARUYAMA
984c7da785 route: code layout clean up mail_handler route
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8400 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-27 10:04:37 +00:00
Toshi MARUYAMA
e70f5ac581 test: route: add mail_handler test defined at r8162
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8399 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-27 10:04:09 +00:00
Toshi MARUYAMA
49c20b03cc Japanese translation updated by Go MAEDA (#9876)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8398 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-27 08:00:51 +00:00
Toshi MARUYAMA
46ba995341 route: code layout clean up sys route
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8397 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-27 03:00:48 +00:00
Toshi MARUYAMA
e3742a9ed5 test: route: add sys test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8396 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-27 03:00:27 +00:00
Toshi MARUYAMA
79da00dc40 route: code layout clean up watchers route
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8395 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-27 01:57:54 +00:00
Toshi MARUYAMA
e015a4a527 test: route: add watchers test defined at r8162
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8394 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-27 01:57:23 +00:00
Toshi MARUYAMA
15ab1d2628 test: route: add search test defined at r8162
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8393 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-27 01:56:53 +00:00
Toshi MARUYAMA
040d00ffae pt-BR translation updated by Enderson Maia (#9874)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8391 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-26 23:26:03 +00:00
Jean-Philippe Lang
38843eb7aa Missing html_safe.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8390 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-26 22:26:27 +00:00
Jean-Philippe Lang
eb931d4998 Missing html_safe.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8389 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-26 16:58:17 +00:00
Jean-Philippe Lang
852dee37ec Do not add errors on attributes on fake attributes.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8388 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-26 13:34:50 +00:00
Toshi MARUYAMA
a76045d792 route: code layout clean up users route
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8387 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-26 13:08:52 +00:00
Jean-Philippe Lang
4f9f68046c Makes assertion Rails3 compatible.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8386 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-26 12:42:36 +00:00
Jean-Philippe Lang
0c2e4a72ca Do assertions on collection, not on association.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8385 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-26 12:37:24 +00:00
Jean-Philippe Lang
bd42536d31 Missing fixtures.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8384 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-26 12:35:25 +00:00
Jean-Philippe Lang
a03432cbe6 Rails3 compatibility.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8383 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-26 12:22:03 +00:00
Jean-Philippe Lang
b20598d755 Use :joins instead of :include in calculations.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8382 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-26 12:07:07 +00:00
Toshi MARUYAMA
f8cb06bff2 route: code layout clean up groups route
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8381 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-26 11:48:47 +00:00
Toshi MARUYAMA
0d2b35dbb4 test: route: add groups tests defined at r8162
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8380 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-26 11:48:06 +00:00
Toshi MARUYAMA
adf8d0144e route: code layout clean up comments route
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8379 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-26 11:47:23 +00:00
Toshi MARUYAMA
adfb4f4b4c route: code layout clean up attachments route
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8378 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-26 10:06:18 +00:00
Toshi MARUYAMA
78904346ca route: code layout clean up members route
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8377 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-26 08:01:42 +00:00
Toshi MARUYAMA
748410c876 test: route: add members tests defined at r8162
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8376 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-26 08:01:10 +00:00
Toshi MARUYAMA
f581ea0aa6 test: route: add journals tests defined at r8162
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8375 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-26 08:00:28 +00:00
Toshi MARUYAMA
bca1d2b93f test: route: add messages tests defined at r8162
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8374 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-26 07:59:43 +00:00
Toshi MARUYAMA
7785ad191a route: code layout clean up journals route
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8373 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-26 07:17:46 +00:00
Toshi MARUYAMA
08df9335f8 test: route: simplify wikis tests
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8372 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-26 07:17:12 +00:00
Toshi MARUYAMA
a84baf92e7 test: route: simplify roles tests
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8371 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-26 05:54:12 +00:00
Toshi MARUYAMA
431e98c999 test: route: simplify previews tests
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8370 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-26 05:53:49 +00:00
Toshi MARUYAMA
ecd2b75ba4 test: route: simplify context_menus tests
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8369 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-26 05:53:26 +00:00
Toshi MARUYAMA
f655fe35a7 route: code layout clean up 'my' route
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8368 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-26 05:53:01 +00:00
Toshi MARUYAMA
14760e7a5b set "svn:eol-style" native to test/integration/routing/*.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8367 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-25 12:54:47 +00:00
Toshi MARUYAMA
27dee8eff4 test: route: simplify "my" tests
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8366 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-25 12:48:29 +00:00
Toshi MARUYAMA
3ae98e0b8d test: route: simplify account tests
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8365 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-25 12:35:22 +00:00
Toshi MARUYAMA
b01c02c5b8 route: code layout clean up account route
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8364 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-25 12:34:52 +00:00
Toshi MARUYAMA
2d7b57809d test: route: move wikis test to new file
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8363 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-25 10:18:35 +00:00
Toshi MARUYAMA
a33b51eeee test: route: move wiki test to new file
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8362 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-25 10:18:12 +00:00
Toshi MARUYAMA
720e97c2f8 test: route: move queries test to new file
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8361 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-25 10:17:48 +00:00
Toshi MARUYAMA
0bfdf7d5b7 test: route: move projects test to new file
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8360 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-25 10:17:23 +00:00
Toshi MARUYAMA
73123df4be test: route: move project_enumerations test in project test to new file
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8359 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-25 08:28:40 +00:00
Toshi MARUYAMA
39aabb2b4b test: route: move news test to new file
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8358 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-25 02:04:35 +00:00
Toshi MARUYAMA
79c0b8bade test: route: move comments tests in news test to new file
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8357 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-25 02:04:11 +00:00
Toshi MARUYAMA
216ffa05bc test: route: move issue_categories test to new file
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8356 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-25 02:03:40 +00:00
Toshi MARUYAMA
e48d90a294 test: route: move issues tests to new file
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8355 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-25 01:13:43 +00:00
Toshi MARUYAMA
2fc1a83e6f test: route: move previews test in news test to routing/previews_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8354 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-25 01:03:06 +00:00
Toshi MARUYAMA
86ba999486 test: route: move context_menus test in test_issues_extra_actions to new file
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8353 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-24 22:50:19 +00:00
Toshi MARUYAMA
3995ead92b test: route: move previews test in test_issues_extra_actions to new file
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8352 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-24 22:49:56 +00:00
Toshi MARUYAMA
4b8ceb51e2 test: route: move versions test in projects test to routing/versions_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8351 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-24 13:03:14 +00:00
Toshi MARUYAMA
cf2ad74ec7 test: route: move welcome test to new file
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8350 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-24 12:13:17 +00:00
Toshi MARUYAMA
6d3bbd4933 test: route: move users tests to new file
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8349 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-24 10:57:45 +00:00
Toshi MARUYAMA
213978161b test: route: move roles tests to new file
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8348 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-24 10:57:21 +00:00
Toshi MARUYAMA
b19ea60b97 test: route: move auto_completes tests in test_issues_extra_actions to new file
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8347 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-24 10:13:27 +00:00
Toshi MARUYAMA
79d227d34e test: route: move activities test in projects test to integration/routing/activities_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8346 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-24 10:12:53 +00:00
Jean-Philippe Lang
20ead6d8f7 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8345 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-24 09:53:10 +00:00
Jean-Philippe Lang
8f23043851 Dup attributes instead of issue object.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8344 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-24 09:51:26 +00:00
Toshi MARUYAMA
bc7ed1e156 test: route: move timelogs tests to new file
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8343 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-24 04:13:38 +00:00
Toshi MARUYAMA
904ec537b2 test: route: move members test to new file
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8342 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-24 04:13:14 +00:00
Toshi MARUYAMA
ed933a28da test: route: move gantts test in test_issues_extra_actions to new file
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8341 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-24 04:12:50 +00:00
Toshi MARUYAMA
c7d96d1441 test: route: move repositories test to new file
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8340 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-24 04:12:25 +00:00
Toshi MARUYAMA
ceaaf6d3a2 test: route: move versions test to new file
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8339 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-24 04:12:00 +00:00
Toshi MARUYAMA
1a626bcacd test: route: move files test in project to new file
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8338 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-24 04:11:32 +00:00
Toshi MARUYAMA
b6d6f5e382 test: route: move reports test to new file
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8337 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-24 01:41:43 +00:00
Toshi MARUYAMA
dedbff3653 test: route: move issue_relations test to new file
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8336 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-24 01:41:17 +00:00
Toshi MARUYAMA
e9ec49a705 test: route: move remaining calendars test in test_issues_extra_actions to routing/calendars_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8335 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-24 01:40:30 +00:00
Toshi MARUYAMA
f37ee781fb test: route: move calendars test in test_issues_extra_actions to new file
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8334 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-24 01:05:48 +00:00
Toshi MARUYAMA
dd312d294a test: route: move journals test in test_issues_extra_actions to new file
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8333 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-24 01:05:09 +00:00
Toshi MARUYAMA
bb7854923d test: route: add 'my' test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8332 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-24 01:04:26 +00:00
Toshi MARUYAMA
b5dd07781c set "svn:eol-style" native to lib/tasks/testing.rake
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8331 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-24 00:05:29 +00:00
Toshi MARUYAMA
ff1418e2d3 add new rake task "test:rdm_routing" to run test/integration/routing/*_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8330 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-24 00:00:56 +00:00
Toshi MARUYAMA
23bafda164 test: route: move issue_moves test in test_issues_extra_actions to new file
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8329 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-23 23:08:04 +00:00
Toshi MARUYAMA
f6a9cf4326 test: route: move groups test to new file
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8328 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-23 23:07:40 +00:00
Toshi MARUYAMA
fbf323bf51 test: route: move enumerations test to new file
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8327 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-23 23:07:17 +00:00
Toshi MARUYAMA
c18d24434a test: route: add account test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8326 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-23 23:06:52 +00:00
Toshi MARUYAMA
50b6ab9de2 test: route: fix duplicate "test_roles"
This is introduced by r8189 and r8230 in trunk.
So, this is not effect in 1.3-stable.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8325 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-23 12:19:54 +00:00
Toshi MARUYAMA
e5275453db test: route: move documents test to new file
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8324 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-23 11:18:12 +00:00
Toshi MARUYAMA
413d98ca43 test: route: move messages test to new file
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8323 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-23 10:56:22 +00:00
Toshi MARUYAMA
260bc487aa code layout clean up test/integration/api_test/users_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8322 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-23 10:08:28 +00:00
Toshi MARUYAMA
df2d2f3cf7 test: route: move custom_fields test to new file
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8321 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-23 10:08:05 +00:00
Toshi MARUYAMA
a8186713ba test: route: move boards test to new file
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8320 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-23 10:07:39 +00:00
Toshi MARUYAMA
40eb962166 test: route: move admin test to new file
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8319 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-23 08:11:29 +00:00
Toshi MARUYAMA
4df7460ce6 test: route: move attachments test to new file
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8318 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-23 08:11:05 +00:00
Toshi MARUYAMA
3153897fde test: route: move activities test to new file
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8317 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-23 08:10:42 +00:00
Toshi MARUYAMA
3fbbd6bc50 fix filename of test/unit/lib/redmine/wiki_formatting.rb
"rake test:units" runs following command

<pre>
"rake test:units" runs '/usr/bin/ruby -I"lib:test"
  -I"/usr/lib/ruby/gems/1.8/gems/rake-0.9.0/lib"
  "/usr/lib/ruby/gems/1.8/gems/rake-0.9.0/lib/rake/rake_test_loader.rb"
  "test/unit/**/*_test.rb"'
</pre>

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8316 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-23 03:53:35 +00:00
Toshi MARUYAMA
d10028ec06 route: remove unused 'help'
help controller was removed at r835.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8315 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-23 03:25:49 +00:00
Toshi MARUYAMA
6c7ead508f test: include ERB::Util at test/unit/lib/redmine/helpers/gantt_test.rb
On Rails 3.1, undefined method `h' error raises.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8314 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-22 11:05:23 +00:00
Toshi MARUYAMA
4ee2193112 test: include ERB::Util at test/unit/helpers/issues_helper_test.rb
On Rails 3.1, undefined method `h' error raises.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8313 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-22 11:04:25 +00:00
Toshi MARUYAMA
28d2896f90 Rails3: view: html_safe for issues/destroy.html.erb
Contributed by Eric Cline.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8312 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-22 06:51:42 +00:00
Toshi MARUYAMA
fddfd4b413 route: news: replace unused alias "all_news" and "formatted_all_news"
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8311 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-22 02:50:46 +00:00
Toshi MARUYAMA
e2b36d1c8a Rails3: route: split boards topics edit and destroy
Rails2 legacy route on Rails 3.0 does not support this syntax.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8310 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-22 00:45:26 +00:00
Toshi MARUYAMA
ab1137159f Rails3: helper: html_safe for WatchersHelper
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8309 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-21 16:47:42 +00:00
Toshi MARUYAMA
0d5df3a73e Rails3: view: html_safe for timelog/bulk_edit.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8308 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-21 13:42:19 +00:00
Toshi MARUYAMA
576d333c2c Rails3: view: html_safe for common/_calendar.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8307 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-21 03:40:06 +00:00
Toshi MARUYAMA
427aca9f90 fix parsing zh-TW.yml error with psych library on Ruby 1.9
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8306 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-21 03:39:43 +00:00
Toshi MARUYAMA
16365b5ce9 fix parsing en.yml error with psych library on Ruby 1.9
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8305 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-21 03:39:11 +00:00
Toshi MARUYAMA
d249989257 Rails3: rename sample_plugin .rhtml to .html.erb (#6317, #4796)
:rhtml and :rxml were finally removed as template handlers at Rails 3.1 RC4.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8304 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-20 08:32:30 +00:00
Toshi MARUYAMA
cb4abb115d remove trailing white-spaces from public/htaccess.fcgi.example
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8303 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-20 07:17:35 +00:00
Toshi MARUYAMA
87fd636313 add newline at end of public/dispatch.rb.example
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8302 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-20 07:13:45 +00:00
Toshi MARUYAMA
182932560a add newline at end of public/dispatch.cgi.example
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8301 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-20 07:13:21 +00:00
Toshi MARUYAMA
647e91059d set property svn:eol-style native at public/htaccess.fcgi.example
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8300 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-20 06:44:03 +00:00
Toshi MARUYAMA
7d46c43884 change new line 'CRLF' to 'LF' at public/htaccess.fcgi.example
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8299 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-20 06:38:33 +00:00
Toshi MARUYAMA
5293ba2323 add newline at end of public/htaccess.fcgi.example
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8298 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-20 06:16:05 +00:00
Toshi MARUYAMA
9518cea3dd remove svn property "eol-style native" from public/htaccess.fcgi.example
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8297 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-20 06:09:50 +00:00
Toshi MARUYAMA
16e8818d9e remove trailing white-spaces from app/models/user.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8296 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-19 04:41:13 +00:00
Jean-Philippe Lang
3ce595b806 Use fixtures generator.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8295 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-18 17:00:15 +00:00
Jean-Philippe Lang
aec1828fc7 Use fixtures generator.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8294 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-18 16:48:25 +00:00
Jean-Philippe Lang
f5987a5ca0 Use validation callback.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8293 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-18 15:48:06 +00:00
Jean-Philippe Lang
14ea087edc Removed unused scope.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8292 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-18 15:04:34 +00:00
Jean-Philippe Lang
b7ceb3c333 Removed unused scope.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8291 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-18 15:04:08 +00:00
Jean-Philippe Lang
b8ce888d98 Use scoped method instead of merge_conditions.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8290 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-18 15:02:46 +00:00
Jean-Philippe Lang
e75549cc8e Removed useless after_initialize callback.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8289 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-18 14:58:27 +00:00
Jean-Philippe Lang
9e83ee2ddf Removed after_initialize methods.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8288 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-18 14:57:58 +00:00
Jean-Philippe Lang
062fbeae80 Makes models #initialize accept additional arguments.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8287 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-18 13:26:20 +00:00
Jean-Philippe Lang
5eed64b848 human_attribute_name accepts optional argument.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8286 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-18 13:20:19 +00:00
Jean-Philippe Lang
2a0257e8af Use open scope in version issues count methods.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8285 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-18 13:05:46 +00:00
Jean-Philippe Lang
76ad136b2a #new is just fine.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8284 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-18 12:30:00 +00:00
Jean-Philippe Lang
f29b57088a html_safe for Rails3
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8283 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-18 12:26:28 +00:00
Jean-Philippe Lang
8a563e8f57 #new is just fine.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8282 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-18 10:43:32 +00:00
Jean-Philippe Lang
a79357bc28 Make sure setting is not changed in test.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8281 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-18 10:41:45 +00:00
Jean-Philippe Lang
b549523e4b Test cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8280 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-18 10:14:14 +00:00
Jean-Philippe Lang
914f9b603e Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8279 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-18 09:48:37 +00:00
Jean-Philippe Lang
aadf6da468 Get rid of HelperTestcase.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8278 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-18 09:40:19 +00:00
Jean-Philippe Lang
eed1a5dfbd Makes tests inherit from ActionView::TestCase.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8277 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-18 08:41:17 +00:00
Jean-Philippe Lang
cf5dba2beb Check that controller and request methods are available.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8276 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-18 08:40:04 +00:00
Jean-Philippe Lang
3717ff34af Rails3.1 compatibility
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8275 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-18 08:21:29 +00:00
Toshi MARUYAMA
2cf2f4964c test: replace "should_route" of "versions" to "assert_routing" at integration/routing_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8274 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-18 08:13:19 +00:00
Toshi MARUYAMA
08c4b22988 test: replace "should_route" of "issue categories" to "assert_routing" at integration/routing_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8273 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-18 08:12:40 +00:00
Toshi MARUYAMA
97efee2f08 Bulgarian translation updated by Ivan Cenov (#9831)
Translated:
* notice_failed_to_save_time_entries

Changed:
* notice_unable_delete_time_entry

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8272 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-18 00:50:43 +00:00
Jean-Philippe Lang
7fdb74530c html_safe for Rails3
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8271 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-17 22:15:36 +00:00
Jean-Philippe Lang
b59d092e91 html_safe for Rails3
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8270 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-17 22:05:29 +00:00
Jean-Philippe Lang
8269e9a990 html_safe for Rails3
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8269 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-17 22:02:31 +00:00
Jean-Philippe Lang
a42ea3ccbb html_safe for Rails3
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8268 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-17 21:48:26 +00:00
Jean-Philippe Lang
8677f069ec html_safe for Rails3
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8267 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-17 21:46:39 +00:00
Jean-Philippe Lang
bb0cd34f4e Additional tests for SearchController and handle my_projects scope without memberships.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8266 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-17 18:23:53 +00:00
Jean-Philippe Lang
199eaff14e Additional tests for QueriesController.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8265 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-17 17:54:52 +00:00
Jean-Philippe Lang
92e4708ee3 Additional tests for DocumentsController.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8264 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-17 17:47:27 +00:00
Jean-Philippe Lang
b4af45537a Additional tests for TimelogController and added missing i18n string.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8263 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-17 15:25:15 +00:00
Jean-Philippe Lang
849463558d Additional tests for WikiController.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8262 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-17 15:02:28 +00:00
Toshi MARUYAMA
606c5f3093 test: replace "should_route" of "news" to "assert_routing" at integration/routing_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8261 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-17 14:49:05 +00:00
Toshi MARUYAMA
06c8bbd342 test: replace "should_route" of "queries" to "assert_routing" at integration/routing_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8260 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-17 14:06:27 +00:00
Toshi MARUYAMA
a59e857d51 test: replace "should_route" of "timelogs (scoped under project and issues)" to "assert_routing" at integration/routing_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8259 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-17 13:12:27 +00:00
Jean-Philippe Lang
6147a29a68 Set bottom margin for ul, ol in formatted text (#9793).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8258 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-17 12:13:57 +00:00
Toshi MARUYAMA
83aad1dc04 test: replace "should_route" of "issue relations" to "assert_routing" at integration/routing_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8257 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-17 11:55:09 +00:00
Toshi MARUYAMA
15f4e56c9d test: replace "should_route" of "issues" extra actions to "assert_routing" at integration/routing_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8256 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-17 11:54:37 +00:00
Jean-Philippe Lang
dcce70095b Option to set parent automatically for new wiki pages (#3108).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8255 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-17 11:44:04 +00:00
Jean-Philippe Lang
c8066879db Moved wiki links tests together.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8254 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-17 11:23:26 +00:00
Jean-Philippe Lang
17d08a939f Changed style of the wiki edit form.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8253 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-17 11:11:13 +00:00
Toshi MARUYAMA
1f90b6fc94 test: replace "should_route" of "users" to "assert_routing" at integration/routing_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8252 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-17 09:56:00 +00:00
Jean-Philippe Lang
b86ca61b49 Invalid HTML generated with ruby1.9.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8251 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-17 09:21:37 +00:00
Toshi MARUYAMA
f443c01ba5 test: replace "should_route" of "projects" to "assert_routing" at integration/routing_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8250 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-17 09:10:17 +00:00
Jean-Philippe Lang
9b1e831fa6 Change tests to use ruby/rails assertions.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8249 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-16 23:35:05 +00:00
Jean-Philippe Lang
ad25e3807d Make sure that tests restore the attachments path to the tmp dir so that fixture files don't get deleted.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8248 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-16 17:52:47 +00:00
Toshi MARUYAMA
14b931eb4a test: replace "should_route" of "timelogs (scoped under issues)" to "assert_routing" at integration/routing_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8247 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-16 12:11:05 +00:00
Toshi MARUYAMA
bc548368e8 test: replace "should_route" of "roles" to "assert_routing" at integration/routing_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8246 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-16 12:10:42 +00:00
Toshi MARUYAMA
5cfa9e735a test: replace "should_route" of "repositories" to "assert_routing" at integration/routing_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8245 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-16 09:56:46 +00:00
Toshi MARUYAMA
0ef34804e8 test: replace "should_route" of "timelogs (scoped under project)" to "assert_routing" at integration/routing_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8244 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-16 08:10:17 +00:00
Toshi MARUYAMA
bfad07cd15 test: replace "should_route" of "wiki (singular, project's pages)" to "assert_routing" at integration/routing_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8243 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-16 05:53:11 +00:00
Toshi MARUYAMA
e2de7f2529 test: replace "should_route" of "timelogs (global)" to "assert_routing" at integration/routing_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8242 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-16 04:01:44 +00:00
Etienne Massip
5a33d7292f Backout 8239.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8241 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-15 22:15:47 +00:00
Etienne Massip
b49f83a22a Log return code if error.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8239 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-15 21:59:49 +00:00
Etienne Massip
b6612ea8bb Fixed OpenID URL field width in user account page.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8238 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-15 20:00:58 +00:00
Toshi MARUYAMA
a36904c9ee use same human_attribute_name logic with SCM models at group model (#9795)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8237 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-15 13:07:32 +00:00
Toshi MARUYAMA
34087c4178 add unit test of group blank name in French (#9795)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8236 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-15 13:06:42 +00:00
Toshi MARUYAMA
2e6b13a5e9 use set_language_if_valid instead of I18n.locale at unit group test (#9795)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8235 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-15 13:06:00 +00:00
Jean-Philippe Lang
b99c2f4dee Patch for ruby1.9.3 compatibility.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8234 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-15 12:29:02 +00:00
Jean-Philippe Lang
f27d426347 Asserts that objects are not nil before getting their ids (test still fails with ruby1.9.3).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8233 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-15 12:27:41 +00:00
Jean-Philippe Lang
a61c9d53eb Set locale in test.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8232 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-15 12:18:20 +00:00
Jean-Philippe Lang
4f5e7d678e Fixed: Unrelated error message when creating a group with an invalid name (#9795).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8231 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-15 11:13:36 +00:00
Toshi MARUYAMA
08e309ea46 test: replace "should_route" of "roles" to "assert_routing" at integration/routing_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8230 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-15 11:10:33 +00:00
Jean-Philippe Lang
f6dd3c5484 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8229 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-15 10:57:59 +00:00
Jean-Philippe Lang
77e8a76af3 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8228 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-15 10:43:31 +00:00
Jean-Philippe Lang
b6e6f557f0 Display issue form fields according to permissions.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8227 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-15 10:41:49 +00:00
Jean-Philippe Lang
31f2e848b5 Do not change settings in tests.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8226 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-15 10:37:21 +00:00
Jean-Philippe Lang
a6f6511372 Do not change settings in tests.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8225 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-15 10:30:33 +00:00
Jean-Philippe Lang
f303000580 Do not change settings in tests.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8224 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-15 10:25:14 +00:00
Toshi MARUYAMA
f92141decb test: replace "should_route" of "messages" to "assert_routing" at integration/routing_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8223 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-15 08:39:55 +00:00
Toshi MARUYAMA
64129a68cd test: replace "should_route" of "issues" form update to "assert_routing" at integration/routing_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8222 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-15 08:12:42 +00:00
Toshi MARUYAMA
6248689b89 test: replace "should_route" of "groups" to "assert_routing" at integration/routing_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8221 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-15 07:06:37 +00:00
Toshi MARUYAMA
f968acbfac test: replace "should_route" of "documents" to "assert_routing" at integration/routing_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8220 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-15 07:06:11 +00:00
Toshi MARUYAMA
4d2a832fb6 test: replace "should_route" of "issues" REST actions to "assert_routing" at integration/routing_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8219 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-15 05:11:04 +00:00
Toshi MARUYAMA
64e960ae97 test: replace "should_route" of "issue reports" to "assert_routing" at integration/routing_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8218 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-15 03:47:17 +00:00
Toshi MARUYAMA
f0dd0acbf0 test: replace "should_route" of "members" to "assert_routing" at integration/routing_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8217 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-15 02:56:22 +00:00
Toshi MARUYAMA
8ac56d13d7 test: replace "should_route" of "wikis (plural, admin setup)" to "assert_routing" at integration/routing_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8216 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-15 01:48:26 +00:00
Toshi MARUYAMA
f70a5397f2 test: replace "should_route" of "test_custom_fields" to "assert_routing" at integration/routing_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8215 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-15 01:47:42 +00:00
Jean-Philippe Lang
6c91e1420a Removed dependency with monkey-patched rubytree.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8214 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-14 22:51:18 +00:00
Jean-Philippe Lang
7c00a4a11f Restores migration broken by r8182 and removes default scope on Role (#9800).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8213 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-14 22:24:20 +00:00
Etienne Massip
7d2298f39c Save an @Issue#save@.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8212 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-14 20:31:34 +00:00
Etienne Massip
840ef94b46 Fixed broken issues context tests (#9794).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8211 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-14 20:23:46 +00:00
Jean-Philippe Lang
e43df59168 Added encoding comment to helpers (#9792).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8210 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-14 19:56:23 +00:00
Jean-Philippe Lang
f1fec5eee0 Fixed that _revision_graph.html.erb breaks window load events (#9775).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8209 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-14 19:29:35 +00:00
Etienne Massip
befb5081f4 Fixed time entries context menu activity update link.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8208 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-14 19:20:19 +00:00
Etienne Massip
8eaa63ccbf Fixed issues context menu attributes update links (#9794).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8207 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-14 19:06:23 +00:00
Etienne Massip
90010d1f3b Removed code duplicated in lib.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8206 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-14 18:07:27 +00:00
Toshi MARUYAMA
08e8567e93 test: replace "should_route" of "boards" to "assert_routing" at integration/routing_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8205 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-14 13:05:42 +00:00
Toshi MARUYAMA
98fb0dd565 test: replace "should_route" of "administration panel" to "assert_routing" at integration/routing_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8204 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-14 13:05:08 +00:00
Toshi MARUYAMA
e499904e3a test: replace "should_route" of "welcome" to "assert_routing" at integration/routing_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8203 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-14 11:47:10 +00:00
Toshi MARUYAMA
a61d7d053f test: replace "should_route" of "attachments" to "assert_routing" at integration/routing_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8202 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-14 10:07:31 +00:00
Toshi MARUYAMA
0b4aed008c test: replace "should_route" of "activities" to "assert_routing" at integration/routing_test.rb
shoulda 2.11.3 does not support Rails2 legacy route on Rails 3.0.11.

<pre>
Error:
test: wikis (plural, admin setup) should route POST /projects/ladida/wiki/destroy
to/from {:action=>"destroy", :id=>"ladida", :controller=>"wikis"}. (RoutingTest):
NameError: uninitialized constant Routing
</pre>

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8201 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-14 06:49:19 +00:00
Jean-Philippe Lang
7d501eaf81 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8200 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-13 20:40:03 +00:00
Jean-Philippe Lang
59c1141e08 Moved fields specific to new issues to the new issue form.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8199 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-13 20:02:49 +00:00
Jean-Philippe Lang
cd0113a287 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8198 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-13 19:56:33 +00:00
Jean-Philippe Lang
e1f885feda Use safe_attributes for issue watchers assignment.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8197 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-13 19:50:44 +00:00
Etienne Massip
4c469f9646 Added missing repository route
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8196 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-13 14:19:59 +00:00
Jean-Philippe Lang
ed5f487cf5 Fixed broken issue form update when changing tracker.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8195 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-12 20:43:51 +00:00
Jean-Philippe Lang
e13a763ab4 Adds /search to robots.txt.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8194 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-12 18:12:48 +00:00
Jean-Philippe Lang
804108a87f Adds a hook before the new issue form.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8193 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-12 18:12:03 +00:00
Jean-Philippe Lang
f9b6e57d24 Fixed error on project creation due to unrecognized route.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8192 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-12 18:05:13 +00:00
Toshi MARUYAMA
f1994ea9c0 Rails3: model: replace deprecated before_validation method at CustomField model
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8191 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-11 12:04:54 +00:00
Toshi MARUYAMA
4f8ed70813 add unit test of CustomField model before_validation
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8190 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-11 12:04:16 +00:00
Jean-Philippe Lang
0471de41ff Resourcified enumerations.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8189 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-11 10:26:12 +00:00
Jean-Philippe Lang
1ad16c2238 Removed fieldset.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8188 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-10 21:33:56 +00:00
Jean-Philippe Lang
2bbb7a8e95 Typo in French locale.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8187 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-10 21:31:36 +00:00
Jean-Philippe Lang
8be46ff0b2 Removed double dash.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8186 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-10 21:28:30 +00:00
Etienne Massip
10e3045d8a Updated issue description diff route.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8185 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-10 20:40:17 +00:00
Jean-Philippe Lang
86d2b223cc Fixed reorder links on custom fields.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8184 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-10 19:27:18 +00:00
Jean-Philippe Lang
805c65f55d Extracted new_subclass_instance method to a module.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8183 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-10 19:18:06 +00:00
Jean-Philippe Lang
eb15c9eaad Role.all broken in migration due to default sort (columns do not exist yet). Use raw SQL instead.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8182 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-10 17:06:46 +00:00
Jean-Philippe Lang
83deaad8e4 Fixed tests with the valid login url.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8181 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-10 16:25:22 +00:00
Jean-Philippe Lang
bbdd5f8676 CHANGELOG updated.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8175 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-10 14:48:12 +00:00
Jean-Philippe Lang
a8982ec281 Removed useless routes.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8172 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-10 14:33:22 +00:00
Jean-Philippe Lang
22574ed74f Removed useless routes.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8171 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-10 14:30:54 +00:00
Jean-Philippe Lang
ae876eb27b Removed useless routes.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8170 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-10 14:28:32 +00:00
Jean-Philippe Lang
be687f6c0b Makes assertion compatible with ruby1.9.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8169 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-10 14:00:31 +00:00
Jean-Philippe Lang
b1bb26b1e0 ruby1.9: macro must accept 2 arguments.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8168 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-10 13:55:47 +00:00
Etienne Massip
02893a17ad Added method to attachments routes.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8167 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-10 13:50:07 +00:00
Jean-Philippe Lang
3507707325 Fixed assert call.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8166 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-10 13:48:53 +00:00
Etienne Massip
6030740b00 Removed boards widcard route.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8165 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-10 13:37:38 +00:00
Etienne Massip
3d66717c8d Removed repositories widcard route.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8164 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-10 13:36:49 +00:00
Etienne Massip
dc204174c0 Removed default route.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8163 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-10 13:34:09 +00:00
Etienne Massip
7ba57e517b Explicitly declare all routes and deactivate default route.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8162 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-10 13:33:01 +00:00
Toshi MARUYAMA
eb789b147a scm: git: remove unused --since option (#4547, #4716, #7146, #6013)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8156 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-10 11:55:02 +00:00
Jean-Philippe Lang
4cedb0b628 Issue destroy is now DELETE only.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8155 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-10 11:44:25 +00:00
Jean-Philippe Lang
ec50101db1 Removed no longer working old wiki route.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8154 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-10 09:38:13 +00:00
Jean-Philippe Lang
24c804a70a Droppped old repositories routes.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8153 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-10 09:36:39 +00:00
Jean-Philippe Lang
467503fd4b Changed ProjectsController#destroy to DELETE only.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8152 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-10 09:32:41 +00:00
Jean-Philippe Lang
7dc8cf9340 Changed IssuesController#destroy to DELETE only.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8151 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-10 09:20:23 +00:00
Jean-Philippe Lang
52a7fa6176 Changed IssuesController#destroy to DELETE only.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8150 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-10 09:10:51 +00:00
Jean-Philippe Lang
a1ae0aed23 Removed obsolete project news route.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8149 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-10 08:48:05 +00:00
Jean-Philippe Lang
ac6e404547 Moved bulk_edit/update routes into issues resources.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8148 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-10 08:45:52 +00:00
Jean-Philippe Lang
8d6af1fcb0 Custom fields display on bulk edit form.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8147 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-10 08:44:46 +00:00
Jean-Philippe Lang
3dcd71a082 REST urls for user memberships.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8146 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-10 08:37:48 +00:00
Jean-Philippe Lang
532a76f78c Resourcified roles.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8145 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-09 23:29:58 +00:00
Jean-Philippe Lang
b127f9157d Resourcified custom fields.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8144 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-09 22:58:30 +00:00
Jean-Philippe Lang
877fbc15da Renamed TabularFormBuilder to Redmine::Views::LabelledFormBuilder.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8143 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-09 18:45:38 +00:00
Jean-Philippe Lang
ede9a03405 Removed TabularFormBuilder references in views.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8142 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-09 18:40:28 +00:00
Jean-Philippe Lang
9636882c1e Use #labelled_form_for instead of #labelled_tabular_form_for.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8141 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-09 18:15:55 +00:00
Toshi MARUYAMA
312ffe43c7 Rails3: model: user: use ::Query instead of Query
Test fails on Rails 3.0.

<pre>
Error:
test_destroy_should_update_wiki_contents(UserTest):
NoMethodError: undefined method `delete_all' for ActiveRecord::AttributeMethods::Query:Module
    app/models/user.rb:602:in `remove_references_before_destroy'
    test/unit/user_test.rb:298:in `test_destroy_should_update_wiki_contents'
</pre>

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8140 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-09 12:08:58 +00:00
Toshi MARUYAMA
2afe5bdf57 Rails3: test: replace deprecated Errors#on to Errors#[] and join with to_s at test/unit/custom_field_test.rb
On Rails2, Errors#[] returns single error if one error raises.
But, on Rails3, Errors#[] always returns the array.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8139 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-09 07:16:59 +00:00
Toshi MARUYAMA
85382514f9 Rails3: test: replace deprecated Errors#on to Errors#[] and join with to_s at test/unit/issue_test.rb
On Rails2, Errors#[] returns single error if one error raises.
But, on Rails3, Errors#[] always returns the array.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8138 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-09 07:16:21 +00:00
Toshi MARUYAMA
8e5242ef63 Rails3: test: replace deprecated Errors#on to Errors#[] and join with to_s at test/unit/user_test.rb
On Rails2, Errors#[] returns single error if one error raises.
But, on Rails3, Errors#[] always returns the array.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8137 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-09 07:15:51 +00:00
Toshi MARUYAMA
7aba81dbe7 Rails3: test: replace deprecated Errors#on to Errors#[] and join with to_s at test/unit/time_entry_activity_test.rb
On Rails2, Errors#[] returns single error if one error raises.
But, on Rails3, Errors#[] always returns the array.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8136 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-09 07:15:12 +00:00
Toshi MARUYAMA
66b49c634d Rails3: test: replace deprecated Errors#on to Errors#[] and join with to_s at test/unit/repository_test.rb
On Rails2, Errors#[] returns single error if one error raises.
But, on Rails3, Errors#[] always returns the array.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8135 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-09 07:14:38 +00:00
Toshi MARUYAMA
caf9edf2c1 Rails3: test: replace deprecated Errors#on to Errors#[] and join with to_s at test/unit/wiki_page_test.rb
On Rails2, Errors#[] returns single error if one error raises.
But, on Rails3, Errors#[] always returns the array.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8134 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-09 05:55:32 +00:00
Toshi MARUYAMA
63d27a5389 Rails3: test: replace deprecated Errors#on to Errors#[] and join with to_s at test/functional/issues_controller_test.rb
On Rails2, Errors#[] returns single error if one error raises.
But, on Rails3, Errors#[] always returns the array.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8133 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-09 05:54:51 +00:00
Toshi MARUYAMA
c8556330c1 Rails3: test: replace deprecated Errors#on to Errors#[] and join with to_s at test/unit/version_test.rb
On Rails2, Errors#[] returns single error if one error raises.
But, on Rails3, Errors#[] always returns the array.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8132 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-09 05:54:13 +00:00
Jean-Philippe Lang
42d2bf0baf Makes project and tracker assigned first in #attributes=
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8131 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-08 20:37:12 +00:00
Jean-Philippe Lang
d75bc5774f Changes auto_complete calls to GET requests.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8130 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-08 20:03:27 +00:00
Etienne Massip
f385a3e3da Handle spaces in development scm stderr log file path.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8129 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-08 19:22:00 +00:00
Jean-Philippe Lang
3976e2d15d Tests broken with ruby1.8.6 (#9751).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8128 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-08 18:50:15 +00:00
Toshi MARUYAMA
aa127ebd4e Rails3: model: Member: add virtual attribute to prevent error
On Rails 3.0, test fails with following error.

<pre>
Error:
test_validate(MemberTest):
NoMethodError: undefined method `role' for #<Member:0x7f73caf8cd08>
    app/models/member.rb:87:in `validate_role'
    test/unit/member_test.rb:76:in `test_validate'
</pre>

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8127 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-08 15:12:02 +00:00
Toshi MARUYAMA
740b54f55b add unit test of error message in case that member role is empty
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8126 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-08 15:11:17 +00:00
Toshi MARUYAMA
15bb2fefa4 back out r8124
r8124 shows ":roles can't be empty".

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8125 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-08 13:37:27 +00:00
Toshi MARUYAMA
d9699adce5 Rails3: model: Member: errors must be set on existing attributes
On Rails 3.0, test fails with following error.

<pre>
Error:
test_validate(MemberTest):
NoMethodError: undefined method `role' for #<Member:0x7f73caf8cd08>
    app/models/member.rb:87:in `validate_role'
    test/unit/member_test.rb:76:in `test_validate'
</pre>

Contributed by Sylvain Utard.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8124 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-08 11:13:24 +00:00
Toshi MARUYAMA
c585d224d8 replace tabs to spaces at app/views/issues/_form.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8123 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-08 07:30:03 +00:00
Toshi MARUYAMA
b1996b38b4 Rails3: view: html_safe for timelog/_date_range.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8122 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-07 23:54:10 +00:00
Toshi MARUYAMA
6d805cfca2 Rails3: helper: html_safe for render_flash_messages method at ApplicationHelper
Contributed by Sylvain Utard.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8121 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-07 23:53:20 +00:00
Jean-Philippe Lang
12077a4d44 Fixed that a cross-project custom query is not remembered inside project (#9738).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8113 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-07 21:35:14 +00:00
Jean-Philippe Lang
24317f617e Adds an explicit error message for invalid YAML configuration file (#9748).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8112 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-07 18:54:41 +00:00
Toshi MARUYAMA
fd32f7446d code layout clean up app/views/gantts/show.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8111 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-07 03:54:45 +00:00
Toshi MARUYAMA
8ec5ed27db remove trailing white-spaces from calendar-hr.js
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8106 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-07 00:17:57 +00:00
Toshi MARUYAMA
fd175470db convert calendar-hr.js (Croatian) from Windows-1250 to UTF-8 (#9741)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8105 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-07 00:17:12 +00:00
Jean-Philippe Lang
72eebe1ce1 Removed obsolete nss/svn scripts.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8104 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-06 23:09:40 +00:00
Jean-Philippe Lang
a63027e175 Fixed that custom values get saved when assigning custom values after changing to a tracker with different custom fields (#9737).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8103 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-06 22:20:49 +00:00
Jean-Philippe Lang
9333853f23 Removed the "more" link to edit additional properties of an issue (#7603).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8102 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-06 20:15:22 +00:00
Jean-Philippe Lang
9cc1cb5281 Issue forms cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8101 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-06 18:02:10 +00:00
Toshi MARUYAMA
62fb6e0f4b pdf: move note number to the head of line for single issue's PDF (#9720)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8099 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-06 03:44:25 +00:00
Jean-Philippe Lang
5ca558f191 Fixed: error when filtering by numeric custom field with postgresql (#9719).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8098 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-05 20:45:45 +00:00
Jean-Philippe Lang
c562d79e4f Parameter changed to issue_category in r7882 (#9724).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8096 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-05 19:54:30 +00:00
Jean-Philippe Lang
fe4c7237fb Adds tests for MailHandler.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8095 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-05 18:56:00 +00:00
Jean-Philippe Lang
e5bea933a8 Slight change to time report style.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8094 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-05 18:40:52 +00:00
Jean-Philippe Lang
6a1830e9e3 Replace raw SQL with a .count call.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8093 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-05 18:27:10 +00:00
Jean-Philippe Lang
81afd9d0c7 Fixed time report broken by r8085.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8092 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-05 17:58:01 +00:00
Toshi MARUYAMA
3f79a914d9 pdf: add note number for single issue's PDF (#9720)
Contributed by Akiko T.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8090 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-05 07:34:52 +00:00
Jean-Philippe Lang
afbdc51e01 Removed ARCondition.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8089 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-04 23:44:59 +00:00
Jean-Philippe Lang
4485745dc6 Use scopes instead of ARCondition.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8088 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-04 23:42:49 +00:00
Jean-Philippe Lang
0a92e382fa Use scopes instead of ARCondition.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8087 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-04 23:36:47 +00:00
Jean-Philippe Lang
b9e02477e9 Use Query.visible scope.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8086 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-04 23:05:11 +00:00
Jean-Philippe Lang
1050993348 Removed unnecessary calculations in time entries index.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8085 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-04 23:01:42 +00:00
Jean-Philippe Lang
9e5ed4208b Adds named scopes for time entries index.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8084 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-04 22:49:46 +00:00
Jean-Philippe Lang
ff0f141126 Adds named scopes for projects index.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8082 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-04 22:31:02 +00:00
Jean-Philippe Lang
f52410be19 Adds named scopes for users index.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8081 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-04 22:24:33 +00:00
Jean-Philippe Lang
b9900661f4 Adjusts images position in filters.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8080 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-04 20:30:51 +00:00
Jean-Philippe Lang
9412091d0d Progress bar style.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8079 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-04 19:58:34 +00:00
Jean-Philippe Lang
9f1c59e9d0 Moves test to non-transactional fixtures tests (failure with postgresql).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8078 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-04 19:20:22 +00:00
Jean-Philippe Lang
68149f8c73 Fixes spent time column sort for postgresql.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8077 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-04 19:13:09 +00:00
Jean-Philippe Lang
cad148cb5c Fixes test conditions.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8076 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-04 19:12:15 +00:00
Jean-Philippe Lang
2cca4938cf Removed open/closed percentage on the roadmap.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8075 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-04 17:44:12 +00:00
Jean-Philippe Lang
e77046ba4e Adds a test for invalid query statement.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8074 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-04 16:59:03 +00:00
Jean-Philippe Lang
6d498a3c46 Makes spent time column available on the issue list (#971).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8073 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-04 16:43:32 +00:00
Toshi MARUYAMA
bddd19c1e6 Rails3: model: replace deprecated validate method at watcher model
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8072 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-04 09:45:18 +00:00
Toshi MARUYAMA
93603f383a add unit test to validate watcher
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8071 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-04 09:44:11 +00:00
Toshi MARUYAMA
32ed138c53 Rails3: model: replace deprecated before_save method at UserPreference model
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8070 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-04 06:44:39 +00:00
Toshi MARUYAMA
420e70180c add unit test to ensure user preference others is hash in saving
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8069 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-04 06:43:48 +00:00
Toshi MARUYAMA
1de2c1c2af Rails3: model: replace deprecated validate method at member_role model
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8068 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-04 05:21:20 +00:00
Toshi MARUYAMA
747afd8088 add unit test of member_role validate
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8067 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-04 05:20:42 +00:00
Jean-Philippe Lang
a0a6571be3 Adds tests for plugin API.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8066 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-03 21:33:34 +00:00
Jean-Philippe Lang
7362cd2e10 Removed unused method.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8065 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-03 21:12:33 +00:00
Jean-Philippe Lang
a398faa5d7 Adds a test for when accessing wiki history without permission.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8064 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-03 20:30:50 +00:00
Jean-Philippe Lang
81bcb4d999 Don't change setting value in tests.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8063 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-03 20:28:32 +00:00
Jean-Philippe Lang
937a954013 Adds a test for parent issues display.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8062 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-03 18:25:53 +00:00
Jean-Philippe Lang
443bc4bf90 Fixed malformed HTML.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8061 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-03 18:21:56 +00:00
Jean-Philippe Lang
7c0a05360e Fixes assertion.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8060 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-03 18:21:00 +00:00
Jean-Philippe Lang
3fd504e545 Adds a test for subtasks display.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8059 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-03 18:20:26 +00:00
Toshi MARUYAMA
997995397e Rails3: model: replace deprecated before_destroy method at member model
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8058 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-03 16:41:23 +00:00
Toshi MARUYAMA
7a5d6f61c7 add test to check to set issue category assignee nil in destroying member
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8057 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-03 16:40:42 +00:00
Jean-Philippe Lang
1337fcb3d9 Adds test for test email failure.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8056 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-03 15:39:59 +00:00
Jean-Philippe Lang
ee5d3ab19b Adds a test for child_pages macro failure.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8055 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-03 15:32:46 +00:00
Jean-Philippe Lang
036c3a56b4 Adds a test for macro registration.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8054 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-03 15:29:51 +00:00
Jean-Philippe Lang
30bc5873e0 Adds a test for macro_list wiki macro.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8053 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-03 15:25:02 +00:00
Jean-Philippe Lang
e67afc8886 Test for repository edit and cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8052 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-03 15:13:47 +00:00
Jean-Philippe Lang
a08fa696d4 Test for repository edit and cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8051 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-03 15:10:41 +00:00
Jean-Philippe Lang
4eb14ab85c Test for repository edit and cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8050 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-03 15:09:08 +00:00
Jean-Philippe Lang
f660d5f183 Test for repository edit and cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8049 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-03 15:06:23 +00:00
Jean-Philippe Lang
e2e3af4f0d Fixed test_updated_on_eager_load.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8048 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-03 14:47:24 +00:00
Toshi MARUYAMA
23fd43374d Rails3: model: replace deprecated validate method at member model
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8047 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-03 14:33:49 +00:00
Toshi MARUYAMA
3d1e6f5b96 fix member validate test of empty role at unit test
Id 2 user is already assigned.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8046 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-03 14:33:02 +00:00
Jean-Philippe Lang
a2d515adce Adds tests for SysController.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8045 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-03 13:59:17 +00:00
Jean-Philippe Lang
66cc0fe7ab Typo.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8044 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-03 13:42:58 +00:00
Jean-Philippe Lang
1fbcd1051e Do not trigger repository validation in migration.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8043 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-03 13:38:04 +00:00
Jean-Philippe Lang
582574bace Adds a test for revision diff as raw format.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8042 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-03 13:18:00 +00:00
Etienne Massip
39ae7b66f8 Enforced unicity of relations between 2 issues with a database index (#9685).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8041 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-03 12:12:53 +00:00
Toshi MARUYAMA
7e62d02abb add gmtime at unit wiki page "test_updated_on_eager_load" for Rails3 compatibility
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8040 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-03 11:11:32 +00:00
Jean-Philippe Lang
fd18c51938 Adds tests for plugin settings editing.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8039 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-03 10:06:41 +00:00
Jean-Philippe Lang
8bbb5d9686 Tests/cleanup VersionsController.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8038 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-03 09:12:51 +00:00
Jean-Philippe Lang
666830cca0 Test class cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8037 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-03 08:53:02 +00:00
Jean-Philippe Lang
b6b77c438a Adds functional tests for repository creation/update.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8036 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-03 08:47:40 +00:00
Toshi MARUYAMA
8066aa5eb1 Rails3: helper: html_safe for "format_activity_description" method
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8035 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-03 06:15:55 +00:00
Toshi MARUYAMA
10ae93826e Rails3: view: html_safe for parents and children revisions
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8034 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-03 06:15:03 +00:00
Toshi MARUYAMA
3eb534818a code layout clean up application helper "link_to_revision" method
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8033 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-03 06:14:19 +00:00
Jean-Philippe Lang
655dc18d71 Do not show warnings for disabled scm.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8031 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-02 22:21:18 +00:00
Jean-Philippe Lang
040cfa4ad5 Makes the link in an issue update notification point to the change (#9690).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8030 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-02 21:00:42 +00:00
Jean-Philippe Lang
77fc113273 Routes cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8029 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-02 19:36:59 +00:00
Jean-Philippe Lang
4fdceb8613 Routes cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8028 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-02 19:35:54 +00:00
Jean-Philippe Lang
69a2431dd0 Dropped TimeEntryReportsController.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8027 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-02 19:33:05 +00:00
Jean-Philippe Lang
caf898d7d1 Extracted time report logic from the controller.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8026 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-02 18:46:43 +00:00
Toshi MARUYAMA
da140238e7 code layout clean up issues helper
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8025 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-02 11:36:40 +00:00
Toshi MARUYAMA
20f3dde0dd Rails3: helper: html_safe for issues helper "show_detail" method
Contributed by Sernin van de Krol.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8024 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-02 11:35:54 +00:00
Toshi MARUYAMA
3d379c4d07 scm: git: mercurial: not show revision graph in sub directory (#5501)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8022 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-01 23:41:03 +00:00
Jean-Philippe Lang
6475fe6474 Controller cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8021 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-01 21:16:44 +00:00
Jean-Philippe Lang
2967023a0e Resourcified boards.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8020 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-01 21:14:09 +00:00
Jean-Philippe Lang
1cb7de5b5a Routes cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8019 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-01 19:08:49 +00:00
Jean-Philippe Lang
63b7d7e4ac Add missing fixtures.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8018 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-01 19:04:13 +00:00
Jean-Philippe Lang
526736dedc Removed obsolete routes.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8017 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-01 18:02:21 +00:00
Toshi MARUYAMA
2507fd1cd4 remove trailing white-spaces except SQL from extra/svn/Redmine.pm
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8015 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-01 05:27:04 +00:00
Toshi MARUYAMA
652fb58b2b Japanese translation updated by Go MAEDA (#9705)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8013 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-01 04:08:12 +00:00
Jean-Philippe Lang
be3ff78a29 Additional assertion for documents routing tests.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8012 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-11-30 23:15:52 +00:00
Jean-Philippe Lang
96bccd4666 Updated documents routing tests.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8011 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-11-30 23:12:43 +00:00
Jean-Philippe Lang
c3c2a4afe0 Resourcified documents.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8010 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-11-30 19:51:16 +00:00
Jean-Philippe Lang
1a28bd8e7e Removed #find_project already defined as #find_project_by_project_id in parent class.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8009 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-11-30 19:08:06 +00:00
Jean-Philippe Lang
7a68ae27b0 Reverted r8007.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8008 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-11-30 19:02:40 +00:00
Jean-Philippe Lang
33e25255e3 Removed #find_project already defined in parent class.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8007 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-11-30 19:01:14 +00:00
Jean-Philippe Lang
e25caff16f Test class cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8006 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-11-30 18:59:51 +00:00
Jean-Philippe Lang
afb84b6823 Adds functional tests for DocumentsController.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8005 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-11-30 18:59:06 +00:00
Toshi MARUYAMA
f20212bc04 Bulgarian translation updated by Ivan Cenov (#9695)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8002 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-11-30 08:16:37 +00:00
Toshi MARUYAMA
e210c5613f pdf: fix textilized outputs of coderay line numbers (#9692)
Contributed by Jun NAITOH.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8001 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-11-30 07:59:32 +00:00
Jean-Philippe Lang
6372688edd Set version to 1.3.0.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@7993 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-11-29 21:04:58 +00:00
1558 changed files with 41688 additions and 55600 deletions

2
.gitignore vendored
View File

@@ -5,6 +5,7 @@
/config/database.yml
/config/email.yml
/config/initializers/session_store.rb
/config/initializers/secret_token.rb
/coverage
/db/*.db
/db/*.sqlite3
@@ -21,6 +22,7 @@
/tmp/sessions/*
/tmp/sockets/*
/tmp/test/*
/vendor/cache
/vendor/rails
*.rbc

View File

@@ -7,6 +7,7 @@ config/configuration.yml
config/database.yml
config/email.yml
config/initializers/session_store.rb
config/initializers/secret_token.rb
coverage
db/*.db
db/*.sqlite3
@@ -23,6 +24,7 @@ tmp/cache/*
tmp/sessions/*
tmp/sockets/*
tmp/test/*
vendor/cache
vendor/rails
*.rbc

92
Gemfile Normal file
View File

@@ -0,0 +1,92 @@
source 'http://rubygems.org'
gem 'rails', '3.2.8'
gem "jquery-rails", "~> 2.0.2"
gem "i18n", "~> 0.6.0"
gem "coderay", "~> 1.0.6"
gem "fastercsv", "~> 1.5.0", :platforms => [:mri_18, :mingw_18, :jruby]
gem "builder", "3.0.0"
# Optional gem for LDAP authentication
group :ldap do
gem "net-ldap", "~> 0.3.1"
end
# Optional gem for OpenID authentication
group :openid do
gem "ruby-openid", "~> 2.1.4", :require => "openid"
gem "rack-openid"
end
# Optional gem for exporting the gantt to a PNG file, not supported with jruby
platforms :mri, :mingw do
group :rmagick do
# RMagick 2 supports ruby 1.9
# RMagick 1 would be fine for ruby 1.8 but Bundler does not support
# different requirements for the same gem on different platforms
gem "rmagick", ">= 2.0.0"
end
end
# Database gems
platforms :mri, :mingw do
group :postgresql do
gem "pg", ">= 0.11.0"
end
group :sqlite do
gem "sqlite3"
end
end
platforms :mri_18, :mingw_18 do
group :mysql do
gem "mysql"
end
end
platforms :mri_19, :mingw_19 do
group :mysql do
gem "mysql2", "~> 0.3.11"
end
end
platforms :jruby do
gem "jruby-openssl"
group :mysql do
gem "activerecord-jdbcmysql-adapter"
end
group :postgresql do
gem "activerecord-jdbcpostgresql-adapter"
end
group :sqlite do
gem "activerecord-jdbcsqlite3-adapter"
end
end
group :development do
gem "rdoc", ">= 2.4.2"
gem "yard"
end
group :test do
gem "shoulda", "~> 2.11"
# Shoulda does not work nice on Ruby 1.9.3 and seems to need test-unit explicitely.
gem "test-unit", :platforms => [:mri_19]
gem "mocha", "0.12.3"
end
local_gemfile = File.join(File.dirname(__FILE__), "Gemfile.local")
if File.exists?(local_gemfile)
puts "Loading Gemfile.local ..." if $DEBUG # `ruby -d` or `bundle -v`
instance_eval File.read(local_gemfile)
end
# Load plugins' Gemfiles
Dir.glob File.expand_path("../plugins/*/Gemfile", __FILE__) do |file|
puts "Loading #{file} ..." if $DEBUG # `ruby -d` or `bundle -v`
instance_eval File.read(file)
end

View File

@@ -1,15 +1,7 @@
#!/usr/bin/env rake
# Add your own tasks in files placed in lib/tasks ending in .rake,
# for example lib/tasks/switchtower.rake, and they will automatically be available to Rake.
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
require(File.join(File.dirname(__FILE__), 'config', 'boot'))
require File.expand_path('../config/application', __FILE__)
require 'rake'
require 'rake/testtask'
begin
require 'rdoc/task'
rescue LoadError
# RDoc is not available
end
require 'tasks/rails'
RedmineApp::Application.load_tasks

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -29,6 +29,9 @@ class AccountController < ApplicationController
else
authenticate_user
end
rescue AuthSourceException => e
logger.error "An error occured when authenticating #{params[:username]}: #{e.message}"
render_error :message => e.message
end
# Log out current user and redirect to welcome page
@@ -37,19 +40,26 @@ class AccountController < ApplicationController
redirect_to home_url
end
# Enable user to choose a new password
# Lets user choose a new password
def lost_password
redirect_to(home_url) && return unless Setting.lost_password?
if params[:token]
@token = Token.find_by_action_and_value("recovery", params[:token])
redirect_to(home_url) && return unless @token and !@token.expired?
@token = Token.find_by_action_and_value("recovery", params[:token].to_s)
if @token.nil? || @token.expired?
redirect_to home_url
return
end
@user = @token.user
unless @user && @user.active?
redirect_to home_url
return
end
if request.post?
@user.password, @user.password_confirmation = params[:new_password], params[:new_password_confirmation]
if @user.save
@token.destroy
flash[:notice] = l(:notice_account_password_updated)
redirect_to :action => 'login'
redirect_to signin_path
return
end
end
@@ -57,17 +67,23 @@ class AccountController < ApplicationController
return
else
if request.post?
user = User.find_by_mail(params[:mail])
# user not found in db
(flash.now[:error] = l(:notice_account_unknown_email); return) unless user
# user uses an external authentification
(flash.now[:error] = l(:notice_can_t_change_password); return) if user.auth_source_id
user = User.find_by_mail(params[:mail].to_s)
# user not found or not active
unless user && user.active?
flash.now[:error] = l(:notice_account_unknown_email)
return
end
# user cannot change its password
unless user.change_password_allowed?
flash.now[:error] = l(:notice_can_t_change_password)
return
end
# create a new token for password recovery
token = Token.new(:user => user, :action => "recovery")
if token.save
Mailer.deliver_lost_password(token)
Mailer.lost_password(token).deliver
flash[:notice] = l(:notice_account_lost_email_sent)
redirect_to :action => 'login'
redirect_to signin_path
return
end
end
@@ -81,7 +97,9 @@ class AccountController < ApplicationController
session[:auth_source_registration] = nil
@user = User.new(:language => Setting.default_language)
else
@user = User.new(params[:user])
user_params = params[:user] || {}
@user = User.new
@user.safe_attributes = user_params
@user.admin = false
@user.register
if session[:auth_source_registration]
@@ -96,7 +114,9 @@ class AccountController < ApplicationController
end
else
@user.login = params[:user][:login]
@user.password, @user.password_confirmation = params[:password], params[:password_confirmation]
unless user_params[:identity_url].present? && user_params[:password].blank? && user_params[:password_confirmation].blank?
@user.password, @user.password_confirmation = user_params[:password], user_params[:password_confirmation]
end
case Setting.self_registration
when '1'
@@ -122,19 +142,11 @@ class AccountController < ApplicationController
token.destroy
flash[:notice] = l(:notice_account_activated)
end
redirect_to :action => 'login'
redirect_to signin_path
end
private
def logout_user
if User.current.logged?
cookies.delete :autologin
Token.delete_all(["user_id = ? AND action = ?", User.current.id, 'autologin'])
self.logged_user = nil
end
end
def authenticate_user
if Setting.openid? && using_open_id?
open_id_authenticate(params[:openid_url])
@@ -157,7 +169,7 @@ class AccountController < ApplicationController
end
def open_id_authenticate(openid_url)
authenticate_with_open_id(openid_url, :required => [:nickname, :fullname, :email], :return_to => signin_url) do |result, identity_url, registration|
authenticate_with_open_id(openid_url, :required => [:nickname, :fullname, :email], :return_to => signin_url, :method => :post) do |result, identity_url, registration|
if result.successful?
user = User.find_or_initialize_by_identity_url(identity_url)
if user.new_record?
@@ -198,6 +210,7 @@ class AccountController < ApplicationController
end
def successful_authentication(user)
logger.info "Successful authentication for '#{user.login}' from #{request.remote_ip} at #{Time.now.utc}"
# Valid user
self.logged_user = user
# generate a key and set cookie if autologin
@@ -225,7 +238,7 @@ class AccountController < ApplicationController
def onthefly_creation_failed(user, auth_source_options = { })
@user = user
session[:auth_source_registration] = auth_source_options unless auth_source_options.empty?
render :action => 'register'
render register_path
end
def invalid_credentials
@@ -239,9 +252,9 @@ class AccountController < ApplicationController
def register_by_email_activation(user, &block)
token = Token.new(:user => user, :action => "register")
if user.save and token.save
Mailer.deliver_register(token)
Mailer.register(token).deliver
flash[:notice] = l(:notice_account_register_done)
redirect_to :action => 'login'
redirect_to signin_path
else
yield if block_given?
end
@@ -269,7 +282,7 @@ class AccountController < ApplicationController
def register_manually_by_administrator(user, &block)
if user.save
# Sends an email to the administrators
Mailer.deliver_account_activation_request(user)
Mailer.account_activation_request(user).deliver
account_pending
else
yield if block_given?
@@ -278,6 +291,6 @@ class AccountController < ApplicationController
def account_pending
flash[:notice] = l(:notice_account_pending)
redirect_to :action => 'login'
redirect_to signin_path
end
end

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -40,10 +40,10 @@ class ActivitiesController < ApplicationController
events = @activity.events(@date_from, @date_to)
if events.empty? || stale?(:etag => [@activity.scope, @date_to, @date_from, @with_subprojects, @author, events.first, User.current, current_language])
if events.empty? || stale?(:etag => [@activity.scope, @date_to, @date_from, @with_subprojects, @author, events.first, events.size, User.current, current_language])
respond_to do |format|
format.html {
@events_by_day = events.group_by(&:event_date)
@events_by_day = events.group_by {|event| User.current.time_to_date(event.event_datetime)}
render :layout => false if request.xhr?
}
format.atom {

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -17,6 +17,10 @@
class AdminController < ApplicationController
layout 'admin'
menu_item :projects, :only => :projects
menu_item :plugins, :only => :plugins
menu_item :info, :only => :info
before_filter :require_admin
helper :sort
include SortHelper
@@ -26,14 +30,12 @@ class AdminController < ApplicationController
end
def projects
@status = params[:status] ? params[:status].to_i : 1
c = ARCondition.new(@status == 0 ? "status <> 0" : ["status = ?", @status])
unless params[:name].blank?
name = "%#{params[:name].strip.downcase}%"
c << ["LOWER(identifier) LIKE ? OR LOWER(name) LIKE ?", name, name]
end
@projects = Project.find :all, :order => 'lft',
:conditions => c.conditions
@status = params[:status] || 1
scope = Project.status(@status)
scope = scope.like(params[:name]) if params[:name].present?
@projects = scope.all(:order => 'lft')
render :action => "projects", :layout => false if request.xhr?
end
@@ -61,7 +63,7 @@ class AdminController < ApplicationController
# Force ActionMailer to raise delivery errors so we can catch it
ActionMailer::Base.raise_delivery_errors = true
begin
@test = Mailer.deliver_test(User.current)
@test = Mailer.test_email(User.current).deliver
flash[:notice] = l(:notice_email_sent, User.current.mail)
rescue Exception => e
flash[:error] = l(:notice_email_error, e.message)
@@ -73,11 +75,9 @@ class AdminController < ApplicationController
def info
@db_adapter_name = ActiveRecord::Base.connection.adapter_name
@checklist = [
[:text_default_administrator_account_changed,
User.find(:first,
:conditions => ["login=? and hashed_password=?", 'admin', User.hash_password('admin')]).nil?],
[:text_default_administrator_account_changed, User.default_admin_account_changed?],
[:text_file_repository_writable, File.writable?(Attachment.storage_path)],
[:text_plugin_assets_writable, File.writable?(Engines.public_directory)],
[:text_plugin_assets_writable, File.writable?(Redmine::Plugin.public_directory)],
[:text_rmagick_available, Object.const_defined?(:Magick)]
]
end

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -22,39 +22,59 @@ class Unauthorized < Exception; end
class ApplicationController < ActionController::Base
include Redmine::I18n
class_attribute :accept_api_auth_actions
class_attribute :accept_rss_auth_actions
class_attribute :model_object
layout 'base'
exempt_from_layout 'builder', 'rsb'
protect_from_forgery
def handle_unverified_request
super
cookies.delete(:autologin)
end
# Remove broken cookie after upgrade from 0.8.x (#4292)
# See https://rails.lighthouseapp.com/projects/8994/tickets/3360
# TODO: remove it when Rails is fixed
before_filter :delete_broken_cookies
def delete_broken_cookies
if cookies['_redmine_session'] && cookies['_redmine_session'] !~ /--/
cookies.delete '_redmine_session'
redirect_to home_path
return false
end
end
before_filter :user_setup, :check_if_login_required, :set_localization
filter_parameter_logging :password
before_filter :session_expiration, :user_setup, :check_if_login_required, :set_localization
rescue_from ActionController::InvalidAuthenticityToken, :with => :invalid_authenticity_token
rescue_from ::Unauthorized, :with => :deny_access
rescue_from ::ActionView::MissingTemplate, :with => :missing_template
include Redmine::Search::Controller
include Redmine::MenuManager::MenuController
helper Redmine::MenuManager::MenuHelper
Redmine::Scm::Base.all.each do |scm|
require_dependency "repository/#{scm.underscore}"
def session_expiration
if session[:user_id]
if session_expired? && !try_to_autologin
reset_session
flash[:error] = l(:error_session_expired)
redirect_to signin_url
else
session[:atime] = Time.now.utc.to_i
end
end
end
def session_expired?
if Setting.session_lifetime?
unless session[:ctime] && (Time.now.utc.to_i - session[:ctime].to_i <= Setting.session_lifetime.to_i * 60)
return true
end
end
if Setting.session_timeout?
unless session[:atime] && (Time.now.utc.to_i - session[:atime].to_i <= Setting.session_timeout.to_i * 60)
return true
end
end
false
end
def start_user_session(user)
session[:user_id] = user.id
session[:ctime] = Time.now.utc.to_i
session[:atime] = Time.now.utc.to_i
end
def user_setup
@@ -62,33 +82,48 @@ class ApplicationController < ActionController::Base
Setting.check_cache
# Find the current user
User.current = find_current_user
logger.info(" Current user: " + (User.current.logged? ? "#{User.current.login} (id=#{User.current.id})" : "anonymous")) if logger
end
# Returns the current user or nil if no user is logged in
# and starts a session if needed
def find_current_user
if session[:user_id]
# existing session
(User.active.find(session[:user_id]) rescue nil)
elsif cookies[:autologin] && Setting.autologin?
# auto-login feature starts a new session
user = User.try_to_autologin(cookies[:autologin])
session[:user_id] = user.id if user
user
elsif params[:format] == 'atom' && params[:key] && request.get? && accept_rss_auth?
# RSS key authentication does not start a session
User.find_by_rss_key(params[:key])
elsif Setting.rest_api_enabled? && accept_api_auth?
user = nil
unless api_request?
if session[:user_id]
# existing session
user = (User.active.find(session[:user_id]) rescue nil)
elsif autologin_user = try_to_autologin
user = autologin_user
elsif params[:format] == 'atom' && params[:key] && request.get? && accept_rss_auth?
# RSS key authentication does not start a session
user = User.find_by_rss_key(params[:key])
end
end
if user.nil? && Setting.rest_api_enabled? && accept_api_auth?
if (key = api_key_from_request)
# Use API key
User.find_by_api_key(key)
user = User.find_by_api_key(key)
else
# HTTP Basic, either username/password or API key/random
authenticate_with_http_basic do |username, password|
User.try_to_login(username, password) || User.find_by_api_key(username)
user = User.try_to_login(username, password) || User.find_by_api_key(username)
end
end
end
user
end
def try_to_autologin
if cookies[:autologin] && Setting.autologin?
# auto-login feature starts a new session
user = User.try_to_autologin(cookies[:autologin])
if user
reset_session
start_user_session(user)
end
user
end
end
# Sets the logged in user
@@ -96,12 +131,21 @@ class ApplicationController < ActionController::Base
reset_session
if user && user.is_a?(User)
User.current = user
session[:user_id] = user.id
start_user_session(user)
else
User.current = User.anonymous
end
end
# Logs out current user
def logout_user
if User.current.logged?
cookies.delete :autologin
Token.delete_all(["user_id = ? AND action = ?", User.current.id, 'autologin'])
self.logged_user = nil
end
end
# check if login is globally required to access the application
def check_if_login_required
# no check needed if user is already logged in
@@ -209,7 +253,7 @@ class ApplicationController < ActionController::Base
end
def find_model_object
model = self.class.read_inheritable_attribute('model_object')
model = self.class.model_object
if model
@object = model.find(params[:id])
self.instance_variable_set('@' + controller_name.singularize, @object) if @object
@@ -219,7 +263,7 @@ class ApplicationController < ActionController::Base
end
def self.model_object(model)
write_inheritable_attribute('model_object', model)
self.model_object = model
end
# Filter for bulk issue operations
@@ -236,20 +280,11 @@ class ApplicationController < ActionController::Base
render_404
end
# Check if project is unique before bulk operations
def check_project_uniqueness
unless @project
# TODO: let users bulk edit/move/destroy issues from different projects
render_error 'Can not bulk edit/move/destroy issues from different projects'
return false
end
end
# make sure that the user is a member of the project (or admin) if project is private
# used as a before_filter for actions that do not require any particular permission on the project
def check_project_privacy
if @project && @project.active?
if @project.is_public? || User.current.member_of?(@project) || User.current.admin?
if @project && !@project.archived?
if @project.visible?
true
else
deny_access
@@ -262,12 +297,16 @@ class ApplicationController < ActionController::Base
end
def back_url
params[:back_url] || request.env['HTTP_REFERER']
url = params[:back_url]
if url.nil? && referer = request.env['HTTP_REFERER']
url = CGI.unescape(referer.to_s)
end
url
end
def redirect_back_or_default(default)
back_url = CGI.unescape(params[:back_url].to_s)
if !back_url.blank?
back_url = params[:back_url].to_s
if back_url.present?
begin
uri = URI.parse(back_url)
# do not redirect user to another host or to the login or register page
@@ -276,6 +315,7 @@ class ApplicationController < ActionController::Base
return
end
rescue URI::InvalidURIError
logger.warn("Could not redirect to invalid URL #{back_url}")
# redirect to default
end
end
@@ -283,6 +323,19 @@ class ApplicationController < ActionController::Base
false
end
# Redirects to the request referer if present, redirects to args or call block otherwise.
def redirect_to_referer_or(*args, &block)
redirect_to :back
rescue ::ActionController::RedirectBackError
if args.any?
redirect_to *args
elsif block_given?
block.call
else
raise "#redirect_to_referer_or takes arguments or a block"
end
end
def render_403(options={})
@project = nil
render_error({:message => :notice_not_authorized, :status => 403}.merge(options))
@@ -306,13 +359,17 @@ class ApplicationController < ActionController::Base
format.html {
render :template => 'common/error', :layout => use_layout, :status => @status
}
format.atom { head @status }
format.xml { head @status }
format.js { head @status }
format.json { head @status }
format.any { head @status }
end
end
# Handler for ActionView::MissingTemplate exception
def missing_template
logger.warn "Missing template, responding with 404"
@project = nil
render_404
end
# Filter for actions that provide an API response
# but have no HTML representation for non admin users
def require_admin_or_api_request
@@ -349,23 +406,11 @@ class ApplicationController < ActionController::Base
:content_type => 'application/atom+xml'
end
# TODO: remove in Redmine 1.4
def self.accept_key_auth(*actions)
ActiveSupport::Deprecation.warn "ApplicationController.accept_key_auth is deprecated and will be removed in Redmine 1.4. Use accept_rss_auth (or accept_api_auth) instead."
accept_rss_auth(*actions)
end
# TODO: remove in Redmine 1.4
def accept_key_auth_actions
ActiveSupport::Deprecation.warn "ApplicationController.accept_key_auth_actions is deprecated and will be removed in Redmine 1.4. Use accept_rss_auth (or accept_api_auth) instead."
self.class.accept_rss_auth
end
def self.accept_rss_auth(*actions)
if actions.any?
write_inheritable_attribute('accept_rss_auth_actions', actions)
self.accept_rss_auth_actions = actions
else
read_inheritable_attribute('accept_rss_auth_actions') || []
self.accept_rss_auth_actions || []
end
end
@@ -375,9 +420,9 @@ class ApplicationController < ActionController::Base
def self.accept_api_auth(*actions)
if actions.any?
write_inheritable_attribute('accept_api_auth_actions', actions)
self.accept_api_auth_actions = actions
else
read_inheritable_attribute('accept_api_auth_actions') || []
self.accept_api_auth_actions || []
end
end
@@ -457,9 +502,9 @@ class ApplicationController < ActionController::Base
# Returns the API key present in the request
def api_key_from_request
if params[:key].present?
params[:key]
params[:key].to_s
elsif request.headers["X-Redmine-API-Key"].present?
request.headers["X-Redmine-API-Key"]
request.headers["X-Redmine-API-Key"].to_s
end
end
@@ -491,36 +536,25 @@ class ApplicationController < ActionController::Base
render_error "An error occurred while executing the query and has been logged. Please report this error to your Redmine administrator."
end
# Renders a 200 response for successfull updates or deletions via the API
def render_api_ok
# head :ok would return a response body with one space
render :text => '', :status => :ok, :layout => nil
end
# Renders API response on validation failure
def render_validation_errors(object)
options = { :status => :unprocessable_entity, :layout => false }
options.merge!(case params[:format]
when 'xml'; { :xml => object.errors }
when 'json'; { :json => {'errors' => object.errors} } # ActiveResource client compliance
else
raise "Unknown format #{params[:format]} in #render_validation_errors"
end
)
render options
end
# Overrides #default_template so that the api template
# is used automatically if it exists
def default_template(action_name = self.action_name)
if api_request?
begin
return self.view_paths.find_template(default_template_name(action_name), 'api')
rescue ::ActionView::MissingTemplate
# the api template was not found
# fallback to the default behaviour
end
def render_validation_errors(objects)
if objects.is_a?(Array)
@error_messages = objects.map {|object| object.errors.full_messages}.flatten
else
@error_messages = objects.errors.full_messages
end
super
render :template => 'common/error_messages.api', :status => :unprocessable_entity, :layout => nil
end
# Overrides #pick_layout so that #render with no arguments
# Overrides #_include_layout? so that #render with no arguments
# doesn't use the layout for api requests
def pick_layout(*args)
api_request? ? nil : super
def _include_layout?(*args)
api_request? ? false : super
end
end

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -16,11 +16,12 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class AttachmentsController < ApplicationController
before_filter :find_project
before_filter :file_readable, :read_authorize, :except => :destroy
before_filter :find_project, :except => :upload
before_filter :file_readable, :read_authorize, :only => [:show, :download, :thumbnail]
before_filter :delete_authorize, :only => :destroy
before_filter :authorize_global, :only => :upload
accept_api_auth :show, :download
accept_api_auth :show, :download, :upload
def show
respond_to do |format|
@@ -29,6 +30,11 @@ class AttachmentsController < ApplicationController
@diff = File.new(@attachment.diskfile, "rb").read
@diff_type = params[:type] || User.current.pref[:diff_type] || 'inline'
@diff_type = 'inline' unless %w(inline sbs).include?(@diff_type)
# Save diff type as user preference
if User.current.logged? && @diff_type != User.current.pref[:diff_type]
User.current.pref[:diff_type] = @diff_type
User.current.preference.save
end
render :action => 'diff'
elsif @attachment.is_text? && @attachment.filesize <= Setting.file_max_size_displayed.to_i.kilobyte
@content = File.new(@attachment.diskfile, "rb").read
@@ -46,20 +52,58 @@ class AttachmentsController < ApplicationController
@attachment.increment_download
end
# images are sent inline
send_file @attachment.diskfile, :filename => filename_for_content_disposition(@attachment.filename),
:type => detect_content_type(@attachment),
:disposition => (@attachment.image? ? 'inline' : 'attachment')
if stale?(:etag => @attachment.digest)
# images are sent inline
send_file @attachment.diskfile, :filename => filename_for_content_disposition(@attachment.filename),
:type => detect_content_type(@attachment),
:disposition => (@attachment.image? ? 'inline' : 'attachment')
end
end
def thumbnail
if @attachment.thumbnailable? && thumbnail = @attachment.thumbnail(:size => params[:size])
if stale?(:etag => thumbnail)
send_file thumbnail,
:filename => filename_for_content_disposition(@attachment.filename),
:type => detect_content_type(@attachment),
:disposition => 'inline'
end
else
# No thumbnail for the attachment or thumbnail could not be created
render :nothing => true, :status => 404
end
end
def upload
# Make sure that API users get used to set this content type
# as it won't trigger Rails' automatic parsing of the request body for parameters
unless request.content_type == 'application/octet-stream'
render :nothing => true, :status => 406
return
end
@attachment = Attachment.new(:file => request.raw_post)
@attachment.author = User.current
@attachment.filename = Redmine::Utils.random_hex(16)
if @attachment.save
respond_to do |format|
format.api { render :action => 'upload', :status => :created }
end
else
respond_to do |format|
format.api { render_validation_errors(@attachment) }
end
end
end
verify :method => :delete, :only => :destroy
def destroy
if @attachment.container.respond_to?(:init_journal)
@attachment.container.init_journal(User.current)
end
# Make sure association callbacks are called
@attachment.container.attachments.delete(@attachment)
redirect_to :back
rescue ::ActionController::RedirectBackError
redirect_to :controller => 'projects', :action => 'show', :id => @project
redirect_to_referer_or project_path(@project)
end
private

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -17,36 +17,31 @@
class AuthSourcesController < ApplicationController
layout 'admin'
menu_item :ldap_authentication
before_filter :require_admin
# GETs should be safe (see http://www.w3.org/2001/tag/doc/whenToUseGet.html)
verify :method => :post, :only => [ :destroy, :create, :update ],
:redirect_to => { :template => :index }
def index
@auth_source_pages, @auth_sources = paginate auth_source_class.name.tableize, :per_page => 10
render "auth_sources/index"
@auth_source_pages, @auth_sources = paginate AuthSource, :per_page => 10
end
def new
@auth_source = auth_source_class.new
render 'auth_sources/new'
klass_name = params[:type] || 'AuthSourceLdap'
@auth_source = AuthSource.new_subclass_instance(klass_name, params[:auth_source])
end
def create
@auth_source = auth_source_class.new(params[:auth_source])
@auth_source = AuthSource.new_subclass_instance(params[:type], params[:auth_source])
if @auth_source.save
flash[:notice] = l(:notice_successful_create)
redirect_to :action => 'index'
else
render 'auth_sources/new'
render :action => 'new'
end
end
def edit
@auth_source = AuthSource.find(params[:id])
render 'auth_sources/edit'
end
def update
@@ -55,17 +50,17 @@ class AuthSourcesController < ApplicationController
flash[:notice] = l(:notice_successful_update)
redirect_to :action => 'index'
else
render 'auth_sources/edit'
render :action => 'edit'
end
end
def test_connection
@auth_method = AuthSource.find(params[:id])
@auth_source = AuthSource.find(params[:id])
begin
@auth_method.test_connection
@auth_source.test_connection
flash[:notice] = l(:notice_successful_connection)
rescue => text
flash[:error] = l(:error_unable_to_connect, text.message)
rescue Exception => e
flash[:error] = l(:error_unable_to_connect, e.message)
end
redirect_to :action => 'index'
end
@@ -78,10 +73,4 @@ class AuthSourcesController < ApplicationController
end
redirect_to :action => 'index'
end
protected
def auth_source_class
AuthSource
end
end

View File

@@ -1,27 +1,44 @@
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class AutoCompletesController < ApplicationController
before_filter :find_project
def issues
@issues = []
q = params[:q].to_s
query = (params[:scope] == "all" && Setting.cross_project_issue_relations?) ? Issue : @project.issues
if q.match(/^\d+$/)
@issues << query.visible.find_by_id(q.to_i)
q = (params[:q] || params[:term]).to_s.strip
if q.present?
scope = (params[:scope] == "all" || @project.nil? ? Issue : @project.issues).visible
if q.match(/^\d+$/)
@issues << scope.find_by_id(q.to_i)
end
@issues += scope.where("LOWER(#{Issue.table_name}.subject) LIKE ?", "%#{q.downcase}%").order("#{Issue.table_name}.id DESC").limit(10).all
@issues.compact!
end
unless q.blank?
@issues += query.visible.find(:all, :conditions => ["LOWER(#{Issue.table_name}.subject) LIKE ?", "%#{q.downcase}%"], :limit => 10)
end
@issues.compact!
render :layout => false
end
private
def find_project
project_id = (params[:issue] && params[:issue][:project_id]) || params[:project_id]
@project = Project.find(project_id)
if params[:project_id].present?
@project = Project.find(params[:project_id])
end
rescue ActiveRecord::RecordNotFound
render_404
end
end

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -17,18 +17,15 @@
class BoardsController < ApplicationController
default_search_scope :messages
before_filter :find_project, :find_board_if_available, :authorize
before_filter :find_project_by_project_id, :find_board_if_available, :authorize
accept_rss_auth :index, :show
helper :messages
include MessagesHelper
helper :sort
include SortHelper
helper :watchers
include WatchersHelper
def index
@boards = @project.boards
@boards = @project.boards.includes(:last_message => :author).all
# show the board if there is only one
if @boards.size == 1
@board = @boards.first
@@ -46,11 +43,11 @@ class BoardsController < ApplicationController
@topic_count = @board.topics.count
@topic_pages = Paginator.new self, @topic_count, per_page_option, params['page']
@topics = @board.topics.find :all, :order => ["#{Message.table_name}.sticky DESC", sort_clause].compact.join(', '),
@topics = @board.topics.reorder("#{Message.table_name}.sticky DESC").order(sort_clause).all(
:include => [:author, {:last_reply => :author}],
:limit => @topic_pages.items_per_page,
:offset => @topic_pages.current.offset
@message = Message.new
:offset => @topic_pages.current.offset)
@message = Message.new(:board => @board)
render :action => 'show', :layout => !request.xhr?
}
format.atom {
@@ -62,20 +59,31 @@ class BoardsController < ApplicationController
end
end
verify :method => :post, :only => [ :destroy ], :redirect_to => { :action => :index }
def new
@board = Board.new(params[:board])
@board.project = @project
if request.post? && @board.save
@board = @project.boards.build
@board.safe_attributes = params[:board]
end
def create
@board = @project.boards.build
@board.safe_attributes = params[:board]
if @board.save
flash[:notice] = l(:notice_successful_create)
redirect_to_settings_in_projects
else
render :action => 'new'
end
end
def edit
if request.post? && @board.update_attributes(params[:board])
end
def update
@board.safe_attributes = params[:board]
if @board.save
redirect_to_settings_in_projects
else
render :action => 'edit'
end
end
@@ -89,12 +97,6 @@ private
redirect_to :controller => 'projects', :action => 'settings', :id => @project, :tab => 'boards'
end
def find_project
@project = Project.find(params[:project_id])
rescue ActiveRecord::RecordNotFound
render_404
end
def find_board_if_available
@board = @project.boards.find(params[:id]) if params[:id]
rescue ActiveRecord::RecordNotFound

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@@ -1,3 +1,20 @@
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class CommentsController < ApplicationController
default_search_scope :news
model_object News
@@ -5,9 +22,11 @@ class CommentsController < ApplicationController
before_filter :find_project_from_association
before_filter :authorize
verify :method => :post, :only => :create, :render => {:nothing => true, :status => :method_not_allowed }
def create
@comment = Comment.new(params[:comment])
raise Unauthorized unless @news.commentable?
@comment = Comment.new
@comment.safe_attributes = params[:comment]
@comment.author = User.current
if @news.comments << @comment
flash[:notice] = l(:label_comment_added)
@@ -16,7 +35,6 @@ class CommentsController < ApplicationController
redirect_to :controller => 'news', :action => 'show', :id => @news
end
verify :method => :delete, :only => :destroy, :render => {:nothing => true, :status => :method_not_allowed }
def destroy
@news.comments.find(params[:comment_id]).destroy
redirect_to :controller => 'news', :action => 'show', :id => @news
@@ -32,5 +50,4 @@ class CommentsController < ApplicationController
@comment = nil
@news
end
end

View File

@@ -1,20 +1,32 @@
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class ContextMenusController < ApplicationController
helper :watchers
helper :issues
def issues
@issues = Issue.visible.all(:conditions => {:id => params[:ids]}, :include => :project)
if (@issues.size == 1)
@issue = @issues.first
@allowed_statuses = @issue.new_statuses_allowed_to(User.current)
else
@allowed_statuses = @issues.map do |i|
i.new_statuses_allowed_to(User.current)
end.inject do |memo,s|
memo & s
end
end
@issue_ids = @issues.map(&:id).sort
@allowed_statuses = @issues.map(&:new_statuses_allowed_to).reduce(:&)
@projects = @issues.collect(&:project).compact.uniq
@project = @projects.first if @projects.size == 1
@@ -34,14 +46,28 @@ class ContextMenusController < ApplicationController
@trackers = @project.trackers
else
#when multiple projects, we only keep the intersection of each set
@assignables = @projects.map(&:assignable_users).inject{|memo,a| memo & a}
@trackers = @projects.map(&:trackers).inject{|memo,t| memo & t}
@assignables = @projects.map(&:assignable_users).reduce(:&)
@trackers = @projects.map(&:trackers).reduce(:&)
end
@versions = @projects.map {|p| p.shared_versions.open}.reduce(:&)
@priorities = IssuePriority.active.reverse
@statuses = IssueStatus.find(:all, :order => 'position')
@back = back_url
@options_by_custom_field = {}
if @can[:edit]
custom_fields = @issues.map(&:available_custom_fields).reduce(:&).select do |f|
%w(bool list user version).include?(f.field_format) && !f.multiple?
end
custom_fields.each do |field|
values = field.possible_values_options(@projects)
if values.any?
@options_by_custom_field[field] = values
end
end
end
@safe_attributes = @issues.map(&:safe_attribute_names).reduce(:&)
render :layout => false
end

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -19,6 +19,8 @@ class CustomFieldsController < ApplicationController
layout 'admin'
before_filter :require_admin
before_filter :build_new_custom_field, :only => [:new, :create]
before_filter :find_custom_field, :only => [:edit, :update, :destroy]
def index
@custom_fields_by_type = CustomField.find(:all).group_by {|f| f.class.name }
@@ -26,39 +28,51 @@ class CustomFieldsController < ApplicationController
end
def new
@custom_field = begin
if params[:type].to_s.match(/.+CustomField$/)
params[:type].to_s.constantize.new(params[:custom_field])
end
rescue
end
(redirect_to(:action => 'index'); return) unless @custom_field.is_a?(CustomField)
end
def create
if request.post? and @custom_field.save
flash[:notice] = l(:notice_successful_create)
call_hook(:controller_custom_fields_new_after_save, :params => params, :custom_field => @custom_field)
redirect_to :action => 'index', :tab => @custom_field.class.name
else
@trackers = Tracker.find(:all, :order => 'position')
render :action => 'new'
end
end
def edit
@custom_field = CustomField.find(params[:id])
if request.post? and @custom_field.update_attributes(params[:custom_field])
end
def update
if request.put? and @custom_field.update_attributes(params[:custom_field])
flash[:notice] = l(:notice_successful_update)
call_hook(:controller_custom_fields_edit_after_save, :params => params, :custom_field => @custom_field)
redirect_to :action => 'index', :tab => @custom_field.class.name
else
@trackers = Tracker.find(:all, :order => 'position')
render :action => 'edit'
end
end
def destroy
@custom_field = CustomField.find(params[:id]).destroy
@custom_field.destroy
redirect_to :action => 'index', :tab => @custom_field.class.name
rescue
flash[:error] = l(:error_can_not_delete_custom_field)
redirect_to :action => 'index'
end
private
def build_new_custom_field
@custom_field = CustomField.new_subclass_instance(params[:type], params[:custom_field])
if @custom_field.nil?
render_404
end
end
def find_custom_field
@custom_field = CustomField.find(params[:id])
rescue ActiveRecord::RecordNotFound
render_404
end
end

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -18,9 +18,9 @@
class DocumentsController < ApplicationController
default_search_scope :documents
model_object Document
before_filter :find_project, :only => [:index, :new]
before_filter :find_model_object, :except => [:index, :new]
before_filter :find_project_from_association, :except => [:index, :new]
before_filter :find_project_by_project_id, :only => [:index, :new, :create]
before_filter :find_model_object, :except => [:index, :new, :create]
before_filter :find_project_from_association, :except => [:index, :new, :create]
before_filter :authorize
helper :attachments
@@ -47,25 +47,38 @@ class DocumentsController < ApplicationController
end
def new
@document = @project.documents.build(params[:document])
if request.post? and @document.save
attachments = Attachment.attach_files(@document, params[:attachments])
@document = @project.documents.build
@document.safe_attributes = params[:document]
end
def create
@document = @project.documents.build
@document.safe_attributes = params[:document]
@document.save_attachments(params[:attachments])
if @document.save
render_attachment_warning_if_needed(@document)
flash[:notice] = l(:notice_successful_create)
redirect_to :action => 'index', :project_id => @project
else
render :action => 'new'
end
end
def edit
@categories = DocumentCategory.active #TODO: use it in the views
if request.post? and @document.update_attributes(params[:document])
end
def update
@document.safe_attributes = params[:document]
if request.put? and @document.save
flash[:notice] = l(:notice_successful_update)
redirect_to :action => 'show', :id => @document
else
render :action => 'edit'
end
end
def destroy
@document.destroy
@document.destroy if request.delete?
redirect_to :controller => 'documents', :action => 'index', :project_id => @project
end
@@ -73,14 +86,9 @@ class DocumentsController < ApplicationController
attachments = Attachment.attach_files(@document, params[:attachments])
render_attachment_warning_if_needed(@document)
Mailer.deliver_attachments_added(attachments[:files]) if attachments.present? && attachments[:files].present? && Setting.notified_events.include?('document_added')
if attachments.present? && attachments[:files].present? && Setting.notified_events.include?('document_added')
Mailer.attachments_added(attachments[:files]).deliver
end
redirect_to :action => 'show', :id => @document
end
private
def find_project
@project = Project.find(params[:project_id])
rescue ActiveRecord::RecordNotFound
render_404
end
end

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -19,28 +19,19 @@ class EnumerationsController < ApplicationController
layout 'admin'
before_filter :require_admin
before_filter :build_new_enumeration, :only => [:new, :create]
before_filter :find_enumeration, :only => [:edit, :update, :destroy]
helper :custom_fields
include CustomFieldsHelper
def index
end
verify :method => :post, :only => [ :destroy, :create, :update ],
:redirect_to => { :action => :index }
def new
begin
@enumeration = params[:type].constantize.new
rescue NameError
@enumeration = Enumeration.new
end
end
def create
@enumeration = Enumeration.new(params[:enumeration])
@enumeration.type = params[:enumeration][:type]
if @enumeration.save
if request.post? && @enumeration.save
flash[:notice] = l(:notice_successful_create)
redirect_to :action => 'index', :type => @enumeration.type
else
@@ -49,13 +40,10 @@ class EnumerationsController < ApplicationController
end
def edit
@enumeration = Enumeration.find(params[:id])
end
def update
@enumeration = Enumeration.find(params[:id])
@enumeration.type = params[:enumeration][:type] if params[:enumeration][:type]
if @enumeration.update_attributes(params[:enumeration])
if request.put? && @enumeration.update_attributes(params[:enumeration])
flash[:notice] = l(:notice_successful_update)
redirect_to :action => 'index', :type => @enumeration.type
else
@@ -64,7 +52,6 @@ class EnumerationsController < ApplicationController
end
def destroy
@enumeration = Enumeration.find(params[:id])
if !@enumeration.in_use?
# No associated objects
@enumeration.destroy
@@ -77,9 +64,22 @@ class EnumerationsController < ApplicationController
return
end
end
@enumerations = @enumeration.class.find(:all) - [@enumeration]
#rescue
# flash[:error] = 'Unable to delete enumeration'
# redirect_to :action => 'index'
@enumerations = @enumeration.class.all - [@enumeration]
end
private
def build_new_enumeration
class_name = params[:enumeration] && params[:enumeration][:type] || params[:type]
@enumeration = Enumeration.new_subclass_instance(class_name, params[:enumeration])
if @enumeration.nil?
render_404
end
end
def find_enumeration
@enumeration = Enumeration.find(params[:id])
rescue ActiveRecord::RecordNotFound
render_404
end
end

View File

@@ -1,3 +1,20 @@
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class FilesController < ApplicationController
menu_item :files
@@ -29,7 +46,7 @@ class FilesController < ApplicationController
render_attachment_warning_if_needed(container)
if !attachments.empty? && !attachments[:files].blank? && Setting.notified_events.include?('file_added')
Mailer.deliver_attachments_added(attachments[:files])
Mailer.attachments_added(attachments[:files]).deliver
end
redirect_to project_files_path(@project)
end

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -19,51 +19,34 @@ class GroupsController < ApplicationController
layout 'admin'
before_filter :require_admin
before_filter :find_group, :except => [:index, :new, :create]
accept_api_auth :index, :show, :create, :update, :destroy, :add_users, :remove_user
helper :custom_fields
# GET /groups
# GET /groups.xml
def index
@groups = Group.find(:all, :order => 'lastname')
@groups = Group.sorted.all
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @groups }
format.html
format.api
end
end
# GET /groups/1
# GET /groups/1.xml
def show
@group = Group.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @group }
format.html
format.api
end
end
# GET /groups/new
# GET /groups/new.xml
def new
@group = Group.new
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @group }
end
end
# GET /groups/1/edit
def edit
@group = Group.find(params[:id], :include => :projects)
end
# POST /groups
# POST /groups.xml
def create
@group = Group.new(params[:group])
@group = Group.new
@group.safe_attributes = params[:group]
respond_to do |format|
if @group.save
@@ -71,102 +54,87 @@ class GroupsController < ApplicationController
flash[:notice] = l(:notice_successful_create)
redirect_to(params[:continue] ? new_group_path : groups_path)
}
format.xml { render :xml => @group, :status => :created, :location => @group }
format.api { render :action => 'show', :status => :created, :location => group_url(@group) }
else
format.html { render :action => "new" }
format.xml { render :xml => @group.errors, :status => :unprocessable_entity }
format.api { render_validation_errors(@group) }
end
end
end
# PUT /groups/1
# PUT /groups/1.xml
def edit
end
def update
@group = Group.find(params[:id])
@group.safe_attributes = params[:group]
respond_to do |format|
if @group.update_attributes(params[:group])
if @group.save
flash[:notice] = l(:notice_successful_update)
format.html { redirect_to(groups_path) }
format.xml { head :ok }
format.api { render_api_ok }
else
format.html { render :action => "edit" }
format.xml { render :xml => @group.errors, :status => :unprocessable_entity }
format.api { render_validation_errors(@group) }
end
end
end
# DELETE /groups/1
# DELETE /groups/1.xml
def destroy
@group = Group.find(params[:id])
@group.destroy
respond_to do |format|
format.html { redirect_to(groups_url) }
format.xml { head :ok }
format.api { render_api_ok }
end
end
def add_users
@group = Group.find(params[:id])
users = User.find_all_by_id(params[:user_ids])
@group.users << users if request.post?
@users = User.find_all_by_id(params[:user_id] || params[:user_ids])
@group.users << @users if request.post?
respond_to do |format|
format.html { redirect_to :controller => 'groups', :action => 'edit', :id => @group, :tab => 'users' }
format.js {
render(:update) {|page|
page.replace_html "tab-content-users", :partial => 'groups/users'
users.each {|user| page.visual_effect(:highlight, "user-#{user.id}") }
}
}
format.js
format.api { render_api_ok }
end
end
def remove_user
@group = Group.find(params[:id])
@group.users.delete(User.find(params[:user_id])) if request.delete?
respond_to do |format|
format.html { redirect_to :controller => 'groups', :action => 'edit', :id => @group, :tab => 'users' }
format.js { render(:update) {|page| page.replace_html "tab-content-users", :partial => 'groups/users'} }
format.js
format.api { render_api_ok }
end
end
def autocomplete_for_user
@group = Group.find(params[:id])
@users = User.active.not_in_group(@group).like(params[:q]).all(:limit => 100)
render :layout => false
end
def edit_membership
@group = Group.find(params[:id])
@membership = Member.edit_membership(params[:membership_id], params[:membership], @group)
@membership.save if request.post?
respond_to do |format|
if @membership.valid?
format.html { redirect_to :controller => 'groups', :action => 'edit', :id => @group, :tab => 'memberships' }
format.js {
render(:update) {|page|
page.replace_html "tab-content-memberships", :partial => 'groups/memberships'
page.visual_effect(:highlight, "member-#{@membership.id}")
}
}
else
format.js {
render(:update) {|page|
page.alert(l(:notice_failed_to_save_members, :errors => @membership.errors.full_messages.join(', ')))
}
}
end
format.html { redirect_to :controller => 'groups', :action => 'edit', :id => @group, :tab => 'memberships' }
format.js
end
end
def destroy_membership
@group = Group.find(params[:id])
Member.find(params[:membership_id]).destroy if request.post?
respond_to do |format|
format.html { redirect_to :controller => 'groups', :action => 'edit', :id => @group, :tab => 'memberships' }
format.js { render(:update) {|page| page.replace_html "tab-content-memberships", :partial => 'groups/memberships'} }
format.js
end
end
private
def find_group
@group = Group.find(params[:id])
rescue ActiveRecord::RecordNotFound
render_404
end
end

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -20,7 +20,7 @@ class IssueCategoriesController < ApplicationController
model_object IssueCategory
before_filter :find_model_object, :except => [:index, :new, :create]
before_filter :find_project_from_association, :except => [:index, :new, :create]
before_filter :find_project, :only => [:index, :new, :create]
before_filter :find_project_by_project_id, :only => [:index, :new, :create]
before_filter :authorize
accept_api_auth :index, :show, :create, :update, :destroy
@@ -39,32 +39,31 @@ class IssueCategoriesController < ApplicationController
end
def new
@category = @project.issue_categories.build(params[:issue_category])
@category = @project.issue_categories.build
@category.safe_attributes = params[:issue_category]
respond_to do |format|
format.html
format.js
end
end
verify :method => :post, :only => :create
def create
@category = @project.issue_categories.build(params[:issue_category])
@category = @project.issue_categories.build
@category.safe_attributes = params[:issue_category]
if @category.save
respond_to do |format|
format.html do
flash[:notice] = l(:notice_successful_create)
redirect_to :controller => 'projects', :action => 'settings', :tab => 'categories', :id => @project
end
format.js do
# IE doesn't support the replace_html rjs method for select box options
render(:update) {|page| page.replace "issue_category_id",
content_tag('select', '<option></option>' + options_from_collection_for_select(@project.issue_categories, 'id', 'name', @category.id), :id => 'issue_category_id', :name => 'issue[category_id]')
}
end
format.js
format.api { render :action => 'show', :status => :created, :location => issue_category_path(@category) }
end
else
respond_to do |format|
format.html { render :action => 'new'}
format.js do
render(:update) {|page| page.alert(@category.errors.full_messages.join('\n')) }
end
format.js { render :action => 'new'}
format.api { render_validation_errors(@category) }
end
end
@@ -73,15 +72,15 @@ class IssueCategoriesController < ApplicationController
def edit
end
verify :method => :put, :only => :update
def update
if @category.update_attributes(params[:issue_category])
@category.safe_attributes = params[:issue_category]
if @category.save
respond_to do |format|
format.html {
flash[:notice] = l(:notice_successful_update)
redirect_to :controller => 'projects', :action => 'settings', :tab => 'categories', :id => @project
}
format.api { head :ok }
format.api { render_api_ok }
end
else
respond_to do |format|
@@ -91,7 +90,6 @@ class IssueCategoriesController < ApplicationController
end
end
verify :method => :delete, :only => :destroy
def destroy
@issue_count = @category.issues.size
if @issue_count == 0 || params[:todo] || api_request?
@@ -102,7 +100,7 @@ class IssueCategoriesController < ApplicationController
@category.destroy(reassign_to)
respond_to do |format|
format.html { redirect_to :controller => 'projects', :action => 'settings', :id => @project, :tab => 'categories' }
format.api { head :ok }
format.api { render_api_ok }
end
return
end
@@ -116,10 +114,4 @@ private
super
@category = @object
end
def find_project
@project = Project.find(params[:project_id])
rescue ActiveRecord::RecordNotFound
render_404
end
end

View File

@@ -1,87 +0,0 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class IssueMovesController < ApplicationController
menu_item :issues
default_search_scope :issues
before_filter :find_issues, :check_project_uniqueness
before_filter :authorize
def new
prepare_for_issue_move
render :layout => false if request.xhr?
end
def create
prepare_for_issue_move
if request.post?
new_tracker = params[:new_tracker_id].blank? ? nil : @target_project.trackers.find_by_id(params[:new_tracker_id])
unsaved_issue_ids = []
moved_issues = []
@issues.each do |issue|
issue.reload
issue.init_journal(User.current)
issue.current_journal.notes = @notes if @notes.present?
call_hook(:controller_issues_move_before_save, { :params => params, :issue => issue, :target_project => @target_project, :copy => !!@copy })
if r = issue.move_to_project(@target_project, new_tracker, {:copy => @copy, :attributes => extract_changed_attributes_for_move(params)})
moved_issues << r
else
unsaved_issue_ids << issue.id
end
end
set_flash_from_bulk_issue_save(@issues, unsaved_issue_ids)
if params[:follow]
if @issues.size == 1 && moved_issues.size == 1
redirect_to :controller => 'issues', :action => 'show', :id => moved_issues.first
else
redirect_to :controller => 'issues', :action => 'index', :project_id => (@target_project || @project)
end
else
redirect_to :controller => 'issues', :action => 'index', :project_id => @project
end
return
end
end
private
def prepare_for_issue_move
@issues.sort!
@copy = params[:copy_options] && params[:copy_options][:copy]
@allowed_projects = Issue.allowed_target_projects_on_move
@target_project = @allowed_projects.detect {|p| p.id.to_s == params[:new_project_id]} if params[:new_project_id]
@target_project ||= @project
@trackers = @target_project.trackers
@available_statuses = Workflow.available_statuses(@project)
@notes = params[:notes]
@notes ||= ''
end
def extract_changed_attributes_for_move(params)
changed_attributes = {}
[:assigned_to_id, :status_id, :start_date, :due_date, :priority_id].each do |valid_attribute|
unless params[valid_attribute].blank?
changed_attributes[valid_attribute] = (params[valid_attribute] == 'none' ? nil : params[valid_attribute])
end
end
changed_attributes
end
end

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -39,27 +39,19 @@ class IssueRelationsController < ApplicationController
end
end
verify :method => :post, :only => :create, :render => {:nothing => true, :status => :method_not_allowed }
def create
@relation = IssueRelation.new(params[:relation])
@relation.issue_from = @issue
if params[:relation] && m = params[:relation][:issue_to_id].to_s.match(/^#?(\d+)$/)
if params[:relation] && m = params[:relation][:issue_to_id].to_s.strip.match(/^#?(\d+)$/)
@relation.issue_to = Issue.visible.find_by_id(m[1].to_i)
end
saved = @relation.save
respond_to do |format|
format.html { redirect_to :controller => 'issues', :action => 'show', :id => @issue }
format.js do
format.js {
@relations = @issue.relations.select {|r| r.other_issue(@issue) && r.other_issue(@issue).visible? }
render :update do |page|
page.replace_html "relations", :partial => 'issues/relations'
if @relation.errors.empty?
page << "$('relation_delay').value = ''"
page << "$('relation_issue_to_id').value = ''"
end
end
end
}
format.api {
if saved
render :action => 'show', :status => :created, :location => relation_url(@relation)
@@ -70,15 +62,14 @@ class IssueRelationsController < ApplicationController
end
end
verify :method => :delete, :only => :destroy, :render => {:nothing => true, :status => :method_not_allowed }
def destroy
raise Unauthorized unless @relation.deletable?
@relation.destroy
respond_to do |format|
format.html { redirect_to :controller => 'issues', :action => 'show', :id => @issue }
format.js { render(:update) {|page| page.remove "relation-#{@relation.id}"} }
format.api { head :ok }
format.html { redirect_to issue_path } # TODO : does this really work since @issue is always nil? What is it useful to?
format.js
format.api { render_api_ok }
end
end

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -62,7 +62,6 @@ class IssueStatusesController < ApplicationController
end
end
verify :method => :delete, :only => :destroy, :redirect_to => { :action => :index }
def destroy
IssueStatus.find(params[:id]).destroy
redirect_to :action => 'index'

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -20,8 +20,7 @@ class IssuesController < ApplicationController
default_search_scope :issues
before_filter :find_issue, :only => [:show, :edit, :update]
before_filter :find_issues, :only => [:bulk_edit, :bulk_update, :move, :perform_move, :destroy]
before_filter :check_project_uniqueness, :only => [:move, :perform_move]
before_filter :find_issues, :only => [:bulk_edit, :bulk_update, :destroy]
before_filter :find_project, :only => [:new, :create]
before_filter :authorize, :except => [:index]
before_filter :find_optional_project, :only => [:index]
@@ -51,17 +50,8 @@ class IssuesController < ApplicationController
include SortHelper
include IssuesHelper
helper :timelog
helper :gantt
include Redmine::Export::PDF
verify :method => [:post, :delete],
:only => :destroy,
:render => { :nothing => true, :status => :method_not_allowed }
verify :method => :post, :only => :create, :render => {:nothing => true, :status => :method_not_allowed }
verify :method => :post, :only => :bulk_update, :render => {:nothing => true, :status => :method_not_allowed }
verify :method => :put, :only => :update, :render => {:nothing => true, :status => :method_not_allowed }
def index
retrieve_query
sort_init(@query.sort_criteria.empty? ? [['id', 'desc']] : @query.sort_criteria)
@@ -113,10 +103,8 @@ class IssuesController < ApplicationController
@journals.each_with_index {|j,i| j.indice = i+1}
@journals.reverse! if User.current.wants_comments_in_reverse_order?
if User.current.allowed_to?(:view_changesets, @project)
@changesets = @issue.changesets.visible.all
@changesets.reverse! if User.current.wants_comments_in_reverse_order?
end
@changesets = @issue.changesets.visible.all
@changesets.reverse! if User.current.wants_comments_in_reverse_order?
@relations = @issue.relations.select {|r| r.other_issue(@issue) && r.other_issue(@issue).visible? }
@allowed_statuses = @issue.new_statuses_allowed_to(User.current)
@@ -124,7 +112,10 @@ class IssuesController < ApplicationController
@priorities = IssuePriority.active
@time_entry = TimeEntry.new(:issue => @issue, :project => @issue.project)
respond_to do |format|
format.html { render :template => 'issues/show' }
format.html {
retrieve_previous_and_next_issue_ids
render :template => 'issues/show'
}
format.api
format.atom { render :template => 'journals/index', :layout => false, :content_type => 'application/atom+xml' }
format.pdf { send_data(issue_to_pdf(@issue), :type => 'application/pdf', :filename => "#{@project.identifier}-#{@issue.id}.pdf") }
@@ -136,20 +127,20 @@ class IssuesController < ApplicationController
def new
respond_to do |format|
format.html { render :action => 'new', :layout => !request.xhr? }
format.js { render :partial => 'attributes' }
format.js { render :partial => 'update_form' }
end
end
def create
call_hook(:controller_issues_new_before_save, { :params => params, :issue => @issue })
@issue.save_attachments(params[:attachments] || (params[:issue] && params[:issue][:uploads]))
if @issue.save
attachments = Attachment.attach_files(@issue, params[:attachments])
call_hook(:controller_issues_new_after_save, { :params => params, :issue => @issue})
respond_to do |format|
format.html {
render_attachment_warning_if_needed(@issue)
flash[:notice] = l(:notice_issue_successful_create, :id => "<a href='#{issue_path(@issue)}'>##{@issue.id}</a>")
redirect_to(params[:continue] ? { :action => 'new', :project_id => @project, :issue => {:tracker_id => @issue.tracker, :parent_issue_id => @issue.parent_issue_id}.reject {|k,v| v.nil?} } :
flash[:notice] = l(:notice_issue_successful_create, :id => view_context.link_to("##{@issue.id}", issue_path(@issue), :title => @issue.subject))
redirect_to(params[:continue] ? { :action => 'new', :project_id => @issue.project, :issue => {:tracker_id => @issue.tracker, :parent_issue_id => @issue.parent_issue_id}.reject {|k,v| v.nil?} } :
{ :action => 'show', :id => @issue })
}
format.api { render :action => 'show', :status => :created, :location => issue_url(@issue) }
@@ -164,9 +155,7 @@ class IssuesController < ApplicationController
end
def edit
update_issue_from_params
@journal = @issue.current_journal
return unless update_issue_from_params
respond_to do |format|
format.html { }
@@ -175,21 +164,27 @@ class IssuesController < ApplicationController
end
def update
update_issue_from_params
return unless update_issue_from_params
@issue.save_attachments(params[:attachments] || (params[:issue] && params[:issue][:uploads]))
saved = false
begin
saved = @issue.save_issue_with_child_records(params, @time_entry)
rescue ActiveRecord::StaleObjectError
@conflict = true
if params[:last_journal_id]
@conflict_journals = @issue.journals_after(params[:last_journal_id]).all
end
end
if @issue.save_issue_with_child_records(params, @time_entry)
if saved
render_attachment_warning_if_needed(@issue)
flash[:notice] = l(:notice_successful_update) unless @issue.current_journal.new_record?
respond_to do |format|
format.html { redirect_back_or_default({:action => 'show', :id => @issue}) }
format.api { head :ok }
format.api { render_api_ok }
end
else
render_attachment_warning_if_needed(@issue)
flash[:notice] = l(:notice_successful_update) unless @issue.current_journal.new_record?
@journal = @issue.current_journal
respond_to do |format|
format.html { render :action => 'edit' }
format.api { render_validation_errors(@issue) }
@@ -197,32 +192,85 @@ class IssuesController < ApplicationController
end
end
# Bulk edit a set of issues
# Bulk edit/copy a set of issues
def bulk_edit
@issues.sort!
@available_statuses = @projects.map{|p|Workflow.available_statuses(p)}.inject{|memo,w|memo & w}
@custom_fields = @projects.map{|p|p.all_issue_custom_fields}.inject{|memo,c|memo & c}
@assignables = @projects.map(&:assignable_users).inject{|memo,a| memo & a}
@trackers = @projects.map(&:trackers).inject{|memo,t| memo & t}
@copy = params[:copy].present?
@notes = params[:notes]
if User.current.allowed_to?(:move_issues, @projects)
@allowed_projects = Issue.allowed_target_projects_on_move
if params[:issue]
@target_project = @allowed_projects.detect {|p| p.id.to_s == params[:issue][:project_id].to_s}
if @target_project
target_projects = [@target_project]
end
end
end
target_projects ||= @projects
if @copy
@available_statuses = [IssueStatus.default]
else
@available_statuses = @issues.map(&:new_statuses_allowed_to).reduce(:&)
end
@custom_fields = target_projects.map{|p|p.all_issue_custom_fields}.reduce(:&)
@assignables = target_projects.map(&:assignable_users).reduce(:&)
@trackers = target_projects.map(&:trackers).reduce(:&)
@versions = target_projects.map {|p| p.shared_versions.open}.reduce(:&)
@categories = target_projects.map {|p| p.issue_categories}.reduce(:&)
if @copy
@attachments_present = @issues.detect {|i| i.attachments.any?}.present?
@subtasks_present = @issues.detect {|i| !i.leaf?}.present?
end
@safe_attributes = @issues.map(&:safe_attribute_names).reduce(:&)
render :layout => false if request.xhr?
end
def bulk_update
@issues.sort!
@copy = params[:copy].present?
attributes = parse_params_for_bulk_issue_attributes(params)
unsaved_issue_ids = []
moved_issues = []
if @copy && params[:copy_subtasks].present?
# Descendant issues will be copied with the parent task
# Don't copy them twice
@issues.reject! {|issue| @issues.detect {|other| issue.is_descendant_of?(other)}}
end
@issues.each do |issue|
issue.reload
if @copy
issue = issue.copy({},
:attachments => params[:copy_attachments].present?,
:subtasks => params[:copy_subtasks].present?
)
end
journal = issue.init_journal(User.current, params[:notes])
issue.safe_attributes = attributes
call_hook(:controller_issues_bulk_edit_before_save, { :params => params, :issue => issue })
unless issue.save
if issue.save
moved_issues << issue
else
# Keep unsaved issue ids to display them in flash error
unsaved_issue_ids << issue.id
end
end
set_flash_from_bulk_issue_save(@issues, unsaved_issue_ids)
redirect_back_or_default({:controller => 'issues', :action => 'index', :project_id => @project})
if params[:follow]
if @issues.size == 1 && moved_issues.size == 1
redirect_to :controller => 'issues', :action => 'show', :id => moved_issues.first
elsif moved_issues.map(&:project).uniq.size == 1
redirect_to :controller => 'issues', :action => 'index', :project_id => moved_issues.map(&:project).first
end
else
redirect_back_or_default({:controller => 'issues', :action => 'index', :project_id => @project})
end
end
def destroy
@@ -255,7 +303,7 @@ class IssuesController < ApplicationController
end
respond_to do |format|
format.html { redirect_back_or_default(:action => 'index', :project_id => @project) }
format.api { head :ok }
format.api { render_api_ok }
end
end
@@ -274,25 +322,58 @@ private
end
def find_project
project_id = (params[:issue] && params[:issue][:project_id]) || params[:project_id]
project_id = params[:project_id] || (params[:issue] && params[:issue][:project_id])
@project = Project.find(project_id)
rescue ActiveRecord::RecordNotFound
render_404
end
def retrieve_previous_and_next_issue_ids
retrieve_query_from_session
if @query
sort_init(@query.sort_criteria.empty? ? [['id', 'desc']] : @query.sort_criteria)
sort_update(@query.sortable_columns, 'issues_index_sort')
limit = 500
issue_ids = @query.issue_ids(:order => sort_clause, :limit => (limit + 1), :include => [:assigned_to, :tracker, :priority, :category, :fixed_version])
if (idx = issue_ids.index(@issue.id)) && idx < limit
if issue_ids.size < 500
@issue_position = idx + 1
@issue_count = issue_ids.size
end
@prev_issue_id = issue_ids[idx - 1] if idx > 0
@next_issue_id = issue_ids[idx + 1] if idx < (issue_ids.size - 1)
end
end
end
# Used by #edit and #update to set some common instance variables
# from the params
# TODO: Refactor, not everything in here is needed by #edit
def update_issue_from_params
@allowed_statuses = @issue.new_statuses_allowed_to(User.current)
@priorities = IssuePriority.active
@edit_allowed = User.current.allowed_to?(:edit_issues, @project)
@time_entry = TimeEntry.new(:issue => @issue, :project => @issue.project)
@time_entry.attributes = params[:time_entry]
@notes = params[:notes] || (params[:issue].present? ? params[:issue][:notes] : nil)
@issue.init_journal(User.current, @notes)
@issue.safe_attributes = params[:issue]
issue_attributes = params[:issue]
if issue_attributes && params[:conflict_resolution]
case params[:conflict_resolution]
when 'overwrite'
issue_attributes = issue_attributes.dup
issue_attributes.delete(:lock_version)
when 'add_notes'
issue_attributes = {}
when 'cancel'
redirect_to issue_path(@issue)
return false
end
end
@issue.safe_attributes = issue_attributes
@priorities = IssuePriority.active
@allowed_statuses = @issue.new_statuses_allowed_to(User.current)
true
end
# TODO: Refactor, lots of extra code in here
@@ -300,7 +381,17 @@ private
def build_new_issue_from_params
if params[:id].blank?
@issue = Issue.new
@issue.copy_from(params[:copy_from]) if params[:copy_from]
if params[:copy_from]
begin
@copy_from = Issue.visible.find(params[:copy_from])
@copy_attachments = params[:copy_attachments].present? || request.get?
@copy_subtasks = params[:copy_subtasks].present? || request.get?
@issue.copy_from(@copy_from, :attachments => @copy_attachments, :subtasks => @copy_subtasks)
rescue ActiveRecord::RecordNotFound
render_404
return
end
end
@issue.project = @project
else
@issue = @project.issues.visible.find(params[:id])
@@ -315,14 +406,11 @@ private
return false
end
@issue.start_date ||= Date.today if Setting.default_issue_start_date_to_creation_date?
if params[:issue].is_a?(Hash)
@issue.safe_attributes = params[:issue]
if User.current.allowed_to?(:add_issue_watchers, @project) && @issue.new_record?
@issue.watcher_user_ids = params[:issue]['watcher_user_ids']
end
end
@issue.safe_attributes = params[:issue]
@priorities = IssuePriority.active
@allowed_statuses = @issue.new_statuses_allowed_to(User.current, true)
@available_watchers = (@issue.project.users.sort + @issue.watcher_users).uniq
end
def check_for_default_issue_status
@@ -335,7 +423,16 @@ private
def parse_params_for_bulk_issue_attributes(params)
attributes = (params[:issue] || {}).reject {|k,v| v.blank?}
attributes.keys.each {|k| attributes[k] = '' if attributes[k] == 'none'}
attributes[:custom_field_values].reject! {|k,v| v.blank?} if attributes[:custom_field_values]
if custom = attributes[:custom_field_values]
custom.reject! {|k,v| v.blank?}
custom.keys.each do |k|
if custom[k].is_a?(Array)
custom[k] << '' if custom[k].delete('__none__')
else
custom[k] = '' if custom[k] == '__none__'
end
end
end
attributes
end
end

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -67,16 +67,8 @@ class JournalsController < ApplicationController
end
# Replaces pre blocks with [...]
text = text.to_s.strip.gsub(%r{<pre>((.|\s)*?)</pre>}m, '[...]')
content = "#{ll(Setting.default_language, :text_user_wrote, user)}\n> "
content << text.gsub(/(\r?\n|\r\n?)/, "\n> ") + "\n\n"
render(:update) { |page|
page.<< "$('notes').value = \"#{escape_javascript content}\";"
page.show 'update'
page << "Form.Element.focus('notes');"
page << "Element.scrollTo('update');"
page << "$('notes').scrollTop = $('notes').scrollHeight - $('notes').clientHeight;"
}
@content = "#{ll(Setting.default_language, :text_user_wrote, user)}\n> "
@content << text.gsub(/(\r?\n|\r\n?)/, "\n> ") + "\n\n"
end
def edit

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -18,10 +18,6 @@
class MailHandlerController < ActionController::Base
before_filter :check_credential
verify :method => :post,
:only => :index,
:render => { :nothing => true, :status => 405 }
# Submits an incoming email to MailHandler
def index
options = params.dup

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -17,84 +17,102 @@
class MembersController < ApplicationController
model_object Member
before_filter :find_model_object, :except => [:new, :autocomplete_for_member]
before_filter :find_project_from_association, :except => [:new, :autocomplete_for_member]
before_filter :find_project, :only => [:new, :autocomplete_for_member]
before_filter :find_model_object, :except => [:index, :create, :autocomplete]
before_filter :find_project_from_association, :except => [:index, :create, :autocomplete]
before_filter :find_project_by_project_id, :only => [:index, :create, :autocomplete]
before_filter :authorize
accept_api_auth :index, :show, :create, :update, :destroy
def new
def index
@offset, @limit = api_offset_and_limit
@member_count = @project.member_principals.count
@member_pages = Paginator.new self, @member_count, @limit, params['page']
@offset ||= @member_pages.current.offset
@members = @project.member_principals.all(
:order => "#{Member.table_name}.id",
:limit => @limit,
:offset => @offset
)
respond_to do |format|
format.html { head 406 }
format.api
end
end
def show
respond_to do |format|
format.html { head 406 }
format.api
end
end
def create
members = []
if params[:member] && request.post?
attrs = params[:member].dup
if (user_ids = attrs.delete(:user_ids))
if params[:membership]
if params[:membership][:user_ids]
attrs = params[:membership].dup
user_ids = attrs.delete(:user_ids)
user_ids.each do |user_id|
members << Member.new(attrs.merge(:user_id => user_id))
members << Member.new(:role_ids => params[:membership][:role_ids], :user_id => user_id)
end
else
members << Member.new(attrs)
members << Member.new(:role_ids => params[:membership][:role_ids], :user_id => params[:membership][:user_id])
end
@project.members << members
end
respond_to do |format|
if members.present? && members.all? {|m| m.valid? }
format.html { redirect_to :controller => 'projects', :action => 'settings', :tab => 'members', :id => @project }
format.js {
render(:update) {|page|
page.replace_html "tab-content-members", :partial => 'projects/settings/members'
page << 'hideOnLoad()'
members.each {|member| page.visual_effect(:highlight, "member-#{member.id}") }
}
}
else
format.js {
render(:update) {|page|
errors = members.collect {|m|
m.errors.full_messages
}.flatten.uniq
page.alert(l(:notice_failed_to_save_members, :errors => errors.join(', ')))
}
}
end
end
end
def edit
if request.post? and @member.update_attributes(params[:member])
respond_to do |format|
format.html { redirect_to :controller => 'projects', :action => 'settings', :tab => 'members', :id => @project }
format.js {
render(:update) {|page|
page.replace_html "tab-content-members", :partial => 'projects/settings/members'
page << 'hideOnLoad()'
page.visual_effect(:highlight, "member-#{@member.id}")
}
}
end
end
end
def destroy
if request.post? && @member.deletable?
@member.destroy
end
respond_to do |format|
format.html { redirect_to :controller => 'projects', :action => 'settings', :tab => 'members', :id => @project }
format.js { render(:update) {|page|
page.replace_html "tab-content-members", :partial => 'projects/settings/members'
page << 'hideOnLoad()'
}
format.js { @members = members }
format.api {
@member = members.first
if @member.valid?
render :action => 'show', :status => :created, :location => membership_url(@member)
else
render_validation_errors(@member)
end
}
end
end
def autocomplete_for_member
@principals = Principal.active.like(params[:q]).find(:all, :limit => 100) - @project.principals
render :layout => false
def update
if params[:membership]
@member.role_ids = params[:membership][:role_ids]
end
saved = @member.save
respond_to do |format|
format.html { redirect_to :controller => 'projects', :action => 'settings', :tab => 'members', :id => @project }
format.js
format.api {
if saved
render_api_ok
else
render_validation_errors(@member)
end
}
end
end
def destroy
if request.delete? && @member.deletable?
@member.destroy
end
respond_to do |format|
format.html { redirect_to :controller => 'projects', :action => 'settings', :tab => 'members', :id => @project }
format.js
format.api {
if @member.destroyed?
render_api_ok
else
head :unprocessable_entity
end
}
end
end
def autocomplete
@principals = Principal.active.not_member_of(@project).like(params[:q]).all(:limit => 100)
render :layout => false
end
end

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -22,9 +22,7 @@ class MessagesController < ApplicationController
before_filter :find_message, :except => [:new, :preview]
before_filter :authorize, :except => [:preview, :edit, :destroy]
verify :method => :post, :only => [ :reply, :destroy ], :redirect_to => { :action => :show }
verify :xhr => true, :only => :quote
helper :boards
helper :watchers
helper :attachments
include AttachmentsHelper
@@ -53,81 +51,73 @@ class MessagesController < ApplicationController
# Create a new topic
def new
@message = Message.new(params[:message])
@message = Message.new
@message.author = User.current
@message.board = @board
if params[:message] && User.current.allowed_to?(:edit_messages, @project)
@message.locked = params[:message]['locked']
@message.sticky = params[:message]['sticky']
end
if request.post? && @message.save
call_hook(:controller_messages_new_after_save, { :params => params, :message => @message})
attachments = Attachment.attach_files(@message, params[:attachments])
render_attachment_warning_if_needed(@message)
redirect_to :action => 'show', :id => @message
@message.safe_attributes = params[:message]
if request.post?
@message.save_attachments(params[:attachments])
if @message.save
call_hook(:controller_messages_new_after_save, { :params => params, :message => @message})
render_attachment_warning_if_needed(@message)
redirect_to board_message_path(@board, @message)
end
end
end
# Reply to a topic
def reply
@reply = Message.new(params[:reply])
@reply = Message.new
@reply.author = User.current
@reply.board = @board
@reply.safe_attributes = params[:reply]
@topic.children << @reply
if !@reply.new_record?
call_hook(:controller_messages_reply_after_save, { :params => params, :message => @reply})
attachments = Attachment.attach_files(@reply, params[:attachments])
render_attachment_warning_if_needed(@reply)
end
redirect_to :action => 'show', :id => @topic, :r => @reply
redirect_to board_message_path(@board, @topic, :r => @reply)
end
# Edit a message
def edit
(render_403; return false) unless @message.editable_by?(User.current)
if params[:message]
@message.locked = params[:message]['locked']
@message.sticky = params[:message]['sticky']
end
if request.post? && @message.update_attributes(params[:message])
@message.safe_attributes = params[:message]
if request.post? && @message.save
attachments = Attachment.attach_files(@message, params[:attachments])
render_attachment_warning_if_needed(@message)
flash[:notice] = l(:notice_successful_update)
@message.reload
redirect_to :action => 'show', :board_id => @message.board, :id => @message.root, :r => (@message.parent_id && @message.id)
redirect_to board_message_path(@message.board, @message.root, :r => (@message.parent_id && @message.id))
end
end
# Delete a messages
def destroy
(render_403; return false) unless @message.destroyable_by?(User.current)
r = @message.to_param
@message.destroy
redirect_to @message.parent.nil? ?
{ :controller => 'boards', :action => 'show', :project_id => @project, :id => @board } :
{ :action => 'show', :id => @message.parent, :r => @message }
if @message.parent
redirect_to board_message_path(@board, @message.parent, :r => r)
else
redirect_to project_board_path(@project, @board)
end
end
def quote
user = @message.author
text = @message.content
subject = @message.subject.gsub('"', '\"')
subject = "RE: #{subject}" unless subject.starts_with?('RE:')
content = "#{ll(Setting.default_language, :text_user_wrote, user)}\\n> "
content << text.to_s.strip.gsub(%r{<pre>((.|\s)*?)</pre>}m, '[...]').gsub('"', '\"').gsub(/(\r?\n|\r\n?)/, "\\n> ") + "\\n\\n"
render(:update) { |page|
page << "$('message_subject').value = \"#{subject}\";"
page.<< "$('message_content').value = \"#{content}\";"
page.show 'reply'
page << "Form.Element.focus('message_content');"
page << "Element.scrollTo('reply');"
page << "$('message_content').scrollTop = $('message_content').scrollHeight - $('message_content').clientHeight;"
}
@subject = @message.subject
@subject = "RE: #{@subject}" unless @subject.starts_with?('RE:')
@content = "#{ll(Setting.default_language, :text_user_wrote, @message.author)}\n> "
@content << @message.content.to_s.strip.gsub(%r{<pre>((.|\s)*?)</pre>}m, '[...]').gsub(/(\r?\n|\r\n?)/, "\n> ") + "\n\n"
end
def preview
message = @board.messages.find_by_id(params[:id])
@attachements = message.attachments if message
@text = (params[:message] || params[:reply])[:content]
@previewed = message
render :partial => 'common/preview'
end

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -35,9 +35,6 @@ class MyController < ApplicationController
'right' => ['issuesreportedbyme']
}.freeze
verify :xhr => true,
:only => [:add_block, :remove_block, :order_blocks]
def index
page
render :action => 'page'
@@ -68,6 +65,24 @@ class MyController < ApplicationController
end
end
# Destroys user's account
def destroy
@user = User.current
unless @user.own_account_deletable?
redirect_to :action => 'account'
return
end
if request.post? && params[:confirm]
@user.destroy
if @user.destroyed?
logout_user
flash[:notice] = l(:notice_account_deleted)
end
redirect_to home_path
end
end
# Manage user's password
def password
@user = User.current
@@ -120,7 +135,11 @@ class MyController < ApplicationController
@user = User.current
@blocks = @user.pref[:my_page_layout] || DEFAULT_LAYOUT.dup
@block_options = []
BLOCKS.each {|k, v| @block_options << [l("my.blocks.#{v}", :default => [v, v.to_s.humanize]), k.dasherize]}
BLOCKS.each do |k, v|
unless %w(top left right).detect {|f| (@blocks[f] ||= []).include?(k)}
@block_options << [l("my.blocks.#{v}", :default => [v, v.to_s.humanize]), k.dasherize]
end
end
end
# Add a block to user's page
@@ -137,7 +156,7 @@ class MyController < ApplicationController
layout['top'].unshift block
@user.pref[:my_page_layout] = layout
@user.pref.save
render :partial => "block", :locals => {:user => @user, :block_name => block}
redirect_to :action => 'page_layout'
end
# Remove a block to user's page
@@ -150,7 +169,7 @@ class MyController < ApplicationController
%w(top left right).each {|f| (layout[f] ||= []).delete block }
@user.pref[:my_page_layout] = layout
@user.pref.save
render :nothing => true
redirect_to :action => 'page_layout'
end
# Change blocks order on user's page
@@ -160,7 +179,8 @@ class MyController < ApplicationController
group = params[:group]
@user = User.current
if group.is_a?(String)
group_items = (params["list-#{group}"] || []).collect(&:underscore)
group_items = (params["blocks"] || []).collect(&:underscore)
group_items.each {|s| s.sub!(/^block_/, '')}
if group_items and group_items.is_a? Array
layout = @user.pref[:my_page_layout] || {}
# remove group blocks if they are presents in other groups

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -20,13 +20,14 @@ class NewsController < ApplicationController
model_object News
before_filter :find_model_object, :except => [:new, :create, :index]
before_filter :find_project_from_association, :except => [:new, :create, :index]
before_filter :find_project, :only => [:new, :create]
before_filter :find_project_by_project_id, :only => [:new, :create]
before_filter :authorize, :except => [:index]
before_filter :find_optional_project, :only => :index
accept_rss_auth :index
accept_api_auth :index
helper :watchers
helper :attachments
def index
case params[:format]
@@ -67,14 +68,14 @@ class NewsController < ApplicationController
def create
@news = News.new(:project => @project, :author => User.current)
if request.post?
@news.attributes = params[:news]
if @news.save
flash[:notice] = l(:notice_successful_create)
redirect_to :controller => 'news', :action => 'index', :project_id => @project
else
render :action => 'new'
end
@news.safe_attributes = params[:news]
@news.save_attachments(params[:attachments])
if @news.save
render_attachment_warning_if_needed(@news)
flash[:notice] = l(:notice_successful_create)
redirect_to :controller => 'news', :action => 'index', :project_id => @project
else
render :action => 'new'
end
end
@@ -82,7 +83,10 @@ class NewsController < ApplicationController
end
def update
if request.put? and @news.update_attributes(params[:news])
@news.safe_attributes = params[:news]
@news.save_attachments(params[:attachments])
if @news.save
render_attachment_warning_if_needed(@news)
flash[:notice] = l(:notice_successful_update)
redirect_to :action => 'show', :id => @news
else
@@ -95,12 +99,7 @@ class NewsController < ApplicationController
redirect_to :action => 'index', :project_id => @project
end
private
def find_project
@project = Project.find(params[:project_id])
rescue ActiveRecord::RecordNotFound
render_404
end
private
def find_optional_project
return true unless params[:project_id]

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@@ -1,3 +1,20 @@
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class ProjectEnumerationsController < ApplicationController
before_filter :find_project_by_project_id
before_filter :authorize

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -29,7 +29,7 @@ class ProjectsController < ApplicationController
after_filter :only => [:create, :edit, :update, :archive, :unarchive, :destroy] do |controller|
if controller.request.post?
controller.send :expire_action, :controller => 'welcome', :action => 'robots.txt'
controller.send :expire_action, :controller => 'welcome', :action => 'robots'
end
end
@@ -48,7 +48,11 @@ class ProjectsController < ApplicationController
def index
respond_to do |format|
format.html {
@projects = Project.visible.find(:all, :order => 'lft')
scope = Project
unless params[:closed]
scope = scope.active
end
@projects = scope.visible.order('lft').all
}
format.api {
@offset, @limit = api_offset_and_limit
@@ -65,14 +69,14 @@ class ProjectsController < ApplicationController
def new
@issue_custom_fields = IssueCustomField.find(:all, :order => "#{CustomField.table_name}.position")
@trackers = Tracker.all
@project = Project.new(params[:project])
@trackers = Tracker.sorted.all
@project = Project.new
@project.safe_attributes = params[:project]
end
verify :method => :post, :only => :create, :render => {:nothing => true, :status => :method_not_allowed }
def create
@issue_custom_fields = IssueCustomField.find(:all, :order => "#{CustomField.table_name}.position")
@trackers = Tracker.all
@trackers = Tracker.sorted.all
@project = Project.new
@project.safe_attributes = params[:project]
@@ -105,7 +109,7 @@ class ProjectsController < ApplicationController
def copy
@issue_custom_fields = IssueCustomField.find(:all, :order => "#{CustomField.table_name}.position")
@trackers = Tracker.all
@trackers = Tracker.sorted.all
@root_projects = Project.find(:all,
:conditions => "parent_id IS NULL AND status = #{Project::STATUS_ACTIVE}",
:order => 'name')
@@ -152,12 +156,8 @@ class ProjectsController < ApplicationController
cond = @project.project_condition(Setting.display_subprojects_issues?)
@open_issues_by_tracker = Issue.visible.count(:group => :tracker,
:include => [:project, :status, :tracker],
:conditions => ["(#{cond}) AND #{IssueStatus.table_name}.is_closed=?", false])
@total_issues_by_tracker = Issue.visible.count(:group => :tracker,
:include => [:project, :status, :tracker],
:conditions => cond)
@open_issues_by_tracker = Issue.visible.open.where(cond).count(:group => :tracker)
@total_issues_by_tracker = Issue.visible.where(cond).count(:group => :tracker)
if User.current.allowed_to?(:view_time_entries, @project)
@total_hours = TimeEntry.visible.sum(:hours, :include => :project, :conditions => cond).to_f
@@ -175,16 +175,13 @@ class ProjectsController < ApplicationController
@issue_custom_fields = IssueCustomField.find(:all, :order => "#{CustomField.table_name}.position")
@issue_category ||= IssueCategory.new
@member ||= @project.members.new
@trackers = Tracker.all
@repository ||= @project.repository
@trackers = Tracker.sorted.all
@wiki ||= @project.wiki
end
def edit
end
# TODO: convert to PUT only
verify :method => [:post, :put], :only => :update, :render => {:nothing => true, :status => :method_not_allowed }
def update
@project.safe_attributes = params[:project]
if validate_parent_id && @project.save
@@ -194,7 +191,7 @@ class ProjectsController < ApplicationController
flash[:notice] = l(:notice_successful_update)
redirect_to :action => 'settings', :id => @project
}
format.api { head :ok }
format.api { render_api_ok }
end
else
respond_to do |format|
@@ -207,7 +204,6 @@ class ProjectsController < ApplicationController
end
end
verify :method => :post, :only => :modules, :render => {:nothing => true, :status => :method_not_allowed }
def modules
@project.enabled_module_names = params[:enabled_module_names]
flash[:notice] = l(:notice_successful_update)
@@ -228,32 +224,31 @@ class ProjectsController < ApplicationController
redirect_to(url_for(:controller => 'admin', :action => 'projects', :status => params[:status]))
end
def close
@project.close
redirect_to project_path(@project)
end
def reopen
@project.reopen
redirect_to project_path(@project)
end
# Delete @project
def destroy
@project_to_destroy = @project
if request.get?
# display confirmation view
else
if api_request? || params[:confirm]
@project_to_destroy.destroy
respond_to do |format|
format.html { redirect_to :controller => 'admin', :action => 'projects' }
format.api { head :ok }
end
if api_request? || params[:confirm]
@project_to_destroy.destroy
respond_to do |format|
format.html { redirect_to :controller => 'admin', :action => 'projects' }
format.api { render_api_ok }
end
end
# hide project in layout
@project = nil
end
private
def find_optional_project
return true unless params[:id]
@project = Project.find(params[:id])
authorize
rescue ActiveRecord::RecordNotFound
render_404
end
private
# Validates parent_id param according to user's permissions
# TODO: move it to Project model in a validation that depends on User.current

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -50,7 +50,6 @@ class QueriesController < ApplicationController
build_query_from_params
end
verify :method => :post, :only => :create, :render => {:nothing => true, :status => :method_not_allowed }
def create
@query = Query.new(params[:query])
@query.user = User.current
@@ -70,7 +69,6 @@ class QueriesController < ApplicationController
def edit
end
verify :method => :put, :only => :update, :render => {:nothing => true, :status => :method_not_allowed }
def update
@query.attributes = params[:query]
@query.project = nil if params[:query_is_for_all]
@@ -86,7 +84,6 @@ class QueriesController < ApplicationController
end
end
verify :method => :delete, :only => :destroy, :render => {:nothing => true, :status => :method_not_allowed }
def destroy
@query.destroy
redirect_to :controller => 'issues', :action => 'index', :project_id => @project, :set_filter => 1

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -22,7 +22,7 @@ class ReportsController < ApplicationController
def issue_report
@trackers = @project.trackers
@versions = @project.shared_versions.sort
@priorities = IssuePriority.all
@priorities = IssuePriority.all.reverse
@categories = @project.issue_categories
@assignees = (Setting.issue_group_assignment? ? @project.principals : @project.users).sort
@authors = @project.users.sort
@@ -53,7 +53,7 @@ class ReportsController < ApplicationController
@report_title = l(:field_version)
when "priority"
@field = "priority_id"
@rows = IssuePriority.all
@rows = IssuePriority.all.reverse
@data = Issue.by_priority(@project)
@report_title = l(:field_priority)
when "category"

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -18,53 +18,78 @@
require 'SVG/Graph/Bar'
require 'SVG/Graph/BarHorizontal'
require 'digest/sha1'
require 'redmine/scm/adapters/abstract_adapter'
class ChangesetNotFound < Exception; end
class InvalidRevisionParam < Exception; end
class RepositoriesController < ApplicationController
menu_item :repository
menu_item :settings, :only => :edit
menu_item :settings, :only => [:new, :create, :edit, :update, :destroy, :committers]
default_search_scope :changesets
before_filter :find_repository, :except => :edit
before_filter :find_project, :only => :edit
before_filter :find_project_by_project_id, :only => [:new, :create]
before_filter :find_repository, :only => [:edit, :update, :destroy, :committers]
before_filter :find_project_repository, :except => [:new, :create, :edit, :update, :destroy, :committers]
before_filter :find_changeset, :only => [:revision, :add_related_issue, :remove_related_issue]
before_filter :authorize
accept_rss_auth :revisions
rescue_from Redmine::Scm::Adapters::CommandFailed, :with => :show_error_command_failed
def edit
@repository = @project.repository
if !@repository && !params[:repository_scm].blank?
@repository = Repository.factory(params[:repository_scm])
@repository.project = @project if @repository
def new
scm = params[:repository_scm] || (Redmine::Scm::Base.all & Setting.enabled_scm).first
@repository = Repository.factory(scm)
@repository.is_default = @project.repository.nil?
@repository.project = @project
end
def create
attrs = pickup_extra_info
@repository = Repository.factory(params[:repository_scm])
@repository.safe_attributes = params[:repository]
if attrs[:attrs_extra].keys.any?
@repository.merge_extra_info(attrs[:attrs_extra])
end
if request.post? && @repository
p1 = params[:repository]
p = {}
p_extra = {}
p1.each do |k, v|
if k =~ /^extra_/
p_extra[k] = v
else
p[k] = v
end
end
@repository.attributes = p
@repository.merge_extra_info(p_extra)
@repository.save
end
render(:update) do |page|
page.replace_html "tab-content-repository",
:partial => 'projects/settings/repository'
if @repository && !@project.repository
@project.reload # needed to reload association
page.replace_html "main-menu", render_main_menu(@project)
end
@repository.project = @project
if request.post? && @repository.save
redirect_to settings_project_path(@project, :tab => 'repositories')
else
render :action => 'new'
end
end
def edit
end
def update
attrs = pickup_extra_info
@repository.safe_attributes = attrs[:attrs]
if attrs[:attrs_extra].keys.any?
@repository.merge_extra_info(attrs[:attrs_extra])
end
@repository.project = @project
if request.put? && @repository.save
redirect_to settings_project_path(@project, :tab => 'repositories')
else
render :action => 'edit'
end
end
def pickup_extra_info
p = {}
p_extra = {}
params[:repository].each do |k, v|
if k =~ /^extra_/
p_extra[k] = v
else
p[k] = v
end
end
{:attrs => p, :attrs_extra => p_extra}
end
private :pickup_extra_info
def committers
@committers = @repository.committers
@users = @project.users
@@ -76,16 +101,13 @@ class RepositoriesController < ApplicationController
# Build a hash with repository usernames as keys and corresponding user ids as values
@repository.committer_ids = params[:committers].values.inject({}) {|h, c| h[c.first] = c.last; h}
flash[:notice] = l(:notice_successful_update)
redirect_to :action => 'committers', :id => @project
redirect_to settings_project_path(@project, :tab => 'repositories')
end
end
def destroy
@repository.destroy
redirect_to :controller => 'projects',
:action => 'settings',
:id => @project,
:tab => 'repository'
@repository.destroy if request.delete?
redirect_to settings_project_path(@project, :tab => 'repositories')
end
def show
@@ -99,6 +121,7 @@ class RepositoriesController < ApplicationController
(show_error_not_found; return) unless @entries
@changesets = @repository.latest_changesets(@path, @rev)
@properties = @repository.properties(@path, @rev)
@repositories = @project.repositories
render :action => 'show'
end
end
@@ -129,7 +152,15 @@ class RepositoriesController < ApplicationController
end
end
def raw
entry_and_raw(true)
end
def entry
entry_and_raw(false)
end
def entry_and_raw(is_raw)
@entry = @repository.entry(@path, @rev)
(show_error_not_found; return) unless @entry
@@ -138,13 +169,14 @@ class RepositoriesController < ApplicationController
@content = @repository.cat(@path, @rev)
(show_error_not_found; return) unless @content
if 'raw' == params[:format] ||
if is_raw ||
(@content.size && @content.size > Setting.file_max_size_displayed.to_i.kilobyte) ||
! is_entry_text_data?(@content, @path)
# Force the download
send_opt = { :filename => filename_for_content_disposition(@path.split('/').last) }
send_type = Redmine::MimeType.of(@path)
send_opt[:type] = send_type.to_s if send_type
send_opt[:disposition] = (Redmine::MimeType.is_type?('image', @path) && !is_raw ? 'inline' : 'attachment')
send_data @content, send_opt
else
# Prevent empty lines when displaying a file with Windows style eol
@@ -154,6 +186,7 @@ class RepositoriesController < ApplicationController
@changeset = @repository.find_changeset_by_name(@rev)
end
end
private :entry_and_raw
def is_entry_text_data?(ent, path)
# UTF-16 contains "\x00".
@@ -186,16 +219,32 @@ class RepositoriesController < ApplicationController
end
def revision
raise ChangesetNotFound if @rev.blank?
@changeset = @repository.find_changeset_by_name(@rev)
raise ChangesetNotFound unless @changeset
respond_to do |format|
format.html
format.js {render :layout => false}
end
rescue ChangesetNotFound
show_error_not_found
end
# Adds a related issue to a changeset
# POST /projects/:project_id/repository/(:repository_id/)revisions/:rev/issues
def add_related_issue
@issue = @changeset.find_referenced_issue_by_id(params[:issue_id])
if @issue && (!@issue.visible? || @changeset.issues.include?(@issue))
@issue = nil
end
if @issue
@changeset.issues << @issue
end
end
# Removes a related issue from a changeset
# DELETE /projects/:project_id/repository/(:repository_id/)revisions/:rev/issues/:issue_id
def remove_related_issue
@issue = Issue.visible.find_by_id(params[:issue_id])
if @issue
@changeset.issues.delete(@issue)
end
end
def diff
@@ -250,14 +299,24 @@ class RepositoriesController < ApplicationController
private
def find_repository
@repository = Repository.find(params[:id])
@project = @repository.project
rescue ActiveRecord::RecordNotFound
render_404
end
REV_PARAM_RE = %r{\A[a-f0-9]*\Z}i
def find_repository
def find_project_repository
@project = Project.find(params[:id])
@repository = @project.repository
if params[:repository_id].present?
@repository = @project.repositories.find_by_identifier_param(params[:repository_id])
else
@repository = @project.repository
end
(render_404; return false) unless @repository
@path = params[:path].join('/') unless params[:path].nil?
@path ||= ''
@path = params[:path].is_a?(Array) ? params[:path].join('/') : params[:path].to_s
@rev = params[:rev].blank? ? @repository.default_branch : params[:rev].to_s.strip
@rev_to = params[:rev_to]
@@ -272,6 +331,13 @@ class RepositoriesController < ApplicationController
show_error_not_found
end
def find_changeset
if @rev.present?
@changeset = @repository.find_changeset_by_name(@rev)
end
show_error_not_found unless @changeset
end
def show_error_not_found
render_error :message => l(:error_scm_not_found), :status => 404
end
@@ -285,17 +351,17 @@ class RepositoriesController < ApplicationController
@date_to = Date.today
@date_from = @date_to << 11
@date_from = Date.civil(@date_from.year, @date_from.month, 1)
commits_by_day = repository.changesets.count(
commits_by_day = Changeset.count(
:all, :group => :commit_date,
:conditions => ["commit_date BETWEEN ? AND ?", @date_from, @date_to])
:conditions => ["repository_id = ? AND commit_date BETWEEN ? AND ?", repository.id, @date_from, @date_to])
commits_by_month = [0] * 12
commits_by_day.each {|c| commits_by_month[c.first.to_date.months_ago] += c.last }
commits_by_day.each {|c| commits_by_month[(@date_to.month - c.first.to_date.month) % 12] += c.last }
changes_by_day = repository.changes.count(
:all, :group => :commit_date,
:conditions => ["commit_date BETWEEN ? AND ?", @date_from, @date_to])
changes_by_day = Change.count(
:all, :group => :commit_date, :include => :changeset,
:conditions => ["#{Changeset.table_name}.repository_id = ? AND #{Changeset.table_name}.commit_date BETWEEN ? AND ?", repository.id, @date_from, @date_to])
changes_by_month = [0] * 12
changes_by_day.each {|c| changes_by_month[c.first.to_date.months_ago] += c.last }
changes_by_day.each {|c| changes_by_month[(@date_to.month - c.first.to_date.month) % 12] += c.last }
fields = []
12.times {|m| fields << month_name(((Date.today.month - 1 - m) % 12) + 1)}
@@ -326,10 +392,10 @@ class RepositoriesController < ApplicationController
end
def graph_commits_per_author(repository)
commits_by_author = repository.changesets.count(:all, :group => :committer)
commits_by_author = Changeset.count(:all, :group => :committer, :conditions => ["repository_id = ?", repository.id])
commits_by_author.to_a.sort! {|x, y| x.last <=> y.last}
changes_by_author = repository.changes.count(:all, :group => :committer)
changes_by_author = Change.count(:all, :group => :committer, :include => :changeset, :conditions => ["#{Changeset.table_name}.repository_id = ?", repository.id])
h = changes_by_author.inject({}) {|o, i| o[i.first] = i.last; o}
fields = commits_by_author.collect {|r| r.first}
@@ -365,19 +431,3 @@ class RepositoriesController < ApplicationController
graph.burn
end
end
class Date
def months_ago(date = Date.today)
(date.year - self.year)*12 + (date.month - self.month)
end
def weeks_ago(date = Date.today)
(date.year - self.year)*52 + (date.cweek - self.cweek)
end
end
class String
def with_leading_slash
starts_with?('/') ? self : "/#{self}"
end
end

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -18,44 +18,60 @@
class RolesController < ApplicationController
layout 'admin'
before_filter :require_admin
verify :method => :post, :only => [ :destroy ],
:redirect_to => { :action => :index }
before_filter :require_admin, :except => :index
before_filter :require_admin_or_api_request, :only => :index
before_filter :find_role, :only => [:edit, :update, :destroy]
accept_api_auth :index
def index
@role_pages, @roles = paginate :roles, :per_page => 25, :order => 'builtin, position'
render :action => "index", :layout => false if request.xhr?
respond_to do |format|
format.html {
@role_pages, @roles = paginate :roles, :per_page => 25, :order => 'builtin, position'
render :action => "index", :layout => false if request.xhr?
}
format.api {
@roles = Role.givable.all
}
end
end
def new
# Prefills the form with 'Non member' role permissions
# Prefills the form with 'Non member' role permissions by default
@role = Role.new(params[:role] || {:permissions => Role.non_member.permissions})
if params[:copy].present? && @copy_from = Role.find_by_id(params[:copy])
@role.copy_from(@copy_from)
end
@roles = Role.sorted.all
end
def create
@role = Role.new(params[:role])
if request.post? && @role.save
# workflow copy
if !params[:copy_workflow_from].blank? && (copy_from = Role.find_by_id(params[:copy_workflow_from]))
@role.workflows.copy(copy_from)
@role.workflow_rules.copy(copy_from)
end
flash[:notice] = l(:notice_successful_create)
redirect_to :action => 'index'
else
@permissions = @role.setable_permissions
@roles = Role.find :all, :order => 'builtin, position'
@roles = Role.sorted.all
render :action => 'new'
end
end
def edit
@role = Role.find(params[:id])
if request.post? and @role.update_attributes(params[:role])
end
def update
if request.put? and @role.update_attributes(params[:role])
flash[:notice] = l(:notice_successful_update)
redirect_to :action => 'index'
else
@permissions = @role.setable_permissions
render :action => 'edit'
end
end
def destroy
@role = Role.find(params[:id])
@role.destroy
redirect_to :action => 'index'
rescue
@@ -63,8 +79,8 @@ class RolesController < ApplicationController
redirect_to :action => 'index'
end
def report
@roles = Role.find(:all, :order => 'builtin, position')
def permissions
@roles = Role.sorted.all
@permissions = Redmine::AccessControl.permissions.select { |p| !p.public? }
if request.post?
@roles.each do |role|
@@ -75,4 +91,12 @@ class RolesController < ApplicationController
redirect_to :action => 'index'
end
end
private
def find_role
@role = Role.find(params[:id])
rescue ActiveRecord::RecordNotFound
render_404
end
end

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -34,7 +34,7 @@ class SearchController < ApplicationController
when 'my_projects'
User.current.memberships.collect(&:project)
when 'subprojects'
@project ? (@project.self_and_descendants.active) : nil
@project ? (@project.self_and_descendants.active.all) : nil
else
@project
end

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -17,6 +17,7 @@
class SettingsController < ApplicationController
layout 'admin'
menu_item :plugins, :only => :plugin
before_filter :require_admin
@@ -51,12 +52,12 @@ class SettingsController < ApplicationController
def plugin
@plugin = Redmine::Plugin.find(params[:id])
if request.post?
Setting["plugin_#{@plugin.id}"] = params[:settings]
Setting.send "plugin_#{@plugin.id}=", params[:settings]
flash[:notice] = l(:notice_successful_update)
redirect_to :action => 'plugin', :id => @plugin.id
else
@partial = @plugin.settings[:partial]
@settings = Setting["plugin_#{@plugin.id}"]
@settings = Setting.send "plugin_#{@plugin.id}"
end
rescue Redmine::PluginNotFound
render_404

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -19,9 +19,16 @@ class SysController < ActionController::Base
before_filter :check_enabled
def projects
p = Project.active.has_module(:repository).find(:all, :include => :repository, :order => 'identifier')
p = Project.active.has_module(:repository).find(
:all,
:include => :repository,
:order => "#{Project.table_name}.identifier"
)
# extra_info attribute from repository breaks activeresource client
render :xml => p.to_xml(:only => [:id, :identifier, :name, :is_public, :status], :include => {:repository => {:only => [:id, :url]}})
render :xml => p.to_xml(
:only => [:id, :identifier, :name, :is_public, :status],
:include => {:repository => {:only => [:id, :url]}}
)
end
def create_project_repository
@@ -30,9 +37,10 @@ class SysController < ActionController::Base
render :nothing => true, :status => 409
else
logger.info "Repository for #{project.name} was reported to be created by #{request.remote_ip}."
project.repository = Repository.factory(params[:vendor], params[:repository])
if project.repository && project.repository.save
render :xml => project.repository.to_xml(:only => [:id, :url]), :status => 201
repository = Repository.factory(params[:vendor], params[:repository])
repository.project = project
if repository.save
render :xml => {repository.class.name.underscore.gsub('/', '-') => {:id => repository.id, :url => repository.url}}, :status => 201
else
render :nothing => true, :status => 422
end
@@ -41,14 +49,22 @@ class SysController < ActionController::Base
def fetch_changesets
projects = []
scope = Project.active.has_module(:repository)
if params[:id]
projects << Project.active.has_module(:repository).find(params[:id])
project = nil
if params[:id].to_s =~ /^\d*$/
project = scope.find(params[:id])
else
project = scope.find_by_identifier(params[:id])
end
raise ActiveRecord::RecordNotFound unless project
projects << project
else
projects = Project.active.has_module(:repository).find(:all, :include => :repository)
projects = scope.all
end
projects.each do |project|
if project.repository
project.repository.fetch_changesets
project.repositories.each do |repository|
repository.fetch_changesets
end
end
render :nothing => true, :status => 200

View File

@@ -1,209 +0,0 @@
class TimeEntryReportsController < ApplicationController
menu_item :issues
before_filter :find_optional_project
before_filter :load_available_criterias
helper :sort
include SortHelper
helper :issues
helper :timelog
include TimelogHelper
helper :custom_fields
include CustomFieldsHelper
def report
@criterias = params[:criterias] || []
@criterias = @criterias.select{|criteria| @available_criterias.has_key? criteria}
@criterias.uniq!
@criterias = @criterias[0,3]
@columns = (params[:columns] && %w(year month week day).include?(params[:columns])) ? params[:columns] : 'month'
retrieve_date_range
unless @criterias.empty?
sql_select = @criterias.collect{|criteria| @available_criterias[criteria][:sql] + " AS " + criteria}.join(', ')
sql_group_by = @criterias.collect{|criteria| @available_criterias[criteria][:sql]}.join(', ')
sql_condition = ''
if @project.nil?
sql_condition = Project.allowed_to_condition(User.current, :view_time_entries)
elsif @issue.nil?
sql_condition = @project.project_condition(Setting.display_subprojects_issues?)
else
sql_condition = "#{Issue.table_name}.root_id = #{@issue.root_id} AND #{Issue.table_name}.lft >= #{@issue.lft} AND #{Issue.table_name}.rgt <= #{@issue.rgt}"
end
sql = "SELECT #{sql_select}, tyear, tmonth, tweek, spent_on, SUM(hours) AS hours"
sql << " FROM #{TimeEntry.table_name}"
sql << time_report_joins
sql << " WHERE"
sql << " (%s) AND" % sql_condition
sql << " (spent_on BETWEEN '%s' AND '%s')" % [ActiveRecord::Base.connection.quoted_date(@from), ActiveRecord::Base.connection.quoted_date(@to)]
sql << " GROUP BY #{sql_group_by}, tyear, tmonth, tweek, spent_on"
@hours = ActiveRecord::Base.connection.select_all(sql)
@hours.each do |row|
case @columns
when 'year'
row['year'] = row['tyear']
when 'month'
row['month'] = "#{row['tyear']}-#{row['tmonth']}"
when 'week'
row['week'] = "#{row['tyear']}-#{row['tweek']}"
when 'day'
row['day'] = "#{row['spent_on']}"
end
end
@total_hours = @hours.inject(0) {|s,k| s = s + k['hours'].to_f}
@periods = []
# Date#at_beginning_of_ not supported in Rails 1.2.x
date_from = @from.to_time
# 100 columns max
while date_from <= @to.to_time && @periods.length < 100
case @columns
when 'year'
@periods << "#{date_from.year}"
date_from = (date_from + 1.year).at_beginning_of_year
when 'month'
@periods << "#{date_from.year}-#{date_from.month}"
date_from = (date_from + 1.month).at_beginning_of_month
when 'week'
@periods << "#{date_from.year}-#{date_from.to_date.cweek}"
date_from = (date_from + 7.day).at_beginning_of_week
when 'day'
@periods << "#{date_from.to_date}"
date_from = date_from + 1.day
end
end
end
respond_to do |format|
format.html { render :layout => !request.xhr? }
format.csv { send_data(report_to_csv(@criterias, @periods, @hours), :type => 'text/csv; header=present', :filename => 'timelog.csv') }
end
end
private
# TODO: duplicated in TimelogController
def find_optional_project
if !params[:issue_id].blank?
@issue = Issue.find(params[:issue_id])
@project = @issue.project
elsif !params[:project_id].blank?
@project = Project.find(params[:project_id])
end
deny_access unless User.current.allowed_to?(:view_time_entries, @project, :global => true)
end
# Retrieves the date range based on predefined ranges or specific from/to param dates
# TODO: duplicated in TimelogController
def retrieve_date_range
@free_period = false
@from, @to = nil, nil
if params[:period_type] == '1' || (params[:period_type].nil? && !params[:period].nil?)
case params[:period].to_s
when 'today'
@from = @to = Date.today
when 'yesterday'
@from = @to = Date.today - 1
when 'current_week'
@from = Date.today - (Date.today.cwday - 1)%7
@to = @from + 6
when 'last_week'
@from = Date.today - 7 - (Date.today.cwday - 1)%7
@to = @from + 6
when '7_days'
@from = Date.today - 7
@to = Date.today
when 'current_month'
@from = Date.civil(Date.today.year, Date.today.month, 1)
@to = (@from >> 1) - 1
when 'last_month'
@from = Date.civil(Date.today.year, Date.today.month, 1) << 1
@to = (@from >> 1) - 1
when '30_days'
@from = Date.today - 30
@to = Date.today
when 'current_year'
@from = Date.civil(Date.today.year, 1, 1)
@to = Date.civil(Date.today.year, 12, 31)
end
elsif params[:period_type] == '2' || (params[:period_type].nil? && (!params[:from].nil? || !params[:to].nil?))
begin; @from = params[:from].to_s.to_date unless params[:from].blank?; rescue; end
begin; @to = params[:to].to_s.to_date unless params[:to].blank?; rescue; end
@free_period = true
else
# default
end
@from, @to = @to, @from if @from && @to && @from > @to
@from ||= (TimeEntry.earilest_date_for_project(@project) || Date.today)
@to ||= (TimeEntry.latest_date_for_project(@project) || Date.today)
end
def load_available_criterias
@available_criterias = { 'project' => {:sql => "#{TimeEntry.table_name}.project_id",
:klass => Project,
:label => :label_project},
'version' => {:sql => "#{Issue.table_name}.fixed_version_id",
:klass => Version,
:label => :label_version},
'category' => {:sql => "#{Issue.table_name}.category_id",
:klass => IssueCategory,
:label => :field_category},
'member' => {:sql => "#{TimeEntry.table_name}.user_id",
:klass => User,
:label => :label_member},
'tracker' => {:sql => "#{Issue.table_name}.tracker_id",
:klass => Tracker,
:label => :label_tracker},
'activity' => {:sql => "#{TimeEntry.table_name}.activity_id",
:klass => TimeEntryActivity,
:label => :label_activity},
'issue' => {:sql => "#{TimeEntry.table_name}.issue_id",
:klass => Issue,
:label => :label_issue}
}
# Add list and boolean custom fields as available criterias
custom_fields = (@project.nil? ? IssueCustomField.for_all : @project.all_issue_custom_fields)
custom_fields.select {|cf| %w(list bool).include? cf.field_format }.each do |cf|
@available_criterias["cf_#{cf.id}"] = {:sql => "(SELECT c.value FROM #{CustomValue.table_name} c WHERE c.custom_field_id = #{cf.id} AND c.customized_type = 'Issue' AND c.customized_id = #{Issue.table_name}.id)",
:format => cf.field_format,
:label => cf.name}
end if @project
# Add list and boolean time entry custom fields
TimeEntryCustomField.find(:all).select {|cf| %w(list bool).include? cf.field_format }.each do |cf|
@available_criterias["cf_#{cf.id}"] = {:sql => "(SELECT c.value FROM #{CustomValue.table_name} c WHERE c.custom_field_id = #{cf.id} AND c.customized_type = 'TimeEntry' AND c.customized_id = #{TimeEntry.table_name}.id)",
:format => cf.field_format,
:label => cf.name}
end
# Add list and boolean time entry activity custom fields
TimeEntryActivityCustomField.find(:all).select {|cf| %w(list bool).include? cf.field_format }.each do |cf|
@available_criterias["cf_#{cf.id}"] = {:sql => "(SELECT c.value FROM #{CustomValue.table_name} c WHERE c.custom_field_id = #{cf.id} AND c.customized_type = 'Enumeration' AND c.customized_id = #{TimeEntry.table_name}.activity_id)",
:format => cf.field_format,
:label => cf.name}
end
call_hook(:controller_timelog_available_criterias, { :available_criterias => @available_criterias, :project => @project })
@available_criterias
end
def time_report_joins
sql = ''
sql << " LEFT JOIN #{Issue.table_name} ON #{TimeEntry.table_name}.issue_id = #{Issue.table_name}.id"
sql << " LEFT JOIN #{Project.table_name} ON #{TimeEntry.table_name}.project_id = #{Project.table_name}.id"
# TODO: rename hook
call_hook(:controller_timelog_time_report_joins, {:sql => sql} )
sql
end
end

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -17,11 +17,16 @@
class TimelogController < ApplicationController
menu_item :issues
before_filter :find_project, :only => [:new, :create]
before_filter :find_project_for_new_time_entry, :only => [:create]
before_filter :find_time_entry, :only => [:show, :edit, :update]
before_filter :find_time_entries, :only => [:bulk_edit, :bulk_update, :destroy]
before_filter :authorize, :except => [:index]
before_filter :find_optional_project, :only => [:index]
before_filter :authorize, :except => [:new, :index, :report]
before_filter :find_optional_project, :only => [:index, :report]
before_filter :find_optional_project_for_new_time_entry, :only => [:new]
before_filter :authorize_global, :only => [:new, :index, :report]
accept_rss_auth :index
accept_api_auth :index, :show, :create, :update, :destroy
@@ -34,67 +39,76 @@ class TimelogController < ApplicationController
def index
sort_init 'spent_on', 'desc'
sort_update 'spent_on' => 'spent_on',
sort_update 'spent_on' => ['spent_on', "#{TimeEntry.table_name}.created_on"],
'user' => 'user_id',
'activity' => 'activity_id',
'project' => "#{Project.table_name}.name",
'issue' => 'issue_id',
'hours' => 'hours'
cond = ARCondition.new
if @issue
cond << "#{Issue.table_name}.root_id = #{@issue.root_id} AND #{Issue.table_name}.lft >= #{@issue.lft} AND #{Issue.table_name}.rgt <= #{@issue.rgt}"
elsif @project
cond << @project.project_condition(Setting.display_subprojects_issues?)
end
retrieve_date_range
cond << ['spent_on BETWEEN ? AND ?', @from, @to]
scope = TimeEntry.visible.spent_between(@from, @to)
if @issue
scope = scope.on_issue(@issue)
elsif @project
scope = scope.on_project(@project, Setting.display_subprojects_issues?)
end
respond_to do |format|
format.html {
# Paginate results
@entry_count = TimeEntry.visible.count(:include => [:project, :issue], :conditions => cond.conditions)
@entry_count = scope.count
@entry_pages = Paginator.new self, @entry_count, per_page_option, params['page']
@entries = TimeEntry.visible.find(:all,
:include => [:project, :activity, :user, {:issue => :tracker}],
:conditions => cond.conditions,
:order => sort_clause,
:limit => @entry_pages.items_per_page,
:offset => @entry_pages.current.offset)
@total_hours = TimeEntry.visible.sum(:hours, :include => [:project, :issue], :conditions => cond.conditions).to_f
@entries = scope.all(
:include => [:project, :activity, :user, {:issue => :tracker}],
:order => sort_clause,
:limit => @entry_pages.items_per_page,
:offset => @entry_pages.current.offset
)
@total_hours = scope.sum(:hours).to_f
render :layout => !request.xhr?
}
format.api {
@entry_count = TimeEntry.visible.count(:include => [:project, :issue], :conditions => cond.conditions)
@entry_count = scope.count
@offset, @limit = api_offset_and_limit
@entries = TimeEntry.visible.find(:all,
:include => [:project, :activity, :user, {:issue => :tracker}],
:conditions => cond.conditions,
:order => sort_clause,
:limit => @limit,
:offset => @offset)
@entries = scope.all(
:include => [:project, :activity, :user, {:issue => :tracker}],
:order => sort_clause,
:limit => @limit,
:offset => @offset
)
}
format.atom {
entries = TimeEntry.visible.find(:all,
:include => [:project, :activity, :user, {:issue => :tracker}],
:conditions => cond.conditions,
:order => "#{TimeEntry.table_name}.created_on DESC",
:limit => Setting.feeds_limit.to_i)
entries = scope.all(
:include => [:project, :activity, :user, {:issue => :tracker}],
:order => "#{TimeEntry.table_name}.created_on DESC",
:limit => Setting.feeds_limit.to_i
)
render_feed(entries, :title => l(:label_spent_time))
}
format.csv {
# Export all entries
@entries = TimeEntry.visible.find(:all,
:include => [:project, :activity, :user, {:issue => [:tracker, :assigned_to, :priority]}],
:conditions => cond.conditions,
:order => sort_clause)
@entries = scope.all(
:include => [:project, :activity, :user, {:issue => [:tracker, :assigned_to, :priority]}],
:order => sort_clause
)
send_data(entries_to_csv(@entries), :type => 'text/csv; header=present', :filename => 'timelog.csv')
}
end
end
def report
retrieve_date_range
@report = Redmine::Helpers::TimeReport.new(@project, @issue, params[:criteria], params[:columns], @from, @to)
respond_to do |format|
format.html { render :layout => !request.xhr? }
format.csv { send_data(report_to_csv(@report), :type => 'text/csv; header=present', :filename => 'timelog.csv') }
end
end
def show
respond_to do |format|
# TODO: Implement html response
@@ -105,44 +119,49 @@ class TimelogController < ApplicationController
def new
@time_entry ||= TimeEntry.new(:project => @project, :issue => @issue, :user => User.current, :spent_on => User.current.today)
@time_entry.attributes = params[:time_entry]
call_hook(:controller_timelog_edit_before_save, { :params => params, :time_entry => @time_entry })
render :action => 'edit'
@time_entry.safe_attributes = params[:time_entry]
end
verify :method => :post, :only => :create, :render => {:nothing => true, :status => :method_not_allowed }
def create
@time_entry ||= TimeEntry.new(:project => @project, :issue => @issue, :user => User.current, :spent_on => User.current.today)
@time_entry.attributes = params[:time_entry]
@time_entry.safe_attributes = params[:time_entry]
call_hook(:controller_timelog_edit_before_save, { :params => params, :time_entry => @time_entry })
if @time_entry.save
respond_to do |format|
format.html {
flash[:notice] = l(:notice_successful_update)
redirect_back_or_default :action => 'index', :project_id => @time_entry.project
flash[:notice] = l(:notice_successful_create)
if params[:continue]
if params[:project_id]
redirect_to :action => 'new', :project_id => @time_entry.project, :issue_id => @time_entry.issue,
:time_entry => {:issue_id => @time_entry.issue_id, :activity_id => @time_entry.activity_id},
:back_url => params[:back_url]
else
redirect_to :action => 'new',
:time_entry => {:project_id => @time_entry.project_id, :issue_id => @time_entry.issue_id, :activity_id => @time_entry.activity_id},
:back_url => params[:back_url]
end
else
redirect_back_or_default :action => 'index', :project_id => @time_entry.project
end
}
format.api { render :action => 'show', :status => :created, :location => time_entry_url(@time_entry) }
end
else
respond_to do |format|
format.html { render :action => 'edit' }
format.html { render :action => 'new' }
format.api { render_validation_errors(@time_entry) }
end
end
end
def edit
@time_entry.attributes = params[:time_entry]
call_hook(:controller_timelog_edit_before_save, { :params => params, :time_entry => @time_entry })
@time_entry.safe_attributes = params[:time_entry]
end
verify :method => :put, :only => :update, :render => {:nothing => true, :status => :method_not_allowed }
def update
@time_entry.attributes = params[:time_entry]
@time_entry.safe_attributes = params[:time_entry]
call_hook(:controller_timelog_edit_before_save, { :params => params, :time_entry => @time_entry })
@@ -152,7 +171,7 @@ class TimelogController < ApplicationController
flash[:notice] = l(:notice_successful_update)
redirect_back_or_default :action => 'index', :project_id => @time_entry.project
}
format.api { head :ok }
format.api { render_api_ok }
end
else
respond_to do |format|
@@ -173,7 +192,7 @@ class TimelogController < ApplicationController
unsaved_time_entry_ids = []
@time_entries.each do |time_entry|
time_entry.reload
time_entry.attributes = attributes
time_entry.safe_attributes = attributes
call_hook(:controller_time_entries_bulk_edit_before_save, { :params => params, :time_entry => time_entry })
unless time_entry.save
# Keep unsaved time_entry ids to display them in flash error
@@ -184,32 +203,31 @@ class TimelogController < ApplicationController
redirect_back_or_default({:controller => 'timelog', :action => 'index', :project_id => @projects.first})
end
verify :method => :delete, :only => :destroy, :render => {:nothing => true, :status => :method_not_allowed }
def destroy
@time_entries.each do |t|
begin
destroyed = TimeEntry.transaction do
@time_entries.each do |t|
unless t.destroy && t.destroyed?
respond_to do |format|
format.html {
flash[:error] = l(:notice_unable_delete_time_entry)
redirect_to :back
}
format.api { render_validation_errors(t) }
end
return
raise ActiveRecord::Rollback
end
rescue ::ActionController::RedirectBackError
redirect_to :action => 'index', :project_id => @projects.first
return
end
end
respond_to do |format|
format.html {
flash[:notice] = l(:notice_successful_delete)
if destroyed
flash[:notice] = l(:notice_successful_delete)
else
flash[:error] = l(:notice_unable_delete_time_entry)
end
redirect_back_or_default(:action => 'index', :project_id => @projects.first)
}
format.api { head :ok }
format.api {
if destroyed
render_api_ok
else
render_validation_errors(@time_entries)
end
}
end
end
@@ -245,20 +263,25 @@ private
end
end
def find_project
def find_optional_project_for_new_time_entry
if (project_id = (params[:project_id] || params[:time_entry] && params[:time_entry][:project_id])).present?
@project = Project.find(project_id)
end
if (issue_id = (params[:issue_id] || params[:time_entry] && params[:time_entry][:issue_id])).present?
@issue = Issue.find(issue_id)
@project = @issue.project
elsif (project_id = (params[:project_id] || params[:time_entry] && params[:time_entry][:project_id])).present?
@project = Project.find(project_id)
else
render_404
return false
@project ||= @issue.project
end
rescue ActiveRecord::RecordNotFound
render_404
end
def find_project_for_new_time_entry
find_optional_project_for_new_time_entry
if @project.nil?
render_404
end
end
def find_optional_project
if !params[:issue_id].blank?
@issue = Issue.find(params[:issue_id])
@@ -266,7 +289,6 @@ private
elsif !params[:project_id].blank?
@project = Project.find(params[:project_id])
end
deny_access unless User.current.allowed_to?(:view_time_entries, @project, :global => true)
end
# Retrieves the date range based on predefined ranges or specific from/to param dates
@@ -311,8 +333,6 @@ private
end
@from, @to = @to, @from if @from && @to && @from > @to
@from ||= (TimeEntry.earilest_date_for_project(@project) || Date.today)
@to ||= (TimeEntry.latest_date_for_project(@project) || Date.today)
end
def parse_params_for_bulk_time_entry_attributes(params)

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -29,7 +29,7 @@ class TrackersController < ApplicationController
render :action => "index", :layout => false if request.xhr?
}
format.api {
@trackers = Tracker.all
@trackers = Tracker.sorted.all
}
end
end
@@ -45,7 +45,7 @@ class TrackersController < ApplicationController
if request.post? and @tracker.save
# workflow copy
if !params[:copy_workflow_from].blank? && (copy_from = Tracker.find_by_id(params[:copy_workflow_from]))
@tracker.workflows.copy(copy_from)
@tracker.workflow_rules.copy(copy_from)
end
flash[:notice] = l(:notice_successful_create)
redirect_to :action => 'index'
@@ -71,7 +71,6 @@ class TrackersController < ApplicationController
render :action => 'edit'
end
verify :method => :delete, :only => :destroy, :redirect_to => { :action => :index }
def destroy
@tracker = Tracker.find(params[:id])
unless @tracker.issues.empty?
@@ -81,4 +80,22 @@ class TrackersController < ApplicationController
end
redirect_to :action => 'index'
end
def fields
if request.post? && params[:trackers]
params[:trackers].each do |tracker_id, tracker_params|
tracker = Tracker.find_by_id(tracker_id)
if tracker
tracker.core_fields = tracker_params[:core_fields]
tracker.custom_field_ids = tracker_params[:custom_field_ids]
tracker.save
end
end
flash[:notice] = l(:notice_successful_update)
redirect_to :action => 'fields'
return
end
@trackers = Tracker.sorted.all
@custom_fields = IssueCustomField.all.sort
end
end

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -38,23 +38,17 @@ class UsersController < ApplicationController
@limit = per_page_option
end
scope = User
scope = scope.in_group(params[:group_id].to_i) if params[:group_id].present?
@status = params[:status] || 1
@status = params[:status] ? params[:status].to_i : 1
c = ARCondition.new(@status == 0 ? "status <> 0" : ["status = ?", @status])
scope = User.logged.status(@status)
scope = scope.like(params[:name]) if params[:name].present?
scope = scope.in_group(params[:group_id]) if params[:group_id].present?
unless params[:name].blank?
name = "%#{params[:name].strip.downcase}%"
c << ["LOWER(login) LIKE ? OR LOWER(firstname) LIKE ? OR LOWER(lastname) LIKE ? OR LOWER(mail) LIKE ?", name, name, name, name]
end
@user_count = scope.count(:conditions => c.conditions)
@user_count = scope.count
@user_pages = Paginator.new self, @user_count, @limit, params['page']
@offset ||= @user_pages.current.offset
@users = scope.find :all,
:order => sort_clause,
:conditions => c.conditions,
:limit => @limit,
:offset => @offset
@@ -92,7 +86,6 @@ class UsersController < ApplicationController
@auth_sources = AuthSource.find(:all)
end
verify :method => :post, :only => :create, :render => {:nothing => true, :status => :method_not_allowed }
def create
@user = User.new(:language => Setting.default_language, :mail_notification => Setting.default_notification_option)
@user.safe_attributes = params[:user]
@@ -100,19 +93,17 @@ class UsersController < ApplicationController
@user.login = params[:user][:login]
@user.password, @user.password_confirmation = params[:user][:password], params[:user][:password_confirmation] unless @user.auth_source_id
# TODO: Similar to My#account
@user.pref.attributes = params[:pref]
@user.pref[:no_self_notified] = (params[:no_self_notified] == '1')
if @user.save
@user.pref.attributes = params[:pref]
@user.pref[:no_self_notified] = (params[:no_self_notified] == '1')
@user.pref.save
@user.notified_project_ids = (@user.mail_notification == 'selected' ? params[:notified_project_ids] : [])
Mailer.deliver_account_information(@user, params[:user][:password]) if params[:send_information]
Mailer.account_information(@user, params[:user][:password]).deliver if params[:send_information]
respond_to do |format|
format.html {
flash[:notice] = l(:notice_successful_create)
flash[:notice] = l(:notice_user_successful_create, :id => view_context.link_to(@user.login, user_path(@user)))
redirect_to(params[:continue] ?
{:controller => 'users', :action => 'new'} :
{:controller => 'users', :action => 'edit', :id => @user}
@@ -137,7 +128,6 @@ class UsersController < ApplicationController
@membership ||= Member.new
end
verify :method => :put, :only => :update, :render => {:nothing => true, :status => :method_not_allowed }
def update
@user.admin = params[:user][:admin] if params[:user][:admin]
@user.login = params[:user][:login] if params[:user][:login]
@@ -156,17 +146,17 @@ class UsersController < ApplicationController
@user.notified_project_ids = (@user.mail_notification == 'selected' ? params[:notified_project_ids] : [])
if was_activated
Mailer.deliver_account_activated(@user)
Mailer.account_activated(@user).deliver
elsif @user.active? && params[:send_information] && !params[:user][:password].blank? && @user.auth_source_id.nil?
Mailer.deliver_account_information(@user, params[:user][:password])
Mailer.account_information(@user, params[:user][:password]).deliver
end
respond_to do |format|
format.html {
flash[:notice] = l(:notice_successful_update)
redirect_to :back
redirect_to_referer_or edit_user_path(@user)
}
format.api { head :ok }
format.api { render_api_ok }
end
else
@auth_sources = AuthSource.find(:all)
@@ -179,49 +169,33 @@ class UsersController < ApplicationController
format.api { render_validation_errors(@user) }
end
end
rescue ::ActionController::RedirectBackError
redirect_to :controller => 'users', :action => 'edit', :id => @user
end
verify :method => :delete, :only => :destroy, :render => {:nothing => true, :status => :method_not_allowed }
def destroy
@user.destroy
respond_to do |format|
format.html { redirect_to(users_url) }
format.api { head :ok }
format.html { redirect_back_or_default(users_url) }
format.api { render_api_ok }
end
end
def edit_membership
@membership = Member.edit_membership(params[:membership_id], params[:membership], @user)
@membership.save if request.post?
@membership.save
respond_to do |format|
if @membership.valid?
format.html { redirect_to :controller => 'users', :action => 'edit', :id => @user, :tab => 'memberships' }
format.js {
render(:update) {|page|
page.replace_html "tab-content-memberships", :partial => 'users/memberships'
page.visual_effect(:highlight, "member-#{@membership.id}")
}
}
else
format.js {
render(:update) {|page|
page.alert(l(:notice_failed_to_save_members, :errors => @membership.errors.full_messages.join(', ')))
}
}
end
format.html { redirect_to :controller => 'users', :action => 'edit', :id => @user, :tab => 'memberships' }
format.js
end
end
def destroy_membership
@membership = Member.find(params[:membership_id])
if request.post? && @membership.deletable?
if @membership.deletable?
@membership.destroy
end
respond_to do |format|
format.html { redirect_to :controller => 'users', :action => 'edit', :id => @user, :tab => 'memberships' }
format.js { render(:update) {|page| page.replace_html "tab-content-memberships", :partial => 'users/memberships'} }
format.js
end
end

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -23,7 +23,7 @@ class VersionsController < ApplicationController
before_filter :find_project, :only => [:index, :new, :create, :close_completed]
before_filter :authorize
accept_api_auth :index, :create, :update, :destroy
accept_api_auth :index, :show, :create, :update, :destroy
helper :custom_fields
helper :projects
@@ -39,17 +39,19 @@ class VersionsController < ApplicationController
@versions = @project.shared_versions || []
@versions += @project.rolled_up_versions.visible if @with_subprojects
@versions = @versions.uniq.sort
@versions.reject! {|version| version.closed? || version.completed? } unless params[:completed]
unless params[:completed]
@completed_versions = @versions.select {|version| version.closed? || version.completed? }
@versions -= @completed_versions
end
@issues_by_version = {}
unless @selected_tracker_ids.empty?
@versions.each do |version|
issues = version.fixed_issues.visible.find(:all,
:include => [:project, :status, :tracker, :priority],
:conditions => {:tracker_id => @selected_tracker_ids, :project_id => project_ids},
:order => "#{Project.table_name}.lft, #{Tracker.table_name}.position, #{Issue.table_name}.id")
@issues_by_version[version] = issues
end
if @selected_tracker_ids.any? && @versions.any?
issues = Issue.visible.all(
:include => [:project, :status, :tracker, :priority, :fixed_version],
:conditions => {:tracker_id => @selected_tracker_ids, :project_id => project_ids, :fixed_version_id => @versions.map(&:id)},
:order => "#{Project.table_name}.lft, #{Tracker.table_name}.position, #{Issue.table_name}.id"
)
@issues_by_version = issues.group_by(&:fixed_version)
end
@versions.reject! {|version| !project_ids.include?(version.project_id) && @issues_by_version[version].blank?}
}
@@ -72,20 +74,20 @@ class VersionsController < ApplicationController
def new
@version = @project.versions.build
if params[:version]
attributes = params[:version].dup
attributes.delete('sharing') unless attributes.nil? || @version.allowed_sharings.include?(attributes['sharing'])
@version.attributes = attributes
@version.safe_attributes = params[:version]
respond_to do |format|
format.html
format.js
end
end
def create
# TODO: refactor with code above in #new
@version = @project.versions.build
if params[:version]
attributes = params[:version].dup
attributes.delete('sharing') unless attributes.nil? || @version.allowed_sharings.include?(attributes['sharing'])
@version.attributes = attributes
@version.safe_attributes = attributes
end
if request.post?
@@ -95,12 +97,7 @@ class VersionsController < ApplicationController
flash[:notice] = l(:notice_successful_create)
redirect_back_or_default :controller => 'projects', :action => 'settings', :tab => 'versions', :id => @project
end
format.js do
# IE doesn't support the replace_html rjs method for select box options
render(:update) {|page| page.replace "issue_fixed_version_id",
content_tag('select', '<option></option>' + version_options_for_select(@project.shared_versions.open, @version), :id => 'issue_fixed_version_id', :name => 'issue[fixed_version_id]')
}
end
format.js
format.api do
render :action => 'show', :status => :created, :location => version_url(@version)
end
@@ -108,9 +105,7 @@ class VersionsController < ApplicationController
else
respond_to do |format|
format.html { render :action => 'new' }
format.js do
render(:update) {|page| page.alert(@version.errors.full_messages.join('\n')) }
end
format.js { render :action => 'new' }
format.api { render_validation_errors(@version) }
end
end
@@ -124,13 +119,14 @@ class VersionsController < ApplicationController
if request.put? && params[:version]
attributes = params[:version].dup
attributes.delete('sharing') unless @version.allowed_sharings.include?(attributes['sharing'])
if @version.update_attributes(attributes)
@version.safe_attributes = attributes
if @version.save
respond_to do |format|
format.html {
flash[:notice] = l(:notice_successful_update)
redirect_back_or_default :controller => 'projects', :action => 'settings', :tab => 'versions', :id => @project
}
format.api { head :ok }
format.api { render_api_ok }
end
else
respond_to do |format|
@@ -148,13 +144,12 @@ class VersionsController < ApplicationController
redirect_to :controller => 'projects', :action => 'settings', :tab => 'versions', :id => @project
end
verify :method => :delete, :only => :destroy, :render => {:nothing => true, :status => :method_not_allowed }
def destroy
if @version.fixed_issues.empty?
@version.destroy
respond_to do |format|
format.html { redirect_back_or_default :controller => 'projects', :action => 'settings', :tab => 'versions', :id => @project }
format.api { head :ok }
format.api { render_api_ok }
end
else
respond_to do |format|
@@ -170,7 +165,7 @@ class VersionsController < ApplicationController
def status_by
respond_to do |format|
format.html { render :action => 'show' }
format.js { render(:update) {|page| page.replace_html 'status_by', render_issue_status_by(@version, params[:status_by])} }
format.js
end
end

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -20,10 +20,6 @@ class WatchersController < ApplicationController
before_filter :require_login, :check_project_privacy, :only => [:watch, :unwatch]
before_filter :authorize, :only => [:new, :destroy]
verify :method => :post,
:only => [ :watch, :unwatch ],
:render => { :nothing => true, :status => :method_not_allowed }
def watch
if @watched.respond_to?(:visible?) && !@watched.visible?(User.current)
render_403
@@ -37,39 +33,54 @@ class WatchersController < ApplicationController
end
def new
@watcher = Watcher.new(params[:watcher])
@watcher.watchable = @watched
@watcher.save if request.post?
respond_to do |format|
format.html { redirect_to :back }
format.js do
render :update do |page|
page.replace_html 'watchers', :partial => 'watchers/watchers', :locals => {:watched => @watched}
end
end
def create
if params[:watcher].is_a?(Hash) && request.post?
user_ids = params[:watcher][:user_ids] || [params[:watcher][:user_id]]
user_ids.each do |user_id|
Watcher.create(:watchable => @watched, :user_id => user_id)
end
end
rescue ::ActionController::RedirectBackError
render :text => 'Watcher added.', :layout => true
respond_to do |format|
format.html { redirect_to_referer_or {render :text => 'Watcher added.', :layout => true}}
format.js
end
end
def append
if params[:watcher].is_a?(Hash)
user_ids = params[:watcher][:user_ids] || [params[:watcher][:user_id]]
@users = User.active.find_all_by_id(user_ids)
end
end
def destroy
@watched.set_watcher(User.find(params[:user_id]), false) if request.post?
respond_to do |format|
format.html { redirect_to :back }
format.js do
render :update do |page|
page.replace_html 'watchers', :partial => 'watchers/watchers', :locals => {:watched => @watched}
end
end
format.js
end
end
def autocomplete_for_user
@users = User.active.like(params[:q]).find(:all, :limit => 100)
if @watched
@users -= @watched.watcher_users
end
render :layout => false
end
private
def find_project
klass = Object.const_get(params[:object_type].camelcase)
return false unless klass.respond_to?('watched_by')
@watched = klass.find(params[:object_id])
@project = @watched.project
if params[:object_type] && params[:object_id]
klass = Object.const_get(params[:object_type].camelcase)
return false unless klass.respond_to?('watched_by')
@watched = klass.find(params[:object_id])
@project = @watched.project
elsif params[:project_id]
@project = Project.visible.find_by_param(params[:project_id])
end
rescue
render_404
end
@@ -77,17 +88,8 @@ private
def set_watcher(user, watching)
@watched.set_watcher(user, watching)
respond_to do |format|
format.html { redirect_to :back }
format.js do
render(:update) do |page|
c = watcher_css(@watched)
page.select(".#{c}").each do |item|
page.replace_html item, watcher_link(@watched, user)
end
end
end
format.html { redirect_to_referer_or {render :text => (watching ? 'Watcher added.' : 'Watcher removed.'), :layout => true}}
format.js { render :partial => 'set_watcher', :locals => {:user => user, :watched => @watched} }
end
rescue ::ActionController::RedirectBackError
render :text => (watching ? 'Watcher added.' : 'Watcher removed.'), :layout => true
end
end

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -73,7 +73,7 @@ class WikiController < ApplicationController
@content = @page.content_for_version(params[:version])
if User.current.allowed_to?(:export_wiki_pages, @project)
if params[:format] == 'pdf'
send_data(wiki_to_pdf(@page, @project), :type => 'application/pdf', :filename => "#{@page.title}.pdf")
send_data(wiki_page_to_pdf(@page, @project), :type => 'application/pdf', :filename => "#{@page.title}.pdf")
return
elsif params[:format] == 'html'
export = render_to_string :action => 'export', :layout => false
@@ -95,7 +95,12 @@ class WikiController < ApplicationController
# edit an existing page or a new one
def edit
return render_403 unless editable?
@page.content = WikiContent.new(:page => @page) if @page.new_record?
if @page.new_record?
@page.content = WikiContent.new(:page => @page)
if params[:parent].present?
@page.parent = @page.wiki.find_page(params[:parent].to_s)
end
end
@content = @page.content_for_version(params[:version])
@content.text = initial_page_content(@page) if @content.text.blank?
@@ -104,7 +109,7 @@ class WikiController < ApplicationController
# To prevent StaleObjectError exception when reverting to a previous version
@content.version = @page.content.version
@text = @content.text
if params[:section].present? && Redmine::WikiFormatting.supports_section_edit?
@section = params[:section].to_i
@@ -113,11 +118,11 @@ class WikiController < ApplicationController
end
end
verify :method => :put, :only => :update, :render => {:nothing => true, :status => :method_not_allowed }
# Creates a new page or updates an existing one
def update
return render_403 unless editable?
@page.content = WikiContent.new(:page => @page) if @page.new_record?
@page.safe_attributes = params[:wiki_page]
@content = @page.content_for_version(params[:version])
@content.text = initial_page_content(@page) if @content.text.blank?
@@ -127,11 +132,12 @@ class WikiController < ApplicationController
if !@page.new_record? && params[:content].present? && @content.text == params[:content][:text]
attachments = Attachment.attach_files(@page, params[:attachments])
render_attachment_warning_if_needed(@page)
# don't save if text wasn't changed
# don't save content if text wasn't changed
@page.save
redirect_to :action => 'show', :project_id => @project, :id => @page.title
return
end
@content.comments = params[:content][:comments]
@text = params[:content][:text]
if params[:section].present? && Redmine::WikiFormatting.supports_section_edit?
@@ -143,8 +149,8 @@ class WikiController < ApplicationController
@content.text = @text
end
@content.author = User.current
# if page is new @page.save will also save content, but not if page isn't a new record
if (@page.new_record? ? @page.save : @content.save)
@page.content = @content
if @page.save
attachments = Attachment.attach_files(@page, params[:attachments])
render_attachment_warning_if_needed(@page)
call_hook(:controller_wiki_edit_after_save, { :params => params, :page => @page})
@@ -157,6 +163,8 @@ class WikiController < ApplicationController
# Optimistic locking exception
flash.now[:error] = l(:notice_locking_conflict)
render :action => 'edit'
rescue ActiveRecord::RecordNotSaved
render :action => 'edit'
end
# rename a page
@@ -171,7 +179,6 @@ class WikiController < ApplicationController
end
end
verify :method => :post, :only => :protect, :redirect_to => { :action => :show }
def protect
@page.update_attribute :protected, params[:protected]
redirect_to :action => 'show', :project_id => @project, :id => @page.title
@@ -201,7 +208,6 @@ class WikiController < ApplicationController
render_404 unless @annotate
end
verify :method => :delete, :only => [:destroy], :redirect_to => { :action => :show }
# Removes a wiki page and its history
# Children can be either set as root pages, removed or reassigned to another parent page
def destroy
@@ -231,14 +237,17 @@ class WikiController < ApplicationController
redirect_to :action => 'index', :project_id => @project
end
# Export wiki to a single html file
# Export wiki to a single pdf or html file
def export
if User.current.allowed_to?(:export_wiki_pages, @project)
@pages = @wiki.pages.find :all, :order => 'title'
export = render_to_string :action => 'export_multiple', :layout => false
send_data(export, :type => 'text/html', :filename => "wiki.html")
else
redirect_to :action => 'show', :project_id => @project, :id => nil
@pages = @wiki.pages.all(:order => 'title', :include => [:content, :attachments], :limit => 75)
respond_to do |format|
format.html {
export = render_to_string :action => 'export_multiple', :layout => false
send_data(export, :type => 'text/html', :filename => "wiki.html")
}
format.pdf {
send_data(wiki_pages_to_pdf(@pages, @project), :type => 'application/pdf', :filename => "#{@project.identifier}.pdf")
}
end
end

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -22,9 +22,8 @@ class WikisController < ApplicationController
# Create or update a project's wiki
def edit
@wiki = @project.wiki || Wiki.new(:project => @project)
@wiki.attributes = params[:wiki]
@wiki.safe_attributes = params[:wiki]
@wiki.save if request.post?
render(:update) {|page| page.replace_html "tab-content-wiki", :partial => 'projects/settings/wiki'}
end
# Delete a project's wiki

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -18,30 +18,27 @@
class WorkflowsController < ApplicationController
layout 'admin'
before_filter :require_admin
before_filter :find_roles
before_filter :find_trackers
before_filter :require_admin, :find_roles, :find_trackers
def index
@workflow_counts = Workflow.count_by_tracker_and_role
@workflow_counts = WorkflowTransition.count_by_tracker_and_role
end
def edit
@role = Role.find_by_id(params[:role_id])
@tracker = Tracker.find_by_id(params[:tracker_id])
@role = Role.find_by_id(params[:role_id]) if params[:role_id]
@tracker = Tracker.find_by_id(params[:tracker_id]) if params[:tracker_id]
if request.post?
Workflow.destroy_all( ["role_id=? and tracker_id=?", @role.id, @tracker.id])
WorkflowTransition.destroy_all( ["role_id=? and tracker_id=?", @role.id, @tracker.id])
(params[:issue_status] || []).each { |status_id, transitions|
transitions.each { |new_status_id, options|
author = options.is_a?(Array) && options.include?('author') && !options.include?('always')
assignee = options.is_a?(Array) && options.include?('assignee') && !options.include?('always')
@role.workflows.build(:tracker_id => @tracker.id, :old_status_id => status_id, :new_status_id => new_status_id, :author => author, :assignee => assignee)
WorkflowTransition.create(:role_id => @role.id, :tracker_id => @tracker.id, :old_status_id => status_id, :new_status_id => new_status_id, :author => author, :assignee => assignee)
}
}
if @role.save
flash[:notice] = l(:notice_successful_update)
redirect_to :action => 'edit', :role_id => @role, :tracker_id => @tracker
redirect_to :action => 'edit', :role_id => @role, :tracker_id => @tracker, :used_statuses_only => params[:used_statuses_only]
return
end
end
@@ -50,10 +47,10 @@ class WorkflowsController < ApplicationController
if @tracker && @used_statuses_only && @tracker.issue_statuses.any?
@statuses = @tracker.issue_statuses
end
@statuses ||= IssueStatus.find(:all, :order => 'position')
@statuses ||= IssueStatus.sorted.all
if @tracker && @role && @statuses.any?
workflows = Workflow.all(:conditions => {:role_id => @role.id, :tracker_id => @tracker.id})
workflows = WorkflowTransition.where(:role_id => @role.id, :tracker_id => @tracker.id).all
@workflows = {}
@workflows['always'] = workflows.select {|w| !w.author && !w.assignee}
@workflows['author'] = workflows.select {|w| w.author}
@@ -61,6 +58,35 @@ class WorkflowsController < ApplicationController
end
end
def permissions
@role = Role.find_by_id(params[:role_id]) if params[:role_id]
@tracker = Tracker.find_by_id(params[:tracker_id]) if params[:tracker_id]
if request.post? && @role && @tracker
WorkflowPermission.replace_permissions(@tracker, @role, params[:permissions] || {})
redirect_to :action => 'permissions', :role_id => @role, :tracker_id => @tracker, :used_statuses_only => params[:used_statuses_only]
return
end
@used_statuses_only = (params[:used_statuses_only] == '0' ? false : true)
if @tracker && @used_statuses_only && @tracker.issue_statuses.any?
@statuses = @tracker.issue_statuses
end
@statuses ||= IssueStatus.sorted.all
if @role && @tracker
@fields = (Tracker::CORE_FIELDS_ALL - @tracker.disabled_core_fields).map {|field| [field, l("field_"+field.sub(/_id$/, ''))]}
@custom_fields = @tracker.custom_fields
@permissions = WorkflowPermission.where(:tracker_id => @tracker.id, :role_id => @role.id).all.inject({}) do |h, w|
h[w.old_status_id] ||= {}
h[w.old_status_id][w.field_name] = w.rule
h
end
@statuses.each {|status| @permissions[status.id] ||= {}}
end
end
def copy
if params[:source_tracker_id].blank? || params[:source_tracker_id] == 'any'
@@ -83,7 +109,7 @@ class WorkflowsController < ApplicationController
elsif @target_trackers.nil? || @target_roles.nil?
flash.now[:error] = l(:error_workflow_copy_target)
else
Workflow.copy(@source_tracker, @source_role, @target_trackers, @target_roles)
WorkflowRule.copy(@source_tracker, @source_role, @target_trackers, @target_roles)
flash[:notice] = l(:notice_successful_update)
redirect_to :action => 'copy', :source_tracker_id => @source_tracker, :source_role_id => @source_role
end
@@ -93,10 +119,10 @@ class WorkflowsController < ApplicationController
private
def find_roles
@roles = Role.find(:all, :order => 'builtin, position')
@roles = Role.sorted.all
end
def find_trackers
@trackers = Tracker.find(:all, :order => 'position')
@trackers = Tracker.sorted.all
end
end

View File

@@ -1,5 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@@ -1,5 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -18,6 +20,8 @@
module AdminHelper
def project_status_options_for_select(selected)
options_for_select([[l(:label_all), ''],
[l(:status_active), 1]], selected)
[l(:project_status_active), '1'],
[l(:project_status_closed), '5'],
[l(:project_status_archived), '9']], selected.to_s)
end
end

View File

@@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -43,12 +43,6 @@ module ApplicationHelper
link_to(name, options, html_options, *parameters_for_method_reference) if authorize_for(options[:controller] || params[:controller], options[:action])
end
# Display a link to remote if user is authorized
def link_to_remote_if_authorized(name, options = {}, html_options = nil)
url = options[:url] || {}
link_to_remote(name, options, html_options) if authorize_for(url[:controller] || params[:controller], url[:action])
end
# Displays a link to user's account page if active
def link_to_user(user, options={})
if user.is_a?(User)
@@ -85,8 +79,8 @@ module ApplicationHelper
s = link_to "#{h(issue.tracker)} ##{issue.id}", {:controller => "issues", :action => "show", :id => issue},
:class => issue.css_classes,
:title => title
s << ": #{h subject}" if subject
s = "#{h issue.project} - " + s if options[:project]
s << h(": #{subject}") if subject
s = h("#{issue.project} - ") + s if options[:project]
s
end
@@ -97,21 +91,29 @@ module ApplicationHelper
def link_to_attachment(attachment, options={})
text = options.delete(:text) || attachment.filename
action = options.delete(:download) ? 'download' : 'show'
opt_only_path = {}
opt_only_path[:only_path] = (options[:only_path] == false ? false : true)
options.delete(:only_path)
link_to(h(text),
{:controller => 'attachments', :action => action,
:id => attachment, :filename => attachment.filename },
:id => attachment, :filename => attachment.filename}.merge(opt_only_path),
options)
end
# Generates a link to a SCM revision
# Options:
# * :text - Link text (default to the formatted revision)
def link_to_revision(revision, project, options={})
def link_to_revision(revision, repository, options={})
if repository.is_a?(Project)
repository = repository.repository
end
text = options.delete(:text) || format_revision(revision)
rev = revision.respond_to?(:identifier) ? revision.identifier : revision
link_to(h(text), {:controller => 'repositories', :action => 'revision', :id => project, :rev => rev},
:title => l(:label_revision_id, format_revision(revision)))
link_to(
h(text),
{:controller => 'repositories', :action => 'revision', :id => repository.project, :repository_id => repository.identifier_param, :rev => rev},
:title => l(:label_revision_id, format_revision(revision))
)
end
# Generates a link to a message
@@ -120,7 +122,7 @@ module ApplicationHelper
h(truncate(message.subject, :length => 60)),
{ :controller => 'messages', :action => 'show',
:board_id => message.board_id,
:id => message.root,
:id => (message.parent_id || message.id),
:r => (message.parent_id && message.id),
:anchor => (message.parent_id ? "message-#{message.id}" : nil)
}.merge(options),
@@ -137,17 +139,23 @@ module ApplicationHelper
# link_to_project(project, {}, :class => "project") # => html options with default url (project overview)
#
def link_to_project(project, options={}, html_options = nil)
if project.active?
if project.archived?
h(project)
else
url = {:controller => 'projects', :action => 'show', :id => project}.merge(options)
link_to(h(project), url, html_options)
else
h(project)
end
end
def thumbnail_tag(attachment)
link_to image_tag(url_for(:controller => 'attachments', :action => 'thumbnail', :id => attachment)),
{:controller => 'attachments', :action => 'show', :id => attachment, :filename => attachment.filename},
:title => attachment.filename
end
def toggle_link(name, id, options={})
onclick = "Element.toggle('#{id}'); "
onclick << (options[:focus] ? "Form.Element.focus('#{options[:focus]}'); " : "this.blur(); ")
onclick = "$('##{id}').toggle(); "
onclick << (options[:focus] ? "$('##{options[:focus]}').focus(); " : "this.blur(); ")
onclick << "return false;"
link_to(name, "#", :onclick => onclick)
end
@@ -160,21 +168,17 @@ module ApplicationHelper
}))
end
def prompt_to_remote(name, text, param, url, html_options = {})
html_options[:onclick] = "promptToRemote('#{text}', '#{param}', '#{url_for(url)}'); return false;"
link_to name, {}, html_options
end
def format_activity_title(text)
h(truncate_single_line(text, :length => 100))
end
def format_activity_day(date)
date == Date.today ? l(:label_today).titleize : format_date(date)
date == User.current.today ? l(:label_today).titleize : format_date(date)
end
def format_activity_description(text)
h(truncate(text.to_s, :length => 120).gsub(%r{[\r\n]*<(pre|code)>.*$}m, '...')).gsub(/[\r\n]+/, "<br />")
h(truncate(text.to_s, :length => 120).gsub(%r{[\r\n]*<(pre|code)>.*$}m, '...')
).gsub(/[\r\n]+/, "<br />").html_safe
end
def format_version_name(version)
@@ -191,6 +195,39 @@ module ApplicationHelper
end
end
# Renders a tree of projects as a nested set of unordered lists
# The given collection may be a subset of the whole project tree
# (eg. some intermediate nodes are private and can not be seen)
def render_project_nested_lists(projects)
s = ''
if projects.any?
ancestors = []
original_project = @project
projects.sort_by(&:lft).each do |project|
# set the project environment to please macros.
@project = project
if (ancestors.empty? || project.is_descendant_of?(ancestors.last))
s << "<ul class='projects #{ ancestors.empty? ? 'root' : nil}'>\n"
else
ancestors.pop
s << "</li>"
while (ancestors.any? && !project.is_descendant_of?(ancestors.last))
ancestors.pop
s << "</ul></li>\n"
end
end
classes = (ancestors.empty? ? 'root' : 'child')
s << "<li class='#{classes}'><div class='#{classes}'>"
s << h(block_given? ? yield(project) : project.name)
s << "</div>\n"
ancestors << project
end
s << ("</li></ul>\n" * ancestors.size)
@project = original_project
end
s.html_safe
end
def render_page_hierarchy(pages, node=nil, options={})
content = ''
if pages[node]
@@ -211,7 +248,7 @@ module ApplicationHelper
def render_flash_messages
s = ''
flash.each do |k,v|
s << content_tag('div', v, :class => "flash #{k}")
s << content_tag('div', v.html_safe, :class => "flash #{k}", :id => "flash_#{k}")
end
s.html_safe
end
@@ -228,23 +265,24 @@ module ApplicationHelper
# Renders the project quick-jump box
def render_project_jump_box
return unless User.current.logged?
projects = User.current.memberships.collect(&:project).compact.uniq
projects = User.current.memberships.collect(&:project).compact.select(&:active?).uniq
if projects.any?
s = '<select onchange="if (this.value != \'\') { window.location = this.value; }">' +
"<option value=''>#{ l(:label_jump_to_a_project) }</option>" +
'<option value="" disabled="disabled">---</option>'
s << project_tree_options_for_select(projects, :selected => @project) do |p|
{ :value => url_for(:controller => 'projects', :action => 'show', :id => p, :jump => current_menu_item) }
options =
("<option value=''>#{ l(:label_jump_to_a_project) }</option>" +
'<option value="" disabled="disabled">---</option>').html_safe
options << project_tree_options_for_select(projects, :selected => @project) do |p|
{ :value => project_path(:id => p, :jump => current_menu_item) }
end
s << '</select>'
s.html_safe
select_tag('project_quick_jump_box', options, :onchange => 'if (this.value != \'\') { window.location = this.value; }')
end
end
def project_tree_options_for_select(projects, options = {})
s = ''
project_tree(projects) do |project, level|
name_prefix = (level > 0 ? ('&nbsp;' * 2 * level + '&#187; ') : '')
name_prefix = (level > 0 ? '&nbsp;' * 2 * level + '&#187; ' : '').html_safe
tag_options = {:value => project.id}
if project == options[:selected] || (options[:selected].respond_to?(:include?) && options[:selected].include?(project))
tag_options[:selected] = 'selected'
@@ -264,30 +302,6 @@ module ApplicationHelper
Project.project_tree(projects, &block)
end
def project_nested_ul(projects, &block)
s = ''
if projects.any?
ancestors = []
projects.sort_by(&:lft).each do |project|
if (ancestors.empty? || project.is_descendant_of?(ancestors.last))
s << "<ul>\n"
else
ancestors.pop
s << "</li>"
while (ancestors.any? && !project.is_descendant_of?(ancestors.last))
ancestors.pop
s << "</ul></li>\n"
end
end
s << "<li>"
s << yield(project).to_s
ancestors << project
end
s << ("</li></ul>\n" * ancestors.size)
end
s.html_safe
end
def principals_check_box_tags(name, principals)
s = ''
principals.sort.each do |principal|
@@ -299,6 +313,9 @@ module ApplicationHelper
# Returns a string for users/groups option tags
def principals_options_for_select(collection, selected=nil)
s = ''
if collection.include?(User.current)
s << content_tag('option', "<< #{l(:label_me)} >>", :value => User.current.id)
end
groups = ''
collection.sort.each do |element|
selected_attribute = ' selected="selected"' if option_value_selected?(element, selected)
@@ -307,7 +324,7 @@ module ApplicationHelper
unless groups.empty?
s << %(<optgroup label="#{h(l(:label_group_plural))}">#{groups}</optgroup>)
end
s
s.html_safe
end
# Truncates and returns the string as a single line
@@ -325,6 +342,10 @@ module ApplicationHelper
end
end
def anchor(text)
text.to_s.gsub(' ', '_')
end
def html_hours(text)
text.gsub(%r{(\d+)\.(\d+)}, '<span class="hours hours-int">\1</span><span class="hours hours-dec">.\2</span>').html_safe
end
@@ -336,18 +357,25 @@ module ApplicationHelper
def time_tag(time)
text = distance_of_time_in_words(Time.now, time)
if @project
link_to(text, {:controller => 'activities', :action => 'index', :id => @project, :from => time.to_date}, :title => format_time(time))
link_to(text, {:controller => 'activities', :action => 'index', :id => @project, :from => User.current.time_to_date(time)}, :title => format_time(time))
else
content_tag('acronym', text, :title => format_time(time))
end
end
def syntax_highlight_lines(name, content)
lines = []
syntax_highlight(name, content).each_line { |line| lines << line }
lines
end
def syntax_highlight(name, content)
Redmine::SyntaxHighlighting.highlight_by_filename(content, name)
end
def to_path_param(path)
path.to_s.split(%r{[/\\]}).select {|p| !p.blank?}
str = path.to_s.split(%r{[/\\]}).select{|p| !p.blank?}.join("/")
str.blank? ? nil : str
end
def pagination_links_full(paginator, count=nil, options={})
@@ -376,7 +404,7 @@ module ApplicationHelper
unless count.nil?
html << " (#{paginator.current.first_item}-#{paginator.current.last_item}/#{count})"
if per_page_links != false && links = per_page_links(paginator.items_per_page)
if per_page_links != false && links = per_page_links(paginator.items_per_page, count)
html << " | #{links}"
end
end
@@ -384,11 +412,23 @@ module ApplicationHelper
html.html_safe
end
def per_page_links(selected=nil)
links = Setting.per_page_options_array.collect do |n|
def per_page_links(selected=nil, item_count=nil)
values = Setting.per_page_options_array
if item_count && values.any?
if item_count > values.first
max = values.detect {|value| value >= item_count} || item_count
else
max = item_count
end
values = values.select {|value| value <= max || value == selected}
end
if values.empty? || (values.size == 1 && values.first == selected)
return nil
end
links = values.collect do |n|
n == selected ? n : link_to_content_update(n, params.merge(:per_page => n))
end
links.size > 1 ? l(:label_display_per_page, links.join(', ')) : nil
l(:label_display_per_page, links.join(', '))
end
def reorder_links(name, url, method = :post)
@@ -457,8 +497,8 @@ module ApplicationHelper
css << 'theme-' + theme.name
end
css << 'controller-' + params[:controller]
css << 'action-' + params[:action]
css << 'controller-' + controller_name
css << 'action-' + action_name
css.join(' ')
end
@@ -487,24 +527,30 @@ module ApplicationHelper
project = options[:project] || @project || (obj && obj.respond_to?(:project) ? obj.project : nil)
only_path = options.delete(:only_path) == false ? false : true
text = text.dup
macros = catch_macros(text)
text = Redmine::WikiFormatting.to_html(Setting.text_formatting, text, :object => obj, :attribute => attr)
@parsed_headings = []
@heading_anchors = {}
@current_section = 0 if options[:edit_section_links]
text = parse_non_pre_blocks(text) do |text|
[:parse_sections, :parse_inline_attachments, :parse_wiki_links, :parse_redmine_links, :parse_macros, :parse_headings].each do |method_name|
parse_sections(text, project, obj, attr, only_path, options)
text = parse_non_pre_blocks(text, obj, macros) do |text|
[:parse_inline_attachments, :parse_wiki_links, :parse_redmine_links].each do |method_name|
send method_name, text, project, obj, attr, only_path, options
end
end
parse_headings(text, project, obj, attr, only_path, options)
if @parsed_headings.any?
replace_toc(text, @parsed_headings)
end
text
text.html_safe
end
def parse_non_pre_blocks(text)
def parse_non_pre_blocks(text, obj, macros)
s = StringScanner.new(text)
tags = []
parsed = ''
@@ -513,6 +559,9 @@ module ApplicationHelper
text, full_tag, closing, tag = s[1], s[2], s[3], s[4]
if tags.empty?
yield text
inject_macros(text, obj, macros) if macros.any?
else
inject_macros(text, obj, macros, false) if macros.any?
end
parsed << text
if tag
@@ -530,7 +579,7 @@ module ApplicationHelper
while tag = tags.pop
parsed << "</#{tag}>"
end
parsed.html_safe
parsed
end
def parse_inline_attachments(text, project, obj, attr, only_path, options)
@@ -547,9 +596,9 @@ module ApplicationHelper
if !desc.blank? && alttext.blank?
alt = " title=\"#{desc}\" alt=\"#{desc}\""
end
"src=\"#{image_url}\"#{alt}".html_safe
"src=\"#{image_url}\"#{alt}"
else
m.html_safe
m
end
end
end
@@ -593,16 +642,18 @@ module ApplicationHelper
when :anchor; "##{page.present? ? Wiki.titleize(page) : title}" + (anchor.present? ? "_#{anchor}" : '') # used for single-file wiki export
else
wiki_page_id = page.present? ? Wiki.titleize(page) : nil
url_for(:only_path => only_path, :controller => 'wiki', :action => 'show', :project_id => link_project, :id => wiki_page_id, :anchor => anchor)
parent = wiki_page.nil? && obj.is_a?(WikiContent) && obj.page && project == link_project ? obj.page.title : nil
url_for(:only_path => only_path, :controller => 'wiki', :action => 'show', :project_id => link_project,
:id => wiki_page_id, :anchor => anchor, :parent => parent)
end
end
link_to(title.present? ? title.html_safe : h(page), url, :class => ('wiki-page' + (wiki_page ? '' : ' new')))
else
# project or wiki doesn't exist
all.html_safe
all
end
else
all.html_safe
all
end
end
end
@@ -640,26 +691,35 @@ module ApplicationHelper
# identifier:version:1.0.0
# identifier:source:some/file
def parse_redmine_links(text, project, obj, attr, only_path, options)
text.gsub!(%r{([\s\(,\-\[\>]|^)(!)?(([a-z0-9\-]+):)?(attachment|document|version|forum|news|commit|source|export|message|project)?((#|r)(\d+)|(:)([^"\s<>][^\s<>]*?|"[^"]+?"))(?=(?=[[:punct:]]\W)|,|\s|\]|<|$)}) do |m|
leading, esc, project_prefix, project_identifier, prefix, sep, identifier = $1, $2, $3, $4, $5, $7 || $9, $8 || $10
text.gsub!(%r{([\s\(,\-\[\>]|^)(!)?(([a-z0-9\-_]+):)?(attachment|document|version|forum|news|message|project|commit|source|export)?(((#)|((([a-z0-9\-]+)\|)?(r)))((\d+)((#note)?-(\d+))?)|(:)([^"\s<>][^\s<>]*?|"[^"]+?"))(?=(?=[[:punct:]][^A-Za-z0-9_/])|,|\s|\]|<|$)}) do |m|
leading, esc, project_prefix, project_identifier, prefix, repo_prefix, repo_identifier, sep, identifier, comment_suffix, comment_id = $1, $2, $3, $4, $5, $10, $11, $8 || $12 || $18, $14 || $19, $15, $17
link = nil
if project_identifier
project = Project.visible.find_by_identifier(project_identifier)
end
if esc.nil?
if prefix.nil? && sep == 'r'
# project.changesets.visible raises an SQL error because of a double join on repositories
if project && project.repository && (changeset = Changeset.visible.find_by_repository_id_and_revision(project.repository.id, identifier))
link = link_to(h("#{project_prefix}r#{identifier}"), {:only_path => only_path, :controller => 'repositories', :action => 'revision', :id => project, :rev => changeset.revision},
:class => 'changeset',
:title => truncate_single_line(changeset.comments, :length => 100))
if project
repository = nil
if repo_identifier
repository = project.repositories.detect {|repo| repo.identifier == repo_identifier}
else
repository = project.repository
end
# project.changesets.visible raises an SQL error because of a double join on repositories
if repository && (changeset = Changeset.visible.find_by_repository_id_and_revision(repository.id, identifier))
link = link_to(h("#{project_prefix}#{repo_prefix}r#{identifier}"), {:only_path => only_path, :controller => 'repositories', :action => 'revision', :id => project, :repository_id => repository.identifier_param, :rev => changeset.revision},
:class => 'changeset',
:title => truncate_single_line(changeset.comments, :length => 100))
end
end
elsif sep == '#'
oid = identifier.to_i
case prefix
when nil
if issue = Issue.visible.find_by_id(oid, :include => :status)
link = link_to("##{oid}", {:only_path => only_path, :controller => 'issues', :action => 'show', :id => oid},
if oid.to_s == identifier && issue = Issue.visible.find_by_id(oid, :include => :status)
anchor = comment_id ? "note-#{comment_id}" : nil
link = link_to("##{oid}", {:only_path => only_path, :controller => 'issues', :action => 'show', :id => oid, :anchor => anchor},
:class => issue.css_classes,
:title => "#{truncate(issue.subject, :length => 100)} (#{issue.status.name})")
end
@@ -716,22 +776,34 @@ module ApplicationHelper
link = link_to h(news.title), {:only_path => only_path, :controller => 'news', :action => 'show', :id => news},
:class => 'news'
end
when 'commit'
if project && project.repository && (changeset = Changeset.visible.find(:first, :conditions => ["repository_id = ? AND scmid LIKE ?", project.repository.id, "#{name}%"]))
link = link_to h("#{project_prefix}#{name}"), {:only_path => only_path, :controller => 'repositories', :action => 'revision', :id => project, :rev => changeset.identifier},
:class => 'changeset',
:title => truncate_single_line(h(changeset.comments), :length => 100)
end
when 'source', 'export'
if project && project.repository && User.current.allowed_to?(:browse_repository, project)
name =~ %r{^[/\\]*(.*?)(@([0-9a-f]+))?(#(L\d+))?$}
path, rev, anchor = $1, $3, $5
link = link_to h("#{project_prefix}#{prefix}:#{name}"), {:controller => 'repositories', :action => 'entry', :id => project,
:path => to_path_param(path),
:rev => rev,
:anchor => anchor,
:format => (prefix == 'export' ? 'raw' : nil)},
:class => (prefix == 'export' ? 'source download' : 'source')
when 'commit', 'source', 'export'
if project
repository = nil
if name =~ %r{^(([a-z0-9\-]+)\|)(.+)$}
repo_prefix, repo_identifier, name = $1, $2, $3
repository = project.repositories.detect {|repo| repo.identifier == repo_identifier}
else
repository = project.repository
end
if prefix == 'commit'
if repository && (changeset = Changeset.visible.find(:first, :conditions => ["repository_id = ? AND scmid LIKE ?", repository.id, "#{name}%"]))
link = link_to h("#{project_prefix}#{repo_prefix}#{name}"), {:only_path => only_path, :controller => 'repositories', :action => 'revision', :id => project, :repository_id => repository.identifier_param, :rev => changeset.identifier},
:class => 'changeset',
:title => truncate_single_line(h(changeset.comments), :length => 100)
end
else
if repository && User.current.allowed_to?(:browse_repository, project)
name =~ %r{^[/\\]*(.*?)(@([0-9a-f]+))?(#(L\d+))?$}
path, rev, anchor = $1, $3, $5
link = link_to h("#{project_prefix}#{prefix}:#{repo_prefix}#{name}"), {:controller => 'repositories', :action => 'entry', :id => project, :repository_id => repository.identifier_param,
:path => to_path_param(path),
:rev => rev,
:anchor => anchor,
:format => (prefix == 'export' ? 'raw' : nil)},
:class => (prefix == 'export' ? 'source download' : 'source')
end
end
repo_prefix = nil
end
when 'attachment'
attachments = options[:attachments] || (obj && obj.respond_to?(:attachments) ? obj.attachments : nil)
@@ -746,23 +818,24 @@ module ApplicationHelper
end
end
end
(leading + (link || "#{project_prefix}#{prefix}#{sep}#{identifier}")).html_safe
(leading + (link || "#{project_prefix}#{prefix}#{repo_prefix}#{sep}#{identifier}#{comment_suffix}"))
end
end
HEADING_RE = /(<h(1|2|3|4)( [^>]+)?>(.+?)<\/h(1|2|3|4)>)/i unless const_defined?(:HEADING_RE)
HEADING_RE = /(<h(\d)( [^>]+)?>(.+?)<\/h(\d)>)/i unless const_defined?(:HEADING_RE)
def parse_sections(text, project, obj, attr, only_path, options)
return unless options[:edit_section_links]
text.gsub!(HEADING_RE) do
heading = $1
@current_section += 1
if @current_section > 1
content_tag('div',
link_to(image_tag('edit.png'), options[:edit_section_links].merge(:section => @current_section)),
:class => 'contextual',
:title => l(:button_edit_section)) + $1
:title => l(:button_edit_section)) + heading.html_safe
else
$1
heading
end
end
end
@@ -778,36 +851,67 @@ module ApplicationHelper
anchor = sanitize_anchor_name(item)
# used for single-file wiki export
anchor = "#{obj.page.title}_#{anchor}" if options[:wiki_links] == :anchor && (obj.is_a?(WikiContent) || obj.is_a?(WikiContent::Version))
@heading_anchors[anchor] ||= 0
idx = (@heading_anchors[anchor] += 1)
if idx > 1
anchor = "#{anchor}-#{idx}"
end
@parsed_headings << [level, anchor, item]
"<a name=\"#{anchor}\"></a>\n<h#{level} #{attrs}>#{content}<a href=\"##{anchor}\" class=\"wiki-anchor\">&para;</a></h#{level}>"
end
end
MACROS_RE = /
MACROS_RE = /(
(!)? # escaping
(
\{\{ # opening tag
([\w]+) # macro name
(\(([^\}]*)\))? # optional arguments
(\(([^\n\r]*?)\))? # optional arguments
([\n\r].*?[\n\r])? # optional block of text
\}\} # closing tag
)
/x unless const_defined?(:MACROS_RE)
)/mx unless const_defined?(:MACROS_RE)
# Macros substitution
def parse_macros(text, project, obj, attr, only_path, options)
MACRO_SUB_RE = /(
\{\{
macro\((\d+)\)
\}\}
)/x unless const_defined?(:MACRO_SUB_RE)
# Extracts macros from text
def catch_macros(text)
macros = {}
text.gsub!(MACROS_RE) do
esc, all, macro = $1, $2, $3.downcase
args = ($5 || '').split(',').each(&:strip)
if esc.nil?
begin
exec_macro(macro, obj, args)
rescue => e
"<div class=\"flash error\">Error executing the <strong>#{macro}</strong> macro (#{e})</div>"
end || all
all, macro = $1, $4.downcase
if macro_exists?(macro) || all =~ MACRO_SUB_RE
index = macros.size
macros[index] = all
"{{macro(#{index})}}"
else
all
end
end
macros
end
# Executes and replaces macros in text
def inject_macros(text, obj, macros, execute=true)
text.gsub!(MACRO_SUB_RE) do
all, index = $1, $2.to_i
orig = macros.delete(index)
if execute && orig && orig =~ MACROS_RE
esc, all, macro, args, block = $2, $3, $4.downcase, $6.to_s, $7.try(:strip)
if esc.nil?
h(exec_macro(macro, obj, args, block) || all)
else
h(all)
end
elsif orig
h(orig)
else
h(all)
end
end
end
TOC_RE = /<p>\{\{([<>]?)toc\}\}<\/p>/i unless const_defined?(:TOC_RE)
@@ -815,6 +919,8 @@ module ApplicationHelper
# Renders the TOC with given headings
def replace_toc(text, headings)
text.gsub!(TOC_RE) do
# Keep only the 4 first levels
headings = headings.select{|level, anchor, item| level <= 4}
if headings.empty?
''
else
@@ -862,26 +968,78 @@ module ApplicationHelper
content_tag("label", label_text)
end
def labelled_tabular_form_for(*args, &proc)
args << {} unless args.last.is_a?(Hash)
options = args.last
options[:html] ||= {}
options[:html][:class] = 'tabular' unless options[:html].has_key?(:class)
options.merge!({:builder => TabularFormBuilder})
form_for(*args, &proc)
end
def labelled_form_for(*args, &proc)
args << {} unless args.last.is_a?(Hash)
options = args.last
options.merge!({:builder => TabularFormBuilder})
if args.first.is_a?(Symbol)
options.merge!(:as => args.shift)
end
options.merge!({:builder => Redmine::Views::LabelledFormBuilder})
form_for(*args, &proc)
end
def labelled_fields_for(*args, &proc)
args << {} unless args.last.is_a?(Hash)
options = args.last
options.merge!({:builder => Redmine::Views::LabelledFormBuilder})
fields_for(*args, &proc)
end
def labelled_remote_form_for(*args, &proc)
ActiveSupport::Deprecation.warn "ApplicationHelper#labelled_remote_form_for is deprecated and will be removed in Redmine 2.2."
args << {} unless args.last.is_a?(Hash)
options = args.last
options.merge!({:builder => Redmine::Views::LabelledFormBuilder, :remote => true})
form_for(*args, &proc)
end
def error_messages_for(*objects)
html = ""
objects = objects.map {|o| o.is_a?(String) ? instance_variable_get("@#{o}") : o}.compact
errors = objects.map {|o| o.errors.full_messages}.flatten
if errors.any?
html << "<div id='errorExplanation'><ul>\n"
errors.each do |error|
html << "<li>#{h error}</li>\n"
end
html << "</ul></div>\n"
end
html.html_safe
end
def delete_link(url, options={})
options = {
:method => :delete,
:data => {:confirm => l(:text_are_you_sure)},
:class => 'icon icon-del'
}.merge(options)
link_to l(:button_delete), url, options
end
def preview_link(url, form, target='preview', options={})
content_tag 'a', l(:label_preview), {
:href => "#",
:onclick => %|submitPreview("#{escape_javascript url_for(url)}", "#{escape_javascript form}", "#{escape_javascript target}"); return false;|,
:accesskey => accesskey(:preview)
}.merge(options)
end
def link_to_function(name, function, html_options={})
content_tag(:a, name, {:href => '#', :onclick => "#{function}; return false;"}.merge(html_options))
end
def back_url
url = params[:back_url]
if url.nil? && referer = request.env['HTTP_REFERER']
url = CGI.unescape(referer.to_s)
end
url
end
def back_url_hidden_field_tag
back_url = params[:back_url] || request.env['HTTP_REFERER']
back_url = CGI.unescape(back_url.to_s)
hidden_field_tag('back_url', CGI.escape(back_url)) unless back_url.blank?
url = back_url
hidden_field_tag('back_url', url, :id => nil) unless url.blank?
end
def check_all_links(form_name)
@@ -925,55 +1083,91 @@ module ApplicationHelper
end
@context_menu_included = true
end
javascript_tag "new ContextMenu('#{ url_for(url) }')"
end
def context_menu_link(name, url, options={})
options[:class] ||= ''
if options.delete(:selected)
options[:class] << ' icon-checked disabled'
options[:disabled] = true
end
if options.delete(:disabled)
options.delete(:method)
options.delete(:confirm)
options.delete(:onclick)
options[:class] << ' disabled'
url = '#'
end
link_to h(name), url, options
javascript_tag "contextMenuInit('#{ url_for(url) }')"
end
def calendar_for(field_id)
include_calendar_headers_tags
image_tag("calendar.png", {:id => "#{field_id}_trigger",:class => "calendar-trigger"}) +
javascript_tag("Calendar.setup({inputField : '#{field_id}', ifFormat : '%Y-%m-%d', button : '#{field_id}_trigger' });")
javascript_tag("$(function() { $('##{field_id}').datepicker(datepickerOptions); });")
end
def include_calendar_headers_tags
unless @calendar_headers_tags_included
@calendar_headers_tags_included = true
content_for :header_tags do
start_of_week = case Setting.start_of_week.to_i
when 1
'Calendar._FD = 1;' # Monday
when 7
'Calendar._FD = 0;' # Sunday
when 6
'Calendar._FD = 6;' # Saturday
else
'' # use language
end
start_of_week = Setting.start_of_week
start_of_week = l(:general_first_day_of_week, :default => '1') if start_of_week.blank?
# Redmine uses 1..7 (monday..sunday) in settings and locales
# JQuery uses 0..6 (sunday..saturday), 7 needs to be changed to 0
start_of_week = start_of_week.to_i % 7
javascript_include_tag('calendar/calendar') +
javascript_include_tag("calendar/lang/calendar-#{current_language.to_s.downcase}.js") +
javascript_tag(start_of_week) +
javascript_include_tag('calendar/calendar-setup') +
stylesheet_link_tag('calendar')
tags = javascript_tag(
"var datepickerOptions={dateFormat: 'yy-mm-dd', firstDay: #{start_of_week}, " +
"showOn: 'button', buttonImageOnly: true, buttonImage: '" +
path_to_image('/images/calendar.png') +
"', showButtonPanel: true};")
jquery_locale = l('jquery.locale', :default => current_language.to_s)
unless jquery_locale == 'en'
tags << javascript_include_tag("i18n/jquery.ui.datepicker-#{jquery_locale}.js")
end
tags
end
end
end
# Overrides Rails' stylesheet_link_tag with themes and plugins support.
# Examples:
# stylesheet_link_tag('styles') # => picks styles.css from the current theme or defaults
# stylesheet_link_tag('styles', :plugin => 'foo) # => picks styles.css from plugin's assets
#
def stylesheet_link_tag(*sources)
options = sources.last.is_a?(Hash) ? sources.pop : {}
plugin = options.delete(:plugin)
sources = sources.map do |source|
if plugin
"/plugin_assets/#{plugin}/stylesheets/#{source}"
elsif current_theme && current_theme.stylesheets.include?(source)
current_theme.stylesheet_path(source)
else
source
end
end
super sources, options
end
# Overrides Rails' image_tag with themes and plugins support.
# Examples:
# image_tag('image.png') # => picks image.png from the current theme or defaults
# image_tag('image.png', :plugin => 'foo) # => picks image.png from plugin's assets
#
def image_tag(source, options={})
if plugin = options.delete(:plugin)
source = "/plugin_assets/#{plugin}/images/#{source}"
elsif current_theme && current_theme.images.include?(source)
source = current_theme.image_path(source)
end
super source, options
end
# Overrides Rails' javascript_include_tag with plugins support
# Examples:
# javascript_include_tag('scripts') # => picks scripts.js from defaults
# javascript_include_tag('scripts', :plugin => 'foo) # => picks scripts.js from plugin's assets
#
def javascript_include_tag(*sources)
options = sources.last.is_a?(Hash) ? sources.pop : {}
if plugin = options.delete(:plugin)
sources = sources.map do |source|
if plugin
"/plugin_assets/#{plugin}/javascripts/#{source}"
else
source
end
end
end
super sources, options
end
def content_for(name, content = nil, &block)
@has_content ||= {}
@has_content[name] = true
@@ -984,6 +1178,14 @@ module ApplicationHelper
(@has_content && @has_content[name]) || false
end
def sidebar_content?
has_content?(:sidebar) || view_layouts_base_sidebar_hook_response.present?
end
def view_layouts_base_sidebar_hook_response
@view_layouts_base_sidebar_hook_response ||= call_hook(:view_layouts_base_sidebar)
end
def email_delivery_enabled?
!!ActionMailer::Base.perform_deliveries
end
@@ -992,7 +1194,7 @@ module ApplicationHelper
# +user+ can be a User or a string that will be scanned for an email address (eg. 'joe <joe@foo.bar>')
def avatar(user, options = { })
if Setting.gravatar_enabled?
options.merge!({:ssl => (defined?(request) && request.ssl?), :default => Setting.gravatar_default})
options.merge!({:ssl => (request && request.ssl?), :default => Setting.gravatar_default})
email = nil
if user.respond_to?(:mail)
email = user.mail
@@ -1006,14 +1208,19 @@ module ApplicationHelper
end
def sanitize_anchor_name(anchor)
anchor.gsub(%r{[^\w\s\-]}, '').gsub(%r{\s+(\-+\s*)?}, '-')
if ''.respond_to?(:encoding) || RUBY_PLATFORM == 'java'
anchor.gsub(%r{[^\p{Word}\s\-]}, '').gsub(%r{\s+(\-+\s*)?}, '-')
else
# TODO: remove when ruby1.8 is no longer supported
anchor.gsub(%r{[^\w\s\-]}, '').gsub(%r{\s+(\-+\s*)?}, '-')
end
end
# Returns the javascript tags that are included in the html layout head
def javascript_heads
tags = javascript_include_tag(:defaults)
tags = javascript_include_tag('jquery-1.7.2-ui-1.8.21-ujs-2.0.3', 'application')
unless User.current.pref.warn_on_leaving_unsaved == '0'
tags << "\n".html_safe + javascript_tag("Event.observe(window, 'load', function(){ new WarnLeavingUnsaved('#{escape_javascript( l(:text_warn_on_leaving_unsaved) )}'); });")
tags << "\n".html_safe + javascript_tag("$(window).load(function(){ warnLeavingUnsaved('#{escape_javascript l(:text_warn_on_leaving_unsaved)}'); });")
end
tags
end

View File

@@ -1,5 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -19,12 +21,14 @@ module AttachmentsHelper
# Displays view/delete links to the attachments of the given object
# Options:
# :author -- author names are not displayed if set to false
# :thumbails -- display thumbnails if enabled in settings
def link_to_attachments(container, options = {})
options.assert_valid_keys(:author)
options.assert_valid_keys(:author, :thumbnails)
if container.attachments.any?
options = {:deletable => container.attachments_deletable?, :author => true}.merge(options)
render :partial => 'attachments/links', :locals => {:attachments => container.attachments, :options => options}
render :partial => 'attachments/links',
:locals => {:attachments => container.attachments, :options => options, :thumbnails => (options[:thumbnails] && Setting.thumbnails_enabled?)}
end
end

View File

@@ -1,5 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -16,4 +18,7 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
module AuthSourcesHelper
def auth_source_partial_name(auth_source)
"form_#{auth_source.class.name.underscore}"
end
end

View File

@@ -1,5 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -16,4 +18,24 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
module BoardsHelper
def board_breadcrumb(item)
board = item.is_a?(Message) ? item.board : item
links = [link_to(l(:label_board_plural), project_boards_path(item.project))]
boards = board.ancestors.reverse
if item.is_a?(Message)
boards << board
end
links += boards.map {|ancestor| link_to(h(ancestor.name), project_board_path(ancestor.project, ancestor))}
breadcrumb links
end
def boards_options_for_select(boards)
options = []
Board.board_tree(boards) do |board, level|
label = (level > 0 ? '&nbsp;' * 2 * level + '&#187; ' : '').html_safe
label << board.name
options << [label, board.id]
end
options
end
end

View File

@@ -1,3 +1,22 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
module CalendarsHelper
def link_to_previous_month(year, month, options={})
target_year, target_month = if month == 1

View File

@@ -0,0 +1,43 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
module ContextMenusHelper
def context_menu_link(name, url, options={})
options[:class] ||= ''
if options.delete(:selected)
options[:class] << ' icon-checked disabled'
options[:disabled] = true
end
if options.delete(:disabled)
options.delete(:method)
options.delete(:confirm)
options.delete(:onclick)
options[:class] << ' disabled'
url = '#'
end
link_to h(name), url, options
end
def bulk_update_custom_field_context_menu_link(field, text, value)
context_menu_link h(text),
{:controller => 'issues', :action => 'bulk_update', :ids => @issue_ids, :issue => {'custom_field_values' => {field.id => value}}, :back_url => @back},
:method => :post,
:selected => (@issue && @issue.custom_field_value(field) == value)
end
end

View File

@@ -1,5 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -34,58 +36,82 @@ module CustomFieldsHelper
def custom_field_tag(name, custom_value)
custom_field = custom_value.custom_field
field_name = "#{name}[custom_field_values][#{custom_field.id}]"
field_name << "[]" if custom_field.multiple?
field_id = "#{name}_custom_field_values_#{custom_field.id}"
tag_options = {:id => field_id, :class => "#{custom_field.field_format}_cf"}
field_format = Redmine::CustomFieldFormat.find_by_name(custom_field.field_format)
case field_format.try(:edit_as)
when "date"
text_field_tag(field_name, custom_value.value, :id => field_id, :size => 10) +
text_field_tag(field_name, custom_value.value, tag_options.merge(:size => 10)) +
calendar_for(field_id)
when "text"
text_area_tag(field_name, custom_value.value, :id => field_id, :rows => 3, :style => 'width:90%')
text_area_tag(field_name, custom_value.value, tag_options.merge(:rows => 3))
when "bool"
hidden_field_tag(field_name, '0') + check_box_tag(field_name, '1', custom_value.true?, :id => field_id)
hidden_field_tag(field_name, '0') + check_box_tag(field_name, '1', custom_value.true?, tag_options)
when "list"
blank_option = custom_field.is_required? ?
(custom_field.default_value.blank? ? "<option value=\"\">--- #{l(:actionview_instancetag_blank_option)} ---</option>" : '') :
'<option></option>'
select_tag(field_name, blank_option + options_for_select(custom_field.possible_values_options(custom_value.customized), custom_value.value), :id => field_id)
blank_option = ''.html_safe
unless custom_field.multiple?
if custom_field.is_required?
unless custom_field.default_value.present?
blank_option = content_tag('option', "--- #{l(:actionview_instancetag_blank_option)} ---", :value => '')
end
else
blank_option = content_tag('option')
end
end
s = select_tag(field_name, blank_option + options_for_select(custom_field.possible_values_options(custom_value.customized), custom_value.value),
tag_options.merge(:multiple => custom_field.multiple?))
if custom_field.multiple?
s << hidden_field_tag(field_name, '')
end
s
else
text_field_tag(field_name, custom_value.value, :id => field_id)
text_field_tag(field_name, custom_value.value, tag_options)
end
end
# Return custom field label tag
def custom_field_label_tag(name, custom_value)
def custom_field_label_tag(name, custom_value, options={})
required = options[:required] || custom_value.custom_field.is_required?
content_tag "label", h(custom_value.custom_field.name) +
(custom_value.custom_field.is_required? ? " <span class=\"required\">*</span>".html_safe : ""),
:for => "#{name}_custom_field_values_#{custom_value.custom_field.id}",
:class => (custom_value.errors.empty? ? nil : "error" )
(required ? " <span class=\"required\">*</span>".html_safe : ""),
:for => "#{name}_custom_field_values_#{custom_value.custom_field.id}"
end
# Return custom field tag with its label tag
def custom_field_tag_with_label(name, custom_value)
custom_field_label_tag(name, custom_value) + custom_field_tag(name, custom_value)
def custom_field_tag_with_label(name, custom_value, options={})
custom_field_label_tag(name, custom_value, options) + custom_field_tag(name, custom_value)
end
def custom_field_tag_for_bulk_edit(name, custom_field, projects=nil)
field_name = "#{name}[custom_field_values][#{custom_field.id}]"
field_name << "[]" if custom_field.multiple?
field_id = "#{name}_custom_field_values_#{custom_field.id}"
tag_options = {:id => field_id, :class => "#{custom_field.field_format}_cf"}
field_format = Redmine::CustomFieldFormat.find_by_name(custom_field.field_format)
case field_format.try(:edit_as)
when "date"
text_field_tag(field_name, '', :id => field_id, :size => 10) +
text_field_tag(field_name, '', tag_options.merge(:size => 10)) +
calendar_for(field_id)
when "text"
text_area_tag(field_name, '', :id => field_id, :rows => 3, :style => 'width:90%')
text_area_tag(field_name, '', tag_options.merge(:rows => 3))
when "bool"
select_tag(field_name, options_for_select([[l(:label_no_change_option), ''],
[l(:general_text_yes), '1'],
[l(:general_text_no), '0']]), :id => field_id)
[l(:general_text_no), '0']]), tag_options)
when "list"
select_tag(field_name, options_for_select([[l(:label_no_change_option), '']] + custom_field.possible_values_options(projects)), :id => field_id)
options = []
options << [l(:label_no_change_option), ''] unless custom_field.multiple?
options << [l(:label_none), '__none__'] unless custom_field.is_required?
options += custom_field.possible_values_options(projects)
select_tag(field_name, options_for_select(options), tag_options.merge(:multiple => custom_field.multiple?))
else
text_field_tag(field_name, '', :id => field_id)
text_field_tag(field_name, '', tag_options)
end
end
@@ -97,7 +123,11 @@ module CustomFieldsHelper
# Return a string used to display a custom value
def format_value(value, field_format)
Redmine::CustomFieldFormat.format_value(value, field_format) # Proxy
if value.is_a?(Array)
value.collect {|v| format_value(v, field_format)}.compact.sort.join(', ')
else
Redmine::CustomFieldFormat.format_value(value, field_format)
end
end
# Return an array of custom field formats which can be used in select_tag
@@ -109,8 +139,18 @@ module CustomFieldsHelper
def render_api_custom_values(custom_values, api)
api.array :custom_fields do
custom_values.each do |custom_value|
api.custom_field :id => custom_value.custom_field_id, :name => custom_value.custom_field.name do
api.value custom_value.value
attrs = {:id => custom_value.custom_field_id, :name => custom_value.custom_field.name}
attrs.merge!(:multiple => true) if custom_value.custom_field.multiple?
api.custom_field attrs do
if custom_value.value.is_a?(Array)
api.array :value do
custom_value.value.each do |value|
api.value value unless value.blank?
end
end
else
api.value custom_value.value
end
end
end
end unless custom_values.empty?

View File

@@ -1,5 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@@ -1,5 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@@ -1,5 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@@ -1,5 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@@ -1,5 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@@ -1,2 +0,0 @@
module IssueMovesHelper
end

View File

@@ -1,5 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@@ -1,5 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@@ -1,5 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -46,13 +48,13 @@ module IssuesHelper
@cached_label_priority ||= l(:field_priority)
@cached_label_project ||= l(:field_project)
(link_to_issue(issue) + "<br /><br />" +
"<strong>#{@cached_label_project}</strong>: #{link_to_project(issue.project)}<br />" +
"<strong>#{@cached_label_status}</strong>: #{h(issue.status.name)}<br />" +
"<strong>#{@cached_label_start_date}</strong>: #{format_date(issue.start_date)}<br />" +
"<strong>#{@cached_label_due_date}</strong>: #{format_date(issue.due_date)}<br />" +
"<strong>#{@cached_label_assigned_to}</strong>: #{h(issue.assigned_to)}<br />" +
"<strong>#{@cached_label_priority}</strong>: #{h(issue.priority.name)}").html_safe
link_to_issue(issue) + "<br /><br />".html_safe +
"<strong>#{@cached_label_project}</strong>: #{link_to_project(issue.project)}<br />".html_safe +
"<strong>#{@cached_label_status}</strong>: #{h(issue.status.name)}<br />".html_safe +
"<strong>#{@cached_label_start_date}</strong>: #{format_date(issue.start_date)}<br />".html_safe +
"<strong>#{@cached_label_due_date}</strong>: #{format_date(issue.due_date)}<br />".html_safe +
"<strong>#{@cached_label_assigned_to}</strong>: #{h(issue.assigned_to)}<br />".html_safe +
"<strong>#{@cached_label_priority}</strong>: #{h(issue.priority.name)}".html_safe
end
def issue_heading(issue)
@@ -86,10 +88,52 @@ module IssuesHelper
content_tag('td', progress_bar(child.done_ratio, :width => '80px')),
:class => "issue issue-#{child.id} hascontextmenu #{level > 0 ? "idnt idnt-#{level}" : nil}")
end
s << '</form></table>'
s << '</table></form>'
s.html_safe
end
class IssueFieldsRows
include ActionView::Helpers::TagHelper
def initialize
@left = []
@right = []
end
def left(*args)
args.any? ? @left << cells(*args) : @left
end
def right(*args)
args.any? ? @right << cells(*args) : @right
end
def size
@left.size > @right.size ? @left.size : @right.size
end
def to_html
html = ''.html_safe
blank = content_tag('th', '') + content_tag('td', '')
size.times do |i|
left = @left[i] || blank
right = @right[i] || blank
html << content_tag('tr', left + right)
end
html
end
def cells(label, text, options={})
content_tag('th', "#{label}:", options) + content_tag('td', text, options)
end
end
def issue_fields_rows
r = IssueFieldsRows.new
yield r
r.to_html
end
def render_custom_fields_rows(issue)
return if issue.custom_field_values.empty?
ordered_values = []
@@ -129,14 +173,11 @@ module IssuesHelper
def sidebar_queries
unless @sidebar_queries
# User can see public queries and his own queries
visible = ARCondition.new(["is_public = ? OR user_id = ?", true, (User.current.logged? ? User.current.id : 0)])
# Project specific queries and global queries
visible << (@project.nil? ? ["project_id IS NULL"] : ["project_id IS NULL OR project_id = ?", @project.id])
@sidebar_queries = Query.find(:all,
:select => 'id, name, is_public',
:order => "name ASC",
:conditions => visible.conditions)
@sidebar_queries = Query.visible.all(
:order => "#{Query.table_name}.name ASC",
# Project specific queries and global queries
:conditions => (@project.nil? ? ["project_id IS NULL"] : ["project_id IS NULL OR project_id = ?", @project.id])
)
end
@sidebar_queries
end
@@ -147,12 +188,14 @@ module IssuesHelper
content_tag('h3', h(title)) +
queries.collect {|query|
link_to(h(query.name), url_params.merge(:query_id => query))
}.join('<br />')
css = 'query'
css << ' selected' if query == @query
link_to(h(query.name), url_params.merge(:query_id => query), :class => css)
}.join('<br />').html_safe
end
def render_sidebar_queries
out = ''
out = ''.html_safe
queries = sidebar_queries.select {|q| !q.is_public?}
out << query_links(l(:label_my_queries), queries) if queries.any?
queries = sidebar_queries.select {|q| q.is_public?}
@@ -160,36 +203,76 @@ module IssuesHelper
out
end
def show_detail(detail, no_html=false)
# Returns the textual representation of a journal details
# as an array of strings
def details_to_strings(details, no_html=false, options={})
options[:only_path] = (options[:only_path] == false ? false : true)
strings = []
values_by_field = {}
details.each do |detail|
if detail.property == 'cf'
field_id = detail.prop_key
field = CustomField.find_by_id(field_id)
if field && field.multiple?
values_by_field[field_id] ||= {:added => [], :deleted => []}
if detail.old_value
values_by_field[field_id][:deleted] << detail.old_value
end
if detail.value
values_by_field[field_id][:added] << detail.value
end
next
end
end
strings << show_detail(detail, no_html, options)
end
values_by_field.each do |field_id, changes|
detail = JournalDetail.new(:property => 'cf', :prop_key => field_id)
if changes[:added].any?
detail.value = changes[:added]
strings << show_detail(detail, no_html, options)
elsif changes[:deleted].any?
detail.old_value = changes[:deleted]
strings << show_detail(detail, no_html, options)
end
end
strings
end
# Returns the textual representation of a single journal detail
def show_detail(detail, no_html=false, options={})
multiple = false
case detail.property
when 'attr'
field = detail.prop_key.to_s.gsub(/\_id$/, "")
label = l(("field_" + field).to_sym)
case
when ['due_date', 'start_date'].include?(detail.prop_key)
case detail.prop_key
when 'due_date', 'start_date'
value = format_date(detail.value.to_date) if detail.value
old_value = format_date(detail.old_value.to_date) if detail.old_value
when ['project_id', 'status_id', 'tracker_id', 'assigned_to_id', 'priority_id', 'category_id', 'fixed_version_id'].include?(detail.prop_key)
when 'project_id', 'status_id', 'tracker_id', 'assigned_to_id',
'priority_id', 'category_id', 'fixed_version_id'
value = find_name_by_reflection(field, detail.value)
old_value = find_name_by_reflection(field, detail.old_value)
when detail.prop_key == 'estimated_hours'
when 'estimated_hours'
value = "%0.02f" % detail.value.to_f unless detail.value.blank?
old_value = "%0.02f" % detail.old_value.to_f unless detail.old_value.blank?
when detail.prop_key == 'parent_id'
when 'parent_id'
label = l(:field_parent_issue)
value = "##{detail.value}" unless detail.value.blank?
old_value = "##{detail.old_value}" unless detail.old_value.blank?
when detail.prop_key == 'is_private'
when 'is_private'
value = l(detail.value == "0" ? :general_text_No : :general_text_Yes) unless detail.value.blank?
old_value = l(detail.old_value == "0" ? :general_text_No : :general_text_Yes) unless detail.old_value.blank?
end
when 'cf'
custom_field = CustomField.find_by_id(detail.prop_key)
if custom_field
multiple = custom_field.multiple?
label = custom_field.name
value = format_value(detail.value, custom_field.field_format) if detail.value
old_value = format_value(detail.old_value, custom_field.field_format) if detail.old_value
@@ -197,7 +280,8 @@ module IssuesHelper
when 'attachment'
label = l(:label_attachment)
end
call_hook(:helper_issues_show_detail_after_setting, {:detail => detail, :label => label, :value => value, :old_value => old_value })
call_hook(:helper_issues_show_detail_after_setting,
{:detail => detail, :label => label, :value => value, :old_value => old_value })
label ||= detail.prop_key
value ||= detail.value
@@ -206,10 +290,17 @@ module IssuesHelper
unless no_html
label = content_tag('strong', label)
old_value = content_tag("i", h(old_value)) if detail.old_value
old_value = content_tag("strike", old_value) if detail.old_value and detail.value.blank?
if detail.property == 'attachment' && !value.blank? && a = Attachment.find_by_id(detail.prop_key)
old_value = content_tag("del", old_value) if detail.old_value and detail.value.blank?
if detail.property == 'attachment' && !value.blank? && atta = Attachment.find_by_id(detail.prop_key)
# Link to the attachment if it has not been removed
value = link_to_attachment(a)
value = link_to_attachment(atta, :download => true, :only_path => options[:only_path])
if options[:only_path] != false && atta.is_text?
value += link_to(
image_tag('magnifier.png'),
:controller => 'attachments', :action => 'show',
:id => atta, :filename => atta.filename
)
end
else
value = content_tag("i", h(value)) if value
end
@@ -219,24 +310,27 @@ module IssuesHelper
s = l(:text_journal_changed_no_detail, :label => label)
unless no_html
diff_link = link_to 'diff',
{:controller => 'journals', :action => 'diff', :id => detail.journal_id, :detail_id => detail.id},
{:controller => 'journals', :action => 'diff', :id => detail.journal_id,
:detail_id => detail.id, :only_path => options[:only_path]},
:title => l(:label_view_diff)
s << " (#{ diff_link })"
end
s
elsif !detail.value.blank?
s.html_safe
elsif detail.value.present?
case detail.property
when 'attr', 'cf'
if !detail.old_value.blank?
l(:text_journal_changed, :label => label, :old => old_value, :new => value)
if detail.old_value.present?
l(:text_journal_changed, :label => label, :old => old_value, :new => value).html_safe
elsif multiple
l(:text_journal_added, :label => label, :value => value).html_safe
else
l(:text_journal_set_to, :label => label, :value => value)
l(:text_journal_set_to, :label => label, :value => value).html_safe
end
when 'attachment'
l(:text_journal_added, :label => label, :value => value)
l(:text_journal_added, :label => label, :value => value).html_safe
end
else
l(:text_journal_deleted, :label => label, :old => old_value)
l(:text_journal_deleted, :label => label, :old => old_value).html_safe
end
end
@@ -277,16 +371,16 @@ module IssuesHelper
issues.each do |issue|
col_values = columns.collect do |column|
s = if column.is_a?(QueryCustomFieldColumn)
cv = issue.custom_values.detect {|v| v.custom_field_id == column.custom_field.id}
cv = issue.custom_field_values.detect {|v| v.custom_field_id == column.custom_field.id}
show_value(cv)
else
value = issue.send(column.name)
value = column.value(issue)
if value.is_a?(Date)
format_date(value)
elsif value.is_a?(Time)
format_time(value)
elsif value.is_a?(Float)
value.to_s.gsub('.', decimal_separator)
("%.2f" % value).gsub('.', decimal_separator)
else
value
end

View File

@@ -1,5 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -21,22 +23,24 @@ module JournalsHelper
editable = User.current.logged? && (User.current.allowed_to?(:edit_issue_notes, issue.project) || (journal.user == User.current && User.current.allowed_to?(:edit_own_issue_notes, issue.project)))
links = []
if !journal.notes.blank?
links << link_to_remote(image_tag('comment.png'),
{ :url => {:controller => 'journals', :action => 'new', :id => issue, :journal_id => journal} },
:title => l(:button_quote)) if options[:reply_links]
links << link_to(image_tag('comment.png'),
{:controller => 'journals', :action => 'new', :id => issue, :journal_id => journal},
:remote => true,
:method => 'post',
:title => l(:button_quote)) if options[:reply_links]
links << link_to_in_place_notes_editor(image_tag('edit.png'), "journal-#{journal.id}-notes",
{ :controller => 'journals', :action => 'edit', :id => journal },
{ :controller => 'journals', :action => 'edit', :id => journal, :format => 'js' },
:title => l(:button_edit)) if editable
end
content << content_tag('div', links.join(' '), :class => 'contextual') unless links.empty?
content << content_tag('div', links.join(' ').html_safe, :class => 'contextual') unless links.empty?
content << textilizable(journal, :notes)
css_classes = "wiki"
css_classes << " editable" if editable
content_tag('div', content, :id => "journal-#{journal.id}-notes", :class => css_classes)
content_tag('div', content.html_safe, :id => "journal-#{journal.id}-notes", :class => css_classes)
end
def link_to_in_place_notes_editor(text, field_id, url, options={})
onclick = "new Ajax.Request('#{url_for(url)}', {asynchronous:true, evalScripts:true, method:'get'}); return false;"
onclick = "$.ajax({url: '#{url_for(url)}', type: 'get'}); return false;"
link_to text, '#', options.merge(:onclick => onclick)
end
end

View File

@@ -1,5 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@@ -1,5 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@@ -1,5 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@@ -1,5 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@@ -1,5 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@@ -1,5 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -28,7 +30,7 @@ module ProjectsHelper
{:name => 'versions', :action => :manage_versions, :partial => 'projects/settings/versions', :label => :label_version_plural},
{:name => 'categories', :action => :manage_categories, :partial => 'projects/settings/issue_categories', :label => :label_issue_category_plural},
{:name => 'wiki', :action => :manage_wiki, :partial => 'projects/settings/wiki', :label => :label_wiki},
{:name => 'repository', :action => :manage_repository, :partial => 'projects/settings/repository', :label => :label_repository},
{:name => 'repositories', :action => :manage_repository, :partial => 'projects/settings/repositories', :label => :label_repository_plural},
{:name => 'boards', :action => :manage_boards, :partial => 'projects/settings/boards', :label => :label_board_plural},
{:name => 'activities', :action => :manage_project_activities, :partial => 'projects/settings/activities', :label => :enumeration_activities}
]
@@ -49,38 +51,15 @@ module ProjectsHelper
content_tag('select', options.html_safe, :name => 'project[parent_id]', :id => 'project_parent_id')
end
# Renders a tree of projects as a nested set of unordered lists
# The given collection may be a subset of the whole project tree
# (eg. some intermediate nodes are private and can not be seen)
# Renders the projects index
def render_project_hierarchy(projects)
s = ''
if projects.any?
ancestors = []
original_project = @project
projects.each do |project|
# set the project environment to please macros.
@project = project
if (ancestors.empty? || project.is_descendant_of?(ancestors.last))
s << "<ul class='projects #{ ancestors.empty? ? 'root' : nil}'>\n"
else
ancestors.pop
s << "</li>"
while (ancestors.any? && !project.is_descendant_of?(ancestors.last))
ancestors.pop
s << "</ul></li>\n"
end
end
classes = (ancestors.empty? ? 'root' : 'child')
s << "<li class='#{classes}'><div class='#{classes}'>" +
link_to_project(project, {}, :class => "project #{User.current.member_of?(project) ? 'my-project' : nil}")
s << "<div class='wiki description'>#{textilizable(project.short_description, :project => project)}</div>" unless project.description.blank?
s << "</div>\n"
ancestors << project
render_project_nested_lists(projects) do |project|
s = link_to_project(project, {}, :class => "#{project.css_classes} #{User.current.member_of?(project) ? 'my-project' : nil}")
if project.description.present?
s << content_tag('div', textilizable(project.short_description, :project => project), :class => 'wiki description')
end
s << ("</li></ul>\n" * ancestors.size)
@project = original_project
s
end
s.html_safe
end
# Returns a set of options for a select field, grouped by project.
@@ -89,10 +68,6 @@ module ProjectsHelper
versions.each do |version|
grouped[version.project.name] << [version.name, version.id]
end
# Add in the selected
if selected && !versions.include?(selected)
grouped[selected.project.name] << [selected.name, selected.id]
end
if grouped.keys.size > 1
grouped_options_for_select(grouped, selected && selected.id)

View File

@@ -1,5 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -16,9 +18,12 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
module QueriesHelper
def operators_for_select(filter_type)
Query.operators_by_filter_type[filter_type].collect {|o| [l(Query.operators[o]), o]}
def filters_options_for_select(query)
options = [[]]
options += query.available_filters.sort {|a,b| a[1][:order] <=> b[1][:order]}.map do |field, field_options|
[field_options[:name], field]
end
options_for_select(options)
end
def column_header(column)
@@ -29,7 +34,14 @@ module QueriesHelper
def column_content(column, issue)
value = column.value(issue)
if value.is_a?(Array)
value.collect {|v| column_value(column, issue, v)}.compact.sort.join(', ').html_safe
else
column_value(column, issue, value)
end
end
def column_value(column, issue, value)
case value.class.name
when 'String'
if column.name == :subject
@@ -44,6 +56,8 @@ module QueriesHelper
when 'Fixnum', 'Float'
if column.name == :done_ratio
progress_bar(value, :width => '80px')
elsif column.name == :spent_hours
sprintf "%.2f", value
else
h(value.to_s)
end
@@ -88,6 +102,23 @@ module QueriesHelper
end
end
def retrieve_query_from_session
if session[:query]
if session[:query][:id]
@query = Query.find_by_id(session[:query][:id])
return unless @query
else
@query = Query.new(:name => "_", :filters => session[:query][:filters], :group_by => session[:query][:group_by], :column_names => session[:query][:column_names])
end
if session[:query].has_key?(:project_id)
@query.project_id = session[:query][:project_id]
else
@query.project = @project
end
@query
end
end
def build_query_from_params
if params[:fields] || params[:f]
@query.filters = {}

View File

@@ -1,5 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@@ -1,5 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -44,17 +46,17 @@ module RepositoriesHelper
end
def render_changeset_changes
changes = @changeset.changes.find(:all, :limit => 1000, :order => 'path').collect do |change|
changes = @changeset.filechanges.find(:all, :limit => 1000, :order => 'path').collect do |change|
case change.action
when 'A'
# Detects moved/copied files
if !change.from_path.blank?
change.action =
@changeset.changes.detect {|c| c.action == 'D' && c.path == change.from_path} ? 'R' : 'C'
@changeset.filechanges.detect {|c| c.action == 'D' && c.path == change.from_path} ? 'R' : 'C'
end
change
when 'D'
@changeset.changes.detect {|c| c.from_path == change.path} ? nil : change
@changeset.filechanges.detect {|c| c.from_path == change.path} ? nil : change
else
change
end
@@ -90,22 +92,26 @@ module RepositoriesHelper
text = link_to(h(text), :controller => 'repositories',
:action => 'show',
:id => @project,
:repository_id => @repository.identifier_param,
:path => path_param,
:rev => @changeset.identifier)
output << "<li class='#{style}'>#{text}</li>"
output << "<li class='#{style}'>#{text}"
output << render_changes_tree(s)
output << "</li>"
elsif c = tree[file][:c]
style << " change-#{c.action}"
path_param = to_path_param(@repository.relative_path(c.path))
text = link_to(h(text), :controller => 'repositories',
:action => 'entry',
:id => @project,
:repository_id => @repository.identifier_param,
:path => path_param,
:rev => @changeset.identifier) unless c.action == 'D'
text << " - #{h(c.revision)}" unless c.revision.blank?
text << ' ('.html_safe + link_to(l(:label_diff), :controller => 'repositories',
:action => 'diff',
:id => @project,
:repository_id => @repository.identifier_param,
:path => path_param,
:rev => @changeset.identifier) + ') '.html_safe if c.action == 'M'
text << ' '.html_safe + content_tag('span', h(c.from_path), :class => 'copied-from') unless c.from_path.blank?
@@ -135,15 +141,7 @@ module RepositoriesHelper
select_tag('repository_scm',
options_for_select(scm_options, repository.class.name.demodulize),
:disabled => (repository && !repository.new_record?),
:onchange => remote_function(
:url => {
:controller => 'repositories',
:action => 'edit',
:id => @project
},
:method => :get,
:with => "Form.serialize(this.form)")
)
:data => {:remote => true, :method => 'get'})
end
def with_leading_slash(path)
@@ -156,7 +154,7 @@ module RepositoriesHelper
def subversion_field_tags(form, repository)
content_tag('p', form.text_field(:url, :size => 60, :required => true,
:disabled => (repository && !repository.root_url.blank?)) +
:disabled => !repository.safe_attribute?('url')) +
'<br />'.html_safe +
'(file:///, http://, https://, svn://, svn+[tunnelscheme]://)') +
content_tag('p', form.text_field(:login, :size => 30)) +
@@ -171,7 +169,7 @@ module RepositoriesHelper
content_tag('p', form.text_field(
:url, :label => l(:field_path_to_repository),
:size => 60, :required => true,
:disabled => (repository && !repository.new_record?))) +
:disabled => !repository.safe_attribute?('url'))) +
content_tag('p', form.select(
:log_encoding, [nil] + Setting::ENCODINGS,
:label => l(:field_commit_logs_encoding), :required => true))
@@ -181,7 +179,7 @@ module RepositoriesHelper
content_tag('p', form.text_field(
:url, :label => l(:field_path_to_repository),
:size => 60, :required => true,
:disabled => (repository && !repository.root_url.blank?)
:disabled => !repository.safe_attribute?('url')
) +
'<br />'.html_safe + l(:text_mercurial_repository_note)) +
content_tag('p', form.select(
@@ -195,7 +193,7 @@ module RepositoriesHelper
content_tag('p', form.text_field(
:url, :label => l(:field_path_to_repository),
:size => 60, :required => true,
:disabled => (repository && !repository.root_url.blank?)
:disabled => !repository.safe_attribute?('url')
) +
'<br />'.html_safe +
l(:text_git_repository_note)) +
@@ -215,12 +213,12 @@ module RepositoriesHelper
:root_url,
:label => l(:field_cvsroot),
:size => 60, :required => true,
:disabled => !repository.new_record?)) +
:disabled => !repository.safe_attribute?('root_url'))) +
content_tag('p', form.text_field(
:url,
:label => l(:field_cvs_module),
:size => 30, :required => true,
:disabled => !repository.new_record?)) +
:disabled => !repository.safe_attribute?('url'))) +
content_tag('p', form.select(
:log_encoding, [nil] + Setting::ENCODINGS,
:label => l(:field_commit_logs_encoding), :required => true)) +
@@ -235,7 +233,7 @@ module RepositoriesHelper
content_tag('p', form.text_field(
:url, :label => l(:field_path_to_repository),
:size => 60, :required => true,
:disabled => (repository && !repository.new_record?))) +
:disabled => !repository.safe_attribute?('url'))) +
content_tag('p', form.select(
:log_encoding, [nil] + Setting::ENCODINGS,
:label => l(:field_commit_logs_encoding), :required => true))
@@ -245,7 +243,7 @@ module RepositoriesHelper
content_tag('p', form.text_field(
:url, :label => l(:field_root_directory),
:size => 60, :required => true,
:disabled => (repository && !repository.root_url.blank?))) +
:disabled => !repository.safe_attribute?('url'))) +
content_tag('p', form.select(
:path_encoding, [nil] + Setting::ENCODINGS,
:label => l(:field_scm_path_encoding)
@@ -253,59 +251,63 @@ module RepositoriesHelper
'<br />'.html_safe + l(:text_scm_path_encoding_note))
end
def index_commits(commits, heads, href_proc = nil)
def index_commits(commits, heads)
return nil if commits.nil? or commits.first.parents.nil?
map = {}
commit_hashes = []
refs_map = {}
href_proc ||= Proc.new {|x|x}
heads.each{|r| refs_map[r.scmid] ||= []; refs_map[r.scmid] << r}
commits.reverse.each_with_index do |c, i|
h = {}
h[:parents] = c.parents.collect do |p|
[p.scmid, 0, 0]
end
h[:rdmid] = i
h[:space] = 0
h[:refs] = refs_map[c.scmid].join(" ") if refs_map.include? c.scmid
h[:scmid] = c.scmid
h[:href] = href_proc.call(c.scmid)
commit_hashes << h
map[c.scmid] = h
heads.each do |head|
refs_map[head.scmid] ||= []
refs_map[head.scmid] << head
end
heads.sort! do |a,b|
a.to_s <=> b.to_s
commits_by_scmid = {}
commits.reverse.each_with_index do |commit, commit_index|
commits_by_scmid[commit.scmid] = {
:parent_scmids => commit.parents.collect { |parent| parent.scmid },
:rdmid => commit_index,
:refs => refs_map.include?(commit.scmid) ? refs_map[commit.scmid].join(" ") : nil,
:scmid => commit.scmid,
:href => block_given? ? yield(commit.scmid) : commit.scmid
}
end
j = 0
heads.each do |h|
if map.include? h.scmid then
j = mark_chain(j += 1, map[h.scmid], map)
heads.sort! { |head1, head2| head1.to_s <=> head2.to_s }
space = nil
heads.each do |head|
if commits_by_scmid.include? head.scmid
space = index_head((space || -1) + 1, head, commits_by_scmid)
end
end
# when no head matched anything use first commit
if j == 0 then
mark_chain(j += 1, map.values.first, map)
end
map
space ||= index_head(0, commits.first, commits_by_scmid)
return commits_by_scmid, space
end
def mark_chain(mark, commit, map)
stack = [[mark, commit]]
markmax = mark
def index_head(space, commit, commits_by_scmid)
stack = [[space, commits_by_scmid[commit.scmid]]]
max_space = space
until stack.empty?
current = stack.pop
m, commit = current
commit[:space] = m if commit[:space] == 0
m1 = m - 1
commit[:parents].each_with_index do |p, i|
psha = p[0]
if map.include? psha and map[psha][:space] == 0 then
stack << [m1 += 1, map[psha]] if i == 0
stack = [[m1 += 1, map[psha]]] + stack if i > 0
space, commit = stack.pop
commit[:space] = space if commit[:space].nil?
space -= 1
commit[:parent_scmids].each_with_index do |parent_scmid, parent_index|
parent_commit = commits_by_scmid[parent_scmid]
if parent_commit and parent_commit[:space].nil?
stack.unshift [space += 1, parent_commit]
end
end
markmax = m1 if markmax < m1
max_space = space if max_space < space
end
markmax
max_space
end
end

View File

@@ -1,5 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@@ -1,5 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -35,7 +37,7 @@ module SearchHelper
result << content_tag('span', h(words), :class => "highlight token-#{t}")
end
end
result
result.html_safe
end
def type_label(t)
@@ -61,6 +63,8 @@ module SearchHelper
links << link_to(h(text), :q => params[:q], :titles_only => params[:titles_only],
:all_words => params[:all_words], :scope => params[:scope], t => 1)
end
('<ul>' + links.map {|link| content_tag('li', link)}.join(' ') + '</ul>') unless links.empty?
('<ul>'.html_safe +
links.map {|link| content_tag('li', link)}.join(' ').html_safe +
'</ul>'.html_safe) unless links.empty?
end
end

View File

@@ -1,5 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -42,7 +44,7 @@ module SettingsHelper
setting_values = Setting.send(setting)
setting_values = [] unless setting_values.is_a?(Array)
setting_label(setting, options).html_safe +
content_tag("label", l(options[:label] || "setting_#{setting}")) +
hidden_field_tag("settings[#{setting}][]", '').html_safe +
choices.collect do |choice|
text, value = (choice.is_a?(Array) ? choice : [choice, choice])
@@ -51,7 +53,8 @@ module SettingsHelper
check_box_tag(
"settings[#{setting}][]",
value,
Setting.send(setting).include?(value)
Setting.send(setting).include?(value),
:id => nil
) + text.to_s,
:class => 'block'
)
@@ -70,13 +73,13 @@ module SettingsHelper
def setting_check_box(setting, options={})
setting_label(setting, options).html_safe +
hidden_field_tag("settings[#{setting}]", 0).html_safe +
hidden_field_tag("settings[#{setting}]", 0, :id => nil).html_safe +
check_box_tag("settings[#{setting}]", 1, Setting.send("#{setting}?"), options).html_safe
end
def setting_label(setting, options={})
label = options.delete(:label)
label != false ? content_tag("label", l(label || "setting_#{setting}")).html_safe : ''
label != false ? label_tag("settings_#{setting}", l(label || "setting_#{setting}")).html_safe : ''
end
# Renders a notification field for a Redmine::Notifiable option
@@ -84,7 +87,7 @@ module SettingsHelper
return content_tag(:label,
check_box_tag('settings[notified_events][]',
notifiable.name,
Setting.notified_events.include?(notifiable.name)).html_safe +
Setting.notified_events.include?(notifiable.name), :id => nil).html_safe +
l_or_humanize(notifiable.name, :prefix => 'label_').html_safe,
:class => notifiable.parent.present? ? "parent" : '').html_safe
end

View File

@@ -1,3 +1,5 @@
# encoding: utf-8
#
# Helpers to sort tables using clickable column headers.
#
# Author: Stuart Rackham <srackham@methods.co.nz>, March 2005.
@@ -158,7 +160,8 @@ module SortHelper
# sort_clause.
# - criteria can be either an array or a hash of allowed keys
#
def sort_update(criteria)
def sort_update(criteria, sort_name=nil)
sort_name ||= self.sort_name
@sort_criteria = SortCriteria.new
@sort_criteria.available_criteria = criteria
@sort_criteria.from_param(params[:sort] || session[sort_name])

View File

@@ -1,5 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -116,7 +118,7 @@ module TimelogHelper
entry.hours.to_s.gsub('.', decimal_separator),
entry.comments
]
fields += custom_fields.collect {|f| show_value(entry.custom_value_for(f)) }
fields += custom_fields.collect {|f| show_value(entry.custom_field_values.detect {|v| v.custom_field_id == f.id}) }
csv << fields.collect {|c| Redmine::CodesetUtil.from_utf8(
c.to_s,
@@ -126,10 +128,10 @@ module TimelogHelper
export
end
def format_criteria_value(criteria, value)
def format_criteria_value(criteria_options, value)
if value.blank?
l(:label_none)
elsif k = @available_criterias[criteria][:klass]
"[#{l(:label_none)}]"
elsif k = criteria_options[:klass]
obj = k.find_by_id(value.to_i)
if obj.is_a?(Issue)
obj.visible? ? "#{obj.tracker} ##{obj.id}: #{obj.subject}" : "##{obj.id}"
@@ -137,28 +139,28 @@ module TimelogHelper
obj
end
else
format_value(value, @available_criterias[criteria][:format])
format_value(value, criteria_options[:format])
end
end
def report_to_csv(criterias, periods, hours)
def report_to_csv(report)
decimal_separator = l(:general_csv_decimal_separator)
export = FCSV.generate(:col_sep => l(:general_csv_separator)) do |csv|
# Column headers
headers = criterias.collect {|criteria| l(@available_criterias[criteria][:label]) }
headers += periods
headers = report.criteria.collect {|criteria| l(report.available_criteria[criteria][:label]) }
headers += report.periods
headers << l(:label_total)
csv << headers.collect {|c| Redmine::CodesetUtil.from_utf8(
c.to_s,
l(:general_csv_encoding) ) }
# Content
report_criteria_to_csv(csv, criterias, periods, hours)
report_criteria_to_csv(csv, report.available_criteria, report.columns, report.criteria, report.periods, report.hours)
# Total row
str_total = Redmine::CodesetUtil.from_utf8(l(:label_total), l(:general_csv_encoding))
row = [ str_total ] + [''] * (criterias.size - 1)
row = [ str_total ] + [''] * (report.criteria.size - 1)
total = 0
periods.each do |period|
sum = sum_hours(select_hours(hours, @columns, period.to_s))
report.periods.each do |period|
sum = sum_hours(select_hours(report.hours, report.columns, period.to_s))
total += sum
row << (sum > 0 ? ("%.2f" % sum).gsub('.',decimal_separator) : '')
end
@@ -168,26 +170,26 @@ module TimelogHelper
export
end
def report_criteria_to_csv(csv, criterias, periods, hours, level=0)
def report_criteria_to_csv(csv, available_criteria, columns, criteria, periods, hours, level=0)
decimal_separator = l(:general_csv_decimal_separator)
hours.collect {|h| h[criterias[level]].to_s}.uniq.each do |value|
hours_for_value = select_hours(hours, criterias[level], value)
hours.collect {|h| h[criteria[level]].to_s}.uniq.each do |value|
hours_for_value = select_hours(hours, criteria[level], value)
next if hours_for_value.empty?
row = [''] * level
row << Redmine::CodesetUtil.from_utf8(
format_criteria_value(criterias[level], value).to_s,
format_criteria_value(available_criteria[criteria[level]], value).to_s,
l(:general_csv_encoding) )
row += [''] * (criterias.length - level - 1)
row += [''] * (criteria.length - level - 1)
total = 0
periods.each do |period|
sum = sum_hours(select_hours(hours_for_value, @columns, period.to_s))
sum = sum_hours(select_hours(hours_for_value, columns, period.to_s))
total += sum
row << (sum > 0 ? ("%.2f" % sum).gsub('.',decimal_separator) : '')
end
row << ("%.2f" % total).gsub('.',decimal_separator)
csv << row
if criterias.length > level + 1
report_criteria_to_csv(csv, criterias, periods, hours_for_value, level + 1)
if criteria.length > level + 1
report_criteria_to_csv(csv, available_criteria, columns, criteria, periods, hours_for_value, level + 1)
end
end
end

View File

@@ -1,5 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@@ -1,5 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -19,9 +21,9 @@ module UsersHelper
def users_status_options_for_select(selected)
user_count_by_status = User.count(:group => 'status').to_hash
options_for_select([[l(:label_all), ''],
["#{l(:status_active)} (#{user_count_by_status[1].to_i})", 1],
["#{l(:status_registered)} (#{user_count_by_status[2].to_i})", 2],
["#{l(:status_locked)} (#{user_count_by_status[3].to_i})", 3]], selected)
["#{l(:status_active)} (#{user_count_by_status[1].to_i})", '1'],
["#{l(:status_registered)} (#{user_count_by_status[2].to_i})", '2'],
["#{l(:status_locked)} (#{user_count_by_status[3].to_i})", '3']], selected.to_s)
end
# Options for the new membership projects combo-box

View File

@@ -1,5 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -17,10 +19,18 @@
module VersionsHelper
STATUS_BY_CRITERIAS = %w(category tracker status priority author assigned_to)
def version_anchor(version)
if @project == version.project
anchor version.name
else
anchor "#{version.project.try(:identifier)}-#{version.name}"
end
end
STATUS_BY_CRITERIAS = %w(tracker status priority author assigned_to category)
def render_issue_status_by(version, criteria)
criteria = 'category' unless STATUS_BY_CRITERIAS.include?(criteria)
criteria = 'tracker' unless STATUS_BY_CRITERIAS.include?(criteria)
h = Hash.new {|k,v| k[v] = [0, 0]}
begin

View File

@@ -1,5 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -28,10 +30,8 @@ module WatchersHelper
:action => (watched ? 'unwatch' : 'watch'),
:object_type => object.class.to_s.underscore,
:object_id => object.id}
link_to_remote((watched ? l(:button_unwatch) : l(:button_watch)),
{:url => url},
:href => url_for(url),
:class => (watched ? 'icon icon-fav' : 'icon icon-fav-off'))
link_to((watched ? l(:button_unwatch) : l(:button_watch)), url,
:remote => true, :method => 'post', :class => (watched ? 'icon icon-fav' : 'icon icon-fav-off'))
end
@@ -43,22 +43,33 @@ module WatchersHelper
# Returns a comma separated list of users watching the given object
def watchers_list(object)
remove_allowed = User.current.allowed_to?("delete_#{object.class.name.underscore}_watchers".to_sym, object.project)
content = ''.html_safe
lis = object.watcher_users.collect do |user|
s = avatar(user, :size => "16").to_s + link_to_user(user, :class => 'user').to_s
s = ''.html_safe
s << avatar(user, :size => "16").to_s
s << link_to_user(user, :class => 'user')
if remove_allowed
url = {:controller => 'watchers',
:action => 'destroy',
:object_type => object.class.to_s.underscore,
:object_id => object.id,
:user_id => user}
s += ' ' + link_to_remote(image_tag('delete.png'),
{:url => url},
:href => url_for(url),
:style => "vertical-align: middle",
:class => "delete")
s << ' '
s << link_to(image_tag('delete.png'), url,
:remote => true, :method => 'post', :style => "vertical-align: middle", :class => "delete")
end
"<li>#{ s }</li>"
content << content_tag('li', s)
end
lis.empty? ? "" : "<ul>#{ lis.join("\n") }</ul>"
content.present? ? content_tag('ul', content) : content
end
def watchers_checkboxes(object, users, checked=nil)
users.map do |user|
c = checked.nil? ? object.watched_by?(user) : checked
tag = check_box_tag 'issue[watcher_user_ids][]', user.id, c, :id => nil
content_tag 'label', "#{tag} #{h(user)}".html_safe,
:id => "issue_watcher_user_ids_#{user.id}",
:class => "floating"
end.join.html_safe
end
end

View File

@@ -1,5 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@@ -1,5 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -19,14 +21,14 @@ module WikiHelper
def wiki_page_options_for_select(pages, selected = nil, parent = nil, level = 0)
pages = pages.group_by(&:parent) unless pages.is_a?(Hash)
s = ''
s = ''.html_safe
if pages.has_key?(parent)
pages[parent].each do |page|
attrs = "value='#{page.id}'"
attrs << " selected='selected'" if selected == page
indent = (level > 0) ? ('&nbsp;' * level * 2 + '&#187; ') : nil
indent = (level > 0) ? ('&nbsp;' * level * 2 + '&#187; ') : ''
s << "<option #{attrs}>#{indent}#{h page.pretty_title}</option>\n" +
s << content_tag('option', (indent + h(page.pretty_title)).html_safe, :value => page.id.to_s, :selected => selected == page) +
wiki_page_options_for_select(pages, selected, page, level + 1)
end
end

View File

@@ -1,5 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -16,4 +18,15 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
module WorkflowsHelper
def field_required?(field)
field.is_a?(CustomField) ? field.is_required? : %w(project_id tracker_id subject priority_id is_private).include?(field)
end
def field_permission_tag(permissions, status, field)
name = field.is_a?(CustomField) ? field.id.to_s : field
options = [["", ""], [l(:label_readonly), "readonly"]]
options << [l(:label_required), "required"] unless field_required?(field)
select_tag("permissions[#{name}][#{status.id}]", options_for_select(options, permissions[status.id][name]))
end
end

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -21,9 +21,10 @@ class Attachment < ActiveRecord::Base
belongs_to :container, :polymorphic => true
belongs_to :author, :class_name => "User", :foreign_key => "author_id"
validates_presence_of :container, :filename, :author
validates_presence_of :filename, :author
validates_length_of :filename, :maximum => 255
validates_length_of :disk_filename, :maximum => 255
validates_length_of :description, :maximum => 255
validate :validate_max_file_size
acts_as_event :title => :filename,
@@ -44,14 +45,25 @@ class Attachment < ActiveRecord::Base
"LEFT JOIN #{Project.table_name} ON #{Document.table_name}.project_id = #{Project.table_name}.id"}
cattr_accessor :storage_path
@@storage_path = Redmine::Configuration['attachments_storage_path'] || "#{Rails.root}/files"
@@storage_path = Redmine::Configuration['attachments_storage_path'] || File.join(Rails.root, "files")
cattr_accessor :thumbnails_storage_path
@@thumbnails_storage_path = File.join(Rails.root, "tmp", "thumbnails")
before_save :files_to_final_location
after_destroy :delete_from_disk
# Returns an unsaved copy of the attachment
def copy(attributes=nil)
copy = self.class.new
copy.attributes = self.attributes.dup.except("id", "downloads")
copy.attributes = attributes if attributes
copy
end
def validate_max_file_size
if self.filesize > Setting.attachment_max_size.to_i.kilobytes
errors.add(:base, :too_long, :count => Setting.attachment_max_size.to_i.kilobytes)
if @temp_file && self.filesize > Setting.attachment_max_size.to_i.kilobytes
errors.add(:base, l(:error_attachment_too_big, :max_size => Setting.attachment_max_size.to_i.kilobytes))
end
end
@@ -59,21 +71,33 @@ class Attachment < ActiveRecord::Base
unless incoming_file.nil?
@temp_file = incoming_file
if @temp_file.size > 0
self.filename = sanitize_filename(@temp_file.original_filename)
self.disk_filename = Attachment.disk_filename(filename)
self.content_type = @temp_file.content_type.to_s.chomp
if content_type.blank?
if @temp_file.respond_to?(:original_filename)
self.filename = @temp_file.original_filename
self.filename.force_encoding("UTF-8") if filename.respond_to?(:force_encoding)
end
if @temp_file.respond_to?(:content_type)
self.content_type = @temp_file.content_type.to_s.chomp
end
if content_type.blank? && filename.present?
self.content_type = Redmine::MimeType.of(filename)
end
self.filesize = @temp_file.size
end
end
end
def file
nil
end
def filename=(arg)
write_attribute :filename, sanitize_filename(arg.to_s)
if new_record? && disk_filename.blank?
self.disk_filename = Attachment.disk_filename(filename)
end
filename
end
# Copies the temporary file to its final location
# and computes its MD5 hash
def files_to_final_location
@@ -81,10 +105,15 @@ class Attachment < ActiveRecord::Base
logger.info("Saving attachment '#{self.diskfile}' (#{@temp_file.size} bytes)")
md5 = Digest::MD5.new
File.open(diskfile, "wb") do |f|
buffer = ""
while (buffer = @temp_file.read(8192))
f.write(buffer)
md5.update(buffer)
if @temp_file.respond_to?(:read)
buffer = ""
while (buffer = @temp_file.read(8192))
f.write(buffer)
md5.update(buffer)
end
else
f.write(@temp_file)
md5.update(@temp_file)
end
end
self.digest = md5.hexdigest
@@ -96,14 +125,24 @@ class Attachment < ActiveRecord::Base
end
end
# Deletes file on the disk
# Deletes the file from the file system if it's not referenced by other attachments
def delete_from_disk
File.delete(diskfile) if !filename.blank? && File.exist?(diskfile)
if Attachment.where("disk_filename = ? AND id <> ?", disk_filename, id).empty?
delete_from_disk!
end
end
# Returns file's location on disk
def diskfile
"#{@@storage_path}/#{self.disk_filename}"
File.join(self.class.storage_path, disk_filename.to_s)
end
def title
title = filename.to_s
if description.present?
title << " (#{description})"
end
title
end
def increment_download
@@ -111,19 +150,55 @@ class Attachment < ActiveRecord::Base
end
def project
container.project
container.try(:project)
end
def visible?(user=User.current)
container.attachments_visible?(user)
container && container.attachments_visible?(user)
end
def deletable?(user=User.current)
container.attachments_deletable?(user)
container && container.attachments_deletable?(user)
end
def image?
self.filename =~ /\.(bmp|gif|jpg|jpe|jpeg|png)$/i
!!(self.filename =~ /\.(bmp|gif|jpg|jpe|jpeg|png)$/i)
end
def thumbnailable?
image?
end
# Returns the full path the attachment thumbnail, or nil
# if the thumbnail cannot be generated.
def thumbnail(options={})
if thumbnailable? && readable?
size = options[:size].to_i
if size > 0
# Limit the number of thumbnails per image
size = (size / 50) * 50
# Maximum thumbnail size
size = 800 if size > 800
else
size = Setting.thumbnails_size.to_i
end
size = 100 unless size > 0
target = File.join(self.class.thumbnails_storage_path, "#{id}_#{digest}_#{size}.thumb")
begin
Redmine::Thumbnail.generate(self.diskfile, target, size)
rescue => e
logger.error "An error occured while generating thumbnail for #{disk_filename} to #{target}\nException was: #{e.message}" if logger
return nil
end
end
end
# Deletes all thumbnails
def self.clear_thumbnails
Dir.glob(File.join(thumbnails_storage_path, "*.thumb")).each do |file|
File.delete file
end
end
def is_text?
@@ -139,41 +214,52 @@ class Attachment < ActiveRecord::Base
File.readable?(diskfile)
end
# Returns the attachment token
def token
"#{id}.#{digest}"
end
# Finds an attachment that matches the given token and that has no container
def self.find_by_token(token)
if token.to_s =~ /^(\d+)\.([0-9a-f]+)$/
attachment_id, attachment_digest = $1, $2
attachment = Attachment.where(:id => attachment_id, :digest => attachment_digest).first
if attachment && attachment.container.nil?
attachment
end
end
end
# Bulk attaches a set of files to an object
#
# Returns a Hash of the results:
# :files => array of the attached files
# :unsaved => array of the files that could not be attached
def self.attach_files(obj, attachments)
attached = []
if attachments && attachments.is_a?(Hash)
attachments.each_value do |attachment|
file = attachment['file']
next unless file && file.size > 0
a = Attachment.create(:container => obj,
:file => file,
:description => attachment['description'].to_s.strip,
:author => User.current)
obj.attachments << a
if a.new_record?
obj.unsaved_attachments ||= []
obj.unsaved_attachments << a
else
attached << a
end
end
end
{:files => attached, :unsaved => obj.unsaved_attachments}
result = obj.save_attachments(attachments, User.current)
obj.attach_saved_attachments
result
end
def self.latest_attach(attachments, filename)
attachments.sort_by(&:created_on).reverse.detect {
attachments.sort_by(&:created_on).reverse.detect {
|att| att.filename.downcase == filename.downcase
}
end
private
def self.prune(age=1.day)
Attachment.where("created_on < ? AND (container_type IS NULL OR container_type = '')", Time.now - age).destroy_all
end
private
# Physically deletes the file from the file system
def delete_from_disk!
if disk_filename.present? && File.exist?(diskfile)
File.delete(diskfile)
end
end
def sanitize_filename(value)
# get only the filename, not the whole path
just_filename = value.gsub(/^.*(\\|\/)/, '')

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -15,7 +15,13 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
# Generic exception for when the AuthSource can not be reached
# (eg. can not connect to the LDAP)
class AuthSourceException < Exception; end
class AuthSourceTimeoutException < AuthSourceException; end
class AuthSource < ActiveRecord::Base
include Redmine::SubclassFactory
include Redmine::Ciphering
has_many :users
@@ -53,7 +59,7 @@ class AuthSource < ActiveRecord::Base
# Try to authenticate a user not yet registered against available sources
def self.authenticate(login, password)
AuthSource.find(:all, :conditions => ["onthefly_register=?", true]).each do |source|
AuthSource.where(:onthefly_register => true).all.each do |source|
begin
logger.debug "Authenticating '#{login}' against '#{source.name}'" if logger && logger.debug?
attrs = source.authenticate(login, password)

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -15,40 +15,49 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
require 'net/ldap'
require 'iconv'
require 'net/ldap'
require 'net/ldap/dn'
require 'timeout'
class AuthSourceLdap < AuthSource
validates_presence_of :host, :port, :attr_login
validates_length_of :name, :host, :maximum => 60, :allow_nil => true
validates_length_of :account, :account_password, :base_dn, :maximum => 255, :allow_nil => true
validates_length_of :account, :account_password, :base_dn, :filter, :maximum => 255, :allow_blank => true
validates_length_of :attr_login, :attr_firstname, :attr_lastname, :attr_mail, :maximum => 30, :allow_nil => true
validates_numericality_of :port, :only_integer => true
validates_numericality_of :timeout, :only_integer => true, :allow_blank => true
validate :validate_filter
before_validation :strip_ldap_attributes
def after_initialize
def initialize(attributes=nil, *args)
super
self.port = 389 if self.port == 0
end
def authenticate(login, password)
return nil if login.blank? || password.blank?
attrs = get_user_dn(login)
if attrs && attrs[:dn] && authenticate_dn(attrs[:dn], password)
logger.debug "Authentication successful for '#{login}'" if logger && logger.debug?
return attrs.except(:dn)
with_timeout do
attrs = get_user_dn(login, password)
if attrs && attrs[:dn] && authenticate_dn(attrs[:dn], password)
logger.debug "Authentication successful for '#{login}'" if logger && logger.debug?
return attrs.except(:dn)
end
end
rescue Net::LDAP::LdapError => text
raise "LdapError: " + text
rescue Net::LDAP::LdapError => e
raise AuthSourceException.new(e.message)
end
# test the connection to the LDAP
def test_connection
ldap_con = initialize_ldap_con(self.account, self.account_password)
ldap_con.open { }
rescue Net::LDAP::LdapError => text
raise "LdapError: " + text
with_timeout do
ldap_con = initialize_ldap_con(self.account, self.account_password)
ldap_con.open { }
end
rescue Net::LDAP::LdapError => e
raise AuthSourceException.new(e.message)
end
def auth_method_name
@@ -57,6 +66,30 @@ class AuthSourceLdap < AuthSource
private
def with_timeout(&block)
timeout = self.timeout
timeout = 20 unless timeout && timeout > 0
Timeout.timeout(timeout) do
return yield
end
rescue Timeout::Error => e
raise AuthSourceTimeoutException.new(e.message)
end
def ldap_filter
if filter.present?
Net::LDAP::Filter.construct(filter)
end
rescue Net::LDAP::LdapError
nil
end
def validate_filter
if filter.present? && ldap_filter.nil?
errors.add(:filter, :invalid)
end
end
def strip_ldap_attributes
[:attr_login, :attr_firstname, :attr_lastname, :attr_mail].each do |attr|
write_attribute(attr, read_attribute(attr).strip) unless read_attribute(attr).nil?
@@ -100,14 +133,24 @@ class AuthSourceLdap < AuthSource
end
# Get the user's dn and any attributes for them, given their login
def get_user_dn(login)
ldap_con = initialize_ldap_con(self.account, self.account_password)
def get_user_dn(login, password)
ldap_con = nil
if self.account && self.account.include?("$login")
ldap_con = initialize_ldap_con(self.account.sub("$login", Net::LDAP::DN.escape(login)), password)
else
ldap_con = initialize_ldap_con(self.account, self.account_password)
end
login_filter = Net::LDAP::Filter.eq( self.attr_login, login )
object_filter = Net::LDAP::Filter.eq( "objectClass", "*" )
attrs = {}
search_filter = object_filter & login_filter
if f = ldap_filter
search_filter = search_filter & f
end
ldap_con.search( :base => self.base_dn,
:filter => object_filter & login_filter,
:filter => search_filter,
:attributes=> search_attributes) do |entry|
if onthefly_register?

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -16,28 +16,42 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class Board < ActiveRecord::Base
include Redmine::SafeAttributes
belongs_to :project
has_many :topics, :class_name => 'Message', :conditions => "#{Message.table_name}.parent_id IS NULL", :order => "#{Message.table_name}.created_on DESC"
has_many :messages, :dependent => :destroy, :order => "#{Message.table_name}.created_on DESC"
belongs_to :last_message, :class_name => 'Message', :foreign_key => :last_message_id
acts_as_list :scope => :project_id
acts_as_tree :dependent => :nullify
acts_as_list :scope => '(project_id = #{project_id} AND parent_id #{parent_id ? "= #{parent_id}" : "IS NULL"})'
acts_as_watchable
validates_presence_of :name, :description
validates_length_of :name, :maximum => 30
validates_length_of :description, :maximum => 255
validate :validate_board
named_scope :visible, lambda {|*args| { :include => :project,
scope :visible, lambda {|*args| { :include => :project,
:conditions => Project.allowed_to_condition(args.shift || User.current, :view_messages, *args) } }
safe_attributes 'name', 'description', 'parent_id', 'move_to'
def visible?(user=User.current)
!user.nil? && user.allowed_to?(:view_messages, project)
end
def reload(*args)
@valid_parents = nil
super
end
def to_s
name
end
def valid_parents
@valid_parents ||= project.boards - self_and_descendants
end
def reset_counters!
self.class.reset_counters!(id)
end
@@ -50,4 +64,26 @@ class Board < ActiveRecord::Base
" last_message_id = (SELECT MAX(id) FROM #{Message.table_name} WHERE board_id=#{board_id})",
["id = ?", board_id])
end
def self.board_tree(boards, parent_id=nil, level=0)
tree = []
boards.select {|board| board.parent_id == parent_id}.sort_by(&:position).each do |board|
tree << [board, level]
tree += board_tree(boards, board.id, level+1)
end
if block_given?
tree.each do |board, level|
yield board, level
end
end
tree
end
protected
def validate_board
if parent_id && parent_id_changed?
errors.add(:parent_id, :invalid) unless valid_parents.include?(parent)
end
end
end

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -20,7 +20,7 @@ require 'iconv'
class Changeset < ActiveRecord::Base
belongs_to :repository
belongs_to :user
has_many :changes, :dependent => :delete_all
has_many :filechanges, :class_name => 'Change', :dependent => :delete_all
has_and_belongs_to_many :issues
has_and_belongs_to_many :parents,
:class_name => "Changeset",
@@ -31,10 +31,10 @@ class Changeset < ActiveRecord::Base
:join_table => "#{table_name_prefix}changeset_parents#{table_name_suffix}",
:association_foreign_key => 'changeset_id', :foreign_key => 'parent_id'
acts_as_event :title => Proc.new {|o| "#{l(:label_revision)} #{o.format_identifier}" + (o.short_comments.blank? ? '' : (': ' + o.short_comments))},
acts_as_event :title => Proc.new {|o| o.title},
:description => :long_comments,
:datetime => :committed_on,
:url => Proc.new {|o| {:controller => 'repositories', :action => 'revision', :id => o.repository.project, :rev => o.identifier}}
:url => Proc.new {|o| {:controller => 'repositories', :action => 'revision', :id => o.repository.project, :repository_id => o.repository.identifier_param, :rev => o.identifier}}
acts_as_searchable :columns => 'comments',
:include => {:repository => :project},
@@ -49,7 +49,8 @@ class Changeset < ActiveRecord::Base
validates_uniqueness_of :revision, :scope => :repository_id
validates_uniqueness_of :scmid, :scope => :repository_id, :allow_nil => true
named_scope :visible, lambda {|*args| { :include => {:repository => :project},
scope :visible,
lambda {|*args| { :include => {:repository => :project},
:conditions => Project.allowed_to_condition(args.shift || User.current, :view_changesets, *args) } }
after_create :scan_for_issues
@@ -151,28 +152,36 @@ class Changeset < ActiveRecord::Base
@long_comments || split_comments.last
end
def text_tag
if scmid?
def text_tag(ref_project=nil)
tag = if scmid?
"commit:#{scmid}"
else
"r#{revision}"
end
if repository && repository.identifier.present?
tag = "#{repository.identifier}|#{tag}"
end
if ref_project && project && ref_project != project
tag = "#{project.identifier}:#{tag}"
end
tag
end
# Returns the title used for the changeset in the activity/search results
def title
repo = (repository && repository.identifier.present?) ? " (#{repository.identifier})" : ''
comm = short_comments.blank? ? '' : (': ' + short_comments)
"#{l(:label_revision)} #{format_identifier}#{repo}#{comm}"
end
# Returns the previous changeset
def previous
@previous ||= Changeset.find(:first,
:conditions => ['id < ? AND repository_id = ?',
self.id, self.repository_id],
:order => 'id DESC')
@previous ||= Changeset.where(["id < ? AND repository_id = ?", id, repository_id]).order('id DESC').first
end
# Returns the next changeset
def next
@next ||= Changeset.find(:first,
:conditions => ['id > ? AND repository_id = ?',
self.id, self.repository_id],
:order => 'id ASC')
@next ||= Changeset.where(["id > ? AND repository_id = ?", id, repository_id]).order('id ASC').first
end
# Creates a new Change from it's common parameters
@@ -184,14 +193,14 @@ class Changeset < ActiveRecord::Base
:from_revision => change[:from_revision])
end
private
# Finds an issue that can be referenced by the commit message
# i.e. an issue that belong to the repository project, a subproject or a parent project
def find_referenced_issue_by_id(id)
return nil if id.blank?
issue = Issue.find_by_id(id.to_i, :include => :project)
if issue
if Setting.commit_cross_project_ref?
# all issues can be referenced/fixed
elsif issue
# issue that belong to the repository project, a subproject or a parent project only
unless issue.project &&
(project == issue.project || project.is_ancestor_of?(issue.project) ||
project.is_descendant_of?(issue.project))
@@ -201,6 +210,8 @@ class Changeset < ActiveRecord::Base
issue
end
private
def fix_issue(issue)
status = IssueStatus.find_by_id(Setting.commit_fix_status_id.to_i)
if status.nil?
@@ -213,7 +224,7 @@ class Changeset < ActiveRecord::Base
# don't change the status is the issue is closed
return if issue.status && issue.status.is_closed?
journal = issue.init_journal(user || User.anonymous, ll(Setting.default_language, :text_status_changed_by_changeset, text_tag))
journal = issue.init_journal(user || User.anonymous, ll(Setting.default_language, :text_status_changed_by_changeset, text_tag(issue.project)))
issue.status = status
unless Setting.commit_fix_done_ratio.blank?
issue.done_ratio = Setting.commit_fix_done_ratio.to_i
@@ -232,7 +243,7 @@ class Changeset < ActiveRecord::Base
:hours => hours,
:issue => issue,
:spent_on => commit_date,
:comments => l(:text_time_logged_by_changeset, :value => text_tag,
:comments => l(:text_time_logged_by_changeset, :value => text_tag(issue.project),
:locale => Setting.default_language)
)
time_entry.activity = log_time_activity unless log_time_activity.nil?

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -16,8 +16,11 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class Comment < ActiveRecord::Base
include Redmine::SafeAttributes
belongs_to :commented, :polymorphic => true, :counter_cache => true
belongs_to :author, :class_name => 'User', :foreign_key => 'author_id'
validates_presence_of :commented, :author, :comments
safe_attributes 'comments'
end

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -18,7 +18,7 @@
class CommentObserver < ActiveRecord::Observer
def after_create(comment)
if comment.commented.is_a?(News) && Setting.notified_events.include?('news_comment_added')
Mailer.deliver_news_comment_added(comment)
Mailer.news_comment_added(comment).deliver
end
end
end

Some files were not shown because too many files have changed in this diff Show More