changeset 25:9fd6221709a6 luisf

* Merge cannam branch
author Chris Cannam
date Fri, 24 Sep 2010 15:51:28 +0100
parents 39511236fe36 (current diff) ca82a3468d27 (diff)
children 67e8aef29de9
files app/views/projects/.svn/prop-base/activity.rhtml.svn-base app/views/projects/.svn/prop-base/add.rhtml.svn-base app/views/projects/.svn/prop-base/add_file.rhtml.svn-base app/views/projects/.svn/prop-base/list_files.rhtml.svn-base app/views/projects/.svn/prop-base/roadmap.rhtml.svn-base app/views/projects/.svn/text-base/activity.rhtml.svn-base app/views/projects/.svn/text-base/add.rhtml.svn-base app/views/projects/.svn/text-base/add_file.rhtml.svn-base app/views/projects/.svn/text-base/list_files.rhtml.svn-base app/views/projects/.svn/text-base/roadmap.rhtml.svn-base app/views/projects/activity.rhtml app/views/projects/add.rhtml app/views/projects/add_file.rhtml app/views/projects/list_files.rhtml app/views/projects/roadmap.rhtml public/images/.svn/prop-base/milestone.png.svn-base public/images/.svn/text-base/milestone.png.svn-base public/images/milestone.png
diffstat 716 files changed, 12556 insertions(+), 6934 deletions(-) [+]
line wrap: on
line diff
--- a/.svn/all-wcprops	Fri Sep 24 15:33:13 2010 +0100
+++ b/.svn/all-wcprops	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 24
-/svn/!svn/ver/4040/trunk
+/svn/!svn/ver/4173/trunk
 END
 Rakefile
 K 25
--- a/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,15 +1,15 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk
 http://redmine.rubyforge.org/svn
 
 
 
-2010-08-25T14:59:16.537407Z
-4040
-edavis10
+2010-09-23T16:23:39.070168Z
+4173
+winterheart
 has-props
 
 
@@ -41,7 +41,7 @@
 
 
 
-2010-07-23T14:49:47.760099Z
+2010-09-23T14:37:44.367737Z
 bbf560d44f092d22a30d3a562436ad8c
 2006-12-05T20:45:04.842118Z
 67
@@ -75,7 +75,7 @@
 
 
 
-2010-07-23T14:49:47.760099Z
+2010-09-23T14:37:44.367737Z
 67c937b1f1d0603e69f322de34bbfe04
 2010-07-18T15:49:24.341728Z
 3849
@@ -133,7 +133,7 @@
 
 
 
-2010-07-23T14:49:47.760099Z
+2010-09-23T14:37:44.363818Z
 201a803b90bbd2a1624c4ce1dd260098
 2010-06-09T22:01:21.132822Z
 3768
--- a/app/.svn/all-wcprops	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/.svn/all-wcprops	Fri Sep 24 15:51:28 2010 +0100
@@ -1,5 +1,5 @@
 K 25
 svn:wc:ra_dav:version-url
 V 28
-/svn/!svn/ver/4040/trunk/app
+/svn/!svn/ver/4172/trunk/app
 END
--- a/app/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,14 +1,14 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/app
 http://redmine.rubyforge.org/svn
 
 
 
-2010-08-25T14:59:16.537407Z
-4040
+2010-09-23T15:20:19.085385Z
+4172
 edavis10
 
 
--- a/app/controllers/.svn/all-wcprops	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/controllers/.svn/all-wcprops	Fri Sep 24 15:51:28 2010 +0100
@@ -1,13 +1,13 @@
 K 25
 svn:wc:ra_dav:version-url
 V 40
-/svn/!svn/ver/4040/trunk/app/controllers
+/svn/!svn/ver/4172/trunk/app/controllers
 END
 issues_controller.rb
 K 25
 svn:wc:ra_dav:version-url
 V 61
-/svn/!svn/ver/4040/trunk/app/controllers/issues_controller.rb
+/svn/!svn/ver/4083/trunk/app/controllers/issues_controller.rb
 END
 queries_controller.rb
 K 25
@@ -45,6 +45,12 @@
 V 57
 /svn/!svn/ver/3745/trunk/app/controllers/my_controller.rb
 END
+comments_controller.rb
+K 25
+svn:wc:ra_dav:version-url
+V 63
+/svn/!svn/ver/4172/trunk/app/controllers/comments_controller.rb
+END
 members_controller.rb
 K 25
 svn:wc:ra_dav:version-url
@@ -61,7 +67,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 68
-/svn/!svn/ver/4006/trunk/app/controllers/context_menus_controller.rb
+/svn/!svn/ver/4059/trunk/app/controllers/context_menus_controller.rb
 END
 journals_controller.rb
 K 25
@@ -81,11 +87,23 @@
 V 62
 /svn/!svn/ver/3692/trunk/app/controllers/reports_controller.rb
 END
+project_enumerations_controller.rb
+K 25
+svn:wc:ra_dav:version-url
+V 75
+/svn/!svn/ver/4075/trunk/app/controllers/project_enumerations_controller.rb
+END
+custom_fields_controller.rb
+K 25
+svn:wc:ra_dav:version-url
+V 68
+/svn/!svn/ver/3627/trunk/app/controllers/custom_fields_controller.rb
+END
 timelog_controller.rb
 K 25
 svn:wc:ra_dav:version-url
 V 62
-/svn/!svn/ver/3931/trunk/app/controllers/timelog_controller.rb
+/svn/!svn/ver/4087/trunk/app/controllers/timelog_controller.rb
 END
 settings_controller.rb
 K 25
@@ -93,35 +111,35 @@
 V 63
 /svn/!svn/ver/3176/trunk/app/controllers/settings_controller.rb
 END
-custom_fields_controller.rb
-K 25
-svn:wc:ra_dav:version-url
-V 68
-/svn/!svn/ver/3627/trunk/app/controllers/custom_fields_controller.rb
-END
-users_controller.rb
-K 25
-svn:wc:ra_dav:version-url
-V 60
-/svn/!svn/ver/3935/trunk/app/controllers/users_controller.rb
-END
 issue_moves_controller.rb
 K 25
 svn:wc:ra_dav:version-url
 V 66
 /svn/!svn/ver/3940/trunk/app/controllers/issue_moves_controller.rb
 END
+users_controller.rb
+K 25
+svn:wc:ra_dav:version-url
+V 60
+/svn/!svn/ver/4066/trunk/app/controllers/users_controller.rb
+END
+files_controller.rb
+K 25
+svn:wc:ra_dav:version-url
+V 60
+/svn/!svn/ver/4085/trunk/app/controllers/files_controller.rb
+END
 application_controller.rb
 K 25
 svn:wc:ra_dav:version-url
 V 66
-/svn/!svn/ver/3949/trunk/app/controllers/application_controller.rb
+/svn/!svn/ver/4075/trunk/app/controllers/application_controller.rb
 END
-ldap_auth_sources_controller.rb
+previews_controller.rb
 K 25
 svn:wc:ra_dav:version-url
-V 72
-/svn/!svn/ver/3744/trunk/app/controllers/ldap_auth_sources_controller.rb
+V 63
+/svn/!svn/ver/3946/trunk/app/controllers/previews_controller.rb
 END
 auth_sources_controller.rb
 K 25
@@ -129,11 +147,11 @@
 V 67
 /svn/!svn/ver/3744/trunk/app/controllers/auth_sources_controller.rb
 END
-previews_controller.rb
+ldap_auth_sources_controller.rb
 K 25
 svn:wc:ra_dav:version-url
-V 63
-/svn/!svn/ver/3946/trunk/app/controllers/previews_controller.rb
+V 72
+/svn/!svn/ver/3744/trunk/app/controllers/ldap_auth_sources_controller.rb
 END
 search_controller.rb
 K 25
@@ -147,18 +165,18 @@
 V 63
 /svn/!svn/ver/3528/trunk/app/controllers/messages_controller.rb
 END
+versions_controller.rb
+K 25
+svn:wc:ra_dav:version-url
+V 63
+/svn/!svn/ver/4097/trunk/app/controllers/versions_controller.rb
+END
 issue_relations_controller.rb
 K 25
 svn:wc:ra_dav:version-url
 V 70
 /svn/!svn/ver/3591/trunk/app/controllers/issue_relations_controller.rb
 END
-versions_controller.rb
-K 25
-svn:wc:ra_dav:version-url
-V 63
-/svn/!svn/ver/3866/trunk/app/controllers/versions_controller.rb
-END
 boards_controller.rb
 K 25
 svn:wc:ra_dav:version-url
@@ -175,7 +193,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 59
-/svn/!svn/ver/3597/trunk/app/controllers/news_controller.rb
+/svn/!svn/ver/4172/trunk/app/controllers/news_controller.rb
 END
 trackers_controller.rb
 K 25
@@ -223,7 +241,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 63
-/svn/!svn/ver/3777/trunk/app/controllers/projects_controller.rb
+/svn/!svn/ver/4070/trunk/app/controllers/projects_controller.rb
 END
 account_controller.rb
 K 25
@@ -235,7 +253,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 64
-/svn/!svn/ver/3944/trunk/app/controllers/calendars_controller.rb
+/svn/!svn/ver/4041/trunk/app/controllers/calendars_controller.rb
 END
 issue_categories_controller.rb
 K 25
@@ -247,7 +265,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 61
-/svn/!svn/ver/3943/trunk/app/controllers/gantts_controller.rb
+/svn/!svn/ver/4072/trunk/app/controllers/gantts_controller.rb
 END
 documents_controller.rb
 K 25
@@ -261,6 +279,12 @@
 V 59
 /svn/!svn/ver/3632/trunk/app/controllers/wiki_controller.rb
 END
+activities_controller.rb
+K 25
+svn:wc:ra_dav:version-url
+V 65
+/svn/!svn/ver/4047/trunk/app/controllers/activities_controller.rb
+END
 enumerations_controller.rb
 K 25
 svn:wc:ra_dav:version-url
--- a/app/controllers/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/controllers/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,14 +1,14 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/app/controllers
 http://redmine.rubyforge.org/svn
 
 
 
-2010-08-25T14:59:16.537407Z
-4040
+2010-09-23T15:20:19.085385Z
+4172
 edavis10
 
 
@@ -32,11 +32,11 @@
 
 
 
-2010-08-25T15:27:53.046491Z
-b9533adcb710aba95a687413ccc4cb59
-2010-08-25T14:59:16.537407Z
-4040
-edavis10
+2010-09-24T12:48:26.271687Z
+611e226f9845a33fb6fe28700968e7de
+2010-09-11T20:21:27.018967Z
+4083
+jbbarth
 has-props
 
 
@@ -58,7 +58,7 @@
 
 
 
-12932
+13034
 
 queries_controller.rb
 file
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:44.744097Z
+2010-09-23T14:37:44.399747Z
 7ad6758cfd160c4b6ef6d71be06e087c
 2010-04-19T15:08:28.751734Z
 3684
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:44.744097Z
+2010-09-23T14:37:44.399747Z
 7a73aba15fcd447531d1552de01706d9
 2009-12-20T09:44:28.044710Z
 3201
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:44.744097Z
+2010-09-23T14:37:44.395735Z
 612f3e7497e14c728934e83fbe5778c4
 2009-12-20T09:45:04.782778Z
 3202
@@ -168,7 +168,7 @@
 
 
 
-2010-07-23T14:49:44.744097Z
+2010-09-23T14:37:44.399747Z
 3ee494bd8196306eab8913bd462b44da
 2010-06-20T16:08:15.578906Z
 3798
@@ -202,7 +202,7 @@
 
 
 
-2010-08-25T15:27:53.046491Z
+2010-09-23T14:37:44.391741Z
 8cd8e21323a4500a05c26e4ebdde1812
 2010-08-17T15:03:58.074505Z
 3945
@@ -236,7 +236,7 @@
 
 
 
-2010-07-23T14:49:44.744097Z
+2010-09-23T14:37:44.395735Z
 b178015d27e341adaa871e3800e94401
 2010-05-23T03:16:37.499264Z
 3745
@@ -264,13 +264,47 @@
 
 6422
 
+comments_controller.rb
+file
+
+
+
+
+2010-09-24T12:48:26.271687Z
+c2289eb9b654117a101c072955d4c705
+2010-09-23T15:20:19.085385Z
+4172
+edavis10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1084
+
 members_controller.rb
 file
 
 
 
 
-2010-07-23T14:49:44.748131Z
+2010-09-23T14:37:44.395735Z
 20e245fa61dc0dcb2f105a8f0e6af98c
 2010-06-19T19:51:43.174421Z
 3784
@@ -304,7 +338,7 @@
 
 
 
-2010-07-23T14:49:44.748131Z
+2010-09-23T14:37:44.403745Z
 95ad1acf7766861a4dbd0aebd9c847de
 2009-10-21T03:21:31.657956Z
 2941
@@ -338,33 +372,33 @@
 
 
 
-2010-08-25T15:27:53.046491Z
-e3ff02e7eaab56330be93b78dd81da7e
-2010-08-19T18:16:54.064576Z
-4006
-edavis10
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-1486
+2010-09-24T12:48:26.271687Z
+8e09032afd0db141012e59a0f689b687
+2010-09-03T21:43:07.906158Z
+4059
+jbbarth
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1647
 
 journals_controller.rb
 file
@@ -372,7 +406,7 @@
 
 
 
-2010-08-25T15:27:53.046491Z
+2010-09-23T14:37:44.395735Z
 deb481ad0f862b9305b79f292d59fb51
 2010-08-23T15:04:36.844654Z
 4034
@@ -406,7 +440,7 @@
 
 
 
-2010-07-23T14:49:44.748131Z
+2010-09-23T14:37:44.403745Z
 5052c701a12ad27e88950dd4a745b0f8
 2010-03-04T05:33:45.236699Z
 3536
@@ -440,7 +474,7 @@
 
 
 
-2010-07-23T14:49:44.748131Z
+2010-09-23T14:37:44.399747Z
 8f7e6e7308912a6169a700b0c88174a0
 2010-04-27T16:43:52.584075Z
 3692
@@ -468,39 +502,39 @@
 
 3314
 
-timelog_controller.rb
+project_enumerations_controller.rb
 file
 
 
 
 
-2010-08-25T15:27:53.046491Z
-72160c2e91f17c8fef5ca833a8556463
-2010-08-09T23:15:32.315886Z
-3931
+2010-09-24T12:48:26.271687Z
+828b364ba2850ceddb3caa566bf10124
+2010-09-10T16:00:49.687515Z
+4075
 edavis10
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-14494
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+856
 
 settings_controller.rb
 file
@@ -508,7 +542,7 @@
 
 
 
-2010-07-23T14:49:44.748131Z
+2010-09-23T14:37:44.399747Z
 b7f5a5cb777aa2418a71520c164da11a
 2009-12-17T18:21:02.630202Z
 3176
@@ -542,7 +576,7 @@
 
 
 
-2010-07-23T14:49:44.748131Z
+2010-09-23T14:37:44.391741Z
 00272455ac5be11da48f92c4a443c538
 2010-04-03T11:54:24.331654Z
 3627
@@ -570,17 +604,51 @@
 
 2373
 
+timelog_controller.rb
+file
+
+
+
+
+2010-09-24T12:48:26.271687Z
+7e5890e22da346ff06debe33cc4bf34d
+2010-09-14T19:02:25.847894Z
+4087
+edavis10
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+14320
+
 users_controller.rb
 file
 
 
 
 
-2010-08-25T15:27:53.046491Z
-c77cc4f901292e6f8c921656d0503467
-2010-08-10T23:07:44.448600Z
-3935
-jbbarth
+2010-09-24T12:48:26.275788Z
+df36e1f9ccb5879ba3aa7b34592c18cf
+2010-09-06T01:02:52.851079Z
+4066
+edavis10
 has-props
 
 
@@ -602,7 +670,7 @@
 
 
 
-5939
+5977
 
 issue_moves_controller.rb
 file
@@ -610,7 +678,7 @@
 
 
 
-2010-08-25T15:27:53.046491Z
+2010-09-23T14:37:44.395735Z
 41a4ff4e0c4fab3e134a9bfa8136323a
 2010-08-13T14:59:04.653474Z
 3940
@@ -638,16 +706,50 @@
 
 2290
 
+files_controller.rb
+file
+
+
+
+
+2010-09-24T12:48:26.275788Z
+120cefe7fd45eda6957c2e633ceab0fb
+2010-09-14T16:24:07.840869Z
+4085
+edavis10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1258
+
 application_controller.rb
 file
 
 
 
 
-2010-08-25T15:27:53.046491Z
-90bc300210100504fc73d1a96ff6f002
-2010-08-19T01:01:35.693458Z
-3949
+2010-09-24T12:48:26.275788Z
+e93fc4710d9abbef72273a22b174eb27
+2010-09-10T16:00:49.687515Z
+4075
 edavis10
 has-props
 
@@ -670,7 +772,7 @@
 
 
 
-13301
+13486
 
 ldap_auth_sources_controller.rb
 file
@@ -678,7 +780,7 @@
 
 
 
-2010-07-23T14:49:44.748131Z
+2010-09-23T14:37:44.395735Z
 5f7b9cb2e9c8a60db58ea0833cf481c5
 2010-05-23T03:16:31.304135Z
 3744
@@ -712,7 +814,7 @@
 
 
 
-2010-07-23T14:49:44.748131Z
+2010-09-23T14:37:44.391741Z
 237280766d09418161536250d514a7bf
 2010-05-23T03:16:31.304135Z
 3744
@@ -746,7 +848,7 @@
 
 
 
-2010-08-25T15:27:53.046491Z
+2010-09-23T14:37:44.395735Z
 1407f3993f625a9fa14fa0e208c3df4f
 2010-08-18T15:01:35.032314Z
 3946
@@ -780,7 +882,7 @@
 
 
 
-2010-07-23T14:49:44.748131Z
+2010-09-23T14:37:44.399747Z
 0015154998f830227b636ee423f007f3
 2010-06-20T20:01:32.722003Z
 3806
@@ -814,7 +916,7 @@
 
 
 
-2010-07-23T14:49:44.748131Z
+2010-09-23T14:37:44.395735Z
 f3f4378ec15e1401ead0dcac4e9cb059
 2010-03-03T17:05:00.967826Z
 3528
@@ -848,7 +950,7 @@
 
 
 
-2010-07-23T14:49:44.752129Z
+2010-09-23T14:37:44.395735Z
 c57448661f2eaab81c76f23d7f51e0ab
 2010-03-16T15:17:47.586688Z
 3591
@@ -882,11 +984,11 @@
 
 
 
-2010-07-28T11:07:47.104150Z
-a243808f2423e88dda09f5adb6c99ba6
-2010-07-25T09:29:46.849682Z
-3866
-jplang
+2010-09-24T12:48:26.275788Z
+9cc19ecc2f9e1ad458f27cdbcd450970
+2010-09-17T15:55:08.377083Z
+4097
+edavis10
 has-props
 
 
@@ -908,7 +1010,7 @@
 
 
 
-3951
+6136
 
 boards_controller.rb
 file
@@ -916,7 +1018,7 @@
 
 
 
-2010-08-25T15:27:53.046491Z
+2010-09-23T14:37:44.391741Z
 52638c82da929081099076d5aa0f9212
 2010-08-16T23:39:27.396462Z
 3942
@@ -950,7 +1052,7 @@
 
 
 
-2010-07-23T14:49:44.752129Z
+2010-09-23T14:37:44.391741Z
 21c0e5d894d1429ac39f3253ae021594
 2010-01-05T18:16:03.565347Z
 3281
@@ -984,10 +1086,10 @@
 
 
 
-2010-07-23T14:49:44.752129Z
-b2715e92f593360f1f36e0409c95b464
-2010-03-17T15:41:58.766740Z
-3597
+2010-09-24T12:48:26.275788Z
+dd877e070cf218909dccfc0c67658914
+2010-09-23T15:20:19.085385Z
+4172
 edavis10
 has-props
 
@@ -1010,7 +1112,7 @@
 
 
 
-3598
+3388
 
 trackers_controller.rb
 file
@@ -1018,7 +1120,7 @@
 
 
 
-2010-07-23T14:49:44.752129Z
+2010-09-23T14:37:44.399747Z
 a5e793eb94e501be4c1a39acc65cc568
 2010-04-03T11:54:24.331654Z
 3627
@@ -1052,7 +1154,7 @@
 
 
 
-2010-08-25T15:27:53.046491Z
+2010-09-23T14:37:44.395735Z
 77209ec52ddcefafb0bfbb76195167ec
 2010-08-10T22:37:00.826946Z
 3934
@@ -1086,7 +1188,7 @@
 
 
 
-2010-07-23T14:49:44.752129Z
+2010-09-23T14:37:44.395735Z
 f0fdda9126d71c0b2d4638de50ab1097
 2010-02-12T19:15:39.389877Z
 3416
@@ -1120,7 +1222,7 @@
 
 
 
-2010-07-23T14:49:44.752129Z
+2010-09-23T14:37:44.399747Z
 28f2e44219870c62c9844354b78af6e1
 2010-04-03T11:54:24.331654Z
 3627
@@ -1154,7 +1256,7 @@
 
 
 
-2010-07-23T14:49:44.752129Z
+2010-09-23T14:37:44.403745Z
 7ae79a9d22586240a01af73834b718a3
 2010-02-05T16:57:02.094258Z
 3370
@@ -1188,7 +1290,7 @@
 
 
 
-2010-07-23T14:49:44.752129Z
+2010-09-23T14:37:44.399747Z
 a90fd2992bc17c6cee999369521194c4
 2010-04-17T12:51:46.860438Z
 3680
@@ -1222,7 +1324,7 @@
 
 
 
-2010-07-23T14:49:44.752129Z
+2010-09-23T14:37:44.391741Z
 ed65a11326fe54914ba3a750a2b6f943
 2009-12-19T20:33:24.113306Z
 3200
@@ -1256,10 +1358,10 @@
 
 
 
-2010-07-23T14:49:44.752129Z
-968635c7a052a109b6a298b9f012c9d6
-2010-06-19T17:45:04.348690Z
-3777
+2010-09-24T12:48:26.275788Z
+7a9d61829d2ebbcab2524e763a28235b
+2010-09-08T16:01:51.939478Z
+4070
 edavis10
 has-props
 
@@ -1282,7 +1384,7 @@
 
 
 
-15166
+9973
 
 account_controller.rb
 file
@@ -1290,7 +1392,7 @@
 
 
 
-2010-08-25T15:27:53.046491Z
+2010-09-23T14:37:44.391741Z
 d0ff6be1c749b765d9d64bef64c27537
 2010-08-03T15:26:50.842290Z
 3906
@@ -1324,10 +1426,10 @@
 
 
 
-2010-08-25T15:27:53.050542Z
-2395bf1ef8a03eae77dbc9c9956de2e4
-2010-08-16T23:56:42.601754Z
-3944
+2010-09-24T12:48:26.275788Z
+cac7d6c5cbe1f559c89a3f41e79ea4b5
+2010-08-26T16:36:59.817467Z
+4041
 edavis10
 
 
@@ -1350,7 +1452,7 @@
 
 
 
-1307
+1354
 
 issue_categories_controller.rb
 file
@@ -1358,7 +1460,7 @@
 
 
 
-2010-07-23T14:49:44.756136Z
+2010-09-23T14:37:44.395735Z
 119ceb4a27aa554d03867f46cb142d0e
 2010-03-17T15:41:58.766740Z
 3597
@@ -1392,10 +1494,10 @@
 
 
 
-2010-08-25T15:27:53.050542Z
-8214d623a887f0d2dd8801af05426a35
-2010-08-16T23:56:37.048249Z
-3943
+2010-09-24T12:48:26.275788Z
+81dbee1745da99b9ea499f3fbe1d3944
+2010-09-10T03:09:02.311267Z
+4072
 edavis10
 
 
@@ -1418,7 +1520,7 @@
 
 
 
-2339
+1019
 
 documents_controller.rb
 file
@@ -1426,7 +1528,7 @@
 
 
 
-2010-07-23T14:49:44.756136Z
+2010-09-23T14:37:44.391741Z
 c2c68bf5fa3ed22a8f55c8414d1efce9
 2010-03-17T15:41:58.766740Z
 3597
@@ -1460,7 +1562,7 @@
 
 
 
-2010-07-23T14:49:44.756136Z
+2010-09-23T14:37:44.403745Z
 cb709bfbd3ba20cd9e7245a9575a720d
 2010-04-11T12:56:18.077630Z
 3632
@@ -1488,13 +1590,47 @@
 
 9211
 
+activities_controller.rb
+file
+
+
+
+
+2010-09-24T12:48:26.275788Z
+88f55d118861ffaca0992fa5ec55d51f
+2010-08-27T14:05:54.014502Z
+4047
+edavis10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1952
+
 enumerations_controller.rb
 file
 
 
 
 
-2010-07-23T14:49:44.756136Z
+2010-09-23T14:37:44.391741Z
 1caaedc7bb0a3085878dc94446c70ab0
 2010-03-02T20:03:09.514061Z
 3524
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/app/controllers/.svn/text-base/activities_controller.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -0,0 +1,59 @@
+class ActivitiesController < ApplicationController
+  menu_item :activity
+  before_filter :find_optional_project
+  accept_key_auth :index
+
+  def index
+    @days = Setting.activity_days_default.to_i
+    
+    if params[:from]
+      begin; @date_to = params[:from].to_date + 1; rescue; end
+    end
+
+    @date_to ||= Date.today + 1
+    @date_from = @date_to - @days
+    @with_subprojects = params[:with_subprojects].nil? ? Setting.display_subprojects_issues? : (params[:with_subprojects] == '1')
+    @author = (params[:user_id].blank? ? nil : User.active.find(params[:user_id]))
+    
+    @activity = Redmine::Activity::Fetcher.new(User.current, :project => @project, 
+                                                             :with_subprojects => @with_subprojects,
+                                                             :author => @author)
+    @activity.scope_select {|t| !params["show_#{t}"].nil?}
+    @activity.scope = (@author.nil? ? :default : :all) if @activity.scope.empty?
+
+    events = @activity.events(@date_from, @date_to)
+    
+    if events.empty? || stale?(:etag => [events.first, User.current])
+      respond_to do |format|
+        format.html { 
+          @events_by_day = events.group_by(&:event_date)
+          render :layout => false if request.xhr?
+        }
+        format.atom {
+          title = l(:label_activity)
+          if @author
+            title = @author.name
+          elsif @activity.scope.size == 1
+            title = l("label_#{@activity.scope.first.singularize}_plural")
+          end
+          render_feed(events, :title => "#{@project || Setting.app_title}: #{title}")
+        }
+      end
+    end
+    
+  rescue ActiveRecord::RecordNotFound
+    render_404
+  end
+
+  private
+
+  # TODO: refactor, duplicated in projects_controller
+  def find_optional_project
+    return true unless params[:id]
+    @project = Project.find(params[:id])
+    authorize
+  rescue ActiveRecord::RecordNotFound
+    render_404
+  end
+
+end
--- a/app/controllers/.svn/text-base/application_controller.rb.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/controllers/.svn/text-base/application_controller.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -169,6 +169,13 @@
     render_404
   end
 
+  # Find project of id params[:project_id]
+  def find_project_by_project_id
+    @project = Project.find(params[:project_id])
+  rescue ActiveRecord::RecordNotFound
+    render_404
+  end
+
   # Find a project based on params[:project_id]
   # TODO: some subclasses override this, see about merging their logic
   def find_optional_project
--- a/app/controllers/.svn/text-base/calendars_controller.rb.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/controllers/.svn/text-base/calendars_controller.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -32,8 +32,11 @@
       @calendar.events = events
     end
     
-    render :layout => false if request.xhr?
+    render :action => 'show', :layout => false if request.xhr?
   end
   
+  def update
+    show
+  end
 
 end
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/app/controllers/.svn/text-base/comments_controller.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -0,0 +1,36 @@
+class CommentsController < ApplicationController
+  default_search_scope :news
+  model_object News
+  before_filter :find_model_object
+  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])
+    @comment.author = User.current
+    if @news.comments << @comment
+      flash[:notice] = l(:label_comment_added)
+    end
+    
+    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
+  end
+
+  private
+
+  # ApplicationController's find_model_object sets it based on the controller
+  # name so it needs to be overriden and set to @news instead
+  def find_model_object
+    super
+    @news = @object
+    @comment = nil
+    @news
+  end
+  
+end
--- a/app/controllers/.svn/text-base/context_menus_controller.rb.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/controllers/.svn/text-base/context_menus_controller.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -6,9 +6,15 @@
     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
-    projects = @issues.collect(&:project).compact.uniq
-    @project = projects.first if projects.size == 1
+    @projects = @issues.collect(&:project).compact.uniq
+    @project = @projects.first if @projects.size == 1
 
     @can = {:edit => (@project && User.current.allowed_to?(:edit_issues, @project)),
             :log_time => (@project && User.current.allowed_to?(:log_time, @project)),
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/app/controllers/.svn/text-base/files_controller.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -0,0 +1,36 @@
+class FilesController < ApplicationController
+  menu_item :files
+
+  before_filter :find_project_by_project_id
+  before_filter :authorize
+
+  helper :sort
+  include SortHelper
+
+  def index
+    sort_init 'filename', 'asc'
+    sort_update 'filename' => "#{Attachment.table_name}.filename",
+                'created_on' => "#{Attachment.table_name}.created_on",
+                'size' => "#{Attachment.table_name}.filesize",
+                'downloads' => "#{Attachment.table_name}.downloads"
+                
+    @containers = [ Project.find(@project.id, :include => :attachments, :order => sort_clause)]
+    @containers += @project.versions.find(:all, :include => :attachments, :order => sort_clause).sort.reverse
+    render :layout => !request.xhr?
+  end
+
+  def new
+    @versions = @project.versions.sort
+  end
+
+  def create
+    container = (params[:version_id].blank? ? @project : @project.versions.find_by_id(params[:version_id]))
+    attachments = Attachment.attach_files(container, params[:attachments])
+    render_attachment_warning_if_needed(container)
+
+    if !attachments.empty? && Setting.notified_events.include?('file_added')
+      Mailer.deliver_attachments_added(attachments[:files])
+    end
+    redirect_to project_files_path(@project)
+  end
+end
--- a/app/controllers/.svn/text-base/gantts_controller.rb.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/controllers/.svn/text-base/gantts_controller.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -4,6 +4,7 @@
 
   rescue_from Query::StatementInvalid, :with => :query_statement_invalid
 
+  helper :gantt
   helper :issues
   helper :projects
   helper :queries
@@ -14,33 +15,22 @@
   
   def show
     @gantt = Redmine::Helpers::Gantt.new(params)
+    @gantt.project = @project
     retrieve_query
     @query.group_by = nil
-    if @query.valid?
-      events = []
-      # Issues that have start and due dates
-      events += @query.issues(:include => [:tracker, :assigned_to, :priority],
-                              :order => "start_date, due_date",
-                              :conditions => ["(((start_date>=? and start_date<=?) or (due_date>=? and due_date<=?) or (start_date<? and due_date>?)) and start_date is not null and due_date is not null)", @gantt.date_from, @gantt.date_to, @gantt.date_from, @gantt.date_to, @gantt.date_from, @gantt.date_to]
-                              )
-      # Issues that don't have a due date but that are assigned to a version with a date
-      events += @query.issues(:include => [:tracker, :assigned_to, :priority, :fixed_version],
-                              :order => "start_date, effective_date",
-                              :conditions => ["(((start_date>=? and start_date<=?) or (effective_date>=? and effective_date<=?) or (start_date<? and effective_date>?)) and start_date is not null and due_date is null and effective_date is not null)", @gantt.date_from, @gantt.date_to, @gantt.date_from, @gantt.date_to, @gantt.date_from, @gantt.date_to]
-                              )
-      # Versions
-      events += @query.versions(:conditions => ["effective_date BETWEEN ? AND ?", @gantt.date_from, @gantt.date_to])
-                                   
-      @gantt.events = events
-    end
+    @gantt.query = @query if @query.valid?
     
     basename = (@project ? "#{@project.identifier}-" : '') + 'gantt'
     
     respond_to do |format|
       format.html { render :action => "show", :layout => !request.xhr? }
-      format.png  { send_data(@gantt.to_image(@project), :disposition => 'inline', :type => 'image/png', :filename => "#{basename}.png") } if @gantt.respond_to?('to_image')
-      format.pdf  { send_data(gantt_to_pdf(@gantt, @project), :type => 'application/pdf', :filename => "#{basename}.pdf") }
+      format.png  { send_data(@gantt.to_image, :disposition => 'inline', :type => 'image/png', :filename => "#{basename}.png") } if @gantt.respond_to?('to_image')
+      format.pdf  { send_data(@gantt.to_pdf, :type => 'application/pdf', :filename => "#{basename}.pdf") }
     end
   end
 
+  def update
+    show
+  end
+
 end
--- a/app/controllers/.svn/text-base/issues_controller.rb.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/controllers/.svn/text-base/issues_controller.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -47,6 +47,7 @@
   include SortHelper
   include IssuesHelper
   helper :timelog
+  helper :gantt
   include Redmine::Export::PDF
 
   verify :method => [:post, :delete],
@@ -133,7 +134,7 @@
       call_hook(:controller_issues_new_after_save, { :params => params, :issue => @issue})
       respond_to do |format|
         format.html {
-          redirect_to(params[:continue] ? { :action => 'new', :issue => {:tracker_id => @issue.tracker, :parent_issue_id => @issue.parent_issue_id}.reject {|k,v| v.nil?} } :
+          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?} } :
                       { :action => 'show', :id => @issue })
         }
         format.xml  { render :action => 'show', :status => :created, :location => url_for(:controller => 'issues', :action => 'show', :id => @issue) }
@@ -270,7 +271,7 @@
     @edit_allowed = User.current.allowed_to?(:edit_issues, @project)
     @time_entry = TimeEntry.new
     
-    @notes = params[:notes]
+    @notes = params[:notes] || (params[:issue].present? ? params[:issue][:notes] : nil)
     @issue.init_journal(User.current, @notes)
     # User can change issue attributes only if he has :edit permission or if a workflow transition is allowed
     if (@edit_allowed || !@allowed_statuses.empty?) && params[:issue]
--- a/app/controllers/.svn/text-base/news_controller.rb.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/controllers/.svn/text-base/news_controller.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -18,9 +18,9 @@
 class NewsController < ApplicationController
   default_search_scope :news
   model_object News
-  before_filter :find_model_object, :except => [:new, :index, :preview]
-  before_filter :find_project_from_association, :except => [:new, :index, :preview]
-  before_filter :find_project, :only => [:new, :preview]
+  before_filter :find_model_object, :except => [:new, :create, :index, :preview]
+  before_filter :find_project_from_association, :except => [:new, :create, :index, :preview]
+  before_filter :find_project, :only => [:new, :create, :preview]
   before_filter :authorize, :except => [:index, :preview]
   before_filter :find_optional_project, :only => :index
   accept_key_auth :index
@@ -46,38 +46,32 @@
 
   def new
     @news = News.new(:project => @project, :author => User.current)
+  end
+
+  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
     end
   end
+
+  def edit
+  end
   
-  def edit
-    if request.post? and @news.update_attributes(params[:news])
+  def update
+    if request.put? and @news.update_attributes(params[:news])
       flash[:notice] = l(:notice_successful_update)
       redirect_to :action => 'show', :id => @news
+    else
+      render :action => 'edit'
     end
   end
-  
-  def add_comment
-    @comment = Comment.new(params[:comment])
-    @comment.author = User.current
-    if @news.comments << @comment
-      flash[:notice] = l(:label_comment_added)
-      redirect_to :action => 'show', :id => @news
-    else
-      show
-      render :action => 'show'
-    end
-  end
-
-  def destroy_comment
-    @news.comments.find(params[:comment_id]).destroy
-    redirect_to :action => 'show', :id => @news
-  end
 
   def destroy
     @news.destroy
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/app/controllers/.svn/text-base/project_enumerations_controller.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -0,0 +1,26 @@
+class ProjectEnumerationsController < ApplicationController
+  before_filter :find_project_by_project_id
+  before_filter :authorize
+  
+  def update
+    if request.put? && params[:enumerations]
+      Project.transaction do
+        params[:enumerations].each do |id, activity|
+          @project.update_or_create_time_entry_activity(id, activity)
+        end
+      end
+      flash[:notice] = l(:notice_successful_update)
+    end
+    
+    redirect_to :controller => 'projects', :action => 'settings', :tab => 'activities', :id => @project
+  end
+
+  def destroy
+    @project.time_entry_activities.each do |time_entry_activity|
+      time_entry_activity.destroy(time_entry_activity.parent)
+    end
+    flash[:notice] = l(:notice_successful_update)
+    redirect_to :controller => 'projects', :action => 'settings', :tab => 'activities', :id => @project
+  end
+
+end
--- a/app/controllers/.svn/text-base/projects_controller.rb.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/controllers/.svn/text-base/projects_controller.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -17,24 +17,24 @@
 
 class ProjectsController < ApplicationController
   menu_item :overview
-  menu_item :activity, :only => :activity
   menu_item :roadmap, :only => :roadmap
-  menu_item :files, :only => [:list_files, :add_file]
   menu_item :settings, :only => :settings
   
-  before_filter :find_project, :except => [ :index, :list, :add, :copy, :activity ]
-  before_filter :find_optional_project, :only => :activity
-  before_filter :authorize, :except => [ :index, :list, :add, :copy, :archive, :unarchive, :destroy, :activity ]
-  before_filter :authorize_global, :only => :add
+  before_filter :find_project, :except => [ :index, :list, :new, :create, :copy ]
+  before_filter :authorize, :except => [ :index, :list, :new, :create, :copy, :archive, :unarchive, :destroy]
+  before_filter :authorize_global, :only => [:new, :create]
   before_filter :require_admin, :only => [ :copy, :archive, :unarchive, :destroy ]
-  accept_key_auth :activity, :index
-  
-  after_filter :only => [:add, :edit, :archive, :unarchive, :destroy] do |controller|
+  accept_key_auth :index
+
+  after_filter :only => [:create, :edit, :update, :archive, :unarchive, :destroy] do |controller|
     if controller.request.post?
       controller.send :expire_action, :controller => 'welcome', :action => 'robots.txt'
     end
   end
-  
+
+  # TODO: convert to PUT only
+  verify :method => [:post, :put], :only => :update, :render => {:nothing => true, :status => :method_not_allowed }
+
   helper :sort
   include SortHelper
   helper :custom_fields
@@ -63,40 +63,45 @@
     end
   end
   
-  # Add a new project
-  def add
+  def new
     @issue_custom_fields = IssueCustomField.find(:all, :order => "#{CustomField.table_name}.position")
     @trackers = Tracker.all
     @project = Project.new(params[:project])
-    if request.get?
-      @project.identifier = Project.next_identifier if Setting.sequential_project_identifiers?
-      @project.trackers = Tracker.all
-      @project.is_public = Setting.default_projects_public?
-      @project.enabled_module_names = Setting.default_projects_modules
+
+    @project.identifier = Project.next_identifier if Setting.sequential_project_identifiers?
+    @project.trackers = Tracker.all
+    @project.is_public = Setting.default_projects_public?
+    @project.enabled_module_names = Setting.default_projects_modules
+  end
+
+  def create
+    @issue_custom_fields = IssueCustomField.find(:all, :order => "#{CustomField.table_name}.position")
+    @trackers = Tracker.all
+    @project = Project.new(params[:project])
+
+    @project.enabled_module_names = params[:enabled_modules]
+    if validate_parent_id && @project.save
+      @project.set_allowed_parent!(params[:project]['parent_id']) if params[:project].has_key?('parent_id')
+      # Add current user as a project member if he is not admin
+      unless User.current.admin?
+        r = Role.givable.find_by_id(Setting.new_project_user_role_id.to_i) || Role.givable.first
+        m = Member.new(:user => User.current, :roles => [r])
+        @project.members << m
+      end
+      respond_to do |format|
+        format.html { 
+          flash[:notice] = l(:notice_successful_create)
+          redirect_to :controller => 'projects', :action => 'settings', :id => @project
+        }
+        format.xml  { head :created, :location => url_for(:controller => 'projects', :action => 'show', :id => @project.id) }
+      end
     else
-      @project.enabled_module_names = params[:enabled_modules]
-      if validate_parent_id && @project.save
-        @project.set_allowed_parent!(params[:project]['parent_id']) if params[:project].has_key?('parent_id')
-        # Add current user as a project member if he is not admin
-        unless User.current.admin?
-          r = Role.givable.find_by_id(Setting.new_project_user_role_id.to_i) || Role.givable.first
-          m = Member.new(:user => User.current, :roles => [r])
-          @project.members << m
-        end
-        respond_to do |format|
-          format.html { 
-            flash[:notice] = l(:notice_successful_create)
-            redirect_to :controller => 'projects', :action => 'settings', :id => @project
-          }
-          format.xml  { head :created, :location => url_for(:controller => 'projects', :action => 'show', :id => @project.id) }
-        end
-      else
-        respond_to do |format|
-          format.html
-          format.xml  { render :xml => @project.errors, :status => :unprocessable_entity }
-        end
+      respond_to do |format|
+        format.html { render :action => 'new' }
+        format.xml  { render :xml => @project.errors, :status => :unprocessable_entity }
       end
-    end	
+    end
+    
   end
   
   def copy
@@ -177,28 +182,27 @@
     @wiki ||= @project.wiki
   end
   
-  # Edit @project
   def edit
-    if request.get?
+  end
+
+  def update
+    @project.attributes = params[:project]
+    if validate_parent_id && @project.save
+      @project.set_allowed_parent!(params[:project]['parent_id']) if params[:project].has_key?('parent_id')
+      respond_to do |format|
+        format.html { 
+          flash[:notice] = l(:notice_successful_update)
+          redirect_to :action => 'settings', :id => @project
+        }
+        format.xml  { head :ok }
+      end
     else
-      @project.attributes = params[:project]
-      if validate_parent_id && @project.save
-        @project.set_allowed_parent!(params[:project]['parent_id']) if params[:project].has_key?('parent_id')
-        respond_to do |format|
-          format.html { 
-            flash[:notice] = l(:notice_successful_update)
-            redirect_to :action => 'settings', :id => @project
-          }
-          format.xml  { head :ok }
-        end
-      else
-        respond_to do |format|
-          format.html { 
-            settings
-            render :action => 'settings'
-          }
-          format.xml  { render :xml => @project.errors, :status => :unprocessable_entity }
-        end
+      respond_to do |format|
+        format.html { 
+          settings
+          render :action => 'settings'
+        }
+        format.xml  { render :xml => @project.errors, :status => :unprocessable_entity }
       end
     end
   end
@@ -241,120 +245,6 @@
     @project = nil
   end
 
-  def add_file
-    if request.post?
-      container = (params[:version_id].blank? ? @project : @project.versions.find_by_id(params[:version_id]))
-      attachments = Attachment.attach_files(container, params[:attachments])
-      render_attachment_warning_if_needed(container)
-
-      if !attachments.empty? && Setting.notified_events.include?('file_added')
-        Mailer.deliver_attachments_added(attachments[:files])
-      end
-      redirect_to :controller => 'projects', :action => 'list_files', :id => @project
-      return
-    end
-    @versions = @project.versions.sort
-  end
-
-  def save_activities
-    if request.post? && params[:enumerations]
-      Project.transaction do
-        params[:enumerations].each do |id, activity|
-          @project.update_or_create_time_entry_activity(id, activity)
-        end
-      end
-      flash[:notice] = l(:notice_successful_update)
-    end
-    
-    redirect_to :controller => 'projects', :action => 'settings', :tab => 'activities', :id => @project
-  end
-
-  def reset_activities
-    @project.time_entry_activities.each do |time_entry_activity|
-      time_entry_activity.destroy(time_entry_activity.parent)
-    end
-    flash[:notice] = l(:notice_successful_update)
-    redirect_to :controller => 'projects', :action => 'settings', :tab => 'activities', :id => @project
-  end
-  
-  def list_files
-    sort_init 'filename', 'asc'
-    sort_update 'filename' => "#{Attachment.table_name}.filename",
-                'created_on' => "#{Attachment.table_name}.created_on",
-                'size' => "#{Attachment.table_name}.filesize",
-                'downloads' => "#{Attachment.table_name}.downloads"
-                
-    @containers = [ Project.find(@project.id, :include => :attachments, :order => sort_clause)]
-    @containers += @project.versions.find(:all, :include => :attachments, :order => sort_clause).sort.reverse
-    render :layout => !request.xhr?
-  end
-
-  def roadmap
-    @trackers = @project.trackers.find(:all, :order => 'position')
-    retrieve_selected_tracker_ids(@trackers, @trackers.select {|t| t.is_in_roadmap?})
-    @with_subprojects = params[:with_subprojects].nil? ? Setting.display_subprojects_issues? : (params[:with_subprojects] == '1')
-    project_ids = @with_subprojects ? @project.self_and_descendants.collect(&:id) : [@project.id]
-    
-    @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]
-    
-    @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
-    end
-    @versions.reject! {|version| !project_ids.include?(version.project_id) && @issues_by_version[version].blank?}
-  end
-  
-  def activity
-    @days = Setting.activity_days_default.to_i
-    
-    if params[:from]
-      begin; @date_to = params[:from].to_date + 1; rescue; end
-    end
-
-    @date_to ||= Date.today + 1
-    @date_from = @date_to - @days
-    @with_subprojects = params[:with_subprojects].nil? ? Setting.display_subprojects_issues? : (params[:with_subprojects] == '1')
-    @author = (params[:user_id].blank? ? nil : User.active.find(params[:user_id]))
-    
-    @activity = Redmine::Activity::Fetcher.new(User.current, :project => @project, 
-                                                             :with_subprojects => @with_subprojects,
-                                                             :author => @author)
-    @activity.scope_select {|t| !params["show_#{t}"].nil?}
-    @activity.scope = (@author.nil? ? :default : :all) if @activity.scope.empty?
-
-    events = @activity.events(@date_from, @date_to)
-    
-    if events.empty? || stale?(:etag => [events.first, User.current])
-      respond_to do |format|
-        format.html { 
-          @events_by_day = events.group_by(&:event_date)
-          render :layout => false if request.xhr?
-        }
-        format.atom {
-          title = l(:label_activity)
-          if @author
-            title = @author.name
-          elsif @activity.scope.size == 1
-            title = l("label_#{@activity.scope.first.singularize}_plural")
-          end
-          render_feed(events, :title => "#{@project || Setting.app_title}: #{title}")
-        }
-      end
-    end
-    
-  rescue ActiveRecord::RecordNotFound
-    render_404
-  end
-  
 private
   def find_optional_project
     return true unless params[:id]
@@ -364,14 +254,6 @@
     render_404
   end
 
-  def retrieve_selected_tracker_ids(selectable_trackers, default_trackers=nil)
-    if ids = params[:tracker_ids]
-      @selected_tracker_ids = (ids.is_a? Array) ? ids.collect { |id| id.to_i.to_s } : ids.split('/').collect { |id| id.to_i.to_s }
-    else
-      @selected_tracker_ids = (default_trackers || selectable_trackers).collect {|t| t.id.to_s }
-    end
-  end
-  
   # Validates parent_id param according to user's permissions
   # TODO: move it to Project model in a validation that depends on User.current
   def validate_parent_id
--- a/app/controllers/.svn/text-base/timelog_controller.rb.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/controllers/.svn/text-base/timelog_controller.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -260,8 +260,8 @@
     end
     
     @from, @to = @to, @from if @from && @to && @from > @to
-    @from ||= (TimeEntry.minimum(:spent_on, :include => :project, :conditions => Project.allowed_to_condition(User.current, :view_time_entries)) || Date.today) - 1
-    @to   ||= (TimeEntry.maximum(:spent_on, :include => :project, :conditions => Project.allowed_to_condition(User.current, :view_time_entries)) || Date.today)
+    @from ||= (TimeEntry.earilest_date_for_project(@project) || Date.today)
+    @to   ||= (TimeEntry.latest_date_for_project(@project) || Date.today)
   end
 
   def load_available_criterias
--- a/app/controllers/.svn/text-base/users_controller.rb.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/controllers/.svn/text-base/users_controller.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -95,7 +95,9 @@
     if request.post?
       @user.admin = params[:user][:admin] if params[:user][:admin]
       @user.login = params[:user][:login] if params[:user][:login]
-      @user.password, @user.password_confirmation = params[:password], params[:password_confirmation] unless params[:password].nil? or params[:password].empty? or @user.auth_source_id
+      if params[:password].present? && (@user.auth_source_id.nil? || params[:user][:auth_source_id].blank?)
+        @user.password, @user.password_confirmation = params[:password], params[:password_confirmation]
+      end
       @user.group_ids = params[:user][:group_ids] if params[:user][:group_ids]
       @user.attributes = params[:user]
       # Was the account actived ? (do it before User#save clears the change)
--- a/app/controllers/.svn/text-base/versions_controller.rb.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/controllers/.svn/text-base/versions_controller.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -18,13 +18,37 @@
 class VersionsController < ApplicationController
   menu_item :roadmap
   model_object Version
-  before_filter :find_model_object, :except => [:new, :close_completed]
-  before_filter :find_project_from_association, :except => [:new, :close_completed]
-  before_filter :find_project, :only => [:new, :close_completed]
+  before_filter :find_model_object, :except => [:index, :new, :create, :close_completed]
+  before_filter :find_project_from_association, :except => [:index, :new, :create, :close_completed]
+  before_filter :find_project, :only => [:index, :new, :create, :close_completed]
   before_filter :authorize
 
   helper :custom_fields
   helper :projects
+
+  def index
+    @trackers = @project.trackers.find(:all, :order => 'position')
+    retrieve_selected_tracker_ids(@trackers, @trackers.select {|t| t.is_in_roadmap?})
+    @with_subprojects = params[:with_subprojects].nil? ? Setting.display_subprojects_issues? : (params[:with_subprojects] == '1')
+    project_ids = @with_subprojects ? @project.self_and_descendants.collect(&:id) : [@project.id]
+    
+    @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]
+    
+    @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
+    end
+    @versions.reject! {|version| !project_ids.include?(version.project_id) && @issues_by_version[version].blank?}
+  end
   
   def show
     @issues = @version.fixed_issues.visible.find(:all,
@@ -39,6 +63,17 @@
       attributes.delete('sharing') unless attributes.nil? || @version.allowed_sharings.include?(attributes['sharing'])
       @version.attributes = attributes
     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
+    end
+
     if request.post?
       if @version.save
         respond_to do |format|
@@ -55,7 +90,7 @@
         end
       else
         respond_to do |format|
-          format.html
+          format.html { render :action => 'new' }
           format.js do
             render(:update) {|page| page.alert(@version.errors.full_messages.join('\n')) }
           end
@@ -63,9 +98,12 @@
       end
     end
   end
+
+  def edit
+  end
   
-  def edit
-    if request.post? && params[:version]
+  def update
+    if request.put? && params[:version]
       attributes = params[:version].dup
       attributes.delete('sharing') unless @version.allowed_sharings.include?(attributes['sharing'])
       if @version.update_attributes(attributes)
@@ -76,7 +114,7 @@
   end
   
   def close_completed
-    if request.post?
+    if request.put?
       @project.close_completed_versions
     end
     redirect_to :controller => 'projects', :action => 'settings', :tab => 'versions', :id => @project
@@ -105,4 +143,13 @@
   rescue ActiveRecord::RecordNotFound
     render_404
   end
+
+  def retrieve_selected_tracker_ids(selectable_trackers, default_trackers=nil)
+    if ids = params[:tracker_ids]
+      @selected_tracker_ids = (ids.is_a? Array) ? ids.collect { |id| id.to_i.to_s } : ids.split('/').collect { |id| id.to_i.to_s }
+    else
+      @selected_tracker_ids = (default_trackers || selectable_trackers).collect {|t| t.id.to_s }
+    end
+  end
+
 end
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/app/controllers/activities_controller.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -0,0 +1,59 @@
+class ActivitiesController < ApplicationController
+  menu_item :activity
+  before_filter :find_optional_project
+  accept_key_auth :index
+
+  def index
+    @days = Setting.activity_days_default.to_i
+    
+    if params[:from]
+      begin; @date_to = params[:from].to_date + 1; rescue; end
+    end
+
+    @date_to ||= Date.today + 1
+    @date_from = @date_to - @days
+    @with_subprojects = params[:with_subprojects].nil? ? Setting.display_subprojects_issues? : (params[:with_subprojects] == '1')
+    @author = (params[:user_id].blank? ? nil : User.active.find(params[:user_id]))
+    
+    @activity = Redmine::Activity::Fetcher.new(User.current, :project => @project, 
+                                                             :with_subprojects => @with_subprojects,
+                                                             :author => @author)
+    @activity.scope_select {|t| !params["show_#{t}"].nil?}
+    @activity.scope = (@author.nil? ? :default : :all) if @activity.scope.empty?
+
+    events = @activity.events(@date_from, @date_to)
+    
+    if events.empty? || stale?(:etag => [events.first, User.current])
+      respond_to do |format|
+        format.html { 
+          @events_by_day = events.group_by(&:event_date)
+          render :layout => false if request.xhr?
+        }
+        format.atom {
+          title = l(:label_activity)
+          if @author
+            title = @author.name
+          elsif @activity.scope.size == 1
+            title = l("label_#{@activity.scope.first.singularize}_plural")
+          end
+          render_feed(events, :title => "#{@project || Setting.app_title}: #{title}")
+        }
+      end
+    end
+    
+  rescue ActiveRecord::RecordNotFound
+    render_404
+  end
+
+  private
+
+  # TODO: refactor, duplicated in projects_controller
+  def find_optional_project
+    return true unless params[:id]
+    @project = Project.find(params[:id])
+    authorize
+  rescue ActiveRecord::RecordNotFound
+    render_404
+  end
+
+end
--- a/app/controllers/application_controller.rb	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/controllers/application_controller.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -169,6 +169,13 @@
     render_404
   end
 
+  # Find project of id params[:project_id]
+  def find_project_by_project_id
+    @project = Project.find(params[:project_id])
+  rescue ActiveRecord::RecordNotFound
+    render_404
+  end
+
   # Find a project based on params[:project_id]
   # TODO: some subclasses override this, see about merging their logic
   def find_optional_project
--- a/app/controllers/calendars_controller.rb	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/controllers/calendars_controller.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -32,8 +32,11 @@
       @calendar.events = events
     end
     
-    render :layout => false if request.xhr?
+    render :action => 'show', :layout => false if request.xhr?
   end
   
+  def update
+    show
+  end
 
 end
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/app/controllers/comments_controller.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -0,0 +1,36 @@
+class CommentsController < ApplicationController
+  default_search_scope :news
+  model_object News
+  before_filter :find_model_object
+  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])
+    @comment.author = User.current
+    if @news.comments << @comment
+      flash[:notice] = l(:label_comment_added)
+    end
+    
+    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
+  end
+
+  private
+
+  # ApplicationController's find_model_object sets it based on the controller
+  # name so it needs to be overriden and set to @news instead
+  def find_model_object
+    super
+    @news = @object
+    @comment = nil
+    @news
+  end
+  
+end
--- a/app/controllers/context_menus_controller.rb	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/controllers/context_menus_controller.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -6,9 +6,15 @@
     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
-    projects = @issues.collect(&:project).compact.uniq
-    @project = projects.first if projects.size == 1
+    @projects = @issues.collect(&:project).compact.uniq
+    @project = @projects.first if @projects.size == 1
 
     @can = {:edit => (@project && User.current.allowed_to?(:edit_issues, @project)),
             :log_time => (@project && User.current.allowed_to?(:log_time, @project)),
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/app/controllers/files_controller.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -0,0 +1,36 @@
+class FilesController < ApplicationController
+  menu_item :files
+
+  before_filter :find_project_by_project_id
+  before_filter :authorize
+
+  helper :sort
+  include SortHelper
+
+  def index
+    sort_init 'filename', 'asc'
+    sort_update 'filename' => "#{Attachment.table_name}.filename",
+                'created_on' => "#{Attachment.table_name}.created_on",
+                'size' => "#{Attachment.table_name}.filesize",
+                'downloads' => "#{Attachment.table_name}.downloads"
+                
+    @containers = [ Project.find(@project.id, :include => :attachments, :order => sort_clause)]
+    @containers += @project.versions.find(:all, :include => :attachments, :order => sort_clause).sort.reverse
+    render :layout => !request.xhr?
+  end
+
+  def new
+    @versions = @project.versions.sort
+  end
+
+  def create
+    container = (params[:version_id].blank? ? @project : @project.versions.find_by_id(params[:version_id]))
+    attachments = Attachment.attach_files(container, params[:attachments])
+    render_attachment_warning_if_needed(container)
+
+    if !attachments.empty? && Setting.notified_events.include?('file_added')
+      Mailer.deliver_attachments_added(attachments[:files])
+    end
+    redirect_to project_files_path(@project)
+  end
+end
--- a/app/controllers/gantts_controller.rb	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/controllers/gantts_controller.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -4,6 +4,7 @@
 
   rescue_from Query::StatementInvalid, :with => :query_statement_invalid
 
+  helper :gantt
   helper :issues
   helper :projects
   helper :queries
@@ -14,33 +15,22 @@
   
   def show
     @gantt = Redmine::Helpers::Gantt.new(params)
+    @gantt.project = @project
     retrieve_query
     @query.group_by = nil
-    if @query.valid?
-      events = []
-      # Issues that have start and due dates
-      events += @query.issues(:include => [:tracker, :assigned_to, :priority],
-                              :order => "start_date, due_date",
-                              :conditions => ["(((start_date>=? and start_date<=?) or (due_date>=? and due_date<=?) or (start_date<? and due_date>?)) and start_date is not null and due_date is not null)", @gantt.date_from, @gantt.date_to, @gantt.date_from, @gantt.date_to, @gantt.date_from, @gantt.date_to]
-                              )
-      # Issues that don't have a due date but that are assigned to a version with a date
-      events += @query.issues(:include => [:tracker, :assigned_to, :priority, :fixed_version],
-                              :order => "start_date, effective_date",
-                              :conditions => ["(((start_date>=? and start_date<=?) or (effective_date>=? and effective_date<=?) or (start_date<? and effective_date>?)) and start_date is not null and due_date is null and effective_date is not null)", @gantt.date_from, @gantt.date_to, @gantt.date_from, @gantt.date_to, @gantt.date_from, @gantt.date_to]
-                              )
-      # Versions
-      events += @query.versions(:conditions => ["effective_date BETWEEN ? AND ?", @gantt.date_from, @gantt.date_to])
-                                   
-      @gantt.events = events
-    end
+    @gantt.query = @query if @query.valid?
     
     basename = (@project ? "#{@project.identifier}-" : '') + 'gantt'
     
     respond_to do |format|
       format.html { render :action => "show", :layout => !request.xhr? }
-      format.png  { send_data(@gantt.to_image(@project), :disposition => 'inline', :type => 'image/png', :filename => "#{basename}.png") } if @gantt.respond_to?('to_image')
-      format.pdf  { send_data(gantt_to_pdf(@gantt, @project), :type => 'application/pdf', :filename => "#{basename}.pdf") }
+      format.png  { send_data(@gantt.to_image, :disposition => 'inline', :type => 'image/png', :filename => "#{basename}.png") } if @gantt.respond_to?('to_image')
+      format.pdf  { send_data(@gantt.to_pdf, :type => 'application/pdf', :filename => "#{basename}.pdf") }
     end
   end
 
+  def update
+    show
+  end
+
 end
--- a/app/controllers/issues_controller.rb	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/controllers/issues_controller.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -47,6 +47,7 @@
   include SortHelper
   include IssuesHelper
   helper :timelog
+  helper :gantt
   include Redmine::Export::PDF
 
   verify :method => [:post, :delete],
@@ -133,7 +134,7 @@
       call_hook(:controller_issues_new_after_save, { :params => params, :issue => @issue})
       respond_to do |format|
         format.html {
-          redirect_to(params[:continue] ? { :action => 'new', :issue => {:tracker_id => @issue.tracker, :parent_issue_id => @issue.parent_issue_id}.reject {|k,v| v.nil?} } :
+          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?} } :
                       { :action => 'show', :id => @issue })
         }
         format.xml  { render :action => 'show', :status => :created, :location => url_for(:controller => 'issues', :action => 'show', :id => @issue) }
@@ -270,7 +271,7 @@
     @edit_allowed = User.current.allowed_to?(:edit_issues, @project)
     @time_entry = TimeEntry.new
     
-    @notes = params[:notes]
+    @notes = params[:notes] || (params[:issue].present? ? params[:issue][:notes] : nil)
     @issue.init_journal(User.current, @notes)
     # User can change issue attributes only if he has :edit permission or if a workflow transition is allowed
     if (@edit_allowed || !@allowed_statuses.empty?) && params[:issue]
--- a/app/controllers/news_controller.rb	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/controllers/news_controller.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -18,9 +18,9 @@
 class NewsController < ApplicationController
   default_search_scope :news
   model_object News
-  before_filter :find_model_object, :except => [:new, :index, :preview]
-  before_filter :find_project_from_association, :except => [:new, :index, :preview]
-  before_filter :find_project, :only => [:new, :preview]
+  before_filter :find_model_object, :except => [:new, :create, :index, :preview]
+  before_filter :find_project_from_association, :except => [:new, :create, :index, :preview]
+  before_filter :find_project, :only => [:new, :create, :preview]
   before_filter :authorize, :except => [:index, :preview]
   before_filter :find_optional_project, :only => :index
   accept_key_auth :index
@@ -46,38 +46,32 @@
 
   def new
     @news = News.new(:project => @project, :author => User.current)
+  end
+
+  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
     end
   end
+
+  def edit
+  end
   
-  def edit
-    if request.post? and @news.update_attributes(params[:news])
+  def update
+    if request.put? and @news.update_attributes(params[:news])
       flash[:notice] = l(:notice_successful_update)
       redirect_to :action => 'show', :id => @news
+    else
+      render :action => 'edit'
     end
   end
-  
-  def add_comment
-    @comment = Comment.new(params[:comment])
-    @comment.author = User.current
-    if @news.comments << @comment
-      flash[:notice] = l(:label_comment_added)
-      redirect_to :action => 'show', :id => @news
-    else
-      show
-      render :action => 'show'
-    end
-  end
-
-  def destroy_comment
-    @news.comments.find(params[:comment_id]).destroy
-    redirect_to :action => 'show', :id => @news
-  end
 
   def destroy
     @news.destroy
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/app/controllers/project_enumerations_controller.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -0,0 +1,26 @@
+class ProjectEnumerationsController < ApplicationController
+  before_filter :find_project_by_project_id
+  before_filter :authorize
+  
+  def update
+    if request.put? && params[:enumerations]
+      Project.transaction do
+        params[:enumerations].each do |id, activity|
+          @project.update_or_create_time_entry_activity(id, activity)
+        end
+      end
+      flash[:notice] = l(:notice_successful_update)
+    end
+    
+    redirect_to :controller => 'projects', :action => 'settings', :tab => 'activities', :id => @project
+  end
+
+  def destroy
+    @project.time_entry_activities.each do |time_entry_activity|
+      time_entry_activity.destroy(time_entry_activity.parent)
+    end
+    flash[:notice] = l(:notice_successful_update)
+    redirect_to :controller => 'projects', :action => 'settings', :tab => 'activities', :id => @project
+  end
+
+end
--- a/app/controllers/projects_controller.rb	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/controllers/projects_controller.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -17,24 +17,24 @@
 
 class ProjectsController < ApplicationController
   menu_item :overview
-  menu_item :activity, :only => :activity
   menu_item :roadmap, :only => :roadmap
-  menu_item :files, :only => [:list_files, :add_file]
   menu_item :settings, :only => :settings
   
-  before_filter :find_project, :except => [ :index, :list, :add, :copy, :activity ]
-  before_filter :find_optional_project, :only => :activity
-  before_filter :authorize, :except => [ :index, :list, :add, :copy, :archive, :unarchive, :destroy, :activity ]
-  before_filter :authorize_global, :only => :add
+  before_filter :find_project, :except => [ :index, :list, :new, :create, :copy ]
+  before_filter :authorize, :except => [ :index, :list, :new, :create, :copy, :archive, :unarchive, :destroy]
+  before_filter :authorize_global, :only => [:new, :create]
   before_filter :require_admin, :only => [ :copy, :archive, :unarchive, :destroy ]
-  accept_key_auth :activity, :index
-  
-  after_filter :only => [:add, :edit, :archive, :unarchive, :destroy] do |controller|
+  accept_key_auth :index
+
+  after_filter :only => [:create, :edit, :update, :archive, :unarchive, :destroy] do |controller|
     if controller.request.post?
       controller.send :expire_action, :controller => 'welcome', :action => 'robots.txt'
     end
   end
-  
+
+  # TODO: convert to PUT only
+  verify :method => [:post, :put], :only => :update, :render => {:nothing => true, :status => :method_not_allowed }
+
   helper :sort
   include SortHelper
   helper :custom_fields
@@ -63,40 +63,45 @@
     end
   end
   
-  # Add a new project
-  def add
+  def new
     @issue_custom_fields = IssueCustomField.find(:all, :order => "#{CustomField.table_name}.position")
     @trackers = Tracker.all
     @project = Project.new(params[:project])
-    if request.get?
-      @project.identifier = Project.next_identifier if Setting.sequential_project_identifiers?
-      @project.trackers = Tracker.all
-      @project.is_public = Setting.default_projects_public?
-      @project.enabled_module_names = Setting.default_projects_modules
+
+    @project.identifier = Project.next_identifier if Setting.sequential_project_identifiers?
+    @project.trackers = Tracker.all
+    @project.is_public = Setting.default_projects_public?
+    @project.enabled_module_names = Setting.default_projects_modules
+  end
+
+  def create
+    @issue_custom_fields = IssueCustomField.find(:all, :order => "#{CustomField.table_name}.position")
+    @trackers = Tracker.all
+    @project = Project.new(params[:project])
+
+    @project.enabled_module_names = params[:enabled_modules]
+    if validate_parent_id && @project.save
+      @project.set_allowed_parent!(params[:project]['parent_id']) if params[:project].has_key?('parent_id')
+      # Add current user as a project member if he is not admin
+      unless User.current.admin?
+        r = Role.givable.find_by_id(Setting.new_project_user_role_id.to_i) || Role.givable.first
+        m = Member.new(:user => User.current, :roles => [r])
+        @project.members << m
+      end
+      respond_to do |format|
+        format.html { 
+          flash[:notice] = l(:notice_successful_create)
+          redirect_to :controller => 'projects', :action => 'settings', :id => @project
+        }
+        format.xml  { head :created, :location => url_for(:controller => 'projects', :action => 'show', :id => @project.id) }
+      end
     else
-      @project.enabled_module_names = params[:enabled_modules]
-      if validate_parent_id && @project.save
-        @project.set_allowed_parent!(params[:project]['parent_id']) if params[:project].has_key?('parent_id')
-        # Add current user as a project member if he is not admin
-        unless User.current.admin?
-          r = Role.givable.find_by_id(Setting.new_project_user_role_id.to_i) || Role.givable.first
-          m = Member.new(:user => User.current, :roles => [r])
-          @project.members << m
-        end
-        respond_to do |format|
-          format.html { 
-            flash[:notice] = l(:notice_successful_create)
-            redirect_to :controller => 'projects', :action => 'settings', :id => @project
-          }
-          format.xml  { head :created, :location => url_for(:controller => 'projects', :action => 'show', :id => @project.id) }
-        end
-      else
-        respond_to do |format|
-          format.html
-          format.xml  { render :xml => @project.errors, :status => :unprocessable_entity }
-        end
+      respond_to do |format|
+        format.html { render :action => 'new' }
+        format.xml  { render :xml => @project.errors, :status => :unprocessable_entity }
       end
-    end	
+    end
+    
   end
   
   def copy
@@ -177,28 +182,27 @@
     @wiki ||= @project.wiki
   end
   
-  # Edit @project
   def edit
-    if request.get?
+  end
+
+  def update
+    @project.attributes = params[:project]
+    if validate_parent_id && @project.save
+      @project.set_allowed_parent!(params[:project]['parent_id']) if params[:project].has_key?('parent_id')
+      respond_to do |format|
+        format.html { 
+          flash[:notice] = l(:notice_successful_update)
+          redirect_to :action => 'settings', :id => @project
+        }
+        format.xml  { head :ok }
+      end
     else
-      @project.attributes = params[:project]
-      if validate_parent_id && @project.save
-        @project.set_allowed_parent!(params[:project]['parent_id']) if params[:project].has_key?('parent_id')
-        respond_to do |format|
-          format.html { 
-            flash[:notice] = l(:notice_successful_update)
-            redirect_to :action => 'settings', :id => @project
-          }
-          format.xml  { head :ok }
-        end
-      else
-        respond_to do |format|
-          format.html { 
-            settings
-            render :action => 'settings'
-          }
-          format.xml  { render :xml => @project.errors, :status => :unprocessable_entity }
-        end
+      respond_to do |format|
+        format.html { 
+          settings
+          render :action => 'settings'
+        }
+        format.xml  { render :xml => @project.errors, :status => :unprocessable_entity }
       end
     end
   end
@@ -241,120 +245,6 @@
     @project = nil
   end
 
-  def add_file
-    if request.post?
-      container = (params[:version_id].blank? ? @project : @project.versions.find_by_id(params[:version_id]))
-      attachments = Attachment.attach_files(container, params[:attachments])
-      render_attachment_warning_if_needed(container)
-
-      if !attachments.empty? && Setting.notified_events.include?('file_added')
-        Mailer.deliver_attachments_added(attachments[:files])
-      end
-      redirect_to :controller => 'projects', :action => 'list_files', :id => @project
-      return
-    end
-    @versions = @project.versions.sort
-  end
-
-  def save_activities
-    if request.post? && params[:enumerations]
-      Project.transaction do
-        params[:enumerations].each do |id, activity|
-          @project.update_or_create_time_entry_activity(id, activity)
-        end
-      end
-      flash[:notice] = l(:notice_successful_update)
-    end
-    
-    redirect_to :controller => 'projects', :action => 'settings', :tab => 'activities', :id => @project
-  end
-
-  def reset_activities
-    @project.time_entry_activities.each do |time_entry_activity|
-      time_entry_activity.destroy(time_entry_activity.parent)
-    end
-    flash[:notice] = l(:notice_successful_update)
-    redirect_to :controller => 'projects', :action => 'settings', :tab => 'activities', :id => @project
-  end
-  
-  def list_files
-    sort_init 'filename', 'asc'
-    sort_update 'filename' => "#{Attachment.table_name}.filename",
-                'created_on' => "#{Attachment.table_name}.created_on",
-                'size' => "#{Attachment.table_name}.filesize",
-                'downloads' => "#{Attachment.table_name}.downloads"
-                
-    @containers = [ Project.find(@project.id, :include => :attachments, :order => sort_clause)]
-    @containers += @project.versions.find(:all, :include => :attachments, :order => sort_clause).sort.reverse
-    render :layout => !request.xhr?
-  end
-
-  def roadmap
-    @trackers = @project.trackers.find(:all, :order => 'position')
-    retrieve_selected_tracker_ids(@trackers, @trackers.select {|t| t.is_in_roadmap?})
-    @with_subprojects = params[:with_subprojects].nil? ? Setting.display_subprojects_issues? : (params[:with_subprojects] == '1')
-    project_ids = @with_subprojects ? @project.self_and_descendants.collect(&:id) : [@project.id]
-    
-    @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]
-    
-    @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
-    end
-    @versions.reject! {|version| !project_ids.include?(version.project_id) && @issues_by_version[version].blank?}
-  end
-  
-  def activity
-    @days = Setting.activity_days_default.to_i
-    
-    if params[:from]
-      begin; @date_to = params[:from].to_date + 1; rescue; end
-    end
-
-    @date_to ||= Date.today + 1
-    @date_from = @date_to - @days
-    @with_subprojects = params[:with_subprojects].nil? ? Setting.display_subprojects_issues? : (params[:with_subprojects] == '1')
-    @author = (params[:user_id].blank? ? nil : User.active.find(params[:user_id]))
-    
-    @activity = Redmine::Activity::Fetcher.new(User.current, :project => @project, 
-                                                             :with_subprojects => @with_subprojects,
-                                                             :author => @author)
-    @activity.scope_select {|t| !params["show_#{t}"].nil?}
-    @activity.scope = (@author.nil? ? :default : :all) if @activity.scope.empty?
-
-    events = @activity.events(@date_from, @date_to)
-    
-    if events.empty? || stale?(:etag => [events.first, User.current])
-      respond_to do |format|
-        format.html { 
-          @events_by_day = events.group_by(&:event_date)
-          render :layout => false if request.xhr?
-        }
-        format.atom {
-          title = l(:label_activity)
-          if @author
-            title = @author.name
-          elsif @activity.scope.size == 1
-            title = l("label_#{@activity.scope.first.singularize}_plural")
-          end
-          render_feed(events, :title => "#{@project || Setting.app_title}: #{title}")
-        }
-      end
-    end
-    
-  rescue ActiveRecord::RecordNotFound
-    render_404
-  end
-  
 private
   def find_optional_project
     return true unless params[:id]
@@ -364,14 +254,6 @@
     render_404
   end
 
-  def retrieve_selected_tracker_ids(selectable_trackers, default_trackers=nil)
-    if ids = params[:tracker_ids]
-      @selected_tracker_ids = (ids.is_a? Array) ? ids.collect { |id| id.to_i.to_s } : ids.split('/').collect { |id| id.to_i.to_s }
-    else
-      @selected_tracker_ids = (default_trackers || selectable_trackers).collect {|t| t.id.to_s }
-    end
-  end
-  
   # Validates parent_id param according to user's permissions
   # TODO: move it to Project model in a validation that depends on User.current
   def validate_parent_id
--- a/app/controllers/timelog_controller.rb	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/controllers/timelog_controller.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -260,8 +260,8 @@
     end
     
     @from, @to = @to, @from if @from && @to && @from > @to
-    @from ||= (TimeEntry.minimum(:spent_on, :include => :project, :conditions => Project.allowed_to_condition(User.current, :view_time_entries)) || Date.today) - 1
-    @to   ||= (TimeEntry.maximum(:spent_on, :include => :project, :conditions => Project.allowed_to_condition(User.current, :view_time_entries)) || Date.today)
+    @from ||= (TimeEntry.earilest_date_for_project(@project) || Date.today)
+    @to   ||= (TimeEntry.latest_date_for_project(@project) || Date.today)
   end
 
   def load_available_criterias
--- a/app/controllers/users_controller.rb	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/controllers/users_controller.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -95,7 +95,9 @@
     if request.post?
       @user.admin = params[:user][:admin] if params[:user][:admin]
       @user.login = params[:user][:login] if params[:user][:login]
-      @user.password, @user.password_confirmation = params[:password], params[:password_confirmation] unless params[:password].nil? or params[:password].empty? or @user.auth_source_id
+      if params[:password].present? && (@user.auth_source_id.nil? || params[:user][:auth_source_id].blank?)
+        @user.password, @user.password_confirmation = params[:password], params[:password_confirmation]
+      end
       @user.group_ids = params[:user][:group_ids] if params[:user][:group_ids]
       @user.attributes = params[:user]
       # Was the account actived ? (do it before User#save clears the change)
--- a/app/controllers/versions_controller.rb	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/controllers/versions_controller.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -18,13 +18,37 @@
 class VersionsController < ApplicationController
   menu_item :roadmap
   model_object Version
-  before_filter :find_model_object, :except => [:new, :close_completed]
-  before_filter :find_project_from_association, :except => [:new, :close_completed]
-  before_filter :find_project, :only => [:new, :close_completed]
+  before_filter :find_model_object, :except => [:index, :new, :create, :close_completed]
+  before_filter :find_project_from_association, :except => [:index, :new, :create, :close_completed]
+  before_filter :find_project, :only => [:index, :new, :create, :close_completed]
   before_filter :authorize
 
   helper :custom_fields
   helper :projects
+
+  def index
+    @trackers = @project.trackers.find(:all, :order => 'position')
+    retrieve_selected_tracker_ids(@trackers, @trackers.select {|t| t.is_in_roadmap?})
+    @with_subprojects = params[:with_subprojects].nil? ? Setting.display_subprojects_issues? : (params[:with_subprojects] == '1')
+    project_ids = @with_subprojects ? @project.self_and_descendants.collect(&:id) : [@project.id]
+    
+    @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]
+    
+    @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
+    end
+    @versions.reject! {|version| !project_ids.include?(version.project_id) && @issues_by_version[version].blank?}
+  end
   
   def show
     @issues = @version.fixed_issues.visible.find(:all,
@@ -39,6 +63,17 @@
       attributes.delete('sharing') unless attributes.nil? || @version.allowed_sharings.include?(attributes['sharing'])
       @version.attributes = attributes
     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
+    end
+
     if request.post?
       if @version.save
         respond_to do |format|
@@ -55,7 +90,7 @@
         end
       else
         respond_to do |format|
-          format.html
+          format.html { render :action => 'new' }
           format.js do
             render(:update) {|page| page.alert(@version.errors.full_messages.join('\n')) }
           end
@@ -63,9 +98,12 @@
       end
     end
   end
+
+  def edit
+  end
   
-  def edit
-    if request.post? && params[:version]
+  def update
+    if request.put? && params[:version]
       attributes = params[:version].dup
       attributes.delete('sharing') unless @version.allowed_sharings.include?(attributes['sharing'])
       if @version.update_attributes(attributes)
@@ -76,7 +114,7 @@
   end
   
   def close_completed
-    if request.post?
+    if request.put?
       @project.close_completed_versions
     end
     redirect_to :controller => 'projects', :action => 'settings', :tab => 'versions', :id => @project
@@ -105,4 +143,13 @@
   rescue ActiveRecord::RecordNotFound
     render_404
   end
+
+  def retrieve_selected_tracker_ids(selectable_trackers, default_trackers=nil)
+    if ids = params[:tracker_ids]
+      @selected_tracker_ids = (ids.is_a? Array) ? ids.collect { |id| id.to_i.to_s } : ids.split('/').collect { |id| id.to_i.to_s }
+    else
+      @selected_tracker_ids = (default_trackers || selectable_trackers).collect {|t| t.id.to_s }
+    end
+  end
+
 end
--- a/app/helpers/.svn/all-wcprops	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/helpers/.svn/all-wcprops	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 36
-/svn/!svn/ver/4014/trunk/app/helpers
+/svn/!svn/ver/4166/trunk/app/helpers
 END
 trackers_helper.rb
 K 25
@@ -43,7 +43,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 52
-/svn/!svn/ver/2304/trunk/app/helpers/admin_helper.rb
+/svn/!svn/ver/4080/trunk/app/helpers/admin_helper.rb
 END
 projects_helper.rb
 K 25
@@ -57,6 +57,12 @@
 V 53
 /svn/!svn/ver/333/trunk/app/helpers/account_helper.rb
 END
+calendars_helper.rb
+K 25
+svn:wc:ra_dav:version-url
+V 56
+/svn/!svn/ver/4046/trunk/app/helpers/calendars_helper.rb
+END
 issue_categories_helper.rb
 K 25
 svn:wc:ra_dav:version-url
@@ -85,7 +91,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 53
-/svn/!svn/ver/3952/trunk/app/helpers/issues_helper.rb
+/svn/!svn/ver/4166/trunk/app/helpers/issues_helper.rb
 END
 queries_helper.rb
 K 25
@@ -93,6 +99,12 @@
 V 54
 /svn/!svn/ver/3924/trunk/app/helpers/queries_helper.rb
 END
+gantt_helper.rb
+K 25
+svn:wc:ra_dav:version-url
+V 52
+/svn/!svn/ver/4072/trunk/app/helpers/gantt_helper.rb
+END
 mail_handler_helper.rb
 K 25
 svn:wc:ra_dav:version-url
@@ -123,29 +135,29 @@
 V 53
 /svn/!svn/ver/333/trunk/app/helpers/welcome_helper.rb
 END
+journals_helper.rb
+K 25
+svn:wc:ra_dav:version-url
+V 55
+/svn/!svn/ver/4062/trunk/app/helpers/journals_helper.rb
+END
 workflows_helper.rb
 K 25
 svn:wc:ra_dav:version-url
 V 56
 /svn/!svn/ver/1914/trunk/app/helpers/workflows_helper.rb
 END
-journals_helper.rb
-K 25
-svn:wc:ra_dav:version-url
-V 55
-/svn/!svn/ver/3941/trunk/app/helpers/journals_helper.rb
-END
 reports_helper.rb
 K 25
 svn:wc:ra_dav:version-url
 V 53
 /svn/!svn/ver/629/trunk/app/helpers/reports_helper.rb
 END
-custom_fields_helper.rb
+timelog_helper.rb
 K 25
 svn:wc:ra_dav:version-url
-V 60
-/svn/!svn/ver/3675/trunk/app/helpers/custom_fields_helper.rb
+V 54
+/svn/!svn/ver/3708/trunk/app/helpers/timelog_helper.rb
 END
 settings_helper.rb
 K 25
@@ -153,11 +165,17 @@
 V 55
 /svn/!svn/ver/3222/trunk/app/helpers/settings_helper.rb
 END
-timelog_helper.rb
+custom_fields_helper.rb
 K 25
 svn:wc:ra_dav:version-url
-V 54
-/svn/!svn/ver/3708/trunk/app/helpers/timelog_helper.rb
+V 60
+/svn/!svn/ver/3675/trunk/app/helpers/custom_fields_helper.rb
+END
+issue_moves_helper.rb
+K 25
+svn:wc:ra_dav:version-url
+V 58
+/svn/!svn/ver/3936/trunk/app/helpers/issue_moves_helper.rb
 END
 users_helper.rb
 K 25
@@ -165,17 +183,11 @@
 V 52
 /svn/!svn/ver/3237/trunk/app/helpers/users_helper.rb
 END
-issue_moves_helper.rb
-K 25
-svn:wc:ra_dav:version-url
-V 58
-/svn/!svn/ver/3936/trunk/app/helpers/issue_moves_helper.rb
-END
 application_helper.rb
 K 25
 svn:wc:ra_dav:version-url
 V 58
-/svn/!svn/ver/4014/trunk/app/helpers/application_helper.rb
+/svn/!svn/ver/4103/trunk/app/helpers/application_helper.rb
 END
 auth_sources_helper.rb
 K 25
--- a/app/helpers/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/helpers/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,14 +1,14 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/app/helpers
 http://redmine.rubyforge.org/svn
 
 
 
-2010-08-22T19:12:21.015911Z
-4014
+2010-09-20T18:50:14.663319Z
+4166
 edavis10
 
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:44.280140Z
+2010-09-23T14:37:44.431779Z
 e1b19c2c81df384b2026001d1d9605fd
 2007-03-12T17:59:02.654744Z
 333
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:44.280140Z
+2010-09-23T14:37:44.427784Z
 ab0af291fb143223852a6edddc64b74b
 2009-09-12T08:36:46.650954Z
 2869
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:44.280140Z
+2010-09-23T14:37:44.427784Z
 0cd3093356b7034ee950ca327fc7aabc
 2007-03-12T17:59:02.654744Z
 333
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:44.280140Z
+2010-09-23T14:37:44.431779Z
 69869e026dc6cbacc618214e4bb13b1b
 2007-03-12T17:59:02.654744Z
 333
@@ -168,7 +168,7 @@
 
 
 
-2010-07-23T14:49:44.280140Z
+2010-09-23T14:37:44.431779Z
 491ead5828edb57adcd7333943656c94
 2010-03-27T16:55:20.312262Z
 3618
@@ -202,7 +202,7 @@
 
 
 
-2010-07-23T14:49:44.280140Z
+2010-09-24T11:56:52.900009Z
 d617582e4bc6a3eedbc4f37f8fa3d509
 2010-04-11T15:18:49.769279Z
 3659
@@ -236,11 +236,11 @@
 
 
 
-2010-07-23T14:49:44.280140Z
-836fbe23af73953fa253844a97f42ea7
-2009-01-24T11:31:15.122844Z
-2304
-jplang
+2010-09-24T12:48:25.903794Z
+258ebc9ad13b3111585e5118ec607d1b
+2010-09-10T23:07:10.817821Z
+4080
+edavis10
 has-props
 
 
@@ -262,7 +262,7 @@
 
 
 
-1161
+976
 
 projects_helper.rb
 file
@@ -270,7 +270,7 @@
 
 
 
-2010-08-25T15:27:52.882610Z
+2010-09-23T14:37:44.427784Z
 19efbd2b30f44f233d5140437e2707a0
 2010-08-08T07:07:20.961363Z
 3924
@@ -304,7 +304,7 @@
 
 
 
-2010-07-23T14:49:44.280140Z
+2010-09-23T14:37:44.423776Z
 42d20ee00a3c45e3411634dbb09e2447
 2007-03-12T17:59:02.654744Z
 333
@@ -332,13 +332,47 @@
 
 817
 
+calendars_helper.rb
+file
+
+
+
+
+2010-09-24T12:48:25.903794Z
+c8780c65337211f34097d74a8c3c9f6e
+2010-08-26T16:37:26.575205Z
+4046
+edavis10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1462
+
 issue_categories_helper.rb
 file
 
 
 
 
-2010-07-23T14:49:44.280140Z
+2010-09-23T14:37:44.427784Z
 1257aafe6669c839ab46dac2b2732ae0
 2007-03-12T17:59:02.654744Z
 333
@@ -372,7 +406,7 @@
 
 
 
-2010-07-23T14:49:44.280140Z
+2010-09-23T14:37:44.423776Z
 ceb0fce7a4c271df3ae182c29caf9c03
 2007-03-12T17:59:02.654744Z
 333
@@ -406,7 +440,7 @@
 
 
 
-2010-07-23T14:49:44.280140Z
+2010-09-23T14:37:44.431779Z
 aee0a578b4bbfe95d2ede93a418824a6
 2009-06-28T11:55:49.957729Z
 2794
@@ -440,7 +474,7 @@
 
 
 
-2010-07-23T14:49:44.284157Z
+2010-09-23T14:37:44.427784Z
 fc5ec20dd0ca3ce1d954b219417eff70
 2007-03-12T17:59:02.654744Z
 333
@@ -474,10 +508,10 @@
 
 
 
-2010-08-25T15:27:52.886524Z
-cee3b3c259a71a111285bdf4e756af29
-2010-08-19T03:43:33.818285Z
-3952
+2010-09-24T12:48:25.903794Z
+f45b693d0286eacc66fde223d7306002
+2010-09-20T18:50:14.663319Z
+4166
 edavis10
 has-props
 
@@ -500,7 +534,7 @@
 
 
 
-10746
+11249
 
 queries_helper.rb
 file
@@ -508,7 +542,7 @@
 
 
 
-2010-08-25T15:27:52.886524Z
+2010-09-23T14:37:44.427784Z
 403463e02373d20faf0ed8988cfae033
 2010-08-08T07:07:20.961363Z
 3924
@@ -536,13 +570,47 @@
 
 3785
 
+gantt_helper.rb
+file
+
+
+
+
+2010-09-24T12:48:25.903794Z
+bed98c36b12ec59c120d8da45f1511e0
+2010-09-10T03:09:02.311267Z
+4072
+edavis10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1027
+
 mail_handler_helper.rb
 file
 
 
 
 
-2010-07-23T14:49:44.284157Z
+2010-09-23T14:37:44.427784Z
 c79faf6237abac40fabce0eacbfbb4cb
 2008-06-25T19:25:28.386590Z
 1584
@@ -576,7 +644,7 @@
 
 
 
-2010-07-23T14:49:44.284157Z
+2010-09-23T14:37:44.431779Z
 fc71d3a83fe0178e0c6d9519c7a62dde
 2010-03-13T17:45:41.194736Z
 3579
@@ -610,7 +678,7 @@
 
 
 
-2010-07-23T14:49:44.284157Z
+2010-09-23T14:37:44.427784Z
 d7134d76eff99aef107d8930903b10e0
 2007-03-12T17:59:02.654744Z
 333
@@ -644,7 +712,7 @@
 
 
 
-2010-07-23T14:49:44.284157Z
+2010-09-23T14:37:44.427784Z
 cc94b2fd5c6a87acac13bbe6e91bd39a
 2007-03-12T17:59:02.654744Z
 333
@@ -678,7 +746,7 @@
 
 
 
-2010-07-23T14:49:44.284157Z
+2010-09-23T14:37:44.431779Z
 2d03eb3683f312ec26736c696319ec76
 2007-03-12T17:59:02.654744Z
 333
@@ -712,10 +780,10 @@
 
 
 
-2010-08-25T15:27:52.886524Z
+2010-09-24T12:48:25.903794Z
 b64edde44bceed7fb0911f87dba971aa
-2010-08-16T16:25:04.741303Z
-3941
+2010-09-05T22:57:20.669640Z
+4062
 edavis10
 has-props
 
@@ -746,7 +814,7 @@
 
 
 
-2010-07-23T14:49:44.284157Z
+2010-09-23T14:37:44.431779Z
 4f7bcbe149363ecb18080e3ce6c3f761
 2008-09-28T12:03:17.584169Z
 1914
@@ -780,7 +848,7 @@
 
 
 
-2010-07-23T14:49:44.284157Z
+2010-09-23T14:37:44.431779Z
 9daafcfffa933849b3ee09fe5fd7b0cc
 2007-08-13T17:00:59.400243Z
 629
@@ -814,7 +882,7 @@
 
 
 
-2010-07-23T14:49:44.284157Z
+2010-09-23T14:37:44.431779Z
 1888fd2d4a1be5fa0d6ad8a63238e2b4
 2010-04-30T12:18:11.536180Z
 3708
@@ -848,7 +916,7 @@
 
 
 
-2010-07-23T14:49:44.284157Z
+2010-09-23T14:37:44.431779Z
 72a1f70b395a94a9efae4d1046d5df2b
 2009-12-23T17:56:39.685148Z
 3222
@@ -882,7 +950,7 @@
 
 
 
-2010-07-23T14:49:44.284157Z
+2010-09-23T14:37:44.423776Z
 97753365c8eb76a948d7417d5db31079
 2010-04-16T15:34:05.970144Z
 3675
@@ -916,7 +984,7 @@
 
 
 
-2010-07-23T14:49:44.284157Z
+2010-09-23T14:37:44.431779Z
 051113e44a01776675b1a38144a5fb8c
 2009-12-24T16:14:15.868995Z
 3237
@@ -950,7 +1018,7 @@
 
 
 
-2010-08-25T15:27:52.886524Z
+2010-09-23T14:37:44.427784Z
 66e99bd3af036c92a773a91e92a725f9
 2010-08-11T14:42:10.119704Z
 3936
@@ -984,10 +1052,10 @@
 
 
 
-2010-08-25T15:27:52.886524Z
-93af3e244c658ab28a4da65322eba7ac
-2010-08-22T19:12:21.015911Z
-4014
+2010-09-24T12:48:25.903794Z
+fed6be9c1540dab50fb9e194984395b3
+2010-09-20T02:55:14.397976Z
+4103
 edavis10
 has-props
 
@@ -1010,7 +1078,7 @@
 
 
 
-32211
+33297
 
 auth_sources_helper.rb
 file
@@ -1018,7 +1086,7 @@
 
 
 
-2010-07-23T14:49:44.288130Z
+2010-09-23T14:37:44.423776Z
 19759b6e665f9063140da8ac473d9e31
 2007-03-12T17:59:02.654744Z
 333
@@ -1052,7 +1120,7 @@
 
 
 
-2010-07-23T14:49:44.288130Z
+2010-09-23T14:37:44.431779Z
 da0566fb2a355566f38723e4a11d1aab
 2009-07-18T09:46:20.387008Z
 2822
@@ -1086,7 +1154,7 @@
 
 
 
-2010-07-23T14:49:44.288130Z
+2010-09-23T14:37:44.427784Z
 70db854f3fd0a38d203a65c44d93bb13
 2010-02-06T12:54:13.653502Z
 3373
@@ -1120,7 +1188,7 @@
 
 
 
-2010-07-23T14:49:44.288130Z
+2010-09-23T14:37:44.431779Z
 fd18226266f3e53f6af000ac07a13313
 2007-12-07T10:26:07.864320Z
 955
@@ -1154,7 +1222,7 @@
 
 
 
-2010-07-23T14:49:44.288130Z
+2010-09-23T14:37:44.427784Z
 fef3a97e6644b418b44f9551aa65af95
 2007-05-05T13:22:27.245135Z
 506
@@ -1188,7 +1256,7 @@
 
 
 
-2010-07-23T14:49:44.288130Z
+2010-09-23T14:37:44.423776Z
 0ca8f33522734ee0417089366037a7cb
 2007-05-13T17:09:56.765659Z
 529
@@ -1222,7 +1290,7 @@
 
 
 
-2010-07-23T14:49:44.288130Z
+2010-09-23T14:37:44.423776Z
 6e15ada8c772d8daf8062cec2885ad9c
 2008-12-09T16:54:46.963649Z
 2116
@@ -1256,7 +1324,7 @@
 
 
 
-2010-07-23T14:49:44.288130Z
+2010-09-23T14:37:44.427784Z
 d808f6794a2fa7cd059ed56d5c8d1b28
 2007-03-12T17:59:02.654744Z
 333
--- a/app/helpers/.svn/text-base/admin_helper.rb.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/helpers/.svn/text-base/admin_helper.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -20,12 +20,4 @@
     options_for_select([[l(:label_all), ''], 
                         [l(:status_active), 1]], selected)
   end
-  
-  def css_project_classes(project)
-    s = 'project'
-    s << ' root' if project.root?
-    s << ' child' if project.child?
-    s << (project.leaf? ? ' leaf' : ' parent')
-    s
-  end
 end
--- a/app/helpers/.svn/text-base/application_helper.rb.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/helpers/.svn/text-base/application_helper.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -32,8 +32,27 @@
   end
 
   # Display a link if user is authorized
+  #
+  # @param [String] name Anchor text (passed to link_to)
+  # @param [Hash, String] options Hash params or url for the link target (passed to link_to).
+  #        This will checked by authorize_for to see if the user is authorized
+  # @param [optional, Hash] html_options Options passed to link_to
+  # @param [optional, Hash] parameters_for_method_reference Extra parameters for link_to
   def link_to_if_authorized(name, options = {}, html_options = nil, *parameters_for_method_reference)
-    link_to(name, options, html_options, *parameters_for_method_reference) if authorize_for(options[:controller] || params[:controller], options[:action])
+    if options.is_a?(String)
+      begin
+        route = ActionController::Routing::Routes.recognize_path(options.gsub(/\?.*/,''), :method => options[:method] || :get)
+        link_controller = route[:controller]
+        link_action = route[:action]
+      rescue ActionController::RoutingError # Parse failed, not a route
+        link_controller, link_action = nil, nil
+      end
+    else
+      link_controller = options[:controller] || params[:controller]
+      link_action = options[:action]
+    end
+
+    link_to(name, options, html_options, *parameters_for_method_reference) if authorize_for(link_controller, link_action)
   end
 
   # Display a link to remote if user is authorized
@@ -102,6 +121,11 @@
 
     link_to(text, {:controller => 'repositories', :action => 'revision', :id => project, :rev => revision}, :title => l(:label_revision_id, revision))
   end
+  
+  def link_to_project(project, options={})
+    options[:class] ||= 'project'
+    link_to(h(project), {:controller => 'projects', :action => 'show', :id => project}, :class => options[:class])
+  end
 
   # Generates a link to a project if active
   # Examples:
@@ -302,7 +326,7 @@
   def time_tag(time)
     text = distance_of_time_in_words(Time.now, time)
     if @project
-      link_to(text, {:controller => 'projects', :action => 'activity', :id => @project, :from => time.to_date}, :title => format_time(time))
+      link_to(text, {:controller => 'activities', :action => 'index', :id => @project, :from => time.to_date}, :title => format_time(time))
     else
       content_tag('acronym', text, :title => format_time(time))
     end
@@ -805,7 +829,7 @@
   # +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 => Setting.protocol == 'https', :default => Setting.gravatar_default})
+      options.merge!({:ssl => (defined?(request) && request.ssl?), :default => Setting.gravatar_default})
       email = nil
       if user.respond_to?(:mail)
         email = user.mail
@@ -813,6 +837,8 @@
         email = $1
       end
       return gravatar(email.to_s.downcase, options) unless email.blank? rescue nil
+    else
+      ''
     end
   end
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/app/helpers/.svn/text-base/calendars_helper.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -0,0 +1,45 @@
+module CalendarsHelper
+  def link_to_previous_month(year, month, options={})
+    target_year, target_month = if month == 1
+                                  [year - 1, 12]
+                                else
+                                  [year, month - 1]
+                                end
+    
+    name = if target_month == 12
+             "#{month_name(target_month)} #{target_year}"
+           else
+             "#{month_name(target_month)}"
+           end
+
+    link_to_month(('&#171; ' + name), target_year, target_month, options)
+  end
+
+  def link_to_next_month(year, month, options={})
+    target_year, target_month = if month == 12
+                                  [year + 1, 1]
+                                else
+                                  [year, month + 1]
+                                end
+
+    name = if target_month == 1
+             "#{month_name(target_month)} #{target_year}"
+           else
+             "#{month_name(target_month)}"
+           end
+
+    link_to_month((name + ' &#187;'), target_year, target_month, options)
+  end
+
+  def link_to_month(link_name, year, month, options={})
+    project_id = options[:project].present? ? options[:project].to_param : nil
+
+    link_target = calendar_path(:year => year, :month => month, :project_id => project_id)
+
+    link_to_remote(link_name,
+                   {:update => "content", :url => link_target, :method => :put},
+                   {:href => link_target})
+
+  end
+  
+end
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/app/helpers/.svn/text-base/gantt_helper.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -0,0 +1,24 @@
+# redMine - project management software
+# Copyright (C) 2006  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 GanttHelper
+  def number_of_issues_on_versions(gantt)
+    versions = gantt.events.collect {|event| (event.is_a? Version) ? event : nil}.compact
+
+    versions.sum {|v| v.fixed_issues.for_gantt.with_query(@query).count}
+  end
+end
--- a/app/helpers/.svn/text-base/issues_helper.rb.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/helpers/.svn/text-base/issues_helper.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -28,15 +28,26 @@
       ancestors << issue unless issue.leaf?
     end
   end
-  
+
+  # Renders a HTML/CSS tooltip
+  #
+  # To use, a trigger div is needed.  This is a div with the class of "tooltip"
+  # that contains this method wrapped in a span with the class of "tip"
+  #
+  #    <div class="tooltip"><%= link_to_issue(issue) %>
+  #      <span class="tip"><%= render_issue_tooltip(issue) %></span>
+  #    </div>
+  #
   def render_issue_tooltip(issue)
     @cached_label_status ||= l(:field_status)
     @cached_label_start_date ||= l(:field_start_date)
     @cached_label_due_date ||= l(:field_due_date)
     @cached_label_assigned_to ||= l(:field_assigned_to)
     @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>: #{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 />" +
@@ -243,7 +254,7 @@
     when :in
       if gantt.zoom < 4
         link_to_remote(l(:text_zoom_in) + image_tag('zoom_in.png', img_attributes.merge(:alt => l(:text_zoom_in))),
-                       {:url => gantt.params.merge(:zoom => (gantt.zoom+1)), :update => 'content'},
+                       {:url => gantt.params.merge(:zoom => (gantt.zoom+1)), :method => :get, :update => 'content'},
                        {:href => url_for(gantt.params.merge(:zoom => (gantt.zoom+1)))})
       else
         l(:text_zoom_in) +
@@ -253,7 +264,7 @@
     when :out
       if gantt.zoom > 1
         link_to_remote(l(:text_zoom_out) + image_tag('zoom_out.png', img_attributes.merge(:alt => l(:text_zoom_out))),
-                       {:url => gantt.params.merge(:zoom => (gantt.zoom-1)), :update => 'content'},
+                       {:url => gantt.params.merge(:zoom => (gantt.zoom-1)), :method => :get, :update => 'content'},
                        {:href => url_for(gantt.params.merge(:zoom => (gantt.zoom-1)))})
       else
         l(:text_zoom_out) +
--- a/app/helpers/admin_helper.rb	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/helpers/admin_helper.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -20,12 +20,4 @@
     options_for_select([[l(:label_all), ''], 
                         [l(:status_active), 1]], selected)
   end
-  
-  def css_project_classes(project)
-    s = 'project'
-    s << ' root' if project.root?
-    s << ' child' if project.child?
-    s << (project.leaf? ? ' leaf' : ' parent')
-    s
-  end
 end
--- a/app/helpers/application_helper.rb	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/helpers/application_helper.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -32,8 +32,27 @@
   end
 
   # Display a link if user is authorized
+  #
+  # @param [String] name Anchor text (passed to link_to)
+  # @param [Hash, String] options Hash params or url for the link target (passed to link_to).
+  #        This will checked by authorize_for to see if the user is authorized
+  # @param [optional, Hash] html_options Options passed to link_to
+  # @param [optional, Hash] parameters_for_method_reference Extra parameters for link_to
   def link_to_if_authorized(name, options = {}, html_options = nil, *parameters_for_method_reference)
-    link_to(name, options, html_options, *parameters_for_method_reference) if authorize_for(options[:controller] || params[:controller], options[:action])
+    if options.is_a?(String)
+      begin
+        route = ActionController::Routing::Routes.recognize_path(options.gsub(/\?.*/,''), :method => options[:method] || :get)
+        link_controller = route[:controller]
+        link_action = route[:action]
+      rescue ActionController::RoutingError # Parse failed, not a route
+        link_controller, link_action = nil, nil
+      end
+    else
+      link_controller = options[:controller] || params[:controller]
+      link_action = options[:action]
+    end
+
+    link_to(name, options, html_options, *parameters_for_method_reference) if authorize_for(link_controller, link_action)
   end
 
   # Display a link to remote if user is authorized
@@ -104,6 +123,11 @@
     link_to(text, {:controller => 'repositories', :action => 'revision', :id => project, :rev => rev},
             :title => l(:label_revision_id, format_revision(revision)))
   end
+  
+  def link_to_project(project, options={})
+    options[:class] ||= 'project'
+    link_to(h(project), {:controller => 'projects', :action => 'show', :id => project}, :class => options[:class])
+  end
 
   # Generates a link to a project if active
   # Examples:
@@ -304,7 +328,7 @@
   def time_tag(time)
     text = distance_of_time_in_words(Time.now, time)
     if @project
-      link_to(text, {:controller => 'projects', :action => 'activity', :id => @project, :from => time.to_date}, :title => format_time(time))
+      link_to(text, {:controller => 'activities', :action => 'index', :id => @project, :from => time.to_date}, :title => format_time(time))
     else
       content_tag('acronym', text, :title => format_time(time))
     end
@@ -807,7 +831,7 @@
   # +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 => Setting.protocol == 'https', :default => Setting.gravatar_default})
+      options.merge!({:ssl => (defined?(request) && request.ssl?), :default => Setting.gravatar_default})
       email = nil
       if user.respond_to?(:mail)
         email = user.mail
@@ -815,6 +839,8 @@
         email = $1
       end
       return gravatar(email.to_s.downcase, options) unless email.blank? rescue nil
+    else
+      ''
     end
   end
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/app/helpers/calendars_helper.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -0,0 +1,45 @@
+module CalendarsHelper
+  def link_to_previous_month(year, month, options={})
+    target_year, target_month = if month == 1
+                                  [year - 1, 12]
+                                else
+                                  [year, month - 1]
+                                end
+    
+    name = if target_month == 12
+             "#{month_name(target_month)} #{target_year}"
+           else
+             "#{month_name(target_month)}"
+           end
+
+    link_to_month(('&#171; ' + name), target_year, target_month, options)
+  end
+
+  def link_to_next_month(year, month, options={})
+    target_year, target_month = if month == 12
+                                  [year + 1, 1]
+                                else
+                                  [year, month + 1]
+                                end
+
+    name = if target_month == 1
+             "#{month_name(target_month)} #{target_year}"
+           else
+             "#{month_name(target_month)}"
+           end
+
+    link_to_month((name + ' &#187;'), target_year, target_month, options)
+  end
+
+  def link_to_month(link_name, year, month, options={})
+    project_id = options[:project].present? ? options[:project].to_param : nil
+
+    link_target = calendar_path(:year => year, :month => month, :project_id => project_id)
+
+    link_to_remote(link_name,
+                   {:update => "content", :url => link_target, :method => :put},
+                   {:href => link_target})
+
+  end
+  
+end
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/app/helpers/gantt_helper.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -0,0 +1,24 @@
+# redMine - project management software
+# Copyright (C) 2006  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 GanttHelper
+  def number_of_issues_on_versions(gantt)
+    versions = gantt.events.collect {|event| (event.is_a? Version) ? event : nil}.compact
+
+    versions.sum {|v| v.fixed_issues.for_gantt.with_query(@query).count}
+  end
+end
--- a/app/helpers/issues_helper.rb	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/helpers/issues_helper.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -28,15 +28,26 @@
       ancestors << issue unless issue.leaf?
     end
   end
-  
+
+  # Renders a HTML/CSS tooltip
+  #
+  # To use, a trigger div is needed.  This is a div with the class of "tooltip"
+  # that contains this method wrapped in a span with the class of "tip"
+  #
+  #    <div class="tooltip"><%= link_to_issue(issue) %>
+  #      <span class="tip"><%= render_issue_tooltip(issue) %></span>
+  #    </div>
+  #
   def render_issue_tooltip(issue)
     @cached_label_status ||= l(:field_status)
     @cached_label_start_date ||= l(:field_start_date)
     @cached_label_due_date ||= l(:field_due_date)
     @cached_label_assigned_to ||= l(:field_assigned_to)
     @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>: #{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 />" +
@@ -243,7 +254,7 @@
     when :in
       if gantt.zoom < 4
         link_to_remote(l(:text_zoom_in) + image_tag('zoom_in.png', img_attributes.merge(:alt => l(:text_zoom_in))),
-                       {:url => gantt.params.merge(:zoom => (gantt.zoom+1)), :update => 'content'},
+                       {:url => gantt.params.merge(:zoom => (gantt.zoom+1)), :method => :get, :update => 'content'},
                        {:href => url_for(gantt.params.merge(:zoom => (gantt.zoom+1)))})
       else
         l(:text_zoom_in) +
@@ -253,7 +264,7 @@
     when :out
       if gantt.zoom > 1
         link_to_remote(l(:text_zoom_out) + image_tag('zoom_out.png', img_attributes.merge(:alt => l(:text_zoom_out))),
-                       {:url => gantt.params.merge(:zoom => (gantt.zoom-1)), :update => 'content'},
+                       {:url => gantt.params.merge(:zoom => (gantt.zoom-1)), :method => :get, :update => 'content'},
                        {:href => url_for(gantt.params.merge(:zoom => (gantt.zoom-1)))})
       else
         l(:text_zoom_out) +
--- a/app/models/.svn/all-wcprops	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/models/.svn/all-wcprops	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 35
-/svn/!svn/ver/3929/trunk/app/models
+/svn/!svn/ver/4167/trunk/app/models
 END
 document.rb
 K 25
@@ -25,7 +25,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 49
-/svn/!svn/ver/3232/trunk/app/models/time_entry.rb
+/svn/!svn/ver/4087/trunk/app/models/time_entry.rb
 END
 token.rb
 K 25
@@ -49,7 +49,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 48
-/svn/!svn/ver/3678/trunk/app/models/principal.rb
+/svn/!svn/ver/4076/trunk/app/models/principal.rb
 END
 version_custom_field.rb
 K 25
@@ -81,6 +81,12 @@
 V 50
 /svn/!svn/ver/3240/trunk/app/models/enumeration.rb
 END
+time_entry_activity_custom_field.rb
+K 25
+svn:wc:ra_dav:version-url
+V 71
+/svn/!svn/ver/2952/trunk/app/models/time_entry_activity_custom_field.rb
+END
 member_role.rb
 K 25
 svn:wc:ra_dav:version-url
@@ -91,13 +97,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 44
-/svn/!svn/ver/3821/trunk/app/models/issue.rb
-END
-time_entry_activity_custom_field.rb
-K 25
-svn:wc:ra_dav:version-url
-V 71
-/svn/!svn/ver/2952/trunk/app/models/time_entry_activity_custom_field.rb
+/svn/!svn/ver/4105/trunk/app/models/issue.rb
 END
 issue_priority.rb
 K 25
@@ -111,17 +111,23 @@
 V 55
 /svn/!svn/ver/3169/trunk/app/models/message_observer.rb
 END
+wiki_content.rb
+K 25
+svn:wc:ra_dav:version-url
+V 51
+/svn/!svn/ver/3632/trunk/app/models/wiki_content.rb
+END
 watcher.rb
 K 25
 svn:wc:ra_dav:version-url
 V 46
 /svn/!svn/ver/3167/trunk/app/models/watcher.rb
 END
-wiki_content.rb
+wiki_page.rb
 K 25
 svn:wc:ra_dav:version-url
-V 51
-/svn/!svn/ver/3632/trunk/app/models/wiki_content.rb
+V 48
+/svn/!svn/ver/3632/trunk/app/models/wiki_page.rb
 END
 enabled_module.rb
 K 25
@@ -129,12 +135,6 @@
 V 53
 /svn/!svn/ver/2970/trunk/app/models/enabled_module.rb
 END
-wiki_page.rb
-K 25
-svn:wc:ra_dav:version-url
-V 48
-/svn/!svn/ver/3632/trunk/app/models/wiki_page.rb
-END
 comment.rb
 K 25
 svn:wc:ra_dav:version-url
@@ -151,7 +151,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 44
-/svn/!svn/ver/3927/trunk/app/models/query.rb
+/svn/!svn/ver/4079/trunk/app/models/query.rb
 END
 member.rb
 K 25
@@ -169,13 +169,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 45
-/svn/!svn/ver/3907/trunk/app/models/mailer.rb
-END
-journal.rb
-K 25
-svn:wc:ra_dav:version-url
-V 46
-/svn/!svn/ver/2615/trunk/app/models/journal.rb
+/svn/!svn/ver/4167/trunk/app/models/mailer.rb
 END
 workflow.rb
 K 25
@@ -183,6 +177,12 @@
 V 47
 /svn/!svn/ver/3709/trunk/app/models/workflow.rb
 END
+journal.rb
+K 25
+svn:wc:ra_dav:version-url
+V 46
+/svn/!svn/ver/4062/trunk/app/models/journal.rb
+END
 user_custom_field.rb
 K 25
 svn:wc:ra_dav:version-url
@@ -211,7 +211,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 43
-/svn/!svn/ver/3906/trunk/app/models/user.rb
+/svn/!svn/ver/4164/trunk/app/models/user.rb
 END
 auth_source.rb
 K 25
@@ -253,7 +253,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 46
-/svn/!svn/ver/3761/trunk/app/models/version.rb
+/svn/!svn/ver/4073/trunk/app/models/version.rb
 END
 issue_priority_custom_field.rb
 K 25
@@ -349,7 +349,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 46
-/svn/!svn/ver/3760/trunk/app/models/project.rb
+/svn/!svn/ver/4087/trunk/app/models/project.rb
 END
 document_category.rb
 K 25
--- a/app/models/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/models/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,15 +1,15 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/app/models
 http://redmine.rubyforge.org/svn
 
 
 
-2010-08-09T05:10:00.803890Z
-3929
-jbbarth
+2010-09-20T23:17:51.402972Z
+4167
+edavis10
 
 
 
@@ -35,7 +35,7 @@
 
 
 
-2010-07-23T14:49:44.579794Z
+2010-09-23T14:37:44.471831Z
 6edd75717c818c718387e30ec7aee840
 2010-02-01T18:57:12.733490Z
 3358
@@ -69,7 +69,7 @@
 
 
 
-2010-07-23T14:49:44.579794Z
+2010-09-23T14:37:44.475780Z
 009baaf8ec2c62e225d84f9dc9898a23
 2010-06-20T16:22:36.211973Z
 3801
@@ -103,7 +103,7 @@
 
 
 
-2010-07-23T14:49:44.579794Z
+2010-09-24T11:56:52.924049Z
 6d9599543924edc24abb739bd3f7e718
 2010-02-21T14:42:45.276472Z
 3472
@@ -137,11 +137,11 @@
 
 
 
-2010-07-23T14:49:44.579794Z
-4f5b2c82132bd0855b0ba27be9b52df5
-2009-12-23T20:05:46.097327Z
-3232
-jplang
+2010-09-24T12:48:25.923798Z
+005148fc17a331f651990b8784f70a3e
+2010-09-14T19:02:25.847894Z
+4087
+edavis10
 has-props
 
 
@@ -163,7 +163,7 @@
 
 
 
-3359
+4089
 
 token.rb
 file
@@ -171,7 +171,7 @@
 
 
 
-2010-07-23T14:49:44.579794Z
+2010-09-23T14:37:44.487730Z
 441a5648e149e471c91928dc7f3f29a6
 2009-06-02T17:24:50.360628Z
 2778
@@ -205,7 +205,7 @@
 
 
 
-2010-07-23T14:49:44.579794Z
+2010-09-23T14:37:44.475780Z
 0c8188293bba080a074aeb40a86e49f7
 2009-03-28T00:38:57.780983Z
 2637
@@ -239,7 +239,7 @@
 
 
 
-2010-07-23T14:49:44.584123Z
+2010-09-23T14:37:44.467732Z
 87f2ff0401993963de36fe7502cd6949
 2010-02-26T09:13:12.187275Z
 3492
@@ -273,11 +273,11 @@
 
 
 
-2010-07-23T14:49:44.584123Z
-98ae15cdf9ad4985dcefc04167b5004c
-2010-04-17T12:14:52.002114Z
-3678
-jplang
+2010-09-24T12:48:25.923798Z
+01332c0957f952b76c01e7c7ebd112f0
+2010-09-10T18:46:23.747988Z
+4076
+edavis10
 has-props
 
 
@@ -299,7 +299,7 @@
 
 
 
-2223
+2265
 
 version_custom_field.rb
 file
@@ -307,7 +307,7 @@
 
 
 
-2010-07-23T14:49:44.584123Z
+2010-09-23T14:37:44.491776Z
 6bf31c0491d87fff1481a91519f66363
 2009-11-15T15:22:55.021661Z
 3064
@@ -341,7 +341,7 @@
 
 
 
-2010-07-23T14:49:44.584123Z
+2010-09-23T14:37:44.471831Z
 cd405a055651d29541f2ebcf4e22f8dc
 2007-03-15T22:11:02.843262Z
 337
@@ -375,7 +375,7 @@
 
 
 
-2010-07-23T14:49:44.584123Z
+2010-09-23T14:37:44.471831Z
 da42817b3f290549a03ada82a93dc5d0
 2007-12-07T10:26:07.864320Z
 955
@@ -409,7 +409,7 @@
 
 
 
-2010-07-28T11:07:47.068192Z
+2010-09-23T14:37:44.467732Z
 622826f16c01373c631876eb1e480a65
 2010-07-24T00:19:32.307471Z
 3860
@@ -443,7 +443,7 @@
 
 
 
-2010-07-23T14:49:44.584123Z
+2010-09-23T14:37:44.471831Z
 90ec955317994a58df9a5a7f85b810e7
 2009-12-25T17:13:58.090736Z
 3240
@@ -477,10 +477,10 @@
 
 
 
-2010-07-23T14:49:44.584123Z
-b330a85d4583cb685560da776636ec8e
-2010-06-30T02:45:34.835470Z
-3821
+2010-09-24T12:48:25.923798Z
+d169fc23e9a8686dba8f414b92e0fe26
+2010-09-20T02:55:26.436604Z
+4105
 edavis10
 has-props
 
@@ -503,7 +503,7 @@
 
 
 
-30712
+31528
 
 member_role.rb
 file
@@ -511,7 +511,7 @@
 
 
 
-2010-07-23T14:49:44.584123Z
+2010-09-23T14:37:44.475780Z
 95caba31fc55fea2d5ff257e70cf14b2
 2009-12-26T16:14:55.591181Z
 3250
@@ -545,7 +545,7 @@
 
 
 
-2010-07-23T14:49:44.584123Z
+2010-09-23T14:37:44.487730Z
 d5549b2847a255d4bdd7185a670988b5
 2009-10-21T22:35:03.091600Z
 2952
@@ -579,7 +579,7 @@
 
 
 
-2010-07-23T14:49:44.584123Z
+2010-09-23T14:37:44.471831Z
 028b9a9be35e74573921f9865f953439
 2009-12-25T17:13:58.090736Z
 3240
@@ -613,7 +613,7 @@
 
 
 
-2010-07-23T14:49:44.584123Z
+2010-09-23T14:37:44.475780Z
 50c2305c38ffecfb2138cd437e1c255c
 2009-12-13T14:26:54.396245Z
 3169
@@ -647,7 +647,7 @@
 
 
 
-2010-07-23T14:49:44.584123Z
+2010-09-23T14:37:44.491776Z
 c72443f206052fafae720378fba40163
 2009-12-13T12:39:22.716082Z
 3167
@@ -681,7 +681,7 @@
 
 
 
-2010-07-23T14:49:44.584123Z
+2010-09-23T14:37:44.491776Z
 2ce4521051866ff5f654f8a8bddfc824
 2010-04-11T12:56:18.077630Z
 3632
@@ -715,7 +715,7 @@
 
 
 
-2010-07-23T14:49:44.588155Z
+2010-09-23T14:37:44.471831Z
 56631baa5560f63cbb213855761c8fcc
 2009-10-25T10:31:01.135799Z
 2970
@@ -749,7 +749,7 @@
 
 
 
-2010-07-23T14:49:44.588155Z
+2010-09-23T14:37:44.491776Z
 e6b3c8e83cb441a021358acf5d246d21
 2010-04-11T12:56:18.077630Z
 3632
@@ -783,7 +783,7 @@
 
 
 
-2010-07-23T14:49:44.588155Z
+2010-09-23T14:37:44.467732Z
 0ca314834c39ddc12f2993caf5722e79
 2007-04-25T15:06:20.062636Z
 479
@@ -817,7 +817,7 @@
 
 
 
-2010-07-23T14:49:44.588155Z
+2010-09-23T14:37:44.491776Z
 a6804cb0c0abc6de72a184e7384ed36d
 2009-05-17T09:55:13.601447Z
 2749
@@ -851,11 +851,11 @@
 
 
 
-2010-08-25T15:27:52.946649Z
-e3b2224c743932dc842f590dd70571e9
-2010-08-08T09:01:25.536716Z
-3927
-jbbarth
+2010-09-24T12:48:25.923798Z
+1cbc803eff5cf06cb8f3f133e5e7bed2
+2010-09-10T19:53:57.028875Z
+4079
+edavis10
 has-props
 
 
@@ -877,7 +877,7 @@
 
 
 
-23988
+26050
 
 member.rb
 file
@@ -885,7 +885,7 @@
 
 
 
-2010-08-25T15:27:52.946649Z
+2010-09-23T14:37:44.475780Z
 84d28844bbac90dab2c56a27ed58db18
 2010-08-09T05:10:00.803890Z
 3929
@@ -919,7 +919,7 @@
 
 
 
-2010-07-23T14:49:44.588155Z
+2010-09-23T14:37:44.471831Z
 60dadf29c4da2a4e97f463a647b8e98d
 2009-10-21T22:34:22.740755Z
 2945
@@ -953,10 +953,10 @@
 
 
 
-2010-08-25T15:27:52.946649Z
-41eda2aaf7baa40d51eb2f3359bb0877
-2010-08-03T16:01:53.564278Z
-3907
+2010-09-24T12:48:25.923798Z
+46fe26aa1e0c5f59bdc2eab01a1c88e0
+2010-09-20T23:17:51.402972Z
+4167
 edavis10
 has-props
 
@@ -979,7 +979,7 @@
 
 
 
-18277
+18478
 
 journal.rb
 file
@@ -987,11 +987,11 @@
 
 
 
-2010-07-23T14:49:44.588155Z
-f70b37ff314f738b5f76fbb708534cd3
-2009-03-23T17:18:04.829029Z
-2615
-jplang
+2010-09-24T12:48:25.923798Z
+f3797cd6a4b7e4d256aba15e317e98b1
+2010-09-05T22:57:20.669640Z
+4062
+edavis10
 has-props
 
 
@@ -1013,7 +1013,7 @@
 
 
 
-3041
+3214
 
 workflow.rb
 file
@@ -1021,7 +1021,7 @@
 
 
 
-2010-07-23T14:49:44.588155Z
+2010-09-23T14:37:44.491776Z
 4561dfcb12b3fa066a9516c59a9eef94
 2010-04-30T12:19:51.238583Z
 3709
@@ -1055,7 +1055,7 @@
 
 
 
-2010-07-23T14:49:44.588155Z
+2010-09-23T14:37:44.487730Z
 47067c42f4d6607335adf75d11c3323b
 2007-03-12T17:59:02.654744Z
 333
@@ -1089,7 +1089,7 @@
 
 
 
-2010-07-23T14:49:44.588155Z
+2010-09-23T14:37:44.487730Z
 7dbc4f88d9fcd8f1057ea6d5982a1099
 2008-07-22T18:52:00.008047Z
 1689
@@ -1123,7 +1123,7 @@
 
 
 
-2010-07-23T14:49:44.588155Z
+2010-09-23T14:37:44.467732Z
 48b90644181e44606c63f82c3655baa1
 2010-04-16T15:33:49.924704Z
 3672
@@ -1157,7 +1157,7 @@
 
 
 
-2010-07-23T14:49:44.588155Z
+2010-09-23T14:37:44.487730Z
 5a0ad520fc95e7fefd2c6e6a1c9c3e76
 2010-02-12T22:08:02.981984Z
 3417
@@ -1191,10 +1191,10 @@
 
 
 
-2010-08-25T15:27:52.950484Z
-002bada85b2d0e4104ecc304e99b457c
-2010-08-03T15:26:50.842290Z
-3906
+2010-09-24T12:48:25.927735Z
+911221c7bce8ea7ed20a36477f72d457
+2010-09-20T16:38:00.519430Z
+4164
 edavis10
 has-props
 
@@ -1217,7 +1217,7 @@
 
 
 
-13018
+13260
 
 auth_source.rb
 file
@@ -1225,7 +1225,7 @@
 
 
 
-2010-07-23T14:49:44.592153Z
+2010-09-23T14:37:44.467732Z
 837db713425e094779466a392a668679
 2010-05-23T03:16:37.499264Z
 3745
@@ -1259,7 +1259,7 @@
 
 
 
-2010-07-23T14:49:44.592153Z
+2010-09-23T14:37:44.475780Z
 b98015db4679606ee5f8d75e55574745
 2009-03-28T00:38:57.780983Z
 2637
@@ -1293,7 +1293,7 @@
 
 
 
-2010-07-23T14:49:44.592153Z
+2010-09-23T14:37:44.475780Z
 66b09263cf7988c661307523991d83d5
 2010-02-06T12:54:13.653502Z
 3373
@@ -1327,7 +1327,7 @@
 
 
 
-2010-07-23T14:49:44.592153Z
+2010-09-23T14:37:44.491776Z
 4e4c64bab677a9e081fc1230ff6a3773
 2007-09-09T17:05:38.846724Z
 720
@@ -1361,7 +1361,7 @@
 
 
 
-2010-07-23T14:49:44.592153Z
+2010-09-23T14:37:44.475780Z
 c90f5daaa6fe06429b93f2010ba90fa0
 2010-05-01T14:07:36.553776Z
 3729
@@ -1395,7 +1395,7 @@
 
 
 
-2010-07-23T14:49:44.592153Z
+2010-09-23T14:37:44.471831Z
 b76852d33bcfab19bb6c4e3e727da0ed
 2009-03-28T00:38:57.780983Z
 2637
@@ -1429,10 +1429,10 @@
 
 
 
-2010-07-23T14:49:44.592153Z
-d4492e02fbd6a0b297edb76c9c61a902
-2010-05-27T17:16:15.732495Z
-3761
+2010-09-24T12:48:25.927735Z
+7f91847223c06c86cef6696956c67846
+2010-09-10T03:09:11.557425Z
+4073
 edavis10
 has-props
 
@@ -1455,7 +1455,7 @@
 
 
 
-7222
+7741
 
 issue_priority_custom_field.rb
 file
@@ -1463,7 +1463,7 @@
 
 
 
-2010-07-23T14:49:44.592153Z
+2010-09-23T14:37:44.475780Z
 478dceec50480a17a7f2c321fc59e794
 2009-10-21T22:34:22.740755Z
 2945
@@ -1497,7 +1497,7 @@
 
 
 
-2010-07-23T14:49:44.592153Z
+2010-09-23T14:37:44.467732Z
 9927f674ea1f10f785af7adfd11e6f83
 2009-12-13T12:39:22.716082Z
 3167
@@ -1531,7 +1531,7 @@
 
 
 
-2010-07-23T14:49:44.592153Z
+2010-09-23T14:37:44.467732Z
 56226fcf13a57b18ed9faf979b5cf1bc
 2010-06-19T03:54:28.250424Z
 3774
@@ -1565,7 +1565,7 @@
 
 
 
-2010-07-23T14:49:44.592153Z
+2010-09-23T14:37:44.471831Z
 2c07c440361210f71d2eb821ce95ce12
 2009-09-12T08:36:46.650954Z
 2869
@@ -1599,7 +1599,7 @@
 
 
 
-2010-07-28T11:07:47.068192Z
+2010-09-23T14:37:44.475780Z
 44dc499c4e4dfc3601165f07e6daa4b5
 2010-07-25T10:48:27.199057Z
 3881
@@ -1633,7 +1633,7 @@
 
 
 
-2010-07-23T14:49:44.592153Z
+2010-09-23T14:37:44.487730Z
 2508e3911e5bb016a9925502244b358f
 2009-12-25T17:13:58.090736Z
 3240
@@ -1667,7 +1667,7 @@
 
 
 
-2010-07-23T14:49:44.592153Z
+2010-09-23T14:37:44.487730Z
 00670b3218d9d2d2a8435809f524827f
 2009-12-18T15:41:32.828284Z
 3188
@@ -1701,7 +1701,7 @@
 
 
 
-2010-07-23T14:49:44.596180Z
+2010-09-23T14:37:44.475780Z
 4b700215d4c3bf72071a45448fa2b0e3
 2007-04-24T18:26:42.003879Z
 478
@@ -1735,7 +1735,7 @@
 
 
 
-2010-07-23T14:49:44.596180Z
+2010-09-23T14:37:44.471831Z
 7fa34bcff98b6a84bbe125d949af18af
 2009-09-12T08:36:46.650954Z
 2869
@@ -1769,7 +1769,7 @@
 
 
 
-2010-07-23T14:49:44.596180Z
+2010-09-23T14:37:44.471831Z
 d4026d660fcb2601834d26268468aec2
 2009-03-28T00:38:57.780983Z
 2637
@@ -1803,7 +1803,7 @@
 
 
 
-2010-08-25T15:27:52.950484Z
+2010-09-24T11:56:52.912062Z
 434403a24695ff195df946e1db456ca7
 2010-08-08T20:26:33.212059Z
 3928
@@ -1837,7 +1837,7 @@
 
 
 
-2010-07-23T14:49:44.596180Z
+2010-09-23T14:37:44.487730Z
 47730c63e98da3fdb40ab8551ee3d509
 2010-02-03T17:47:47.868223Z
 3363
@@ -1871,7 +1871,7 @@
 
 
 
-2010-07-23T14:49:44.596180Z
+2010-09-23T14:37:44.479733Z
 926ef98901f13ba13688fdc3ab0184fc
 2007-03-12T17:59:02.654744Z
 333
@@ -1905,7 +1905,7 @@
 
 
 
-2010-07-23T14:49:44.596180Z
+2010-09-23T14:37:44.491776Z
 5012ec7e38525085a500671f68708ba5
 2010-04-11T12:56:18.077630Z
 3632
@@ -1939,7 +1939,7 @@
 
 
 
-2010-07-23T14:49:44.596180Z
+2010-09-23T14:37:44.471831Z
 2fdf508dceb97028a97b4fee91368d92
 2009-11-20T12:57:52.379950Z
 3077
@@ -1973,10 +1973,10 @@
 
 
 
-2010-07-23T14:49:44.596180Z
-0d205046f384270082f33ecc0495289d
-2010-05-27T17:16:10.557962Z
-3760
+2010-09-24T12:48:25.927735Z
+fc2bd6fba523135882690f2d4b218277
+2010-09-14T19:02:25.847894Z
+4087
 edavis10
 has-props
 
@@ -1999,7 +1999,7 @@
 
 
 
-27886
+29540
 
 document_category.rb
 file
@@ -2007,7 +2007,7 @@
 
 
 
-2010-07-23T14:49:44.596180Z
+2010-09-23T14:37:44.471831Z
 aeaf540cf9f940cbec4ddfc984dd6af5
 2009-12-25T17:13:58.090736Z
 3240
@@ -2041,7 +2041,7 @@
 
 
 
-2010-07-23T14:49:44.596180Z
+2010-09-23T14:37:44.475780Z
 b1b4aa93c05ff00a28d777ecdd77d66d
 2010-02-01T18:57:12.733490Z
 3358
@@ -2075,7 +2075,7 @@
 
 
 
-2010-07-23T14:49:44.596180Z
+2010-09-23T14:37:44.487730Z
 41ea06399352eb7b8c2903357abe1ab0
 2008-07-04T17:58:14.743502Z
 1623
--- a/app/models/.svn/text-base/issue.rb.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/models/.svn/text-base/issue.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -62,10 +62,28 @@
   
   named_scope :open, :conditions => ["#{IssueStatus.table_name}.is_closed = ?", false], :include => :status
 
-  named_scope :recently_updated, :order => "#{self.table_name}.updated_on DESC"
+  named_scope :recently_updated, :order => "#{Issue.table_name}.updated_on DESC"
   named_scope :with_limit, lambda { |limit| { :limit => limit} }
   named_scope :on_active_project, :include => [:status, :project, :tracker],
                                   :conditions => ["#{Project.table_name}.status=#{Project::STATUS_ACTIVE}"]
+  named_scope :for_gantt, lambda {
+    {
+      :include => [:tracker, :status, :assigned_to, :priority, :project, :fixed_version],
+      :order => "#{Issue.table_name}.due_date ASC, #{Issue.table_name}.start_date ASC, #{Issue.table_name}.id ASC"
+    }
+  }
+
+  named_scope :without_version, lambda {
+    {
+      :conditions => { :fixed_version_id => nil}
+    }
+  }
+
+  named_scope :with_query, lambda {|query|
+    {
+      :conditions => Query.merge_conditions(query.statement)
+    }
+  }
 
   before_create :default_assign
   before_save :reschedule_following_issues, :close_duplicates, :update_done_ratio_from_issue_status
@@ -357,6 +375,18 @@
   def overdue?
     !due_date.nil? && (due_date < Date.today) && !status.is_closed?
   end
+
+  # Is the amount of work done less than it should for the due date
+  def behind_schedule?
+    return false if start_date.nil? || due_date.nil?
+    done_date = start_date + ((due_date - start_date+1)* done_ratio/100).floor
+    return done_date <= Date.today
+  end
+
+  # Does this issue have children?
+  def children?
+    !leaf?
+  end
   
   # Users the issue can be assigned to
   def assignable_users
@@ -821,7 +851,7 @@
                                                 j.id as #{select_field},
                                                 count(i.id) as total 
                                               from 
-                                                  #{Issue.table_name} i, #{IssueStatus.table_name} s, #{joins} as j
+                                                  #{Issue.table_name} i, #{IssueStatus.table_name} s, #{joins} j
                                               where 
                                                 i.status_id=s.id 
                                                 and #{where}
--- a/app/models/.svn/text-base/journal.rb.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/models/.svn/text-base/journal.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -65,4 +65,12 @@
   def attachments
     journalized.respond_to?(:attachments) ? journalized.attachments : nil
   end
+
+  # Returns a string of css classes
+  def css_classes
+    s = 'journal'
+    s << ' has-notes' unless notes.blank?
+    s << ' has-details' unless details.blank?
+    s
+  end
 end
--- a/app/models/.svn/text-base/mailer.rb.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/models/.svn/text-base/mailer.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -15,6 +15,8 @@
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 
+require 'ar_condition'
+
 class Mailer < ActionMailer::Base
   layout 'mailer'
   helper :application
@@ -306,13 +308,16 @@
   # * :days     => how many days in the future to remind about (defaults to 7)
   # * :tracker  => id of tracker for filtering issues (defaults to all trackers)
   # * :project  => id or identifier of project to process (defaults to all projects)
+  # * :users    => array of user ids who should be reminded
   def self.reminders(options={})
     days = options[:days] || 7
     project = options[:project] ? Project.find(options[:project]) : nil
     tracker = options[:tracker] ? Tracker.find(options[:tracker]) : nil
+    user_ids = options[:users]
 
     s = ARCondition.new ["#{IssueStatus.table_name}.is_closed = ? AND #{Issue.table_name}.due_date <= ?", false, days.day.from_now.to_date]
     s << "#{Issue.table_name}.assigned_to_id IS NOT NULL"
+    s << ["#{Issue.table_name}.assigned_to_id IN (?)", user_ids] if user_ids.present?
     s << "#{Project.table_name}.status = #{Project::STATUS_ACTIVE}"
     s << "#{Issue.table_name}.project_id = #{project.id}" if project
     s << "#{Issue.table_name}.tracker_id = #{tracker.id}" if tracker
--- a/app/models/.svn/text-base/principal.rb.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/models/.svn/text-base/principal.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -33,7 +33,11 @@
   }
   
   before_create :set_default_empty_values
-  
+
+  def name(formatter = nil)
+    to_s
+  end
+
   def <=>(principal)
     if self.class.name == principal.class.name
       self.to_s.downcase <=> principal.to_s.downcase
--- a/app/models/.svn/text-base/project.rb.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/models/.svn/text-base/project.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -412,6 +412,58 @@
   def short_description(length = 255)
     description.gsub(/^(.{#{length}}[^\n\r]*).*$/m, '\1...').strip if description
   end
+
+  def css_classes
+    s = 'project'
+    s << ' root' if root?
+    s << ' child' if child?
+    s << (leaf? ? ' leaf' : ' parent')
+    s
+  end
+
+  # The earliest start date of a project, based on it's issues and versions
+  def start_date
+    if module_enabled?(:issue_tracking)
+      [
+       issues.minimum('start_date'),
+       shared_versions.collect(&:effective_date),
+       shared_versions.collect {|v| v.fixed_issues.minimum('start_date')}
+      ].flatten.compact.min
+    end
+  end
+
+  # The latest due date of an issue or version
+  def due_date
+    if module_enabled?(:issue_tracking)
+      [
+       issues.maximum('due_date'),
+       shared_versions.collect(&:effective_date),
+       shared_versions.collect {|v| v.fixed_issues.maximum('due_date')}
+      ].flatten.compact.max
+    end
+  end
+
+  def overdue?
+    active? && !due_date.nil? && (due_date < Date.today)
+  end
+
+  # Returns the percent completed for this project, based on the
+  # progress on it's versions.
+  def completed_percent(options={:include_subprojects => false})
+    if options.delete(:include_subprojects)
+      total = self_and_descendants.collect(&:completed_percent).sum
+
+      total / self_and_descendants.count
+    else
+      if versions.count > 0
+        total = versions.collect(&:completed_pourcent).sum
+
+        total / versions.count
+      else
+        100
+      end
+    end
+  end
   
   # Return true if this project is allowed to do the specified action.
   # action can be:
@@ -441,6 +493,15 @@
       enabled_modules.clear
     end
   end
+
+  # Returns an array of projects that are in this project's hierarchy
+  #
+  # Example: parents, children, siblings
+  def hierarchy
+    parents = project.self_and_ancestors || []
+    descendants = project.descendants || []
+    project_hierarchy = parents | descendants # Set union
+  end
   
   # Returns an auto-generated project identifier based on the last identifier used
   def self.next_identifier
--- a/app/models/.svn/text-base/query.rb.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/models/.svn/text-base/query.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -195,6 +195,12 @@
     end
     @available_filters["assigned_to_id"] = { :type => :list_optional, :order => 4, :values => user_values } unless user_values.empty?
     @available_filters["author_id"] = { :type => :list, :order => 5, :values => user_values } unless user_values.empty?
+
+    group_values = Group.all.collect {|g| [g.name, g.id] }
+    @available_filters["member_of_group"] = { :type => :list_optional, :order => 6, :values => group_values } unless group_values.empty?
+
+    role_values = Role.givable.collect {|r| [r.name, r.id] }
+    @available_filters["assigned_to_role"] = { :type => :list_optional, :order => 7, :values => role_values } unless role_values.empty?
     
     if User.current.logged?
       @available_filters["watcher_id"] = { :type => :list, :order => 15, :values => [["<< #{l(:label_me)} >>", "me"]] }
@@ -432,6 +438,47 @@
         db_field = 'user_id'
         sql << "#{Issue.table_name}.id #{ operator == '=' ? 'IN' : 'NOT IN' } (SELECT #{db_table}.watchable_id FROM #{db_table} WHERE #{db_table}.watchable_type='Issue' AND "
         sql << sql_for_field(field, '=', v, db_table, db_field) + ')'
+      elsif field == "member_of_group" # named field
+        if operator == '*' # Any group
+          groups = Group.all
+          operator = '=' # Override the operator since we want to find by assigned_to
+        elsif operator == "!*"
+          groups = Group.all
+          operator = '!' # Override the operator since we want to find by assigned_to
+        else
+          groups = Group.find_all_by_id(v)
+        end
+        groups ||= []
+
+        members_of_groups = groups.inject([]) {|user_ids, group|
+          if group && group.user_ids.present?
+            user_ids << group.user_ids
+          end
+          user_ids.flatten.uniq.compact
+        }.sort.collect(&:to_s)
+        
+        sql << '(' + sql_for_field("assigned_to_id", operator, members_of_groups, Issue.table_name, "assigned_to_id", false) + ')'
+
+      elsif field == "assigned_to_role" # named field
+        if operator == "*" # Any Role
+          roles = Role.givable
+          operator = '=' # Override the operator since we want to find by assigned_to
+        elsif operator == "!*" # No role
+          roles = Role.givable
+          operator = '!' # Override the operator since we want to find by assigned_to
+        else
+          roles = Role.givable.find_all_by_id(v)
+        end
+        roles ||= []
+        
+        members_of_roles = roles.inject([]) {|user_ids, role|
+          if role && role.members
+            user_ids << role.members.collect(&:user_id)
+          end
+          user_ids.flatten.uniq.compact
+        }.sort.collect(&:to_s)
+        
+        sql << '(' + sql_for_field("assigned_to_id", operator, members_of_roles, Issue.table_name, "assigned_to_id", false) + ')'
       else
         # regular field
         db_table = Issue.table_name
--- a/app/models/.svn/text-base/time_entry.rb.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/models/.svn/text-base/time_entry.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -81,4 +81,20 @@
       yield
     end
   end
+
+  def self.earilest_date_for_project(project=nil)
+    finder_conditions = ARCondition.new(Project.allowed_to_condition(User.current, :view_time_entries))
+    if project
+      finder_conditions << ["project_id IN (?)", project.hierarchy.collect(&:id)]
+    end
+    TimeEntry.minimum(:spent_on, :include => :project, :conditions => finder_conditions.conditions)
+  end
+
+  def self.latest_date_for_project(project=nil)
+    finder_conditions = ARCondition.new(Project.allowed_to_condition(User.current, :view_time_entries))
+    if project
+      finder_conditions << ["project_id IN (?)", project.hierarchy.collect(&:id)]
+    end
+    TimeEntry.maximum(:spent_on, :include => :project, :conditions => finder_conditions.conditions)
+  end
 end
--- a/app/models/.svn/text-base/user.rb.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/models/.svn/text-base/user.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -352,6 +352,12 @@
       false
     end
   end
+
+  # Is the user allowed to do the specified action on any project?
+  # See allowed_to? for the actions and valid options.
+  def allowed_to_globally?(action, options)
+    allowed_to?(action, nil, options.reverse_merge(:global => true))
+  end
   
   def self.current=(user)
     @current_user = user
--- a/app/models/.svn/text-base/version.rb.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/models/.svn/text-base/version.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -73,6 +73,18 @@
   def completed?
     effective_date && (effective_date <= Date.today) && (open_issues_count == 0)
   end
+
+  def behind_schedule?
+    if completed_pourcent == 100
+      return false
+    elsif due_date && fixed_issues.present? && fixed_issues.minimum('start_date') # TODO: should use #start_date but that method is wrong...
+      start_date = fixed_issues.minimum('start_date')
+      done_date = start_date + ((due_date - start_date+1)* completed_pourcent/100).floor
+      return done_date <= Date.today
+    else
+      false # No issues so it's not late
+    end
+  end
   
   # Returns the completion percentage of this version based on the amount of open/closed issues
   # and the time spent on the open issues.
@@ -123,6 +135,10 @@
   end
   
   def to_s; name end
+
+  def to_s_with_project
+    "#{project} - #{name}"
+  end
   
   # Versions are sorted by effective_date and "Project Name - Version name"
   # Those with no effective_date are at the end, sorted by "Project Name - Version name"
--- a/app/models/issue.rb	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/models/issue.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -62,10 +62,28 @@
   
   named_scope :open, :conditions => ["#{IssueStatus.table_name}.is_closed = ?", false], :include => :status
 
-  named_scope :recently_updated, :order => "#{self.table_name}.updated_on DESC"
+  named_scope :recently_updated, :order => "#{Issue.table_name}.updated_on DESC"
   named_scope :with_limit, lambda { |limit| { :limit => limit} }
   named_scope :on_active_project, :include => [:status, :project, :tracker],
                                   :conditions => ["#{Project.table_name}.status=#{Project::STATUS_ACTIVE}"]
+  named_scope :for_gantt, lambda {
+    {
+      :include => [:tracker, :status, :assigned_to, :priority, :project, :fixed_version],
+      :order => "#{Issue.table_name}.due_date ASC, #{Issue.table_name}.start_date ASC, #{Issue.table_name}.id ASC"
+    }
+  }
+
+  named_scope :without_version, lambda {
+    {
+      :conditions => { :fixed_version_id => nil}
+    }
+  }
+
+  named_scope :with_query, lambda {|query|
+    {
+      :conditions => Query.merge_conditions(query.statement)
+    }
+  }
 
   before_create :default_assign
   before_save :reschedule_following_issues, :close_duplicates, :update_done_ratio_from_issue_status
@@ -357,6 +375,18 @@
   def overdue?
     !due_date.nil? && (due_date < Date.today) && !status.is_closed?
   end
+
+  # Is the amount of work done less than it should for the due date
+  def behind_schedule?
+    return false if start_date.nil? || due_date.nil?
+    done_date = start_date + ((due_date - start_date+1)* done_ratio/100).floor
+    return done_date <= Date.today
+  end
+
+  # Does this issue have children?
+  def children?
+    !leaf?
+  end
   
   # Users the issue can be assigned to
   def assignable_users
@@ -821,7 +851,7 @@
                                                 j.id as #{select_field},
                                                 count(i.id) as total 
                                               from 
-                                                  #{Issue.table_name} i, #{IssueStatus.table_name} s, #{joins} as j
+                                                  #{Issue.table_name} i, #{IssueStatus.table_name} s, #{joins} j
                                               where 
                                                 i.status_id=s.id 
                                                 and #{where}
--- a/app/models/journal.rb	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/models/journal.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -65,4 +65,12 @@
   def attachments
     journalized.respond_to?(:attachments) ? journalized.attachments : nil
   end
+
+  # Returns a string of css classes
+  def css_classes
+    s = 'journal'
+    s << ' has-notes' unless notes.blank?
+    s << ' has-details' unless details.blank?
+    s
+  end
 end
--- a/app/models/mailer.rb	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/models/mailer.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -15,6 +15,8 @@
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 
+require 'ar_condition'
+
 class Mailer < ActionMailer::Base
   layout 'mailer'
   helper :application
@@ -306,13 +308,16 @@
   # * :days     => how many days in the future to remind about (defaults to 7)
   # * :tracker  => id of tracker for filtering issues (defaults to all trackers)
   # * :project  => id or identifier of project to process (defaults to all projects)
+  # * :users    => array of user ids who should be reminded
   def self.reminders(options={})
     days = options[:days] || 7
     project = options[:project] ? Project.find(options[:project]) : nil
     tracker = options[:tracker] ? Tracker.find(options[:tracker]) : nil
+    user_ids = options[:users]
 
     s = ARCondition.new ["#{IssueStatus.table_name}.is_closed = ? AND #{Issue.table_name}.due_date <= ?", false, days.day.from_now.to_date]
     s << "#{Issue.table_name}.assigned_to_id IS NOT NULL"
+    s << ["#{Issue.table_name}.assigned_to_id IN (?)", user_ids] if user_ids.present?
     s << "#{Project.table_name}.status = #{Project::STATUS_ACTIVE}"
     s << "#{Issue.table_name}.project_id = #{project.id}" if project
     s << "#{Issue.table_name}.tracker_id = #{tracker.id}" if tracker
--- a/app/models/principal.rb	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/models/principal.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -33,7 +33,11 @@
   }
   
   before_create :set_default_empty_values
-  
+
+  def name(formatter = nil)
+    to_s
+  end
+
   def <=>(principal)
     if self.class.name == principal.class.name
       self.to_s.downcase <=> principal.to_s.downcase
--- a/app/models/project.rb	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/models/project.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -412,6 +412,58 @@
   def short_description(length = 255)
     description.gsub(/^(.{#{length}}[^\n\r]*).*$/m, '\1...').strip if description
   end
+
+  def css_classes
+    s = 'project'
+    s << ' root' if root?
+    s << ' child' if child?
+    s << (leaf? ? ' leaf' : ' parent')
+    s
+  end
+
+  # The earliest start date of a project, based on it's issues and versions
+  def start_date
+    if module_enabled?(:issue_tracking)
+      [
+       issues.minimum('start_date'),
+       shared_versions.collect(&:effective_date),
+       shared_versions.collect {|v| v.fixed_issues.minimum('start_date')}
+      ].flatten.compact.min
+    end
+  end
+
+  # The latest due date of an issue or version
+  def due_date
+    if module_enabled?(:issue_tracking)
+      [
+       issues.maximum('due_date'),
+       shared_versions.collect(&:effective_date),
+       shared_versions.collect {|v| v.fixed_issues.maximum('due_date')}
+      ].flatten.compact.max
+    end
+  end
+
+  def overdue?
+    active? && !due_date.nil? && (due_date < Date.today)
+  end
+
+  # Returns the percent completed for this project, based on the
+  # progress on it's versions.
+  def completed_percent(options={:include_subprojects => false})
+    if options.delete(:include_subprojects)
+      total = self_and_descendants.collect(&:completed_percent).sum
+
+      total / self_and_descendants.count
+    else
+      if versions.count > 0
+        total = versions.collect(&:completed_pourcent).sum
+
+        total / versions.count
+      else
+        100
+      end
+    end
+  end
   
   # Return true if this project is allowed to do the specified action.
   # action can be:
@@ -441,6 +493,15 @@
       enabled_modules.clear
     end
   end
+
+  # Returns an array of projects that are in this project's hierarchy
+  #
+  # Example: parents, children, siblings
+  def hierarchy
+    parents = project.self_and_ancestors || []
+    descendants = project.descendants || []
+    project_hierarchy = parents | descendants # Set union
+  end
   
   # Returns an auto-generated project identifier based on the last identifier used
   def self.next_identifier
--- a/app/models/query.rb	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/models/query.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -195,6 +195,12 @@
     end
     @available_filters["assigned_to_id"] = { :type => :list_optional, :order => 4, :values => user_values } unless user_values.empty?
     @available_filters["author_id"] = { :type => :list, :order => 5, :values => user_values } unless user_values.empty?
+
+    group_values = Group.all.collect {|g| [g.name, g.id] }
+    @available_filters["member_of_group"] = { :type => :list_optional, :order => 6, :values => group_values } unless group_values.empty?
+
+    role_values = Role.givable.collect {|r| [r.name, r.id] }
+    @available_filters["assigned_to_role"] = { :type => :list_optional, :order => 7, :values => role_values } unless role_values.empty?
     
     if User.current.logged?
       @available_filters["watcher_id"] = { :type => :list, :order => 15, :values => [["<< #{l(:label_me)} >>", "me"]] }
@@ -432,6 +438,47 @@
         db_field = 'user_id'
         sql << "#{Issue.table_name}.id #{ operator == '=' ? 'IN' : 'NOT IN' } (SELECT #{db_table}.watchable_id FROM #{db_table} WHERE #{db_table}.watchable_type='Issue' AND "
         sql << sql_for_field(field, '=', v, db_table, db_field) + ')'
+      elsif field == "member_of_group" # named field
+        if operator == '*' # Any group
+          groups = Group.all
+          operator = '=' # Override the operator since we want to find by assigned_to
+        elsif operator == "!*"
+          groups = Group.all
+          operator = '!' # Override the operator since we want to find by assigned_to
+        else
+          groups = Group.find_all_by_id(v)
+        end
+        groups ||= []
+
+        members_of_groups = groups.inject([]) {|user_ids, group|
+          if group && group.user_ids.present?
+            user_ids << group.user_ids
+          end
+          user_ids.flatten.uniq.compact
+        }.sort.collect(&:to_s)
+        
+        sql << '(' + sql_for_field("assigned_to_id", operator, members_of_groups, Issue.table_name, "assigned_to_id", false) + ')'
+
+      elsif field == "assigned_to_role" # named field
+        if operator == "*" # Any Role
+          roles = Role.givable
+          operator = '=' # Override the operator since we want to find by assigned_to
+        elsif operator == "!*" # No role
+          roles = Role.givable
+          operator = '!' # Override the operator since we want to find by assigned_to
+        else
+          roles = Role.givable.find_all_by_id(v)
+        end
+        roles ||= []
+        
+        members_of_roles = roles.inject([]) {|user_ids, role|
+          if role && role.members
+            user_ids << role.members.collect(&:user_id)
+          end
+          user_ids.flatten.uniq.compact
+        }.sort.collect(&:to_s)
+        
+        sql << '(' + sql_for_field("assigned_to_id", operator, members_of_roles, Issue.table_name, "assigned_to_id", false) + ')'
       else
         # regular field
         db_table = Issue.table_name
--- a/app/models/repository/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/models/repository/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/app/models/repository
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:44.340095Z
+2010-09-23T14:37:44.487730Z
 b02ecaea01c5990cbde09689be12ec7d
 2010-02-02T17:02:32.020293Z
 3360
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:44.340095Z
+2010-09-23T14:37:44.483732Z
 84591e1c5afa1b74a10954dd521ceb4e
 2008-06-14T15:44:36.838876Z
 1537
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:44.340095Z
+2010-09-24T11:56:52.924049Z
 b3a159a082904eaf5e084eb0ea2a6988
 2010-02-07T15:17:21.677785Z
 3394
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:44.340095Z
+2010-09-24T11:56:52.932091Z
 6ca7d031f8d4d508518892a607462b88
 2010-02-02T17:02:32.020293Z
 3360
@@ -168,7 +168,7 @@
 
 
 
-2010-07-23T14:49:44.340095Z
+2010-09-23T14:37:44.483732Z
 ed75a7df6cfdc54b7059c9bb20c079d3
 2008-06-08T15:40:24.603157Z
 1508
@@ -202,7 +202,7 @@
 
 
 
-2010-07-23T14:49:44.340095Z
+2010-09-23T14:37:44.483732Z
 4bf6afb2a5e03df854a06fb116fc6fd2
 2008-08-26T12:28:15.338708Z
 1768
@@ -236,7 +236,7 @@
 
 
 
-2010-07-23T14:49:44.340095Z
+2010-09-23T14:37:44.483732Z
 75c2836fd6ba92e0aef7a9cfc249ebb7
 2010-02-02T17:02:32.020293Z
 3360
--- a/app/models/time_entry.rb	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/models/time_entry.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -81,4 +81,20 @@
       yield
     end
   end
+
+  def self.earilest_date_for_project(project=nil)
+    finder_conditions = ARCondition.new(Project.allowed_to_condition(User.current, :view_time_entries))
+    if project
+      finder_conditions << ["project_id IN (?)", project.hierarchy.collect(&:id)]
+    end
+    TimeEntry.minimum(:spent_on, :include => :project, :conditions => finder_conditions.conditions)
+  end
+
+  def self.latest_date_for_project(project=nil)
+    finder_conditions = ARCondition.new(Project.allowed_to_condition(User.current, :view_time_entries))
+    if project
+      finder_conditions << ["project_id IN (?)", project.hierarchy.collect(&:id)]
+    end
+    TimeEntry.maximum(:spent_on, :include => :project, :conditions => finder_conditions.conditions)
+  end
 end
--- a/app/models/user.rb	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/models/user.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -352,6 +352,12 @@
       false
     end
   end
+
+  # Is the user allowed to do the specified action on any project?
+  # See allowed_to? for the actions and valid options.
+  def allowed_to_globally?(action, options)
+    allowed_to?(action, nil, options.reverse_merge(:global => true))
+  end
   
   def self.current=(user)
     @current_user = user
--- a/app/models/version.rb	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/models/version.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -73,6 +73,18 @@
   def completed?
     effective_date && (effective_date <= Date.today) && (open_issues_count == 0)
   end
+
+  def behind_schedule?
+    if completed_pourcent == 100
+      return false
+    elsif due_date && fixed_issues.present? && fixed_issues.minimum('start_date') # TODO: should use #start_date but that method is wrong...
+      start_date = fixed_issues.minimum('start_date')
+      done_date = start_date + ((due_date - start_date+1)* completed_pourcent/100).floor
+      return done_date <= Date.today
+    else
+      false # No issues so it's not late
+    end
+  end
   
   # Returns the completion percentage of this version based on the amount of open/closed issues
   # and the time spent on the open issues.
@@ -123,6 +135,10 @@
   end
   
   def to_s; name end
+
+  def to_s_with_project
+    "#{project} - #{name}"
+  end
   
   # Versions are sorted by effective_date and "Project Name - Version name"
   # Those with no effective_date are at the end, sorted by "Project Name - Version name"
--- a/app/sweepers/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/sweepers/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/app/sweepers
 http://redmine.rubyforge.org/svn
 
--- a/app/views/.svn/all-wcprops	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/.svn/all-wcprops	Fri Sep 24 15:51:28 2010 +0100
@@ -1,5 +1,5 @@
 K 25
 svn:wc:ra_dav:version-url
 V 34
-/svn/!svn/ver/4037/trunk/app/views
+/svn/!svn/ver/4172/trunk/app/views
 END
--- a/app/views/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,14 +1,14 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/app/views
 http://redmine.rubyforge.org/svn
 
 
 
-2010-08-24T15:27:12.793586Z
-4037
+2010-09-23T15:20:19.085385Z
+4172
 edavis10
 
 
@@ -71,13 +71,16 @@
 issue_moves
 dir
 
-ldap_auth_sources
+files
+dir
+
+previews
 dir
 
 auth_sources
 dir
 
-previews
+ldap_auth_sources
 dir
 
 search
@@ -86,10 +89,10 @@
 messages
 dir
 
-issue_relations
+versions
 dir
 
-versions
+issue_relations
 dir
 
 mailer
@@ -149,6 +152,9 @@
 wiki
 dir
 
+activities
+dir
+
 enumerations
 dir
 
--- a/app/views/account/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/account/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/app/views/account
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:45.456133Z
+2010-09-23T14:37:44.495777Z
 232ce32581d2f869b81c300244decff5
 2010-01-28T18:54:51.800438Z
 3341
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:45.456133Z
+2010-09-23T14:37:44.495777Z
 cf3d603bbb4825640988086c7871c165
 2007-09-22T13:17:49.935719Z
 747
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:45.456133Z
+2010-09-23T14:37:44.495777Z
 82c6920dc6c95e35b0248de4be82885b
 2009-04-21T13:43:57.529967Z
 2678
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:45.456133Z
+2010-09-23T14:37:44.495777Z
 72b586f183037fcab519bc7575d3b2b5
 2010-03-03T20:21:05.265018Z
 3530
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/app/views/activities/.svn/all-wcprops	Fri Sep 24 15:51:28 2010 +0100
@@ -0,0 +1,11 @@
+K 25
+svn:wc:ra_dav:version-url
+V 45
+/svn/!svn/ver/4047/trunk/app/views/activities
+END
+index.html.erb
+K 25
+svn:wc:ra_dav:version-url
+V 60
+/svn/!svn/ver/4047/trunk/app/views/activities/index.html.erb
+END
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/app/views/activities/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -0,0 +1,62 @@
+10
+
+dir
+4173
+http://redmine.rubyforge.org/svn/trunk/app/views/activities
+http://redmine.rubyforge.org/svn
+
+
+
+2010-08-27T14:05:54.014502Z
+4047
+edavis10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+e93f8b46-1217-0410-a6f0-8f06a7374b81
+
+index.html.erb
+file
+
+
+
+
+2010-09-24T12:48:29.578245Z
+9e6d9091be2c8769f8e262500d974f84
+2010-08-27T14:05:54.014502Z
+4047
+edavis10
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+3266
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/app/views/activities/.svn/prop-base/index.html.erb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -0,0 +1,5 @@
+K 13
+svn:eol-style
+V 6
+native
+END
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/app/views/activities/.svn/text-base/index.html.erb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -0,0 +1,61 @@
+<h2><%= @author.nil? ? l(:label_activity) : l(:label_user_activity, link_to_user(@author)) %></h2>
+<p class="subtitle"><%= l(:label_date_from_to, :start => format_date(@date_to - @days), :end => format_date(@date_to-1)) %></p>
+
+<div id="activity">
+<% @events_by_day.keys.sort.reverse.each do |day| %>
+<h3><%= format_activity_day(day) %></h3>
+<dl>
+<% @events_by_day[day].sort {|x,y| y.event_datetime <=> x.event_datetime }.each do |e| -%>
+  <dt class="<%= e.event_type %>  <%= User.current.logged? && e.respond_to?(:event_author) && User.current == e.event_author ? 'me' : nil %>">
+	<%= avatar(e.event_author, :size => "24") if e.respond_to?(:event_author) %>
+  <span class="time"><%= format_time(e.event_datetime, false) %></span>
+  <%= content_tag('span', h(e.project), :class => 'project') if @project.nil? || @project != e.project %>
+  <%= link_to format_activity_title(e.event_title), e.event_url %></dt>
+  <dd><span class="description"><%= format_activity_description(e.event_description) %></span>
+  <span class="author"><%= e.event_author if e.respond_to?(:event_author) %></span></dd>
+<% end -%>
+</dl>
+<% end -%>
+</div>
+
+<%= content_tag('p', l(:label_no_data), :class => 'nodata') if @events_by_day.empty? %>
+
+<div style="float:left;">
+<%= link_to_remote(('&#171; ' + l(:label_previous)), 
+                   {:update => "content", :url => params.merge(:from => @date_to - @days - 1), :method => :get, :complete => 'window.scrollTo(0,0)'},
+                   {:href => url_for(params.merge(:from => @date_to - @days - 1)),
+                    :title => l(:label_date_from_to, :start => format_date(@date_to - 2*@days), :end => format_date(@date_to - @days - 1))}) %>
+</div>
+<div style="float:right;">
+<%= link_to_remote((l(:label_next) + ' &#187;'), 
+                   {:update => "content", :url => params.merge(:from => @date_to + @days - 1), :method => :get, :complete => 'window.scrollTo(0,0)'},
+                   {:href => url_for(params.merge(:from => @date_to + @days - 1)),
+                    :title => l(:label_date_from_to, :start => format_date(@date_to), :end => format_date(@date_to + @days - 1))}) unless @date_to >= Date.today %>
+</div>
+&nbsp;
+<% other_formats_links do |f| %>
+	<%= f.link_to 'Atom', :url => params.merge(:from => nil, :key => User.current.rss_key) %>
+<% end %>
+
+<% content_for :header_tags do %>
+<%= auto_discovery_link_tag(:atom, params.merge(:format => 'atom', :from => nil, :key => User.current.rss_key)) %>
+<% end %>
+
+<% content_for :sidebar do %>
+<% form_tag({}, :method => :get) do %>
+<h3><%= l(:label_activity) %></h3>
+<p><% @activity.event_types.each do |t| %>
+<%= check_box_tag "show_#{t}", 1, @activity.scope.include?(t) %>
+<%= link_to(l("label_#{t.singularize}_plural"), {"show_#{t}" => 1, :user_id => params[:user_id]})%>
+<br />
+<% end %></p>
+<% if @project && @project.descendants.active.any? %>
+	  <%= hidden_field_tag 'with_subprojects', 0 %>
+    <p><label><%= check_box_tag 'with_subprojects', 1, @with_subprojects %> <%=l(:label_subproject_plural)%></label></p>
+<% end %>
+<%= hidden_field_tag('user_id', params[:user_id]) unless params[:user_id].blank? %>
+<p><%= submit_tag l(:button_apply), :class => 'button-small', :name => nil %></p>
+<% end %>
+<% end %>
+
+<% html_title(l(:label_activity), @author) -%>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/app/views/activities/index.html.erb	Fri Sep 24 15:51:28 2010 +0100
@@ -0,0 +1,61 @@
+<h2><%= @author.nil? ? l(:label_activity) : l(:label_user_activity, link_to_user(@author)) %></h2>
+<p class="subtitle"><%= l(:label_date_from_to, :start => format_date(@date_to - @days), :end => format_date(@date_to-1)) %></p>
+
+<div id="activity">
+<% @events_by_day.keys.sort.reverse.each do |day| %>
+<h3><%= format_activity_day(day) %></h3>
+<dl>
+<% @events_by_day[day].sort {|x,y| y.event_datetime <=> x.event_datetime }.each do |e| -%>
+  <dt class="<%= e.event_type %>  <%= User.current.logged? && e.respond_to?(:event_author) && User.current == e.event_author ? 'me' : nil %>">
+	<%= avatar(e.event_author, :size => "24") if e.respond_to?(:event_author) %>
+  <span class="time"><%= format_time(e.event_datetime, false) %></span>
+  <%= content_tag('span', h(e.project), :class => 'project') if @project.nil? || @project != e.project %>
+  <%= link_to format_activity_title(e.event_title), e.event_url %></dt>
+  <dd><span class="description"><%= format_activity_description(e.event_description) %></span>
+  <span class="author"><%= e.event_author if e.respond_to?(:event_author) %></span></dd>
+<% end -%>
+</dl>
+<% end -%>
+</div>
+
+<%= content_tag('p', l(:label_no_data), :class => 'nodata') if @events_by_day.empty? %>
+
+<div style="float:left;">
+<%= link_to_remote(('&#171; ' + l(:label_previous)), 
+                   {:update => "content", :url => params.merge(:from => @date_to - @days - 1), :method => :get, :complete => 'window.scrollTo(0,0)'},
+                   {:href => url_for(params.merge(:from => @date_to - @days - 1)),
+                    :title => l(:label_date_from_to, :start => format_date(@date_to - 2*@days), :end => format_date(@date_to - @days - 1))}) %>
+</div>
+<div style="float:right;">
+<%= link_to_remote((l(:label_next) + ' &#187;'), 
+                   {:update => "content", :url => params.merge(:from => @date_to + @days - 1), :method => :get, :complete => 'window.scrollTo(0,0)'},
+                   {:href => url_for(params.merge(:from => @date_to + @days - 1)),
+                    :title => l(:label_date_from_to, :start => format_date(@date_to), :end => format_date(@date_to + @days - 1))}) unless @date_to >= Date.today %>
+</div>
+&nbsp;
+<% other_formats_links do |f| %>
+	<%= f.link_to 'Atom', :url => params.merge(:from => nil, :key => User.current.rss_key) %>
+<% end %>
+
+<% content_for :header_tags do %>
+<%= auto_discovery_link_tag(:atom, params.merge(:format => 'atom', :from => nil, :key => User.current.rss_key)) %>
+<% end %>
+
+<% content_for :sidebar do %>
+<% form_tag({}, :method => :get) do %>
+<h3><%= l(:label_activity) %></h3>
+<p><% @activity.event_types.each do |t| %>
+<%= check_box_tag "show_#{t}", 1, @activity.scope.include?(t) %>
+<%= link_to(l("label_#{t.singularize}_plural"), {"show_#{t}" => 1, :user_id => params[:user_id]})%>
+<br />
+<% end %></p>
+<% if @project && @project.descendants.active.any? %>
+	  <%= hidden_field_tag 'with_subprojects', 0 %>
+    <p><label><%= check_box_tag 'with_subprojects', 1, @with_subprojects %> <%=l(:label_subproject_plural)%></label></p>
+<% end %>
+<%= hidden_field_tag('user_id', params[:user_id]) unless params[:user_id].blank? %>
+<p><%= submit_tag l(:button_apply), :class => 'button-small', :name => nil %></p>
+<% end %>
+<% end %>
+
+<% html_title(l(:label_activity), @author) -%>
--- a/app/views/admin/.svn/all-wcprops	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/admin/.svn/all-wcprops	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 40
-/svn/!svn/ver/3924/trunk/app/views/admin
+/svn/!svn/ver/4080/trunk/app/views/admin
 END
 info.rhtml
 K 25
@@ -37,5 +37,5 @@
 K 25
 svn:wc:ra_dav:version-url
 V 55
-/svn/!svn/ver/3924/trunk/app/views/admin/projects.rhtml
+/svn/!svn/ver/4080/trunk/app/views/admin/projects.rhtml
 END
--- a/app/views/admin/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/admin/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,15 +1,15 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/app/views/admin
 http://redmine.rubyforge.org/svn
 
 
 
-2010-08-08T07:07:20.961363Z
-3924
-jbbarth
+2010-09-10T23:07:10.817821Z
+4080
+edavis10
 
 
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:45.296098Z
+2010-09-23T14:37:44.499776Z
 a7b3d0461b8dac7e68d5b758e6b93b45
 2009-12-19T20:33:24.113306Z
 3200
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:45.296098Z
+2010-09-23T14:37:44.503775Z
 aacfd3ff934f52585eba4f460f52df31
 2008-11-16T17:12:02.001794Z
 2041
@@ -100,7 +100,7 @@
 
 
 
-2010-08-25T15:27:56.438939Z
+2010-09-23T14:37:44.499776Z
 a2dcf50c0d70604e64f18cd28f15280b
 2010-08-04T00:38:22.739166Z
 3909
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:45.296098Z
+2010-09-23T14:37:44.499776Z
 8db715728d1f5851c242e085110f2bb6
 2008-01-05T11:33:49.132886Z
 1040
@@ -168,7 +168,7 @@
 
 
 
-2010-07-23T14:49:45.296098Z
+2010-09-23T14:37:44.499776Z
 35378eb3f0e385475e3bd0586f22324a
 2009-12-17T18:21:02.630202Z
 3176
@@ -202,11 +202,11 @@
 
 
 
-2010-08-25T15:27:56.442501Z
-2081d02ddb2f22d04716f9ebfc9c7cdf
-2010-08-08T07:07:20.961363Z
-3924
-jbbarth
+2010-09-24T12:48:28.359820Z
+5ed19629dda93ba07ab4e356099d19c4
+2010-09-10T23:07:10.817821Z
+4080
+edavis10
 has-props
 
 
@@ -228,5 +228,5 @@
 
 
 
-2237
+2198
 
--- a/app/views/admin/.svn/text-base/projects.rhtml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/admin/.svn/text-base/projects.rhtml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -1,5 +1,5 @@
 <div class="contextual">
-<%= link_to l(:label_project_new), {:controller => 'projects', :action => 'add'}, :class => 'icon icon-add' %>
+<%= link_to l(:label_project_new), {:controller => 'projects', :action => 'new'}, :class => 'icon icon-add' %>
 </div>
 
 <h2><%=l(:label_project_plural)%></h2>
@@ -26,7 +26,7 @@
   </tr></thead>
   <tbody>
 <% project_tree(@projects) do |project, level| %>
-  <tr class="<%= cycle("odd", "even") %> <%= css_project_classes(project) %> <%= level > 0 ? "idnt idnt-#{level}" : nil %>">
+  <tr class="<%= cycle("odd", "even") %> <%= project.css_classes %> <%= level > 0 ? "idnt idnt-#{level}" : nil %>">
 	<td class="name"><%= link_to_project(project, :action => 'settings') %></td>
 	<td><%= textilizable project.short_description, :project => project %></td>
 	<td align="center"><%= checked_image project.is_public? %></td>
@@ -35,7 +35,7 @@
     <%= link_to(l(:button_archive), { :controller => 'projects', :action => 'archive', :id => project, :status => params[:status] }, :confirm => l(:text_are_you_sure), :method => :post, :class => 'icon icon-lock') if project.active? %>
     <%= link_to(l(:button_unarchive), { :controller => 'projects', :action => 'unarchive', :id => project, :status => params[:status] }, :method => :post, :class => 'icon icon-unlock') if !project.active? && (project.parent.nil? || project.parent.active?) %>
     <%= link_to(l(:button_copy), { :controller => 'projects', :action => 'copy', :id => project }, :class => 'icon icon-copy') %>
-    <%= link_to(l(:button_delete), { :controller => 'projects', :action => 'destroy', :id => project }, :class => 'icon icon-del') %>
+    <%= link_to(l(:button_delete), project_destroy_confirm_path(project), :class => 'icon icon-del') %>
   </td>
   </tr>
 <% end %>
--- a/app/views/admin/projects.rhtml	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/admin/projects.rhtml	Fri Sep 24 15:51:28 2010 +0100
@@ -1,5 +1,5 @@
 <div class="contextual">
-<%= link_to l(:label_project_new), {:controller => 'projects', :action => 'add'}, :class => 'icon icon-add' %>
+<%= link_to l(:label_project_new), {:controller => 'projects', :action => 'new'}, :class => 'icon icon-add' %>
 </div>
 
 <h2><%=l(:label_project_plural)%></h2>
@@ -26,7 +26,7 @@
   </tr></thead>
   <tbody>
 <% project_tree(@projects) do |project, level| %>
-  <tr class="<%= cycle("odd", "even") %> <%= css_project_classes(project) %> <%= level > 0 ? "idnt idnt-#{level}" : nil %>">
+  <tr class="<%= cycle("odd", "even") %> <%= project.css_classes %> <%= level > 0 ? "idnt idnt-#{level}" : nil %>">
 	<td class="name"><%= link_to_project(project, :action => 'settings') %></td>
 	<td><%= textilizable project.short_description, :project => project %></td>
 	<td align="center"><%= checked_image project.is_public? %></td>
@@ -35,7 +35,7 @@
     <%= link_to(l(:button_archive), { :controller => 'projects', :action => 'archive', :id => project, :status => params[:status] }, :confirm => l(:text_are_you_sure), :method => :post, :class => 'icon icon-lock') if project.active? %>
     <%= link_to(l(:button_unarchive), { :controller => 'projects', :action => 'unarchive', :id => project, :status => params[:status] }, :method => :post, :class => 'icon icon-unlock') if !project.active? && (project.parent.nil? || project.parent.active?) %>
     <%= link_to(l(:button_copy), { :controller => 'projects', :action => 'copy', :id => project }, :class => 'icon icon-copy') %>
-    <%= link_to(l(:button_delete), { :controller => 'projects', :action => 'destroy', :id => project }, :class => 'icon icon-del') %>
+    <%= link_to(l(:button_delete), project_destroy_confirm_path(project), :class => 'icon icon-del') %>
   </td>
   </tr>
 <% end %>
--- a/app/views/attachments/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/attachments/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/app/views/attachments
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:45.172125Z
+2010-09-23T14:37:44.503775Z
 6f5329a1a81f3798a84a26b0261f5000
 2008-12-09T16:54:46.963649Z
 2116
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:45.176152Z
+2010-09-23T14:37:44.507774Z
 b8bc854a91c56c3e3d45390e8ed4bb8d
 2009-04-25T09:35:14.494071Z
 2693
@@ -100,7 +100,7 @@
 
 
 
-2010-07-28T11:07:47.180203Z
+2010-09-23T14:37:44.503775Z
 9cd3f9685ce632814961d9f7e67c4d26
 2010-07-25T10:34:55.569539Z
 3879
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:45.176152Z
+2010-09-23T14:37:44.503775Z
 43e4ae1b5703daa55b37eb438a169304
 2009-04-25T09:35:14.494071Z
 2693
--- a/app/views/auth_sources/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/auth_sources/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/app/views/auth_sources
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:45.120128Z
+2010-09-23T14:37:44.507774Z
 2f1b944eb2979ed37624c653969fa6bf
 2010-02-15T16:41:21.789274Z
 3436
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:45.120128Z
+2010-09-23T14:37:44.507774Z
 6f4f645b6d66417180eaadb0e204a56e
 2007-03-12T17:59:02.654744Z
 333
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:45.120128Z
+2010-09-23T14:37:44.507774Z
 4ea0fc7f46738e3709d552778de7a756
 2010-05-23T03:16:31.304135Z
 3744
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:45.120128Z
+2010-09-23T14:37:44.507774Z
 1cc2f5049536de6e5d6d4e926f96ab38
 2007-03-12T17:59:02.654744Z
 333
--- a/app/views/auto_completes/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/auto_completes/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/app/views/auto_completes
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-08-25T15:27:53.952117Z
+2010-09-23T14:37:44.511773Z
 d325b0677890591680b96985e16a0139
 2010-08-17T15:03:58.074505Z
 3945
--- a/app/views/boards/.svn/all-wcprops	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/boards/.svn/all-wcprops	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 41
-/svn/!svn/ver/3426/trunk/app/views/boards
+/svn/!svn/ver/4047/trunk/app/views/boards
 END
 show.rhtml
 K 25
@@ -25,7 +25,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 53
-/svn/!svn/ver/3179/trunk/app/views/boards/index.rhtml
+/svn/!svn/ver/4047/trunk/app/views/boards/index.rhtml
 END
 new.rhtml
 K 25
--- a/app/views/boards/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/boards/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,15 +1,15 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/app/views/boards
 http://redmine.rubyforge.org/svn
 
 
 
-2010-02-14T11:52:12.027647Z
-3426
-jplang
+2010-08-27T14:05:54.014502Z
+4047
+edavis10
 
 
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:45.168155Z
+2010-09-23T14:37:44.515775Z
 74a37f0fbb3bb635f2c0389a2624988e
 2010-02-14T11:52:12.027647Z
 3426
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:45.168155Z
+2010-09-23T14:37:44.515775Z
 0416740cf4bf599b0da68e597c0cd44c
 2007-05-13T17:09:56.765659Z
 529
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:45.168155Z
+2010-09-23T14:37:44.515775Z
 00f3643ebd3d5af2322b92c885a6eec6
 2007-05-13T17:09:56.765659Z
 529
@@ -134,11 +134,11 @@
 
 
 
-2010-07-23T14:49:45.168155Z
-6596c3dc136a8dda86d432f8e3039bc3
-2009-12-17T18:52:28.593583Z
-3179
-jplang
+2010-09-24T12:48:28.319823Z
+5c323ebf8fea05f556896ed49186773b
+2010-08-27T14:05:54.014502Z
+4047
+edavis10
 has-props
 
 
@@ -160,7 +160,7 @@
 
 
 
-1331
+1329
 
 new.rhtml
 file
@@ -168,7 +168,7 @@
 
 
 
-2010-07-23T14:49:45.172125Z
+2010-09-23T14:37:44.515775Z
 b951b4d73988508c5a42fdb7b7df695c
 2007-05-13T17:09:56.765659Z
 529
--- a/app/views/boards/.svn/text-base/index.rhtml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/boards/.svn/text-base/index.rhtml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -30,11 +30,11 @@
 </table>
 
 <% other_formats_links do |f| %>
-	<%= f.link_to 'Atom', :url => {:controller => 'projects', :action => 'activity', :id => @project, :show_messages => 1, :key => User.current.rss_key} %>
+	<%= f.link_to 'Atom', :url => {:controller => 'activities', :action => 'index', :id => @project, :show_messages => 1, :key => User.current.rss_key} %>
 <% end %>
 
 <% content_for :header_tags do %>
-  <%= auto_discovery_link_tag(:atom, {:controller => 'projects', :action => 'activity', :id => @project, :format => 'atom', :show_messages => 1, :key => User.current.rss_key}) %>
+  <%= auto_discovery_link_tag(:atom, {:controller => 'activities', :action => 'index', :id => @project, :format => 'atom', :show_messages => 1, :key => User.current.rss_key}) %>
 <% end %>
 
 <% html_title l(:label_board_plural) %>
--- a/app/views/boards/index.rhtml	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/boards/index.rhtml	Fri Sep 24 15:51:28 2010 +0100
@@ -30,11 +30,11 @@
 </table>
 
 <% other_formats_links do |f| %>
-	<%= f.link_to 'Atom', :url => {:controller => 'projects', :action => 'activity', :id => @project, :show_messages => 1, :key => User.current.rss_key} %>
+	<%= f.link_to 'Atom', :url => {:controller => 'activities', :action => 'index', :id => @project, :show_messages => 1, :key => User.current.rss_key} %>
 <% end %>
 
 <% content_for :header_tags do %>
-  <%= auto_discovery_link_tag(:atom, {:controller => 'projects', :action => 'activity', :id => @project, :format => 'atom', :show_messages => 1, :key => User.current.rss_key}) %>
+  <%= auto_discovery_link_tag(:atom, {:controller => 'activities', :action => 'index', :id => @project, :format => 'atom', :show_messages => 1, :key => User.current.rss_key}) %>
 <% end %>
 
 <% html_title l(:label_board_plural) %>
--- a/app/views/calendars/.svn/all-wcprops	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/calendars/.svn/all-wcprops	Fri Sep 24 15:51:28 2010 +0100
@@ -1,11 +1,11 @@
 K 25
 svn:wc:ra_dav:version-url
 V 44
-/svn/!svn/ver/3746/trunk/app/views/calendars
+/svn/!svn/ver/4045/trunk/app/views/calendars
 END
 show.html.erb
 K 25
 svn:wc:ra_dav:version-url
 V 58
-/svn/!svn/ver/3746/trunk/app/views/calendars/show.html.erb
+/svn/!svn/ver/4045/trunk/app/views/calendars/show.html.erb
 END
--- a/app/views/calendars/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/calendars/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,14 +1,14 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/app/views/calendars
 http://redmine.rubyforge.org/svn
 
 
 
-2010-05-24T18:07:43.351533Z
-3746
+2010-08-26T16:37:21.560510Z
+4045
 edavis10
 
 
@@ -32,10 +32,10 @@
 
 
 
-2010-07-23T14:49:45.456133Z
-b5bed50058708c361eda9dc5d2f83e7b
-2010-05-24T18:07:43.351533Z
-3746
+2010-09-24T12:48:28.963902Z
+a8b2469aff09bc51d836f40717281a44
+2010-08-26T16:37:21.560510Z
+4045
 edavis10
 has-props
 
@@ -58,5 +58,5 @@
 
 
 
-2478
+1880
 
--- a/app/views/calendars/.svn/text-base/show.html.erb.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/calendars/.svn/text-base/show.html.erb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -1,6 +1,7 @@
 <h2><%= l(:label_calendar) %></h2>
 
-<% form_tag({}, :id => 'query_form') do %>
+<% form_tag(calendar_path, :method => :put, :id => 'query_form') do %>
+  <%= hidden_field_tag('project_id', @project.to_param) if @project%>
 <fieldset id="filters" class="collapsible">
   <legend onclick="toggleFieldset(this);"><%= l(:label_filter_plural) %></legend>
   <div>
@@ -9,14 +10,7 @@
 </fieldset>
 
 <p style="float:right;">
-<%= link_to_remote ('&#171; ' + (@month==1 ? "#{month_name(12)} #{@year-1}" : "#{month_name(@month-1)}")), 
-                        {:update => "content", :url => { :year => (@month==1 ? @year-1 : @year), :month =>(@month==1 ? 12 : @month-1) }},
-                        {:href => url_for(:action => 'show', :year => (@month==1 ? @year-1 : @year), :month =>(@month==1 ? 12 : @month-1))}
-                        %> |
-<%= link_to_remote ((@month==12 ? "#{month_name(1)} #{@year+1}" : "#{month_name(@month+1)}") + ' &#187;'), 
-                        {:update => "content", :url => { :year => (@month==12 ? @year+1 : @year), :month =>(@month==12 ? 1 : @month+1) }},
-                        {:href => url_for(:action => 'show', :year => (@month==12 ? @year+1 : @year), :month =>(@month==12 ? 1 : @month+1))}
-                        %>
+  <%= link_to_previous_month(@year, @month, :project => @project) %> | <%= link_to_next_month(@year, @month, :project => @project) %>
 </p>
 
 <p class="buttons">
--- a/app/views/calendars/show.html.erb	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/calendars/show.html.erb	Fri Sep 24 15:51:28 2010 +0100
@@ -1,6 +1,7 @@
 <h2><%= l(:label_calendar) %></h2>
 
-<% form_tag({}, :id => 'query_form') do %>
+<% form_tag(calendar_path, :method => :put, :id => 'query_form') do %>
+  <%= hidden_field_tag('project_id', @project.to_param) if @project%>
 <fieldset id="filters" class="collapsible">
   <legend onclick="toggleFieldset(this);"><%= l(:label_filter_plural) %></legend>
   <div>
@@ -9,14 +10,7 @@
 </fieldset>
 
 <p style="float:right;">
-<%= link_to_remote ('&#171; ' + (@month==1 ? "#{month_name(12)} #{@year-1}" : "#{month_name(@month-1)}")), 
-                        {:update => "content", :url => { :year => (@month==1 ? @year-1 : @year), :month =>(@month==1 ? 12 : @month-1) }},
-                        {:href => url_for(:action => 'show', :year => (@month==1 ? @year-1 : @year), :month =>(@month==1 ? 12 : @month-1))}
-                        %> |
-<%= link_to_remote ((@month==12 ? "#{month_name(1)} #{@year+1}" : "#{month_name(@month+1)}") + ' &#187;'), 
-                        {:update => "content", :url => { :year => (@month==12 ? @year+1 : @year), :month =>(@month==12 ? 1 : @month+1) }},
-                        {:href => url_for(:action => 'show', :year => (@month==12 ? @year+1 : @year), :month =>(@month==12 ? 1 : @month+1))}
-                        %>
+  <%= link_to_previous_month(@year, @month, :project => @project) %> | <%= link_to_next_month(@year, @month, :project => @project) %>
 </p>
 
 <p class="buttons">
--- a/app/views/common/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/common/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/app/views/common
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:45.288130Z
+2010-09-23T14:37:44.523788Z
 f95c4268a6ac374ab617da665e57a3ad
 2010-03-14T13:22:50.317701Z
 3585
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:45.288130Z
+2010-09-23T14:37:44.523788Z
 e2b0309f637e9a49ef39f8401f3190c5
 2009-05-26T08:28:36.964305Z
 2768
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:45.288130Z
+2010-09-23T14:37:44.523788Z
 d03b1c3719bd49af7d930d210a8e8328
 2008-07-26T12:54:54.604420Z
 1699
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:45.292095Z
+2010-09-23T14:37:44.523788Z
 6d702bd53ba3e3fb3b1849b20ea05932
 2008-01-02T22:41:53.166620Z
 1032
@@ -168,7 +168,7 @@
 
 
 
-2010-07-23T14:49:45.292095Z
+2010-09-23T14:37:44.523788Z
 c6f0413a62e887c7638111e882e33d20
 2008-01-02T22:41:53.166620Z
 1032
@@ -202,7 +202,7 @@
 
 
 
-2010-07-23T14:49:45.292095Z
+2010-09-23T14:37:44.523788Z
 a03541085a4ee595977cbf760d20bf19
 2010-03-14T13:22:50.317701Z
 3585
@@ -236,7 +236,7 @@
 
 
 
-2010-07-23T14:49:45.292095Z
+2010-09-23T14:37:44.523788Z
 18b2d631fabd5720aa07d369da11d0de
 2010-06-19T22:52:15.523619Z
 3790
@@ -270,7 +270,7 @@
 
 
 
-2010-07-23T14:49:45.292095Z
+2010-09-23T14:37:44.523788Z
 6e7716818f87ed1ad9839c6e9a92ed1b
 2009-12-14T20:13:29.438642Z
 3174
--- a/app/views/context_menus/.svn/all-wcprops	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/context_menus/.svn/all-wcprops	Fri Sep 24 15:51:28 2010 +0100
@@ -1,11 +1,11 @@
 K 25
 svn:wc:ra_dav:version-url
 V 48
-/svn/!svn/ver/4006/trunk/app/views/context_menus
+/svn/!svn/ver/4059/trunk/app/views/context_menus
 END
 issues.html.erb
 K 25
 svn:wc:ra_dav:version-url
 V 64
-/svn/!svn/ver/4006/trunk/app/views/context_menus/issues.html.erb
+/svn/!svn/ver/4059/trunk/app/views/context_menus/issues.html.erb
 END
--- a/app/views/context_menus/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/context_menus/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,15 +1,15 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/app/views/context_menus
 http://redmine.rubyforge.org/svn
 
 
 
-2010-08-19T18:16:54.064576Z
-4006
-edavis10
+2010-09-03T21:43:07.906158Z
+4059
+jbbarth
 
 
 
@@ -32,11 +32,11 @@
 
 
 
-2010-08-25T15:27:54.520556Z
-f4e19aafbbd18ea944b564c43a4dfcd3
-2010-08-19T18:16:54.064576Z
-4006
-edavis10
+2010-09-24T12:48:26.291820Z
+8cf639a9f676637f0825ccf06013495c
+2010-09-03T21:43:07.906158Z
+4059
+jbbarth
 has-props
 
 
@@ -58,5 +58,5 @@
 
 
 
-6556
+6709
 
--- a/app/views/context_menus/.svn/text-base/issues.html.erb.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/context_menus/.svn/text-base/issues.html.erb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -4,19 +4,22 @@
 <% if !@issue.nil? -%>
 	<li><%= context_menu_link l(:button_edit), {:controller => 'issues', :action => 'edit', :id => @issue},
 	        :class => 'icon-edit', :disabled => !@can[:edit] %></li>
+<% else %>
+	<li><%= context_menu_link l(:button_edit), {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id)},
+	        :class => 'icon-edit', :disabled => !@can[:edit] %></li>
+<% end %>
+
+  <% unless @allowed_statuses.empty? %>
 	<li class="folder">			
 		<a href="#" class="submenu" onclick="return false;"><%= l(:field_status) %></a>
 		<ul>
 		<% @statuses.each do |s| -%>
-		    <li><%= context_menu_link s.name, {:controller => 'issues', :action => 'update', :id => @issue, :issue => {:status_id => s}, :back_url => @back}, :method => :put,
-		                              :selected => (s == @issue.status), :disabled => !(@can[:update] && @allowed_statuses.include?(s)) %></li>
+		    <li><%= context_menu_link s.name, {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id), :issue => {:status_id => s}, :back_url => @back}, :method => :post,
+		                              :selected => (@issue && s == @issue.status), :disabled => !(@can[:update] && @allowed_statuses.include?(s)) %></li>
 		<% end -%>
 		</ul>
 	</li>
-<% else %>
-	<li><%= context_menu_link l(:button_edit), {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id)},
-	        :class => 'icon-edit', :disabled => !@can[:edit] %></li>
-<% end %>
+  <% end %>
 
 	<% unless @trackers.nil? %>
 	<li class="folder">			
@@ -29,6 +32,8 @@
 		</ul>
 	</li>
 	<% end %>
+
+  <% if @projects.size == 1 %>
 	<li class="folder">			
 		<a href="#" class="submenu"><%= l(:field_priority) %></a>
 		<ul>
@@ -38,6 +43,8 @@
 		<% end -%>
 		</ul>
 	</li>
+  <% end %>
+
 	<% unless @project.nil? || @project.shared_versions.open.empty? -%>
 	<li class="folder">			
 		<a href="#" class="submenu"><%= l(:field_fixed_version) %></a>
@@ -77,7 +84,8 @@
 		</ul>
 	</li>
 	<% end -%>
-  <% if Issue.use_field_for_done_ratio? %>
+
+  <% if Issue.use_field_for_done_ratio? && @projects.size == 1 %>
 	<li class="folder">
 		<a href="#" class="submenu"><%= l(:field_done_ratio) %></a>
 		<ul>
@@ -88,6 +96,7 @@
 		</ul>
 	</li>
   <% end %>
+
 <% if !@issue.nil? %>
 	<% if @can[:log_time] -%>
 	<li><%= context_menu_link l(:button_log_time), {:controller => 'timelog', :action => 'edit', :issue_id => @issue},
--- a/app/views/context_menus/issues.html.erb	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/context_menus/issues.html.erb	Fri Sep 24 15:51:28 2010 +0100
@@ -4,19 +4,22 @@
 <% if !@issue.nil? -%>
 	<li><%= context_menu_link l(:button_edit), {:controller => 'issues', :action => 'edit', :id => @issue},
 	        :class => 'icon-edit', :disabled => !@can[:edit] %></li>
+<% else %>
+	<li><%= context_menu_link l(:button_edit), {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id)},
+	        :class => 'icon-edit', :disabled => !@can[:edit] %></li>
+<% end %>
+
+  <% unless @allowed_statuses.empty? %>
 	<li class="folder">			
 		<a href="#" class="submenu" onclick="return false;"><%= l(:field_status) %></a>
 		<ul>
 		<% @statuses.each do |s| -%>
-		    <li><%= context_menu_link s.name, {:controller => 'issues', :action => 'update', :id => @issue, :issue => {:status_id => s}, :back_url => @back}, :method => :put,
-		                              :selected => (s == @issue.status), :disabled => !(@can[:update] && @allowed_statuses.include?(s)) %></li>
+		    <li><%= context_menu_link s.name, {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id), :issue => {:status_id => s}, :back_url => @back}, :method => :post,
+		                              :selected => (@issue && s == @issue.status), :disabled => !(@can[:update] && @allowed_statuses.include?(s)) %></li>
 		<% end -%>
 		</ul>
 	</li>
-<% else %>
-	<li><%= context_menu_link l(:button_edit), {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id)},
-	        :class => 'icon-edit', :disabled => !@can[:edit] %></li>
-<% end %>
+  <% end %>
 
 	<% unless @trackers.nil? %>
 	<li class="folder">			
@@ -29,6 +32,8 @@
 		</ul>
 	</li>
 	<% end %>
+
+  <% if @projects.size == 1 %>
 	<li class="folder">			
 		<a href="#" class="submenu"><%= l(:field_priority) %></a>
 		<ul>
@@ -38,6 +43,8 @@
 		<% end -%>
 		</ul>
 	</li>
+  <% end %>
+
 	<% unless @project.nil? || @project.shared_versions.open.empty? -%>
 	<li class="folder">			
 		<a href="#" class="submenu"><%= l(:field_fixed_version) %></a>
@@ -77,7 +84,8 @@
 		</ul>
 	</li>
 	<% end -%>
-  <% if Issue.use_field_for_done_ratio? %>
+
+  <% if Issue.use_field_for_done_ratio? && @projects.size == 1 %>
 	<li class="folder">
 		<a href="#" class="submenu"><%= l(:field_done_ratio) %></a>
 		<ul>
@@ -88,6 +96,7 @@
 		</ul>
 	</li>
   <% end %>
+
 <% if !@issue.nil? %>
 	<% if @can[:log_time] -%>
 	<li><%= context_menu_link l(:button_log_time), {:controller => 'timelog', :action => 'edit', :issue_id => @issue},
--- a/app/views/custom_fields/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/custom_fields/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/app/views/custom_fields
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:44.940127Z
+2010-09-23T14:37:44.527783Z
 4a422eb0f307906a5015134deef6e66a
 2010-02-28T10:55:24.417498Z
 3510
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:44.940127Z
+2010-09-23T14:37:44.527783Z
 0c149f63c965988c70ecf48bde3222b3
 2009-12-09T10:49:58.529326Z
 3144
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:44.944095Z
+2010-09-23T14:37:44.527783Z
 3372a4aeafa9f940744f07c4ce8ca434
 2010-04-16T15:33:49.924704Z
 3672
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:44.944095Z
+2010-09-23T14:37:44.527783Z
 6441c559d374310cabfc9649eb5b3617
 2009-09-12T09:13:13.676884Z
 2871
@@ -168,7 +168,7 @@
 
 
 
-2010-07-23T14:49:44.944095Z
+2010-09-23T14:37:44.527783Z
 7658107f6af4536cedfc075202ad3f7c
 2009-12-09T10:49:58.529326Z
 3144
--- a/app/views/documents/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/documents/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/app/views/documents
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:45.468128Z
+2010-09-23T14:37:44.531783Z
 755690362ea0b5f92a82326872d3b0ea
 2010-03-18T20:02:17.358992Z
 3602
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:45.468128Z
+2010-09-23T14:37:44.535729Z
 a7c10b428fb4d74827a6ffdcc3651a25
 2010-03-18T20:06:16.936785Z
 3603
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:45.472128Z
+2010-09-23T14:37:44.535729Z
 9d05f76602471c3dc339d8c54d2f4abc
 2009-05-30T23:30:36.923541Z
 2777
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:45.472128Z
+2010-09-23T14:37:44.535729Z
 41a0e984e939e8fad03f2be67b33a4fc
 2007-03-12T17:59:02.654744Z
 333
@@ -168,7 +168,7 @@
 
 
 
-2010-07-23T14:49:45.472128Z
+2010-09-23T14:37:44.535729Z
 cf8b8406d31262625c1f2ab2b66020b2
 2009-01-22T16:34:54.303755Z
 2295
@@ -202,7 +202,7 @@
 
 
 
-2010-07-23T14:49:45.472128Z
+2010-09-23T14:37:44.535729Z
 60e54f2c42af4454d69bfc812bbf55ca
 2008-02-29T19:46:58.834023Z
 1180
--- a/app/views/enumerations/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/enumerations/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/app/views/enumerations
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:45.488155Z
+2010-09-23T14:37:44.539728Z
 b4f45f24d2fb9546e609fd3299912be6
 2010-05-09T11:19:15.980195Z
 3734
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:45.488155Z
+2010-09-23T14:37:44.539728Z
 0a47386b406e4f425fe541d12c780467
 2009-10-21T22:34:28.905707Z
 2946
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:45.488155Z
+2010-09-23T14:37:44.539728Z
 668687299206262ccf34ac3a44f57c33
 2009-07-05T12:22:02.133266Z
 2810
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:45.488155Z
+2010-09-23T14:37:44.539728Z
 b9c8a97c172197a30cbb6c08000a9fa7
 2008-06-17T19:10:54.015252Z
 1558
@@ -168,7 +168,7 @@
 
 
 
-2010-07-23T14:49:45.488155Z
+2010-09-23T14:37:44.539728Z
 e6eaade1aac54267080f56f5a09d3fd1
 2009-07-05T12:22:02.133266Z
 2810
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/app/views/files/.svn/all-wcprops	Fri Sep 24 15:51:28 2010 +0100
@@ -0,0 +1,17 @@
+K 25
+svn:wc:ra_dav:version-url
+V 40
+/svn/!svn/ver/4085/trunk/app/views/files
+END
+index.html.erb
+K 25
+svn:wc:ra_dav:version-url
+V 55
+/svn/!svn/ver/4085/trunk/app/views/files/index.html.erb
+END
+new.html.erb
+K 25
+svn:wc:ra_dav:version-url
+V 53
+/svn/!svn/ver/4085/trunk/app/views/files/new.html.erb
+END
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/app/views/files/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -0,0 +1,96 @@
+10
+
+dir
+4173
+http://redmine.rubyforge.org/svn/trunk/app/views/files
+http://redmine.rubyforge.org/svn
+
+
+
+2010-09-14T16:24:07.840869Z
+4085
+edavis10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+e93f8b46-1217-0410-a6f0-8f06a7374b81
+
+index.html.erb
+file
+
+
+
+
+2010-09-24T12:48:27.722352Z
+178f4ae5a5527ba5ab517e9e5685d670
+2010-09-14T16:24:07.840869Z
+4085
+edavis10
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1838
+
+new.html.erb
+file
+
+
+
+
+2010-09-24T12:48:27.722352Z
+7cd15d28fd27afa1f10b921c8b35cd7a
+2010-09-14T16:24:07.840869Z
+4085
+edavis10
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+569
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/app/views/files/.svn/prop-base/index.html.erb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -0,0 +1,5 @@
+K 13
+svn:eol-style
+V 6
+native
+END
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/app/views/files/.svn/prop-base/new.html.erb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -0,0 +1,5 @@
+K 13
+svn:eol-style
+V 6
+native
+END
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/app/views/files/.svn/text-base/index.html.erb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -0,0 +1,46 @@
+<div class="contextual">
+<%= link_to_if_authorized l(:label_attachment_new), new_project_file_path(@project), :class => 'icon icon-add' %>
+</div>
+
+<h2><%=l(:label_attachment_plural)%></h2>
+
+<% delete_allowed = User.current.allowed_to?(:manage_files, @project) %>
+
+<table class="list files">
+  <thead><tr>
+    <%= sort_header_tag('filename', :caption => l(:field_filename)) %>
+    <%= sort_header_tag('created_on', :caption => l(:label_date), :default_order => 'desc') %>
+    <%= sort_header_tag('size', :caption => l(:field_filesize), :default_order => 'desc') %>
+    <%= sort_header_tag('downloads', :caption => l(:label_downloads_abbr), :default_order => 'desc') %>
+    <th>MD5</th>
+    <th></th>
+  </tr></thead>
+  <tbody>
+<% @containers.each do |container| %>	
+  <% next if container.attachments.empty? -%>
+	<% if container.is_a?(Version) -%>
+  <tr>
+  	<th colspan="6" align="left">
+  		<%= link_to(h(container), {:controller => 'versions', :action => 'show', :id => container}, :class => "icon icon-package") %>
+		</th>
+	</tr>
+	<% end -%>
+  <% container.attachments.each do |file| %>		
+  <tr class="file <%= cycle("odd", "even") %>">
+    <td class="filename"><%= link_to_attachment file, :download => true, :title => file.description %></td>
+    <td class="created_on"><%= format_time(file.created_on) %></td>
+    <td class="filesize"><%= number_to_human_size(file.filesize) %></td>
+    <td class="downloads"><%= file.downloads %></td>
+    <td class="digest"><%= file.digest %></td>
+    <td align="center">
+    <%= link_to(image_tag('delete.png'), {:controller => 'attachments', :action => 'destroy', :id => file},
+																				 :confirm => l(:text_are_you_sure), :method => :post) if delete_allowed %>
+    </td>
+  </tr>		
+  <% end
+  reset_cycle %>
+<% end %>
+  </tbody>
+</table>
+
+<% html_title(l(:label_attachment_plural)) -%>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/app/views/files/.svn/text-base/new.html.erb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -0,0 +1,16 @@
+<h2><%=l(:label_attachment_new)%></h2>
+
+<%= error_messages_for 'attachment' %>
+<div class="box">
+<% form_tag(project_files_path(@project), :multipart => true, :class => "tabular") do %>
+
+<% if @versions.any? %>
+<p><label for="version_id"><%=l(:field_version)%></label>
+<%= select_tag "version_id", content_tag('option', '') +
+														 options_from_collection_for_select(@versions, "id", "name") %></p>
+<% end %>
+
+<p><label><%=l(:label_attachment_plural)%></label><%= render :partial => 'attachments/form' %></p>
+</div>
+<%= submit_tag l(:button_add) %>
+<% end %> 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/app/views/files/index.html.erb	Fri Sep 24 15:51:28 2010 +0100
@@ -0,0 +1,46 @@
+<div class="contextual">
+<%= link_to_if_authorized l(:label_attachment_new), new_project_file_path(@project), :class => 'icon icon-add' %>
+</div>
+
+<h2><%=l(:label_attachment_plural)%></h2>
+
+<% delete_allowed = User.current.allowed_to?(:manage_files, @project) %>
+
+<table class="list files">
+  <thead><tr>
+    <%= sort_header_tag('filename', :caption => l(:field_filename)) %>
+    <%= sort_header_tag('created_on', :caption => l(:label_date), :default_order => 'desc') %>
+    <%= sort_header_tag('size', :caption => l(:field_filesize), :default_order => 'desc') %>
+    <%= sort_header_tag('downloads', :caption => l(:label_downloads_abbr), :default_order => 'desc') %>
+    <th>MD5</th>
+    <th></th>
+  </tr></thead>
+  <tbody>
+<% @containers.each do |container| %>	
+  <% next if container.attachments.empty? -%>
+	<% if container.is_a?(Version) -%>
+  <tr>
+  	<th colspan="6" align="left">
+  		<%= link_to(h(container), {:controller => 'versions', :action => 'show', :id => container}, :class => "icon icon-package") %>
+		</th>
+	</tr>
+	<% end -%>
+  <% container.attachments.each do |file| %>		
+  <tr class="file <%= cycle("odd", "even") %>">
+    <td class="filename"><%= link_to_attachment file, :download => true, :title => file.description %></td>
+    <td class="created_on"><%= format_time(file.created_on) %></td>
+    <td class="filesize"><%= number_to_human_size(file.filesize) %></td>
+    <td class="downloads"><%= file.downloads %></td>
+    <td class="digest"><%= file.digest %></td>
+    <td align="center">
+    <%= link_to(image_tag('delete.png'), {:controller => 'attachments', :action => 'destroy', :id => file},
+																				 :confirm => l(:text_are_you_sure), :method => :post) if delete_allowed %>
+    </td>
+  </tr>		
+  <% end
+  reset_cycle %>
+<% end %>
+  </tbody>
+</table>
+
+<% html_title(l(:label_attachment_plural)) -%>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/app/views/files/new.html.erb	Fri Sep 24 15:51:28 2010 +0100
@@ -0,0 +1,16 @@
+<h2><%=l(:label_attachment_new)%></h2>
+
+<%= error_messages_for 'attachment' %>
+<div class="box">
+<% form_tag(project_files_path(@project), :multipart => true, :class => "tabular") do %>
+
+<% if @versions.any? %>
+<p><label for="version_id"><%=l(:field_version)%></label>
+<%= select_tag "version_id", content_tag('option', '') +
+														 options_from_collection_for_select(@versions, "id", "name") %></p>
+<% end %>
+
+<p><label><%=l(:label_attachment_plural)%></label><%= render :partial => 'attachments/form' %></p>
+</div>
+<%= submit_tag l(:button_add) %>
+<% end %> 
--- a/app/views/gantts/.svn/all-wcprops	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/gantts/.svn/all-wcprops	Fri Sep 24 15:51:28 2010 +0100
@@ -1,11 +1,11 @@
 K 25
 svn:wc:ra_dav:version-url
 V 41
-/svn/!svn/ver/3756/trunk/app/views/gantts
+/svn/!svn/ver/4074/trunk/app/views/gantts
 END
 show.html.erb
 K 25
 svn:wc:ra_dav:version-url
 V 55
-/svn/!svn/ver/3756/trunk/app/views/gantts/show.html.erb
+/svn/!svn/ver/4074/trunk/app/views/gantts/show.html.erb
 END
--- a/app/views/gantts/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/gantts/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,14 +1,14 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/app/views/gantts
 http://redmine.rubyforge.org/svn
 
 
 
-2010-05-26T22:48:17.752417Z
-3756
+2010-09-10T03:09:18.467829Z
+4074
 edavis10
 
 
@@ -32,10 +32,10 @@
 
 
 
-2010-07-23T14:49:45.464127Z
-d4db03388bce62e75af82eb31d3d3575
-2010-05-26T22:48:17.752417Z
-3756
+2010-09-24T12:48:28.971835Z
+821f1ef595aacb4d32e9a449742c4d67
+2010-09-10T03:09:18.467829Z
+4074
 edavis10
 has-props
 
@@ -58,5 +58,5 @@
 
 
 
-8416
+6152
 
--- a/app/views/gantts/.svn/text-base/show.html.erb.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/gantts/.svn/text-base/show.html.erb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -1,6 +1,8 @@
+<% @gantt.view = self %>
 <h2><%= l(:label_gantt) %></h2>
 
-<% form_tag(params.merge(:month => nil, :year => nil, :months => nil), :id => 'query_form') do %>
+<% form_tag(gantt_path(:month => params[:month], :year => params[:year], :months => params[:months]), :method => :put, :id => 'query_form') do %>
+  <%= hidden_field_tag('project_id', @project.to_param) if @project%>
 <fieldset id="filters" class="collapsible">
   <legend onclick="toggleFieldset(this);"><%= l(:label_filter_plural) %></legend>
 	<div>
@@ -54,11 +56,12 @@
     end
 end
 
+# Width of the entire chart    
 g_width = (@gantt.date_to - @gantt.date_from + 1)*zoom
-g_height = [(20 * @gantt.events.length + 6)+150, 206].max
+# Collect the number of issues on Versions
+g_height = [(20 * (@gantt.number_of_rows + 6))+150, 206].max
 t_height = g_height + headers_height
 %>
-
 <table width="100%" style="border:0; border-collapse: collapse;">
 <tr>
 <td style="width:<%= subject_width %>px; padding:0px;">
@@ -66,26 +69,10 @@
 <div style="position:relative;height:<%= t_height + 24 %>px;width:<%= subject_width + 1 %>px;">
 <div style="right:-2px;width:<%= subject_width %>px;height:<%= headers_height %>px;background: #eee;" class="gantt_hdr"></div>
 <div style="right:-2px;width:<%= subject_width %>px;height:<%= t_height %>px;border-left: 1px solid #c0c0c0;overflow:hidden;" class="gantt_hdr"></div>
-<%
-#
-# Tasks subjects
-#
-top = headers_height + 8
-@gantt.events.each do |i|
-left = 4 + (i.is_a?(Issue) ? i.level * 16 : 0)
- %>
-    <div style="position: absolute;line-height:1.2em;height:16px;top:<%= top %>px;left:<%= left %>px;overflow:hidden;"><small>    
-    <% if i.is_a? Issue %>
-      	<%= h("#{i.project} -") unless @project && @project == i.project %>
-      	<%= link_to_issue i %>
-  	<% else %>
-		<span class="icon icon-package">
-	      	<%= link_to_version i %>
-		</span>
-  	<% end %>  	
-  	</small></div>
-    <% top = top + 20
-end %>
+<% top = headers_height + 8 %>
+
+<%= @gantt.subjects(:headers_height => headers_height, :top => top, :g_width => g_width) %>
+
 </div>
 </td>
 <td>
@@ -163,53 +150,9 @@
 	end
 end %>
 
-<%
-#
-# Tasks
-#
-top = headers_height + 10
-@gantt.events.each do |i| 
-  if i.is_a? Issue 
-	i_start_date = (i.start_date >= @gantt.date_from ? i.start_date : @gantt.date_from )
-	i_end_date = (i.due_before <= @gantt.date_to ? i.due_before : @gantt.date_to )
-	
-	i_done_date = i.start_date + ((i.due_before - i.start_date+1)*i.done_ratio/100).floor
-	i_done_date = (i_done_date <= @gantt.date_from ? @gantt.date_from : i_done_date )
-	i_done_date = (i_done_date >= @gantt.date_to ? @gantt.date_to : i_done_date )
-	
-	i_late_date = [i_end_date, Date.today].min if i_start_date < Date.today
-	
-	i_left = ((i_start_date - @gantt.date_from)*zoom).floor 	
-	i_width = ((i_end_date - i_start_date + 1)*zoom).floor - 2                  # total width of the issue (- 2 for left and right borders)
-	d_width = ((i_done_date - i_start_date)*zoom).floor - 2                     # done width
-	l_width = i_late_date ? ((i_late_date - i_start_date+1)*zoom).floor - 2 : 0 # delay width
-  css = "task " + (i.leaf? ? 'leaf' : 'parent')
-	%>
-	<div style="top:<%= top %>px;left:<%= i_left %>px;width:<%= i_width %>px;" class="<%= css %> task_todo"><div class="left"></div>&nbsp;<div class="right"></div></div>
-	<% if l_width > 0 %>
-	    <div style="top:<%= top %>px;left:<%= i_left %>px;width:<%= l_width %>px;" class="<%= css %> task_late">&nbsp;</div>
-	<% end %>
-	<% if d_width > 0 %>
-	    <div style="top:<%= top %>px;left:<%= i_left %>px;width:<%= d_width %>px;" class="<%= css %> task_done">&nbsp;</div>
-	<% end %>
-	<div style="top:<%= top %>px;left:<%= i_left + i_width + 8 %>px;background:#fff;" class="<%= css %>">
-	<%= i.status.name %>
-	<%= (i.done_ratio).to_i %>%
-	</div>
-	<div class="tooltip" style="position: absolute;top:<%= top %>px;left:<%= i_left %>px;width:<%= i_width %>px;height:12px;">
-	<span class="tip">
-    <%= render_issue_tooltip i %>
-	</span></div>
-<% else 
-    i_left = ((i.start_date - @gantt.date_from)*zoom).floor
-    %>
-    <div style="top:<%= top %>px;left:<%= i_left %>px;width:15px;" class="task milestone">&nbsp;</div>
-	<div style="top:<%= top %>px;left:<%= i_left + 12 %>px;background:#fff;" class="task">
-		<strong><%= format_version_name i %></strong>
-	</div>
-<% end %>
-	<% top = top + 20
-end %>
+<% top = headers_height + 10 %>
+
+<%= @gantt.lines(:top => top, :zoom => zoom, :g_width => g_width ) %>
 
 <%
 #
@@ -226,8 +169,8 @@
 
 <table width="100%">
 <tr>
-<td align="left"><%= link_to_remote ('&#171; ' + l(:label_previous)), {:url => @gantt.params_previous, :update => 'content', :complete => 'window.scrollTo(0,0)'}, {:href => url_for(@gantt.params_previous)} %></td>
-<td align="right"><%= link_to_remote (l(:label_next) + ' &#187;'), {:url => @gantt.params_next, :update => 'content', :complete => 'window.scrollTo(0,0)'}, {:href => url_for(@gantt.params_next)} %></td>
+<td align="left"><%= link_to_remote ('&#171; ' + l(:label_previous)), {:url => @gantt.params_previous, :method => :get, :update => 'content', :complete => 'window.scrollTo(0,0)'}, {:href => url_for(@gantt.params_previous)} %></td>
+<td align="right"><%= link_to_remote (l(:label_next) + ' &#187;'), {:url => @gantt.params_next, :method => :get, :update => 'content', :complete => 'window.scrollTo(0,0)'}, {:href => url_for(@gantt.params_next)} %></td>
 </tr>
 </table>
 
--- a/app/views/gantts/show.html.erb	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/gantts/show.html.erb	Fri Sep 24 15:51:28 2010 +0100
@@ -1,6 +1,8 @@
+<% @gantt.view = self %>
 <h2><%= l(:label_gantt) %></h2>
 
-<% form_tag(params.merge(:month => nil, :year => nil, :months => nil), :id => 'query_form') do %>
+<% form_tag(gantt_path(:month => params[:month], :year => params[:year], :months => params[:months]), :method => :put, :id => 'query_form') do %>
+  <%= hidden_field_tag('project_id', @project.to_param) if @project%>
 <fieldset id="filters" class="collapsible">
   <legend onclick="toggleFieldset(this);"><%= l(:label_filter_plural) %></legend>
 	<div>
@@ -54,11 +56,12 @@
     end
 end
 
+# Width of the entire chart    
 g_width = (@gantt.date_to - @gantt.date_from + 1)*zoom
-g_height = [(20 * @gantt.events.length + 6)+150, 206].max
+# Collect the number of issues on Versions
+g_height = [(20 * (@gantt.number_of_rows + 6))+150, 206].max
 t_height = g_height + headers_height
 %>
-
 <table width="100%" style="border:0; border-collapse: collapse;">
 <tr>
 <td style="width:<%= subject_width %>px; padding:0px;">
@@ -66,26 +69,10 @@
 <div style="position:relative;height:<%= t_height + 24 %>px;width:<%= subject_width + 1 %>px;">
 <div style="right:-2px;width:<%= subject_width %>px;height:<%= headers_height %>px;background: #eee;" class="gantt_hdr"></div>
 <div style="right:-2px;width:<%= subject_width %>px;height:<%= t_height %>px;border-left: 1px solid #c0c0c0;overflow:hidden;" class="gantt_hdr"></div>
-<%
-#
-# Tasks subjects
-#
-top = headers_height + 8
-@gantt.events.each do |i|
-left = 4 + (i.is_a?(Issue) ? i.level * 16 : 0)
- %>
-    <div style="position: absolute;line-height:1.2em;height:16px;top:<%= top %>px;left:<%= left %>px;overflow:hidden;"><small>    
-    <% if i.is_a? Issue %>
-      	<%= h("#{i.project} -") unless @project && @project == i.project %>
-      	<%= link_to_issue i %>
-  	<% else %>
-		<span class="icon icon-package">
-	      	<%= link_to_version i %>
-		</span>
-  	<% end %>  	
-  	</small></div>
-    <% top = top + 20
-end %>
+<% top = headers_height + 8 %>
+
+<%= @gantt.subjects(:headers_height => headers_height, :top => top, :g_width => g_width) %>
+
 </div>
 </td>
 <td>
@@ -163,53 +150,9 @@
 	end
 end %>
 
-<%
-#
-# Tasks
-#
-top = headers_height + 10
-@gantt.events.each do |i| 
-  if i.is_a? Issue 
-	i_start_date = (i.start_date >= @gantt.date_from ? i.start_date : @gantt.date_from )
-	i_end_date = (i.due_before <= @gantt.date_to ? i.due_before : @gantt.date_to )
-	
-	i_done_date = i.start_date + ((i.due_before - i.start_date+1)*i.done_ratio/100).floor
-	i_done_date = (i_done_date <= @gantt.date_from ? @gantt.date_from : i_done_date )
-	i_done_date = (i_done_date >= @gantt.date_to ? @gantt.date_to : i_done_date )
-	
-	i_late_date = [i_end_date, Date.today].min if i_start_date < Date.today
-	
-	i_left = ((i_start_date - @gantt.date_from)*zoom).floor 	
-	i_width = ((i_end_date - i_start_date + 1)*zoom).floor - 2                  # total width of the issue (- 2 for left and right borders)
-	d_width = ((i_done_date - i_start_date)*zoom).floor - 2                     # done width
-	l_width = i_late_date ? ((i_late_date - i_start_date+1)*zoom).floor - 2 : 0 # delay width
-  css = "task " + (i.leaf? ? 'leaf' : 'parent')
-	%>
-	<div style="top:<%= top %>px;left:<%= i_left %>px;width:<%= i_width %>px;" class="<%= css %> task_todo"><div class="left"></div>&nbsp;<div class="right"></div></div>
-	<% if l_width > 0 %>
-	    <div style="top:<%= top %>px;left:<%= i_left %>px;width:<%= l_width %>px;" class="<%= css %> task_late">&nbsp;</div>
-	<% end %>
-	<% if d_width > 0 %>
-	    <div style="top:<%= top %>px;left:<%= i_left %>px;width:<%= d_width %>px;" class="<%= css %> task_done">&nbsp;</div>
-	<% end %>
-	<div style="top:<%= top %>px;left:<%= i_left + i_width + 8 %>px;background:#fff;" class="<%= css %>">
-	<%= i.status.name %>
-	<%= (i.done_ratio).to_i %>%
-	</div>
-	<div class="tooltip" style="position: absolute;top:<%= top %>px;left:<%= i_left %>px;width:<%= i_width %>px;height:12px;">
-	<span class="tip">
-    <%= render_issue_tooltip i %>
-	</span></div>
-<% else 
-    i_left = ((i.start_date - @gantt.date_from)*zoom).floor
-    %>
-    <div style="top:<%= top %>px;left:<%= i_left %>px;width:15px;" class="task milestone">&nbsp;</div>
-	<div style="top:<%= top %>px;left:<%= i_left + 12 %>px;background:#fff;" class="task">
-		<strong><%= format_version_name i %></strong>
-	</div>
-<% end %>
-	<% top = top + 20
-end %>
+<% top = headers_height + 10 %>
+
+<%= @gantt.lines(:top => top, :zoom => zoom, :g_width => g_width ) %>
 
 <%
 #
@@ -226,8 +169,8 @@
 
 <table width="100%">
 <tr>
-<td align="left"><%= link_to_remote ('&#171; ' + l(:label_previous)), {:url => @gantt.params_previous, :update => 'content', :complete => 'window.scrollTo(0,0)'}, {:href => url_for(@gantt.params_previous)} %></td>
-<td align="right"><%= link_to_remote (l(:label_next) + ' &#187;'), {:url => @gantt.params_next, :update => 'content', :complete => 'window.scrollTo(0,0)'}, {:href => url_for(@gantt.params_next)} %></td>
+<td align="left"><%= link_to_remote ('&#171; ' + l(:label_previous)), {:url => @gantt.params_previous, :method => :get, :update => 'content', :complete => 'window.scrollTo(0,0)'}, {:href => url_for(@gantt.params_previous)} %></td>
+<td align="right"><%= link_to_remote (l(:label_next) + ' &#187;'), {:url => @gantt.params_next, :method => :get, :update => 'content', :complete => 'window.scrollTo(0,0)'}, {:href => url_for(@gantt.params_next)} %></td>
 </tr>
 </table>
 
--- a/app/views/groups/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/groups/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/app/views/groups
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:45.192172Z
+2010-09-23T14:37:44.547775Z
 8798190a9ed51cd47a32f7fa3b14962b
 2009-09-11T21:11:20.141433Z
 2864
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:45.192172Z
+2010-09-23T14:37:44.547775Z
 77b68adb1216f00c034d0afa77a50bff
 2009-09-12T09:13:13.676884Z
 2871
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:45.192172Z
+2010-09-23T14:37:44.547775Z
 61731ddfe926e25ea2108a99a7dc594d
 2009-07-05T11:38:40.659710Z
 2807
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:45.192172Z
+2010-09-23T14:37:44.547775Z
 f122118621575d0b74331d392b4aba4b
 2010-02-06T13:26:29.318273Z
 3375
@@ -168,7 +168,7 @@
 
 
 
-2010-07-23T14:49:45.192172Z
+2010-09-23T14:37:44.547775Z
 5fc442e9118fe012a7d4049daa4d68b4
 2009-09-12T16:12:42.876344Z
 2879
@@ -202,7 +202,7 @@
 
 
 
-2010-07-23T14:49:45.192172Z
+2010-09-23T14:37:44.547775Z
 5f484ae9be041e266944cc2710caa394
 2010-05-09T11:19:15.980195Z
 3734
@@ -236,7 +236,7 @@
 
 
 
-2010-07-23T14:49:45.192172Z
+2010-09-23T14:37:44.547775Z
 eff82d54d4b9afef8e057bce83a79055
 2010-05-09T11:19:15.980195Z
 3734
@@ -270,7 +270,7 @@
 
 
 
-2010-07-23T14:49:45.192172Z
+2010-09-23T14:37:44.547775Z
 ee1e9b07710ccd0b0dee7791dddc93bb
 2009-07-05T13:54:34.821434Z
 2812
@@ -304,7 +304,7 @@
 
 
 
-2010-07-23T14:49:45.192172Z
+2010-09-23T14:37:44.547775Z
 09eeec211f50994f28b31bcff9be43ef
 2009-09-05T11:19:00.617770Z
 2858
--- a/app/views/issue_categories/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/issue_categories/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/app/views/issue_categories
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:45.460113Z
+2010-09-23T14:37:44.551784Z
 61ef938e10897a71008d145439614aa8
 2010-03-06T18:43:00.594668Z
 3549
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:45.460113Z
+2010-09-23T14:37:44.551784Z
 18eb89247454858a8ee0d9ffe9f0e8f6
 2007-06-29T17:21:37.739022Z
 577
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:45.460113Z
+2010-09-23T14:37:44.551784Z
 fc3f04670edce3c08e645d254198a89c
 2007-09-14T11:34:08.234701Z
 725
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:45.460113Z
+2010-09-23T14:37:44.551784Z
 f7b34c60cf2f117d3c53be7b0840fe28
 2008-02-29T22:54:07.325361Z
 1182
--- a/app/views/issue_moves/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/issue_moves/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/app/views/issue_moves
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-08-25T15:27:55.692000Z
+2010-09-23T14:37:44.555783Z
 75404bb56747fe4f58e979b3452af027
 2010-08-11T14:42:10.119704Z
 3936
--- a/app/views/issue_relations/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/issue_relations/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/app/views/issue_relations
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:45.136102Z
+2010-09-23T14:37:44.555783Z
 36d83be727a082a187650a3604005824
 2007-09-22T13:17:49.935719Z
 747
--- a/app/views/issue_statuses/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/issue_statuses/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/app/views/issue_statuses
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:45.260456Z
+2010-09-23T14:37:44.559788Z
 2d8b318bb1dbbe6dbb478716d52e65e9
 2010-03-17T20:46:22.413470Z
 3600
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:45.260456Z
+2010-09-23T14:37:44.559788Z
 e4ea04eeab7c1f7265858a9dd09f1b7b
 2009-12-12T10:33:12.138303Z
 3157
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:45.260456Z
+2010-09-23T14:37:44.559788Z
 21f8b2f134a83413d09ae7e4d004c642
 2009-07-05T12:22:02.133266Z
 2810
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:45.260456Z
+2010-09-23T14:37:44.559788Z
 af751ca552f43d9954a0cb1bbdb6e362
 2009-07-05T12:22:02.133266Z
 2810
--- a/app/views/issues/.svn/all-wcprops	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/issues/.svn/all-wcprops	Fri Sep 24 15:51:28 2010 +0100
@@ -1,25 +1,31 @@
 K 25
 svn:wc:ra_dav:version-url
 V 41
-/svn/!svn/ver/4037/trunk/app/views/issues
+/svn/!svn/ver/4165/trunk/app/views/issues
 END
 _relations.rhtml
 K 25
 svn:wc:ra_dav:version-url
 V 58
-/svn/!svn/ver/3915/trunk/app/views/issues/_relations.rhtml
+/svn/!svn/ver/4065/trunk/app/views/issues/_relations.rhtml
+END
+_action_menu.rhtml
+K 25
+svn:wc:ra_dav:version-url
+V 60
+/svn/!svn/ver/4105/trunk/app/views/issues/_action_menu.rhtml
 END
 _history.rhtml
 K 25
 svn:wc:ra_dav:version-url
 V 56
-/svn/!svn/ver/3898/trunk/app/views/issues/_history.rhtml
+/svn/!svn/ver/4062/trunk/app/views/issues/_history.rhtml
 END
-_action_menu.rhtml
+_form.rhtml
 K 25
 svn:wc:ra_dav:version-url
-V 60
-/svn/!svn/ver/3936/trunk/app/views/issues/_action_menu.rhtml
+V 53
+/svn/!svn/ver/4165/trunk/app/views/issues/_form.rhtml
 END
 bulk_edit.rhtml
 K 25
@@ -27,12 +33,6 @@
 V 57
 /svn/!svn/ver/4037/trunk/app/views/issues/bulk_edit.rhtml
 END
-_form.rhtml
-K 25
-svn:wc:ra_dav:version-url
-V 53
-/svn/!svn/ver/4011/trunk/app/views/issues/_form.rhtml
-END
 _form_update.rhtml
 K 25
 svn:wc:ra_dav:version-url
@@ -49,7 +49,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 53
-/svn/!svn/ver/4034/trunk/app/views/issues/index.rhtml
+/svn/!svn/ver/4093/trunk/app/views/issues/index.rhtml
 END
 _sidebar.rhtml
 K 25
@@ -61,7 +61,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 53
-/svn/!svn/ver/3625/trunk/app/views/issues/_list.rhtml
+/svn/!svn/ver/4056/trunk/app/views/issues/_list.rhtml
 END
 show.xml.builder
 K 25
@@ -81,18 +81,18 @@
 V 67
 /svn/!svn/ver/2827/trunk/app/views/issues/_form_custom_fields.rhtml
 END
+_changesets.rhtml
+K 25
+svn:wc:ra_dav:version-url
+V 59
+/svn/!svn/ver/3898/trunk/app/views/issues/_changesets.rhtml
+END
 _list_simple.rhtml
 K 25
 svn:wc:ra_dav:version-url
 V 60
 /svn/!svn/ver/3924/trunk/app/views/issues/_list_simple.rhtml
 END
-_changesets.rhtml
-K 25
-svn:wc:ra_dav:version-url
-V 59
-/svn/!svn/ver/3898/trunk/app/views/issues/_changesets.rhtml
-END
 _edit.rhtml
 K 25
 svn:wc:ra_dav:version-url
@@ -103,7 +103,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 59
-/svn/!svn/ver/3573/trunk/app/views/issues/_attributes.rhtml
+/svn/!svn/ver/4090/trunk/app/views/issues/_attributes.rhtml
 END
 edit.rhtml
 K 25
--- a/app/views/issues/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/issues/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,14 +1,14 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/app/views/issues
 http://redmine.rubyforge.org/svn
 
 
 
-2010-08-24T15:27:12.793586Z
-4037
+2010-09-20T18:50:09.519311Z
+4165
 edavis10
 
 
@@ -32,11 +32,11 @@
 
 
 
-2010-08-25T15:27:56.690702Z
-44ad446adb6ca89953743ad2b9400b51
-2010-08-04T20:52:31.100179Z
-3915
-jbbarth
+2010-09-24T12:48:29.596042Z
+4659150afe6ae87105eaa29894e4d488
+2010-09-06T00:48:44.764418Z
+4065
+edavis10
 has-props
 
 
@@ -58,7 +58,7 @@
 
 
 
-1739
+1816
 
 _history.rhtml
 file
@@ -66,11 +66,11 @@
 
 
 
-2010-08-25T15:27:56.690702Z
-6430716ac245ae05c393c1dcd04e575f
-2010-07-29T15:48:53.812065Z
-3898
-winterheart
+2010-09-24T12:48:29.596042Z
+8d719ade30044f529f104cda9dcdd6f4
+2010-09-05T22:57:20.669640Z
+4062
+edavis10
 has-props
 
 
@@ -92,7 +92,7 @@
 
 
 
-840
+859
 
 _action_menu.rhtml
 file
@@ -100,10 +100,10 @@
 
 
 
-2010-08-25T15:27:56.690702Z
-04350a5b35404e971ff6eabb0d432c39
-2010-08-11T14:42:10.119704Z
-3936
+2010-09-24T12:48:29.596042Z
+d39cbd8da926ba1c0912674a25e0bbae
+2010-09-20T02:55:26.436604Z
+4105
 edavis10
 
 
@@ -126,7 +126,7 @@
 
 
 
-1173
+1228
 
 bulk_edit.rhtml
 file
@@ -134,7 +134,7 @@
 
 
 
-2010-08-25T15:27:56.690702Z
+2010-09-23T14:37:44.571741Z
 2118a1220c381352190040dc4b80e7d4
 2010-08-24T15:27:12.793586Z
 4037
@@ -168,10 +168,10 @@
 
 
 
-2010-08-25T15:27:56.690702Z
-90b9031a1f1f9e40a88ab7b2080e880c
-2010-08-20T15:22:19.680224Z
-4011
+2010-09-24T12:48:29.596042Z
+c95e7aec098a5197f699f7ff5d9cfea5
+2010-09-20T18:50:09.519311Z
+4165
 edavis10
 has-props
 
@@ -194,7 +194,7 @@
 
 
 
-1944
+2034
 
 _form_update.rhtml
 file
@@ -202,7 +202,7 @@
 
 
 
-2010-07-23T14:49:45.572128Z
+2010-09-23T14:37:44.571741Z
 00a1336147a304d10f556a97f7105a83
 2009-12-11T18:48:34.197724Z
 3151
@@ -236,7 +236,7 @@
 
 
 
-2010-07-23T14:49:45.572128Z
+2010-09-23T14:37:44.575742Z
 ed6c218138334e3950cb971252374472
 2010-04-13T17:51:06.988056Z
 3671
@@ -270,11 +270,11 @@
 
 
 
-2010-08-25T15:27:56.690702Z
-bf8411a9c7c60d8dc201a26f8df2c8b9
-2010-08-23T15:04:36.844654Z
-4034
-edavis10
+2010-09-24T12:48:29.596042Z
+5a8516dceeaac8769ab1780f8e9cccd9
+2010-09-16T21:33:49.399868Z
+4093
+jbbarth
 has-props
 
 
@@ -296,7 +296,7 @@
 
 
 
-4031
+4097
 
 _sidebar.rhtml
 file
@@ -304,7 +304,7 @@
 
 
 
-2010-08-25T15:27:56.690702Z
+2010-09-23T14:37:44.571741Z
 c2e4e73b27a58d99224ccc2d7f35dc84
 2010-08-22T18:30:26.413363Z
 4012
@@ -338,11 +338,11 @@
 
 
 
-2010-07-23T14:49:45.572128Z
-d9dcb8e4d8e03e2c3b156c90b0cdfcc4
-2010-03-29T19:50:00.163655Z
-3625
-jplang
+2010-09-24T12:48:29.596042Z
+b5bd20e1b16f321b87b14ec6d0b7a9e7
+2010-09-03T19:59:49.465806Z
+4056
+jbbarth
 has-props
 
 
@@ -364,7 +364,7 @@
 
 
 
-1725
+1772
 
 show.xml.builder
 file
@@ -372,7 +372,7 @@
 
 
 
-2010-07-23T14:49:45.572128Z
+2010-09-23T14:37:44.575742Z
 1a197244651b647927c95d8bcbb2b46d
 2010-05-01T14:07:36.553776Z
 3729
@@ -406,7 +406,7 @@
 
 
 
-2010-08-25T15:27:56.690702Z
+2010-09-23T14:37:44.575742Z
 81fcfef3bb688e30577916647e05f02a
 2010-08-22T19:12:21.015911Z
 4014
@@ -440,7 +440,7 @@
 
 
 
-2010-07-23T14:49:45.576133Z
+2010-09-23T14:37:44.571741Z
 5cac68d4655699c1a4ce40ef17da7b0a
 2009-07-29T19:04:27.717761Z
 2827
@@ -474,7 +474,7 @@
 
 
 
-2010-08-25T15:27:56.690702Z
+2010-09-23T14:37:44.571741Z
 334ec8cd87b661a181185092c242c41d
 2010-08-08T07:07:20.961363Z
 3924
@@ -508,7 +508,7 @@
 
 
 
-2010-08-25T15:27:56.690702Z
+2010-09-23T14:37:44.571741Z
 4c03735a361a24cc60a70975502bace7
 2010-07-29T15:48:53.812065Z
 3898
@@ -542,7 +542,7 @@
 
 
 
-2010-08-25T15:27:56.690702Z
+2010-09-23T14:37:44.571741Z
 ebae2e20ea4028620967382b877b5860
 2010-08-18T15:01:35.032314Z
 3946
@@ -576,11 +576,11 @@
 
 
 
-2010-07-23T14:49:45.576133Z
-1d828717b9849fe89fa822654ede0211
-2010-03-13T14:56:49.379682Z
-3573
-jplang
+2010-09-24T12:48:29.599802Z
+e2c801f0755567e34186cdbbc510d29d
+2010-09-16T18:27:33.887969Z
+4090
+edavis10
 has-props
 
 
@@ -602,7 +602,7 @@
 
 
 
-2451
+2461
 
 edit.rhtml
 file
@@ -610,7 +610,7 @@
 
 
 
-2010-07-23T14:49:45.576133Z
+2010-09-23T14:37:44.575742Z
 4b6048de503364b0ef668df08cceb602
 2008-02-09T16:11:18.249226Z
 1129
@@ -644,7 +644,7 @@
 
 
 
-2010-07-23T14:49:45.576133Z
+2010-09-23T14:37:44.571741Z
 b429d0e7dd6b3ef7bc1a28bdf0aeaf34
 2009-04-24T17:18:36.117696Z
 2685
@@ -678,7 +678,7 @@
 
 
 
-2010-08-25T15:27:56.690702Z
+2010-09-23T14:37:44.575742Z
 c1a3c605c3eed0e46487a4455acefad7
 2010-08-18T15:01:35.032314Z
 3946
--- a/app/views/issues/.svn/text-base/_action_menu.rhtml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/issues/.svn/text-base/_action_menu.rhtml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -6,5 +6,5 @@
 <%= link_to_if_authorized l(:button_duplicate), {:controller => 'issues', :action => 'new', :project_id => @project, :copy_from => @issue }, :class => 'icon icon-duplicate' %>
 <%= link_to_if_authorized l(:button_copy), new_issue_move_path(:id => @issue, :copy_options => {:copy => 't'}), :class => 'icon icon-copy' %>
 <%= link_to_if_authorized l(:button_move), new_issue_move_path(:id => @issue), :class => 'icon icon-move' %>
-<%= link_to_if_authorized l(:button_delete), {:controller => 'issues', :action => 'destroy', :id => @issue}, :confirm => l(:text_are_you_sure), :method => :post, :class => 'icon icon-del' %>
+<%= link_to_if_authorized l(:button_delete), {:controller => 'issues', :action => 'destroy', :id => @issue}, :confirm => (@issue.leaf? ? l(:text_are_you_sure) : l(:text_are_you_sure_with_children)), :method => :post, :class => 'icon icon-del' %>
 </div>
--- a/app/views/issues/.svn/text-base/_attributes.rhtml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/issues/.svn/text-base/_attributes.rhtml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -23,7 +23,7 @@
 <%= prompt_to_remote(image_tag('add.png', :style => 'vertical-align: middle;'),
                      l(:label_version_new),
                      'version[name]', 
-                     {:controller => 'versions', :action => 'new', :project_id => @project},
+                     {:controller => 'versions', :action => 'create', :project_id => @project},
                      :title => l(:label_version_new), 
                      :tabindex => 200) if authorize_for('versions', 'new') %>
 </p>
@@ -40,6 +40,6 @@
 </div>
 
 <div style="clear:both;"> </div>
-<%= render :partial => 'form_custom_fields' %>
+<%= render :partial => 'issues/form_custom_fields' %>
 
 <% end %>
--- a/app/views/issues/.svn/text-base/_form.rhtml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/issues/.svn/text-base/_form.rhtml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -1,3 +1,5 @@
+<%= call_hook(:view_issues_form_details_top, { :issue => @issue, :form => f }) %>
+
 <div id="issue_descr_fields" <%= 'style="display:none"' unless @issue.new_record? || @issue.errors.any? %>>
 <p><%= f.select :tracker_id, @project.trackers.collect {|t| [t.name, t.id]}, :required => true %></p>
 <%= observe_field :issue_tracker_id, :url => { :action => :new, :project_id => @project, :id => @issue },
@@ -20,7 +22,7 @@
 </div>
 
 <div id="attributes" class="attributes">
-	<%= render :partial => 'attributes' %>
+	<%= render :partial => 'issues/attributes' %>
 </div>
 
 <% if @issue.new_record? %>
--- a/app/views/issues/.svn/text-base/_history.rhtml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/issues/.svn/text-base/_history.rhtml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -1,6 +1,6 @@
 <% reply_links = authorize_for('issues', 'edit') -%>
 <% for journal in journals %>
-  <div id="change-<%= journal.id %>" class="journal">
+  <div id="change-<%= journal.id %>" class="<%= journal.css_classes %>">
     <h4><div class="journal-link"><%= link_to "##{journal.indice}", :anchor => "note-#{journal.indice}" %></div>
     <%= avatar(journal.user, :size => "24") %>
     <%= content_tag('a', '', :name => "note-#{journal.indice}")%>
--- a/app/views/issues/.svn/text-base/_list.rhtml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/issues/.svn/text-base/_list.rhtml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -3,7 +3,7 @@
 <div class="autoscroll">
 <table class="list issues">
     <thead><tr>
-        <th><%= link_to image_tag('toggle_check.png'), {}, :onclick => 'toggleIssuesSelection(Element.up(this, "form")); return false;',
+        <th class="checkbox hide-when-print"><%= link_to image_tag('toggle_check.png'), {}, :onclick => 'toggleIssuesSelection(Element.up(this, "form")); return false;',
                                                            :title => "#{l(:button_check_all)}/#{l(:button_uncheck_all)}" %>
         </th>
 		<%= sort_header_tag('id', :caption => '#', :default_order => 'desc') %>
@@ -25,7 +25,7 @@
 		<% previous_group = group %>
   <% end %>
 	<tr id="issue-<%= issue.id %>" class="hascontextmenu <%= cycle('odd', 'even') %> <%= issue.css_classes %> <%= level > 0 ? "idnt idnt-#{level}" : nil %>">
-	    <td class="checkbox"><%= check_box_tag("ids[]", issue.id, false, :id => nil) %></td>
+	  <td class="checkbox hide-when-print"><%= check_box_tag("ids[]", issue.id, false, :id => nil) %></td>
 		<td class="id"><%= link_to issue.id, :controller => 'issues', :action => 'show', :id => issue %></td>
         <% query.columns.each do |column| %><%= content_tag 'td', column_content(column, issue), :class => column.name %><% end %>
 	</tr>
--- a/app/views/issues/.svn/text-base/_relations.rhtml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/issues/.svn/text-base/_relations.rhtml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -28,6 +28,7 @@
 <% remote_form_for(:relation, @relation, 
                  :url => {:controller => 'issue_relations', :action => 'new', :issue_id => @issue},
                  :method => :post,
+                 :complete => "Form.Element.focus('relation_issue_to_id');",
                  :html => {:id => 'new-relation-form', :style => (@relation ? '' : 'display: none;')}) do |f| %>
 <%= render :partial => 'issue_relations/form', :locals => {:f => f}%>
 <% end %>
--- a/app/views/issues/.svn/text-base/index.rhtml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/issues/.svn/text-base/index.rhtml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -39,6 +39,7 @@
                        { :url => { :set_filter => 1 },
                          :before => 'selectAllOptions("selected_columns");',
                          :update => "content",
+                         :complete => "apply_filters_observer()",
                          :with => "Form.serialize('query_form')"
                        }, :class => 'icon icon-checked' %>
                        
--- a/app/views/issues/_action_menu.rhtml	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/issues/_action_menu.rhtml	Fri Sep 24 15:51:28 2010 +0100
@@ -6,5 +6,5 @@
 <%= link_to_if_authorized l(:button_duplicate), {:controller => 'issues', :action => 'new', :project_id => @project, :copy_from => @issue }, :class => 'icon icon-duplicate' %>
 <%= link_to_if_authorized l(:button_copy), new_issue_move_path(:id => @issue, :copy_options => {:copy => 't'}), :class => 'icon icon-copy' %>
 <%= link_to_if_authorized l(:button_move), new_issue_move_path(:id => @issue), :class => 'icon icon-move' %>
-<%= link_to_if_authorized l(:button_delete), {:controller => 'issues', :action => 'destroy', :id => @issue}, :confirm => l(:text_are_you_sure), :method => :post, :class => 'icon icon-del' %>
+<%= link_to_if_authorized l(:button_delete), {:controller => 'issues', :action => 'destroy', :id => @issue}, :confirm => (@issue.leaf? ? l(:text_are_you_sure) : l(:text_are_you_sure_with_children)), :method => :post, :class => 'icon icon-del' %>
 </div>
--- a/app/views/issues/_attributes.rhtml	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/issues/_attributes.rhtml	Fri Sep 24 15:51:28 2010 +0100
@@ -23,7 +23,7 @@
 <%= prompt_to_remote(image_tag('add.png', :style => 'vertical-align: middle;'),
                      l(:label_version_new),
                      'version[name]', 
-                     {:controller => 'versions', :action => 'new', :project_id => @project},
+                     {:controller => 'versions', :action => 'create', :project_id => @project},
                      :title => l(:label_version_new), 
                      :tabindex => 200) if authorize_for('versions', 'new') %>
 </p>
@@ -40,6 +40,6 @@
 </div>
 
 <div style="clear:both;"> </div>
-<%= render :partial => 'form_custom_fields' %>
+<%= render :partial => 'issues/form_custom_fields' %>
 
 <% end %>
--- a/app/views/issues/_form.rhtml	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/issues/_form.rhtml	Fri Sep 24 15:51:28 2010 +0100
@@ -1,3 +1,5 @@
+<%= call_hook(:view_issues_form_details_top, { :issue => @issue, :form => f }) %>
+
 <div id="issue_descr_fields" <%= 'style="display:none"' unless @issue.new_record? || @issue.errors.any? %>>
 <p><%= f.select :tracker_id, @project.trackers.collect {|t| [t.name, t.id]}, :required => true %></p>
 <%= observe_field :issue_tracker_id, :url => { :action => :new, :project_id => @project, :id => @issue },
@@ -20,7 +22,7 @@
 </div>
 
 <div id="attributes" class="attributes">
-	<%= render :partial => 'attributes' %>
+	<%= render :partial => 'issues/attributes' %>
 </div>
 
 <% if @issue.new_record? %>
--- a/app/views/issues/_history.rhtml	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/issues/_history.rhtml	Fri Sep 24 15:51:28 2010 +0100
@@ -1,6 +1,6 @@
 <% reply_links = authorize_for('issues', 'edit') -%>
 <% for journal in journals %>
-  <div id="change-<%= journal.id %>" class="journal">
+  <div id="change-<%= journal.id %>" class="<%= journal.css_classes %>">
     <h4><div class="journal-link"><%= link_to "##{journal.indice}", :anchor => "note-#{journal.indice}" %></div>
     <%= avatar(journal.user, :size => "24") %>
     <%= content_tag('a', '', :name => "note-#{journal.indice}")%>
--- a/app/views/issues/_list.rhtml	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/issues/_list.rhtml	Fri Sep 24 15:51:28 2010 +0100
@@ -3,7 +3,7 @@
 <div class="autoscroll">
 <table class="list issues">
     <thead><tr>
-        <th><%= link_to image_tag('toggle_check.png'), {}, :onclick => 'toggleIssuesSelection(Element.up(this, "form")); return false;',
+        <th class="checkbox hide-when-print"><%= link_to image_tag('toggle_check.png'), {}, :onclick => 'toggleIssuesSelection(Element.up(this, "form")); return false;',
                                                            :title => "#{l(:button_check_all)}/#{l(:button_uncheck_all)}" %>
         </th>
 		<%= sort_header_tag('id', :caption => '#', :default_order => 'desc') %>
@@ -25,7 +25,7 @@
 		<% previous_group = group %>
   <% end %>
 	<tr id="issue-<%= issue.id %>" class="hascontextmenu <%= cycle('odd', 'even') %> <%= issue.css_classes %> <%= level > 0 ? "idnt idnt-#{level}" : nil %>">
-	    <td class="checkbox"><%= check_box_tag("ids[]", issue.id, false, :id => nil) %></td>
+	  <td class="checkbox hide-when-print"><%= check_box_tag("ids[]", issue.id, false, :id => nil) %></td>
 		<td class="id"><%= link_to issue.id, :controller => 'issues', :action => 'show', :id => issue %></td>
         <% query.columns.each do |column| %><%= content_tag 'td', column_content(column, issue), :class => column.name %><% end %>
 	</tr>
--- a/app/views/issues/_relations.rhtml	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/issues/_relations.rhtml	Fri Sep 24 15:51:28 2010 +0100
@@ -28,6 +28,7 @@
 <% remote_form_for(:relation, @relation, 
                  :url => {:controller => 'issue_relations', :action => 'new', :issue_id => @issue},
                  :method => :post,
+                 :complete => "Form.Element.focus('relation_issue_to_id');",
                  :html => {:id => 'new-relation-form', :style => (@relation ? '' : 'display: none;')}) do |f| %>
 <%= render :partial => 'issue_relations/form', :locals => {:f => f}%>
 <% end %>
--- a/app/views/issues/index.rhtml	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/issues/index.rhtml	Fri Sep 24 15:51:28 2010 +0100
@@ -39,6 +39,7 @@
                        { :url => { :set_filter => 1 },
                          :before => 'selectAllOptions("selected_columns");',
                          :update => "content",
+                         :complete => "apply_filters_observer()",
                          :with => "Form.serialize('query_form')"
                        }, :class => 'icon icon-checked' %>
                        
--- a/app/views/journals/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/journals/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/app/views/journals
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:44.908124Z
+2010-09-23T14:37:44.579750Z
 fb8a5b1bfdbadbbaaa17ce7fc1dfcf3c
 2009-10-11T10:36:11.599175Z
 2924
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:44.908124Z
+2010-09-23T14:37:44.579750Z
 269ec86216a5d0340e02940f1b190d51
 2010-03-17T04:13:05.342620Z
 3596
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:44.908124Z
+2010-09-23T14:37:44.579750Z
 ce552c52f7c423630412d0593cc1ee61
 2008-02-02T10:50:31.694950Z
 1105
@@ -134,7 +134,7 @@
 
 
 
-2010-08-25T15:27:55.118495Z
+2010-09-23T14:37:44.579750Z
 ef7f777c9318cee52e909377c4f96e8b
 2010-08-23T15:04:36.844654Z
 4034
--- a/app/views/layouts/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/layouts/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/app/views/layouts
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-08-25T15:27:55.122634Z
+2010-09-24T11:56:52.936024Z
 2e429e8cf551d964a7e1a528ca56242d
 2010-08-19T16:57:44.231882Z
 4005
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:44.936188Z
+2010-09-23T14:37:44.583752Z
 9631cc13a2471d1bdde52f4d8cee6f18
 2009-09-13T17:14:35.707881Z
 2887
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:44.936188Z
+2010-09-23T14:37:44.583752Z
 bd4792711b615ebda6bb50b1f1158f0c
 2009-09-13T17:14:35.707881Z
 2887
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:44.936188Z
+2010-09-23T14:37:44.583752Z
 cc6ca08e56314fb510561e8eeb4ede46
 2009-12-17T18:21:02.630202Z
 3176
--- a/app/views/ldap_auth_sources/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/ldap_auth_sources/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/app/views/ldap_auth_sources
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:45.116101Z
+2010-09-23T14:37:44.583752Z
 7eaca2b2857c3c1ef6fa72633333d56f
 2010-05-23T03:16:31.304135Z
 3744
--- a/app/views/mailer/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/mailer/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/app/views/mailer
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:45.156129Z
+2010-09-23T14:37:44.607738Z
 882607e6f82c2c4e7db74136ee974a5b
 2009-05-17T09:55:13.601447Z
 2749
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:45.156129Z
+2010-09-23T14:37:44.599741Z
 e54fccdf5cf9e146cddf2adc5797d76f
 2009-02-20T17:04:47.905923Z
 2484
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:45.156129Z
+2010-09-23T14:37:44.607738Z
 55d268cfc5ec4c2375739d401a00e9ca
 2007-11-04T10:43:39.403792Z
 877
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:45.156129Z
+2010-09-23T14:37:44.603754Z
 157b6123ac6990f3cb83d1a24c441599
 2007-11-18T17:46:55.863051Z
 915
@@ -168,7 +168,7 @@
 
 
 
-2010-07-23T14:49:45.156129Z
+2010-09-23T14:37:44.603754Z
 99836d2f584d6975add91d6f4885dfa3
 2010-02-18T19:13:38.135448Z
 3452
@@ -202,7 +202,7 @@
 
 
 
-2010-07-23T14:49:45.160129Z
+2010-09-23T14:37:44.603754Z
 0fcec4c9195f18d0d58724feb863a27e
 2007-11-04T10:43:39.403792Z
 877
@@ -236,7 +236,7 @@
 
 
 
-2010-07-23T14:49:45.160129Z
+2010-09-23T14:37:44.603754Z
 501bcdc81562733bce55a29655f6fd89
 2009-02-21T11:04:50.579477Z
 2493
@@ -270,7 +270,7 @@
 
 
 
-2010-07-23T14:49:45.160129Z
+2010-09-23T14:37:44.603754Z
 746db1ca981aa5fc37569de58a3be57b
 2010-02-18T19:13:38.135448Z
 3452
@@ -304,7 +304,7 @@
 
 
 
-2010-07-23T14:49:45.160129Z
+2010-09-23T14:37:44.603754Z
 55b994ef0e81fdc6d78f280c8716f230
 2010-02-18T19:13:38.135448Z
 3452
@@ -338,7 +338,7 @@
 
 
 
-2010-07-23T14:49:45.160129Z
+2010-09-23T14:37:44.603754Z
 76b612bb95df0f232af66dcfa75908a9
 2010-02-18T19:13:38.135448Z
 3452
@@ -372,7 +372,7 @@
 
 
 
-2010-07-23T14:49:45.160129Z
+2010-09-23T14:37:44.607738Z
 6a0fb1622f40125ab40706fa05705436
 2009-02-21T11:04:50.579477Z
 2493
@@ -406,7 +406,7 @@
 
 
 
-2010-07-23T14:49:45.160129Z
+2010-09-23T14:37:44.607738Z
 6efcff34ccd9ec0ebd5c501a38bd9e61
 2009-07-05T14:14:44.411724Z
 2814
@@ -440,7 +440,7 @@
 
 
 
-2010-07-23T14:49:45.160129Z
+2010-09-23T14:37:44.607738Z
 21acbb8688d350bccc49d0b9f0fa7964
 2009-05-17T09:55:13.601447Z
 2749
@@ -474,7 +474,7 @@
 
 
 
-2010-07-23T14:49:45.160129Z
+2010-09-23T14:37:44.607738Z
 62a282059a34f2aaa4d56b609e94e27c
 2007-11-04T10:43:39.403792Z
 877
@@ -508,7 +508,7 @@
 
 
 
-2010-07-23T14:49:45.160129Z
+2010-09-23T14:37:44.607738Z
 b95faada3d8a7eac9ddd90de85d377eb
 2007-11-04T10:43:39.403792Z
 877
@@ -542,7 +542,7 @@
 
 
 
-2010-07-23T14:49:45.160129Z
+2010-09-23T14:37:44.599741Z
 b6dee3a7f5ce5253d3d66ea2d0aed032
 2009-02-20T17:04:47.905923Z
 2484
@@ -576,7 +576,7 @@
 
 
 
-2010-07-23T14:49:45.160129Z
+2010-09-23T14:37:44.607738Z
 382940abff8d469305e2b82eaac09875
 2007-11-04T10:43:39.403792Z
 877
@@ -610,7 +610,7 @@
 
 
 
-2010-07-23T14:49:45.160129Z
+2010-09-23T14:37:44.599741Z
 1f73b58bdc0fd4474073437ce2e219bd
 2007-11-04T10:43:39.403792Z
 877
@@ -644,7 +644,7 @@
 
 
 
-2010-07-23T14:49:45.160129Z
+2010-09-23T14:37:44.599741Z
 871cf6abc13d895f9de91ef4ac36c2bd
 2010-02-18T19:13:38.135448Z
 3452
@@ -678,7 +678,7 @@
 
 
 
-2010-07-23T14:49:45.160129Z
+2010-09-23T14:37:44.607738Z
 0cbce1fe1b288482af3095ce9bc555ed
 2007-11-04T10:43:39.403792Z
 877
@@ -712,7 +712,7 @@
 
 
 
-2010-07-23T14:49:45.160129Z
+2010-09-23T14:37:44.603754Z
 db9ef17343824d59b7a19db7036ee2f1
 2010-02-18T19:13:38.135448Z
 3452
@@ -746,7 +746,7 @@
 
 
 
-2010-07-23T14:49:45.164129Z
+2010-09-23T14:37:44.607738Z
 7dffb9cfc22aef3b03d0d771179f26d6
 2010-02-18T19:13:38.135448Z
 3452
@@ -780,7 +780,7 @@
 
 
 
-2010-07-23T14:49:45.164129Z
+2010-09-23T14:37:44.603754Z
 d4eae87a9e17f49caeb6913659b9c42d
 2007-11-04T10:43:39.403792Z
 877
@@ -814,7 +814,7 @@
 
 
 
-2010-07-23T14:49:45.164129Z
+2010-09-23T14:37:44.603754Z
 06d5fbff057e28328f2be88419207f80
 2010-02-18T19:13:38.135448Z
 3452
@@ -848,7 +848,7 @@
 
 
 
-2010-07-23T14:49:45.164129Z
+2010-09-23T14:37:44.603754Z
 52a0f774acd5b7aeeb3768de943af901
 2009-02-21T11:04:50.579477Z
 2493
@@ -882,7 +882,7 @@
 
 
 
-2010-07-23T14:49:45.164129Z
+2010-09-23T14:37:44.603754Z
 2b46c7d28f33cec521374ccae2fd8451
 2007-11-04T10:43:39.403792Z
 877
@@ -916,7 +916,7 @@
 
 
 
-2010-07-23T14:49:45.164129Z
+2010-09-23T14:37:44.603754Z
 9b7ab36ebc57f0c02756d2b076e67b19
 2007-11-26T18:47:49.588558Z
 932
@@ -950,7 +950,7 @@
 
 
 
-2010-07-23T14:49:45.164129Z
+2010-09-23T14:37:44.603754Z
 e7e91d7f18dd1547cfebafdf4822a18f
 2010-02-18T19:13:38.135448Z
 3452
@@ -984,7 +984,7 @@
 
 
 
-2010-07-23T14:49:45.164129Z
+2010-09-23T14:37:44.607738Z
 801160f7633227c04b4a3a8c249feeff
 2009-05-17T09:55:13.601447Z
 2749
@@ -1018,7 +1018,7 @@
 
 
 
-2010-07-23T14:49:45.164129Z
+2010-09-23T14:37:44.603754Z
 44018a44ceaecb5c9be3fed66e759064
 2008-07-21T19:13:46.546624Z
 1683
@@ -1052,7 +1052,7 @@
 
 
 
-2010-07-23T14:49:45.164129Z
+2010-09-23T14:37:44.603754Z
 a53d9ea13c19cbce1edc375a01b5753d
 2010-02-18T19:13:38.135448Z
 3452
@@ -1086,7 +1086,7 @@
 
 
 
-2010-07-23T14:49:45.164129Z
+2010-09-23T14:37:44.607738Z
 f7cca2b19b22b64036fdba45803b6805
 2009-05-17T09:55:13.601447Z
 2749
--- a/app/views/members/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/members/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/app/views/members
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:44.900164Z
+2010-09-23T14:37:44.611740Z
 9e105ea0b16e73250d47d57f07d71cff
 2009-09-12T08:36:46.650954Z
 2869
--- a/app/views/messages/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/messages/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/app/views/messages
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-28T11:07:47.120163Z
+2010-09-23T14:37:44.615740Z
 c68f1ef8a922f2a408e0349d80db4376
 2010-07-25T10:02:12.905073Z
 3877
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:45.128097Z
+2010-09-23T14:37:44.611740Z
 4fecf6ec48e549e01ada68dc8d623f38
 2010-01-25T17:26:02.255593Z
 3339
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:45.128097Z
+2010-09-23T14:37:44.611740Z
 72a4fb6eecd42aceb751370901633f24
 2008-03-07T17:49:44.664945Z
 1205
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:45.128097Z
+2010-09-23T14:37:44.611740Z
 3512563f842c2e951d7738870f2d4065
 2008-03-07T17:49:44.664945Z
 1205
--- a/app/views/my/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/my/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/app/views/my
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:44.898275Z
+2010-09-23T14:37:44.619750Z
 4fb90e7d5633e4ec24100c38acdad03d
 2010-05-23T03:16:37.499264Z
 3745
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:44.900164Z
+2010-09-23T14:37:44.623783Z
 afa83dffe27e19383284d8177f1f4687
 2010-03-04T19:02:57.949679Z
 3542
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:44.900164Z
+2010-09-23T14:37:44.623783Z
 a43c901172c8b1750d24612b24f2db22
 2009-04-21T13:43:57.529967Z
 2678
@@ -137,7 +137,7 @@
 
 
 
-2010-07-23T14:49:44.900164Z
+2010-09-23T14:37:44.619750Z
 91a0469f13d98fd2504ca036e16660f1
 2010-06-19T16:50:13.340830Z
 3775
@@ -171,7 +171,7 @@
 
 
 
-2010-07-23T14:49:44.900164Z
+2010-09-23T14:37:44.619750Z
 efb09bc859f5527d219f0dd3d5c12fe8
 2009-02-26T16:15:07.718565Z
 2528
@@ -205,7 +205,7 @@
 
 
 
-2010-07-23T14:49:44.900164Z
+2010-09-23T14:37:44.623783Z
 c1260ac20d704693b8748cef7b7c58f9
 2010-05-26T21:52:03.637924Z
 3755
--- a/app/views/my/blocks/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/my/blocks/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/app/views/my/blocks
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:44.768125Z
+2010-09-23T14:37:44.623783Z
 0b880299704151a6acd66b5632f60426
 2010-03-10T05:10:43.201527Z
 3557
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:44.768125Z
+2010-09-23T14:37:44.623783Z
 6aa71a8cc8a018c4c564915c10355709
 2007-04-20T09:53:44.242780Z
 449
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:44.768125Z
+2010-09-23T14:37:44.623783Z
 55339408a7e093de86505f92845ed977
 2009-03-17T17:34:49.297132Z
 2598
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:44.768125Z
+2010-09-23T14:37:44.623783Z
 bf22b792b1b79c60dc866718c074f370
 2009-05-30T23:30:36.923541Z
 2777
@@ -168,7 +168,7 @@
 
 
 
-2010-07-23T14:49:44.768125Z
+2010-09-23T14:37:44.623783Z
 4dfff03583b1da52a7f2fb8d20398928
 2010-05-09T11:19:15.980195Z
 3734
@@ -202,7 +202,7 @@
 
 
 
-2010-07-23T14:49:44.768125Z
+2010-09-23T14:37:44.623783Z
 a21d8649f0daec69caabb118e9b6375c
 2008-08-26T11:08:45.487893Z
 1766
@@ -236,7 +236,7 @@
 
 
 
-2010-07-23T14:49:44.772126Z
+2010-09-23T14:37:44.623783Z
 3894ab9b2f76b3622a362843be2162be
 2010-01-30T11:23:17.508662Z
 3351
--- a/app/views/news/.svn/all-wcprops	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/news/.svn/all-wcprops	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 39
-/svn/!svn/ver/3924/trunk/app/views/news
+/svn/!svn/ver/4172/trunk/app/views/news
 END
 _news.rhtml
 K 25
@@ -13,7 +13,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 50
-/svn/!svn/ver/3425/trunk/app/views/news/show.rhtml
+/svn/!svn/ver/4172/trunk/app/views/news/show.rhtml
 END
 _form.rhtml
 K 25
@@ -25,17 +25,17 @@
 K 25
 svn:wc:ra_dav:version-url
 V 50
-/svn/!svn/ver/1677/trunk/app/views/news/edit.rhtml
+/svn/!svn/ver/4168/trunk/app/views/news/edit.rhtml
 END
 index.rhtml
 K 25
 svn:wc:ra_dav:version-url
 V 51
-/svn/!svn/ver/3924/trunk/app/views/news/index.rhtml
+/svn/!svn/ver/4163/trunk/app/views/news/index.rhtml
 END
 new.rhtml
 K 25
 svn:wc:ra_dav:version-url
 V 49
-/svn/!svn/ver/1677/trunk/app/views/news/new.rhtml
+/svn/!svn/ver/4163/trunk/app/views/news/new.rhtml
 END
--- a/app/views/news/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/news/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,15 +1,15 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/app/views/news
 http://redmine.rubyforge.org/svn
 
 
 
-2010-08-08T07:07:20.961363Z
-3924
-jbbarth
+2010-09-23T15:20:19.085385Z
+4172
+edavis10
 
 
 
@@ -32,7 +32,7 @@
 
 
 
-2010-08-25T15:27:56.353675Z
+2010-09-23T14:37:44.627781Z
 8a95983c16121228642f685334a98b43
 2010-08-08T07:07:20.961363Z
 3924
@@ -66,11 +66,11 @@
 
 
 
-2010-07-23T14:49:45.180146Z
-7abfb74e27ed92fb331e0904686f1d52
-2010-02-14T11:49:29.679515Z
-3425
-jplang
+2010-09-24T12:48:28.335892Z
+fb4ed9638d6d3f708b140d2ccbc013de
+2010-09-23T15:20:19.085385Z
+4172
+edavis10
 has-props
 
 
@@ -92,7 +92,7 @@
 
 
 
-2987
+3025
 
 _form.rhtml
 file
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:45.180146Z
+2010-09-23T14:37:44.627781Z
 e06c154a981d18d975bcba8eb682df30
 2007-09-22T17:52:43.686392Z
 750
@@ -134,11 +134,11 @@
 
 
 
-2010-07-23T14:49:45.180146Z
-dce78016c437a94a529717f88539e4b4
-2008-07-19T07:29:05.324971Z
-1677
-jplang
+2010-09-24T12:48:28.335892Z
+03cd635f1021f3f088155b7106062d98
+2010-09-21T15:20:37.706826Z
+4168
+edavis10
 has-props
 
 
@@ -160,7 +160,7 @@
 
 
 
-672
+771
 
 index.rhtml
 file
@@ -168,11 +168,11 @@
 
 
 
-2010-08-25T15:27:56.353675Z
-dc12388537796be5d0dc19bf9b68b28b
-2010-08-08T07:07:20.961363Z
-3924
-jbbarth
+2010-09-24T12:48:28.335892Z
+22895814fee421f0a7e4654059ede065
+2010-09-20T15:13:48.212792Z
+4163
+edavis10
 has-props
 
 
@@ -194,7 +194,7 @@
 
 
 
-2222
+2260
 
 new.rhtml
 file
@@ -202,11 +202,11 @@
 
 
 
-2010-07-23T14:49:45.180146Z
-98d730e89eb4c9b54c1298037f9ff707
-2008-07-19T07:29:05.324971Z
-1677
-jplang
+2010-09-24T12:48:28.335892Z
+834dc30ca0d2f96a37f2ef2a60d9aaf9
+2010-09-20T15:13:48.212792Z
+4163
+edavis10
 has-props
 
 
@@ -228,5 +228,5 @@
 
 
 
-730
+733
 
--- a/app/views/news/.svn/text-base/edit.rhtml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/news/.svn/text-base/edit.rhtml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 <h2><%=l(:label_news)%></h2>
 
-<% labelled_tabular_form_for :news, @news, :url => { :action => "edit" },
-                                           :html => { :id => 'news-form' } do |f| %>
+<% labelled_tabular_form_for :news, @news, :url => { :action => "update" },
+                                           :html => { :id => 'news-form', :method => :put } do |f| %>
 <%= render :partial => 'form', :locals => { :f => f } %>
 <%= submit_tag l(:button_save) %>
 <%= link_to_remote l(:label_preview), 
@@ -12,3 +12,7 @@
                    }, :accesskey => accesskey(:preview) %>
 <% end %>
 <div id="preview" class="wiki"></div>
+
+<% content_for :header_tags do %>
+  <%= stylesheet_link_tag 'scm' %>
+<% end %>
--- a/app/views/news/.svn/text-base/index.rhtml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/news/.svn/text-base/index.rhtml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -7,7 +7,7 @@
 
 <div id="add-news" style="display:none;">
 <h2><%=l(:label_news_new)%></h2>
-<% labelled_tabular_form_for :news, @news, :url => { :controller => 'news', :action => 'new', :project_id => @project },
+<% labelled_tabular_form_for :news, @news, :url => { :controller => 'news', :action => 'create', :project_id => @project },
                                            :html => { :id => 'news-form' } do |f| %>
 <%= render :partial => 'news/form', :locals => { :f => f } %>
 <%= submit_tag l(:button_create) %>
@@ -45,6 +45,7 @@
 
 <% content_for :header_tags do %>
   <%= auto_discovery_link_tag(:atom, params.merge({:format => 'atom', :page => nil, :key => User.current.rss_key})) %>
+  <%= stylesheet_link_tag 'scm' %>
 <% end %>
 
 <% html_title(l(:label_news_plural)) -%>
--- a/app/views/news/.svn/text-base/new.rhtml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/news/.svn/text-base/new.rhtml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -1,6 +1,6 @@
 <h2><%=l(:label_news_new)%></h2>
 
-<% labelled_tabular_form_for :news, @news, :url => { :controller => 'news', :action => 'new', :project_id => @project },
+<% labelled_tabular_form_for :news, @news, :url => { :controller => 'news', :action => 'create', :project_id => @project },
                                            :html => { :id => 'news-form' } do |f| %>
 <%= render :partial => 'news/form', :locals => { :f => f } %>
 <%= submit_tag l(:button_create) %>
--- a/app/views/news/.svn/text-base/show.rhtml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/news/.svn/text-base/show.rhtml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -11,8 +11,8 @@
 
 <% if authorize_for('news', 'edit') %>
 <div id="edit-news" style="display:none;">
-<% labelled_tabular_form_for :news, @news, :url => { :action => "edit", :id => @news },
-                                           :html => { :id => 'news-form' } do |f| %>
+<% labelled_tabular_form_for :news, @news, :url => { :action => "update", :id => @news },
+                                           :html => { :id => 'news-form', :method => :put } do |f| %>
 <%= render :partial => 'form', :locals => { :f => f } %>
 <%= submit_tag l(:button_save) %>
 <%= link_to_remote l(:label_preview), 
@@ -39,17 +39,17 @@
 <% @comments.each do |comment| %>
     <% next if comment.new_record? %>
     <div class="contextual">
-    <%= link_to_if_authorized image_tag('delete.png'), {:controller => 'news', :action => 'destroy_comment', :id => @news, :comment_id => comment},
-                                                       :confirm => l(:text_are_you_sure), :method => :post, :title => l(:button_delete) %>
+    <%= link_to_if_authorized image_tag('delete.png'), {:controller => 'comments', :action => 'destroy', :id => @news, :comment_id => comment},
+                                                       :confirm => l(:text_are_you_sure), :method => :delete, :title => l(:button_delete) %>
     </div>
     <h4><%= avatar(comment.author, :size => "24") %><%= authoring comment.created_on, comment.author %></h4>
     <%= textilizable(comment.comments) %>
 <% end if @comments.any? %>
 </div>
 
-<% if authorize_for 'news', 'add_comment' %>
+<% if authorize_for 'comments', 'create' %>
 <p><%= toggle_link l(:label_comment_add), "add_comment_form", :focus => "comment_comments" %></p>
-<% form_tag({:action => 'add_comment', :id => @news}, :id => "add_comment_form", :style => "display:none;") do %>
+<% form_tag({:controller => 'comments', :action => 'create', :id => @news}, :id => "add_comment_form", :style => "display:none;") do %>
 <div class="box">
     <%= text_area 'comment', 'comments', :cols => 80, :rows => 15, :class => 'wiki-edit' %>
     <%= wikitoolbar_for 'comment_comments' %>
--- a/app/views/news/edit.rhtml	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/news/edit.rhtml	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 <h2><%=l(:label_news)%></h2>
 
-<% labelled_tabular_form_for :news, @news, :url => { :action => "edit" },
-                                           :html => { :id => 'news-form' } do |f| %>
+<% labelled_tabular_form_for :news, @news, :url => { :action => "update" },
+                                           :html => { :id => 'news-form', :method => :put } do |f| %>
 <%= render :partial => 'form', :locals => { :f => f } %>
 <%= submit_tag l(:button_save) %>
 <%= link_to_remote l(:label_preview), 
@@ -12,3 +12,7 @@
                    }, :accesskey => accesskey(:preview) %>
 <% end %>
 <div id="preview" class="wiki"></div>
+
+<% content_for :header_tags do %>
+  <%= stylesheet_link_tag 'scm' %>
+<% end %>
--- a/app/views/news/index.rhtml	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/news/index.rhtml	Fri Sep 24 15:51:28 2010 +0100
@@ -7,7 +7,7 @@
 
 <div id="add-news" style="display:none;">
 <h2><%=l(:label_news_new)%></h2>
-<% labelled_tabular_form_for :news, @news, :url => { :controller => 'news', :action => 'new', :project_id => @project },
+<% labelled_tabular_form_for :news, @news, :url => { :controller => 'news', :action => 'create', :project_id => @project },
                                            :html => { :id => 'news-form' } do |f| %>
 <%= render :partial => 'news/form', :locals => { :f => f } %>
 <%= submit_tag l(:button_create) %>
@@ -45,6 +45,7 @@
 
 <% content_for :header_tags do %>
   <%= auto_discovery_link_tag(:atom, params.merge({:format => 'atom', :page => nil, :key => User.current.rss_key})) %>
+  <%= stylesheet_link_tag 'scm' %>
 <% end %>
 
 <% html_title(l(:label_news_plural)) -%>
--- a/app/views/news/new.rhtml	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/news/new.rhtml	Fri Sep 24 15:51:28 2010 +0100
@@ -1,6 +1,6 @@
 <h2><%=l(:label_news_new)%></h2>
 
-<% labelled_tabular_form_for :news, @news, :url => { :controller => 'news', :action => 'new', :project_id => @project },
+<% labelled_tabular_form_for :news, @news, :url => { :controller => 'news', :action => 'create', :project_id => @project },
                                            :html => { :id => 'news-form' } do |f| %>
 <%= render :partial => 'news/form', :locals => { :f => f } %>
 <%= submit_tag l(:button_create) %>
--- a/app/views/news/show.rhtml	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/news/show.rhtml	Fri Sep 24 15:51:28 2010 +0100
@@ -11,8 +11,8 @@
 
 <% if authorize_for('news', 'edit') %>
 <div id="edit-news" style="display:none;">
-<% labelled_tabular_form_for :news, @news, :url => { :action => "edit", :id => @news },
-                                           :html => { :id => 'news-form' } do |f| %>
+<% labelled_tabular_form_for :news, @news, :url => { :action => "update", :id => @news },
+                                           :html => { :id => 'news-form', :method => :put } do |f| %>
 <%= render :partial => 'form', :locals => { :f => f } %>
 <%= submit_tag l(:button_save) %>
 <%= link_to_remote l(:label_preview), 
@@ -39,17 +39,17 @@
 <% @comments.each do |comment| %>
     <% next if comment.new_record? %>
     <div class="contextual">
-    <%= link_to_if_authorized image_tag('delete.png'), {:controller => 'news', :action => 'destroy_comment', :id => @news, :comment_id => comment},
-                                                       :confirm => l(:text_are_you_sure), :method => :post, :title => l(:button_delete) %>
+    <%= link_to_if_authorized image_tag('delete.png'), {:controller => 'comments', :action => 'destroy', :id => @news, :comment_id => comment},
+                                                       :confirm => l(:text_are_you_sure), :method => :delete, :title => l(:button_delete) %>
     </div>
     <h4><%= avatar(comment.author, :size => "24") %><%= authoring comment.created_on, comment.author %></h4>
     <%= textilizable(comment.comments) %>
 <% end if @comments.any? %>
 </div>
 
-<% if authorize_for 'news', 'add_comment' %>
+<% if authorize_for 'comments', 'create' %>
 <p><%= toggle_link l(:label_comment_add), "add_comment_form", :focus => "comment_comments" %></p>
-<% form_tag({:action => 'add_comment', :id => @news}, :id => "add_comment_form", :style => "display:none;") do %>
+<% form_tag({:controller => 'comments', :action => 'create', :id => @news}, :id => "add_comment_form", :style => "display:none;") do %>
 <div class="box">
     <%= text_area 'comment', 'comments', :cols => 80, :rows => 15, :class => 'wiki-edit' %>
     <%= wikitoolbar_for 'comment_comments' %>
--- a/app/views/previews/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/previews/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/app/views/previews
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-08-25T15:27:56.276389Z
+2010-09-23T14:37:44.631740Z
 359c6608ef716c8b3b62fd96c241a680
 2010-08-18T15:01:35.032314Z
 3946
--- a/app/views/projects/.svn/all-wcprops	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/projects/.svn/all-wcprops	Fri Sep 24 15:51:28 2010 +0100
@@ -1,19 +1,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 43
-/svn/!svn/ver/4009/trunk/app/views/projects
-END
-activity.rhtml
-K 25
-svn:wc:ra_dav:version-url
-V 58
-/svn/!svn/ver/3123/trunk/app/views/projects/activity.rhtml
-END
-list_files.rhtml
-K 25
-svn:wc:ra_dav:version-url
-V 60
-/svn/!svn/ver/2515/trunk/app/views/projects/list_files.rhtml
+/svn/!svn/ver/4097/trunk/app/views/projects
 END
 settings.rhtml
 K 25
@@ -37,7 +25,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 55
-/svn/!svn/ver/3802/trunk/app/views/projects/index.rhtml
+/svn/!svn/ver/4069/trunk/app/views/projects/index.rhtml
 END
 copy.rhtml
 K 25
@@ -45,6 +33,12 @@
 V 54
 /svn/!svn/ver/3608/trunk/app/views/projects/copy.rhtml
 END
+new.html.erb
+K 25
+svn:wc:ra_dav:version-url
+V 56
+/svn/!svn/ver/4069/trunk/app/views/projects/new.html.erb
+END
 show.xml.builder
 K 25
 svn:wc:ra_dav:version-url
@@ -55,19 +49,13 @@
 K 25
 svn:wc:ra_dav:version-url
 V 54
-/svn/!svn/ver/4009/trunk/app/views/projects/show.rhtml
-END
-roadmap.rhtml
-K 25
-svn:wc:ra_dav:version-url
-V 57
-/svn/!svn/ver/3547/trunk/app/views/projects/roadmap.rhtml
+/svn/!svn/ver/4095/trunk/app/views/projects/show.rhtml
 END
 _edit.rhtml
 K 25
 svn:wc:ra_dav:version-url
-V 54
-/svn/!svn/ver/725/trunk/app/views/projects/_edit.rhtml
+V 55
+/svn/!svn/ver/4071/trunk/app/views/projects/_edit.rhtml
 END
 list_members.rhtml
 K 25
@@ -81,21 +69,9 @@
 V 65
 /svn/!svn/ver/4009/trunk/app/views/projects/_members_box.html.erb
 END
-add_file.rhtml
-K 25
-svn:wc:ra_dav:version-url
-V 58
-/svn/!svn/ver/2117/trunk/app/views/projects/add_file.rhtml
-END
-add.rhtml
-K 25
-svn:wc:ra_dav:version-url
-V 53
-/svn/!svn/ver/2493/trunk/app/views/projects/add.rhtml
-END
 destroy.rhtml
 K 25
 svn:wc:ra_dav:version-url
 V 57
-/svn/!svn/ver/2304/trunk/app/views/projects/destroy.rhtml
+/svn/!svn/ver/4071/trunk/app/views/projects/destroy.rhtml
 END
--- a/app/views/projects/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/projects/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,14 +1,14 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/app/views/projects
 http://redmine.rubyforge.org/svn
 
 
 
-2010-08-19T22:24:37.242219Z
-4009
+2010-09-17T15:55:08.377083Z
+4097
 edavis10
 
 
@@ -26,81 +26,13 @@
 
 e93f8b46-1217-0410-a6f0-8f06a7374b81
 
-activity.rhtml
-file
-
-
-
-
-2010-07-23T14:49:45.448096Z
-9e6d9091be2c8769f8e262500d974f84
-2009-12-06T10:28:20.099964Z
-3123
-jplang
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-3266
-
-list_files.rhtml
-file
-
-
-
-
-2010-07-23T14:49:45.448096Z
-16c06fe2c8804ee915c85bda9ce4d012
-2009-02-22T11:04:17.806795Z
-2515
-jplang
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-1874
-
 settings.rhtml
 file
 
 
 
 
-2010-07-23T14:49:45.448096Z
+2010-09-23T14:37:44.643780Z
 66d45b68c4615d2b502b2c6d06cf0951
 2009-09-12T09:13:13.676884Z
 2871
@@ -134,7 +66,7 @@
 
 
 
-2010-08-25T15:27:56.490492Z
+2010-09-23T14:37:44.639741Z
 d332741d76f19cf9b39b22e0394caaa4
 2010-08-04T00:59:15.949103Z
 3910
@@ -168,7 +100,7 @@
 
 
 
-2010-07-23T14:49:45.448096Z
+2010-09-23T14:37:44.643780Z
 1d385c279ed6afca9347a892c07c4ffb
 2010-05-01T14:21:59.060695Z
 3731
@@ -202,10 +134,10 @@
 
 
 
-2010-07-23T14:49:45.448096Z
-8aca069b25d15a771c943b570b3f3b09
-2010-06-20T16:29:12.112949Z
-3802
+2010-09-24T12:48:28.959844Z
+cb60b85b211b8c78058e4ccc5cdefc82
+2010-09-07T15:00:27.481481Z
+4069
 edavis10
 has-props
 
@@ -228,7 +160,7 @@
 
 
 
-1156
+1155
 
 copy.rhtml
 file
@@ -236,7 +168,7 @@
 
 
 
-2010-07-23T14:49:45.448096Z
+2010-09-23T14:37:44.643780Z
 26653788620aef89a25b8ad819144e03
 2010-03-21T11:17:29.163519Z
 3608
@@ -267,13 +199,47 @@
 settings
 dir
 
+new.html.erb
+file
+
+
+
+
+2010-09-24T12:48:28.956343Z
+6d0e913f69c037dd846dd198fec2dbe8
+2010-09-07T15:00:27.481481Z
+4069
+edavis10
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+627
+
 show.xml.builder
 file
 
 
 
 
-2010-07-23T14:49:45.448096Z
+2010-09-23T14:37:44.651752Z
 d929d078c5f7b1c69f90434ce06f9629
 2010-05-01T14:21:41.568021Z
 3730
@@ -307,10 +273,10 @@
 
 
 
-2010-08-25T15:27:56.490492Z
-11a7c4fb80713e263a60d1bf33c52435
-2010-08-19T22:24:37.242219Z
-4009
+2010-09-24T12:48:28.959844Z
+a05a461d7466e582d0fc7d4c1fc286e7
+2010-09-17T04:22:46.020207Z
+4095
 edavis10
 has-props
 
@@ -333,41 +299,7 @@
 
 
 
-3450
-
-roadmap.rhtml
-file
-
-
-
-
-2010-07-23T14:49:45.448096Z
-5cbc6d297c46f9a31ecb44caf12cec28
-2010-03-06T18:03:25.729816Z
-3547
-jplang
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-2096
+3476
 
 _edit.rhtml
 file
@@ -375,11 +307,11 @@
 
 
 
-2010-07-23T14:49:45.448096Z
-6e3457e2f15ef933d9d4c1701db019dc
-2007-09-14T11:34:08.234701Z
-725
-jplang
+2010-09-24T12:48:28.959844Z
+e3a6cb86da5f31cae6c8fc0a4e6bad35
+2010-09-09T18:57:21.507694Z
+4071
+edavis10
 has-props
 
 
@@ -401,7 +333,7 @@
 
 
 
-207
+253
 
 list_members.rhtml
 file
@@ -409,7 +341,7 @@
 
 
 
-2010-07-23T14:49:45.448096Z
+2010-09-23T14:37:44.643780Z
 0f2ffbd9b87d4ecc80f5c8bcac0cc9e9
 2009-10-29T18:44:16.555741Z
 2990
@@ -443,7 +375,7 @@
 
 
 
-2010-08-25T15:27:56.490492Z
+2010-09-23T14:37:44.639741Z
 f880a7facfac62099e5b3fc4ebe862b3
 2010-08-19T22:24:37.242219Z
 4009
@@ -471,85 +403,17 @@
 
 279
 
-add_file.rhtml
-file
-
-
-
-
-2010-07-23T14:49:45.448096Z
-0d53fc80ec16263f4a4eea2573e0ab95
-2008-12-09T18:00:27.293399Z
-2117
-jplang
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-583
-
-add.rhtml
-file
-
-
-
-
-2010-07-23T14:49:45.448096Z
-1b87d6693ad9e573f7144a26d23274ee
-2009-02-21T11:04:50.579477Z
-2493
-jplang
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-624
-
 destroy.rhtml
 file
 
 
 
 
-2010-07-23T14:49:45.448096Z
-e1e2c8a96f2dbb5cfbdb91405f5b7500
-2009-01-24T11:31:15.122844Z
-2304
-jplang
+2010-09-24T12:48:28.959844Z
+308fa6064dd3e4d6d85be448402ba7b2
+2010-09-09T18:57:21.507694Z
+4071
+edavis10
 has-props
 
 
@@ -571,5 +435,5 @@
 
 
 
-610
+586
 
--- a/app/views/projects/.svn/prop-base/activity.rhtml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-K 13
-svn:eol-style
-V 6
-native
-END
--- a/app/views/projects/.svn/prop-base/add.rhtml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-K 13
-svn:eol-style
-V 6
-native
-END
--- a/app/views/projects/.svn/prop-base/add_file.rhtml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-K 13
-svn:eol-style
-V 6
-native
-END
--- a/app/views/projects/.svn/prop-base/list_files.rhtml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-K 13
-svn:eol-style
-V 6
-native
-END
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/app/views/projects/.svn/prop-base/new.html.erb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -0,0 +1,5 @@
+K 13
+svn:eol-style
+V 6
+native
+END
--- a/app/views/projects/.svn/prop-base/roadmap.rhtml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-K 13
-svn:eol-style
-V 6
-native
-END
--- a/app/views/projects/.svn/text-base/_edit.rhtml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/projects/.svn/text-base/_edit.rhtml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -1,4 +1,4 @@
-<% labelled_tabular_form_for :project, @project, :url => { :action => "edit", :id => @project } do |f| %>
+<% labelled_tabular_form_for :project, @project, :url => project_path(@project), :html => {:method => (@project.new_record? ? :post : :put) } do |f| %>
 <%= render :partial => 'form', :locals => { :f => f } %>
 <%= submit_tag l(:button_save) %>
 <% end %>
--- a/app/views/projects/.svn/text-base/activity.rhtml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-<h2><%= @author.nil? ? l(:label_activity) : l(:label_user_activity, link_to_user(@author)) %></h2>
-<p class="subtitle"><%= l(:label_date_from_to, :start => format_date(@date_to - @days), :end => format_date(@date_to-1)) %></p>
-
-<div id="activity">
-<% @events_by_day.keys.sort.reverse.each do |day| %>
-<h3><%= format_activity_day(day) %></h3>
-<dl>
-<% @events_by_day[day].sort {|x,y| y.event_datetime <=> x.event_datetime }.each do |e| -%>
-  <dt class="<%= e.event_type %>  <%= User.current.logged? && e.respond_to?(:event_author) && User.current == e.event_author ? 'me' : nil %>">
-	<%= avatar(e.event_author, :size => "24") if e.respond_to?(:event_author) %>
-  <span class="time"><%= format_time(e.event_datetime, false) %></span>
-  <%= content_tag('span', h(e.project), :class => 'project') if @project.nil? || @project != e.project %>
-  <%= link_to format_activity_title(e.event_title), e.event_url %></dt>
-  <dd><span class="description"><%= format_activity_description(e.event_description) %></span>
-  <span class="author"><%= e.event_author if e.respond_to?(:event_author) %></span></dd>
-<% end -%>
-</dl>
-<% end -%>
-</div>
-
-<%= content_tag('p', l(:label_no_data), :class => 'nodata') if @events_by_day.empty? %>
-
-<div style="float:left;">
-<%= link_to_remote(('&#171; ' + l(:label_previous)), 
-                   {:update => "content", :url => params.merge(:from => @date_to - @days - 1), :method => :get, :complete => 'window.scrollTo(0,0)'},
-                   {:href => url_for(params.merge(:from => @date_to - @days - 1)),
-                    :title => l(:label_date_from_to, :start => format_date(@date_to - 2*@days), :end => format_date(@date_to - @days - 1))}) %>
-</div>
-<div style="float:right;">
-<%= link_to_remote((l(:label_next) + ' &#187;'), 
-                   {:update => "content", :url => params.merge(:from => @date_to + @days - 1), :method => :get, :complete => 'window.scrollTo(0,0)'},
-                   {:href => url_for(params.merge(:from => @date_to + @days - 1)),
-                    :title => l(:label_date_from_to, :start => format_date(@date_to), :end => format_date(@date_to + @days - 1))}) unless @date_to >= Date.today %>
-</div>
-&nbsp;
-<% other_formats_links do |f| %>
-	<%= f.link_to 'Atom', :url => params.merge(:from => nil, :key => User.current.rss_key) %>
-<% end %>
-
-<% content_for :header_tags do %>
-<%= auto_discovery_link_tag(:atom, params.merge(:format => 'atom', :from => nil, :key => User.current.rss_key)) %>
-<% end %>
-
-<% content_for :sidebar do %>
-<% form_tag({}, :method => :get) do %>
-<h3><%= l(:label_activity) %></h3>
-<p><% @activity.event_types.each do |t| %>
-<%= check_box_tag "show_#{t}", 1, @activity.scope.include?(t) %>
-<%= link_to(l("label_#{t.singularize}_plural"), {"show_#{t}" => 1, :user_id => params[:user_id]})%>
-<br />
-<% end %></p>
-<% if @project && @project.descendants.active.any? %>
-	  <%= hidden_field_tag 'with_subprojects', 0 %>
-    <p><label><%= check_box_tag 'with_subprojects', 1, @with_subprojects %> <%=l(:label_subproject_plural)%></label></p>
-<% end %>
-<%= hidden_field_tag('user_id', params[:user_id]) unless params[:user_id].blank? %>
-<p><%= submit_tag l(:button_apply), :class => 'button-small', :name => nil %></p>
-<% end %>
-<% end %>
-
-<% html_title(l(:label_activity), @author) -%>
--- a/app/views/projects/.svn/text-base/add.rhtml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-<h2><%=l(:label_project_new)%></h2>
-
-<% labelled_tabular_form_for :project, @project, :url => { :action => "add" } do |f| %>
-<%= render :partial => 'form', :locals => { :f => f } %>
-
-<fieldset class="box"><legend><%= l(:label_module_plural) %></legend>
-<% Redmine::AccessControl.available_project_modules.each do |m| %>
-    <label class="floating">
-    <%= check_box_tag 'enabled_modules[]', m, @project.module_enabled?(m) %>
-    <%= l_or_humanize(m, :prefix => "project_module_") %>
-    </label>
-<% end %>
-</fieldset>
-
-<%= submit_tag l(:button_save) %>
-<%= javascript_tag "Form.Element.focus('project_name');" %>
-<% end %>
--- a/app/views/projects/.svn/text-base/add_file.rhtml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-<h2><%=l(:label_attachment_new)%></h2>
-
-<%= error_messages_for 'attachment' %>
-<div class="box">
-<% form_tag({ :action => 'add_file', :id => @project }, :multipart => true, :class => "tabular") do %>
-
-<% if @versions.any? %>
-<p><label for="version_id"><%=l(:field_version)%></label>
-<%= select_tag "version_id", content_tag('option', '') +
-														 options_from_collection_for_select(@versions, "id", "name") %></p>
-<% end %>
-
-<p><label><%=l(:label_attachment_plural)%></label><%= render :partial => 'attachments/form' %></p>
-</div>
-<%= submit_tag l(:button_add) %>
-<% end %> 
--- a/app/views/projects/.svn/text-base/destroy.rhtml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/projects/.svn/text-base/destroy.rhtml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -8,7 +8,7 @@
 <% end %>
 </p>
 <p>
-    <% form_tag({:controller => 'projects', :action => 'destroy', :id => @project_to_destroy}) do %>
+    <% form_tag(project_path(@project_to_destroy), :method => :delete) do %>
     <label><%= check_box_tag 'confirm', 1 %> <%= l(:general_text_Yes) %></label>
     <%= submit_tag l(:button_delete) %>
     <% end %>
--- a/app/views/projects/.svn/text-base/index.rhtml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/projects/.svn/text-base/index.rhtml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -3,10 +3,10 @@
 <% end %>
 
 <div class="contextual">
-    <%= link_to(l(:label_project_new), {:controller => 'projects', :action => 'add'}, :class => 'icon icon-add') + ' |' if User.current.allowed_to?(:add_project, nil, :global => true) %>
+    <%= link_to(l(:label_project_new), {:controller => 'projects', :action => 'new'}, :class => 'icon icon-add') + ' |' if User.current.allowed_to?(:add_project, nil, :global => true) %>
     <%= link_to(l(:label_issue_view_all), { :controller => 'issues' }) + ' |' if User.current.allowed_to?(:view_issues, nil, :global => true) %>
     <%= link_to(l(:label_overall_spent_time), { :controller => 'time_entries' }) + ' |' if User.current.allowed_to?(:view_time_entries, nil, :global => true) %>
-    <%= link_to l(:label_overall_activity), { :controller => 'projects', :action => 'activity' }%>
+    <%= link_to l(:label_overall_activity), { :controller => 'activities', :action => 'index' }%>
 </div>
 
 <h2><%=l(:label_project_plural)%></h2>
--- a/app/views/projects/.svn/text-base/list_files.rhtml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-<div class="contextual">
-<%= link_to_if_authorized l(:label_attachment_new), {:controller => 'projects', :action => 'add_file', :id => @project}, :class => 'icon icon-add' %>
-</div>
-
-<h2><%=l(:label_attachment_plural)%></h2>
-
-<% delete_allowed = User.current.allowed_to?(:manage_files, @project) %>
-
-<table class="list files">
-  <thead><tr>
-    <%= sort_header_tag('filename', :caption => l(:field_filename)) %>
-    <%= sort_header_tag('created_on', :caption => l(:label_date), :default_order => 'desc') %>
-    <%= sort_header_tag('size', :caption => l(:field_filesize), :default_order => 'desc') %>
-    <%= sort_header_tag('downloads', :caption => l(:label_downloads_abbr), :default_order => 'desc') %>
-    <th>MD5</th>
-    <th></th>
-  </tr></thead>
-  <tbody>
-<% @containers.each do |container| %>	
-  <% next if container.attachments.empty? -%>
-	<% if container.is_a?(Version) -%>
-  <tr>
-  	<th colspan="6" align="left">
-  		<%= link_to(h(container), {:controller => 'versions', :action => 'show', :id => container}, :class => "icon icon-package") %>
-		</th>
-	</tr>
-	<% end -%>
-  <% container.attachments.each do |file| %>		
-  <tr class="file <%= cycle("odd", "even") %>">
-    <td class="filename"><%= link_to_attachment file, :download => true, :title => file.description %></td>
-    <td class="created_on"><%= format_time(file.created_on) %></td>
-    <td class="filesize"><%= number_to_human_size(file.filesize) %></td>
-    <td class="downloads"><%= file.downloads %></td>
-    <td class="digest"><%= file.digest %></td>
-    <td align="center">
-    <%= link_to(image_tag('delete.png'), {:controller => 'attachments', :action => 'destroy', :id => file},
-																				 :confirm => l(:text_are_you_sure), :method => :post) if delete_allowed %>
-    </td>
-  </tr>		
-  <% end
-  reset_cycle %>
-<% end %>
-  </tbody>
-</table>
-
-<% html_title(l(:label_attachment_plural)) -%>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/app/views/projects/.svn/text-base/new.html.erb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -0,0 +1,17 @@
+<h2><%=l(:label_project_new)%></h2>
+
+<% labelled_tabular_form_for :project, @project, :url => { :action => "create" } do |f| %>
+<%= render :partial => 'form', :locals => { :f => f } %>
+
+<fieldset class="box"><legend><%= l(:label_module_plural) %></legend>
+<% Redmine::AccessControl.available_project_modules.each do |m| %>
+    <label class="floating">
+    <%= check_box_tag 'enabled_modules[]', m, @project.module_enabled?(m) %>
+    <%= l_or_humanize(m, :prefix => "project_module_") %>
+    </label>
+<% end %>
+</fieldset>
+
+<%= submit_tag l(:button_save) %>
+<%= javascript_tag "Form.Element.focus('project_name');" %>
+<% end %>
--- a/app/views/projects/.svn/text-base/roadmap.rhtml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-<h2><%=l(:label_roadmap)%></h2>
-
-<% if @versions.empty? %>
-<p class="nodata"><%= l(:label_no_data) %></p>
-<% else %>
-<div id="roadmap">
-<% @versions.each do |version| %>   
-    <h3 class="version"><%= tag 'a', :name => version.name %><%= link_to_version version %></h3>
-    <%= render :partial => 'versions/overview', :locals => {:version => version} %>
-    <%= render(:partial => "wiki/content", :locals => {:content => version.wiki_page.content}) if version.wiki_page %>
-
-    <% if (issues = @issues_by_version[version]) && issues.size > 0 %>
-    <% form_tag({}) do -%>	
-    <table class="list related-issues">
-    <caption><%= l(:label_related_issues) %></caption>
-    <%- issues.each do |issue| -%>
-      <tr class="hascontextmenu">
-        <td class="checkbox"><%= check_box_tag 'ids[]', issue.id %></td>
-        <td><%= link_to_issue(issue, :project => (@project != issue.project)) %></td>
-      </tr>
-    <%- end -%>
-    </table>
-    <% end %>
-    <% end %>
-    <%= call_hook :view_projects_roadmap_version_bottom, :version => version %>
-<% end %>
-</div>
-<% end %>
-
-<% content_for :sidebar do %>
-<% form_tag({}, :method => :get) do %>
-<h3><%= l(:label_roadmap) %></h3>
-<% @trackers.each do |tracker| %>
-  <label><%= check_box_tag "tracker_ids[]", tracker.id, (@selected_tracker_ids.include? tracker.id.to_s), :id => nil %>
-  <%=h tracker.name %></label><br />
-<% end %>
-<br />
-<label for="completed"><%= check_box_tag "completed", 1, params[:completed] %> <%= l(:label_show_completed_versions) %></label>
-<% if @project.descendants.active.any? %>
-	<%= hidden_field_tag 'with_subprojects', 0 %>
-  <br /><label><%= check_box_tag 'with_subprojects', 1, @with_subprojects %> <%=l(:label_subproject_plural)%></label>
-<% end %>
-<p><%= submit_tag l(:button_apply), :class => 'button-small', :name => nil %></p>
-<% end %>
-
-<h3><%= l(:label_version_plural) %></h3>
-<% @versions.each do |version| %>
-<%= link_to format_version_name(version), "##{version.name}" %><br />
-<% end %>
-<% end %>
-
-<% html_title(l(:label_roadmap)) %>
-
-<%= context_menu :controller => 'issues', :action => 'context_menu' %>
--- a/app/views/projects/.svn/text-base/show.rhtml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/projects/.svn/text-base/show.rhtml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -1,6 +1,6 @@
 <div class="contextual">
 	<% if User.current.allowed_to?(:add_subprojects, @project) %>
-		<%= link_to l(:label_subproject_new), {:controller => 'projects', :action => 'add', :parent_id => @project}, :class => 'icon icon-add' %>
+		<%= link_to l(:label_subproject_new), {:controller => 'projects', :action => 'new', :parent_id => @project}, :class => 'icon icon-add' %>
 	<% end %>
 </div>
 
@@ -74,7 +74,7 @@
 <% end %>
 
 <% content_for :header_tags do %>
-<%= auto_discovery_link_tag(:atom, {:action => 'activity', :id => @project, :format => 'atom', :key => User.current.rss_key}) %>
+<%= auto_discovery_link_tag(:atom, {:controller => 'activities', :action => 'index', :id => @project, :format => 'atom', :key => User.current.rss_key}) %>
 <% end %>
 
 <% html_title(l(:label_overview)) -%>
--- a/app/views/projects/_edit.rhtml	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/projects/_edit.rhtml	Fri Sep 24 15:51:28 2010 +0100
@@ -1,4 +1,4 @@
-<% labelled_tabular_form_for :project, @project, :url => { :action => "edit", :id => @project } do |f| %>
+<% labelled_tabular_form_for :project, @project, :url => project_path(@project), :html => {:method => (@project.new_record? ? :post : :put) } do |f| %>
 <%= render :partial => 'form', :locals => { :f => f } %>
 <%= submit_tag l(:button_save) %>
 <% end %>
--- a/app/views/projects/activity.rhtml	Fri Sep 24 15:33:13 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-<h2><%= @author.nil? ? l(:label_activity) : l(:label_user_activity, link_to_user(@author)) %></h2>
-<p class="subtitle"><%= l(:label_date_from_to, :start => format_date(@date_to - @days), :end => format_date(@date_to-1)) %></p>
-
-<div id="activity">
-<% @events_by_day.keys.sort.reverse.each do |day| %>
-<h3><%= format_activity_day(day) %></h3>
-<dl>
-<% @events_by_day[day].sort {|x,y| y.event_datetime <=> x.event_datetime }.each do |e| -%>
-  <dt class="<%= e.event_type %>  <%= User.current.logged? && e.respond_to?(:event_author) && User.current == e.event_author ? 'me' : nil %>">
-	<%= avatar(e.event_author, :size => "24") if e.respond_to?(:event_author) %>
-  <span class="time"><%= format_time(e.event_datetime, false) %></span>
-  <%= content_tag('span', h(e.project), :class => 'project') if @project.nil? || @project != e.project %>
-  <%= link_to format_activity_title(e.event_title), e.event_url %></dt>
-  <dd><span class="description"><%= format_activity_description(e.event_description) %></span>
-  <span class="author"><%= e.event_author if e.respond_to?(:event_author) %></span></dd>
-<% end -%>
-</dl>
-<% end -%>
-</div>
-
-<%= content_tag('p', l(:label_no_data), :class => 'nodata') if @events_by_day.empty? %>
-
-<div style="float:left;">
-<%= link_to_remote(('&#171; ' + l(:label_previous)), 
-                   {:update => "content", :url => params.merge(:from => @date_to - @days - 1), :method => :get, :complete => 'window.scrollTo(0,0)'},
-                   {:href => url_for(params.merge(:from => @date_to - @days - 1)),
-                    :title => l(:label_date_from_to, :start => format_date(@date_to - 2*@days), :end => format_date(@date_to - @days - 1))}) %>
-</div>
-<div style="float:right;">
-<%= link_to_remote((l(:label_next) + ' &#187;'), 
-                   {:update => "content", :url => params.merge(:from => @date_to + @days - 1), :method => :get, :complete => 'window.scrollTo(0,0)'},
-                   {:href => url_for(params.merge(:from => @date_to + @days - 1)),
-                    :title => l(:label_date_from_to, :start => format_date(@date_to), :end => format_date(@date_to + @days - 1))}) unless @date_to >= Date.today %>
-</div>
-&nbsp;
-<% other_formats_links do |f| %>
-	<%= f.link_to 'Atom', :url => params.merge(:from => nil, :key => User.current.rss_key) %>
-<% end %>
-
-<% content_for :header_tags do %>
-<%= auto_discovery_link_tag(:atom, params.merge(:format => 'atom', :from => nil, :key => User.current.rss_key)) %>
-<% end %>
-
-<% content_for :sidebar do %>
-<% form_tag({}, :method => :get) do %>
-<h3><%= l(:label_activity) %></h3>
-<p><% @activity.event_types.each do |t| %>
-<%= check_box_tag "show_#{t}", 1, @activity.scope.include?(t) %>
-<%= link_to(l("label_#{t.singularize}_plural"), {"show_#{t}" => 1, :user_id => params[:user_id]})%>
-<br />
-<% end %></p>
-<% if @project && @project.descendants.active.any? %>
-	  <%= hidden_field_tag 'with_subprojects', 0 %>
-    <p><label><%= check_box_tag 'with_subprojects', 1, @with_subprojects %> <%=l(:label_subproject_plural)%></label></p>
-<% end %>
-<%= hidden_field_tag('user_id', params[:user_id]) unless params[:user_id].blank? %>
-<p><%= submit_tag l(:button_apply), :class => 'button-small', :name => nil %></p>
-<% end %>
-<% end %>
-
-<% html_title(l(:label_activity), @author) -%>
--- a/app/views/projects/add.rhtml	Fri Sep 24 15:33:13 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-<h2><%=l(:label_project_new)%></h2>
-
-<% labelled_tabular_form_for :project, @project, :url => { :action => "add" } do |f| %>
-<%= render :partial => 'form', :locals => { :f => f } %>
-
-<fieldset class="box"><legend><%= l(:label_module_plural) %></legend>
-<% Redmine::AccessControl.available_project_modules.each do |m| %>
-    <label class="floating">
-    <%= check_box_tag 'enabled_modules[]', m, @project.module_enabled?(m) %>
-    <%= l_or_humanize(m, :prefix => "project_module_") %>
-    </label>
-<% end %>
-</fieldset>
-
-<%= submit_tag l(:button_save) %>
-<%= javascript_tag "Form.Element.focus('project_name');" %>
-<% end %>
--- a/app/views/projects/add_file.rhtml	Fri Sep 24 15:33:13 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-<h2><%=l(:label_attachment_new)%></h2>
-
-<%= error_messages_for 'attachment' %>
-<div class="box">
-<% form_tag({ :action => 'add_file', :id => @project }, :multipart => true, :class => "tabular") do %>
-
-<% if @versions.any? %>
-<p><label for="version_id"><%=l(:field_version)%></label>
-<%= select_tag "version_id", content_tag('option', '') +
-														 options_from_collection_for_select(@versions, "id", "name") %></p>
-<% end %>
-
-<p><label><%=l(:label_attachment_plural)%></label><%= render :partial => 'attachments/form' %></p>
-</div>
-<%= submit_tag l(:button_add) %>
-<% end %> 
--- a/app/views/projects/destroy.rhtml	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/projects/destroy.rhtml	Fri Sep 24 15:51:28 2010 +0100
@@ -8,7 +8,7 @@
 <% end %>
 </p>
 <p>
-    <% form_tag({:controller => 'projects', :action => 'destroy', :id => @project_to_destroy}) do %>
+    <% form_tag(project_path(@project_to_destroy), :method => :delete) do %>
     <label><%= check_box_tag 'confirm', 1 %> <%= l(:general_text_Yes) %></label>
     <%= submit_tag l(:button_delete) %>
     <% end %>
--- a/app/views/projects/index.rhtml	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/projects/index.rhtml	Fri Sep 24 15:51:28 2010 +0100
@@ -3,10 +3,10 @@
 <% end %>
 
 <div class="contextual">
-    <%= link_to(l(:label_project_new), {:controller => 'projects', :action => 'add'}, :class => 'icon icon-add') + ' |' if User.current.allowed_to?(:add_project, nil, :global => true) %>
+    <%= link_to(l(:label_project_new), {:controller => 'projects', :action => 'new'}, :class => 'icon icon-add') + ' |' if User.current.allowed_to?(:add_project, nil, :global => true) %>
     <%= link_to(l(:label_issue_view_all), { :controller => 'issues' }) + ' |' if User.current.allowed_to?(:view_issues, nil, :global => true) %>
     <%= link_to(l(:label_overall_spent_time), { :controller => 'time_entries' }) + ' |' if User.current.allowed_to?(:view_time_entries, nil, :global => true) %>
-    <%= link_to l(:label_overall_activity), { :controller => 'projects', :action => 'activity' }%>
+    <%= link_to l(:label_overall_activity), { :controller => 'activities', :action => 'index' }%>
 </div>
 
 <h2><%=l(:label_project_plural)%></h2>
--- a/app/views/projects/list_files.rhtml	Fri Sep 24 15:33:13 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-<div class="contextual">
-<%= link_to_if_authorized l(:label_attachment_new), {:controller => 'projects', :action => 'add_file', :id => @project}, :class => 'icon icon-add' %>
-</div>
-
-<h2><%=l(:label_attachment_plural)%></h2>
-
-<% delete_allowed = User.current.allowed_to?(:manage_files, @project) %>
-
-<table class="list files">
-  <thead><tr>
-    <%= sort_header_tag('filename', :caption => l(:field_filename)) %>
-    <%= sort_header_tag('created_on', :caption => l(:label_date), :default_order => 'desc') %>
-    <%= sort_header_tag('size', :caption => l(:field_filesize), :default_order => 'desc') %>
-    <%= sort_header_tag('downloads', :caption => l(:label_downloads_abbr), :default_order => 'desc') %>
-    <th>MD5</th>
-    <th></th>
-  </tr></thead>
-  <tbody>
-<% @containers.each do |container| %>	
-  <% next if container.attachments.empty? -%>
-	<% if container.is_a?(Version) -%>
-  <tr>
-  	<th colspan="6" align="left">
-  		<%= link_to(h(container), {:controller => 'versions', :action => 'show', :id => container}, :class => "icon icon-package") %>
-		</th>
-	</tr>
-	<% end -%>
-  <% container.attachments.each do |file| %>		
-  <tr class="file <%= cycle("odd", "even") %>">
-    <td class="filename"><%= link_to_attachment file, :download => true, :title => file.description %></td>
-    <td class="created_on"><%= format_time(file.created_on) %></td>
-    <td class="filesize"><%= number_to_human_size(file.filesize) %></td>
-    <td class="downloads"><%= file.downloads %></td>
-    <td class="digest"><%= file.digest %></td>
-    <td align="center">
-    <%= link_to(image_tag('delete.png'), {:controller => 'attachments', :action => 'destroy', :id => file},
-																				 :confirm => l(:text_are_you_sure), :method => :post) if delete_allowed %>
-    </td>
-  </tr>		
-  <% end
-  reset_cycle %>
-<% end %>
-  </tbody>
-</table>
-
-<% html_title(l(:label_attachment_plural)) -%>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/app/views/projects/new.html.erb	Fri Sep 24 15:51:28 2010 +0100
@@ -0,0 +1,17 @@
+<h2><%=l(:label_project_new)%></h2>
+
+<% labelled_tabular_form_for :project, @project, :url => { :action => "create" } do |f| %>
+<%= render :partial => 'form', :locals => { :f => f } %>
+
+<fieldset class="box"><legend><%= l(:label_module_plural) %></legend>
+<% Redmine::AccessControl.available_project_modules.each do |m| %>
+    <label class="floating">
+    <%= check_box_tag 'enabled_modules[]', m, @project.module_enabled?(m) %>
+    <%= l_or_humanize(m, :prefix => "project_module_") %>
+    </label>
+<% end %>
+</fieldset>
+
+<%= submit_tag l(:button_save) %>
+<%= javascript_tag "Form.Element.focus('project_name');" %>
+<% end %>
--- a/app/views/projects/roadmap.rhtml	Fri Sep 24 15:33:13 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-<h2><%=l(:label_roadmap)%></h2>
-
-<% if @versions.empty? %>
-<p class="nodata"><%= l(:label_no_data) %></p>
-<% else %>
-<div id="roadmap">
-<% @versions.each do |version| %>   
-    <h3 class="version"><%= tag 'a', :name => version.name %><%= link_to_version version %></h3>
-    <%= render :partial => 'versions/overview', :locals => {:version => version} %>
-    <%= render(:partial => "wiki/content", :locals => {:content => version.wiki_page.content}) if version.wiki_page %>
-
-    <% if (issues = @issues_by_version[version]) && issues.size > 0 %>
-    <% form_tag({}) do -%>	
-    <table class="list related-issues">
-    <caption><%= l(:label_related_issues) %></caption>
-    <%- issues.each do |issue| -%>
-      <tr class="hascontextmenu">
-        <td class="checkbox"><%= check_box_tag 'ids[]', issue.id %></td>
-        <td><%= link_to_issue(issue, :project => (@project != issue.project)) %></td>
-      </tr>
-    <%- end -%>
-    </table>
-    <% end %>
-    <% end %>
-    <%= call_hook :view_projects_roadmap_version_bottom, :version => version %>
-<% end %>
-</div>
-<% end %>
-
-<% content_for :sidebar do %>
-<% form_tag({}, :method => :get) do %>
-<h3><%= l(:label_roadmap) %></h3>
-<% @trackers.each do |tracker| %>
-  <label><%= check_box_tag "tracker_ids[]", tracker.id, (@selected_tracker_ids.include? tracker.id.to_s), :id => nil %>
-  <%=h tracker.name %></label><br />
-<% end %>
-<br />
-<label for="completed"><%= check_box_tag "completed", 1, params[:completed] %> <%= l(:label_show_completed_versions) %></label>
-<% if @project.descendants.active.any? %>
-	<%= hidden_field_tag 'with_subprojects', 0 %>
-  <br /><label><%= check_box_tag 'with_subprojects', 1, @with_subprojects %> <%=l(:label_subproject_plural)%></label>
-<% end %>
-<p><%= submit_tag l(:button_apply), :class => 'button-small', :name => nil %></p>
-<% end %>
-
-<h3><%= l(:label_version_plural) %></h3>
-<% @versions.each do |version| %>
-<%= link_to format_version_name(version), "##{version.name}" %><br />
-<% end %>
-<% end %>
-
-<% html_title(l(:label_roadmap)) %>
-
-<%= context_menu :controller => 'issues', :action => 'context_menu' %>
--- a/app/views/projects/settings/.svn/all-wcprops	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/projects/settings/.svn/all-wcprops	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 52
-/svn/!svn/ver/3748/trunk/app/views/projects/settings
+/svn/!svn/ver/4097/trunk/app/views/projects/settings
 END
 _issue_categories.rhtml
 K 25
@@ -25,7 +25,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 70
-/svn/!svn/ver/3734/trunk/app/views/projects/settings/_activities.rhtml
+/svn/!svn/ver/4075/trunk/app/views/projects/settings/_activities.rhtml
 END
 _modules.rhtml
 K 25
@@ -37,7 +37,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 68
-/svn/!svn/ver/3734/trunk/app/views/projects/settings/_versions.rhtml
+/svn/!svn/ver/4097/trunk/app/views/projects/settings/_versions.rhtml
 END
 _boards.rhtml
 K 25
--- a/app/views/projects/settings/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/projects/settings/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,14 +1,14 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/app/views/projects/settings
 http://redmine.rubyforge.org/svn
 
 
 
-2010-05-24T20:21:08.426768Z
-3748
+2010-09-17T15:55:08.377083Z
+4097
 edavis10
 
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:45.440128Z
+2010-09-23T14:37:44.647782Z
 3f93ad7df3a43b70f004499bacc76cdf
 2010-05-09T11:19:15.980195Z
 3734
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:45.440128Z
+2010-09-23T14:37:44.651752Z
 1fd25ea9af565c8a79ac61c918cbd3fc
 2010-01-21T18:21:56.082191Z
 3336
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:45.440128Z
+2010-09-23T14:37:44.651752Z
 1ee550d6ee54d0c528eee8bb142c496d
 2008-02-12T22:43:37.870107Z
 1143
@@ -134,11 +134,11 @@
 
 
 
-2010-07-23T14:49:45.440128Z
-a8681045d6e179a2b229697f5fbd50dc
-2010-05-09T11:19:15.980195Z
-3734
-jplang
+2010-09-24T12:48:28.400004Z
+14f07f16cc36c896e6dc4d975c7ef807
+2010-09-10T16:00:49.687515Z
+4075
+edavis10
 
 
 
@@ -160,7 +160,7 @@
 
 
 
-1467
+1421
 
 _modules.rhtml
 file
@@ -168,7 +168,7 @@
 
 
 
-2010-07-23T14:49:45.440128Z
+2010-09-23T14:37:44.651752Z
 2a5ae51933e3fabbecd609e3cfbf1d7d
 2010-01-21T18:21:56.082191Z
 3336
@@ -202,11 +202,11 @@
 
 
 
-2010-07-23T14:49:45.440128Z
-9fe08e7dd841c1caaa9438e8e55ed5b7
-2010-05-09T11:19:15.980195Z
-3734
-jplang
+2010-09-24T12:48:28.400004Z
+968f7fd3c259f3f7d4b173c4e6096cb6
+2010-09-17T15:55:08.377083Z
+4097
+edavis10
 has-props
 
 
@@ -228,7 +228,7 @@
 
 
 
-2013
+1979
 
 _boards.rhtml
 file
@@ -236,7 +236,7 @@
 
 
 
-2010-07-23T14:49:45.440128Z
+2010-09-23T14:37:44.647782Z
 1d2eb75d2aa1ff66975f701d6b45c059
 2010-05-09T11:19:15.980195Z
 3734
@@ -270,7 +270,7 @@
 
 
 
-2010-07-23T14:49:45.440128Z
+2010-09-23T14:37:44.651752Z
 0f929da546db6f63f0ecbf2b3647fa6d
 2010-05-24T20:21:08.426768Z
 3748
--- a/app/views/projects/settings/.svn/text-base/_activities.rhtml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/projects/settings/.svn/text-base/_activities.rhtml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -1,4 +1,4 @@
-<% form_tag({:controller => 'projects', :action => 'save_activities', :id => @project}, :class => "tabular") do %>
+<% form_tag(project_project_enumerations_path(@project), :method => :put, :class => "tabular") do %>
 
 <table class="list">
   <thead><tr>
@@ -32,7 +32,7 @@
 </table>
 
 <div class="contextual">
-<%= link_to(l(:button_reset), {:controller => 'projects', :action => 'reset_activities', :id => @project},
+<%= link_to(l(:button_reset), project_project_enumerations_path(@project),
 						:method => :delete,
 						:confirm => l(:text_are_you_sure),
             :class => 'icon icon-del') %>
--- a/app/views/projects/settings/.svn/text-base/_versions.rhtml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/projects/settings/.svn/text-base/_versions.rhtml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -21,7 +21,7 @@
     <td class="buttons">
     	<% if version.project == @project %>
     		<%= link_to_if_authorized l(:button_edit),   {:controller => 'versions', :action => 'edit', :id => version }, :class => 'icon icon-edit' %>
-    		<%= link_to_if_authorized l(:button_delete), {:controller => 'versions', :action => 'destroy', :id => version}, :confirm => l(:text_are_you_sure), :method => :post, :class => 'icon icon-del' %>
+    		<%= link_to_if_authorized l(:button_delete), {:controller => 'versions', :action => 'destroy', :id => version}, :confirm => l(:text_are_you_sure), :method => :delete, :class => 'icon icon-del' %>
     	<% end %>
    	</td>
     </tr>
@@ -34,7 +34,7 @@
 
 <div class="contextual">
 <% if @project.versions.any? %>
-	<%= link_to l(:label_close_versions), {:controller => 'versions', :action => 'close_completed', :project_id => @project}, :method => :post %>
+	<%= link_to l(:label_close_versions), close_completed_project_versions_path(@project), :method => :put %>
 <% end %>
 </div>
 
--- a/app/views/projects/settings/_activities.rhtml	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/projects/settings/_activities.rhtml	Fri Sep 24 15:51:28 2010 +0100
@@ -1,4 +1,4 @@
-<% form_tag({:controller => 'projects', :action => 'save_activities', :id => @project}, :class => "tabular") do %>
+<% form_tag(project_project_enumerations_path(@project), :method => :put, :class => "tabular") do %>
 
 <table class="list">
   <thead><tr>
@@ -32,7 +32,7 @@
 </table>
 
 <div class="contextual">
-<%= link_to(l(:button_reset), {:controller => 'projects', :action => 'reset_activities', :id => @project},
+<%= link_to(l(:button_reset), project_project_enumerations_path(@project),
 						:method => :delete,
 						:confirm => l(:text_are_you_sure),
             :class => 'icon icon-del') %>
--- a/app/views/projects/settings/_versions.rhtml	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/projects/settings/_versions.rhtml	Fri Sep 24 15:51:28 2010 +0100
@@ -21,7 +21,7 @@
     <td class="buttons">
     	<% if version.project == @project %>
     		<%= link_to_if_authorized l(:button_edit),   {:controller => 'versions', :action => 'edit', :id => version }, :class => 'icon icon-edit' %>
-    		<%= link_to_if_authorized l(:button_delete), {:controller => 'versions', :action => 'destroy', :id => version}, :confirm => l(:text_are_you_sure), :method => :post, :class => 'icon icon-del' %>
+    		<%= link_to_if_authorized l(:button_delete), {:controller => 'versions', :action => 'destroy', :id => version}, :confirm => l(:text_are_you_sure), :method => :delete, :class => 'icon icon-del' %>
     	<% end %>
    	</td>
     </tr>
@@ -34,7 +34,7 @@
 
 <div class="contextual">
 <% if @project.versions.any? %>
-	<%= link_to l(:label_close_versions), {:controller => 'versions', :action => 'close_completed', :project_id => @project}, :method => :post %>
+	<%= link_to l(:label_close_versions), close_completed_project_versions_path(@project), :method => :put %>
 <% end %>
 </div>
 
--- a/app/views/projects/show.rhtml	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/projects/show.rhtml	Fri Sep 24 15:51:28 2010 +0100
@@ -1,6 +1,6 @@
 <div class="contextual">
 	<% if User.current.allowed_to?(:add_subprojects, @project) %>
-		<%= link_to l(:label_subproject_new), {:controller => 'projects', :action => 'add', :parent_id => @project}, :class => 'icon icon-add' %>
+		<%= link_to l(:label_subproject_new), {:controller => 'projects', :action => 'new', :parent_id => @project}, :class => 'icon icon-add' %>
 	<% end %>
 </div>
 
@@ -74,7 +74,7 @@
 <% end %>
 
 <% content_for :header_tags do %>
-<%= auto_discovery_link_tag(:atom, {:action => 'activity', :id => @project, :format => 'atom', :key => User.current.rss_key}) %>
+<%= auto_discovery_link_tag(:atom, {:controller => 'activities', :action => 'index', :id => @project, :format => 'atom', :key => User.current.rss_key}) %>
 <% end %>
 
 <% html_title(l(:label_overview)) -%>
--- a/app/views/queries/.svn/all-wcprops	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/queries/.svn/all-wcprops	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 42
-/svn/!svn/ver/3746/trunk/app/views/queries
+/svn/!svn/ver/4093/trunk/app/views/queries
 END
 _columns.rhtml
 K 25
@@ -25,7 +25,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 57
-/svn/!svn/ver/3746/trunk/app/views/queries/_filters.rhtml
+/svn/!svn/ver/4093/trunk/app/views/queries/_filters.rhtml
 END
 index.rhtml
 K 25
--- a/app/views/queries/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/queries/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,15 +1,15 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/app/views/queries
 http://redmine.rubyforge.org/svn
 
 
 
-2010-05-24T18:07:43.351533Z
-3746
-edavis10
+2010-09-16T21:33:49.399868Z
+4093
+jbbarth
 
 
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:45.584094Z
+2010-09-23T14:37:44.655737Z
 409f5db0d48427b0a9077eb0804d13f9
 2009-11-28T11:59:45.246623Z
 3106
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:45.584094Z
+2010-09-23T14:37:44.655737Z
 9d6312b02ab4243f7f899de6e37e260b
 2009-11-28T11:34:12.256986Z
 3105
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:45.584094Z
+2010-09-23T14:37:44.655737Z
 b2d901380f08af968240e5dc82b90fc4
 2007-10-01T11:39:34.113865Z
 784
@@ -134,11 +134,11 @@
 
 
 
-2010-07-23T14:49:45.584094Z
-0a182dd7a2d7e6fd511625d9450c4004
-2010-05-24T18:07:43.351533Z
-3746
-edavis10
+2010-09-24T12:48:29.616044Z
+d479118259de825ac50b66801909c8f4
+2010-09-16T21:33:49.399868Z
+4093
+jbbarth
 has-props
 
 
@@ -160,7 +160,7 @@
 
 
 
-3973
+4456
 
 index.rhtml
 file
@@ -168,7 +168,7 @@
 
 
 
-2010-07-23T14:49:45.584094Z
+2010-09-23T14:37:44.655737Z
 214378e8574ddebfc274513b423f51a2
 2007-11-05T18:38:42.932265Z
 887
@@ -202,7 +202,7 @@
 
 
 
-2010-07-23T14:49:45.584094Z
+2010-09-23T14:37:44.655737Z
 d42e88aaf70a65db3b609d51857fb711
 2009-09-20T14:06:57.257282Z
 2895
--- a/app/views/queries/.svn/text-base/_filters.rhtml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/queries/.svn/text-base/_filters.rhtml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -53,6 +53,18 @@
         select.multiple = true;
     }
 }
+
+function apply_filters_observer() {
+  $$("#query_form input[type=text]").invoke("observe", "keypress", function(e){
+    if(e.keyCode == Event.KEY_RETURN) {
+      <%= remote_function(:url => { :set_filter => 1},
+                          :update => "content",
+                          :with => "Form.serialize('query_form')",
+                          :complete => "e.stop(); apply_filters_observer()") %>
+    }
+  });
+}
+Event.observe(document,"dom:loaded", apply_filters_observer);
 //]]>
 </script>
 
--- a/app/views/queries/_filters.rhtml	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/queries/_filters.rhtml	Fri Sep 24 15:51:28 2010 +0100
@@ -53,6 +53,18 @@
         select.multiple = true;
     }
 }
+
+function apply_filters_observer() {
+  $$("#query_form input[type=text]").invoke("observe", "keypress", function(e){
+    if(e.keyCode == Event.KEY_RETURN) {
+      <%= remote_function(:url => { :set_filter => 1},
+                          :update => "content",
+                          :with => "Form.serialize('query_form')",
+                          :complete => "e.stop(); apply_filters_observer()") %>
+    }
+  });
+}
+Event.observe(document,"dom:loaded", apply_filters_observer);
 //]]>
 </script>
 
--- a/app/views/reports/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/reports/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/app/views/reports
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:44.916131Z
+2010-09-23T14:37:44.659737Z
 d150c943c49d910431268e3b5b148f5d
 2010-06-20T03:37:42.430179Z
 3797
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:44.916131Z
+2010-09-23T14:37:44.659737Z
 faf9d3d189ffa44154f1272c333808b5
 2010-01-07T21:12:16.849243Z
 3283
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:44.916131Z
+2010-09-23T14:37:44.659737Z
 b0028f798f34512aa7c5f8c014ad73f7
 2010-01-07T21:12:16.849243Z
 3283
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:44.916131Z
+2010-09-23T14:37:44.659737Z
 58b8758e6fc3da959cb412ae64e9237f
 2007-03-12T17:59:02.654744Z
 333
--- a/app/views/repositories/.svn/all-wcprops	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/repositories/.svn/all-wcprops	Fri Sep 24 15:51:28 2010 +0100
@@ -1,13 +1,13 @@
 K 25
 svn:wc:ra_dav:version-url
 V 47
-/svn/!svn/ver/3939/trunk/app/views/repositories
+/svn/!svn/ver/4100/trunk/app/views/repositories
 END
-_navigation.rhtml
+stats.rhtml
 K 25
 svn:wc:ra_dav:version-url
-V 65
-/svn/!svn/ver/3086/trunk/app/views/repositories/_navigation.rhtml
+V 59
+/svn/!svn/ver/2895/trunk/app/views/repositories/stats.rhtml
 END
 revision.rhtml
 K 25
@@ -15,11 +15,11 @@
 V 62
 /svn/!svn/ver/3216/trunk/app/views/repositories/revision.rhtml
 END
-stats.rhtml
+_navigation.rhtml
 K 25
 svn:wc:ra_dav:version-url
-V 59
-/svn/!svn/ver/2895/trunk/app/views/repositories/stats.rhtml
+V 65
+/svn/!svn/ver/3086/trunk/app/views/repositories/_navigation.rhtml
 END
 entry.rhtml
 K 25
@@ -33,11 +33,11 @@
 V 71
 /svn/!svn/ver/3309/trunk/app/views/repositories/_dir_list_content.rhtml
 END
-_dir_list.rhtml
+diff.rhtml
 K 25
 svn:wc:ra_dav:version-url
-V 63
-/svn/!svn/ver/1032/trunk/app/views/repositories/_dir_list.rhtml
+V 58
+/svn/!svn/ver/4100/trunk/app/views/repositories/diff.rhtml
 END
 changes.rhtml
 K 25
@@ -45,11 +45,11 @@
 V 61
 /svn/!svn/ver/2840/trunk/app/views/repositories/changes.rhtml
 END
-diff.rhtml
+_dir_list.rhtml
 K 25
 svn:wc:ra_dav:version-url
-V 58
-/svn/!svn/ver/3939/trunk/app/views/repositories/diff.rhtml
+V 63
+/svn/!svn/ver/1032/trunk/app/views/repositories/_dir_list.rhtml
 END
 annotate.rhtml
 K 25
@@ -57,36 +57,36 @@
 V 62
 /svn/!svn/ver/3585/trunk/app/views/repositories/annotate.rhtml
 END
+show.rhtml
+K 25
+svn:wc:ra_dav:version-url
+V 58
+/svn/!svn/ver/2849/trunk/app/views/repositories/show.rhtml
+END
 _revisions.rhtml
 K 25
 svn:wc:ra_dav:version-url
 V 64
 /svn/!svn/ver/3216/trunk/app/views/repositories/_revisions.rhtml
 END
-show.rhtml
-K 25
-svn:wc:ra_dav:version-url
-V 58
-/svn/!svn/ver/2849/trunk/app/views/repositories/show.rhtml
-END
 revisions.rhtml
 K 25
 svn:wc:ra_dav:version-url
 V 63
 /svn/!svn/ver/2840/trunk/app/views/repositories/revisions.rhtml
 END
+committers.rhtml
+K 25
+svn:wc:ra_dav:version-url
+V 64
+/svn/!svn/ver/2137/trunk/app/views/repositories/committers.rhtml
+END
 _link_to_functions.rhtml
 K 25
 svn:wc:ra_dav:version-url
 V 72
 /svn/!svn/ver/2849/trunk/app/views/repositories/_link_to_functions.rhtml
 END
-committers.rhtml
-K 25
-svn:wc:ra_dav:version-url
-V 64
-/svn/!svn/ver/2137/trunk/app/views/repositories/committers.rhtml
-END
 _breadcrumbs.rhtml
 K 25
 svn:wc:ra_dav:version-url
--- a/app/views/repositories/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/repositories/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,14 +1,14 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/app/views/repositories
 http://redmine.rubyforge.org/svn
 
 
 
-2010-08-13T06:09:38.390923Z
-3939
+2010-09-18T16:50:08.696338Z
+4100
 jbbarth
 
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:45.280131Z
+2010-09-23T14:37:44.671737Z
 bafc924316c90c31dc1cd9a6daf124ef
 2009-09-20T14:06:57.257282Z
 2895
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:45.280131Z
+2010-09-24T11:56:52.963971Z
 bd525284ca2c21084be84d21823b552a
 2009-12-22T23:23:54.920563Z
 3216
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:45.280131Z
+2010-09-23T14:37:44.671737Z
 59dbb643c447518053d9cdb1a86cb5ef
 2009-11-24T17:55:45.336708Z
 3086
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:45.280131Z
+2010-09-23T14:37:44.671737Z
 012e1437dd062433556a6281439b3900
 2009-08-15T22:41:40.505056Z
 2840
@@ -168,7 +168,7 @@
 
 
 
-2010-07-23T14:49:45.280131Z
+2010-09-24T11:56:52.940032Z
 6aa753bae9bc68aad5b77b2114b10a32
 2010-01-13T17:27:37.119848Z
 3309
@@ -202,10 +202,10 @@
 
 
 
-2010-08-25T15:27:56.362489Z
-cec4b3fb05e92e567a4d4139e3ff5871
-2010-08-13T06:09:38.390923Z
-3939
+2010-09-24T12:48:28.351870Z
+c13f0d8b3dc374fad7b308711950dc4d
+2010-09-18T16:50:08.696338Z
+4100
 jbbarth
 has-props
 
@@ -228,7 +228,7 @@
 
 
 
-976
+991
 
 changes.rhtml
 file
@@ -236,7 +236,7 @@
 
 
 
-2010-07-23T14:49:45.284128Z
+2010-09-23T14:37:44.671737Z
 cde7a86a5ec0cf9915b0540c9acbb820
 2009-08-15T22:41:40.505056Z
 2840
@@ -270,7 +270,7 @@
 
 
 
-2010-07-23T14:49:45.284128Z
+2010-09-23T14:37:44.667779Z
 8c004b6e433ac1a6ca64c97a35512f28
 2008-01-02T22:41:53.166620Z
 1032
@@ -304,7 +304,7 @@
 
 
 
-2010-07-23T14:49:45.284128Z
+2010-09-24T11:56:52.959974Z
 0c8eb649e97f4f9335fb916ac76146f3
 2010-03-14T13:22:50.317701Z
 3585
@@ -338,7 +338,7 @@
 
 
 
-2010-07-23T14:49:45.280131Z
+2010-09-23T14:37:44.671737Z
 5608dc13675382cd62688058ca0b77d1
 2009-09-01T12:13:17.386587Z
 2849
@@ -372,7 +372,7 @@
 
 
 
-2010-07-23T14:49:45.280131Z
+2010-09-24T11:56:52.952009Z
 e7a6bdebdc02cae051102093180af71e
 2009-12-22T23:23:54.920563Z
 3216
@@ -406,7 +406,7 @@
 
 
 
-2010-07-23T14:49:45.280131Z
+2010-09-23T14:37:44.671737Z
 f2efac3274e0c46cf32037372907a644
 2009-08-15T22:41:40.505056Z
 2840
@@ -440,7 +440,7 @@
 
 
 
-2010-07-23T14:49:45.280131Z
+2010-09-23T14:37:44.671737Z
 2db96b0dcaab42c8e67b7fc590618fd3
 2008-12-15T18:02:25.843227Z
 2137
@@ -474,7 +474,7 @@
 
 
 
-2010-07-23T14:49:45.280131Z
+2010-09-23T14:37:44.667779Z
 a86ac8a045315f57fa32acb29c08f19f
 2009-09-01T12:13:17.386587Z
 2849
@@ -508,7 +508,7 @@
 
 
 
-2010-07-23T14:49:45.284128Z
+2010-09-23T14:37:44.667779Z
 17818458dc60da031d02ae162930c320
 2010-03-27T12:46:45.030950Z
 3613
--- a/app/views/repositories/.svn/text-base/diff.rhtml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/repositories/.svn/text-base/diff.rhtml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 <h2><%= l(:label_revision) %> <%= format_revision(@rev_to) + ':' if @rev_to %><%= format_revision(@rev) %> <%=h @path %></h2>
 
 <!-- Choose view type -->
-<% form_tag({:path => @path}, :method => 'get') do %>
+<% form_tag({:path => to_path_param(@path)}, :method => 'get') do %>
   <%= hidden_field_tag('rev', params[:rev]) if params[:rev] %>
   <%= hidden_field_tag('rev_to', params[:rev_to]) if params[:rev_to] %>
   <p><label><%= l(:label_view_diff) %></label>
--- a/app/views/repositories/diff.rhtml	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/repositories/diff.rhtml	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 <h2><%= l(:label_revision) %> <%= format_revision(@rev_to) + ':' if @rev_to %><%= format_revision(@rev) %> <%=h @path %></h2>
 
 <!-- Choose view type -->
-<% form_tag({:path => @path}, :method => 'get') do %>
+<% form_tag({:path => to_path_param(@path)}, :method => 'get') do %>
   <%= hidden_field_tag('rev', params[:rev]) if params[:rev] %>
   <%= hidden_field_tag('rev_to', params[:rev_to]) if params[:rev_to] %>
   <p><label><%= l(:label_view_diff) %></label>
--- a/app/views/roles/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/roles/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/app/views/roles
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:45.268157Z
+2010-09-23T14:37:44.675736Z
 cbcd3851055c3f5a5aa20d005b086872
 2009-07-05T12:22:02.133266Z
 2810
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:45.268157Z
+2010-09-23T14:37:44.675736Z
 82f5657ab6c01b56b039af0cf2312ade
 2010-02-15T16:41:16.346582Z
 3435
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:45.268157Z
+2010-09-23T14:37:44.675736Z
 652c40985320a23285c8e27439418f22
 2008-10-24T15:24:35.832581Z
 1943
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:45.268157Z
+2010-09-23T14:37:44.675736Z
 4bcaa15de1de193dd1f98128b71a420b
 2009-10-25T13:28:36.522470Z
 2979
@@ -168,7 +168,7 @@
 
 
 
-2010-07-23T14:49:45.268157Z
+2010-09-23T14:37:44.675736Z
 0ff8206c0e77e6356f9d16ccaeff13e2
 2009-07-05T12:22:02.133266Z
 2810
--- a/app/views/search/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/search/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/app/views/search
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:45.124147Z
+2010-09-23T14:37:44.679779Z
 0235b1dd9d5f01dbaaab2b59dc006f2e
 2009-09-20T14:06:57.257282Z
 2895
--- a/app/views/settings/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/settings/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/app/views/settings
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:44.932128Z
+2010-09-23T14:37:44.683778Z
 cafaf758de88dd8df50aeb849e398b77
 2009-12-19T20:07:09.039389Z
 3198
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:44.932128Z
+2010-09-23T14:37:44.683778Z
 c0378ca172ae32638c076f39dd11e980
 2010-02-06T10:40:21.867545Z
 3372
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:44.932128Z
+2010-09-23T14:37:44.683778Z
 2de580f7dfb3779ee4f31dc76e717482
 2010-07-20T23:50:15.173990Z
 3859
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:44.932128Z
+2010-09-23T14:37:44.683778Z
 1da887b84f272fe4cde6fafaf198529a
 2009-12-23T18:35:19.208194Z
 3226
@@ -168,7 +168,7 @@
 
 
 
-2010-07-23T14:49:44.932128Z
+2010-09-23T14:37:44.687777Z
 1836fa87f24f7f62eafaed8d1886ca67
 2007-10-13T14:11:06.987513Z
 837
@@ -202,7 +202,7 @@
 
 
 
-2010-07-23T14:49:44.932128Z
+2010-09-23T14:37:44.683778Z
 af00d651b626c36ca365bd748f55ec40
 2009-12-19T20:07:09.039389Z
 3198
@@ -236,7 +236,7 @@
 
 
 
-2010-07-23T14:49:44.932128Z
+2010-09-23T14:37:44.687777Z
 a629426fc7edef8be6c4545bce9a5abd
 2009-09-12T09:13:13.676884Z
 2871
@@ -270,7 +270,7 @@
 
 
 
-2010-07-23T14:49:44.932128Z
+2010-09-23T14:37:44.687777Z
 25dd64f95ba856913a30a41296c7de0a
 2010-02-16T22:41:59.625572Z
 3440
@@ -304,7 +304,7 @@
 
 
 
-2010-07-23T14:49:44.932128Z
+2010-09-23T14:37:44.683778Z
 92e1b26a91b51f283320507abecc8871
 2009-12-19T20:07:09.039389Z
 3198
@@ -338,7 +338,7 @@
 
 
 
-2010-07-23T14:49:44.932128Z
+2010-09-23T14:37:44.687777Z
 de489dd7dc60d569a855c1f33d941552
 2009-12-19T20:07:09.039389Z
 3198
--- a/app/views/timelog/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/timelog/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/app/views/timelog
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:44.924095Z
+2010-09-23T14:37:44.691790Z
 4ccce502c5846d291cb6f447a270088c
 2009-11-14T14:10:09.589573Z
 3043
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:44.924095Z
+2010-09-23T14:37:44.691790Z
 d4d7e674e383ee8ff3ec998c7f79c0e3
 2009-09-20T09:30:41.402075Z
 2893
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:44.924095Z
+2010-09-23T14:37:44.691790Z
 5fa73daf0a67b2a39fd10320bcd7ab45
 2008-06-07T15:08:59.933638Z
 1503
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:44.924095Z
+2010-09-23T14:37:44.691790Z
 dd63fc253dacd5a2276337c08eef6ff5
 2009-09-20T14:06:57.257282Z
 2895
@@ -168,7 +168,7 @@
 
 
 
-2010-07-23T14:49:44.924095Z
+2010-09-23T14:37:44.691790Z
 8a0ba6a20c98dd2462e40f684f623874
 2009-10-21T22:34:28.905707Z
 2946
@@ -202,7 +202,7 @@
 
 
 
-2010-07-23T14:49:44.924095Z
+2010-09-23T14:37:44.691790Z
 2b0b5861c9909cd61032b34b2c224052
 2009-09-25T00:39:02.685664Z
 2902
--- a/app/views/trackers/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/trackers/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/app/views/trackers
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:45.184128Z
+2010-09-23T14:37:44.695779Z
 952031a6216d1b67897c30936b8c656c
 2010-02-15T16:41:27.289923Z
 3437
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:45.184128Z
+2010-09-23T14:37:44.695779Z
 0b8a4f0aead4d21c20c9cc8dd29141e5
 2009-12-12T15:23:22.060140Z
 3162
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:45.184128Z
+2010-09-23T14:37:44.695779Z
 ac4b0e11130741048a5f7c7405bff3de
 2009-12-09T11:03:55.646494Z
 3146
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:45.184128Z
+2010-09-23T14:37:44.695779Z
 cf313c286d40c5c44da29ad261b01421
 2009-12-09T11:03:55.646494Z
 3146
--- a/app/views/users/.svn/all-wcprops	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/users/.svn/all-wcprops	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 40
-/svn/!svn/ver/3924/trunk/app/views/users
+/svn/!svn/ver/4047/trunk/app/views/users
 END
 _general.rhtml
 K 25
@@ -25,7 +25,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 51
-/svn/!svn/ver/3924/trunk/app/views/users/show.rhtml
+/svn/!svn/ver/4047/trunk/app/views/users/show.rhtml
 END
 _form.rhtml
 K 25
--- a/app/views/users/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/users/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,15 +1,15 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/app/views/users
 http://redmine.rubyforge.org/svn
 
 
 
-2010-08-08T07:07:20.961363Z
-3924
-jbbarth
+2010-08-27T14:05:54.014502Z
+4047
+edavis10
 
 
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:45.112090Z
+2010-09-23T14:37:44.699769Z
 1ab6a8599eeede034b90f463a85d1042
 2009-11-13T18:11:10.447527Z
 3037
@@ -66,7 +66,7 @@
 
 
 
-2010-08-25T15:27:55.698551Z
+2010-09-23T14:37:44.699769Z
 f5982959a0afd1bb9e499afe303de33d
 2010-08-08T07:07:20.961363Z
 3924
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:45.112090Z
+2010-09-23T14:37:44.699769Z
 fd7d948f1de9d087496cfb8f01ff76db
 2009-12-12T11:05:06.206786Z
 3160
@@ -134,11 +134,11 @@
 
 
 
-2010-08-25T15:27:55.698551Z
-8d9426ee08ca8d71477ddfe9041768b7
-2010-08-08T07:07:20.961363Z
-3924
-jbbarth
+2010-09-24T12:48:26.319756Z
+a56205296f0730d3ca46c249abcab568
+2010-08-27T14:05:54.014502Z
+4047
+edavis10
 has-props
 
 
@@ -160,7 +160,7 @@
 
 
 
-2601
+2598
 
 _form.rhtml
 file
@@ -168,7 +168,7 @@
 
 
 
-2010-07-23T14:49:45.116101Z
+2010-09-23T14:37:44.699769Z
 e0a6a33bb1cfe7131245520d553108e4
 2009-11-13T18:11:10.447527Z
 3037
@@ -202,7 +202,7 @@
 
 
 
-2010-07-23T14:49:45.116101Z
+2010-09-23T14:37:44.703792Z
 029f53d8ee91ea4b11874008ee6f3a71
 2010-02-26T16:01:04.817813Z
 3495
@@ -236,7 +236,7 @@
 
 
 
-2010-07-23T14:49:45.116101Z
+2010-09-23T14:37:44.703792Z
 16c60ad979f898ab6bfce6739979836c
 2010-03-17T20:46:22.413470Z
 3600
@@ -270,7 +270,7 @@
 
 
 
-2010-07-23T14:49:45.116101Z
+2010-09-23T14:37:44.703792Z
 bcadf1f2d1761aa7cdd622920597f4bb
 2009-12-20T10:51:33.049429Z
 3204
--- a/app/views/users/.svn/text-base/show.rhtml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/users/.svn/text-base/show.rhtml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -35,7 +35,7 @@
 <div class="splitcontentright">
 
 <% unless @events_by_day.empty? %>
-<h3><%= link_to l(:label_activity), :controller => 'projects', :action => 'activity', :id => nil, :user_id => @user, :from => @events_by_day.keys.first %></h3>
+<h3><%= link_to l(:label_activity), :controller => 'activities', :action => 'index', :id => nil, :user_id => @user, :from => @events_by_day.keys.first %></h3>
 
 <p>
 <%=l(:label_reported_issues)%>: <%= Issue.count(:conditions => ["author_id=?", @user.id]) %>
@@ -57,11 +57,11 @@
 </div>
 
 <% other_formats_links do |f| %>
-	<%= f.link_to 'Atom', :url => {:controller => 'projects', :action => 'activity', :id => nil, :user_id => @user, :key => User.current.rss_key} %>
+	<%= f.link_to 'Atom', :url => {:controller => 'activities', :action => 'index', :id => nil, :user_id => @user, :key => User.current.rss_key} %>
 <% end %>
 
 <% content_for :header_tags do %>
-		<%= auto_discovery_link_tag(:atom, :controller => 'projects', :action => 'activity', :user_id => @user, :format => :atom, :key => User.current.rss_key) %>
+		<%= auto_discovery_link_tag(:atom, :controller => 'activities', :action => 'index', :user_id => @user, :format => :atom, :key => User.current.rss_key) %>
 <% end %>
 <% end %>
 <%= call_hook :view_account_right_bottom, :user => @user %>
--- a/app/views/users/show.rhtml	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/users/show.rhtml	Fri Sep 24 15:51:28 2010 +0100
@@ -35,7 +35,7 @@
 <div class="splitcontentright">
 
 <% unless @events_by_day.empty? %>
-<h3><%= link_to l(:label_activity), :controller => 'projects', :action => 'activity', :id => nil, :user_id => @user, :from => @events_by_day.keys.first %></h3>
+<h3><%= link_to l(:label_activity), :controller => 'activities', :action => 'index', :id => nil, :user_id => @user, :from => @events_by_day.keys.first %></h3>
 
 <p>
 <%=l(:label_reported_issues)%>: <%= Issue.count(:conditions => ["author_id=?", @user.id]) %>
@@ -57,11 +57,11 @@
 </div>
 
 <% other_formats_links do |f| %>
-	<%= f.link_to 'Atom', :url => {:controller => 'projects', :action => 'activity', :id => nil, :user_id => @user, :key => User.current.rss_key} %>
+	<%= f.link_to 'Atom', :url => {:controller => 'activities', :action => 'index', :id => nil, :user_id => @user, :key => User.current.rss_key} %>
 <% end %>
 
 <% content_for :header_tags do %>
-		<%= auto_discovery_link_tag(:atom, :controller => 'projects', :action => 'activity', :user_id => @user, :format => :atom, :key => User.current.rss_key) %>
+		<%= auto_discovery_link_tag(:atom, :controller => 'activities', :action => 'index', :user_id => @user, :format => :atom, :key => User.current.rss_key) %>
 <% end %>
 <% end %>
 <%= call_hook :view_account_right_bottom, :user => @user %>
--- a/app/views/versions/.svn/all-wcprops	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/versions/.svn/all-wcprops	Fri Sep 24 15:51:28 2010 +0100
@@ -1,19 +1,25 @@
 K 25
 svn:wc:ra_dav:version-url
 V 43
-/svn/!svn/ver/3865/trunk/app/views/versions
+/svn/!svn/ver/4101/trunk/app/views/versions
+END
+index.html.erb
+K 25
+svn:wc:ra_dav:version-url
+V 58
+/svn/!svn/ver/4082/trunk/app/views/versions/index.html.erb
 END
 new.html.erb
 K 25
 svn:wc:ra_dav:version-url
 V 56
-/svn/!svn/ver/3548/trunk/app/views/versions/new.html.erb
+/svn/!svn/ver/4097/trunk/app/views/versions/new.html.erb
 END
 show.rhtml
 K 25
 svn:wc:ra_dav:version-url
 V 54
-/svn/!svn/ver/3865/trunk/app/views/versions/show.rhtml
+/svn/!svn/ver/4101/trunk/app/views/versions/show.rhtml
 END
 _form.rhtml
 K 25
@@ -24,8 +30,8 @@
 _issue_counts.rhtml
 K 25
 svn:wc:ra_dav:version-url
-V 62
-/svn/!svn/ver/955/trunk/app/views/versions/_issue_counts.rhtml
+V 63
+/svn/!svn/ver/4098/trunk/app/views/versions/_issue_counts.rhtml
 END
 _overview.rhtml
 K 25
@@ -36,6 +42,6 @@
 edit.rhtml
 K 25
 svn:wc:ra_dav:version-url
-V 53
-/svn/!svn/ver/333/trunk/app/views/versions/edit.rhtml
+V 54
+/svn/!svn/ver/4097/trunk/app/views/versions/edit.rhtml
 END
--- a/app/views/versions/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/versions/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,15 +1,15 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/app/views/versions
 http://redmine.rubyforge.org/svn
 
 
 
-2010-07-25T09:29:17.138530Z
-3865
-jplang
+2010-09-18T17:30:22.509570Z
+4101
+jbbarth
 
 
 
@@ -26,17 +26,51 @@
 
 e93f8b46-1217-0410-a6f0-8f06a7374b81
 
+index.html.erb
+file
+
+
+
+
+2010-09-24T12:48:28.303878Z
+a50c2acc01c8d25be8e2c8cd082a2272
+2010-09-11T14:00:23.147923Z
+4082
+jbbarth
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+2070
+
 new.html.erb
 file
 
 
 
 
-2010-07-23T14:49:45.132098Z
-1a57274279e91ae8c8da8124cd7fa957
-2010-03-06T18:25:01.409596Z
-3548
-jplang
+2010-09-24T12:48:28.303878Z
+d53190d87d1c24abce0fc949f816a706
+2010-09-17T15:55:08.377083Z
+4097
+edavis10
 has-props
 
 
@@ -58,7 +92,7 @@
 
 
 
-236
+248
 
 show.rhtml
 file
@@ -66,11 +100,11 @@
 
 
 
-2010-07-28T11:07:47.152444Z
-8379ceed7dc6c8649080fbc6460897c5
-2010-07-25T09:29:17.138530Z
-3865
-jplang
+2010-09-24T12:48:28.303878Z
+ead91e611c5c576ba9128ca9bd97277f
+2010-09-18T17:30:22.509570Z
+4101
+jbbarth
 has-props
 
 
@@ -92,7 +126,7 @@
 
 
 
-1664
+1954
 
 _form.rhtml
 file
@@ -100,7 +134,7 @@
 
 
 
-2010-07-23T14:49:45.136102Z
+2010-09-23T14:37:44.707788Z
 acf01b501fb1e345fd7abf572233ead9
 2009-12-06T10:28:20.099964Z
 3123
@@ -134,11 +168,11 @@
 
 
 
-2010-07-23T14:49:45.136102Z
-f77eb48614079f656db49bfe44e9d52f
-2007-12-07T10:26:07.864320Z
-955
-jplang
+2010-09-24T12:48:28.303878Z
+b5364f2d6f4cb92d1f747cd3dda5098f
+2010-09-17T16:11:43.740142Z
+4098
+edavis10
 has-props
 
 
@@ -160,7 +194,7 @@
 
 
 
-1335
+1350
 
 _overview.rhtml
 file
@@ -168,7 +202,7 @@
 
 
 
-2010-07-23T14:49:45.136102Z
+2010-09-23T14:37:44.707788Z
 6e68f24a6d6571388df3018bc915d37a
 2009-11-15T15:22:55.021661Z
 3064
@@ -202,11 +236,11 @@
 
 
 
-2010-07-23T14:49:45.136102Z
-4d1512bdb4d5a66d342d4d3c0d90438c
-2007-03-12T17:59:02.654744Z
-333
-jplang
+2010-09-24T12:48:28.303878Z
+85ddc3502659176221220bebef002d6c
+2010-09-17T15:55:08.377083Z
+4097
+edavis10
 has-props
 
 
@@ -228,5 +262,5 @@
 
 
 
-224
+271
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/app/views/versions/.svn/prop-base/index.html.erb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -0,0 +1,5 @@
+K 13
+svn:eol-style
+V 6
+native
+END
--- a/app/views/versions/.svn/text-base/_issue_counts.rhtml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/versions/.svn/text-base/_issue_counts.rhtml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -5,7 +5,7 @@
        select_tag('status_by',
                    status_by_options_for_select(criteria),
                    :id => 'status_by_select',
-                   :onchange => remote_function(:url => { :action => :status_by, :id => version },
+                   :onchange => remote_function(:url => status_by_project_version_path(version.project, version),
                                                 :with => "Form.serialize('status_by_form')"))) %>
 </legend>
 <% if counts.empty? %>
--- a/app/views/versions/.svn/text-base/edit.rhtml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/versions/.svn/text-base/edit.rhtml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -1,6 +1,6 @@
 <h2><%=l(:label_version)%></h2>
 
-<% labelled_tabular_form_for :version, @version, :url => { :action => 'edit' } do |f| %>
+<% labelled_tabular_form_for :version, @version, :url => project_version_path(@project, @version), :html => {:method => :put} do |f| %>
 <%= render :partial => 'form', :locals => { :f => f } %>
 <%= submit_tag l(:button_save) %>
 <% end %>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/app/views/versions/.svn/text-base/index.html.erb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -0,0 +1,54 @@
+<h2><%=l(:label_roadmap)%></h2>
+
+<% if @versions.empty? %>
+<p class="nodata"><%= l(:label_no_data) %></p>
+<% else %>
+<div id="roadmap">
+<% @versions.each do |version| %>   
+    <h3 class="version"><%= tag 'a', :name => version.name %><%= link_to_version version %></h3>
+    <%= render :partial => 'versions/overview', :locals => {:version => version} %>
+    <%= render(:partial => "wiki/content", :locals => {:content => version.wiki_page.content}) if version.wiki_page %>
+
+    <% if (issues = @issues_by_version[version]) && issues.size > 0 %>
+    <% form_tag({}) do -%>	
+    <table class="list related-issues">
+    <caption><%= l(:label_related_issues) %></caption>
+    <%- issues.each do |issue| -%>
+      <tr class="hascontextmenu">
+        <td class="checkbox"><%= check_box_tag 'ids[]', issue.id %></td>
+        <td><%= link_to_issue(issue, :project => (@project != issue.project)) %></td>
+      </tr>
+    <%- end -%>
+    </table>
+    <% end %>
+    <% end %>
+    <%= call_hook :view_projects_roadmap_version_bottom, :version => version %>
+<% end %>
+</div>
+<% end %>
+
+<% content_for :sidebar do %>
+<% form_tag({}, :method => :get) do %>
+<h3><%= l(:label_roadmap) %></h3>
+<% @trackers.each do |tracker| %>
+  <label><%= check_box_tag "tracker_ids[]", tracker.id, (@selected_tracker_ids.include? tracker.id.to_s), :id => nil %>
+  <%=h tracker.name %></label><br />
+<% end %>
+<br />
+<label for="completed"><%= check_box_tag "completed", 1, params[:completed] %> <%= l(:label_show_completed_versions) %></label>
+<% if @project.descendants.active.any? %>
+	<%= hidden_field_tag 'with_subprojects', 0 %>
+  <br /><label><%= check_box_tag 'with_subprojects', 1, @with_subprojects %> <%=l(:label_subproject_plural)%></label>
+<% end %>
+<p><%= submit_tag l(:button_apply), :class => 'button-small', :name => nil %></p>
+<% end %>
+
+<h3><%= l(:label_version_plural) %></h3>
+<% @versions.each do |version| %>
+<%= link_to format_version_name(version), "##{version.name}" %><br />
+<% end %>
+<% end %>
+
+<% html_title(l(:label_roadmap)) %>
+
+<%= context_menu issues_context_menu_path %>
--- a/app/views/versions/.svn/text-base/new.html.erb.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/versions/.svn/text-base/new.html.erb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -1,6 +1,6 @@
 <h2><%=l(:label_version_new)%></h2>
 
-<% labelled_tabular_form_for :version, @version, :url => { :action => 'new' } do |f| %>
+<% labelled_tabular_form_for :version, @version, :url => project_versions_path(@project) do |f| %>
 <%= render :partial => 'versions/form', :locals => { :f => f } %>
 <%= submit_tag l(:button_create) %>
-<% end %>
\ No newline at end of file
+<% end %>
--- a/app/views/versions/.svn/text-base/show.rhtml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/versions/.svn/text-base/show.rhtml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -1,5 +1,6 @@
 <div class="contextual">
 <%= link_to_if_authorized l(:button_edit), {:controller => 'versions', :action => 'edit', :id => @version}, :class => 'icon icon-edit' %>
+<%= link_to_if_authorized(l(:button_edit_associated_wikipage, :page_title => @version.wiki_page_title), {:controller => 'wiki', :action => 'edit', :page => Wiki.titleize(@version.wiki_page_title)}, :class => 'icon icon-edit') unless @version.wiki_page_title.blank? || @project.wiki.nil? %>
 <%= call_hook(:view_versions_show_contextual, { :version => @version, :project => @project }) %>
 </div>
 
--- a/app/views/versions/_issue_counts.rhtml	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/versions/_issue_counts.rhtml	Fri Sep 24 15:51:28 2010 +0100
@@ -5,7 +5,7 @@
        select_tag('status_by',
                    status_by_options_for_select(criteria),
                    :id => 'status_by_select',
-                   :onchange => remote_function(:url => { :action => :status_by, :id => version },
+                   :onchange => remote_function(:url => status_by_project_version_path(version.project, version),
                                                 :with => "Form.serialize('status_by_form')"))) %>
 </legend>
 <% if counts.empty? %>
--- a/app/views/versions/edit.rhtml	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/versions/edit.rhtml	Fri Sep 24 15:51:28 2010 +0100
@@ -1,6 +1,6 @@
 <h2><%=l(:label_version)%></h2>
 
-<% labelled_tabular_form_for :version, @version, :url => { :action => 'edit' } do |f| %>
+<% labelled_tabular_form_for :version, @version, :url => project_version_path(@project, @version), :html => {:method => :put} do |f| %>
 <%= render :partial => 'form', :locals => { :f => f } %>
 <%= submit_tag l(:button_save) %>
 <% end %>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/app/views/versions/index.html.erb	Fri Sep 24 15:51:28 2010 +0100
@@ -0,0 +1,54 @@
+<h2><%=l(:label_roadmap)%></h2>
+
+<% if @versions.empty? %>
+<p class="nodata"><%= l(:label_no_data) %></p>
+<% else %>
+<div id="roadmap">
+<% @versions.each do |version| %>   
+    <h3 class="version"><%= tag 'a', :name => version.name %><%= link_to_version version %></h3>
+    <%= render :partial => 'versions/overview', :locals => {:version => version} %>
+    <%= render(:partial => "wiki/content", :locals => {:content => version.wiki_page.content}) if version.wiki_page %>
+
+    <% if (issues = @issues_by_version[version]) && issues.size > 0 %>
+    <% form_tag({}) do -%>	
+    <table class="list related-issues">
+    <caption><%= l(:label_related_issues) %></caption>
+    <%- issues.each do |issue| -%>
+      <tr class="hascontextmenu">
+        <td class="checkbox"><%= check_box_tag 'ids[]', issue.id %></td>
+        <td><%= link_to_issue(issue, :project => (@project != issue.project)) %></td>
+      </tr>
+    <%- end -%>
+    </table>
+    <% end %>
+    <% end %>
+    <%= call_hook :view_projects_roadmap_version_bottom, :version => version %>
+<% end %>
+</div>
+<% end %>
+
+<% content_for :sidebar do %>
+<% form_tag({}, :method => :get) do %>
+<h3><%= l(:label_roadmap) %></h3>
+<% @trackers.each do |tracker| %>
+  <label><%= check_box_tag "tracker_ids[]", tracker.id, (@selected_tracker_ids.include? tracker.id.to_s), :id => nil %>
+  <%=h tracker.name %></label><br />
+<% end %>
+<br />
+<label for="completed"><%= check_box_tag "completed", 1, params[:completed] %> <%= l(:label_show_completed_versions) %></label>
+<% if @project.descendants.active.any? %>
+	<%= hidden_field_tag 'with_subprojects', 0 %>
+  <br /><label><%= check_box_tag 'with_subprojects', 1, @with_subprojects %> <%=l(:label_subproject_plural)%></label>
+<% end %>
+<p><%= submit_tag l(:button_apply), :class => 'button-small', :name => nil %></p>
+<% end %>
+
+<h3><%= l(:label_version_plural) %></h3>
+<% @versions.each do |version| %>
+<%= link_to format_version_name(version), "##{version.name}" %><br />
+<% end %>
+<% end %>
+
+<% html_title(l(:label_roadmap)) %>
+
+<%= context_menu issues_context_menu_path %>
--- a/app/views/versions/new.html.erb	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/versions/new.html.erb	Fri Sep 24 15:51:28 2010 +0100
@@ -1,6 +1,6 @@
 <h2><%=l(:label_version_new)%></h2>
 
-<% labelled_tabular_form_for :version, @version, :url => { :action => 'new' } do |f| %>
+<% labelled_tabular_form_for :version, @version, :url => project_versions_path(@project) do |f| %>
 <%= render :partial => 'versions/form', :locals => { :f => f } %>
 <%= submit_tag l(:button_create) %>
-<% end %>
\ No newline at end of file
+<% end %>
--- a/app/views/versions/show.rhtml	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/versions/show.rhtml	Fri Sep 24 15:51:28 2010 +0100
@@ -1,5 +1,6 @@
 <div class="contextual">
 <%= link_to_if_authorized l(:button_edit), {:controller => 'versions', :action => 'edit', :id => @version}, :class => 'icon icon-edit' %>
+<%= link_to_if_authorized(l(:button_edit_associated_wikipage, :page_title => @version.wiki_page_title), {:controller => 'wiki', :action => 'edit', :page => Wiki.titleize(@version.wiki_page_title)}, :class => 'icon icon-edit') unless @version.wiki_page_title.blank? || @project.wiki.nil? %>
 <%= call_hook(:view_versions_show_contextual, { :version => @version, :project => @project }) %>
 </div>
 
--- a/app/views/watchers/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/watchers/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/app/views/watchers
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:44.760099Z
+2010-09-23T14:37:44.707788Z
 7ece4fb161c765ac7e63c30883733d99
 2010-03-13T17:45:41.194736Z
 3579
--- a/app/views/welcome/.svn/all-wcprops	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/welcome/.svn/all-wcprops	Fri Sep 24 15:51:28 2010 +0100
@@ -1,13 +1,13 @@
 K 25
 svn:wc:ra_dav:version-url
 V 42
-/svn/!svn/ver/3924/trunk/app/views/welcome
+/svn/!svn/ver/4047/trunk/app/views/welcome
 END
 index.rhtml
 K 25
 svn:wc:ra_dav:version-url
 V 54
-/svn/!svn/ver/3924/trunk/app/views/welcome/index.rhtml
+/svn/!svn/ver/4047/trunk/app/views/welcome/index.rhtml
 END
 robots.rhtml
 K 25
--- a/app/views/welcome/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/welcome/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,15 +1,15 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/app/views/welcome
 http://redmine.rubyforge.org/svn
 
 
 
-2010-08-08T07:07:20.961363Z
-3924
-jbbarth
+2010-08-27T14:05:54.014502Z
+4047
+edavis10
 
 
 
@@ -32,11 +32,11 @@
 
 
 
-2010-08-25T15:27:54.546517Z
-925016e02489262b9d888c920e1ee78e
-2010-08-08T07:07:20.961363Z
-3924
-jbbarth
+2010-09-24T12:48:26.303754Z
+df32441c6802182ffb9a205c97ec8f3b
+2010-08-27T14:05:54.014502Z
+4047
+edavis10
 has-props
 
 
@@ -58,7 +58,7 @@
 
 
 
-1420
+1419
 
 robots.rhtml
 file
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:44.904118Z
+2010-09-23T14:37:44.711779Z
 dbe04ed0b787a5470a99a1f286c0685e
 2009-01-27T17:27:50.299725Z
 2319
--- a/app/views/welcome/.svn/text-base/index.rhtml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/welcome/.svn/text-base/index.rhtml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -34,6 +34,6 @@
 <% content_for :header_tags do %>
 <%= auto_discovery_link_tag(:atom, {:controller => 'news', :action => 'index', :key => User.current.rss_key, :format => 'atom'},
                                    :title => "#{Setting.app_title}: #{l(:label_news_latest)}") %>
-<%= auto_discovery_link_tag(:atom, {:controller => 'projects', :action => 'activity', :key => User.current.rss_key, :format => 'atom'},
+<%= auto_discovery_link_tag(:atom, {:controller => 'activities', :action => 'index', :key => User.current.rss_key, :format => 'atom'},
                                    :title => "#{Setting.app_title}: #{l(:label_activity)}") %>
 <% end %>
--- a/app/views/welcome/index.rhtml	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/welcome/index.rhtml	Fri Sep 24 15:51:28 2010 +0100
@@ -34,6 +34,6 @@
 <% content_for :header_tags do %>
 <%= auto_discovery_link_tag(:atom, {:controller => 'news', :action => 'index', :key => User.current.rss_key, :format => 'atom'},
                                    :title => "#{Setting.app_title}: #{l(:label_news_latest)}") %>
-<%= auto_discovery_link_tag(:atom, {:controller => 'projects', :action => 'activity', :key => User.current.rss_key, :format => 'atom'},
+<%= auto_discovery_link_tag(:atom, {:controller => 'activities', :action => 'index', :key => User.current.rss_key, :format => 'atom'},
                                    :title => "#{Setting.app_title}: #{l(:label_activity)}") %>
 <% end %>
--- a/app/views/wiki/.svn/all-wcprops	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/wiki/.svn/all-wcprops	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 39
-/svn/!svn/ver/3632/trunk/app/views/wiki
+/svn/!svn/ver/4092/trunk/app/views/wiki
 END
 export_multiple.rhtml
 K 25
@@ -31,13 +31,13 @@
 K 25
 svn:wc:ra_dav:version-url
 V 64
-/svn/!svn/ver/3371/trunk/app/views/wiki/special_page_index.rhtml
+/svn/!svn/ver/4092/trunk/app/views/wiki/special_page_index.rhtml
 END
 special_date_index.rhtml
 K 25
 svn:wc:ra_dav:version-url
 V 64
-/svn/!svn/ver/3371/trunk/app/views/wiki/special_date_index.rhtml
+/svn/!svn/ver/4047/trunk/app/views/wiki/special_date_index.rhtml
 END
 edit.rhtml
 K 25
--- a/app/views/wiki/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/wiki/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,15 +1,15 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/app/views/wiki
 http://redmine.rubyforge.org/svn
 
 
 
-2010-04-11T12:56:18.077630Z
-3632
-jplang
+2010-09-16T21:26:30.564728Z
+4092
+jbbarth
 
 
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:45.480130Z
+2010-09-23T14:37:44.719778Z
 071f00658656d063a029ff9efcfda553
 2009-11-11T11:10:03.406528Z
 3026
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:45.480130Z
+2010-09-23T14:37:44.719778Z
 cd34ce34ba4d75de58ad8c2643dd1858
 2010-02-06T09:30:53.659842Z
 3371
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:45.480130Z
+2010-09-23T14:37:44.719778Z
 2ec7fba790578844437bd62bf95a9856
 2009-11-11T11:10:03.406528Z
 3026
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:45.480130Z
+2010-09-23T14:37:44.719778Z
 00384fcdff6734983e2d36ed71f666bf
 2010-03-10T19:16:03.577089Z
 3559
@@ -168,11 +168,11 @@
 
 
 
-2010-07-23T14:49:45.480130Z
-cd707f047bf26d13f80ab05e109bbf69
-2010-02-06T09:30:53.659842Z
-3371
-jplang
+2010-09-24T12:48:29.015971Z
+7c00c56b3b3fb34c4ebdc4d7f20c5e01
+2010-09-16T21:26:30.564728Z
+4092
+jbbarth
 has-props
 
 
@@ -194,7 +194,7 @@
 
 
 
-918
+916
 
 special_date_index.rhtml
 file
@@ -202,11 +202,11 @@
 
 
 
-2010-07-23T14:49:45.480130Z
-eb19be8436f4e5603a80df6668038083
-2010-02-06T09:30:53.659842Z
-3371
-jplang
+2010-09-24T12:48:29.015971Z
+a2538a8dea3592d9592ce74b95c88184
+2010-08-27T14:05:54.014502Z
+4047
+edavis10
 has-props
 
 
@@ -228,7 +228,7 @@
 
 
 
-1115
+1113
 
 edit.rhtml
 file
@@ -236,7 +236,7 @@
 
 
 
-2010-07-23T14:49:45.480130Z
+2010-09-23T14:37:44.719778Z
 f53404549c5ad3730761d4afd025c3bc
 2010-02-28T09:43:13.073123Z
 3500
@@ -270,7 +270,7 @@
 
 
 
-2010-07-23T14:49:45.484139Z
+2010-09-23T14:37:44.719778Z
 9231847b74349b93a946c5046daa4bcb
 2008-07-26T11:46:24.917066Z
 1698
@@ -304,7 +304,7 @@
 
 
 
-2010-07-23T14:49:45.484139Z
+2010-09-23T14:37:44.719778Z
 baf90328359ee59f0123edd67897d66e
 2010-04-11T12:56:18.077630Z
 3632
@@ -338,7 +338,7 @@
 
 
 
-2010-07-23T14:49:45.484139Z
+2010-09-23T14:37:44.719778Z
 a50fef8895fe6a7bf414f919d7dbec8b
 2009-12-06T17:04:33.026531Z
 3128
@@ -372,7 +372,7 @@
 
 
 
-2010-07-23T14:49:45.484139Z
+2010-09-23T14:37:44.719778Z
 8705c97ebf1405603afbbd8614ee9d2b
 2007-11-12T14:36:33.182682Z
 897
@@ -406,7 +406,7 @@
 
 
 
-2010-07-23T14:49:45.484139Z
+2010-09-23T14:37:44.719778Z
 ea9a5c54a16a716cdc40736caac6d954
 2010-03-14T13:22:50.317701Z
 3585
@@ -440,7 +440,7 @@
 
 
 
-2010-07-23T14:49:45.484139Z
+2010-09-23T14:37:44.719778Z
 c4faab8bee0cd06ba2460db5f9333a32
 2009-04-21T12:19:56.547537Z
 2676
--- a/app/views/wiki/.svn/text-base/special_date_index.rhtml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/wiki/.svn/text-base/special_date_index.rhtml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -23,11 +23,11 @@
 
 <% unless @pages.empty? %>
 <% other_formats_links do |f| %>
-	<%= f.link_to 'Atom', :url => {:controller => 'projects', :action => 'activity', :id => @project, :show_wiki_edits => 1, :key => User.current.rss_key} %>
+	<%= f.link_to 'Atom', :url => {:controller => 'activities', :action => 'index', :id => @project, :show_wiki_edits => 1, :key => User.current.rss_key} %>
 	<%= f.link_to('HTML', :url => {:action => 'special', :page => 'export'}) if User.current.allowed_to?(:export_wiki_pages, @project) %>
 <% end %>
 <% end %>
 
 <% content_for :header_tags do %>
-<%= auto_discovery_link_tag(:atom, :controller => 'projects', :action => 'activity', :id => @project, :show_wiki_edits => 1, :format => 'atom', :key => User.current.rss_key) %>
+<%= auto_discovery_link_tag(:atom, :controller => 'activities', :action => 'index', :id => @project, :show_wiki_edits => 1, :format => 'atom', :key => User.current.rss_key) %>
 <% end %>
--- a/app/views/wiki/.svn/text-base/special_page_index.rhtml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/wiki/.svn/text-base/special_page_index.rhtml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -16,11 +16,11 @@
 
 <% unless @pages.empty? %>
 <% other_formats_links do |f| %>
-	<%= f.link_to 'Atom', :url => {:controller => 'projects', :action => 'activity', :id => @project, :show_wiki_edits => 1, :key => User.current.rss_key} %>
+	<%= f.link_to 'Atom', :url => {:controller => 'activities', :action => 'index', :id => @project, :show_wiki_edits => 1, :key => User.current.rss_key} %>
 	<%= f.link_to('HTML', :url => {:action => 'special', :page => 'export'}) if User.current.allowed_to?(:export_wiki_pages, @project) %>
 <% end %>
 <% end %>
 
 <% content_for :header_tags do %>
-<%= auto_discovery_link_tag(:atom, :controller => 'projects', :action => 'activity', :id => @project, :show_wiki_edits => 1, :format => 'atom', :key => User.current.rss_key) %>
+<%= auto_discovery_link_tag(:atom, :controller => 'activities', :action => 'index', :id => @project, :show_wiki_edits => 1, :format => 'atom', :key => User.current.rss_key) %>
 <% end %>
--- a/app/views/wiki/special_date_index.rhtml	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/wiki/special_date_index.rhtml	Fri Sep 24 15:51:28 2010 +0100
@@ -23,11 +23,11 @@
 
 <% unless @pages.empty? %>
 <% other_formats_links do |f| %>
-	<%= f.link_to 'Atom', :url => {:controller => 'projects', :action => 'activity', :id => @project, :show_wiki_edits => 1, :key => User.current.rss_key} %>
+	<%= f.link_to 'Atom', :url => {:controller => 'activities', :action => 'index', :id => @project, :show_wiki_edits => 1, :key => User.current.rss_key} %>
 	<%= f.link_to('HTML', :url => {:action => 'special', :page => 'export'}) if User.current.allowed_to?(:export_wiki_pages, @project) %>
 <% end %>
 <% end %>
 
 <% content_for :header_tags do %>
-<%= auto_discovery_link_tag(:atom, :controller => 'projects', :action => 'activity', :id => @project, :show_wiki_edits => 1, :format => 'atom', :key => User.current.rss_key) %>
+<%= auto_discovery_link_tag(:atom, :controller => 'activities', :action => 'index', :id => @project, :show_wiki_edits => 1, :format => 'atom', :key => User.current.rss_key) %>
 <% end %>
--- a/app/views/wiki/special_page_index.rhtml	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/wiki/special_page_index.rhtml	Fri Sep 24 15:51:28 2010 +0100
@@ -16,11 +16,11 @@
 
 <% unless @pages.empty? %>
 <% other_formats_links do |f| %>
-	<%= f.link_to 'Atom', :url => {:controller => 'projects', :action => 'activity', :id => @project, :show_wiki_edits => 1, :key => User.current.rss_key} %>
+	<%= f.link_to 'Atom', :url => {:controller => 'activities', :action => 'index', :id => @project, :show_wiki_edits => 1, :key => User.current.rss_key} %>
 	<%= f.link_to('HTML', :url => {:action => 'special', :page => 'export'}) if User.current.allowed_to?(:export_wiki_pages, @project) %>
 <% end %>
 <% end %>
 
 <% content_for :header_tags do %>
-<%= auto_discovery_link_tag(:atom, :controller => 'projects', :action => 'activity', :id => @project, :show_wiki_edits => 1, :format => 'atom', :key => User.current.rss_key) %>
+<%= auto_discovery_link_tag(:atom, :controller => 'activities', :action => 'index', :id => @project, :show_wiki_edits => 1, :format => 'atom', :key => User.current.rss_key) %>
 <% end %>
--- a/app/views/wikis/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/wikis/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/app/views/wikis
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:45.268157Z
+2010-09-23T14:37:44.723734Z
 6edeee3130b12027d4d8dbfeca809abb
 2007-09-14T11:34:08.234701Z
 725
--- a/app/views/workflows/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/app/views/workflows/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/app/views/workflows
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:44.912126Z
+2010-09-23T14:37:44.727733Z
 d7c2b6481788394f541fe6af5dadd598
 2009-12-12T10:06:07.860865Z
 3154
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:44.912126Z
+2010-09-23T14:37:44.727733Z
 2457a85600aa051fcf9edf06010e6fcc
 2009-12-12T10:06:07.860865Z
 3154
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:44.912126Z
+2010-09-23T14:37:44.727733Z
 ee551cfe66cd8df0fbd5bc7bac081200
 2010-04-27T17:54:27.767853Z
 3694
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:44.912126Z
+2010-09-23T14:37:44.727733Z
 6c10e101a2f8ac7a61b6355d3ec7e959
 2009-12-12T10:06:07.860865Z
 3154
--- a/config/.svn/all-wcprops	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/.svn/all-wcprops	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 31
-/svn/!svn/ver/4039/trunk/config
+/svn/!svn/ver/4173/trunk/config
 END
 settings.yml
 K 25
@@ -19,7 +19,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 41
-/svn/!svn/ver/4037/trunk/config/routes.rb
+/svn/!svn/ver/4172/trunk/config/routes.rb
 END
 boot.rb
 K 25
--- a/config/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,14 +1,14 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/config
 http://redmine.rubyforge.org/svn
 
 
 
-2010-08-24T16:15:14.958943Z
-4039
+2010-09-23T16:23:39.070168Z
+4173
 winterheart
 has-props
 
@@ -32,7 +32,7 @@
 
 
 
-2010-08-25T15:27:57.822497Z
+2010-09-23T14:37:44.815730Z
 a95b266d8b929a282cfb7bcc8441227b
 2010-08-22T18:42:00.112555Z
 4013
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:47.340126Z
+2010-09-23T14:37:44.731779Z
 a1c44811380e661aff4e67b6b366f2db
 2010-02-18T05:20:52.515080Z
 3448
@@ -103,10 +103,10 @@
 
 
 
-2010-08-25T15:27:57.822497Z
-fa4caa1d35eca98d10e2937f11ec677b
-2010-08-24T15:27:12.793586Z
-4037
+2010-09-24T12:48:29.787906Z
+ec1a5ef5a75a55fb2b1edbbfca6725d4
+2010-09-23T15:20:19.085385Z
+4172
 edavis10
 has-props
 
@@ -129,7 +129,7 @@
 
 
 
-17937
+16319
 
 boot.rb
 file
@@ -137,7 +137,7 @@
 
 
 
-2010-07-23T14:49:47.340126Z
+2010-09-23T14:37:44.731779Z
 cfce6ac16974777a93c14be034b2fdec
 2009-09-13T17:14:35.707881Z
 2887
@@ -174,7 +174,7 @@
 
 
 
-2010-07-23T14:49:47.340126Z
+2010-09-23T14:37:44.731779Z
 197d8958c94ce40f08a4b8f1d2c49f6e
 2010-02-06T10:40:21.867545Z
 3372
@@ -211,7 +211,7 @@
 
 
 
-2010-07-23T14:49:47.340126Z
+2010-09-23T14:37:44.731779Z
 6b63489cdd262e653712af1aa96cd390
 2009-11-08T02:16:42.659918Z
 3018
@@ -245,7 +245,7 @@
 
 
 
-2010-07-23T14:49:47.340126Z
+2010-09-23T14:37:44.731779Z
 b315245d4b4a47a512931d087b03435f
 2010-03-12T13:48:14.426661Z
 3564
--- a/config/.svn/text-base/routes.rb.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/.svn/text-base/routes.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -104,58 +104,39 @@
   end
 
   map.resources :issue_moves, :only => [:new, :create], :path_prefix => '/issues', :as => 'move'
+
+  # Misc issue routes. TODO: move into resources
   map.auto_complete_issues '/issues/auto_complete', :controller => 'auto_completes', :action => 'issues'
-  # TODO: would look nicer as /issues/:id/preview
-  map.preview_issue '/issues/preview/:id', :controller => 'previews', :action => 'issue'
+  map.preview_issue '/issues/preview/:id', :controller => 'previews', :action => 'issue' # TODO: would look nicer as /issues/:id/preview
   map.issues_context_menu '/issues/context_menu', :controller => 'context_menus', :action => 'issues'
   map.issue_changes '/issues/changes', :controller => 'journals', :action => 'index'
+  map.bulk_edit_issue 'issues/bulk_edit', :controller => 'issues', :action => 'bulk_edit', :conditions => { :method => :get }
+  map.bulk_update_issue 'issues/bulk_edit', :controller => 'issues', :action => 'bulk_update', :conditions => { :method => :post }
+  map.quoted_issue '/issues/:id/quoted', :controller => 'journals', :action => 'new', :id => /\d+/, :conditions => { :method => :post }
+  map.connect '/issues/:id/destroy', :controller => 'issues', :action => 'destroy', :conditions => { :method => :post } # legacy
+
+  map.resource :gantt, :path_prefix => '/issues', :controller => 'gantts', :only => [:show, :update]
+  map.resource :gantt, :path_prefix => '/projects/:project_id/issues', :controller => 'gantts', :only => [:show, :update]
+  map.resource :calendar, :path_prefix => '/issues', :controller => 'calendars', :only => [:show, :update]
+  map.resource :calendar, :path_prefix => '/projects/:project_id/issues', :controller => 'calendars', :only => [:show, :update]
+
+  map.with_options :controller => 'reports', :conditions => {:method => :get} do |reports|
+    reports.connect 'projects/:id/issues/report', :action => 'issue_report'
+    reports.connect 'projects/:id/issues/report/:detail', :action => 'issue_report_details'
+  end
+
+  # Following two routes conflict with the resources because #index allows POST
+  map.connect '/issues', :controller => 'issues', :action => 'index', :conditions => { :method => :post }
+  map.connect '/issues/create', :controller => 'issues', :action => 'index', :conditions => { :method => :post }
   
-  map.with_options :controller => 'issues' do |issues_routes|
-    issues_routes.with_options :conditions => {:method => :get} do |issues_views|
-      issues_views.connect 'issues', :action => 'index'
-      issues_views.connect 'issues.:format', :action => 'index'
-      issues_views.connect 'projects/:project_id/issues', :action => 'index'
-      issues_views.connect 'projects/:project_id/issues.:format', :action => 'index'
-      issues_views.connect 'projects/:project_id/issues/new', :action => 'new'
-      issues_views.connect 'projects/:project_id/issues/gantt', :controller => 'gantts', :action => 'show'
-      issues_views.connect 'projects/:project_id/issues/calendar', :controller => 'calendars', :action => 'show'
-      issues_views.connect 'projects/:project_id/issues/:copy_from/copy', :action => 'new'
-      issues_views.connect 'issues/:id', :action => 'show', :id => /\d+/
-      issues_views.connect 'issues/:id.:format', :action => 'show', :id => /\d+/
-      issues_views.connect 'issues/:id/edit', :action => 'edit', :id => /\d+/
-    end
-    issues_routes.with_options :conditions => {:method => :post} do |issues_actions|
-      issues_actions.connect 'issues', :action => 'index'
-      issues_actions.connect 'projects/:project_id/issues', :action => 'create'
-      issues_actions.connect 'projects/:project_id/issues/gantt', :controller => 'gantts', :action => 'show'
-      issues_actions.connect 'projects/:project_id/issues/calendar', :controller => 'calendars', :action => 'show'
-      issues_actions.connect 'issues/:id/quoted', :controller => 'journals', :action => 'new', :id => /\d+/
-      issues_actions.connect 'issues/:id/:action', :action => /edit|destroy/, :id => /\d+/
-      issues_actions.connect 'issues.:format', :action => 'create', :format => /xml/
-      issues_actions.connect 'issues/bulk_edit', :action => 'bulk_update'
-    end
-    issues_routes.with_options :conditions => {:method => :put} do |issues_actions|
-      issues_actions.connect 'issues/:id/edit', :action => 'update', :id => /\d+/
-      issues_actions.connect 'issues/:id.:format', :action => 'update', :id => /\d+/, :format => /xml/
-    end
-    issues_routes.with_options :conditions => {:method => :delete} do |issues_actions|
-      issues_actions.connect 'issues/:id.:format', :action => 'destroy', :id => /\d+/, :format => /xml/
-    end
-    issues_routes.connect 'issues/gantt', :controller => 'gantts', :action => 'show'
-    issues_routes.connect 'issues/calendar', :controller => 'calendars', :action => 'show'
-    issues_routes.connect 'issues/:action'
-  end
+  map.resources :issues, :member => { :edit => :post }, :collection => {}
+  map.resources :issues, :path_prefix => '/projects/:project_id', :collection => { :create => :post }
 
   map.with_options  :controller => 'issue_relations', :conditions => {:method => :post} do |relations|
     relations.connect 'issues/:issue_id/relations/:id', :action => 'new'
     relations.connect 'issues/:issue_id/relations/:id/destroy', :action => 'destroy'
   end
   
-  map.with_options :controller => 'reports', :conditions => {:method => :get} do |reports|
-    reports.connect 'projects/:id/issues/report', :action => 'issue_report'
-    reports.connect 'projects/:id/issues/report/:detail', :action => 'issue_report_details'
-  end
-  
   map.with_options :controller => 'news' do |news_routes|
     news_routes.with_options :conditions => {:method => :get} do |news_views|
       news_views.connect 'news', :action => 'index'
@@ -167,10 +148,13 @@
       news_views.connect 'news/:id/edit', :action => 'edit'
     end
     news_routes.with_options do |news_actions|
-      news_actions.connect 'projects/:project_id/news', :action => 'new'
-      news_actions.connect 'news/:id/edit', :action => 'edit'
+      news_actions.connect 'projects/:project_id/news', :action => 'create', :conditions => {:method => :post}
       news_actions.connect 'news/:id/destroy', :action => 'destroy'
     end
+    news_routes.connect 'news/:id/edit', :action => 'update', :conditions => {:method => :put}
+
+    news_routes.connect 'news/:id/comments', :controller => 'comments', :action => 'create', :conditions => {:method => :post}
+    news_routes.connect 'news/:id/comments/:comment_id', :controller => 'comments', :action => 'destroy', :conditions => {:method => :delete}
   end
   
   map.connect 'projects/:id/members/new', :controller => 'members', :action => 'new'
@@ -191,53 +175,41 @@
       user_actions.connect 'users/:id/memberships/:membership_id/destroy', :action => 'destroy_membership'
     end
   end
-  
-  map.with_options :controller => 'projects' do |projects|
-    projects.with_options :conditions => {:method => :get} do |project_views|
-      project_views.connect 'projects', :action => 'index'
-      project_views.connect 'projects.:format', :action => 'index'
-      project_views.connect 'projects/new', :action => 'add'
-      project_views.connect 'projects/:id', :action => 'show'
-      project_views.connect 'projects/:id.:format', :action => 'show'
-      project_views.connect 'projects/:id/:action', :action => /roadmap|destroy|settings/
-      project_views.connect 'projects/:id/files', :action => 'list_files'
-      project_views.connect 'projects/:id/files/new', :action => 'add_file'
-      project_views.connect 'projects/:id/settings/:tab', :action => 'settings'
-    end
 
-    projects.with_options :action => 'activity', :conditions => {:method => :get} do |activity|
-      activity.connect 'projects/:id/activity'
-      activity.connect 'projects/:id/activity.:format'
-      activity.connect 'activity', :id => nil
-      activity.connect 'activity.:format', :id => nil
-    end
-    
-    projects.with_options :conditions => {:method => :post} do |project_actions|
-      project_actions.connect 'projects/new', :action => 'add'
-      project_actions.connect 'projects', :action => 'add'
-      project_actions.connect 'projects.:format', :action => 'add', :format => /xml/
-      project_actions.connect 'projects/:id/:action', :action => /edit|destroy|archive|unarchive/
-      project_actions.connect 'projects/:id/files/new', :action => 'add_file'
-      project_actions.connect 'projects/:id/activities/save', :action => 'save_activities'
-    end
+  # For nice "roadmap" in the url for the index action
+  map.connect 'projects/:project_id/roadmap', :controller => 'versions', :action => 'index'
 
-    projects.with_options :conditions => {:method => :put} do |project_actions|
-      project_actions.conditions 'projects/:id.:format', :action => 'edit', :format => /xml/
-    end
+  map.resources :projects, :member => {
+    :copy => [:get, :post],
+    :settings => :get,
+    :modules => :post,
+    :archive => :post,
+    :unarchive => :post
+  } do |project|
+    project.resource :project_enumerations, :as => 'enumerations', :only => [:update, :destroy]
+    project.resources :files, :only => [:index, :new, :create]
+    project.resources :versions, :collection => {:close_completed => :put}, :member => {:status_by => :post}
+  end
 
-    projects.with_options :conditions => {:method => :delete} do |project_actions|
-      project_actions.conditions 'projects/:id.:format', :action => 'destroy', :format => /xml/
-      project_actions.conditions 'projects/:id/reset_activities', :action => 'reset_activities'
+  # Destroy uses a get request to prompt the user before the actual DELETE request
+  map.project_destroy_confirm 'projects/:id/destroy', :controller => 'projects', :action => 'destroy', :conditions => {:method => :get}
+
+  # TODO: port to be part of the resources route(s)
+  map.with_options :controller => 'projects' do |project_mapper|
+    project_mapper.with_options :conditions => {:method => :get} do |project_views|
+      project_views.connect 'projects/:id/settings/:tab', :controller => 'projects', :action => 'settings'
+      project_views.connect 'projects/:project_id/issues/:copy_from/copy', :controller => 'issues', :action => 'new'
     end
   end
   
-  map.with_options :controller => 'versions' do |versions|
-    versions.connect 'projects/:project_id/versions/new', :action => 'new'
-    versions.with_options :conditions => {:method => :post} do |version_actions|
-      version_actions.connect 'projects/:project_id/versions/close_completed', :action => 'close_completed'
-    end
+  map.with_options :controller => 'activities', :action => 'index', :conditions => {:method => :get} do |activity|
+    activity.connect 'projects/:id/activity'
+    activity.connect 'projects/:id/activity.:format'
+    activity.connect 'activity', :id => nil
+    activity.connect 'activity.:format', :id => nil
   end
-  
+
+    
   map.with_options :controller => 'issue_categories' do |categories|
     categories.connect 'projects/:project_id/issue_categories/new', :action => 'new'
   end
--- a/config/environments/.svn/all-wcprops	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/environments/.svn/all-wcprops	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 44
-/svn/!svn/ver/3782/trunk/config/environments
+/svn/!svn/ver/4096/trunk/config/environments
 END
 test.rb
 K 25
@@ -36,6 +36,6 @@
 production.rb
 K 25
 svn:wc:ra_dav:version-url
-V 57
-/svn/!svn/ver/772/trunk/config/environments/production.rb
+V 58
+/svn/!svn/ver/4096/trunk/config/environments/production.rb
 END
--- a/config/environments/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/environments/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,14 +1,14 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/config/environments
 http://redmine.rubyforge.org/svn
 
 
 
-2010-06-19T19:01:53.900446Z
-3782
+2010-09-17T04:31:17.141340Z
+4096
 edavis10
 
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:47.336098Z
+2010-09-23T14:37:44.735734Z
 1fa42b22c11a8e93841c995532c617ae
 2010-06-19T19:01:53.900446Z
 3782
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:47.336098Z
+2010-09-23T14:37:44.735734Z
 02eadf22aa59353271c702e4865138b1
 2007-12-10T17:58:07.273873Z
 975
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:47.336098Z
+2010-09-23T14:37:44.739734Z
 213279c73e8c922d0a9d43f3c1cc6943
 2010-02-08T18:53:07.634937Z
 3397
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:47.336098Z
+2010-09-23T14:37:44.735734Z
 d08152d4dda4608f254785b23840140a
 2007-09-27T22:30:57.196220Z
 772
@@ -168,7 +168,7 @@
 
 
 
-2010-07-23T14:49:47.336098Z
+2010-09-23T14:37:44.739734Z
 213279c73e8c922d0a9d43f3c1cc6943
 2010-02-08T18:53:07.634937Z
 3397
@@ -202,11 +202,11 @@
 
 
 
-2010-07-23T14:49:47.336098Z
-0a06c83acabf6a31a6d1f3f29ced0cde
-2007-09-27T22:30:57.196220Z
-772
-jplang
+2010-09-24T12:48:29.771795Z
+5446300cf963a718609cb6d37eca8bc4
+2010-09-17T04:31:17.141340Z
+4096
+edavis10
 has-props
 
 
@@ -228,5 +228,5 @@
 
 
 
-846
+1064
 
--- a/config/environments/.svn/text-base/production.rb.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/environments/.svn/text-base/production.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -4,9 +4,14 @@
 # Code is not reloaded between requests
 config.cache_classes = true
 
+#####
+# Customize the default logger (http://ruby-doc.org/core/classes/Logger.html)
+#
 # Use a different logger for distributed setups
 # config.logger        = SyslogLogger.new
-
+#
+# Rotate logs bigger than 1MB, keeps no more than 7 rotated logs around.
+# config.logger = Logger.new(config.log_path, 7, 1048576)
 
 # Full error reports are disabled and caching is turned on
 config.action_controller.consider_all_requests_local = false
--- a/config/environments/production.rb	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/environments/production.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -4,9 +4,14 @@
 # Code is not reloaded between requests
 config.cache_classes = true
 
+#####
+# Customize the default logger (http://ruby-doc.org/core/classes/Logger.html)
+#
 # Use a different logger for distributed setups
 # config.logger        = SyslogLogger.new
-
+#
+# Rotate logs bigger than 1MB, keeps no more than 7 rotated logs around.
+# config.logger = Logger.new(config.log_path, 7, 1048576)
 
 # Full error reports are disabled and caching is turned on
 config.action_controller.consider_all_requests_local = false
--- a/config/initializers/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/initializers/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/config/initializers
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:47.328155Z
+2010-09-23T14:37:44.743734Z
 acc71445fc1c65ebe6fdeba695fea714
 2009-09-20T14:06:57.257282Z
 2895
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:47.328155Z
+2010-09-23T14:37:44.743734Z
 ceff5e8f4ea4a2540c9303dcdf936aed
 2009-02-21T11:04:50.579477Z
 2493
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:47.328155Z
+2010-09-23T14:37:44.743734Z
 56e489ddcf34c62aa4f7f690b747f521
 2009-12-23T20:55:42.873227Z
 3235
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:47.328155Z
+2010-09-23T14:37:44.743734Z
 ca8db2f40b067cb8615263fa5a238517
 2009-09-20T14:06:57.257282Z
 2895
@@ -168,7 +168,7 @@
 
 
 
-2010-07-23T14:49:47.332096Z
+2010-09-23T14:37:44.743734Z
 386c37f359a87852920a3c3f3e4bbc84
 2008-07-04T18:55:45.736676Z
 1625
@@ -202,7 +202,7 @@
 
 
 
-2010-07-23T14:49:47.332096Z
+2010-09-23T14:37:44.743734Z
 0005ed7b233f71646e0f75b9994cf219
 2008-09-10T18:26:13.133776Z
 1797
@@ -236,7 +236,7 @@
 
 
 
-2010-07-23T14:49:47.332096Z
+2010-09-23T14:37:44.743734Z
 a7948d8e86bcd799c74945fe91b4a8b1
 2009-09-20T14:06:57.257282Z
 2895
--- a/config/locales/.svn/all-wcprops	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/.svn/all-wcprops	Fri Sep 24 15:51:28 2010 +0100
@@ -1,257 +1,263 @@
 K 25
 svn:wc:ra_dav:version-url
 V 39
-/svn/!svn/ver/4039/trunk/config/locales
+/svn/!svn/ver/4173/trunk/config/locales
 END
 lt.yml
 K 25
 svn:wc:ra_dav:version-url
 V 46
-/svn/!svn/ver/4036/trunk/config/locales/lt.yml
+/svn/!svn/ver/4169/trunk/config/locales/lt.yml
 END
 sr-YU.yml
 K 25
 svn:wc:ra_dav:version-url
 V 49
-/svn/!svn/ver/4036/trunk/config/locales/sr-YU.yml
+/svn/!svn/ver/4169/trunk/config/locales/sr-YU.yml
 END
 ro.yml
 K 25
 svn:wc:ra_dav:version-url
 V 46
-/svn/!svn/ver/4036/trunk/config/locales/ro.yml
+/svn/!svn/ver/4169/trunk/config/locales/ro.yml
 END
 lv.yml
 K 25
 svn:wc:ra_dav:version-url
 V 46
-/svn/!svn/ver/4036/trunk/config/locales/lv.yml
+/svn/!svn/ver/4169/trunk/config/locales/lv.yml
 END
 zh.yml
 K 25
 svn:wc:ra_dav:version-url
 V 46
-/svn/!svn/ver/4036/trunk/config/locales/zh.yml
+/svn/!svn/ver/4169/trunk/config/locales/zh.yml
 END
 pt.yml
 K 25
 svn:wc:ra_dav:version-url
 V 46
-/svn/!svn/ver/4036/trunk/config/locales/pt.yml
+/svn/!svn/ver/4169/trunk/config/locales/pt.yml
 END
 ca.yml
 K 25
 svn:wc:ra_dav:version-url
 V 46
-/svn/!svn/ver/4036/trunk/config/locales/ca.yml
+/svn/!svn/ver/4169/trunk/config/locales/ca.yml
 END
 pt-BR.yml
 K 25
 svn:wc:ra_dav:version-url
 V 49
-/svn/!svn/ver/4036/trunk/config/locales/pt-BR.yml
+/svn/!svn/ver/4169/trunk/config/locales/pt-BR.yml
 END
 tr.yml
 K 25
 svn:wc:ra_dav:version-url
 V 46
-/svn/!svn/ver/4036/trunk/config/locales/tr.yml
+/svn/!svn/ver/4169/trunk/config/locales/tr.yml
 END
 ru.yml
 K 25
 svn:wc:ra_dav:version-url
 V 46
-/svn/!svn/ver/4036/trunk/config/locales/ru.yml
+/svn/!svn/ver/4171/trunk/config/locales/ru.yml
 END
 en-GB.yml
 K 25
 svn:wc:ra_dav:version-url
 V 49
-/svn/!svn/ver/4036/trunk/config/locales/en-GB.yml
+/svn/!svn/ver/4169/trunk/config/locales/en-GB.yml
 END
 id.yml
 K 25
 svn:wc:ra_dav:version-url
 V 46
-/svn/!svn/ver/4036/trunk/config/locales/id.yml
+/svn/!svn/ver/4169/trunk/config/locales/id.yml
 END
 el.yml
 K 25
 svn:wc:ra_dav:version-url
 V 46
-/svn/!svn/ver/4036/trunk/config/locales/el.yml
+/svn/!svn/ver/4169/trunk/config/locales/el.yml
 END
 en.yml
 K 25
 svn:wc:ra_dav:version-url
 V 46
-/svn/!svn/ver/4036/trunk/config/locales/en.yml
+/svn/!svn/ver/4169/trunk/config/locales/en.yml
 END
 gl.yml
 K 25
 svn:wc:ra_dav:version-url
 V 46
-/svn/!svn/ver/4036/trunk/config/locales/gl.yml
+/svn/!svn/ver/4169/trunk/config/locales/gl.yml
 END
 cs.yml
 K 25
 svn:wc:ra_dav:version-url
 V 46
-/svn/!svn/ver/4036/trunk/config/locales/cs.yml
+/svn/!svn/ver/4173/trunk/config/locales/cs.yml
 END
 es.yml
 K 25
 svn:wc:ra_dav:version-url
 V 46
-/svn/!svn/ver/4036/trunk/config/locales/es.yml
+/svn/!svn/ver/4169/trunk/config/locales/es.yml
+END
+mk.yml
+K 25
+svn:wc:ra_dav:version-url
+V 46
+/svn/!svn/ver/4169/trunk/config/locales/mk.yml
+END
+zh-TW.yml
+K 25
+svn:wc:ra_dav:version-url
+V 49
+/svn/!svn/ver/4173/trunk/config/locales/zh-TW.yml
+END
+eu.yml
+K 25
+svn:wc:ra_dav:version-url
+V 46
+/svn/!svn/ver/4169/trunk/config/locales/eu.yml
 END
 ko.yml
 K 25
 svn:wc:ra_dav:version-url
 V 46
-/svn/!svn/ver/4036/trunk/config/locales/ko.yml
-END
-eu.yml
-K 25
-svn:wc:ra_dav:version-url
-V 46
-/svn/!svn/ver/4036/trunk/config/locales/eu.yml
-END
-zh-TW.yml
-K 25
-svn:wc:ra_dav:version-url
-V 49
-/svn/!svn/ver/4039/trunk/config/locales/zh-TW.yml
+/svn/!svn/ver/4169/trunk/config/locales/ko.yml
 END
 mn.yml
 K 25
 svn:wc:ra_dav:version-url
 V 46
-/svn/!svn/ver/4036/trunk/config/locales/mn.yml
+/svn/!svn/ver/4169/trunk/config/locales/mn.yml
 END
 it.yml
 K 25
 svn:wc:ra_dav:version-url
 V 46
-/svn/!svn/ver/4036/trunk/config/locales/it.yml
+/svn/!svn/ver/4169/trunk/config/locales/it.yml
 END
 sk.yml
 K 25
 svn:wc:ra_dav:version-url
 V 46
-/svn/!svn/ver/4036/trunk/config/locales/sk.yml
+/svn/!svn/ver/4169/trunk/config/locales/sk.yml
 END
 sl.yml
 K 25
 svn:wc:ra_dav:version-url
 V 46
-/svn/!svn/ver/4036/trunk/config/locales/sl.yml
+/svn/!svn/ver/4169/trunk/config/locales/sl.yml
 END
 uk.yml
 K 25
 svn:wc:ra_dav:version-url
 V 46
-/svn/!svn/ver/4036/trunk/config/locales/uk.yml
+/svn/!svn/ver/4169/trunk/config/locales/uk.yml
+END
+sr.yml
+K 25
+svn:wc:ra_dav:version-url
+V 46
+/svn/!svn/ver/4169/trunk/config/locales/sr.yml
 END
 da.yml
 K 25
 svn:wc:ra_dav:version-url
 V 46
-/svn/!svn/ver/4036/trunk/config/locales/da.yml
+/svn/!svn/ver/4169/trunk/config/locales/da.yml
 END
-sr.yml
+sv.yml
 K 25
 svn:wc:ra_dav:version-url
 V 46
-/svn/!svn/ver/4036/trunk/config/locales/sr.yml
+/svn/!svn/ver/4169/trunk/config/locales/sv.yml
+END
+de.yml
+K 25
+svn:wc:ra_dav:version-url
+V 46
+/svn/!svn/ver/4169/trunk/config/locales/de.yml
 END
 bg.yml
 K 25
 svn:wc:ra_dav:version-url
 V 46
-/svn/!svn/ver/4036/trunk/config/locales/bg.yml
-END
-de.yml
-K 25
-svn:wc:ra_dav:version-url
-V 46
-/svn/!svn/ver/4038/trunk/config/locales/de.yml
-END
-sv.yml
-K 25
-svn:wc:ra_dav:version-url
-V 46
-/svn/!svn/ver/4036/trunk/config/locales/sv.yml
+/svn/!svn/ver/4169/trunk/config/locales/bg.yml
 END
 ja.yml
 K 25
 svn:wc:ra_dav:version-url
 V 46
-/svn/!svn/ver/4038/trunk/config/locales/ja.yml
+/svn/!svn/ver/4173/trunk/config/locales/ja.yml
 END
 he.yml
 K 25
 svn:wc:ra_dav:version-url
 V 46
-/svn/!svn/ver/4036/trunk/config/locales/he.yml
+/svn/!svn/ver/4169/trunk/config/locales/he.yml
 END
 fi.yml
 K 25
 svn:wc:ra_dav:version-url
 V 46
-/svn/!svn/ver/4036/trunk/config/locales/fi.yml
+/svn/!svn/ver/4169/trunk/config/locales/fi.yml
 END
 bs.yml
 K 25
 svn:wc:ra_dav:version-url
 V 46
-/svn/!svn/ver/4036/trunk/config/locales/bs.yml
+/svn/!svn/ver/4169/trunk/config/locales/bs.yml
 END
 fr.yml
 K 25
 svn:wc:ra_dav:version-url
 V 46
-/svn/!svn/ver/4036/trunk/config/locales/fr.yml
+/svn/!svn/ver/4169/trunk/config/locales/fr.yml
 END
 nl.yml
 K 25
 svn:wc:ra_dav:version-url
 V 46
-/svn/!svn/ver/4036/trunk/config/locales/nl.yml
+/svn/!svn/ver/4169/trunk/config/locales/nl.yml
 END
 hr.yml
 K 25
 svn:wc:ra_dav:version-url
 V 46
-/svn/!svn/ver/4036/trunk/config/locales/hr.yml
+/svn/!svn/ver/4169/trunk/config/locales/hr.yml
 END
 pl.yml
 K 25
 svn:wc:ra_dav:version-url
 V 46
-/svn/!svn/ver/4036/trunk/config/locales/pl.yml
+/svn/!svn/ver/4169/trunk/config/locales/pl.yml
 END
 th.yml
 K 25
 svn:wc:ra_dav:version-url
 V 46
-/svn/!svn/ver/4036/trunk/config/locales/th.yml
+/svn/!svn/ver/4169/trunk/config/locales/th.yml
 END
 no.yml
 K 25
 svn:wc:ra_dav:version-url
 V 46
-/svn/!svn/ver/4036/trunk/config/locales/no.yml
+/svn/!svn/ver/4169/trunk/config/locales/no.yml
 END
 hu.yml
 K 25
 svn:wc:ra_dav:version-url
 V 46
-/svn/!svn/ver/4036/trunk/config/locales/hu.yml
+/svn/!svn/ver/4169/trunk/config/locales/hu.yml
 END
 vi.yml
 K 25
 svn:wc:ra_dav:version-url
 V 46
-/svn/!svn/ver/4036/trunk/config/locales/vi.yml
+/svn/!svn/ver/4169/trunk/config/locales/vi.yml
 END
--- a/config/locales/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,14 +1,14 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/config/locales
 http://redmine.rubyforge.org/svn
 
 
 
-2010-08-24T16:15:14.958943Z
-4039
+2010-09-23T16:23:39.070168Z
+4173
 winterheart
 
 
@@ -32,10 +32,10 @@
 
 
 
-2010-08-25T15:27:57.770486Z
-164dd69a1b5202ab357494645d6a21c2
-2010-08-23T19:39:35.435209Z
-4036
+2010-09-24T12:48:29.703937Z
+8d312a53522467462ce1e04d6dc8559c
+2010-09-22T16:06:29.391472Z
+4169
 winterheart
 has-props
 
@@ -58,7 +58,7 @@
 
 
 
-42620
+42971
 
 sr-YU.yml
 file
@@ -66,10 +66,10 @@
 
 
 
-2010-08-25T15:27:57.770486Z
-8f3f6dfb6a1ee223f30b5f4ea44dbaff
-2010-08-23T19:39:35.435209Z
-4036
+2010-09-24T12:48:29.703937Z
+dc55d1b76bd2609ff50f0eeba066f0f2
+2010-09-22T16:06:29.391472Z
+4169
 winterheart
 
 
@@ -92,7 +92,7 @@
 
 
 
-39815
+40089
 
 ro.yml
 file
@@ -100,10 +100,10 @@
 
 
 
-2010-08-25T15:27:57.774480Z
-36163682b04d507b589498203e98c51c
-2010-08-23T19:39:35.435209Z
-4036
+2010-09-24T12:48:29.703937Z
+a53816dd2bef5bdb8cd5673d75ff476d
+2010-09-22T16:06:29.391472Z
+4169
 winterheart
 has-props
 
@@ -126,7 +126,7 @@
 
 
 
-38790
+39144
 
 lv.yml
 file
@@ -134,10 +134,10 @@
 
 
 
-2010-08-25T15:27:57.774480Z
-4151aa5d23830cff3448b432affa317d
-2010-08-23T19:39:35.435209Z
-4036
+2010-09-24T12:48:29.707889Z
+04c7d28b6c34d34e280f5bccb09cc990
+2010-09-22T16:06:29.391472Z
+4169
 winterheart
 
 
@@ -160,7 +160,7 @@
 
 
 
-39757
+40111
 
 zh.yml
 file
@@ -168,10 +168,10 @@
 
 
 
-2010-08-25T15:27:57.774480Z
-ee3187fd5cce79de8bf33bf722456f8e
-2010-08-23T19:39:35.435209Z
-4036
+2010-09-24T12:48:29.707889Z
+c2dcc09a003836b556dd2e332b988131
+2010-09-22T16:06:29.391472Z
+4169
 winterheart
 has-props
 
@@ -194,7 +194,7 @@
 
 
 
-36858
+37212
 
 pt.yml
 file
@@ -202,10 +202,10 @@
 
 
 
-2010-08-25T15:27:57.774480Z
-4af2d111a93184a59f36694f3ac37290
-2010-08-23T19:39:35.435209Z
-4036
+2010-09-24T12:48:29.707889Z
+2d38e6a7c8c1989d3c31b1d6865ec265
+2010-09-22T16:06:29.391472Z
+4169
 winterheart
 has-props
 
@@ -228,7 +228,7 @@
 
 
 
-39400
+39754
 
 ca.yml
 file
@@ -236,10 +236,10 @@
 
 
 
-2010-08-25T15:27:57.774480Z
-4c34bac30ad92443ef107d140bde3b5b
-2010-08-23T19:39:35.435209Z
-4036
+2010-09-24T12:48:29.707889Z
+b0b5be4539b723cbf97185851d355552
+2010-09-22T16:06:29.391472Z
+4169
 winterheart
 has-props
 
@@ -262,7 +262,7 @@
 
 
 
-39710
+40954
 
 pt-BR.yml
 file
@@ -270,10 +270,10 @@
 
 
 
-2010-08-25T15:27:57.778486Z
-37d6588191e37a50ccec8161a0b7f567
-2010-08-23T19:39:35.435209Z
-4036
+2010-09-24T12:48:29.711820Z
+ca8305cd99de4bed0ba08a8edaa3ef83
+2010-09-22T16:06:29.391472Z
+4169
 winterheart
 has-props
 
@@ -296,7 +296,7 @@
 
 
 
-40137
+40501
 
 tr.yml
 file
@@ -304,10 +304,10 @@
 
 
 
-2010-08-25T15:27:57.778486Z
-11a844270df426ba7f8ae23e94451758
-2010-08-23T19:39:35.435209Z
-4036
+2010-09-24T12:48:29.711820Z
+e782356e16dc42959977cb5a9aaa1f45
+2010-09-22T16:06:29.391472Z
+4169
 winterheart
 has-props
 
@@ -330,7 +330,7 @@
 
 
 
-38851
+39205
 
 ru.yml
 file
@@ -338,10 +338,10 @@
 
 
 
-2010-08-25T15:27:57.778486Z
-fa2affc2bdb2f27c24cdc2420f742bd1
-2010-08-23T19:39:35.435209Z
-4036
+2010-09-24T12:48:29.711820Z
+73be51c0cede8bce9c37d710aaef1ff1
+2010-09-22T19:45:30.172104Z
+4171
 winterheart
 has-props
 
@@ -364,7 +364,7 @@
 
 
 
-60326
+60838
 
 en-GB.yml
 file
@@ -372,10 +372,10 @@
 
 
 
-2010-08-25T15:27:57.778486Z
-2a4b8688fb33a5bfff574c8fea8ff0c4
-2010-08-23T19:39:35.435209Z
-4036
+2010-09-24T12:48:29.711820Z
+d959f171f66003fe8191d8e47a5fe67b
+2010-09-22T16:06:29.391472Z
+4169
 winterheart
 
 
@@ -398,7 +398,7 @@
 
 
 
-37103
+37457
 
 id.yml
 file
@@ -406,10 +406,10 @@
 
 
 
-2010-08-25T15:27:57.778486Z
-b86ea3ca9d165167cbab5a2cca0b928c
-2010-08-23T19:39:35.435209Z
-4036
+2010-09-24T12:48:29.715835Z
+ea5458eb3e0d4b38f5c9b73ef03fe90d
+2010-09-22T16:06:29.391472Z
+4169
 winterheart
 has-props
 
@@ -432,7 +432,7 @@
 
 
 
-38430
+38784
 
 el.yml
 file
@@ -440,10 +440,10 @@
 
 
 
-2010-08-25T15:27:57.782480Z
-493f859c72589fc1766addb4a1aa012b
-2010-08-23T19:39:35.435209Z
-4036
+2010-09-24T12:48:29.715835Z
+43266733dbb73649edddb2d5815fa51b
+2010-09-22T16:06:29.391472Z
+4169
 winterheart
 has-props
 
@@ -466,7 +466,7 @@
 
 
 
-53569
+53923
 
 en.yml
 file
@@ -474,10 +474,10 @@
 
 
 
-2010-08-25T15:27:57.782480Z
-245a552c7f1e1b8bdd5fe9471261df01
-2010-08-23T19:39:35.435209Z
-4036
+2010-09-24T12:48:29.715835Z
+255f81f55e0d6c8ff82b29b61ffed871
+2010-09-22T16:06:29.391472Z
+4169
 winterheart
 has-props
 
@@ -500,7 +500,7 @@
 
 
 
-37224
+37482
 
 gl.yml
 file
@@ -508,10 +508,10 @@
 
 
 
-2010-08-25T15:27:57.782480Z
-becc8c05d2e8a79a6e8127f83db717fb
-2010-08-23T19:39:35.435209Z
-4036
+2010-09-24T12:48:29.715835Z
+abc632b18133f3500b3dd05f57e9378b
+2010-09-22T16:06:29.391472Z
+4169
 winterheart
 has-props
 
@@ -534,7 +534,7 @@
 
 
 
-39460
+39814
 
 cs.yml
 file
@@ -542,10 +542,10 @@
 
 
 
-2010-08-25T15:27:57.782480Z
-09c33a9de5cd5b403722cdcf510f529b
-2010-08-23T19:39:35.435209Z
-4036
+2010-09-24T12:48:29.719859Z
+6e8071957b966d6a8f86e1c05ab54cae
+2010-09-23T16:23:39.070168Z
+4173
 winterheart
 has-props
 
@@ -568,7 +568,7 @@
 
 
 
-39277
+39630
 
 es.yml
 file
@@ -576,10 +576,10 @@
 
 
 
-2010-08-25T15:27:57.782480Z
-fbfa0f261ac856d3a9b2f3e0b5dc6373
-2010-08-23T19:39:35.435209Z
-4036
+2010-09-24T12:48:29.719859Z
+dfe54b5b3df4729ccd32457e9bd4e411
+2010-09-22T16:06:29.391472Z
+4169
 winterheart
 has-props
 
@@ -602,7 +602,41 @@
 
 
 
-42165
+42519
+
+mk.yml
+file
+
+
+
+
+2010-09-24T12:48:29.719859Z
+29ccbe63f00197715dac0af7a48948bf
+2010-09-22T16:06:29.391472Z
+4169
+winterheart
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+47241
 
 ko.yml
 file
@@ -610,10 +644,10 @@
 
 
 
-2010-08-25T15:27:57.786481Z
-8fd2a4fbe626bb9697034243ba589d81
-2010-08-23T19:39:35.435209Z
-4036
+2010-09-24T12:48:29.723862Z
+b772e80bc84527c52c65fc3ba323d83e
+2010-09-22T16:06:29.391472Z
+4169
 winterheart
 has-props
 
@@ -636,7 +670,7 @@
 
 
 
-42856
+43255
 
 eu.yml
 file
@@ -644,10 +678,10 @@
 
 
 
-2010-08-25T15:27:57.786481Z
-96a7a988cf7c10a2c594e3b9b813e0fe
-2010-08-23T19:39:35.435209Z
-4036
+2010-09-24T12:48:29.719859Z
+8e45505ae9b216b825f6653d976fed30
+2010-09-22T16:06:29.391472Z
+4169
 winterheart
 
 
@@ -670,7 +704,7 @@
 
 
 
-39803
+40157
 
 zh-TW.yml
 file
@@ -678,10 +712,10 @@
 
 
 
-2010-08-25T15:27:57.782480Z
-2f07e8fb92ea16e12a209f1f0469dc71
-2010-08-24T16:15:14.958943Z
-4039
+2010-09-24T12:48:29.719859Z
+771ede071092664861220ffb0e975fe8
+2010-09-23T16:23:39.070168Z
+4173
 winterheart
 has-props
 
@@ -704,7 +738,7 @@
 
 
 
-41128
+41483
 
 mn.yml
 file
@@ -712,10 +746,10 @@
 
 
 
-2010-08-25T15:27:57.786481Z
-af5484f42b0f7f335d7de354fbb739a0
-2010-08-23T19:39:35.435209Z
-4036
+2010-09-24T12:48:29.723862Z
+dd4ce6787e9315f3346c8f56a85a0fe9
+2010-09-22T16:06:29.391472Z
+4169
 winterheart
 
 
@@ -738,7 +772,7 @@
 
 
 
-51572
+51926
 
 it.yml
 file
@@ -746,10 +780,10 @@
 
 
 
-2010-08-25T15:27:57.786481Z
-b0f901ede4f701279400ee79352cba65
-2010-08-23T19:39:35.435209Z
-4036
+2010-09-24T12:48:29.723862Z
+4eca662beac78c06a4b1919de9f56556
+2010-09-22T16:06:29.391472Z
+4169
 winterheart
 has-props
 
@@ -772,7 +806,7 @@
 
 
 
-39824
+40178
 
 sk.yml
 file
@@ -780,10 +814,10 @@
 
 
 
-2010-08-25T15:27:57.786481Z
-1c8ba05f9b23b7cdf4ded2f766ea7232
-2010-08-23T19:39:35.435209Z
-4036
+2010-09-24T12:48:29.723862Z
+a5fd7d501ceab618ba6808dd5f56ac5e
+2010-09-22T16:06:29.391472Z
+4169
 winterheart
 has-props
 
@@ -806,7 +840,7 @@
 
 
 
-40065
+40419
 
 sl.yml
 file
@@ -814,10 +848,10 @@
 
 
 
-2010-08-25T15:27:57.786481Z
-d116229e8373be451b7871bf1d6e27b9
-2010-08-23T19:39:35.435209Z
-4036
+2010-09-24T12:48:29.723862Z
+b3008af867361f371f067c96aa0117fc
+2010-09-22T16:06:29.391472Z
+4169
 winterheart
 has-props
 
@@ -840,7 +874,7 @@
 
 
 
-38246
+38600
 
 uk.yml
 file
@@ -848,10 +882,10 @@
 
 
 
-2010-08-25T15:27:57.790480Z
-869975cb649617895ad36abae0157639
-2010-08-23T19:39:35.435209Z
-4036
+2010-09-24T12:48:29.727858Z
+4d320f6006d26969f08e2efb483bd709
+2010-09-22T16:06:29.391472Z
+4169
 winterheart
 has-props
 
@@ -874,7 +908,7 @@
 
 
 
-45865
+46219
 
 da.yml
 file
@@ -882,10 +916,10 @@
 
 
 
-2010-08-25T15:27:57.790480Z
-272d94a2908dd0c839a03155da03387b
-2010-08-23T19:39:35.435209Z
-4036
+2010-09-24T12:48:29.731846Z
+c5d900369c88522a92ba2546882646de
+2010-09-22T16:06:29.391472Z
+4169
 winterheart
 has-props
 
@@ -908,7 +942,7 @@
 
 
 
-38339
+38693
 
 sr.yml
 file
@@ -916,10 +950,10 @@
 
 
 
-2010-08-25T15:27:57.790480Z
-532de5ecb6c21e2c637a316aacdd0250
-2010-08-23T19:39:35.435209Z
-4036
+2010-09-24T12:48:29.727858Z
+ebf019d58581ebc1fd17553c09f7acd1
+2010-09-22T16:06:29.391472Z
+4169
 winterheart
 has-props
 
@@ -942,7 +976,7 @@
 
 
 
-53013
+53325
 
 bg.yml
 file
@@ -950,10 +984,10 @@
 
 
 
-2010-08-25T15:27:57.794486Z
-7f2e51814ac5348f6a8b2b9610d4abb0
-2010-08-23T19:39:35.435209Z
-4036
+2010-09-24T12:48:29.731846Z
+352a62d205b07b845f0adce28cb63d15
+2010-09-22T16:06:29.391472Z
+4169
 winterheart
 has-props
 
@@ -976,7 +1010,7 @@
 
 
 
-45116
+45470
 
 de.yml
 file
@@ -984,10 +1018,10 @@
 
 
 
-2010-08-25T15:27:57.790480Z
-b191395dabb7f3055d2a80642d681d32
-2010-08-24T15:32:11.444497Z
-4038
+2010-09-24T12:48:29.731846Z
+56091e110569c87df775a1a9935060dc
+2010-09-22T16:06:29.391472Z
+4169
 winterheart
 has-props
 
@@ -1010,7 +1044,7 @@
 
 
 
-41018
+41281
 
 sv.yml
 file
@@ -1018,10 +1052,10 @@
 
 
 
-2010-08-25T15:27:57.790480Z
-d7af8a60c3d9add17463d8445c058436
-2010-08-23T19:39:35.435209Z
-4036
+2010-09-24T12:48:29.731846Z
+baa63e9443671e1fd346d60e4ddc1521
+2010-09-22T16:06:29.391472Z
+4169
 winterheart
 has-props
 
@@ -1044,7 +1078,7 @@
 
 
 
-40678
+41037
 
 ja.yml
 file
@@ -1052,10 +1086,10 @@
 
 
 
-2010-08-25T15:27:57.794486Z
-b283e8af1f8bff130ad35a854179f4c0
-2010-08-24T15:32:11.444497Z
-4038
+2010-09-24T12:48:29.731846Z
+1e3539913eaf8d37ea7a2a57fabc3e8c
+2010-09-23T16:23:39.070168Z
+4173
 winterheart
 has-props
 
@@ -1078,7 +1112,7 @@
 
 
 
-44525
+44980
 
 he.yml
 file
@@ -1086,10 +1120,10 @@
 
 
 
-2010-08-25T15:27:57.794486Z
-c4b4f3171cc8fc888d6616783d1ff6d2
-2010-08-23T19:39:35.435209Z
-4036
+2010-09-24T12:48:29.735865Z
+f7992b036be151f88a9e0966780c612a
+2010-09-22T16:06:29.391472Z
+4169
 winterheart
 has-props
 
@@ -1112,7 +1146,7 @@
 
 
 
-43557
+43911
 
 fi.yml
 file
@@ -1120,10 +1154,10 @@
 
 
 
-2010-08-25T15:27:57.794486Z
-623a15ffed3059fcbefad76a3fe0f416
-2010-08-23T19:39:35.435209Z
-4036
+2010-09-24T12:48:29.735865Z
+0a188f9b2652801a82be0d1e378b7aa7
+2010-09-22T16:06:29.391472Z
+4169
 winterheart
 has-props
 
@@ -1146,7 +1180,7 @@
 
 
 
-39498
+39851
 
 bs.yml
 file
@@ -1154,10 +1188,10 @@
 
 
 
-2010-08-25T15:27:57.798480Z
-a0972e3c341e2e3541599309ed1be27f
-2010-08-23T19:39:35.435209Z
-4036
+2010-09-24T12:48:29.735865Z
+608c8fa2f482f744f0cefb0f4248a1cc
+2010-09-22T16:06:29.391472Z
+4169
 winterheart
 has-props
 
@@ -1180,7 +1214,7 @@
 
 
 
-39256
+39610
 
 fr.yml
 file
@@ -1188,10 +1222,10 @@
 
 
 
-2010-08-25T15:27:57.798480Z
-710200eb6f30485a55412254dc095f4a
-2010-08-23T19:39:35.435209Z
-4036
+2010-09-24T12:48:29.735865Z
+76819e14f31cc7d6afba22b00e1944da
+2010-09-22T16:06:29.391472Z
+4169
 winterheart
 has-props
 
@@ -1214,7 +1248,7 @@
 
 
 
-41416
+41681
 
 nl.yml
 file
@@ -1222,10 +1256,10 @@
 
 
 
-2010-08-25T15:27:57.798480Z
-90dd2a5148bd2caacac1008431e2c0e0
-2010-08-23T19:39:35.435209Z
-4036
+2010-09-24T12:48:29.739830Z
+9c8ae2781ab6840c9c3812337a0b736a
+2010-09-22T16:06:29.391472Z
+4169
 winterheart
 has-props
 
@@ -1248,7 +1282,7 @@
 
 
 
-38746
+39162
 
 hr.yml
 file
@@ -1256,10 +1290,10 @@
 
 
 
-2010-08-25T15:27:57.798480Z
-51e7e214ceec548b06bf61e74ecd87d2
-2010-08-23T19:39:35.435209Z
-4036
+2010-09-24T12:48:29.739830Z
+8a3ca64a856a4cd1ea792941be1051db
+2010-09-22T16:06:29.391472Z
+4169
 winterheart
 has-props
 
@@ -1282,7 +1316,7 @@
 
 
 
-38917
+39271
 
 pl.yml
 file
@@ -1290,10 +1324,10 @@
 
 
 
-2010-08-25T15:27:57.798480Z
-2fd8226134f129e192091c9591ca6949
-2010-08-23T19:39:35.435209Z
-4036
+2010-09-24T12:48:29.739830Z
+139a3bc99dba793a92f9b4f797c9d04c
+2010-09-22T16:06:29.391472Z
+4169
 winterheart
 has-props
 
@@ -1316,7 +1350,7 @@
 
 
 
-41183
+41757
 
 th.yml
 file
@@ -1324,10 +1358,10 @@
 
 
 
-2010-08-25T15:27:57.802489Z
-e5f13a132bbc6517ef57005106f775a8
-2010-08-23T19:39:35.435209Z
-4036
+2010-09-24T12:48:29.739830Z
+a522d5ecaa0583e30a7e592e98ce6bac
+2010-09-22T16:06:29.391472Z
+4169
 winterheart
 has-props
 
@@ -1350,7 +1384,7 @@
 
 
 
-51745
+52099
 
 no.yml
 file
@@ -1358,10 +1392,10 @@
 
 
 
-2010-08-25T15:27:57.802489Z
-32c6071a62b471a7c84f8f5c3e205d87
-2010-08-23T19:39:35.435209Z
-4036
+2010-09-24T12:48:29.743854Z
+ebbbed8ecfff22c16b6cfe0bcecd3f12
+2010-09-22T16:06:29.391472Z
+4169
 winterheart
 has-props
 
@@ -1384,7 +1418,7 @@
 
 
 
-37302
+37656
 
 hu.yml
 file
@@ -1392,10 +1426,10 @@
 
 
 
-2010-08-25T15:27:57.802489Z
-b05edcccc0a1f075275cfb52b614a6f0
-2010-08-23T19:39:35.435209Z
-4036
+2010-09-24T12:48:29.743854Z
+7ec87ad7dd6926dacda0f12c3dce91fb
+2010-09-22T16:06:29.391472Z
+4169
 winterheart
 has-props
 
@@ -1418,7 +1452,7 @@
 
 
 
-41831
+42185
 
 vi.yml
 file
@@ -1426,10 +1460,10 @@
 
 
 
-2010-08-25T15:27:57.802489Z
-8c6ff176efc36371deb2f21af4d9548a
-2010-08-23T19:39:35.435209Z
-4036
+2010-09-24T12:48:29.743854Z
+d2da1eed28eb609e12ab3cae38ea1f69
+2010-09-22T16:06:29.391472Z
+4169
 winterheart
 has-props
 
@@ -1452,5 +1486,5 @@
 
 
 
-42408
+42762
 
--- a/config/locales/.svn/text-base/bg.yml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/.svn/text-base/bg.yml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -116,6 +116,7 @@
         greater_than_start_date: "трябва да е след началната дата"
         not_same_project: "не е от същия проект"
         circular_dependency: "Тази релация ще доведе до безкрайна зависимост"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
 
   actionview_instancetag_blank_option: Изберете
   
@@ -906,3 +907,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/.svn/text-base/bs.yml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/.svn/text-base/bs.yml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -130,6 +130,7 @@
         greater_than_start_date: "mora biti veći nego početni datum"
         not_same_project: "ne pripada istom projektu"
         circular_dependency: "Ova relacija stvar cirkularnu zavisnost"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
 
   actionview_instancetag_blank_option: Molimo odaberite
   
@@ -926,3 +927,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/.svn/text-base/ca.yml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/.svn/text-base/ca.yml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -1,4 +1,8 @@
+# Redmine catalan translation: 
+# by Joan Duran
+
 ca:
+  # Text direction: Left-to-Right (ltr) or Right-to-Left (rtl)
   direction: ltr
   date:
     formats:
@@ -65,6 +69,7 @@
         other: "almost {{count}} years"
 
   number:
+    # Default format for numbers
     format:
       separator: "."
       delimiter: ""
@@ -83,6 +88,7 @@
           mb: "MB"
           gb: "GB"
           tb: "TB"
+
         
 # Used in array.to_sentence.
   support:
@@ -116,6 +122,7 @@
         greater_than_start_date: "ha de ser superior que la data inicial"
         not_same_project: "no pertany al mateix projecte"
         circular_dependency: "Aquesta relació crearia una dependència circular"
+        cant_link_an_issue_with_a_descendant: "Un assumpte no es pot enllaçar a una de les seves subtasques"
 
   actionview_instancetag_blank_option: Seleccioneu
   
@@ -149,18 +156,33 @@
   notice_email_sent: "S'ha enviat un correu electrònic a {{value}}"
   notice_email_error: "S'ha produït un error en enviar el correu ({{value}})"
   notice_feeds_access_key_reseted: "S'ha reiniciat la clau d'accés del RSS."
+  notice_api_access_key_reseted: "S'ha reiniciat la clau d'accés a l'API."
   notice_failed_to_save_issues: "No s'han pogut desar %s assumptes de {{count}} seleccionats: {{ids}}."
+  notice_failed_to_save_members: "No s'han pogut desar els membres: {{errors}}."
   notice_no_issue_selected: "No s'ha seleccionat cap assumpte. Activeu els assumptes que voleu editar."
   notice_account_pending: "S'ha creat el compte i ara està pendent de l'aprovació de l'administrador."
   notice_default_data_loaded: "S'ha carregat correctament la configuració predeterminada."
   notice_unable_delete_version: "No s'ha pogut suprimir la versió."
+  notice_unable_delete_time_entry: "No s'ha pogut suprimir l'entrada del registre de temps."
+  notice_issue_done_ratios_updated: "S'ha actualitzat el tant per cent dels assumptes."
   
   error_can_t_load_default_data: "No s'ha pogut carregar la configuració predeterminada: {{value}} "
   error_scm_not_found: "No s'ha trobat l'entrada o la revisió en el dipòsit."
   error_scm_command_failed: "S'ha produït un error en intentar accedir al dipòsit: {{value}}"
   error_scm_annotate: "L'entrada no existeix o no s'ha pogut anotar."
   error_issue_not_found_in_project: "No s'ha trobat l'assumpte o no pertany a aquest projecte"
-
+  error_no_tracker_in_project: "Aquest projecte no té seguidor associat. Comproveu els paràmetres del projecte."
+  error_no_default_issue_status: "No s'ha definit cap estat d'assumpte predeterminat. Comproveu la configuració (aneu a «Administració -> Estats de l'assumpte»)."
+  error_can_not_delete_custom_field: "No s'ha pogut suprimir el camp personalitat"
+  error_can_not_delete_tracker: "Aquest seguidor conté assumptes i no es pot suprimir."
+  error_can_not_remove_role: "Aquest rol s'està utilitzant i no es pot suprimir."
+  error_can_not_reopen_issue_on_closed_version: "Un assumpte assignat a una versió tancada no es pot tornar a obrir"
+  error_can_not_archive_project: "Aquest projecte no es pot arxivar"
+  error_issue_done_ratios_not_updated: "No s'ha actualitza el tant per cent dels assumptes."
+  error_workflow_copy_source: "Seleccioneu un seguidor o rol font"
+  error_workflow_copy_target: "Seleccioneu seguidors i rols objectiu"
+  error_unable_delete_issue_status: "No s'ha pogut suprimir l'estat de l'assumpte"
+  error_unable_to_connect: "No s'ha pogut connectar ({{value}})"
   warning_attachments_not_saved: "No s'han pogut desar {{count}} fitxers."
   
   mail_subject_lost_password: "Contrasenya de {{value}}"
@@ -173,6 +195,10 @@
   mail_body_account_activation_request: "S'ha registrat un usuari nou ({{value}}). El seu compte està pendent d'aprovació:"
   mail_subject_reminder: "{{count}} assumptes venceran els següents {{days}} dies"
   mail_body_reminder: "{{count}} assumptes que teniu assignades venceran els següents {{days}} dies:"
+  mail_subject_wiki_content_added: "S'ha afegit la pàgina wiki «{{page}}»"
+  mail_body_wiki_content_added: "En {{author}} ha afegit la pàgina wiki «{{page}}»."
+  mail_subject_wiki_content_updated: "S'ha actualitzat la pàgina wiki «{{page}}»"
+  mail_body_wiki_content_updated: "En {{author}} ha actualitzat la pàgina wiki «{{page}}»."
   
   gui_validation_error: 1 error
   gui_validation_error_plural: "{{count}} errors"
@@ -212,6 +238,7 @@
   field_priority: Prioritat
   field_fixed_version: Versió objectiu
   field_user: Usuari
+  field_principal: Principal
   field_role: Rol
   field_homepage: Pàgina web
   field_is_public: Públic
@@ -256,6 +283,7 @@
   field_redirect_existing_links: Redirigeix els enllaços existents
   field_estimated_hours: Temps previst
   field_column_names: Columnes
+  field_time_entries: "Registre de temps"
   field_time_zone: Zona horària
   field_searchable: Es pot cercar
   field_default_value: Valor predeterminat
@@ -265,6 +293,9 @@
   field_watcher: Vigilància
   field_identity_url: URL OpenID
   field_content: Contingut
+  field_group_by: "Agrupa els resultats per"
+  field_sharing: Compartició
+  field_parent_issue: "Tasca pare"
   
   setting_app_title: "Títol de l'aplicació"
   setting_app_subtitle: "Subtítol de l'aplicació"
@@ -300,20 +331,35 @@
   setting_activity_days_default: "Dies a mostrar l'activitat del projecte"
   setting_display_subprojects_issues: "Mostra els assumptes d'un subprojecte en el projecte pare per defecte"
   setting_enabled_scm: "Habilita l'SCM"
+  setting_mail_handler_body_delimiters: "Trunca els correus electrònics després d'una d'aquestes línies"
   setting_mail_handler_api_enabled: "Habilita el WS per correus electrònics d'entrada"
   setting_mail_handler_api_key: Clau API
   setting_sequential_project_identifiers: Genera identificadors de projecte seqüencials
   setting_gravatar_enabled: "Utilitza les icones d'usuari Gravatar"
+  setting_gravatar_default: "Imatge Gravatar predeterminada"
   setting_diff_max_lines_displayed: Número màxim de línies amb diferències mostrades
   setting_file_max_size_displayed: Mida màxima dels fitxers de text mostrats en línia
   setting_repository_log_display_limit: Número màxim de revisions que es mostren al registre de fitxers
   setting_openid: "Permet entrar i registrar-se amb l'OpenID"
-
+  setting_password_min_length: "Longitud mínima de la contrasenya"
+  setting_new_project_user_role_id: "Aquest rol es dóna a un usuari no administrador per a crear projectes"
+  setting_default_projects_modules: "Mòduls activats per defecte en els projectes nous"
+  setting_issue_done_ratio: "Calcula tant per cent realitzat de l'assumpte amb"
+  setting_issue_done_ratio_issue_status: "Utilitza l'estat de l'assumpte"
+  setting_issue_done_ratio_issue_field: "Utilitza el camp de l'assumpte"
+  setting_start_of_week: "Inicia les setmanes en"
+  setting_rest_api_enabled: "Habilita el servei web REST"
+  setting_cache_formatted_text: Cache formatted text
+  
+  permission_add_project: "Crea projectes"
+  permission_add_subprojects: "Crea subprojectes"
   permission_edit_project: Edita el projecte
   permission_select_project_modules: Selecciona els mòduls del projecte
   permission_manage_members: Gestiona els membres
+  permission_manage_project_activities: "Gestiona les activitats del projecte"
   permission_manage_versions: Gestiona les versions
   permission_manage_categories: Gestiona les categories dels assumptes
+  permission_view_issues: "Visualitza els assumptes"
   permission_add_issues: Afegeix assumptes
   permission_edit_issues: Edita els assumptes
   permission_manage_issue_relations: Gestiona les relacions dels assumptes
@@ -328,6 +374,7 @@
   permission_view_calendar: Visualitza el calendari
   permission_view_issue_watchers: Visualitza la llista de vigilàncies
   permission_add_issue_watchers: Afegeix vigilàncies
+  permission_delete_issue_watchers: Suprimeix els vigilants
   permission_log_time: Registra el temps invertit
   permission_view_time_entries: Visualitza el temps invertit
   permission_edit_time_entries: Edita els registres de temps
@@ -357,6 +404,8 @@
   permission_edit_own_messages: Edita els missatges propis
   permission_delete_messages: Suprimeix els missatges
   permission_delete_own_messages: Suprimeix els missatges propis
+  permission_export_wiki_pages: "Exporta les pàgines wiki"
+  permission_manage_subtasks: "Gestiona subtasques"
   
   project_module_issue_tracking: "Seguidor d'assumptes"
   project_module_time_tracking: Seguidor de temps
@@ -366,10 +415,13 @@
   project_module_wiki: Wiki
   project_module_repository: Dipòsit
   project_module_boards: Taulers
+  project_module_calendar: Calendari
+  project_module_gantt: Gantt
   
   label_user: Usuari
   label_user_plural: Usuaris
   label_user_new: Usuari nou
+  label_user_anonymous: Anònim
   label_project: Projecte
   label_project_new: Projecte nou
   label_project_plural: Projectes
@@ -416,12 +468,13 @@
   label_information_plural: Informació
   label_please_login: Entreu
   label_register: Registre
-  label_login_with_open_id_option: o entra amb l'OpenID
+  label_login_with_open_id_option: "o entra amb l'OpenID"
   label_password_lost: Contrasenya perduda
   label_home: Inici
   label_my_page: La meva pàgina
   label_my_account: El meu compte
   label_my_projects: Els meus projectes
+  label_my_page_block: "Els meus blocs de pàgina"
   label_administration: Administració
   label_login: Entra
   label_logout: Surt
@@ -441,6 +494,7 @@
   label_auth_source_new: "Mode d'autenticació nou"
   label_auth_source_plural: "Modes d'autenticació"
   label_subproject_plural: Subprojectes
+  label_subproject_new: "Subprojecte nou"
   label_and_its_subprojects: "{{value}} i els seus subprojectes"
   label_min_max_length: Longitud mín - max
   label_list: Llist
@@ -475,8 +529,9 @@
   label_version: Versió
   label_version_new: Versió nova
   label_version_plural: Versions
+  label_close_versions: "Tanca les versions completades"
   label_confirmation: Confirmació
-  label_export_to: 'També disponible a:'
+  label_export_to: "També disponible a:"
   label_read: Llegeix...
   label_public_projects: Projectes públics
   label_open_issues: obert
@@ -533,6 +588,8 @@
   label_not_equals: no és
   label_in_less_than: en menys de
   label_in_more_than: en més de
+  label_greater_or_equal: ">="
+  label_less_or_equal: <=
   label_in: en
   label_today: avui
   label_all_time: tot el temps
@@ -555,17 +612,21 @@
   label_browse: Navega
   label_modification: "{{count}} canvi"
   label_modification_plural: "{{count}} canvis"
+  label_branch: Branca
+  label_tag: Etiqueta
   label_revision: Revisió
   label_revision_plural: Revisions
+  label_revision_id: "Revisió {{value}}"
   label_associated_revisions: Revisions associades
   label_added: afegit
   label_modified: modificat
+  label_copied: copiat
   label_renamed: reanomenat
-  label_copied: copiat
   label_deleted: suprimit
   label_latest_revision: Última revisió
   label_latest_revision_plural: Últimes revisions
   label_view_revisions: Visualitza les revisions
+  label_view_all_revisions: "Visualitza totes les revisions"
   label_max_size: Mida màxima
   label_sort_highest: Mou a la part superior
   label_sort_higher: Mou cap amunt
@@ -591,6 +652,7 @@
   label_changes_details: Detalls de tots els canvis
   label_issue_tracking: "Seguiment d'assumptes"
   label_spent_time: Temps invertit
+  label_overall_spent_time: "Temps total invertit"
   label_f_hour: "{{value}} hora"
   label_f_hour_plural: "{{value}} hores"
   label_time_tracking: Temps de seguiment
@@ -628,6 +690,8 @@
   label_board: Fòrum
   label_board_new: Fòrum nou
   label_board_plural: Fòrums
+  label_board_locked: Bloquejat
+  label_board_sticky: Sticky
   label_topic_plural: Temes
   label_message_plural: Missatges
   label_message_last: Últim missatge
@@ -643,6 +707,8 @@
   label_language_based: "Basat en l'idioma de l'usuari"
   label_sort_by: "Ordena per {{value}}"
   label_send_test_email: Envia un correu electrònic de prova
+  label_feeds_access_key: "Clau d'accés del RSS"
+  label_missing_feeds_access_key: "Falta una clau d'accés del RSS"
   label_feeds_access_key_created_on: "Clau d'accés del RSS creada fa {{value}}"
   label_module_plural: Mòduls
   label_added_time_by: "Afegit per {{author}} fa {{age}}"
@@ -688,6 +754,28 @@
   label_ascending: Ascendent
   label_descending: Descendent
   label_date_from_to: Des de {{start}} a {{end}}
+  label_wiki_content_added: "S'ha afegit la pàgina wiki"
+  label_wiki_content_updated: "S'ha actualitzat la pàgina wiki"
+  label_group: Grup
+  label_group_plural: Grups
+  label_group_new: Grup nou
+  label_time_entry_plural: Temps invertit
+  label_version_sharing_hierarchy: "Amb la jerarquia del projecte"
+  label_version_sharing_system: "Amb tots els projectes"
+  label_version_sharing_descendants: "Amb tots els subprojectes"
+  label_version_sharing_tree: "Amb l'arbre del projecte"
+  label_version_sharing_none: "Sense compartir"
+  label_update_issue_done_ratios: "Actualitza el tant per cent dels assumptes realitzats"
+  label_copy_source: Font
+  label_copy_target: Objectiu
+  label_copy_same_as_target: "El mateix que l'objectiu"
+  label_display_used_statuses_only: "Mostra només els estats que utilitza aquest seguidor"
+  label_api_access_key: "Clau d'accés a l'API"
+  label_missing_api_access_key: "Falta una clau d'accés de l'API"
+  label_api_access_key_created_on: "Clau d'accés de l'API creada fa {{value}}"
+  label_profile: Perfil
+  label_subtask_plural: Subtasques
+  label_project_copy_notifications: "Envia notificacions de correu electrònic durant la còpia del projecte"
   
   button_login: Entra
   button_submit: Tramet
@@ -709,11 +797,12 @@
   button_list: Llista
   button_view: Visualitza
   button_move: Mou
+  button_move_and_follow: "Mou i segueix"
   button_back: Enrere
   button_cancel: Cancel·la
   button_activate: Activa
   button_sort: Ordena
-  button_log_time: "Hora d'entrada"
+  button_log_time: "Registre de temps"
   button_rollback: Torna a aquesta versió
   button_watch: Vigila
   button_unwatch: No vigilis
@@ -724,15 +813,24 @@
   button_rename: Reanomena
   button_change_password: Canvia la contrasenya
   button_copy: Copia
+  button_copy_and_follow: "Copia i segueix"
   button_annotate: Anota
   button_update: Actualitza
   button_configure: Configura
   button_quote: Cita
+  button_duplicate: Duplica
+  button_show: Mostra
   
   status_active: actiu
   status_registered: informat
   status_locked: bloquejat
   
+  version_status_open: oberta
+  version_status_locked: bloquejada
+  version_status_closed: tancada
+
+  field_active: Actiu
+  
   text_select_mail_notifications: "Seleccioneu les accions per les quals s'hauria d'enviar una notificació per correu electrònic."
   text_regexp_info: ex. ^[A-Z0-9]+$
   text_min_max_length_info: 0 significa sense restricció
@@ -740,6 +838,10 @@
   text_subprojects_destroy_warning: "També seran suprimits els seus subprojectes: {{value}}."
   text_workflow_edit: Seleccioneu un rol i un seguidor per a editar el flux de treball
   text_are_you_sure: Segur?
+  text_journal_changed: "{{label}} ha canviat de {{old}} a {{new}}"
+  text_journal_set_to: "{{label}} s'ha establert a {{value}}"
+  text_journal_deleted: "{{label}} s'ha suprimit ({{old}})"
+  text_journal_added: "S'ha afegit {{label}} {{value}}"
   text_tip_task_begin_day: "tasca que s'inicia aquest dia"
   text_tip_task_end_day: tasca que finalitza aquest dia
   text_tip_task_begin_end_day: "tasca que s'inicia i finalitza aquest dia"
@@ -750,6 +852,7 @@
   text_tracker_no_workflow: "No s'ha definit cap flux de treball per a aquest seguidor"
   text_unallowed_characters: Caràcters no permesos
   text_comma_separated: Es permeten valors múltiples (separats per una coma).
+  text_line_separated: "Es permeten diversos valors (una línia per cada valor)."
   text_issues_ref_in_commit_messages: Referència i soluciona els assumptes en els missatges publicats
   text_issue_added: "L'assumpte {{id}} ha sigut informat per {{author}}."
   text_issue_updated: "L'assumpte {{id}} ha sigut actualitzat per {{author}}."
@@ -770,14 +873,21 @@
   text_destroy_time_entries_question: "S'han informat {{hours}} hores en els assumptes que aneu a suprimir. Què voleu fer?"
   text_destroy_time_entries: Suprimeix les hores informades
   text_assign_time_entries_to_project: Assigna les hores informades al projecte
-  text_reassign_time_entries: 'Torna a assignar les hores informades a aquest assumpte:'
+  text_reassign_time_entries: "Torna a assignar les hores informades a aquest assumpte:"
   text_user_wrote: "{{value}} va escriure:"
   text_enumeration_destroy_question: "{{count}} objectes estan assignats a aquest valor."
-  text_enumeration_category_reassign_to: 'Torna a assignar-los a aquest valor:'
+  text_enumeration_category_reassign_to: "Torna a assignar-los a aquest valor:"
   text_email_delivery_not_configured: "El lliurament per correu electrònic no està configurat i les notificacions estan inhabilitades.\nConfigureu el servidor SMTP a config/email.yml i reinicieu l'aplicació per habilitar-lo."
   text_repository_usernames_mapping: "Seleccioneu l'assignació entre els usuaris del Redmine i cada nom d'usuari trobat al dipòsit.\nEls usuaris amb el mateix nom d'usuari o correu del Redmine i del dipòsit s'assignaran automàticament."
   text_diff_truncated: "... Aquestes diferències s'han trucat perquè excedeixen la mida màxima que es pot mostrar."
-  text_custom_field_possible_values_info: 'Una línia per a cada valor'
+  text_custom_field_possible_values_info: "Una línia per a cada valor"
+  text_wiki_page_destroy_question: "Aquesta pàgina té {{descendants}} pàgines fill i descendents. Què voleu fer?"
+  text_wiki_page_nullify_children: "Deixa les pàgines fill com a pàgines arrel"
+  text_wiki_page_destroy_children: "Suprimeix les pàgines fill i tots els seus descendents"
+  text_wiki_page_reassign_children: "Reasigna les pàgines fill a aquesta pàgina pare"
+  text_own_membership_delete_confirmation: "Esteu a punt de suprimir algun o tots els vostres permisos i potser no podreu editar més aquest projecte.\nSegur que voleu continuar?"
+  text_zoom_in: Redueix
+  text_zoom_out: Amplia
   
   default_role_manager: Gestor
   default_role_developer: Desenvolupador
@@ -804,108 +914,10 @@
   enumeration_issue_priorities: Prioritat dels assumptes
   enumeration_doc_categories: Categories del document
   enumeration_activities: Activitats (seguidor de temps)
-  label_greater_or_equal: ">="
-  label_less_or_equal: <=
-  text_wiki_page_destroy_question: This page has {{descendants}} child page(s) and descendant(s). What do you want to do?
-  text_wiki_page_reassign_children: Reassign child pages to this parent page
-  text_wiki_page_nullify_children: Keep child pages as root pages
-  text_wiki_page_destroy_children: Delete child pages and all their descendants
-  setting_password_min_length: Minimum password length
-  field_group_by: Group results by
-  mail_subject_wiki_content_updated: "'{{page}}' wiki page has been updated"
-  label_wiki_content_added: Wiki page added
-  mail_subject_wiki_content_added: "'{{page}}' wiki page has been added"
-  mail_body_wiki_content_added: The '{{page}}' wiki page has been added by {{author}}.
-  label_wiki_content_updated: Wiki page updated
-  mail_body_wiki_content_updated: The '{{page}}' wiki page has been updated by {{author}}.
-  permission_add_project: Create project
-  setting_new_project_user_role_id: Role given to a non-admin user who creates a project
-  label_view_all_revisions: View all revisions
-  label_tag: Tag
-  label_branch: Branch
-  error_no_tracker_in_project: No tracker is associated to this project. Please check the Project settings.
-  error_no_default_issue_status: No default issue status is defined. Please check your configuration (Go to "Administration -> Issue statuses").
-  text_journal_changed: "{{label}} changed from {{old}} to {{new}}"
-  text_journal_set_to: "{{label}} set to {{value}}"
-  text_journal_deleted: "{{label}} deleted ({{old}})"
-  label_group_plural: Groups
-  label_group: Group
-  label_group_new: New group
-  label_time_entry_plural: Spent time
-  text_journal_added: "{{label}} {{value}} added"
-  field_active: Active
-  enumeration_system_activity: System Activity
-  permission_delete_issue_watchers: Delete watchers
-  version_status_closed: closed
-  version_status_locked: locked
-  version_status_open: open
-  error_can_not_reopen_issue_on_closed_version: An issue assigned to a closed version can not be reopened
-  label_user_anonymous: Anonymous
-  button_move_and_follow: Move and follow
-  setting_default_projects_modules: Default enabled modules for new projects
-  setting_gravatar_default: Default Gravatar image
-  field_sharing: Sharing
-  label_version_sharing_hierarchy: With project hierarchy
-  label_version_sharing_system: With all projects
-  label_version_sharing_descendants: With subprojects
-  label_version_sharing_tree: With project tree
-  label_version_sharing_none: Not shared
-  error_can_not_archive_project: This project can not be archived
-  button_duplicate: Duplicate
-  button_copy_and_follow: Copy and follow
-  label_copy_source: Source
-  setting_issue_done_ratio: Calculate the issue done ratio with
-  setting_issue_done_ratio_issue_status: Use the issue status
-  error_issue_done_ratios_not_updated: Issue done ratios not updated.
-  error_workflow_copy_target: Please select target tracker(s) and role(s)
-  setting_issue_done_ratio_issue_field: Use the issue field
-  label_copy_same_as_target: Same as target
-  label_copy_target: Target
-  notice_issue_done_ratios_updated: Issue done ratios updated.
-  error_workflow_copy_source: Please select a source tracker or role
-  label_update_issue_done_ratios: Update issue done ratios
-  setting_start_of_week: Start calendars on
-  permission_view_issues: View Issues
-  label_display_used_statuses_only: Only display statuses that are used by this tracker
-  label_revision_id: Revision {{value}}
-  label_api_access_key: API access key
-  label_api_access_key_created_on: API access key created {{value}} ago
-  label_feeds_access_key: RSS access key
-  notice_api_access_key_reseted: Your API access key was reset.
-  setting_rest_api_enabled: Enable REST web service
-  label_missing_api_access_key: Missing an API access key
-  label_missing_feeds_access_key: Missing a RSS access key
-  button_show: Show
-  text_line_separated: Multiple values allowed (one line for each value).
-  setting_mail_handler_body_delimiters: Truncate emails after one of these lines
-  permission_add_subprojects: Create subprojects
-  label_subproject_new: New subproject
-  text_own_membership_delete_confirmation: |-
-    You are about to remove some or all of your permissions and may no longer be able to edit this project after that.
-    Are you sure you want to continue?
-  label_close_versions: Close completed versions
-  label_board_sticky: Sticky
-  label_board_locked: Locked
-  permission_export_wiki_pages: Export wiki pages
-  setting_cache_formatted_text: Cache formatted text
-  permission_manage_project_activities: Manage project activities
-  error_unable_delete_issue_status: Unable to delete issue status
-  label_profile: Profile
-  permission_manage_subtasks: Manage subtasks
-  field_parent_issue: Parent task
-  label_subtask_plural: Subtasks
-  label_project_copy_notifications: Send email notifications during the project copy
-  error_can_not_delete_custom_field: Unable to delete custom field
-  error_unable_to_connect: Unable to connect ({{value}})
-  error_can_not_remove_role: This role is in use and can not be deleted.
-  error_can_not_delete_tracker: This tracker contains issues and can't be deleted.
-  field_principal: Principal
-  label_my_page_block: My page block
-  notice_failed_to_save_members: "Failed to save member(s): {{errors}}."
-  text_zoom_out: Zoom out
-  text_zoom_in: Zoom in
-  notice_unable_delete_time_entry: Unable to delete time log entry.
-  label_overall_spent_time: Overall spent time
-  field_time_entries: Log time
-  project_module_gantt: Gantt
-  project_module_calendar: Calendar
+  enumeration_system_activity: Activitat del sistema
+
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/.svn/text-base/cs.yml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/.svn/text-base/cs.yml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -116,6 +116,7 @@
         greater_than_start_date: "musí být větší než počáteční datum"
         not_same_project: "nepatří stejnému projektu"
         circular_dependency: "Tento vztah by vytvořil cyklickou závislost"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
 
   # Updated by Josef Liška <jl@chl.cz>
   # CZ translation by Maxim Krušina | Massimo Filippi, s.r.o. | maxim@mxm.cz
@@ -393,7 +394,7 @@
   label_attachment_delete: Odstranit soubor
   label_attachment_plural: Soubory
   label_file_added: Soubor přidán
-  label_report: Přeheled
+  label_report: Přehled
   label_report_plural: Přehledy
   label_news: Novinky
   label_news_new: Přidat novinku
@@ -912,3 +913,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/.svn/text-base/da.yml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/.svn/text-base/da.yml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -130,6 +130,7 @@
         greater_than_start_date: "skal være senere end startdatoen"
         not_same_project: "hører ikke til samme projekt"
         circular_dependency: "Denne relation vil skabe et afhængighedsforhold"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
 
       template:
         header:
@@ -928,3 +929,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/.svn/text-base/de.yml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/.svn/text-base/de.yml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -803,6 +803,7 @@
   button_create_and_continue: Anlegen + nächstes Ticket
   button_test: Testen
   button_edit: Bearbeiten
+  button_edit_associated_wikipage: "Zugehörige Wikiseite bearbeiten: {{page_title}}"
   button_add: Hinzufügen
   button_change: Wechseln
   button_apply: Anwenden
@@ -932,3 +933,7 @@
   enumeration_activities: Aktivitäten (Zeiterfassung)
   enumeration_system_activity: System-Aktivität
 
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/.svn/text-base/el.yml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/.svn/text-base/el.yml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -119,6 +119,7 @@
         greater_than_start_date: "πρέπει να είναι αργότερα από την ημερομηνία έναρξης"
         not_same_project: "δεν ανήκει στο ίδιο έργο"
         circular_dependency: "Αυτή η σχέση θα δημιουργήσει κυκλικές εξαρτήσεις"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
 
   actionview_instancetag_blank_option: Παρακαλώ επιλέξτε
   
@@ -912,3 +913,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/.svn/text-base/en-GB.yml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/.svn/text-base/en-GB.yml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -122,6 +122,7 @@
         greater_than_start_date: "must be greater than start date"
         not_same_project: "doesn't belong to the same project"
         circular_dependency: "This relation would create a circular dependency"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
 
   actionview_instancetag_blank_option: Please select
   
@@ -916,3 +917,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/.svn/text-base/en.yml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/.svn/text-base/en.yml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -293,6 +293,9 @@
   field_group_by: Group results by
   field_sharing: Sharing
   field_parent_issue: Parent task
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  field_text: Text field
   
   setting_app_title: Application title
   setting_app_subtitle: Application subtitle
@@ -784,6 +787,7 @@
   button_create_and_continue: Create and continue
   button_test: Test
   button_edit: Edit
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
   button_add: Add
   button_change: Change
   button_apply: Apply
@@ -835,6 +839,7 @@
   text_subprojects_destroy_warning: "Its subproject(s): {{value}} will be also deleted."
   text_workflow_edit: Select a role and a tracker to edit the workflow
   text_are_you_sure: Are you sure ?
+  text_are_you_sure_with_children: "Delete issue and all child issues?"
   text_journal_changed: "{{label}} changed from {{old}} to {{new}}"
   text_journal_set_to: "{{label}} set to {{value}}"
   text_journal_deleted: "{{label}} deleted ({{old}})"
--- a/config/locales/.svn/text-base/es.yml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/.svn/text-base/es.yml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -132,6 +132,7 @@
         greater_than_start_date: "debe ser posterior a la fecha de comienzo"
         not_same_project: "no pertenece al mismo proyecto"
         circular_dependency: "Esta relación podría crear una dependencia circular"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
 
         # Append your own errors here or at the model/attributes scope.
 
@@ -952,3 +953,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/.svn/text-base/eu.yml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/.svn/text-base/eu.yml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -121,6 +121,7 @@
         greater_than_start_date: "hasiera data baino handiagoa izan behar du"
         not_same_project: "ez dago proiektu berdinean"
         circular_dependency: "Erlazio honek mendekotasun zirkular bat sortuko luke"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
 
   actionview_instancetag_blank_option: Hautatu mesedez
   
@@ -916,3 +917,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/.svn/text-base/fi.yml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/.svn/text-base/fi.yml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -147,7 +147,7 @@
         greater_than_start_date: "tulee olla aloituspäivän jälkeinen"
         not_same_project: "ei kuulu samaan projektiin"
         circular_dependency: "Tämä suhde loisi kehän."
-
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
   
   actionview_instancetag_blank_option: Valitse, ole hyvä
   
@@ -938,3 +938,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/.svn/text-base/fr.yml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/.svn/text-base/fr.yml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -931,3 +931,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Modifier la page de Wiki associée: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/.svn/text-base/gl.yml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/.svn/text-base/gl.yml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -150,6 +150,7 @@
         greater_than_start_date: "debe ser posterior á data de comezo"
         not_same_project: "non pertence ao mesmo proxecto"
         circular_dependency: "Esta relación podería crear unha dependencia circular"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
 
   actionview_instancetag_blank_option: Por favor seleccione
   
@@ -928,3 +929,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/.svn/text-base/he.yml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/.svn/text-base/he.yml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -123,6 +123,7 @@
         greater_than_start_date: "חייב להיות מאוחר יותר מתאריך ההתחלה"
         not_same_project: "לא שייך לאותו הפרויקט"
         circular_dependency: "הקשר הזה יצור תלות מעגלית"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
 
   actionview_instancetag_blank_option: בחר בבקשה
 
@@ -917,3 +918,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/.svn/text-base/hr.yml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/.svn/text-base/hr.yml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -117,6 +117,7 @@
         greater_than_start_date: "mora biti veci nego pocetni datum"
         not_same_project: "ne pripada istom projektu"
         circular_dependency: "Ovaj relacija stvara kružnu ovisnost"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
 
   actionview_instancetag_blank_option: Molimo odaberite
   
@@ -919,3 +920,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/.svn/text-base/hu.yml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/.svn/text-base/hu.yml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -143,6 +143,7 @@
         greater_than_start_date: "nagyobbnak kell lennie, mint az indítás dátuma"
         not_same_project: "nem azonos projekthez tartozik"
         circular_dependency: "Ez a kapcsolat egy körkörös függőséget eredményez"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
 
   actionview_instancetag_blank_option: Kérem válasszon
   
@@ -935,3 +936,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/.svn/text-base/id.yml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/.svn/text-base/id.yml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -119,6 +119,7 @@
         greater_than_start_date: "harus lebih besar dari tanggal mulai"
         not_same_project: "tidak tergabung dalam proyek yang sama"
         circular_dependency: "kaitan ini akan menghasilkan circular dependency"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
 
   actionview_instancetag_blank_option: Silakan pilih
   
@@ -920,3 +921,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/.svn/text-base/it.yml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/.svn/text-base/it.yml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -126,6 +126,7 @@
         greater_than_start_date: "deve essere maggiore della data di partenza"
         not_same_project: "non appartiene allo stesso progetto"
         circular_dependency: "Questa relazione creerebbe una dipendenza circolare"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
 
   actionview_instancetag_blank_option: Scegli
   
@@ -916,3 +917,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/.svn/text-base/ja.yml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/.svn/text-base/ja.yml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -144,6 +144,7 @@
         greater_than_start_date: "を開始日より後にしてください"
         not_same_project: "同じプロジェクトに属していません"
         circular_dependency: "この関係では、循環依存になります"
+        cant_link_an_issue_with_a_descendant: "指定したチケットとは親子関係になっているため関連づけられません"
 
   actionview_instancetag_blank_option: 選んでください
   
@@ -318,6 +319,9 @@
   field_group_by: グループ条件
   field_sharing: 共有
   field_parent_issue: 親チケット
+  field_member_of_group: 担当者のグループ
+  field_assigned_to_role: 担当者のロール
+  field_text: テキスト
   
   setting_app_title: アプリケーションのタイトル
   setting_app_subtitle: アプリケーションのサブタイトル
@@ -809,6 +813,7 @@
   button_create_and_continue: 連続作成
   button_test: テスト
   button_edit: 編集
+  button_edit_associated_wikipage: "関連するWikiページを編集: {{page_title}}"
   button_add: 追加
   button_change: 変更
   button_apply: 適用
@@ -860,6 +865,7 @@
   text_subprojects_destroy_warning: "サブプロジェクト {{value}} も削除されます。"
   text_workflow_edit: ワークフローを編集するロールとトラッカーを選んでください
   text_are_you_sure: よろしいですか?
+  text_are_you_sure_with_children: チケットとその子チケット全てを削除しますか?
   text_journal_changed: "{{label}} を {{old}} から {{new}} に変更"
   text_journal_set_to: "{{label}} を {{value}} にセット"
   text_journal_deleted: "{{label}} を削除 ({{old}})"
--- a/config/locales/.svn/text-base/ko.yml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/.svn/text-base/ko.yml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -2,7 +2,7 @@
 # by Kihyun Yoon(ddumbugie@gmail.com),http://plenum.textcube.com/
 # by John Hwang (jhwang@tavon.org),http://github.com/tavon
 # by Yonghwan SO(please insert your email), last update at 2009-09-11
-# last update at 2010-01-23 by Kihyun Yoon
+# last update at 2010-09-06 by Kihyun Yoon
 ko:
   direction: ltr
   date:
@@ -173,6 +173,7 @@
         greater_than_start_date: "는 시작날짜보다 커야 합니다"
         not_same_project: "는 같은 프로젝트에 속해 있지 않습니다"
         circular_dependency: "이 관계는 순환 의존관계를 만들 수 있습니다"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
 
   actionview_instancetag_blank_option: 선택하세요
   
@@ -958,13 +959,18 @@
   error_unable_to_connect: 연결할 수 없습니다(({{value}})
   error_can_not_remove_role: 이 역할은 현재 사용 중이이서 삭제할 수 없습니다.
   error_can_not_delete_tracker: 이 유형의 일감들이 있에서 삭제할 수 없습니다.
-  field_principal: Principal
-  label_my_page_block: My page block
+  field_principal: 신원
+  label_my_page_block: 내 페이지 출력화면
   notice_failed_to_save_members: "Failed to save member(s): {{errors}}."
-  text_zoom_out: Zoom out
-  text_zoom_in: Zoom in
-  notice_unable_delete_time_entry: Unable to delete time log entry.
-  label_overall_spent_time: Overall spent time
-  field_time_entries: Log time
-  project_module_gantt: Gantt
-  project_module_calendar: Calendar
+  text_zoom_out: 더 작게
+  text_zoom_in: 더 크게
+  notice_unable_delete_time_entry: 시간 기록 항목을 삭제할 수 없습니다.
+  label_overall_spent_time: 총 소요시간
+  field_time_entries: 기록된 시간
+  project_module_gantt: Gantt 챠트
+  project_module_calendar: 달력
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/.svn/text-base/lt.yml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/.svn/text-base/lt.yml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -143,7 +143,7 @@
           other:  "Išsaugant objektą {{model}} rastos {{count}} klaidos"
         body: "Šiuose laukuose yra klaidų:"
 
-      pranešimus:
+      messages:
         inclusion: "nenumatyta reikšmė"
         exclusion: "užimtas"
         invalid: "neteisingas"
@@ -179,6 +179,7 @@
         greater_than_start_date: "turi būti didesnė negu pradžios data"
         not_same_project: "nepriklauso tam pačiam projektui"
         circular_dependency: "Šis ryšys sukurtų ciklinę priklausomybę"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
     
   actionview_instancetag_blank_option: prašom parinkti
   
@@ -976,3 +977,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/.svn/text-base/lv.yml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/.svn/text-base/lv.yml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -113,6 +113,7 @@
         greater_than_start_date: "jābūt vēlākam par sākuma datumu"
         not_same_project: "nepieder pie tā paša projekta"
         circular_dependency: "Šī relācija radītu ciklisku atkarību"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
 
   actionview_instancetag_blank_option: Izvēlieties
   
@@ -907,3 +908,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/.svn/text-base/mn.yml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/.svn/text-base/mn.yml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -117,6 +117,7 @@
         greater_than_start_date: "must be greater than start date"
         not_same_project: "нэг ижил төсөлд хамаарахгүй байна"
         circular_dependency: "Энэ харьцаа нь гинжин(рекурсив) харьцаа үүсгэх юм байна"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
 
   actionview_instancetag_blank_option: Сонгоно уу
   
@@ -913,3 +914,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/.svn/text-base/nl.yml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/.svn/text-base/nl.yml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -116,6 +116,7 @@
         greater_than_start_date: "moet na de startdatum liggen"
         not_same_project: "hoort niet bij hetzelfde project"
         circular_dependency: "Deze relatie zou een circulaire afhankelijkheid tot gevolg hebben"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
 
   actionview_instancetag_blank_option: Selecteer
   
@@ -701,7 +702,7 @@
   setting_date_format: Datumformaat
   setting_default_language: Standaard taal
   setting_default_projects_public: Nieuwe projecten zijn standaard publiek
-  setting_diff_max_lines_displayed: Max number of diff lines displayed
+  setting_diff_max_lines_displayed: Max aantal diff regels weer te geven
   setting_display_subprojects_issues: Standaard issues van subproject tonen
   setting_emails_footer: E-mails footer
   setting_enabled_scm: SCM ingeschakeld
@@ -709,7 +710,7 @@
   setting_gravatar_enabled: Gebruik Gravatar gebruikersiconen
   setting_host_name: Hostnaam
   setting_issue_list_default_columns: Standaardkolommen getoond op de lijst met issues
-  setting_issues_export_limit: Limiet export issues
+  setting_issues_export_limit: Max aantal te exporteren issues 
   setting_login_required: Authenticatie vereist
   setting_mail_from: Afzender e-mail adres
   setting_mail_handler_api_enabled: Schakel WS in voor inkomende mail.
@@ -727,7 +728,7 @@
   setting_welcome_text: Welkomsttekst
   setting_wiki_compression: Wikigeschiedenis comprimeren
   status_active: actief
-  status_locked: gelockt
+  status_locked: vergrendeld
   status_registered: geregistreerd
   text_are_you_sure: Weet u het zeker?
   text_assign_time_entries_to_project: Gerapporteerde uren toevoegen aan dit project
@@ -753,7 +754,7 @@
   text_load_default_configuration: Laad de standaardconfiguratie
   text_min_max_length_info: 0 betekent geen restrictie
   text_no_configuration_data: "Rollen, trackers, issue statussen en workflows zijn nog niet geconfigureerd.\nHet is ten zeerste aangeraden om de standaard configuratie in te laden. U kunt deze aanpassen nadat deze is ingeladen."
-  text_plugin_assets_writable: Plugin assets directory writable
+  text_plugin_assets_writable: Plugin assets directory beschrijfbaar
   text_project_destroy_confirmation: Weet u zeker dat u dit project en alle gerelateerde gegevens wilt verwijderen?
   text_project_identifier_info: 'kleine letters (a-z), cijfers en liggende streepjes toegestaan.<br />Eenmaal bewaard kan de identificatiecode niet meer worden gewijzigd.'
   text_reassign_time_entries: 'Gerapporteerde uren opnieuw toewijzen:'
@@ -778,7 +779,7 @@
   text_custom_field_possible_values_info: 'Per lijn een waarde'
   label_display: Toon
   field_editable: Bewerkbaar
-  setting_repository_log_display_limit: Maximum hoeveelheid van revisies zichbaar 
+  setting_repository_log_display_limit: Max aantal revisies zichbaar 
   setting_file_max_size_displayed: Max grootte van tekst bestanden inline zichtbaar
   field_watcher: Watcher
   setting_openid: Sta OpenID login en registratie toe
@@ -824,7 +825,7 @@
   version_status_closed: gesloten
   version_status_locked: vergrendeld
   version_status_open: open
-  error_can_not_reopen_issue_on_closed_version: An issue assigned to a closed version can not be reopened
+  error_can_not_reopen_issue_on_closed_version: Een issue toegewezen aan een gesloten versie kan niet heropend worden
   label_user_anonymous: Anoniem
   button_move_and_follow: Verplaats en volg
   setting_default_projects_modules: Standaard geactiveerde modules voor nieuwe projecten
@@ -833,36 +834,36 @@
   label_version_sharing_hierarchy: Met project hiërarchie
   label_version_sharing_system: Met alle projecten
   label_version_sharing_descendants: Met subprojecten
-  label_version_sharing_tree: With project tree
+  label_version_sharing_tree: Met project boom
   label_version_sharing_none: Niet gedeeld
   error_can_not_archive_project: Dit project kan niet worden gearchiveerd
   button_duplicate: Dupliceer
   button_copy_and_follow: Kopiëer en volg
   label_copy_source: Bron
-  setting_issue_done_ratio: Bereken issue done ratio met
+  setting_issue_done_ratio: Bereken issue percentage voldaan met
   setting_issue_done_ratio_issue_status: Gebruik de issue status
-  error_issue_done_ratios_not_updated: Issue done ratios niet geupdate.
+  error_issue_done_ratios_not_updated: Issue percentage voldaan niet geupdate.
   error_workflow_copy_target: Selecteer tracker(s) en rol(len)
   setting_issue_done_ratio_issue_field: Gebruik het issue veld
   label_copy_same_as_target: Zelfde als doel
   label_copy_target: Doel
-  notice_issue_done_ratios_updated: Issue done ratios updated.
+  notice_issue_done_ratios_updated: Issue percentage voldaan geupdate.
   error_workflow_copy_source: Selecteer een bron tracker of rol
-  label_update_issue_done_ratios: Update issue done ratios
+  label_update_issue_done_ratios: Update issue percentage voldaan
   setting_start_of_week: Week begint op
   permission_view_issues: Bekijk Issues
   label_display_used_statuses_only: Laat alleen statussen zien die gebruikt worden door deze tracker
-  label_revision_id: Revision {{value}}
+  label_revision_id: Revisie {{value}}
   label_api_access_key: API access key
   label_api_access_key_created_on: API access key gemaakt {{value}} geleden
   label_feeds_access_key: RSS access key
   notice_api_access_key_reseted: Uw API access key was gereset.
-  setting_rest_api_enabled: Enable REST web service
+  setting_rest_api_enabled: Activeer REST web service
   label_missing_api_access_key: Geen API access key
   label_missing_feeds_access_key: Geen RSS access key
   button_show: Laat zien
   text_line_separated: Meerdere waarden toegestaan (elke regel is een waarde).
-  setting_mail_handler_body_delimiters: Truncate emails after one of these lines
+  setting_mail_handler_body_delimiters: Breek email verwerking af na een van deze regels
   permission_add_subprojects: Maak subprojecten
   label_subproject_new: Nieuw subproject
   text_own_membership_delete_confirmation: |-
@@ -873,10 +874,10 @@
   label_board_locked: Vergrendeld
   permission_export_wiki_pages: Exporteer wiki pagina's
   setting_cache_formatted_text: Cache opgemaakte tekst
-  permission_manage_project_activities: Manage project activities
+  permission_manage_project_activities: Beheer project activiteiten
   error_unable_delete_issue_status: Verwijderen van issue status niet gelukt
   label_profile: Profiel
-  permission_manage_subtasks: Manage subtasks
+  permission_manage_subtasks: Beheer subtasks
   field_parent_issue: Parent task
   label_subtask_plural: Subtasks
   label_project_copy_notifications: Stuur email notificaties voor de project kopie
@@ -891,6 +892,11 @@
   text_zoom_in: Zoom in
   notice_unable_delete_time_entry: Verwijderen niet mogelijk van tijd log invoer.
   label_overall_spent_time: Totaal bestede tijd
-  field_time_entries: Log time
+  field_time_entries: Log tijd
   project_module_gantt: Gantt
-  project_module_calendar: Calendar
+  project_module_calendar: Kalender
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/.svn/text-base/no.yml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/.svn/text-base/no.yml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -111,6 +111,7 @@
         greater_than_start_date: "må være større enn startdato"
         not_same_project: "hører ikke til samme prosjekt"
         circular_dependency: "Denne relasjonen ville lagd en sirkulær avhengighet"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
 
   
   actionview_instancetag_blank_option: Vennligst velg
@@ -903,3 +904,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/.svn/text-base/pl.yml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/.svn/text-base/pl.yml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -96,8 +96,8 @@
         few:   "ponad {{count}} lata"
         other: "ponad {{count}} lat"
       almost_x_years:
-        one:   "almost 1 year"
-        other: "almost {{count}} years"
+        one:   "prawie rok"
+        other: "prawie {{count}} lata"
 
   activerecord:
     errors:
@@ -122,13 +122,14 @@
         greater_than: "musi być większe niż {{count}}"
         greater_than_or_equal_to: "musi być większe lub równe {{count}}"
         equal_to: "musi być równe {{count}}"
-        less_than: "musie być mniejsze niż {{count}}"
+        less_than: "musi być mniejsze niż {{count}}"
         less_than_or_equal_to: "musi być mniejsze lub równe {{count}}"
         odd: "musi być nieparzyste"
         even: "musi być parzyste"
         greater_than_start_date: "musi być większe niż początkowa data"
         not_same_project: "nie należy do tego samego projektu"
         circular_dependency: "Ta relacja może wytworzyć kołową zależność"
+        cant_link_an_issue_with_a_descendant: "Zagadnienie nie może zostać powiązane z jednym z własnych podzagadnień"
       
   support:
     array:
@@ -159,19 +160,19 @@
   button_edit: Edytuj
   button_list: Lista
   button_lock: Zablokuj
-  button_log_time: Log czasu
+  button_log_time: Dziennik
   button_login: Login
   button_move: Przenieś
   button_quote: Cytuj
   button_rename: Zmień nazwę
   button_reply: Odpowiedz
   button_reset: Resetuj
-  button_rollback: Przywróc do tej wersji
+  button_rollback: Przywróć do tej wersji
   button_save: Zapisz
   button_sort: Sortuj
   button_submit: Wyślij
   button_test: Testuj
-  button_unarchive: Przywróc z archiwum
+  button_unarchive: Przywróć z archiwum
   button_uncheck_all: Odznacz wszystko
   button_unlock: Odblokuj
   button_unwatch: Nie obserwuj
@@ -538,12 +539,12 @@
   label_project_latest: Ostatnie projekty
   label_project_new: Nowy projekt
   label_project_plural234: Projekty
-  label_project_plural5: Projekty
+  label_project_plural5: Projektów
   label_project_plural: Projekty
   label_x_projects:
-    zero:  no projects
-    one:   1 project
-    other: "{{count}} projects"
+    zero:  brak projektów
+    one:   jeden projekt
+    other: "{{count}} projektów"
   label_public_projects: Projekty publiczne
   label_query: Kwerenda
   label_query_new: Nowa kwerenda
@@ -589,7 +590,7 @@
   label_sort_highest: Przesuń na górę
   label_sort_lower: Do dołu
   label_sort_lowest: Przesuń na dół
-  label_spent_time: Spędzony czas
+  label_spent_time: Przepracowany czas
   label_start_to_end: początek do końca
   label_start_to_start: początek do początku
   label_statistics: Statystyki
@@ -601,7 +602,7 @@
   label_this_month: ten miesiąc
   label_this_week: ten tydzień
   label_this_year: ten rok
-  label_time_tracking: Śledzenie czasu
+  label_time_tracking: Śledzenie czasu pracy
   label_today: dzisiaj
   label_topic_plural: Tematy
   label_total: Ogółem
@@ -683,11 +684,11 @@
   permission_edit_messages: Edycja wiadomości
   permission_edit_own_issue_notes: Edycja własnych notatek
   permission_edit_own_messages: Edycja własnych wiadomości
-  permission_edit_own_time_entries: Edycja własnego logu czasu
+  permission_edit_own_time_entries: Edycja własnego dziennika
   permission_edit_project: Edycja projektów
-  permission_edit_time_entries: Edycja logów czasu
+  permission_edit_time_entries: Edycja wpisów dziennika
   permission_edit_wiki_pages: Edycja stron wiki
-  permission_log_time: Zapisywanie spędzonego czasu
+  permission_log_time: Zapisywanie przepracowanego czasu
   permission_manage_boards: Zarządzanie forami
   permission_manage_categories: Zarządzanie kategoriami zaganień
   permission_manage_documents: Zarządzanie dokumentami
@@ -711,7 +712,7 @@
   permission_view_gantt: Podgląd diagramu Gantta
   permission_view_issue_watchers: Podgląd listy obserwatorów
   permission_view_messages: Podgląd wiadomości
-  permission_view_time_entries: Podgląd spędzonego czasu
+  permission_view_time_entries: Podgląd przepracowanego czasu
   permission_view_wiki_edits: Podgląd historii wiki
   permission_view_wiki_pages: Podgląd wiki
   project_module_boards: Fora
@@ -720,7 +721,7 @@
   project_module_issue_tracking: Śledzenie zagadnień
   project_module_news: Komunikaty
   project_module_repository: Repozytorium
-  project_module_time_tracking: Śledzenie czasu
+  project_module_time_tracking: Śledzenie czasu pracy
   project_module_wiki: Wiki
   setting_activity_days_default: Dni wyświetlane w aktywności projektu
   setting_app_subtitle: Podtytuł aplikacji
@@ -742,7 +743,7 @@
   setting_feeds_limit: Limit danych RSS
   setting_gravatar_enabled: Używaj ikon użytkowników Gravatar
   setting_host_name: Nazwa hosta i ścieżka
-  setting_issue_list_default_columns: Domyślne kolumny wiświetlane na liście zagadnień
+  setting_issue_list_default_columns: Domyślne kolumny wyświetlane na liście zagadnień
   setting_issues_export_limit: Limit eksportu zagadnień
   setting_login_required: Identyfikacja wymagana
   setting_mail_from: Adres email wysyłki
@@ -764,20 +765,20 @@
   status_locked: zablokowany
   status_registered: zarejestrowany
   text_are_you_sure: Jesteś pewien ?
-  text_assign_time_entries_to_project: Przypisz logowany czas do projektu
+  text_assign_time_entries_to_project: Przypisz wpisy dziennika do projektu
   text_caracters_maximum: "{{count}} znaków maksymalnie."
   text_caracters_minimum: "Musi być nie krótsze niż {{count}} znaków."
   text_comma_separated: Wielokrotne wartości dozwolone (rozdzielone przecinkami).
   text_default_administrator_account_changed: Zmieniono domyślne hasło administratora
-  text_destroy_time_entries: Usuń zalogowany czas
-  text_destroy_time_entries_question: Zalogowano {{hours}} godzin przy zagadnieniu, które chcesz usunąć. Co chcesz zrobić?
+  text_destroy_time_entries: Usuń wpisy dziennika
+  text_destroy_time_entries_question: Przepracowano {{hours}} godzin przy zagadnieniu, które chcesz usunąć. Co chcesz zrobić?
   text_email_delivery_not_configured: "Dostarczanie poczty elektronicznej nie zostało skonfigurowane, więc powiadamianie jest nieaktywne.\nSkonfiguruj serwer SMTP w config/email.yml  a następnie zrestartuj aplikację i uaktywnij to."
   text_enumeration_category_reassign_to: 'Zmień przypisanie na tą wartość:'
   text_enumeration_destroy_question: "{{count}} obiektów jest przypisana do tej wartości."
   text_file_repository_writable: Zapisywalne repozytorium plików
   text_issue_added: "Zagadnienie {{id}} zostało wprowadzone (by {{author}})."
   text_issue_category_destroy_assignments: Usuń przydziały kategorii
-  text_issue_category_destroy_question: "Zagadnienia ({{count}}) są przypisane do tej kategorii. Co chcesz uczynić?"
+  text_issue_category_destroy_question: "Zagadnienia ({{count}}) są przypisane do tej kategorii. Co chcesz zrobić?"
   text_issue_category_reassign_to: Przydziel zagadnienie do tej kategorii
   text_issue_updated: "Zagadnienie {{id}} zostało zaktualizowane (by {{author}})."
   text_issues_destroy_confirmation: 'Czy jestes pewien, że chcesz usunąć wskazane zagadnienia?'
@@ -786,9 +787,9 @@
   text_load_default_configuration: Załaduj domyślną konfigurację
   text_min_max_length_info: 0 oznacza brak restrykcji
   text_no_configuration_data: "Role użytkowników, typy zagadnień, statusy zagadnień oraz przepływ pracy nie zostały jeszcze skonfigurowane.\nJest wysoce rekomendowane by załadować domyślną konfigurację. Po załadowaniu będzie możliwość edycji tych danych."
-  text_project_destroy_confirmation: Jesteś pewien, że chcesz usunąć ten projekt i wszyskie powiązane dane?
+  text_project_destroy_confirmation: Jesteś pewien, że chcesz usunąć ten projekt i wszystkie powiązane dane?
   text_project_identifier_info: 'Małe litery (a-z), liczby i myślniki dozwolone.<br />Raz zapisany, identyfikator nie może być zmieniony.'
-  text_reassign_time_entries: 'Przepnij zalogowany czas do tego zagadnienia:'
+  text_reassign_time_entries: 'Przepnij przepracowany czas do tego zagadnienia:'
   text_regexp_info: np. ^[A-Z0-9]+$
   text_repository_usernames_mapping: "Wybierz lub uaktualnij przyporządkowanie użytkowników Redmine do użytkowników repozytorium.\nUżytkownicy z taką samą nazwą lub adresem email są przyporządkowani automatycznie."
   text_rmagick_available: RMagick dostępne (opcjonalnie)
@@ -799,9 +800,9 @@
   text_tip_task_begin_day: zadanie zaczynające się dzisiaj
   text_tip_task_begin_end_day: zadanie zaczynające i kończące się dzisiaj
   text_tip_task_end_day: zadanie kończące się dzisiaj
-  text_tracker_no_workflow: Brak przepływu zefiniowanego dla tego typu zagadnienia
+  text_tracker_no_workflow: Brak przepływu zdefiniowanego dla tego typu zagadnienia
   text_unallowed_characters: Niedozwolone znaki
-  text_user_mail_option: "W przypadku niezaznaczonych projektów, będziesz otrzymywał powiadomienia tylko na temat zagadnien, które obserwujesz, lub w których bierzesz udział (np. jesteś autorem lub adresatem)."
+  text_user_mail_option: "W przypadku niezaznaczonych projektów, będziesz otrzymywał powiadomienia tylko na temat zagadnień, które obserwujesz, lub w których bierzesz udział (np. jesteś autorem lub adresatem)."
   text_user_wrote: "{{value}} napisał:"
   text_wiki_destroy_confirmation: Jesteś pewien, że chcesz usunąć to wiki i całą jego zawartość ?
   text_workflow_edit: Zaznacz rolę i typ zagadnienia do edycji przepływu
@@ -817,7 +818,7 @@
   button_create_and_continue: Stwórz i dodaj kolejne
   text_custom_field_possible_values_info: 'Każda wartość w osobnej linii'
   setting_repository_log_display_limit: Maksymalna liczba rewizji pokazywanych w logu pliku
-  setting_file_max_size_displayed: Maksymalny rozmiar plików tekstowych zagnieżdżanych w stronie
+  setting_file_max_size_displayed: Maksymalny rozmiar plików tekstowych osadzanych w stronie
   field_watcher: Obserwator
   setting_openid: Logowanie i rejestracja przy użyciu OpenID
   field_identity_url: Identyfikator OpenID (URL)
@@ -829,10 +830,10 @@
   label_date_from_to: Od {{start}} do {{end}}
   label_greater_or_equal: ">="
   label_less_or_equal: <=
-  text_wiki_page_destroy_question: This page has {{descendants}} child page(s) and descendant(s). What do you want to do?
-  text_wiki_page_reassign_children: Reassign child pages to this parent page
-  text_wiki_page_nullify_children: Keep child pages as root pages
-  text_wiki_page_destroy_children: Delete child pages and all their descendants
+  text_wiki_page_destroy_question: Ta strona posiada podstrony ({{descendants}}). Co chcesz zrobić?
+  text_wiki_page_reassign_children: Podepnij je do strony nadrzędnej względem usuwanej
+  text_wiki_page_nullify_children: Przesuń je na szczyt hierarchii
+  text_wiki_page_destroy_children: Usuń wszystkie podstrony
   setting_password_min_length: Minimalna długość hasła
   field_group_by: Grupuj wyniki wg
   mail_subject_wiki_content_updated: "Strona wiki '{{page}}' została uaktualniona"
@@ -844,7 +845,7 @@
   permission_add_project: Tworzenie projektu
   setting_new_project_user_role_id: Rola nadawana twórcom projektów, którzy nie posiadają uprawnień administatora
   label_view_all_revisions: Pokaż wszystkie rewizje
-  label_tag: Tag
+  label_tag: Słowo kluczowe
   label_branch: Gałąź
   error_no_tracker_in_project: Projekt nie posiada powiązanych typów zagadnień. Sprawdź ustawienia projektu.
   error_no_default_issue_status: Nie zdefiniowano domyślnego statusu zagadnień. Sprawdź konfigurację (Przejdź do "Administracja -> Statusy zagadnień).
@@ -854,7 +855,7 @@
   label_group_plural: Grupy
   label_group: Grupa
   label_group_new: Nowa grupa
-  label_time_entry_plural: Spędzony czas
+  label_time_entry_plural: Przepracowany czas
   text_journal_added: "Dodano {{label}} {{value}}"
   field_active: Aktywne
   enumeration_system_activity: Aktywność Systemowa
@@ -912,24 +913,29 @@
   label_board_locked: Zamknięta
   permission_export_wiki_pages: Eksport stron wiki
   permission_manage_project_activities: Zarządzanie aktywnościami projektu
-  setting_cache_formatted_text: Cache formatted text
-  error_unable_delete_issue_status: Unable to delete issue status
-  label_profile: Profile
-  permission_manage_subtasks: Manage subtasks
-  field_parent_issue: Parent task
-  label_subtask_plural: Subtasks
-  label_project_copy_notifications: Send email notifications during the project copy
-  error_can_not_delete_custom_field: Unable to delete custom field
-  error_unable_to_connect: Unable to connect ({{value}})
-  error_can_not_remove_role: This role is in use and can not be deleted.
-  error_can_not_delete_tracker: This tracker contains issues and can't be deleted.
-  field_principal: Principal
-  label_my_page_block: My page block
-  notice_failed_to_save_members: "Failed to save member(s): {{errors}}."
-  text_zoom_out: Zoom out
-  text_zoom_in: Zoom in
-  notice_unable_delete_time_entry: Unable to delete time log entry.
-  label_overall_spent_time: Overall spent time
-  field_time_entries: Log time
-  project_module_gantt: Gantt
-  project_module_calendar: Calendar
+  setting_cache_formatted_text: Buforuj sformatowany tekst
+  error_unable_delete_issue_status: Nie można usunąć statusu zagadnienia
+  label_profile: Profil
+  permission_manage_subtasks: Zarządzanie podzagadnieniami
+  field_parent_issue: Zagadnienie nadrzędne
+  label_subtask_plural: Podzagadnienia
+  label_project_copy_notifications: Wyślij powiadomienia mailowe przy kopiowaniu projektu
+  error_can_not_delete_custom_field: Nie można usunąć tego pola
+  error_unable_to_connect: Nie można połączyć ({{value}})
+  error_can_not_remove_role: Ta rola przypisana jest niektórym użytkownikom i nie może zostać usunięta.
+  error_can_not_delete_tracker: Ten typ przypisany jest do części zagadnień i nie może zostać usunięty.
+  field_principal: Przełożony
+  label_my_page_block: Elementy
+  notice_failed_to_save_members: "Nie można zapisać uczestników: {{errors}}."
+  text_zoom_out: Zmniejsz czcionkę
+  text_zoom_in: Powiększ czcionkę
+  notice_unable_delete_time_entry: Nie można usunąć wpisu z dziennika.
+  label_overall_spent_time: Przepracowany czas
+  field_time_entries: Dziennik
+  project_module_gantt: Diagram Gantta
+  project_module_calendar: Kalendarz
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/.svn/text-base/pt-BR.yml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/.svn/text-base/pt-BR.yml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -143,6 +143,7 @@
         greater_than_start_date: "deve ser maior que a data inicial"
         not_same_project: "não pertence ao mesmo projeto"
         circular_dependency: "Esta relação geraria uma dependência circular"
+        cant_link_an_issue_with_a_descendant: "Uma tarefa não pode ser relaciona a uma de suas subtarefas"
 
   actionview_instancetag_blank_option: Selecione
 
@@ -936,3 +937,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/.svn/text-base/pt.yml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/.svn/text-base/pt.yml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -128,6 +128,7 @@
         greater_than_start_date: "deve ser maior que a data inicial"
         not_same_project: "não pertence ao mesmo projecto"
         circular_dependency: "Esta relação iria criar uma dependência circular"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
 
   ## Translated by: Pedro Araújo <phcrva19@hotmail.com>
   actionview_instancetag_blank_option: Seleccione
@@ -920,3 +921,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/.svn/text-base/ro.yml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/.svn/text-base/ro.yml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -110,6 +110,7 @@
         greater_than_start_date: "trebuie să fie după data de început"
         not_same_project: "trebuie să aparțină aceluiași proiect"
         circular_dependency: "Această relație ar crea o dependență circulară"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
 
   actionview_instancetag_blank_option: Selectați
   
@@ -905,3 +906,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/.svn/text-base/ru.yml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/.svn/text-base/ru.yml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -192,11 +192,12 @@
         equal_to: "может иметь лишь значение, равное {{count}}"
         less_than: "может иметь значение меньшее чем {{count}}"
         less_than_or_equal_to: "может иметь значение меньшее или равное {{count}}"
-        odd: "может иметь лишь четное значение"
-        even: "может иметь лишь нечетное значение"
+        odd: "может иметь лишь нечетное значение"
+        even: "может иметь лишь четное значение"
         greater_than_start_date: "должна быть позднее даты начала"
-        not_same_project: "не относятся к одному проекту"
+        not_same_project: "не относится к одному проекту"
         circular_dependency: "Такая связь приведет к циклической зависимости"
+        cant_link_an_issue_with_a_descendant: "Задача не может быть связана со своей подзадачей"
 
   support:
     array:
@@ -229,6 +230,7 @@
   button_delete: Удалить
   button_download: Загрузить
   button_edit: Редактировать
+  button_edit_associated_wikipage: "Редактировать связанную wiki-страницу: {{page_title}}"
   button_list: Список
   button_lock: Заблокировать
   button_login: Вход
@@ -293,6 +295,7 @@
   field_admin: Администратор
   field_assignable: Задача может быть назначена этой роли
   field_assigned_to: Назначена
+  field_assigned_to_role: Роль участника
   field_attr_firstname: Имя
   field_attr_lastname: Фамилия
   field_attr_login: Атрибут Регистрация
@@ -342,6 +345,7 @@
   field_mail: Email
   field_mail_notification: Уведомления по email
   field_max_length: Максимальная длина
+  field_member_of_group: Группа участника
   field_min_length: Минимальная длина
   field_name: Имя
   field_new_password: Новый пароль
@@ -367,6 +371,7 @@
   field_subject: Тема
   field_subproject: Подпроект
   field_summary: Сводка
+  field_text: Текстовое поле
   field_time_entries: Затраченное время
   field_time_zone: Часовой пояс
   field_title: Название
@@ -895,7 +900,8 @@
   status_active: активен
   status_locked: заблокирован
   status_registered: зарегистрирован
-
+  
+  text_are_you_sure_with_children: Удалить задачу и все ее подзадачи?
   text_are_you_sure: Подтвердите
   text_assign_time_entries_to_project: Прикрепить зарегистрированное время к проекту
   text_caracters_maximum: "Максимум {{count}} символов(а)."
--- a/config/locales/.svn/text-base/sk.yml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/.svn/text-base/sk.yml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -112,6 +112,7 @@
         greater_than_start_date: "musí byť neskôr ako počiatočný dátum"
         not_same_project: "nepatrí rovnakému projektu"
         circular_dependency: "Tento vzťah by vytvoril cyklickú závislosť"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
 
   # SK translation by Stanislav Pach | stano.pach@seznam.cz
   
@@ -907,3 +908,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/.svn/text-base/sl.yml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/.svn/text-base/sl.yml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -116,6 +116,7 @@
         greater_than_start_date: "mora biti kasnejši kot začeten datum"
         not_same_project: "ne pripada istemu projektu"
         circular_dependency: "Ta odnos bi povzročil krožno odvisnost"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
 
   actionview_instancetag_blank_option: Prosimo izberite
   
@@ -908,3 +909,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/.svn/text-base/sr-YU.yml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/.svn/text-base/sr-YU.yml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -68,7 +68,7 @@
 
   number:
     format:
-      separator: "."
+      separator: ","
       delimiter: ""
       precision: 3
     human:
@@ -910,6 +910,11 @@
   enumeration_activities: Aktivnosti (praćenje vremena)
   enumeration_system_activity: Sistemska aktivnost
   
-  field_time_entries: Log time
-  project_module_gantt: Gantt
-  project_module_calendar: Calendar
+  field_time_entries: Vreme evidencije
+  project_module_gantt: Gantov dijagram
+  project_module_calendar: Kalendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/.svn/text-base/sr.yml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/.svn/text-base/sr.yml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -68,7 +68,7 @@
 
   number:
     format:
-      separator: "."
+      separator: ","
       delimiter: ""
       precision: 3
     human:
@@ -910,6 +910,12 @@
   enumeration_activities: Активности (праћење времена)
   enumeration_system_activity: Системска активност
   
-  field_time_entries: Log time
-  project_module_gantt: Gantt
-  project_module_calendar: Calendar
+  field_time_entries: Време евиденције
+  project_module_gantt: Гантов дијаграм
+  project_module_calendar: Календар
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/.svn/text-base/sv.yml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/.svn/text-base/sv.yml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -130,6 +130,7 @@
         greater_than_start_date: "måste vara senare än startdatumet"
         not_same_project: "tillhör inte samma projekt"
         circular_dependency: "Denna relation skulle skapa ett cirkulärt beroende"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
 
   direction: ltr
   date:
@@ -325,6 +326,7 @@
   field_redirect_existing_links: Omdirigera existerande länkar
   field_estimated_hours: Estimerad tid
   field_column_names: Kolumner
+  field_time_entries: Spenderad tid
   field_time_zone: Tidszon
   field_searchable: Sökbar
   field_default_value: Standardvärde
@@ -456,6 +458,8 @@
   project_module_wiki: Wiki
   project_module_repository: Versionsarkiv
   project_module_boards: Forum
+  project_module_calendar: Kalender
+  project_module_gantt: Gantt
   
   label_user: Användare
   label_user_plural: Användare
@@ -857,7 +861,7 @@
   button_update: Uppdatera
   button_configure: Konfigurera
   button_quote: Citera
-  button_duplicate: Duplisera
+  button_duplicate: Duplicera
   button_show: Visa
   
   status_active: aktiv
@@ -954,6 +958,8 @@
   enumeration_doc_categories: Dokumentkategorier
   enumeration_activities: Aktiviteter (tidsuppföljning)
   enumeration_system_activity: Systemaktivitet
-  field_time_entries: Log time
-  project_module_gantt: Gantt
-  project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/.svn/text-base/th.yml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/.svn/text-base/th.yml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -116,6 +116,7 @@
         greater_than_start_date: "ต้องมากกว่าวันเริ่ม"
         not_same_project: "ไม่ได้อยู่ในโครงการเดียวกัน"
         circular_dependency: "ความสัมพันธ์อ้างอิงเป็นวงกลม"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
 
   actionview_instancetag_blank_option: กรุณาเลือก
   
@@ -909,3 +910,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/.svn/text-base/tr.yml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/.svn/text-base/tr.yml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -143,6 +143,7 @@
         greater_than_start_date: "başlangıç tarihinden büyük olmalı"
         not_same_project: "aynı projeye ait değil"
         circular_dependency: "Bu ilişki döngüsel bağımlılık meydana getirecektir"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
       models:
   
   actionview_instancetag_blank_option: Lütfen Seçin
@@ -935,3 +936,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/.svn/text-base/uk.yml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/.svn/text-base/uk.yml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -116,6 +116,7 @@
         greater_than_start_date: "повинна бути пізніша за дату початку"
         not_same_project: "не відносяться до одного проекту"
         circular_dependency: "Такий зв'язок приведе до циклічної залежності"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
 
   actionview_instancetag_blank_option: Оберіть
   
@@ -908,3 +909,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/.svn/text-base/vi.yml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/.svn/text-base/vi.yml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -139,6 +139,7 @@
         greater_than_start_date: "phải đi sau ngày bắt đầu"
         not_same_project: "không thuộc cùng dự án"
         circular_dependency: "quan hệ có thể gây ra lặp vô tận"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
 
   direction: ltr
   date:
@@ -967,3 +968,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/.svn/text-base/zh-TW.yml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/.svn/text-base/zh-TW.yml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -177,6 +177,7 @@
         greater_than_start_date: "必須在起始日期之後"
         not_same_project: "不屬於同一個專案"
         circular_dependency: "這個關聯會導致環狀相依"
+        cant_link_an_issue_with_a_descendant: "項目無法被連結至自己的子項目"
 
       # You can define own errors for models or model attributes.
       # The values :model, :attribute and :value are always available for interpolation.
@@ -365,6 +366,7 @@
   field_redirect_existing_links: 重新導向現有連結
   field_estimated_hours: 預估工時
   field_column_names: 欄位
+  field_time_entries: 耗用工時
   field_time_zone: 時區
   field_searchable: 可用做搜尋條件
   field_default_value: 預設值
@@ -377,8 +379,10 @@
   field_group_by: 結果分組方式
   field_sharing: 共用
   field_parent_issue: 父工作項目
-  field_time_entries: 耗用工時
-    
+  field_member_of_group: 所屬群組
+  field_assigned_to_role: 所屬角色
+  field_text: 內容文字
+  
   setting_app_title: 標題
   setting_app_subtitle: 副標題
   setting_welcome_text: 歡迎詞
@@ -869,6 +873,7 @@
   button_create_and_continue: 繼續建立
   button_test: 測試
   button_edit: 編輯
+  button_edit_associated_wikipage: "編輯相關 Wiki 頁面: {{page_title}}"
   button_add: 新增
   button_change: 修改
   button_apply: 套用
@@ -920,6 +925,7 @@
   text_subprojects_destroy_warning: "下列子專案: {{value}} 將一併被刪除。"
   text_workflow_edit: 選擇角色與追蹤標籤以設定其工作流程
   text_are_you_sure: 確定執行?
+  text_are_you_sure_with_children: "確定刪除此工作項目及其子項目?"
   text_journal_changed: "{{label}} 從 {{old}} 變更為 {{new}}"
   text_journal_set_to: "{{label}} 設定為 {{value}}"
   text_journal_deleted: "{{label}} 已刪除 ({{old}})"
@@ -997,3 +1003,4 @@
   enumeration_doc_categories: 文件分類
   enumeration_activities: 活動 (時間追蹤)
   enumeration_system_activity: 系統活動
+
--- a/config/locales/.svn/text-base/zh.yml.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/.svn/text-base/zh.yml.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -137,6 +137,7 @@
         greater_than_start_date: "必须在起始日期之后"
         not_same_project: "不属于同一个项目"
         circular_dependency: "此关联将导致循环依赖"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
 
   actionview_instancetag_blank_option: 请选择
   
@@ -930,3 +931,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/bg.yml	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/bg.yml	Fri Sep 24 15:51:28 2010 +0100
@@ -116,6 +116,7 @@
         greater_than_start_date: "трябва да е след началната дата"
         not_same_project: "не е от същия проект"
         circular_dependency: "Тази релация ще доведе до безкрайна зависимост"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
 
   actionview_instancetag_blank_option: Изберете
   
@@ -906,3 +907,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/bs.yml	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/bs.yml	Fri Sep 24 15:51:28 2010 +0100
@@ -130,6 +130,7 @@
         greater_than_start_date: "mora biti veći nego početni datum"
         not_same_project: "ne pripada istom projektu"
         circular_dependency: "Ova relacija stvar cirkularnu zavisnost"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
 
   actionview_instancetag_blank_option: Molimo odaberite
   
@@ -926,3 +927,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/ca.yml	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/ca.yml	Fri Sep 24 15:51:28 2010 +0100
@@ -1,4 +1,8 @@
+# Redmine catalan translation: 
+# by Joan Duran
+
 ca:
+  # Text direction: Left-to-Right (ltr) or Right-to-Left (rtl)
   direction: ltr
   date:
     formats:
@@ -65,6 +69,7 @@
         other: "almost {{count}} years"
 
   number:
+    # Default format for numbers
     format:
       separator: "."
       delimiter: ""
@@ -83,6 +88,7 @@
           mb: "MB"
           gb: "GB"
           tb: "TB"
+
         
 # Used in array.to_sentence.
   support:
@@ -116,6 +122,7 @@
         greater_than_start_date: "ha de ser superior que la data inicial"
         not_same_project: "no pertany al mateix projecte"
         circular_dependency: "Aquesta relació crearia una dependència circular"
+        cant_link_an_issue_with_a_descendant: "Un assumpte no es pot enllaçar a una de les seves subtasques"
 
   actionview_instancetag_blank_option: Seleccioneu
   
@@ -149,18 +156,33 @@
   notice_email_sent: "S'ha enviat un correu electrònic a {{value}}"
   notice_email_error: "S'ha produït un error en enviar el correu ({{value}})"
   notice_feeds_access_key_reseted: "S'ha reiniciat la clau d'accés del RSS."
+  notice_api_access_key_reseted: "S'ha reiniciat la clau d'accés a l'API."
   notice_failed_to_save_issues: "No s'han pogut desar %s assumptes de {{count}} seleccionats: {{ids}}."
+  notice_failed_to_save_members: "No s'han pogut desar els membres: {{errors}}."
   notice_no_issue_selected: "No s'ha seleccionat cap assumpte. Activeu els assumptes que voleu editar."
   notice_account_pending: "S'ha creat el compte i ara està pendent de l'aprovació de l'administrador."
   notice_default_data_loaded: "S'ha carregat correctament la configuració predeterminada."
   notice_unable_delete_version: "No s'ha pogut suprimir la versió."
+  notice_unable_delete_time_entry: "No s'ha pogut suprimir l'entrada del registre de temps."
+  notice_issue_done_ratios_updated: "S'ha actualitzat el tant per cent dels assumptes."
   
   error_can_t_load_default_data: "No s'ha pogut carregar la configuració predeterminada: {{value}} "
   error_scm_not_found: "No s'ha trobat l'entrada o la revisió en el dipòsit."
   error_scm_command_failed: "S'ha produït un error en intentar accedir al dipòsit: {{value}}"
   error_scm_annotate: "L'entrada no existeix o no s'ha pogut anotar."
   error_issue_not_found_in_project: "No s'ha trobat l'assumpte o no pertany a aquest projecte"
-
+  error_no_tracker_in_project: "Aquest projecte no té seguidor associat. Comproveu els paràmetres del projecte."
+  error_no_default_issue_status: "No s'ha definit cap estat d'assumpte predeterminat. Comproveu la configuració (aneu a «Administració -> Estats de l'assumpte»)."
+  error_can_not_delete_custom_field: "No s'ha pogut suprimir el camp personalitat"
+  error_can_not_delete_tracker: "Aquest seguidor conté assumptes i no es pot suprimir."
+  error_can_not_remove_role: "Aquest rol s'està utilitzant i no es pot suprimir."
+  error_can_not_reopen_issue_on_closed_version: "Un assumpte assignat a una versió tancada no es pot tornar a obrir"
+  error_can_not_archive_project: "Aquest projecte no es pot arxivar"
+  error_issue_done_ratios_not_updated: "No s'ha actualitza el tant per cent dels assumptes."
+  error_workflow_copy_source: "Seleccioneu un seguidor o rol font"
+  error_workflow_copy_target: "Seleccioneu seguidors i rols objectiu"
+  error_unable_delete_issue_status: "No s'ha pogut suprimir l'estat de l'assumpte"
+  error_unable_to_connect: "No s'ha pogut connectar ({{value}})"
   warning_attachments_not_saved: "No s'han pogut desar {{count}} fitxers."
   
   mail_subject_lost_password: "Contrasenya de {{value}}"
@@ -173,6 +195,10 @@
   mail_body_account_activation_request: "S'ha registrat un usuari nou ({{value}}). El seu compte està pendent d'aprovació:"
   mail_subject_reminder: "{{count}} assumptes venceran els següents {{days}} dies"
   mail_body_reminder: "{{count}} assumptes que teniu assignades venceran els següents {{days}} dies:"
+  mail_subject_wiki_content_added: "S'ha afegit la pàgina wiki «{{page}}»"
+  mail_body_wiki_content_added: "En {{author}} ha afegit la pàgina wiki «{{page}}»."
+  mail_subject_wiki_content_updated: "S'ha actualitzat la pàgina wiki «{{page}}»"
+  mail_body_wiki_content_updated: "En {{author}} ha actualitzat la pàgina wiki «{{page}}»."
   
   gui_validation_error: 1 error
   gui_validation_error_plural: "{{count}} errors"
@@ -212,6 +238,7 @@
   field_priority: Prioritat
   field_fixed_version: Versió objectiu
   field_user: Usuari
+  field_principal: Principal
   field_role: Rol
   field_homepage: Pàgina web
   field_is_public: Públic
@@ -256,6 +283,7 @@
   field_redirect_existing_links: Redirigeix els enllaços existents
   field_estimated_hours: Temps previst
   field_column_names: Columnes
+  field_time_entries: "Registre de temps"
   field_time_zone: Zona horària
   field_searchable: Es pot cercar
   field_default_value: Valor predeterminat
@@ -265,6 +293,9 @@
   field_watcher: Vigilància
   field_identity_url: URL OpenID
   field_content: Contingut
+  field_group_by: "Agrupa els resultats per"
+  field_sharing: Compartició
+  field_parent_issue: "Tasca pare"
   
   setting_app_title: "Títol de l'aplicació"
   setting_app_subtitle: "Subtítol de l'aplicació"
@@ -300,20 +331,35 @@
   setting_activity_days_default: "Dies a mostrar l'activitat del projecte"
   setting_display_subprojects_issues: "Mostra els assumptes d'un subprojecte en el projecte pare per defecte"
   setting_enabled_scm: "Habilita l'SCM"
+  setting_mail_handler_body_delimiters: "Trunca els correus electrònics després d'una d'aquestes línies"
   setting_mail_handler_api_enabled: "Habilita el WS per correus electrònics d'entrada"
   setting_mail_handler_api_key: Clau API
   setting_sequential_project_identifiers: Genera identificadors de projecte seqüencials
   setting_gravatar_enabled: "Utilitza les icones d'usuari Gravatar"
+  setting_gravatar_default: "Imatge Gravatar predeterminada"
   setting_diff_max_lines_displayed: Número màxim de línies amb diferències mostrades
   setting_file_max_size_displayed: Mida màxima dels fitxers de text mostrats en línia
   setting_repository_log_display_limit: Número màxim de revisions que es mostren al registre de fitxers
   setting_openid: "Permet entrar i registrar-se amb l'OpenID"
-
+  setting_password_min_length: "Longitud mínima de la contrasenya"
+  setting_new_project_user_role_id: "Aquest rol es dóna a un usuari no administrador per a crear projectes"
+  setting_default_projects_modules: "Mòduls activats per defecte en els projectes nous"
+  setting_issue_done_ratio: "Calcula tant per cent realitzat de l'assumpte amb"
+  setting_issue_done_ratio_issue_status: "Utilitza l'estat de l'assumpte"
+  setting_issue_done_ratio_issue_field: "Utilitza el camp de l'assumpte"
+  setting_start_of_week: "Inicia les setmanes en"
+  setting_rest_api_enabled: "Habilita el servei web REST"
+  setting_cache_formatted_text: Cache formatted text
+  
+  permission_add_project: "Crea projectes"
+  permission_add_subprojects: "Crea subprojectes"
   permission_edit_project: Edita el projecte
   permission_select_project_modules: Selecciona els mòduls del projecte
   permission_manage_members: Gestiona els membres
+  permission_manage_project_activities: "Gestiona les activitats del projecte"
   permission_manage_versions: Gestiona les versions
   permission_manage_categories: Gestiona les categories dels assumptes
+  permission_view_issues: "Visualitza els assumptes"
   permission_add_issues: Afegeix assumptes
   permission_edit_issues: Edita els assumptes
   permission_manage_issue_relations: Gestiona les relacions dels assumptes
@@ -328,6 +374,7 @@
   permission_view_calendar: Visualitza el calendari
   permission_view_issue_watchers: Visualitza la llista de vigilàncies
   permission_add_issue_watchers: Afegeix vigilàncies
+  permission_delete_issue_watchers: Suprimeix els vigilants
   permission_log_time: Registra el temps invertit
   permission_view_time_entries: Visualitza el temps invertit
   permission_edit_time_entries: Edita els registres de temps
@@ -357,6 +404,8 @@
   permission_edit_own_messages: Edita els missatges propis
   permission_delete_messages: Suprimeix els missatges
   permission_delete_own_messages: Suprimeix els missatges propis
+  permission_export_wiki_pages: "Exporta les pàgines wiki"
+  permission_manage_subtasks: "Gestiona subtasques"
   
   project_module_issue_tracking: "Seguidor d'assumptes"
   project_module_time_tracking: Seguidor de temps
@@ -366,10 +415,13 @@
   project_module_wiki: Wiki
   project_module_repository: Dipòsit
   project_module_boards: Taulers
+  project_module_calendar: Calendari
+  project_module_gantt: Gantt
   
   label_user: Usuari
   label_user_plural: Usuaris
   label_user_new: Usuari nou
+  label_user_anonymous: Anònim
   label_project: Projecte
   label_project_new: Projecte nou
   label_project_plural: Projectes
@@ -416,12 +468,13 @@
   label_information_plural: Informació
   label_please_login: Entreu
   label_register: Registre
-  label_login_with_open_id_option: o entra amb l'OpenID
+  label_login_with_open_id_option: "o entra amb l'OpenID"
   label_password_lost: Contrasenya perduda
   label_home: Inici
   label_my_page: La meva pàgina
   label_my_account: El meu compte
   label_my_projects: Els meus projectes
+  label_my_page_block: "Els meus blocs de pàgina"
   label_administration: Administració
   label_login: Entra
   label_logout: Surt
@@ -441,6 +494,7 @@
   label_auth_source_new: "Mode d'autenticació nou"
   label_auth_source_plural: "Modes d'autenticació"
   label_subproject_plural: Subprojectes
+  label_subproject_new: "Subprojecte nou"
   label_and_its_subprojects: "{{value}} i els seus subprojectes"
   label_min_max_length: Longitud mín - max
   label_list: Llist
@@ -475,8 +529,9 @@
   label_version: Versió
   label_version_new: Versió nova
   label_version_plural: Versions
+  label_close_versions: "Tanca les versions completades"
   label_confirmation: Confirmació
-  label_export_to: 'També disponible a:'
+  label_export_to: "També disponible a:"
   label_read: Llegeix...
   label_public_projects: Projectes públics
   label_open_issues: obert
@@ -533,6 +588,8 @@
   label_not_equals: no és
   label_in_less_than: en menys de
   label_in_more_than: en més de
+  label_greater_or_equal: ">="
+  label_less_or_equal: <=
   label_in: en
   label_today: avui
   label_all_time: tot el temps
@@ -555,17 +612,21 @@
   label_browse: Navega
   label_modification: "{{count}} canvi"
   label_modification_plural: "{{count}} canvis"
+  label_branch: Branca
+  label_tag: Etiqueta
   label_revision: Revisió
   label_revision_plural: Revisions
+  label_revision_id: "Revisió {{value}}"
   label_associated_revisions: Revisions associades
   label_added: afegit
   label_modified: modificat
+  label_copied: copiat
   label_renamed: reanomenat
-  label_copied: copiat
   label_deleted: suprimit
   label_latest_revision: Última revisió
   label_latest_revision_plural: Últimes revisions
   label_view_revisions: Visualitza les revisions
+  label_view_all_revisions: "Visualitza totes les revisions"
   label_max_size: Mida màxima
   label_sort_highest: Mou a la part superior
   label_sort_higher: Mou cap amunt
@@ -591,6 +652,7 @@
   label_changes_details: Detalls de tots els canvis
   label_issue_tracking: "Seguiment d'assumptes"
   label_spent_time: Temps invertit
+  label_overall_spent_time: "Temps total invertit"
   label_f_hour: "{{value}} hora"
   label_f_hour_plural: "{{value}} hores"
   label_time_tracking: Temps de seguiment
@@ -628,6 +690,8 @@
   label_board: Fòrum
   label_board_new: Fòrum nou
   label_board_plural: Fòrums
+  label_board_locked: Bloquejat
+  label_board_sticky: Sticky
   label_topic_plural: Temes
   label_message_plural: Missatges
   label_message_last: Últim missatge
@@ -643,6 +707,8 @@
   label_language_based: "Basat en l'idioma de l'usuari"
   label_sort_by: "Ordena per {{value}}"
   label_send_test_email: Envia un correu electrònic de prova
+  label_feeds_access_key: "Clau d'accés del RSS"
+  label_missing_feeds_access_key: "Falta una clau d'accés del RSS"
   label_feeds_access_key_created_on: "Clau d'accés del RSS creada fa {{value}}"
   label_module_plural: Mòduls
   label_added_time_by: "Afegit per {{author}} fa {{age}}"
@@ -688,6 +754,28 @@
   label_ascending: Ascendent
   label_descending: Descendent
   label_date_from_to: Des de {{start}} a {{end}}
+  label_wiki_content_added: "S'ha afegit la pàgina wiki"
+  label_wiki_content_updated: "S'ha actualitzat la pàgina wiki"
+  label_group: Grup
+  label_group_plural: Grups
+  label_group_new: Grup nou
+  label_time_entry_plural: Temps invertit
+  label_version_sharing_hierarchy: "Amb la jerarquia del projecte"
+  label_version_sharing_system: "Amb tots els projectes"
+  label_version_sharing_descendants: "Amb tots els subprojectes"
+  label_version_sharing_tree: "Amb l'arbre del projecte"
+  label_version_sharing_none: "Sense compartir"
+  label_update_issue_done_ratios: "Actualitza el tant per cent dels assumptes realitzats"
+  label_copy_source: Font
+  label_copy_target: Objectiu
+  label_copy_same_as_target: "El mateix que l'objectiu"
+  label_display_used_statuses_only: "Mostra només els estats que utilitza aquest seguidor"
+  label_api_access_key: "Clau d'accés a l'API"
+  label_missing_api_access_key: "Falta una clau d'accés de l'API"
+  label_api_access_key_created_on: "Clau d'accés de l'API creada fa {{value}}"
+  label_profile: Perfil
+  label_subtask_plural: Subtasques
+  label_project_copy_notifications: "Envia notificacions de correu electrònic durant la còpia del projecte"
   
   button_login: Entra
   button_submit: Tramet
@@ -709,11 +797,12 @@
   button_list: Llista
   button_view: Visualitza
   button_move: Mou
+  button_move_and_follow: "Mou i segueix"
   button_back: Enrere
   button_cancel: Cancel·la
   button_activate: Activa
   button_sort: Ordena
-  button_log_time: "Hora d'entrada"
+  button_log_time: "Registre de temps"
   button_rollback: Torna a aquesta versió
   button_watch: Vigila
   button_unwatch: No vigilis
@@ -724,15 +813,24 @@
   button_rename: Reanomena
   button_change_password: Canvia la contrasenya
   button_copy: Copia
+  button_copy_and_follow: "Copia i segueix"
   button_annotate: Anota
   button_update: Actualitza
   button_configure: Configura
   button_quote: Cita
+  button_duplicate: Duplica
+  button_show: Mostra
   
   status_active: actiu
   status_registered: informat
   status_locked: bloquejat
   
+  version_status_open: oberta
+  version_status_locked: bloquejada
+  version_status_closed: tancada
+
+  field_active: Actiu
+  
   text_select_mail_notifications: "Seleccioneu les accions per les quals s'hauria d'enviar una notificació per correu electrònic."
   text_regexp_info: ex. ^[A-Z0-9]+$
   text_min_max_length_info: 0 significa sense restricció
@@ -740,6 +838,10 @@
   text_subprojects_destroy_warning: "També seran suprimits els seus subprojectes: {{value}}."
   text_workflow_edit: Seleccioneu un rol i un seguidor per a editar el flux de treball
   text_are_you_sure: Segur?
+  text_journal_changed: "{{label}} ha canviat de {{old}} a {{new}}"
+  text_journal_set_to: "{{label}} s'ha establert a {{value}}"
+  text_journal_deleted: "{{label}} s'ha suprimit ({{old}})"
+  text_journal_added: "S'ha afegit {{label}} {{value}}"
   text_tip_task_begin_day: "tasca que s'inicia aquest dia"
   text_tip_task_end_day: tasca que finalitza aquest dia
   text_tip_task_begin_end_day: "tasca que s'inicia i finalitza aquest dia"
@@ -750,6 +852,7 @@
   text_tracker_no_workflow: "No s'ha definit cap flux de treball per a aquest seguidor"
   text_unallowed_characters: Caràcters no permesos
   text_comma_separated: Es permeten valors múltiples (separats per una coma).
+  text_line_separated: "Es permeten diversos valors (una línia per cada valor)."
   text_issues_ref_in_commit_messages: Referència i soluciona els assumptes en els missatges publicats
   text_issue_added: "L'assumpte {{id}} ha sigut informat per {{author}}."
   text_issue_updated: "L'assumpte {{id}} ha sigut actualitzat per {{author}}."
@@ -770,14 +873,21 @@
   text_destroy_time_entries_question: "S'han informat {{hours}} hores en els assumptes que aneu a suprimir. Què voleu fer?"
   text_destroy_time_entries: Suprimeix les hores informades
   text_assign_time_entries_to_project: Assigna les hores informades al projecte
-  text_reassign_time_entries: 'Torna a assignar les hores informades a aquest assumpte:'
+  text_reassign_time_entries: "Torna a assignar les hores informades a aquest assumpte:"
   text_user_wrote: "{{value}} va escriure:"
   text_enumeration_destroy_question: "{{count}} objectes estan assignats a aquest valor."
-  text_enumeration_category_reassign_to: 'Torna a assignar-los a aquest valor:'
+  text_enumeration_category_reassign_to: "Torna a assignar-los a aquest valor:"
   text_email_delivery_not_configured: "El lliurament per correu electrònic no està configurat i les notificacions estan inhabilitades.\nConfigureu el servidor SMTP a config/email.yml i reinicieu l'aplicació per habilitar-lo."
   text_repository_usernames_mapping: "Seleccioneu l'assignació entre els usuaris del Redmine i cada nom d'usuari trobat al dipòsit.\nEls usuaris amb el mateix nom d'usuari o correu del Redmine i del dipòsit s'assignaran automàticament."
   text_diff_truncated: "... Aquestes diferències s'han trucat perquè excedeixen la mida màxima que es pot mostrar."
-  text_custom_field_possible_values_info: 'Una línia per a cada valor'
+  text_custom_field_possible_values_info: "Una línia per a cada valor"
+  text_wiki_page_destroy_question: "Aquesta pàgina té {{descendants}} pàgines fill i descendents. Què voleu fer?"
+  text_wiki_page_nullify_children: "Deixa les pàgines fill com a pàgines arrel"
+  text_wiki_page_destroy_children: "Suprimeix les pàgines fill i tots els seus descendents"
+  text_wiki_page_reassign_children: "Reasigna les pàgines fill a aquesta pàgina pare"
+  text_own_membership_delete_confirmation: "Esteu a punt de suprimir algun o tots els vostres permisos i potser no podreu editar més aquest projecte.\nSegur que voleu continuar?"
+  text_zoom_in: Redueix
+  text_zoom_out: Amplia
   
   default_role_manager: Gestor
   default_role_developer: Desenvolupador
@@ -804,108 +914,10 @@
   enumeration_issue_priorities: Prioritat dels assumptes
   enumeration_doc_categories: Categories del document
   enumeration_activities: Activitats (seguidor de temps)
-  label_greater_or_equal: ">="
-  label_less_or_equal: <=
-  text_wiki_page_destroy_question: This page has {{descendants}} child page(s) and descendant(s). What do you want to do?
-  text_wiki_page_reassign_children: Reassign child pages to this parent page
-  text_wiki_page_nullify_children: Keep child pages as root pages
-  text_wiki_page_destroy_children: Delete child pages and all their descendants
-  setting_password_min_length: Minimum password length
-  field_group_by: Group results by
-  mail_subject_wiki_content_updated: "'{{page}}' wiki page has been updated"
-  label_wiki_content_added: Wiki page added
-  mail_subject_wiki_content_added: "'{{page}}' wiki page has been added"
-  mail_body_wiki_content_added: The '{{page}}' wiki page has been added by {{author}}.
-  label_wiki_content_updated: Wiki page updated
-  mail_body_wiki_content_updated: The '{{page}}' wiki page has been updated by {{author}}.
-  permission_add_project: Create project
-  setting_new_project_user_role_id: Role given to a non-admin user who creates a project
-  label_view_all_revisions: View all revisions
-  label_tag: Tag
-  label_branch: Branch
-  error_no_tracker_in_project: No tracker is associated to this project. Please check the Project settings.
-  error_no_default_issue_status: No default issue status is defined. Please check your configuration (Go to "Administration -> Issue statuses").
-  text_journal_changed: "{{label}} changed from {{old}} to {{new}}"
-  text_journal_set_to: "{{label}} set to {{value}}"
-  text_journal_deleted: "{{label}} deleted ({{old}})"
-  label_group_plural: Groups
-  label_group: Group
-  label_group_new: New group
-  label_time_entry_plural: Spent time
-  text_journal_added: "{{label}} {{value}} added"
-  field_active: Active
-  enumeration_system_activity: System Activity
-  permission_delete_issue_watchers: Delete watchers
-  version_status_closed: closed
-  version_status_locked: locked
-  version_status_open: open
-  error_can_not_reopen_issue_on_closed_version: An issue assigned to a closed version can not be reopened
-  label_user_anonymous: Anonymous
-  button_move_and_follow: Move and follow
-  setting_default_projects_modules: Default enabled modules for new projects
-  setting_gravatar_default: Default Gravatar image
-  field_sharing: Sharing
-  label_version_sharing_hierarchy: With project hierarchy
-  label_version_sharing_system: With all projects
-  label_version_sharing_descendants: With subprojects
-  label_version_sharing_tree: With project tree
-  label_version_sharing_none: Not shared
-  error_can_not_archive_project: This project can not be archived
-  button_duplicate: Duplicate
-  button_copy_and_follow: Copy and follow
-  label_copy_source: Source
-  setting_issue_done_ratio: Calculate the issue done ratio with
-  setting_issue_done_ratio_issue_status: Use the issue status
-  error_issue_done_ratios_not_updated: Issue done ratios not updated.
-  error_workflow_copy_target: Please select target tracker(s) and role(s)
-  setting_issue_done_ratio_issue_field: Use the issue field
-  label_copy_same_as_target: Same as target
-  label_copy_target: Target
-  notice_issue_done_ratios_updated: Issue done ratios updated.
-  error_workflow_copy_source: Please select a source tracker or role
-  label_update_issue_done_ratios: Update issue done ratios
-  setting_start_of_week: Start calendars on
-  permission_view_issues: View Issues
-  label_display_used_statuses_only: Only display statuses that are used by this tracker
-  label_revision_id: Revision {{value}}
-  label_api_access_key: API access key
-  label_api_access_key_created_on: API access key created {{value}} ago
-  label_feeds_access_key: RSS access key
-  notice_api_access_key_reseted: Your API access key was reset.
-  setting_rest_api_enabled: Enable REST web service
-  label_missing_api_access_key: Missing an API access key
-  label_missing_feeds_access_key: Missing a RSS access key
-  button_show: Show
-  text_line_separated: Multiple values allowed (one line for each value).
-  setting_mail_handler_body_delimiters: Truncate emails after one of these lines
-  permission_add_subprojects: Create subprojects
-  label_subproject_new: New subproject
-  text_own_membership_delete_confirmation: |-
-    You are about to remove some or all of your permissions and may no longer be able to edit this project after that.
-    Are you sure you want to continue?
-  label_close_versions: Close completed versions
-  label_board_sticky: Sticky
-  label_board_locked: Locked
-  permission_export_wiki_pages: Export wiki pages
-  setting_cache_formatted_text: Cache formatted text
-  permission_manage_project_activities: Manage project activities
-  error_unable_delete_issue_status: Unable to delete issue status
-  label_profile: Profile
-  permission_manage_subtasks: Manage subtasks
-  field_parent_issue: Parent task
-  label_subtask_plural: Subtasks
-  label_project_copy_notifications: Send email notifications during the project copy
-  error_can_not_delete_custom_field: Unable to delete custom field
-  error_unable_to_connect: Unable to connect ({{value}})
-  error_can_not_remove_role: This role is in use and can not be deleted.
-  error_can_not_delete_tracker: This tracker contains issues and can't be deleted.
-  field_principal: Principal
-  label_my_page_block: My page block
-  notice_failed_to_save_members: "Failed to save member(s): {{errors}}."
-  text_zoom_out: Zoom out
-  text_zoom_in: Zoom in
-  notice_unable_delete_time_entry: Unable to delete time log entry.
-  label_overall_spent_time: Overall spent time
-  field_time_entries: Log time
-  project_module_gantt: Gantt
-  project_module_calendar: Calendar
+  enumeration_system_activity: Activitat del sistema
+
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/cs.yml	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/cs.yml	Fri Sep 24 15:51:28 2010 +0100
@@ -116,6 +116,7 @@
         greater_than_start_date: "musí být větší než počáteční datum"
         not_same_project: "nepatří stejnému projektu"
         circular_dependency: "Tento vztah by vytvořil cyklickou závislost"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
 
   # Updated by Josef Liška <jl@chl.cz>
   # CZ translation by Maxim Krušina | Massimo Filippi, s.r.o. | maxim@mxm.cz
@@ -393,7 +394,7 @@
   label_attachment_delete: Odstranit soubor
   label_attachment_plural: Soubory
   label_file_added: Soubor přidán
-  label_report: Přeheled
+  label_report: Přehled
   label_report_plural: Přehledy
   label_news: Novinky
   label_news_new: Přidat novinku
@@ -912,3 +913,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/da.yml	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/da.yml	Fri Sep 24 15:51:28 2010 +0100
@@ -130,6 +130,7 @@
         greater_than_start_date: "skal være senere end startdatoen"
         not_same_project: "hører ikke til samme projekt"
         circular_dependency: "Denne relation vil skabe et afhængighedsforhold"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
 
       template:
         header:
@@ -928,3 +929,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/de.yml	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/de.yml	Fri Sep 24 15:51:28 2010 +0100
@@ -803,6 +803,7 @@
   button_create_and_continue: Anlegen + nächstes Ticket
   button_test: Testen
   button_edit: Bearbeiten
+  button_edit_associated_wikipage: "Zugehörige Wikiseite bearbeiten: {{page_title}}"
   button_add: Hinzufügen
   button_change: Wechseln
   button_apply: Anwenden
@@ -932,3 +933,7 @@
   enumeration_activities: Aktivitäten (Zeiterfassung)
   enumeration_system_activity: System-Aktivität
 
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/el.yml	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/el.yml	Fri Sep 24 15:51:28 2010 +0100
@@ -119,6 +119,7 @@
         greater_than_start_date: "πρέπει να είναι αργότερα από την ημερομηνία έναρξης"
         not_same_project: "δεν ανήκει στο ίδιο έργο"
         circular_dependency: "Αυτή η σχέση θα δημιουργήσει κυκλικές εξαρτήσεις"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
 
   actionview_instancetag_blank_option: Παρακαλώ επιλέξτε
   
@@ -912,3 +913,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/en-GB.yml	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/en-GB.yml	Fri Sep 24 15:51:28 2010 +0100
@@ -122,6 +122,7 @@
         greater_than_start_date: "must be greater than start date"
         not_same_project: "doesn't belong to the same project"
         circular_dependency: "This relation would create a circular dependency"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
 
   actionview_instancetag_blank_option: Please select
   
@@ -916,3 +917,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/en.yml	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/en.yml	Fri Sep 24 15:51:28 2010 +0100
@@ -293,6 +293,9 @@
   field_group_by: Group results by
   field_sharing: Sharing
   field_parent_issue: Parent task
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  field_text: Text field
   
   setting_app_title: Application title
   setting_app_subtitle: Application subtitle
@@ -784,6 +787,7 @@
   button_create_and_continue: Create and continue
   button_test: Test
   button_edit: Edit
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
   button_add: Add
   button_change: Change
   button_apply: Apply
@@ -835,6 +839,7 @@
   text_subprojects_destroy_warning: "Its subproject(s): {{value}} will be also deleted."
   text_workflow_edit: Select a role and a tracker to edit the workflow
   text_are_you_sure: Are you sure ?
+  text_are_you_sure_with_children: "Delete issue and all child issues?"
   text_journal_changed: "{{label}} changed from {{old}} to {{new}}"
   text_journal_set_to: "{{label}} set to {{value}}"
   text_journal_deleted: "{{label}} deleted ({{old}})"
--- a/config/locales/es.yml	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/es.yml	Fri Sep 24 15:51:28 2010 +0100
@@ -132,6 +132,7 @@
         greater_than_start_date: "debe ser posterior a la fecha de comienzo"
         not_same_project: "no pertenece al mismo proyecto"
         circular_dependency: "Esta relación podría crear una dependencia circular"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
 
         # Append your own errors here or at the model/attributes scope.
 
@@ -952,3 +953,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/eu.yml	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/eu.yml	Fri Sep 24 15:51:28 2010 +0100
@@ -121,6 +121,7 @@
         greater_than_start_date: "hasiera data baino handiagoa izan behar du"
         not_same_project: "ez dago proiektu berdinean"
         circular_dependency: "Erlazio honek mendekotasun zirkular bat sortuko luke"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
 
   actionview_instancetag_blank_option: Hautatu mesedez
   
@@ -916,3 +917,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/fi.yml	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/fi.yml	Fri Sep 24 15:51:28 2010 +0100
@@ -147,7 +147,7 @@
         greater_than_start_date: "tulee olla aloituspäivän jälkeinen"
         not_same_project: "ei kuulu samaan projektiin"
         circular_dependency: "Tämä suhde loisi kehän."
-
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
   
   actionview_instancetag_blank_option: Valitse, ole hyvä
   
@@ -938,3 +938,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/fr.yml	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/fr.yml	Fri Sep 24 15:51:28 2010 +0100
@@ -931,3 +931,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Modifier la page de Wiki associée: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/gl.yml	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/gl.yml	Fri Sep 24 15:51:28 2010 +0100
@@ -150,6 +150,7 @@
         greater_than_start_date: "debe ser posterior á data de comezo"
         not_same_project: "non pertence ao mesmo proxecto"
         circular_dependency: "Esta relación podería crear unha dependencia circular"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
 
   actionview_instancetag_blank_option: Por favor seleccione
   
@@ -928,3 +929,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/he.yml	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/he.yml	Fri Sep 24 15:51:28 2010 +0100
@@ -123,6 +123,7 @@
         greater_than_start_date: "חייב להיות מאוחר יותר מתאריך ההתחלה"
         not_same_project: "לא שייך לאותו הפרויקט"
         circular_dependency: "הקשר הזה יצור תלות מעגלית"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
 
   actionview_instancetag_blank_option: בחר בבקשה
 
@@ -917,3 +918,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/hr.yml	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/hr.yml	Fri Sep 24 15:51:28 2010 +0100
@@ -117,6 +117,7 @@
         greater_than_start_date: "mora biti veci nego pocetni datum"
         not_same_project: "ne pripada istom projektu"
         circular_dependency: "Ovaj relacija stvara kružnu ovisnost"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
 
   actionview_instancetag_blank_option: Molimo odaberite
   
@@ -919,3 +920,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/hu.yml	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/hu.yml	Fri Sep 24 15:51:28 2010 +0100
@@ -143,6 +143,7 @@
         greater_than_start_date: "nagyobbnak kell lennie, mint az indítás dátuma"
         not_same_project: "nem azonos projekthez tartozik"
         circular_dependency: "Ez a kapcsolat egy körkörös függőséget eredményez"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
 
   actionview_instancetag_blank_option: Kérem válasszon
   
@@ -935,3 +936,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/id.yml	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/id.yml	Fri Sep 24 15:51:28 2010 +0100
@@ -119,6 +119,7 @@
         greater_than_start_date: "harus lebih besar dari tanggal mulai"
         not_same_project: "tidak tergabung dalam proyek yang sama"
         circular_dependency: "kaitan ini akan menghasilkan circular dependency"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
 
   actionview_instancetag_blank_option: Silakan pilih
   
@@ -920,3 +921,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/it.yml	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/it.yml	Fri Sep 24 15:51:28 2010 +0100
@@ -126,6 +126,7 @@
         greater_than_start_date: "deve essere maggiore della data di partenza"
         not_same_project: "non appartiene allo stesso progetto"
         circular_dependency: "Questa relazione creerebbe una dipendenza circolare"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
 
   actionview_instancetag_blank_option: Scegli
   
@@ -916,3 +917,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/ja.yml	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/ja.yml	Fri Sep 24 15:51:28 2010 +0100
@@ -144,6 +144,7 @@
         greater_than_start_date: "を開始日より後にしてください"
         not_same_project: "同じプロジェクトに属していません"
         circular_dependency: "この関係では、循環依存になります"
+        cant_link_an_issue_with_a_descendant: "指定したチケットとは親子関係になっているため関連づけられません"
 
   actionview_instancetag_blank_option: 選んでください
   
@@ -318,6 +319,9 @@
   field_group_by: グループ条件
   field_sharing: 共有
   field_parent_issue: 親チケット
+  field_member_of_group: 担当者のグループ
+  field_assigned_to_role: 担当者のロール
+  field_text: テキスト
   
   setting_app_title: アプリケーションのタイトル
   setting_app_subtitle: アプリケーションのサブタイトル
@@ -809,6 +813,7 @@
   button_create_and_continue: 連続作成
   button_test: テスト
   button_edit: 編集
+  button_edit_associated_wikipage: "関連するWikiページを編集: {{page_title}}"
   button_add: 追加
   button_change: 変更
   button_apply: 適用
@@ -860,6 +865,7 @@
   text_subprojects_destroy_warning: "サブプロジェクト {{value}} も削除されます。"
   text_workflow_edit: ワークフローを編集するロールとトラッカーを選んでください
   text_are_you_sure: よろしいですか?
+  text_are_you_sure_with_children: チケットとその子チケット全てを削除しますか?
   text_journal_changed: "{{label}} を {{old}} から {{new}} に変更"
   text_journal_set_to: "{{label}} を {{value}} にセット"
   text_journal_deleted: "{{label}} を削除 ({{old}})"
--- a/config/locales/ko.yml	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/ko.yml	Fri Sep 24 15:51:28 2010 +0100
@@ -2,7 +2,7 @@
 # by Kihyun Yoon(ddumbugie@gmail.com),http://plenum.textcube.com/
 # by John Hwang (jhwang@tavon.org),http://github.com/tavon
 # by Yonghwan SO(please insert your email), last update at 2009-09-11
-# last update at 2010-01-23 by Kihyun Yoon
+# last update at 2010-09-06 by Kihyun Yoon
 ko:
   direction: ltr
   date:
@@ -173,6 +173,7 @@
         greater_than_start_date: "는 시작날짜보다 커야 합니다"
         not_same_project: "는 같은 프로젝트에 속해 있지 않습니다"
         circular_dependency: "이 관계는 순환 의존관계를 만들 수 있습니다"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
 
   actionview_instancetag_blank_option: 선택하세요
   
@@ -958,13 +959,18 @@
   error_unable_to_connect: 연결할 수 없습니다(({{value}})
   error_can_not_remove_role: 이 역할은 현재 사용 중이이서 삭제할 수 없습니다.
   error_can_not_delete_tracker: 이 유형의 일감들이 있에서 삭제할 수 없습니다.
-  field_principal: Principal
-  label_my_page_block: My page block
+  field_principal: 신원
+  label_my_page_block: 내 페이지 출력화면
   notice_failed_to_save_members: "Failed to save member(s): {{errors}}."
-  text_zoom_out: Zoom out
-  text_zoom_in: Zoom in
-  notice_unable_delete_time_entry: Unable to delete time log entry.
-  label_overall_spent_time: Overall spent time
-  field_time_entries: Log time
-  project_module_gantt: Gantt
-  project_module_calendar: Calendar
+  text_zoom_out: 더 작게
+  text_zoom_in: 더 크게
+  notice_unable_delete_time_entry: 시간 기록 항목을 삭제할 수 없습니다.
+  label_overall_spent_time: 총 소요시간
+  field_time_entries: 기록된 시간
+  project_module_gantt: Gantt 챠트
+  project_module_calendar: 달력
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/lt.yml	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/lt.yml	Fri Sep 24 15:51:28 2010 +0100
@@ -143,7 +143,7 @@
           other:  "Išsaugant objektą {{model}} rastos {{count}} klaidos"
         body: "Šiuose laukuose yra klaidų:"
 
-      pranešimus:
+      messages:
         inclusion: "nenumatyta reikšmė"
         exclusion: "užimtas"
         invalid: "neteisingas"
@@ -179,6 +179,7 @@
         greater_than_start_date: "turi būti didesnė negu pradžios data"
         not_same_project: "nepriklauso tam pačiam projektui"
         circular_dependency: "Šis ryšys sukurtų ciklinę priklausomybę"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
     
   actionview_instancetag_blank_option: prašom parinkti
   
@@ -976,3 +977,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/lv.yml	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/lv.yml	Fri Sep 24 15:51:28 2010 +0100
@@ -113,6 +113,7 @@
         greater_than_start_date: "jābūt vēlākam par sākuma datumu"
         not_same_project: "nepieder pie tā paša projekta"
         circular_dependency: "Šī relācija radītu ciklisku atkarību"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
 
   actionview_instancetag_blank_option: Izvēlieties
   
@@ -907,3 +908,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/mn.yml	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/mn.yml	Fri Sep 24 15:51:28 2010 +0100
@@ -117,6 +117,7 @@
         greater_than_start_date: "must be greater than start date"
         not_same_project: "нэг ижил төсөлд хамаарахгүй байна"
         circular_dependency: "Энэ харьцаа нь гинжин(рекурсив) харьцаа үүсгэх юм байна"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
 
   actionview_instancetag_blank_option: Сонгоно уу
   
@@ -913,3 +914,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/nl.yml	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/nl.yml	Fri Sep 24 15:51:28 2010 +0100
@@ -116,6 +116,7 @@
         greater_than_start_date: "moet na de startdatum liggen"
         not_same_project: "hoort niet bij hetzelfde project"
         circular_dependency: "Deze relatie zou een circulaire afhankelijkheid tot gevolg hebben"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
 
   actionview_instancetag_blank_option: Selecteer
   
@@ -701,7 +702,7 @@
   setting_date_format: Datumformaat
   setting_default_language: Standaard taal
   setting_default_projects_public: Nieuwe projecten zijn standaard publiek
-  setting_diff_max_lines_displayed: Max number of diff lines displayed
+  setting_diff_max_lines_displayed: Max aantal diff regels weer te geven
   setting_display_subprojects_issues: Standaard issues van subproject tonen
   setting_emails_footer: E-mails footer
   setting_enabled_scm: SCM ingeschakeld
@@ -709,7 +710,7 @@
   setting_gravatar_enabled: Gebruik Gravatar gebruikersiconen
   setting_host_name: Hostnaam
   setting_issue_list_default_columns: Standaardkolommen getoond op de lijst met issues
-  setting_issues_export_limit: Limiet export issues
+  setting_issues_export_limit: Max aantal te exporteren issues 
   setting_login_required: Authenticatie vereist
   setting_mail_from: Afzender e-mail adres
   setting_mail_handler_api_enabled: Schakel WS in voor inkomende mail.
@@ -727,7 +728,7 @@
   setting_welcome_text: Welkomsttekst
   setting_wiki_compression: Wikigeschiedenis comprimeren
   status_active: actief
-  status_locked: gelockt
+  status_locked: vergrendeld
   status_registered: geregistreerd
   text_are_you_sure: Weet u het zeker?
   text_assign_time_entries_to_project: Gerapporteerde uren toevoegen aan dit project
@@ -753,7 +754,7 @@
   text_load_default_configuration: Laad de standaardconfiguratie
   text_min_max_length_info: 0 betekent geen restrictie
   text_no_configuration_data: "Rollen, trackers, issue statussen en workflows zijn nog niet geconfigureerd.\nHet is ten zeerste aangeraden om de standaard configuratie in te laden. U kunt deze aanpassen nadat deze is ingeladen."
-  text_plugin_assets_writable: Plugin assets directory writable
+  text_plugin_assets_writable: Plugin assets directory beschrijfbaar
   text_project_destroy_confirmation: Weet u zeker dat u dit project en alle gerelateerde gegevens wilt verwijderen?
   text_project_identifier_info: 'kleine letters (a-z), cijfers en liggende streepjes toegestaan.<br />Eenmaal bewaard kan de identificatiecode niet meer worden gewijzigd.'
   text_reassign_time_entries: 'Gerapporteerde uren opnieuw toewijzen:'
@@ -778,7 +779,7 @@
   text_custom_field_possible_values_info: 'Per lijn een waarde'
   label_display: Toon
   field_editable: Bewerkbaar
-  setting_repository_log_display_limit: Maximum hoeveelheid van revisies zichbaar 
+  setting_repository_log_display_limit: Max aantal revisies zichbaar 
   setting_file_max_size_displayed: Max grootte van tekst bestanden inline zichtbaar
   field_watcher: Watcher
   setting_openid: Sta OpenID login en registratie toe
@@ -824,7 +825,7 @@
   version_status_closed: gesloten
   version_status_locked: vergrendeld
   version_status_open: open
-  error_can_not_reopen_issue_on_closed_version: An issue assigned to a closed version can not be reopened
+  error_can_not_reopen_issue_on_closed_version: Een issue toegewezen aan een gesloten versie kan niet heropend worden
   label_user_anonymous: Anoniem
   button_move_and_follow: Verplaats en volg
   setting_default_projects_modules: Standaard geactiveerde modules voor nieuwe projecten
@@ -833,36 +834,36 @@
   label_version_sharing_hierarchy: Met project hiërarchie
   label_version_sharing_system: Met alle projecten
   label_version_sharing_descendants: Met subprojecten
-  label_version_sharing_tree: With project tree
+  label_version_sharing_tree: Met project boom
   label_version_sharing_none: Niet gedeeld
   error_can_not_archive_project: Dit project kan niet worden gearchiveerd
   button_duplicate: Dupliceer
   button_copy_and_follow: Kopiëer en volg
   label_copy_source: Bron
-  setting_issue_done_ratio: Bereken issue done ratio met
+  setting_issue_done_ratio: Bereken issue percentage voldaan met
   setting_issue_done_ratio_issue_status: Gebruik de issue status
-  error_issue_done_ratios_not_updated: Issue done ratios niet geupdate.
+  error_issue_done_ratios_not_updated: Issue percentage voldaan niet geupdate.
   error_workflow_copy_target: Selecteer tracker(s) en rol(len)
   setting_issue_done_ratio_issue_field: Gebruik het issue veld
   label_copy_same_as_target: Zelfde als doel
   label_copy_target: Doel
-  notice_issue_done_ratios_updated: Issue done ratios updated.
+  notice_issue_done_ratios_updated: Issue percentage voldaan geupdate.
   error_workflow_copy_source: Selecteer een bron tracker of rol
-  label_update_issue_done_ratios: Update issue done ratios
+  label_update_issue_done_ratios: Update issue percentage voldaan
   setting_start_of_week: Week begint op
   permission_view_issues: Bekijk Issues
   label_display_used_statuses_only: Laat alleen statussen zien die gebruikt worden door deze tracker
-  label_revision_id: Revision {{value}}
+  label_revision_id: Revisie {{value}}
   label_api_access_key: API access key
   label_api_access_key_created_on: API access key gemaakt {{value}} geleden
   label_feeds_access_key: RSS access key
   notice_api_access_key_reseted: Uw API access key was gereset.
-  setting_rest_api_enabled: Enable REST web service
+  setting_rest_api_enabled: Activeer REST web service
   label_missing_api_access_key: Geen API access key
   label_missing_feeds_access_key: Geen RSS access key
   button_show: Laat zien
   text_line_separated: Meerdere waarden toegestaan (elke regel is een waarde).
-  setting_mail_handler_body_delimiters: Truncate emails after one of these lines
+  setting_mail_handler_body_delimiters: Breek email verwerking af na een van deze regels
   permission_add_subprojects: Maak subprojecten
   label_subproject_new: Nieuw subproject
   text_own_membership_delete_confirmation: |-
@@ -873,10 +874,10 @@
   label_board_locked: Vergrendeld
   permission_export_wiki_pages: Exporteer wiki pagina's
   setting_cache_formatted_text: Cache opgemaakte tekst
-  permission_manage_project_activities: Manage project activities
+  permission_manage_project_activities: Beheer project activiteiten
   error_unable_delete_issue_status: Verwijderen van issue status niet gelukt
   label_profile: Profiel
-  permission_manage_subtasks: Manage subtasks
+  permission_manage_subtasks: Beheer subtasks
   field_parent_issue: Parent task
   label_subtask_plural: Subtasks
   label_project_copy_notifications: Stuur email notificaties voor de project kopie
@@ -891,6 +892,11 @@
   text_zoom_in: Zoom in
   notice_unable_delete_time_entry: Verwijderen niet mogelijk van tijd log invoer.
   label_overall_spent_time: Totaal bestede tijd
-  field_time_entries: Log time
+  field_time_entries: Log tijd
   project_module_gantt: Gantt
-  project_module_calendar: Calendar
+  project_module_calendar: Kalender
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/no.yml	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/no.yml	Fri Sep 24 15:51:28 2010 +0100
@@ -111,6 +111,7 @@
         greater_than_start_date: "må være større enn startdato"
         not_same_project: "hører ikke til samme prosjekt"
         circular_dependency: "Denne relasjonen ville lagd en sirkulær avhengighet"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
 
   
   actionview_instancetag_blank_option: Vennligst velg
@@ -903,3 +904,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/pl.yml	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/pl.yml	Fri Sep 24 15:51:28 2010 +0100
@@ -96,8 +96,8 @@
         few:   "ponad {{count}} lata"
         other: "ponad {{count}} lat"
       almost_x_years:
-        one:   "almost 1 year"
-        other: "almost {{count}} years"
+        one:   "prawie rok"
+        other: "prawie {{count}} lata"
 
   activerecord:
     errors:
@@ -122,13 +122,14 @@
         greater_than: "musi być większe niż {{count}}"
         greater_than_or_equal_to: "musi być większe lub równe {{count}}"
         equal_to: "musi być równe {{count}}"
-        less_than: "musie być mniejsze niż {{count}}"
+        less_than: "musi być mniejsze niż {{count}}"
         less_than_or_equal_to: "musi być mniejsze lub równe {{count}}"
         odd: "musi być nieparzyste"
         even: "musi być parzyste"
         greater_than_start_date: "musi być większe niż początkowa data"
         not_same_project: "nie należy do tego samego projektu"
         circular_dependency: "Ta relacja może wytworzyć kołową zależność"
+        cant_link_an_issue_with_a_descendant: "Zagadnienie nie może zostać powiązane z jednym z własnych podzagadnień"
       
   support:
     array:
@@ -159,19 +160,19 @@
   button_edit: Edytuj
   button_list: Lista
   button_lock: Zablokuj
-  button_log_time: Log czasu
+  button_log_time: Dziennik
   button_login: Login
   button_move: Przenieś
   button_quote: Cytuj
   button_rename: Zmień nazwę
   button_reply: Odpowiedz
   button_reset: Resetuj
-  button_rollback: Przywróc do tej wersji
+  button_rollback: Przywróć do tej wersji
   button_save: Zapisz
   button_sort: Sortuj
   button_submit: Wyślij
   button_test: Testuj
-  button_unarchive: Przywróc z archiwum
+  button_unarchive: Przywróć z archiwum
   button_uncheck_all: Odznacz wszystko
   button_unlock: Odblokuj
   button_unwatch: Nie obserwuj
@@ -538,12 +539,12 @@
   label_project_latest: Ostatnie projekty
   label_project_new: Nowy projekt
   label_project_plural234: Projekty
-  label_project_plural5: Projekty
+  label_project_plural5: Projektów
   label_project_plural: Projekty
   label_x_projects:
-    zero:  no projects
-    one:   1 project
-    other: "{{count}} projects"
+    zero:  brak projektów
+    one:   jeden projekt
+    other: "{{count}} projektów"
   label_public_projects: Projekty publiczne
   label_query: Kwerenda
   label_query_new: Nowa kwerenda
@@ -589,7 +590,7 @@
   label_sort_highest: Przesuń na górę
   label_sort_lower: Do dołu
   label_sort_lowest: Przesuń na dół
-  label_spent_time: Spędzony czas
+  label_spent_time: Przepracowany czas
   label_start_to_end: początek do końca
   label_start_to_start: początek do początku
   label_statistics: Statystyki
@@ -601,7 +602,7 @@
   label_this_month: ten miesiąc
   label_this_week: ten tydzień
   label_this_year: ten rok
-  label_time_tracking: Śledzenie czasu
+  label_time_tracking: Śledzenie czasu pracy
   label_today: dzisiaj
   label_topic_plural: Tematy
   label_total: Ogółem
@@ -683,11 +684,11 @@
   permission_edit_messages: Edycja wiadomości
   permission_edit_own_issue_notes: Edycja własnych notatek
   permission_edit_own_messages: Edycja własnych wiadomości
-  permission_edit_own_time_entries: Edycja własnego logu czasu
+  permission_edit_own_time_entries: Edycja własnego dziennika
   permission_edit_project: Edycja projektów
-  permission_edit_time_entries: Edycja logów czasu
+  permission_edit_time_entries: Edycja wpisów dziennika
   permission_edit_wiki_pages: Edycja stron wiki
-  permission_log_time: Zapisywanie spędzonego czasu
+  permission_log_time: Zapisywanie przepracowanego czasu
   permission_manage_boards: Zarządzanie forami
   permission_manage_categories: Zarządzanie kategoriami zaganień
   permission_manage_documents: Zarządzanie dokumentami
@@ -711,7 +712,7 @@
   permission_view_gantt: Podgląd diagramu Gantta
   permission_view_issue_watchers: Podgląd listy obserwatorów
   permission_view_messages: Podgląd wiadomości
-  permission_view_time_entries: Podgląd spędzonego czasu
+  permission_view_time_entries: Podgląd przepracowanego czasu
   permission_view_wiki_edits: Podgląd historii wiki
   permission_view_wiki_pages: Podgląd wiki
   project_module_boards: Fora
@@ -720,7 +721,7 @@
   project_module_issue_tracking: Śledzenie zagadnień
   project_module_news: Komunikaty
   project_module_repository: Repozytorium
-  project_module_time_tracking: Śledzenie czasu
+  project_module_time_tracking: Śledzenie czasu pracy
   project_module_wiki: Wiki
   setting_activity_days_default: Dni wyświetlane w aktywności projektu
   setting_app_subtitle: Podtytuł aplikacji
@@ -742,7 +743,7 @@
   setting_feeds_limit: Limit danych RSS
   setting_gravatar_enabled: Używaj ikon użytkowników Gravatar
   setting_host_name: Nazwa hosta i ścieżka
-  setting_issue_list_default_columns: Domyślne kolumny wiświetlane na liście zagadnień
+  setting_issue_list_default_columns: Domyślne kolumny wyświetlane na liście zagadnień
   setting_issues_export_limit: Limit eksportu zagadnień
   setting_login_required: Identyfikacja wymagana
   setting_mail_from: Adres email wysyłki
@@ -764,20 +765,20 @@
   status_locked: zablokowany
   status_registered: zarejestrowany
   text_are_you_sure: Jesteś pewien ?
-  text_assign_time_entries_to_project: Przypisz logowany czas do projektu
+  text_assign_time_entries_to_project: Przypisz wpisy dziennika do projektu
   text_caracters_maximum: "{{count}} znaków maksymalnie."
   text_caracters_minimum: "Musi być nie krótsze niż {{count}} znaków."
   text_comma_separated: Wielokrotne wartości dozwolone (rozdzielone przecinkami).
   text_default_administrator_account_changed: Zmieniono domyślne hasło administratora
-  text_destroy_time_entries: Usuń zalogowany czas
-  text_destroy_time_entries_question: Zalogowano {{hours}} godzin przy zagadnieniu, które chcesz usunąć. Co chcesz zrobić?
+  text_destroy_time_entries: Usuń wpisy dziennika
+  text_destroy_time_entries_question: Przepracowano {{hours}} godzin przy zagadnieniu, które chcesz usunąć. Co chcesz zrobić?
   text_email_delivery_not_configured: "Dostarczanie poczty elektronicznej nie zostało skonfigurowane, więc powiadamianie jest nieaktywne.\nSkonfiguruj serwer SMTP w config/email.yml  a następnie zrestartuj aplikację i uaktywnij to."
   text_enumeration_category_reassign_to: 'Zmień przypisanie na tą wartość:'
   text_enumeration_destroy_question: "{{count}} obiektów jest przypisana do tej wartości."
   text_file_repository_writable: Zapisywalne repozytorium plików
   text_issue_added: "Zagadnienie {{id}} zostało wprowadzone (by {{author}})."
   text_issue_category_destroy_assignments: Usuń przydziały kategorii
-  text_issue_category_destroy_question: "Zagadnienia ({{count}}) są przypisane do tej kategorii. Co chcesz uczynić?"
+  text_issue_category_destroy_question: "Zagadnienia ({{count}}) są przypisane do tej kategorii. Co chcesz zrobić?"
   text_issue_category_reassign_to: Przydziel zagadnienie do tej kategorii
   text_issue_updated: "Zagadnienie {{id}} zostało zaktualizowane (by {{author}})."
   text_issues_destroy_confirmation: 'Czy jestes pewien, że chcesz usunąć wskazane zagadnienia?'
@@ -786,9 +787,9 @@
   text_load_default_configuration: Załaduj domyślną konfigurację
   text_min_max_length_info: 0 oznacza brak restrykcji
   text_no_configuration_data: "Role użytkowników, typy zagadnień, statusy zagadnień oraz przepływ pracy nie zostały jeszcze skonfigurowane.\nJest wysoce rekomendowane by załadować domyślną konfigurację. Po załadowaniu będzie możliwość edycji tych danych."
-  text_project_destroy_confirmation: Jesteś pewien, że chcesz usunąć ten projekt i wszyskie powiązane dane?
+  text_project_destroy_confirmation: Jesteś pewien, że chcesz usunąć ten projekt i wszystkie powiązane dane?
   text_project_identifier_info: 'Małe litery (a-z), liczby i myślniki dozwolone.<br />Raz zapisany, identyfikator nie może być zmieniony.'
-  text_reassign_time_entries: 'Przepnij zalogowany czas do tego zagadnienia:'
+  text_reassign_time_entries: 'Przepnij przepracowany czas do tego zagadnienia:'
   text_regexp_info: np. ^[A-Z0-9]+$
   text_repository_usernames_mapping: "Wybierz lub uaktualnij przyporządkowanie użytkowników Redmine do użytkowników repozytorium.\nUżytkownicy z taką samą nazwą lub adresem email są przyporządkowani automatycznie."
   text_rmagick_available: RMagick dostępne (opcjonalnie)
@@ -799,9 +800,9 @@
   text_tip_task_begin_day: zadanie zaczynające się dzisiaj
   text_tip_task_begin_end_day: zadanie zaczynające i kończące się dzisiaj
   text_tip_task_end_day: zadanie kończące się dzisiaj
-  text_tracker_no_workflow: Brak przepływu zefiniowanego dla tego typu zagadnienia
+  text_tracker_no_workflow: Brak przepływu zdefiniowanego dla tego typu zagadnienia
   text_unallowed_characters: Niedozwolone znaki
-  text_user_mail_option: "W przypadku niezaznaczonych projektów, będziesz otrzymywał powiadomienia tylko na temat zagadnien, które obserwujesz, lub w których bierzesz udział (np. jesteś autorem lub adresatem)."
+  text_user_mail_option: "W przypadku niezaznaczonych projektów, będziesz otrzymywał powiadomienia tylko na temat zagadnień, które obserwujesz, lub w których bierzesz udział (np. jesteś autorem lub adresatem)."
   text_user_wrote: "{{value}} napisał:"
   text_wiki_destroy_confirmation: Jesteś pewien, że chcesz usunąć to wiki i całą jego zawartość ?
   text_workflow_edit: Zaznacz rolę i typ zagadnienia do edycji przepływu
@@ -817,7 +818,7 @@
   button_create_and_continue: Stwórz i dodaj kolejne
   text_custom_field_possible_values_info: 'Każda wartość w osobnej linii'
   setting_repository_log_display_limit: Maksymalna liczba rewizji pokazywanych w logu pliku
-  setting_file_max_size_displayed: Maksymalny rozmiar plików tekstowych zagnieżdżanych w stronie
+  setting_file_max_size_displayed: Maksymalny rozmiar plików tekstowych osadzanych w stronie
   field_watcher: Obserwator
   setting_openid: Logowanie i rejestracja przy użyciu OpenID
   field_identity_url: Identyfikator OpenID (URL)
@@ -829,10 +830,10 @@
   label_date_from_to: Od {{start}} do {{end}}
   label_greater_or_equal: ">="
   label_less_or_equal: <=
-  text_wiki_page_destroy_question: This page has {{descendants}} child page(s) and descendant(s). What do you want to do?
-  text_wiki_page_reassign_children: Reassign child pages to this parent page
-  text_wiki_page_nullify_children: Keep child pages as root pages
-  text_wiki_page_destroy_children: Delete child pages and all their descendants
+  text_wiki_page_destroy_question: Ta strona posiada podstrony ({{descendants}}). Co chcesz zrobić?
+  text_wiki_page_reassign_children: Podepnij je do strony nadrzędnej względem usuwanej
+  text_wiki_page_nullify_children: Przesuń je na szczyt hierarchii
+  text_wiki_page_destroy_children: Usuń wszystkie podstrony
   setting_password_min_length: Minimalna długość hasła
   field_group_by: Grupuj wyniki wg
   mail_subject_wiki_content_updated: "Strona wiki '{{page}}' została uaktualniona"
@@ -844,7 +845,7 @@
   permission_add_project: Tworzenie projektu
   setting_new_project_user_role_id: Rola nadawana twórcom projektów, którzy nie posiadają uprawnień administatora
   label_view_all_revisions: Pokaż wszystkie rewizje
-  label_tag: Tag
+  label_tag: Słowo kluczowe
   label_branch: Gałąź
   error_no_tracker_in_project: Projekt nie posiada powiązanych typów zagadnień. Sprawdź ustawienia projektu.
   error_no_default_issue_status: Nie zdefiniowano domyślnego statusu zagadnień. Sprawdź konfigurację (Przejdź do "Administracja -> Statusy zagadnień).
@@ -854,7 +855,7 @@
   label_group_plural: Grupy
   label_group: Grupa
   label_group_new: Nowa grupa
-  label_time_entry_plural: Spędzony czas
+  label_time_entry_plural: Przepracowany czas
   text_journal_added: "Dodano {{label}} {{value}}"
   field_active: Aktywne
   enumeration_system_activity: Aktywność Systemowa
@@ -912,24 +913,29 @@
   label_board_locked: Zamknięta
   permission_export_wiki_pages: Eksport stron wiki
   permission_manage_project_activities: Zarządzanie aktywnościami projektu
-  setting_cache_formatted_text: Cache formatted text
-  error_unable_delete_issue_status: Unable to delete issue status
-  label_profile: Profile
-  permission_manage_subtasks: Manage subtasks
-  field_parent_issue: Parent task
-  label_subtask_plural: Subtasks
-  label_project_copy_notifications: Send email notifications during the project copy
-  error_can_not_delete_custom_field: Unable to delete custom field
-  error_unable_to_connect: Unable to connect ({{value}})
-  error_can_not_remove_role: This role is in use and can not be deleted.
-  error_can_not_delete_tracker: This tracker contains issues and can't be deleted.
-  field_principal: Principal
-  label_my_page_block: My page block
-  notice_failed_to_save_members: "Failed to save member(s): {{errors}}."
-  text_zoom_out: Zoom out
-  text_zoom_in: Zoom in
-  notice_unable_delete_time_entry: Unable to delete time log entry.
-  label_overall_spent_time: Overall spent time
-  field_time_entries: Log time
-  project_module_gantt: Gantt
-  project_module_calendar: Calendar
+  setting_cache_formatted_text: Buforuj sformatowany tekst
+  error_unable_delete_issue_status: Nie można usunąć statusu zagadnienia
+  label_profile: Profil
+  permission_manage_subtasks: Zarządzanie podzagadnieniami
+  field_parent_issue: Zagadnienie nadrzędne
+  label_subtask_plural: Podzagadnienia
+  label_project_copy_notifications: Wyślij powiadomienia mailowe przy kopiowaniu projektu
+  error_can_not_delete_custom_field: Nie można usunąć tego pola
+  error_unable_to_connect: Nie można połączyć ({{value}})
+  error_can_not_remove_role: Ta rola przypisana jest niektórym użytkownikom i nie może zostać usunięta.
+  error_can_not_delete_tracker: Ten typ przypisany jest do części zagadnień i nie może zostać usunięty.
+  field_principal: Przełożony
+  label_my_page_block: Elementy
+  notice_failed_to_save_members: "Nie można zapisać uczestników: {{errors}}."
+  text_zoom_out: Zmniejsz czcionkę
+  text_zoom_in: Powiększ czcionkę
+  notice_unable_delete_time_entry: Nie można usunąć wpisu z dziennika.
+  label_overall_spent_time: Przepracowany czas
+  field_time_entries: Dziennik
+  project_module_gantt: Diagram Gantta
+  project_module_calendar: Kalendarz
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/pt-BR.yml	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/pt-BR.yml	Fri Sep 24 15:51:28 2010 +0100
@@ -143,6 +143,7 @@
         greater_than_start_date: "deve ser maior que a data inicial"
         not_same_project: "não pertence ao mesmo projeto"
         circular_dependency: "Esta relação geraria uma dependência circular"
+        cant_link_an_issue_with_a_descendant: "Uma tarefa não pode ser relaciona a uma de suas subtarefas"
 
   actionview_instancetag_blank_option: Selecione
 
@@ -936,3 +937,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/pt.yml	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/pt.yml	Fri Sep 24 15:51:28 2010 +0100
@@ -128,6 +128,7 @@
         greater_than_start_date: "deve ser maior que a data inicial"
         not_same_project: "não pertence ao mesmo projecto"
         circular_dependency: "Esta relação iria criar uma dependência circular"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
 
   ## Translated by: Pedro Araújo <phcrva19@hotmail.com>
   actionview_instancetag_blank_option: Seleccione
@@ -920,3 +921,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/ro.yml	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/ro.yml	Fri Sep 24 15:51:28 2010 +0100
@@ -110,6 +110,7 @@
         greater_than_start_date: "trebuie să fie după data de început"
         not_same_project: "trebuie să aparțină aceluiași proiect"
         circular_dependency: "Această relație ar crea o dependență circulară"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
 
   actionview_instancetag_blank_option: Selectați
   
@@ -905,3 +906,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/ru.yml	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/ru.yml	Fri Sep 24 15:51:28 2010 +0100
@@ -192,11 +192,12 @@
         equal_to: "может иметь лишь значение, равное {{count}}"
         less_than: "может иметь значение меньшее чем {{count}}"
         less_than_or_equal_to: "может иметь значение меньшее или равное {{count}}"
-        odd: "может иметь лишь четное значение"
-        even: "может иметь лишь нечетное значение"
+        odd: "может иметь лишь нечетное значение"
+        even: "может иметь лишь четное значение"
         greater_than_start_date: "должна быть позднее даты начала"
-        not_same_project: "не относятся к одному проекту"
+        not_same_project: "не относится к одному проекту"
         circular_dependency: "Такая связь приведет к циклической зависимости"
+        cant_link_an_issue_with_a_descendant: "Задача не может быть связана со своей подзадачей"
 
   support:
     array:
@@ -229,6 +230,7 @@
   button_delete: Удалить
   button_download: Загрузить
   button_edit: Редактировать
+  button_edit_associated_wikipage: "Редактировать связанную wiki-страницу: {{page_title}}"
   button_list: Список
   button_lock: Заблокировать
   button_login: Вход
@@ -293,6 +295,7 @@
   field_admin: Администратор
   field_assignable: Задача может быть назначена этой роли
   field_assigned_to: Назначена
+  field_assigned_to_role: Роль участника
   field_attr_firstname: Имя
   field_attr_lastname: Фамилия
   field_attr_login: Атрибут Регистрация
@@ -342,6 +345,7 @@
   field_mail: Email
   field_mail_notification: Уведомления по email
   field_max_length: Максимальная длина
+  field_member_of_group: Группа участника
   field_min_length: Минимальная длина
   field_name: Имя
   field_new_password: Новый пароль
@@ -367,6 +371,7 @@
   field_subject: Тема
   field_subproject: Подпроект
   field_summary: Сводка
+  field_text: Текстовое поле
   field_time_entries: Затраченное время
   field_time_zone: Часовой пояс
   field_title: Название
@@ -895,7 +900,8 @@
   status_active: активен
   status_locked: заблокирован
   status_registered: зарегистрирован
-
+  
+  text_are_you_sure_with_children: Удалить задачу и все ее подзадачи?
   text_are_you_sure: Подтвердите
   text_assign_time_entries_to_project: Прикрепить зарегистрированное время к проекту
   text_caracters_maximum: "Максимум {{count}} символов(а)."
--- a/config/locales/sk.yml	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/sk.yml	Fri Sep 24 15:51:28 2010 +0100
@@ -112,6 +112,7 @@
         greater_than_start_date: "musí byť neskôr ako počiatočný dátum"
         not_same_project: "nepatrí rovnakému projektu"
         circular_dependency: "Tento vzťah by vytvoril cyklickú závislosť"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
 
   # SK translation by Stanislav Pach | stano.pach@seznam.cz
   
@@ -907,3 +908,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/sl.yml	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/sl.yml	Fri Sep 24 15:51:28 2010 +0100
@@ -116,6 +116,7 @@
         greater_than_start_date: "mora biti kasnejši kot začeten datum"
         not_same_project: "ne pripada istemu projektu"
         circular_dependency: "Ta odnos bi povzročil krožno odvisnost"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
 
   actionview_instancetag_blank_option: Prosimo izberite
   
@@ -908,3 +909,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/sr-YU.yml	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/sr-YU.yml	Fri Sep 24 15:51:28 2010 +0100
@@ -68,7 +68,7 @@
 
   number:
     format:
-      separator: "."
+      separator: ","
       delimiter: ""
       precision: 3
     human:
@@ -910,6 +910,11 @@
   enumeration_activities: Aktivnosti (praćenje vremena)
   enumeration_system_activity: Sistemska aktivnost
   
-  field_time_entries: Log time
-  project_module_gantt: Gantt
-  project_module_calendar: Calendar
+  field_time_entries: Vreme evidencije
+  project_module_gantt: Gantov dijagram
+  project_module_calendar: Kalendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/sr.yml	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/sr.yml	Fri Sep 24 15:51:28 2010 +0100
@@ -68,7 +68,7 @@
 
   number:
     format:
-      separator: "."
+      separator: ","
       delimiter: ""
       precision: 3
     human:
@@ -910,6 +910,12 @@
   enumeration_activities: Активности (праћење времена)
   enumeration_system_activity: Системска активност
   
-  field_time_entries: Log time
-  project_module_gantt: Gantt
-  project_module_calendar: Calendar
+  field_time_entries: Време евиденције
+  project_module_gantt: Гантов дијаграм
+  project_module_calendar: Календар
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/sv.yml	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/sv.yml	Fri Sep 24 15:51:28 2010 +0100
@@ -130,6 +130,7 @@
         greater_than_start_date: "måste vara senare än startdatumet"
         not_same_project: "tillhör inte samma projekt"
         circular_dependency: "Denna relation skulle skapa ett cirkulärt beroende"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
 
   direction: ltr
   date:
@@ -325,6 +326,7 @@
   field_redirect_existing_links: Omdirigera existerande länkar
   field_estimated_hours: Estimerad tid
   field_column_names: Kolumner
+  field_time_entries: Spenderad tid
   field_time_zone: Tidszon
   field_searchable: Sökbar
   field_default_value: Standardvärde
@@ -456,6 +458,8 @@
   project_module_wiki: Wiki
   project_module_repository: Versionsarkiv
   project_module_boards: Forum
+  project_module_calendar: Kalender
+  project_module_gantt: Gantt
   
   label_user: Användare
   label_user_plural: Användare
@@ -857,7 +861,7 @@
   button_update: Uppdatera
   button_configure: Konfigurera
   button_quote: Citera
-  button_duplicate: Duplisera
+  button_duplicate: Duplicera
   button_show: Visa
   
   status_active: aktiv
@@ -954,6 +958,8 @@
   enumeration_doc_categories: Dokumentkategorier
   enumeration_activities: Aktiviteter (tidsuppföljning)
   enumeration_system_activity: Systemaktivitet
-  field_time_entries: Log time
-  project_module_gantt: Gantt
-  project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/th.yml	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/th.yml	Fri Sep 24 15:51:28 2010 +0100
@@ -116,6 +116,7 @@
         greater_than_start_date: "ต้องมากกว่าวันเริ่ม"
         not_same_project: "ไม่ได้อยู่ในโครงการเดียวกัน"
         circular_dependency: "ความสัมพันธ์อ้างอิงเป็นวงกลม"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
 
   actionview_instancetag_blank_option: กรุณาเลือก
   
@@ -909,3 +910,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/tr.yml	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/tr.yml	Fri Sep 24 15:51:28 2010 +0100
@@ -143,6 +143,7 @@
         greater_than_start_date: "başlangıç tarihinden büyük olmalı"
         not_same_project: "aynı projeye ait değil"
         circular_dependency: "Bu ilişki döngüsel bağımlılık meydana getirecektir"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
       models:
   
   actionview_instancetag_blank_option: Lütfen Seçin
@@ -935,3 +936,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/uk.yml	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/uk.yml	Fri Sep 24 15:51:28 2010 +0100
@@ -116,6 +116,7 @@
         greater_than_start_date: "повинна бути пізніша за дату початку"
         not_same_project: "не відносяться до одного проекту"
         circular_dependency: "Такий зв'язок приведе до циклічної залежності"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
 
   actionview_instancetag_blank_option: Оберіть
   
@@ -908,3 +909,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/vi.yml	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/vi.yml	Fri Sep 24 15:51:28 2010 +0100
@@ -139,6 +139,7 @@
         greater_than_start_date: "phải đi sau ngày bắt đầu"
         not_same_project: "không thuộc cùng dự án"
         circular_dependency: "quan hệ có thể gây ra lặp vô tận"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
 
   direction: ltr
   date:
@@ -967,3 +968,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/locales/zh-TW.yml	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/zh-TW.yml	Fri Sep 24 15:51:28 2010 +0100
@@ -177,6 +177,7 @@
         greater_than_start_date: "必須在起始日期之後"
         not_same_project: "不屬於同一個專案"
         circular_dependency: "這個關聯會導致環狀相依"
+        cant_link_an_issue_with_a_descendant: "項目無法被連結至自己的子項目"
 
       # You can define own errors for models or model attributes.
       # The values :model, :attribute and :value are always available for interpolation.
@@ -365,6 +366,7 @@
   field_redirect_existing_links: 重新導向現有連結
   field_estimated_hours: 預估工時
   field_column_names: 欄位
+  field_time_entries: 耗用工時
   field_time_zone: 時區
   field_searchable: 可用做搜尋條件
   field_default_value: 預設值
@@ -377,8 +379,10 @@
   field_group_by: 結果分組方式
   field_sharing: 共用
   field_parent_issue: 父工作項目
-  field_time_entries: 耗用工時
-    
+  field_member_of_group: 所屬群組
+  field_assigned_to_role: 所屬角色
+  field_text: 內容文字
+  
   setting_app_title: 標題
   setting_app_subtitle: 副標題
   setting_welcome_text: 歡迎詞
@@ -869,6 +873,7 @@
   button_create_and_continue: 繼續建立
   button_test: 測試
   button_edit: 編輯
+  button_edit_associated_wikipage: "編輯相關 Wiki 頁面: {{page_title}}"
   button_add: 新增
   button_change: 修改
   button_apply: 套用
@@ -920,6 +925,7 @@
   text_subprojects_destroy_warning: "下列子專案: {{value}} 將一併被刪除。"
   text_workflow_edit: 選擇角色與追蹤標籤以設定其工作流程
   text_are_you_sure: 確定執行?
+  text_are_you_sure_with_children: "確定刪除此工作項目及其子項目?"
   text_journal_changed: "{{label}} 從 {{old}} 變更為 {{new}}"
   text_journal_set_to: "{{label}} 設定為 {{value}}"
   text_journal_deleted: "{{label}} 已刪除 ({{old}})"
@@ -997,3 +1003,4 @@
   enumeration_doc_categories: 文件分類
   enumeration_activities: 活動 (時間追蹤)
   enumeration_system_activity: 系統活動
+
--- a/config/locales/zh.yml	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/locales/zh.yml	Fri Sep 24 15:51:28 2010 +0100
@@ -137,6 +137,7 @@
         greater_than_start_date: "必须在起始日期之后"
         not_same_project: "不属于同一个项目"
         circular_dependency: "此关联将导致循环依赖"
+        cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
 
   actionview_instancetag_blank_option: 请选择
   
@@ -930,3 +931,8 @@
   field_time_entries: Log time
   project_module_gantt: Gantt
   project_module_calendar: Calendar
+  field_member_of_group: Member of Group
+  field_assigned_to_role: Member of Role
+  button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  text_are_you_sure_with_children: Delete issue and all child issues?
+  field_text: Text field
--- a/config/routes.rb	Fri Sep 24 15:33:13 2010 +0100
+++ b/config/routes.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -104,58 +104,39 @@
   end
 
   map.resources :issue_moves, :only => [:new, :create], :path_prefix => '/issues', :as => 'move'
+
+  # Misc issue routes. TODO: move into resources
   map.auto_complete_issues '/issues/auto_complete', :controller => 'auto_completes', :action => 'issues'
-  # TODO: would look nicer as /issues/:id/preview
-  map.preview_issue '/issues/preview/:id', :controller => 'previews', :action => 'issue'
+  map.preview_issue '/issues/preview/:id', :controller => 'previews', :action => 'issue' # TODO: would look nicer as /issues/:id/preview
   map.issues_context_menu '/issues/context_menu', :controller => 'context_menus', :action => 'issues'
   map.issue_changes '/issues/changes', :controller => 'journals', :action => 'index'
+  map.bulk_edit_issue 'issues/bulk_edit', :controller => 'issues', :action => 'bulk_edit', :conditions => { :method => :get }
+  map.bulk_update_issue 'issues/bulk_edit', :controller => 'issues', :action => 'bulk_update', :conditions => { :method => :post }
+  map.quoted_issue '/issues/:id/quoted', :controller => 'journals', :action => 'new', :id => /\d+/, :conditions => { :method => :post }
+  map.connect '/issues/:id/destroy', :controller => 'issues', :action => 'destroy', :conditions => { :method => :post } # legacy
+
+  map.resource :gantt, :path_prefix => '/issues', :controller => 'gantts', :only => [:show, :update]
+  map.resource :gantt, :path_prefix => '/projects/:project_id/issues', :controller => 'gantts', :only => [:show, :update]
+  map.resource :calendar, :path_prefix => '/issues', :controller => 'calendars', :only => [:show, :update]
+  map.resource :calendar, :path_prefix => '/projects/:project_id/issues', :controller => 'calendars', :only => [:show, :update]
+
+  map.with_options :controller => 'reports', :conditions => {:method => :get} do |reports|
+    reports.connect 'projects/:id/issues/report', :action => 'issue_report'
+    reports.connect 'projects/:id/issues/report/:detail', :action => 'issue_report_details'
+  end
+
+  # Following two routes conflict with the resources because #index allows POST
+  map.connect '/issues', :controller => 'issues', :action => 'index', :conditions => { :method => :post }
+  map.connect '/issues/create', :controller => 'issues', :action => 'index', :conditions => { :method => :post }
   
-  map.with_options :controller => 'issues' do |issues_routes|
-    issues_routes.with_options :conditions => {:method => :get} do |issues_views|
-      issues_views.connect 'issues', :action => 'index'
-      issues_views.connect 'issues.:format', :action => 'index'
-      issues_views.connect 'projects/:project_id/issues', :action => 'index'
-      issues_views.connect 'projects/:project_id/issues.:format', :action => 'index'
-      issues_views.connect 'projects/:project_id/issues/new', :action => 'new'
-      issues_views.connect 'projects/:project_id/issues/gantt', :controller => 'gantts', :action => 'show'
-      issues_views.connect 'projects/:project_id/issues/calendar', :controller => 'calendars', :action => 'show'
-      issues_views.connect 'projects/:project_id/issues/:copy_from/copy', :action => 'new'
-      issues_views.connect 'issues/:id', :action => 'show', :id => /\d+/
-      issues_views.connect 'issues/:id.:format', :action => 'show', :id => /\d+/
-      issues_views.connect 'issues/:id/edit', :action => 'edit', :id => /\d+/
-    end
-    issues_routes.with_options :conditions => {:method => :post} do |issues_actions|
-      issues_actions.connect 'issues', :action => 'index'
-      issues_actions.connect 'projects/:project_id/issues', :action => 'create'
-      issues_actions.connect 'projects/:project_id/issues/gantt', :controller => 'gantts', :action => 'show'
-      issues_actions.connect 'projects/:project_id/issues/calendar', :controller => 'calendars', :action => 'show'
-      issues_actions.connect 'issues/:id/quoted', :controller => 'journals', :action => 'new', :id => /\d+/
-      issues_actions.connect 'issues/:id/:action', :action => /edit|destroy/, :id => /\d+/
-      issues_actions.connect 'issues.:format', :action => 'create', :format => /xml/
-      issues_actions.connect 'issues/bulk_edit', :action => 'bulk_update'
-    end
-    issues_routes.with_options :conditions => {:method => :put} do |issues_actions|
-      issues_actions.connect 'issues/:id/edit', :action => 'update', :id => /\d+/
-      issues_actions.connect 'issues/:id.:format', :action => 'update', :id => /\d+/, :format => /xml/
-    end
-    issues_routes.with_options :conditions => {:method => :delete} do |issues_actions|
-      issues_actions.connect 'issues/:id.:format', :action => 'destroy', :id => /\d+/, :format => /xml/
-    end
-    issues_routes.connect 'issues/gantt', :controller => 'gantts', :action => 'show'
-    issues_routes.connect 'issues/calendar', :controller => 'calendars', :action => 'show'
-    issues_routes.connect 'issues/:action'
-  end
+  map.resources :issues, :member => { :edit => :post }, :collection => {}
+  map.resources :issues, :path_prefix => '/projects/:project_id', :collection => { :create => :post }
 
   map.with_options  :controller => 'issue_relations', :conditions => {:method => :post} do |relations|
     relations.connect 'issues/:issue_id/relations/:id', :action => 'new'
     relations.connect 'issues/:issue_id/relations/:id/destroy', :action => 'destroy'
   end
   
-  map.with_options :controller => 'reports', :conditions => {:method => :get} do |reports|
-    reports.connect 'projects/:id/issues/report', :action => 'issue_report'
-    reports.connect 'projects/:id/issues/report/:detail', :action => 'issue_report_details'
-  end
-  
   map.with_options :controller => 'news' do |news_routes|
     news_routes.with_options :conditions => {:method => :get} do |news_views|
       news_views.connect 'news', :action => 'index'
@@ -167,10 +148,13 @@
       news_views.connect 'news/:id/edit', :action => 'edit'
     end
     news_routes.with_options do |news_actions|
-      news_actions.connect 'projects/:project_id/news', :action => 'new'
-      news_actions.connect 'news/:id/edit', :action => 'edit'
+      news_actions.connect 'projects/:project_id/news', :action => 'create', :conditions => {:method => :post}
       news_actions.connect 'news/:id/destroy', :action => 'destroy'
     end
+    news_routes.connect 'news/:id/edit', :action => 'update', :conditions => {:method => :put}
+
+    news_routes.connect 'news/:id/comments', :controller => 'comments', :action => 'create', :conditions => {:method => :post}
+    news_routes.connect 'news/:id/comments/:comment_id', :controller => 'comments', :action => 'destroy', :conditions => {:method => :delete}
   end
   
   map.connect 'projects/:id/members/new', :controller => 'members', :action => 'new'
@@ -191,53 +175,41 @@
       user_actions.connect 'users/:id/memberships/:membership_id/destroy', :action => 'destroy_membership'
     end
   end
-  
-  map.with_options :controller => 'projects' do |projects|
-    projects.with_options :conditions => {:method => :get} do |project_views|
-      project_views.connect 'projects', :action => 'index'
-      project_views.connect 'projects.:format', :action => 'index'
-      project_views.connect 'projects/new', :action => 'add'
-      project_views.connect 'projects/:id', :action => 'show'
-      project_views.connect 'projects/:id.:format', :action => 'show'
-      project_views.connect 'projects/:id/:action', :action => /roadmap|destroy|settings/
-      project_views.connect 'projects/:id/files', :action => 'list_files'
-      project_views.connect 'projects/:id/files/new', :action => 'add_file'
-      project_views.connect 'projects/:id/settings/:tab', :action => 'settings'
-    end
 
-    projects.with_options :action => 'activity', :conditions => {:method => :get} do |activity|
-      activity.connect 'projects/:id/activity'
-      activity.connect 'projects/:id/activity.:format'
-      activity.connect 'activity', :id => nil
-      activity.connect 'activity.:format', :id => nil
-    end
-    
-    projects.with_options :conditions => {:method => :post} do |project_actions|
-      project_actions.connect 'projects/new', :action => 'add'
-      project_actions.connect 'projects', :action => 'add'
-      project_actions.connect 'projects.:format', :action => 'add', :format => /xml/
-      project_actions.connect 'projects/:id/:action', :action => /edit|destroy|archive|unarchive/
-      project_actions.connect 'projects/:id/files/new', :action => 'add_file'
-      project_actions.connect 'projects/:id/activities/save', :action => 'save_activities'
-    end
+  # For nice "roadmap" in the url for the index action
+  map.connect 'projects/:project_id/roadmap', :controller => 'versions', :action => 'index'
 
-    projects.with_options :conditions => {:method => :put} do |project_actions|
-      project_actions.conditions 'projects/:id.:format', :action => 'edit', :format => /xml/
-    end
+  map.resources :projects, :member => {
+    :copy => [:get, :post],
+    :settings => :get,
+    :modules => :post,
+    :archive => :post,
+    :unarchive => :post
+  } do |project|
+    project.resource :project_enumerations, :as => 'enumerations', :only => [:update, :destroy]
+    project.resources :files, :only => [:index, :new, :create]
+    project.resources :versions, :collection => {:close_completed => :put}, :member => {:status_by => :post}
+  end
 
-    projects.with_options :conditions => {:method => :delete} do |project_actions|
-      project_actions.conditions 'projects/:id.:format', :action => 'destroy', :format => /xml/
-      project_actions.conditions 'projects/:id/reset_activities', :action => 'reset_activities'
+  # Destroy uses a get request to prompt the user before the actual DELETE request
+  map.project_destroy_confirm 'projects/:id/destroy', :controller => 'projects', :action => 'destroy', :conditions => {:method => :get}
+
+  # TODO: port to be part of the resources route(s)
+  map.with_options :controller => 'projects' do |project_mapper|
+    project_mapper.with_options :conditions => {:method => :get} do |project_views|
+      project_views.connect 'projects/:id/settings/:tab', :controller => 'projects', :action => 'settings'
+      project_views.connect 'projects/:project_id/issues/:copy_from/copy', :controller => 'issues', :action => 'new'
     end
   end
   
-  map.with_options :controller => 'versions' do |versions|
-    versions.connect 'projects/:project_id/versions/new', :action => 'new'
-    versions.with_options :conditions => {:method => :post} do |version_actions|
-      version_actions.connect 'projects/:project_id/versions/close_completed', :action => 'close_completed'
-    end
+  map.with_options :controller => 'activities', :action => 'index', :conditions => {:method => :get} do |activity|
+    activity.connect 'projects/:id/activity'
+    activity.connect 'projects/:id/activity.:format'
+    activity.connect 'activity', :id => nil
+    activity.connect 'activity.:format', :id => nil
   end
-  
+
+    
   map.with_options :controller => 'issue_categories' do |categories|
     categories.connect 'projects/:project_id/issue_categories/new', :action => 'new'
   end
--- a/db/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/db/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/db
 http://redmine.rubyforge.org/svn
 
--- a/db/migrate/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/db/migrate/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/db/migrate
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.228093Z
+2010-09-23T14:37:44.895727Z
 e1234fbaef167ddc0013ffe1d3bc67b9
 2007-11-04T11:40:17.595469Z
 881
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:46.228093Z
+2010-09-23T14:37:44.891758Z
 0b2c38434ec4b25c41f50963a46a3bc6
 2007-06-12T20:12:05.590809Z
 559
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:46.228093Z
+2010-09-23T14:37:44.927757Z
 dba48c03009eb5bcbd2f686a37c42147
 2009-10-17T22:23:29.892475Z
 2928
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:46.228093Z
+2010-09-23T14:37:44.911755Z
 b17611805f3b447ec0f0b703ea8b6d10
 2008-11-10T18:59:06.897210Z
 2006
@@ -168,7 +168,7 @@
 
 
 
-2010-07-23T14:49:46.228093Z
+2010-09-23T14:37:44.883725Z
 23ebbc94eb59590d0f0b200b4b38289b
 2007-08-29T16:52:35.680643Z
 674
@@ -202,7 +202,7 @@
 
 
 
-2010-07-23T14:49:46.228093Z
+2010-09-23T14:37:44.895727Z
 ffabca1301a0ade41918ec9d6618fda0
 2008-07-04T17:58:14.743502Z
 1623
@@ -236,7 +236,7 @@
 
 
 
-2010-07-23T14:49:46.228093Z
+2010-09-23T14:37:44.879727Z
 e6ff0ff9c004d9688e79b550991ec109
 2007-08-29T16:52:35.680643Z
 674
@@ -270,7 +270,7 @@
 
 
 
-2010-07-23T14:49:46.228093Z
+2010-09-23T14:37:44.883725Z
 39c994e2469a6dfb97fa50cf595439e8
 2007-04-25T15:06:20.062636Z
 479
@@ -304,7 +304,7 @@
 
 
 
-2010-07-23T14:49:46.228093Z
+2010-09-23T14:37:44.883725Z
 828df977f9e16943bc74595c65774c62
 2007-03-10T15:09:49.115269Z
 323
@@ -338,7 +338,7 @@
 
 
 
-2010-07-23T14:49:46.228093Z
+2010-09-23T14:37:44.919754Z
 eea8e3f0a1fe28e8c686af190259a3d6
 2009-09-12T08:36:46.650954Z
 2869
@@ -372,7 +372,7 @@
 
 
 
-2010-07-23T14:49:46.228093Z
+2010-09-23T14:37:44.895727Z
 06c8b504bcdd08c2f5dcf14a0b927420
 2007-11-20T15:40:16.305800Z
 919
@@ -406,7 +406,7 @@
 
 
 
-2010-07-23T14:49:46.228093Z
+2010-09-23T14:37:44.927757Z
 283fb200008f4dae98e0b3d46f0b97aa
 2009-10-17T22:23:29.892475Z
 2928
@@ -440,7 +440,7 @@
 
 
 
-2010-07-23T14:49:46.228093Z
+2010-09-23T14:37:44.879727Z
 da329a16de705c673418c18119f788d8
 2007-08-29T16:52:35.680643Z
 674
@@ -474,7 +474,7 @@
 
 
 
-2010-07-23T14:49:46.228093Z
+2010-09-23T14:37:44.879727Z
 5bb1427a275abe1f2ec4b6b03a087cd8
 2006-12-03T19:55:45.161980Z
 62
@@ -508,7 +508,7 @@
 
 
 
-2010-07-23T14:49:46.232194Z
+2010-09-23T14:37:44.883725Z
 f4c10807bb47b69af35e9402966089f1
 2007-02-04T09:18:40.598564Z
 228
@@ -542,7 +542,7 @@
 
 
 
-2010-07-23T14:49:46.228093Z
+2010-09-23T14:37:44.883725Z
 42937036f9c414f7d9b028f629b1ce20
 2007-08-29T16:52:35.680643Z
 674
@@ -576,7 +576,7 @@
 
 
 
-2010-07-23T14:49:46.232194Z
+2010-09-23T14:37:44.927757Z
 c5d86ec3cda95998a3fb590c6f492b6b
 2009-12-20T19:13:22.787652Z
 3206
@@ -610,7 +610,7 @@
 
 
 
-2010-07-23T14:49:46.232194Z
+2010-09-23T14:37:44.923753Z
 b2f88560d10a9676bdb65e18f9a13d65
 2009-10-17T22:23:29.892475Z
 2928
@@ -644,7 +644,7 @@
 
 
 
-2010-07-23T14:49:46.232194Z
+2010-09-23T14:37:44.883725Z
 a269e98b11a4d0d865c82328d7af5663
 2007-03-25T12:12:15.060977Z
 377
@@ -678,7 +678,7 @@
 
 
 
-2010-07-23T14:49:46.232194Z
+2010-09-23T14:37:44.911755Z
 69a42a62536b1f435ce1080ceccb4c75
 2009-01-17T11:18:04.652409Z
 2276
@@ -712,7 +712,7 @@
 
 
 
-2010-07-23T14:49:46.232194Z
+2010-09-23T14:37:44.923753Z
 84bec26b6eaebc64c437c5a3b4784a94
 2009-10-17T22:23:29.892475Z
 2928
@@ -746,7 +746,7 @@
 
 
 
-2010-07-23T14:49:46.232194Z
+2010-09-23T14:37:44.899726Z
 53ee6af48c18534db0ffdd4fa5c5df7f
 2008-09-13T16:31:11.005265Z
 1814
@@ -780,7 +780,7 @@
 
 
 
-2010-07-23T14:49:46.232194Z
+2010-09-23T14:37:44.915753Z
 d343c3ba8f04d1cc71f20c9860d5907b
 2009-05-30T23:30:36.923541Z
 2777
@@ -814,7 +814,7 @@
 
 
 
-2010-07-23T14:49:46.232194Z
+2010-09-23T14:37:44.899726Z
 611baff063a1d909ba581aa98018cae7
 2008-03-12T20:28:49.748698Z
 1236
@@ -848,7 +848,7 @@
 
 
 
-2010-07-23T14:49:46.232194Z
+2010-09-23T14:37:44.883725Z
 f1b96e04888c0a48bf29dd0556ba8027
 2007-08-29T16:52:35.680643Z
 674
@@ -882,7 +882,7 @@
 
 
 
-2010-07-23T14:49:46.232194Z
+2010-09-23T14:37:44.927757Z
 72e8d36a80b63657037f175b368f2e2c
 2009-10-17T22:23:29.892475Z
 2928
@@ -916,7 +916,7 @@
 
 
 
-2010-07-23T14:49:46.232194Z
+2010-09-23T14:37:44.895727Z
 891f793e4f2ab50f57b8488c764ceff1
 2008-07-04T17:58:14.743502Z
 1623
@@ -950,7 +950,7 @@
 
 
 
-2010-07-23T14:49:46.232194Z
+2010-09-23T14:37:44.883725Z
 82595f307b6fe5053151a681b737f063
 2007-04-25T15:06:20.062636Z
 479
@@ -984,7 +984,7 @@
 
 
 
-2010-07-23T14:49:46.232194Z
+2010-09-23T14:37:44.919754Z
 c460bb38faa03667fc34a3b131ec40df
 2009-06-14T09:19:20.900273Z
 2787
@@ -1018,7 +1018,7 @@
 
 
 
-2010-07-23T14:49:46.232194Z
+2010-09-23T14:37:44.915753Z
 b175e6c85c5faf4b5d2f092f65338b10
 2009-02-11T19:06:55.627694Z
 2440
@@ -1052,7 +1052,7 @@
 
 
 
-2010-07-23T14:49:46.232194Z
+2010-09-23T14:37:44.927757Z
 7aa35de55587b897fea800e8044039a8
 2009-12-20T19:13:22.787652Z
 3206
@@ -1086,7 +1086,7 @@
 
 
 
-2010-08-25T15:27:56.734487Z
+2010-09-23T14:37:44.931783Z
 e4eff12465b879f063cac04a709438b9
 2010-08-22T18:42:00.112555Z
 4013
@@ -1120,7 +1120,7 @@
 
 
 
-2010-07-23T14:49:46.232194Z
+2010-09-23T14:37:44.887754Z
 0492f13cf6f16f90603fdd82c388bace
 2007-05-08T09:26:57.307537Z
 518
@@ -1154,7 +1154,7 @@
 
 
 
-2010-07-23T14:49:46.232194Z
+2010-09-23T14:37:44.931783Z
 9a69054334fcbc6b72eb8b5ae9957129
 2009-12-27T11:57:13.519273Z
 3254
@@ -1188,7 +1188,7 @@
 
 
 
-2010-07-23T14:49:46.232194Z
+2010-09-23T14:37:44.899726Z
 b17259dfa6f46844e0f86b110577fbc6
 2008-03-09T15:36:47.697904Z
 1220
@@ -1222,7 +1222,7 @@
 
 
 
-2010-07-23T14:49:46.236128Z
+2010-09-23T14:37:44.919754Z
 e00a737604d0be6b94c92236e4f378eb
 2009-05-10T10:54:31.775505Z
 2726
@@ -1256,7 +1256,7 @@
 
 
 
-2010-07-23T14:49:46.236128Z
+2010-09-23T14:37:44.883725Z
 2fb7c5a95c8ed07756c3fbb917c98230
 2007-10-22T21:07:13.432482Z
 864
@@ -1290,7 +1290,7 @@
 
 
 
-2010-07-23T14:49:46.236128Z
+2010-09-23T14:37:44.879727Z
 1702102b56ee973066c86d659252a366
 2007-08-29T16:52:35.680643Z
 674
@@ -1324,7 +1324,7 @@
 
 
 
-2010-07-23T14:49:46.236128Z
+2010-09-23T14:37:44.887754Z
 0c630c7ad4fbe9ccbb897363a422efa6
 2007-04-17T10:53:20.697217Z
 447
@@ -1358,7 +1358,7 @@
 
 
 
-2010-07-23T14:49:46.236128Z
+2010-09-23T14:37:44.931783Z
 6e9fdd6731ba51e864563938c05ed9da
 2010-02-21T14:40:00.085842Z
 3471
@@ -1392,7 +1392,7 @@
 
 
 
-2010-07-23T14:49:46.236128Z
+2010-09-23T14:37:44.887754Z
 8e58d8ec43e40266d62fd64b4b6a9a09
 2007-05-13T17:09:56.765659Z
 529
@@ -1426,7 +1426,7 @@
 
 
 
-2010-07-23T14:49:46.236128Z
+2010-09-23T14:37:44.931783Z
 6350cf7f18c7d61d54bf2bfa55e108d3
 2009-12-25T17:13:58.090736Z
 3240
@@ -1460,7 +1460,7 @@
 
 
 
-2010-07-23T14:49:46.236128Z
+2010-09-23T14:37:44.883725Z
 3216f04b6b84aaa6d29bc0f3e5d8c462
 2007-08-29T16:52:35.680643Z
 674
@@ -1494,7 +1494,7 @@
 
 
 
-2010-07-23T14:49:46.236128Z
+2010-09-23T14:37:44.887754Z
 fb852fdf1ab4266ab05a36ff105b7ceb
 2007-10-22T21:07:13.432482Z
 864
@@ -1528,7 +1528,7 @@
 
 
 
-2010-07-23T14:49:46.236128Z
+2010-09-23T14:37:44.895727Z
 9f0c1dd813015fc37cd47062fe15ef91
 2008-02-12T21:11:16.312726Z
 1140
@@ -1562,7 +1562,7 @@
 
 
 
-2010-07-23T14:49:46.236128Z
+2010-09-23T14:37:44.923753Z
 e08dfbd6aca488a1513bfe7c59e2da90
 2009-10-17T22:23:29.892475Z
 2928
@@ -1596,7 +1596,7 @@
 
 
 
-2010-07-23T14:49:46.236128Z
+2010-09-23T14:37:44.927757Z
 767d76b65ff41dd9860747d14bb24ee1
 2009-12-20T19:13:22.787652Z
 3206
@@ -1630,7 +1630,7 @@
 
 
 
-2010-07-23T14:49:46.236128Z
+2010-09-23T14:37:44.919754Z
 93159e216a0265b8f239566bfb91fd8e
 2009-10-17T22:23:29.892475Z
 2928
@@ -1664,7 +1664,7 @@
 
 
 
-2010-07-28T11:07:47.324170Z
+2010-09-23T14:37:44.931783Z
 5fa98acba6010a7450722133bfb66962
 2010-07-24T00:19:32.307471Z
 3860
@@ -1698,7 +1698,7 @@
 
 
 
-2010-07-23T14:49:46.236128Z
+2010-09-23T14:37:44.923753Z
 eeff80bd1cee52d49f1eb78fab035adf
 2009-10-17T22:23:29.892475Z
 2928
@@ -1732,7 +1732,7 @@
 
 
 
-2010-07-23T14:49:46.236128Z
+2010-09-23T14:37:44.927757Z
 09b6720db5ea81c8e22aff9dd89fc0bd
 2009-10-17T22:23:29.892475Z
 2928
@@ -1766,7 +1766,7 @@
 
 
 
-2010-07-23T14:49:46.236128Z
+2010-09-23T14:37:44.895727Z
 b392b3c84d6d7b8bba99011778f5b54e
 2007-11-20T20:29:03.757553Z
 920
@@ -1800,7 +1800,7 @@
 
 
 
-2010-07-23T14:49:46.236128Z
+2010-09-23T14:37:44.923753Z
 2ae2d679057fe2db7b7a8bdabc2cbf6d
 2009-10-17T22:23:29.892475Z
 2928
@@ -1834,7 +1834,7 @@
 
 
 
-2010-07-23T14:49:46.236128Z
+2010-09-23T14:37:44.915753Z
 01a97aa31f8b9917a84790f23e0e90d1
 2009-10-21T22:34:34.183882Z
 2947
@@ -1868,7 +1868,7 @@
 
 
 
-2010-07-23T14:49:46.236128Z
+2010-09-23T14:37:44.915753Z
 af4786659f25d96a43468cdc4bcfae44
 2009-02-11T19:06:50.454280Z
 2439
@@ -1902,7 +1902,7 @@
 
 
 
-2010-07-23T14:49:46.236128Z
+2010-09-23T14:37:44.895727Z
 82e35d32f60c71db17de62592693c737
 2007-10-20T12:47:05.860183Z
 855
@@ -1936,7 +1936,7 @@
 
 
 
-2010-07-23T14:49:46.236128Z
+2010-09-23T14:37:44.887754Z
 3ac5fb29973ffa0ca94ac90387c73b78
 2007-08-29T16:52:35.680643Z
 674
@@ -1970,7 +1970,7 @@
 
 
 
-2010-07-23T14:49:46.236128Z
+2010-09-23T14:37:44.895727Z
 db7f5c6597e13933c96cb58cbbd1f0bd
 2007-10-05T17:44:15.414646Z
 803
@@ -2004,7 +2004,7 @@
 
 
 
-2010-07-23T14:49:46.240118Z
+2010-09-23T14:37:44.887754Z
 e61809aaf1ac8a2a290c4574ed598ff0
 2007-04-02T06:29:09.277122Z
 397
@@ -2038,7 +2038,7 @@
 
 
 
-2010-07-23T14:49:46.240118Z
+2010-09-23T14:37:44.931783Z
 243f136f05a508fff7ca52423f65c959
 2010-03-13T17:17:10.453825Z
 3578
@@ -2072,7 +2072,7 @@
 
 
 
-2010-07-23T14:49:46.240118Z
+2010-09-23T14:37:44.895727Z
 e5f0fe89be9a00fe1f8b246bde88fca1
 2007-10-01T08:44:17.920088Z
 782
@@ -2106,7 +2106,7 @@
 
 
 
-2010-07-23T14:49:46.240118Z
+2010-09-23T14:37:44.927757Z
 bb79c723b9d9fdabe49ed18ebb8a6caf
 2009-12-11T18:48:34.197724Z
 3151
@@ -2140,7 +2140,7 @@
 
 
 
-2010-07-23T14:49:46.240118Z
+2010-09-23T14:37:44.883725Z
 b8b7c422c3d666340afaec3a52c5d6a4
 2007-10-22T21:07:13.432482Z
 864
@@ -2174,7 +2174,7 @@
 
 
 
-2010-07-23T14:49:46.240118Z
+2010-09-23T14:37:44.875728Z
 b740a77ff87e6390f7ad86eaf0710040
 2008-08-25T16:35:20.899166Z
 1764
@@ -2208,7 +2208,7 @@
 
 
 
-2010-07-23T14:49:46.240118Z
+2010-09-23T14:37:44.919754Z
 55350d451c622488f9358f7bbe12d4de
 2009-10-10T10:16:00.250819Z
 2905
@@ -2242,7 +2242,7 @@
 
 
 
-2010-07-23T14:49:46.240118Z
+2010-09-23T14:37:44.879727Z
 e770aa6387bb4737804d5024e743cd25
 2007-08-29T16:52:35.680643Z
 674
@@ -2276,7 +2276,7 @@
 
 
 
-2010-07-23T14:49:46.240118Z
+2010-09-23T14:37:44.927757Z
 4cedb1faff3054d9be6250b589882b50
 2009-10-17T22:23:29.892475Z
 2928
@@ -2310,7 +2310,7 @@
 
 
 
-2010-07-23T14:49:46.240118Z
+2010-09-23T14:37:44.887754Z
 4901b560613f6a0ae3e5df5bcf2dd11c
 2007-04-25T16:48:01.299251Z
 482
@@ -2344,7 +2344,7 @@
 
 
 
-2010-07-23T14:49:46.240118Z
+2010-09-23T14:37:44.923753Z
 0e1e45e51997617f8672e6d0d5ed8e51
 2009-10-17T22:23:29.892475Z
 2928
@@ -2378,7 +2378,7 @@
 
 
 
-2010-07-23T14:49:46.240118Z
+2010-09-23T14:37:44.899726Z
 f60a0c1f633a6ff65fb2734173b57fe4
 2008-02-29T19:46:58.834023Z
 1180
@@ -2412,7 +2412,7 @@
 
 
 
-2010-07-23T14:49:46.240118Z
+2010-09-23T14:37:44.891758Z
 31acec69fd7efa0c26dec61f860b0c85
 2007-09-09T17:05:38.846724Z
 720
@@ -2446,7 +2446,7 @@
 
 
 
-2010-07-23T14:49:46.240118Z
+2010-09-23T14:37:44.927757Z
 871a600c06a6965f52c63177a82fbe15
 2009-10-17T22:23:29.892475Z
 2928
@@ -2480,7 +2480,7 @@
 
 
 
-2010-07-23T14:49:46.240118Z
+2010-09-23T14:37:44.911755Z
 320b459ced6ed78d09a3743ad60b3200
 2009-01-18T10:54:08.545108Z
 2279
@@ -2514,7 +2514,7 @@
 
 
 
-2010-07-23T14:49:46.240118Z
+2010-09-23T14:37:44.899726Z
 cf04e90903f0d068e4503cb465026ef7
 2008-05-25T13:37:29.456358Z
 1457
@@ -2548,7 +2548,7 @@
 
 
 
-2010-07-23T14:49:46.240118Z
+2010-09-23T14:37:44.899726Z
 5be8fe0eee7c90901f9ba49030412f40
 2008-05-04T15:05:38.117137Z
 1415
@@ -2582,7 +2582,7 @@
 
 
 
-2010-07-23T14:49:46.240118Z
+2010-09-23T14:37:44.887754Z
 07bf6636d0acf3ec84b38648bbe2c07a
 2007-04-21T12:09:07.794422Z
 454
@@ -2616,7 +2616,7 @@
 
 
 
-2010-07-23T14:49:46.240118Z
+2010-09-23T14:37:44.895727Z
 be494b64b18017ebe3ccdff9a34abdbd
 2007-11-24T12:25:07.449637Z
 926
@@ -2650,7 +2650,7 @@
 
 
 
-2010-07-23T14:49:46.240118Z
+2010-09-23T14:37:44.891758Z
 0abbef63f1f391688df012906a94877b
 2008-03-09T18:25:37.323226Z
 1222
@@ -2684,7 +2684,7 @@
 
 
 
-2010-07-23T14:49:46.240118Z
+2010-09-23T14:37:44.895727Z
 a574e8a4f8f80a464ca2b8bcbd43287f
 2007-09-15T14:54:15.583528Z
 731
@@ -2718,7 +2718,7 @@
 
 
 
-2010-07-23T14:49:46.244155Z
+2010-09-23T14:37:44.883725Z
 cd7530e8030bf9e675ca5922c2494d83
 2007-03-10T15:09:49.115269Z
 323
@@ -2752,7 +2752,7 @@
 
 
 
-2010-07-23T14:49:46.244155Z
+2010-09-23T14:37:44.931783Z
 d1a11dec6b93af060f84f9b2a1e36421
 2010-03-13T14:56:49.379682Z
 3573
@@ -2786,7 +2786,7 @@
 
 
 
-2010-07-23T14:49:46.244155Z
+2010-09-23T14:37:44.891758Z
 f1661157bd19c5fd4f7a4244745571bf
 2007-08-29T16:52:35.680643Z
 674
@@ -2820,7 +2820,7 @@
 
 
 
-2010-07-23T14:49:46.244155Z
+2010-09-23T14:37:44.883725Z
 8381c8e67d31387ec86e821025f5ae8b
 2007-03-09T18:03:31.183366Z
 319
@@ -2854,7 +2854,7 @@
 
 
 
-2010-07-23T14:49:46.244155Z
+2010-09-23T14:37:44.883725Z
 f8359b001e33e9508d158589c81f7bee
 2007-02-03T12:57:33.179243Z
 223
@@ -2888,7 +2888,7 @@
 
 
 
-2010-07-23T14:49:46.244155Z
+2010-09-23T14:37:44.915753Z
 63b0f6e295adf5f1d1eee803e4cc6287
 2009-01-24T11:48:38.049684Z
 2305
@@ -2922,7 +2922,7 @@
 
 
 
-2010-07-23T14:49:46.244155Z
+2010-09-23T14:37:44.915753Z
 668305a363cf6997eb9f2259d00cc26d
 2009-03-19T00:01:24.358528Z
 2599
@@ -2956,7 +2956,7 @@
 
 
 
-2010-07-23T14:49:46.244155Z
+2010-09-23T14:37:44.895727Z
 c8a6c8715446f22f6a3f4e2040dd873d
 2007-11-19T22:28:43.818228Z
 917
@@ -2990,7 +2990,7 @@
 
 
 
-2010-07-23T14:49:46.244155Z
+2010-09-23T14:37:44.911755Z
 7f2d97409681d462705d00de37e78476
 2008-10-18T10:07:49.851665Z
 1938
@@ -3024,7 +3024,7 @@
 
 
 
-2010-07-23T14:49:46.244155Z
+2010-09-23T14:37:44.911755Z
 d885a13afc268875b79c4cbf9524f3e8
 2009-02-08T17:24:39.400993Z
 2415
@@ -3058,7 +3058,7 @@
 
 
 
-2010-07-23T14:49:46.244155Z
+2010-09-23T14:37:44.891758Z
 aa67262417630fc088eb57df8d2dd9d3
 2007-08-16T17:47:41.639068Z
 649
@@ -3092,7 +3092,7 @@
 
 
 
-2010-07-23T14:49:46.244155Z
+2010-09-23T14:37:44.879727Z
 528b6095ca0376cecdd966ddd0b345c4
 2006-12-16T13:37:32.633739Z
 95
@@ -3126,7 +3126,7 @@
 
 
 
-2010-07-23T14:49:46.244155Z
+2010-09-23T14:37:44.887754Z
 2d559ef99ec458f472f5c22c0a8bf5f4
 2007-08-29T16:52:35.680643Z
 674
@@ -3160,7 +3160,7 @@
 
 
 
-2010-07-23T14:49:46.244155Z
+2010-09-23T14:37:44.887754Z
 dc28d8674409819b866f6d878b33d288
 2007-04-24T13:57:27.960164Z
 473
@@ -3194,7 +3194,7 @@
 
 
 
-2010-07-23T14:49:46.244155Z
+2010-09-23T14:37:44.887754Z
 a7d8c7f023a76a8dbb0d0950797c08f8
 2008-02-12T21:11:16.312726Z
 1140
@@ -3228,7 +3228,7 @@
 
 
 
-2010-07-23T14:49:46.244155Z
+2010-09-23T14:37:44.899726Z
 ba997a6179b5ab0f421b149c54725357
 2008-01-15T20:40:59.035860Z
 1069
@@ -3262,7 +3262,7 @@
 
 
 
-2010-07-23T14:49:46.244155Z
+2010-09-23T14:37:44.923753Z
 e256cf4a148fd48c409ea6983d569e7d
 2009-10-17T22:23:29.892475Z
 2928
@@ -3296,7 +3296,7 @@
 
 
 
-2010-07-23T14:49:46.244155Z
+2010-09-23T14:37:44.895727Z
 02bfb0be1b161bd757a75f69bfe79bc7
 2008-03-09T18:25:37.323226Z
 1222
@@ -3330,7 +3330,7 @@
 
 
 
-2010-07-23T14:49:46.244155Z
+2010-09-23T14:37:44.899726Z
 f77d77e81db6f6ac5bb3844255f8ab33
 2008-03-12T20:28:49.748698Z
 1236
@@ -3364,7 +3364,7 @@
 
 
 
-2010-07-23T14:49:46.248151Z
+2010-09-23T14:37:44.915753Z
 5d4b3c5646cc6c136e706ac5d7e0b377
 2009-02-14T19:06:44.812480Z
 2466
@@ -3398,7 +3398,7 @@
 
 
 
-2010-07-23T14:49:46.248151Z
+2010-09-23T14:37:44.919754Z
 90bb42121a57db140491ecb2a0763d00
 2009-10-17T22:23:29.892475Z
 2928
@@ -3432,7 +3432,7 @@
 
 
 
-2010-07-23T14:49:46.248151Z
+2010-09-23T14:37:44.891758Z
 b61285ac64245c1571e536a8c7e05a94
 2007-06-12T20:12:05.590809Z
 559
@@ -3466,7 +3466,7 @@
 
 
 
-2010-07-23T14:49:46.248151Z
+2010-09-23T14:37:44.911755Z
 e00f8e7739afbb2d07a21decd1422a0a
 2008-09-21T20:38:36.877257Z
 1896
@@ -3500,7 +3500,7 @@
 
 
 
-2010-07-23T14:49:46.248151Z
+2010-09-23T14:37:44.891758Z
 708c039fe82ad86e9930122cac4757b1
 2007-08-31T17:45:32.784580Z
 685
@@ -3534,7 +3534,7 @@
 
 
 
-2010-07-23T14:49:46.248151Z
+2010-09-23T14:37:44.923753Z
 4bfd0623186217eee4346313f148ea7a
 2009-10-17T22:23:29.892475Z
 2928
@@ -3568,7 +3568,7 @@
 
 
 
-2010-07-23T14:49:46.248151Z
+2010-09-23T14:37:44.927757Z
 71d997c1a32c4ba3dd4b31a34885fc7a
 2009-12-29T14:53:29.047095Z
 3259
@@ -3602,7 +3602,7 @@
 
 
 
-2010-07-23T14:49:46.248151Z
+2010-09-23T14:37:44.923753Z
 e8d897645c7176e7fd23f1578b882b5f
 2009-10-17T22:23:29.892475Z
 2928
@@ -3636,7 +3636,7 @@
 
 
 
-2010-07-23T14:49:46.248151Z
+2010-09-23T14:37:44.891758Z
 9ddb69b602d6d3ee5da01f8a9e9f78db
 2007-08-29T16:52:35.680643Z
 674
@@ -3670,7 +3670,7 @@
 
 
 
-2010-07-23T14:49:46.248151Z
+2010-09-23T14:37:44.919754Z
 055f00efdb87ff8934c36d5eb99b741f
 2009-09-12T08:36:46.650954Z
 2869
@@ -3704,7 +3704,7 @@
 
 
 
-2010-07-23T14:49:46.248151Z
+2010-09-23T14:37:44.919754Z
 27279bf98b3155975ce59a359d0a29aa
 2009-05-10T11:18:09.335765Z
 2729
@@ -3738,7 +3738,7 @@
 
 
 
-2010-07-23T14:49:46.248151Z
+2010-09-23T14:37:44.887754Z
 3af07746c4eab3a1716744971ac26ffc
 2007-06-12T20:12:05.590809Z
 559
@@ -3772,7 +3772,7 @@
 
 
 
-2010-07-23T14:49:46.248151Z
+2010-09-23T14:37:44.887754Z
 67d6e1898c150c8df560cb2ce8a2f2d7
 2007-08-29T16:52:35.680643Z
 674
@@ -3806,7 +3806,7 @@
 
 
 
-2010-07-23T14:49:46.248151Z
+2010-09-23T14:37:44.891758Z
 596f1acbdbc340c39d19f19f7b4cb6c6
 2007-08-29T16:52:35.680643Z
 674
@@ -3840,7 +3840,7 @@
 
 
 
-2010-07-23T14:49:46.248151Z
+2010-09-23T14:37:44.915753Z
 46effb13ff7d1a62b7b8c93afc7da9c8
 2009-01-24T11:31:15.122844Z
 2304
@@ -3874,7 +3874,7 @@
 
 
 
-2010-07-23T14:49:46.248151Z
+2010-09-23T14:37:44.895727Z
 e7e163729c56cd9807450574d2beeda8
 2007-10-16T19:19:10.481742Z
 845
@@ -3908,7 +3908,7 @@
 
 
 
-2010-07-23T14:49:46.252129Z
+2010-09-23T14:37:44.895727Z
 4ed0fffe6158eeda69a021c362f61157
 2007-11-24T12:25:07.449637Z
 926
@@ -3942,7 +3942,7 @@
 
 
 
-2010-07-23T14:49:46.248151Z
+2010-09-23T14:37:44.919754Z
 22e6afc0519b7befbae2c4a4433c20f5
 2009-10-17T22:23:29.892475Z
 2928
@@ -3976,7 +3976,7 @@
 
 
 
-2010-07-23T14:49:46.248151Z
+2010-09-23T14:37:44.927757Z
 8251942eb30b7c709ac6e3dc1ab5eedb
 2009-10-17T22:23:29.892475Z
 2928
@@ -4010,7 +4010,7 @@
 
 
 
-2010-07-23T14:49:46.248151Z
+2010-09-23T14:37:44.927757Z
 886411cb32a18ec492acc798194210af
 2009-11-14T12:08:47.175978Z
 3039
@@ -4044,7 +4044,7 @@
 
 
 
-2010-07-23T14:49:46.252129Z
+2010-09-23T14:37:44.919754Z
 16792ab92fda3a70516d55a011c01fce
 2009-05-10T10:54:31.775505Z
 2726
@@ -4078,7 +4078,7 @@
 
 
 
-2010-07-23T14:49:46.252129Z
+2010-09-23T14:37:44.923753Z
 4c220f0316e1b04fa8350f0309698f24
 2009-10-17T22:23:29.892475Z
 2928
@@ -4112,7 +4112,7 @@
 
 
 
-2010-07-23T14:49:46.252129Z
+2010-09-23T14:37:44.915753Z
 0c0cee6df5f26eb3378c9b22a1162a5a
 2009-05-30T23:30:36.923541Z
 2777
@@ -4146,7 +4146,7 @@
 
 
 
-2010-07-23T14:49:46.252129Z
+2010-09-23T14:37:44.891758Z
 6a4944f1162c00f2405200fb38773886
 2007-06-14T18:26:27.748707Z
 564
@@ -4180,7 +4180,7 @@
 
 
 
-2010-07-23T14:49:46.252129Z
+2010-09-23T14:37:44.879727Z
 6e59569f25a79a0a75797fa4ebb60936
 2007-08-29T16:52:35.680643Z
 674
@@ -4214,7 +4214,7 @@
 
 
 
-2010-07-23T14:49:46.252129Z
+2010-09-23T14:37:44.883725Z
 00a100c0ca092df63e8542fc6d0bc78c
 2007-03-18T15:48:05.787958Z
 344
@@ -4248,7 +4248,7 @@
 
 
 
-2010-07-23T14:49:46.252129Z
+2010-09-23T14:37:44.927757Z
 ee71a22f869c9dbee6f322ad25f45934
 2009-12-06T10:28:20.099964Z
 3123
@@ -4282,7 +4282,7 @@
 
 
 
-2010-07-23T14:49:46.252129Z
+2010-09-23T14:37:44.927757Z
 21d40b6390e67409bad1d4525c26accb
 2009-10-17T22:23:29.892475Z
 2928
@@ -4316,7 +4316,7 @@
 
 
 
-2010-07-23T14:49:46.252129Z
+2010-09-23T14:37:44.887754Z
 1b013e3bbb624874d78eaf3332ccb3d5
 2007-03-26T16:41:54.592250Z
 383
@@ -4350,7 +4350,7 @@
 
 
 
-2010-07-23T14:49:46.252129Z
+2010-09-23T14:37:44.887754Z
 e658f4ed3c99264bf4c036b87b8cf39f
 2007-05-27T17:42:04.537618Z
 549
@@ -4384,7 +4384,7 @@
 
 
 
-2010-07-23T14:49:46.252129Z
+2010-09-23T14:37:44.915753Z
 4d0267b0a9d4cb2ec782d10247a4c33f
 2009-01-24T11:31:15.122844Z
 2304
@@ -4418,7 +4418,7 @@
 
 
 
-2010-07-23T14:49:46.252129Z
+2010-09-23T14:37:44.923753Z
 eef7b68156646d86ea515aed9aa525ed
 2009-10-17T22:23:29.892475Z
 2928
@@ -4452,7 +4452,7 @@
 
 
 
-2010-07-23T14:49:46.252129Z
+2010-09-23T14:37:44.915753Z
 1567606924d88ae66474e848de86577a
 2009-10-21T22:34:28.905707Z
 2946
@@ -4486,7 +4486,7 @@
 
 
 
-2010-07-23T14:49:46.252129Z
+2010-09-23T14:37:44.895727Z
 ccfd197b34214a0d74d952aa65dcd5a6
 2008-03-09T18:25:37.323226Z
 1222
@@ -4520,7 +4520,7 @@
 
 
 
-2010-07-23T14:49:46.252129Z
+2010-09-23T14:37:44.919754Z
 f5ae107f30300b547d535ddc5b1b999c
 2009-09-12T08:36:46.650954Z
 2869
@@ -4554,7 +4554,7 @@
 
 
 
-2010-07-23T14:49:46.252129Z
+2010-09-23T14:37:44.879727Z
 9cef93921160d49f5d3aa4968ecc4eb1
 2007-10-22T21:07:13.432482Z
 864
@@ -4588,7 +4588,7 @@
 
 
 
-2010-07-23T14:49:46.252129Z
+2010-09-23T14:37:44.919754Z
 6c70abafef3dc834c722ed7135d6a7df
 2009-10-17T22:23:29.892475Z
 2928
@@ -4622,7 +4622,7 @@
 
 
 
-2010-07-23T14:49:46.252129Z
+2010-09-23T14:37:44.919754Z
 cf095d9afbc6429b8d759eb737a0781f
 2009-10-21T22:34:34.183882Z
 2947
@@ -4656,7 +4656,7 @@
 
 
 
-2010-07-23T14:49:46.252129Z
+2010-09-23T14:37:44.919754Z
 9aa91971db6c6f14ddd1ae768085b0a8
 2009-10-17T22:23:29.892475Z
 2928
@@ -4690,7 +4690,7 @@
 
 
 
-2010-07-23T14:49:46.252129Z
+2010-09-23T14:37:44.879727Z
 3e5f2220de578b306ce323997c495db6
 2006-11-12T18:50:30.642587Z
 44
@@ -4724,7 +4724,7 @@
 
 
 
-2010-07-23T14:49:46.256143Z
+2010-09-23T14:37:44.879727Z
 0fb07bc55cf61720437b40e4ae244e05
 2006-12-03T20:51:17.306207Z
 63
@@ -4758,7 +4758,7 @@
 
 
 
-2010-07-23T14:49:46.256143Z
+2010-09-23T14:37:44.891758Z
 417051f45603460a17909e4a5029c779
 2007-08-29T16:52:35.680643Z
 674
@@ -4792,7 +4792,7 @@
 
 
 
-2010-07-23T14:49:46.256143Z
+2010-09-23T14:37:44.883725Z
 a62243f0bc2f1b1b11a47da172d011a5
 2007-04-25T15:06:20.062636Z
 479
@@ -4826,7 +4826,7 @@
 
 
 
-2010-07-23T14:49:46.256143Z
+2010-09-23T14:37:44.895727Z
 96962340557b9a1f70a215d88b07c2c1
 2007-09-14T11:34:08.234701Z
 725
@@ -4860,7 +4860,7 @@
 
 
 
-2010-07-23T14:49:46.256143Z
+2010-09-23T14:37:44.923753Z
 8ad3f0193d5e3b8d52293bbf2828c2d2
 2009-10-17T22:23:29.892475Z
 2928
@@ -4894,7 +4894,7 @@
 
 
 
-2010-07-23T14:49:46.256143Z
+2010-09-23T14:37:44.923753Z
 fd6ccbccc44ceccab8de7c3c48696ecc
 2009-10-17T22:23:29.892475Z
 2928
@@ -4928,7 +4928,7 @@
 
 
 
-2010-07-23T14:49:46.256143Z
+2010-09-23T14:37:44.891758Z
 1798d606a43c6a29029535c28b49beff
 2007-09-04T22:07:44.613701Z
 702
@@ -4962,7 +4962,7 @@
 
 
 
-2010-07-23T14:49:46.256143Z
+2010-09-23T14:37:44.879727Z
 d714e81a7a9c29b60e405233765cbd33
 2007-08-29T16:52:35.680643Z
 674
@@ -4996,7 +4996,7 @@
 
 
 
-2010-07-23T14:49:46.256143Z
+2010-09-23T14:37:44.899726Z
 a27ef00d6ec6b3f4dc63ad004181c10e
 2008-01-20T23:38:55.025648Z
 1091
@@ -5030,7 +5030,7 @@
 
 
 
-2010-07-23T14:49:46.256143Z
+2010-09-23T14:37:44.875728Z
 497529b269185b1833b959c98db3c1d1
 2007-08-29T16:52:35.680643Z
 674
@@ -5064,7 +5064,7 @@
 
 
 
-2010-07-23T14:49:46.256143Z
+2010-09-23T14:37:44.919754Z
 d39d0037e4f06dfb7db18d9082608832
 2009-10-17T22:23:29.892475Z
 2928
@@ -5098,7 +5098,7 @@
 
 
 
-2010-07-23T14:49:46.256143Z
+2010-09-23T14:37:44.923753Z
 79d11b147c1061901a888d89c3e5029b
 2009-10-17T22:23:29.892475Z
 2928
@@ -5132,7 +5132,7 @@
 
 
 
-2010-07-23T14:49:46.256143Z
+2010-09-23T14:37:44.899726Z
 1cbe32e981634898d5b0f80b2c63798b
 2007-12-14T18:54:55.323993Z
 994
@@ -5166,7 +5166,7 @@
 
 
 
-2010-07-23T14:49:46.256143Z
+2010-09-23T14:37:44.887754Z
 717687210dcbeeebff8337561a427e70
 2007-05-05T13:22:27.245135Z
 506
@@ -5200,7 +5200,7 @@
 
 
 
-2010-07-23T14:49:46.256143Z
+2010-09-23T14:37:44.879727Z
 05c7ea8c5dc45498164a324f7db2887a
 2006-12-10T18:35:48.564790Z
 81
@@ -5234,7 +5234,7 @@
 
 
 
-2010-07-23T14:49:46.256143Z
+2010-09-23T14:37:44.915753Z
 ce38342dea044adf8b277f6483f1a742
 2009-03-12T18:06:54.054174Z
 2572
@@ -5268,7 +5268,7 @@
 
 
 
-2010-07-23T14:49:46.256143Z
+2010-09-23T14:37:44.923753Z
 dbeea4ad5a501200711cb4195856597e
 2009-10-17T22:23:29.892475Z
 2928
@@ -5302,7 +5302,7 @@
 
 
 
-2010-07-23T14:49:46.256143Z
+2010-09-23T14:37:44.911755Z
 4c1203f40e8e7b568ddce15af4f3ad9b
 2008-11-10T18:59:06.897210Z
 2006
@@ -5336,7 +5336,7 @@
 
 
 
-2010-07-23T14:49:46.256143Z
+2010-09-23T14:37:44.879727Z
 c62ac2ca3e59bb91e5bb4e206abdaed1
 2007-04-25T15:06:20.062636Z
 479
@@ -5370,7 +5370,7 @@
 
 
 
-2010-07-23T14:49:46.256143Z
+2010-09-23T14:37:44.891758Z
 3bb4b5f081354ea7d943f0b7c6f07284
 2007-08-29T16:52:35.680643Z
 674
@@ -5404,7 +5404,7 @@
 
 
 
-2010-07-23T14:49:46.256143Z
+2010-09-23T14:37:44.915753Z
 3460b737f353524921cfd9ac4199fc44
 2009-03-12T19:49:39.983871Z
 2580
@@ -5438,7 +5438,7 @@
 
 
 
-2010-07-23T14:49:46.260141Z
+2010-09-23T14:37:44.887754Z
 560e67e7b88186a0e21a2f614b6d83c7
 2007-08-29T16:52:35.680643Z
 674
@@ -5472,7 +5472,7 @@
 
 
 
-2010-07-23T14:49:46.260141Z
+2010-09-23T14:37:44.891758Z
 c22348c101d1a03b2d808cb89b3175a5
 2007-06-12T20:12:05.590809Z
 559
@@ -5506,7 +5506,7 @@
 
 
 
-2010-07-23T14:49:46.260141Z
+2010-09-23T14:37:44.927757Z
 87d90f2ce2101811b7aaf0031a74e0c1
 2009-10-25T16:56:46.187627Z
 2981
@@ -5540,7 +5540,7 @@
 
 
 
-2010-07-23T14:49:46.260141Z
+2010-09-23T14:37:44.891758Z
 84fe06ac7cefc2eebba29ac872241d88
 2007-06-29T17:21:37.739022Z
 577
@@ -5574,7 +5574,7 @@
 
 
 
-2010-07-23T14:49:46.260141Z
+2010-09-23T14:37:44.875728Z
 d7a9aad3796f37d70ac2ab4af9c80656
 2007-08-29T16:52:35.680643Z
 674
@@ -5608,7 +5608,7 @@
 
 
 
-2010-07-23T14:49:46.260141Z
+2010-09-23T14:37:44.879727Z
 defb118deb2deb23648d50da5cf71047
 2006-12-24T13:38:45.881735Z
 106
@@ -5642,7 +5642,7 @@
 
 
 
-2010-07-23T14:49:46.260141Z
+2010-09-23T14:37:44.919754Z
 89cbe3b06f14ba6d9a5cda47f4239f60
 2009-04-26T13:09:14.221938Z
 2696
@@ -5676,7 +5676,7 @@
 
 
 
-2010-07-23T14:49:46.260141Z
+2010-09-23T14:37:44.879727Z
 f2e06da76555942fd3017134d618bbac
 2007-08-29T16:52:35.680643Z
 674
@@ -5710,7 +5710,7 @@
 
 
 
-2010-07-23T14:49:46.260141Z
+2010-09-23T14:37:44.899726Z
 5ff56d564f2da50c289c1dfd90053a4b
 2008-03-05T09:16:19.220849Z
 1189
@@ -5744,7 +5744,7 @@
 
 
 
-2010-07-23T14:49:46.260141Z
+2010-09-23T14:37:44.923753Z
 0ae6a6924263cf5317b539c81b952f03
 2009-10-17T22:23:29.892475Z
 2928
@@ -5778,7 +5778,7 @@
 
 
 
-2010-07-23T14:49:46.260141Z
+2010-09-23T14:37:44.879727Z
 121548a48360a22daa537af42ee8902b
 2007-01-21T11:50:22.864544Z
 167
@@ -5812,7 +5812,7 @@
 
 
 
-2010-07-23T14:49:46.260141Z
+2010-09-23T14:37:44.899726Z
 e50cfa8ef5216f0f7d266dac1e38c9da
 2008-07-26T11:46:24.917066Z
 1698
--- a/doc/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/doc/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/doc
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:47.344131Z
+2010-09-23T14:37:44.939791Z
 b728be27d68a5bc46292d5e9d2ae5260
 2010-07-18T15:19:04.080578Z
 3848
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:47.344131Z
+2010-09-23T14:37:44.939791Z
 cc987c3ab1bf29e6ebe5313bef953b5b
 2010-02-16T16:40:50.914879Z
 3438
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:47.344131Z
+2010-09-23T14:37:44.939791Z
 ba2ffee528eae310e20bf761619bc85f
 2008-08-11T20:49:52.309238Z
 1732
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:47.344131Z
+2010-09-23T14:37:44.939791Z
 cc24a3b3e2deae6410de710cd2eed893
 2010-07-18T15:19:04.080578Z
 3848
@@ -168,7 +168,7 @@
 
 
 
-2010-08-25T15:27:58.014444Z
+2010-09-23T14:37:44.935786Z
 0310fe2cda3332d05e3275320e73407f
 2010-08-22T21:17:44.394587Z
 4029
@@ -202,7 +202,7 @@
 
 
 
-2010-07-23T14:49:47.348092Z
+2010-09-23T14:37:44.935786Z
 751419260aa954499f7abaabaa882bbe
 2007-11-04T13:19:42.552822Z
 883
--- a/extra/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/extra/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/extra
 http://redmine.rubyforge.org/svn
 
--- a/extra/mail_handler/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/extra/mail_handler/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/extra/mail_handler
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:45.612099Z
+2010-09-23T14:37:44.939791Z
 4529fffb032835fb9b9411c58d1c7d6b
 2009-12-19T14:08:48.825882Z
 3195
--- a/extra/sample_plugin/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/extra/sample_plugin/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin
 http://redmine.rubyforge.org/svn
 
@@ -44,7 +44,7 @@
 
 
 
-2010-07-23T14:49:46.076096Z
+2010-09-23T14:37:44.963747Z
 cb8636f8b6659a091f3e1f018a64a2f5
 2009-07-02T18:40:06.298867Z
 2798
@@ -78,7 +78,7 @@
 
 
 
-2010-07-23T14:49:46.076096Z
+2010-09-23T14:37:44.943755Z
 4d87ae4412bda3ec3b4c9a8bc17fafb6
 2009-02-26T16:37:48.671184Z
 2530
--- a/extra/sample_plugin/app/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/extra/sample_plugin/app/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/app
 http://redmine.rubyforge.org/svn
 
--- a/extra/sample_plugin/app/controllers/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/extra/sample_plugin/app/controllers/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/app/controllers
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:45.616101Z
+2010-09-23T14:37:44.943755Z
 9e3b32d475f8b06df8d45b28a2732d76
 2009-02-21T11:04:50.579477Z
 2493
--- a/extra/sample_plugin/app/models/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/extra/sample_plugin/app/models/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/app/models
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:45.616101Z
+2010-09-23T14:37:44.947762Z
 5161ccc668c61730638ef23bec50232f
 2008-07-27T19:18:35.954247Z
 1704
--- a/extra/sample_plugin/app/views/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/extra/sample_plugin/app/views/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/app/views
 http://redmine.rubyforge.org/svn
 
--- a/extra/sample_plugin/app/views/example/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/extra/sample_plugin/app/views/example/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/app/views/example
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:45.628116Z
+2010-09-23T14:37:44.947762Z
 674cc3fb92754e41d7e7d5fb7ed0eda7
 2007-09-23T18:50:53.732551Z
 753
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:45.628116Z
+2010-09-23T14:37:44.947762Z
 cf9e02439886339b70ee199313902c96
 2007-09-23T18:50:53.732551Z
 753
--- a/extra/sample_plugin/app/views/my/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/extra/sample_plugin/app/views/my/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/app/views/my
 http://redmine.rubyforge.org/svn
 
--- a/extra/sample_plugin/app/views/my/blocks/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/extra/sample_plugin/app/views/my/blocks/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/app/views/my/blocks
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:45.624131Z
+2010-09-23T14:37:44.951756Z
 e2d729cf488b7b7411cffb259c10559a
 2009-02-26T16:36:56.835799Z
 2529
--- a/extra/sample_plugin/app/views/settings/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/extra/sample_plugin/app/views/settings/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/app/views/settings
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:45.620126Z
+2010-09-23T14:37:44.951756Z
 065925dde040b66230ae06437114c77f
 2009-07-02T18:40:06.298867Z
 2798
--- a/extra/sample_plugin/assets/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/extra/sample_plugin/assets/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/assets
 http://redmine.rubyforge.org/svn
 
--- a/extra/sample_plugin/assets/images/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/extra/sample_plugin/assets/images/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/assets/images
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.064094Z
+2010-09-23T14:37:44.955797Z
 81bcc262c08473fa7cb05cc78176652f
 2007-09-23T18:50:53.732551Z
 753
--- a/extra/sample_plugin/assets/stylesheets/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/extra/sample_plugin/assets/stylesheets/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/assets/stylesheets
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.064094Z
+2010-09-23T14:37:44.955797Z
 ced97da84497db69b30e6e17a55c3fb9
 2007-09-23T18:50:53.732551Z
 753
--- a/extra/sample_plugin/config/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/extra/sample_plugin/config/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/config
 http://redmine.rubyforge.org/svn
 
--- a/extra/sample_plugin/config/locales/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/extra/sample_plugin/config/locales/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/config/locales
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.068091Z
+2010-09-23T14:37:44.959754Z
 c1dc7060239e61ce13e8840b305000c5
 2009-02-08T16:13:02.919112Z
 2413
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:46.068091Z
+2010-09-23T14:37:44.959754Z
 989492284a42bf9777e2bd0d39b40254
 2009-02-08T16:13:02.919112Z
 2413
--- a/extra/sample_plugin/db/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/extra/sample_plugin/db/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/db
 http://redmine.rubyforge.org/svn
 
--- a/extra/sample_plugin/db/migrate/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/extra/sample_plugin/db/migrate/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/db/migrate
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.072132Z
+2010-09-23T14:37:44.963747Z
 2316ab57f3d60b7f04b4bdfdebf6fd8e
 2008-07-27T19:10:56.352148Z
 1703
--- a/extra/svn/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/extra/svn/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/extra/svn
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.080095Z
+2010-09-24T11:56:52.976058Z
 ea12c26fe7b1a65015d8a657c003f43b
 2010-03-12T18:15:19.896502Z
 3571
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:46.080095Z
+2010-09-23T14:37:44.967747Z
 f41d78e45e03554626edf5e4e6663d80
 2007-04-02T19:01:31.084001Z
 402
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:46.080095Z
+2010-09-23T14:37:44.963747Z
 6203596871e4eff5bc22d0d414b87370
 2010-07-08T03:46:19.270127Z
 3832
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:46.080095Z
+2010-09-23T14:37:44.963747Z
 96fdfe0a7a4913dbbfc1b871d7abab02
 2007-04-01T19:43:59.029417Z
 396
--- a/files/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/files/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/files
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:47.044132Z
+2010-09-23T14:37:44.967747Z
 ae0415159f2c4dba3fc1a559d4c0f9f5
 2006-06-28T18:11:03.549769Z
 4
--- a/lib/.svn/all-wcprops	Fri Sep 24 15:33:13 2010 +0100
+++ b/lib/.svn/all-wcprops	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 28
-/svn/!svn/ver/4037/trunk/lib
+/svn/!svn/ver/4172/trunk/lib
 END
 faster_csv.rb
 K 25
@@ -13,7 +13,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 39
-/svn/!svn/ver/4037/trunk/lib/redmine.rb
+/svn/!svn/ver/4172/trunk/lib/redmine.rb
 END
 tabular_form_builder.rb
 K 25
--- a/lib/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/lib/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,14 +1,14 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/lib
 http://redmine.rubyforge.org/svn
 
 
 
-2010-08-24T15:27:12.793586Z
-4037
+2010-09-23T15:20:19.085385Z
+4172
 edavis10
 
 
@@ -38,7 +38,7 @@
 
 
 
-2010-07-23T14:49:47.508097Z
+2010-09-23T14:37:44.983792Z
 1657561b457dadfa5d004a393bdd1a2e
 2009-11-04T13:22:26.440808Z
 3007
@@ -78,10 +78,10 @@
 
 
 
-2010-08-25T15:27:58.199544Z
-6f37c8ab4613b43c32e15d8557d68e55
-2010-08-24T15:27:12.793586Z
-4037
+2010-09-24T12:48:29.815852Z
+3874a67810147c88406056d7bdea8fd3
+2010-09-23T15:20:19.085385Z
+4172
 edavis10
 has-props
 
@@ -104,7 +104,7 @@
 
 
 
-12473
+12555
 
 tabular_form_builder.rb
 file
@@ -112,7 +112,7 @@
 
 
 
-2010-07-23T14:49:47.508097Z
+2010-09-23T14:37:45.055767Z
 9d8fb5ede85fd780f018b74b36a83034
 2010-06-20T19:03:09.888571Z
 3804
@@ -149,7 +149,7 @@
 
 
 
-2010-07-23T14:49:47.508097Z
+2010-09-23T14:37:45.003823Z
 53cdb197e20e88c4c2feba08946d49b6
 2010-04-30T17:50:34.330526Z
 3718
@@ -183,7 +183,7 @@
 
 
 
-2010-07-23T14:49:47.508097Z
+2010-09-23T14:37:44.983792Z
 55e7cfa4fcb3619e9939d29336ecdf02
 2008-03-11T19:33:38.611682Z
 1227
@@ -217,7 +217,7 @@
 
 
 
-2010-07-23T14:49:47.508097Z
+2010-09-23T14:37:44.983792Z
 1ecc6c4c4ae6aa3e75600673b4b78add
 2009-08-15T22:41:40.505056Z
 2840
--- a/lib/.svn/text-base/redmine.rb.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/lib/.svn/text-base/redmine.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -44,24 +44,23 @@
 
 # Permissions
 Redmine::AccessControl.map do |map|
-  map.permission :view_project, {:projects => [:show, :activity]}, :public => true
+  map.permission :view_project, {:projects => [:show], :activities => [:index]}, :public => true
   map.permission :search_project, {:search => :index}, :public => true
-  map.permission :add_project, {:projects => :add}, :require => :loggedin
-  map.permission :edit_project, {:projects => [:settings, :edit]}, :require => :member
+  map.permission :add_project, {:projects => [:new, :create]}, :require => :loggedin
+  map.permission :edit_project, {:projects => [:settings, :edit, :update]}, :require => :member
   map.permission :select_project_modules, {:projects => :modules}, :require => :member
   map.permission :manage_members, {:projects => :settings, :members => [:new, :edit, :destroy, :autocomplete_for_member]}, :require => :member
-  map.permission :manage_versions, {:projects => :settings, :versions => [:new, :edit, :close_completed, :destroy]}, :require => :member
-  map.permission :add_subprojects, {:projects => :add}, :require => :member
+  map.permission :manage_versions, {:projects => :settings, :versions => [:new, :create, :edit, :update, :close_completed, :destroy]}, :require => :member
+  map.permission :add_subprojects, {:projects => [:new, :create]}, :require => :member
   
   map.project_module :issue_tracking do |map|
     # Issue categories
     map.permission :manage_categories, {:projects => :settings, :issue_categories => [:new, :edit, :destroy]}, :require => :member
     # Issues
-    map.permission :view_issues, {:projects => :roadmap, 
-                                  :issues => [:index, :show],
+    map.permission :view_issues, {:issues => [:index, :show],
                                   :auto_complete => [:issues],
                                   :context_menus => [:issues],
-                                  :versions => [:show, :status_by],
+                                  :versions => [:index, :show, :status_by],
                                   :journals => :index,
                                   :queries => :index,
                                   :reports => [:issue_report, :issue_report_details]}
@@ -88,13 +87,13 @@
     map.permission :view_time_entries, :timelog => [:details, :report]
     map.permission :edit_time_entries, {:timelog => [:edit, :destroy]}, :require => :member
     map.permission :edit_own_time_entries, {:timelog => [:edit, :destroy]}, :require => :loggedin
-    map.permission :manage_project_activities, {:projects => [:save_activities, :reset_activities]}, :require => :member
+    map.permission :manage_project_activities, {:project_enumerations => [:update, :destroy]}, :require => :member
   end
   
   map.project_module :news do |map|
-    map.permission :manage_news, {:news => [:new, :edit, :destroy, :destroy_comment]}, :require => :member
+    map.permission :manage_news, {:news => [:new, :create, :edit, :update, :destroy], :comments => [:destroy]}, :require => :member
     map.permission :view_news, {:news => [:index, :show]}, :public => true
-    map.permission :comment_news, {:news => :add_comment}
+    map.permission :comment_news, {:comments => :create}
   end
 
   map.project_module :documents do |map|
@@ -103,8 +102,8 @@
   end
   
   map.project_module :files do |map|
-    map.permission :manage_files, {:projects => :add_file}, :require => :loggedin
-    map.permission :view_files, :projects => :list_files, :versions => :download
+    map.permission :manage_files, {:files => [:new, :create]}, :require => :loggedin
+    map.permission :view_files, :files => :index, :versions => :download
   end
     
   map.project_module :wiki do |map|
@@ -137,11 +136,11 @@
   end
 
   map.project_module :calendar do |map|
-    map.permission :view_calendar, :calendars => :show
+    map.permission :view_calendar, :calendars => [:show, :update]
   end
 
   map.project_module :gantt do |map|
-    map.permission :view_gantt, :gantts => :show
+    map.permission :view_gantt, :gantts => [:show, :update]
   end
 end
 
@@ -185,8 +184,8 @@
 
 Redmine::MenuManager.map :project_menu do |menu|
   menu.push :overview, { :controller => 'projects', :action => 'show' }
-  menu.push :activity, { :controller => 'projects', :action => 'activity' }
-  menu.push :roadmap, { :controller => 'projects', :action => 'roadmap' }, 
+  menu.push :activity, { :controller => 'activities', :action => 'index' }
+  menu.push :roadmap, { :controller => 'versions', :action => 'index' }, :param => :project_id,
               :if => Proc.new { |p| p.shared_versions.any? }
   menu.push :issues, { :controller => 'issues', :action => 'index' }, :param => :project_id, :caption => :label_issue_plural
   menu.push :new_issue, { :controller => 'issues', :action => 'new' }, :param => :project_id, :caption => :label_issue_new,
@@ -199,7 +198,7 @@
               :if => Proc.new { |p| p.wiki && !p.wiki.new_record? }
   menu.push :boards, { :controller => 'boards', :action => 'index', :id => nil }, :param => :project_id,
               :if => Proc.new { |p| p.boards.any? }, :caption => :label_board_plural
-  menu.push :files, { :controller => 'projects', :action => 'list_files' }, :caption => :label_file_plural
+  menu.push :files, { :controller => 'files', :action => 'index' }, :caption => :label_file_plural, :param => :project_id
   menu.push :repository, { :controller => 'repositories', :action => 'show' },
               :if => Proc.new { |p| p.repository && !p.repository.new_record? }
   menu.push :settings, { :controller => 'projects', :action => 'settings' }, :last => true
--- a/lib/SVG/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/lib/SVG/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/lib/SVG
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:47.360129Z
+2010-09-23T14:37:44.975748Z
 393a5ca445f6965873eca0259a17f833
 2007-03-25T17:11:46.804742Z
 380
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:47.360129Z
+2010-09-23T14:37:44.979747Z
 072cf60873854a186c6eba9b74dbe389
 2007-03-25T17:11:46.804742Z
 380
--- a/lib/SVG/Graph/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/lib/SVG/Graph/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/lib/SVG/Graph
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:47.356133Z
+2010-09-23T14:37:44.979747Z
 0a49ed37717b08c6bccdc843a03a333d
 2009-03-30T19:58:17.407192Z
 2642
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:47.360129Z
+2010-09-23T14:37:44.979747Z
 55ff835de5a0fb0fd2d6a236b1c5c436
 2009-03-30T19:58:17.407192Z
 2642
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:47.360129Z
+2010-09-23T14:37:44.979747Z
 a39e9963eaae7bb913b6d8d2dfe0506f
 2009-03-30T19:58:17.407192Z
 2642
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:47.360129Z
+2010-09-23T14:37:44.979747Z
 184772c0f1732eadf12b0e8bc9e172f7
 2009-03-30T19:58:17.407192Z
 2642
@@ -168,7 +168,7 @@
 
 
 
-2010-07-23T14:49:47.360129Z
+2010-09-23T14:37:44.979747Z
 fad5865539cbd7ba3433fd6d47b9d3f2
 2009-11-07T10:40:54.677820Z
 3017
@@ -202,7 +202,7 @@
 
 
 
-2010-07-23T14:49:47.360129Z
+2010-09-23T14:37:44.979747Z
 cc9051d7617dfe6dd6cc47fe83fd6ec4
 2009-03-30T19:58:17.407192Z
 2642
@@ -236,7 +236,7 @@
 
 
 
-2010-07-23T14:49:47.360129Z
+2010-09-23T14:37:44.979747Z
 f092a4b0f16876381bc9283058eeb48c
 2007-03-25T17:11:46.804742Z
 380
@@ -270,7 +270,7 @@
 
 
 
-2010-07-23T14:49:47.360129Z
+2010-09-23T14:37:44.979747Z
 73dbcb4a1cba46b4e46a81881d24ff1a
 2009-03-30T19:58:17.407192Z
 2642
@@ -304,7 +304,7 @@
 
 
 
-2010-07-23T14:49:47.360129Z
+2010-09-23T14:37:44.979747Z
 d8e95d0e507a02a74a5ac3435560d3bd
 2007-03-25T17:11:46.804742Z
 380
--- a/lib/generators/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/lib/generators/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/lib/generators
 http://redmine.rubyforge.org/svn
 
--- a/lib/generators/redmine_plugin/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/lib/generators/redmine_plugin/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/lib/generators/redmine_plugin
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:47.484131Z
+2010-09-23T14:37:44.987751Z
 334056a407de9091bb8774ba986c53f9
 2009-06-10T03:39:02.884087Z
 2785
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:47.484131Z
+2010-09-23T14:37:44.987751Z
 be5d60ef31ac822cd5650ab976dcc543
 2009-06-10T03:39:02.884087Z
 2785
--- a/lib/generators/redmine_plugin/templates/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/lib/generators/redmine_plugin/templates/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/lib/generators/redmine_plugin/templates
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:47.484131Z
+2010-09-23T14:37:44.987751Z
 2d39c559d341be440cb60911ef125dd9
 2008-09-05T10:31:06.632668Z
 1786
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:47.484131Z
+2010-09-23T14:37:44.987751Z
 d97a21936cfb77543031f7d9a5d5131a
 2008-10-25T04:37:31.779636Z
 1949
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:47.484131Z
+2010-09-23T14:37:44.991758Z
 d14592489e5b7d34b33d2487f4770b7d
 2008-10-25T04:37:31.779636Z
 1949
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:47.484131Z
+2010-09-23T14:37:44.991758Z
 ab791ada26df5c9c1a13b771e988a36f
 2009-06-10T03:39:02.884087Z
 2785
@@ -168,7 +168,7 @@
 
 
 
-2010-07-23T14:49:47.484131Z
+2010-09-23T14:37:44.991758Z
 39cb16a49db6c72cdd7a63447d5b188f
 2010-06-17T19:02:13.409991Z
 3771
--- a/lib/generators/redmine_plugin_controller/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/lib/generators/redmine_plugin_controller/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/lib/generators/redmine_plugin_controller
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:47.500154Z
+2010-09-23T14:37:44.991758Z
 60c1792566a450d246dd66ff274ae06c
 2008-09-05T10:31:06.632668Z
 1786
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:47.500154Z
+2010-09-23T14:37:44.991758Z
 23b15404071adb39cb140a6113057f15
 2010-02-28T12:15:47.320153Z
 3514
--- a/lib/generators/redmine_plugin_controller/templates/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/lib/generators/redmine_plugin_controller/templates/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/lib/generators/redmine_plugin_controller/templates
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:47.500154Z
+2010-09-23T14:37:44.995797Z
 0ae9d2e8e624fef815f60164d47b6464
 2008-09-05T10:31:06.632668Z
 1786
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:47.500154Z
+2010-09-23T14:37:44.995797Z
 e8491aac2379dbba3d3ddadc30f6db07
 2008-10-25T09:35:51.426668Z
 1951
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:47.500154Z
+2010-09-23T14:37:44.995797Z
 2fdd792e6b6825b4f1802ba4767e0435
 2008-10-25T09:35:51.426668Z
 1951
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:47.500154Z
+2010-09-23T14:37:44.995797Z
 22e765f47aacc324789509219797d087
 2010-06-17T19:02:07.893033Z
 3770
--- a/lib/generators/redmine_plugin_model/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/lib/generators/redmine_plugin_model/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/lib/generators/redmine_plugin_model
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:47.492125Z
+2010-09-23T14:37:44.999760Z
 ca5ffbd9dfb099b2f38ca21c030ffea0
 2008-09-05T10:31:06.632668Z
 1786
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:47.492125Z
+2010-09-23T14:37:44.999760Z
 ba0c0092c69cca4c21b1b26027f7472b
 2010-02-28T12:15:47.320153Z
 3514
--- a/lib/generators/redmine_plugin_model/templates/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/lib/generators/redmine_plugin_model/templates/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/lib/generators/redmine_plugin_model/templates
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:47.492125Z
+2010-09-23T14:37:45.003823Z
 ce0817700ec27f10f7d07f998bff6991
 2008-10-25T09:35:51.426668Z
 1951
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:47.492125Z
+2010-09-23T14:37:45.003823Z
 a4081d31f6d22e7655b4f6e9fb894a03
 2009-10-17T21:08:33.644420Z
 2926
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:47.492125Z
+2010-09-23T14:37:44.999760Z
 115e77dae670747c95b5ff22c01d4174
 2008-09-05T10:31:06.632668Z
 1786
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:47.492125Z
+2010-09-23T14:37:45.003823Z
 3a783571ccc96a2f639329700dda677b
 2010-06-17T19:02:07.893033Z
 3770
--- a/lib/plugins/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/lib/plugins/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/lib/plugins
 http://redmine.rubyforge.org/svn
 
--- a/lib/redmine.rb	Fri Sep 24 15:33:13 2010 +0100
+++ b/lib/redmine.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -44,24 +44,23 @@
 
 # Permissions
 Redmine::AccessControl.map do |map|
-  map.permission :view_project, {:projects => [:show, :activity]}, :public => true
+  map.permission :view_project, {:projects => [:show], :activities => [:index]}, :public => true
   map.permission :search_project, {:search => :index}, :public => true
-  map.permission :add_project, {:projects => :add}, :require => :loggedin
-  map.permission :edit_project, {:projects => [:settings, :edit]}, :require => :member
+  map.permission :add_project, {:projects => [:new, :create]}, :require => :loggedin
+  map.permission :edit_project, {:projects => [:settings, :edit, :update]}, :require => :member
   map.permission :select_project_modules, {:projects => :modules}, :require => :member
   map.permission :manage_members, {:projects => :settings, :members => [:new, :edit, :destroy, :autocomplete_for_member]}, :require => :member
-  map.permission :manage_versions, {:projects => :settings, :versions => [:new, :edit, :close_completed, :destroy]}, :require => :member
-  map.permission :add_subprojects, {:projects => :add}, :require => :member
+  map.permission :manage_versions, {:projects => :settings, :versions => [:new, :create, :edit, :update, :close_completed, :destroy]}, :require => :member
+  map.permission :add_subprojects, {:projects => [:new, :create]}, :require => :member
   
   map.project_module :issue_tracking do |map|
     # Issue categories
     map.permission :manage_categories, {:projects => :settings, :issue_categories => [:new, :edit, :destroy]}, :require => :member
     # Issues
-    map.permission :view_issues, {:projects => :roadmap, 
-                                  :issues => [:index, :show],
+    map.permission :view_issues, {:issues => [:index, :show],
                                   :auto_complete => [:issues],
                                   :context_menus => [:issues],
-                                  :versions => [:show, :status_by],
+                                  :versions => [:index, :show, :status_by],
                                   :journals => :index,
                                   :queries => :index,
                                   :reports => [:issue_report, :issue_report_details]}
@@ -88,13 +87,13 @@
     map.permission :view_time_entries, :timelog => [:details, :report]
     map.permission :edit_time_entries, {:timelog => [:edit, :destroy]}, :require => :member
     map.permission :edit_own_time_entries, {:timelog => [:edit, :destroy]}, :require => :loggedin
-    map.permission :manage_project_activities, {:projects => [:save_activities, :reset_activities]}, :require => :member
+    map.permission :manage_project_activities, {:project_enumerations => [:update, :destroy]}, :require => :member
   end
   
   map.project_module :news do |map|
-    map.permission :manage_news, {:news => [:new, :edit, :destroy, :destroy_comment]}, :require => :member
+    map.permission :manage_news, {:news => [:new, :create, :edit, :update, :destroy], :comments => [:destroy]}, :require => :member
     map.permission :view_news, {:news => [:index, :show]}, :public => true
-    map.permission :comment_news, {:news => :add_comment}
+    map.permission :comment_news, {:comments => :create}
   end
 
   map.project_module :documents do |map|
@@ -103,8 +102,8 @@
   end
   
   map.project_module :files do |map|
-    map.permission :manage_files, {:projects => :add_file}, :require => :loggedin
-    map.permission :view_files, :projects => :list_files, :versions => :download
+    map.permission :manage_files, {:files => [:new, :create]}, :require => :loggedin
+    map.permission :view_files, :files => :index, :versions => :download
   end
     
   map.project_module :wiki do |map|
@@ -137,11 +136,11 @@
   end
 
   map.project_module :calendar do |map|
-    map.permission :view_calendar, :calendars => :show
+    map.permission :view_calendar, :calendars => [:show, :update]
   end
 
   map.project_module :gantt do |map|
-    map.permission :view_gantt, :gantts => :show
+    map.permission :view_gantt, :gantts => [:show, :update]
   end
 end
 
@@ -185,8 +184,8 @@
 
 Redmine::MenuManager.map :project_menu do |menu|
   menu.push :overview, { :controller => 'projects', :action => 'show' }
-  menu.push :activity, { :controller => 'projects', :action => 'activity' }
-  menu.push :roadmap, { :controller => 'projects', :action => 'roadmap' }, 
+  menu.push :activity, { :controller => 'activities', :action => 'index' }
+  menu.push :roadmap, { :controller => 'versions', :action => 'index' }, :param => :project_id,
               :if => Proc.new { |p| p.shared_versions.any? }
   menu.push :issues, { :controller => 'issues', :action => 'index' }, :param => :project_id, :caption => :label_issue_plural
   menu.push :new_issue, { :controller => 'issues', :action => 'new' }, :param => :project_id, :caption => :label_issue_new,
@@ -199,7 +198,7 @@
               :if => Proc.new { |p| p.wiki && !p.wiki.new_record? }
   menu.push :boards, { :controller => 'boards', :action => 'index', :id => nil }, :param => :project_id,
               :if => Proc.new { |p| p.boards.any? }, :caption => :label_board_plural
-  menu.push :files, { :controller => 'projects', :action => 'list_files' }, :caption => :label_file_plural
+  menu.push :files, { :controller => 'files', :action => 'index' }, :caption => :label_file_plural, :param => :project_id
   menu.push :repository, { :controller => 'repositories', :action => 'show' },
               :if => Proc.new { |p| p.repository && !p.repository.new_record? }
   menu.push :settings, { :controller => 'projects', :action => 'settings' }, :last => true
--- a/lib/redmine/.svn/all-wcprops	Fri Sep 24 15:33:13 2010 +0100
+++ b/lib/redmine/.svn/all-wcprops	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 36
-/svn/!svn/ver/4028/trunk/lib/redmine
+/svn/!svn/ver/4104/trunk/lib/redmine
 END
 i18n.rb
 K 25
@@ -21,11 +21,11 @@
 V 48
 /svn/!svn/ver/1753/trunk/lib/redmine/platform.rb
 END
-custom_field_format.rb
+version.rb
 K 25
 svn:wc:ra_dav:version-url
-V 59
-/svn/!svn/ver/3675/trunk/lib/redmine/custom_field_format.rb
+V 47
+/svn/!svn/ver/4028/trunk/lib/redmine/version.rb
 END
 themes.rb
 K 25
@@ -33,11 +33,11 @@
 V 46
 /svn/!svn/ver/3710/trunk/lib/redmine/themes.rb
 END
-version.rb
+custom_field_format.rb
 K 25
 svn:wc:ra_dav:version-url
-V 47
-/svn/!svn/ver/4028/trunk/lib/redmine/version.rb
+V 59
+/svn/!svn/ver/3675/trunk/lib/redmine/custom_field_format.rb
 END
 imap.rb
 K 25
@@ -57,36 +57,36 @@
 V 44
 /svn/!svn/ver/2776/trunk/lib/redmine/info.rb
 END
+access_keys.rb
+K 25
+svn:wc:ra_dav:version-url
+V 51
+/svn/!svn/ver/1081/trunk/lib/redmine/access_keys.rb
+END
 activity.rb
 K 25
 svn:wc:ra_dav:version-url
 V 48
 /svn/!svn/ver/1702/trunk/lib/redmine/activity.rb
 END
-access_keys.rb
-K 25
-svn:wc:ra_dav:version-url
-V 51
-/svn/!svn/ver/1081/trunk/lib/redmine/access_keys.rb
-END
 wiki_formatting.rb
 K 25
 svn:wc:ra_dav:version-url
 V 55
 /svn/!svn/ver/3446/trunk/lib/redmine/wiki_formatting.rb
 END
+menu_manager.rb
+K 25
+svn:wc:ra_dav:version-url
+V 52
+/svn/!svn/ver/3539/trunk/lib/redmine/menu_manager.rb
+END
 plugin.rb
 K 25
 svn:wc:ra_dav:version-url
 V 46
 /svn/!svn/ver/3841/trunk/lib/redmine/plugin.rb
 END
-menu_manager.rb
-K 25
-svn:wc:ra_dav:version-url
-V 52
-/svn/!svn/ver/3539/trunk/lib/redmine/menu_manager.rb
-END
 utils.rb
 K 25
 svn:wc:ra_dav:version-url
--- a/lib/redmine/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/lib/redmine/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,14 +1,14 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/lib/redmine
 http://redmine.rubyforge.org/svn
 
 
 
-2010-08-22T21:15:38.956901Z
-4028
+2010-09-20T02:55:20.180218Z
+4104
 edavis10
 
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:47.456153Z
+2010-09-23T14:37:45.027790Z
 009b7a9ada5c3e83d6a7a26256c34951
 2009-02-21T11:04:50.579477Z
 2493
@@ -72,7 +72,7 @@
 
 
 
-2010-07-23T14:49:47.456153Z
+2010-09-23T14:37:45.031809Z
 7905a0773e7d2f6b468fc5b9e107db4d
 2010-01-17T13:53:13.544777Z
 3330
@@ -106,7 +106,7 @@
 
 
 
-2010-07-23T14:49:47.456153Z
+2010-09-23T14:37:45.031809Z
 68165c83be56d3204c582958d933ff0a
 2008-08-25T11:01:37.715099Z
 1753
@@ -140,7 +140,7 @@
 
 
 
-2010-07-23T14:49:47.456153Z
+2010-09-23T14:37:45.023772Z
 7fd1fcfb204480b0e9903fd03c53a563
 2010-04-16T15:34:05.970144Z
 3675
@@ -174,7 +174,7 @@
 
 
 
-2010-07-23T14:49:47.456153Z
+2010-09-23T14:37:45.043748Z
 209d3f63cbc76795042695c71f6230f1
 2010-04-30T12:44:19.138265Z
 3710
@@ -208,7 +208,7 @@
 
 
 
-2010-08-25T15:27:58.115979Z
+2010-09-23T14:37:45.047759Z
 6b901e32b10f12644f73eaad79a192aa
 2010-08-22T21:15:38.956901Z
 4028
@@ -242,7 +242,7 @@
 
 
 
-2010-07-23T14:49:47.456153Z
+2010-09-23T14:37:45.031809Z
 caeedebd5c05aede1d232510d03ad136
 2008-12-31T14:56:30.439880Z
 2220
@@ -276,7 +276,7 @@
 
 
 
-2010-07-23T14:49:47.456153Z
+2010-09-23T14:37:45.031809Z
 dbfad515b1d5c277d2f8e9d67233185e
 2009-12-29T13:28:30.604471Z
 3258
@@ -319,7 +319,7 @@
 
 
 
-2010-07-23T14:49:47.456153Z
+2010-09-23T14:37:45.031809Z
 ddadcd03b97455adae2451a2140afbf6
 2009-05-30T23:00:22.602473Z
 2776
@@ -353,7 +353,7 @@
 
 
 
-2010-07-23T14:49:47.460097Z
+2010-09-23T14:37:45.015759Z
 41c2852d003d94cb23c231f06be62d12
 2008-01-20T13:07:19.003764Z
 1081
@@ -387,7 +387,7 @@
 
 
 
-2010-07-23T14:49:47.460097Z
+2010-09-23T14:37:45.015759Z
 88435997a6d77548eab82526df38caf1
 2008-07-27T18:38:31.746909Z
 1702
@@ -421,7 +421,7 @@
 
 
 
-2010-07-23T14:49:47.460097Z
+2010-09-23T14:37:45.047759Z
 648c40cc515e97d063d2c2f218cbbc23
 2010-02-17T20:47:50.603139Z
 3446
@@ -455,7 +455,7 @@
 
 
 
-2010-07-23T14:49:47.460097Z
+2010-09-23T14:37:45.031809Z
 14187e67feb3e810abc8737c44d25654
 2010-03-04T06:01:05.500229Z
 3539
@@ -489,7 +489,7 @@
 
 
 
-2010-07-23T14:49:47.460097Z
+2010-09-23T14:37:45.031809Z
 62caf1a80b1f5985c9f75fa41bf9b147
 2010-07-16T03:11:35.104268Z
 3841
@@ -526,7 +526,7 @@
 
 
 
-2010-07-23T14:49:47.460097Z
+2010-09-23T14:37:45.027790Z
 0d02603ed1f291c8f33bc5b6ed3800e6
 2009-02-25T07:25:01.090780Z
 2522
@@ -560,7 +560,7 @@
 
 
 
-2010-07-23T14:49:47.460097Z
+2010-09-23T14:37:45.047759Z
 d04b071ce8f05b44ca6993c56fea9b1f
 2009-01-04T17:09:25.896068Z
 2234
@@ -594,7 +594,7 @@
 
 
 
-2010-07-23T14:49:47.460097Z
+2010-09-23T14:37:45.015759Z
 e7e4c44515553e36bffa6e8f8960080b
 2008-09-25T18:51:03.022592Z
 1907
@@ -628,7 +628,7 @@
 
 
 
-2010-07-23T14:49:47.460097Z
+2010-09-23T14:37:45.043748Z
 6f968bcc4f81562e9cbddb02ebc62601
 2010-02-17T20:05:51.124365Z
 3444
@@ -665,7 +665,7 @@
 
 
 
-2010-07-23T14:49:47.460097Z
+2010-09-23T14:37:45.019747Z
 7632bcee464a923f5aa7c9eba29f8081
 2008-04-26T11:59:51.889210Z
 1361
@@ -699,7 +699,7 @@
 
 
 
-2010-07-23T14:49:47.460097Z
+2010-09-23T14:37:45.015759Z
 91ed592a8419f1bec48ba880c7a86e29
 2009-05-25T19:10:26.065563Z
 2766
@@ -736,7 +736,7 @@
 
 
 
-2010-07-23T14:49:47.460097Z
+2010-09-23T14:37:45.043748Z
 4a40844a6cd11aa7409bc8f4e9a2c74e
 2010-03-28T11:30:48.135356Z
 3619
@@ -770,7 +770,7 @@
 
 
 
-2010-07-23T14:49:47.460097Z
+2010-09-23T14:37:45.047759Z
 69c22a4064f90e2ce460a0c9013c7cd0
 2009-11-11T13:25:53.648186Z
 3028
--- a/lib/redmine/activity/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/lib/redmine/activity/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/lib/redmine/activity
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:47.396130Z
+2010-09-23T14:37:45.019747Z
 20597949bb74e98a3ffc97bc8a3ead7d
 2010-07-06T02:22:03.226147Z
 3829
--- a/lib/redmine/core_ext/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/lib/redmine/core_ext/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/lib/redmine/core_ext
 http://redmine.rubyforge.org/svn
 
@@ -35,7 +35,7 @@
 
 
 
-2010-07-23T14:49:47.424097Z
+2010-09-23T14:37:45.019747Z
 fcafa1cc4149d3a5de82816c61b7fa02
 2009-08-17T16:32:24.020380Z
 2844
--- a/lib/redmine/core_ext/string/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/lib/redmine/core_ext/string/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/lib/redmine/core_ext/string
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:47.424097Z
+2010-09-23T14:37:45.023772Z
 e614ecdb2fac85cd9f8808e7cff7f9de
 2009-08-17T16:32:24.020380Z
 2844
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:47.424097Z
+2010-09-23T14:37:45.023772Z
 1cc26c5de967944da3a6b07331512637
 2009-10-10T15:09:19.510095Z
 2912
--- a/lib/redmine/default_data/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/lib/redmine/default_data/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/lib/redmine/default_data
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:47.428092Z
+2010-09-23T14:37:45.023772Z
 41958e843a8ba03548eed089e8002549
 2010-06-30T01:55:44.694582Z
 3820
--- a/lib/redmine/export/.svn/all-wcprops	Fri Sep 24 15:33:13 2010 +0100
+++ b/lib/redmine/export/.svn/all-wcprops	Fri Sep 24 15:51:28 2010 +0100
@@ -1,11 +1,11 @@
 K 25
 svn:wc:ra_dav:version-url
 V 43
-/svn/!svn/ver/3884/trunk/lib/redmine/export
+/svn/!svn/ver/4104/trunk/lib/redmine/export
 END
 pdf.rb
 K 25
 svn:wc:ra_dav:version-url
 V 50
-/svn/!svn/ver/3884/trunk/lib/redmine/export/pdf.rb
+/svn/!svn/ver/4104/trunk/lib/redmine/export/pdf.rb
 END
--- a/lib/redmine/export/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/lib/redmine/export/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,15 +1,15 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/lib/redmine/export
 http://redmine.rubyforge.org/svn
 
 
 
-2010-07-25T11:19:44.922190Z
-3884
-jplang
+2010-09-20T02:55:20.180218Z
+4104
+edavis10
 
 
 
@@ -32,11 +32,11 @@
 
 
 
-2010-07-28T11:07:47.471808Z
-da47840b8401b161f88d5c926d98b3a1
-2010-07-25T11:19:44.922190Z
-3884
-jplang
+2010-09-24T12:48:29.791863Z
+aa6093490555bdd119ba8f1d34cab080
+2010-09-20T02:55:20.180218Z
+4104
+edavis10
 has-props
 
 
@@ -58,5 +58,5 @@
 
 
 
-17039
+10771
 
--- a/lib/redmine/export/.svn/text-base/pdf.rb.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/lib/redmine/export/.svn/text-base/pdf.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -154,7 +154,7 @@
           if query.grouped? && (group = query.group_by_column.value(issue)) != previous_group
             pdf.SetFontStyle('B',9)
             pdf.Cell(277, row_height, 
-              (group.blank? ? 'None' : group.to_s) + " (#{@issue_count_by_group[group]})",
+              (group.blank? ? 'None' : group.to_s) + " (#{query.issue_count_by_group[group]})",
               1, 1, 'L')
             pdf.SetFontStyle('',8)
             previous_group = group
@@ -184,7 +184,7 @@
         end
         pdf.Output
       end
-      
+
       # Returns a PDF string of a single issue
       def issue_to_pdf(issue)
         pdf = IFPDF.new(current_language)
@@ -208,7 +208,7 @@
         pdf.SetFontStyle('',9)
         pdf.Cell(60,5, issue.priority.to_s,"RT")        
         pdf.Ln
-          
+        
         pdf.SetFontStyle('B',9)
         pdf.Cell(35,5, l(:field_author) + ":","L")
         pdf.SetFontStyle('',9)
@@ -238,14 +238,14 @@
         pdf.SetFontStyle('',9)
         pdf.Cell(60,5, format_date(issue.due_date),"RB")
         pdf.Ln
-          
+        
         for custom_value in issue.custom_field_values
           pdf.SetFontStyle('B',9)
           pdf.Cell(35,5, custom_value.custom_field.name + ":","L")
           pdf.SetFontStyle('',9)
           pdf.MultiCell(155,5, (show_value custom_value),"R")
         end
-          
+        
         pdf.SetFontStyle('B',9)
         pdf.Cell(35,5, l(:field_subject) + ":","LTB")
         pdf.SetFontStyle('',9)
@@ -255,7 +255,7 @@
         pdf.SetFontStyle('B',9)
         pdf.Cell(35,5, l(:field_description) + ":")
         pdf.SetFontStyle('',9)
-        pdf.MultiCell(155,5, @issue.description,"BR")
+        pdf.MultiCell(155,5, issue.description,"BR")
         
         pdf.Line(pdf.GetX, y0, pdf.GetX, pdf.GetY)
         pdf.Line(pdf.GetX, pdf.GetY, 170, pdf.GetY)
@@ -311,187 +311,7 @@
         end
         pdf.Output
       end
-      
-      # Returns a PDF string of a gantt chart
-      def gantt_to_pdf(gantt, project)
-        pdf = IFPDF.new(current_language)
-        pdf.SetTitle("#{l(:label_gantt)} #{project}")
-        pdf.AliasNbPages
-        pdf.footer_date = format_date(Date.today)
-        pdf.AddPage("L")
-        pdf.SetFontStyle('B',12)
-        pdf.SetX(15)
-        pdf.Cell(70, 20, project.to_s)
-        pdf.Ln
-        pdf.SetFontStyle('B',9)
-        
-        subject_width = 100
-        header_heigth = 5
-        
-        headers_heigth = header_heigth
-        show_weeks = false
-        show_days = false
-        
-        if gantt.months < 7
-          show_weeks = true
-          headers_heigth = 2*header_heigth
-          if gantt.months < 3
-            show_days = true
-            headers_heigth = 3*header_heigth
-          end
-        end
-        
-        g_width = 280 - subject_width
-        zoom = (g_width) / (gantt.date_to - gantt.date_from + 1)
-        g_height = 120
-        t_height = g_height + headers_heigth
-        
-        y_start = pdf.GetY
-        
-        # Months headers
-        month_f = gantt.date_from
-        left = subject_width
-        height = header_heigth
-        gantt.months.times do 
-          width = ((month_f >> 1) - month_f) * zoom 
-          pdf.SetY(y_start)
-          pdf.SetX(left)
-          pdf.Cell(width, height, "#{month_f.year}-#{month_f.month}", "LTR", 0, "C")
-          left = left + width
-          month_f = month_f >> 1
-        end  
-        
-        # Weeks headers
-        if show_weeks
-          left = subject_width
-          height = header_heigth
-          if gantt.date_from.cwday == 1
-            # gantt.date_from is monday
-            week_f = gantt.date_from
-          else
-            # find next monday after gantt.date_from
-            week_f = gantt.date_from + (7 - gantt.date_from.cwday + 1)
-            width = (7 - gantt.date_from.cwday + 1) * zoom-1
-            pdf.SetY(y_start + header_heigth)
-            pdf.SetX(left)
-            pdf.Cell(width + 1, height, "", "LTR")
-            left = left + width+1
-          end
-          while week_f <= gantt.date_to
-            width = (week_f + 6 <= gantt.date_to) ? 7 * zoom : (gantt.date_to - week_f + 1) * zoom
-            pdf.SetY(y_start + header_heigth)
-            pdf.SetX(left)
-            pdf.Cell(width, height, (width >= 5 ? week_f.cweek.to_s : ""), "LTR", 0, "C")
-            left = left + width
-            week_f = week_f+7
-          end
-        end
-        
-        # Days headers
-        if show_days
-          left = subject_width
-          height = header_heigth
-          wday = gantt.date_from.cwday
-          pdf.SetFontStyle('B',7)
-          (gantt.date_to - gantt.date_from + 1).to_i.times do 
-            width = zoom
-            pdf.SetY(y_start + 2 * header_heigth)
-            pdf.SetX(left)
-            pdf.Cell(width, height, day_name(wday).first, "LTR", 0, "C")
-            left = left + width
-            wday = wday + 1
-            wday = 1 if wday > 7
-          end
-        end
-        
-        pdf.SetY(y_start)
-        pdf.SetX(15)
-        pdf.Cell(subject_width+g_width-15, headers_heigth, "", 1)
-        
-        # Tasks
-        top = headers_heigth + y_start
-        pdf.SetFontStyle('B',7)
-        gantt.events.each do |i|
-          pdf.SetY(top)
-          pdf.SetX(15)
-          
-          text = ""
-          if i.is_a? Issue
-            text = "#{i.tracker} #{i.id}: #{i.subject}"
-          else
-            text = i.name
-          end
-          text = "#{i.project} - #{text}" unless project && project == i.project
-          pdf.Cell(subject_width-15, 5, text, "LR")
-        
-          pdf.SetY(top + 0.2)
-          pdf.SetX(subject_width)
-          pdf.SetFillColor(255, 255, 255)
-          pdf.Cell(g_width, 4.6, "", "LR", 0, "", 1)
-          pdf.SetY(top+1.5)
-          
-          if i.is_a? Issue
-            i_start_date = (i.start_date >= gantt.date_from ? i.start_date : gantt.date_from )
-            i_end_date = (i.due_before <= gantt.date_to ? i.due_before : gantt.date_to )
-            
-            i_done_date = i.start_date + ((i.due_before - i.start_date+1)*i.done_ratio/100).floor
-            i_done_date = (i_done_date <= gantt.date_from ? gantt.date_from : i_done_date )
-            i_done_date = (i_done_date >= gantt.date_to ? gantt.date_to : i_done_date )
-            
-            i_late_date = [i_end_date, Date.today].min if i_start_date < Date.today
-            
-            i_left = ((i_start_date - gantt.date_from)*zoom) 
-            i_width = ((i_end_date - i_start_date + 1)*zoom)
-            d_width = ((i_done_date - i_start_date)*zoom)
-            l_width = ((i_late_date - i_start_date+1)*zoom) if i_late_date
-            l_width ||= 0
-          
-            pdf.SetX(subject_width + i_left)
-            pdf.SetFillColor(200,200,200)
-            pdf.Cell(i_width, 2, "", 0, 0, "", 1)
-          
-            if l_width > 0
-              pdf.SetY(top+1.5)
-              pdf.SetX(subject_width + i_left)
-              pdf.SetFillColor(255,100,100)
-              pdf.Cell(l_width, 2, "", 0, 0, "", 1)
-            end 
-            if d_width > 0
-              pdf.SetY(top+1.5)
-              pdf.SetX(subject_width + i_left)
-              pdf.SetFillColor(100,100,255)
-              pdf.Cell(d_width, 2, "", 0, 0, "", 1)
-            end
-            
-            pdf.SetY(top+1.5)
-            pdf.SetX(subject_width + i_left + i_width)
-            pdf.Cell(30, 2, "#{i.status} #{i.done_ratio}%")
-          else
-            i_left = ((i.start_date - gantt.date_from)*zoom) 
-            
-            pdf.SetX(subject_width + i_left)
-            pdf.SetFillColor(50,200,50)
-            pdf.Cell(2, 2, "", 0, 0, "", 1) 
-        
-            pdf.SetY(top+1.5)
-            pdf.SetX(subject_width + i_left + 3)
-            pdf.Cell(30, 2, "#{i.name}")
-          end
-          
-          top = top + 5
-          pdf.SetDrawColor(200, 200, 200)
-          pdf.Line(15, top, subject_width+g_width, top)
-          if pdf.GetY() > 180
-            pdf.AddPage("L")
-            top = 20
-            pdf.Line(15, top, subject_width+g_width, top)
-          end
-          pdf.SetDrawColor(0, 0, 0)
-        end
-        
-        pdf.Line(15, top, subject_width+g_width, top)
-        pdf.Output
-      end
+
     end
   end
 end
--- a/lib/redmine/export/pdf.rb	Fri Sep 24 15:33:13 2010 +0100
+++ b/lib/redmine/export/pdf.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -154,7 +154,7 @@
           if query.grouped? && (group = query.group_by_column.value(issue)) != previous_group
             pdf.SetFontStyle('B',9)
             pdf.Cell(277, row_height, 
-              (group.blank? ? 'None' : group.to_s) + " (#{@issue_count_by_group[group]})",
+              (group.blank? ? 'None' : group.to_s) + " (#{query.issue_count_by_group[group]})",
               1, 1, 'L')
             pdf.SetFontStyle('',8)
             previous_group = group
@@ -184,7 +184,7 @@
         end
         pdf.Output
       end
-      
+
       # Returns a PDF string of a single issue
       def issue_to_pdf(issue)
         pdf = IFPDF.new(current_language)
@@ -208,7 +208,7 @@
         pdf.SetFontStyle('',9)
         pdf.Cell(60,5, issue.priority.to_s,"RT")        
         pdf.Ln
-          
+        
         pdf.SetFontStyle('B',9)
         pdf.Cell(35,5, l(:field_author) + ":","L")
         pdf.SetFontStyle('',9)
@@ -238,14 +238,14 @@
         pdf.SetFontStyle('',9)
         pdf.Cell(60,5, format_date(issue.due_date),"RB")
         pdf.Ln
-          
+        
         for custom_value in issue.custom_field_values
           pdf.SetFontStyle('B',9)
           pdf.Cell(35,5, custom_value.custom_field.name + ":","L")
           pdf.SetFontStyle('',9)
           pdf.MultiCell(155,5, (show_value custom_value),"R")
         end
-          
+        
         pdf.SetFontStyle('B',9)
         pdf.Cell(35,5, l(:field_subject) + ":","LTB")
         pdf.SetFontStyle('',9)
@@ -255,7 +255,7 @@
         pdf.SetFontStyle('B',9)
         pdf.Cell(35,5, l(:field_description) + ":")
         pdf.SetFontStyle('',9)
-        pdf.MultiCell(155,5, @issue.description,"BR")
+        pdf.MultiCell(155,5, issue.description,"BR")
         
         pdf.Line(pdf.GetX, y0, pdf.GetX, pdf.GetY)
         pdf.Line(pdf.GetX, pdf.GetY, 170, pdf.GetY)
@@ -311,187 +311,7 @@
         end
         pdf.Output
       end
-      
-      # Returns a PDF string of a gantt chart
-      def gantt_to_pdf(gantt, project)
-        pdf = IFPDF.new(current_language)
-        pdf.SetTitle("#{l(:label_gantt)} #{project}")
-        pdf.AliasNbPages
-        pdf.footer_date = format_date(Date.today)
-        pdf.AddPage("L")
-        pdf.SetFontStyle('B',12)
-        pdf.SetX(15)
-        pdf.Cell(70, 20, project.to_s)
-        pdf.Ln
-        pdf.SetFontStyle('B',9)
-        
-        subject_width = 100
-        header_heigth = 5
-        
-        headers_heigth = header_heigth
-        show_weeks = false
-        show_days = false
-        
-        if gantt.months < 7
-          show_weeks = true
-          headers_heigth = 2*header_heigth
-          if gantt.months < 3
-            show_days = true
-            headers_heigth = 3*header_heigth
-          end
-        end
-        
-        g_width = 280 - subject_width
-        zoom = (g_width) / (gantt.date_to - gantt.date_from + 1)
-        g_height = 120
-        t_height = g_height + headers_heigth
-        
-        y_start = pdf.GetY
-        
-        # Months headers
-        month_f = gantt.date_from
-        left = subject_width
-        height = header_heigth
-        gantt.months.times do 
-          width = ((month_f >> 1) - month_f) * zoom 
-          pdf.SetY(y_start)
-          pdf.SetX(left)
-          pdf.Cell(width, height, "#{month_f.year}-#{month_f.month}", "LTR", 0, "C")
-          left = left + width
-          month_f = month_f >> 1
-        end  
-        
-        # Weeks headers
-        if show_weeks
-          left = subject_width
-          height = header_heigth
-          if gantt.date_from.cwday == 1
-            # gantt.date_from is monday
-            week_f = gantt.date_from
-          else
-            # find next monday after gantt.date_from
-            week_f = gantt.date_from + (7 - gantt.date_from.cwday + 1)
-            width = (7 - gantt.date_from.cwday + 1) * zoom-1
-            pdf.SetY(y_start + header_heigth)
-            pdf.SetX(left)
-            pdf.Cell(width + 1, height, "", "LTR")
-            left = left + width+1
-          end
-          while week_f <= gantt.date_to
-            width = (week_f + 6 <= gantt.date_to) ? 7 * zoom : (gantt.date_to - week_f + 1) * zoom
-            pdf.SetY(y_start + header_heigth)
-            pdf.SetX(left)
-            pdf.Cell(width, height, (width >= 5 ? week_f.cweek.to_s : ""), "LTR", 0, "C")
-            left = left + width
-            week_f = week_f+7
-          end
-        end
-        
-        # Days headers
-        if show_days
-          left = subject_width
-          height = header_heigth
-          wday = gantt.date_from.cwday
-          pdf.SetFontStyle('B',7)
-          (gantt.date_to - gantt.date_from + 1).to_i.times do 
-            width = zoom
-            pdf.SetY(y_start + 2 * header_heigth)
-            pdf.SetX(left)
-            pdf.Cell(width, height, day_name(wday).first, "LTR", 0, "C")
-            left = left + width
-            wday = wday + 1
-            wday = 1 if wday > 7
-          end
-        end
-        
-        pdf.SetY(y_start)
-        pdf.SetX(15)
-        pdf.Cell(subject_width+g_width-15, headers_heigth, "", 1)
-        
-        # Tasks
-        top = headers_heigth + y_start
-        pdf.SetFontStyle('B',7)
-        gantt.events.each do |i|
-          pdf.SetY(top)
-          pdf.SetX(15)
-          
-          text = ""
-          if i.is_a? Issue
-            text = "#{i.tracker} #{i.id}: #{i.subject}"
-          else
-            text = i.name
-          end
-          text = "#{i.project} - #{text}" unless project && project == i.project
-          pdf.Cell(subject_width-15, 5, text, "LR")
-        
-          pdf.SetY(top + 0.2)
-          pdf.SetX(subject_width)
-          pdf.SetFillColor(255, 255, 255)
-          pdf.Cell(g_width, 4.6, "", "LR", 0, "", 1)
-          pdf.SetY(top+1.5)
-          
-          if i.is_a? Issue
-            i_start_date = (i.start_date >= gantt.date_from ? i.start_date : gantt.date_from )
-            i_end_date = (i.due_before <= gantt.date_to ? i.due_before : gantt.date_to )
-            
-            i_done_date = i.start_date + ((i.due_before - i.start_date+1)*i.done_ratio/100).floor
-            i_done_date = (i_done_date <= gantt.date_from ? gantt.date_from : i_done_date )
-            i_done_date = (i_done_date >= gantt.date_to ? gantt.date_to : i_done_date )
-            
-            i_late_date = [i_end_date, Date.today].min if i_start_date < Date.today
-            
-            i_left = ((i_start_date - gantt.date_from)*zoom) 
-            i_width = ((i_end_date - i_start_date + 1)*zoom)
-            d_width = ((i_done_date - i_start_date)*zoom)
-            l_width = ((i_late_date - i_start_date+1)*zoom) if i_late_date
-            l_width ||= 0
-          
-            pdf.SetX(subject_width + i_left)
-            pdf.SetFillColor(200,200,200)
-            pdf.Cell(i_width, 2, "", 0, 0, "", 1)
-          
-            if l_width > 0
-              pdf.SetY(top+1.5)
-              pdf.SetX(subject_width + i_left)
-              pdf.SetFillColor(255,100,100)
-              pdf.Cell(l_width, 2, "", 0, 0, "", 1)
-            end 
-            if d_width > 0
-              pdf.SetY(top+1.5)
-              pdf.SetX(subject_width + i_left)
-              pdf.SetFillColor(100,100,255)
-              pdf.Cell(d_width, 2, "", 0, 0, "", 1)
-            end
-            
-            pdf.SetY(top+1.5)
-            pdf.SetX(subject_width + i_left + i_width)
-            pdf.Cell(30, 2, "#{i.status} #{i.done_ratio}%")
-          else
-            i_left = ((i.start_date - gantt.date_from)*zoom) 
-            
-            pdf.SetX(subject_width + i_left)
-            pdf.SetFillColor(50,200,50)
-            pdf.Cell(2, 2, "", 0, 0, "", 1) 
-        
-            pdf.SetY(top+1.5)
-            pdf.SetX(subject_width + i_left + 3)
-            pdf.Cell(30, 2, "#{i.name}")
-          end
-          
-          top = top + 5
-          pdf.SetDrawColor(200, 200, 200)
-          pdf.Line(15, top, subject_width+g_width, top)
-          if pdf.GetY() > 180
-            pdf.AddPage("L")
-            top = 20
-            pdf.Line(15, top, subject_width+g_width, top)
-          end
-          pdf.SetDrawColor(0, 0, 0)
-        end
-        
-        pdf.Line(15, top, subject_width+g_width, top)
-        pdf.Output
-      end
+
     end
   end
 end
--- a/lib/redmine/helpers/.svn/all-wcprops	Fri Sep 24 15:33:13 2010 +0100
+++ b/lib/redmine/helpers/.svn/all-wcprops	Fri Sep 24 15:51:28 2010 +0100
@@ -1,13 +1,13 @@
 K 25
 svn:wc:ra_dav:version-url
 V 44
-/svn/!svn/ver/3885/trunk/lib/redmine/helpers
+/svn/!svn/ver/4074/trunk/lib/redmine/helpers
 END
 gantt.rb
 K 25
 svn:wc:ra_dav:version-url
 V 53
-/svn/!svn/ver/3885/trunk/lib/redmine/helpers/gantt.rb
+/svn/!svn/ver/4074/trunk/lib/redmine/helpers/gantt.rb
 END
 calendar.rb
 K 25
--- a/lib/redmine/helpers/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/lib/redmine/helpers/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,15 +1,15 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/lib/redmine/helpers
 http://redmine.rubyforge.org/svn
 
 
 
-2010-07-25T11:43:19.719822Z
-3885
-jplang
+2010-09-10T03:09:18.467829Z
+4074
+edavis10
 
 
 
@@ -32,11 +32,11 @@
 
 
 
-2010-07-28T11:07:47.488255Z
-2181b2348a3f0793891623cc0c97fae3
-2010-07-25T11:43:19.719822Z
-3885
-jplang
+2010-09-24T12:48:29.795823Z
+b227b416933df707aaa9a62cb52a3f9e
+2010-09-10T03:09:18.467829Z
+4074
+edavis10
 has-props
 
 
@@ -58,7 +58,7 @@
 
 
 
-10558
+40757
 
 calendar.rb
 file
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:47.420153Z
+2010-09-23T14:37:45.027790Z
 0a7d81755cf7c1519d4b4c1d84712139
 2009-12-13T04:06:55.726600Z
 3166
--- a/lib/redmine/helpers/.svn/text-base/gantt.rb.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/lib/redmine/helpers/.svn/text-base/gantt.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -19,11 +19,28 @@
   module Helpers
     # Simple class to handle gantt chart data
     class Gantt
-      attr_reader :year_from, :month_from, :date_from, :date_to, :zoom, :months, :events
-    
+      include ERB::Util
+      include Redmine::I18n
+
+      # :nodoc:
+      # Some utility methods for the PDF export
+      class PDF
+        MaxCharactorsForSubject = 45
+        TotalWidth = 280
+        LeftPaneWidth = 100
+
+        def self.right_pane_width
+          TotalWidth - LeftPaneWidth
+        end
+      end
+
+      attr_reader :year_from, :month_from, :date_from, :date_to, :zoom, :months
+      attr_accessor :query
+      attr_accessor :project
+      attr_accessor :view
+      
       def initialize(options={})
         options = options.dup
-        @events = []
         
         if options[:year] && options[:year].to_i >0
           @year_from = options[:year].to_i
@@ -51,47 +68,668 @@
         @date_from = Date.civil(@year_from, @month_from, 1)
         @date_to = (@date_from >> @months) - 1
       end
-      
-      
-      def events=(e)
-        @events = e
-        # Adds all ancestors
-        root_ids = e.select {|i| i.is_a?(Issue) && i.parent_id? }.collect(&:root_id).uniq
-        if root_ids.any?
-          # Retrieves all nodes
-          parents = Issue.find_all_by_root_id(root_ids, :conditions => ["rgt - lft > 1"])
-          # Only add ancestors
-          @events += parents.select {|p| @events.detect {|i| i.is_a?(Issue) && p.is_ancestor_of?(i)}}
-        end
-        @events.uniq!
-        # Sort issues by hierarchy and start dates
-        @events.sort! {|x,y| 
-          if x.is_a?(Issue) && y.is_a?(Issue)
-            gantt_issue_compare(x, y, @events)
-          else
-            gantt_start_compare(x, y)
-          end
-        }
-        # Removes issues that have no start or end date
-        @events.reject! {|i| i.is_a?(Issue) && (i.start_date.nil? || i.due_before.nil?) }
-        @events
+
+      def common_params
+        { :controller => 'gantts', :action => 'show', :project_id => @project }
       end
       
       def params
-        { :zoom => zoom, :year => year_from, :month => month_from, :months => months }
+        common_params.merge({  :zoom => zoom, :year => year_from, :month => month_from, :months => months })
       end
       
       def params_previous
-        { :year => (date_from << months).year, :month => (date_from << months).month, :zoom => zoom, :months => months }
+        common_params.merge({:year => (date_from << months).year, :month => (date_from << months).month, :zoom => zoom, :months => months })
       end
       
       def params_next
-        { :year => (date_from >> months).year, :month => (date_from >> months).month, :zoom => zoom, :months => months }
+        common_params.merge({:year => (date_from >> months).year, :month => (date_from >> months).month, :zoom => zoom, :months => months })
       end
-      
+
+            ### Extracted from the HTML view/helpers
+      # Returns the number of rows that will be rendered on the Gantt chart
+      def number_of_rows
+        if @project
+          return number_of_rows_on_project(@project)
+        else
+          Project.roots.inject(0) do |total, project|
+            total += number_of_rows_on_project(project)
+          end
+        end
+      end
+
+      # Returns the number of rows that will be used to list a project on
+      # the Gantt chart.  This will recurse for each subproject.
+      def number_of_rows_on_project(project)
+        # Remove the project requirement for Versions because it will
+        # restrict issues to only be on the current project.  This
+        # ends up missing issues which are assigned to shared versions.
+        @query.project = nil if @query.project
+
+        # One Root project
+        count = 1
+        # Issues without a Version
+        count += project.issues.for_gantt.without_version.with_query(@query).count
+
+        # Versions
+        count += project.versions.count
+
+        # Issues on the Versions
+        project.versions.each do |version|
+          count += version.fixed_issues.for_gantt.with_query(@query).count
+        end
+
+        # Subprojects
+        project.children.each do |subproject|
+          count += number_of_rows_on_project(subproject)
+        end
+
+        count
+      end
+
+      # Renders the subjects of the Gantt chart, the left side.
+      def subjects(options={})
+        options = {:indent => 4, :render => :subject, :format => :html}.merge(options)
+
+        output = ''
+        if @project
+          output << render_project(@project, options)
+        else
+          Project.roots.each do |project|
+            output << render_project(project, options)
+          end
+        end
+
+        output
+      end
+
+      # Renders the lines of the Gantt chart, the right side
+      def lines(options={})
+        options = {:indent => 4, :render => :line, :format => :html}.merge(options)
+        output = ''
+
+        if @project
+          output << render_project(@project, options)
+        else
+          Project.roots.each do |project|
+            output << render_project(project, options)
+          end
+        end
+        
+        output
+      end
+
+      def render_project(project, options={})
+        options[:top] = 0 unless options.key? :top
+        options[:indent_increment] = 20 unless options.key? :indent_increment
+        options[:top_increment] = 20 unless options.key? :top_increment
+
+        output = ''
+        # Project Header
+        project_header = if options[:render] == :subject
+                           subject_for_project(project, options)
+                         else
+                           # :line
+                           line_for_project(project, options)
+                         end
+        output << project_header if options[:format] == :html
+        
+        options[:top] += options[:top_increment]
+        options[:indent] += options[:indent_increment]
+        
+        # Second, Issues without a version
+        issues = project.issues.for_gantt.without_version.with_query(@query)
+        if issues
+          issue_rendering = render_issues(issues, options)
+          output << issue_rendering if options[:format] == :html
+        end
+
+        # Third, Versions
+        project.versions.sort.each do |version|
+          version_rendering = render_version(version, options)
+          output << version_rendering if options[:format] == :html
+        end
+
+        # Fourth, subprojects
+        project.children.each do |project|
+          subproject_rendering = render_project(project, options)
+          output << subproject_rendering if options[:format] == :html
+        end
+
+        # Remove indent to hit the next sibling
+        options[:indent] -= options[:indent_increment]
+        
+        output
+      end
+
+      def render_issues(issues, options={})
+        output = ''
+        issues.each do |i|
+          issue_rendering = if options[:render] == :subject
+                              subject_for_issue(i, options)
+                            else
+                              # :line
+                              line_for_issue(i, options)
+                            end
+          output << issue_rendering if options[:format] == :html
+          options[:top] += options[:top_increment]
+        end
+        output
+      end
+
+      def render_version(version, options={})
+        output = ''
+        # Version header
+        version_rendering = if options[:render] == :subject
+                              subject_for_version(version, options)
+                            else
+                              # :line
+                              line_for_version(version, options)
+                            end
+
+        output << version_rendering if options[:format] == :html
+        
+        options[:top] += options[:top_increment]
+
+        # Remove the project requirement for Versions because it will
+        # restrict issues to only be on the current project.  This
+        # ends up missing issues which are assigned to shared versions.
+        @query.project = nil if @query.project
+        
+        issues = version.fixed_issues.for_gantt.with_query(@query)
+        if issues
+          # Indent issues
+          options[:indent] += options[:indent_increment]
+          output << render_issues(issues, options)
+          options[:indent] -= options[:indent_increment]
+        end
+
+        output
+      end
+
+      def subject_for_project(project, options)
+        case options[:format]
+        when :html
+          output = ''
+
+          output << "<div class='project-name' style='position: absolute;line-height:1.2em;height:16px;top:#{options[:top]}px;left:#{options[:indent]}px;overflow:hidden;'><small>    "
+          if project.is_a? Project
+            output << "<span class='icon icon-projects #{project.overdue? ? 'project-overdue' : ''}'>"
+            output << view.link_to_project(project)
+            output << '</span>'
+          else
+            ActiveRecord::Base.logger.debug "Gantt#subject_for_project was not given a project"
+            ''
+          end
+          output << "</small></div>"
+
+          output
+        when :image
+          
+          options[:image].fill('black')
+          options[:image].stroke('transparent')
+          options[:image].stroke_width(1)
+          options[:image].text(options[:indent], options[:top] + 2, project.name)
+        when :pdf
+          options[:pdf].SetY(options[:top])
+          options[:pdf].SetX(15)
+          
+          char_limit = PDF::MaxCharactorsForSubject - options[:indent]
+          options[:pdf].Cell(options[:subject_width]-15, 5, (" " * options[:indent]) +"#{project.name}".sub(/^(.{#{char_limit}}[^\s]*\s).*$/, '\1 (...)'), "LR")
+        
+          options[:pdf].SetY(options[:top])
+          options[:pdf].SetX(options[:subject_width])
+          options[:pdf].Cell(options[:g_width], 5, "", "LR")
+        end
+      end
+
+      def line_for_project(project, options)
+        # Skip versions that don't have a start_date
+        if project.is_a?(Project) && project.start_date
+          options[:zoom] ||= 1
+          options[:g_width] ||= (self.date_to - self.date_from + 1) * options[:zoom]
+
+          
+          case options[:format]
+          when :html
+            output = ''
+            i_left = ((project.start_date - self.date_from)*options[:zoom]).floor
+
+            start_date = project.start_date
+            start_date ||= self.date_from
+            start_left = ((start_date - self.date_from)*options[:zoom]).floor
+
+            i_end_date = ((project.due_date <= self.date_to) ? project.due_date : self.date_to )
+            i_done_date = start_date + ((project.due_date - start_date+1)* project.completed_percent(:include_subprojects => true)/100).floor
+            i_done_date = (i_done_date <= self.date_from ? self.date_from : i_done_date )
+            i_done_date = (i_done_date >= self.date_to ? self.date_to : i_done_date )
+            
+            i_late_date = [i_end_date, Date.today].min if start_date < Date.today
+            i_end = ((i_end_date - self.date_from) * options[:zoom]).floor
+
+            i_width = (i_end - i_left + 1).floor - 2                  # total width of the issue (- 2 for left and right borders)
+            d_width = ((i_done_date - start_date)*options[:zoom]).floor - 2                     # done width
+            l_width = i_late_date ? ((i_late_date - start_date+1)*options[:zoom]).floor - 2 : 0 # delay width
+
+            # Bar graphic
+
+            # Make sure that negative i_left and i_width don't
+            # overflow the subject
+            if i_end > 0 && i_left <= options[:g_width]
+              output << "<div style='top:#{ options[:top] }px;left:#{ start_left }px;width:#{ i_width }px;' class='task project_todo'>&nbsp;</div>"
+            end
+            
+            if l_width > 0 && i_left <= options[:g_width]
+              output << "<div style='top:#{ options[:top] }px;left:#{ start_left }px;width:#{ l_width }px;' class='task project_late'>&nbsp;</div>"
+            end
+            if d_width > 0 && i_left <= options[:g_width]
+              output<< "<div style='top:#{ options[:top] }px;left:#{ start_left }px;width:#{ d_width }px;' class='task project_done'>&nbsp;</div>"
+            end
+
+            
+            # Starting diamond
+            if start_left <= options[:g_width] && start_left > 0
+              output << "<div style='top:#{ options[:top] }px;left:#{ start_left }px;width:15px;' class='task project-line starting'>&nbsp;</div>"
+              output << "<div style='top:#{ options[:top] }px;left:#{ start_left + 12 }px;' class='task label'>"
+              output << "</div>"
+            end
+
+            # Ending diamond
+            # Don't show items too far ahead
+            if i_end <= options[:g_width] && i_end > 0
+              output << "<div style='top:#{ options[:top] }px;left:#{ i_end }px;width:15px;' class='task project-line ending'>&nbsp;</div>"
+            end
+
+            # DIsplay the Project name and %
+            if i_end <= options[:g_width]
+              # Display the status even if it's floated off to the left
+              status_px = i_end + 12 # 12px for the diamond
+              status_px = 0 if status_px <= 0
+
+              output << "<div style='top:#{ options[:top] }px;left:#{ status_px }px;' class='task label project-name'>"
+              output << "<strong>#{h project } #{h project.completed_percent(:include_subprojects => true).to_i.to_s}%</strong>"
+              output << "</div>"
+            end
+
+            output
+          when :image
+            options[:image].stroke('transparent')
+            i_left = options[:subject_width] + ((project.due_date - self.date_from)*options[:zoom]).floor
+
+            # Make sure negative i_left doesn't overflow the subject
+            if i_left > options[:subject_width]
+              options[:image].fill('blue')
+              options[:image].rectangle(i_left, options[:top], i_left + 6, options[:top] - 6)        
+              options[:image].fill('black')
+              options[:image].text(i_left + 11, options[:top] + 1, project.name)
+            end
+          when :pdf
+            options[:pdf].SetY(options[:top]+1.5)
+            i_left = ((project.due_date - @date_from)*options[:zoom])
+
+            # Make sure negative i_left doesn't overflow the subject
+            if i_left > 0
+              options[:pdf].SetX(options[:subject_width] + i_left)
+              options[:pdf].SetFillColor(50,50,200)
+              options[:pdf].Cell(2, 2, "", 0, 0, "", 1) 
+        
+              options[:pdf].SetY(options[:top]+1.5)
+              options[:pdf].SetX(options[:subject_width] + i_left + 3)
+              options[:pdf].Cell(30, 2, "#{project.name}")
+            end
+          end
+        else
+          ActiveRecord::Base.logger.debug "Gantt#line_for_project was not given a project with a start_date"
+          ''
+        end
+      end
+
+      def subject_for_version(version, options)
+        case options[:format]
+        when :html
+          output = ''
+          output << "<div class='version-name' style='position: absolute;line-height:1.2em;height:16px;top:#{options[:top]}px;left:#{options[:indent]}px;overflow:hidden;'><small>    "
+          if version.is_a? Version
+            output << "<span class='icon icon-package #{version.behind_schedule? ? 'version-behind-schedule' : ''} #{version.overdue? ? 'version-overdue' : ''}'>"
+            output << view.link_to_version(version)
+            output << '</span>'
+          else
+            ActiveRecord::Base.logger.debug "Gantt#subject_for_version was not given a version"
+            ''
+          end
+          output << "</small></div>"
+
+          output
+        when :image
+          options[:image].fill('black')
+          options[:image].stroke('transparent')
+          options[:image].stroke_width(1)
+          options[:image].text(options[:indent], options[:top] + 2, version.to_s_with_project)
+        when :pdf
+          options[:pdf].SetY(options[:top])
+          options[:pdf].SetX(15)
+          
+          char_limit = PDF::MaxCharactorsForSubject - options[:indent]
+          options[:pdf].Cell(options[:subject_width]-15, 5, (" " * options[:indent]) +"#{version.to_s_with_project}".sub(/^(.{#{char_limit}}[^\s]*\s).*$/, '\1 (...)'), "LR")
+        
+          options[:pdf].SetY(options[:top])
+          options[:pdf].SetX(options[:subject_width])
+          options[:pdf].Cell(options[:g_width], 5, "", "LR")
+        end
+      end
+
+      def line_for_version(version, options)
+        # Skip versions that don't have a start_date
+        if version.is_a?(Version) && version.start_date
+          options[:zoom] ||= 1
+          options[:g_width] ||= (self.date_to - self.date_from + 1) * options[:zoom]
+
+          case options[:format]
+          when :html
+            output = ''
+            i_left = ((version.start_date - self.date_from)*options[:zoom]).floor
+            # TODO: or version.fixed_issues.collect(&:start_date).min
+            start_date = version.fixed_issues.minimum('start_date') if version.fixed_issues.present?
+            start_date ||= self.date_from
+            start_left = ((start_date - self.date_from)*options[:zoom]).floor
+
+            i_end_date = ((version.due_date <= self.date_to) ? version.due_date : self.date_to )
+            i_done_date = start_date + ((version.due_date - start_date+1)* version.completed_pourcent/100).floor
+            i_done_date = (i_done_date <= self.date_from ? self.date_from : i_done_date )
+            i_done_date = (i_done_date >= self.date_to ? self.date_to : i_done_date )
+            
+            i_late_date = [i_end_date, Date.today].min if start_date < Date.today
+
+            i_width = (i_left - start_left + 1).floor - 2                  # total width of the issue (- 2 for left and right borders)
+            d_width = ((i_done_date - start_date)*options[:zoom]).floor - 2                     # done width
+            l_width = i_late_date ? ((i_late_date - start_date+1)*options[:zoom]).floor - 2 : 0 # delay width
+
+            i_end = ((i_end_date - self.date_from) * options[:zoom]).floor # Ending pixel
+
+            # Bar graphic
+
+            # Make sure that negative i_left and i_width don't
+            # overflow the subject
+            if i_width > 0 && i_left <= options[:g_width]
+              output << "<div style='top:#{ options[:top] }px;left:#{ start_left }px;width:#{ i_width }px;' class='task milestone_todo'>&nbsp;</div>"
+            end
+            if l_width > 0 && i_left <= options[:g_width]
+              output << "<div style='top:#{ options[:top] }px;left:#{ start_left }px;width:#{ l_width }px;' class='task milestone_late'>&nbsp;</div>"
+            end
+            if d_width > 0 && i_left <= options[:g_width]
+              output<< "<div style='top:#{ options[:top] }px;left:#{ start_left }px;width:#{ d_width }px;' class='task milestone_done'>&nbsp;</div>"
+            end
+
+            
+            # Starting diamond
+            if start_left <= options[:g_width] && start_left > 0
+              output << "<div style='top:#{ options[:top] }px;left:#{ start_left }px;width:15px;' class='task milestone starting'>&nbsp;</div>"
+              output << "<div style='top:#{ options[:top] }px;left:#{ start_left + 12 }px;background:#fff;' class='task'>"
+              output << "</div>"
+            end
+
+            # Ending diamond
+            # Don't show items too far ahead
+            if i_left <= options[:g_width] && i_end > 0
+              output << "<div style='top:#{ options[:top] }px;left:#{ i_end }px;width:15px;' class='task milestone ending'>&nbsp;</div>"
+            end
+
+            # Display the Version name and %
+            if i_end <= options[:g_width]
+              # Display the status even if it's floated off to the left
+              status_px = i_end + 12 # 12px for the diamond
+              status_px = 0 if status_px <= 0
+              
+              output << "<div style='top:#{ options[:top] }px;left:#{ status_px }px;' class='task label version-name'>"
+              output << h("#{version.project} -") unless @project && @project == version.project
+              output << "<strong>#{h version } #{h version.completed_pourcent.to_i.to_s}%</strong>"
+              output << "</div>"
+            end
+
+            output
+          when :image
+            options[:image].stroke('transparent')
+            i_left = options[:subject_width] + ((version.start_date - @date_from)*options[:zoom]).floor
+
+            # Make sure negative i_left doesn't overflow the subject
+            if i_left > options[:subject_width]
+              options[:image].fill('green')
+              options[:image].rectangle(i_left, options[:top], i_left + 6, options[:top] - 6)        
+              options[:image].fill('black')
+              options[:image].text(i_left + 11, options[:top] + 1, version.name)
+            end
+          when :pdf
+            options[:pdf].SetY(options[:top]+1.5)
+            i_left = ((version.start_date - @date_from)*options[:zoom]) 
+
+            # Make sure negative i_left doesn't overflow the subject
+            if i_left > 0
+              options[:pdf].SetX(options[:subject_width] + i_left)
+              options[:pdf].SetFillColor(50,200,50)
+              options[:pdf].Cell(2, 2, "", 0, 0, "", 1) 
+        
+              options[:pdf].SetY(options[:top]+1.5)
+              options[:pdf].SetX(options[:subject_width] + i_left + 3)
+              options[:pdf].Cell(30, 2, "#{version.name}")
+            end
+          end
+        else
+          ActiveRecord::Base.logger.debug "Gantt#line_for_version was not given a version with a start_date"
+          ''
+        end
+      end
+
+      def subject_for_issue(issue, options)
+        case options[:format]
+        when :html
+          output = ''
+          output << "<div class='tooltip'>"
+          output << "<div class='issue-subject' style='position: absolute;line-height:1.2em;height:16px;top:#{options[:top]}px;left:#{options[:indent]}px;overflow:hidden;'><small>    "
+          if issue.is_a? Issue
+            css_classes = []
+            css_classes << 'issue-overdue' if issue.overdue?
+            css_classes << 'issue-behind-schedule' if issue.behind_schedule?
+            css_classes << 'icon icon-issue' unless Setting.gravatar_enabled? && issue.assigned_to
+
+            if issue.assigned_to.present?
+              assigned_string = l(:field_assigned_to) + ": " + issue.assigned_to.name
+              output << view.avatar(issue.assigned_to, :class => 'gravatar icon-gravatar', :size => 10, :title => assigned_string)
+            end
+            output << "<span class='#{css_classes.join(' ')}'>"
+            output << view.link_to_issue(issue)
+            output << ":"
+            output << h(issue.subject)
+            output << '</span>'
+          else
+            ActiveRecord::Base.logger.debug "Gantt#subject_for_issue was not given an issue"
+            ''
+          end
+          output << "</small></div>"
+
+          # Tooltip
+          if issue.is_a? Issue
+            output << "<span class='tip' style='position: absolute;top:#{ options[:top].to_i + 16 }px;left:#{ options[:indent].to_i + 20 }px;'>"
+            output << view.render_issue_tooltip(issue)
+            output << "</span>"
+          end
+
+          output << "</div>"
+          output
+        when :image
+          options[:image].fill('black')
+          options[:image].stroke('transparent')
+          options[:image].stroke_width(1)
+          options[:image].text(options[:indent], options[:top] + 2, issue.subject)
+        when :pdf
+          options[:pdf].SetY(options[:top])
+          options[:pdf].SetX(15)
+          
+          char_limit = PDF::MaxCharactorsForSubject - options[:indent]
+          options[:pdf].Cell(options[:subject_width]-15, 5, (" " * options[:indent]) +"#{issue.tracker} #{issue.id}: #{issue.subject}".sub(/^(.{#{char_limit}}[^\s]*\s).*$/, '\1 (...)'), "LR")
+        
+          options[:pdf].SetY(options[:top])
+          options[:pdf].SetX(options[:subject_width])
+          options[:pdf].Cell(options[:g_width], 5, "", "LR")
+        end
+      end
+
+      def line_for_issue(issue, options)
+        # Skip issues that don't have a due_before (due_date or version's due_date)
+        if issue.is_a?(Issue) && issue.due_before
+          case options[:format]
+          when :html
+            output = ''
+            # Handle nil start_dates, rare but can happen.
+            i_start_date =  if issue.start_date && issue.start_date >= self.date_from
+                              issue.start_date
+                            else
+                              self.date_from
+                            end
+
+            i_end_date = ((issue.due_before && issue.due_before <= self.date_to) ? issue.due_before : self.date_to )
+            i_done_date = i_start_date + ((issue.due_before - i_start_date+1)*issue.done_ratio/100).floor
+            i_done_date = (i_done_date <= self.date_from ? self.date_from : i_done_date )
+            i_done_date = (i_done_date >= self.date_to ? self.date_to : i_done_date )
+            
+            i_late_date = [i_end_date, Date.today].min if i_start_date < Date.today
+            
+            i_left = ((i_start_date - self.date_from)*options[:zoom]).floor 	
+            i_width = ((i_end_date - i_start_date + 1)*options[:zoom]).floor - 2                  # total width of the issue (- 2 for left and right borders)
+            d_width = ((i_done_date - i_start_date)*options[:zoom]).floor - 2                     # done width
+            l_width = i_late_date ? ((i_late_date - i_start_date+1)*options[:zoom]).floor - 2 : 0 # delay width
+            css = "task " + (issue.leaf? ? 'leaf' : 'parent')
+            
+            # Make sure that negative i_left and i_width don't
+            # overflow the subject
+            if i_width > 0
+              output << "<div style='top:#{ options[:top] }px;left:#{ i_left }px;width:#{ i_width }px;' class='#{css} task_todo'>&nbsp;</div>"
+            end
+            if l_width > 0
+              output << "<div style='top:#{ options[:top] }px;left:#{ i_left }px;width:#{ l_width }px;' class='#{css} task_late'>&nbsp;</div>"
+            end
+            if d_width > 0
+              output<< "<div style='top:#{ options[:top] }px;left:#{ i_left }px;width:#{ d_width }px;' class='#{css} task_done'>&nbsp;</div>"
+            end
+
+            # Display the status even if it's floated off to the left
+            status_px = i_left + i_width + 5
+            status_px = 5 if status_px <= 0
+            
+            output << "<div style='top:#{ options[:top] }px;left:#{ status_px }px;' class='#{css} label issue-name'>"
+            output << issue.status.name
+            output << ' '
+            output << (issue.done_ratio).to_i.to_s
+            output << "%"
+            output << "</div>"
+
+            output << "<div class='tooltip' style='position: absolute;top:#{ options[:top] }px;left:#{ i_left }px;width:#{ i_width }px;height:12px;'>"
+            output << '<span class="tip">'
+            output << view.render_issue_tooltip(issue)
+            output << "</span></div>"
+            output
+          
+          when :image
+            # Handle nil start_dates, rare but can happen.
+            i_start_date =  if issue.start_date && issue.start_date >= @date_from
+                              issue.start_date
+                            else
+                              @date_from
+                            end
+
+            i_end_date = (issue.due_before <= date_to ? issue.due_before : date_to )        
+            i_done_date = i_start_date + ((issue.due_before - i_start_date+1)*issue.done_ratio/100).floor
+            i_done_date = (i_done_date <= @date_from ? @date_from : i_done_date )
+            i_done_date = (i_done_date >= date_to ? date_to : i_done_date )        
+            i_late_date = [i_end_date, Date.today].min if i_start_date < Date.today
+            
+            i_left = options[:subject_width] + ((i_start_date - @date_from)*options[:zoom]).floor 	
+            i_width = ((i_end_date - i_start_date + 1)*options[:zoom]).floor                  # total width of the issue
+            d_width = ((i_done_date - i_start_date)*options[:zoom]).floor                     # done width
+            l_width = i_late_date ? ((i_late_date - i_start_date+1)*options[:zoom]).floor : 0 # delay width
+
+            
+            # Make sure that negative i_left and i_width don't
+            # overflow the subject
+            if i_width > 0
+              options[:image].fill('grey')
+              options[:image].rectangle(i_left, options[:top], i_left + i_width, options[:top] - 6)
+              options[:image].fill('red')
+              options[:image].rectangle(i_left, options[:top], i_left + l_width, options[:top] - 6) if l_width > 0
+              options[:image].fill('blue')
+              options[:image].rectangle(i_left, options[:top], i_left + d_width, options[:top] - 6) if d_width > 0
+            end
+
+            # Show the status and % done next to the subject if it overflows
+            options[:image].fill('black')
+            if i_width > 0
+              options[:image].text(i_left + i_width + 5,options[:top] + 1, "#{issue.status.name} #{issue.done_ratio}%")
+            else
+              options[:image].text(options[:subject_width] + 5,options[:top] + 1, "#{issue.status.name} #{issue.done_ratio}%")            
+            end
+
+          when :pdf
+            options[:pdf].SetY(options[:top]+1.5)
+            # Handle nil start_dates, rare but can happen.
+            i_start_date =  if issue.start_date && issue.start_date >= @date_from
+                          issue.start_date
+                        else
+                          @date_from
+                        end
+
+            i_end_date = (issue.due_before <= @date_to ? issue.due_before : @date_to )
+            
+            i_done_date = i_start_date + ((issue.due_before - i_start_date+1)*issue.done_ratio/100).floor
+            i_done_date = (i_done_date <= @date_from ? @date_from : i_done_date )
+            i_done_date = (i_done_date >= @date_to ? @date_to : i_done_date )
+            
+            i_late_date = [i_end_date, Date.today].min if i_start_date < Date.today
+            
+            i_left = ((i_start_date - @date_from)*options[:zoom]) 
+            i_width = ((i_end_date - i_start_date + 1)*options[:zoom])
+            d_width = ((i_done_date - i_start_date)*options[:zoom])
+            l_width = ((i_late_date - i_start_date+1)*options[:zoom]) if i_late_date
+            l_width ||= 0
+
+            # Make sure that negative i_left and i_width don't
+            # overflow the subject
+            if i_width > 0
+              options[:pdf].SetX(options[:subject_width] + i_left)
+              options[:pdf].SetFillColor(200,200,200)
+              options[:pdf].Cell(i_width, 2, "", 0, 0, "", 1)
+            end
+          
+            if l_width > 0
+              options[:pdf].SetY(options[:top]+1.5)
+              options[:pdf].SetX(options[:subject_width] + i_left)
+              options[:pdf].SetFillColor(255,100,100)
+              options[:pdf].Cell(l_width, 2, "", 0, 0, "", 1)
+            end 
+            if d_width > 0
+              options[:pdf].SetY(options[:top]+1.5)
+              options[:pdf].SetX(options[:subject_width] + i_left)
+              options[:pdf].SetFillColor(100,100,255)
+              options[:pdf].Cell(d_width, 2, "", 0, 0, "", 1)
+            end
+
+            options[:pdf].SetY(options[:top]+1.5)
+
+            # Make sure that negative i_left and i_width don't
+            # overflow the subject
+            if (i_left + i_width) >= 0
+              options[:pdf].SetX(options[:subject_width] + i_left + i_width)
+            else
+              options[:pdf].SetX(options[:subject_width])
+            end
+            options[:pdf].Cell(30, 2, "#{issue.status} #{issue.done_ratio}%")
+          end
+        else
+          ActiveRecord::Base.logger.debug "GanttHelper#line_for_issue was not given an issue with a due_before"
+          ''
+        end
+      end
+
       # Generates a gantt image
       # Only defined if RMagick is avalaible
-      def to_image(project, format='PNG')
+      def to_image(format='PNG')
         date_to = (@date_from >> @months)-1    
         show_weeks = @zoom > 1
         show_days = @zoom > 2
@@ -101,7 +739,7 @@
         # width of one day in pixels
         zoom = @zoom*2
         g_width = (@date_to - @date_from + 1)*zoom
-        g_height = 20 * events.length + 20
+        g_height = 20 * number_of_rows + 30
         headers_heigth = (show_weeks ? 2*header_heigth : header_heigth)
         height = g_height + headers_heigth
             
@@ -110,21 +748,7 @@
         gc = Magick::Draw.new
         
         # Subjects
-        top = headers_heigth + 20
-        gc.fill('black')
-        gc.stroke('transparent')
-        gc.stroke_width(1)
-        events.each do |i|
-          text = ""
-          if i.is_a? Issue
-            text = "#{i.tracker} #{i.id}: #{i.subject}"
-          else
-            text = i.name
-          end
-          text = "#{i.project} - #{text}" unless project && project == i.project
-          gc.text(4, top + 2, text)
-          top = top + 20
-        end
+        subjects(:image => gc, :top => (headers_heigth + 20), :indent => 4, :format => :image)
     
         # Months headers
         month_f = @date_from
@@ -202,38 +826,8 @@
             
         # content
         top = headers_heigth + 20
-        gc.stroke('transparent')
-        events.each do |i|      
-          if i.is_a?(Issue)       
-            i_start_date = (i.start_date >= @date_from ? i.start_date : @date_from )
-            i_end_date = (i.due_before <= date_to ? i.due_before : date_to )        
-            i_done_date = i.start_date + ((i.due_before - i.start_date+1)*i.done_ratio/100).floor
-            i_done_date = (i_done_date <= @date_from ? @date_from : i_done_date )
-            i_done_date = (i_done_date >= date_to ? date_to : i_done_date )        
-            i_late_date = [i_end_date, Date.today].min if i_start_date < Date.today
-            
-            i_left = subject_width + ((i_start_date - @date_from)*zoom).floor 	
-            i_width = ((i_end_date - i_start_date + 1)*zoom).floor                  # total width of the issue
-            d_width = ((i_done_date - i_start_date)*zoom).floor                     # done width
-            l_width = i_late_date ? ((i_late_date - i_start_date+1)*zoom).floor : 0 # delay width
-      
-            gc.fill('grey')
-            gc.rectangle(i_left, top, i_left + i_width, top - 6)
-            gc.fill('red')
-            gc.rectangle(i_left, top, i_left + l_width, top - 6) if l_width > 0
-            gc.fill('blue')
-            gc.rectangle(i_left, top, i_left + d_width, top - 6) if d_width > 0
-            gc.fill('black')
-            gc.text(i_left + i_width + 5,top + 1, "#{i.status.name} #{i.done_ratio}%")
-          else
-            i_left = subject_width + ((i.start_date - @date_from)*zoom).floor
-            gc.fill('green')
-            gc.rectangle(i_left, top, i_left + 6, top - 6)        
-            gc.fill('black')
-            gc.text(i_left + 11, top + 1, i.name)
-          end
-          top = top + 20
-        end
+        
+        lines(:image => gc, :top => top, :zoom => zoom, :subject_width => subject_width, :format => :image)
         
         # today red line
         if Date.today >= @date_from and Date.today <= date_to
@@ -246,36 +840,137 @@
         imgl.format = format
         imgl.to_blob
       end if Object.const_defined?(:Magick)
+
+      def to_pdf
+        pdf = ::Redmine::Export::PDF::IFPDF.new(current_language)
+        pdf.SetTitle("#{l(:label_gantt)} #{project}")
+        pdf.AliasNbPages
+        pdf.footer_date = format_date(Date.today)
+        pdf.AddPage("L")
+        pdf.SetFontStyle('B',12)
+        pdf.SetX(15)
+        pdf.Cell(PDF::LeftPaneWidth, 20, project.to_s)
+        pdf.Ln
+        pdf.SetFontStyle('B',9)
+        
+        subject_width = PDF::LeftPaneWidth
+        header_heigth = 5
+        
+        headers_heigth = header_heigth
+        show_weeks = false
+        show_days = false
+        
+        if self.months < 7
+          show_weeks = true
+          headers_heigth = 2*header_heigth
+          if self.months < 3
+            show_days = true
+            headers_heigth = 3*header_heigth
+          end
+        end
+        
+        g_width = PDF.right_pane_width
+        zoom = (g_width) / (self.date_to - self.date_from + 1)
+        g_height = 120
+        t_height = g_height + headers_heigth
+        
+        y_start = pdf.GetY
+        
+        # Months headers
+        month_f = self.date_from
+        left = subject_width
+        height = header_heigth
+        self.months.times do 
+          width = ((month_f >> 1) - month_f) * zoom 
+          pdf.SetY(y_start)
+          pdf.SetX(left)
+          pdf.Cell(width, height, "#{month_f.year}-#{month_f.month}", "LTR", 0, "C")
+          left = left + width
+          month_f = month_f >> 1
+        end  
+        
+        # Weeks headers
+        if show_weeks
+          left = subject_width
+          height = header_heigth
+          if self.date_from.cwday == 1
+            # self.date_from is monday
+            week_f = self.date_from
+          else
+            # find next monday after self.date_from
+            week_f = self.date_from + (7 - self.date_from.cwday + 1)
+            width = (7 - self.date_from.cwday + 1) * zoom-1
+            pdf.SetY(y_start + header_heigth)
+            pdf.SetX(left)
+            pdf.Cell(width + 1, height, "", "LTR")
+            left = left + width+1
+          end
+          while week_f <= self.date_to
+            width = (week_f + 6 <= self.date_to) ? 7 * zoom : (self.date_to - week_f + 1) * zoom
+            pdf.SetY(y_start + header_heigth)
+            pdf.SetX(left)
+            pdf.Cell(width, height, (width >= 5 ? week_f.cweek.to_s : ""), "LTR", 0, "C")
+            left = left + width
+            week_f = week_f+7
+          end
+        end
+        
+        # Days headers
+        if show_days
+          left = subject_width
+          height = header_heigth
+          wday = self.date_from.cwday
+          pdf.SetFontStyle('B',7)
+          (self.date_to - self.date_from + 1).to_i.times do 
+            width = zoom
+            pdf.SetY(y_start + 2 * header_heigth)
+            pdf.SetX(left)
+            pdf.Cell(width, height, day_name(wday).first, "LTR", 0, "C")
+            left = left + width
+            wday = wday + 1
+            wday = 1 if wday > 7
+          end
+        end
+        
+        pdf.SetY(y_start)
+        pdf.SetX(15)
+        pdf.Cell(subject_width+g_width-15, headers_heigth, "", 1)
+        
+        # Tasks
+        top = headers_heigth + y_start
+        pdf_subjects_and_lines(pdf, {
+                                 :top => top,
+                                 :zoom => zoom,
+                                 :subject_width => subject_width,
+                                 :g_width => g_width
+                               })
+
+        
+        pdf.Line(15, top, subject_width+g_width, top)
+        pdf.Output
+
+        
+      end
       
       private
-      
-      def gantt_issue_compare(x, y, issues)
-        if x.parent_id == y.parent_id
-          gantt_start_compare(x, y)
-        elsif x.is_ancestor_of?(y)
-          -1
-        elsif y.is_ancestor_of?(x)
-          1
+
+      # Renders both the subjects and lines of the Gantt chart for the
+      # PDF format
+      def pdf_subjects_and_lines(pdf, options = {})
+        subject_options = {:indent => 0, :indent_increment => 5, :top_increment => 3, :render => :subject, :format => :pdf, :pdf => pdf}.merge(options)
+        line_options = {:indent => 0, :indent_increment => 5, :top_increment => 3, :render => :line, :format => :pdf, :pdf => pdf}.merge(options)
+
+        if @project
+          render_project(@project, subject_options)
+          render_project(@project, line_options)
         else
-          ax = issues.select {|i| i.is_a?(Issue) && i.is_ancestor_of?(x) && !i.is_ancestor_of?(y) }.sort_by(&:lft).first
-          ay = issues.select {|i| i.is_a?(Issue) && i.is_ancestor_of?(y) && !i.is_ancestor_of?(x) }.sort_by(&:lft).first
-          if ax.nil? && ay.nil?
-            gantt_start_compare(x, y)
-          else
-            gantt_issue_compare(ax || x, ay || y, issues)
+          Project.roots.each do |project|
+            render_project(project, subject_options)
+            render_project(project, line_options)
           end
         end
       end
-      
-      def gantt_start_compare(x, y)
-        if x.start_date.nil?
-          -1
-        elsif y.start_date.nil?
-          1
-        else
-          x.start_date <=> y.start_date
-        end
-      end
+
     end
   end
 end
--- a/lib/redmine/helpers/gantt.rb	Fri Sep 24 15:33:13 2010 +0100
+++ b/lib/redmine/helpers/gantt.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -19,11 +19,28 @@
   module Helpers
     # Simple class to handle gantt chart data
     class Gantt
-      attr_reader :year_from, :month_from, :date_from, :date_to, :zoom, :months, :events
-    
+      include ERB::Util
+      include Redmine::I18n
+
+      # :nodoc:
+      # Some utility methods for the PDF export
+      class PDF
+        MaxCharactorsForSubject = 45
+        TotalWidth = 280
+        LeftPaneWidth = 100
+
+        def self.right_pane_width
+          TotalWidth - LeftPaneWidth
+        end
+      end
+
+      attr_reader :year_from, :month_from, :date_from, :date_to, :zoom, :months
+      attr_accessor :query
+      attr_accessor :project
+      attr_accessor :view
+      
       def initialize(options={})
         options = options.dup
-        @events = []
         
         if options[:year] && options[:year].to_i >0
           @year_from = options[:year].to_i
@@ -51,47 +68,668 @@
         @date_from = Date.civil(@year_from, @month_from, 1)
         @date_to = (@date_from >> @months) - 1
       end
-      
-      
-      def events=(e)
-        @events = e
-        # Adds all ancestors
-        root_ids = e.select {|i| i.is_a?(Issue) && i.parent_id? }.collect(&:root_id).uniq
-        if root_ids.any?
-          # Retrieves all nodes
-          parents = Issue.find_all_by_root_id(root_ids, :conditions => ["rgt - lft > 1"])
-          # Only add ancestors
-          @events += parents.select {|p| @events.detect {|i| i.is_a?(Issue) && p.is_ancestor_of?(i)}}
-        end
-        @events.uniq!
-        # Sort issues by hierarchy and start dates
-        @events.sort! {|x,y| 
-          if x.is_a?(Issue) && y.is_a?(Issue)
-            gantt_issue_compare(x, y, @events)
-          else
-            gantt_start_compare(x, y)
-          end
-        }
-        # Removes issues that have no start or end date
-        @events.reject! {|i| i.is_a?(Issue) && (i.start_date.nil? || i.due_before.nil?) }
-        @events
+
+      def common_params
+        { :controller => 'gantts', :action => 'show', :project_id => @project }
       end
       
       def params
-        { :zoom => zoom, :year => year_from, :month => month_from, :months => months }
+        common_params.merge({  :zoom => zoom, :year => year_from, :month => month_from, :months => months })
       end
       
       def params_previous
-        { :year => (date_from << months).year, :month => (date_from << months).month, :zoom => zoom, :months => months }
+        common_params.merge({:year => (date_from << months).year, :month => (date_from << months).month, :zoom => zoom, :months => months })
       end
       
       def params_next
-        { :year => (date_from >> months).year, :month => (date_from >> months).month, :zoom => zoom, :months => months }
+        common_params.merge({:year => (date_from >> months).year, :month => (date_from >> months).month, :zoom => zoom, :months => months })
       end
-      
+
+            ### Extracted from the HTML view/helpers
+      # Returns the number of rows that will be rendered on the Gantt chart
+      def number_of_rows
+        if @project
+          return number_of_rows_on_project(@project)
+        else
+          Project.roots.inject(0) do |total, project|
+            total += number_of_rows_on_project(project)
+          end
+        end
+      end
+
+      # Returns the number of rows that will be used to list a project on
+      # the Gantt chart.  This will recurse for each subproject.
+      def number_of_rows_on_project(project)
+        # Remove the project requirement for Versions because it will
+        # restrict issues to only be on the current project.  This
+        # ends up missing issues which are assigned to shared versions.
+        @query.project = nil if @query.project
+
+        # One Root project
+        count = 1
+        # Issues without a Version
+        count += project.issues.for_gantt.without_version.with_query(@query).count
+
+        # Versions
+        count += project.versions.count
+
+        # Issues on the Versions
+        project.versions.each do |version|
+          count += version.fixed_issues.for_gantt.with_query(@query).count
+        end
+
+        # Subprojects
+        project.children.each do |subproject|
+          count += number_of_rows_on_project(subproject)
+        end
+
+        count
+      end
+
+      # Renders the subjects of the Gantt chart, the left side.
+      def subjects(options={})
+        options = {:indent => 4, :render => :subject, :format => :html}.merge(options)
+
+        output = ''
+        if @project
+          output << render_project(@project, options)
+        else
+          Project.roots.each do |project|
+            output << render_project(project, options)
+          end
+        end
+
+        output
+      end
+
+      # Renders the lines of the Gantt chart, the right side
+      def lines(options={})
+        options = {:indent => 4, :render => :line, :format => :html}.merge(options)
+        output = ''
+
+        if @project
+          output << render_project(@project, options)
+        else
+          Project.roots.each do |project|
+            output << render_project(project, options)
+          end
+        end
+        
+        output
+      end
+
+      def render_project(project, options={})
+        options[:top] = 0 unless options.key? :top
+        options[:indent_increment] = 20 unless options.key? :indent_increment
+        options[:top_increment] = 20 unless options.key? :top_increment
+
+        output = ''
+        # Project Header
+        project_header = if options[:render] == :subject
+                           subject_for_project(project, options)
+                         else
+                           # :line
+                           line_for_project(project, options)
+                         end
+        output << project_header if options[:format] == :html
+        
+        options[:top] += options[:top_increment]
+        options[:indent] += options[:indent_increment]
+        
+        # Second, Issues without a version
+        issues = project.issues.for_gantt.without_version.with_query(@query)
+        if issues
+          issue_rendering = render_issues(issues, options)
+          output << issue_rendering if options[:format] == :html
+        end
+
+        # Third, Versions
+        project.versions.sort.each do |version|
+          version_rendering = render_version(version, options)
+          output << version_rendering if options[:format] == :html
+        end
+
+        # Fourth, subprojects
+        project.children.each do |project|
+          subproject_rendering = render_project(project, options)
+          output << subproject_rendering if options[:format] == :html
+        end
+
+        # Remove indent to hit the next sibling
+        options[:indent] -= options[:indent_increment]
+        
+        output
+      end
+
+      def render_issues(issues, options={})
+        output = ''
+        issues.each do |i|
+          issue_rendering = if options[:render] == :subject
+                              subject_for_issue(i, options)
+                            else
+                              # :line
+                              line_for_issue(i, options)
+                            end
+          output << issue_rendering if options[:format] == :html
+          options[:top] += options[:top_increment]
+        end
+        output
+      end
+
+      def render_version(version, options={})
+        output = ''
+        # Version header
+        version_rendering = if options[:render] == :subject
+                              subject_for_version(version, options)
+                            else
+                              # :line
+                              line_for_version(version, options)
+                            end
+
+        output << version_rendering if options[:format] == :html
+        
+        options[:top] += options[:top_increment]
+
+        # Remove the project requirement for Versions because it will
+        # restrict issues to only be on the current project.  This
+        # ends up missing issues which are assigned to shared versions.
+        @query.project = nil if @query.project
+        
+        issues = version.fixed_issues.for_gantt.with_query(@query)
+        if issues
+          # Indent issues
+          options[:indent] += options[:indent_increment]
+          output << render_issues(issues, options)
+          options[:indent] -= options[:indent_increment]
+        end
+
+        output
+      end
+
+      def subject_for_project(project, options)
+        case options[:format]
+        when :html
+          output = ''
+
+          output << "<div class='project-name' style='position: absolute;line-height:1.2em;height:16px;top:#{options[:top]}px;left:#{options[:indent]}px;overflow:hidden;'><small>    "
+          if project.is_a? Project
+            output << "<span class='icon icon-projects #{project.overdue? ? 'project-overdue' : ''}'>"
+            output << view.link_to_project(project)
+            output << '</span>'
+          else
+            ActiveRecord::Base.logger.debug "Gantt#subject_for_project was not given a project"
+            ''
+          end
+          output << "</small></div>"
+
+          output
+        when :image
+          
+          options[:image].fill('black')
+          options[:image].stroke('transparent')
+          options[:image].stroke_width(1)
+          options[:image].text(options[:indent], options[:top] + 2, project.name)
+        when :pdf
+          options[:pdf].SetY(options[:top])
+          options[:pdf].SetX(15)
+          
+          char_limit = PDF::MaxCharactorsForSubject - options[:indent]
+          options[:pdf].Cell(options[:subject_width]-15, 5, (" " * options[:indent]) +"#{project.name}".sub(/^(.{#{char_limit}}[^\s]*\s).*$/, '\1 (...)'), "LR")
+        
+          options[:pdf].SetY(options[:top])
+          options[:pdf].SetX(options[:subject_width])
+          options[:pdf].Cell(options[:g_width], 5, "", "LR")
+        end
+      end
+
+      def line_for_project(project, options)
+        # Skip versions that don't have a start_date
+        if project.is_a?(Project) && project.start_date
+          options[:zoom] ||= 1
+          options[:g_width] ||= (self.date_to - self.date_from + 1) * options[:zoom]
+
+          
+          case options[:format]
+          when :html
+            output = ''
+            i_left = ((project.start_date - self.date_from)*options[:zoom]).floor
+
+            start_date = project.start_date
+            start_date ||= self.date_from
+            start_left = ((start_date - self.date_from)*options[:zoom]).floor
+
+            i_end_date = ((project.due_date <= self.date_to) ? project.due_date : self.date_to )
+            i_done_date = start_date + ((project.due_date - start_date+1)* project.completed_percent(:include_subprojects => true)/100).floor
+            i_done_date = (i_done_date <= self.date_from ? self.date_from : i_done_date )
+            i_done_date = (i_done_date >= self.date_to ? self.date_to : i_done_date )
+            
+            i_late_date = [i_end_date, Date.today].min if start_date < Date.today
+            i_end = ((i_end_date - self.date_from) * options[:zoom]).floor
+
+            i_width = (i_end - i_left + 1).floor - 2                  # total width of the issue (- 2 for left and right borders)
+            d_width = ((i_done_date - start_date)*options[:zoom]).floor - 2                     # done width
+            l_width = i_late_date ? ((i_late_date - start_date+1)*options[:zoom]).floor - 2 : 0 # delay width
+
+            # Bar graphic
+
+            # Make sure that negative i_left and i_width don't
+            # overflow the subject
+            if i_end > 0 && i_left <= options[:g_width]
+              output << "<div style='top:#{ options[:top] }px;left:#{ start_left }px;width:#{ i_width }px;' class='task project_todo'>&nbsp;</div>"
+            end
+            
+            if l_width > 0 && i_left <= options[:g_width]
+              output << "<div style='top:#{ options[:top] }px;left:#{ start_left }px;width:#{ l_width }px;' class='task project_late'>&nbsp;</div>"
+            end
+            if d_width > 0 && i_left <= options[:g_width]
+              output<< "<div style='top:#{ options[:top] }px;left:#{ start_left }px;width:#{ d_width }px;' class='task project_done'>&nbsp;</div>"
+            end
+
+            
+            # Starting diamond
+            if start_left <= options[:g_width] && start_left > 0
+              output << "<div style='top:#{ options[:top] }px;left:#{ start_left }px;width:15px;' class='task project-line starting'>&nbsp;</div>"
+              output << "<div style='top:#{ options[:top] }px;left:#{ start_left + 12 }px;' class='task label'>"
+              output << "</div>"
+            end
+
+            # Ending diamond
+            # Don't show items too far ahead
+            if i_end <= options[:g_width] && i_end > 0
+              output << "<div style='top:#{ options[:top] }px;left:#{ i_end }px;width:15px;' class='task project-line ending'>&nbsp;</div>"
+            end
+
+            # DIsplay the Project name and %
+            if i_end <= options[:g_width]
+              # Display the status even if it's floated off to the left
+              status_px = i_end + 12 # 12px for the diamond
+              status_px = 0 if status_px <= 0
+
+              output << "<div style='top:#{ options[:top] }px;left:#{ status_px }px;' class='task label project-name'>"
+              output << "<strong>#{h project } #{h project.completed_percent(:include_subprojects => true).to_i.to_s}%</strong>"
+              output << "</div>"
+            end
+
+            output
+          when :image
+            options[:image].stroke('transparent')
+            i_left = options[:subject_width] + ((project.due_date - self.date_from)*options[:zoom]).floor
+
+            # Make sure negative i_left doesn't overflow the subject
+            if i_left > options[:subject_width]
+              options[:image].fill('blue')
+              options[:image].rectangle(i_left, options[:top], i_left + 6, options[:top] - 6)        
+              options[:image].fill('black')
+              options[:image].text(i_left + 11, options[:top] + 1, project.name)
+            end
+          when :pdf
+            options[:pdf].SetY(options[:top]+1.5)
+            i_left = ((project.due_date - @date_from)*options[:zoom])
+
+            # Make sure negative i_left doesn't overflow the subject
+            if i_left > 0
+              options[:pdf].SetX(options[:subject_width] + i_left)
+              options[:pdf].SetFillColor(50,50,200)
+              options[:pdf].Cell(2, 2, "", 0, 0, "", 1) 
+        
+              options[:pdf].SetY(options[:top]+1.5)
+              options[:pdf].SetX(options[:subject_width] + i_left + 3)
+              options[:pdf].Cell(30, 2, "#{project.name}")
+            end
+          end
+        else
+          ActiveRecord::Base.logger.debug "Gantt#line_for_project was not given a project with a start_date"
+          ''
+        end
+      end
+
+      def subject_for_version(version, options)
+        case options[:format]
+        when :html
+          output = ''
+          output << "<div class='version-name' style='position: absolute;line-height:1.2em;height:16px;top:#{options[:top]}px;left:#{options[:indent]}px;overflow:hidden;'><small>    "
+          if version.is_a? Version
+            output << "<span class='icon icon-package #{version.behind_schedule? ? 'version-behind-schedule' : ''} #{version.overdue? ? 'version-overdue' : ''}'>"
+            output << view.link_to_version(version)
+            output << '</span>'
+          else
+            ActiveRecord::Base.logger.debug "Gantt#subject_for_version was not given a version"
+            ''
+          end
+          output << "</small></div>"
+
+          output
+        when :image
+          options[:image].fill('black')
+          options[:image].stroke('transparent')
+          options[:image].stroke_width(1)
+          options[:image].text(options[:indent], options[:top] + 2, version.to_s_with_project)
+        when :pdf
+          options[:pdf].SetY(options[:top])
+          options[:pdf].SetX(15)
+          
+          char_limit = PDF::MaxCharactorsForSubject - options[:indent]
+          options[:pdf].Cell(options[:subject_width]-15, 5, (" " * options[:indent]) +"#{version.to_s_with_project}".sub(/^(.{#{char_limit}}[^\s]*\s).*$/, '\1 (...)'), "LR")
+        
+          options[:pdf].SetY(options[:top])
+          options[:pdf].SetX(options[:subject_width])
+          options[:pdf].Cell(options[:g_width], 5, "", "LR")
+        end
+      end
+
+      def line_for_version(version, options)
+        # Skip versions that don't have a start_date
+        if version.is_a?(Version) && version.start_date
+          options[:zoom] ||= 1
+          options[:g_width] ||= (self.date_to - self.date_from + 1) * options[:zoom]
+
+          case options[:format]
+          when :html
+            output = ''
+            i_left = ((version.start_date - self.date_from)*options[:zoom]).floor
+            # TODO: or version.fixed_issues.collect(&:start_date).min
+            start_date = version.fixed_issues.minimum('start_date') if version.fixed_issues.present?
+            start_date ||= self.date_from
+            start_left = ((start_date - self.date_from)*options[:zoom]).floor
+
+            i_end_date = ((version.due_date <= self.date_to) ? version.due_date : self.date_to )
+            i_done_date = start_date + ((version.due_date - start_date+1)* version.completed_pourcent/100).floor
+            i_done_date = (i_done_date <= self.date_from ? self.date_from : i_done_date )
+            i_done_date = (i_done_date >= self.date_to ? self.date_to : i_done_date )
+            
+            i_late_date = [i_end_date, Date.today].min if start_date < Date.today
+
+            i_width = (i_left - start_left + 1).floor - 2                  # total width of the issue (- 2 for left and right borders)
+            d_width = ((i_done_date - start_date)*options[:zoom]).floor - 2                     # done width
+            l_width = i_late_date ? ((i_late_date - start_date+1)*options[:zoom]).floor - 2 : 0 # delay width
+
+            i_end = ((i_end_date - self.date_from) * options[:zoom]).floor # Ending pixel
+
+            # Bar graphic
+
+            # Make sure that negative i_left and i_width don't
+            # overflow the subject
+            if i_width > 0 && i_left <= options[:g_width]
+              output << "<div style='top:#{ options[:top] }px;left:#{ start_left }px;width:#{ i_width }px;' class='task milestone_todo'>&nbsp;</div>"
+            end
+            if l_width > 0 && i_left <= options[:g_width]
+              output << "<div style='top:#{ options[:top] }px;left:#{ start_left }px;width:#{ l_width }px;' class='task milestone_late'>&nbsp;</div>"
+            end
+            if d_width > 0 && i_left <= options[:g_width]
+              output<< "<div style='top:#{ options[:top] }px;left:#{ start_left }px;width:#{ d_width }px;' class='task milestone_done'>&nbsp;</div>"
+            end
+
+            
+            # Starting diamond
+            if start_left <= options[:g_width] && start_left > 0
+              output << "<div style='top:#{ options[:top] }px;left:#{ start_left }px;width:15px;' class='task milestone starting'>&nbsp;</div>"
+              output << "<div style='top:#{ options[:top] }px;left:#{ start_left + 12 }px;background:#fff;' class='task'>"
+              output << "</div>"
+            end
+
+            # Ending diamond
+            # Don't show items too far ahead
+            if i_left <= options[:g_width] && i_end > 0
+              output << "<div style='top:#{ options[:top] }px;left:#{ i_end }px;width:15px;' class='task milestone ending'>&nbsp;</div>"
+            end
+
+            # Display the Version name and %
+            if i_end <= options[:g_width]
+              # Display the status even if it's floated off to the left
+              status_px = i_end + 12 # 12px for the diamond
+              status_px = 0 if status_px <= 0
+              
+              output << "<div style='top:#{ options[:top] }px;left:#{ status_px }px;' class='task label version-name'>"
+              output << h("#{version.project} -") unless @project && @project == version.project
+              output << "<strong>#{h version } #{h version.completed_pourcent.to_i.to_s}%</strong>"
+              output << "</div>"
+            end
+
+            output
+          when :image
+            options[:image].stroke('transparent')
+            i_left = options[:subject_width] + ((version.start_date - @date_from)*options[:zoom]).floor
+
+            # Make sure negative i_left doesn't overflow the subject
+            if i_left > options[:subject_width]
+              options[:image].fill('green')
+              options[:image].rectangle(i_left, options[:top], i_left + 6, options[:top] - 6)        
+              options[:image].fill('black')
+              options[:image].text(i_left + 11, options[:top] + 1, version.name)
+            end
+          when :pdf
+            options[:pdf].SetY(options[:top]+1.5)
+            i_left = ((version.start_date - @date_from)*options[:zoom]) 
+
+            # Make sure negative i_left doesn't overflow the subject
+            if i_left > 0
+              options[:pdf].SetX(options[:subject_width] + i_left)
+              options[:pdf].SetFillColor(50,200,50)
+              options[:pdf].Cell(2, 2, "", 0, 0, "", 1) 
+        
+              options[:pdf].SetY(options[:top]+1.5)
+              options[:pdf].SetX(options[:subject_width] + i_left + 3)
+              options[:pdf].Cell(30, 2, "#{version.name}")
+            end
+          end
+        else
+          ActiveRecord::Base.logger.debug "Gantt#line_for_version was not given a version with a start_date"
+          ''
+        end
+      end
+
+      def subject_for_issue(issue, options)
+        case options[:format]
+        when :html
+          output = ''
+          output << "<div class='tooltip'>"
+          output << "<div class='issue-subject' style='position: absolute;line-height:1.2em;height:16px;top:#{options[:top]}px;left:#{options[:indent]}px;overflow:hidden;'><small>    "
+          if issue.is_a? Issue
+            css_classes = []
+            css_classes << 'issue-overdue' if issue.overdue?
+            css_classes << 'issue-behind-schedule' if issue.behind_schedule?
+            css_classes << 'icon icon-issue' unless Setting.gravatar_enabled? && issue.assigned_to
+
+            if issue.assigned_to.present?
+              assigned_string = l(:field_assigned_to) + ": " + issue.assigned_to.name
+              output << view.avatar(issue.assigned_to, :class => 'gravatar icon-gravatar', :size => 10, :title => assigned_string)
+            end
+            output << "<span class='#{css_classes.join(' ')}'>"
+            output << view.link_to_issue(issue)
+            output << ":"
+            output << h(issue.subject)
+            output << '</span>'
+          else
+            ActiveRecord::Base.logger.debug "Gantt#subject_for_issue was not given an issue"
+            ''
+          end
+          output << "</small></div>"
+
+          # Tooltip
+          if issue.is_a? Issue
+            output << "<span class='tip' style='position: absolute;top:#{ options[:top].to_i + 16 }px;left:#{ options[:indent].to_i + 20 }px;'>"
+            output << view.render_issue_tooltip(issue)
+            output << "</span>"
+          end
+
+          output << "</div>"
+          output
+        when :image
+          options[:image].fill('black')
+          options[:image].stroke('transparent')
+          options[:image].stroke_width(1)
+          options[:image].text(options[:indent], options[:top] + 2, issue.subject)
+        when :pdf
+          options[:pdf].SetY(options[:top])
+          options[:pdf].SetX(15)
+          
+          char_limit = PDF::MaxCharactorsForSubject - options[:indent]
+          options[:pdf].Cell(options[:subject_width]-15, 5, (" " * options[:indent]) +"#{issue.tracker} #{issue.id}: #{issue.subject}".sub(/^(.{#{char_limit}}[^\s]*\s).*$/, '\1 (...)'), "LR")
+        
+          options[:pdf].SetY(options[:top])
+          options[:pdf].SetX(options[:subject_width])
+          options[:pdf].Cell(options[:g_width], 5, "", "LR")
+        end
+      end
+
+      def line_for_issue(issue, options)
+        # Skip issues that don't have a due_before (due_date or version's due_date)
+        if issue.is_a?(Issue) && issue.due_before
+          case options[:format]
+          when :html
+            output = ''
+            # Handle nil start_dates, rare but can happen.
+            i_start_date =  if issue.start_date && issue.start_date >= self.date_from
+                              issue.start_date
+                            else
+                              self.date_from
+                            end
+
+            i_end_date = ((issue.due_before && issue.due_before <= self.date_to) ? issue.due_before : self.date_to )
+            i_done_date = i_start_date + ((issue.due_before - i_start_date+1)*issue.done_ratio/100).floor
+            i_done_date = (i_done_date <= self.date_from ? self.date_from : i_done_date )
+            i_done_date = (i_done_date >= self.date_to ? self.date_to : i_done_date )
+            
+            i_late_date = [i_end_date, Date.today].min if i_start_date < Date.today
+            
+            i_left = ((i_start_date - self.date_from)*options[:zoom]).floor 	
+            i_width = ((i_end_date - i_start_date + 1)*options[:zoom]).floor - 2                  # total width of the issue (- 2 for left and right borders)
+            d_width = ((i_done_date - i_start_date)*options[:zoom]).floor - 2                     # done width
+            l_width = i_late_date ? ((i_late_date - i_start_date+1)*options[:zoom]).floor - 2 : 0 # delay width
+            css = "task " + (issue.leaf? ? 'leaf' : 'parent')
+            
+            # Make sure that negative i_left and i_width don't
+            # overflow the subject
+            if i_width > 0
+              output << "<div style='top:#{ options[:top] }px;left:#{ i_left }px;width:#{ i_width }px;' class='#{css} task_todo'>&nbsp;</div>"
+            end
+            if l_width > 0
+              output << "<div style='top:#{ options[:top] }px;left:#{ i_left }px;width:#{ l_width }px;' class='#{css} task_late'>&nbsp;</div>"
+            end
+            if d_width > 0
+              output<< "<div style='top:#{ options[:top] }px;left:#{ i_left }px;width:#{ d_width }px;' class='#{css} task_done'>&nbsp;</div>"
+            end
+
+            # Display the status even if it's floated off to the left
+            status_px = i_left + i_width + 5
+            status_px = 5 if status_px <= 0
+            
+            output << "<div style='top:#{ options[:top] }px;left:#{ status_px }px;' class='#{css} label issue-name'>"
+            output << issue.status.name
+            output << ' '
+            output << (issue.done_ratio).to_i.to_s
+            output << "%"
+            output << "</div>"
+
+            output << "<div class='tooltip' style='position: absolute;top:#{ options[:top] }px;left:#{ i_left }px;width:#{ i_width }px;height:12px;'>"
+            output << '<span class="tip">'
+            output << view.render_issue_tooltip(issue)
+            output << "</span></div>"
+            output
+          
+          when :image
+            # Handle nil start_dates, rare but can happen.
+            i_start_date =  if issue.start_date && issue.start_date >= @date_from
+                              issue.start_date
+                            else
+                              @date_from
+                            end
+
+            i_end_date = (issue.due_before <= date_to ? issue.due_before : date_to )        
+            i_done_date = i_start_date + ((issue.due_before - i_start_date+1)*issue.done_ratio/100).floor
+            i_done_date = (i_done_date <= @date_from ? @date_from : i_done_date )
+            i_done_date = (i_done_date >= date_to ? date_to : i_done_date )        
+            i_late_date = [i_end_date, Date.today].min if i_start_date < Date.today
+            
+            i_left = options[:subject_width] + ((i_start_date - @date_from)*options[:zoom]).floor 	
+            i_width = ((i_end_date - i_start_date + 1)*options[:zoom]).floor                  # total width of the issue
+            d_width = ((i_done_date - i_start_date)*options[:zoom]).floor                     # done width
+            l_width = i_late_date ? ((i_late_date - i_start_date+1)*options[:zoom]).floor : 0 # delay width
+
+            
+            # Make sure that negative i_left and i_width don't
+            # overflow the subject
+            if i_width > 0
+              options[:image].fill('grey')
+              options[:image].rectangle(i_left, options[:top], i_left + i_width, options[:top] - 6)
+              options[:image].fill('red')
+              options[:image].rectangle(i_left, options[:top], i_left + l_width, options[:top] - 6) if l_width > 0
+              options[:image].fill('blue')
+              options[:image].rectangle(i_left, options[:top], i_left + d_width, options[:top] - 6) if d_width > 0
+            end
+
+            # Show the status and % done next to the subject if it overflows
+            options[:image].fill('black')
+            if i_width > 0
+              options[:image].text(i_left + i_width + 5,options[:top] + 1, "#{issue.status.name} #{issue.done_ratio}%")
+            else
+              options[:image].text(options[:subject_width] + 5,options[:top] + 1, "#{issue.status.name} #{issue.done_ratio}%")            
+            end
+
+          when :pdf
+            options[:pdf].SetY(options[:top]+1.5)
+            # Handle nil start_dates, rare but can happen.
+            i_start_date =  if issue.start_date && issue.start_date >= @date_from
+                          issue.start_date
+                        else
+                          @date_from
+                        end
+
+            i_end_date = (issue.due_before <= @date_to ? issue.due_before : @date_to )
+            
+            i_done_date = i_start_date + ((issue.due_before - i_start_date+1)*issue.done_ratio/100).floor
+            i_done_date = (i_done_date <= @date_from ? @date_from : i_done_date )
+            i_done_date = (i_done_date >= @date_to ? @date_to : i_done_date )
+            
+            i_late_date = [i_end_date, Date.today].min if i_start_date < Date.today
+            
+            i_left = ((i_start_date - @date_from)*options[:zoom]) 
+            i_width = ((i_end_date - i_start_date + 1)*options[:zoom])
+            d_width = ((i_done_date - i_start_date)*options[:zoom])
+            l_width = ((i_late_date - i_start_date+1)*options[:zoom]) if i_late_date
+            l_width ||= 0
+
+            # Make sure that negative i_left and i_width don't
+            # overflow the subject
+            if i_width > 0
+              options[:pdf].SetX(options[:subject_width] + i_left)
+              options[:pdf].SetFillColor(200,200,200)
+              options[:pdf].Cell(i_width, 2, "", 0, 0, "", 1)
+            end
+          
+            if l_width > 0
+              options[:pdf].SetY(options[:top]+1.5)
+              options[:pdf].SetX(options[:subject_width] + i_left)
+              options[:pdf].SetFillColor(255,100,100)
+              options[:pdf].Cell(l_width, 2, "", 0, 0, "", 1)
+            end 
+            if d_width > 0
+              options[:pdf].SetY(options[:top]+1.5)
+              options[:pdf].SetX(options[:subject_width] + i_left)
+              options[:pdf].SetFillColor(100,100,255)
+              options[:pdf].Cell(d_width, 2, "", 0, 0, "", 1)
+            end
+
+            options[:pdf].SetY(options[:top]+1.5)
+
+            # Make sure that negative i_left and i_width don't
+            # overflow the subject
+            if (i_left + i_width) >= 0
+              options[:pdf].SetX(options[:subject_width] + i_left + i_width)
+            else
+              options[:pdf].SetX(options[:subject_width])
+            end
+            options[:pdf].Cell(30, 2, "#{issue.status} #{issue.done_ratio}%")
+          end
+        else
+          ActiveRecord::Base.logger.debug "GanttHelper#line_for_issue was not given an issue with a due_before"
+          ''
+        end
+      end
+
       # Generates a gantt image
       # Only defined if RMagick is avalaible
-      def to_image(project, format='PNG')
+      def to_image(format='PNG')
         date_to = (@date_from >> @months)-1    
         show_weeks = @zoom > 1
         show_days = @zoom > 2
@@ -101,7 +739,7 @@
         # width of one day in pixels
         zoom = @zoom*2
         g_width = (@date_to - @date_from + 1)*zoom
-        g_height = 20 * events.length + 20
+        g_height = 20 * number_of_rows + 30
         headers_heigth = (show_weeks ? 2*header_heigth : header_heigth)
         height = g_height + headers_heigth
             
@@ -110,21 +748,7 @@
         gc = Magick::Draw.new
         
         # Subjects
-        top = headers_heigth + 20
-        gc.fill('black')
-        gc.stroke('transparent')
-        gc.stroke_width(1)
-        events.each do |i|
-          text = ""
-          if i.is_a? Issue
-            text = "#{i.tracker} #{i.id}: #{i.subject}"
-          else
-            text = i.name
-          end
-          text = "#{i.project} - #{text}" unless project && project == i.project
-          gc.text(4, top + 2, text)
-          top = top + 20
-        end
+        subjects(:image => gc, :top => (headers_heigth + 20), :indent => 4, :format => :image)
     
         # Months headers
         month_f = @date_from
@@ -202,38 +826,8 @@
             
         # content
         top = headers_heigth + 20
-        gc.stroke('transparent')
-        events.each do |i|      
-          if i.is_a?(Issue)       
-            i_start_date = (i.start_date >= @date_from ? i.start_date : @date_from )
-            i_end_date = (i.due_before <= date_to ? i.due_before : date_to )        
-            i_done_date = i.start_date + ((i.due_before - i.start_date+1)*i.done_ratio/100).floor
-            i_done_date = (i_done_date <= @date_from ? @date_from : i_done_date )
-            i_done_date = (i_done_date >= date_to ? date_to : i_done_date )        
-            i_late_date = [i_end_date, Date.today].min if i_start_date < Date.today
-            
-            i_left = subject_width + ((i_start_date - @date_from)*zoom).floor 	
-            i_width = ((i_end_date - i_start_date + 1)*zoom).floor                  # total width of the issue
-            d_width = ((i_done_date - i_start_date)*zoom).floor                     # done width
-            l_width = i_late_date ? ((i_late_date - i_start_date+1)*zoom).floor : 0 # delay width
-      
-            gc.fill('grey')
-            gc.rectangle(i_left, top, i_left + i_width, top - 6)
-            gc.fill('red')
-            gc.rectangle(i_left, top, i_left + l_width, top - 6) if l_width > 0
-            gc.fill('blue')
-            gc.rectangle(i_left, top, i_left + d_width, top - 6) if d_width > 0
-            gc.fill('black')
-            gc.text(i_left + i_width + 5,top + 1, "#{i.status.name} #{i.done_ratio}%")
-          else
-            i_left = subject_width + ((i.start_date - @date_from)*zoom).floor
-            gc.fill('green')
-            gc.rectangle(i_left, top, i_left + 6, top - 6)        
-            gc.fill('black')
-            gc.text(i_left + 11, top + 1, i.name)
-          end
-          top = top + 20
-        end
+        
+        lines(:image => gc, :top => top, :zoom => zoom, :subject_width => subject_width, :format => :image)
         
         # today red line
         if Date.today >= @date_from and Date.today <= date_to
@@ -246,36 +840,137 @@
         imgl.format = format
         imgl.to_blob
       end if Object.const_defined?(:Magick)
+
+      def to_pdf
+        pdf = ::Redmine::Export::PDF::IFPDF.new(current_language)
+        pdf.SetTitle("#{l(:label_gantt)} #{project}")
+        pdf.AliasNbPages
+        pdf.footer_date = format_date(Date.today)
+        pdf.AddPage("L")
+        pdf.SetFontStyle('B',12)
+        pdf.SetX(15)
+        pdf.Cell(PDF::LeftPaneWidth, 20, project.to_s)
+        pdf.Ln
+        pdf.SetFontStyle('B',9)
+        
+        subject_width = PDF::LeftPaneWidth
+        header_heigth = 5
+        
+        headers_heigth = header_heigth
+        show_weeks = false
+        show_days = false
+        
+        if self.months < 7
+          show_weeks = true
+          headers_heigth = 2*header_heigth
+          if self.months < 3
+            show_days = true
+            headers_heigth = 3*header_heigth
+          end
+        end
+        
+        g_width = PDF.right_pane_width
+        zoom = (g_width) / (self.date_to - self.date_from + 1)
+        g_height = 120
+        t_height = g_height + headers_heigth
+        
+        y_start = pdf.GetY
+        
+        # Months headers
+        month_f = self.date_from
+        left = subject_width
+        height = header_heigth
+        self.months.times do 
+          width = ((month_f >> 1) - month_f) * zoom 
+          pdf.SetY(y_start)
+          pdf.SetX(left)
+          pdf.Cell(width, height, "#{month_f.year}-#{month_f.month}", "LTR", 0, "C")
+          left = left + width
+          month_f = month_f >> 1
+        end  
+        
+        # Weeks headers
+        if show_weeks
+          left = subject_width
+          height = header_heigth
+          if self.date_from.cwday == 1
+            # self.date_from is monday
+            week_f = self.date_from
+          else
+            # find next monday after self.date_from
+            week_f = self.date_from + (7 - self.date_from.cwday + 1)
+            width = (7 - self.date_from.cwday + 1) * zoom-1
+            pdf.SetY(y_start + header_heigth)
+            pdf.SetX(left)
+            pdf.Cell(width + 1, height, "", "LTR")
+            left = left + width+1
+          end
+          while week_f <= self.date_to
+            width = (week_f + 6 <= self.date_to) ? 7 * zoom : (self.date_to - week_f + 1) * zoom
+            pdf.SetY(y_start + header_heigth)
+            pdf.SetX(left)
+            pdf.Cell(width, height, (width >= 5 ? week_f.cweek.to_s : ""), "LTR", 0, "C")
+            left = left + width
+            week_f = week_f+7
+          end
+        end
+        
+        # Days headers
+        if show_days
+          left = subject_width
+          height = header_heigth
+          wday = self.date_from.cwday
+          pdf.SetFontStyle('B',7)
+          (self.date_to - self.date_from + 1).to_i.times do 
+            width = zoom
+            pdf.SetY(y_start + 2 * header_heigth)
+            pdf.SetX(left)
+            pdf.Cell(width, height, day_name(wday).first, "LTR", 0, "C")
+            left = left + width
+            wday = wday + 1
+            wday = 1 if wday > 7
+          end
+        end
+        
+        pdf.SetY(y_start)
+        pdf.SetX(15)
+        pdf.Cell(subject_width+g_width-15, headers_heigth, "", 1)
+        
+        # Tasks
+        top = headers_heigth + y_start
+        pdf_subjects_and_lines(pdf, {
+                                 :top => top,
+                                 :zoom => zoom,
+                                 :subject_width => subject_width,
+                                 :g_width => g_width
+                               })
+
+        
+        pdf.Line(15, top, subject_width+g_width, top)
+        pdf.Output
+
+        
+      end
       
       private
-      
-      def gantt_issue_compare(x, y, issues)
-        if x.parent_id == y.parent_id
-          gantt_start_compare(x, y)
-        elsif x.is_ancestor_of?(y)
-          -1
-        elsif y.is_ancestor_of?(x)
-          1
+
+      # Renders both the subjects and lines of the Gantt chart for the
+      # PDF format
+      def pdf_subjects_and_lines(pdf, options = {})
+        subject_options = {:indent => 0, :indent_increment => 5, :top_increment => 3, :render => :subject, :format => :pdf, :pdf => pdf}.merge(options)
+        line_options = {:indent => 0, :indent_increment => 5, :top_increment => 3, :render => :line, :format => :pdf, :pdf => pdf}.merge(options)
+
+        if @project
+          render_project(@project, subject_options)
+          render_project(@project, line_options)
         else
-          ax = issues.select {|i| i.is_a?(Issue) && i.is_ancestor_of?(x) && !i.is_ancestor_of?(y) }.sort_by(&:lft).first
-          ay = issues.select {|i| i.is_a?(Issue) && i.is_ancestor_of?(y) && !i.is_ancestor_of?(x) }.sort_by(&:lft).first
-          if ax.nil? && ay.nil?
-            gantt_start_compare(x, y)
-          else
-            gantt_issue_compare(ax || x, ay || y, issues)
+          Project.roots.each do |project|
+            render_project(project, subject_options)
+            render_project(project, line_options)
           end
         end
       end
-      
-      def gantt_start_compare(x, y)
-        if x.start_date.nil?
-          -1
-        elsif y.start_date.nil?
-          1
-        else
-          x.start_date <=> y.start_date
-        end
-      end
+
     end
   end
 end
--- a/lib/redmine/scm/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/lib/redmine/scm/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/lib/redmine/scm
 http://redmine.rubyforge.org/svn
 
@@ -35,7 +35,7 @@
 
 
 
-2010-07-23T14:49:47.392124Z
+2010-09-23T14:37:45.043748Z
 3a053c03d210decd9105a24ff5e1aa8f
 2010-02-16T22:41:59.625572Z
 3440
--- a/lib/redmine/scm/adapters/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/lib/redmine/scm/adapters/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/lib/redmine/scm/adapters
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:47.388136Z
+2010-09-23T14:37:45.043748Z
 638ab1af3838c9e8d9f7688224ebf18b
 2010-06-20T16:08:26.745839Z
 3800
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:47.388136Z
+2010-09-23T14:37:45.039790Z
 5a2dba12961234e4853397c87cef0b5e
 2010-05-01T09:56:59.025016Z
 3723
@@ -103,7 +103,7 @@
 
 
 
-2010-07-23T14:49:47.388136Z
+2010-09-24T11:56:52.980004Z
 b23f6bf941ce74af0650c41e1094ba8a
 2010-02-21T14:38:34.467603Z
 3469
@@ -137,7 +137,7 @@
 
 
 
-2010-08-25T15:27:58.073958Z
+2010-09-23T14:37:45.039790Z
 562f6950cbe67adb35946547436fe2df
 2010-08-08T07:07:30.284069Z
 3925
@@ -171,7 +171,7 @@
 
 
 
-2010-07-23T14:49:47.388136Z
+2010-09-24T11:56:52.992085Z
 c16d3e25388f47c99f1633eab2140ba7
 2010-05-01T09:55:40.597772Z
 3722
@@ -205,7 +205,7 @@
 
 
 
-2010-07-23T14:49:47.388136Z
+2010-09-23T14:37:45.039790Z
 5f311f051bcb17a87475757807f8a63e
 2008-06-08T15:44:23.440995Z
 1510
@@ -239,7 +239,7 @@
 
 
 
-2010-07-23T14:49:47.388136Z
+2010-09-23T14:37:45.039790Z
 19e0348377774a0c41b78a3f0a482284
 2008-12-14T15:57:13.349302Z
 2135
@@ -273,7 +273,7 @@
 
 
 
-2010-07-23T14:49:47.388136Z
+2010-09-23T14:37:45.039790Z
 dc6df25045764c81cdfcdb441997823b
 2009-01-04T13:27:48.560402Z
 2232
--- a/lib/redmine/scm/adapters/mercurial/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/lib/redmine/scm/adapters/mercurial/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/lib/redmine/scm/adapters/mercurial
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:47.372098Z
+2010-09-24T11:56:52.980004Z
 6ba619703ae315a3683836144d19773c
 2008-06-07T09:19:50.659015Z
 1499
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:47.372098Z
+2010-09-24T11:56:52.992085Z
 2cd7a2264dff3758a1d3340af87a615f
 2008-06-07T09:19:50.659015Z
 1499
--- a/lib/redmine/views/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/lib/redmine/views/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/lib/redmine/views
 http://redmine.rubyforge.org/svn
 
@@ -35,7 +35,7 @@
 
 
 
-2010-07-23T14:49:47.408095Z
+2010-09-23T14:37:45.047759Z
 849e9df27c041f540e690c6192939edf
 2009-01-29T13:54:44.887081Z
 2334
--- a/lib/redmine/views/my_page/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/lib/redmine/views/my_page/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/lib/redmine/views/my_page
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:47.404094Z
+2010-09-23T14:37:45.047759Z
 b06dfe20a85191516f81de5874f37ec6
 2009-04-05T13:33:54.194067Z
 2659
--- a/lib/redmine/wiki_formatting/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/lib/redmine/wiki_formatting/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/lib/redmine/wiki_formatting
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:47.400131Z
+2010-09-23T14:37:45.051779Z
 a16e05369f2e3dbb2bd33d9c2895ffdf
 2009-11-04T12:36:45.918398Z
 3006
--- a/lib/redmine/wiki_formatting/textile/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/lib/redmine/wiki_formatting/textile/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/lib/redmine/wiki_formatting/textile
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:47.400131Z
+2010-09-23T14:37:45.051779Z
 dec83b1d0d7f682d1ebf1f172fe3c90b
 2009-11-11T10:55:19.574870Z
 3025
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:47.400131Z
+2010-09-23T14:37:45.051779Z
 28027996d41c6fc1e52168e77c09de3f
 2010-06-24T02:35:24.648446Z
 3811
--- a/lib/tasks/.svn/all-wcprops	Fri Sep 24 15:33:13 2010 +0100
+++ b/lib/tasks/.svn/all-wcprops	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 34
-/svn/!svn/ver/3948/trunk/lib/tasks
+/svn/!svn/ver/4167/trunk/lib/tasks
 END
 deprecated.rake
 K 25
@@ -25,7 +25,13 @@
 K 25
 svn:wc:ra_dav:version-url
 V 48
-/svn/!svn/ver/1459/trunk/lib/tasks/reminder.rake
+/svn/!svn/ver/4167/trunk/lib/tasks/reminder.rake
+END
+metrics.rake
+K 25
+svn:wc:ra_dav:version-url
+V 47
+/svn/!svn/ver/2825/trunk/lib/tasks/metrics.rake
 END
 initializers.rake
 K 25
@@ -33,12 +39,6 @@
 V 52
 /svn/!svn/ver/3785/trunk/lib/tasks/initializers.rake
 END
-metrics.rake
-K 25
-svn:wc:ra_dav:version-url
-V 47
-/svn/!svn/ver/2825/trunk/lib/tasks/metrics.rake
-END
 permissions.rake
 K 25
 svn:wc:ra_dav:version-url
@@ -63,18 +63,18 @@
 V 48
 /svn/!svn/ver/3167/trunk/lib/tasks/watchers.rake
 END
+plugins.rake
+K 25
+svn:wc:ra_dav:version-url
+V 47
+/svn/!svn/ver/1786/trunk/lib/tasks/plugins.rake
+END
 yardoc.rake
 K 25
 svn:wc:ra_dav:version-url
 V 46
 /svn/!svn/ver/3922/trunk/lib/tasks/yardoc.rake
 END
-plugins.rake
-K 25
-svn:wc:ra_dav:version-url
-V 47
-/svn/!svn/ver/1786/trunk/lib/tasks/plugins.rake
-END
 locales.rake
 K 25
 svn:wc:ra_dav:version-url
--- a/lib/tasks/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/lib/tasks/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,14 +1,14 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/lib/tasks
 http://redmine.rubyforge.org/svn
 
 
 
-2010-08-18T17:23:23.071766Z
-3948
+2010-09-20T23:17:51.402972Z
+4167
 edavis10
 
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:47.472156Z
+2010-09-23T14:37:45.063748Z
 03301be8b264b5cb46d05896861dcc4d
 2007-09-02T08:08:10.346505Z
 691
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:47.472156Z
+2010-09-23T14:37:45.063748Z
 2ee57ccc06c675e55c38a4153a27c7c3
 2010-05-01T09:37:46.451305Z
 3721
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:47.472156Z
+2010-09-23T14:37:45.063748Z
 0c57af5536009680bb8c3c3302fc628d
 2006-07-29T09:32:58.780216Z
 12
@@ -134,11 +134,11 @@
 
 
 
-2010-07-23T14:49:47.472156Z
-6ed663fbb2b6271accc0879735e9488b
-2008-05-25T17:31:50.483460Z
-1459
-jplang
+2010-09-24T12:48:29.799790Z
+07fcf57752978d65a694eb57adcc0851
+2010-09-20T23:17:51.402972Z
+4167
+edavis10
 has-props
 
 
@@ -160,7 +160,7 @@
 
 
 
-1448
+1606
 
 metrics.rake
 file
@@ -168,7 +168,7 @@
 
 
 
-2010-07-23T14:49:47.472156Z
+2010-09-23T14:37:45.063748Z
 0254f4ee916dee0a2572e63e947f8a1b
 2009-07-27T00:55:43.057910Z
 2825
@@ -202,7 +202,7 @@
 
 
 
-2010-07-23T14:49:47.472156Z
+2010-09-23T14:37:45.063748Z
 561f310a7d3a42b31ab7271aec396633
 2010-06-19T20:04:47.615499Z
 3785
@@ -236,7 +236,7 @@
 
 
 
-2010-08-25T15:27:58.174488Z
+2010-09-23T14:37:45.063748Z
 010fbb563237ff01803aa47736cf863e
 2010-08-18T17:23:23.071766Z
 3948
@@ -270,7 +270,7 @@
 
 
 
-2010-07-23T14:49:47.472156Z
+2010-09-23T14:37:45.063748Z
 984c757ee4c8fa78f649f8dd34b715cf
 2009-03-15T10:03:56.604709Z
 2592
@@ -304,7 +304,7 @@
 
 
 
-2010-07-23T14:49:47.472156Z
+2010-09-23T14:37:45.067787Z
 5d4cbb1125484cf9c8f3f693c53f8fd1
 2009-11-15T13:43:31.750664Z
 3060
@@ -338,7 +338,7 @@
 
 
 
-2010-07-23T14:49:47.472156Z
+2010-09-23T14:37:45.067787Z
 16eaf27a5959829a12961ff16e233600
 2009-12-13T12:39:22.716082Z
 3167
@@ -372,7 +372,7 @@
 
 
 
-2010-07-23T14:49:47.472156Z
+2010-09-23T14:37:45.067787Z
 f27a83cf3f04d7906ac2f3ca40d01a20
 2008-09-05T10:31:06.632668Z
 1786
@@ -406,7 +406,7 @@
 
 
 
-2010-08-25T15:27:58.174488Z
+2010-09-23T14:37:45.067787Z
 5c9889bed6f4a4d18dbeb3d904855bb6
 2010-08-07T15:11:26.667915Z
 3922
@@ -440,7 +440,7 @@
 
 
 
-2010-07-23T14:49:47.476144Z
+2010-09-23T14:37:45.063748Z
 4b8985b7b23bbc48dc414dbd1999ca1b
 2009-02-21T15:21:31.040851Z
 2502
@@ -474,7 +474,7 @@
 
 
 
-2010-07-23T14:49:47.476144Z
+2010-09-23T14:37:45.063748Z
 6e8b343999b28febc71dd621a519ce9d
 2010-02-28T16:51:36.195546Z
 3517
@@ -508,7 +508,7 @@
 
 
 
-2010-07-23T14:49:47.476144Z
+2010-09-23T14:37:45.063748Z
 da88af55c1e96cf9caca3be6a29b3259
 2010-01-17T12:00:45.233005Z
 3328
@@ -542,7 +542,7 @@
 
 
 
-2010-07-23T14:49:47.476144Z
+2010-09-23T14:37:45.063748Z
 09d22d744d29edd8922bc899e4ec8be2
 2010-01-17T13:53:13.544777Z
 3330
@@ -576,7 +576,7 @@
 
 
 
-2010-07-23T14:49:47.476144Z
+2010-09-23T14:37:45.063748Z
 82e0901f7cbdda05ed63c12a764c3614
 2007-09-23T17:19:27.414302Z
 752
@@ -610,7 +610,7 @@
 
 
 
-2010-08-25T15:27:58.174488Z
+2010-09-23T14:37:45.063748Z
 ad1435c02c82525ceb302114492c28f8
 2010-08-06T20:46:44.980912Z
 3919
@@ -644,7 +644,7 @@
 
 
 
-2010-07-23T14:49:47.476144Z
+2010-09-23T14:37:45.063748Z
 320b77011663b1209247bb809bc43ecb
 2008-02-16T16:25:58.204498Z
 1155
--- a/lib/tasks/.svn/text-base/reminder.rake.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/lib/tasks/.svn/text-base/reminder.rake.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -22,9 +22,10 @@
   * days     => number of days to remind about (defaults to 7)
   * tracker  => id of tracker (defaults to all trackers)
   * project  => id or identifier of project (defaults to all projects)
+  * users    => comma separated list of user ids who should be reminded
 
 Example:
-  rake redmine:send_reminders days=7 RAILS_ENV="production"
+  rake redmine:send_reminders days=7 users="1,23, 56" RAILS_ENV="production"
 END_DESC
 
 namespace :redmine do
@@ -33,6 +34,7 @@
     options[:days] = ENV['days'].to_i if ENV['days']
     options[:project] = ENV['project'] if ENV['project']
     options[:tracker] = ENV['tracker'].to_i if ENV['tracker']
+    options[:users] = (ENV['users'] || '').split(',').each(&:strip!)
     
     Mailer.reminders(options)
   end
--- a/lib/tasks/reminder.rake	Fri Sep 24 15:33:13 2010 +0100
+++ b/lib/tasks/reminder.rake	Fri Sep 24 15:51:28 2010 +0100
@@ -22,9 +22,10 @@
   * days     => number of days to remind about (defaults to 7)
   * tracker  => id of tracker (defaults to all trackers)
   * project  => id or identifier of project (defaults to all projects)
+  * users    => comma separated list of user ids who should be reminded
 
 Example:
-  rake redmine:send_reminders days=7 RAILS_ENV="production"
+  rake redmine:send_reminders days=7 users="1,23, 56" RAILS_ENV="production"
 END_DESC
 
 namespace :redmine do
@@ -33,6 +34,7 @@
     options[:days] = ENV['days'].to_i if ENV['days']
     options[:project] = ENV['project'] if ENV['project']
     options[:tracker] = ENV['tracker'].to_i if ENV['tracker']
+    options[:users] = (ENV['users'] || '').split(',').each(&:strip!)
     
     Mailer.reminders(options)
   end
--- a/log/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/log/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/log
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:45.588094Z
+2010-09-23T14:37:45.067787Z
 ae0415159f2c4dba3fc1a559d4c0f9f5
 2006-10-15T09:00:05.847811Z
 31
--- a/public/.svn/all-wcprops	Fri Sep 24 15:33:13 2010 +0100
+++ b/public/.svn/all-wcprops	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 31
-/svn/!svn/ver/4014/trunk/public
+/svn/!svn/ver/4072/trunk/public
 END
 dispatch.fcgi.example
 K 25
--- a/public/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/public/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,14 +1,14 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/public
 http://redmine.rubyforge.org/svn
 
 
 
-2010-08-22T19:12:21.015911Z
-4014
+2010-09-10T03:09:02.311267Z
+4072
 edavis10
 has-props
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:47.756104Z
+2010-09-23T14:37:45.075747Z
 aeefa1552a4af651eadd16f4e0bb1323
 2008-11-11T13:54:10.112610Z
 2017
@@ -72,7 +72,7 @@
 
 
 
-2010-07-23T14:49:47.756104Z
+2010-09-23T14:37:45.071747Z
 b78e2e9e0cd94c786bb9404516e062c4
 2007-04-04T18:20:45.423396Z
 419
@@ -112,7 +112,7 @@
 
 
 
-2010-07-23T14:49:47.756104Z
+2010-09-23T14:37:45.071747Z
 5acfd3818d5f470c26a1af577d06195e
 2007-04-04T18:20:45.423396Z
 419
@@ -146,7 +146,7 @@
 
 
 
-2010-07-23T14:49:47.756104Z
+2010-09-23T14:37:45.071747Z
 5a5128856eb14ac7b3f94099cb504775
 2008-11-11T13:54:10.112610Z
 2017
@@ -180,7 +180,7 @@
 
 
 
-2010-07-23T14:49:47.756104Z
+2010-09-23T14:37:45.067787Z
 67c99c6ef23adb15d9efed92be959b6e
 2007-11-27T17:20:57.329371Z
 934
@@ -214,7 +214,7 @@
 
 
 
-2010-07-23T14:49:47.756104Z
+2010-09-23T14:37:45.075747Z
 5a5128856eb14ac7b3f94099cb504775
 2008-11-11T13:54:10.112610Z
 2017
--- a/public/help/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/public/help/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/public/help
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:47.640098Z
+2010-09-23T14:37:45.075747Z
 73d1d55e3e3341a687d13e571825b6b9
 2010-03-16T21:48:21.610865Z
 3595
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:47.640098Z
+2010-09-23T14:37:45.075747Z
 f3c9e77ebd5a0c8e580df191a00bc01c
 2008-09-13T09:45:07.868598Z
 1803
--- a/public/images/.svn/all-wcprops	Fri Sep 24 15:33:13 2010 +0100
+++ b/public/images/.svn/all-wcprops	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 38
-/svn/!svn/ver/3859/trunk/public/images
+/svn/!svn/ver/4072/trunk/public/images
 END
 time.png
 K 25
@@ -27,17 +27,23 @@
 V 62
 /svn/!svn/ver/3419/trunk/public/images/bullet_toggle_minus.png
 END
+2downarrow.png
+K 25
+svn:wc:ra_dav:version-url
+V 53
+/svn/!svn/ver/3419/trunk/public/images/2downarrow.png
+END
 folder_open_add.png
 K 25
 svn:wc:ra_dav:version-url
 V 58
 /svn/!svn/ver/3419/trunk/public/images/folder_open_add.png
 END
-2downarrow.png
+milestone_late.png
 K 25
 svn:wc:ra_dav:version-url
-V 53
-/svn/!svn/ver/3419/trunk/public/images/2downarrow.png
+V 57
+/svn/!svn/ver/4072/trunk/public/images/milestone_late.png
 END
 warning.png
 K 25
@@ -45,11 +51,11 @@
 V 50
 /svn/!svn/ver/3419/trunk/public/images/warning.png
 END
-reload.png
+fav_off.png
 K 25
 svn:wc:ra_dav:version-url
-V 49
-/svn/!svn/ver/3430/trunk/public/images/reload.png
+V 50
+/svn/!svn/ver/3419/trunk/public/images/fav_off.png
 END
 move.png
 K 25
@@ -57,11 +63,17 @@
 V 47
 /svn/!svn/ver/3419/trunk/public/images/move.png
 END
-fav_off.png
+reload.png
 K 25
 svn:wc:ra_dav:version-url
-V 50
-/svn/!svn/ver/3419/trunk/public/images/fav_off.png
+V 49
+/svn/!svn/ver/3430/trunk/public/images/reload.png
+END
+project_marker.png
+K 25
+svn:wc:ra_dav:version-url
+V 57
+/svn/!svn/ver/4072/trunk/public/images/project_marker.png
 END
 ticket_note.png
 K 25
@@ -69,18 +81,18 @@
 V 54
 /svn/!svn/ver/3419/trunk/public/images/ticket_note.png
 END
+zoom_in.png
+K 25
+svn:wc:ra_dav:version-url
+V 50
+/svn/!svn/ver/3419/trunk/public/images/zoom_in.png
+END
 copy.png
 K 25
 svn:wc:ra_dav:version-url
 V 47
 /svn/!svn/ver/3419/trunk/public/images/copy.png
 END
-zoom_in.png
-K 25
-svn:wc:ra_dav:version-url
-V 50
-/svn/!svn/ver/3419/trunk/public/images/zoom_in.png
-END
 news.png
 K 25
 svn:wc:ra_dav:version-url
@@ -111,6 +123,12 @@
 V 52
 /svn/!svn/ver/3419/trunk/public/images/lightning.png
 END
+milestone_todo.png
+K 25
+svn:wc:ra_dav:version-url
+V 57
+/svn/!svn/ver/4072/trunk/public/images/milestone_todo.png
+END
 edit.png
 K 25
 svn:wc:ra_dav:version-url
@@ -169,7 +187,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 52
-/svn/!svn/ver/3419/trunk/public/images/task_done.png
+/svn/!svn/ver/4072/trunk/public/images/task_done.png
 END
 bullet_delete.png
 K 25
@@ -231,47 +249,53 @@
 V 61
 /svn/!svn/ver/3419/trunk/public/images/folder_open_orange.png
 END
+textfield.png
+K 25
+svn:wc:ra_dav:version-url
+V 52
+/svn/!svn/ver/3419/trunk/public/images/textfield.png
+END
 attachment.png
 K 25
 svn:wc:ra_dav:version-url
 V 53
 /svn/!svn/ver/3419/trunk/public/images/attachment.png
 END
-textfield.png
-K 25
-svn:wc:ra_dav:version-url
-V 52
-/svn/!svn/ver/3419/trunk/public/images/textfield.png
-END
 false.png
 K 25
 svn:wc:ra_dav:version-url
 V 48
 /svn/!svn/ver/3419/trunk/public/images/false.png
 END
+unlock.png
+K 25
+svn:wc:ra_dav:version-url
+V 49
+/svn/!svn/ver/3430/trunk/public/images/unlock.png
+END
 bullet_toggle_plus.png
 K 25
 svn:wc:ra_dav:version-url
 V 61
 /svn/!svn/ver/3419/trunk/public/images/bullet_toggle_plus.png
 END
-unlock.png
-K 25
-svn:wc:ra_dav:version-url
-V 49
-/svn/!svn/ver/3430/trunk/public/images/unlock.png
-END
 group.png
 K 25
 svn:wc:ra_dav:version-url
 V 48
 /svn/!svn/ver/3419/trunk/public/images/group.png
 END
-plugin.png
+save.png
 K 25
 svn:wc:ra_dav:version-url
-V 49
-/svn/!svn/ver/3419/trunk/public/images/plugin.png
+V 47
+/svn/!svn/ver/3419/trunk/public/images/save.png
+END
+bullet_blue.png
+K 25
+svn:wc:ra_dav:version-url
+V 54
+/svn/!svn/ver/3419/trunk/public/images/bullet_blue.png
 END
 loading.gif
 K 25
@@ -279,23 +303,11 @@
 V 48
 /svn/!svn/ver/67/trunk/public/images/loading.gif
 END
-bullet_blue.png
+plugin.png
 K 25
 svn:wc:ra_dav:version-url
-V 54
-/svn/!svn/ver/3419/trunk/public/images/bullet_blue.png
-END
-save.png
-K 25
-svn:wc:ra_dav:version-url
-V 47
-/svn/!svn/ver/3419/trunk/public/images/save.png
-END
-milestone.png
-K 25
-svn:wc:ra_dav:version-url
-V 52
-/svn/!svn/ver/3419/trunk/public/images/milestone.png
+V 49
+/svn/!svn/ver/3419/trunk/public/images/plugin.png
 END
 bullet_add.png
 K 25
@@ -315,66 +327,72 @@
 V 54
 /svn/!svn/ver/3419/trunk/public/images/exclamation.png
 END
+milestone_done.png
+K 25
+svn:wc:ra_dav:version-url
+V 57
+/svn/!svn/ver/4072/trunk/public/images/milestone_done.png
+END
 ticket_go.png
 K 25
 svn:wc:ra_dav:version-url
 V 52
 /svn/!svn/ver/3419/trunk/public/images/ticket_go.png
 END
+zoom_out.png
+K 25
+svn:wc:ra_dav:version-url
+V 51
+/svn/!svn/ver/3419/trunk/public/images/zoom_out.png
+END
+report.png
+K 25
+svn:wc:ra_dav:version-url
+V 49
+/svn/!svn/ver/3419/trunk/public/images/report.png
+END
 folder.png
 K 25
 svn:wc:ra_dav:version-url
 V 49
 /svn/!svn/ver/3419/trunk/public/images/folder.png
 END
-report.png
-K 25
-svn:wc:ra_dav:version-url
-V 49
-/svn/!svn/ver/3419/trunk/public/images/report.png
-END
-zoom_out.png
-K 25
-svn:wc:ra_dav:version-url
-V 51
-/svn/!svn/ver/3419/trunk/public/images/zoom_out.png
-END
 fav.png
 K 25
 svn:wc:ra_dav:version-url
 V 46
 /svn/!svn/ver/3419/trunk/public/images/fav.png
 END
+bullet_purple.png
+K 25
+svn:wc:ra_dav:version-url
+V 56
+/svn/!svn/ver/3419/trunk/public/images/bullet_purple.png
+END
 document.png
 K 25
 svn:wc:ra_dav:version-url
 V 51
 /svn/!svn/ver/3419/trunk/public/images/document.png
 END
-bullet_purple.png
-K 25
-svn:wc:ra_dav:version-url
-V 56
-/svn/!svn/ver/3419/trunk/public/images/bullet_purple.png
-END
 true.png
 K 25
 svn:wc:ra_dav:version-url
 V 47
 /svn/!svn/ver/3419/trunk/public/images/true.png
 END
+2uparrow.png
+K 25
+svn:wc:ra_dav:version-url
+V 51
+/svn/!svn/ver/3419/trunk/public/images/2uparrow.png
+END
 arrow_down.png
 K 25
 svn:wc:ra_dav:version-url
 V 53
 /svn/!svn/ver/3419/trunk/public/images/arrow_down.png
 END
-2uparrow.png
-K 25
-svn:wc:ra_dav:version-url
-V 51
-/svn/!svn/ver/3419/trunk/public/images/2uparrow.png
-END
 cancel.png
 K 25
 svn:wc:ra_dav:version-url
@@ -537,6 +555,12 @@
 V 52
 /svn/!svn/ver/3419/trunk/public/images/sort_desc.png
 END
+version_marker.png
+K 25
+svn:wc:ra_dav:version-url
+V 57
+/svn/!svn/ver/4072/trunk/public/images/version_marker.png
+END
 task_todo.png
 K 25
 svn:wc:ra_dav:version-url
--- a/public/images/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/public/images/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,14 +1,14 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/public/images
 http://redmine.rubyforge.org/svn
 
 
 
-2010-07-20T23:50:15.173990Z
-3859
+2010-09-10T03:09:02.311267Z
+4072
 edavis10
 
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:47.604116Z
+2010-09-23T14:37:45.159811Z
 45d9f8f4b7723c5df684fd6785b40700
 2010-02-13T09:08:12.698526Z
 3419
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:47.604116Z
+2010-09-23T14:37:45.159811Z
 9016fc5be8e81d6a41a1fd6312b05f39
 2010-03-13T14:56:49.379682Z
 3573
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:47.604116Z
+2010-09-23T14:37:45.123788Z
 2455a62f4801926d7c69099f5134c867
 2010-02-13T09:08:12.698526Z
 3419
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:47.604116Z
+2010-09-23T14:37:45.127811Z
 bc6f6e0d67aba9e7689e852dad4977f9
 2010-02-13T09:08:12.698526Z
 3419
@@ -168,7 +168,7 @@
 
 
 
-2010-07-23T14:49:47.604116Z
+2010-09-23T14:37:45.139758Z
 8ae3a2d9ef884ed73a4157cd9c0465b8
 2010-02-13T09:08:12.698526Z
 3419
@@ -202,7 +202,7 @@
 
 
 
-2010-07-23T14:49:47.604116Z
+2010-09-23T14:37:45.123788Z
 6730b4ea633194233bec98ee5f7a3977
 2010-02-13T09:08:12.698526Z
 3419
@@ -230,13 +230,47 @@
 
 282
 
+milestone_late.png
+file
+
+
+
+
+2010-09-24T12:48:29.823793Z
+ecc1979ed435769c700725495428359f
+2010-09-10T03:09:02.311267Z
+4072
+edavis10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+160
+
 warning.png
 file
 
 
 
 
-2010-07-23T14:49:47.604116Z
+2010-09-23T14:37:45.163769Z
 f1cdd6ad27b9211924dcd8a4c8133f1b
 2010-02-13T09:08:12.698526Z
 3419
@@ -270,7 +304,7 @@
 
 
 
-2010-07-23T14:49:47.604116Z
+2010-09-23T14:37:45.155802Z
 a20844852ce8909ed4a19ccb0f6c6518
 2010-02-14T13:13:16.743297Z
 3430
@@ -304,7 +338,7 @@
 
 
 
-2010-07-23T14:49:47.604116Z
+2010-09-23T14:37:45.155802Z
 0a2ceb01cbc3c01186fdcc25ced8eb0d
 2010-02-13T09:08:12.698526Z
 3419
@@ -338,7 +372,7 @@
 
 
 
-2010-07-23T14:49:47.604116Z
+2010-09-23T14:37:45.131805Z
 ff96c02d8f18116bb3f005f2c8b86e91
 2010-02-13T09:08:12.698526Z
 3419
@@ -366,13 +400,47 @@
 
 211
 
+project_marker.png
+file
+
+
+
+
+2010-09-24T12:48:29.823793Z
+94cfc6b14b69f8eb30909fa1a0d8721d
+2010-09-10T03:09:02.311267Z
+4072
+edavis10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+204
+
 ticket_note.png
 file
 
 
 
 
-2010-07-23T14:49:47.604116Z
+2010-09-23T14:37:45.159811Z
 6a0f06b7f2b400d1d7b07180a909fed2
 2010-02-13T09:08:12.698526Z
 3419
@@ -406,7 +474,7 @@
 
 
 
-2010-07-23T14:49:47.608094Z
+2010-09-23T14:37:45.127811Z
 acd6a5a422b44466803829ce8a12fd9a
 2010-02-13T09:08:12.698526Z
 3419
@@ -440,7 +508,7 @@
 
 
 
-2010-07-23T14:49:47.604116Z
+2010-09-23T14:37:45.163769Z
 91b883d074b727f1a95cd0ce48510a3c
 2010-02-13T09:08:12.698526Z
 3419
@@ -474,7 +542,7 @@
 
 
 
-2010-07-23T14:49:47.608094Z
+2010-09-23T14:37:45.155802Z
 63c87d73f46ed17a4ebc2b5a7e6cd6f4
 2010-02-13T09:08:12.698526Z
 3419
@@ -508,7 +576,7 @@
 
 
 
-2010-07-23T14:49:47.608094Z
+2010-09-23T14:37:45.123788Z
 45e9710ba200afbac6ba55970bd9d625
 2010-02-23T21:10:15.865943Z
 3477
@@ -545,7 +613,7 @@
 
 
 
-2010-07-23T14:49:47.608094Z
+2010-09-23T14:37:45.131805Z
 7604387e10f9c0be473a497ee5f516b8
 2010-02-13T09:08:12.698526Z
 3419
@@ -579,7 +647,7 @@
 
 
 
-2010-07-23T14:49:47.608094Z
+2010-09-23T14:37:45.127811Z
 66da3813f290297bc39d289b859c3818
 2010-02-13T09:08:12.698526Z
 3419
@@ -613,7 +681,7 @@
 
 
 
-2010-07-23T14:49:47.608094Z
+2010-09-23T14:37:45.151760Z
 0c32351cd2f92465a51d8da771bd92cb
 2010-02-13T09:08:12.698526Z
 3419
@@ -641,13 +709,47 @@
 
 584
 
+milestone_todo.png
+file
+
+
+
+
+2010-09-24T12:48:29.823793Z
+59894f5d5656b1f6e2af9c22187e6e86
+2010-09-10T03:09:02.311267Z
+4072
+edavis10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+155
+
 edit.png
 file
 
 
 
 
-2010-07-23T14:49:47.608094Z
+2010-09-23T14:37:45.131805Z
 30a7571b4822a789787f2a8b25ad4808
 2010-02-13T09:08:12.698526Z
 3419
@@ -681,7 +783,7 @@
 
 
 
-2010-07-23T14:49:47.608094Z
+2010-09-23T14:37:45.155802Z
 80f689a299e7e69fb2512482bca6f5d4
 2010-02-13T09:08:12.698526Z
 3419
@@ -715,7 +817,7 @@
 
 
 
-2010-07-23T14:49:47.608094Z
+2010-09-23T14:37:45.139758Z
 ce8f2e6769f9abc327609dea0ded14e5
 2010-02-13T09:08:12.698526Z
 3419
@@ -749,7 +851,7 @@
 
 
 
-2010-07-23T14:49:47.608094Z
+2010-09-23T14:37:45.151760Z
 242909ef391b4ebc83d53b13b4d90991
 2010-02-13T09:08:12.698526Z
 3419
@@ -783,7 +885,7 @@
 
 
 
-2010-07-23T14:49:47.608094Z
+2010-09-23T14:37:45.139758Z
 cf95da81d3626d67d5f49792341e396a
 2010-02-13T09:08:12.698526Z
 3419
@@ -817,7 +919,7 @@
 
 
 
-2010-07-23T14:49:47.608094Z
+2010-09-23T14:37:45.127811Z
 62d29dab3c8967d0ca404a25059c3dbd
 2010-02-13T09:08:12.698526Z
 3419
@@ -851,7 +953,7 @@
 
 
 
-2010-07-23T14:49:47.608094Z
+2010-09-23T14:37:45.155802Z
 eecb8adaaeabcff6c838886809c85f93
 2010-02-13T09:08:12.698526Z
 3419
@@ -885,7 +987,7 @@
 
 
 
-2010-07-23T14:49:47.608094Z
+2010-09-23T14:37:45.131805Z
 898a97e88d0cfc1dd41a6903d0a7cd72
 2010-02-13T09:08:12.698526Z
 3419
@@ -919,7 +1021,7 @@
 
 
 
-2010-07-23T14:49:47.608094Z
+2010-09-23T14:37:45.127811Z
 3713155c5afcfeffaf877126d6b942aa
 2010-02-13T09:08:12.698526Z
 3419
@@ -953,11 +1055,11 @@
 
 
 
-2010-07-23T14:49:47.608094Z
-56a0ca51cc67f89a4c4cd3aefa063611
-2010-02-13T09:08:12.698526Z
-3419
-jplang
+2010-09-24T12:48:29.823793Z
+40c58172e0c52eee4deb5227ec37f0cf
+2010-09-10T03:09:02.311267Z
+4072
+edavis10
 has-props
 
 
@@ -979,7 +1081,7 @@
 
 
 
-855
+137
 
 text_list_bullets.png
 file
@@ -987,7 +1089,7 @@
 
 
 
-2010-07-23T14:49:47.608094Z
+2010-09-23T14:37:45.159811Z
 01c137e009015642700b935edb321a89
 2010-02-13T09:08:12.698526Z
 3419
@@ -1021,7 +1123,7 @@
 
 
 
-2010-07-23T14:49:47.608094Z
+2010-09-23T14:37:45.123788Z
 fba036d7348ff28f7ab7dacbc52bc32a
 2010-02-13T09:08:12.698526Z
 3419
@@ -1055,7 +1157,7 @@
 
 
 
-2010-07-23T14:49:47.608094Z
+2010-09-23T14:37:45.123788Z
 ef1412a13d9113c5e5e85cfcd8300d9d
 2010-02-13T09:08:12.698526Z
 3419
@@ -1089,7 +1191,7 @@
 
 
 
-2010-07-23T14:49:47.612156Z
+2010-09-23T14:37:45.127811Z
 b2e4e10fb114db28b9245210a5505c44
 2010-02-14T11:52:12.027647Z
 3426
@@ -1123,7 +1225,7 @@
 
 
 
-2010-07-23T14:49:47.612156Z
+2010-09-23T14:37:45.155802Z
 e0d9ad958faa1c07b84c78c7b7e5ffae
 2010-02-13T09:08:12.698526Z
 3419
@@ -1157,7 +1259,7 @@
 
 
 
-2010-07-23T14:49:47.612156Z
+2010-09-23T14:37:45.159811Z
 3eb9e517f1a10430f7ec0ed7d30e05d8
 2010-02-13T09:08:12.698526Z
 3419
@@ -1191,7 +1293,7 @@
 
 
 
-2010-07-23T14:49:47.612156Z
+2010-09-23T14:37:45.123788Z
 e341b581fbbf8a5d038c8432409ceb5f
 2010-02-23T21:10:15.865943Z
 3477
@@ -1225,7 +1327,7 @@
 
 
 
-2010-07-23T14:49:47.612156Z
+2010-09-23T14:37:45.123788Z
 981a44ce8d3f71125a300dece0cc0f21
 2010-02-13T09:08:12.698526Z
 3419
@@ -1259,7 +1361,7 @@
 
 
 
-2010-07-23T14:49:47.612156Z
+2010-09-23T14:37:45.127811Z
 c4e01ea1c0ce5a1cd5154dfd2512fb21
 2010-02-13T09:08:12.698526Z
 3419
@@ -1293,7 +1395,7 @@
 
 
 
-2010-07-23T14:49:47.612156Z
+2010-09-23T14:37:45.139758Z
 944495c065d05a9161ad7da534703010
 2010-02-13T09:08:12.698526Z
 3419
@@ -1327,7 +1429,7 @@
 
 
 
-2010-07-23T14:49:47.612156Z
+2010-09-23T14:37:45.123788Z
 0a35d4eaddb2292fed7062295ee0dcd8
 2010-02-13T09:08:12.698526Z
 3419
@@ -1361,7 +1463,7 @@
 
 
 
-2010-07-23T14:49:47.612156Z
+2010-09-23T14:37:45.159811Z
 985a1dadffeaa303ff1eef4ea53ec0f4
 2010-02-13T09:08:12.698526Z
 3419
@@ -1395,7 +1497,7 @@
 
 
 
-2010-07-23T14:49:47.612156Z
+2010-09-23T14:37:45.131805Z
 f0c51de3ba403e552c8ab6e8084448a4
 2010-02-13T09:08:12.698526Z
 3419
@@ -1429,7 +1531,7 @@
 
 
 
-2010-07-23T14:49:47.612156Z
+2010-09-23T14:37:45.127811Z
 06cbf5da7daca348a87a6299a4112d71
 2010-02-13T09:08:12.698526Z
 3419
@@ -1463,7 +1565,7 @@
 
 
 
-2010-07-23T14:49:47.612156Z
+2010-09-23T14:37:45.159811Z
 fa1be48a747127ee34d4fae020b825d4
 2010-02-14T13:13:16.743297Z
 3430
@@ -1497,7 +1599,7 @@
 
 
 
-2010-07-23T14:49:47.612156Z
+2010-09-23T14:37:45.139758Z
 8e1056421acf9e61af00f0dcb83fef12
 2010-02-13T09:08:12.698526Z
 3419
@@ -1531,7 +1633,7 @@
 
 
 
-2010-07-23T14:49:47.612156Z
+2010-09-23T14:37:45.155802Z
 e019855b07d30f1ce1baf59b9df27125
 2010-02-13T09:08:12.698526Z
 3419
@@ -1565,7 +1667,7 @@
 
 
 
-2010-07-23T14:49:47.612156Z
+2010-09-23T14:37:45.151760Z
 03ce3dcc84af110e9da8699a841e5200
 2006-12-03T19:55:45.161980Z
 62
@@ -1599,7 +1701,7 @@
 
 
 
-2010-07-23T14:49:47.612156Z
+2010-09-23T14:37:45.123788Z
 3363f60299360fb5539b769d089e145f
 2010-02-13T09:08:12.698526Z
 3419
@@ -1633,7 +1735,7 @@
 
 
 
-2010-07-23T14:49:47.612156Z
+2010-09-23T14:37:45.155802Z
 9e64db8f4905a17e3a6f68792cd5e199
 2010-02-13T09:08:12.698526Z
 3419
@@ -1661,47 +1763,13 @@
 
 440
 
-milestone.png
-file
-
-
-
-
-2010-07-23T14:49:47.616101Z
-c9d132ff06712e3ffd794dc734dc3ef5
-2010-02-13T09:08:12.698526Z
-3419
-jplang
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-122
-
 bullet_add.png
 file
 
 
 
 
-2010-07-23T14:49:47.612156Z
+2010-09-23T14:37:45.123788Z
 848b802c0ce8e051f98f086f6e31c8cd
 2010-02-13T09:08:12.698526Z
 3419
@@ -1735,7 +1803,7 @@
 
 
 
-2010-07-23T14:49:47.616101Z
+2010-09-23T14:37:45.127811Z
 eec8605f3797315b2d8397422df1aed3
 2010-02-13T09:08:12.698526Z
 3419
@@ -1769,7 +1837,7 @@
 
 
 
-2010-07-23T14:49:47.616101Z
+2010-09-23T14:37:45.131805Z
 7b5dcbdd0de4541b39e1302b6277684d
 2010-02-13T09:08:12.698526Z
 3419
@@ -1797,13 +1865,47 @@
 
 648
 
+milestone_done.png
+file
+
+
+
+
+2010-09-24T12:48:29.823793Z
+40c58172e0c52eee4deb5227ec37f0cf
+2010-09-10T03:09:02.311267Z
+4072
+edavis10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+137
+
 ticket_go.png
 file
 
 
 
 
-2010-07-23T14:49:47.616101Z
+2010-09-23T14:37:45.159811Z
 dca02b582c10127fcdc8af47e94d4e4c
 2010-02-13T09:08:12.698526Z
 3419
@@ -1837,7 +1939,7 @@
 
 
 
-2010-07-23T14:49:47.616101Z
+2010-09-23T14:37:45.139758Z
 59f2dc025632f00403490176e7f42bfc
 2010-02-13T09:08:12.698526Z
 3419
@@ -1871,7 +1973,7 @@
 
 
 
-2010-07-23T14:49:47.616101Z
+2010-09-23T14:37:45.155802Z
 8d8ec49f5773997411ff708a82e40568
 2010-02-13T09:08:12.698526Z
 3419
@@ -1905,7 +2007,7 @@
 
 
 
-2010-07-23T14:49:47.616101Z
+2010-09-23T14:37:45.163769Z
 42b319d6ad0249fb20833a17d5f373a4
 2010-02-13T09:08:12.698526Z
 3419
@@ -1939,7 +2041,7 @@
 
 
 
-2010-07-23T14:49:47.616101Z
+2010-09-23T14:37:45.131805Z
 29feed9e7b5c34854bf9f9f39681e06b
 2010-02-13T09:08:12.698526Z
 3419
@@ -1973,7 +2075,7 @@
 
 
 
-2010-07-23T14:49:47.616101Z
+2010-09-23T14:37:45.127811Z
 97c12039afee2ea9c5a13e74f6fa5c0c
 2010-02-13T09:08:12.698526Z
 3419
@@ -2007,7 +2109,7 @@
 
 
 
-2010-07-23T14:49:47.616101Z
+2010-09-23T14:37:45.127811Z
 c4c76ce450e3e838afd6aa8f34a8d9a8
 2010-02-13T09:08:12.698526Z
 3419
@@ -2041,7 +2143,7 @@
 
 
 
-2010-07-23T14:49:47.616101Z
+2010-09-23T14:37:45.159811Z
 a30b3000c7286879d10ca1fbff06f71d
 2010-02-13T09:08:12.698526Z
 3419
@@ -2075,7 +2177,7 @@
 
 
 
-2010-07-23T14:49:47.616101Z
+2010-09-23T14:37:45.123788Z
 afef823014efb32adcd9606b69119562
 2010-02-13T09:08:12.698526Z
 3419
@@ -2109,7 +2211,7 @@
 
 
 
-2010-07-23T14:49:47.616101Z
+2010-09-23T14:37:45.123788Z
 ed9b7ced8e3b6275c14d528dc6909691
 2010-02-13T09:08:12.698526Z
 3419
@@ -2143,7 +2245,7 @@
 
 
 
-2010-07-23T14:49:47.616101Z
+2010-09-23T14:37:45.127811Z
 812bdb688394ba6e2ed3cb7ceb4b7df0
 2010-02-13T09:08:12.698526Z
 3419
@@ -2177,7 +2279,7 @@
 
 
 
-2010-07-23T14:49:47.616101Z
+2010-09-23T14:37:45.139758Z
 7e62689a93d0a23cbd1cf2dd754653e2
 2010-02-13T09:08:12.698526Z
 3419
@@ -2211,7 +2313,7 @@
 
 
 
-2010-07-23T14:49:47.616101Z
+2010-09-23T14:37:45.123788Z
 9856446e5026c8d31704b84e836dc06e
 2010-02-13T09:08:12.698526Z
 3419
@@ -2245,7 +2347,7 @@
 
 
 
-2010-07-23T14:49:47.616101Z
+2010-09-23T14:37:45.127811Z
 f94f71deb205f49de993ad9521791ada
 2010-02-13T09:08:12.698526Z
 3419
@@ -2279,7 +2381,7 @@
 
 
 
-2010-07-23T14:49:47.616101Z
+2010-09-23T14:37:45.155802Z
 3ec32bbf3ad9e052833d05c0d41445f0
 2010-02-13T09:08:12.698526Z
 3419
@@ -2313,7 +2415,7 @@
 
 
 
-2010-07-23T14:49:47.620100Z
+2010-09-23T14:37:45.123788Z
 980dcfdb816ce626e4d2df5c2a308549
 2010-02-13T09:08:12.698526Z
 3419
@@ -2347,7 +2449,7 @@
 
 
 
-2010-07-23T14:49:47.620100Z
+2010-09-23T14:37:45.155802Z
 3e9542b5042e280bc2fc0ae98c81529f
 2010-02-13T09:08:12.698526Z
 3419
@@ -2381,7 +2483,7 @@
 
 
 
-2010-07-23T14:49:47.620100Z
+2010-09-23T14:37:45.151760Z
 9a911ac680f354452f13729921e80d21
 2010-02-13T09:08:12.698526Z
 3419
@@ -2415,7 +2517,7 @@
 
 
 
-2010-07-23T14:49:47.620100Z
+2010-09-23T14:37:45.127811Z
 ea73bd6514b7d5f1d7ea2bd336f9303a
 2010-02-13T09:08:12.698526Z
 3419
@@ -2449,7 +2551,7 @@
 
 
 
-2010-07-23T14:49:47.620100Z
+2010-09-23T14:37:45.127811Z
 3b0e537dabdfa5385e76ea465c4ea57b
 2010-02-13T09:08:12.698526Z
 3419
@@ -2483,7 +2585,7 @@
 
 
 
-2010-07-23T14:49:47.620100Z
+2010-09-23T14:37:45.123788Z
 82e11faddb62c05a1ef9701035919c00
 2010-02-13T09:08:12.698526Z
 3419
@@ -2517,7 +2619,7 @@
 
 
 
-2010-07-23T14:49:47.620100Z
+2010-09-23T14:37:45.159811Z
 cd3890ab38793e53a99227a180616a70
 2010-02-13T09:08:12.698526Z
 3419
@@ -2551,7 +2653,7 @@
 
 
 
-2010-07-23T14:49:47.620100Z
+2010-09-23T14:37:45.159811Z
 9a73430b658b4e16668b3e3cc7e241b4
 2010-02-13T09:08:12.698526Z
 3419
@@ -2585,7 +2687,7 @@
 
 
 
-2010-07-23T14:49:47.620100Z
+2010-09-23T14:37:45.163769Z
 558c616ebcfa38b1c7b298184e58eb91
 2010-02-13T09:08:12.698526Z
 3419
@@ -2619,7 +2721,7 @@
 
 
 
-2010-07-23T14:49:47.620100Z
+2010-09-23T14:37:45.127811Z
 2459e5967a6ddd78589ab52970574f3f
 2010-02-13T09:08:12.698526Z
 3419
@@ -2653,7 +2755,7 @@
 
 
 
-2010-07-23T14:49:47.620100Z
+2010-09-23T14:37:45.131805Z
 60f9166d90d7aeb71d0ec9ee337c3f5e
 2010-02-13T09:08:12.698526Z
 3419
@@ -2690,7 +2792,7 @@
 
 
 
-2010-07-23T14:49:47.620100Z
+2010-09-23T14:37:45.127811Z
 cd5b56dff1c089b4e1e3db29b2b7226e
 2010-02-13T09:08:12.698526Z
 3419
@@ -2724,7 +2826,7 @@
 
 
 
-2010-07-23T14:49:47.620100Z
+2010-09-23T14:37:45.155802Z
 6172a7483daa35983c4ea5a35bd8c64a
 2010-07-20T23:50:15.173990Z
 3859
@@ -2758,7 +2860,7 @@
 
 
 
-2010-07-23T14:49:47.620100Z
+2010-09-23T14:37:45.159811Z
 6b08128a1b67ecb4b1ed06c9c505ac63
 2010-02-13T09:08:12.698526Z
 3419
@@ -2792,7 +2894,7 @@
 
 
 
-2010-07-23T14:49:47.620100Z
+2010-09-23T14:37:45.123788Z
 980dcfdb816ce626e4d2df5c2a308549
 2010-02-13T09:08:12.698526Z
 3419
@@ -2826,7 +2928,7 @@
 
 
 
-2010-07-23T14:49:47.620100Z
+2010-09-23T14:37:45.123788Z
 035a9d73627fc55aeaa7b553ac82ae9e
 2010-02-13T09:08:12.698526Z
 3419
@@ -2860,7 +2962,7 @@
 
 
 
-2010-07-23T14:49:47.620100Z
+2010-09-23T14:37:45.163769Z
 06b4b4425c7439fd898cd68e97f75d0f
 2010-02-13T09:08:12.698526Z
 3419
@@ -2894,7 +2996,7 @@
 
 
 
-2010-07-23T14:49:47.624157Z
+2010-09-23T14:37:45.163769Z
 d8ae88af42e1b9d1a4f9397041b17cd8
 2010-02-13T09:08:12.698526Z
 3419
@@ -2928,7 +3030,7 @@
 
 
 
-2010-07-23T14:49:47.624157Z
+2010-09-23T14:37:45.159811Z
 85089bb401af7c5d7325ee317483ac70
 2010-02-13T09:08:12.698526Z
 3419
@@ -2962,7 +3064,7 @@
 
 
 
-2010-07-23T14:49:47.624157Z
+2010-09-23T14:37:45.155802Z
 11dc95a35460864fc1e81bd95121cbf4
 2010-02-13T09:08:12.698526Z
 3419
@@ -2996,7 +3098,7 @@
 
 
 
-2010-07-23T14:49:47.624157Z
+2010-09-23T14:37:45.155802Z
 d8720cf3644e6ae0511c1391fb2ecf07
 2009-02-11T19:07:07.158826Z
 2442
@@ -3030,7 +3132,7 @@
 
 
 
-2010-07-23T14:49:47.624157Z
+2010-09-23T14:37:45.155802Z
 8b706274d81243b3d26fdf06dfc9e533
 2010-02-13T09:08:12.698526Z
 3419
@@ -3058,13 +3160,47 @@
 
 157
 
+version_marker.png
+file
+
+
+
+
+2010-09-24T12:48:29.823793Z
+f0626259c107cfa1d1e4cb9d9f6edd34
+2010-09-10T03:09:02.311267Z
+4072
+edavis10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+174
+
 task_todo.png
 file
 
 
 
 
-2010-07-23T14:49:47.624157Z
+2010-09-23T14:37:45.159811Z
 9265bd26d6ba3d780dcd6fe676352d93
 2010-02-13T09:08:12.698526Z
 3419
@@ -3098,7 +3234,7 @@
 
 
 
-2010-07-23T14:49:47.624157Z
+2010-09-23T14:37:45.159811Z
 e34a59e24637e7bf462f5a742dbe243f
 2010-02-13T09:08:12.698526Z
 3419
@@ -3132,7 +3268,7 @@
 
 
 
-2010-07-23T14:49:47.624157Z
+2010-09-23T14:37:45.159811Z
 11f086774137d85a5cc6590ec3335ead
 2010-02-13T09:08:12.698526Z
 3419
--- a/public/images/.svn/prop-base/milestone.png.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-K 13
-svn:mime-type
-V 24
-application/octet-stream
-END
Binary file public/images/.svn/text-base/milestone.png.svn-base has changed
Binary file public/images/.svn/text-base/milestone_done.png.svn-base has changed
Binary file public/images/.svn/text-base/milestone_late.png.svn-base has changed
Binary file public/images/.svn/text-base/milestone_todo.png.svn-base has changed
Binary file public/images/.svn/text-base/project_marker.png.svn-base has changed
Binary file public/images/.svn/text-base/task_done.png.svn-base has changed
Binary file public/images/.svn/text-base/version_marker.png.svn-base has changed
--- a/public/images/files/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/public/images/files/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/public/images/files
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:47.524134Z
+2010-09-23T14:37:45.135758Z
 136af9d95025ca62a3091a261266e13f
 2010-02-13T09:08:12.698526Z
 3419
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:47.524134Z
+2010-09-23T14:37:45.139758Z
 c801cf9aa0103de823e53e83459a1ff9
 2010-02-13T09:08:12.698526Z
 3419
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:47.528126Z
+2010-09-23T14:37:45.139758Z
 1e51c81cb33d3d6746d440c1babfe0f5
 2010-02-13T09:08:12.698526Z
 3419
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:47.528126Z
+2010-09-23T14:37:45.135758Z
 db0495227202385c9fce1b73f2d58ff0
 2010-02-13T09:08:12.698526Z
 3419
@@ -168,7 +168,7 @@
 
 
 
-2010-07-23T14:49:47.528126Z
+2010-09-23T14:37:45.139758Z
 94db8424e52f54d7372a976574c4598e
 2010-02-13T09:08:12.698526Z
 3419
@@ -202,7 +202,7 @@
 
 
 
-2010-07-23T14:49:47.528126Z
+2010-09-23T14:37:45.139758Z
 ad3ed8ec19bb2a3cca8c03e0ea1aa846
 2010-02-13T09:08:12.698526Z
 3419
@@ -236,7 +236,7 @@
 
 
 
-2010-07-23T14:49:47.528126Z
+2010-09-23T14:37:45.139758Z
 8e05d64f0b9f45f076b41521a8d6a8d1
 2010-02-13T09:08:12.698526Z
 3419
@@ -270,7 +270,7 @@
 
 
 
-2010-07-23T14:49:47.528126Z
+2010-09-23T14:37:45.139758Z
 ea9b5de5353e1cac630021dfed30dba4
 2010-02-13T09:08:12.698526Z
 3419
@@ -304,7 +304,7 @@
 
 
 
-2010-07-23T14:49:47.528126Z
+2010-09-23T14:37:45.139758Z
 0790c67308754572014015fa90eef406
 2010-02-13T09:08:12.698526Z
 3419
@@ -338,7 +338,7 @@
 
 
 
-2010-07-23T14:49:47.528126Z
+2010-09-23T14:37:45.139758Z
 e11f9ebff53e8088dce2a0028f0d5190
 2010-02-13T09:08:12.698526Z
 3419
--- a/public/images/jstoolbar/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/public/images/jstoolbar/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/public/images/jstoolbar
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:47.592097Z
+2010-09-23T14:37:45.151760Z
 c77264aa6d145362b791c99d18f53ace
 2010-02-13T09:08:12.698526Z
 3419
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:47.592097Z
+2010-09-23T14:37:45.151760Z
 c19bfc8d9620c00cdd8ae322426bc07e
 2010-02-13T09:08:12.698526Z
 3419
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:47.592097Z
+2010-09-23T14:37:45.151760Z
 5477ff20be77ab65aa6b75f47778234e
 2010-02-13T09:08:12.698526Z
 3419
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:47.592097Z
+2010-09-23T14:37:45.151760Z
 cb940b592da5ed0367305cb0514d5684
 2010-02-13T09:08:12.698526Z
 3419
@@ -168,7 +168,7 @@
 
 
 
-2010-07-23T14:49:47.592097Z
+2010-09-23T14:37:45.151760Z
 ef6624df45946b54e3b23db2a0c6b77b
 2010-02-13T09:08:12.698526Z
 3419
@@ -202,7 +202,7 @@
 
 
 
-2010-07-23T14:49:47.592097Z
+2010-09-23T14:37:45.151760Z
 f9d7446ceaa5142a5030e9430b3a2bb4
 2010-02-13T09:08:12.698526Z
 3419
@@ -236,7 +236,7 @@
 
 
 
-2010-07-23T14:49:47.592097Z
+2010-09-23T14:37:45.151760Z
 04a0e86c9eec7d85d445e7627b5fc8ea
 2010-02-13T09:08:12.698526Z
 3419
@@ -270,7 +270,7 @@
 
 
 
-2010-07-23T14:49:47.592097Z
+2010-09-23T14:37:45.147772Z
 123b8289e1bd69a5944cf727a5e39bc9
 2010-02-13T09:08:12.698526Z
 3419
@@ -304,7 +304,7 @@
 
 
 
-2010-07-23T14:49:47.592097Z
+2010-09-23T14:37:45.151760Z
 15d8f6c0fbf85718123fb7c7da782713
 2010-02-13T09:08:12.698526Z
 3419
@@ -338,7 +338,7 @@
 
 
 
-2010-07-23T14:49:47.592097Z
+2010-09-23T14:37:45.151760Z
 5a29cb56451be0fd714b99d2b2649bf0
 2010-02-13T09:08:12.698526Z
 3419
@@ -372,7 +372,7 @@
 
 
 
-2010-07-23T14:49:47.592097Z
+2010-09-23T14:37:45.151760Z
 07234419aecb827f11eef1ebd9b42482
 2010-02-13T09:08:12.698526Z
 3419
@@ -406,7 +406,7 @@
 
 
 
-2010-07-23T14:49:47.592097Z
+2010-09-23T14:37:45.151760Z
 5042501ddf948fe938ded69a40ef1024
 2010-02-13T09:08:12.698526Z
 3419
@@ -440,7 +440,7 @@
 
 
 
-2010-07-23T14:49:47.592097Z
+2010-09-23T14:37:45.151760Z
 584fb45fd15d894adc19ff3cf626fae9
 2010-02-13T09:08:12.698526Z
 3419
@@ -474,7 +474,7 @@
 
 
 
-2010-07-23T14:49:47.592097Z
+2010-09-23T14:37:45.147772Z
 8448f92476ae933bacef7bc30ffd18fd
 2010-02-13T09:08:12.698526Z
 3419
@@ -508,7 +508,7 @@
 
 
 
-2010-07-23T14:49:47.592097Z
+2010-09-23T14:37:45.151760Z
 38ee94bc0a44b9420854aceeccd2dd59
 2010-02-13T09:08:12.698526Z
 3419
Binary file public/images/milestone.png has changed
Binary file public/images/milestone_done.png has changed
Binary file public/images/milestone_late.png has changed
Binary file public/images/milestone_todo.png has changed
Binary file public/images/project_marker.png has changed
Binary file public/images/task_done.png has changed
Binary file public/images/version_marker.png has changed
--- a/public/javascripts/.svn/all-wcprops	Fri Sep 24 15:33:13 2010 +0100
+++ b/public/javascripts/.svn/all-wcprops	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 43
-/svn/!svn/ver/4003/trunk/public/javascripts
+/svn/!svn/ver/4060/trunk/public/javascripts
 END
 prototype.js
 K 25
--- a/public/javascripts/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/public/javascripts/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,14 +1,14 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/public/javascripts
 http://redmine.rubyforge.org/svn
 
 
 
-2010-08-19T15:41:09.090282Z
-4003
+2010-09-05T11:33:08.614151Z
+4060
 winterheart
 
 
@@ -35,7 +35,7 @@
 
 
 
-2010-07-23T14:49:47.744131Z
+2010-09-23T14:37:45.243754Z
 b5684120e496c310977713be34be4868
 2009-02-21T11:04:50.579477Z
 2493
@@ -69,7 +69,7 @@
 
 
 
-2010-07-23T14:49:47.744131Z
+2010-09-23T14:37:45.207758Z
 94d0e70a6ed4354a44ddb78ac6e15869
 2010-03-04T19:09:14.637225Z
 3544
@@ -106,7 +106,7 @@
 
 
 
-2010-07-23T14:49:47.744131Z
+2010-09-23T14:37:45.243754Z
 b868f888ccb92a2e7d3b955f0213078c
 2009-08-15T22:41:40.505056Z
 2840
@@ -140,7 +140,7 @@
 
 
 
-2010-07-23T14:49:47.744131Z
+2010-09-23T14:37:45.207758Z
 a7d95dc040992701ba78fd5b97af950e
 2009-02-21T11:04:50.579477Z
 2493
@@ -174,7 +174,7 @@
 
 
 
-2010-07-23T14:49:47.744131Z
+2010-09-23T14:37:45.243754Z
 d62b158eef2592fbe11ce104e118631c
 2009-11-28T11:59:45.246623Z
 3106
@@ -208,7 +208,7 @@
 
 
 
-2010-07-23T14:49:47.744131Z
+2010-09-23T14:37:45.207758Z
 3aa08ad9af21eb305a120e2e1a47d1af
 2009-02-21T11:04:50.579477Z
 2493
@@ -242,7 +242,7 @@
 
 
 
-2010-07-28T11:07:47.532171Z
+2010-09-23T14:37:45.171796Z
 6645a3ecbb861b6ed2923565afa744aa
 2010-07-25T10:34:55.569539Z
 3879
@@ -276,7 +276,7 @@
 
 
 
-2010-07-23T14:49:47.748130Z
+2010-09-23T14:37:45.207758Z
 136701e951925f3dcb84f9a231f9326e
 2009-02-21T11:04:50.579477Z
 2493
--- a/public/javascripts/calendar/.svn/all-wcprops	Fri Sep 24 15:33:13 2010 +0100
+++ b/public/javascripts/calendar/.svn/all-wcprops	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 52
-/svn/!svn/ver/4003/trunk/public/javascripts/calendar
+/svn/!svn/ver/4060/trunk/public/javascripts/calendar
 END
 calendar-setup.js
 K 25
--- a/public/javascripts/calendar/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/public/javascripts/calendar/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,14 +1,14 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/public/javascripts/calendar
 http://redmine.rubyforge.org/svn
 
 
 
-2010-08-19T15:41:09.090282Z
-4003
+2010-09-05T11:33:08.614151Z
+4060
 winterheart
 
 
@@ -35,7 +35,7 @@
 
 
 
-2010-07-23T14:49:47.736158Z
+2010-09-23T14:37:45.171796Z
 e9be087e31b69f1e6a29ebd09b878486
 2009-12-26T17:17:16.012737Z
 3252
@@ -69,7 +69,7 @@
 
 
 
-2010-07-23T14:49:47.736158Z
+2010-09-23T14:37:45.171796Z
 a2dccec0bd70984b17a54239caf0d5e0
 2010-06-30T02:54:15.730933Z
 3822
--- a/public/javascripts/calendar/lang/.svn/all-wcprops	Fri Sep 24 15:33:13 2010 +0100
+++ b/public/javascripts/calendar/lang/.svn/all-wcprops	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 57
-/svn/!svn/ver/4003/trunk/public/javascripts/calendar/lang
+/svn/!svn/ver/4060/trunk/public/javascripts/calendar/lang
 END
 calendar-fi.js
 K 25
@@ -25,7 +25,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 72
-/svn/!svn/ver/2433/trunk/public/javascripts/calendar/lang/calendar-mk.js
+/svn/!svn/ver/4049/trunk/public/javascripts/calendar/lang/calendar-mk.js
 END
 calendar-es.js
 K 25
@@ -99,29 +99,29 @@
 V 72
 /svn/!svn/ver/3227/trunk/public/javascripts/calendar/lang/calendar-id.js
 END
+calendar-en.js
+K 25
+svn:wc:ra_dav:version-url
+V 71
+/svn/!svn/ver/419/trunk/public/javascripts/calendar/lang/calendar-en.js
+END
 calendar-gl.js
 K 25
 svn:wc:ra_dav:version-url
 V 72
 /svn/!svn/ver/2296/trunk/public/javascripts/calendar/lang/calendar-gl.js
 END
-calendar-en.js
-K 25
-svn:wc:ra_dav:version-url
-V 71
-/svn/!svn/ver/419/trunk/public/javascripts/calendar/lang/calendar-en.js
-END
 calendar-fr.js
 K 25
 svn:wc:ra_dav:version-url
 V 71
 /svn/!svn/ver/748/trunk/public/javascripts/calendar/lang/calendar-fr.js
 END
-calendar-zh-tw.js
+calendar-nl.js
 K 25
 svn:wc:ra_dav:version-url
-V 75
-/svn/!svn/ver/1498/trunk/public/javascripts/calendar/lang/calendar-zh-tw.js
+V 71
+/svn/!svn/ver/539/trunk/public/javascripts/calendar/lang/calendar-nl.js
 END
 calendar-hr.js
 K 25
@@ -129,11 +129,11 @@
 V 72
 /svn/!svn/ver/3320/trunk/public/javascripts/calendar/lang/calendar-hr.js
 END
-calendar-nl.js
+calendar-zh-tw.js
 K 25
 svn:wc:ra_dav:version-url
-V 71
-/svn/!svn/ver/539/trunk/public/javascripts/calendar/lang/calendar-nl.js
+V 75
+/svn/!svn/ver/1498/trunk/public/javascripts/calendar/lang/calendar-zh-tw.js
 END
 calendar-mn.js
 K 25
@@ -141,18 +141,18 @@
 V 72
 /svn/!svn/ver/3626/trunk/public/javascripts/calendar/lang/calendar-mn.js
 END
+calendar-pl.js
+K 25
+svn:wc:ra_dav:version-url
+V 71
+/svn/!svn/ver/749/trunk/public/javascripts/calendar/lang/calendar-pl.js
+END
 calendar-th.js
 K 25
 svn:wc:ra_dav:version-url
 V 72
 /svn/!svn/ver/1383/trunk/public/javascripts/calendar/lang/calendar-th.js
 END
-calendar-pl.js
-K 25
-svn:wc:ra_dav:version-url
-V 71
-/svn/!svn/ver/749/trunk/public/javascripts/calendar/lang/calendar-pl.js
-END
 calendar-it.js
 K 25
 svn:wc:ra_dav:version-url
@@ -171,18 +171,18 @@
 V 72
 /svn/!svn/ver/1149/trunk/public/javascripts/calendar/lang/calendar-lt.js
 END
+calendar-lv.js
+K 25
+svn:wc:ra_dav:version-url
+V 72
+/svn/!svn/ver/3737/trunk/public/javascripts/calendar/lang/calendar-lv.js
+END
 calendar-zh.js
 K 25
 svn:wc:ra_dav:version-url
 V 72
 /svn/!svn/ver/1498/trunk/public/javascripts/calendar/lang/calendar-zh.js
 END
-calendar-lv.js
-K 25
-svn:wc:ra_dav:version-url
-V 72
-/svn/!svn/ver/3737/trunk/public/javascripts/calendar/lang/calendar-lv.js
-END
 calendar-pt.js
 K 25
 svn:wc:ra_dav:version-url
@@ -193,7 +193,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 72
-/svn/!svn/ver/1865/trunk/public/javascripts/calendar/lang/calendar-ca.js
+/svn/!svn/ver/4060/trunk/public/javascripts/calendar/lang/calendar-ca.js
 END
 calendar-pt-br.js
 K 25
--- a/public/javascripts/calendar/lang/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/public/javascripts/calendar/lang/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,14 +1,14 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/public/javascripts/calendar/lang
 http://redmine.rubyforge.org/svn
 
 
 
-2010-08-19T15:41:09.090282Z
-4003
+2010-09-05T11:33:08.614151Z
+4060
 winterheart
 
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:47.724097Z
+2010-09-23T14:37:45.195758Z
 d89a932075b18af4121f1941175d33d6
 2008-03-05T08:54:26.865464Z
 1186
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:47.724097Z
+2010-09-23T14:37:45.195758Z
 1f10556f12619006e5cd99bf0e5061cc
 2009-03-24T19:16:02.676125Z
 2629
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:47.724097Z
+2010-09-23T14:37:45.195758Z
 071917d0ae794b3cb057a0b354cd5105
 2007-09-25T16:37:51.755262Z
 764
@@ -134,10 +134,10 @@
 
 
 
-2010-07-23T14:49:47.724097Z
-8973ef0899eae57cc269c3d61d8220f9
-2009-02-10T16:05:31.877017Z
-2433
+2010-09-24T12:48:29.835791Z
+1044fe45dceaa0d72c32aca5c86eea4a
+2010-08-29T12:54:04.302020Z
+4049
 winterheart
 
 
@@ -160,7 +160,7 @@
 
 
 
-3942
+4326
 
 calendar-es.js
 file
@@ -168,7 +168,7 @@
 
 
 
-2010-07-23T14:49:47.724097Z
+2010-09-23T14:37:45.195758Z
 5728a3665edb05faed6661f0f77c6eab
 2007-04-04T18:20:45.423396Z
 419
@@ -202,7 +202,7 @@
 
 
 
-2010-07-23T14:49:47.724097Z
+2010-09-23T14:37:45.199778Z
 42ef87b559c68d2db63b109f3cb3f3ed
 2008-12-24T15:48:59.830167Z
 2182
@@ -236,7 +236,7 @@
 
 
 
-2010-07-23T14:49:47.724097Z
+2010-09-23T14:37:45.195758Z
 3f9bda99497d5c8342d87b4ec6aa44ba
 2010-01-25T15:25:46.560119Z
 3338
@@ -270,7 +270,7 @@
 
 
 
-2010-07-23T14:49:47.724097Z
+2010-09-23T14:37:45.199778Z
 4ae334472d40209252da8c69f07eabd5
 2008-03-27T19:27:40.125888Z
 1300
@@ -304,7 +304,7 @@
 
 
 
-2010-07-23T14:49:47.724097Z
+2010-09-23T14:37:45.199778Z
 3c66093b97b7d0bb66f04dbc0be4afb3
 2008-05-25T12:18:49.439996Z
 1452
@@ -338,7 +338,7 @@
 
 
 
-2010-07-23T14:49:47.724097Z
+2010-09-23T14:37:45.203758Z
 c161d1507fbd65ebddd7ada7c495eb89
 2008-11-09T00:29:20.731069Z
 1998
@@ -372,7 +372,7 @@
 
 
 
-2010-07-23T14:49:47.724097Z
+2010-09-23T14:37:45.203758Z
 a85bbd596ff7e03e9434a286edd134fd
 2009-02-21T11:04:50.579477Z
 2493
@@ -406,7 +406,7 @@
 
 
 
-2010-07-23T14:49:47.724097Z
+2010-09-23T14:37:45.203758Z
 46811ee79796d2345bea2308475d1ec9
 2008-02-15T17:47:19.829750Z
 1149
@@ -440,7 +440,7 @@
 
 
 
-2010-08-25T15:27:58.506576Z
+2010-09-23T14:37:45.203758Z
 c48be791f5e8d236624752ce05cd3ed7
 2010-08-19T15:41:09.090282Z
 4003
@@ -474,7 +474,7 @@
 
 
 
-2010-07-23T14:49:47.724097Z
+2010-09-23T14:37:45.203758Z
 7e96487f7e089a48bd61d5e6e8785fe1
 2009-03-24T19:20:53.296475Z
 2630
@@ -508,7 +508,7 @@
 
 
 
-2010-07-23T14:49:47.724097Z
+2010-09-23T14:37:45.203758Z
 8555f3d813ca70ecbd2aaecae826549f
 2007-11-16T21:24:22.091853Z
 907
@@ -542,7 +542,7 @@
 
 
 
-2010-07-23T14:49:47.728099Z
+2010-09-23T14:37:45.199778Z
 f5a05a0d27c2d22fa8a7bf16be345250
 2009-12-23T18:56:03.404741Z
 3227
@@ -576,7 +576,7 @@
 
 
 
-2010-07-23T14:49:47.728099Z
+2010-09-23T14:37:45.195758Z
 46811ee79796d2345bea2308475d1ec9
 2007-04-04T18:20:45.423396Z
 419
@@ -610,7 +610,7 @@
 
 
 
-2010-07-23T14:49:47.728099Z
+2010-09-23T14:37:45.195758Z
 c4f74e36f6a3debcf8ec065bc6886f04
 2009-01-23T15:37:59.406714Z
 2296
@@ -644,7 +644,7 @@
 
 
 
-2010-07-23T14:49:47.728099Z
+2010-09-23T14:37:45.195758Z
 0bfaa3ec0b265f9d5a815d9b9b348c96
 2007-09-22T14:12:44.830265Z
 748
@@ -678,7 +678,7 @@
 
 
 
-2010-07-23T14:49:47.728099Z
+2010-09-23T14:37:45.199778Z
 c029bd9c4867bb39e86d1d6efada6d58
 2007-05-24T17:29:11.682821Z
 539
@@ -712,7 +712,7 @@
 
 
 
-2010-07-23T14:49:47.728099Z
+2010-09-23T14:37:45.195758Z
 f8d0daa275cf612206c43d4c9be95d08
 2010-01-17T10:33:30.937961Z
 3320
@@ -746,7 +746,7 @@
 
 
 
-2010-07-23T14:49:47.728099Z
+2010-09-23T14:37:45.203758Z
 0bed4c9c046772a12267b4118bf1504a
 2008-06-07T09:03:20.687527Z
 1498
@@ -780,7 +780,7 @@
 
 
 
-2010-07-23T14:49:47.728099Z
+2010-09-23T14:37:45.199778Z
 307341352eee53b3ccd1fbec2a4b27f7
 2010-04-03T10:49:16.109274Z
 3626
@@ -814,7 +814,7 @@
 
 
 
-2010-07-23T14:49:47.728099Z
+2010-09-23T14:37:45.199778Z
 eabf711c28d30bb9474f3f505766f286
 2007-09-22T14:56:09.057923Z
 749
@@ -848,7 +848,7 @@
 
 
 
-2010-07-23T14:49:47.728099Z
+2010-09-23T14:37:45.203758Z
 c8c19e66c3e1099c3e0ecae6462f68da
 2008-04-30T08:47:14.770680Z
 1383
@@ -882,7 +882,7 @@
 
 
 
-2010-08-25T15:27:58.506576Z
+2010-09-23T14:37:45.199778Z
 d637b0156da2601e000e16f1ac178768
 2010-08-19T15:41:09.090282Z
 4003
@@ -916,7 +916,7 @@
 
 
 
-2010-07-23T14:49:47.728099Z
+2010-09-23T14:37:45.203758Z
 cbf1a5c6b271835c701031aacaeaa271
 2009-01-31T12:02:37.933490Z
 2340
@@ -950,7 +950,7 @@
 
 
 
-2010-07-23T14:49:47.728099Z
+2010-09-23T14:37:45.199778Z
 33bc41a153fc6fb2aa53069fb0f647d6
 2008-02-15T17:47:19.829750Z
 1149
@@ -984,7 +984,7 @@
 
 
 
-2010-07-23T14:49:47.728099Z
+2010-09-23T14:37:45.199778Z
 b260d88c13c01ebf4e7c94b9cb022930
 2010-05-14T18:15:41.754813Z
 3737
@@ -1018,7 +1018,7 @@
 
 
 
-2010-07-23T14:49:47.728099Z
+2010-09-23T14:37:45.203758Z
 02222471f3e701ac1223096737fa5705
 2008-06-07T09:03:20.687527Z
 1498
@@ -1052,10 +1052,10 @@
 
 
 
-2010-07-23T14:49:47.728099Z
-994ec9a969270a6caf21d41a764474b7
-2008-09-15T16:07:30.857601Z
-1865
+2010-09-24T12:48:29.835791Z
+2756627844089652700c203ee91ec6f3
+2010-09-05T11:33:08.614151Z
+4060
 winterheart
 
 
@@ -1078,7 +1078,7 @@
 
 
 
-3833
+3828
 
 calendar-pt.js
 file
@@ -1086,7 +1086,7 @@
 
 
 
-2010-07-23T14:49:47.728099Z
+2010-09-23T14:37:45.203758Z
 67f2807b1ee731af4fe16f358a8d9096
 2008-10-06T15:00:56.914741Z
 1927
@@ -1120,7 +1120,7 @@
 
 
 
-2010-07-23T14:49:47.732143Z
+2010-09-23T14:37:45.199778Z
 c684331ae98de9a0e03db4de8f985e44
 2008-05-25T12:42:56.738934Z
 1453
@@ -1154,7 +1154,7 @@
 
 
 
-2010-07-23T14:49:47.732143Z
+2010-09-23T14:37:45.195758Z
 0d732eaa10604b943c7d600a15c8a651
 2009-01-20T16:09:07.993954Z
 2292
@@ -1188,7 +1188,7 @@
 
 
 
-2010-08-25T15:27:58.506576Z
+2010-09-23T14:37:45.203758Z
 a26f883ac70499ee0409af2c08156a84
 2010-08-19T15:41:09.090282Z
 4003
@@ -1222,7 +1222,7 @@
 
 
 
-2010-07-23T14:49:47.732143Z
+2010-09-23T14:37:45.203758Z
 8cb3dced137544295b39ef836028433e
 2008-09-13T17:25:01.876743Z
 1817
@@ -1256,7 +1256,7 @@
 
 
 
-2010-07-23T14:49:47.732143Z
+2010-09-23T14:37:45.191758Z
 df1a74fadb5ce5b1cc53aa70034f578b
 2007-05-02T19:36:00.768529Z
 502
@@ -1290,7 +1290,7 @@
 
 
 
-2010-07-23T14:49:47.732143Z
+2010-09-23T14:37:45.195758Z
 d508459192a856b332d75de94c8d5c6c
 2007-04-04T18:20:45.423396Z
 419
@@ -1324,7 +1324,7 @@
 
 
 
-2010-07-23T14:49:47.732143Z
+2010-09-23T14:37:45.195758Z
 66418d047f243e10172798af0fb4d927
 2010-06-21T19:54:55.180393Z
 3809
@@ -1358,7 +1358,7 @@
 
 
 
-2010-07-23T14:49:47.732143Z
+2010-09-23T14:37:45.203758Z
 7dc0f35efebbe8b0d078d2c847b43b7c
 2009-01-20T15:45:34.332677Z
 2290
@@ -1392,7 +1392,7 @@
 
 
 
-2010-07-23T14:49:47.732143Z
+2010-09-23T14:37:45.199778Z
 eb66ba69ac2233b24fe200060ec67ab7
 2008-01-10T18:34:14.889747Z
 1051
@@ -1426,7 +1426,7 @@
 
 
 
-2010-07-23T14:49:47.732143Z
+2010-09-23T14:37:45.195758Z
 0c77d7dafe8031971e69a7a57b3dc93e
 2008-05-30T15:34:53.673854Z
 1478
--- a/public/javascripts/calendar/lang/.svn/text-base/calendar-ca.js.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/public/javascripts/calendar/lang/.svn/text-base/calendar-ca.js.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -45,7 +45,7 @@
 
 // First day of the week. "0" means display Sunday first, "1" means display
 // Monday first, etc.
-Calendar._FD = 0;
+Calendar._FD = 1;
 
 // full month names
 Calendar._MN = new Array
@@ -84,17 +84,17 @@
 Calendar._TT["ABOUT"] =
 "Selector DHTML de data/hora\n" +
 "(c) dynarch.com 2002-2005 / Autor: Mihai Bazon\n" + // don't translate this this ;-)
-"Per a aconseguir l'última versió visiteu: http://www.dynarch.com/projects/calendar/\n" +
-"Distribuït sota la llicència GNU LGPL.  Vegeu http://gnu.org/licenses/lgpl.html per a més detalls." +
+"Per aconseguir l'última versió visiteu: http://www.dynarch.com/projects/calendar/\n" +
+"Distribuït sota la llicència GNU LGPL. Vegeu http://gnu.org/licenses/lgpl.html per obtenir més detalls." +
 "\n\n" +
 "Selecció de la data:\n" +
-"- Utilitzeu els botons \xab, \xbb per a seleccionar l'any\n" +
-"- Utilitzeu els botons " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " per a selecciona el mes\n" +
-"- Mantingueu premut el botó del ratolí sobre qualsevol d'aquests botons per a uns selecció més ràpida.";
+"- Utilitzeu els botons \xab, \xbb per seleccionar l'any\n" +
+"- Utilitzeu els botons " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " per seleccionar el mes\n" +
+"- Mantingueu premut el botó del ratolí sobre qualsevol d'aquests botons per a una selecció més ràpida.";
 Calendar._TT["ABOUT_TIME"] = "\n\n" +
 "Selecció de l'hora:\n" +
-"- Feu clic en qualsevol part de l'hora per a incrementar-la\n" +
-"- o premeu majúscules per a disminuir-la\n" +
+"- Feu clic en qualsevol part de l'hora per incrementar-la\n" +
+"- o premeu majúscules per disminuir-la\n" +
 "- o feu clic i arrossegueu per a una selecció més ràpida.";
 
 Calendar._TT["PREV_YEAR"] = "Any anterior (mantenir per menú)";
@@ -102,8 +102,8 @@
 Calendar._TT["GO_TODAY"] = "Anar a avui";
 Calendar._TT["NEXT_MONTH"] = "Mes següent (mantenir per menú)";
 Calendar._TT["NEXT_YEAR"] = "Any següent (mantenir per menú)";
-Calendar._TT["SEL_DATE"] = "Sel·lecciona data";
-Calendar._TT["DRAG_TO_MOVE"] = "Arrossega per a moure";
+Calendar._TT["SEL_DATE"] = "Sel·lecciona la data";
+Calendar._TT["DRAG_TO_MOVE"] = "Arrossega per moure";
 Calendar._TT["PART_TODAY"] = " (avui)";
 
 // the following is to inform that "%s" is to be the first day of week
@@ -117,7 +117,7 @@
 
 Calendar._TT["CLOSE"] = "Tanca";
 Calendar._TT["TODAY"] = "Avui";
-Calendar._TT["TIME_PART"] = "(Majúscules-)Feu clic o arrossegueu per a canviar el valor";
+Calendar._TT["TIME_PART"] = "(Majúscules-)Feu clic o arrossegueu per canviar el valor";
 
 // date formats
 Calendar._TT["DEF_DATE_FORMAT"] = "%d-%m-%Y";
--- a/public/javascripts/calendar/lang/.svn/text-base/calendar-mk.js.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/public/javascripts/calendar/lang/.svn/text-base/calendar-mk.js.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 // ** I18N
 
 // Calendar МК language
-// Author: Илин Татабитовски, <ilin@slobodensoftver.org.mk>
+// Author: Ilin Tatabitovski, <itatabitovski@gmail.com>
 // Encoding: UTF-8
 // Distributed under the same terms as the calendar itself.
 
@@ -84,26 +84,26 @@
 Calendar._TT["ABOUT"] =
 "DHTML Date/Time Selector\n" +
 "(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
-"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
-"Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
+"За последна верзија посети: http://www.dynarch.com/projects/calendar/\n" +
+"Дистрибуирано под GNU LGPL.  Види http://gnu.org/licenses/lgpl.html за детали." +
 "\n\n" +
-"Date selection:\n" +
-"- Use the \xab, \xbb buttons to select year\n" +
-"- Use the " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " buttons to select month\n" +
-"- Hold mouse button on any of the above buttons for faster selection.";
+"Бирање на дата:\n" +
+"- Користи ги \xab, \xbb копчињата за да избереш година\n" +
+"- Користи ги " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " копчињата за да избере месеци\n" +
+"- Држи го притиснато копчето на глувчето на било кое копче за побрзо бирање.";
 Calendar._TT["ABOUT_TIME"] = "\n\n" +
-"Time selection:\n" +
-"- Click on any of the time parts to increase it\n" +
-"- or Shift-click to decrease it\n" +
-"- or click and drag for faster selection.";
+"Бирање на време:\n" +
+"- Клик на временските делови за да го зголемиш\n" +
+"- или Shift-клик да го намалиш\n" +
+"- или клик и влечи за побрзо бирање.";
 
-Calendar._TT["PREV_YEAR"] = "Претходна година (hold for menu)";
-Calendar._TT["PREV_MONTH"] = "Претходен месец (hold for menu)";
+Calendar._TT["PREV_YEAR"] = "Претходна година (држи за мени)";
+Calendar._TT["PREV_MONTH"] = "Претходен месец (држи за мени)";
 Calendar._TT["GO_TODAY"] = "Go Today";
-Calendar._TT["NEXT_MONTH"] = "Следен месец (hold for menu)";
-Calendar._TT["NEXT_YEAR"] = "Следна година (hold for menu)";
-Calendar._TT["SEL_DATE"] = "Изберете дата";
-Calendar._TT["DRAG_TO_MOVE"] = "Drag to move";
+Calendar._TT["NEXT_MONTH"] = "Следен месец (држи за мени)";
+Calendar._TT["NEXT_YEAR"] = "Следна година (држи за мени)";
+Calendar._TT["SEL_DATE"] = "Избери дата";
+Calendar._TT["DRAG_TO_MOVE"] = "Влечи да поместиш";
 Calendar._TT["PART_TODAY"] = " (денес)";
 
 // the following is to inform that "%s" is to be the first day of week
@@ -117,7 +117,7 @@
 
 Calendar._TT["CLOSE"] = "Затвори";
 Calendar._TT["TODAY"] = "Денес";
-Calendar._TT["TIME_PART"] = "(Shift-)Click or drag to change value";
+Calendar._TT["TIME_PART"] = "(Shift-)Клик или влечи за да промениш вредност";
 
 // date formats
 Calendar._TT["DEF_DATE_FORMAT"] = "%d-%m-%Y";
@@ -125,3 +125,4 @@
 
 Calendar._TT["WK"] = "нед";
 Calendar._TT["TIME"] = "Време:";
+
--- a/public/javascripts/calendar/lang/calendar-ca.js	Fri Sep 24 15:33:13 2010 +0100
+++ b/public/javascripts/calendar/lang/calendar-ca.js	Fri Sep 24 15:51:28 2010 +0100
@@ -45,7 +45,7 @@
 
 // First day of the week. "0" means display Sunday first, "1" means display
 // Monday first, etc.
-Calendar._FD = 0;
+Calendar._FD = 1;
 
 // full month names
 Calendar._MN = new Array
@@ -84,17 +84,17 @@
 Calendar._TT["ABOUT"] =
 "Selector DHTML de data/hora\n" +
 "(c) dynarch.com 2002-2005 / Autor: Mihai Bazon\n" + // don't translate this this ;-)
-"Per a aconseguir l'última versió visiteu: http://www.dynarch.com/projects/calendar/\n" +
-"Distribuït sota la llicència GNU LGPL.  Vegeu http://gnu.org/licenses/lgpl.html per a més detalls." +
+"Per aconseguir l'última versió visiteu: http://www.dynarch.com/projects/calendar/\n" +
+"Distribuït sota la llicència GNU LGPL. Vegeu http://gnu.org/licenses/lgpl.html per obtenir més detalls." +
 "\n\n" +
 "Selecció de la data:\n" +
-"- Utilitzeu els botons \xab, \xbb per a seleccionar l'any\n" +
-"- Utilitzeu els botons " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " per a selecciona el mes\n" +
-"- Mantingueu premut el botó del ratolí sobre qualsevol d'aquests botons per a uns selecció més ràpida.";
+"- Utilitzeu els botons \xab, \xbb per seleccionar l'any\n" +
+"- Utilitzeu els botons " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " per seleccionar el mes\n" +
+"- Mantingueu premut el botó del ratolí sobre qualsevol d'aquests botons per a una selecció més ràpida.";
 Calendar._TT["ABOUT_TIME"] = "\n\n" +
 "Selecció de l'hora:\n" +
-"- Feu clic en qualsevol part de l'hora per a incrementar-la\n" +
-"- o premeu majúscules per a disminuir-la\n" +
+"- Feu clic en qualsevol part de l'hora per incrementar-la\n" +
+"- o premeu majúscules per disminuir-la\n" +
 "- o feu clic i arrossegueu per a una selecció més ràpida.";
 
 Calendar._TT["PREV_YEAR"] = "Any anterior (mantenir per menú)";
@@ -102,8 +102,8 @@
 Calendar._TT["GO_TODAY"] = "Anar a avui";
 Calendar._TT["NEXT_MONTH"] = "Mes següent (mantenir per menú)";
 Calendar._TT["NEXT_YEAR"] = "Any següent (mantenir per menú)";
-Calendar._TT["SEL_DATE"] = "Sel·lecciona data";
-Calendar._TT["DRAG_TO_MOVE"] = "Arrossega per a moure";
+Calendar._TT["SEL_DATE"] = "Sel·lecciona la data";
+Calendar._TT["DRAG_TO_MOVE"] = "Arrossega per moure";
 Calendar._TT["PART_TODAY"] = " (avui)";
 
 // the following is to inform that "%s" is to be the first day of week
@@ -117,7 +117,7 @@
 
 Calendar._TT["CLOSE"] = "Tanca";
 Calendar._TT["TODAY"] = "Avui";
-Calendar._TT["TIME_PART"] = "(Majúscules-)Feu clic o arrossegueu per a canviar el valor";
+Calendar._TT["TIME_PART"] = "(Majúscules-)Feu clic o arrossegueu per canviar el valor";
 
 // date formats
 Calendar._TT["DEF_DATE_FORMAT"] = "%d-%m-%Y";
--- a/public/javascripts/calendar/lang/calendar-mk.js	Fri Sep 24 15:33:13 2010 +0100
+++ b/public/javascripts/calendar/lang/calendar-mk.js	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 // ** I18N
 
 // Calendar МК language
-// Author: Илин Татабитовски, <ilin@slobodensoftver.org.mk>
+// Author: Ilin Tatabitovski, <itatabitovski@gmail.com>
 // Encoding: UTF-8
 // Distributed under the same terms as the calendar itself.
 
@@ -84,26 +84,26 @@
 Calendar._TT["ABOUT"] =
 "DHTML Date/Time Selector\n" +
 "(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
-"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
-"Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
+"За последна верзија посети: http://www.dynarch.com/projects/calendar/\n" +
+"Дистрибуирано под GNU LGPL.  Види http://gnu.org/licenses/lgpl.html за детали." +
 "\n\n" +
-"Date selection:\n" +
-"- Use the \xab, \xbb buttons to select year\n" +
-"- Use the " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " buttons to select month\n" +
-"- Hold mouse button on any of the above buttons for faster selection.";
+"Бирање на дата:\n" +
+"- Користи ги \xab, \xbb копчињата за да избереш година\n" +
+"- Користи ги " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " копчињата за да избере месеци\n" +
+"- Држи го притиснато копчето на глувчето на било кое копче за побрзо бирање.";
 Calendar._TT["ABOUT_TIME"] = "\n\n" +
-"Time selection:\n" +
-"- Click on any of the time parts to increase it\n" +
-"- or Shift-click to decrease it\n" +
-"- or click and drag for faster selection.";
+"Бирање на време:\n" +
+"- Клик на временските делови за да го зголемиш\n" +
+"- или Shift-клик да го намалиш\n" +
+"- или клик и влечи за побрзо бирање.";
 
-Calendar._TT["PREV_YEAR"] = "Претходна година (hold for menu)";
-Calendar._TT["PREV_MONTH"] = "Претходен месец (hold for menu)";
+Calendar._TT["PREV_YEAR"] = "Претходна година (држи за мени)";
+Calendar._TT["PREV_MONTH"] = "Претходен месец (држи за мени)";
 Calendar._TT["GO_TODAY"] = "Go Today";
-Calendar._TT["NEXT_MONTH"] = "Следен месец (hold for menu)";
-Calendar._TT["NEXT_YEAR"] = "Следна година (hold for menu)";
-Calendar._TT["SEL_DATE"] = "Изберете дата";
-Calendar._TT["DRAG_TO_MOVE"] = "Drag to move";
+Calendar._TT["NEXT_MONTH"] = "Следен месец (држи за мени)";
+Calendar._TT["NEXT_YEAR"] = "Следна година (држи за мени)";
+Calendar._TT["SEL_DATE"] = "Избери дата";
+Calendar._TT["DRAG_TO_MOVE"] = "Влечи да поместиш";
 Calendar._TT["PART_TODAY"] = " (денес)";
 
 // the following is to inform that "%s" is to be the first day of week
@@ -117,7 +117,7 @@
 
 Calendar._TT["CLOSE"] = "Затвори";
 Calendar._TT["TODAY"] = "Денес";
-Calendar._TT["TIME_PART"] = "(Shift-)Click or drag to change value";
+Calendar._TT["TIME_PART"] = "(Shift-)Клик или влечи за да промениш вредност";
 
 // date formats
 Calendar._TT["DEF_DATE_FORMAT"] = "%d-%m-%Y";
@@ -125,3 +125,4 @@
 
 Calendar._TT["WK"] = "нед";
 Calendar._TT["TIME"] = "Време:";
+
--- a/public/javascripts/jstoolbar/.svn/all-wcprops	Fri Sep 24 15:33:13 2010 +0100
+++ b/public/javascripts/jstoolbar/.svn/all-wcprops	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 53
-/svn/!svn/ver/4003/trunk/public/javascripts/jstoolbar
+/svn/!svn/ver/4049/trunk/public/javascripts/jstoolbar
 END
 textile.js
 K 25
--- a/public/javascripts/jstoolbar/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/public/javascripts/jstoolbar/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,14 +1,14 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/public/javascripts/jstoolbar
 http://redmine.rubyforge.org/svn
 
 
 
-2010-08-19T15:41:09.090282Z
-4003
+2010-08-29T12:54:04.302020Z
+4049
 winterheart
 
 
@@ -35,7 +35,7 @@
 
 
 
-2010-07-23T14:49:47.684126Z
+2010-09-23T14:37:45.239756Z
 277ebc7c66d8c8280bbe729e6cb11529
 2008-10-27T11:08:29.901011Z
 1955
@@ -69,7 +69,7 @@
 
 
 
-2010-07-23T14:49:47.684126Z
+2010-09-23T14:37:45.211758Z
 2b77f98553b6d5e0d4c405195eebe664
 2008-10-27T11:08:29.901011Z
 1955
--- a/public/javascripts/jstoolbar/lang/.svn/all-wcprops	Fri Sep 24 15:33:13 2010 +0100
+++ b/public/javascripts/jstoolbar/lang/.svn/all-wcprops	Fri Sep 24 15:51:28 2010 +0100
@@ -1,13 +1,13 @@
 K 25
 svn:wc:ra_dav:version-url
 V 58
-/svn/!svn/ver/4003/trunk/public/javascripts/jstoolbar/lang
+/svn/!svn/ver/4049/trunk/public/javascripts/jstoolbar/lang
 END
 jstoolbar-mk.js
 K 25
 svn:wc:ra_dav:version-url
 V 74
-/svn/!svn/ver/2433/trunk/public/javascripts/jstoolbar/lang/jstoolbar-mk.js
+/svn/!svn/ver/4049/trunk/public/javascripts/jstoolbar/lang/jstoolbar-mk.js
 END
 jstoolbar-es.js
 K 25
@@ -99,11 +99,11 @@
 V 74
 /svn/!svn/ver/1479/trunk/public/javascripts/jstoolbar/lang/jstoolbar-fr.js
 END
-jstoolbar-zh-tw.js
+jstoolbar-nl.js
 K 25
 svn:wc:ra_dav:version-url
-V 77
-/svn/!svn/ver/1498/trunk/public/javascripts/jstoolbar/lang/jstoolbar-zh-tw.js
+V 74
+/svn/!svn/ver/2291/trunk/public/javascripts/jstoolbar/lang/jstoolbar-nl.js
 END
 jstoolbar-hr.js
 K 25
@@ -111,11 +111,11 @@
 V 74
 /svn/!svn/ver/3320/trunk/public/javascripts/jstoolbar/lang/jstoolbar-hr.js
 END
-jstoolbar-nl.js
+jstoolbar-zh-tw.js
 K 25
 svn:wc:ra_dav:version-url
-V 74
-/svn/!svn/ver/2291/trunk/public/javascripts/jstoolbar/lang/jstoolbar-nl.js
+V 77
+/svn/!svn/ver/1498/trunk/public/javascripts/jstoolbar/lang/jstoolbar-zh-tw.js
 END
 jstoolbar-mn.js
 K 25
@@ -123,18 +123,18 @@
 V 74
 /svn/!svn/ver/3626/trunk/public/javascripts/jstoolbar/lang/jstoolbar-mn.js
 END
+jstoolbar-pl.js
+K 25
+svn:wc:ra_dav:version-url
+V 74
+/svn/!svn/ver/1928/trunk/public/javascripts/jstoolbar/lang/jstoolbar-pl.js
+END
 jstoolbar-th.js
 K 25
 svn:wc:ra_dav:version-url
 V 74
 /svn/!svn/ver/1479/trunk/public/javascripts/jstoolbar/lang/jstoolbar-th.js
 END
-jstoolbar-pl.js
-K 25
-svn:wc:ra_dav:version-url
-V 74
-/svn/!svn/ver/1928/trunk/public/javascripts/jstoolbar/lang/jstoolbar-pl.js
-END
 jstoolbar-it.js
 K 25
 svn:wc:ra_dav:version-url
@@ -153,17 +153,23 @@
 V 74
 /svn/!svn/ver/1479/trunk/public/javascripts/jstoolbar/lang/jstoolbar-lt.js
 END
+jstoolbar-lv.js
+K 25
+svn:wc:ra_dav:version-url
+V 74
+/svn/!svn/ver/3737/trunk/public/javascripts/jstoolbar/lang/jstoolbar-lv.js
+END
 jstoolbar-zh.js
 K 25
 svn:wc:ra_dav:version-url
 V 74
 /svn/!svn/ver/1498/trunk/public/javascripts/jstoolbar/lang/jstoolbar-zh.js
 END
-jstoolbar-lv.js
+jstoolbar-pt.js
 K 25
 svn:wc:ra_dav:version-url
 V 74
-/svn/!svn/ver/3737/trunk/public/javascripts/jstoolbar/lang/jstoolbar-lv.js
+/svn/!svn/ver/1927/trunk/public/javascripts/jstoolbar/lang/jstoolbar-pt.js
 END
 jstoolbar-ca.js
 K 25
@@ -171,11 +177,11 @@
 V 74
 /svn/!svn/ver/1865/trunk/public/javascripts/jstoolbar/lang/jstoolbar-ca.js
 END
-jstoolbar-pt.js
+jstoolbar-da.js
 K 25
 svn:wc:ra_dav:version-url
 V 74
-/svn/!svn/ver/1927/trunk/public/javascripts/jstoolbar/lang/jstoolbar-pt.js
+/svn/!svn/ver/2921/trunk/public/javascripts/jstoolbar/lang/jstoolbar-da.js
 END
 jstoolbar-sr.js
 K 25
@@ -183,12 +189,6 @@
 V 74
 /svn/!svn/ver/4003/trunk/public/javascripts/jstoolbar/lang/jstoolbar-sr.js
 END
-jstoolbar-da.js
-K 25
-svn:wc:ra_dav:version-url
-V 74
-/svn/!svn/ver/2921/trunk/public/javascripts/jstoolbar/lang/jstoolbar-da.js
-END
 jstoolbar-pt-br.js
 K 25
 svn:wc:ra_dav:version-url
--- a/public/javascripts/jstoolbar/lang/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/public/javascripts/jstoolbar/lang/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,14 +1,14 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/public/javascripts/jstoolbar/lang
 http://redmine.rubyforge.org/svn
 
 
 
-2010-08-19T15:41:09.090282Z
-4003
+2010-08-29T12:54:04.302020Z
+4049
 winterheart
 
 
@@ -32,10 +32,10 @@
 
 
 
-2010-07-23T14:49:47.672095Z
-f6d3884959c78307f65ad9a848d132e1
-2009-02-10T16:05:31.877017Z
-2433
+2010-09-24T12:48:29.827791Z
+318952e82ec967a5474a8b8464b66c63
+2010-08-29T12:54:04.302020Z
+4049
 winterheart
 
 
@@ -58,7 +58,7 @@
 
 
 
-780
+876
 
 jstoolbar-es.js
 file
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:47.672095Z
+2010-09-23T14:37:45.231813Z
 21ca3fea9a77d127edb7d2e95b33b8f8
 2008-11-14T15:18:13.107466Z
 2033
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:47.672095Z
+2010-09-23T14:37:45.235815Z
 7cbd6179e32e9b8ec12a884c820565ca
 2008-12-29T18:27:27.433290Z
 2202
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:47.672095Z
+2010-09-23T14:37:45.231813Z
 73ba5f511744c07325bc0eae3dce14e6
 2010-01-25T15:25:46.560119Z
 3338
@@ -168,7 +168,7 @@
 
 
 
-2010-07-23T14:49:47.672095Z
+2010-09-23T14:37:45.235815Z
 b1cfe765b72f2d904756bf60307c97b7
 2008-06-15T09:49:16.794942Z
 1540
@@ -202,7 +202,7 @@
 
 
 
-2010-07-23T14:49:47.672095Z
+2010-09-23T14:37:45.231813Z
 83762b06ef0b9a9756f858357bf11361
 2008-05-30T16:35:36.510811Z
 1479
@@ -236,7 +236,7 @@
 
 
 
-2010-07-23T14:49:47.672095Z
+2010-09-23T14:37:45.235815Z
 b27b3e83de7c68c7752703799c0a4cda
 2008-11-08T22:34:41.558925Z
 1997
@@ -270,7 +270,7 @@
 
 
 
-2010-07-23T14:49:47.672095Z
+2010-09-23T14:37:45.239756Z
 06a6efe1fa0092d534f1cc403529670b
 2009-02-21T11:04:50.579477Z
 2493
@@ -304,7 +304,7 @@
 
 
 
-2010-07-23T14:49:47.672095Z
+2010-09-23T14:37:45.239756Z
 c49e65f5c02ababbaa0c9a9968424950
 2008-05-30T16:35:36.510811Z
 1479
@@ -338,7 +338,7 @@
 
 
 
-2010-08-25T15:27:58.258584Z
+2010-09-23T14:37:45.239756Z
 bf8f49f26dc22319ff3da721c261c593
 2010-08-19T15:41:09.090282Z
 4003
@@ -372,7 +372,7 @@
 
 
 
-2010-07-23T14:49:47.672095Z
+2010-09-23T14:37:45.235815Z
 de3d5c4af91e93505e939ccb1ef6b27a
 2009-03-24T19:20:53.296475Z
 2630
@@ -406,7 +406,7 @@
 
 
 
-2010-07-23T14:49:47.672095Z
+2010-09-23T14:37:45.235815Z
 9f461eb7e9ab4460155983bd005c3237
 2009-09-24T15:03:23.893264Z
 2901
@@ -440,7 +440,7 @@
 
 
 
-2010-07-23T14:49:47.672095Z
+2010-09-23T14:37:45.231813Z
 fd6a3f960f0d6e1ce7e6466d592453fe
 2009-12-23T18:56:03.404741Z
 3227
@@ -474,7 +474,7 @@
 
 
 
-2010-07-23T14:49:47.676097Z
+2010-09-23T14:37:45.231813Z
 c49e65f5c02ababbaa0c9a9968424950
 2008-05-30T16:35:36.510811Z
 1479
@@ -508,7 +508,7 @@
 
 
 
-2010-07-23T14:49:47.676097Z
+2010-09-23T14:37:45.231813Z
 1114856226e757ddfb08a99ab1cac3eb
 2009-01-23T15:37:59.406714Z
 2296
@@ -542,7 +542,7 @@
 
 
 
-2010-07-23T14:49:47.676097Z
+2010-09-23T14:37:45.231813Z
 9b432fe2e801ed76abf312a10c643fb8
 2008-05-30T16:35:36.510811Z
 1479
@@ -576,7 +576,7 @@
 
 
 
-2010-07-23T14:49:47.676097Z
+2010-09-23T14:37:45.235815Z
 b1bc7a04b7b466073845dd2c81bbbf23
 2009-01-20T15:53:09.750096Z
 2291
@@ -610,7 +610,7 @@
 
 
 
-2010-07-23T14:49:47.676097Z
+2010-09-23T14:37:45.231813Z
 f13f0553753c4b53bd96c294ca6ce15e
 2010-01-17T10:33:30.937961Z
 3320
@@ -644,7 +644,7 @@
 
 
 
-2010-07-23T14:49:47.676097Z
+2010-09-23T14:37:45.239756Z
 be45a6e710f3a07e9fab41d795a64030
 2008-06-07T09:03:20.687527Z
 1498
@@ -678,7 +678,7 @@
 
 
 
-2010-07-23T14:49:47.676097Z
+2010-09-23T14:37:45.235815Z
 e7df0709db363c802a6a5a4913520ac5
 2010-04-03T10:49:16.109274Z
 3626
@@ -712,7 +712,7 @@
 
 
 
-2010-07-23T14:49:47.676097Z
+2010-09-23T14:37:45.235815Z
 1d2b7d7c66953806ca428f91a95d2eaa
 2008-10-07T17:41:16.515762Z
 1928
@@ -746,7 +746,7 @@
 
 
 
-2010-07-23T14:49:47.676097Z
+2010-09-23T14:37:45.239756Z
 3f844a6495d4eebb122b5c7b21696282
 2008-05-30T16:35:36.510811Z
 1479
@@ -780,7 +780,7 @@
 
 
 
-2010-08-25T15:27:58.258584Z
+2010-09-23T14:37:45.235815Z
 c7198fe4acf23cf7df996603e68b492b
 2010-08-19T15:41:09.090282Z
 4003
@@ -814,7 +814,7 @@
 
 
 
-2010-07-23T14:49:47.676097Z
+2010-09-23T14:37:45.239756Z
 a85f4ab1ed887a855f03c2cc8efb0107
 2009-01-31T12:02:37.933490Z
 2340
@@ -848,7 +848,7 @@
 
 
 
-2010-07-23T14:49:47.676097Z
+2010-09-23T14:37:45.235815Z
 1fbcdee2a48a3d359fd766880b9b606f
 2008-05-30T16:35:36.510811Z
 1479
@@ -882,7 +882,7 @@
 
 
 
-2010-07-23T14:49:47.676097Z
+2010-09-23T14:37:45.235815Z
 5a44b7a9bd5b7db86d0a7398ee5bc779
 2010-05-14T18:15:41.754813Z
 3737
@@ -916,7 +916,7 @@
 
 
 
-2010-07-23T14:49:47.676097Z
+2010-09-23T14:37:45.239756Z
 fa9b7d27a231a3c85c1a4632f2563ac4
 2008-06-07T09:03:20.687527Z
 1498
@@ -950,7 +950,7 @@
 
 
 
-2010-07-23T14:49:47.676097Z
+2010-09-23T14:37:45.235815Z
 2479961837e503c00632ff7e6997b10d
 2008-10-06T15:00:56.914741Z
 1927
@@ -984,7 +984,7 @@
 
 
 
-2010-07-23T14:49:47.676097Z
+2010-09-23T14:37:45.231813Z
 6aacb53ed49e6e14831baf8c38096662
 2008-09-15T16:07:30.857601Z
 1865
@@ -1018,7 +1018,7 @@
 
 
 
-2010-07-23T14:49:47.680127Z
+2010-09-23T14:37:45.235815Z
 37aed8a5fce8e7f2030ac37e3d635068
 2008-05-30T16:35:36.510811Z
 1479
@@ -1052,7 +1052,7 @@
 
 
 
-2010-07-23T14:49:47.676097Z
+2010-09-23T14:37:45.231813Z
 4061b38de5e085dac922f77f94bd254a
 2009-10-11T09:24:45.635758Z
 2921
@@ -1086,7 +1086,7 @@
 
 
 
-2010-08-25T15:27:58.258584Z
+2010-09-23T14:37:45.239756Z
 fb00cc94dfc8f319dda707b957aae8a6
 2010-08-19T15:41:09.090282Z
 4003
@@ -1120,7 +1120,7 @@
 
 
 
-2010-07-23T14:49:47.680127Z
+2010-09-23T14:37:45.239756Z
 c7333a1fd77fe1f7db31810175f8fe8f
 2008-09-13T17:25:01.876743Z
 1817
@@ -1154,7 +1154,7 @@
 
 
 
-2010-07-23T14:49:47.680127Z
+2010-09-23T14:37:45.227756Z
 c49e65f5c02ababbaa0c9a9968424950
 2008-05-30T16:35:36.510811Z
 1479
@@ -1188,7 +1188,7 @@
 
 
 
-2010-07-23T14:49:47.680127Z
+2010-09-23T14:37:45.231813Z
 7c5edef659f90a30330909bc13b0d6fb
 2008-05-30T16:35:36.510811Z
 1479
@@ -1222,7 +1222,7 @@
 
 
 
-2010-07-23T14:49:47.680127Z
+2010-09-23T14:37:45.231813Z
 c49e65f5c02ababbaa0c9a9968424950
 2010-06-21T19:54:55.180393Z
 3809
@@ -1256,7 +1256,7 @@
 
 
 
-2010-07-23T14:49:47.680127Z
+2010-09-23T14:37:45.239756Z
 7ec48cf15b3d65b2a0994b50b033b4b8
 2009-01-23T15:46:22.446544Z
 2298
@@ -1290,7 +1290,7 @@
 
 
 
-2010-07-23T14:49:47.680127Z
+2010-09-23T14:37:45.235815Z
 06245b4053c38d6bf3ae61d1bf4c7587
 2009-09-24T15:03:23.893264Z
 2901
@@ -1324,7 +1324,7 @@
 
 
 
-2010-07-23T14:49:47.680127Z
+2010-09-23T14:37:45.231813Z
 c49e65f5c02ababbaa0c9a9968424950
 2008-05-30T16:35:36.510811Z
 1479
@@ -1358,7 +1358,7 @@
 
 
 
-2010-07-23T14:49:47.680127Z
+2010-09-23T14:37:45.231813Z
 0377fba91478a1df25844aa70609e204
 2008-05-30T16:35:36.510811Z
 1479
@@ -1392,7 +1392,7 @@
 
 
 
-2010-07-23T14:49:47.680127Z
+2010-09-23T14:37:45.231813Z
 da8e9ced2ea20fedc7bb3204082fc68a
 2009-03-24T19:16:02.676125Z
 2629
@@ -1426,7 +1426,7 @@
 
 
 
-2010-07-23T14:49:47.680127Z
+2010-09-23T14:37:45.231813Z
 8394af79dae7854d27ccdb8b72c3262c
 2008-05-30T16:35:36.510811Z
 1479
--- a/public/javascripts/jstoolbar/lang/.svn/text-base/jstoolbar-mk.js.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/public/javascripts/jstoolbar/lang/.svn/text-base/jstoolbar-mk.js.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -1,16 +1,17 @@
 jsToolBar.strings = {};
-jsToolBar.strings['Strong'] = 'Strong';
-jsToolBar.strings['Italic'] = 'Italic';
-jsToolBar.strings['Underline'] = 'Underline';
-jsToolBar.strings['Deleted'] = 'Deleted';
-jsToolBar.strings['Code'] = 'Inline Code';
-jsToolBar.strings['Heading 1'] = 'Heading 1';
-jsToolBar.strings['Heading 2'] = 'Heading 2';
-jsToolBar.strings['Heading 3'] = 'Heading 3';
-jsToolBar.strings['Unordered list'] = 'Unordered list';
+jsToolBar.strings['Strong'] = 'Задебелен';
+jsToolBar.strings['Italic'] = 'Закосен';
+jsToolBar.strings['Underline'] = 'Подвлечен';
+jsToolBar.strings['Deleted'] = 'Прецртан';
+jsToolBar.strings['Code'] = 'Код';
+jsToolBar.strings['Heading 1'] = 'Заглавје 1';
+jsToolBar.strings['Heading 2'] = 'Заглавје 2';
+jsToolBar.strings['Heading 3'] = 'Заглавје 3';
+jsToolBar.strings['Unordered list'] = 'Неподредена листа';
 jsToolBar.strings['Ordered list'] = 'Подредена листа';
 jsToolBar.strings['Quote'] = 'Цитат';
 jsToolBar.strings['Unquote'] = 'Отстрани цитат';
-jsToolBar.strings['Preformatted text'] = 'Preformatted text';
-jsToolBar.strings['Wiki link'] = 'Линк до вики страна';
+jsToolBar.strings['Preformatted text'] = 'Форматиран текст';
+jsToolBar.strings['Wiki link'] = 'Врска до вики страна';
 jsToolBar.strings['Image'] = 'Слика';
+
--- a/public/javascripts/jstoolbar/lang/jstoolbar-mk.js	Fri Sep 24 15:33:13 2010 +0100
+++ b/public/javascripts/jstoolbar/lang/jstoolbar-mk.js	Fri Sep 24 15:51:28 2010 +0100
@@ -1,16 +1,17 @@
 jsToolBar.strings = {};
-jsToolBar.strings['Strong'] = 'Strong';
-jsToolBar.strings['Italic'] = 'Italic';
-jsToolBar.strings['Underline'] = 'Underline';
-jsToolBar.strings['Deleted'] = 'Deleted';
-jsToolBar.strings['Code'] = 'Inline Code';
-jsToolBar.strings['Heading 1'] = 'Heading 1';
-jsToolBar.strings['Heading 2'] = 'Heading 2';
-jsToolBar.strings['Heading 3'] = 'Heading 3';
-jsToolBar.strings['Unordered list'] = 'Unordered list';
+jsToolBar.strings['Strong'] = 'Задебелен';
+jsToolBar.strings['Italic'] = 'Закосен';
+jsToolBar.strings['Underline'] = 'Подвлечен';
+jsToolBar.strings['Deleted'] = 'Прецртан';
+jsToolBar.strings['Code'] = 'Код';
+jsToolBar.strings['Heading 1'] = 'Заглавје 1';
+jsToolBar.strings['Heading 2'] = 'Заглавје 2';
+jsToolBar.strings['Heading 3'] = 'Заглавје 3';
+jsToolBar.strings['Unordered list'] = 'Неподредена листа';
 jsToolBar.strings['Ordered list'] = 'Подредена листа';
 jsToolBar.strings['Quote'] = 'Цитат';
 jsToolBar.strings['Unquote'] = 'Отстрани цитат';
-jsToolBar.strings['Preformatted text'] = 'Preformatted text';
-jsToolBar.strings['Wiki link'] = 'Линк до вики страна';
+jsToolBar.strings['Preformatted text'] = 'Форматиран текст';
+jsToolBar.strings['Wiki link'] = 'Врска до вики страна';
 jsToolBar.strings['Image'] = 'Слика';
+
--- a/public/stylesheets/.svn/all-wcprops	Fri Sep 24 15:33:13 2010 +0100
+++ b/public/stylesheets/.svn/all-wcprops	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 43
-/svn/!svn/ver/4014/trunk/public/stylesheets
+/svn/!svn/ver/4072/trunk/public/stylesheets
 END
 context_menu.css
 K 25
@@ -49,5 +49,5 @@
 K 25
 svn:wc:ra_dav:version-url
 V 59
-/svn/!svn/ver/3908/trunk/public/stylesheets/application.css
+/svn/!svn/ver/4072/trunk/public/stylesheets/application.css
 END
--- a/public/stylesheets/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/public/stylesheets/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,14 +1,14 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/public/stylesheets
 http://redmine.rubyforge.org/svn
 
 
 
-2010-08-22T19:12:21.015911Z
-4014
+2010-09-10T03:09:02.311267Z
+4072
 edavis10
 
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:47.752153Z
+2010-09-23T14:37:45.247783Z
 d4e12d14040f9f048ddc696b1c0adf71
 2010-05-01T11:54:40.545656Z
 3725
@@ -66,7 +66,7 @@
 
 
 
-2010-08-25T15:27:58.598648Z
+2010-09-23T14:37:45.247783Z
 ee22ead851abb7d0733ccd46315ccdc2
 2010-08-19T01:13:50.846630Z
 3950
@@ -100,7 +100,7 @@
 
 
 
-2010-08-25T15:27:58.598648Z
+2010-09-23T14:37:45.247783Z
 c8ca83463f3cde626ce2e2c3dca08cb2
 2010-08-22T19:12:21.015911Z
 4014
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:47.752153Z
+2010-09-23T14:37:45.251810Z
 d4a1902945bf7a0faa18be73960030c9
 2008-09-17T17:18:05.938945Z
 1872
@@ -168,7 +168,7 @@
 
 
 
-2010-08-25T15:27:58.598648Z
+2010-09-23T14:37:45.251810Z
 cb7655798f97e931ea4992a9dd1afc4f
 2010-08-22T19:12:21.015911Z
 4014
@@ -202,7 +202,7 @@
 
 
 
-2010-07-23T14:49:47.752153Z
+2010-09-23T14:37:45.247783Z
 62cab819ebe98bd9fb95415ac7b52e12
 2007-12-28T21:58:33.550772Z
 1024
@@ -236,7 +236,7 @@
 
 
 
-2010-07-23T14:49:47.756104Z
+2010-09-23T14:37:45.251810Z
 360ffe5ea0cba43a286c7e42756b463f
 2010-03-28T11:30:48.135356Z
 3619
@@ -271,9 +271,9 @@
 
 
 
-e64cf3bd18f1c02bcae64290202ef8b2
-2010-08-04T00:27:41.778647Z
-3908
+e6a7b38459368e48b9c463dadb2e9f5f
+2010-09-10T03:09:02.311267Z
+4072
 edavis10
 has-props
 
--- a/public/stylesheets/.svn/text-base/application.css.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/public/stylesheets/.svn/text-base/application.css.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -787,8 +787,10 @@
   white-space:nowrap;
 }
 
+.task.label {width:100%;}
+
 .task_late { background:#f66 url(../images/task_late.png); border: 1px solid #f66; }
-.task_done { background:#66f url(../images/task_done.png); border: 1px solid #66f; }  
+.task_done { background:#00c600 url(../images/task_done.png); border: 1px solid #00c600; }  
 .task_todo { background:#aaa url(../images/task_todo.png); border: 1px solid #aaa; }
 
 .task_todo.parent { background: #888; border: 1px solid #888; height: 6px;}
@@ -796,7 +798,17 @@
 .task_todo.parent .left  { position: absolute; background: url(../images/task_parent_end.png) no-repeat 0 0; width: 8px; height: 16px; margin-left: -5px; left: 0px; top: -1px;}
 .task_todo.parent .right { position: absolute; background: url(../images/task_parent_end.png) no-repeat 0 0; width: 8px; height: 16px; margin-right: -5px; right: 0px; top: -1px;}
 
-.milestone { background-image:url(../images/milestone.png); background-repeat: no-repeat; border: 0; }
+.milestone { background-image:url(../images/version_marker.png); background-repeat: no-repeat; border: 0; }
+.milestone_late { background:#f66 url(../images/milestone_late.png); border: 1px solid #f66; height: 2px; margin-top: 3px;}
+.milestone_done { background:#00c600 url(../images/milestone_done.png); border: 1px solid #00c600; height: 2px; margin-top: 3px;}
+.milestone_todo { background:#fff url(../images/milestone_todo.png); border: 1px solid #fff; height: 2px; margin-top: 3px;}
+.project-line { background-image:url(../images/project_marker.png); background-repeat: no-repeat; border: 0; }
+.project_late { background:#f66 url(../images/milestone_late.png); border: 1px solid #f66; height: 2px; margin-top: 3px;}
+.project_done { background:#00c600 url(../images/milestone_done.png); border: 1px solid #00c600; height: 2px; margin-top: 3px;}
+.project_todo { background:#fff url(../images/milestone_todo.png); border: 1px solid #fff; height: 2px; margin-top: 3px;}
+
+.version-behind-schedule a, .issue-behind-schedule a {color: #f66914;}
+.version-overdue a, .issue-overdue a, .project-overdue a {color: #f00;}
 
 /***** Icons *****/
 .icon {
@@ -840,6 +852,7 @@
 .icon-comment  { background-image: url(../images/comment.png); }
 .icon-summary  { background-image: url(../images/lightning.png); }
 .icon-server-authentication { background-image: url(../images/server_key.png); }
+.icon-issue { background-image: url(../images/ticket.png); }
 
 .icon-file { background-image: url(../images/files/default.png); }
 .icon-file.text-plain { background-image: url(../images/files/text.png); }
@@ -898,6 +911,12 @@
 	margin: 0 1em 1em 0;
 }
 
+/* Used on 12px Gravatar img tags without the icon background */
+.icon-gravatar {
+  float: left;
+  margin-right: 4px;
+}
+
 #activity dt,
 .journal {
 	clear: left;
--- a/public/stylesheets/.svn/tmp/application.css.tmp	Fri Sep 24 15:33:13 2010 +0100
+++ b/public/stylesheets/.svn/tmp/application.css.tmp	Fri Sep 24 15:51:28 2010 +0100
@@ -787,8 +787,10 @@
   white-space:nowrap;
 }
 
+.task.label {width:100%;}
+
 .task_late { background:#f66 url(../images/task_late.png); border: 1px solid #f66; }
-.task_done { background:#66f url(../images/task_done.png); border: 1px solid #66f; }  
+.task_done { background:#00c600 url(../images/task_done.png); border: 1px solid #00c600; }  
 .task_todo { background:#aaa url(../images/task_todo.png); border: 1px solid #aaa; }
 
 .task_todo.parent { background: #888; border: 1px solid #888; height: 6px;}
@@ -796,7 +798,17 @@
 .task_todo.parent .left  { position: absolute; background: url(../images/task_parent_end.png) no-repeat 0 0; width: 8px; height: 16px; margin-left: -5px; left: 0px; top: -1px;}
 .task_todo.parent .right { position: absolute; background: url(../images/task_parent_end.png) no-repeat 0 0; width: 8px; height: 16px; margin-right: -5px; right: 0px; top: -1px;}
 
-.milestone { background-image:url(../images/milestone.png); background-repeat: no-repeat; border: 0; }
+.milestone { background-image:url(../images/version_marker.png); background-repeat: no-repeat; border: 0; }
+.milestone_late { background:#f66 url(../images/milestone_late.png); border: 1px solid #f66; height: 2px; margin-top: 3px;}
+.milestone_done { background:#00c600 url(../images/milestone_done.png); border: 1px solid #00c600; height: 2px; margin-top: 3px;}
+.milestone_todo { background:#fff url(../images/milestone_todo.png); border: 1px solid #fff; height: 2px; margin-top: 3px;}
+.project-line { background-image:url(../images/project_marker.png); background-repeat: no-repeat; border: 0; }
+.project_late { background:#f66 url(../images/milestone_late.png); border: 1px solid #f66; height: 2px; margin-top: 3px;}
+.project_done { background:#00c600 url(../images/milestone_done.png); border: 1px solid #00c600; height: 2px; margin-top: 3px;}
+.project_todo { background:#fff url(../images/milestone_todo.png); border: 1px solid #fff; height: 2px; margin-top: 3px;}
+
+.version-behind-schedule a, .issue-behind-schedule a {color: #f66914;}
+.version-overdue a, .issue-overdue a, .project-overdue a {color: #f00;}
 
 /***** Icons *****/
 .icon {
@@ -840,6 +852,7 @@
 .icon-comment  { background-image: url(../images/comment.png); }
 .icon-summary  { background-image: url(../images/lightning.png); }
 .icon-server-authentication { background-image: url(../images/server_key.png); }
+.icon-issue { background-image: url(../images/ticket.png); }
 
 .icon-file { background-image: url(../images/files/default.png); }
 .icon-file.text-plain { background-image: url(../images/files/text.png); }
@@ -898,6 +911,12 @@
 	margin: 0 1em 1em 0;
 }
 
+/* Used on 12px Gravatar img tags without the icon background */
+.icon-gravatar {
+  float: left;
+  margin-right: 4px;
+}
+
 #activity dt,
 .journal {
 	clear: left;
--- a/public/stylesheets/.svn/tmp/tempfile.tmp	Fri Sep 24 15:33:13 2010 +0100
+++ b/public/stylesheets/.svn/tmp/tempfile.tmp	Fri Sep 24 15:51:28 2010 +0100
@@ -287,8 +287,8 @@
 .buttons { font-size: 0.9em; margin-bottom: 1.4em; margin-top: 1em; }
 
 div#issue-changesets {float:right; width:45%; margin-left: 1em; margin-bottom: 1em; background: #fff; padding-left: 1em; font-size: 90%;}
-div#issue-changesets .changeset { padding: 4px;}
-div#issue-changesets .changeset { border-bottom: 1px solid #ddd; }
+div#issue-changesets div.changeset { padding: 4px;}
+div#issue-changesets div.changeset { border-bottom: 1px solid #ddd; }
 div#issue-changesets p { margin-top: 0; margin-bottom: 1em;}
 
 div#activity dl, #search-results { margin-left: 2em; }
@@ -903,6 +903,10 @@
 	clear: left;
 }
 
+.journal-link {
+	float: right;
+}
+
 h2 img { vertical-align:middle; }
 
 .hascontextmenu { cursor: context-menu; }
--- a/public/stylesheets/application.css	Fri Sep 24 15:33:13 2010 +0100
+++ b/public/stylesheets/application.css	Fri Sep 24 15:51:28 2010 +0100
@@ -787,8 +787,10 @@
   white-space:nowrap;
 }
 
+.task.label {width:100%;}
+
 .task_late { background:#f66 url(../images/task_late.png); border: 1px solid #f66; }
-.task_done { background:#66f url(../images/task_done.png); border: 1px solid #66f; }  
+.task_done { background:#00c600 url(../images/task_done.png); border: 1px solid #00c600; }  
 .task_todo { background:#aaa url(../images/task_todo.png); border: 1px solid #aaa; }
 
 .task_todo.parent { background: #888; border: 1px solid #888; height: 6px;}
@@ -796,7 +798,17 @@
 .task_todo.parent .left  { position: absolute; background: url(../images/task_parent_end.png) no-repeat 0 0; width: 8px; height: 16px; margin-left: -5px; left: 0px; top: -1px;}
 .task_todo.parent .right { position: absolute; background: url(../images/task_parent_end.png) no-repeat 0 0; width: 8px; height: 16px; margin-right: -5px; right: 0px; top: -1px;}
 
-.milestone { background-image:url(../images/milestone.png); background-repeat: no-repeat; border: 0; }
+.milestone { background-image:url(../images/version_marker.png); background-repeat: no-repeat; border: 0; }
+.milestone_late { background:#f66 url(../images/milestone_late.png); border: 1px solid #f66; height: 2px; margin-top: 3px;}
+.milestone_done { background:#00c600 url(../images/milestone_done.png); border: 1px solid #00c600; height: 2px; margin-top: 3px;}
+.milestone_todo { background:#fff url(../images/milestone_todo.png); border: 1px solid #fff; height: 2px; margin-top: 3px;}
+.project-line { background-image:url(../images/project_marker.png); background-repeat: no-repeat; border: 0; }
+.project_late { background:#f66 url(../images/milestone_late.png); border: 1px solid #f66; height: 2px; margin-top: 3px;}
+.project_done { background:#00c600 url(../images/milestone_done.png); border: 1px solid #00c600; height: 2px; margin-top: 3px;}
+.project_todo { background:#fff url(../images/milestone_todo.png); border: 1px solid #fff; height: 2px; margin-top: 3px;}
+
+.version-behind-schedule a, .issue-behind-schedule a {color: #f66914;}
+.version-overdue a, .issue-overdue a, .project-overdue a {color: #f00;}
 
 /***** Icons *****/
 .icon {
@@ -840,6 +852,7 @@
 .icon-comment  { background-image: url(../images/comment.png); }
 .icon-summary  { background-image: url(../images/lightning.png); }
 .icon-server-authentication { background-image: url(../images/server_key.png); }
+.icon-issue { background-image: url(../images/ticket.png); }
 
 .icon-file { background-image: url(../images/files/default.png); }
 .icon-file.text-plain { background-image: url(../images/files/text.png); }
@@ -898,6 +911,12 @@
 	margin: 0 1em 1em 0;
 }
 
+/* Used on 12px Gravatar img tags without the icon background */
+.icon-gravatar {
+  float: left;
+  margin-right: 4px;
+}
+
 #activity dt,
 .journal {
 	clear: left;
--- a/public/themes/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/public/themes/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/public/themes
 http://redmine.rubyforge.org/svn
 
@@ -38,7 +38,7 @@
 
 
 
-2010-07-23T14:49:47.636099Z
+2010-09-23T14:37:45.251810Z
 5b7a0352b95a67871b90c5a90a226123
 2007-10-10T17:17:37.630066Z
 818
--- a/public/themes/alternate/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/public/themes/alternate/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/public/themes/alternate
 http://redmine.rubyforge.org/svn
 
--- a/public/themes/alternate/stylesheets/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/public/themes/alternate/stylesheets/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/public/themes/alternate/stylesheets
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:47.628097Z
+2010-09-23T14:37:45.255767Z
 8a47fb469dca292ea631422810927fe3
 2009-11-15T21:15:31.339604Z
 3069
--- a/public/themes/classic/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/public/themes/classic/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/public/themes/classic
 http://redmine.rubyforge.org/svn
 
--- a/public/themes/classic/images/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/public/themes/classic/images/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/public/themes/classic/images
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:47.632097Z
+2010-09-23T14:37:45.255767Z
 a137eb4441860564ce1655357af26de8
 2009-12-18T14:10:26.630799Z
 3183
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:47.632097Z
+2010-09-23T14:37:45.255767Z
 99bea32e1990e011e870f6c562e87a6a
 2009-12-18T14:10:26.630799Z
 3183
--- a/public/themes/classic/stylesheets/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/public/themes/classic/stylesheets/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/public/themes/classic/stylesheets
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:47.636099Z
+2010-09-23T14:37:45.259756Z
 1bfaedd3f6b62419367da41a7a9310b2
 2009-12-18T14:10:26.630799Z
 3183
--- a/script/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/script/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/script
 http://redmine.rubyforge.org/svn
 
@@ -35,7 +35,7 @@
 
 
 
-2010-07-23T14:49:47.056133Z
+2010-09-23T14:37:45.263770Z
 e9da4d9bd98b629d856b280caa927f42
 2007-03-12T17:29:04.309051Z
 331
@@ -69,7 +69,7 @@
 
 
 
-2010-07-23T14:49:47.056133Z
+2010-09-23T14:37:45.263770Z
 efe05546991854cb1323026c0cdc7d27
 2007-03-12T17:29:04.309051Z
 331
@@ -103,7 +103,7 @@
 
 
 
-2010-07-23T14:49:47.056133Z
+2010-09-23T14:37:45.271755Z
 bba2905059daec6033f7a51cff19aff6
 2007-03-12T17:29:04.309051Z
 331
@@ -137,7 +137,7 @@
 
 
 
-2010-07-23T14:49:47.056133Z
+2010-09-23T14:37:45.263770Z
 5a6a7708fafd8f806775405f2f33fe99
 2008-07-04T17:58:14.743502Z
 1623
@@ -171,7 +171,7 @@
 
 
 
-2010-07-23T14:49:47.056133Z
+2010-09-23T14:37:45.263770Z
 f09bb329fb28e89340567a704a4619f8
 2007-03-12T17:29:04.309051Z
 331
@@ -205,7 +205,7 @@
 
 
 
-2010-07-23T14:49:47.056133Z
+2010-09-23T14:37:45.271755Z
 78522a2f43ce4bf932cf237076c0d2a1
 2007-03-12T17:29:04.309051Z
 331
@@ -239,7 +239,7 @@
 
 
 
-2010-07-23T14:49:47.060097Z
+2010-09-23T14:37:45.263770Z
 a1b78de0b704be4cfa29b11cfbd35a5e
 2009-06-07T18:22:27.408484Z
 2783
@@ -273,7 +273,7 @@
 
 
 
-2010-07-23T14:49:47.060097Z
+2010-09-23T14:37:45.267755Z
 ef69c53ee39f550f43a4bd3a09482ff7
 2007-03-12T17:29:04.309051Z
 331
@@ -310,7 +310,7 @@
 
 
 
-2010-07-23T14:49:47.060097Z
+2010-09-23T14:37:45.267755Z
 4c5aa44730cde119ab839486212f4ac5
 2007-03-12T17:29:04.309051Z
 331
--- a/script/performance/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/script/performance/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/script/performance
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:47.048142Z
+2010-09-23T14:37:45.267755Z
 91086af38733556c5aabc91eb4b20bed
 2007-03-12T17:29:04.309051Z
 331
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:47.048142Z
+2010-09-23T14:37:45.267755Z
 4dd7faa9b0b5f678082e19c97852b005
 2007-03-12T17:29:04.309051Z
 331
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:47.048142Z
+2010-09-23T14:37:45.267755Z
 9316140f20aace6cf628d17b5bfd1119
 2008-07-04T17:58:14.743502Z
 1623
--- a/script/process/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/script/process/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/script/process
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:47.056133Z
+2010-09-23T14:37:45.271755Z
 e7e52ded28489a821b5eb156f92ca0f5
 2007-03-12T17:29:04.309051Z
 331
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:47.056133Z
+2010-09-23T14:37:45.271755Z
 73662c6991e4d3ea2332b5fcadd5b3d3
 2008-07-04T17:58:14.743502Z
 1623
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:47.056133Z
+2010-09-23T14:37:45.271755Z
 77608fa9e09e9f24410e7374c67956b7
 2007-03-12T17:29:04.309051Z
 331
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:47.056133Z
+2010-09-23T14:37:45.271755Z
 69800f080d6bdd2f06c76c32f23c2c86
 2007-03-12T17:29:04.309051Z
 331
--- a/test/.svn/all-wcprops	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/.svn/all-wcprops	Fri Sep 24 15:51:28 2010 +0100
@@ -1,13 +1,13 @@
 K 25
 svn:wc:ra_dav:version-url
 V 29
-/svn/!svn/ver/4037/trunk/test
+/svn/!svn/ver/4172/trunk/test
 END
 object_daddy_helpers.rb
 K 25
 svn:wc:ra_dav:version-url
 V 53
-/svn/!svn/ver/3398/trunk/test/object_daddy_helpers.rb
+/svn/!svn/ver/4078/trunk/test/object_daddy_helpers.rb
 END
 test_helper.rb
 K 25
--- a/test/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,14 +1,14 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/test
 http://redmine.rubyforge.org/svn
 
 
 
-2010-08-24T15:27:12.793586Z
-4037
+2010-09-23T15:20:19.085385Z
+4172
 edavis10
 
 
@@ -35,10 +35,10 @@
 
 
 
-2010-07-23T14:49:44.224277Z
-6050a8a97b75ee7b428053a9bbd95f37
-2010-02-08T18:53:12.750770Z
-3398
+2010-09-24T12:48:25.883734Z
+bec9d26a7ae75350529040e7bca36bfa
+2010-09-10T19:44:45.405792Z
+4078
 edavis10
 
 
@@ -61,7 +61,7 @@
 
 
 
-900
+1116
 
 exemplars
 dir
@@ -72,7 +72,7 @@
 
 
 
-2010-08-25T15:27:52.822524Z
+2010-09-23T14:37:45.443777Z
 ac78351cc24dae03cb70f9e4bd9163fa
 2010-08-19T22:24:42.251508Z
 4010
@@ -118,7 +118,7 @@
 
 
 
-2010-07-23T14:49:44.224277Z
+2010-09-23T14:37:45.427769Z
 29604d905b321f5bf19b86f7b9797394
 2009-09-13T17:14:35.707881Z
 2887
--- a/test/.svn/text-base/object_daddy_helpers.rb.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/.svn/text-base/object_daddy_helpers.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -13,6 +13,11 @@
     User.spawn(attributes)
   end
 
+  def User.add_to_project(user, project, roles)
+    roles = [roles] unless roles.is_a?(Array)
+    Member.generate!(:principal => user, :project => project, :roles => roles)
+  end
+
   # Generate the default Query
   def Query.generate_default!(attributes={})
     query = Query.spawn(attributes)
@@ -25,8 +30,9 @@
   def Issue.generate_for_project!(project, attributes={})
     issue = Issue.spawn(attributes) do |issue|
       issue.project = project
+      issue.tracker = project.trackers.first unless project.trackers.empty?
+      yield issue if block_given?
     end
-    issue.tracker = project.trackers.first unless project.trackers.empty?
     issue.save!
     issue
   end
--- a/test/exemplars/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/exemplars/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/test/exemplars
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:43.648129Z
+2010-09-23T14:37:45.291809Z
 26c766235d2f79490fa33a7ec9c154ae
 2010-01-27T18:29:03.119133Z
 3340
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:43.648129Z
+2010-09-23T14:37:45.295820Z
 62261c71ec828fa443bd44e055602e3d
 2010-01-27T18:29:03.119133Z
 3340
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:43.648129Z
+2010-09-23T14:37:45.287807Z
 0da51e5e074d641e056e5011545571b8
 2010-01-27T18:29:03.119133Z
 3340
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:43.648129Z
+2010-09-23T14:37:45.287807Z
 5b8b8763d7419d535d1d14d7bfb4f343
 2010-01-27T18:29:03.119133Z
 3340
@@ -168,7 +168,7 @@
 
 
 
-2010-08-25T15:27:52.622585Z
+2010-09-23T14:37:45.287807Z
 13a55da47c4b6a61a3dbfd73eea41049
 2010-08-19T22:24:42.251508Z
 4010
@@ -202,7 +202,7 @@
 
 
 
-2010-07-23T14:49:43.648129Z
+2010-09-23T14:37:45.287807Z
 26c91af771947fc671b87a08282608b3
 2010-04-13T05:57:27.803435Z
 3670
@@ -236,7 +236,7 @@
 
 
 
-2010-07-23T14:49:43.648129Z
+2010-09-23T14:37:45.287807Z
 acf3ae00213d45112f6e13ecce212af1
 2010-01-28T19:05:21.831741Z
 3342
@@ -270,7 +270,7 @@
 
 
 
-2010-07-23T14:49:43.648129Z
+2010-09-23T14:37:45.291809Z
 662be883bd5a43d964b868caaf34b276
 2010-01-27T18:29:03.119133Z
 3340
@@ -304,7 +304,7 @@
 
 
 
-2010-07-23T14:49:43.648129Z
+2010-09-23T14:37:45.295820Z
 2dc494eb57aee9ee3c3ca5324f61e707
 2010-01-27T18:29:03.119133Z
 3340
@@ -338,7 +338,7 @@
 
 
 
-2010-07-23T14:49:43.648129Z
+2010-09-23T14:37:45.287807Z
 06cec6b1adf323a00a75e5c008f73c57
 2010-01-27T18:29:03.119133Z
 3340
@@ -372,7 +372,7 @@
 
 
 
-2010-07-23T14:49:43.648129Z
+2010-09-23T14:37:45.295820Z
 e51316252a08488be9aa2878c00c4959
 2010-01-27T18:29:03.119133Z
 3340
@@ -406,7 +406,7 @@
 
 
 
-2010-07-23T14:49:43.648129Z
+2010-09-23T14:37:45.291809Z
 e5f24c612cf3bcc7b17aeeafeae0697d
 2009-10-20T00:36:51.144135Z
 2937
@@ -440,7 +440,7 @@
 
 
 
-2010-07-23T14:49:43.648129Z
+2010-09-23T14:37:45.291809Z
 0b0e9ab56f34b8d5f3fd7265d2dd4ffe
 2010-05-27T17:16:05.103190Z
 3759
@@ -474,7 +474,7 @@
 
 
 
-2010-07-23T14:49:43.648129Z
+2010-09-23T14:37:45.287807Z
 24d00671cf3c2137d957ee6dac273517
 2010-01-28T19:05:21.831741Z
 3342
@@ -508,7 +508,7 @@
 
 
 
-2010-07-23T14:49:43.648129Z
+2010-09-23T14:37:45.291809Z
 1f7deb35b057dce8eb5dbc41d9a29019
 2010-01-28T19:05:21.831741Z
 3342
@@ -542,7 +542,7 @@
 
 
 
-2010-07-23T14:49:43.648129Z
+2010-09-23T14:37:45.291809Z
 575c5f91f698576ec8f6cc88bbcd31d8
 2010-01-27T18:29:03.119133Z
 3340
@@ -576,7 +576,7 @@
 
 
 
-2010-07-23T14:49:43.648129Z
+2010-09-23T14:37:45.287807Z
 fd5cfe62b2a92441a7cdb5035c4c4897
 2009-10-18T22:25:00.956502Z
 2930
@@ -610,7 +610,7 @@
 
 
 
-2010-07-23T14:49:43.648129Z
+2010-09-23T14:37:45.287807Z
 faf4bf5a3a3662c361ce668c20c293a4
 2010-01-27T18:29:03.119133Z
 3340
@@ -644,7 +644,7 @@
 
 
 
-2010-07-23T14:49:43.648129Z
+2010-09-23T14:37:45.287807Z
 91f000c1e57fb0edc16bf90ea8efc6fa
 2010-01-28T19:05:21.831741Z
 3342
@@ -678,7 +678,7 @@
 
 
 
-2010-07-23T14:49:43.648129Z
+2010-09-23T14:37:45.291809Z
 3b871be1550b1a964324a18f868dabae
 2009-12-06T10:28:20.099964Z
 3123
@@ -712,7 +712,7 @@
 
 
 
-2010-07-23T14:49:43.648129Z
+2010-09-23T14:37:45.287807Z
 dfe8cbec2ef3bcffe6b9352e3a3d807c
 2009-10-18T22:25:00.956502Z
 2930
@@ -746,7 +746,7 @@
 
 
 
-2010-07-23T14:49:43.648129Z
+2010-09-23T14:37:45.287807Z
 a9ebd14814e0885fc096d0702745f30d
 2010-01-27T18:29:03.119133Z
 3340
@@ -780,7 +780,7 @@
 
 
 
-2010-07-23T14:49:43.652130Z
+2010-09-23T14:37:45.291809Z
 d1bdf1810c216ecde56d0750f78bea10
 2010-01-27T18:29:03.119133Z
 3340
@@ -814,7 +814,7 @@
 
 
 
-2010-07-23T14:49:43.648129Z
+2010-09-23T14:37:45.287807Z
 92ac53d6b3a2e00ae1a9e0e4bc5d548b
 2010-02-08T18:53:12.750770Z
 3398
@@ -848,7 +848,7 @@
 
 
 
-2010-07-23T14:49:43.652130Z
+2010-09-23T14:37:45.291809Z
 94aed9cd40bd95ab8d8c2f51bfc097cf
 2009-10-18T22:25:00.956502Z
 2930
@@ -882,7 +882,7 @@
 
 
 
-2010-07-23T14:49:43.652130Z
+2010-09-23T14:37:45.287807Z
 d17dfd87c9c081965089712a4ce42a6d
 2009-10-18T22:25:00.956502Z
 2930
@@ -916,7 +916,7 @@
 
 
 
-2010-07-23T14:49:43.652130Z
+2010-09-23T14:37:45.291809Z
 74f5207a054732dd9be1b3184340ca77
 2009-10-18T22:25:00.956502Z
 2930
@@ -950,7 +950,7 @@
 
 
 
-2010-07-23T14:49:43.652130Z
+2010-09-23T14:37:45.291809Z
 908d8689f3ff469978b8af8bb55084b4
 2010-01-27T18:29:03.119133Z
 3340
@@ -984,7 +984,7 @@
 
 
 
-2010-07-23T14:49:43.652130Z
+2010-09-23T14:37:45.291809Z
 9c97ca570fa9b00ab1ecebd226f52f66
 2009-10-18T22:25:00.956502Z
 2930
@@ -1018,7 +1018,7 @@
 
 
 
-2010-07-23T14:49:43.652130Z
+2010-09-23T14:37:45.287807Z
 c01820cc719616bb5a0895cfddb40798
 2010-01-27T18:29:03.119133Z
 3340
@@ -1052,7 +1052,7 @@
 
 
 
-2010-07-23T14:49:43.652130Z
+2010-09-23T14:37:45.287807Z
 27218d998d6798365d0cc47ae8d8bb87
 2010-01-28T19:05:21.831741Z
 3342
@@ -1086,7 +1086,7 @@
 
 
 
-2010-07-23T14:49:43.652130Z
+2010-09-23T14:37:45.295820Z
 0b05f7ce166d5bb3695d2fad7e56fc7f
 2010-01-27T18:29:03.119133Z
 3340
@@ -1120,7 +1120,7 @@
 
 
 
-2010-07-23T14:49:43.652130Z
+2010-09-23T14:37:45.291809Z
 2a6254ddbc381a97b49b17936c25ef78
 2010-01-28T19:05:21.831741Z
 3342
@@ -1154,7 +1154,7 @@
 
 
 
-2010-07-23T14:49:43.652130Z
+2010-09-23T14:37:45.287807Z
 d60529466c1df6db1edcdac71fa1a9d7
 2010-04-13T05:57:27.803435Z
 3670
@@ -1188,7 +1188,7 @@
 
 
 
-2010-07-23T14:49:43.652130Z
+2010-09-23T14:37:45.291809Z
 c4ea7f6c706d04e3ef3f809e37867766
 2009-11-05T21:32:26.784578Z
 3010
@@ -1222,7 +1222,7 @@
 
 
 
-2010-07-23T14:49:43.652130Z
+2010-09-23T14:37:45.291809Z
 0a69ac358346b15717ccb6b0cddba4be
 2010-01-27T18:29:03.119133Z
 3340
@@ -1256,7 +1256,7 @@
 
 
 
-2010-07-23T14:49:43.652130Z
+2010-09-23T14:37:45.291809Z
 19471f6afbec20925ddd6824c1290526
 2010-01-27T18:29:03.119133Z
 3340
--- a/test/fixtures/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/fixtures/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/test/fixtures
 http://redmine.rubyforge.org/svn
 
@@ -35,7 +35,7 @@
 
 
 
-2010-07-23T14:49:44.208157Z
+2010-09-23T14:37:45.327799Z
 7f7308fa24fe8015418b4bf81a265389
 2009-12-06T10:28:20.099964Z
 3123
@@ -72,7 +72,7 @@
 
 
 
-2010-07-23T14:49:44.208157Z
+2010-09-23T14:37:45.327799Z
 940bc0bea76bc76ba8ef1b224d744eee
 2009-09-20T14:06:57.257282Z
 2895
@@ -106,7 +106,7 @@
 
 
 
-2010-07-23T14:49:44.208157Z
+2010-09-23T14:37:45.315821Z
 1e9bc92faf43a6d556aea8f33ea974b0
 2009-09-20T15:20:22.385253Z
 2898
@@ -140,7 +140,7 @@
 
 
 
-2010-07-23T14:49:44.208157Z
+2010-09-23T14:37:45.351765Z
 5b2ffc98605c1c36dc346f3be44a9985
 2010-03-13T14:56:49.379682Z
 3573
@@ -177,7 +177,7 @@
 
 
 
-2010-07-23T14:49:44.208157Z
+2010-09-23T14:37:45.355763Z
 a519d5e75a6d1ac1516064c882aa773c
 2009-09-20T14:06:57.257282Z
 2895
@@ -211,7 +211,7 @@
 
 
 
-2010-07-23T14:49:44.208157Z
+2010-09-23T14:37:45.343799Z
 b7264b0f4d285dc38ba7139feaabafe2
 2008-12-29T12:40:56.716698Z
 2196
@@ -245,7 +245,7 @@
 
 
 
-2010-07-23T14:49:44.208157Z
+2010-09-23T14:37:45.343799Z
 e9853df4a04648bcb9389127748b24c4
 2009-09-20T14:06:57.257282Z
 2895
@@ -279,7 +279,7 @@
 
 
 
-2010-07-23T14:49:44.212098Z
+2010-09-23T14:37:45.351765Z
 5259028ece10055ea04cb1baddadd334
 2009-10-21T22:34:52.412718Z
 2950
@@ -313,7 +313,7 @@
 
 
 
-2010-07-23T14:49:44.212098Z
+2010-09-23T14:37:45.319762Z
 7c37bf142019bf7e3d15cb2f10c6c5ba
 2009-12-02T18:57:17.339733Z
 3112
@@ -347,7 +347,7 @@
 
 
 
-2010-07-23T14:49:44.212098Z
+2010-09-23T14:37:45.343799Z
 b72e570a19a6a6297fd0e78a0c15d9a6
 2009-09-20T14:06:57.257282Z
 2895
@@ -381,7 +381,7 @@
 
 
 
-2010-07-23T14:49:44.212098Z
+2010-09-23T14:37:45.327799Z
 e6b2256ffe56fa2baa64e474f5c920d6
 2009-09-20T14:06:57.257282Z
 2895
@@ -415,7 +415,7 @@
 
 
 
-2010-07-23T14:49:44.212098Z
+2010-09-23T14:37:45.319762Z
 7e42308ab41cac587386d54899cfcef5
 2009-09-20T14:06:57.257282Z
 2895
@@ -449,7 +449,7 @@
 
 
 
-2010-07-23T14:49:44.212098Z
+2010-09-23T14:37:45.351765Z
 ad513155b260eb8a8739d4d13c2823a8
 2009-12-19T13:32:21.556847Z
 3194
@@ -483,7 +483,7 @@
 
 
 
-2010-07-23T14:49:44.212098Z
+2010-09-23T14:37:45.327799Z
 1cdfea6614ecba6cddecb3d4524c38ba
 2009-12-26T16:14:55.591181Z
 3250
@@ -517,7 +517,7 @@
 
 
 
-2010-07-23T14:49:44.212098Z
+2010-09-23T14:37:45.319762Z
 159394b420966c9e2f5ab0e31cb93b41
 2009-11-27T20:32:28.228739Z
 3099
@@ -554,7 +554,7 @@
 
 
 
-2010-07-23T14:49:44.212098Z
+2010-09-23T14:37:45.351765Z
 e5a26332fd48dac7e33a963622f49994
 2009-09-20T14:06:57.257282Z
 2895
@@ -588,7 +588,7 @@
 
 
 
-2010-07-23T14:49:44.212098Z
+2010-09-23T14:37:45.315821Z
 909e55408711ba1774e1c071b162962f
 2009-09-20T14:06:57.257282Z
 2895
@@ -622,7 +622,7 @@
 
 
 
-2010-07-23T14:49:44.212098Z
+2010-09-23T14:37:45.319762Z
 c6789a99aba9f28cf1d31a36b36224c8
 2010-01-03T11:18:09.741250Z
 3278
@@ -656,7 +656,7 @@
 
 
 
-2010-07-23T14:49:44.212098Z
+2010-09-23T14:37:45.323763Z
 bafbddc194242dbdcac1f2bfc550c27b
 2010-03-13T14:56:49.379682Z
 3573
@@ -693,7 +693,7 @@
 
 
 
-2010-07-23T14:49:44.212098Z
+2010-09-23T14:37:45.343799Z
 86387d627355e1debc04c364c29efe81
 2009-12-26T16:14:55.591181Z
 3250
@@ -727,7 +727,7 @@
 
 
 
-2010-07-23T14:49:44.212098Z
+2010-09-23T14:37:45.327799Z
 5c4431f5ee0ecd68c45712b87da9ca3e
 2010-04-11T16:27:37.584909Z
 3663
@@ -761,7 +761,7 @@
 
 
 
-2010-07-23T14:49:44.212098Z
+2010-09-23T14:37:45.343799Z
 b5bafc332d23c9efcc2ef648a9a393b9
 2009-11-16T18:07:30.910440Z
 3071
@@ -795,7 +795,7 @@
 
 
 
-2010-07-23T14:49:44.216162Z
+2010-09-23T14:37:45.351765Z
 9dbcd982c4227d919ea750ce4fde79a7
 2009-02-12T17:35:57.542817Z
 2456
@@ -829,7 +829,7 @@
 
 
 
-2010-07-23T14:49:44.212098Z
+2010-09-23T14:37:45.355763Z
 8e7549cddb3ed2eb4c5778e3506e3e0c
 2010-02-11T19:30:53.136370Z
 3412
@@ -863,7 +863,7 @@
 
 
 
-2010-07-23T14:49:44.216162Z
+2010-09-23T14:37:45.355763Z
 f32671fee76259eb7dbe8f57ed503c99
 2010-02-11T19:30:53.136370Z
 3412
@@ -897,7 +897,7 @@
 
 
 
-2010-08-25T15:27:52.806619Z
+2010-09-23T14:37:45.319762Z
 8a815e166641ad170ffddcf33646ca04
 2010-08-22T18:42:00.112555Z
 4013
@@ -931,7 +931,7 @@
 
 
 
-2010-07-23T14:49:44.216162Z
+2010-09-23T14:37:45.315821Z
 0cb04e10717d1de94f328dd92f2e9f8c
 2009-09-20T14:06:57.257282Z
 2895
@@ -965,7 +965,7 @@
 
 
 
-2010-07-23T14:49:44.216162Z
+2010-09-23T14:37:45.351765Z
 fcf009196cf46bc9d64e947e8275e51f
 2009-09-20T14:06:57.257282Z
 2895
@@ -1002,7 +1002,7 @@
 
 
 
-2010-07-23T14:49:44.216162Z
+2010-09-23T14:37:45.343799Z
 a12098ae3dcc7df2fffdc5aabc036445
 2009-12-26T16:14:55.591181Z
 3250
@@ -1039,7 +1039,7 @@
 
 
 
-2010-07-23T14:49:44.216162Z
+2010-09-23T14:37:45.327799Z
 0f791723030addfd84aeb8e8478b4373
 2009-12-06T10:28:20.099964Z
 3123
@@ -1073,7 +1073,7 @@
 
 
 
-2010-07-23T14:49:44.216162Z
+2010-09-23T14:37:45.355763Z
 be9ed58ec8ae1a4d2e1608c712c480be
 2009-09-20T14:06:57.257282Z
 2895
@@ -1107,7 +1107,7 @@
 
 
 
-2010-07-23T14:49:44.216162Z
+2010-09-23T14:37:45.319762Z
 28c83450d87eb6a49fe3d920f05e16b7
 2010-01-14T20:00:17.463579Z
 3313
@@ -1141,7 +1141,7 @@
 
 
 
-2010-07-23T14:49:44.216162Z
+2010-09-23T14:37:45.351765Z
 ac7c965e48b0bb9568999ecaa86a627e
 2009-11-11T10:48:54.418561Z
 3024
@@ -1175,7 +1175,7 @@
 
 
 
-2010-07-23T14:49:44.216162Z
+2010-09-23T14:37:45.315821Z
 f299e9e4f8b4310d276f3cc0bd4573a2
 2010-02-26T08:42:40.283735Z
 3490
@@ -1209,7 +1209,7 @@
 
 
 
-2010-07-23T14:49:44.216162Z
+2010-09-23T14:37:45.343799Z
 f41152c0bbe67b30733fb44c847c0c28
 2009-12-13T12:39:22.716082Z
 3167
@@ -1243,7 +1243,7 @@
 
 
 
-2010-07-23T14:49:44.216162Z
+2010-09-23T14:37:45.327799Z
 14b2db45f35ee3e6f8c2a8a05b94c82b
 2009-11-07T08:44:56.035544Z
 3013
@@ -1277,7 +1277,7 @@
 
 
 
-2010-07-23T14:49:44.216162Z
+2010-09-23T14:37:45.351765Z
 0670d0dee081a5f922aa2d3ff7af9764
 2009-12-06T10:28:20.099964Z
 3123
@@ -1311,7 +1311,7 @@
 
 
 
-2010-07-23T14:49:44.216162Z
+2010-09-23T14:37:45.315821Z
 c3c2ab815b9af7fb01ccafc5fc881f87
 2009-10-25T11:23:46.266302Z
 2976
@@ -1345,7 +1345,7 @@
 
 
 
-2010-07-23T14:49:44.220130Z
+2010-09-23T14:37:45.315821Z
 58f19425b758eec08d68749a9408b258
 2009-12-06T10:28:20.099964Z
 3123
@@ -1379,7 +1379,7 @@
 
 
 
-2010-07-23T14:49:44.220130Z
+2010-09-23T14:37:45.343799Z
 f926570b0d32ca1702d16de3f57e0262
 2009-09-20T14:06:57.257282Z
 2895
@@ -1413,7 +1413,7 @@
 
 
 
-2010-07-23T14:49:44.220130Z
+2010-09-23T14:37:45.351765Z
 644bd85c22127195b9f31217cce0595e
 2009-09-20T14:06:57.257282Z
 2895
--- a/test/fixtures/diffs/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/fixtures/diffs/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/test/fixtures/diffs
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:44.140096Z
+2010-09-23T14:37:45.319762Z
 64527b211202fbff696792d538e2b14e
 2008-12-07T15:21:40.165860Z
 2112
--- a/test/fixtures/encoding/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/fixtures/encoding/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/test/fixtures/encoding
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:43.996133Z
+2010-09-23T14:37:45.323763Z
 eee83cf374737071543358b83f85f75b
 2010-02-20T11:24:41.988635Z
 3466
--- a/test/fixtures/files/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/fixtures/files/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/test/fixtures/files
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:44.012097Z
+2010-09-23T14:37:45.323763Z
 15a82d7463bda303b58595b5d05d8f05
 2008-06-09T18:40:59.518583Z
 1520
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:44.012097Z
+2010-09-23T14:37:45.323763Z
 8b4167c6b87869174dd17db0694ef2e1
 2008-06-09T18:40:59.518583Z
 1520
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:44.012097Z
+2010-09-23T14:37:45.323763Z
 c72c8a9a0de99c39f9e6d712c13b7624
 2008-06-09T18:40:59.518583Z
 1520
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:44.012097Z
+2010-09-23T14:37:45.323763Z
 1478adae0d4eb06d35897518540e25d6
 2008-12-02T17:57:13.240321Z
 2085
--- a/test/fixtures/ldap/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/fixtures/ldap/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/test/fixtures/ldap
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:43.996133Z
+2010-09-23T14:37:45.327799Z
 acbef41cb6cf252c83489cc3344e2604
 2010-02-26T08:31:36.418866Z
 3489
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:43.996133Z
+2010-09-23T14:37:45.327799Z
 f1b10e6d96dd658e563d4ba74d52e87b
 2010-02-26T08:31:36.418866Z
 3489
--- a/test/fixtures/mail_handler/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/fixtures/mail_handler/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/test/fixtures/mail_handler
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:43.988124Z
+2010-09-23T14:37:45.339796Z
 5e24af78a4534798611158a3d81efb34
 2008-12-14T17:10:16.292262Z
 2136
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:43.988124Z
+2010-09-23T14:37:45.339796Z
 09130a1100cb410ed07fdff5564b2993
 2009-01-21T18:22:30.765588Z
 2294
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:43.988124Z
+2010-09-23T14:37:45.339796Z
 4fbec91f5454b84077ae1290fba0bc8e
 2009-08-13T16:57:36.259313Z
 2838
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:43.988124Z
+2010-09-23T14:37:45.339796Z
 ed7adca07ce64c4d15f3e638a222e38d
 2010-06-20T16:22:36.211973Z
 3801
@@ -168,7 +168,7 @@
 
 
 
-2010-07-23T14:49:43.988124Z
+2010-09-23T14:37:45.339796Z
 0c3b0545575d405416f585f8d5910bcb
 2009-11-08T13:51:53.384956Z
 3022
@@ -202,7 +202,7 @@
 
 
 
-2010-07-23T14:49:43.988124Z
+2010-09-23T14:37:45.339796Z
 40927905de0187dc52a9adb3e4a2c252
 2008-11-30T16:00:45.142894Z
 2077
@@ -236,7 +236,7 @@
 
 
 
-2010-07-23T14:49:43.988124Z
+2010-09-23T14:37:45.339796Z
 d276c2037b0bf277b66f921379695c35
 2008-07-06T16:26:25.352975Z
 1643
@@ -270,7 +270,7 @@
 
 
 
-2010-07-23T14:49:43.988124Z
+2010-09-23T14:37:45.335799Z
 1fc46fd2b0b8dcdaf67dfde24d0e8b89
 2010-01-17T11:00:54.196987Z
 3322
@@ -304,7 +304,7 @@
 
 
 
-2010-07-23T14:49:43.988124Z
+2010-09-23T14:37:45.339796Z
 4d85674ea94930e7f1c8e288f03a57b8
 2008-06-22T10:45:03.753412Z
 1568
@@ -338,7 +338,7 @@
 
 
 
-2010-07-23T14:49:43.988124Z
+2010-09-23T14:37:45.339796Z
 9dbf54ce4376f62447ef0696fe9b3a79
 2010-06-19T19:24:17.380627Z
 3783
@@ -372,7 +372,7 @@
 
 
 
-2010-07-23T14:49:43.988124Z
+2010-09-23T14:37:45.339796Z
 0979c01baf02b924bd8a6db3980c59c9
 2009-06-14T14:48:34.287541Z
 2789
@@ -406,7 +406,7 @@
 
 
 
-2010-07-23T14:49:43.988124Z
+2010-09-23T14:37:45.339796Z
 2a98751dfc76fcc9eefa7eaf2a8098e4
 2010-05-29T00:05:24.040852Z
 3764
@@ -440,7 +440,7 @@
 
 
 
-2010-07-23T14:49:43.992098Z
+2010-09-23T14:37:45.339796Z
 6cd634ffcd88be96cbe8789ae9545c5f
 2010-05-29T00:05:24.040852Z
 3764
@@ -474,7 +474,7 @@
 
 
 
-2010-07-23T14:49:43.992098Z
+2010-09-23T14:37:45.339796Z
 4ef77e6337f95c7a8362c4a51c09d0af
 2008-12-30T14:57:33.008940Z
 2211
@@ -508,7 +508,7 @@
 
 
 
-2010-07-23T14:49:43.992098Z
+2010-09-23T14:37:45.339796Z
 4bd4decc00f83404fdd1a835809e4552
 2009-01-19T18:29:07.726757Z
 2288
@@ -542,7 +542,7 @@
 
 
 
-2010-07-23T14:49:43.992098Z
+2010-09-23T14:37:45.339796Z
 c174d0c5bbb339ef9361c45aab58b2bb
 2009-01-19T19:03:53.393843Z
 2289
@@ -576,7 +576,7 @@
 
 
 
-2010-07-23T14:49:43.992098Z
+2010-09-23T14:37:45.343799Z
 7bc2d83ee5c078a264dd66ec75f35c77
 2009-03-06T18:25:19.434505Z
 2553
--- a/test/fixtures/mailer/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/fixtures/mailer/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/test/fixtures/mailer
 http://redmine.rubyforge.org/svn
 
--- a/test/fixtures/repositories/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/fixtures/repositories/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/test/fixtures/repositories
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:44.136156Z
+2010-09-23T14:37:45.351765Z
 0553391b55404e8ff509358b388f085b
 2008-03-12T20:28:49.748698Z
 1236
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:44.136156Z
+2010-09-23T14:37:45.351765Z
 bd13c11517bf083e83846aeccff745f1
 2010-06-20T16:08:26.745839Z
 3800
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:44.136156Z
+2010-09-23T14:37:45.347765Z
 fa70d4aeca5639d750d94281ad664957
 2007-12-03T19:19:36.156779Z
 951
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:44.136156Z
+2010-09-23T14:37:45.351765Z
 4717d4ab5ae991a07ac8256d6cc83c36
 2010-07-06T02:07:46.557097Z
 3828
@@ -168,7 +168,7 @@
 
 
 
-2010-07-23T14:49:44.136156Z
+2010-09-23T14:37:45.351765Z
 48c6f19f8c3123c7e143e4516669f700
 2007-12-14T17:46:45.448946Z
 991
@@ -202,7 +202,7 @@
 
 
 
-2010-07-23T14:49:44.136156Z
+2010-09-23T14:37:45.351765Z
 9fbee7c5669de84f0767597eb41af9f7
 2008-06-08T15:40:24.603157Z
 1508
@@ -236,7 +236,7 @@
 
 
 
-2010-07-23T14:49:44.136156Z
+2010-09-23T14:37:45.351765Z
 0c4730bd5eb192e094531f218b7a3119
 2007-12-13T18:52:09.073829Z
 987
--- a/test/functional/.svn/all-wcprops	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/functional/.svn/all-wcprops	Fri Sep 24 15:51:28 2010 +0100
@@ -1,19 +1,19 @@
 K 25
 svn:wc:ra_dav:version-url
 V 40
-/svn/!svn/ver/4037/trunk/test/functional
+/svn/!svn/ver/4172/trunk/test/functional
 END
 issues_controller_test.rb
 K 25
 svn:wc:ra_dav:version-url
 V 66
-/svn/!svn/ver/4037/trunk/test/functional/issues_controller_test.rb
+/svn/!svn/ver/4083/trunk/test/functional/issues_controller_test.rb
 END
 news_controller_test.rb
 K 25
 svn:wc:ra_dav:version-url
 V 64
-/svn/!svn/ver/3687/trunk/test/functional/news_controller_test.rb
+/svn/!svn/ver/4172/trunk/test/functional/news_controller_test.rb
 END
 queries_controller_test.rb
 K 25
@@ -51,6 +51,12 @@
 V 62
 /svn/!svn/ver/3217/trunk/test/functional/my_controller_test.rb
 END
+comments_controller_test.rb
+K 25
+svn:wc:ra_dav:version-url
+V 68
+/svn/!svn/ver/4172/trunk/test/functional/comments_controller_test.rb
+END
 wikis_controller_test.rb
 K 25
 svn:wc:ra_dav:version-url
@@ -73,7 +79,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 73
-/svn/!svn/ver/4006/trunk/test/functional/context_menus_controller_test.rb
+/svn/!svn/ver/4055/trunk/test/functional/context_menus_controller_test.rb
 END
 account_controller_test.rb
 K 25
@@ -87,29 +93,29 @@
 V 69
 /svn/!svn/ver/3913/trunk/test/functional/calendars_controller_test.rb
 END
+workflows_controller_test.rb
+K 25
+svn:wc:ra_dav:version-url
+V 69
+/svn/!svn/ver/3188/trunk/test/functional/workflows_controller_test.rb
+END
 journals_controller_test.rb
 K 25
 svn:wc:ra_dav:version-url
 V 68
 /svn/!svn/ver/4034/trunk/test/functional/journals_controller_test.rb
 END
-workflows_controller_test.rb
+project_enumerations_controller_test.rb
 K 25
 svn:wc:ra_dav:version-url
-V 69
-/svn/!svn/ver/3188/trunk/test/functional/workflows_controller_test.rb
+V 80
+/svn/!svn/ver/4075/trunk/test/functional/project_enumerations_controller_test.rb
 END
 gantts_controller_test.rb
 K 25
 svn:wc:ra_dav:version-url
 V 66
-/svn/!svn/ver/3913/trunk/test/functional/gantts_controller_test.rb
-END
-users_controller_test.rb
-K 25
-svn:wc:ra_dav:version-url
-V 65
-/svn/!svn/ver/3935/trunk/test/functional/users_controller_test.rb
+/svn/!svn/ver/4072/trunk/test/functional/gantts_controller_test.rb
 END
 issue_moves_controller_test.rb
 K 25
@@ -117,6 +123,12 @@
 V 71
 /svn/!svn/ver/3937/trunk/test/functional/issue_moves_controller_test.rb
 END
+users_controller_test.rb
+K 25
+svn:wc:ra_dav:version-url
+V 65
+/svn/!svn/ver/4066/trunk/test/functional/users_controller_test.rb
+END
 repositories_cvs_controller_test.rb
 K 25
 svn:wc:ra_dav:version-url
@@ -129,11 +141,11 @@
 V 71
 /svn/!svn/ver/2895/trunk/test/functional/application_controller_test.rb
 END
-search_controller_test.rb
+activities_controller_test.rb
 K 25
 svn:wc:ra_dav:version-url
-V 66
-/svn/!svn/ver/3806/trunk/test/functional/search_controller_test.rb
+V 70
+/svn/!svn/ver/4047/trunk/test/functional/activities_controller_test.rb
 END
 ldap_auth_sources_controller.rb
 K 25
@@ -141,11 +153,11 @@
 V 72
 /svn/!svn/ver/3744/trunk/test/functional/ldap_auth_sources_controller.rb
 END
-messages_controller_test.rb
+search_controller_test.rb
 K 25
 svn:wc:ra_dav:version-url
-V 68
-/svn/!svn/ver/3687/trunk/test/functional/messages_controller_test.rb
+V 66
+/svn/!svn/ver/3806/trunk/test/functional/search_controller_test.rb
 END
 repositories_bazaar_controller_test.rb
 K 25
@@ -153,6 +165,12 @@
 V 79
 /svn/!svn/ver/2887/trunk/test/functional/repositories_bazaar_controller_test.rb
 END
+messages_controller_test.rb
+K 25
+svn:wc:ra_dav:version-url
+V 68
+/svn/!svn/ver/3687/trunk/test/functional/messages_controller_test.rb
+END
 attachments_controller_test.rb
 K 25
 svn:wc:ra_dav:version-url
@@ -171,18 +189,18 @@
 V 66
 /svn/!svn/ver/2989/trunk/test/functional/groups_controller_test.rb
 END
+issues_controller_transaction_test.rb
+K 25
+svn:wc:ra_dav:version-url
+V 78
+/svn/!svn/ver/3701/trunk/test/functional/issues_controller_transaction_test.rb
+END
 watchers_controller_test.rb
 K 25
 svn:wc:ra_dav:version-url
 V 68
 /svn/!svn/ver/3170/trunk/test/functional/watchers_controller_test.rb
 END
-issues_controller_transaction_test.rb
-K 25
-svn:wc:ra_dav:version-url
-V 78
-/svn/!svn/ver/3701/trunk/test/functional/issues_controller_transaction_test.rb
-END
 issue_statuses_controller_test.rb
 K 25
 svn:wc:ra_dav:version-url
@@ -199,7 +217,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 68
-/svn/!svn/ver/3802/trunk/test/functional/projects_controller_test.rb
+/svn/!svn/ver/4070/trunk/test/functional/projects_controller_test.rb
 END
 repositories_git_controller_test.rb
 K 25
@@ -247,7 +265,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 67
-/svn/!svn/ver/3805/trunk/test/functional/timelog_controller_test.rb
+/svn/!svn/ver/4087/trunk/test/functional/timelog_controller_test.rb
 END
 documents_controller_test.rb
 K 25
@@ -255,6 +273,12 @@
 V 69
 /svn/!svn/ver/3788/trunk/test/functional/documents_controller_test.rb
 END
+files_controller_test.rb
+K 25
+svn:wc:ra_dav:version-url
+V 65
+/svn/!svn/ver/4085/trunk/test/functional/files_controller_test.rb
+END
 repositories_darcs_controller_test.rb
 K 25
 svn:wc:ra_dav:version-url
@@ -295,7 +319,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 68
-/svn/!svn/ver/3686/trunk/test/functional/versions_controller_test.rb
+/svn/!svn/ver/4097/trunk/test/functional/versions_controller_test.rb
 END
 enumerations_controller_test.rb
 K 25
--- a/test/functional/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/functional/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,14 +1,14 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/test/functional
 http://redmine.rubyforge.org/svn
 
 
 
-2010-08-24T15:27:12.793586Z
-4037
+2010-09-23T15:20:19.085385Z
+4172
 edavis10
 
 
@@ -32,11 +32,11 @@
 
 
 
-2010-08-25T15:27:52.768120Z
-49af442cdcbb77b8f48e9096a2efaa5e
-2010-08-24T15:27:12.793586Z
-4037
-edavis10
+2010-09-24T12:48:25.875739Z
+07a21279794955753d580c1ae2e523fb
+2010-09-11T20:21:27.018967Z
+4083
+jbbarth
 has-props
 
 
@@ -58,7 +58,7 @@
 
 
 
-38694
+38747
 
 news_controller_test.rb
 file
@@ -66,10 +66,10 @@
 
 
 
-2010-07-23T14:49:43.800125Z
-859828bfcf708f52e472b500bf76102c
-2010-04-21T16:02:55.125733Z
-3687
+2010-09-24T12:48:25.875739Z
+1c72a2e1843e72e60be2f30f97197b91
+2010-09-23T15:20:19.085385Z
+4172
 edavis10
 has-props
 
@@ -92,7 +92,7 @@
 
 
 
-5359
+4365
 
 queries_controller_test.rb
 file
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:43.800125Z
+2010-09-23T14:37:45.419982Z
 2f589d132099d0c2c64ff100dee38e77
 2009-09-13T17:14:35.707881Z
 2887
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:43.800125Z
+2010-09-23T14:37:45.423771Z
 4086611a8939740adbcbf1ec5fe907e9
 2010-02-15T16:41:27.289923Z
 3437
@@ -168,7 +168,7 @@
 
 
 
-2010-07-23T14:49:43.800125Z
+2010-09-23T14:37:45.387766Z
 c48a1796b2dc76ac1fa2eb64d663ceb3
 2009-09-13T17:14:35.707881Z
 2887
@@ -202,7 +202,7 @@
 
 
 
-2010-08-25T15:27:52.768120Z
+2010-09-23T14:37:45.383766Z
 e41b4da40ff4371adb4245f59610b1f5
 2010-08-17T15:03:58.074505Z
 3945
@@ -236,7 +236,7 @@
 
 
 
-2010-07-23T14:49:43.800125Z
+2010-09-23T14:37:45.423771Z
 e2ab383bae04b68e626c1f5f9a196bfb
 2010-02-15T16:41:16.346582Z
 3435
@@ -270,7 +270,7 @@
 
 
 
-2010-07-23T14:49:43.800125Z
+2010-09-23T14:37:45.387766Z
 23fcfd5e58263663f9a6507566e6fe2d
 2009-12-23T06:27:28.577661Z
 3217
@@ -298,13 +298,47 @@
 
 6205
 
+comments_controller_test.rb
+file
+
+
+
+
+2010-09-24T12:48:25.875739Z
+70dea926748aacbab944bce556c551c6
+2010-09-23T15:20:19.085385Z
+4172
+edavis10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+2027
+
 wikis_controller_test.rb
 file
 
 
 
 
-2010-07-23T14:49:43.800125Z
+2010-09-23T14:37:45.427769Z
 1ef7d2c3fc8722945322a7d5bb1cbcf4
 2010-04-21T16:02:55.125733Z
 3687
@@ -338,7 +372,7 @@
 
 
 
-2010-07-23T14:49:43.800125Z
+2010-09-23T14:37:45.383766Z
 3615890cd8778917fbde968473a229bc
 2010-06-20T16:08:20.636341Z
 3799
@@ -372,7 +406,7 @@
 
 
 
-2010-07-23T14:49:43.800125Z
+2010-09-23T14:37:45.427769Z
 eeaeea8886e01297d20b839352a22fe2
 2010-04-30T18:08:40.324496Z
 3719
@@ -406,33 +440,33 @@
 
 
 
-2010-08-25T15:27:52.768120Z
-16a7989e923a87002e96fbbfb5e8051a
-2010-08-19T18:16:54.064576Z
-4006
-edavis10
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-4834
+2010-09-24T12:48:25.875739Z
+c73a61b28b04990574ae25575051aa52
+2010-09-03T19:54:24.083210Z
+4055
+jbbarth
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+5093
 
 account_controller_test.rb
 file
@@ -440,7 +474,7 @@
 
 
 
-2010-08-25T15:27:52.768120Z
+2010-09-23T14:37:45.383766Z
 01299f951a82e5acf560044b7e89b5ab
 2010-08-10T21:12:32.103531Z
 3933
@@ -474,7 +508,7 @@
 
 
 
-2010-08-25T15:27:52.768120Z
+2010-09-23T14:37:45.383766Z
 998bc7746491ec2c407187c5c7646990
 2010-08-04T15:04:30.993800Z
 3913
@@ -508,7 +542,7 @@
 
 
 
-2010-08-25T15:27:52.768120Z
+2010-09-23T14:37:45.387766Z
 6b5c1ff2e3aceda0f29c829b1137f8a3
 2010-08-23T15:04:36.844654Z
 4034
@@ -542,7 +576,7 @@
 
 
 
-2010-07-23T14:49:43.804126Z
+2010-09-23T14:37:45.427769Z
 be835c79372fac52c849870791d982ff
 2009-12-18T15:41:32.828284Z
 3188
@@ -570,16 +604,50 @@
 
 6668
 
+project_enumerations_controller_test.rb
+file
+
+
+
+
+2010-09-24T12:48:25.875739Z
+abb9be62ab6ed5867d6070fd14ffd31d
+2010-09-10T16:00:49.687515Z
+4075
+edavis10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+9530
+
 gantts_controller_test.rb
 file
 
 
 
 
-2010-08-25T15:27:52.770540Z
-d2320bdcea0efd739df08a954a4e1e07
-2010-08-04T15:04:30.993800Z
-3913
+2010-09-24T12:48:25.875739Z
+fb255e043b31b095c741248bc5a9a287
+2010-09-10T03:09:02.311267Z
+4072
 edavis10
 
 
@@ -602,7 +670,7 @@
 
 
 
-1669
+1716
 
 users_controller_test.rb
 file
@@ -610,11 +678,11 @@
 
 
 
-2010-08-25T15:27:52.770540Z
-452b95a8c6b9d5c22f618afc76283f5a
-2010-08-10T23:07:44.448600Z
-3935
-jbbarth
+2010-09-24T12:48:25.875739Z
+bc114889d45857af9ea3a87862f6f0e5
+2010-09-06T01:02:52.851079Z
+4066
+edavis10
 has-props
 
 
@@ -636,7 +704,7 @@
 
 
 
-5118
+5574
 
 issue_moves_controller_test.rb
 file
@@ -644,7 +712,7 @@
 
 
 
-2010-08-25T15:27:52.770540Z
+2010-09-23T14:37:45.387766Z
 54756d7f1e65c8d37dca5b41aac6e3ae
 2010-08-12T13:57:46.562058Z
 3937
@@ -678,7 +746,7 @@
 
 
 
-2010-07-23T14:49:43.824244Z
+2010-09-23T14:37:45.419982Z
 e8d80bc0ee812d5226adf9c1d952ece8
 2009-09-13T17:14:35.707881Z
 2887
@@ -712,7 +780,7 @@
 
 
 
-2010-07-23T14:49:43.824244Z
+2010-09-23T14:37:45.383766Z
 3efeaca5179a579dcbdd89cab5f48e3f
 2009-09-20T14:06:57.257282Z
 2895
@@ -740,13 +808,47 @@
 
 1656
 
+activities_controller_test.rb
+file
+
+
+
+
+2010-09-24T12:48:25.875739Z
+48dce7788c0aa338add086c8cfd15618
+2010-08-27T14:05:54.014502Z
+4047
+edavis10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+2695
+
 ldap_auth_sources_controller.rb
 file
 
 
 
 
-2010-07-23T14:49:43.828156Z
+2010-09-23T14:37:45.387766Z
 d6759c42ae866d7210c7006911e82a42
 2010-05-23T03:16:31.304135Z
 3744
@@ -780,7 +882,7 @@
 
 
 
-2010-07-23T14:49:43.828156Z
+2010-09-23T14:37:45.423771Z
 9dc6da996eea99b8108da65990ef6be3
 2010-06-20T20:01:32.722003Z
 3806
@@ -814,7 +916,7 @@
 
 
 
-2010-07-23T14:49:43.828156Z
+2010-09-23T14:37:45.419982Z
 0c80080549f9968528fce0326c4586e5
 2009-09-13T17:14:35.707881Z
 2887
@@ -848,7 +950,7 @@
 
 
 
-2010-07-23T14:49:43.828156Z
+2010-09-23T14:37:45.387766Z
 e70455a2b4bd135f10862b69df7a70bf
 2010-04-21T16:02:55.125733Z
 3687
@@ -882,7 +984,7 @@
 
 
 
-2010-07-23T14:49:43.828156Z
+2010-09-23T14:37:45.383766Z
 25de9e7d8cc73997221a567f9ae1c363
 2010-04-21T16:02:55.125733Z
 3687
@@ -916,7 +1018,7 @@
 
 
 
-2010-07-23T14:49:43.828156Z
+2010-09-23T14:37:45.423771Z
 c8d71d4092b4fd39bfada4e8c8ddb99d
 2009-12-20T09:44:28.044710Z
 3201
@@ -950,7 +1052,7 @@
 
 
 
-2010-07-23T14:49:43.828156Z
+2010-09-23T14:37:45.383766Z
 440543b92d6281235fa9a3ec7b569514
 2009-10-29T18:40:00.797736Z
 2989
@@ -984,7 +1086,7 @@
 
 
 
-2010-07-23T14:49:43.828156Z
+2010-09-23T14:37:45.387766Z
 672253b026d9eb645162edff0625071d
 2010-04-30T10:06:51.078244Z
 3701
@@ -1018,7 +1120,7 @@
 
 
 
-2010-07-23T14:49:43.828156Z
+2010-09-23T14:37:45.423771Z
 8dfee17a862ab3d8ec007dca2a6dbbe6
 2009-12-13T14:48:28.692743Z
 3170
@@ -1052,7 +1154,7 @@
 
 
 
-2010-07-23T14:49:43.828156Z
+2010-09-23T14:37:45.387766Z
 3cc86236a5979749a87f4459a6dcd435
 2010-02-12T19:15:33.815978Z
 3415
@@ -1086,7 +1188,7 @@
 
 
 
-2010-07-23T14:49:43.828156Z
+2010-09-23T14:37:45.419982Z
 d89f24390b27494109c2e4b393fbce7c
 2010-04-21T16:02:55.125733Z
 3687
@@ -1120,10 +1222,10 @@
 
 
 
-2010-07-23T14:49:43.828156Z
-4e0f23cdc6a24df82ff6d79e1ade79a7
-2010-06-20T16:29:12.112949Z
-3802
+2010-09-24T12:48:25.875739Z
+8a06ffc175377efeb3bac6e70067fa45
+2010-09-08T16:01:51.939478Z
+4070
 edavis10
 has-props
 
@@ -1146,7 +1248,7 @@
 
 
 
-29271
+14899
 
 members_controller_test.rb
 file
@@ -1154,7 +1256,7 @@
 
 
 
-2010-07-23T14:49:43.828156Z
+2010-09-23T14:37:45.387766Z
 6a53b76f859d219bcf1289e818aec610
 2010-05-24T20:21:16.271499Z
 3749
@@ -1188,7 +1290,7 @@
 
 
 
-2010-07-23T14:49:43.832097Z
+2010-09-23T14:37:45.423771Z
 c2447def1a06fe360c98745749ef2066
 2010-07-06T02:07:46.557097Z
 3828
@@ -1222,7 +1324,7 @@
 
 
 
-2010-07-23T14:49:43.832097Z
+2010-09-23T14:37:45.423771Z
 59ebfd6923ea8a7275a668f8168c9b3b
 2009-09-13T17:14:35.707881Z
 2887
@@ -1256,7 +1358,7 @@
 
 
 
-2010-07-23T14:49:43.832097Z
+2010-09-23T14:37:45.383766Z
 911b8361d2bf4ca21e1bc8270c957d17
 2010-04-21T16:02:55.125733Z
 3687
@@ -1290,7 +1392,7 @@
 
 
 
-2010-07-23T14:49:43.832097Z
+2010-09-23T14:37:45.419982Z
 3ae997d09c86108692ceb438576171d7
 2010-02-08T17:53:58.327631Z
 3396
@@ -1324,7 +1426,7 @@
 
 
 
-2010-07-23T14:49:43.832097Z
+2010-09-23T14:37:45.383766Z
 663e111e99486095033d1f3d635cf2c8
 2009-09-20T14:06:57.257282Z
 2895
@@ -1358,7 +1460,7 @@
 
 
 
-2010-07-23T14:49:43.832097Z
+2010-09-23T14:37:45.423771Z
 580f9a678b8f7f505a52b444d5f70dba
 2009-11-07T08:44:56.035544Z
 3013
@@ -1392,10 +1494,10 @@
 
 
 
-2010-07-23T14:49:43.832097Z
-78d1d6271620006360e9f5d2446520fc
-2010-06-20T19:30:51.675631Z
-3805
+2010-09-24T12:48:25.879729Z
+478bfd41fe3ea1d3f9d2c91b26ee7a62
+2010-09-14T19:02:25.847894Z
+4087
 edavis10
 has-props
 
@@ -1418,7 +1520,7 @@
 
 
 
-13614
+13631
 
 documents_controller_test.rb
 file
@@ -1426,7 +1528,7 @@
 
 
 
-2010-07-23T14:49:43.832097Z
+2010-09-23T14:37:45.383766Z
 6d6a011a4f7f17ccff7b514eac561ce8
 2010-06-19T22:17:34.496523Z
 3788
@@ -1454,13 +1556,47 @@
 
 4670
 
+files_controller_test.rb
+file
+
+
+
+
+2010-09-24T12:48:25.879729Z
+5d12ff23b3756ee66c539417f2d5dedc
+2010-09-14T16:24:07.840869Z
+4085
+edavis10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+2306
+
 repositories_darcs_controller_test.rb
 file
 
 
 
 
-2010-07-23T14:49:43.832097Z
+2010-09-23T14:37:45.423771Z
 8c2b79df7a048945eb57f12ca4e804aa
 2009-09-13T17:14:35.707881Z
 2887
@@ -1494,7 +1630,7 @@
 
 
 
-2010-07-23T14:49:43.832097Z
+2010-09-23T14:37:45.427769Z
 5e11aaeb4ee3d552c2668034c201d6e2
 2010-04-20T15:42:57.800422Z
 3686
@@ -1528,7 +1664,7 @@
 
 
 
-2010-08-25T15:27:52.770540Z
+2010-09-23T14:37:45.383766Z
 e649d3fb9fe2388f5e0c464529b2e42e
 2010-08-04T15:04:30.993800Z
 3913
@@ -1562,7 +1698,7 @@
 
 
 
-2010-08-25T15:27:52.770540Z
+2010-09-23T14:37:45.387766Z
 7bac137a145f14ca591811bb76d56bee
 2010-08-18T15:01:35.032314Z
 3946
@@ -1596,7 +1732,7 @@
 
 
 
-2010-07-23T14:49:43.832097Z
+2010-09-23T14:37:45.423771Z
 3a3e1acd6e8097c938879aca2284280b
 2010-06-20T16:08:26.745839Z
 3800
@@ -1630,7 +1766,7 @@
 
 
 
-2010-07-23T14:49:43.832097Z
+2010-09-23T14:37:45.387766Z
 fbfd116126fdb8c31552dbe76c070b5e
 2010-04-21T16:02:55.125733Z
 3687
@@ -1664,10 +1800,10 @@
 
 
 
-2010-07-23T14:49:43.832097Z
-288db8b6bff76a89b3030ed55d6b7063
-2010-04-20T15:42:57.800422Z
-3686
+2010-09-24T12:48:25.879729Z
+0ec41a16228288272bc26862cb87c358
+2010-09-17T15:55:08.377083Z
+4097
 edavis10
 has-props
 
@@ -1690,7 +1826,7 @@
 
 
 
-3708
+5035
 
 enumerations_controller_test.rb
 file
@@ -1698,7 +1834,7 @@
 
 
 
-2010-07-23T14:49:43.836097Z
+2010-09-23T14:37:45.383766Z
 a977083603a7f66240b9b9f93087bb13
 2009-09-13T17:14:35.707881Z
 2887
@@ -1732,7 +1868,7 @@
 
 
 
-2010-07-23T14:49:43.836097Z
+2010-09-23T14:37:45.383766Z
 5a2d553a517d649e9848805cb18abb4a
 2010-04-21T16:02:55.125733Z
 3687
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/functional/.svn/text-base/activities_controller_test.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -0,0 +1,87 @@
+require File.dirname(__FILE__) + '/../test_helper'
+
+class ActivitiesControllerTest < ActionController::TestCase
+  fixtures :all
+
+  def test_project_index
+    get :index, :id => 1, :with_subprojects => 0
+    assert_response :success
+    assert_template 'index'
+    assert_not_nil assigns(:events_by_day)
+    
+    assert_tag :tag => "h3", 
+               :content => /#{2.days.ago.to_date.day}/,
+               :sibling => { :tag => "dl",
+                 :child => { :tag => "dt",
+                   :attributes => { :class => /issue-edit/ },
+                   :child => { :tag => "a",
+                     :content => /(#{IssueStatus.find(2).name})/,
+                   }
+                 }
+               }
+  end
+  
+  def test_previous_project_index
+    get :index, :id => 1, :from => 3.days.ago.to_date
+    assert_response :success
+    assert_template 'index'
+    assert_not_nil assigns(:events_by_day)
+               
+    assert_tag :tag => "h3", 
+               :content => /#{3.day.ago.to_date.day}/,
+               :sibling => { :tag => "dl",
+                 :child => { :tag => "dt",
+                   :attributes => { :class => /issue/ },
+                   :child => { :tag => "a",
+                     :content => /#{Issue.find(1).subject}/,
+                   }
+                 }
+               }
+  end
+  
+  def test_global_index
+    get :index
+    assert_response :success
+    assert_template 'index'
+    assert_not_nil assigns(:events_by_day)
+    
+    assert_tag :tag => "h3", 
+               :content => /#{5.day.ago.to_date.day}/,
+               :sibling => { :tag => "dl",
+                 :child => { :tag => "dt",
+                   :attributes => { :class => /issue/ },
+                   :child => { :tag => "a",
+                     :content => /#{Issue.find(5).subject}/,
+                   }
+                 }
+               }
+  end
+  
+  def test_user_index
+    get :index, :user_id => 2
+    assert_response :success
+    assert_template 'index'
+    assert_not_nil assigns(:events_by_day)
+    
+    assert_tag :tag => "h3", 
+               :content => /#{3.day.ago.to_date.day}/,
+               :sibling => { :tag => "dl",
+                 :child => { :tag => "dt",
+                   :attributes => { :class => /issue/ },
+                   :child => { :tag => "a",
+                     :content => /#{Issue.find(1).subject}/,
+                   }
+                 }
+               }
+  end
+  
+  def test_index_atom_feed
+    get :index, :format => 'atom'
+    assert_response :success
+    assert_template 'common/feed.atom.rxml'
+    assert_tag :tag => 'entry', :child => {
+      :tag => 'link',
+      :attributes => {:href => 'http://test.host/issues/11'}}
+  end
+  
+end
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/functional/.svn/text-base/comments_controller_test.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -0,0 +1,57 @@
+# redMine - project management software
+# Copyright (C) 2006-2007  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.
+
+require File.dirname(__FILE__) + '/../test_helper'
+
+class CommentsControllerTest < ActionController::TestCase
+  fixtures :projects, :users, :roles, :members, :member_roles, :enabled_modules, :news, :comments
+  
+  def setup
+    User.current = nil
+  end
+  
+  def test_add_comment
+    @request.session[:user_id] = 2
+    post :create, :id => 1, :comment => { :comments => 'This is a test comment' }
+    assert_redirected_to 'news/1'
+    
+    comment = News.find(1).comments.find(:first, :order => 'created_on DESC')
+    assert_not_nil comment
+    assert_equal 'This is a test comment', comment.comments
+    assert_equal User.find(2), comment.author
+  end
+  
+  def test_empty_comment_should_not_be_added
+    @request.session[:user_id] = 2
+    assert_no_difference 'Comment.count' do
+      post :create, :id => 1, :comment => { :comments => '' }
+      assert_response :redirect
+      assert_redirected_to 'news/1'
+    end
+  end
+
+  def test_destroy_comment
+    comments_count = News.find(1).comments.size
+    @request.session[:user_id] = 2
+    delete :destroy, :id => 1, :comment_id => 2
+    assert_redirected_to 'news/1'
+    assert_nil Comment.find_by_id(2)
+    assert_equal comments_count - 1, News.find(1).comments.size
+  end
+  
+
+end
--- a/test/functional/.svn/text-base/context_menus_controller_test.rb.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/functional/.svn/text-base/context_menus_controller_test.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -12,7 +12,7 @@
                             :attributes => { :href => '/issues/1/edit',
                                              :class => 'icon-edit' }
     assert_tag :tag => 'a', :content => 'Closed',
-                            :attributes => { :href => '/issues/1/edit?issue%5Bstatus_id%5D=5',
+                            :attributes => { :href => '/issues/bulk_edit?ids%5B%5D=1&amp;issue%5Bstatus_id%5D=5',
                                              :class => '' }
     assert_tag :tag => 'a', :content => 'Immediate',
                             :attributes => { :href => '/issues/bulk_edit?ids%5B%5D=1&amp;issue%5Bpriority_id%5D=8',
@@ -59,6 +59,9 @@
     assert_tag :tag => 'a', :content => 'Edit',
                             :attributes => { :href => '/issues/bulk_edit?ids%5B%5D=1&amp;ids%5B%5D=2',
                                              :class => 'icon-edit' }
+    assert_tag :tag => 'a', :content => 'Closed',
+                            :attributes => { :href => '/issues/bulk_edit?ids%5B%5D=1&amp;ids%5B%5D=2&amp;issue%5Bstatus_id%5D=5',
+                                             :class => '' }
     assert_tag :tag => 'a', :content => 'Immediate',
                             :attributes => { :href => '/issues/bulk_edit?ids%5B%5D=1&amp;ids%5B%5D=2&amp;issue%5Bpriority_id%5D=8',
                                              :class => '' }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/functional/.svn/text-base/files_controller_test.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -0,0 +1,67 @@
+require File.dirname(__FILE__) + '/../test_helper'
+
+class FilesControllerTest < ActionController::TestCase
+  fixtures :all
+  
+  def setup
+    @controller = FilesController.new
+    @request    = ActionController::TestRequest.new
+    @response   = ActionController::TestResponse.new
+    @request.session[:user_id] = nil
+    Setting.default_language = 'en'
+  end
+
+  def test_index
+    get :index, :project_id => 1
+    assert_response :success
+    assert_template 'index'
+    assert_not_nil assigns(:containers)
+    
+    # file attached to the project
+    assert_tag :a, :content => 'project_file.zip',
+                   :attributes => { :href => '/attachments/download/8/project_file.zip' }
+    
+    # file attached to a project's version
+    assert_tag :a, :content => 'version_file.zip',
+                   :attributes => { :href => '/attachments/download/9/version_file.zip' }
+  end
+
+  def test_create_file
+    set_tmp_attachments_directory
+    @request.session[:user_id] = 2
+    Setting.notified_events = ['file_added']
+    ActionMailer::Base.deliveries.clear
+    
+    assert_difference 'Attachment.count' do
+      post :create, :project_id => 1, :version_id => '',
+           :attachments => {'1' => {'file' => uploaded_test_file('testfile.txt', 'text/plain')}}
+      assert_response :redirect
+    end
+    assert_redirected_to 'projects/ecookbook/files'
+    a = Attachment.find(:first, :order => 'created_on DESC')
+    assert_equal 'testfile.txt', a.filename
+    assert_equal Project.find(1), a.container
+
+    mail = ActionMailer::Base.deliveries.last
+    assert_kind_of TMail::Mail, mail
+    assert_equal "[eCookbook] New file", mail.subject
+    assert mail.body.include?('testfile.txt')
+  end
+  
+  def test_create_version_file
+    set_tmp_attachments_directory
+    @request.session[:user_id] = 2
+    Setting.notified_events = ['file_added']
+    
+    assert_difference 'Attachment.count' do
+      post :create, :project_id => 1, :version_id => '2',
+           :attachments => {'1' => {'file' => uploaded_test_file('testfile.txt', 'text/plain')}}
+      assert_response :redirect
+    end
+    assert_redirected_to 'projects/ecookbook/files'
+    a = Attachment.find(:first, :order => 'created_on DESC')
+    assert_equal 'testfile.txt', a.filename
+    assert_equal Version.find(2), a.container
+  end
+  
+end
--- a/test/functional/.svn/text-base/gantts_controller_test.rb.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/functional/.svn/text-base/gantts_controller_test.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -5,20 +5,20 @@
 
   context "#gantt" do
     should "work" do
+      i2 = Issue.find(2)
+      i2.update_attribute(:due_date, 1.month.from_now)
+      
       get :show, :project_id => 1
       assert_response :success
       assert_template 'show.html.erb'
       assert_not_nil assigns(:gantt)
-      events = assigns(:gantt).events
-      assert_not_nil events
       # Issue with start and due dates
       i = Issue.find(1)
       assert_not_nil i.due_date
-      assert events.include?(Issue.find(1))
-      # Issue with without due date but targeted to a version with date
+      assert_select "div a.issue", /##{i.id}/
+      # Issue with on a targeted version should not be in the events but loaded in the html
       i = Issue.find(2)
-      assert_nil i.due_date
-      assert events.include?(i)
+      assert_select "div a.issue", /##{i.id}/
     end
 
     should "work cross project" do
@@ -26,8 +26,8 @@
       assert_response :success
       assert_template 'show.html.erb'
       assert_not_nil assigns(:gantt)
-      events = assigns(:gantt).events
-      assert_not_nil events
+      assert_not_nil assigns(:gantt).query
+      assert_nil assigns(:gantt).project
     end
 
     should "export to pdf" do
--- a/test/functional/.svn/text-base/issues_controller_test.rb.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/functional/.svn/text-base/issues_controller_test.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -405,7 +405,8 @@
                           :subject => 'This is first issue',
                           :priority_id => 5},
                :continue => ''
-    assert_redirected_to :controller => 'issues', :action => 'new', :issue => {:tracker_id => 3}
+    assert_redirected_to :controller => 'issues', :action => 'new', :project_id => 'ecookbook',
+                         :issue => {:tracker_id => 3}
   end
   
   def test_post_create_without_custom_fields_param
--- a/test/functional/.svn/text-base/news_controller_test.rb.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/functional/.svn/text-base/news_controller_test.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -65,12 +65,12 @@
     assert_template 'new'
   end
   
-  def test_post_new
+  def test_post_create
     ActionMailer::Base.deliveries.clear
     Setting.notified_events << 'news_added'
 
     @request.session[:user_id] = 2
-    post :new, :project_id => 1, :news => { :title => 'NewsControllerTest',
+    post :create, :project_id => 1, :news => { :title => 'NewsControllerTest',
                                             :description => 'This is the description',
                                             :summary => '' }
     assert_redirected_to 'projects/ecookbook/news'
@@ -90,17 +90,17 @@
     assert_template 'edit'
   end
   
-  def test_post_edit
+  def test_put_update
     @request.session[:user_id] = 2
-    post :edit, :id => 1, :news => { :description => 'Description changed by test_post_edit' }
+    put :update, :id => 1, :news => { :description => 'Description changed by test_post_edit' }
     assert_redirected_to 'news/1'
     news = News.find(1)
     assert_equal 'Description changed by test_post_edit', news.description
   end
 
-  def test_post_new_with_validation_failure
+  def test_post_create_with_validation_failure
     @request.session[:user_id] = 2
-    post :new, :project_id => 1, :news => { :title => '',
+    post :create, :project_id => 1, :news => { :title => '',
                                             :description => 'This is the description',
                                             :summary => '' }
     assert_response :success
@@ -111,35 +111,6 @@
                               :content => /1 error/
   end
   
-  def test_add_comment
-    @request.session[:user_id] = 2
-    post :add_comment, :id => 1, :comment => { :comments => 'This is a NewsControllerTest comment' }
-    assert_redirected_to 'news/1'
-    
-    comment = News.find(1).comments.find(:first, :order => 'created_on DESC')
-    assert_not_nil comment
-    assert_equal 'This is a NewsControllerTest comment', comment.comments
-    assert_equal User.find(2), comment.author
-  end
-  
-  def test_empty_comment_should_not_be_added
-    @request.session[:user_id] = 2
-    assert_no_difference 'Comment.count' do
-      post :add_comment, :id => 1, :comment => { :comments => '' }
-      assert_response :success
-      assert_template 'show'
-    end
-  end
-  
-  def test_destroy_comment
-    comments_count = News.find(1).comments.size
-    @request.session[:user_id] = 2
-    post :destroy_comment, :id => 1, :comment_id => 2
-    assert_redirected_to 'news/1'
-    assert_nil Comment.find_by_id(2)
-    assert_equal comments_count - 1, News.find(1).comments.size
-  end
-  
   def test_destroy
     @request.session[:user_id] = 2
     post :destroy, :id => 1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/functional/.svn/text-base/project_enumerations_controller_test.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -0,0 +1,189 @@
+require File.dirname(__FILE__) + '/../test_helper'
+
+class ProjectEnumerationsControllerTest < ActionController::TestCase
+  fixtures :all
+  
+  def setup
+    @request.session[:user_id] = nil
+    Setting.default_language = 'en'
+  end
+
+  def test_update_to_override_system_activities
+    @request.session[:user_id] = 2 # manager
+    billable_field = TimeEntryActivityCustomField.find_by_name("Billable")
+
+    put :update, :project_id => 1, :enumerations => {
+      "9"=> {"parent_id"=>"9", "custom_field_values"=>{"7" => "1"}, "active"=>"0"}, # Design, De-activate
+      "10"=> {"parent_id"=>"10", "custom_field_values"=>{"7"=>"0"}, "active"=>"1"}, # Development, Change custom value
+      "14"=>{"parent_id"=>"14", "custom_field_values"=>{"7"=>"1"}, "active"=>"1"}, # Inactive Activity, Activate with custom value
+      "11"=>{"parent_id"=>"11", "custom_field_values"=>{"7"=>"1"}, "active"=>"1"} # QA, no changes
+    }
+
+    assert_response :redirect
+    assert_redirected_to 'projects/ecookbook/settings/activities'
+
+    # Created project specific activities...
+    project = Project.find('ecookbook')
+
+    # ... Design
+    design = project.time_entry_activities.find_by_name("Design")
+    assert design, "Project activity not found"
+
+    assert_equal 9, design.parent_id # Relate to the system activity
+    assert_not_equal design.parent.id, design.id # Different records
+    assert_equal design.parent.name, design.name # Same name
+    assert !design.active?
+
+    # ... Development
+    development = project.time_entry_activities.find_by_name("Development")
+    assert development, "Project activity not found"
+
+    assert_equal 10, development.parent_id # Relate to the system activity
+    assert_not_equal development.parent.id, development.id # Different records
+    assert_equal development.parent.name, development.name # Same name
+    assert development.active?
+    assert_equal "0", development.custom_value_for(billable_field).value
+
+    # ... Inactive Activity
+    previously_inactive = project.time_entry_activities.find_by_name("Inactive Activity")
+    assert previously_inactive, "Project activity not found"
+
+    assert_equal 14, previously_inactive.parent_id # Relate to the system activity
+    assert_not_equal previously_inactive.parent.id, previously_inactive.id # Different records
+    assert_equal previously_inactive.parent.name, previously_inactive.name # Same name
+    assert previously_inactive.active?
+    assert_equal "1", previously_inactive.custom_value_for(billable_field).value
+
+    # ... QA
+    assert_equal nil, project.time_entry_activities.find_by_name("QA"), "Custom QA activity created when it wasn't modified"
+  end
+
+  def test_update_will_update_project_specific_activities
+    @request.session[:user_id] = 2 # manager
+
+    project_activity = TimeEntryActivity.new({
+                                               :name => 'Project Specific',
+                                               :parent => TimeEntryActivity.find(:first),
+                                               :project => Project.find(1),
+                                               :active => true
+                                             })
+    assert project_activity.save
+    project_activity_two = TimeEntryActivity.new({
+                                                   :name => 'Project Specific Two',
+                                                   :parent => TimeEntryActivity.find(:last),
+                                                   :project => Project.find(1),
+                                                   :active => true
+                                                 })
+    assert project_activity_two.save
+
+    
+    put :update, :project_id => 1, :enumerations => {
+      project_activity.id => {"custom_field_values"=>{"7" => "1"}, "active"=>"0"}, # De-activate
+      project_activity_two.id => {"custom_field_values"=>{"7" => "1"}, "active"=>"0"} # De-activate
+    }
+
+    assert_response :redirect
+    assert_redirected_to 'projects/ecookbook/settings/activities'
+
+    # Created project specific activities...
+    project = Project.find('ecookbook')
+    assert_equal 2, project.time_entry_activities.count
+
+    activity_one = project.time_entry_activities.find_by_name(project_activity.name)
+    assert activity_one, "Project activity not found"
+    assert_equal project_activity.id, activity_one.id
+    assert !activity_one.active?
+
+    activity_two = project.time_entry_activities.find_by_name(project_activity_two.name)
+    assert activity_two, "Project activity not found"
+    assert_equal project_activity_two.id, activity_two.id
+    assert !activity_two.active?
+  end
+
+  def test_update_when_creating_new_activities_will_convert_existing_data
+    assert_equal 3, TimeEntry.find_all_by_activity_id_and_project_id(9, 1).size
+    
+    @request.session[:user_id] = 2 # manager
+    put :update, :project_id => 1, :enumerations => {
+      "9"=> {"parent_id"=>"9", "custom_field_values"=>{"7" => "1"}, "active"=>"0"} # Design, De-activate
+    }
+    assert_response :redirect
+
+    # No more TimeEntries using the system activity
+    assert_equal 0, TimeEntry.find_all_by_activity_id_and_project_id(9, 1).size, "Time Entries still assigned to system activities"
+    # All TimeEntries using project activity
+    project_specific_activity = TimeEntryActivity.find_by_parent_id_and_project_id(9, 1)
+    assert_equal 3, TimeEntry.find_all_by_activity_id_and_project_id(project_specific_activity.id, 1).size, "No Time Entries assigned to the project activity"
+  end
+
+  def test_update_when_creating_new_activities_will_not_convert_existing_data_if_an_exception_is_raised
+    # TODO: Need to cause an exception on create but these tests
+    # aren't setup for mocking.  Just create a record now so the
+    # second one is a dupicate
+    parent = TimeEntryActivity.find(9)
+    TimeEntryActivity.create!({:name => parent.name, :project_id => 1, :position => parent.position, :active => true})
+    TimeEntry.create!({:project_id => 1, :hours => 1.0, :user => User.find(1), :issue_id => 3, :activity_id => 10, :spent_on => '2009-01-01'})
+
+    assert_equal 3, TimeEntry.find_all_by_activity_id_and_project_id(9, 1).size
+    assert_equal 1, TimeEntry.find_all_by_activity_id_and_project_id(10, 1).size
+    
+    @request.session[:user_id] = 2 # manager
+    put :update, :project_id => 1, :enumerations => {
+      "9"=> {"parent_id"=>"9", "custom_field_values"=>{"7" => "1"}, "active"=>"0"}, # Design
+      "10"=> {"parent_id"=>"10", "custom_field_values"=>{"7"=>"0"}, "active"=>"1"} # Development, Change custom value
+    }
+    assert_response :redirect
+
+    # TimeEntries shouldn't have been reassigned on the failed record
+    assert_equal 3, TimeEntry.find_all_by_activity_id_and_project_id(9, 1).size, "Time Entries are not assigned to system activities"
+    # TimeEntries shouldn't have been reassigned on the saved record either
+    assert_equal 1, TimeEntry.find_all_by_activity_id_and_project_id(10, 1).size, "Time Entries are not assigned to system activities"
+  end
+
+  def test_destroy
+    @request.session[:user_id] = 2 # manager
+    project_activity = TimeEntryActivity.new({
+                                               :name => 'Project Specific',
+                                               :parent => TimeEntryActivity.find(:first),
+                                               :project => Project.find(1),
+                                               :active => true
+                                             })
+    assert project_activity.save
+    project_activity_two = TimeEntryActivity.new({
+                                                   :name => 'Project Specific Two',
+                                                   :parent => TimeEntryActivity.find(:last),
+                                                   :project => Project.find(1),
+                                                   :active => true
+                                                 })
+    assert project_activity_two.save
+
+    delete :destroy, :project_id => 1
+    assert_response :redirect
+    assert_redirected_to 'projects/ecookbook/settings/activities'
+
+    assert_nil TimeEntryActivity.find_by_id(project_activity.id)
+    assert_nil TimeEntryActivity.find_by_id(project_activity_two.id)
+  end
+  
+  def test_destroy_should_reassign_time_entries_back_to_the_system_activity
+    @request.session[:user_id] = 2 # manager
+    project_activity = TimeEntryActivity.new({
+                                               :name => 'Project Specific Design',
+                                               :parent => TimeEntryActivity.find(9),
+                                               :project => Project.find(1),
+                                               :active => true
+                                             })
+    assert project_activity.save
+    assert TimeEntry.update_all("activity_id = '#{project_activity.id}'", ["project_id = ? AND activity_id = ?", 1, 9])
+    assert 3, TimeEntry.find_all_by_activity_id_and_project_id(project_activity.id, 1).size
+    
+    delete :destroy, :project_id => 1
+    assert_response :redirect
+    assert_redirected_to 'projects/ecookbook/settings/activities'
+
+    assert_nil TimeEntryActivity.find_by_id(project_activity.id)
+    assert_equal 0, TimeEntry.find_all_by_activity_id_and_project_id(project_activity.id, 1).size, "TimeEntries still assigned to project specific activity"
+    assert_equal 3, TimeEntry.find_all_by_activity_id_and_project_id(9, 1).size, "TimeEntries still assigned to project specific activity"
+  end
+
+end
--- a/test/functional/.svn/text-base/projects_controller_test.rb.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/functional/.svn/text-base/projects_controller_test.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -87,20 +87,64 @@
     end 
   end
   
-  context "#add" do
+  context "#new" do
     context "by admin user" do
       setup do
         @request.session[:user_id] = 1
       end
       
       should "accept get" do
-        get :add
+        get :new
         assert_response :success
-        assert_template 'add'
+        assert_template 'new'
+      end
+
+    end
+
+    context "by non-admin user with add_project permission" do
+      setup do
+        Role.non_member.add_permission! :add_project
+        @request.session[:user_id] = 9
+      end
+
+      should "accept get" do
+        get :new
+        assert_response :success
+        assert_template 'new'
+        assert_no_tag :select, :attributes => {:name => 'project[parent_id]'}
+      end
+    end
+
+    context "by non-admin user with add_subprojects permission" do
+      setup do
+        Role.find(1).remove_permission! :add_project
+        Role.find(1).add_permission! :add_subprojects
+        @request.session[:user_id] = 2
       end
       
-      should "accept post" do
-        post :add, :project => { :name => "blog", 
+      should "accept get" do
+        get :new, :parent_id => 'ecookbook'
+        assert_response :success
+        assert_template 'new'
+        # parent project selected
+        assert_tag :select, :attributes => {:name => 'project[parent_id]'},
+                            :child => {:tag => 'option', :attributes => {:value => '1', :selected => 'selected'}}
+        # no empty value
+        assert_no_tag :select, :attributes => {:name => 'project[parent_id]'},
+                               :child => {:tag => 'option', :attributes => {:value => ''}}
+      end
+    end
+    
+  end
+
+  context "POST :create" do
+    context "by admin user" do
+      setup do
+        @request.session[:user_id] = 1
+      end
+      
+      should "create a new project" do
+        post :create, :project => { :name => "blog", 
                                  :description => "weblog",
                                  :identifier => "blog",
                                  :is_public => 1,
@@ -115,8 +159,8 @@
         assert_nil project.parent
       end
       
-      should "accept post with parent" do
-        post :add, :project => { :name => "blog", 
+      should "create a new subproject" do
+        post :create, :project => { :name => "blog", 
                                  :description => "weblog",
                                  :identifier => "blog",
                                  :is_public => 1,
@@ -137,15 +181,8 @@
         @request.session[:user_id] = 9
       end
       
-      should "accept get" do
-        get :add
-        assert_response :success
-        assert_template 'add'
-        assert_no_tag :select, :attributes => {:name => 'project[parent_id]'}
-      end
-      
-      should "accept post" do
-        post :add, :project => { :name => "blog", 
+      should "accept create a Project" do
+        post :create, :project => { :name => "blog", 
                                  :description => "weblog",
                                  :identifier => "blog",
                                  :is_public => 1,
@@ -166,7 +203,7 @@
       
       should "fail with parent_id" do
         assert_no_difference 'Project.count' do
-          post :add, :project => { :name => "blog", 
+          post :create, :project => { :name => "blog", 
                                    :description => "weblog",
                                    :identifier => "blog",
                                    :is_public => 1,
@@ -188,20 +225,8 @@
         @request.session[:user_id] = 2
       end
       
-      should "accept get" do
-        get :add, :parent_id => 'ecookbook'
-        assert_response :success
-        assert_template 'add'
-        # parent project selected
-        assert_tag :select, :attributes => {:name => 'project[parent_id]'},
-                            :child => {:tag => 'option', :attributes => {:value => '1', :selected => 'selected'}}
-        # no empty value
-        assert_no_tag :select, :attributes => {:name => 'project[parent_id]'},
-                               :child => {:tag => 'option', :attributes => {:value => ''}}
-      end
-      
-      should "accept post with parent_id" do
-        post :add, :project => { :name => "blog", 
+      should "create a project with a parent_id" do
+        post :create, :project => { :name => "blog", 
                                  :description => "weblog",
                                  :identifier => "blog",
                                  :is_public => 1,
@@ -214,7 +239,7 @@
       
       should "fail without parent_id" do
         assert_no_difference 'Project.count' do
-          post :add, :project => { :name => "blog", 
+          post :create, :project => { :name => "blog", 
                                    :description => "weblog",
                                    :identifier => "blog",
                                    :is_public => 1,
@@ -230,7 +255,7 @@
       should "fail with unauthorized parent_id" do
         assert !User.find(2).member_of?(Project.find(6))
         assert_no_difference 'Project.count' do
-          post :add, :project => { :name => "blog", 
+          post :create, :project => { :name => "blog", 
                                    :description => "weblog",
                                    :identifier => "blog",
                                    :is_public => 1,
@@ -293,9 +318,9 @@
     assert_template 'settings'
   end
   
-  def test_edit
+  def test_update
     @request.session[:user_id] = 2 # manager
-    post :edit, :id => 1, :project => {:name => 'Test changed name',
+    post :update, :id => 1, :project => {:name => 'Test changed name',
                                        :issue_custom_field_ids => ['']}
     assert_redirected_to 'projects/ecookbook/settings'
     project = Project.find(1)
@@ -317,170 +342,6 @@
     assert_nil Project.find_by_id(1)
   end
   
-  def test_add_file
-    set_tmp_attachments_directory
-    @request.session[:user_id] = 2
-    Setting.notified_events = ['file_added']
-    ActionMailer::Base.deliveries.clear
-    
-    assert_difference 'Attachment.count' do
-      post :add_file, :id => 1, :version_id => '',
-           :attachments => {'1' => {'file' => uploaded_test_file('testfile.txt', 'text/plain')}}
-    end
-    assert_redirected_to 'projects/ecookbook/files'
-    a = Attachment.find(:first, :order => 'created_on DESC')
-    assert_equal 'testfile.txt', a.filename
-    assert_equal Project.find(1), a.container
-
-    mail = ActionMailer::Base.deliveries.last
-    assert_kind_of TMail::Mail, mail
-    assert_equal "[eCookbook] New file", mail.subject
-    assert mail.body.include?('testfile.txt')
-  end
-  
-  def test_add_version_file
-    set_tmp_attachments_directory
-    @request.session[:user_id] = 2
-    Setting.notified_events = ['file_added']
-    
-    assert_difference 'Attachment.count' do
-      post :add_file, :id => 1, :version_id => '2',
-           :attachments => {'1' => {'file' => uploaded_test_file('testfile.txt', 'text/plain')}}
-    end
-    assert_redirected_to 'projects/ecookbook/files'
-    a = Attachment.find(:first, :order => 'created_on DESC')
-    assert_equal 'testfile.txt', a.filename
-    assert_equal Version.find(2), a.container
-  end
-  
-  def test_list_files
-    get :list_files, :id => 1
-    assert_response :success
-    assert_template 'list_files'
-    assert_not_nil assigns(:containers)
-    
-    # file attached to the project
-    assert_tag :a, :content => 'project_file.zip',
-                   :attributes => { :href => '/attachments/download/8/project_file.zip' }
-    
-    # file attached to a project's version
-    assert_tag :a, :content => 'version_file.zip',
-                   :attributes => { :href => '/attachments/download/9/version_file.zip' }
-  end
-
-  def test_roadmap
-    get :roadmap, :id => 1
-    assert_response :success
-    assert_template 'roadmap'
-    assert_not_nil assigns(:versions)
-    # Version with no date set appears
-    assert assigns(:versions).include?(Version.find(3))
-    # Completed version doesn't appear
-    assert !assigns(:versions).include?(Version.find(1))
-  end
-  
-  def test_roadmap_with_completed_versions
-    get :roadmap, :id => 1, :completed => 1
-    assert_response :success
-    assert_template 'roadmap'
-    assert_not_nil assigns(:versions)
-    # Version with no date set appears
-    assert assigns(:versions).include?(Version.find(3))
-    # Completed version appears
-    assert assigns(:versions).include?(Version.find(1))
-  end
-
-  def test_roadmap_showing_subprojects_versions
-    @subproject_version = Version.generate!(:project => Project.find(3))
-    get :roadmap, :id => 1, :with_subprojects => 1
-    assert_response :success
-    assert_template 'roadmap'
-    assert_not_nil assigns(:versions)
-
-    assert assigns(:versions).include?(Version.find(4)), "Shared version not found"
-    assert assigns(:versions).include?(@subproject_version), "Subproject version not found"
-  end
-  def test_project_activity
-    get :activity, :id => 1, :with_subprojects => 0
-    assert_response :success
-    assert_template 'activity'
-    assert_not_nil assigns(:events_by_day)
-    
-    assert_tag :tag => "h3", 
-               :content => /#{2.days.ago.to_date.day}/,
-               :sibling => { :tag => "dl",
-                 :child => { :tag => "dt",
-                   :attributes => { :class => /issue-edit/ },
-                   :child => { :tag => "a",
-                     :content => /(#{IssueStatus.find(2).name})/,
-                   }
-                 }
-               }
-  end
-  
-  def test_previous_project_activity
-    get :activity, :id => 1, :from => 3.days.ago.to_date
-    assert_response :success
-    assert_template 'activity'
-    assert_not_nil assigns(:events_by_day)
-               
-    assert_tag :tag => "h3", 
-               :content => /#{3.day.ago.to_date.day}/,
-               :sibling => { :tag => "dl",
-                 :child => { :tag => "dt",
-                   :attributes => { :class => /issue/ },
-                   :child => { :tag => "a",
-                     :content => /#{Issue.find(1).subject}/,
-                   }
-                 }
-               }
-  end
-  
-  def test_global_activity
-    get :activity
-    assert_response :success
-    assert_template 'activity'
-    assert_not_nil assigns(:events_by_day)
-    
-    assert_tag :tag => "h3", 
-               :content => /#{5.day.ago.to_date.day}/,
-               :sibling => { :tag => "dl",
-                 :child => { :tag => "dt",
-                   :attributes => { :class => /issue/ },
-                   :child => { :tag => "a",
-                     :content => /#{Issue.find(5).subject}/,
-                   }
-                 }
-               }
-  end
-  
-  def test_user_activity
-    get :activity, :user_id => 2
-    assert_response :success
-    assert_template 'activity'
-    assert_not_nil assigns(:events_by_day)
-    
-    assert_tag :tag => "h3", 
-               :content => /#{3.day.ago.to_date.day}/,
-               :sibling => { :tag => "dl",
-                 :child => { :tag => "dt",
-                   :attributes => { :class => /issue/ },
-                   :child => { :tag => "a",
-                     :content => /#{Issue.find(1).subject}/,
-                   }
-                 }
-               }
-  end
-  
-  def test_activity_atom_feed
-    get :activity, :format => 'atom'
-    assert_response :success
-    assert_template 'common/feed.atom.rxml'
-    assert_tag :tag => 'entry', :child => {
-      :tag => 'link',
-      :attributes => {:href => 'http://test.host/issues/11'}}
-  end
-  
   def test_archive
     @request.session[:user_id] = 1 # admin
     post :archive, :id => 1
@@ -545,184 +406,6 @@
     assert_template 'show'
   end
 
-  def test_reset_activities
-    @request.session[:user_id] = 2 # manager
-    project_activity = TimeEntryActivity.new({
-                                               :name => 'Project Specific',
-                                               :parent => TimeEntryActivity.find(:first),
-                                               :project => Project.find(1),
-                                               :active => true
-                                             })
-    assert project_activity.save
-    project_activity_two = TimeEntryActivity.new({
-                                                   :name => 'Project Specific Two',
-                                                   :parent => TimeEntryActivity.find(:last),
-                                                   :project => Project.find(1),
-                                                   :active => true
-                                                 })
-    assert project_activity_two.save
-
-    delete :reset_activities, :id => 1
-    assert_response :redirect
-    assert_redirected_to 'projects/ecookbook/settings/activities'
-
-    assert_nil TimeEntryActivity.find_by_id(project_activity.id)
-    assert_nil TimeEntryActivity.find_by_id(project_activity_two.id)
-  end
-  
-  def test_reset_activities_should_reassign_time_entries_back_to_the_system_activity
-    @request.session[:user_id] = 2 # manager
-    project_activity = TimeEntryActivity.new({
-                                               :name => 'Project Specific Design',
-                                               :parent => TimeEntryActivity.find(9),
-                                               :project => Project.find(1),
-                                               :active => true
-                                             })
-    assert project_activity.save
-    assert TimeEntry.update_all("activity_id = '#{project_activity.id}'", ["project_id = ? AND activity_id = ?", 1, 9])
-    assert 3, TimeEntry.find_all_by_activity_id_and_project_id(project_activity.id, 1).size
-    
-    delete :reset_activities, :id => 1
-    assert_response :redirect
-    assert_redirected_to 'projects/ecookbook/settings/activities'
-
-    assert_nil TimeEntryActivity.find_by_id(project_activity.id)
-    assert_equal 0, TimeEntry.find_all_by_activity_id_and_project_id(project_activity.id, 1).size, "TimeEntries still assigned to project specific activity"
-    assert_equal 3, TimeEntry.find_all_by_activity_id_and_project_id(9, 1).size, "TimeEntries still assigned to project specific activity"
-  end
-  
-  def test_save_activities_to_override_system_activities
-    @request.session[:user_id] = 2 # manager
-    billable_field = TimeEntryActivityCustomField.find_by_name("Billable")
-
-    post :save_activities, :id => 1, :enumerations => {
-      "9"=> {"parent_id"=>"9", "custom_field_values"=>{"7" => "1"}, "active"=>"0"}, # Design, De-activate
-      "10"=> {"parent_id"=>"10", "custom_field_values"=>{"7"=>"0"}, "active"=>"1"}, # Development, Change custom value
-      "14"=>{"parent_id"=>"14", "custom_field_values"=>{"7"=>"1"}, "active"=>"1"}, # Inactive Activity, Activate with custom value
-      "11"=>{"parent_id"=>"11", "custom_field_values"=>{"7"=>"1"}, "active"=>"1"} # QA, no changes
-    }
-
-    assert_response :redirect
-    assert_redirected_to 'projects/ecookbook/settings/activities'
-
-    # Created project specific activities...
-    project = Project.find('ecookbook')
-
-    # ... Design
-    design = project.time_entry_activities.find_by_name("Design")
-    assert design, "Project activity not found"
-
-    assert_equal 9, design.parent_id # Relate to the system activity
-    assert_not_equal design.parent.id, design.id # Different records
-    assert_equal design.parent.name, design.name # Same name
-    assert !design.active?
-
-    # ... Development
-    development = project.time_entry_activities.find_by_name("Development")
-    assert development, "Project activity not found"
-
-    assert_equal 10, development.parent_id # Relate to the system activity
-    assert_not_equal development.parent.id, development.id # Different records
-    assert_equal development.parent.name, development.name # Same name
-    assert development.active?
-    assert_equal "0", development.custom_value_for(billable_field).value
-
-    # ... Inactive Activity
-    previously_inactive = project.time_entry_activities.find_by_name("Inactive Activity")
-    assert previously_inactive, "Project activity not found"
-
-    assert_equal 14, previously_inactive.parent_id # Relate to the system activity
-    assert_not_equal previously_inactive.parent.id, previously_inactive.id # Different records
-    assert_equal previously_inactive.parent.name, previously_inactive.name # Same name
-    assert previously_inactive.active?
-    assert_equal "1", previously_inactive.custom_value_for(billable_field).value
-
-    # ... QA
-    assert_equal nil, project.time_entry_activities.find_by_name("QA"), "Custom QA activity created when it wasn't modified"
-  end
-
-  def test_save_activities_will_update_project_specific_activities
-    @request.session[:user_id] = 2 # manager
-
-    project_activity = TimeEntryActivity.new({
-                                               :name => 'Project Specific',
-                                               :parent => TimeEntryActivity.find(:first),
-                                               :project => Project.find(1),
-                                               :active => true
-                                             })
-    assert project_activity.save
-    project_activity_two = TimeEntryActivity.new({
-                                                   :name => 'Project Specific Two',
-                                                   :parent => TimeEntryActivity.find(:last),
-                                                   :project => Project.find(1),
-                                                   :active => true
-                                                 })
-    assert project_activity_two.save
-
-    
-    post :save_activities, :id => 1, :enumerations => {
-      project_activity.id => {"custom_field_values"=>{"7" => "1"}, "active"=>"0"}, # De-activate
-      project_activity_two.id => {"custom_field_values"=>{"7" => "1"}, "active"=>"0"} # De-activate
-    }
-
-    assert_response :redirect
-    assert_redirected_to 'projects/ecookbook/settings/activities'
-
-    # Created project specific activities...
-    project = Project.find('ecookbook')
-    assert_equal 2, project.time_entry_activities.count
-
-    activity_one = project.time_entry_activities.find_by_name(project_activity.name)
-    assert activity_one, "Project activity not found"
-    assert_equal project_activity.id, activity_one.id
-    assert !activity_one.active?
-
-    activity_two = project.time_entry_activities.find_by_name(project_activity_two.name)
-    assert activity_two, "Project activity not found"
-    assert_equal project_activity_two.id, activity_two.id
-    assert !activity_two.active?
-  end
-
-  def test_save_activities_when_creating_new_activities_will_convert_existing_data
-    assert_equal 3, TimeEntry.find_all_by_activity_id_and_project_id(9, 1).size
-    
-    @request.session[:user_id] = 2 # manager
-    post :save_activities, :id => 1, :enumerations => {
-      "9"=> {"parent_id"=>"9", "custom_field_values"=>{"7" => "1"}, "active"=>"0"} # Design, De-activate
-    }
-    assert_response :redirect
-
-    # No more TimeEntries using the system activity
-    assert_equal 0, TimeEntry.find_all_by_activity_id_and_project_id(9, 1).size, "Time Entries still assigned to system activities"
-    # All TimeEntries using project activity
-    project_specific_activity = TimeEntryActivity.find_by_parent_id_and_project_id(9, 1)
-    assert_equal 3, TimeEntry.find_all_by_activity_id_and_project_id(project_specific_activity.id, 1).size, "No Time Entries assigned to the project activity"
-  end
-
-  def test_save_activities_when_creating_new_activities_will_not_convert_existing_data_if_an_exception_is_raised
-    # TODO: Need to cause an exception on create but these tests
-    # aren't setup for mocking.  Just create a record now so the
-    # second one is a dupicate
-    parent = TimeEntryActivity.find(9)
-    TimeEntryActivity.create!({:name => parent.name, :project_id => 1, :position => parent.position, :active => true})
-    TimeEntry.create!({:project_id => 1, :hours => 1.0, :user => User.find(1), :issue_id => 3, :activity_id => 10, :spent_on => '2009-01-01'})
-
-    assert_equal 3, TimeEntry.find_all_by_activity_id_and_project_id(9, 1).size
-    assert_equal 1, TimeEntry.find_all_by_activity_id_and_project_id(10, 1).size
-    
-    @request.session[:user_id] = 2 # manager
-    post :save_activities, :id => 1, :enumerations => {
-      "9"=> {"parent_id"=>"9", "custom_field_values"=>{"7" => "1"}, "active"=>"0"}, # Design
-      "10"=> {"parent_id"=>"10", "custom_field_values"=>{"7"=>"0"}, "active"=>"1"} # Development, Change custom value
-    }
-    assert_response :redirect
-
-    # TimeEntries shouldn't have been reassigned on the failed record
-    assert_equal 3, TimeEntry.find_all_by_activity_id_and_project_id(9, 1).size, "Time Entries are not assigned to system activities"
-    # TimeEntries shouldn't have been reassigned on the saved record either
-    assert_equal 1, TimeEntry.find_all_by_activity_id_and_project_id(10, 1).size, "Time Entries are not assigned to system activities"
-  end
-
   # A hook that is manually registered later
   class ProjectBasedTemplate < Redmine::Hook::ViewListener
     def view_layouts_base_html_head(context)
--- a/test/functional/.svn/text-base/timelog_controller_test.rb.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/functional/.svn/text-base/timelog_controller_test.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -283,7 +283,7 @@
     assert_not_nil assigns(:total_hours)
     assert_equal "162.90", "%.2f" % assigns(:total_hours)
     # display all time by default
-    assert_equal '2007-03-11'.to_date, assigns(:from)
+    assert_equal '2007-03-12'.to_date, assigns(:from)
     assert_equal '2007-04-22'.to_date, assigns(:to)
   end
   
@@ -325,8 +325,8 @@
     assert_equal 2, assigns(:entries).size
     assert_not_nil assigns(:total_hours)
     assert_equal 154.25, assigns(:total_hours)
-    # display all time by default
-    assert_equal '2007-03-11'.to_date, assigns(:from)
+    # display all time based on what's been logged
+    assert_equal '2007-03-12'.to_date, assigns(:from)
     assert_equal '2007-04-22'.to_date, assigns(:to)
   end
   
--- a/test/functional/.svn/text-base/users_controller_test.rb.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/functional/.svn/text-base/users_controller_test.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -143,6 +143,18 @@
     assert_equal [u.mail], mail.bcc
     assert mail.body.include?('newpass')
   end
+
+  test "POST :edit with a password change to an AuthSource user switching to Internal authentication" do
+    # Configure as auth source
+    u = User.find(2)
+    u.auth_source = AuthSource.find(1)
+    u.save!
+
+    post :edit, :id => u.id, :user => {:auth_source_id => ''}, :password => 'newpass', :password_confirmation => 'newpass'
+
+    assert_equal nil, u.reload.auth_source
+    assert_equal User.hash_password('newpass'), u.reload.hashed_password
+  end
   
   def test_edit_membership
     post :edit_membership, :id => 2, :membership_id => 1,
--- a/test/functional/.svn/text-base/versions_controller_test.rb.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/functional/.svn/text-base/versions_controller_test.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -31,6 +31,41 @@
     User.current = nil
   end
   
+  def test_index
+    get :index, :project_id => 1
+    assert_response :success
+    assert_template 'index'
+    assert_not_nil assigns(:versions)
+    # Version with no date set appears
+    assert assigns(:versions).include?(Version.find(3))
+    # Completed version doesn't appear
+    assert !assigns(:versions).include?(Version.find(1))
+    # Context menu on issues
+    assert_select "script", :text => Regexp.new(Regexp.escape("new ContextMenu('/issues/context_menu')"))
+  end
+  
+  def test_index_with_completed_versions
+    get :index, :project_id => 1, :completed => 1
+    assert_response :success
+    assert_template 'index'
+    assert_not_nil assigns(:versions)
+    # Version with no date set appears
+    assert assigns(:versions).include?(Version.find(3))
+    # Completed version appears
+    assert assigns(:versions).include?(Version.find(1))
+  end
+
+  def test_index_showing_subprojects_versions
+    @subproject_version = Version.generate!(:project => Project.find(3))
+    get :index, :project_id => 1, :with_subprojects => 1
+    assert_response :success
+    assert_template 'index'
+    assert_not_nil assigns(:versions)
+
+    assert assigns(:versions).include?(Version.find(4)), "Shared version not found"
+    assert assigns(:versions).include?(@subproject_version), "Subproject version not found"
+  end
+
   def test_show
     get :show, :id => 2
     assert_response :success
@@ -40,10 +75,10 @@
     assert_tag :tag => 'h2', :content => /1.0/
   end
   
-  def test_new
+  def test_create
     @request.session[:user_id] = 2 # manager
     assert_difference 'Version.count' do
-      post :new, :project_id => '1', :version => {:name => 'test_add_version'}
+      post :create, :project_id => '1', :version => {:name => 'test_add_version'}
     end
     assert_redirected_to '/projects/ecookbook/settings/versions'
     version = Version.find_by_name('test_add_version')
@@ -51,10 +86,10 @@
     assert_equal 1, version.project_id
   end
   
-  def test_new_from_issue_form
+  def test_create_from_issue_form
     @request.session[:user_id] = 2 # manager
     assert_difference 'Version.count' do
-      xhr :post, :new, :project_id => '1', :version => {:name => 'test_add_version_from_issue_form'}
+      xhr :post, :create, :project_id => '1', :version => {:name => 'test_add_version_from_issue_form'}
     end
     assert_response :success
     assert_select_rjs :replace, 'issue_fixed_version_id'
@@ -73,14 +108,14 @@
   def test_close_completed
     Version.update_all("status = 'open'")
     @request.session[:user_id] = 2
-    post :close_completed, :project_id => 'ecookbook'
+    put :close_completed, :project_id => 'ecookbook'
     assert_redirected_to :controller => 'projects', :action => 'settings', :tab => 'versions', :id => 'ecookbook'
     assert_not_nil Version.find_by_status('closed')
   end
   
-  def test_post_edit
+  def test_post_update
     @request.session[:user_id] = 2
-    post :edit, :id => 2, 
+    put :update, :id => 2, 
                 :version => { :name => 'New version name', 
                               :effective_date => Date.today.strftime("%Y-%m-%d")}
     assert_redirected_to :controller => 'projects', :action => 'settings', :tab => 'versions', :id => 'ecookbook'
@@ -91,7 +126,7 @@
 
   def test_destroy
     @request.session[:user_id] = 2
-    post :destroy, :id => 3
+    delete :destroy, :id => 3
     assert_redirected_to :controller => 'projects', :action => 'settings', :tab => 'versions', :id => 'ecookbook'
     assert_nil Version.find_by_id(3)
   end
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/functional/activities_controller_test.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -0,0 +1,87 @@
+require File.dirname(__FILE__) + '/../test_helper'
+
+class ActivitiesControllerTest < ActionController::TestCase
+  fixtures :all
+
+  def test_project_index
+    get :index, :id => 1, :with_subprojects => 0
+    assert_response :success
+    assert_template 'index'
+    assert_not_nil assigns(:events_by_day)
+    
+    assert_tag :tag => "h3", 
+               :content => /#{2.days.ago.to_date.day}/,
+               :sibling => { :tag => "dl",
+                 :child => { :tag => "dt",
+                   :attributes => { :class => /issue-edit/ },
+                   :child => { :tag => "a",
+                     :content => /(#{IssueStatus.find(2).name})/,
+                   }
+                 }
+               }
+  end
+  
+  def test_previous_project_index
+    get :index, :id => 1, :from => 3.days.ago.to_date
+    assert_response :success
+    assert_template 'index'
+    assert_not_nil assigns(:events_by_day)
+               
+    assert_tag :tag => "h3", 
+               :content => /#{3.day.ago.to_date.day}/,
+               :sibling => { :tag => "dl",
+                 :child => { :tag => "dt",
+                   :attributes => { :class => /issue/ },
+                   :child => { :tag => "a",
+                     :content => /#{Issue.find(1).subject}/,
+                   }
+                 }
+               }
+  end
+  
+  def test_global_index
+    get :index
+    assert_response :success
+    assert_template 'index'
+    assert_not_nil assigns(:events_by_day)
+    
+    assert_tag :tag => "h3", 
+               :content => /#{5.day.ago.to_date.day}/,
+               :sibling => { :tag => "dl",
+                 :child => { :tag => "dt",
+                   :attributes => { :class => /issue/ },
+                   :child => { :tag => "a",
+                     :content => /#{Issue.find(5).subject}/,
+                   }
+                 }
+               }
+  end
+  
+  def test_user_index
+    get :index, :user_id => 2
+    assert_response :success
+    assert_template 'index'
+    assert_not_nil assigns(:events_by_day)
+    
+    assert_tag :tag => "h3", 
+               :content => /#{3.day.ago.to_date.day}/,
+               :sibling => { :tag => "dl",
+                 :child => { :tag => "dt",
+                   :attributes => { :class => /issue/ },
+                   :child => { :tag => "a",
+                     :content => /#{Issue.find(1).subject}/,
+                   }
+                 }
+               }
+  end
+  
+  def test_index_atom_feed
+    get :index, :format => 'atom'
+    assert_response :success
+    assert_template 'common/feed.atom.rxml'
+    assert_tag :tag => 'entry', :child => {
+      :tag => 'link',
+      :attributes => {:href => 'http://test.host/issues/11'}}
+  end
+  
+end
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/functional/comments_controller_test.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -0,0 +1,57 @@
+# redMine - project management software
+# Copyright (C) 2006-2007  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.
+
+require File.dirname(__FILE__) + '/../test_helper'
+
+class CommentsControllerTest < ActionController::TestCase
+  fixtures :projects, :users, :roles, :members, :member_roles, :enabled_modules, :news, :comments
+  
+  def setup
+    User.current = nil
+  end
+  
+  def test_add_comment
+    @request.session[:user_id] = 2
+    post :create, :id => 1, :comment => { :comments => 'This is a test comment' }
+    assert_redirected_to 'news/1'
+    
+    comment = News.find(1).comments.find(:first, :order => 'created_on DESC')
+    assert_not_nil comment
+    assert_equal 'This is a test comment', comment.comments
+    assert_equal User.find(2), comment.author
+  end
+  
+  def test_empty_comment_should_not_be_added
+    @request.session[:user_id] = 2
+    assert_no_difference 'Comment.count' do
+      post :create, :id => 1, :comment => { :comments => '' }
+      assert_response :redirect
+      assert_redirected_to 'news/1'
+    end
+  end
+
+  def test_destroy_comment
+    comments_count = News.find(1).comments.size
+    @request.session[:user_id] = 2
+    delete :destroy, :id => 1, :comment_id => 2
+    assert_redirected_to 'news/1'
+    assert_nil Comment.find_by_id(2)
+    assert_equal comments_count - 1, News.find(1).comments.size
+  end
+  
+
+end
--- a/test/functional/context_menus_controller_test.rb	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/functional/context_menus_controller_test.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -12,7 +12,7 @@
                             :attributes => { :href => '/issues/1/edit',
                                              :class => 'icon-edit' }
     assert_tag :tag => 'a', :content => 'Closed',
-                            :attributes => { :href => '/issues/1/edit?issue%5Bstatus_id%5D=5',
+                            :attributes => { :href => '/issues/bulk_edit?ids%5B%5D=1&amp;issue%5Bstatus_id%5D=5',
                                              :class => '' }
     assert_tag :tag => 'a', :content => 'Immediate',
                             :attributes => { :href => '/issues/bulk_edit?ids%5B%5D=1&amp;issue%5Bpriority_id%5D=8',
@@ -59,6 +59,9 @@
     assert_tag :tag => 'a', :content => 'Edit',
                             :attributes => { :href => '/issues/bulk_edit?ids%5B%5D=1&amp;ids%5B%5D=2',
                                              :class => 'icon-edit' }
+    assert_tag :tag => 'a', :content => 'Closed',
+                            :attributes => { :href => '/issues/bulk_edit?ids%5B%5D=1&amp;ids%5B%5D=2&amp;issue%5Bstatus_id%5D=5',
+                                             :class => '' }
     assert_tag :tag => 'a', :content => 'Immediate',
                             :attributes => { :href => '/issues/bulk_edit?ids%5B%5D=1&amp;ids%5B%5D=2&amp;issue%5Bpriority_id%5D=8',
                                              :class => '' }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/functional/files_controller_test.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -0,0 +1,67 @@
+require File.dirname(__FILE__) + '/../test_helper'
+
+class FilesControllerTest < ActionController::TestCase
+  fixtures :all
+  
+  def setup
+    @controller = FilesController.new
+    @request    = ActionController::TestRequest.new
+    @response   = ActionController::TestResponse.new
+    @request.session[:user_id] = nil
+    Setting.default_language = 'en'
+  end
+
+  def test_index
+    get :index, :project_id => 1
+    assert_response :success
+    assert_template 'index'
+    assert_not_nil assigns(:containers)
+    
+    # file attached to the project
+    assert_tag :a, :content => 'project_file.zip',
+                   :attributes => { :href => '/attachments/download/8/project_file.zip' }
+    
+    # file attached to a project's version
+    assert_tag :a, :content => 'version_file.zip',
+                   :attributes => { :href => '/attachments/download/9/version_file.zip' }
+  end
+
+  def test_create_file
+    set_tmp_attachments_directory
+    @request.session[:user_id] = 2
+    Setting.notified_events = ['file_added']
+    ActionMailer::Base.deliveries.clear
+    
+    assert_difference 'Attachment.count' do
+      post :create, :project_id => 1, :version_id => '',
+           :attachments => {'1' => {'file' => uploaded_test_file('testfile.txt', 'text/plain')}}
+      assert_response :redirect
+    end
+    assert_redirected_to 'projects/ecookbook/files'
+    a = Attachment.find(:first, :order => 'created_on DESC')
+    assert_equal 'testfile.txt', a.filename
+    assert_equal Project.find(1), a.container
+
+    mail = ActionMailer::Base.deliveries.last
+    assert_kind_of TMail::Mail, mail
+    assert_equal "[eCookbook] New file", mail.subject
+    assert mail.body.include?('testfile.txt')
+  end
+  
+  def test_create_version_file
+    set_tmp_attachments_directory
+    @request.session[:user_id] = 2
+    Setting.notified_events = ['file_added']
+    
+    assert_difference 'Attachment.count' do
+      post :create, :project_id => 1, :version_id => '2',
+           :attachments => {'1' => {'file' => uploaded_test_file('testfile.txt', 'text/plain')}}
+      assert_response :redirect
+    end
+    assert_redirected_to 'projects/ecookbook/files'
+    a = Attachment.find(:first, :order => 'created_on DESC')
+    assert_equal 'testfile.txt', a.filename
+    assert_equal Version.find(2), a.container
+  end
+  
+end
--- a/test/functional/gantts_controller_test.rb	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/functional/gantts_controller_test.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -5,20 +5,20 @@
 
   context "#gantt" do
     should "work" do
+      i2 = Issue.find(2)
+      i2.update_attribute(:due_date, 1.month.from_now)
+      
       get :show, :project_id => 1
       assert_response :success
       assert_template 'show.html.erb'
       assert_not_nil assigns(:gantt)
-      events = assigns(:gantt).events
-      assert_not_nil events
       # Issue with start and due dates
       i = Issue.find(1)
       assert_not_nil i.due_date
-      assert events.include?(Issue.find(1))
-      # Issue with without due date but targeted to a version with date
+      assert_select "div a.issue", /##{i.id}/
+      # Issue with on a targeted version should not be in the events but loaded in the html
       i = Issue.find(2)
-      assert_nil i.due_date
-      assert events.include?(i)
+      assert_select "div a.issue", /##{i.id}/
     end
 
     should "work cross project" do
@@ -26,8 +26,8 @@
       assert_response :success
       assert_template 'show.html.erb'
       assert_not_nil assigns(:gantt)
-      events = assigns(:gantt).events
-      assert_not_nil events
+      assert_not_nil assigns(:gantt).query
+      assert_nil assigns(:gantt).project
     end
 
     should "export to pdf" do
--- a/test/functional/issues_controller_test.rb	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/functional/issues_controller_test.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -405,7 +405,8 @@
                           :subject => 'This is first issue',
                           :priority_id => 5},
                :continue => ''
-    assert_redirected_to :controller => 'issues', :action => 'new', :issue => {:tracker_id => 3}
+    assert_redirected_to :controller => 'issues', :action => 'new', :project_id => 'ecookbook',
+                         :issue => {:tracker_id => 3}
   end
   
   def test_post_create_without_custom_fields_param
--- a/test/functional/news_controller_test.rb	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/functional/news_controller_test.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -65,12 +65,12 @@
     assert_template 'new'
   end
   
-  def test_post_new
+  def test_post_create
     ActionMailer::Base.deliveries.clear
     Setting.notified_events << 'news_added'
 
     @request.session[:user_id] = 2
-    post :new, :project_id => 1, :news => { :title => 'NewsControllerTest',
+    post :create, :project_id => 1, :news => { :title => 'NewsControllerTest',
                                             :description => 'This is the description',
                                             :summary => '' }
     assert_redirected_to 'projects/ecookbook/news'
@@ -90,17 +90,17 @@
     assert_template 'edit'
   end
   
-  def test_post_edit
+  def test_put_update
     @request.session[:user_id] = 2
-    post :edit, :id => 1, :news => { :description => 'Description changed by test_post_edit' }
+    put :update, :id => 1, :news => { :description => 'Description changed by test_post_edit' }
     assert_redirected_to 'news/1'
     news = News.find(1)
     assert_equal 'Description changed by test_post_edit', news.description
   end
 
-  def test_post_new_with_validation_failure
+  def test_post_create_with_validation_failure
     @request.session[:user_id] = 2
-    post :new, :project_id => 1, :news => { :title => '',
+    post :create, :project_id => 1, :news => { :title => '',
                                             :description => 'This is the description',
                                             :summary => '' }
     assert_response :success
@@ -111,35 +111,6 @@
                               :content => /1 error/
   end
   
-  def test_add_comment
-    @request.session[:user_id] = 2
-    post :add_comment, :id => 1, :comment => { :comments => 'This is a NewsControllerTest comment' }
-    assert_redirected_to 'news/1'
-    
-    comment = News.find(1).comments.find(:first, :order => 'created_on DESC')
-    assert_not_nil comment
-    assert_equal 'This is a NewsControllerTest comment', comment.comments
-    assert_equal User.find(2), comment.author
-  end
-  
-  def test_empty_comment_should_not_be_added
-    @request.session[:user_id] = 2
-    assert_no_difference 'Comment.count' do
-      post :add_comment, :id => 1, :comment => { :comments => '' }
-      assert_response :success
-      assert_template 'show'
-    end
-  end
-  
-  def test_destroy_comment
-    comments_count = News.find(1).comments.size
-    @request.session[:user_id] = 2
-    post :destroy_comment, :id => 1, :comment_id => 2
-    assert_redirected_to 'news/1'
-    assert_nil Comment.find_by_id(2)
-    assert_equal comments_count - 1, News.find(1).comments.size
-  end
-  
   def test_destroy
     @request.session[:user_id] = 2
     post :destroy, :id => 1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/functional/project_enumerations_controller_test.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -0,0 +1,189 @@
+require File.dirname(__FILE__) + '/../test_helper'
+
+class ProjectEnumerationsControllerTest < ActionController::TestCase
+  fixtures :all
+  
+  def setup
+    @request.session[:user_id] = nil
+    Setting.default_language = 'en'
+  end
+
+  def test_update_to_override_system_activities
+    @request.session[:user_id] = 2 # manager
+    billable_field = TimeEntryActivityCustomField.find_by_name("Billable")
+
+    put :update, :project_id => 1, :enumerations => {
+      "9"=> {"parent_id"=>"9", "custom_field_values"=>{"7" => "1"}, "active"=>"0"}, # Design, De-activate
+      "10"=> {"parent_id"=>"10", "custom_field_values"=>{"7"=>"0"}, "active"=>"1"}, # Development, Change custom value
+      "14"=>{"parent_id"=>"14", "custom_field_values"=>{"7"=>"1"}, "active"=>"1"}, # Inactive Activity, Activate with custom value
+      "11"=>{"parent_id"=>"11", "custom_field_values"=>{"7"=>"1"}, "active"=>"1"} # QA, no changes
+    }
+
+    assert_response :redirect
+    assert_redirected_to 'projects/ecookbook/settings/activities'
+
+    # Created project specific activities...
+    project = Project.find('ecookbook')
+
+    # ... Design
+    design = project.time_entry_activities.find_by_name("Design")
+    assert design, "Project activity not found"
+
+    assert_equal 9, design.parent_id # Relate to the system activity
+    assert_not_equal design.parent.id, design.id # Different records
+    assert_equal design.parent.name, design.name # Same name
+    assert !design.active?
+
+    # ... Development
+    development = project.time_entry_activities.find_by_name("Development")
+    assert development, "Project activity not found"
+
+    assert_equal 10, development.parent_id # Relate to the system activity
+    assert_not_equal development.parent.id, development.id # Different records
+    assert_equal development.parent.name, development.name # Same name
+    assert development.active?
+    assert_equal "0", development.custom_value_for(billable_field).value
+
+    # ... Inactive Activity
+    previously_inactive = project.time_entry_activities.find_by_name("Inactive Activity")
+    assert previously_inactive, "Project activity not found"
+
+    assert_equal 14, previously_inactive.parent_id # Relate to the system activity
+    assert_not_equal previously_inactive.parent.id, previously_inactive.id # Different records
+    assert_equal previously_inactive.parent.name, previously_inactive.name # Same name
+    assert previously_inactive.active?
+    assert_equal "1", previously_inactive.custom_value_for(billable_field).value
+
+    # ... QA
+    assert_equal nil, project.time_entry_activities.find_by_name("QA"), "Custom QA activity created when it wasn't modified"
+  end
+
+  def test_update_will_update_project_specific_activities
+    @request.session[:user_id] = 2 # manager
+
+    project_activity = TimeEntryActivity.new({
+                                               :name => 'Project Specific',
+                                               :parent => TimeEntryActivity.find(:first),
+                                               :project => Project.find(1),
+                                               :active => true
+                                             })
+    assert project_activity.save
+    project_activity_two = TimeEntryActivity.new({
+                                                   :name => 'Project Specific Two',
+                                                   :parent => TimeEntryActivity.find(:last),
+                                                   :project => Project.find(1),
+                                                   :active => true
+                                                 })
+    assert project_activity_two.save
+
+    
+    put :update, :project_id => 1, :enumerations => {
+      project_activity.id => {"custom_field_values"=>{"7" => "1"}, "active"=>"0"}, # De-activate
+      project_activity_two.id => {"custom_field_values"=>{"7" => "1"}, "active"=>"0"} # De-activate
+    }
+
+    assert_response :redirect
+    assert_redirected_to 'projects/ecookbook/settings/activities'
+
+    # Created project specific activities...
+    project = Project.find('ecookbook')
+    assert_equal 2, project.time_entry_activities.count
+
+    activity_one = project.time_entry_activities.find_by_name(project_activity.name)
+    assert activity_one, "Project activity not found"
+    assert_equal project_activity.id, activity_one.id
+    assert !activity_one.active?
+
+    activity_two = project.time_entry_activities.find_by_name(project_activity_two.name)
+    assert activity_two, "Project activity not found"
+    assert_equal project_activity_two.id, activity_two.id
+    assert !activity_two.active?
+  end
+
+  def test_update_when_creating_new_activities_will_convert_existing_data
+    assert_equal 3, TimeEntry.find_all_by_activity_id_and_project_id(9, 1).size
+    
+    @request.session[:user_id] = 2 # manager
+    put :update, :project_id => 1, :enumerations => {
+      "9"=> {"parent_id"=>"9", "custom_field_values"=>{"7" => "1"}, "active"=>"0"} # Design, De-activate
+    }
+    assert_response :redirect
+
+    # No more TimeEntries using the system activity
+    assert_equal 0, TimeEntry.find_all_by_activity_id_and_project_id(9, 1).size, "Time Entries still assigned to system activities"
+    # All TimeEntries using project activity
+    project_specific_activity = TimeEntryActivity.find_by_parent_id_and_project_id(9, 1)
+    assert_equal 3, TimeEntry.find_all_by_activity_id_and_project_id(project_specific_activity.id, 1).size, "No Time Entries assigned to the project activity"
+  end
+
+  def test_update_when_creating_new_activities_will_not_convert_existing_data_if_an_exception_is_raised
+    # TODO: Need to cause an exception on create but these tests
+    # aren't setup for mocking.  Just create a record now so the
+    # second one is a dupicate
+    parent = TimeEntryActivity.find(9)
+    TimeEntryActivity.create!({:name => parent.name, :project_id => 1, :position => parent.position, :active => true})
+    TimeEntry.create!({:project_id => 1, :hours => 1.0, :user => User.find(1), :issue_id => 3, :activity_id => 10, :spent_on => '2009-01-01'})
+
+    assert_equal 3, TimeEntry.find_all_by_activity_id_and_project_id(9, 1).size
+    assert_equal 1, TimeEntry.find_all_by_activity_id_and_project_id(10, 1).size
+    
+    @request.session[:user_id] = 2 # manager
+    put :update, :project_id => 1, :enumerations => {
+      "9"=> {"parent_id"=>"9", "custom_field_values"=>{"7" => "1"}, "active"=>"0"}, # Design
+      "10"=> {"parent_id"=>"10", "custom_field_values"=>{"7"=>"0"}, "active"=>"1"} # Development, Change custom value
+    }
+    assert_response :redirect
+
+    # TimeEntries shouldn't have been reassigned on the failed record
+    assert_equal 3, TimeEntry.find_all_by_activity_id_and_project_id(9, 1).size, "Time Entries are not assigned to system activities"
+    # TimeEntries shouldn't have been reassigned on the saved record either
+    assert_equal 1, TimeEntry.find_all_by_activity_id_and_project_id(10, 1).size, "Time Entries are not assigned to system activities"
+  end
+
+  def test_destroy
+    @request.session[:user_id] = 2 # manager
+    project_activity = TimeEntryActivity.new({
+                                               :name => 'Project Specific',
+                                               :parent => TimeEntryActivity.find(:first),
+                                               :project => Project.find(1),
+                                               :active => true
+                                             })
+    assert project_activity.save
+    project_activity_two = TimeEntryActivity.new({
+                                                   :name => 'Project Specific Two',
+                                                   :parent => TimeEntryActivity.find(:last),
+                                                   :project => Project.find(1),
+                                                   :active => true
+                                                 })
+    assert project_activity_two.save
+
+    delete :destroy, :project_id => 1
+    assert_response :redirect
+    assert_redirected_to 'projects/ecookbook/settings/activities'
+
+    assert_nil TimeEntryActivity.find_by_id(project_activity.id)
+    assert_nil TimeEntryActivity.find_by_id(project_activity_two.id)
+  end
+  
+  def test_destroy_should_reassign_time_entries_back_to_the_system_activity
+    @request.session[:user_id] = 2 # manager
+    project_activity = TimeEntryActivity.new({
+                                               :name => 'Project Specific Design',
+                                               :parent => TimeEntryActivity.find(9),
+                                               :project => Project.find(1),
+                                               :active => true
+                                             })
+    assert project_activity.save
+    assert TimeEntry.update_all("activity_id = '#{project_activity.id}'", ["project_id = ? AND activity_id = ?", 1, 9])
+    assert 3, TimeEntry.find_all_by_activity_id_and_project_id(project_activity.id, 1).size
+    
+    delete :destroy, :project_id => 1
+    assert_response :redirect
+    assert_redirected_to 'projects/ecookbook/settings/activities'
+
+    assert_nil TimeEntryActivity.find_by_id(project_activity.id)
+    assert_equal 0, TimeEntry.find_all_by_activity_id_and_project_id(project_activity.id, 1).size, "TimeEntries still assigned to project specific activity"
+    assert_equal 3, TimeEntry.find_all_by_activity_id_and_project_id(9, 1).size, "TimeEntries still assigned to project specific activity"
+  end
+
+end
--- a/test/functional/projects_controller_test.rb	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/functional/projects_controller_test.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -87,20 +87,64 @@
     end 
   end
   
-  context "#add" do
+  context "#new" do
     context "by admin user" do
       setup do
         @request.session[:user_id] = 1
       end
       
       should "accept get" do
-        get :add
+        get :new
         assert_response :success
-        assert_template 'add'
+        assert_template 'new'
+      end
+
+    end
+
+    context "by non-admin user with add_project permission" do
+      setup do
+        Role.non_member.add_permission! :add_project
+        @request.session[:user_id] = 9
+      end
+
+      should "accept get" do
+        get :new
+        assert_response :success
+        assert_template 'new'
+        assert_no_tag :select, :attributes => {:name => 'project[parent_id]'}
+      end
+    end
+
+    context "by non-admin user with add_subprojects permission" do
+      setup do
+        Role.find(1).remove_permission! :add_project
+        Role.find(1).add_permission! :add_subprojects
+        @request.session[:user_id] = 2
       end
       
-      should "accept post" do
-        post :add, :project => { :name => "blog", 
+      should "accept get" do
+        get :new, :parent_id => 'ecookbook'
+        assert_response :success
+        assert_template 'new'
+        # parent project selected
+        assert_tag :select, :attributes => {:name => 'project[parent_id]'},
+                            :child => {:tag => 'option', :attributes => {:value => '1', :selected => 'selected'}}
+        # no empty value
+        assert_no_tag :select, :attributes => {:name => 'project[parent_id]'},
+                               :child => {:tag => 'option', :attributes => {:value => ''}}
+      end
+    end
+    
+  end
+
+  context "POST :create" do
+    context "by admin user" do
+      setup do
+        @request.session[:user_id] = 1
+      end
+      
+      should "create a new project" do
+        post :create, :project => { :name => "blog", 
                                  :description => "weblog",
                                  :identifier => "blog",
                                  :is_public => 1,
@@ -115,8 +159,8 @@
         assert_nil project.parent
       end
       
-      should "accept post with parent" do
-        post :add, :project => { :name => "blog", 
+      should "create a new subproject" do
+        post :create, :project => { :name => "blog", 
                                  :description => "weblog",
                                  :identifier => "blog",
                                  :is_public => 1,
@@ -137,15 +181,8 @@
         @request.session[:user_id] = 9
       end
       
-      should "accept get" do
-        get :add
-        assert_response :success
-        assert_template 'add'
-        assert_no_tag :select, :attributes => {:name => 'project[parent_id]'}
-      end
-      
-      should "accept post" do
-        post :add, :project => { :name => "blog", 
+      should "accept create a Project" do
+        post :create, :project => { :name => "blog", 
                                  :description => "weblog",
                                  :identifier => "blog",
                                  :is_public => 1,
@@ -166,7 +203,7 @@
       
       should "fail with parent_id" do
         assert_no_difference 'Project.count' do
-          post :add, :project => { :name => "blog", 
+          post :create, :project => { :name => "blog", 
                                    :description => "weblog",
                                    :identifier => "blog",
                                    :is_public => 1,
@@ -188,20 +225,8 @@
         @request.session[:user_id] = 2
       end
       
-      should "accept get" do
-        get :add, :parent_id => 'ecookbook'
-        assert_response :success
-        assert_template 'add'
-        # parent project selected
-        assert_tag :select, :attributes => {:name => 'project[parent_id]'},
-                            :child => {:tag => 'option', :attributes => {:value => '1', :selected => 'selected'}}
-        # no empty value
-        assert_no_tag :select, :attributes => {:name => 'project[parent_id]'},
-                               :child => {:tag => 'option', :attributes => {:value => ''}}
-      end
-      
-      should "accept post with parent_id" do
-        post :add, :project => { :name => "blog", 
+      should "create a project with a parent_id" do
+        post :create, :project => { :name => "blog", 
                                  :description => "weblog",
                                  :identifier => "blog",
                                  :is_public => 1,
@@ -214,7 +239,7 @@
       
       should "fail without parent_id" do
         assert_no_difference 'Project.count' do
-          post :add, :project => { :name => "blog", 
+          post :create, :project => { :name => "blog", 
                                    :description => "weblog",
                                    :identifier => "blog",
                                    :is_public => 1,
@@ -230,7 +255,7 @@
       should "fail with unauthorized parent_id" do
         assert !User.find(2).member_of?(Project.find(6))
         assert_no_difference 'Project.count' do
-          post :add, :project => { :name => "blog", 
+          post :create, :project => { :name => "blog", 
                                    :description => "weblog",
                                    :identifier => "blog",
                                    :is_public => 1,
@@ -293,9 +318,9 @@
     assert_template 'settings'
   end
   
-  def test_edit
+  def test_update
     @request.session[:user_id] = 2 # manager
-    post :edit, :id => 1, :project => {:name => 'Test changed name',
+    post :update, :id => 1, :project => {:name => 'Test changed name',
                                        :issue_custom_field_ids => ['']}
     assert_redirected_to 'projects/ecookbook/settings'
     project = Project.find(1)
@@ -317,170 +342,6 @@
     assert_nil Project.find_by_id(1)
   end
   
-  def test_add_file
-    set_tmp_attachments_directory
-    @request.session[:user_id] = 2
-    Setting.notified_events = ['file_added']
-    ActionMailer::Base.deliveries.clear
-    
-    assert_difference 'Attachment.count' do
-      post :add_file, :id => 1, :version_id => '',
-           :attachments => {'1' => {'file' => uploaded_test_file('testfile.txt', 'text/plain')}}
-    end
-    assert_redirected_to 'projects/ecookbook/files'
-    a = Attachment.find(:first, :order => 'created_on DESC')
-    assert_equal 'testfile.txt', a.filename
-    assert_equal Project.find(1), a.container
-
-    mail = ActionMailer::Base.deliveries.last
-    assert_kind_of TMail::Mail, mail
-    assert_equal "[eCookbook] New file", mail.subject
-    assert mail.body.include?('testfile.txt')
-  end
-  
-  def test_add_version_file
-    set_tmp_attachments_directory
-    @request.session[:user_id] = 2
-    Setting.notified_events = ['file_added']
-    
-    assert_difference 'Attachment.count' do
-      post :add_file, :id => 1, :version_id => '2',
-           :attachments => {'1' => {'file' => uploaded_test_file('testfile.txt', 'text/plain')}}
-    end
-    assert_redirected_to 'projects/ecookbook/files'
-    a = Attachment.find(:first, :order => 'created_on DESC')
-    assert_equal 'testfile.txt', a.filename
-    assert_equal Version.find(2), a.container
-  end
-  
-  def test_list_files
-    get :list_files, :id => 1
-    assert_response :success
-    assert_template 'list_files'
-    assert_not_nil assigns(:containers)
-    
-    # file attached to the project
-    assert_tag :a, :content => 'project_file.zip',
-                   :attributes => { :href => '/attachments/download/8/project_file.zip' }
-    
-    # file attached to a project's version
-    assert_tag :a, :content => 'version_file.zip',
-                   :attributes => { :href => '/attachments/download/9/version_file.zip' }
-  end
-
-  def test_roadmap
-    get :roadmap, :id => 1
-    assert_response :success
-    assert_template 'roadmap'
-    assert_not_nil assigns(:versions)
-    # Version with no date set appears
-    assert assigns(:versions).include?(Version.find(3))
-    # Completed version doesn't appear
-    assert !assigns(:versions).include?(Version.find(1))
-  end
-  
-  def test_roadmap_with_completed_versions
-    get :roadmap, :id => 1, :completed => 1
-    assert_response :success
-    assert_template 'roadmap'
-    assert_not_nil assigns(:versions)
-    # Version with no date set appears
-    assert assigns(:versions).include?(Version.find(3))
-    # Completed version appears
-    assert assigns(:versions).include?(Version.find(1))
-  end
-
-  def test_roadmap_showing_subprojects_versions
-    @subproject_version = Version.generate!(:project => Project.find(3))
-    get :roadmap, :id => 1, :with_subprojects => 1
-    assert_response :success
-    assert_template 'roadmap'
-    assert_not_nil assigns(:versions)
-
-    assert assigns(:versions).include?(Version.find(4)), "Shared version not found"
-    assert assigns(:versions).include?(@subproject_version), "Subproject version not found"
-  end
-  def test_project_activity
-    get :activity, :id => 1, :with_subprojects => 0
-    assert_response :success
-    assert_template 'activity'
-    assert_not_nil assigns(:events_by_day)
-    
-    assert_tag :tag => "h3", 
-               :content => /#{2.days.ago.to_date.day}/,
-               :sibling => { :tag => "dl",
-                 :child => { :tag => "dt",
-                   :attributes => { :class => /issue-edit/ },
-                   :child => { :tag => "a",
-                     :content => /(#{IssueStatus.find(2).name})/,
-                   }
-                 }
-               }
-  end
-  
-  def test_previous_project_activity
-    get :activity, :id => 1, :from => 3.days.ago.to_date
-    assert_response :success
-    assert_template 'activity'
-    assert_not_nil assigns(:events_by_day)
-               
-    assert_tag :tag => "h3", 
-               :content => /#{3.day.ago.to_date.day}/,
-               :sibling => { :tag => "dl",
-                 :child => { :tag => "dt",
-                   :attributes => { :class => /issue/ },
-                   :child => { :tag => "a",
-                     :content => /#{Issue.find(1).subject}/,
-                   }
-                 }
-               }
-  end
-  
-  def test_global_activity
-    get :activity
-    assert_response :success
-    assert_template 'activity'
-    assert_not_nil assigns(:events_by_day)
-    
-    assert_tag :tag => "h3", 
-               :content => /#{5.day.ago.to_date.day}/,
-               :sibling => { :tag => "dl",
-                 :child => { :tag => "dt",
-                   :attributes => { :class => /issue/ },
-                   :child => { :tag => "a",
-                     :content => /#{Issue.find(5).subject}/,
-                   }
-                 }
-               }
-  end
-  
-  def test_user_activity
-    get :activity, :user_id => 2
-    assert_response :success
-    assert_template 'activity'
-    assert_not_nil assigns(:events_by_day)
-    
-    assert_tag :tag => "h3", 
-               :content => /#{3.day.ago.to_date.day}/,
-               :sibling => { :tag => "dl",
-                 :child => { :tag => "dt",
-                   :attributes => { :class => /issue/ },
-                   :child => { :tag => "a",
-                     :content => /#{Issue.find(1).subject}/,
-                   }
-                 }
-               }
-  end
-  
-  def test_activity_atom_feed
-    get :activity, :format => 'atom'
-    assert_response :success
-    assert_template 'common/feed.atom.rxml'
-    assert_tag :tag => 'entry', :child => {
-      :tag => 'link',
-      :attributes => {:href => 'http://test.host/issues/11'}}
-  end
-  
   def test_archive
     @request.session[:user_id] = 1 # admin
     post :archive, :id => 1
@@ -545,184 +406,6 @@
     assert_template 'show'
   end
 
-  def test_reset_activities
-    @request.session[:user_id] = 2 # manager
-    project_activity = TimeEntryActivity.new({
-                                               :name => 'Project Specific',
-                                               :parent => TimeEntryActivity.find(:first),
-                                               :project => Project.find(1),
-                                               :active => true
-                                             })
-    assert project_activity.save
-    project_activity_two = TimeEntryActivity.new({
-                                                   :name => 'Project Specific Two',
-                                                   :parent => TimeEntryActivity.find(:last),
-                                                   :project => Project.find(1),
-                                                   :active => true
-                                                 })
-    assert project_activity_two.save
-
-    delete :reset_activities, :id => 1
-    assert_response :redirect
-    assert_redirected_to 'projects/ecookbook/settings/activities'
-
-    assert_nil TimeEntryActivity.find_by_id(project_activity.id)
-    assert_nil TimeEntryActivity.find_by_id(project_activity_two.id)
-  end
-  
-  def test_reset_activities_should_reassign_time_entries_back_to_the_system_activity
-    @request.session[:user_id] = 2 # manager
-    project_activity = TimeEntryActivity.new({
-                                               :name => 'Project Specific Design',
-                                               :parent => TimeEntryActivity.find(9),
-                                               :project => Project.find(1),
-                                               :active => true
-                                             })
-    assert project_activity.save
-    assert TimeEntry.update_all("activity_id = '#{project_activity.id}'", ["project_id = ? AND activity_id = ?", 1, 9])
-    assert 3, TimeEntry.find_all_by_activity_id_and_project_id(project_activity.id, 1).size
-    
-    delete :reset_activities, :id => 1
-    assert_response :redirect
-    assert_redirected_to 'projects/ecookbook/settings/activities'
-
-    assert_nil TimeEntryActivity.find_by_id(project_activity.id)
-    assert_equal 0, TimeEntry.find_all_by_activity_id_and_project_id(project_activity.id, 1).size, "TimeEntries still assigned to project specific activity"
-    assert_equal 3, TimeEntry.find_all_by_activity_id_and_project_id(9, 1).size, "TimeEntries still assigned to project specific activity"
-  end
-  
-  def test_save_activities_to_override_system_activities
-    @request.session[:user_id] = 2 # manager
-    billable_field = TimeEntryActivityCustomField.find_by_name("Billable")
-
-    post :save_activities, :id => 1, :enumerations => {
-      "9"=> {"parent_id"=>"9", "custom_field_values"=>{"7" => "1"}, "active"=>"0"}, # Design, De-activate
-      "10"=> {"parent_id"=>"10", "custom_field_values"=>{"7"=>"0"}, "active"=>"1"}, # Development, Change custom value
-      "14"=>{"parent_id"=>"14", "custom_field_values"=>{"7"=>"1"}, "active"=>"1"}, # Inactive Activity, Activate with custom value
-      "11"=>{"parent_id"=>"11", "custom_field_values"=>{"7"=>"1"}, "active"=>"1"} # QA, no changes
-    }
-
-    assert_response :redirect
-    assert_redirected_to 'projects/ecookbook/settings/activities'
-
-    # Created project specific activities...
-    project = Project.find('ecookbook')
-
-    # ... Design
-    design = project.time_entry_activities.find_by_name("Design")
-    assert design, "Project activity not found"
-
-    assert_equal 9, design.parent_id # Relate to the system activity
-    assert_not_equal design.parent.id, design.id # Different records
-    assert_equal design.parent.name, design.name # Same name
-    assert !design.active?
-
-    # ... Development
-    development = project.time_entry_activities.find_by_name("Development")
-    assert development, "Project activity not found"
-
-    assert_equal 10, development.parent_id # Relate to the system activity
-    assert_not_equal development.parent.id, development.id # Different records
-    assert_equal development.parent.name, development.name # Same name
-    assert development.active?
-    assert_equal "0", development.custom_value_for(billable_field).value
-
-    # ... Inactive Activity
-    previously_inactive = project.time_entry_activities.find_by_name("Inactive Activity")
-    assert previously_inactive, "Project activity not found"
-
-    assert_equal 14, previously_inactive.parent_id # Relate to the system activity
-    assert_not_equal previously_inactive.parent.id, previously_inactive.id # Different records
-    assert_equal previously_inactive.parent.name, previously_inactive.name # Same name
-    assert previously_inactive.active?
-    assert_equal "1", previously_inactive.custom_value_for(billable_field).value
-
-    # ... QA
-    assert_equal nil, project.time_entry_activities.find_by_name("QA"), "Custom QA activity created when it wasn't modified"
-  end
-
-  def test_save_activities_will_update_project_specific_activities
-    @request.session[:user_id] = 2 # manager
-
-    project_activity = TimeEntryActivity.new({
-                                               :name => 'Project Specific',
-                                               :parent => TimeEntryActivity.find(:first),
-                                               :project => Project.find(1),
-                                               :active => true
-                                             })
-    assert project_activity.save
-    project_activity_two = TimeEntryActivity.new({
-                                                   :name => 'Project Specific Two',
-                                                   :parent => TimeEntryActivity.find(:last),
-                                                   :project => Project.find(1),
-                                                   :active => true
-                                                 })
-    assert project_activity_two.save
-
-    
-    post :save_activities, :id => 1, :enumerations => {
-      project_activity.id => {"custom_field_values"=>{"7" => "1"}, "active"=>"0"}, # De-activate
-      project_activity_two.id => {"custom_field_values"=>{"7" => "1"}, "active"=>"0"} # De-activate
-    }
-
-    assert_response :redirect
-    assert_redirected_to 'projects/ecookbook/settings/activities'
-
-    # Created project specific activities...
-    project = Project.find('ecookbook')
-    assert_equal 2, project.time_entry_activities.count
-
-    activity_one = project.time_entry_activities.find_by_name(project_activity.name)
-    assert activity_one, "Project activity not found"
-    assert_equal project_activity.id, activity_one.id
-    assert !activity_one.active?
-
-    activity_two = project.time_entry_activities.find_by_name(project_activity_two.name)
-    assert activity_two, "Project activity not found"
-    assert_equal project_activity_two.id, activity_two.id
-    assert !activity_two.active?
-  end
-
-  def test_save_activities_when_creating_new_activities_will_convert_existing_data
-    assert_equal 3, TimeEntry.find_all_by_activity_id_and_project_id(9, 1).size
-    
-    @request.session[:user_id] = 2 # manager
-    post :save_activities, :id => 1, :enumerations => {
-      "9"=> {"parent_id"=>"9", "custom_field_values"=>{"7" => "1"}, "active"=>"0"} # Design, De-activate
-    }
-    assert_response :redirect
-
-    # No more TimeEntries using the system activity
-    assert_equal 0, TimeEntry.find_all_by_activity_id_and_project_id(9, 1).size, "Time Entries still assigned to system activities"
-    # All TimeEntries using project activity
-    project_specific_activity = TimeEntryActivity.find_by_parent_id_and_project_id(9, 1)
-    assert_equal 3, TimeEntry.find_all_by_activity_id_and_project_id(project_specific_activity.id, 1).size, "No Time Entries assigned to the project activity"
-  end
-
-  def test_save_activities_when_creating_new_activities_will_not_convert_existing_data_if_an_exception_is_raised
-    # TODO: Need to cause an exception on create but these tests
-    # aren't setup for mocking.  Just create a record now so the
-    # second one is a dupicate
-    parent = TimeEntryActivity.find(9)
-    TimeEntryActivity.create!({:name => parent.name, :project_id => 1, :position => parent.position, :active => true})
-    TimeEntry.create!({:project_id => 1, :hours => 1.0, :user => User.find(1), :issue_id => 3, :activity_id => 10, :spent_on => '2009-01-01'})
-
-    assert_equal 3, TimeEntry.find_all_by_activity_id_and_project_id(9, 1).size
-    assert_equal 1, TimeEntry.find_all_by_activity_id_and_project_id(10, 1).size
-    
-    @request.session[:user_id] = 2 # manager
-    post :save_activities, :id => 1, :enumerations => {
-      "9"=> {"parent_id"=>"9", "custom_field_values"=>{"7" => "1"}, "active"=>"0"}, # Design
-      "10"=> {"parent_id"=>"10", "custom_field_values"=>{"7"=>"0"}, "active"=>"1"} # Development, Change custom value
-    }
-    assert_response :redirect
-
-    # TimeEntries shouldn't have been reassigned on the failed record
-    assert_equal 3, TimeEntry.find_all_by_activity_id_and_project_id(9, 1).size, "Time Entries are not assigned to system activities"
-    # TimeEntries shouldn't have been reassigned on the saved record either
-    assert_equal 1, TimeEntry.find_all_by_activity_id_and_project_id(10, 1).size, "Time Entries are not assigned to system activities"
-  end
-
   # A hook that is manually registered later
   class ProjectBasedTemplate < Redmine::Hook::ViewListener
     def view_layouts_base_html_head(context)
--- a/test/functional/timelog_controller_test.rb	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/functional/timelog_controller_test.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -283,7 +283,7 @@
     assert_not_nil assigns(:total_hours)
     assert_equal "162.90", "%.2f" % assigns(:total_hours)
     # display all time by default
-    assert_equal '2007-03-11'.to_date, assigns(:from)
+    assert_equal '2007-03-12'.to_date, assigns(:from)
     assert_equal '2007-04-22'.to_date, assigns(:to)
   end
   
@@ -325,8 +325,8 @@
     assert_equal 2, assigns(:entries).size
     assert_not_nil assigns(:total_hours)
     assert_equal 154.25, assigns(:total_hours)
-    # display all time by default
-    assert_equal '2007-03-11'.to_date, assigns(:from)
+    # display all time based on what's been logged
+    assert_equal '2007-03-12'.to_date, assigns(:from)
     assert_equal '2007-04-22'.to_date, assigns(:to)
   end
   
--- a/test/functional/users_controller_test.rb	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/functional/users_controller_test.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -143,6 +143,18 @@
     assert_equal [u.mail], mail.bcc
     assert mail.body.include?('newpass')
   end
+
+  test "POST :edit with a password change to an AuthSource user switching to Internal authentication" do
+    # Configure as auth source
+    u = User.find(2)
+    u.auth_source = AuthSource.find(1)
+    u.save!
+
+    post :edit, :id => u.id, :user => {:auth_source_id => ''}, :password => 'newpass', :password_confirmation => 'newpass'
+
+    assert_equal nil, u.reload.auth_source
+    assert_equal User.hash_password('newpass'), u.reload.hashed_password
+  end
   
   def test_edit_membership
     post :edit_membership, :id => 2, :membership_id => 1,
--- a/test/functional/versions_controller_test.rb	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/functional/versions_controller_test.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -31,6 +31,41 @@
     User.current = nil
   end
   
+  def test_index
+    get :index, :project_id => 1
+    assert_response :success
+    assert_template 'index'
+    assert_not_nil assigns(:versions)
+    # Version with no date set appears
+    assert assigns(:versions).include?(Version.find(3))
+    # Completed version doesn't appear
+    assert !assigns(:versions).include?(Version.find(1))
+    # Context menu on issues
+    assert_select "script", :text => Regexp.new(Regexp.escape("new ContextMenu('/issues/context_menu')"))
+  end
+  
+  def test_index_with_completed_versions
+    get :index, :project_id => 1, :completed => 1
+    assert_response :success
+    assert_template 'index'
+    assert_not_nil assigns(:versions)
+    # Version with no date set appears
+    assert assigns(:versions).include?(Version.find(3))
+    # Completed version appears
+    assert assigns(:versions).include?(Version.find(1))
+  end
+
+  def test_index_showing_subprojects_versions
+    @subproject_version = Version.generate!(:project => Project.find(3))
+    get :index, :project_id => 1, :with_subprojects => 1
+    assert_response :success
+    assert_template 'index'
+    assert_not_nil assigns(:versions)
+
+    assert assigns(:versions).include?(Version.find(4)), "Shared version not found"
+    assert assigns(:versions).include?(@subproject_version), "Subproject version not found"
+  end
+
   def test_show
     get :show, :id => 2
     assert_response :success
@@ -40,10 +75,10 @@
     assert_tag :tag => 'h2', :content => /1.0/
   end
   
-  def test_new
+  def test_create
     @request.session[:user_id] = 2 # manager
     assert_difference 'Version.count' do
-      post :new, :project_id => '1', :version => {:name => 'test_add_version'}
+      post :create, :project_id => '1', :version => {:name => 'test_add_version'}
     end
     assert_redirected_to '/projects/ecookbook/settings/versions'
     version = Version.find_by_name('test_add_version')
@@ -51,10 +86,10 @@
     assert_equal 1, version.project_id
   end
   
-  def test_new_from_issue_form
+  def test_create_from_issue_form
     @request.session[:user_id] = 2 # manager
     assert_difference 'Version.count' do
-      xhr :post, :new, :project_id => '1', :version => {:name => 'test_add_version_from_issue_form'}
+      xhr :post, :create, :project_id => '1', :version => {:name => 'test_add_version_from_issue_form'}
     end
     assert_response :success
     assert_select_rjs :replace, 'issue_fixed_version_id'
@@ -73,14 +108,14 @@
   def test_close_completed
     Version.update_all("status = 'open'")
     @request.session[:user_id] = 2
-    post :close_completed, :project_id => 'ecookbook'
+    put :close_completed, :project_id => 'ecookbook'
     assert_redirected_to :controller => 'projects', :action => 'settings', :tab => 'versions', :id => 'ecookbook'
     assert_not_nil Version.find_by_status('closed')
   end
   
-  def test_post_edit
+  def test_post_update
     @request.session[:user_id] = 2
-    post :edit, :id => 2, 
+    put :update, :id => 2, 
                 :version => { :name => 'New version name', 
                               :effective_date => Date.today.strftime("%Y-%m-%d")}
     assert_redirected_to :controller => 'projects', :action => 'settings', :tab => 'versions', :id => 'ecookbook'
@@ -91,7 +126,7 @@
 
   def test_destroy
     @request.session[:user_id] = 2
-    post :destroy, :id => 3
+    delete :destroy, :id => 3
     assert_redirected_to :controller => 'projects', :action => 'settings', :tab => 'versions', :id => 'ecookbook'
     assert_nil Version.find_by_id(3)
   end
--- a/test/integration/.svn/all-wcprops	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/integration/.svn/all-wcprops	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 41
-/svn/!svn/ver/4037/trunk/test/integration
+/svn/!svn/ver/4172/trunk/test/integration
 END
 api_token_login_test.rb
 K 25
@@ -25,13 +25,13 @@
 K 25
 svn:wc:ra_dav:version-url
 V 60
-/svn/!svn/ver/3766/trunk/test/integration/issues_api_test.rb
+/svn/!svn/ver/4048/trunk/test/integration/issues_api_test.rb
 END
 routing_test.rb
 K 25
 svn:wc:ra_dav:version-url
 V 57
-/svn/!svn/ver/4037/trunk/test/integration/routing_test.rb
+/svn/!svn/ver/4172/trunk/test/integration/routing_test.rb
 END
 admin_test.rb
 K 25
@@ -55,7 +55,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 56
-/svn/!svn/ver/3486/trunk/test/integration/issues_test.rb
+/svn/!svn/ver/4041/trunk/test/integration/issues_test.rb
 END
 account_test.rb
 K 25
--- a/test/integration/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/integration/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,14 +1,14 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/test/integration
 http://redmine.rubyforge.org/svn
 
 
 
-2010-08-24T15:27:12.793586Z
-4037
+2010-09-23T15:20:19.085385Z
+4172
 edavis10
 
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:43.868156Z
+2010-09-23T14:37:45.435782Z
 f99fc81982309b06b38b5a1ace40ca5e
 2009-12-23T06:27:44.373427Z
 3220
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:43.868156Z
+2010-09-23T14:37:45.439778Z
 f71d3a9198cd46dcbe8c38b581be1bdb
 2010-04-21T16:02:55.125733Z
 3687
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:43.868156Z
+2010-09-23T14:37:45.435782Z
 8d01b406d4574360e2fc0ca763e457d1
 2009-06-06T10:20:27.327287Z
 2779
@@ -134,10 +134,10 @@
 
 
 
-2010-07-23T14:49:43.868156Z
-f0a6d4ca8cf9236fc383d381f9755d8d
-2010-06-05T03:52:59.030840Z
-3766
+2010-09-24T12:48:25.883734Z
+ffd48cf98057bd4ed0175bc4147c61cb
+2010-08-27T20:08:59.729788Z
+4048
 edavis10
 has-props
 
@@ -160,7 +160,7 @@
 
 
 
-9345
+9701
 
 lib
 dir
@@ -171,10 +171,10 @@
 
 
 
-2010-08-25T15:27:52.782527Z
-c273a3ef592252f4e804b28e02c3911f
-2010-08-24T15:27:12.793586Z
-4037
+2010-09-24T12:48:25.883734Z
+b1064aaf94d0e5242305bc5a09f0a596
+2010-09-23T15:20:19.085385Z
+4172
 edavis10
 
 
@@ -197,7 +197,7 @@
 
 
 
-24164
+24890
 
 admin_test.rb
 file
@@ -205,7 +205,7 @@
 
 
 
-2010-07-23T14:49:43.868156Z
+2010-09-23T14:37:45.435782Z
 d3db25767f7a6741931fa9b307ea9da9
 2009-11-14T19:41:02.240160Z
 3050
@@ -239,7 +239,7 @@
 
 
 
-2010-07-23T14:49:43.876109Z
+2010-09-23T14:37:45.435782Z
 18dc5fe7b0619021768deecf38ad573a
 2010-04-17T12:45:23.887495Z
 3679
@@ -273,7 +273,7 @@
 
 
 
-2010-07-23T14:49:43.876109Z
+2010-09-23T14:37:45.439778Z
 aedb3aed4364cf43d6dc1e721d10b685
 2009-01-26T01:47:51.253124Z
 2317
@@ -307,10 +307,10 @@
 
 
 
-2010-07-23T14:49:43.876109Z
-201d6cad36d19855280a9605e88077e2
-2010-02-25T17:01:05.965264Z
-3486
+2010-09-24T12:48:25.883734Z
+6125e0c4cbdc852b5831a85c0ded60f0
+2010-08-26T16:36:59.817467Z
+4041
 edavis10
 has-props
 
@@ -333,7 +333,7 @@
 
 
 
-4800
+4795
 
 account_test.rb
 file
@@ -341,7 +341,7 @@
 
 
 
-2010-07-23T14:49:43.876109Z
+2010-09-23T14:37:45.435782Z
 dbb93f00bb81496a00069bc0f4d044c8
 2010-02-26T09:13:12.187275Z
 3492
@@ -375,7 +375,7 @@
 
 
 
-2010-07-23T14:49:43.876109Z
+2010-09-23T14:37:45.435782Z
 f6d32b05d3ebaf4c30fac1532ecae7d2
 2009-12-23T06:27:44.373427Z
 3220
@@ -409,7 +409,7 @@
 
 
 
-2010-07-23T14:49:43.876109Z
+2010-09-23T14:37:45.435782Z
 e244128a26c244c305a434ad5dab2946
 2009-12-23T06:27:44.373427Z
 3220
@@ -443,7 +443,7 @@
 
 
 
-2010-08-25T15:27:52.782527Z
+2010-09-23T14:37:45.435782Z
 b7820d068018240701ff34e9ff0a00d9
 2010-08-19T01:28:33.455566Z
 3951
--- a/test/integration/.svn/text-base/issues_api_test.rb.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/integration/.svn/text-base/issues_api_test.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -198,7 +198,7 @@
     setup do
       @issue_count = Issue.count
       @journal_count = Journal.count
-      @attributes = {:subject => 'API update'}
+      @attributes = {:subject => 'API update', :notes => 'A new note'}
 
       put '/issues/1.xml', {:issue => @attributes}, :authorization => credentials('jsmith')
     end
@@ -214,10 +214,15 @@
       assert_equal Journal.count, @journal_count + 1
     end
 
+    should "add the note to the journal" do
+      journal = Journal.last
+      assert_equal "A new note", journal.notes
+    end
+
     should "update the issue" do
       issue = Issue.find(1)
       @attributes.each do |attribute, value|
-        assert_equal value, issue.send(attribute)
+        assert_equal value, issue.send(attribute) unless attribute == :notes
       end
     end
     
@@ -252,7 +257,7 @@
     setup do
       @issue_count = Issue.count
       @journal_count = Journal.count
-      @attributes = {:subject => 'API update'}
+      @attributes = {:subject => 'API update', :notes => 'A new note'}
 
       put '/issues/1.json', {:issue => @attributes}, :authorization => credentials('jsmith')
     end
@@ -268,13 +273,18 @@
       assert_equal Journal.count, @journal_count + 1
     end
 
+    should "add the note to the journal" do
+      journal = Journal.last
+      assert_equal "A new note", journal.notes
+    end
+
     should "update the issue" do
       issue = Issue.find(1)
       @attributes.each do |attribute, value|
-        assert_equal value, issue.send(attribute)
+        assert_equal value, issue.send(attribute) unless attribute == :notes
       end
     end
-    
+
   end
   
   context "PUT /issues/1.json with failed update" do
--- a/test/integration/.svn/text-base/issues_test.rb.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/integration/.svn/text-base/issues_test.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -69,7 +69,7 @@
     log_user('jsmith', 'jsmith')
     set_tmp_attachments_directory
 
-    put 'issues/1/edit',
+    put 'issues/1',
          :notes => 'Some notes',
          :attachments => {'1' => {'file' => uploaded_test_file('testfile.txt', 'text/plain'), 'description' => 'This is an attachment'}}
     assert_redirected_to "issues/1"
--- a/test/integration/.svn/text-base/routing_test.rb.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/integration/.svn/text-base/routing_test.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -19,8 +19,8 @@
 
 class RoutingTest < ActionController::IntegrationTest
   context "activities" do
-    should_route :get, "/activity", :controller => 'projects', :action => 'activity', :id => nil
-    should_route :get, "/activity.atom", :controller => 'projects', :action => 'activity', :id => nil, :format => 'atom'
+    should_route :get, "/activity", :controller => 'activities', :action => 'index', :id => nil
+    should_route :get, "/activity.atom", :controller => 'activities', :action => 'index', :id => nil, :format => 'atom'
   end
 
   context "attachments" do
@@ -91,14 +91,14 @@
     should_route :post, "/issues/1/quoted", :controller => 'journals', :action => 'new', :id => '1'
 
     should_route :get, "/issues/calendar", :controller => 'calendars', :action => 'show'
-    should_route :post, "/issues/calendar", :controller => 'calendars', :action => 'show'
+    should_route :put, "/issues/calendar", :controller => 'calendars', :action => 'update'
     should_route :get, "/projects/project-name/issues/calendar", :controller => 'calendars', :action => 'show', :project_id => 'project-name'
-    should_route :post, "/projects/project-name/issues/calendar", :controller => 'calendars', :action => 'show', :project_id => 'project-name'
+    should_route :put, "/projects/project-name/issues/calendar", :controller => 'calendars', :action => 'update', :project_id => 'project-name'
 
     should_route :get, "/issues/gantt", :controller => 'gantts', :action => 'show'
-    should_route :post, "/issues/gantt", :controller => 'gantts', :action => 'show'
+    should_route :put, "/issues/gantt", :controller => 'gantts', :action => 'update'
     should_route :get, "/projects/project-name/issues/gantt", :controller => 'gantts', :action => 'show', :project_id => 'project-name'
-    should_route :post, "/projects/project-name/issues/gantt", :controller => 'gantts', :action => 'show', :project_id => 'project-name'
+    should_route :put, "/projects/project-name/issues/gantt", :controller => 'gantts', :action => 'update', :project_id => 'project-name'
 
     should_route :get, "/issues/auto_complete", :controller => 'auto_completes', :action => 'issues'
 
@@ -156,41 +156,45 @@
     should_route :get, "/news/2", :controller => 'news', :action => 'show', :id => '2'
     should_route :get, "/projects/567/news/new", :controller => 'news', :action => 'new', :project_id => '567'
     should_route :get, "/news/234", :controller => 'news', :action => 'show', :id => '234'
+    should_route :get, "/news/567/edit", :controller => 'news', :action => 'edit', :id => '567'
 
-    should_route :post, "/projects/567/news/new", :controller => 'news', :action => 'new', :project_id => '567'
-    should_route :post, "/news/567/edit", :controller => 'news', :action => 'edit', :id => '567'
+    should_route :post, "/projects/567/news", :controller => 'news', :action => 'create', :project_id => '567'
     should_route :post, "/news/567/destroy", :controller => 'news', :action => 'destroy', :id => '567'
+    should_route :post, "/news/567/comments", :controller => 'comments', :action => 'create', :id => '567'
+    
+    should_route :put, "/news/567/edit", :controller => 'news', :action => 'update', :id => '567'
+
+    should_route :delete, "/news/567/comments/15", :controller => 'comments', :action => 'destroy', :id => '567', :comment_id => '15'
   end
 
   context "projects" do
     should_route :get, "/projects", :controller => 'projects', :action => 'index'
     should_route :get, "/projects.atom", :controller => 'projects', :action => 'index', :format => 'atom'
     should_route :get, "/projects.xml", :controller => 'projects', :action => 'index', :format => 'xml'
-    should_route :get, "/projects/new", :controller => 'projects', :action => 'add'
+    should_route :get, "/projects/new", :controller => 'projects', :action => 'new'
     should_route :get, "/projects/test", :controller => 'projects', :action => 'show', :id => 'test'
     should_route :get, "/projects/1.xml", :controller => 'projects', :action => 'show', :id => '1', :format => 'xml'
     should_route :get, "/projects/4223/settings", :controller => 'projects', :action => 'settings', :id => '4223'
     should_route :get, "/projects/4223/settings/members", :controller => 'projects', :action => 'settings', :id => '4223', :tab => 'members'
-    should_route :get, "/projects/567/destroy", :controller => 'projects', :action => 'destroy', :id => '567'
-    should_route :get, "/projects/33/files", :controller => 'projects', :action => 'list_files', :id => '33'
-    should_route :get, "/projects/33/files/new", :controller => 'projects', :action => 'add_file', :id => '33'
-    should_route :get, "/projects/33/roadmap", :controller => 'projects', :action => 'roadmap', :id => '33'
-    should_route :get, "/projects/33/activity", :controller => 'projects', :action => 'activity', :id => '33'
-    should_route :get, "/projects/33/activity.atom", :controller => 'projects', :action => 'activity', :id => '33', :format => 'atom'
+    should_route :get, "/projects/33/files", :controller => 'files', :action => 'index', :project_id => '33'
+    should_route :get, "/projects/33/files/new", :controller => 'files', :action => 'new', :project_id => '33'
+    should_route :get, "/projects/33/roadmap", :controller => 'versions', :action => 'index', :project_id => '33'
+    should_route :get, "/projects/33/activity", :controller => 'activities', :action => 'index', :id => '33'
+    should_route :get, "/projects/33/activity.atom", :controller => 'activities', :action => 'index', :id => '33', :format => 'atom'
     
-    should_route :post, "/projects/new", :controller => 'projects', :action => 'add'
-    should_route :post, "/projects.xml", :controller => 'projects', :action => 'add', :format => 'xml'
-    should_route :post, "/projects/4223/edit", :controller => 'projects', :action => 'edit', :id => '4223'
-    should_route :post, "/projects/64/destroy", :controller => 'projects', :action => 'destroy', :id => '64'
-    should_route :post, "/projects/33/files/new", :controller => 'projects', :action => 'add_file', :id => '33'
+    should_route :post, "/projects", :controller => 'projects', :action => 'create'
+    should_route :post, "/projects.xml", :controller => 'projects', :action => 'create', :format => 'xml'
+    should_route :post, "/projects/33/files", :controller => 'files', :action => 'create', :project_id => '33'
     should_route :post, "/projects/64/archive", :controller => 'projects', :action => 'archive', :id => '64'
     should_route :post, "/projects/64/unarchive", :controller => 'projects', :action => 'unarchive', :id => '64'
-    should_route :post, "/projects/64/activities/save", :controller => 'projects', :action => 'save_activities', :id => '64'
 
-    should_route :put, "/projects/1.xml", :controller => 'projects', :action => 'edit', :id => '1', :format => 'xml'
+    should_route :put, "/projects/64/enumerations", :controller => 'project_enumerations', :action => 'update', :project_id => '64'
+    should_route :put, "/projects/4223", :controller => 'projects', :action => 'update', :id => '4223'
+    should_route :put, "/projects/1.xml", :controller => 'projects', :action => 'update', :id => '1', :format => 'xml'
 
+    should_route :delete, "/projects/64", :controller => 'projects', :action => 'destroy', :id => '64'
     should_route :delete, "/projects/1.xml", :controller => 'projects', :action => 'destroy', :id => '1', :format => 'xml'
-    should_route :delete, "/projects/64/reset_activities", :controller => 'projects', :action => 'reset_activities', :id => '64'
+    should_route :delete, "/projects/64/enumerations", :controller => 'project_enumerations', :action => 'destroy', :project_id => '64'
   end
 
   context "repositories" do
@@ -252,10 +256,16 @@
     should_route :post, "/users/567/memberships/12/destroy", :controller => 'users', :action => 'destroy_membership', :id => '567', :membership_id => '12'
   end
 
+  # TODO: should they all be scoped under /projects/:project_id ?
   context "versions" do
     should_route :get, "/projects/foo/versions/new", :controller => 'versions', :action => 'new', :project_id => 'foo'
+    should_route :get, "/versions/show/1", :controller => 'versions', :action => 'show', :id => '1'
+    should_route :get, "/versions/edit/1", :controller => 'versions', :action => 'edit', :id => '1'
 
-    should_route :post, "/projects/foo/versions/new", :controller => 'versions', :action => 'new', :project_id => 'foo'
+    should_route :post, "/projects/foo/versions", :controller => 'versions', :action => 'create', :project_id => 'foo'
+    should_route :post, "/versions/update/1", :controller => 'versions', :action => 'update', :id => '1'
+
+    should_route :delete, "/versions/destroy/1", :controller => 'versions', :action => 'destroy', :id => '1'
   end
 
   context "wiki (singular, project's pages)" do
--- a/test/integration/issues_api_test.rb	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/integration/issues_api_test.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -198,7 +198,7 @@
     setup do
       @issue_count = Issue.count
       @journal_count = Journal.count
-      @attributes = {:subject => 'API update'}
+      @attributes = {:subject => 'API update', :notes => 'A new note'}
 
       put '/issues/1.xml', {:issue => @attributes}, :authorization => credentials('jsmith')
     end
@@ -214,10 +214,15 @@
       assert_equal Journal.count, @journal_count + 1
     end
 
+    should "add the note to the journal" do
+      journal = Journal.last
+      assert_equal "A new note", journal.notes
+    end
+
     should "update the issue" do
       issue = Issue.find(1)
       @attributes.each do |attribute, value|
-        assert_equal value, issue.send(attribute)
+        assert_equal value, issue.send(attribute) unless attribute == :notes
       end
     end
     
@@ -252,7 +257,7 @@
     setup do
       @issue_count = Issue.count
       @journal_count = Journal.count
-      @attributes = {:subject => 'API update'}
+      @attributes = {:subject => 'API update', :notes => 'A new note'}
 
       put '/issues/1.json', {:issue => @attributes}, :authorization => credentials('jsmith')
     end
@@ -268,13 +273,18 @@
       assert_equal Journal.count, @journal_count + 1
     end
 
+    should "add the note to the journal" do
+      journal = Journal.last
+      assert_equal "A new note", journal.notes
+    end
+
     should "update the issue" do
       issue = Issue.find(1)
       @attributes.each do |attribute, value|
-        assert_equal value, issue.send(attribute)
+        assert_equal value, issue.send(attribute) unless attribute == :notes
       end
     end
-    
+
   end
   
   context "PUT /issues/1.json with failed update" do
--- a/test/integration/issues_test.rb	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/integration/issues_test.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -69,7 +69,7 @@
     log_user('jsmith', 'jsmith')
     set_tmp_attachments_directory
 
-    put 'issues/1/edit',
+    put 'issues/1',
          :notes => 'Some notes',
          :attachments => {'1' => {'file' => uploaded_test_file('testfile.txt', 'text/plain'), 'description' => 'This is an attachment'}}
     assert_redirected_to "issues/1"
--- a/test/integration/lib/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/integration/lib/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/test/integration/lib
 http://redmine.rubyforge.org/svn
 
--- a/test/integration/lib/redmine/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/integration/lib/redmine/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/test/integration/lib/redmine
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:43.840131Z
+2010-09-23T14:37:45.439778Z
 2a5952348b30cbae983b5e3137b48ff0
 2009-09-04T03:24:20.372895Z
 2855
--- a/test/integration/routing_test.rb	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/integration/routing_test.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -19,8 +19,8 @@
 
 class RoutingTest < ActionController::IntegrationTest
   context "activities" do
-    should_route :get, "/activity", :controller => 'projects', :action => 'activity', :id => nil
-    should_route :get, "/activity.atom", :controller => 'projects', :action => 'activity', :id => nil, :format => 'atom'
+    should_route :get, "/activity", :controller => 'activities', :action => 'index', :id => nil
+    should_route :get, "/activity.atom", :controller => 'activities', :action => 'index', :id => nil, :format => 'atom'
   end
 
   context "attachments" do
@@ -91,14 +91,14 @@
     should_route :post, "/issues/1/quoted", :controller => 'journals', :action => 'new', :id => '1'
 
     should_route :get, "/issues/calendar", :controller => 'calendars', :action => 'show'
-    should_route :post, "/issues/calendar", :controller => 'calendars', :action => 'show'
+    should_route :put, "/issues/calendar", :controller => 'calendars', :action => 'update'
     should_route :get, "/projects/project-name/issues/calendar", :controller => 'calendars', :action => 'show', :project_id => 'project-name'
-    should_route :post, "/projects/project-name/issues/calendar", :controller => 'calendars', :action => 'show', :project_id => 'project-name'
+    should_route :put, "/projects/project-name/issues/calendar", :controller => 'calendars', :action => 'update', :project_id => 'project-name'
 
     should_route :get, "/issues/gantt", :controller => 'gantts', :action => 'show'
-    should_route :post, "/issues/gantt", :controller => 'gantts', :action => 'show'
+    should_route :put, "/issues/gantt", :controller => 'gantts', :action => 'update'
     should_route :get, "/projects/project-name/issues/gantt", :controller => 'gantts', :action => 'show', :project_id => 'project-name'
-    should_route :post, "/projects/project-name/issues/gantt", :controller => 'gantts', :action => 'show', :project_id => 'project-name'
+    should_route :put, "/projects/project-name/issues/gantt", :controller => 'gantts', :action => 'update', :project_id => 'project-name'
 
     should_route :get, "/issues/auto_complete", :controller => 'auto_completes', :action => 'issues'
 
@@ -156,41 +156,45 @@
     should_route :get, "/news/2", :controller => 'news', :action => 'show', :id => '2'
     should_route :get, "/projects/567/news/new", :controller => 'news', :action => 'new', :project_id => '567'
     should_route :get, "/news/234", :controller => 'news', :action => 'show', :id => '234'
+    should_route :get, "/news/567/edit", :controller => 'news', :action => 'edit', :id => '567'
 
-    should_route :post, "/projects/567/news/new", :controller => 'news', :action => 'new', :project_id => '567'
-    should_route :post, "/news/567/edit", :controller => 'news', :action => 'edit', :id => '567'
+    should_route :post, "/projects/567/news", :controller => 'news', :action => 'create', :project_id => '567'
     should_route :post, "/news/567/destroy", :controller => 'news', :action => 'destroy', :id => '567'
+    should_route :post, "/news/567/comments", :controller => 'comments', :action => 'create', :id => '567'
+    
+    should_route :put, "/news/567/edit", :controller => 'news', :action => 'update', :id => '567'
+
+    should_route :delete, "/news/567/comments/15", :controller => 'comments', :action => 'destroy', :id => '567', :comment_id => '15'
   end
 
   context "projects" do
     should_route :get, "/projects", :controller => 'projects', :action => 'index'
     should_route :get, "/projects.atom", :controller => 'projects', :action => 'index', :format => 'atom'
     should_route :get, "/projects.xml", :controller => 'projects', :action => 'index', :format => 'xml'
-    should_route :get, "/projects/new", :controller => 'projects', :action => 'add'
+    should_route :get, "/projects/new", :controller => 'projects', :action => 'new'
     should_route :get, "/projects/test", :controller => 'projects', :action => 'show', :id => 'test'
     should_route :get, "/projects/1.xml", :controller => 'projects', :action => 'show', :id => '1', :format => 'xml'
     should_route :get, "/projects/4223/settings", :controller => 'projects', :action => 'settings', :id => '4223'
     should_route :get, "/projects/4223/settings/members", :controller => 'projects', :action => 'settings', :id => '4223', :tab => 'members'
-    should_route :get, "/projects/567/destroy", :controller => 'projects', :action => 'destroy', :id => '567'
-    should_route :get, "/projects/33/files", :controller => 'projects', :action => 'list_files', :id => '33'
-    should_route :get, "/projects/33/files/new", :controller => 'projects', :action => 'add_file', :id => '33'
-    should_route :get, "/projects/33/roadmap", :controller => 'projects', :action => 'roadmap', :id => '33'
-    should_route :get, "/projects/33/activity", :controller => 'projects', :action => 'activity', :id => '33'
-    should_route :get, "/projects/33/activity.atom", :controller => 'projects', :action => 'activity', :id => '33', :format => 'atom'
+    should_route :get, "/projects/33/files", :controller => 'files', :action => 'index', :project_id => '33'
+    should_route :get, "/projects/33/files/new", :controller => 'files', :action => 'new', :project_id => '33'
+    should_route :get, "/projects/33/roadmap", :controller => 'versions', :action => 'index', :project_id => '33'
+    should_route :get, "/projects/33/activity", :controller => 'activities', :action => 'index', :id => '33'
+    should_route :get, "/projects/33/activity.atom", :controller => 'activities', :action => 'index', :id => '33', :format => 'atom'
     
-    should_route :post, "/projects/new", :controller => 'projects', :action => 'add'
-    should_route :post, "/projects.xml", :controller => 'projects', :action => 'add', :format => 'xml'
-    should_route :post, "/projects/4223/edit", :controller => 'projects', :action => 'edit', :id => '4223'
-    should_route :post, "/projects/64/destroy", :controller => 'projects', :action => 'destroy', :id => '64'
-    should_route :post, "/projects/33/files/new", :controller => 'projects', :action => 'add_file', :id => '33'
+    should_route :post, "/projects", :controller => 'projects', :action => 'create'
+    should_route :post, "/projects.xml", :controller => 'projects', :action => 'create', :format => 'xml'
+    should_route :post, "/projects/33/files", :controller => 'files', :action => 'create', :project_id => '33'
     should_route :post, "/projects/64/archive", :controller => 'projects', :action => 'archive', :id => '64'
     should_route :post, "/projects/64/unarchive", :controller => 'projects', :action => 'unarchive', :id => '64'
-    should_route :post, "/projects/64/activities/save", :controller => 'projects', :action => 'save_activities', :id => '64'
 
-    should_route :put, "/projects/1.xml", :controller => 'projects', :action => 'edit', :id => '1', :format => 'xml'
+    should_route :put, "/projects/64/enumerations", :controller => 'project_enumerations', :action => 'update', :project_id => '64'
+    should_route :put, "/projects/4223", :controller => 'projects', :action => 'update', :id => '4223'
+    should_route :put, "/projects/1.xml", :controller => 'projects', :action => 'update', :id => '1', :format => 'xml'
 
+    should_route :delete, "/projects/64", :controller => 'projects', :action => 'destroy', :id => '64'
     should_route :delete, "/projects/1.xml", :controller => 'projects', :action => 'destroy', :id => '1', :format => 'xml'
-    should_route :delete, "/projects/64/reset_activities", :controller => 'projects', :action => 'reset_activities', :id => '64'
+    should_route :delete, "/projects/64/enumerations", :controller => 'project_enumerations', :action => 'destroy', :project_id => '64'
   end
 
   context "repositories" do
@@ -252,10 +256,16 @@
     should_route :post, "/users/567/memberships/12/destroy", :controller => 'users', :action => 'destroy_membership', :id => '567', :membership_id => '12'
   end
 
+  # TODO: should they all be scoped under /projects/:project_id ?
   context "versions" do
     should_route :get, "/projects/foo/versions/new", :controller => 'versions', :action => 'new', :project_id => 'foo'
+    should_route :get, "/versions/show/1", :controller => 'versions', :action => 'show', :id => '1'
+    should_route :get, "/versions/edit/1", :controller => 'versions', :action => 'edit', :id => '1'
 
-    should_route :post, "/projects/foo/versions/new", :controller => 'versions', :action => 'new', :project_id => 'foo'
+    should_route :post, "/projects/foo/versions", :controller => 'versions', :action => 'create', :project_id => 'foo'
+    should_route :post, "/versions/update/1", :controller => 'versions', :action => 'update', :id => '1'
+
+    should_route :delete, "/versions/destroy/1", :controller => 'versions', :action => 'destroy', :id => '1'
   end
 
   context "wiki (singular, project's pages)" do
--- a/test/mocks/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/mocks/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/test/mocks
 http://redmine.rubyforge.org/svn
 
@@ -38,7 +38,7 @@
 
 
 
-2010-07-23T14:49:44.224277Z
+2010-09-23T14:37:45.439778Z
 c73745cf74166bf38552d6469b74b190
 2009-09-20T14:06:57.257282Z
 2895
--- a/test/mocks/development/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/mocks/development/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/test/mocks/development
 http://redmine.rubyforge.org/svn
 
--- a/test/mocks/test/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/mocks/test/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/test/mocks/test
 http://redmine.rubyforge.org/svn
 
--- a/test/object_daddy_helpers.rb	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/object_daddy_helpers.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -13,6 +13,11 @@
     User.spawn(attributes)
   end
 
+  def User.add_to_project(user, project, roles)
+    roles = [roles] unless roles.is_a?(Array)
+    Member.generate!(:principal => user, :project => project, :roles => roles)
+  end
+
   # Generate the default Query
   def Query.generate_default!(attributes={})
     query = Query.spawn(attributes)
@@ -25,8 +30,9 @@
   def Issue.generate_for_project!(project, attributes={})
     issue = Issue.spawn(attributes) do |issue|
       issue.project = project
+      issue.tracker = project.trackers.first unless project.trackers.empty?
+      yield issue if block_given?
     end
-    issue.tracker = project.trackers.first unless project.trackers.empty?
     issue.save!
     issue
   end
--- a/test/unit/.svn/all-wcprops	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/unit/.svn/all-wcprops	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 34
-/svn/!svn/ver/4013/trunk/test/unit
+/svn/!svn/ver/4167/trunk/test/unit
 END
 document_test.rb
 K 25
@@ -37,7 +37,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 50
-/svn/!svn/ver/3633/trunk/test/unit/version_test.rb
+/svn/!svn/ver/4072/trunk/test/unit/version_test.rb
 END
 enumeration_test.rb
 K 25
@@ -55,7 +55,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 48
-/svn/!svn/ver/3683/trunk/test/unit/issue_test.rb
+/svn/!svn/ver/4072/trunk/test/unit/issue_test.rb
 END
 issue_status_test.rb
 K 25
@@ -87,18 +87,18 @@
 V 60
 /svn/!svn/ver/2887/trunk/test/unit/repository_bazaar_test.rb
 END
+changeset_test.rb
+K 25
+svn:wc:ra_dav:version-url
+V 52
+/svn/!svn/ver/3466/trunk/test/unit/changeset_test.rb
+END
 role_test.rb
 K 25
 svn:wc:ra_dav:version-url
 V 47
 /svn/!svn/ver/3363/trunk/test/unit/role_test.rb
 END
-changeset_test.rb
-K 25
-svn:wc:ra_dav:version-url
-V 52
-/svn/!svn/ver/3466/trunk/test/unit/changeset_test.rb
-END
 comment_test.rb
 K 25
 svn:wc:ra_dav:version-url
@@ -139,7 +139,19 @@
 K 25
 svn:wc:ra_dav:version-url
 V 47
-/svn/!svn/ver/3873/trunk/test/unit/user_test.rb
+/svn/!svn/ver/4058/trunk/test/unit/user_test.rb
+END
+time_entry_test.rb
+K 25
+svn:wc:ra_dav:version-url
+V 53
+/svn/!svn/ver/4087/trunk/test/unit/time_entry_test.rb
+END
+repository_test.rb
+K 25
+svn:wc:ra_dav:version-url
+V 53
+/svn/!svn/ver/2895/trunk/test/unit/repository_test.rb
 END
 mail_handler_test.rb
 K 25
@@ -147,17 +159,11 @@
 V 55
 /svn/!svn/ver/3801/trunk/test/unit/mail_handler_test.rb
 END
-repository_test.rb
+auth_source_ldap_test.rb
 K 25
 svn:wc:ra_dav:version-url
-V 53
-/svn/!svn/ver/2895/trunk/test/unit/repository_test.rb
-END
-time_entry_test.rb
-K 25
-svn:wc:ra_dav:version-url
-V 53
-/svn/!svn/ver/3232/trunk/test/unit/time_entry_test.rb
+V 59
+/svn/!svn/ver/3492/trunk/test/unit/auth_source_ldap_test.rb
 END
 principal_test.rb
 K 25
@@ -165,11 +171,11 @@
 V 52
 /svn/!svn/ver/3152/trunk/test/unit/principal_test.rb
 END
-auth_source_ldap_test.rb
+repository_filesystem_test.rb
 K 25
 svn:wc:ra_dav:version-url
-V 59
-/svn/!svn/ver/3492/trunk/test/unit/auth_source_ldap_test.rb
+V 64
+/svn/!svn/ver/2887/trunk/test/unit/repository_filesystem_test.rb
 END
 project_nested_set_test.rb
 K 25
@@ -177,12 +183,6 @@
 V 61
 /svn/!svn/ver/3354/trunk/test/unit/project_nested_set_test.rb
 END
-repository_filesystem_test.rb
-K 25
-svn:wc:ra_dav:version-url
-V 64
-/svn/!svn/ver/2887/trunk/test/unit/repository_filesystem_test.rb
-END
 wiki_redirect_test.rb
 K 25
 svn:wc:ra_dav:version-url
@@ -271,7 +271,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 48
-/svn/!svn/ver/3927/trunk/test/unit/query_test.rb
+/svn/!svn/ver/4106/trunk/test/unit/query_test.rb
 END
 search_test.rb
 K 25
@@ -283,7 +283,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 50
-/svn/!svn/ver/3760/trunk/test/unit/project_test.rb
+/svn/!svn/ver/4072/trunk/test/unit/project_test.rb
 END
 custom_value_test.rb
 K 25
@@ -301,7 +301,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 49
-/svn/!svn/ver/3907/trunk/test/unit/mailer_test.rb
+/svn/!svn/ver/4167/trunk/test/unit/mailer_test.rb
 END
 news_test.rb
 K 25
--- a/test/unit/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/unit/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,14 +1,14 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/test/unit
 http://redmine.rubyforge.org/svn
 
 
 
-2010-08-22T18:42:00.112555Z
-4013
+2010-09-20T23:17:51.402972Z
+4167
 edavis10
 
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:43.616098Z
+2010-09-23T14:37:45.475805Z
 050f600e502bb49c47e831975074cb3e
 2009-11-26T20:12:20.779591Z
 3095
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:43.616098Z
+2010-09-23T14:37:45.511762Z
 3ba1709e8893abeaa88fb00febcadc05
 2009-09-20T14:06:57.257282Z
 2895
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:43.616098Z
+2010-09-23T14:37:45.507762Z
 b599c36bc2156f6812220a40f054d41e
 2010-07-06T02:07:46.557097Z
 3828
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:43.616098Z
+2010-09-23T14:37:45.507762Z
 09835c4db0f8cf952808da70c56f4efd
 2009-09-13T17:14:35.707881Z
 2887
@@ -168,7 +168,7 @@
 
 
 
-2010-07-23T14:49:43.616098Z
+2010-09-23T14:37:45.483825Z
 229c99b63f05b560d8db3d2dbcb9e8b8
 2010-05-01T14:07:36.553776Z
 3729
@@ -202,11 +202,11 @@
 
 
 
-2010-07-23T14:49:43.616098Z
-a54983ad74be5184bdc985cca4622b71
-2010-04-11T13:20:02.302574Z
-3633
-jplang
+2010-09-24T12:48:25.787400Z
+81bfed065f741b348305d4d050df10af
+2010-09-10T03:09:02.311267Z
+4072
+edavis10
 has-props
 
 
@@ -228,7 +228,7 @@
 
 
 
-7230
+9748
 
 enumeration_test.rb
 file
@@ -236,7 +236,7 @@
 
 
 
-2010-07-23T14:49:43.616098Z
+2010-09-23T14:37:45.475805Z
 c3eca121e6f2d6794e4eeecfa9f165a0
 2009-12-06T10:28:20.099964Z
 3123
@@ -270,7 +270,7 @@
 
 
 
-2010-07-23T14:49:43.616098Z
+2010-09-23T14:37:45.471762Z
 9a7c54f1a9af6217095062f77d08f10e
 2009-09-13T17:14:35.707881Z
 2887
@@ -304,11 +304,11 @@
 
 
 
-2010-07-23T14:49:43.616098Z
-129e7f4c1a404cfdec667df2a7cd8a89
-2010-04-18T12:47:41.103926Z
-3683
-jplang
+2010-09-24T12:48:25.791803Z
+0e1f710ecc564f8951d5f5805c440bc8
+2010-09-10T03:09:02.311267Z
+4072
+edavis10
 has-props
 
 
@@ -330,7 +330,7 @@
 
 
 
-24974
+26011
 
 issue_status_test.rb
 file
@@ -338,7 +338,7 @@
 
 
 
-2010-07-28T11:07:47.032286Z
+2010-09-23T14:37:45.483825Z
 2c2ecec9fc2708d6aacff16c5aa29b87
 2010-07-25T10:48:27.199057Z
 3881
@@ -372,7 +372,7 @@
 
 
 
-2010-07-23T14:49:43.616098Z
+2010-09-23T14:37:45.511762Z
 773260be3210a157ed033c4d9097572c
 2009-10-21T22:34:22.740755Z
 2945
@@ -406,7 +406,7 @@
 
 
 
-2010-07-23T14:49:43.620098Z
+2010-09-23T14:37:45.511762Z
 f1aa4fc274b7ab94762c0dbc533a15fb
 2009-12-18T15:41:32.828284Z
 3188
@@ -440,7 +440,7 @@
 
 
 
-2010-07-23T14:49:43.620098Z
+2010-09-23T14:37:45.507762Z
 0d3c13d5aab904f2bb8f1a1750219a81
 2010-06-20T16:08:26.745839Z
 3800
@@ -474,7 +474,7 @@
 
 
 
-2010-07-23T14:49:43.620098Z
+2010-09-23T14:37:45.507762Z
 5334a637f05540a25a9769683dec3fca
 2009-09-13T17:14:35.707881Z
 2887
@@ -508,7 +508,7 @@
 
 
 
-2010-07-23T14:49:43.620098Z
+2010-09-23T14:37:45.475805Z
 b30a5968570e514baa53fccba66babd6
 2010-02-20T11:24:41.988635Z
 3466
@@ -542,7 +542,7 @@
 
 
 
-2010-07-23T14:49:43.620098Z
+2010-09-23T14:37:45.507762Z
 01913aeac402c002ff86c6497513c795
 2010-02-03T17:47:47.868223Z
 3363
@@ -579,7 +579,7 @@
 
 
 
-2010-07-23T14:49:43.620098Z
+2010-09-23T14:37:45.475805Z
 6bc5dfa26b0c2afd52f79678106a1247
 2009-09-20T14:06:57.257282Z
 2895
@@ -613,7 +613,7 @@
 
 
 
-2010-07-23T14:49:43.620098Z
+2010-09-23T14:37:45.511762Z
 0187a399b60b9c512b74aa8e2eacbe31
 2010-04-11T12:56:18.077630Z
 3632
@@ -650,7 +650,7 @@
 
 
 
-2010-07-23T14:49:43.620098Z
+2010-09-23T14:37:45.475805Z
 4e8fc1d75ed786b954e18d8bac093daf
 2009-09-13T17:14:35.707881Z
 2887
@@ -684,7 +684,7 @@
 
 
 
-2010-07-23T14:49:43.620098Z
+2010-09-23T14:37:45.483825Z
 dd19b3a0292fa879e0e4b3de171c4e16
 2009-09-13T17:14:35.707881Z
 2887
@@ -718,7 +718,7 @@
 
 
 
-2010-07-23T14:49:43.620098Z
+2010-09-23T14:37:45.475805Z
 1457b47330c1f1cc47c0005509687cfa
 2009-11-27T20:49:08.242340Z
 3100
@@ -752,7 +752,7 @@
 
 
 
-2010-07-23T14:49:43.620098Z
+2010-09-23T14:37:45.475805Z
 31716c010951f7a1b2d23cc481341cab
 2009-09-13T17:14:35.707881Z
 2887
@@ -786,11 +786,11 @@
 
 
 
-2010-07-28T11:07:47.032286Z
-dfab6e6236689b96b48e527cb9b937cf
-2010-07-25T09:50:41.235614Z
-3873
-jplang
+2010-09-24T12:48:25.791803Z
+ee0a9f52ec52313eb2a7e6496590a3fc
+2010-09-03T20:16:00.529106Z
+4058
+jbbarth
 has-props
 
 
@@ -812,7 +812,7 @@
 
 
 
-12037
+13887
 
 mail_handler_test.rb
 file
@@ -820,7 +820,7 @@
 
 
 
-2010-07-23T14:49:43.624109Z
+2010-09-23T14:37:45.503764Z
 53cf7d3c94f63febd50685da486d8adf
 2010-06-20T16:22:36.211973Z
 3801
@@ -854,7 +854,7 @@
 
 
 
-2010-07-23T14:49:43.620098Z
+2010-09-23T14:37:45.507762Z
 fe604b00b9f78fbe70c9c48bac2cd05d
 2009-09-20T14:06:57.257282Z
 2895
@@ -888,11 +888,11 @@
 
 
 
-2010-07-23T14:49:43.620098Z
-7ab9e934925726ee86f4063f83b093a5
-2009-12-23T20:05:46.097327Z
-3232
-jplang
+2010-09-24T12:48:25.791803Z
+461828d317588aef0b8ee8f85f11c62c
+2010-09-14T19:02:25.847894Z
+4087
+edavis10
 has-props
 
 
@@ -914,7 +914,7 @@
 
 
 
-1819
+3574
 
 principal_test.rb
 file
@@ -922,7 +922,7 @@
 
 
 
-2010-07-23T14:49:43.624109Z
+2010-09-23T14:37:45.503764Z
 f36cb1e2cd1746903fbd8d269179f177
 2009-12-12T06:18:40.500267Z
 3152
@@ -956,7 +956,7 @@
 
 
 
-2010-07-23T14:49:43.624109Z
+2010-09-23T14:37:45.471762Z
 a39d14a44a0576b6ec4bca546bded4f8
 2010-02-26T09:13:12.187275Z
 3492
@@ -990,7 +990,7 @@
 
 
 
-2010-07-23T14:49:43.624109Z
+2010-09-23T14:37:45.507762Z
 abb72953856c404a15739803efb36f1e
 2009-09-13T17:14:35.707881Z
 2887
@@ -1024,7 +1024,7 @@
 
 
 
-2010-07-23T14:49:43.624109Z
+2010-09-23T14:37:45.503764Z
 2113efe7d95f20d9eeaffdc988f35894
 2010-01-31T10:39:42.608434Z
 3354
@@ -1058,7 +1058,7 @@
 
 
 
-2010-07-23T14:49:43.624109Z
+2010-09-23T14:37:45.503764Z
 20812440391bc42bd1e4b87f2bb3dbc9
 2009-09-13T17:14:35.707881Z
 2887
@@ -1092,7 +1092,7 @@
 
 
 
-2010-07-23T14:49:43.624109Z
+2010-09-23T14:37:45.511762Z
 bb58e8be92cdf18494b20d79275f4c65
 2009-09-13T17:14:35.707881Z
 2887
@@ -1126,7 +1126,7 @@
 
 
 
-2010-07-23T14:49:43.624109Z
+2010-09-23T14:37:45.483825Z
 3356be5d35b57347f74d7efcfca2ea4b
 2009-09-13T17:14:35.707881Z
 2887
@@ -1160,7 +1160,7 @@
 
 
 
-2010-07-23T14:49:43.624109Z
+2010-09-23T14:37:45.471762Z
 e1a50ba850106db6963584c8b99fd74c
 2010-06-19T03:54:23.298445Z
 3773
@@ -1194,7 +1194,7 @@
 
 
 
-2010-07-23T14:49:43.624109Z
+2010-09-23T14:37:45.483825Z
 8dd5e3817f0e2e9e8c8a8a88e03fd090
 2009-12-06T10:28:20.099964Z
 3123
@@ -1228,7 +1228,7 @@
 
 
 
-2010-07-23T14:49:43.624109Z
+2010-09-23T14:37:45.507762Z
 68dda2425484afbc3289b19b0af6c11b
 2009-09-13T17:14:35.707881Z
 2887
@@ -1262,7 +1262,7 @@
 
 
 
-2010-07-23T14:49:43.624109Z
+2010-09-23T14:37:45.507762Z
 d7f9177ff34693e1a7cfecd0cbe54a4d
 2009-09-13T17:14:35.707881Z
 2887
@@ -1296,7 +1296,7 @@
 
 
 
-2010-07-23T14:49:43.624109Z
+2010-09-23T14:37:45.471762Z
 3f0d1a0fc3ebcd10386f704f30411caa
 2009-09-13T17:14:35.707881Z
 2887
@@ -1330,7 +1330,7 @@
 
 
 
-2010-07-23T14:49:43.624109Z
+2010-09-23T14:37:45.475805Z
 68e58d510faac50d9e774a3b231e6bd0
 2009-09-13T17:14:35.707881Z
 2887
@@ -1364,7 +1364,7 @@
 
 
 
-2010-07-23T14:49:43.628127Z
+2010-09-23T14:37:45.511762Z
 ea14acc0bf5df9331263c24aa933a721
 2010-04-30T11:02:27.973988Z
 3705
@@ -1398,7 +1398,7 @@
 
 
 
-2010-07-23T14:49:43.628127Z
+2010-09-23T14:37:45.511762Z
 8aa3dd069d03e45cf6a40befaf3ac91f
 2009-12-27T11:57:13.519273Z
 3254
@@ -1432,7 +1432,7 @@
 
 
 
-2010-07-23T14:49:43.628127Z
+2010-09-23T14:37:45.475805Z
 530c6c79db914598316f923400031643
 2009-09-13T17:14:35.707881Z
 2887
@@ -1466,7 +1466,7 @@
 
 
 
-2010-07-23T14:49:43.628127Z
+2010-09-23T14:37:45.511762Z
 e2e9a2270cda1fc763b02ca60e6758a3
 2010-04-11T12:56:18.077630Z
 3632
@@ -1500,7 +1500,7 @@
 
 
 
-2010-07-23T14:49:43.628127Z
+2010-09-23T14:37:45.483825Z
 5985280247858f77d45d21b26e65c846
 2010-06-30T02:45:34.835470Z
 3821
@@ -1534,11 +1534,11 @@
 
 
 
-2010-08-25T15:27:52.586599Z
-88e994d8bbc719f7845777d25082a782
-2010-08-08T09:01:25.536716Z
-3927
-jbbarth
+2010-09-24T12:48:25.791803Z
+950344f6f29a4c954bd631c9ab64b447
+2010-09-20T02:55:32.251493Z
+4106
+edavis10
 has-props
 
 
@@ -1560,7 +1560,7 @@
 
 
 
-14301
+20070
 
 search_test.rb
 file
@@ -1568,7 +1568,7 @@
 
 
 
-2010-07-23T14:49:43.628127Z
+2010-09-23T14:37:45.507762Z
 32ca2cd3b7eedfa62d9b87754e4273ca
 2009-09-13T17:14:35.707881Z
 2887
@@ -1602,10 +1602,10 @@
 
 
 
-2010-07-23T14:49:43.628127Z
-ec549e97ba009695d28b6bf7d1a62442
-2010-05-27T17:16:10.557962Z
-3760
+2010-09-24T12:48:25.791803Z
+987d196dcce3cb336836d449fd1cbd78
+2010-09-10T03:09:02.311267Z
+4072
 edavis10
 has-props
 
@@ -1628,7 +1628,7 @@
 
 
 
-31477
+35653
 
 custom_value_test.rb
 file
@@ -1636,7 +1636,7 @@
 
 
 
-2010-07-23T14:49:43.628127Z
+2010-09-23T14:37:45.475805Z
 e08bf636b0f3ecc54432d0bb395c2a5d
 2009-10-10T10:16:00.250819Z
 2905
@@ -1670,7 +1670,7 @@
 
 
 
-2010-07-23T14:49:43.628127Z
+2010-09-23T14:37:45.503764Z
 ed7eec76d8a869dfce4215fc249607bf
 2010-04-30T09:57:58.536766Z
 3700
@@ -1704,10 +1704,10 @@
 
 
 
-2010-08-25T15:27:52.586599Z
-55e60d6f281a63b738acbc756170d544
-2010-08-03T16:01:53.564278Z
-3907
+2010-09-24T12:48:25.791803Z
+53a7d37c2d3f37d4bd092f325cd8d9ac
+2010-09-20T23:17:51.402972Z
+4167
 edavis10
 has-props
 
@@ -1730,7 +1730,7 @@
 
 
 
-13115
+13583
 
 news_test.rb
 file
@@ -1738,7 +1738,7 @@
 
 
 
-2010-07-23T14:49:43.628127Z
+2010-09-23T14:37:45.503764Z
 6b43ef906ed80cc6a8e878c03d52ff53
 2009-09-13T17:14:35.707881Z
 2887
@@ -1772,7 +1772,7 @@
 
 
 
-2010-07-23T14:49:43.632158Z
+2010-09-23T14:37:45.511762Z
 7bcef4f9729fe09696f6ef878c6989dd
 2009-09-20T14:06:57.257282Z
 2895
@@ -1806,7 +1806,7 @@
 
 
 
-2010-07-23T14:49:43.632158Z
+2010-09-23T14:37:45.475805Z
 c2e6042c8a03b41f1b6efe0e0b1c8df1
 2009-09-13T17:14:35.707881Z
 2887
@@ -1840,7 +1840,7 @@
 
 
 
-2010-07-23T14:49:43.632158Z
+2010-09-23T14:37:45.507762Z
 b53999e1c089a0c5bbc8dfedb77cf761
 2009-09-20T14:06:57.257282Z
 2895
@@ -1874,7 +1874,7 @@
 
 
 
-2010-07-23T14:49:43.632158Z
+2010-09-23T14:37:45.507762Z
 27440b61f82014e00e991b4f00595ae5
 2009-10-18T22:25:00.956502Z
 2930
--- a/test/unit/.svn/text-base/issue_test.rb.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/unit/.svn/text-base/issue_test.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -510,6 +510,28 @@
     assert !Issue.new(:due_date => nil).overdue?
     assert !Issue.new(:due_date => 1.day.ago.to_date, :status => IssueStatus.find(:first, :conditions => {:is_closed => true})).overdue?
   end
+
+  context "#behind_schedule?" do
+    should "be false if the issue has no start_date" do
+      assert !Issue.new(:start_date => nil, :due_date => 1.day.from_now.to_date, :done_ratio => 0).behind_schedule?
+    end
+
+    should "be false if the issue has no end_date" do
+      assert !Issue.new(:start_date => 1.day.from_now.to_date, :due_date => nil, :done_ratio => 0).behind_schedule?
+    end
+
+    should "be false if the issue has more done than it's calendar time" do
+      assert !Issue.new(:start_date => 50.days.ago.to_date, :due_date => 50.days.from_now.to_date, :done_ratio => 90).behind_schedule?
+    end
+
+    should "be true if the issue hasn't been started at all" do
+      assert Issue.new(:start_date => 1.day.ago.to_date, :due_date => 1.day.from_now.to_date, :done_ratio => 0).behind_schedule?
+    end
+
+    should "be true if the issue has used more calendar time than it's done ratio" do
+      assert Issue.new(:start_date => 100.days.ago.to_date, :due_date => Date.today, :done_ratio => 90).behind_schedule?
+    end
+  end
   
   def test_assignable_users
     assert_kind_of User, Issue.find(1).assignable_users.first
--- a/test/unit/.svn/text-base/mailer_test.rb.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/unit/.svn/text-base/mailer_test.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -355,6 +355,16 @@
     assert_equal '1 issue(s) due in the next 42 days', mail.subject
   end
   
+  def test_reminders_for_users
+    Mailer.reminders(:days => 42, :users => ['5'])
+    assert_equal 0, ActionMailer::Base.deliveries.size # No mail for dlopper
+    Mailer.reminders(:days => 42, :users => ['3'])
+    assert_equal 1, ActionMailer::Base.deliveries.size # No mail for dlopper
+    mail = ActionMailer::Base.deliveries.last
+    assert mail.bcc.include?('dlopper@somenet.foo')
+    assert mail.body.include?('Bug #3: Error 281 when updating a recipe')
+  end
+  
   def last_email
     mail = ActionMailer::Base.deliveries.last
     assert_not_nil mail
--- a/test/unit/.svn/text-base/project_test.rb.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/unit/.svn/text-base/project_test.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -842,4 +842,122 @@
     
   end
 
+  context "#start_date" do
+    setup do
+      ProjectCustomField.destroy_all # Custom values are a mess to isolate in tests
+      @project = Project.generate!(:identifier => 'test0')
+      @project.trackers << Tracker.generate!
+    end
+    
+    should "be nil if there are no issues on the project" do
+      assert_nil @project.start_date
+    end
+
+    should "be nil if issue tracking is disabled" do
+      Issue.generate_for_project!(@project, :start_date => Date.today)
+      @project.enabled_modules.find_all_by_name('issue_tracking').each {|m| m.destroy}
+      @project.reload
+      
+      assert_nil @project.start_date
+    end
+
+    should "be the earliest start date of it's issues" do
+      early = 7.days.ago.to_date
+      Issue.generate_for_project!(@project, :start_date => Date.today)
+      Issue.generate_for_project!(@project, :start_date => early)
+
+      assert_equal early, @project.start_date
+    end
+
+  end
+
+  context "#due_date" do
+    setup do
+      ProjectCustomField.destroy_all # Custom values are a mess to isolate in tests
+      @project = Project.generate!(:identifier => 'test0')
+      @project.trackers << Tracker.generate!
+    end
+    
+    should "be nil if there are no issues on the project" do
+      assert_nil @project.due_date
+    end
+
+    should "be nil if issue tracking is disabled" do
+      Issue.generate_for_project!(@project, :due_date => Date.today)
+      @project.enabled_modules.find_all_by_name('issue_tracking').each {|m| m.destroy}
+      @project.reload
+      
+      assert_nil @project.due_date
+    end
+
+    should "be the latest due date of it's issues" do
+      future = 7.days.from_now.to_date
+      Issue.generate_for_project!(@project, :due_date => future)
+      Issue.generate_for_project!(@project, :due_date => Date.today)
+
+      assert_equal future, @project.due_date
+    end
+
+    should "be the latest due date of it's versions" do
+      future = 7.days.from_now.to_date
+      @project.versions << Version.generate!(:effective_date => future)
+      @project.versions << Version.generate!(:effective_date => Date.today)
+      
+
+      assert_equal future, @project.due_date
+
+    end
+
+    should "pick the latest date from it's issues and versions" do
+      future = 7.days.from_now.to_date
+      far_future = 14.days.from_now.to_date
+      Issue.generate_for_project!(@project, :due_date => far_future)
+      @project.versions << Version.generate!(:effective_date => future)
+      
+      assert_equal far_future, @project.due_date
+    end
+
+  end
+
+  context "Project#completed_percent" do
+    setup do
+      ProjectCustomField.destroy_all # Custom values are a mess to isolate in tests
+      @project = Project.generate!(:identifier => 'test0')
+      @project.trackers << Tracker.generate!
+    end
+
+    context "no versions" do
+      should "be 100" do
+        assert_equal 100, @project.completed_percent
+      end
+    end
+
+    context "with versions" do
+      should "return 0 if the versions have no issues" do
+        Version.generate!(:project => @project)
+        Version.generate!(:project => @project)
+
+        assert_equal 0, @project.completed_percent
+      end
+
+      should "return 100 if the version has only closed issues" do
+        v1 = Version.generate!(:project => @project)
+        Issue.generate_for_project!(@project, :status => IssueStatus.find_by_name('Closed'), :fixed_version => v1)
+        v2 = Version.generate!(:project => @project)
+        Issue.generate_for_project!(@project, :status => IssueStatus.find_by_name('Closed'), :fixed_version => v2)
+
+        assert_equal 100, @project.completed_percent
+      end
+
+      should "return the averaged completed percent of the versions (not weighted)" do
+        v1 = Version.generate!(:project => @project)
+        Issue.generate_for_project!(@project, :status => IssueStatus.find_by_name('New'), :estimated_hours => 10, :done_ratio => 50, :fixed_version => v1)
+        v2 = Version.generate!(:project => @project)
+        Issue.generate_for_project!(@project, :status => IssueStatus.find_by_name('New'), :estimated_hours => 10, :done_ratio => 50, :fixed_version => v2)
+
+        assert_equal 50, @project.completed_percent
+      end
+
+    end
+  end
 end
--- a/test/unit/.svn/text-base/query_test.rb.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/unit/.svn/text-base/query_test.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -48,6 +48,16 @@
       :conditions => query.statement
   end
 
+  def assert_find_issues_with_query_is_successful(query)
+    assert_nothing_raised do
+      find_issues_with_query(query)
+    end
+  end
+
+  def assert_query_statement_includes(query, condition)
+    assert query.statement.include?(condition), "Query statement condition not found in: #{query.statement}"
+  end
+
   def test_query_should_allow_shared_versions_for_a_project_query
     subproject_version = Version.find(4)
     query = Query.new(:project => Project.find(1), :name => '_')
@@ -362,11 +372,153 @@
   end
 
   context "#available_filters" do
+    setup do
+      @query = Query.new(:name => "_")
+    end
+    
     should "include users of visible projects in cross-project view" do
-      query = Query.new(:name => "_")
-      users = query.available_filters["assigned_to_id"]
+      users = @query.available_filters["assigned_to_id"]
       assert_not_nil users
       assert users[:values].map{|u|u[1]}.include?("3")
     end
+
+    context "'member_of_group' filter" do
+      should "be present" do
+        assert @query.available_filters.keys.include?("member_of_group")
+      end
+      
+      should "be an optional list" do
+        assert_equal :list_optional, @query.available_filters["member_of_group"][:type]
+      end
+      
+      should "have a list of the groups as values" do
+        Group.destroy_all # No fixtures
+        group1 = Group.generate!.reload
+        group2 = Group.generate!.reload
+
+        expected_group_list = [
+                               [group1.name, group1.id],
+                               [group2.name, group2.id]
+                              ]
+        assert_equal expected_group_list.sort, @query.available_filters["member_of_group"][:values].sort
+      end
+
+    end
+
+    context "'assigned_to_role' filter" do
+      should "be present" do
+        assert @query.available_filters.keys.include?("assigned_to_role")
+      end
+      
+      should "be an optional list" do
+        assert_equal :list_optional, @query.available_filters["assigned_to_role"][:type]
+      end
+      
+      should "have a list of the Roles as values" do
+        assert @query.available_filters["assigned_to_role"][:values].include?(['Manager',1])
+        assert @query.available_filters["assigned_to_role"][:values].include?(['Developer',2])
+        assert @query.available_filters["assigned_to_role"][:values].include?(['Reporter',3])
+      end
+
+      should "not include the built in Roles as values" do
+        assert ! @query.available_filters["assigned_to_role"][:values].include?(['Non member',4])
+        assert ! @query.available_filters["assigned_to_role"][:values].include?(['Anonymous',5])
+      end
+
+    end
+
   end
+
+  context "#statement" do
+    context "with 'member_of_group' filter" do
+      setup do
+        Group.destroy_all # No fixtures
+        @user_in_group = User.generate!
+        @second_user_in_group = User.generate!
+        @user_in_group2 = User.generate!
+        @user_not_in_group = User.generate!
+        
+        @group = Group.generate!.reload
+        @group.users << @user_in_group
+        @group.users << @second_user_in_group
+        
+        @group2 = Group.generate!.reload
+        @group2.users << @user_in_group2
+        
+      end
+      
+      should "search assigned to for users in the group" do
+        @query = Query.new(:name => '_')
+        @query.add_filter('member_of_group', '=', [@group.id.to_s])
+
+        assert_query_statement_includes @query, "#{Issue.table_name}.assigned_to_id IN ('#{@user_in_group.id}','#{@second_user_in_group.id}')"
+        assert_find_issues_with_query_is_successful @query
+      end
+
+      should "search not assigned to any group member (none)" do
+        @query = Query.new(:name => '_')
+        @query.add_filter('member_of_group', '!*', [''])
+
+        # Users not in a group
+        assert_query_statement_includes @query, "#{Issue.table_name}.assigned_to_id IS NULL OR #{Issue.table_name}.assigned_to_id NOT IN ('#{@user_in_group.id}','#{@second_user_in_group.id}','#{@user_in_group2.id}')"
+        assert_find_issues_with_query_is_successful @query
+
+      end
+
+      should "search assigned to any group member (all)" do
+        @query = Query.new(:name => '_')
+        @query.add_filter('member_of_group', '*', [''])
+
+        # Only users in a group
+        assert_query_statement_includes @query, "#{Issue.table_name}.assigned_to_id IN ('#{@user_in_group.id}','#{@second_user_in_group.id}','#{@user_in_group2.id}')"
+        assert_find_issues_with_query_is_successful @query
+
+      end
+    end
+
+    context "with 'assigned_to_role' filter" do
+      setup do
+        # No fixtures
+        MemberRole.delete_all
+        Member.delete_all
+        Role.delete_all
+        
+        @manager_role = Role.generate!(:name => 'Manager')
+        @developer_role = Role.generate!(:name => 'Developer')
+
+        @project = Project.generate!
+        @manager = User.generate!
+        @developer = User.generate!
+        @boss = User.generate!
+        User.add_to_project(@manager, @project, @manager_role)
+        User.add_to_project(@developer, @project, @developer_role)
+        User.add_to_project(@boss, @project, [@manager_role, @developer_role])
+      end
+      
+      should "search assigned to for users with the Role" do
+        @query = Query.new(:name => '_')
+        @query.add_filter('assigned_to_role', '=', [@manager_role.id.to_s])
+
+        assert_query_statement_includes @query, "#{Issue.table_name}.assigned_to_id IN ('#{@manager.id}','#{@boss.id}')"
+        assert_find_issues_with_query_is_successful @query
+      end
+
+      should "search assigned to for users not assigned to any Role (none)" do
+        @query = Query.new(:name => '_')
+        @query.add_filter('assigned_to_role', '!*', [''])
+
+        assert_query_statement_includes @query, "#{Issue.table_name}.assigned_to_id IS NULL OR #{Issue.table_name}.assigned_to_id NOT IN ('#{@manager.id}','#{@developer.id}','#{@boss.id}')"
+        assert_find_issues_with_query_is_successful @query
+      end
+
+      should "search assigned to for users assigned to any Role (all)" do
+        @query = Query.new(:name => '_')
+        @query.add_filter('assigned_to_role', '*', [''])
+
+        assert_query_statement_includes @query, "#{Issue.table_name}.assigned_to_id IN ('#{@manager.id}','#{@developer.id}','#{@boss.id}')"
+        assert_find_issues_with_query_is_successful @query
+      end
+    end
+  end
+  
 end
--- a/test/unit/.svn/text-base/time_entry_test.rb.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/unit/.svn/text-base/time_entry_test.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -48,4 +48,52 @@
   def test_hours_should_default_to_nil
     assert_nil TimeEntry.new.hours
   end
+
+  context "#earilest_date_for_project" do
+    setup do
+      User.current = nil
+      @public_project = Project.generate!(:is_public => true)
+      @issue = Issue.generate_for_project!(@public_project)
+      TimeEntry.generate!(:spent_on => '2010-01-01',
+                          :issue => @issue,
+                          :project => @public_project)
+    end
+    
+    context "without a project" do
+      should "return the lowest spent_on value that is visible to the current user" do
+        assert_equal "2007-03-12", TimeEntry.earilest_date_for_project.to_s
+      end
+    end
+
+    context "with a project" do
+      should "return the lowest spent_on value that is visible to the current user for that project and it's subprojects only" do
+        assert_equal "2010-01-01", TimeEntry.earilest_date_for_project(@public_project).to_s
+      end
+    end
+      
+  end
+
+  context "#latest_date_for_project" do
+    setup do
+      User.current = nil
+      @public_project = Project.generate!(:is_public => true)
+      @issue = Issue.generate_for_project!(@public_project)
+      TimeEntry.generate!(:spent_on => '2010-01-01',
+                          :issue => @issue,
+                          :project => @public_project)
+    end
+
+    context "without a project" do
+      should "return the highest spent_on value that is visible to the current user" do
+        assert_equal "2010-01-01", TimeEntry.latest_date_for_project.to_s
+      end
+    end
+
+    context "with a project" do
+      should "return the highest spent_on value that is visible to the current user for that project and it's subprojects only" do
+        project = Project.find(1)
+        assert_equal "2007-04-22", TimeEntry.latest_date_for_project(project).to_s
+      end
+    end
+  end  
 end
--- a/test/unit/.svn/text-base/user_test.rb.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/unit/.svn/text-base/user_test.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -355,6 +355,49 @@
 
   end
   
+  context "#allowed_to?" do
+    context "with a unique project" do
+      should "return false if project is archived" do
+        project = Project.find(1)
+        Project.any_instance.stubs(:status).returns(Project::STATUS_ARCHIVED)
+        assert ! @admin.allowed_to?(:view_issues, Project.find(1))
+      end
+      
+      should "return false if related module is disabled" do
+        project = Project.find(1)
+        project.enabled_module_names = ["issue_tracking"]
+        assert @admin.allowed_to?(:add_issues, project)
+        assert ! @admin.allowed_to?(:view_wiki_pages, project)
+      end
+      
+      should "authorize nearly everything for admin users" do
+        project = Project.find(1)
+        assert ! @admin.member_of?(project)
+        %w(edit_issues delete_issues manage_news manage_documents manage_wiki).each do |p|
+          assert @admin.allowed_to?(p.to_sym, project)
+        end
+      end
+      
+      should "authorize normal users depending on their roles" do
+        project = Project.find(1)
+        assert @jsmith.allowed_to?(:delete_messages, project)    #Manager
+        assert ! @dlopper.allowed_to?(:delete_messages, project) #Developper
+      end
+    end
+    
+    context "with options[:global]" do
+      should "authorize if user has at least one role that has this permission" do
+        @dlopper2 = User.find(5) #only Developper on a project, not Manager anywhere
+        @anonymous = User.find(6)
+        assert @jsmith.allowed_to?(:delete_issue_watchers, nil, :global => true)
+        assert ! @dlopper2.allowed_to?(:delete_issue_watchers, nil, :global => true)
+        assert @dlopper2.allowed_to?(:add_issues, nil, :global => true)
+        assert ! @anonymous.allowed_to?(:add_issues, nil, :global => true)
+        assert @anonymous.allowed_to?(:view_issues, nil, :global => true)
+      end
+    end
+  end
+  
   if Object.const_defined?(:OpenID)
     
   def test_setting_identity_url
--- a/test/unit/.svn/text-base/version_test.rb.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/unit/.svn/text-base/version_test.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -104,7 +104,57 @@
     assert_progress_equal (25.0*0.2 + 25.0*1 + 10.0*0.3 + 40.0*0.1)/100.0*100, v.completed_pourcent
     assert_progress_equal 25.0/100.0*100, v.closed_pourcent
   end
-  
+
+  context "#behind_schedule?" do
+    setup do
+      ProjectCustomField.destroy_all # Custom values are a mess to isolate in tests
+      @project = Project.generate!(:identifier => 'test0')
+      @project.trackers << Tracker.generate!
+
+      @version = Version.generate!(:project => @project, :effective_date => nil)
+    end
+    
+    should "be false if there are no issues assigned" do
+      @version.update_attribute(:effective_date, Date.yesterday)
+      assert_equal false, @version.behind_schedule?
+    end
+
+    should "be false if there is no effective_date" do
+      assert_equal false, @version.behind_schedule?
+    end
+
+    should "be false if all of the issues are ahead of schedule" do
+      @version.update_attribute(:effective_date, 7.days.from_now.to_date)
+      @version.fixed_issues = [
+                               Issue.generate_for_project!(@project, :start_date => 7.days.ago, :done_ratio => 60), # 14 day span, 60% done, 50% time left
+                               Issue.generate_for_project!(@project, :start_date => 7.days.ago, :done_ratio => 60) # 14 day span, 60% done, 50% time left
+                              ]
+      assert_equal 60, @version.completed_pourcent
+      assert_equal false, @version.behind_schedule?
+    end
+
+    should "be true if any of the issues are behind schedule" do
+      @version.update_attribute(:effective_date, 7.days.from_now.to_date)
+      @version.fixed_issues = [
+                               Issue.generate_for_project!(@project, :start_date => 7.days.ago, :done_ratio => 60), # 14 day span, 60% done, 50% time left
+                               Issue.generate_for_project!(@project, :start_date => 7.days.ago, :done_ratio => 20) # 14 day span, 20% done, 50% time left
+                              ]
+      assert_equal 40, @version.completed_pourcent
+      assert_equal true, @version.behind_schedule?
+    end
+
+    should "be false if all of the issues are complete" do
+      @version.update_attribute(:effective_date, 7.days.from_now.to_date)
+      @version.fixed_issues = [
+                               Issue.generate_for_project!(@project, :start_date => 14.days.ago, :done_ratio => 100, :status => IssueStatus.find(5)), # 7 day span
+                               Issue.generate_for_project!(@project, :start_date => 14.days.ago, :done_ratio => 100, :status => IssueStatus.find(5)) # 7 day span
+                              ]
+      assert_equal 100, @version.completed_pourcent
+      assert_equal false, @version.behind_schedule?
+
+    end
+  end
+
   context "#estimated_hours" do
     setup do
       @version = Version.create!(:project_id => 1, :name => '#estimated_hours')
--- a/test/unit/helpers/.svn/all-wcprops	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/unit/helpers/.svn/all-wcprops	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 42
-/svn/!svn/ver/3936/trunk/test/unit/helpers
+/svn/!svn/ver/4072/trunk/test/unit/helpers
 END
 custom_fields_helper_test.rb
 K 25
@@ -25,7 +25,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 69
-/svn/!svn/ver/3924/trunk/test/unit/helpers/application_helper_test.rb
+/svn/!svn/ver/4072/trunk/test/unit/helpers/application_helper_test.rb
 END
 search_helper_test.rb
 K 25
--- a/test/unit/helpers/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/unit/helpers/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,14 +1,14 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/test/unit/helpers
 http://redmine.rubyforge.org/svn
 
 
 
-2010-08-11T14:42:10.119704Z
-3936
+2010-09-10T03:09:02.311267Z
+4072
 edavis10
 
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:43.352096Z
+2010-09-23T14:37:45.483825Z
 2539cee92860ac8ec7abe2016b90b951
 2009-03-01T10:00:52.175090Z
 2541
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:43.352096Z
+2010-09-23T14:37:45.483825Z
 f0de9a2559bb9dcfdf3c35436c737ee8
 2009-10-21T22:34:39.509319Z
 2948
@@ -100,7 +100,7 @@
 
 
 
-2010-08-25T15:27:52.314099Z
+2010-09-23T14:37:45.483825Z
 2c72db60f744a7dec4600df692c40766
 2010-08-11T14:42:10.119704Z
 3936
@@ -134,11 +134,11 @@
 
 
 
-2010-08-25T15:27:52.314099Z
-d37c23ba9f68238d54ddfc3b5bf3b55b
-2010-08-08T07:07:20.961363Z
-3924
-jbbarth
+2010-09-24T12:48:25.635718Z
+7f682835f4e55f0f74513fb50a363168
+2010-09-10T03:09:02.311267Z
+4072
+edavis10
 has-props
 
 
@@ -160,7 +160,7 @@
 
 
 
-28245
+29071
 
 search_helper_test.rb
 file
@@ -168,7 +168,7 @@
 
 
 
-2010-07-23T14:49:43.356096Z
+2010-09-23T14:37:45.483825Z
 09734417b458d837868bbd714ae2e011
 2009-10-10T15:00:28.619200Z
 2910
@@ -202,7 +202,7 @@
 
 
 
-2010-07-23T14:49:43.356096Z
+2010-09-23T14:37:45.483825Z
 204d96fe44cd80c7a1e4cbbd9de39cea
 2009-09-20T14:06:57.257282Z
 2895
@@ -236,7 +236,7 @@
 
 
 
-2010-07-23T14:49:43.356096Z
+2010-09-23T14:37:45.483825Z
 576e6ed0c8e4b7e69440c1f99b0b91a4
 2009-12-09T09:22:16.985172Z
 3140
@@ -270,7 +270,7 @@
 
 
 
-2010-07-23T14:49:43.356096Z
+2010-09-23T14:37:45.483825Z
 8ef7e3dfba1c93a07802c7fa579b6013
 2010-03-08T16:47:47.660186Z
 3552
--- a/test/unit/helpers/.svn/text-base/application_helper_test.rb.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/unit/helpers/.svn/text-base/application_helper_test.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -17,10 +17,7 @@
 
 require File.dirname(__FILE__) + '/../../test_helper'
 
-class ApplicationHelperTest < HelperTestCase
-  include ApplicationHelper
-  include ActionView::Helpers::TextHelper
-  include ActionView::Helpers::DateHelper
+class ApplicationHelperTest < ActionView::TestCase
   
   fixtures :projects, :roles, :enabled_modules, :users,
                       :repositories, :changesets, 
@@ -33,6 +30,35 @@
   def setup
     super
   end
+
+  context "#link_to_if_authorized" do
+    context "authorized user" do
+      should "be tested"
+    end
+    
+    context "unauthorized user" do
+      should "be tested"
+    end
+    
+    should "allow using the :controller and :action for the target link" do
+      User.current = User.find_by_login('admin')
+
+      @project = Issue.first.project # Used by helper
+      response = link_to_if_authorized("By controller/action",
+                                       {:controller => 'issues', :action => 'edit', :id => Issue.first.id})
+      assert_match /href/, response
+    end
+    
+    should "allow using the url for the target link" do
+      User.current = User.find_by_login('admin')
+
+      @project = Issue.first.project # Used by helper
+      response = link_to_if_authorized("By url",
+                                       new_issue_move_path(:id => Issue.first.id))
+      assert_match /href/, response
+    end
+
+  end
   
   def test_auto_links
     to_test = {
@@ -575,7 +601,7 @@
     
     # turn off avatars
     Setting.gravatar_enabled = '0'
-    assert_nil avatar(User.find_by_mail('jsmith@somenet.foo'))
+    assert_equal '', avatar(User.find_by_mail('jsmith@somenet.foo'))
   end
   
   def test_link_to_user
--- a/test/unit/helpers/application_helper_test.rb	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/unit/helpers/application_helper_test.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -17,10 +17,7 @@
 
 require File.dirname(__FILE__) + '/../../test_helper'
 
-class ApplicationHelperTest < HelperTestCase
-  include ApplicationHelper
-  include ActionView::Helpers::TextHelper
-  include ActionView::Helpers::DateHelper
+class ApplicationHelperTest < ActionView::TestCase
   
   fixtures :projects, :roles, :enabled_modules, :users,
                       :repositories, :changesets, 
@@ -33,6 +30,35 @@
   def setup
     super
   end
+
+  context "#link_to_if_authorized" do
+    context "authorized user" do
+      should "be tested"
+    end
+    
+    context "unauthorized user" do
+      should "be tested"
+    end
+    
+    should "allow using the :controller and :action for the target link" do
+      User.current = User.find_by_login('admin')
+
+      @project = Issue.first.project # Used by helper
+      response = link_to_if_authorized("By controller/action",
+                                       {:controller => 'issues', :action => 'edit', :id => Issue.first.id})
+      assert_match /href/, response
+    end
+    
+    should "allow using the url for the target link" do
+      User.current = User.find_by_login('admin')
+
+      @project = Issue.first.project # Used by helper
+      response = link_to_if_authorized("By url",
+                                       new_issue_move_path(:id => Issue.first.id))
+      assert_match /href/, response
+    end
+
+  end
   
   def test_auto_links
     to_test = {
@@ -575,7 +601,7 @@
     
     # turn off avatars
     Setting.gravatar_enabled = '0'
-    assert_nil avatar(User.find_by_mail('jsmith@somenet.foo'))
+    assert_equal '', avatar(User.find_by_mail('jsmith@somenet.foo'))
   end
   
   def test_link_to_user
--- a/test/unit/issue_test.rb	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/unit/issue_test.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -510,6 +510,28 @@
     assert !Issue.new(:due_date => nil).overdue?
     assert !Issue.new(:due_date => 1.day.ago.to_date, :status => IssueStatus.find(:first, :conditions => {:is_closed => true})).overdue?
   end
+
+  context "#behind_schedule?" do
+    should "be false if the issue has no start_date" do
+      assert !Issue.new(:start_date => nil, :due_date => 1.day.from_now.to_date, :done_ratio => 0).behind_schedule?
+    end
+
+    should "be false if the issue has no end_date" do
+      assert !Issue.new(:start_date => 1.day.from_now.to_date, :due_date => nil, :done_ratio => 0).behind_schedule?
+    end
+
+    should "be false if the issue has more done than it's calendar time" do
+      assert !Issue.new(:start_date => 50.days.ago.to_date, :due_date => 50.days.from_now.to_date, :done_ratio => 90).behind_schedule?
+    end
+
+    should "be true if the issue hasn't been started at all" do
+      assert Issue.new(:start_date => 1.day.ago.to_date, :due_date => 1.day.from_now.to_date, :done_ratio => 0).behind_schedule?
+    end
+
+    should "be true if the issue has used more calendar time than it's done ratio" do
+      assert Issue.new(:start_date => 100.days.ago.to_date, :due_date => Date.today, :done_ratio => 90).behind_schedule?
+    end
+  end
   
   def test_assignable_users
     assert_kind_of User, Issue.find(1).assignable_users.first
--- a/test/unit/lib/.svn/all-wcprops	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/unit/lib/.svn/all-wcprops	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 38
-/svn/!svn/ver/4013/trunk/test/unit/lib
+/svn/!svn/ver/4072/trunk/test/unit/lib
 END
 redmine_test.rb
 K 25
--- a/test/unit/lib/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/unit/lib/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,14 +1,14 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/test/unit/lib
 http://redmine.rubyforge.org/svn
 
 
 
-2010-08-22T18:42:00.112555Z
-4013
+2010-09-10T03:09:02.311267Z
+4072
 edavis10
 
 
@@ -35,7 +35,7 @@
 
 
 
-2010-08-25T15:27:52.490493Z
+2010-09-23T14:37:45.503764Z
 8adb9955639998853d35f1a1181cd654
 2010-08-22T18:42:00.112555Z
 4013
--- a/test/unit/lib/redmine/.svn/all-wcprops	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/unit/lib/redmine/.svn/all-wcprops	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 46
-/svn/!svn/ver/3926/trunk/test/unit/lib/redmine
+/svn/!svn/ver/4072/trunk/test/unit/lib/redmine
 END
 menu_manager_test.rb
 K 25
--- a/test/unit/lib/redmine/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/unit/lib/redmine/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,15 +1,15 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/test/unit/lib/redmine
 http://redmine.rubyforge.org/svn
 
 
 
-2010-08-08T07:07:38.841875Z
-3926
-jbbarth
+2010-09-10T03:09:02.311267Z
+4072
+edavis10
 
 
 
@@ -32,7 +32,7 @@
 
 
 
-2010-08-25T15:27:52.366576Z
+2010-09-23T14:37:45.495799Z
 ac6fa3504bb54b2f4279e3fb031b8366
 2010-08-08T07:07:38.841875Z
 3926
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:43.480094Z
+2010-09-23T14:37:45.495799Z
 e77b70f296a1c5879f34d10c097bb45c
 2009-12-16T02:07:46.084185Z
 3175
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:43.480094Z
+2010-09-23T14:37:45.499807Z
 720444ae100b378352bff8ea8494b96f
 2010-02-17T20:47:50.603139Z
 3446
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:43.480094Z
+2010-09-23T14:37:45.491768Z
 f6356bf322f1fd30abbdaedc92e615f6
 2009-11-12T22:00:29.290944Z
 3034
@@ -168,7 +168,7 @@
 
 
 
-2010-07-23T14:49:43.480094Z
+2010-09-23T14:37:45.491768Z
 6fea1c3686a222539646f8c8efd7084b
 2009-12-21T02:24:56.260725Z
 3211
@@ -205,7 +205,7 @@
 
 
 
-2010-07-23T14:49:43.480094Z
+2010-09-23T14:37:45.491768Z
 199d1a545256f49d0ac0dd5daa732322
 2009-09-13T17:14:35.707881Z
 2887
@@ -233,13 +233,16 @@
 
 1796
 
+helpers
+dir
+
 mime_type_test.rb
 file
 
 
 
 
-2010-07-23T14:49:43.480094Z
+2010-09-23T14:37:45.495799Z
 48babd3529b798dd5170d1214e8c732a
 2009-09-13T17:14:35.707881Z
 2887
@@ -273,7 +276,7 @@
 
 
 
-2010-07-23T14:49:43.480094Z
+2010-09-23T14:37:45.499807Z
 a17bdd131369acd640ce61013ce4233b
 2009-11-11T13:25:53.648186Z
 3028
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/unit/lib/redmine/helpers/.svn/all-wcprops	Fri Sep 24 15:51:28 2010 +0100
@@ -0,0 +1,11 @@
+K 25
+svn:wc:ra_dav:version-url
+V 54
+/svn/!svn/ver/4072/trunk/test/unit/lib/redmine/helpers
+END
+gantt_test.rb
+K 25
+svn:wc:ra_dav:version-url
+V 68
+/svn/!svn/ver/4072/trunk/test/unit/lib/redmine/helpers/gantt_test.rb
+END
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/unit/lib/redmine/helpers/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -0,0 +1,62 @@
+10
+
+dir
+4173
+http://redmine.rubyforge.org/svn/trunk/test/unit/lib/redmine/helpers
+http://redmine.rubyforge.org/svn
+
+
+
+2010-09-10T03:09:02.311267Z
+4072
+edavis10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+e93f8b46-1217-0410-a6f0-8f06a7374b81
+
+gantt_test.rb
+file
+
+
+
+
+2010-09-24T12:48:25.702613Z
+1c573df96cc30534c8f3b66be599cce6
+2010-09-10T03:09:02.311267Z
+4072
+edavis10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+25186
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/unit/lib/redmine/helpers/.svn/text-base/gantt_test.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -0,0 +1,703 @@
+# redMine - project management software
+# Copyright (C) 2006-2008  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.
+
+require File.dirname(__FILE__) + '/../../../../test_helper'
+
+class Redmine::Helpers::GanttTest < ActiveSupport::TestCase
+  # Utility methods and classes so assert_select can be used.
+  class GanttViewTest < ActionView::Base
+    include ActionView::Helpers::UrlHelper
+    include ActionView::Helpers::TextHelper
+    include ActionController::UrlWriter
+    include ApplicationHelper
+    include ProjectsHelper
+    include IssuesHelper
+    
+    def self.default_url_options
+      {:only_path => true }
+    end
+
+  end
+
+  include ActionController::Assertions::SelectorAssertions
+
+  def setup
+    @response = ActionController::TestResponse.new
+    # Fixtures
+    ProjectCustomField.delete_all
+    Project.destroy_all
+
+    User.current = User.find(1)
+  end
+
+  def build_view
+    @view = GanttViewTest.new
+  end
+
+  def html_document
+    HTML::Document.new(@response.body)
+  end
+
+  # Creates a Gantt chart for a 4 week span
+  def create_gantt(project=Project.generate!)
+    @project = project
+    @gantt = Redmine::Helpers::Gantt.new
+    @gantt.project = @project
+    @gantt.query = Query.generate_default!(:project => @project)
+    @gantt.view = build_view
+    @gantt.instance_variable_set('@date_from', 2.weeks.ago.to_date)
+    @gantt.instance_variable_set('@date_to', 2.weeks.from_now.to_date)
+  end
+
+  context "#number_of_rows" do
+
+    context "with one project" do
+      should "return the number of rows just for that project"
+    end
+
+    context "with no project" do
+      should "return the total number of rows for all the projects, resursively"
+    end
+
+  end
+
+  context "#number_of_rows_on_project" do
+    setup do
+      create_gantt
+    end
+    
+    should "clear the @query.project so cross-project issues and versions can be counted" do
+      assert @gantt.query.project
+      @gantt.number_of_rows_on_project(@project)
+      assert_nil @gantt.query.project
+    end
+
+    should "count 1 for the project itself" do
+      assert_equal 1, @gantt.number_of_rows_on_project(@project)
+    end
+
+    should "count the number of issues without a version" do
+      @project.issues << Issue.generate_for_project!(@project, :fixed_version => nil)
+      assert_equal 2, @gantt.number_of_rows_on_project(@project)
+    end
+
+    should "count the number of versions" do
+      @project.versions << Version.generate!
+      @project.versions << Version.generate!
+      assert_equal 3, @gantt.number_of_rows_on_project(@project)
+    end
+
+    should "count the number of issues on versions, including cross-project" do
+      version = Version.generate!
+      @project.versions << version
+      @project.issues << Issue.generate_for_project!(@project, :fixed_version => version)
+      
+      assert_equal 3, @gantt.number_of_rows_on_project(@project)
+    end
+    
+    should "recursive and count the number of rows on each subproject" do
+      @project.versions << Version.generate! # +1
+
+      @subproject = Project.generate!(:enabled_module_names => ['issue_tracking']) # +1
+      @subproject.set_parent!(@project)
+      @subproject.issues << Issue.generate_for_project!(@subproject) # +1
+      @subproject.issues << Issue.generate_for_project!(@subproject) # +1
+
+      @subsubproject = Project.generate!(:enabled_module_names => ['issue_tracking']) # +1
+      @subsubproject.set_parent!(@subproject)
+      @subsubproject.issues << Issue.generate_for_project!(@subsubproject) # +1
+
+      assert_equal 7, @gantt.number_of_rows_on_project(@project) # +1 for self
+    end
+  end
+
+  # TODO: more of an integration test
+  context "#subjects" do
+    setup do
+      create_gantt
+      @project.enabled_module_names = [:issue_tracking]
+      @tracker = Tracker.generate!
+      @project.trackers << @tracker
+      @version = Version.generate!(:effective_date => 1.week.from_now.to_date, :sharing => 'none')
+      @project.versions << @version
+
+      @issue = Issue.generate!(:fixed_version => @version,
+                               :subject => "gantt#line_for_project",
+                               :tracker => @tracker,
+                               :project => @project,
+                               :done_ratio => 30,
+                               :start_date => Date.yesterday,
+                               :due_date => 1.week.from_now.to_date)
+      @project.issues << @issue
+
+      @response.body = @gantt.subjects
+    end
+
+    context "project" do
+      should "be rendered" do
+        assert_select "div.project-name a", /#{@project.name}/
+      end
+
+      should "have an indent of 4" do
+        assert_select "div.project-name[style*=left:4px]"
+      end
+    end
+
+    context "version" do
+      should "be rendered" do
+        assert_select "div.version-name a", /#{@version.name}/
+      end
+
+      should "be indented 24 (one level)" do
+        assert_select "div.version-name[style*=left:24px]"
+      end
+    end
+
+    context "issue" do
+      should "be rendered" do
+        assert_select "div.issue-subject", /#{@issue.subject}/
+      end
+
+      should "be indented 44 (two levels)" do
+        assert_select "div.issue-subject[style*=left:44px]"
+      end
+    end
+  end
+
+  context "#lines" do
+    setup do
+      create_gantt
+      @project.enabled_module_names = [:issue_tracking]
+      @tracker = Tracker.generate!
+      @project.trackers << @tracker
+      @version = Version.generate!(:effective_date => 1.week.from_now.to_date)
+      @project.versions << @version
+      @issue = Issue.generate!(:fixed_version => @version,
+                               :subject => "gantt#line_for_project",
+                               :tracker => @tracker,
+                               :project => @project,
+                               :done_ratio => 30,
+                               :start_date => Date.yesterday,
+                               :due_date => 1.week.from_now.to_date)
+      @project.issues << @issue
+
+      @response.body = @gantt.lines
+    end
+
+    context "project" do
+      should "be rendered" do
+        assert_select "div.project_todo"
+        assert_select "div.project-line.starting"
+        assert_select "div.project-line.ending"
+        assert_select "div.label.project-name", /#{@project.name}/
+      end
+    end
+
+    context "version" do
+      should "be rendered" do
+        assert_select "div.milestone_todo"
+        assert_select "div.milestone.starting"
+        assert_select "div.milestone.ending"
+        assert_select "div.label.version-name", /#{@version.name}/
+      end
+    end
+
+    context "issue" do
+      should "be rendered" do
+        assert_select "div.task_todo"
+        assert_select "div.label.issue-name", /#{@issue.done_ratio}/
+        assert_select "div.tooltip", /#{@issue.subject}/
+      end
+    end
+  end
+
+  context "#render_project" do
+    should "be tested"
+  end
+
+  context "#render_issues" do
+    should "be tested"
+  end
+
+  context "#render_version" do
+    should "be tested"
+  end
+
+  context "#subject_for_project" do
+    setup do
+      create_gantt
+    end
+    
+    context ":html format" do
+      should "add an absolute positioned div" do
+        @response.body = @gantt.subject_for_project(@project, {:format => :html})
+        assert_select "div[style*=absolute]"
+      end
+
+      should "use the indent option to move the div to the right" do
+        @response.body = @gantt.subject_for_project(@project, {:format => :html, :indent => 40})
+        assert_select "div[style*=left:40]"
+      end
+
+      should "include the project name" do
+        @response.body = @gantt.subject_for_project(@project, {:format => :html})
+        assert_select 'div', :text => /#{@project.name}/
+      end
+
+      should "include a link to the project" do
+        @response.body = @gantt.subject_for_project(@project, {:format => :html})
+        assert_select 'a[href=?]', "/projects/#{@project.identifier}", :text => /#{@project.name}/
+      end
+
+      should "style overdue projects" do
+        @project.enabled_module_names = [:issue_tracking]
+        @project.versions << Version.generate!(:effective_date => Date.yesterday)
+
+        assert @project.overdue?, "Need an overdue project for this test"
+        @response.body = @gantt.subject_for_project(@project, {:format => :html})
+
+        assert_select 'div span.project-overdue'
+      end
+
+
+    end
+
+    should "test the PNG format"
+    should "test the PDF format"
+  end
+
+  context "#line_for_project" do
+    setup do
+      create_gantt
+      @project.enabled_module_names = [:issue_tracking]
+      @tracker = Tracker.generate!
+      @project.trackers << @tracker
+      @version = Version.generate!(:effective_date => Date.yesterday)
+      @project.versions << @version
+
+      @project.issues << Issue.generate!(:fixed_version => @version,
+                                         :subject => "gantt#line_for_project",
+                                         :tracker => @tracker,
+                                         :project => @project,
+                                         :done_ratio => 30,
+                                         :start_date => Date.yesterday,
+                                         :due_date => 1.week.from_now.to_date)
+    end
+
+    context ":html format" do
+      context "todo line" do
+        should "start from the starting point on the left" do
+          @response.body = @gantt.line_for_project(@project, {:format => :html, :zoom => 4})
+          assert_select "div.project_todo[style*=left:52px]"
+        end
+
+        should "be the total width of the project" do
+          @response.body = @gantt.line_for_project(@project, {:format => :html, :zoom => 4})
+          assert_select "div.project_todo[style*=width:31px]"
+        end
+
+      end
+
+      context "late line" do
+        should "start from the starting point on the left" do
+          @response.body = @gantt.line_for_project(@project, {:format => :html, :zoom => 4})
+          assert_select "div.project_late[style*=left:52px]"
+        end
+
+        should "be the total delayed width of the project" do
+          @response.body = @gantt.line_for_project(@project, {:format => :html, :zoom => 4})
+          assert_select "div.project_late[style*=width:6px]"
+        end
+      end
+
+      context "done line" do
+        should "start from the starting point on the left" do
+          @response.body = @gantt.line_for_project(@project, {:format => :html, :zoom => 4})
+          assert_select "div.project_done[style*=left:52px]"
+        end
+
+        should "Be the total done width of the project"  do
+          @response.body = @gantt.line_for_project(@project, {:format => :html, :zoom => 4})
+          assert_select "div.project_done[style*=left:52px]"
+        end
+      end
+
+      context "starting marker" do
+        should "not appear if the starting point is off the gantt chart" do
+          # Shift the date range of the chart
+          @gantt.instance_variable_set('@date_from', Date.today)
+
+          @response.body = @gantt.line_for_project(@project, {:format => :html, :zoom => 4})
+          assert_select "div.project-line.starting", false
+        end
+
+        should "appear at the starting point" do
+          @response.body = @gantt.line_for_project(@project, {:format => :html, :zoom => 4})
+          assert_select "div.project-line.starting[style*=left:52px]"
+        end
+      end
+
+      context "ending marker" do
+        should "not appear if the starting point is off the gantt chart" do
+          # Shift the date range of the chart
+          @gantt.instance_variable_set('@date_to', 2.weeks.ago.to_date)
+
+          @response.body = @gantt.line_for_project(@project, {:format => :html, :zoom => 4})
+          assert_select "div.project-line.ending", false
+
+        end
+
+        should "appear at the end of the date range" do
+          @response.body = @gantt.line_for_project(@project, {:format => :html, :zoom => 4})
+          assert_select "div.project-line.ending[style*=left:84px]"
+        end
+      end
+      
+      context "status content" do
+        should "appear at the far left, even if it's far in the past" do
+          @gantt.instance_variable_set('@date_to', 2.weeks.ago.to_date)
+
+          @response.body = @gantt.line_for_project(@project, {:format => :html, :zoom => 4})
+          assert_select "div.project-name", /#{@project.name}/
+        end
+
+        should "show the project name" do
+          @response.body = @gantt.line_for_project(@project, {:format => :html, :zoom => 4})
+          assert_select "div.project-name", /#{@project.name}/
+        end
+
+        should "show the percent complete" do
+          @response.body = @gantt.line_for_project(@project, {:format => :html, :zoom => 4})
+          assert_select "div.project-name", /0%/
+        end
+      end
+    end
+
+    should "test the PNG format"
+    should "test the PDF format"
+  end
+
+  context "#subject_for_version" do
+    setup do
+      create_gantt
+      @project.enabled_module_names = [:issue_tracking]
+      @tracker = Tracker.generate!
+      @project.trackers << @tracker
+      @version = Version.generate!(:effective_date => Date.yesterday)
+      @project.versions << @version
+
+      @project.issues << Issue.generate!(:fixed_version => @version,
+                                         :subject => "gantt#subject_for_version",
+                                         :tracker => @tracker,
+                                         :project => @project,
+                                         :start_date => Date.today)
+
+    end
+
+    context ":html format" do
+      should "add an absolute positioned div" do
+        @response.body = @gantt.subject_for_version(@version, {:format => :html})
+        assert_select "div[style*=absolute]"
+      end
+
+      should "use the indent option to move the div to the right" do
+        @response.body = @gantt.subject_for_version(@version, {:format => :html, :indent => 40})
+        assert_select "div[style*=left:40]"
+      end
+
+      should "include the version name" do
+        @response.body = @gantt.subject_for_version(@version, {:format => :html})
+        assert_select 'div', :text => /#{@version.name}/
+      end
+
+      should "include a link to the version" do
+        @response.body = @gantt.subject_for_version(@version, {:format => :html})
+        assert_select 'a[href=?]', Regexp.escape("/versions/show/#{@version.to_param}"), :text => /#{@version.name}/
+      end
+
+      should "style late versions" do
+        assert @version.overdue?, "Need an overdue version for this test"
+        @response.body = @gantt.subject_for_version(@version, {:format => :html})
+
+        assert_select 'div span.version-behind-schedule'
+      end
+
+      should "style behind schedule versions" do
+        assert @version.behind_schedule?, "Need a behind schedule version for this test"
+        @response.body = @gantt.subject_for_version(@version, {:format => :html})
+
+        assert_select 'div span.version-behind-schedule'
+      end
+    end
+    should "test the PNG format"
+    should "test the PDF format"
+  end
+
+  context "#line_for_version" do
+    setup do
+      create_gantt
+      @project.enabled_module_names = [:issue_tracking]
+      @tracker = Tracker.generate!
+      @project.trackers << @tracker
+      @version = Version.generate!(:effective_date => 1.week.from_now.to_date)
+      @project.versions << @version
+
+      @project.issues << Issue.generate!(:fixed_version => @version,
+                                         :subject => "gantt#line_for_project",
+                                         :tracker => @tracker,
+                                         :project => @project,
+                                         :done_ratio => 30,
+                                         :start_date => Date.yesterday,
+                                         :due_date => 1.week.from_now.to_date)
+    end
+
+    context ":html format" do
+      context "todo line" do
+        should "start from the starting point on the left" do
+          @response.body = @gantt.line_for_version(@version, {:format => :html, :zoom => 4})
+          assert_select "div.milestone_todo[style*=left:52px]"
+        end
+
+        should "be the total width of the version" do
+          @response.body = @gantt.line_for_version(@version, {:format => :html, :zoom => 4})
+          assert_select "div.milestone_todo[style*=width:31px]"
+        end
+
+      end
+
+      context "late line" do
+        should "start from the starting point on the left" do
+          @response.body = @gantt.line_for_version(@version, {:format => :html, :zoom => 4})
+          assert_select "div.milestone_late[style*=left:52px]"
+        end
+
+        should "be the total delayed width of the version" do
+          @response.body = @gantt.line_for_version(@version, {:format => :html, :zoom => 4})
+          assert_select "div.milestone_late[style*=width:6px]"
+        end
+      end
+
+      context "done line" do
+        should "start from the starting point on the left" do
+          @response.body = @gantt.line_for_version(@version, {:format => :html, :zoom => 4})
+          assert_select "div.milestone_done[style*=left:52px]"
+        end
+
+        should "Be the total done width of the version"  do
+          @response.body = @gantt.line_for_version(@version, {:format => :html, :zoom => 4})
+          assert_select "div.milestone_done[style*=left:52px]"
+        end
+      end
+
+      context "starting marker" do
+        should "not appear if the starting point is off the gantt chart" do
+          # Shift the date range of the chart
+          @gantt.instance_variable_set('@date_from', Date.today)
+
+          @response.body = @gantt.line_for_version(@version, {:format => :html, :zoom => 4})
+          assert_select "div.milestone.starting", false
+        end
+
+        should "appear at the starting point" do
+          @response.body = @gantt.line_for_version(@version, {:format => :html, :zoom => 4})
+          assert_select "div.milestone.starting[style*=left:52px]"
+        end
+      end
+
+      context "ending marker" do
+        should "not appear if the starting point is off the gantt chart" do
+          # Shift the date range of the chart
+          @gantt.instance_variable_set('@date_to', 2.weeks.ago.to_date)
+
+          @response.body = @gantt.line_for_version(@version, {:format => :html, :zoom => 4})
+          assert_select "div.milestone.ending", false
+
+        end
+
+        should "appear at the end of the date range" do
+          @response.body = @gantt.line_for_version(@version, {:format => :html, :zoom => 4})
+          assert_select "div.milestone.ending[style*=left:84px]"
+        end
+      end
+      
+      context "status content" do
+        should "appear at the far left, even if it's far in the past" do
+          @gantt.instance_variable_set('@date_to', 2.weeks.ago.to_date)
+
+          @response.body = @gantt.line_for_version(@version, {:format => :html, :zoom => 4})
+          assert_select "div.version-name", /#{@version.name}/
+        end
+
+        should "show the version name" do
+          @response.body = @gantt.line_for_version(@version, {:format => :html, :zoom => 4})
+          assert_select "div.version-name", /#{@version.name}/
+        end
+
+        should "show the percent complete" do
+          @response.body = @gantt.line_for_version(@version, {:format => :html, :zoom => 4})
+          assert_select "div.version-name", /30%/
+        end
+      end
+    end
+
+    should "test the PNG format"
+    should "test the PDF format"
+  end
+
+  context "#subject_for_issue" do
+    setup do
+      create_gantt
+      @project.enabled_module_names = [:issue_tracking]
+      @tracker = Tracker.generate!
+      @project.trackers << @tracker
+
+      @issue = Issue.generate!(:subject => "gantt#subject_for_issue",
+                               :tracker => @tracker,
+                               :project => @project,
+                               :start_date => 3.days.ago.to_date,
+                               :due_date => Date.yesterday)
+      @project.issues << @issue
+
+    end
+
+    context ":html format" do
+      should "add an absolute positioned div" do
+        @response.body = @gantt.subject_for_issue(@issue, {:format => :html})
+        assert_select "div[style*=absolute]"
+      end
+
+      should "use the indent option to move the div to the right" do
+        @response.body = @gantt.subject_for_issue(@issue, {:format => :html, :indent => 40})
+        assert_select "div[style*=left:40]"
+      end
+
+      should "include the issue subject" do
+        @response.body = @gantt.subject_for_issue(@issue, {:format => :html})
+        assert_select 'div', :text => /#{@issue.subject}/
+      end
+
+      should "include a link to the issue" do
+        @response.body = @gantt.subject_for_issue(@issue, {:format => :html})
+        assert_select 'a[href=?]', Regexp.escape("/issues/#{@issue.to_param}"), :text => /#{@tracker.name} ##{@issue.id}/
+      end
+
+      should "style overdue issues" do
+        assert @issue.overdue?, "Need an overdue issue for this test"
+        @response.body = @gantt.subject_for_issue(@issue, {:format => :html})
+
+        assert_select 'div span.issue-overdue'
+      end
+
+    end
+    should "test the PNG format"
+    should "test the PDF format"
+  end
+
+  context "#line_for_issue" do
+    setup do
+      create_gantt
+      @project.enabled_module_names = [:issue_tracking]
+      @tracker = Tracker.generate!
+      @project.trackers << @tracker
+      @version = Version.generate!(:effective_date => 1.week.from_now.to_date)
+      @project.versions << @version
+      @issue = Issue.generate!(:fixed_version => @version,
+                               :subject => "gantt#line_for_project",
+                               :tracker => @tracker,
+                               :project => @project,
+                               :done_ratio => 30,
+                               :start_date => Date.yesterday,
+                               :due_date => 1.week.from_now.to_date)
+      @project.issues << @issue
+    end
+
+    context ":html format" do
+      context "todo line" do
+        should "start from the starting point on the left" do
+          @response.body = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4})
+          assert_select "div.task_todo[style*=left:52px]"
+        end
+
+        should "be the total width of the issue" do
+          @response.body = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4})
+          assert_select "div.task_todo[style*=width:34px]"
+        end
+
+      end
+
+      context "late line" do
+        should "start from the starting point on the left" do
+          @response.body = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4})
+          assert_select "div.task_late[style*=left:52px]"
+        end
+
+        should "be the total delayed width of the issue" do
+          @response.body = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4})
+          assert_select "div.task_late[style*=width:6px]"
+        end
+      end
+
+      context "done line" do
+        should "start from the starting point on the left" do
+          @response.body = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4})
+          assert_select "div.task_done[style*=left:52px]"
+        end
+
+        should "Be the total done width of the issue"  do
+          @response.body = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4})
+          assert_select "div.task_done[style*=left:52px]"
+        end
+      end
+
+      context "status content" do
+        should "appear at the far left, even if it's far in the past" do
+          @gantt.instance_variable_set('@date_to', 2.weeks.ago.to_date)
+
+          @response.body = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4})
+          assert_select "div.issue-name"
+        end
+
+        should "show the issue status" do
+          @response.body = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4})
+          assert_select "div.issue-name", /#{@issue.status.name}/
+        end
+
+        should "show the percent complete" do
+          @response.body = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4})
+          assert_select "div.issue-name", /30%/
+        end
+      end
+    end
+
+    should "have an issue tooltip" do
+      @response.body = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4})
+      assert_select "div.tooltip", /#{@issue.subject}/
+    end
+
+    should "test the PNG format"
+    should "test the PDF format"
+  end
+
+  context "#to_image" do
+    should "be tested"
+  end
+
+  context "#to_pdf" do
+    should "be tested"
+  end
+  
+end
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/unit/lib/redmine/helpers/gantt_test.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -0,0 +1,703 @@
+# redMine - project management software
+# Copyright (C) 2006-2008  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.
+
+require File.dirname(__FILE__) + '/../../../../test_helper'
+
+class Redmine::Helpers::GanttTest < ActiveSupport::TestCase
+  # Utility methods and classes so assert_select can be used.
+  class GanttViewTest < ActionView::Base
+    include ActionView::Helpers::UrlHelper
+    include ActionView::Helpers::TextHelper
+    include ActionController::UrlWriter
+    include ApplicationHelper
+    include ProjectsHelper
+    include IssuesHelper
+    
+    def self.default_url_options
+      {:only_path => true }
+    end
+
+  end
+
+  include ActionController::Assertions::SelectorAssertions
+
+  def setup
+    @response = ActionController::TestResponse.new
+    # Fixtures
+    ProjectCustomField.delete_all
+    Project.destroy_all
+
+    User.current = User.find(1)
+  end
+
+  def build_view
+    @view = GanttViewTest.new
+  end
+
+  def html_document
+    HTML::Document.new(@response.body)
+  end
+
+  # Creates a Gantt chart for a 4 week span
+  def create_gantt(project=Project.generate!)
+    @project = project
+    @gantt = Redmine::Helpers::Gantt.new
+    @gantt.project = @project
+    @gantt.query = Query.generate_default!(:project => @project)
+    @gantt.view = build_view
+    @gantt.instance_variable_set('@date_from', 2.weeks.ago.to_date)
+    @gantt.instance_variable_set('@date_to', 2.weeks.from_now.to_date)
+  end
+
+  context "#number_of_rows" do
+
+    context "with one project" do
+      should "return the number of rows just for that project"
+    end
+
+    context "with no project" do
+      should "return the total number of rows for all the projects, resursively"
+    end
+
+  end
+
+  context "#number_of_rows_on_project" do
+    setup do
+      create_gantt
+    end
+    
+    should "clear the @query.project so cross-project issues and versions can be counted" do
+      assert @gantt.query.project
+      @gantt.number_of_rows_on_project(@project)
+      assert_nil @gantt.query.project
+    end
+
+    should "count 1 for the project itself" do
+      assert_equal 1, @gantt.number_of_rows_on_project(@project)
+    end
+
+    should "count the number of issues without a version" do
+      @project.issues << Issue.generate_for_project!(@project, :fixed_version => nil)
+      assert_equal 2, @gantt.number_of_rows_on_project(@project)
+    end
+
+    should "count the number of versions" do
+      @project.versions << Version.generate!
+      @project.versions << Version.generate!
+      assert_equal 3, @gantt.number_of_rows_on_project(@project)
+    end
+
+    should "count the number of issues on versions, including cross-project" do
+      version = Version.generate!
+      @project.versions << version
+      @project.issues << Issue.generate_for_project!(@project, :fixed_version => version)
+      
+      assert_equal 3, @gantt.number_of_rows_on_project(@project)
+    end
+    
+    should "recursive and count the number of rows on each subproject" do
+      @project.versions << Version.generate! # +1
+
+      @subproject = Project.generate!(:enabled_module_names => ['issue_tracking']) # +1
+      @subproject.set_parent!(@project)
+      @subproject.issues << Issue.generate_for_project!(@subproject) # +1
+      @subproject.issues << Issue.generate_for_project!(@subproject) # +1
+
+      @subsubproject = Project.generate!(:enabled_module_names => ['issue_tracking']) # +1
+      @subsubproject.set_parent!(@subproject)
+      @subsubproject.issues << Issue.generate_for_project!(@subsubproject) # +1
+
+      assert_equal 7, @gantt.number_of_rows_on_project(@project) # +1 for self
+    end
+  end
+
+  # TODO: more of an integration test
+  context "#subjects" do
+    setup do
+      create_gantt
+      @project.enabled_module_names = [:issue_tracking]
+      @tracker = Tracker.generate!
+      @project.trackers << @tracker
+      @version = Version.generate!(:effective_date => 1.week.from_now.to_date, :sharing => 'none')
+      @project.versions << @version
+
+      @issue = Issue.generate!(:fixed_version => @version,
+                               :subject => "gantt#line_for_project",
+                               :tracker => @tracker,
+                               :project => @project,
+                               :done_ratio => 30,
+                               :start_date => Date.yesterday,
+                               :due_date => 1.week.from_now.to_date)
+      @project.issues << @issue
+
+      @response.body = @gantt.subjects
+    end
+
+    context "project" do
+      should "be rendered" do
+        assert_select "div.project-name a", /#{@project.name}/
+      end
+
+      should "have an indent of 4" do
+        assert_select "div.project-name[style*=left:4px]"
+      end
+    end
+
+    context "version" do
+      should "be rendered" do
+        assert_select "div.version-name a", /#{@version.name}/
+      end
+
+      should "be indented 24 (one level)" do
+        assert_select "div.version-name[style*=left:24px]"
+      end
+    end
+
+    context "issue" do
+      should "be rendered" do
+        assert_select "div.issue-subject", /#{@issue.subject}/
+      end
+
+      should "be indented 44 (two levels)" do
+        assert_select "div.issue-subject[style*=left:44px]"
+      end
+    end
+  end
+
+  context "#lines" do
+    setup do
+      create_gantt
+      @project.enabled_module_names = [:issue_tracking]
+      @tracker = Tracker.generate!
+      @project.trackers << @tracker
+      @version = Version.generate!(:effective_date => 1.week.from_now.to_date)
+      @project.versions << @version
+      @issue = Issue.generate!(:fixed_version => @version,
+                               :subject => "gantt#line_for_project",
+                               :tracker => @tracker,
+                               :project => @project,
+                               :done_ratio => 30,
+                               :start_date => Date.yesterday,
+                               :due_date => 1.week.from_now.to_date)
+      @project.issues << @issue
+
+      @response.body = @gantt.lines
+    end
+
+    context "project" do
+      should "be rendered" do
+        assert_select "div.project_todo"
+        assert_select "div.project-line.starting"
+        assert_select "div.project-line.ending"
+        assert_select "div.label.project-name", /#{@project.name}/
+      end
+    end
+
+    context "version" do
+      should "be rendered" do
+        assert_select "div.milestone_todo"
+        assert_select "div.milestone.starting"
+        assert_select "div.milestone.ending"
+        assert_select "div.label.version-name", /#{@version.name}/
+      end
+    end
+
+    context "issue" do
+      should "be rendered" do
+        assert_select "div.task_todo"
+        assert_select "div.label.issue-name", /#{@issue.done_ratio}/
+        assert_select "div.tooltip", /#{@issue.subject}/
+      end
+    end
+  end
+
+  context "#render_project" do
+    should "be tested"
+  end
+
+  context "#render_issues" do
+    should "be tested"
+  end
+
+  context "#render_version" do
+    should "be tested"
+  end
+
+  context "#subject_for_project" do
+    setup do
+      create_gantt
+    end
+    
+    context ":html format" do
+      should "add an absolute positioned div" do
+        @response.body = @gantt.subject_for_project(@project, {:format => :html})
+        assert_select "div[style*=absolute]"
+      end
+
+      should "use the indent option to move the div to the right" do
+        @response.body = @gantt.subject_for_project(@project, {:format => :html, :indent => 40})
+        assert_select "div[style*=left:40]"
+      end
+
+      should "include the project name" do
+        @response.body = @gantt.subject_for_project(@project, {:format => :html})
+        assert_select 'div', :text => /#{@project.name}/
+      end
+
+      should "include a link to the project" do
+        @response.body = @gantt.subject_for_project(@project, {:format => :html})
+        assert_select 'a[href=?]', "/projects/#{@project.identifier}", :text => /#{@project.name}/
+      end
+
+      should "style overdue projects" do
+        @project.enabled_module_names = [:issue_tracking]
+        @project.versions << Version.generate!(:effective_date => Date.yesterday)
+
+        assert @project.overdue?, "Need an overdue project for this test"
+        @response.body = @gantt.subject_for_project(@project, {:format => :html})
+
+        assert_select 'div span.project-overdue'
+      end
+
+
+    end
+
+    should "test the PNG format"
+    should "test the PDF format"
+  end
+
+  context "#line_for_project" do
+    setup do
+      create_gantt
+      @project.enabled_module_names = [:issue_tracking]
+      @tracker = Tracker.generate!
+      @project.trackers << @tracker
+      @version = Version.generate!(:effective_date => Date.yesterday)
+      @project.versions << @version
+
+      @project.issues << Issue.generate!(:fixed_version => @version,
+                                         :subject => "gantt#line_for_project",
+                                         :tracker => @tracker,
+                                         :project => @project,
+                                         :done_ratio => 30,
+                                         :start_date => Date.yesterday,
+                                         :due_date => 1.week.from_now.to_date)
+    end
+
+    context ":html format" do
+      context "todo line" do
+        should "start from the starting point on the left" do
+          @response.body = @gantt.line_for_project(@project, {:format => :html, :zoom => 4})
+          assert_select "div.project_todo[style*=left:52px]"
+        end
+
+        should "be the total width of the project" do
+          @response.body = @gantt.line_for_project(@project, {:format => :html, :zoom => 4})
+          assert_select "div.project_todo[style*=width:31px]"
+        end
+
+      end
+
+      context "late line" do
+        should "start from the starting point on the left" do
+          @response.body = @gantt.line_for_project(@project, {:format => :html, :zoom => 4})
+          assert_select "div.project_late[style*=left:52px]"
+        end
+
+        should "be the total delayed width of the project" do
+          @response.body = @gantt.line_for_project(@project, {:format => :html, :zoom => 4})
+          assert_select "div.project_late[style*=width:6px]"
+        end
+      end
+
+      context "done line" do
+        should "start from the starting point on the left" do
+          @response.body = @gantt.line_for_project(@project, {:format => :html, :zoom => 4})
+          assert_select "div.project_done[style*=left:52px]"
+        end
+
+        should "Be the total done width of the project"  do
+          @response.body = @gantt.line_for_project(@project, {:format => :html, :zoom => 4})
+          assert_select "div.project_done[style*=left:52px]"
+        end
+      end
+
+      context "starting marker" do
+        should "not appear if the starting point is off the gantt chart" do
+          # Shift the date range of the chart
+          @gantt.instance_variable_set('@date_from', Date.today)
+
+          @response.body = @gantt.line_for_project(@project, {:format => :html, :zoom => 4})
+          assert_select "div.project-line.starting", false
+        end
+
+        should "appear at the starting point" do
+          @response.body = @gantt.line_for_project(@project, {:format => :html, :zoom => 4})
+          assert_select "div.project-line.starting[style*=left:52px]"
+        end
+      end
+
+      context "ending marker" do
+        should "not appear if the starting point is off the gantt chart" do
+          # Shift the date range of the chart
+          @gantt.instance_variable_set('@date_to', 2.weeks.ago.to_date)
+
+          @response.body = @gantt.line_for_project(@project, {:format => :html, :zoom => 4})
+          assert_select "div.project-line.ending", false
+
+        end
+
+        should "appear at the end of the date range" do
+          @response.body = @gantt.line_for_project(@project, {:format => :html, :zoom => 4})
+          assert_select "div.project-line.ending[style*=left:84px]"
+        end
+      end
+      
+      context "status content" do
+        should "appear at the far left, even if it's far in the past" do
+          @gantt.instance_variable_set('@date_to', 2.weeks.ago.to_date)
+
+          @response.body = @gantt.line_for_project(@project, {:format => :html, :zoom => 4})
+          assert_select "div.project-name", /#{@project.name}/
+        end
+
+        should "show the project name" do
+          @response.body = @gantt.line_for_project(@project, {:format => :html, :zoom => 4})
+          assert_select "div.project-name", /#{@project.name}/
+        end
+
+        should "show the percent complete" do
+          @response.body = @gantt.line_for_project(@project, {:format => :html, :zoom => 4})
+          assert_select "div.project-name", /0%/
+        end
+      end
+    end
+
+    should "test the PNG format"
+    should "test the PDF format"
+  end
+
+  context "#subject_for_version" do
+    setup do
+      create_gantt
+      @project.enabled_module_names = [:issue_tracking]
+      @tracker = Tracker.generate!
+      @project.trackers << @tracker
+      @version = Version.generate!(:effective_date => Date.yesterday)
+      @project.versions << @version
+
+      @project.issues << Issue.generate!(:fixed_version => @version,
+                                         :subject => "gantt#subject_for_version",
+                                         :tracker => @tracker,
+                                         :project => @project,
+                                         :start_date => Date.today)
+
+    end
+
+    context ":html format" do
+      should "add an absolute positioned div" do
+        @response.body = @gantt.subject_for_version(@version, {:format => :html})
+        assert_select "div[style*=absolute]"
+      end
+
+      should "use the indent option to move the div to the right" do
+        @response.body = @gantt.subject_for_version(@version, {:format => :html, :indent => 40})
+        assert_select "div[style*=left:40]"
+      end
+
+      should "include the version name" do
+        @response.body = @gantt.subject_for_version(@version, {:format => :html})
+        assert_select 'div', :text => /#{@version.name}/
+      end
+
+      should "include a link to the version" do
+        @response.body = @gantt.subject_for_version(@version, {:format => :html})
+        assert_select 'a[href=?]', Regexp.escape("/versions/show/#{@version.to_param}"), :text => /#{@version.name}/
+      end
+
+      should "style late versions" do
+        assert @version.overdue?, "Need an overdue version for this test"
+        @response.body = @gantt.subject_for_version(@version, {:format => :html})
+
+        assert_select 'div span.version-behind-schedule'
+      end
+
+      should "style behind schedule versions" do
+        assert @version.behind_schedule?, "Need a behind schedule version for this test"
+        @response.body = @gantt.subject_for_version(@version, {:format => :html})
+
+        assert_select 'div span.version-behind-schedule'
+      end
+    end
+    should "test the PNG format"
+    should "test the PDF format"
+  end
+
+  context "#line_for_version" do
+    setup do
+      create_gantt
+      @project.enabled_module_names = [:issue_tracking]
+      @tracker = Tracker.generate!
+      @project.trackers << @tracker
+      @version = Version.generate!(:effective_date => 1.week.from_now.to_date)
+      @project.versions << @version
+
+      @project.issues << Issue.generate!(:fixed_version => @version,
+                                         :subject => "gantt#line_for_project",
+                                         :tracker => @tracker,
+                                         :project => @project,
+                                         :done_ratio => 30,
+                                         :start_date => Date.yesterday,
+                                         :due_date => 1.week.from_now.to_date)
+    end
+
+    context ":html format" do
+      context "todo line" do
+        should "start from the starting point on the left" do
+          @response.body = @gantt.line_for_version(@version, {:format => :html, :zoom => 4})
+          assert_select "div.milestone_todo[style*=left:52px]"
+        end
+
+        should "be the total width of the version" do
+          @response.body = @gantt.line_for_version(@version, {:format => :html, :zoom => 4})
+          assert_select "div.milestone_todo[style*=width:31px]"
+        end
+
+      end
+
+      context "late line" do
+        should "start from the starting point on the left" do
+          @response.body = @gantt.line_for_version(@version, {:format => :html, :zoom => 4})
+          assert_select "div.milestone_late[style*=left:52px]"
+        end
+
+        should "be the total delayed width of the version" do
+          @response.body = @gantt.line_for_version(@version, {:format => :html, :zoom => 4})
+          assert_select "div.milestone_late[style*=width:6px]"
+        end
+      end
+
+      context "done line" do
+        should "start from the starting point on the left" do
+          @response.body = @gantt.line_for_version(@version, {:format => :html, :zoom => 4})
+          assert_select "div.milestone_done[style*=left:52px]"
+        end
+
+        should "Be the total done width of the version"  do
+          @response.body = @gantt.line_for_version(@version, {:format => :html, :zoom => 4})
+          assert_select "div.milestone_done[style*=left:52px]"
+        end
+      end
+
+      context "starting marker" do
+        should "not appear if the starting point is off the gantt chart" do
+          # Shift the date range of the chart
+          @gantt.instance_variable_set('@date_from', Date.today)
+
+          @response.body = @gantt.line_for_version(@version, {:format => :html, :zoom => 4})
+          assert_select "div.milestone.starting", false
+        end
+
+        should "appear at the starting point" do
+          @response.body = @gantt.line_for_version(@version, {:format => :html, :zoom => 4})
+          assert_select "div.milestone.starting[style*=left:52px]"
+        end
+      end
+
+      context "ending marker" do
+        should "not appear if the starting point is off the gantt chart" do
+          # Shift the date range of the chart
+          @gantt.instance_variable_set('@date_to', 2.weeks.ago.to_date)
+
+          @response.body = @gantt.line_for_version(@version, {:format => :html, :zoom => 4})
+          assert_select "div.milestone.ending", false
+
+        end
+
+        should "appear at the end of the date range" do
+          @response.body = @gantt.line_for_version(@version, {:format => :html, :zoom => 4})
+          assert_select "div.milestone.ending[style*=left:84px]"
+        end
+      end
+      
+      context "status content" do
+        should "appear at the far left, even if it's far in the past" do
+          @gantt.instance_variable_set('@date_to', 2.weeks.ago.to_date)
+
+          @response.body = @gantt.line_for_version(@version, {:format => :html, :zoom => 4})
+          assert_select "div.version-name", /#{@version.name}/
+        end
+
+        should "show the version name" do
+          @response.body = @gantt.line_for_version(@version, {:format => :html, :zoom => 4})
+          assert_select "div.version-name", /#{@version.name}/
+        end
+
+        should "show the percent complete" do
+          @response.body = @gantt.line_for_version(@version, {:format => :html, :zoom => 4})
+          assert_select "div.version-name", /30%/
+        end
+      end
+    end
+
+    should "test the PNG format"
+    should "test the PDF format"
+  end
+
+  context "#subject_for_issue" do
+    setup do
+      create_gantt
+      @project.enabled_module_names = [:issue_tracking]
+      @tracker = Tracker.generate!
+      @project.trackers << @tracker
+
+      @issue = Issue.generate!(:subject => "gantt#subject_for_issue",
+                               :tracker => @tracker,
+                               :project => @project,
+                               :start_date => 3.days.ago.to_date,
+                               :due_date => Date.yesterday)
+      @project.issues << @issue
+
+    end
+
+    context ":html format" do
+      should "add an absolute positioned div" do
+        @response.body = @gantt.subject_for_issue(@issue, {:format => :html})
+        assert_select "div[style*=absolute]"
+      end
+
+      should "use the indent option to move the div to the right" do
+        @response.body = @gantt.subject_for_issue(@issue, {:format => :html, :indent => 40})
+        assert_select "div[style*=left:40]"
+      end
+
+      should "include the issue subject" do
+        @response.body = @gantt.subject_for_issue(@issue, {:format => :html})
+        assert_select 'div', :text => /#{@issue.subject}/
+      end
+
+      should "include a link to the issue" do
+        @response.body = @gantt.subject_for_issue(@issue, {:format => :html})
+        assert_select 'a[href=?]', Regexp.escape("/issues/#{@issue.to_param}"), :text => /#{@tracker.name} ##{@issue.id}/
+      end
+
+      should "style overdue issues" do
+        assert @issue.overdue?, "Need an overdue issue for this test"
+        @response.body = @gantt.subject_for_issue(@issue, {:format => :html})
+
+        assert_select 'div span.issue-overdue'
+      end
+
+    end
+    should "test the PNG format"
+    should "test the PDF format"
+  end
+
+  context "#line_for_issue" do
+    setup do
+      create_gantt
+      @project.enabled_module_names = [:issue_tracking]
+      @tracker = Tracker.generate!
+      @project.trackers << @tracker
+      @version = Version.generate!(:effective_date => 1.week.from_now.to_date)
+      @project.versions << @version
+      @issue = Issue.generate!(:fixed_version => @version,
+                               :subject => "gantt#line_for_project",
+                               :tracker => @tracker,
+                               :project => @project,
+                               :done_ratio => 30,
+                               :start_date => Date.yesterday,
+                               :due_date => 1.week.from_now.to_date)
+      @project.issues << @issue
+    end
+
+    context ":html format" do
+      context "todo line" do
+        should "start from the starting point on the left" do
+          @response.body = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4})
+          assert_select "div.task_todo[style*=left:52px]"
+        end
+
+        should "be the total width of the issue" do
+          @response.body = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4})
+          assert_select "div.task_todo[style*=width:34px]"
+        end
+
+      end
+
+      context "late line" do
+        should "start from the starting point on the left" do
+          @response.body = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4})
+          assert_select "div.task_late[style*=left:52px]"
+        end
+
+        should "be the total delayed width of the issue" do
+          @response.body = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4})
+          assert_select "div.task_late[style*=width:6px]"
+        end
+      end
+
+      context "done line" do
+        should "start from the starting point on the left" do
+          @response.body = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4})
+          assert_select "div.task_done[style*=left:52px]"
+        end
+
+        should "Be the total done width of the issue"  do
+          @response.body = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4})
+          assert_select "div.task_done[style*=left:52px]"
+        end
+      end
+
+      context "status content" do
+        should "appear at the far left, even if it's far in the past" do
+          @gantt.instance_variable_set('@date_to', 2.weeks.ago.to_date)
+
+          @response.body = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4})
+          assert_select "div.issue-name"
+        end
+
+        should "show the issue status" do
+          @response.body = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4})
+          assert_select "div.issue-name", /#{@issue.status.name}/
+        end
+
+        should "show the percent complete" do
+          @response.body = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4})
+          assert_select "div.issue-name", /30%/
+        end
+      end
+    end
+
+    should "have an issue tooltip" do
+      @response.body = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4})
+      assert_select "div.tooltip", /#{@issue.subject}/
+    end
+
+    should "test the PNG format"
+    should "test the PDF format"
+  end
+
+  context "#to_image" do
+    should "be tested"
+  end
+
+  context "#to_pdf" do
+    should "be tested"
+  end
+  
+end
--- a/test/unit/lib/redmine/menu_manager/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/unit/lib/redmine/menu_manager/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/test/unit/lib/redmine/menu_manager
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-08-25T15:27:52.354515Z
+2010-09-23T14:37:45.495799Z
 f711293b27708be59b9a214afebd2301
 2010-08-08T07:07:38.841875Z
 3926
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:43.476193Z
+2010-09-23T14:37:45.495799Z
 39fc6bb354951d8a63ce60d7a8c6f3b9
 2009-11-25T05:36:56.757796Z
 3092
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:43.476193Z
+2010-09-23T14:37:45.495799Z
 36bcd70d121e19e4c51ee3b66120bd7a
 2010-02-18T05:01:39.440573Z
 3447
--- a/test/unit/lib/redmine/scm/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/unit/lib/redmine/scm/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/test/unit/lib/redmine/scm
 http://redmine.rubyforge.org/svn
 
--- a/test/unit/lib/redmine/scm/adapters/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/unit/lib/redmine/scm/adapters/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/test/unit/lib/redmine/scm/adapters
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:43.454496Z
+2010-09-23T14:37:45.499807Z
 bd8ceadd53ed4a3d051d65e88c7c9915
 2010-05-01T08:32:21.345847Z
 3720
@@ -66,7 +66,7 @@
 
 
 
-2010-08-25T15:27:52.338587Z
+2010-09-23T14:37:45.499807Z
 2a16f983128223e9db99adc3f1fffa75
 2010-08-08T07:07:30.284069Z
 3925
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:43.456096Z
+2010-09-23T14:37:45.499807Z
 5f323b405262d8aea1c3696721de1b46
 2010-03-06T20:35:38.939541Z
 3551
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:43.456096Z
+2010-09-23T14:37:45.499807Z
 9c84d86c3d7bdffa6d44a88bc3889baf
 2010-03-06T20:35:38.939541Z
 3551
--- a/test/unit/lib/redmine/wiki_formatting/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/unit/lib/redmine/wiki_formatting/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/test/unit/lib/redmine/wiki_formatting
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:43.460097Z
+2010-09-23T14:37:45.503764Z
 b8ba1b21fe83c63c449dd87d6e0a3e29
 2010-03-20T12:54:23.540906Z
 3605
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:43.460097Z
+2010-09-23T14:37:45.503764Z
 a1049f9d77597fa44715313283e4fdf6
 2009-01-26T01:47:51.253124Z
 2317
--- a/test/unit/mailer_test.rb	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/unit/mailer_test.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -355,6 +355,16 @@
     assert_equal '1 issue(s) due in the next 42 days', mail.subject
   end
   
+  def test_reminders_for_users
+    Mailer.reminders(:days => 42, :users => ['5'])
+    assert_equal 0, ActionMailer::Base.deliveries.size # No mail for dlopper
+    Mailer.reminders(:days => 42, :users => ['3'])
+    assert_equal 1, ActionMailer::Base.deliveries.size # No mail for dlopper
+    mail = ActionMailer::Base.deliveries.last
+    assert mail.bcc.include?('dlopper@somenet.foo')
+    assert mail.body.include?('Bug #3: Error 281 when updating a recipe')
+  end
+  
   def last_email
     mail = ActionMailer::Base.deliveries.last
     assert_not_nil mail
--- a/test/unit/project_test.rb	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/unit/project_test.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -842,4 +842,122 @@
     
   end
 
+  context "#start_date" do
+    setup do
+      ProjectCustomField.destroy_all # Custom values are a mess to isolate in tests
+      @project = Project.generate!(:identifier => 'test0')
+      @project.trackers << Tracker.generate!
+    end
+    
+    should "be nil if there are no issues on the project" do
+      assert_nil @project.start_date
+    end
+
+    should "be nil if issue tracking is disabled" do
+      Issue.generate_for_project!(@project, :start_date => Date.today)
+      @project.enabled_modules.find_all_by_name('issue_tracking').each {|m| m.destroy}
+      @project.reload
+      
+      assert_nil @project.start_date
+    end
+
+    should "be the earliest start date of it's issues" do
+      early = 7.days.ago.to_date
+      Issue.generate_for_project!(@project, :start_date => Date.today)
+      Issue.generate_for_project!(@project, :start_date => early)
+
+      assert_equal early, @project.start_date
+    end
+
+  end
+
+  context "#due_date" do
+    setup do
+      ProjectCustomField.destroy_all # Custom values are a mess to isolate in tests
+      @project = Project.generate!(:identifier => 'test0')
+      @project.trackers << Tracker.generate!
+    end
+    
+    should "be nil if there are no issues on the project" do
+      assert_nil @project.due_date
+    end
+
+    should "be nil if issue tracking is disabled" do
+      Issue.generate_for_project!(@project, :due_date => Date.today)
+      @project.enabled_modules.find_all_by_name('issue_tracking').each {|m| m.destroy}
+      @project.reload
+      
+      assert_nil @project.due_date
+    end
+
+    should "be the latest due date of it's issues" do
+      future = 7.days.from_now.to_date
+      Issue.generate_for_project!(@project, :due_date => future)
+      Issue.generate_for_project!(@project, :due_date => Date.today)
+
+      assert_equal future, @project.due_date
+    end
+
+    should "be the latest due date of it's versions" do
+      future = 7.days.from_now.to_date
+      @project.versions << Version.generate!(:effective_date => future)
+      @project.versions << Version.generate!(:effective_date => Date.today)
+      
+
+      assert_equal future, @project.due_date
+
+    end
+
+    should "pick the latest date from it's issues and versions" do
+      future = 7.days.from_now.to_date
+      far_future = 14.days.from_now.to_date
+      Issue.generate_for_project!(@project, :due_date => far_future)
+      @project.versions << Version.generate!(:effective_date => future)
+      
+      assert_equal far_future, @project.due_date
+    end
+
+  end
+
+  context "Project#completed_percent" do
+    setup do
+      ProjectCustomField.destroy_all # Custom values are a mess to isolate in tests
+      @project = Project.generate!(:identifier => 'test0')
+      @project.trackers << Tracker.generate!
+    end
+
+    context "no versions" do
+      should "be 100" do
+        assert_equal 100, @project.completed_percent
+      end
+    end
+
+    context "with versions" do
+      should "return 0 if the versions have no issues" do
+        Version.generate!(:project => @project)
+        Version.generate!(:project => @project)
+
+        assert_equal 0, @project.completed_percent
+      end
+
+      should "return 100 if the version has only closed issues" do
+        v1 = Version.generate!(:project => @project)
+        Issue.generate_for_project!(@project, :status => IssueStatus.find_by_name('Closed'), :fixed_version => v1)
+        v2 = Version.generate!(:project => @project)
+        Issue.generate_for_project!(@project, :status => IssueStatus.find_by_name('Closed'), :fixed_version => v2)
+
+        assert_equal 100, @project.completed_percent
+      end
+
+      should "return the averaged completed percent of the versions (not weighted)" do
+        v1 = Version.generate!(:project => @project)
+        Issue.generate_for_project!(@project, :status => IssueStatus.find_by_name('New'), :estimated_hours => 10, :done_ratio => 50, :fixed_version => v1)
+        v2 = Version.generate!(:project => @project)
+        Issue.generate_for_project!(@project, :status => IssueStatus.find_by_name('New'), :estimated_hours => 10, :done_ratio => 50, :fixed_version => v2)
+
+        assert_equal 50, @project.completed_percent
+      end
+
+    end
+  end
 end
--- a/test/unit/query_test.rb	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/unit/query_test.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -48,6 +48,16 @@
       :conditions => query.statement
   end
 
+  def assert_find_issues_with_query_is_successful(query)
+    assert_nothing_raised do
+      find_issues_with_query(query)
+    end
+  end
+
+  def assert_query_statement_includes(query, condition)
+    assert query.statement.include?(condition), "Query statement condition not found in: #{query.statement}"
+  end
+
   def test_query_should_allow_shared_versions_for_a_project_query
     subproject_version = Version.find(4)
     query = Query.new(:project => Project.find(1), :name => '_')
@@ -362,11 +372,153 @@
   end
 
   context "#available_filters" do
+    setup do
+      @query = Query.new(:name => "_")
+    end
+    
     should "include users of visible projects in cross-project view" do
-      query = Query.new(:name => "_")
-      users = query.available_filters["assigned_to_id"]
+      users = @query.available_filters["assigned_to_id"]
       assert_not_nil users
       assert users[:values].map{|u|u[1]}.include?("3")
     end
+
+    context "'member_of_group' filter" do
+      should "be present" do
+        assert @query.available_filters.keys.include?("member_of_group")
+      end
+      
+      should "be an optional list" do
+        assert_equal :list_optional, @query.available_filters["member_of_group"][:type]
+      end
+      
+      should "have a list of the groups as values" do
+        Group.destroy_all # No fixtures
+        group1 = Group.generate!.reload
+        group2 = Group.generate!.reload
+
+        expected_group_list = [
+                               [group1.name, group1.id],
+                               [group2.name, group2.id]
+                              ]
+        assert_equal expected_group_list.sort, @query.available_filters["member_of_group"][:values].sort
+      end
+
+    end
+
+    context "'assigned_to_role' filter" do
+      should "be present" do
+        assert @query.available_filters.keys.include?("assigned_to_role")
+      end
+      
+      should "be an optional list" do
+        assert_equal :list_optional, @query.available_filters["assigned_to_role"][:type]
+      end
+      
+      should "have a list of the Roles as values" do
+        assert @query.available_filters["assigned_to_role"][:values].include?(['Manager',1])
+        assert @query.available_filters["assigned_to_role"][:values].include?(['Developer',2])
+        assert @query.available_filters["assigned_to_role"][:values].include?(['Reporter',3])
+      end
+
+      should "not include the built in Roles as values" do
+        assert ! @query.available_filters["assigned_to_role"][:values].include?(['Non member',4])
+        assert ! @query.available_filters["assigned_to_role"][:values].include?(['Anonymous',5])
+      end
+
+    end
+
   end
+
+  context "#statement" do
+    context "with 'member_of_group' filter" do
+      setup do
+        Group.destroy_all # No fixtures
+        @user_in_group = User.generate!
+        @second_user_in_group = User.generate!
+        @user_in_group2 = User.generate!
+        @user_not_in_group = User.generate!
+        
+        @group = Group.generate!.reload
+        @group.users << @user_in_group
+        @group.users << @second_user_in_group
+        
+        @group2 = Group.generate!.reload
+        @group2.users << @user_in_group2
+        
+      end
+      
+      should "search assigned to for users in the group" do
+        @query = Query.new(:name => '_')
+        @query.add_filter('member_of_group', '=', [@group.id.to_s])
+
+        assert_query_statement_includes @query, "#{Issue.table_name}.assigned_to_id IN ('#{@user_in_group.id}','#{@second_user_in_group.id}')"
+        assert_find_issues_with_query_is_successful @query
+      end
+
+      should "search not assigned to any group member (none)" do
+        @query = Query.new(:name => '_')
+        @query.add_filter('member_of_group', '!*', [''])
+
+        # Users not in a group
+        assert_query_statement_includes @query, "#{Issue.table_name}.assigned_to_id IS NULL OR #{Issue.table_name}.assigned_to_id NOT IN ('#{@user_in_group.id}','#{@second_user_in_group.id}','#{@user_in_group2.id}')"
+        assert_find_issues_with_query_is_successful @query
+
+      end
+
+      should "search assigned to any group member (all)" do
+        @query = Query.new(:name => '_')
+        @query.add_filter('member_of_group', '*', [''])
+
+        # Only users in a group
+        assert_query_statement_includes @query, "#{Issue.table_name}.assigned_to_id IN ('#{@user_in_group.id}','#{@second_user_in_group.id}','#{@user_in_group2.id}')"
+        assert_find_issues_with_query_is_successful @query
+
+      end
+    end
+
+    context "with 'assigned_to_role' filter" do
+      setup do
+        # No fixtures
+        MemberRole.delete_all
+        Member.delete_all
+        Role.delete_all
+        
+        @manager_role = Role.generate!(:name => 'Manager')
+        @developer_role = Role.generate!(:name => 'Developer')
+
+        @project = Project.generate!
+        @manager = User.generate!
+        @developer = User.generate!
+        @boss = User.generate!
+        User.add_to_project(@manager, @project, @manager_role)
+        User.add_to_project(@developer, @project, @developer_role)
+        User.add_to_project(@boss, @project, [@manager_role, @developer_role])
+      end
+      
+      should "search assigned to for users with the Role" do
+        @query = Query.new(:name => '_')
+        @query.add_filter('assigned_to_role', '=', [@manager_role.id.to_s])
+
+        assert_query_statement_includes @query, "#{Issue.table_name}.assigned_to_id IN ('#{@manager.id}','#{@boss.id}')"
+        assert_find_issues_with_query_is_successful @query
+      end
+
+      should "search assigned to for users not assigned to any Role (none)" do
+        @query = Query.new(:name => '_')
+        @query.add_filter('assigned_to_role', '!*', [''])
+
+        assert_query_statement_includes @query, "#{Issue.table_name}.assigned_to_id IS NULL OR #{Issue.table_name}.assigned_to_id NOT IN ('#{@manager.id}','#{@developer.id}','#{@boss.id}')"
+        assert_find_issues_with_query_is_successful @query
+      end
+
+      should "search assigned to for users assigned to any Role (all)" do
+        @query = Query.new(:name => '_')
+        @query.add_filter('assigned_to_role', '*', [''])
+
+        assert_query_statement_includes @query, "#{Issue.table_name}.assigned_to_id IN ('#{@manager.id}','#{@developer.id}','#{@boss.id}')"
+        assert_find_issues_with_query_is_successful @query
+      end
+    end
+  end
+  
 end
--- a/test/unit/time_entry_test.rb	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/unit/time_entry_test.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -48,4 +48,52 @@
   def test_hours_should_default_to_nil
     assert_nil TimeEntry.new.hours
   end
+
+  context "#earilest_date_for_project" do
+    setup do
+      User.current = nil
+      @public_project = Project.generate!(:is_public => true)
+      @issue = Issue.generate_for_project!(@public_project)
+      TimeEntry.generate!(:spent_on => '2010-01-01',
+                          :issue => @issue,
+                          :project => @public_project)
+    end
+    
+    context "without a project" do
+      should "return the lowest spent_on value that is visible to the current user" do
+        assert_equal "2007-03-12", TimeEntry.earilest_date_for_project.to_s
+      end
+    end
+
+    context "with a project" do
+      should "return the lowest spent_on value that is visible to the current user for that project and it's subprojects only" do
+        assert_equal "2010-01-01", TimeEntry.earilest_date_for_project(@public_project).to_s
+      end
+    end
+      
+  end
+
+  context "#latest_date_for_project" do
+    setup do
+      User.current = nil
+      @public_project = Project.generate!(:is_public => true)
+      @issue = Issue.generate_for_project!(@public_project)
+      TimeEntry.generate!(:spent_on => '2010-01-01',
+                          :issue => @issue,
+                          :project => @public_project)
+    end
+
+    context "without a project" do
+      should "return the highest spent_on value that is visible to the current user" do
+        assert_equal "2010-01-01", TimeEntry.latest_date_for_project.to_s
+      end
+    end
+
+    context "with a project" do
+      should "return the highest spent_on value that is visible to the current user for that project and it's subprojects only" do
+        project = Project.find(1)
+        assert_equal "2007-04-22", TimeEntry.latest_date_for_project(project).to_s
+      end
+    end
+  end  
 end
--- a/test/unit/user_test.rb	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/unit/user_test.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -355,6 +355,49 @@
 
   end
   
+  context "#allowed_to?" do
+    context "with a unique project" do
+      should "return false if project is archived" do
+        project = Project.find(1)
+        Project.any_instance.stubs(:status).returns(Project::STATUS_ARCHIVED)
+        assert ! @admin.allowed_to?(:view_issues, Project.find(1))
+      end
+      
+      should "return false if related module is disabled" do
+        project = Project.find(1)
+        project.enabled_module_names = ["issue_tracking"]
+        assert @admin.allowed_to?(:add_issues, project)
+        assert ! @admin.allowed_to?(:view_wiki_pages, project)
+      end
+      
+      should "authorize nearly everything for admin users" do
+        project = Project.find(1)
+        assert ! @admin.member_of?(project)
+        %w(edit_issues delete_issues manage_news manage_documents manage_wiki).each do |p|
+          assert @admin.allowed_to?(p.to_sym, project)
+        end
+      end
+      
+      should "authorize normal users depending on their roles" do
+        project = Project.find(1)
+        assert @jsmith.allowed_to?(:delete_messages, project)    #Manager
+        assert ! @dlopper.allowed_to?(:delete_messages, project) #Developper
+      end
+    end
+    
+    context "with options[:global]" do
+      should "authorize if user has at least one role that has this permission" do
+        @dlopper2 = User.find(5) #only Developper on a project, not Manager anywhere
+        @anonymous = User.find(6)
+        assert @jsmith.allowed_to?(:delete_issue_watchers, nil, :global => true)
+        assert ! @dlopper2.allowed_to?(:delete_issue_watchers, nil, :global => true)
+        assert @dlopper2.allowed_to?(:add_issues, nil, :global => true)
+        assert ! @anonymous.allowed_to?(:add_issues, nil, :global => true)
+        assert @anonymous.allowed_to?(:view_issues, nil, :global => true)
+      end
+    end
+  end
+  
   if Object.const_defined?(:OpenID)
     
   def test_setting_identity_url
--- a/test/unit/version_test.rb	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/unit/version_test.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -104,7 +104,57 @@
     assert_progress_equal (25.0*0.2 + 25.0*1 + 10.0*0.3 + 40.0*0.1)/100.0*100, v.completed_pourcent
     assert_progress_equal 25.0/100.0*100, v.closed_pourcent
   end
-  
+
+  context "#behind_schedule?" do
+    setup do
+      ProjectCustomField.destroy_all # Custom values are a mess to isolate in tests
+      @project = Project.generate!(:identifier => 'test0')
+      @project.trackers << Tracker.generate!
+
+      @version = Version.generate!(:project => @project, :effective_date => nil)
+    end
+    
+    should "be false if there are no issues assigned" do
+      @version.update_attribute(:effective_date, Date.yesterday)
+      assert_equal false, @version.behind_schedule?
+    end
+
+    should "be false if there is no effective_date" do
+      assert_equal false, @version.behind_schedule?
+    end
+
+    should "be false if all of the issues are ahead of schedule" do
+      @version.update_attribute(:effective_date, 7.days.from_now.to_date)
+      @version.fixed_issues = [
+                               Issue.generate_for_project!(@project, :start_date => 7.days.ago, :done_ratio => 60), # 14 day span, 60% done, 50% time left
+                               Issue.generate_for_project!(@project, :start_date => 7.days.ago, :done_ratio => 60) # 14 day span, 60% done, 50% time left
+                              ]
+      assert_equal 60, @version.completed_pourcent
+      assert_equal false, @version.behind_schedule?
+    end
+
+    should "be true if any of the issues are behind schedule" do
+      @version.update_attribute(:effective_date, 7.days.from_now.to_date)
+      @version.fixed_issues = [
+                               Issue.generate_for_project!(@project, :start_date => 7.days.ago, :done_ratio => 60), # 14 day span, 60% done, 50% time left
+                               Issue.generate_for_project!(@project, :start_date => 7.days.ago, :done_ratio => 20) # 14 day span, 20% done, 50% time left
+                              ]
+      assert_equal 40, @version.completed_pourcent
+      assert_equal true, @version.behind_schedule?
+    end
+
+    should "be false if all of the issues are complete" do
+      @version.update_attribute(:effective_date, 7.days.from_now.to_date)
+      @version.fixed_issues = [
+                               Issue.generate_for_project!(@project, :start_date => 14.days.ago, :done_ratio => 100, :status => IssueStatus.find(5)), # 7 day span
+                               Issue.generate_for_project!(@project, :start_date => 14.days.ago, :done_ratio => 100, :status => IssueStatus.find(5)) # 7 day span
+                              ]
+      assert_equal 100, @version.completed_pourcent
+      assert_equal false, @version.behind_schedule?
+
+    end
+  end
+
   context "#estimated_hours" do
     setup do
       @version = Version.create!(:project_id => 1, :name => '#estimated_hours')
--- a/tmp/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/tmp/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/tmp
 http://redmine.rubyforge.org/svn
 
--- a/tmp/cache/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/tmp/cache/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/tmp/cache
 http://redmine.rubyforge.org/svn
 
--- a/tmp/sessions/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/tmp/sessions/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/tmp/sessions
 http://redmine.rubyforge.org/svn
 
--- a/tmp/sockets/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/tmp/sockets/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/tmp/sockets
 http://redmine.rubyforge.org/svn
 
--- a/tmp/test/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/tmp/test/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/tmp/test
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:47.040095Z
+2010-09-23T14:37:45.515807Z
 d41d8cd98f00b204e9800998ecf8427e
 2009-06-08T02:07:30.275769Z
 2784
--- a/vendor/.svn/all-wcprops	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/.svn/all-wcprops	Fri Sep 24 15:51:28 2010 +0100
@@ -1,5 +1,5 @@
 K 25
 svn:wc:ra_dav:version-url
 V 31
-/svn/!svn/ver/3933/trunk/vendor
+/svn/!svn/ver/4094/trunk/vendor
 END
--- a/vendor/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,15 +1,15 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor
 http://redmine.rubyforge.org/svn
 
 
 
-2010-08-10T21:12:32.103531Z
-3933
-jbbarth
+2010-09-17T04:06:40.671348Z
+4094
+edavis10
 has-props
 
 
--- a/vendor/gems/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/gems/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/gems
 http://redmine.rubyforge.org/svn
 
--- a/vendor/gems/rubytree-0.5.2/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/gems/rubytree-0.5.2/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/gems/rubytree-0.5.2
 http://redmine.rubyforge.org/svn
 
@@ -35,7 +35,7 @@
 
 
 
-2010-07-23T14:49:47.036097Z
+2010-09-23T14:37:45.523822Z
 48b46ff6764d5b76e1ad138669923aff
 2009-11-25T05:36:44.792571Z
 3090
@@ -69,7 +69,7 @@
 
 
 
-2010-07-23T14:49:47.036097Z
+2010-09-23T14:37:45.523822Z
 954df52967073c3833d9c565bb4b1ea8
 2009-11-25T05:36:44.792571Z
 3090
@@ -103,7 +103,7 @@
 
 
 
-2010-07-23T14:49:47.036097Z
+2010-09-23T14:37:45.527765Z
 f3e96d4b9eeb3d0c4d841c7c7ea6259c
 2009-11-25T05:36:44.792571Z
 3090
@@ -137,7 +137,7 @@
 
 
 
-2010-07-23T14:49:47.036097Z
+2010-09-23T14:37:45.523822Z
 7a9a6ee34490c5d9c4148c7cf8f85034
 2009-11-25T05:36:44.792571Z
 3090
@@ -171,7 +171,7 @@
 
 
 
-2010-07-23T14:49:47.036097Z
+2010-09-23T14:37:45.523822Z
 82301a43d2504d992ba1cfd7839b2d7e
 2009-11-25T05:36:44.792571Z
 3090
@@ -208,7 +208,7 @@
 
 
 
-2010-07-23T14:49:47.036097Z
+2010-09-23T14:37:45.523822Z
 b15b8164d281daa7c7028cdda9635950
 2009-11-25T05:36:44.792571Z
 3090
@@ -242,7 +242,7 @@
 
 
 
-2010-07-23T14:49:47.036097Z
+2010-09-23T14:37:45.523822Z
 25d0fdd6b9633f784544a5c000dc1351
 2009-11-25T05:36:44.792571Z
 3090
@@ -276,7 +276,7 @@
 
 
 
-2010-07-23T14:49:47.036097Z
+2010-09-23T14:37:45.523822Z
 13d490389c788748b3931b9e09b2b4d4
 2009-11-25T05:36:44.792571Z
 3090
@@ -310,7 +310,7 @@
 
 
 
-2010-07-23T14:49:47.036097Z
+2010-09-23T14:37:45.519811Z
 5906fb8bdb4197fe19171f795952ed9d
 2009-11-25T05:36:44.792571Z
 3090
--- a/vendor/gems/rubytree-0.5.2/lib/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/gems/rubytree-0.5.2/lib/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/gems/rubytree-0.5.2/lib
 http://redmine.rubyforge.org/svn
 
@@ -35,7 +35,7 @@
 
 
 
-2010-07-23T14:49:47.032097Z
+2010-09-23T14:37:45.527765Z
 46e46766767dc3a96b3019d385a5af83
 2009-11-25T05:36:44.792571Z
 3090
--- a/vendor/gems/rubytree-0.5.2/lib/tree/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/gems/rubytree-0.5.2/lib/tree/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/gems/rubytree-0.5.2/lib/tree
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:47.028098Z
+2010-09-23T14:37:45.527765Z
 54320f0ffbb41fa9d99ab2d617636ea1
 2009-11-25T05:36:44.792571Z
 3090
--- a/vendor/gems/rubytree-0.5.2/test/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/gems/rubytree-0.5.2/test/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/gems/rubytree-0.5.2/test
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:47.024226Z
+2010-09-23T14:37:45.531765Z
 bd5257614b958bab00916feffc4fa9ae
 2009-11-25T05:36:44.792571Z
 3090
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:47.024226Z
+2010-09-23T14:37:45.531765Z
 b9b4a1d43e859491e80fb1e2c7499d20
 2009-11-25T05:36:44.792571Z
 3090
--- a/vendor/plugins/.svn/all-wcprops	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/.svn/all-wcprops	Fri Sep 24 15:51:28 2010 +0100
@@ -1,5 +1,5 @@
 K 25
 svn:wc:ra_dav:version-url
 V 39
-/svn/!svn/ver/3933/trunk/vendor/plugins
+/svn/!svn/ver/4094/trunk/vendor/plugins
 END
--- a/vendor/plugins/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,15 +1,15 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins
 http://redmine.rubyforge.org/svn
 
 
 
-2010-08-10T21:12:32.103531Z
-3933
-jbbarth
+2010-09-17T04:06:40.671348Z
+4094
+edavis10
 
 
 
@@ -41,10 +41,10 @@
 engines
 dir
 
-coderay-0.9.2
+classic_pagination
 dir
 
-classic_pagination
+coderay-0.9.2
 dir
 
 acts_as_versioned
--- a/vendor/plugins/acts_as_activity_provider/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/acts_as_activity_provider/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_activity_provider
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.920130Z
+2010-09-23T14:37:45.531765Z
 779d73c171dc111df084a0798cca73e2
 2008-07-27T17:54:09.197937Z
 1701
--- a/vendor/plugins/acts_as_activity_provider/lib/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/acts_as_activity_provider/lib/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_activity_provider/lib
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.920130Z
+2010-09-23T14:37:45.535765Z
 21fbeb28c4ce556d2534306b96be9497
 2008-12-08T18:20:26.452857Z
 2114
--- a/vendor/plugins/acts_as_attachable/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/acts_as_attachable/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_attachable
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.367755Z
+2010-09-23T14:37:45.535765Z
 b215588c95e69b4bb8f91ad91606bfbe
 2008-12-09T16:54:46.963649Z
 2116
--- a/vendor/plugins/acts_as_attachable/lib/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/acts_as_attachable/lib/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_attachable/lib
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.367755Z
+2010-09-23T14:37:45.535765Z
 982227c44f1fe848c8aeed862ea027f3
 2010-03-03T17:05:00.967826Z
 3528
--- a/vendor/plugins/acts_as_customizable/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/acts_as_customizable/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_customizable
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.892127Z
+2010-09-23T14:37:45.539808Z
 0d1f178b7636d6712b38304954530928
 2008-06-27T20:13:56.888432Z
 1592
--- a/vendor/plugins/acts_as_customizable/lib/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/acts_as_customizable/lib/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_customizable/lib
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.892127Z
+2010-09-23T14:37:45.539808Z
 9d2f2e3d8ac21a68cbaafca4788c2f1d
 2010-03-13T14:56:49.379682Z
 3573
--- a/vendor/plugins/acts_as_event/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/acts_as_event/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_event
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:47.016159Z
+2010-09-23T14:37:45.539808Z
 60df7ab698ddd0c3701bb0efbb8233cf
 2007-08-29T16:52:35.680643Z
 674
--- a/vendor/plugins/acts_as_event/lib/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/acts_as_event/lib/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_event/lib
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:47.016159Z
+2010-09-23T14:37:45.543762Z
 ca8e33777d59976db870f71defe5f66d
 2010-04-30T10:45:21.145380Z
 3703
--- a/vendor/plugins/acts_as_list/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/acts_as_list/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_list
 http://redmine.rubyforge.org/svn
 
@@ -35,7 +35,7 @@
 
 
 
-2010-07-23T14:49:46.944096Z
+2010-09-23T14:37:45.543762Z
 0bdbdc825f80fda1a94852a82b68ffd4
 2007-12-10T17:58:07.273873Z
 975
@@ -72,7 +72,7 @@
 
 
 
-2010-07-23T14:49:46.944096Z
+2010-09-23T14:37:45.543762Z
 42212b5cb681c9888d56f9c0f36e1e02
 2007-12-10T17:58:07.273873Z
 975
--- a/vendor/plugins/acts_as_list/lib/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/acts_as_list/lib/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_list/lib
 http://redmine.rubyforge.org/svn
 
--- a/vendor/plugins/acts_as_list/lib/active_record/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/acts_as_list/lib/active_record/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_list/lib/active_record
 http://redmine.rubyforge.org/svn
 
--- a/vendor/plugins/acts_as_list/lib/active_record/acts/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/acts_as_list/lib/active_record/acts/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_list/lib/active_record/acts
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.940098Z
+2010-09-23T14:37:45.547761Z
 a3ee41e8bed56868bc2e4ab2cb7df73a
 2009-02-26T09:21:41.696815Z
 2526
--- a/vendor/plugins/acts_as_list/test/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/acts_as_list/test/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_list/test
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.936111Z
+2010-09-23T14:37:45.551763Z
 3d41debf5c631e88295d337507c3b5b6
 2007-12-10T17:58:07.273873Z
 975
--- a/vendor/plugins/acts_as_searchable/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/acts_as_searchable/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_searchable
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.376142Z
+2010-09-23T14:37:45.551763Z
 7512fe68c7dfbb57e956d22b9aa8f8ed
 2007-09-27T17:28:22.154371Z
 766
--- a/vendor/plugins/acts_as_searchable/lib/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/acts_as_searchable/lib/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_searchable/lib
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.372155Z
+2010-09-23T14:37:45.551763Z
 f282f30a34a9560d7ef3d5883aba5fe9
 2010-02-17T20:20:51.097274Z
 3445
--- a/vendor/plugins/acts_as_tree/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/acts_as_tree/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_tree
 http://redmine.rubyforge.org/svn
 
@@ -35,7 +35,7 @@
 
 
 
-2010-07-23T14:49:46.888097Z
+2010-09-23T14:37:45.555763Z
 77667cb4c41516750075eefb98896a93
 2007-12-10T17:58:07.273873Z
 975
@@ -69,7 +69,7 @@
 
 
 
-2010-07-23T14:49:46.888097Z
+2010-09-23T14:37:45.555763Z
 581c104f87fe90cfe9a7d1d41d77c84f
 2007-12-10T17:58:07.273873Z
 975
@@ -106,7 +106,7 @@
 
 
 
-2010-07-23T14:49:46.888097Z
+2010-09-23T14:37:45.555763Z
 918c85e850eb84259c178529b9aafd62
 2007-12-10T17:58:07.273873Z
 975
--- a/vendor/plugins/acts_as_tree/lib/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/acts_as_tree/lib/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_tree/lib
 http://redmine.rubyforge.org/svn
 
--- a/vendor/plugins/acts_as_tree/lib/active_record/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/acts_as_tree/lib/active_record/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_tree/lib/active_record
 http://redmine.rubyforge.org/svn
 
--- a/vendor/plugins/acts_as_tree/lib/active_record/acts/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/acts_as_tree/lib/active_record/acts/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_tree/lib/active_record/acts
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.884126Z
+2010-09-23T14:37:45.559786Z
 544900d884182d6888334ce14323bef0
 2009-04-21T12:19:56.547537Z
 2676
--- a/vendor/plugins/acts_as_tree/test/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/acts_as_tree/test/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_tree/test
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.876124Z
+2010-09-23T14:37:45.563764Z
 d41d8cd98f00b204e9800998ecf8427e
 2007-12-10T17:58:07.273873Z
 975
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:46.876124Z
+2010-09-23T14:37:45.563764Z
 d41d8cd98f00b204e9800998ecf8427e
 2007-12-10T17:58:07.273873Z
 975
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:46.876124Z
+2010-09-23T14:37:45.563764Z
 d41d8cd98f00b204e9800998ecf8427e
 2007-12-10T17:58:07.273873Z
 975
@@ -137,7 +137,7 @@
 
 
 
-2010-07-23T14:49:46.876124Z
+2010-09-23T14:37:45.563764Z
 7bd3d48984d0e563b9f5e20ca8fdff81
 2007-12-10T17:58:07.273873Z
 975
--- a/vendor/plugins/acts_as_tree/test/fixtures/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/acts_as_tree/test/fixtures/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_tree/test/fixtures
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.876124Z
+2010-09-23T14:37:45.563764Z
 d41d8cd98f00b204e9800998ecf8427e
 2007-12-10T17:58:07.273873Z
 975
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:46.876124Z
+2010-09-23T14:37:45.563764Z
 d41d8cd98f00b204e9800998ecf8427e
 2007-12-10T17:58:07.273873Z
 975
--- a/vendor/plugins/acts_as_versioned/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/acts_as_versioned/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_versioned
 http://redmine.rubyforge.org/svn
 
@@ -35,7 +35,7 @@
 
 
 
-2010-07-23T14:49:46.868094Z
+2010-09-23T14:37:45.567763Z
 8aae554c93cc60ef98cb3da2dd7c1b4b
 2007-03-04T13:40:21.895320Z
 290
@@ -69,7 +69,7 @@
 
 
 
-2010-07-23T14:49:46.868094Z
+2010-09-23T14:37:45.567763Z
 1f57ce7fac2d625797b9ec6d6480cf5b
 2008-07-04T17:58:14.743502Z
 1623
@@ -103,7 +103,7 @@
 
 
 
-2010-07-23T14:49:46.868094Z
+2010-09-23T14:37:45.567763Z
 1d117218f55938f9c75f1f814a4915d1
 2007-03-04T13:40:21.895320Z
 290
@@ -140,7 +140,7 @@
 
 
 
-2010-07-23T14:49:46.868094Z
+2010-09-23T14:37:45.567763Z
 3aa6f483cf322e248d4a1281160f8845
 2007-03-04T13:40:21.895320Z
 290
@@ -174,7 +174,7 @@
 
 
 
-2010-07-23T14:49:46.868094Z
+2010-09-23T14:37:45.567763Z
 e4ba7226e637685b5cca7a9cc5c05af2
 2007-03-04T13:40:21.895320Z
 290
@@ -208,7 +208,7 @@
 
 
 
-2010-07-23T14:49:46.868094Z
+2010-09-23T14:37:45.567763Z
 06ee73d1b4ad386b681f88b9326a0685
 2007-03-04T13:40:21.895320Z
 290
--- a/vendor/plugins/acts_as_versioned/lib/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/acts_as_versioned/lib/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_versioned/lib
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.864095Z
+2010-09-23T14:37:45.571763Z
 474fc02132fce15712540924bb7b22cf
 2008-07-04T17:58:14.743502Z
 1623
--- a/vendor/plugins/acts_as_versioned/test/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/acts_as_versioned/test/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_versioned/test
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.860128Z
+2010-09-23T14:37:45.579760Z
 8a2eaa42c29dc84e0c018e78c99987f1
 2008-07-04T17:58:14.743502Z
 1623
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:46.860128Z
+2010-09-23T14:37:45.579760Z
 df4118ed0edd4b3a0bae0cbb3b7a8a6b
 2007-03-04T13:40:21.895320Z
 290
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:46.860128Z
+2010-09-23T14:37:45.571763Z
 99f5a4aa22b79a8f8c7521a0b1e9ec3e
 2008-07-04T17:58:14.743502Z
 1623
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:46.860128Z
+2010-09-23T14:37:45.571763Z
 c5ac373bf98e48576df3a63ab4349883
 2007-03-04T13:40:21.895320Z
 290
@@ -171,7 +171,7 @@
 
 
 
-2010-07-23T14:49:46.860128Z
+2010-09-23T14:37:45.579760Z
 eb28101ab94f672b3a99998fc03f0d38
 2008-07-04T17:58:14.743502Z
 1623
--- a/vendor/plugins/acts_as_versioned/test/fixtures/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/acts_as_versioned/test/fixtures/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_versioned/test/fixtures
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.856130Z
+2010-09-23T14:37:45.579760Z
 6052582a74186e97a71e6d50ff1c3558
 2007-03-04T13:40:21.895320Z
 290
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:46.856130Z
+2010-09-23T14:37:45.575760Z
 35aca448cc30c958ad2f3a8130903701
 2007-03-04T13:40:21.895320Z
 290
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:46.856130Z
+2010-09-23T14:37:45.575760Z
 df240cb0129f29834aea167ea97df5c9
 2007-03-04T13:40:21.895320Z
 290
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:46.856130Z
+2010-09-23T14:37:45.575760Z
 3e63e88f04d92531412a5e328670313d
 2007-03-04T13:40:21.895320Z
 290
@@ -168,7 +168,7 @@
 
 
 
-2010-07-23T14:49:46.856130Z
+2010-09-23T14:37:45.579760Z
 9e0c65a239dc63caf3ba5b61e5acd86b
 2007-03-04T13:40:21.895320Z
 290
@@ -202,7 +202,7 @@
 
 
 
-2010-07-23T14:49:46.856130Z
+2010-09-23T14:37:45.575760Z
 c9631a233cff08e617f783f2c5d4ebcb
 2007-03-04T13:40:21.895320Z
 290
@@ -236,7 +236,7 @@
 
 
 
-2010-07-23T14:49:46.856130Z
+2010-09-23T14:37:45.579760Z
 6cbb9a0d4b22160edce9cdd270943fcd
 2008-07-04T17:58:14.743502Z
 1623
@@ -270,7 +270,7 @@
 
 
 
-2010-07-23T14:49:46.860128Z
+2010-09-23T14:37:45.575760Z
 7845068722476900746d101729c30187
 2007-03-04T13:40:21.895320Z
 290
@@ -307,7 +307,7 @@
 
 
 
-2010-07-23T14:49:46.860128Z
+2010-09-23T14:37:45.575760Z
 ebfb47357586fa12e4524a65ba0a714a
 2007-03-04T13:40:21.895320Z
 290
@@ -341,7 +341,7 @@
 
 
 
-2010-07-23T14:49:46.860128Z
+2010-09-23T14:37:45.579760Z
 a93535c95869678b16df898b8de4259f
 2007-03-04T13:40:21.895320Z
 290
--- a/vendor/plugins/acts_as_versioned/test/fixtures/migrations/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/acts_as_versioned/test/fixtures/migrations/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_versioned/test/fixtures/migrations
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.856130Z
+2010-09-23T14:37:45.579760Z
 8fca6192aeeba1c8456bd6ac6199839f
 2007-03-04T13:40:21.895320Z
 290
--- a/vendor/plugins/acts_as_watchable/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/acts_as_watchable/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_watchable
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.380127Z
+2010-09-23T14:37:45.583759Z
 7051267daa625f991f2b604afde255ff
 2007-04-21T12:08:31.130506Z
 453
--- a/vendor/plugins/acts_as_watchable/lib/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/acts_as_watchable/lib/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_watchable/lib
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.380127Z
+2010-09-23T14:37:45.583759Z
 30f73616865f02dadce09f9511269b70
 2010-06-20T18:41:30.111362Z
 3803
--- a/vendor/plugins/awesome_nested_set/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/awesome_nested_set/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/awesome_nested_set
 http://redmine.rubyforge.org/svn
 
@@ -35,7 +35,7 @@
 
 
 
-2010-07-23T14:49:47.008140Z
+2010-09-23T14:37:45.587807Z
 c1f9a7c7c81a0c9150d260757c895ab3
 2008-12-20T12:22:38.158335Z
 2149
@@ -69,7 +69,7 @@
 
 
 
-2010-07-23T14:49:47.008140Z
+2010-09-23T14:37:45.587807Z
 75ea4a8e8109afdbce9214ac3e9aa40a
 2008-12-20T12:22:38.158335Z
 2149
@@ -103,7 +103,7 @@
 
 
 
-2010-07-23T14:49:47.012138Z
+2010-09-23T14:37:45.587807Z
 5d897290320b00753c366c59f40b213e
 2008-12-20T12:22:38.158335Z
 2149
@@ -137,7 +137,7 @@
 
 
 
-2010-07-23T14:49:47.012138Z
+2010-09-23T14:37:45.587807Z
 af5f1806895c92bb03e8855a96d13a64
 2008-12-20T12:22:38.158335Z
 2149
@@ -174,7 +174,7 @@
 
 
 
-2010-07-23T14:49:47.012138Z
+2010-09-23T14:37:45.587807Z
 ba826ae68593d063b726b4e66dcb1e8f
 2008-12-20T12:22:38.158335Z
 2149
--- a/vendor/plugins/awesome_nested_set/lib/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/awesome_nested_set/lib/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/awesome_nested_set/lib
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:47.004158Z
+2010-09-23T14:37:45.591804Z
 a881f7ea58b493a96550b4457057cddb
 2010-03-13T14:56:49.379682Z
 3573
--- a/vendor/plugins/awesome_nested_set/lib/awesome_nested_set/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/awesome_nested_set/lib/awesome_nested_set/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/awesome_nested_set/lib/awesome_nested_set
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:47.004158Z
+2010-09-23T14:37:45.591804Z
 d15393e7ec4757df0e53641d9a8d76f4
 2008-12-20T12:22:38.158335Z
 2149
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:47.004158Z
+2010-09-23T14:37:45.591804Z
 d4a9622144313fa6b56117a6c1f11e61
 2008-12-20T12:22:38.158335Z
 2149
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:47.004158Z
+2010-09-23T14:37:45.591804Z
 cebe8bf25e6f479251be38c80a246574
 2008-12-20T12:22:38.158335Z
 2149
--- a/vendor/plugins/awesome_nested_set/rails/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/awesome_nested_set/rails/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/awesome_nested_set/rails
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:47.008140Z
+2010-09-23T14:37:45.595761Z
 d5995cbfa2abdc12b57c44d69dc0085b
 2008-12-20T12:22:38.158335Z
 2149
--- a/vendor/plugins/awesome_nested_set/test/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/awesome_nested_set/test/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/awesome_nested_set/test
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.996103Z
+2010-09-23T14:37:45.603759Z
 41b65aff686211d45ba085c1b0791218
 2008-12-20T12:22:38.158335Z
 2149
@@ -75,7 +75,7 @@
 
 
 
-2010-07-23T14:49:46.996103Z
+2010-09-23T14:37:45.599759Z
 d177339aefb3c4a8f280efff48c974b6
 2008-12-20T12:22:38.158335Z
 2149
--- a/vendor/plugins/awesome_nested_set/test/awesome_nested_set/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/awesome_nested_set/test/awesome_nested_set/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/awesome_nested_set/test/awesome_nested_set
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.992131Z
+2010-09-23T14:37:45.595761Z
 03a414e3247544a5a2334aed005764f3
 2008-12-20T12:22:38.158335Z
 2149
--- a/vendor/plugins/awesome_nested_set/test/db/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/awesome_nested_set/test/db/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/awesome_nested_set/test/db
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.984095Z
+2010-09-23T14:37:45.599759Z
 ae23aecda935bb66e29aa4f02ea9de0a
 2008-12-20T12:22:38.158335Z
 2149
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:46.984095Z
+2010-09-23T14:37:45.599759Z
 359889e11314c2969bdf7e37475bdc62
 2008-12-20T12:22:38.158335Z
 2149
--- a/vendor/plugins/awesome_nested_set/test/fixtures/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/awesome_nested_set/test/fixtures/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/awesome_nested_set/test/fixtures
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.988148Z
+2010-09-23T14:37:45.603759Z
 460e90d6f219f339e8e4c64aaae0063c
 2008-12-20T12:22:38.158335Z
 2149
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:46.988148Z
+2010-09-23T14:37:45.599759Z
 4b6a06e11c21a3aadd09e60dee443110
 2008-12-20T12:22:38.158335Z
 2149
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:46.988148Z
+2010-09-23T14:37:45.603759Z
 e4eb5dbc7f2a2aa2fee79dba9210e769
 2008-12-20T12:22:38.158335Z
 2149
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:46.988148Z
+2010-09-23T14:37:45.603759Z
 e8b507fd94ed89b9997c3f9f137290cf
 2008-12-20T12:22:38.158335Z
 2149
--- a/vendor/plugins/classic_pagination/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/classic_pagination/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/classic_pagination
 http://redmine.rubyforge.org/svn
 
@@ -35,7 +35,7 @@
 
 
 
-2010-07-23T14:49:46.744099Z
+2010-09-23T14:37:45.607804Z
 b14424b71d2f606a775061237c8226f1
 2007-12-10T17:58:07.273873Z
 975
@@ -69,7 +69,7 @@
 
 
 
-2010-07-23T14:49:46.744099Z
+2010-09-23T14:37:45.607804Z
 181539722e198d92992a94f40310f4fc
 2007-12-10T17:58:07.273873Z
 975
@@ -106,7 +106,7 @@
 
 
 
-2010-07-23T14:49:46.744099Z
+2010-09-23T14:37:45.607804Z
 3ef206f381b42341342908fcc0001210
 2007-12-09T21:53:46.068689Z
 966
@@ -140,7 +140,7 @@
 
 
 
-2010-07-23T14:49:46.744099Z
+2010-09-23T14:37:45.607804Z
 1c88d6bc27aa809cd6ef26543c18b1e6
 2007-12-10T17:58:07.273873Z
 975
@@ -174,7 +174,7 @@
 
 
 
-2010-07-23T14:49:46.744099Z
+2010-09-23T14:37:45.607804Z
 f1df690ff1ea0da74f8fe161f50722ad
 2007-12-10T17:58:07.273873Z
 975
--- a/vendor/plugins/classic_pagination/lib/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/classic_pagination/lib/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/classic_pagination/lib
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.740098Z
+2010-09-23T14:37:45.607804Z
 535b7515c14fb3964e97be32c2d36415
 2007-12-10T17:58:07.273873Z
 975
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:46.740098Z
+2010-09-23T14:37:45.607804Z
 d770c57066726c423cc9de4ca5b552cd
 2008-12-14T15:36:59.418123Z
 2134
--- a/vendor/plugins/classic_pagination/test/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/classic_pagination/test/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/classic_pagination/test
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.736101Z
+2010-09-23T14:37:45.623761Z
 50c7fabeb3d6728ce24eada59d5b2b67
 2007-12-10T17:58:07.273873Z
 975
@@ -69,7 +69,7 @@
 
 
 
-2010-07-23T14:49:46.736101Z
+2010-09-23T14:37:45.623761Z
 0a02d28a37b53a8e19af7935db5be1a8
 2007-12-10T17:58:07.273873Z
 975
@@ -103,7 +103,7 @@
 
 
 
-2010-07-23T14:49:46.736101Z
+2010-09-23T14:37:45.623761Z
 597b7501984a5ecd10242163d06c33e7
 2007-12-10T17:58:07.273873Z
 975
--- a/vendor/plugins/classic_pagination/test/fixtures/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/classic_pagination/test/fixtures/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/classic_pagination/test/fixtures
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.728154Z
+2010-09-23T14:37:45.619761Z
 4e923be7fd534a67635192bcfcbed5cf
 2007-12-10T17:58:07.273873Z
 975
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:46.728154Z
+2010-09-23T14:37:45.619761Z
 021192cd31a5c3a39cbe7bd14144425a
 2007-12-10T17:58:07.273873Z
 975
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:46.728154Z
+2010-09-23T14:37:45.619761Z
 5953f128689c82c1d5c9ab2709a682e4
 2007-12-10T17:58:07.273873Z
 975
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:46.732157Z
+2010-09-23T14:37:45.619761Z
 cc2715c9793cffccefbac86e97dd5a08
 2007-12-10T17:58:07.273873Z
 975
@@ -168,7 +168,7 @@
 
 
 
-2010-07-23T14:49:46.732157Z
+2010-09-23T14:37:45.619761Z
 92e8d8a3cd6b419bdabbafc91be07b13
 2007-12-10T17:58:07.273873Z
 975
@@ -202,7 +202,7 @@
 
 
 
-2010-07-23T14:49:46.732157Z
+2010-09-23T14:37:45.619761Z
 182661632986d51f75c49d74b19df40c
 2007-12-10T17:58:07.273873Z
 975
@@ -236,7 +236,7 @@
 
 
 
-2010-07-23T14:49:46.732157Z
+2010-09-23T14:37:45.619761Z
 f1bf372057211d4a6d86499e561d903c
 2007-12-10T17:58:07.273873Z
 975
@@ -270,7 +270,7 @@
 
 
 
-2010-07-23T14:49:46.732157Z
+2010-09-23T14:37:45.619761Z
 98f978d0e16223524ee8dc769136a3c4
 2007-12-10T17:58:07.273873Z
 975
@@ -304,7 +304,7 @@
 
 
 
-2010-07-23T14:49:46.732157Z
+2010-09-23T14:37:45.619761Z
 3605b2a8f1cf10cbc34343bd7c49330d
 2007-12-10T17:58:07.273873Z
 975
@@ -338,7 +338,7 @@
 
 
 
-2010-07-23T14:49:46.732157Z
+2010-09-23T14:37:45.619761Z
 dccebb95780c20b896fe26306d904e9d
 2007-12-10T17:58:07.273873Z
 975
@@ -372,7 +372,7 @@
 
 
 
-2010-07-23T14:49:46.732157Z
+2010-09-23T14:37:45.619761Z
 318c27008dc35148da64e32ff9bf53c7
 2007-12-10T17:58:07.273873Z
 975
@@ -406,7 +406,7 @@
 
 
 
-2010-07-23T14:49:46.732157Z
+2010-09-23T14:37:45.619761Z
 78b664b5dbb72751888e7f6bf4cd12f8
 2007-12-09T21:53:46.068689Z
 966
--- a/vendor/plugins/coderay-0.9.2/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/coderay-0.9.2/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/coderay-0.9.2
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.840155Z
+2010-09-23T14:37:45.623761Z
 071d975e884a936b40eab0b865ea4da1
 2010-03-16T20:29:12.319937Z
 3592
--- a/vendor/plugins/coderay-0.9.2/lib/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/coderay-0.9.2/lib/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/coderay-0.9.2/lib
 http://redmine.rubyforge.org/svn
 
@@ -35,7 +35,7 @@
 
 
 
-2010-07-23T14:49:46.840155Z
+2010-09-23T14:37:45.627760Z
 c736c3ed620d59c1c6799d6fa340b0af
 2010-03-16T20:29:12.319937Z
 3592
@@ -69,7 +69,7 @@
 
 
 
-2010-07-23T14:49:46.840155Z
+2010-09-23T14:37:45.627760Z
 0d50df22acd760dc1905c7ef55e509e6
 2010-03-16T20:29:12.319937Z
 3592
--- a/vendor/plugins/coderay-0.9.2/lib/coderay/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/coderay-0.9.2/lib/coderay/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/coderay-0.9.2/lib/coderay
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.836129Z
+2010-09-23T14:37:45.683786Z
 4f17211f3874899049db6111ef282a3b
 2010-03-16T20:29:12.319937Z
 3592
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:46.836129Z
+2010-09-23T14:37:45.631818Z
 f0ead48eaa86c8b4d6a5587e9b5450ca
 2010-03-16T20:29:12.319937Z
 3592
@@ -106,7 +106,7 @@
 
 
 
-2010-07-23T14:49:46.836129Z
+2010-09-23T14:37:45.679790Z
 409fa492a5470a8bed5ae969f270decf
 2010-03-16T20:29:12.319937Z
 3592
@@ -143,7 +143,7 @@
 
 
 
-2010-07-23T14:49:46.836129Z
+2010-09-23T14:37:45.683786Z
 b7662592ff38046174f935548f579ce4
 2010-03-16T20:29:12.319937Z
 3592
@@ -177,7 +177,7 @@
 
 
 
-2010-07-23T14:49:46.836129Z
+2010-09-23T14:37:45.631818Z
 b33e5b83e354c09655f46d37ae662f64
 2010-03-16T20:29:12.319937Z
 3592
@@ -211,7 +211,7 @@
 
 
 
-2010-07-23T14:49:46.836129Z
+2010-09-23T14:37:45.655760Z
 f75f38c93ee8de3e6df1c08773b62319
 2010-03-16T20:29:12.319937Z
 3592
@@ -248,7 +248,7 @@
 
 
 
-2010-07-23T14:49:46.836129Z
+2010-09-23T14:37:45.651759Z
 d216c2f1c7a84a23ce3feff0b1358d60
 2010-03-16T20:29:12.319937Z
 3592
--- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/encoders
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.772156Z
+2010-09-23T14:37:45.643761Z
 f0c5be15265facadc46889fbbc2613f1
 2010-03-16T20:29:12.319937Z
 3592
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:46.772156Z
+2010-09-23T14:37:45.651759Z
 2914ed90921556a01a79f3fb6d549b09
 2010-03-16T20:29:12.319937Z
 3592
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:46.776144Z
+2010-09-23T14:37:45.643761Z
 08591bbd1f20dc7dce67030a294d1636
 2010-03-16T20:29:12.319937Z
 3592
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:46.776144Z
+2010-09-23T14:37:45.643761Z
 9e878089035fe9ad88c808bd1a15cf7a
 2010-03-16T20:29:12.319937Z
 3592
@@ -168,7 +168,7 @@
 
 
 
-2010-07-23T14:49:46.776144Z
+2010-09-23T14:37:45.647759Z
 966e154458fb6c665b6d62aa90d07e18
 2010-03-16T20:29:12.319937Z
 3592
@@ -202,7 +202,7 @@
 
 
 
-2010-07-23T14:49:46.776144Z
+2010-09-23T14:37:45.643761Z
 c262d84ddbdf37e99ff6bcf6dd6a66c2
 2010-03-16T20:29:12.319937Z
 3592
@@ -236,7 +236,7 @@
 
 
 
-2010-07-23T14:49:46.776144Z
+2010-09-23T14:37:45.651759Z
 ada7effba81bbc28f41efeaef69dcc51
 2010-03-16T20:29:12.319937Z
 3592
@@ -270,7 +270,7 @@
 
 
 
-2010-07-23T14:49:46.776144Z
+2010-09-23T14:37:45.647759Z
 e4228be45ad0f818a0e125caee838d56
 2010-03-16T20:29:12.319937Z
 3592
@@ -304,7 +304,7 @@
 
 
 
-2010-07-23T14:49:46.776144Z
+2010-09-23T14:37:45.651759Z
 04c428b240ef44de896ad15827cf51df
 2010-03-16T20:29:12.319937Z
 3592
@@ -341,7 +341,7 @@
 
 
 
-2010-07-23T14:49:46.776144Z
+2010-09-23T14:37:45.643761Z
 85370d734631d5ad2c034541e66e2910
 2010-03-16T20:29:12.319937Z
 3592
@@ -375,7 +375,7 @@
 
 
 
-2010-07-23T14:49:46.776144Z
+2010-09-23T14:37:45.647759Z
 422a51cd181de3cc0a55aba7f9915c18
 2010-03-16T20:29:12.319937Z
 3592
@@ -409,7 +409,7 @@
 
 
 
-2010-07-23T14:49:46.776144Z
+2010-09-23T14:37:45.647759Z
 49017735ef679f73dd65795e30d8e5c7
 2010-03-16T20:29:12.319937Z
 3592
@@ -443,7 +443,7 @@
 
 
 
-2010-07-23T14:49:46.776144Z
+2010-09-23T14:37:45.643761Z
 32f2d1a9db6f58636d3946a43b5a60f0
 2010-03-16T20:29:12.319937Z
 3592
@@ -477,7 +477,7 @@
 
 
 
-2010-07-23T14:49:46.776144Z
+2010-09-23T14:37:45.647759Z
 86a2dcae2ef0a971f70386c3b794469f
 2010-03-16T20:29:12.319937Z
 3592
@@ -511,7 +511,7 @@
 
 
 
-2010-07-23T14:49:46.776144Z
+2010-09-23T14:37:45.647759Z
 9c9dcf3ba3f2effa5ebd4cd37417db36
 2010-03-16T20:29:12.319937Z
 3592
@@ -545,7 +545,7 @@
 
 
 
-2010-07-23T14:49:46.776144Z
+2010-09-23T14:37:45.651759Z
 e59791dbcdce328f09240e7e5c8b3d0e
 2010-03-16T20:29:12.319937Z
 3592
@@ -579,7 +579,7 @@
 
 
 
-2010-07-23T14:49:46.780098Z
+2010-09-23T14:37:45.647759Z
 26da5aef43dc8731fbd63dcffea259bf
 2010-03-16T20:29:12.319937Z
 3592
@@ -613,7 +613,7 @@
 
 
 
-2010-07-23T14:49:46.780098Z
+2010-09-23T14:37:45.643761Z
 964d7ee16d213ab2e41418257f1eb8aa
 2010-03-16T20:29:12.319937Z
 3592
--- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.764128Z
+2010-09-23T14:37:45.647759Z
 8d0cea50dc9e6743bd10a8e0c6f1db17
 2010-03-16T20:29:12.319937Z
 3592
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:46.764128Z
+2010-09-23T14:37:45.647759Z
 6f9a2f0d033d9af4d4804ecd8751a3f7
 2010-03-16T20:29:12.319937Z
 3592
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:46.764128Z
+2010-09-23T14:37:45.647759Z
 aa931c09ed5f16abfed3b7c99f0f684d
 2010-03-16T20:29:12.319937Z
 3592
--- a/vendor/plugins/coderay-0.9.2/lib/coderay/helpers/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/coderay-0.9.2/lib/coderay/helpers/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/helpers
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.784098Z
+2010-09-23T14:37:45.655760Z
 a8ef4aea22392cc4012ee679fc1d15ba
 2010-03-16T20:29:12.319937Z
 3592
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:46.784098Z
+2010-09-23T14:37:45.655760Z
 107e3d46dc60830e87b1a4ce4d467ce8
 2010-03-16T20:29:12.319937Z
 3592
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:46.784098Z
+2010-09-23T14:37:45.655760Z
 ffacc98651f60a6fe698427bbc3c3c86
 2010-03-16T20:29:12.319937Z
 3592
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:46.784098Z
+2010-09-23T14:37:45.655760Z
 86d05af27cbe342789f28ed543956aa5
 2010-03-16T20:29:12.319937Z
 3592
--- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/scanners
 http://redmine.rubyforge.org/svn
 
@@ -38,7 +38,7 @@
 
 
 
-2010-07-23T14:49:46.828117Z
+2010-09-23T14:37:45.671759Z
 c812fce5db1da4af753e919407494271
 2010-03-16T20:29:12.319937Z
 3592
@@ -72,7 +72,7 @@
 
 
 
-2010-07-23T14:49:46.828117Z
+2010-09-23T14:37:45.675761Z
 939e009d9b197cb6437646be82c02982
 2010-03-16T20:29:12.319937Z
 3592
@@ -106,7 +106,7 @@
 
 
 
-2010-07-23T14:49:46.828117Z
+2010-09-23T14:37:45.675761Z
 4a49513a2bda4483a1bfaeba8e57fb2c
 2010-03-16T20:29:12.319937Z
 3592
@@ -140,7 +140,7 @@
 
 
 
-2010-07-23T14:49:46.828117Z
+2010-09-23T14:37:45.667815Z
 afc4a4b0842e5efdafe98f6c5a10810e
 2010-03-16T20:29:12.319937Z
 3592
@@ -174,7 +174,7 @@
 
 
 
-2010-07-23T14:49:46.828117Z
+2010-09-23T14:37:45.667815Z
 299db2bdce8368d0bc6d90f5839c87ee
 2010-03-16T20:29:12.319937Z
 3592
@@ -208,7 +208,7 @@
 
 
 
-2010-07-23T14:49:46.828117Z
+2010-09-23T14:37:45.671759Z
 7fc1acca7ff04fa00160349b3a1b543e
 2010-03-16T20:29:12.319937Z
 3592
@@ -242,7 +242,7 @@
 
 
 
-2010-07-23T14:49:46.828117Z
+2010-09-23T14:37:45.671759Z
 94bdd6c948cb9c3d21ef94a5cec19e05
 2010-03-16T20:29:12.319937Z
 3592
@@ -276,7 +276,7 @@
 
 
 
-2010-07-23T14:49:46.828117Z
+2010-09-23T14:37:45.675761Z
 456da0b0587037dce29f70bdb4d42253
 2010-03-16T20:29:12.319937Z
 3592
@@ -310,7 +310,7 @@
 
 
 
-2010-07-23T14:49:46.828117Z
+2010-09-23T14:37:45.675761Z
 90f9a8053ea7eaef089e5140188c9950
 2010-03-16T20:29:12.319937Z
 3592
@@ -344,7 +344,7 @@
 
 
 
-2010-07-23T14:49:46.832153Z
+2010-09-23T14:37:45.671759Z
 dfbdae0781ad8376342b8c0f5733c2ba
 2010-03-16T20:29:12.319937Z
 3592
@@ -378,7 +378,7 @@
 
 
 
-2010-07-23T14:49:46.832153Z
+2010-09-23T14:37:45.679790Z
 dd1580e74abffd4c30a8b941b3903f07
 2010-03-16T20:29:12.319937Z
 3592
@@ -412,7 +412,7 @@
 
 
 
-2010-07-23T14:49:46.832153Z
+2010-09-23T14:37:45.679790Z
 798309ac45aa9d4ccc159242f3a6f150
 2010-03-16T20:29:12.319937Z
 3592
@@ -446,7 +446,7 @@
 
 
 
-2010-07-23T14:49:46.832153Z
+2010-09-23T14:37:45.679790Z
 f62eab25adbef42e92cad3f5463f91ac
 2010-03-16T20:29:12.319937Z
 3592
@@ -480,7 +480,7 @@
 
 
 
-2010-07-23T14:49:46.832153Z
+2010-09-23T14:37:45.671759Z
 9a21ea0438e6eea6962a27aa15f55645
 2010-03-16T20:29:12.319937Z
 3592
@@ -514,7 +514,7 @@
 
 
 
-2010-07-23T14:49:46.832153Z
+2010-09-23T14:37:45.679790Z
 f6c296bbb33704ec2a03725b01e06719
 2010-03-16T20:29:12.319937Z
 3592
@@ -548,7 +548,7 @@
 
 
 
-2010-07-23T14:49:46.832153Z
+2010-09-23T14:37:45.675761Z
 821536789acfa80a62a4fb54ab6f31d4
 2010-03-16T20:29:12.319937Z
 3592
@@ -582,7 +582,7 @@
 
 
 
-2010-07-23T14:49:46.832153Z
+2010-09-23T14:37:45.671759Z
 182116a4525447d4faed874dfb790277
 2010-03-16T20:29:12.319937Z
 3592
@@ -616,7 +616,7 @@
 
 
 
-2010-07-23T14:49:46.832153Z
+2010-09-23T14:37:45.675761Z
 f7d82e60f68fe6c9d46b63e63f6ec9f6
 2010-03-16T20:29:12.319937Z
 3592
@@ -650,7 +650,7 @@
 
 
 
-2010-07-23T14:49:46.832153Z
+2010-09-23T14:37:45.675761Z
 ae16e40b3db78a5d8c793165085f5db9
 2010-03-16T20:29:12.319937Z
 3592
@@ -684,7 +684,7 @@
 
 
 
-2010-07-23T14:49:46.832153Z
+2010-09-23T14:37:45.671759Z
 fbe0f5af1885b8c58e55c9ba2891ce49
 2010-03-16T20:29:12.319937Z
 3592
@@ -718,7 +718,7 @@
 
 
 
-2010-07-23T14:49:46.832153Z
+2010-09-23T14:37:45.675761Z
 0284131b18751e532a2c5e2dd8d51426
 2010-03-16T20:29:12.319937Z
 3592
@@ -752,7 +752,7 @@
 
 
 
-2010-07-23T14:49:46.832153Z
+2010-09-23T14:37:45.667815Z
 b3eadcc78242cf25ba0ab3205d6a2b61
 2010-03-16T20:29:12.319937Z
 3592
--- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/java/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/java/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/java
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.804130Z
+2010-09-23T14:37:45.675761Z
 2522414597cbbef27fad175c20c8a556
 2010-03-16T20:29:12.319937Z
 3592
--- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/ruby/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/ruby/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/ruby
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.800127Z
+2010-09-23T14:37:45.679790Z
 ae0aca82c4390ffcc5757c97c71bc8f3
 2010-03-16T20:29:12.319937Z
 3592
--- a/vendor/plugins/coderay-0.9.2/lib/coderay/styles/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/coderay-0.9.2/lib/coderay/styles/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/styles
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.792152Z
+2010-09-23T14:37:45.683786Z
 e8d4af106543cf30dcc95fd942044e63
 2010-03-16T20:29:12.319937Z
 3592
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:46.792152Z
+2010-09-23T14:37:45.683786Z
 7c7e3c4f8f845a59359649b3221689a7
 2010-03-16T20:29:12.319937Z
 3592
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:46.792152Z
+2010-09-23T14:37:45.683786Z
 9b92a72b99db4496e76665edb7b38c00
 2010-03-16T20:29:12.319937Z
 3592
--- a/vendor/plugins/engines/.svn/all-wcprops	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/.svn/all-wcprops	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 47
-/svn/!svn/ver/3186/trunk/vendor/plugins/engines
+/svn/!svn/ver/4094/trunk/vendor/plugins/engines
 END
 Rakefile
 K 25
--- a/vendor/plugins/engines/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,15 +1,15 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines
 http://redmine.rubyforge.org/svn
 
 
 
-2009-12-18T14:41:37.649419Z
-3186
-jplang
+2010-09-17T04:06:40.671348Z
+4094
+edavis10
 
 
 
@@ -35,7 +35,7 @@
 
 
 
-2010-07-23T14:49:46.716156Z
+2010-09-23T14:37:45.687760Z
 b8328004b1bb94c84d90c0839cd7d41d
 2009-09-13T17:14:35.707881Z
 2887
@@ -72,7 +72,7 @@
 
 
 
-2010-07-23T14:49:46.716156Z
+2010-09-23T14:37:45.683786Z
 a523ea1465a566ae38fba96a99506ff3
 2008-07-12T10:17:14.809831Z
 1654
@@ -106,7 +106,7 @@
 
 
 
-2010-07-23T14:49:46.716156Z
+2010-09-23T14:37:45.691758Z
 f653a768811758cee11e21d4de00b381
 2009-10-07T16:43:50.656336Z
 2904
@@ -140,7 +140,7 @@
 
 
 
-2010-07-23T14:49:46.716156Z
+2010-09-23T14:37:45.695759Z
 e4f81ba26f0b10a838b3336ba263aaa5
 2009-09-13T17:14:35.707881Z
 2887
@@ -177,7 +177,7 @@
 
 
 
-2010-07-23T14:49:46.716156Z
+2010-09-23T14:37:45.687760Z
 41bb5eeb2864cd46438eefb1cb048c4d
 2009-02-21T11:04:50.579477Z
 2493
@@ -214,7 +214,7 @@
 
 
 
-2010-07-23T14:49:46.716156Z
+2010-09-23T14:37:45.687760Z
 6e112fd6d07885bef3fd5bd537fc1409
 2008-07-12T10:17:14.809831Z
 1654
@@ -248,7 +248,7 @@
 
 
 
-2010-07-23T14:49:46.716156Z
+2010-09-23T14:37:45.691758Z
 18cc761cb69b7735ecf0cdb0d9b6d640
 2009-09-13T17:14:35.707881Z
 2887
@@ -282,7 +282,7 @@
 
 
 
-2010-07-23T14:49:46.716156Z
+2010-09-23T14:37:45.687760Z
 7e25f2cbded59c24735a20510040bb74
 2008-07-12T10:17:14.809831Z
 1654
--- a/vendor/plugins/engines/generators/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/generators/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/generators
 http://redmine.rubyforge.org/svn
 
--- a/vendor/plugins/engines/generators/plugin_migration/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/generators/plugin_migration/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/generators/plugin_migration
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.712131Z
+2010-09-23T14:37:45.691758Z
 e7efe6b1595915b993b92a7804dd810b
 2009-10-07T16:43:50.656336Z
 2904
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:46.712131Z
+2010-09-23T14:37:45.691758Z
 d796f61555b36ef9941ea049c94df06b
 2008-07-12T10:17:14.809831Z
 1654
--- a/vendor/plugins/engines/generators/plugin_migration/templates/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/generators/plugin_migration/templates/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/generators/plugin_migration/templates
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.712131Z
+2010-09-23T14:37:45.695759Z
 0b30f95c4244242093ded274caf9e4a8
 2008-07-12T10:17:14.809831Z
 1654
--- a/vendor/plugins/engines/lib/.svn/all-wcprops	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/lib/.svn/all-wcprops	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 51
-/svn/!svn/ver/2887/trunk/vendor/plugins/engines/lib
+/svn/!svn/ver/4094/trunk/vendor/plugins/engines/lib
 END
 engines.rb
 K 25
--- a/vendor/plugins/engines/lib/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/lib/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,14 +1,14 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/lib
 http://redmine.rubyforge.org/svn
 
 
 
-2009-09-13T17:14:35.707881Z
-2887
+2010-09-17T04:06:40.671348Z
+4094
 edavis10
 
 
@@ -35,7 +35,7 @@
 
 
 
-2010-07-23T14:49:46.704134Z
+2010-09-23T14:37:45.695759Z
 b9128ad79c06e8c2eb2474a7f9edf60d
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/lib/engines/.svn/all-wcprops	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/lib/engines/.svn/all-wcprops	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 59
-/svn/!svn/ver/2887/trunk/vendor/plugins/engines/lib/engines
+/svn/!svn/ver/4094/trunk/vendor/plugins/engines/lib/engines
 END
 testing.rb
 K 25
--- a/vendor/plugins/engines/lib/engines/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/lib/engines/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,14 +1,14 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/lib/engines
 http://redmine.rubyforge.org/svn
 
 
 
-2009-09-13T17:14:35.707881Z
-2887
+2010-09-17T04:06:40.671348Z
+4094
 edavis10
 
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.700093Z
+2010-09-23T14:37:45.707755Z
 f5e61f1312a19bdac20f06b7529eaa98
 2009-09-13T17:14:35.707881Z
 2887
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:46.700093Z
+2010-09-23T14:37:45.699755Z
 d084e8ccb3edfb9f481f2626ee9e57e1
 2009-09-13T17:14:35.707881Z
 2887
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:46.700093Z
+2010-09-23T14:37:45.699755Z
 a2cb2f3c517fbe62ab1277e44b0a05ed
 2009-02-21T11:04:50.579477Z
 2493
--- a/vendor/plugins/engines/lib/engines/plugin/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/lib/engines/plugin/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/lib/engines/plugin
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.700093Z
+2010-09-23T14:37:45.703755Z
 2adca63e7c7d7c38a91953458e893bb2
 2008-07-12T10:17:14.809831Z
 1654
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:46.700093Z
+2010-09-23T14:37:45.703755Z
 21ac938bcf4f86e62ec21e9803cfd76e
 2009-02-21T11:04:50.579477Z
 2493
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:46.700093Z
+2010-09-23T14:37:45.703755Z
 38eaf6e3b113f74daa0669c67261cc72
 2009-09-13T17:14:35.707881Z
 2887
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:46.700093Z
+2010-09-23T14:37:45.703755Z
 d68941171066743dd63a174b5f270f66
 2008-07-12T10:17:14.809831Z
 1654
--- a/vendor/plugins/engines/lib/engines/rails_extensions/.svn/all-wcprops	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/lib/engines/rails_extensions/.svn/all-wcprops	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 76
-/svn/!svn/ver/2887/trunk/vendor/plugins/engines/lib/engines/rails_extensions
+/svn/!svn/ver/4094/trunk/vendor/plugins/engines/lib/engines/rails_extensions
 END
 form_tag_helpers.rb
 K 25
@@ -13,7 +13,7 @@
 K 25
 svn:wc:ra_dav:version-url
 V 93
-/svn/!svn/ver/1654/trunk/vendor/plugins/engines/lib/engines/rails_extensions/asset_helpers.rb
+/svn/!svn/ver/4094/trunk/vendor/plugins/engines/lib/engines/rails_extensions/asset_helpers.rb
 END
 dependencies.rb
 K 25
--- a/vendor/plugins/engines/lib/engines/rails_extensions/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/lib/engines/rails_extensions/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,14 +1,14 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/lib/engines/rails_extensions
 http://redmine.rubyforge.org/svn
 
 
 
-2009-09-13T17:14:35.707881Z
-2887
+2010-09-17T04:06:40.671348Z
+4094
 edavis10
 
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.692131Z
+2010-09-23T14:37:45.707755Z
 3e26c9fe2cd009cb5e81f6ccea3f012c
 2009-02-21T11:04:50.579477Z
 2493
@@ -66,11 +66,11 @@
 
 
 
-2010-07-23T14:49:46.692131Z
-6df88867c6f46b0e34973d765f941b3c
-2008-07-12T10:17:14.809831Z
-1654
-jplang
+2010-09-24T12:48:29.635919Z
+c5a5e8b469c1e3fefcc5bedca9f4ac82
+2010-09-17T04:06:40.671348Z
+4094
+edavis10
 has-props
 
 
@@ -92,7 +92,7 @@
 
 
 
-4642
+4686
 
 dependencies.rb
 file
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:46.692131Z
+2010-09-23T14:37:45.707755Z
 6e29697f02c187c9033624422365044a
 2009-02-21T11:04:50.579477Z
 2493
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:46.692131Z
+2010-09-23T14:37:45.707755Z
 f26da6a18ffcc7b846838f038a0abea4
 2008-07-12T10:17:14.809831Z
 1654
@@ -168,7 +168,7 @@
 
 
 
-2010-07-23T14:49:46.696105Z
+2010-09-23T14:37:45.707755Z
 8f8e408b9f1a72af1cc5232ddb888266
 2009-02-21T11:04:50.579477Z
 2493
--- a/vendor/plugins/engines/lib/engines/rails_extensions/.svn/text-base/asset_helpers.rb.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/lib/engines/rails_extensions/.svn/text-base/asset_helpers.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -109,11 +109,11 @@
   # Returns the publicly-addressable relative URI for the given asset, type and plugin
   def self.plugin_asset_path(plugin_name, type, asset)
     raise "No plugin called '#{plugin_name}' - please use the full name of a loaded plugin." if Engines.plugins[plugin_name].nil?
-    "/#{Engines.plugins[plugin_name].public_asset_directory}/#{type}/#{asset}"
+    "#{ActionController::Base.relative_url_root}/#{Engines.plugins[plugin_name].public_asset_directory}/#{type}/#{asset}"
   end
   
 end
 
 module ::ActionView::Helpers::AssetTagHelper #:nodoc:
   include Engines::RailsExtensions::AssetHelpers
-end
\ No newline at end of file
+end
--- a/vendor/plugins/engines/lib/engines/rails_extensions/asset_helpers.rb	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/lib/engines/rails_extensions/asset_helpers.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -109,11 +109,11 @@
   # Returns the publicly-addressable relative URI for the given asset, type and plugin
   def self.plugin_asset_path(plugin_name, type, asset)
     raise "No plugin called '#{plugin_name}' - please use the full name of a loaded plugin." if Engines.plugins[plugin_name].nil?
-    "/#{Engines.plugins[plugin_name].public_asset_directory}/#{type}/#{asset}"
+    "#{ActionController::Base.relative_url_root}/#{Engines.plugins[plugin_name].public_asset_directory}/#{type}/#{asset}"
   end
   
 end
 
 module ::ActionView::Helpers::AssetTagHelper #:nodoc:
   include Engines::RailsExtensions::AssetHelpers
-end
\ No newline at end of file
+end
--- a/vendor/plugins/engines/tasks/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/tasks/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/tasks
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.684127Z
+2010-09-23T14:37:45.707755Z
 10b9e5aacd9d0673e694f6ababd6ee3b
 2009-12-18T14:41:37.649419Z
 3186
--- a/vendor/plugins/engines/test/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test
 http://redmine.rubyforge.org/svn
 
--- a/vendor/plugins/engines/test/app/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/app/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/app
 http://redmine.rubyforge.org/svn
 
--- a/vendor/plugins/engines/test/app/controllers/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/app/controllers/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/app/controllers
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.404129Z
+2010-09-23T14:37:45.711814Z
 8e2adc646126f3962ca1eaf16d663fa7
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/app/controllers/namespace/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/app/controllers/namespace/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/app/controllers/namespace
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.404129Z
+2010-09-23T14:37:45.711814Z
 ed9f029690f9d77b31e0d68cff2f8ff3
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/app/helpers/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/app/helpers/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/app/helpers
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.396130Z
+2010-09-23T14:37:45.715757Z
 b3286b0384ccf10d15423a78b8a70c3a
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/app/models/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/app/models/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/app/models
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.400129Z
+2010-09-23T14:37:45.715757Z
 53fd050b6dc2f5da77439ffab6e1dd6e
 2009-09-13T17:14:35.707881Z
 2887
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:46.400129Z
+2010-09-23T14:37:45.715757Z
 ffba288117364d8379bd2b6788e2fd2f
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/app/things/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/app/things/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/app/things
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.408135Z
+2010-09-23T14:37:45.715757Z
 aaa0b6b1363b304ca66c8def3c543b13
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/app/views/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/app/views/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/app/views
 http://redmine.rubyforge.org/svn
 
--- a/vendor/plugins/engines/test/app/views/app_and_plugin/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/app/views/app_and_plugin/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/app/views/app_and_plugin
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.412132Z
+2010-09-23T14:37:45.719755Z
 e6dca36d9e91414f1a520ffddb5202d7
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/app/views/namespace/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/app/views/namespace/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/app/views/namespace
 http://redmine.rubyforge.org/svn
 
--- a/vendor/plugins/engines/test/app/views/namespace/app_and_plugin/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/app/views/namespace/app_and_plugin/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/app/views/namespace/app_and_plugin
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.428099Z
+2010-09-23T14:37:45.719755Z
 e6dca36d9e91414f1a520ffddb5202d7
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/app/views/notify_mail/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/app/views/notify_mail/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/app/views/notify_mail
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.424155Z
+2010-09-23T14:37:45.723813Z
 8e367f8a525da2fddf6b32d5f874c6ba
 2009-09-13T17:14:35.707881Z
 2887
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:46.424155Z
+2010-09-23T14:37:45.723813Z
 50ed7a6afc64b4a326aa8b681a31b9a3
 2009-09-13T17:14:35.707881Z
 2887
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:46.424155Z
+2010-09-23T14:37:45.723813Z
 cb0d28ce47ca265d02f252970ac69194
 2009-09-13T17:14:35.707881Z
 2887
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:46.424155Z
+2010-09-23T14:37:45.723813Z
 5a4f738dec733e5f4ad703495c5eb54a
 2009-09-13T17:14:35.707881Z
 2887
@@ -168,7 +168,7 @@
 
 
 
-2010-07-23T14:49:46.424155Z
+2010-09-23T14:37:45.723813Z
 3b779e7b00bfe0f9b876bfebd7905a4e
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/app/views/plugin_mail/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/app/views/plugin_mail/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/app/views/plugin_mail
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.416130Z
+2010-09-23T14:37:45.727757Z
 d0e724c594c43b6db39389834f3c26e2
 2009-09-13T17:14:35.707881Z
 2887
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:46.416130Z
+2010-09-23T14:37:45.727757Z
 317dc13d851c827568f61def9b031803
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/functional/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/functional/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/functional
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.672099Z
+2010-09-23T14:37:45.727757Z
 53bf916868db17fcb64853aab45ce80b
 2009-09-13T17:14:35.707881Z
 2887
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:46.672099Z
+2010-09-23T14:37:45.727757Z
 03f318c931cb7d40733445e72a504c95
 2009-09-13T17:14:35.707881Z
 2887
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:46.672099Z
+2010-09-23T14:37:45.731757Z
 43b6ff22af92cc8988a51d1b50c4c587
 2009-09-13T17:14:35.707881Z
 2887
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:46.672099Z
+2010-09-23T14:37:45.727757Z
 0ca8b6e7e4b7655c3633b11d4ff61cc6
 2009-09-13T17:14:35.707881Z
 2887
@@ -168,7 +168,7 @@
 
 
 
-2010-07-23T14:49:46.672099Z
+2010-09-23T14:37:45.731757Z
 afcc79d3fa1c4f1615b271f65d982d8b
 2009-09-13T17:14:35.707881Z
 2887
@@ -202,7 +202,7 @@
 
 
 
-2010-07-23T14:49:46.672099Z
+2010-09-23T14:37:45.727757Z
 6bd25b9259dbf37b6d31e69f83a32fe0
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/lib/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/lib/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/lib
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.676160Z
+2010-09-23T14:37:45.731757Z
 1fde453d5263852d1ba9fc3dd90254fc
 2009-09-13T17:14:35.707881Z
 2887
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:46.676160Z
+2010-09-23T14:37:45.731757Z
 b00ea9b677cec76cd2fc19b1f66db3e2
 2009-09-13T17:14:35.707881Z
 2887
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:46.676160Z
+2010-09-23T14:37:45.731757Z
 52fd5b17adc2fec1950be496b5ff3a3d
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/plugins/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins
 http://redmine.rubyforge.org/svn
 
--- a/vendor/plugins/engines/test/plugins/alpha_plugin/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin
 http://redmine.rubyforge.org/svn
 
--- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app
 http://redmine.rubyforge.org/svn
 
--- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.520099Z
+2010-09-23T14:37:45.735800Z
 b70de56fa165815bbab14f584b6fbdb4
 2009-09-13T17:14:35.707881Z
 2887
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:46.520099Z
+2010-09-23T14:37:45.735800Z
 9e56eb4864bc1877cc8a6e69ca873157
 2009-09-13T17:14:35.707881Z
 2887
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:46.520099Z
+2010-09-23T14:37:45.739799Z
 f9f42ac7db3bb715ff4f055162013aba
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/namespace/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/namespace/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/namespace
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.520099Z
+2010-09-23T14:37:45.739799Z
 a24a7b9dd5706d2daef2456b1b1cac4c
 2009-09-13T17:14:35.707881Z
 2887
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:46.520099Z
+2010-09-23T14:37:45.739799Z
 b1c4a105ad8bfa7add28c583dbd9ef8a
 2009-09-13T17:14:35.707881Z
 2887
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:46.520099Z
+2010-09-23T14:37:45.739799Z
 43152818b40142db88dffe0192e66582
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/models/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/models/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/models
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.508097Z
+2010-09-23T14:37:45.739799Z
 a661e69f87fead66873ac8cc162da128
 2009-09-13T17:14:35.707881Z
 2887
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:46.508097Z
+2010-09-23T14:37:45.739799Z
 01ab2dea5fd3e341bd082f2fc507f760
 2009-09-13T17:14:35.707881Z
 2887
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:46.508097Z
+2010-09-23T14:37:45.739799Z
 ae48cf4ce7068428c1525dba877a880c
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/views
 http://redmine.rubyforge.org/svn
 
--- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/alpha_plugin/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/alpha_plugin/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/alpha_plugin
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.532127Z
+2010-09-23T14:37:45.743801Z
 eeb9900e088c367d06668e201e4be39e
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/app_and_plugin/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/app_and_plugin/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/app_and_plugin
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.524125Z
+2010-09-23T14:37:45.743801Z
 68deee946f4e81fafcae37d51f2e6bd5
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/layouts/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/layouts/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/layouts
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.528128Z
+2010-09-23T14:37:45.747800Z
 3791a6748098d1382b11556ec47b6366
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace
 http://redmine.rubyforge.org/svn
 
--- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/alpha_plugin/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/alpha_plugin/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/alpha_plugin
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.544095Z
+2010-09-23T14:37:45.747800Z
 eeb9900e088c367d06668e201e4be39e
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/app_and_plugin/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/app_and_plugin/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/app_and_plugin
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.540098Z
+2010-09-23T14:37:45.747800Z
 eeb9900e088c367d06668e201e4be39e
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/shared_plugin/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/shared_plugin/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/shared_plugin
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.548094Z
+2010-09-23T14:37:45.751796Z
 3bef9fe54ed08fd7ce454a189b2b3195
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/shared_plugin/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/shared_plugin/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/shared_plugin
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.536104Z
+2010-09-23T14:37:45.751796Z
 3bef9fe54ed08fd7ce454a189b2b3195
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/plugins/alpha_plugin/lib/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/lib/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/lib
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.556099Z
+2010-09-23T14:37:45.751796Z
 4799f34099980de6af0dc719c7f04845
 2009-09-13T17:14:35.707881Z
 2887
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:46.556099Z
+2010-09-23T14:37:45.751796Z
 e892323cf7ac415a30ca41b49ab96d1d
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/plugins/alpha_plugin/locales/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/locales/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/locales
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.552094Z
+2010-09-23T14:37:45.755800Z
 8fb4d64b7ed263c84a6aa2974eb71f25
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/plugins/beta_plugin/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/beta_plugin/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/beta_plugin
 http://redmine.rubyforge.org/svn
 
@@ -38,7 +38,7 @@
 
 
 
-2010-07-23T14:49:46.624093Z
+2010-09-23T14:37:45.763755Z
 cee45809cc705092eca4e13d3aa204f1
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/plugins/beta_plugin/app/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/beta_plugin/app/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/beta_plugin/app
 http://redmine.rubyforge.org/svn
 
--- a/vendor/plugins/engines/test/plugins/beta_plugin/app/controllers/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/beta_plugin/app/controllers/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/beta_plugin/app/controllers
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.608163Z
+2010-09-23T14:37:45.759798Z
 6c633d0dcb606e532dd906bd2567bf57
 2009-09-13T17:14:35.707881Z
 2887
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:46.608163Z
+2010-09-23T14:37:45.759798Z
 df7f8bb84aa9fcbe07534d5aa59e11b8
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/plugins/beta_plugin/app/controllers/namespace/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/beta_plugin/app/controllers/namespace/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/beta_plugin/app/controllers/namespace
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.608163Z
+2010-09-23T14:37:45.759798Z
 a8bcbb79381d6db75a9ea6e2704828a9
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/plugins/beta_plugin/app/models/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/beta_plugin/app/models/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/beta_plugin/app/models
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.600093Z
+2010-09-23T14:37:45.759798Z
 c9a469b003eca7ac6627c41deeda1b4c
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/plugins/beta_plugin/app/views/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/beta_plugin/app/views/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/beta_plugin/app/views
 http://redmine.rubyforge.org/svn
 
--- a/vendor/plugins/engines/test/plugins/beta_plugin/app/views/namespace/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/beta_plugin/app/views/namespace/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/beta_plugin/app/views/namespace
 http://redmine.rubyforge.org/svn
 
--- a/vendor/plugins/engines/test/plugins/beta_plugin/app/views/namespace/shared_plugin/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/beta_plugin/app/views/namespace/shared_plugin/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/beta_plugin/app/views/namespace/shared_plugin
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.620099Z
+2010-09-23T14:37:45.763755Z
 78db1a7e1a9f6216dfa3671e5d42c81b
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/plugins/beta_plugin/app/views/shared_plugin/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/beta_plugin/app/views/shared_plugin/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/beta_plugin/app/views/shared_plugin
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.616100Z
+2010-09-23T14:37:45.763755Z
 78db1a7e1a9f6216dfa3671e5d42c81b
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/plugins/beta_plugin/locales/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/beta_plugin/locales/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/beta_plugin/locales
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.624093Z
+2010-09-23T14:37:45.767754Z
 277816fa171800daec137e70993e39f6
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/plugins/not_a_plugin/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/not_a_plugin/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/not_a_plugin
 http://redmine.rubyforge.org/svn
 
--- a/vendor/plugins/engines/test/plugins/not_a_plugin/public/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/not_a_plugin/public/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/not_a_plugin/public
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.664155Z
+2010-09-23T14:37:45.767754Z
 d41d8cd98f00b204e9800998ecf8427e
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/plugins/test_assets/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/test_assets/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_assets
 http://redmine.rubyforge.org/svn
 
@@ -35,7 +35,7 @@
 
 
 
-2010-07-23T14:49:46.492095Z
+2010-09-23T14:37:45.775754Z
 d41d8cd98f00b204e9800998ecf8427e
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/plugins/test_assets/app/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/test_assets/app/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_assets/app
 http://redmine.rubyforge.org/svn
 
--- a/vendor/plugins/engines/test/plugins/test_assets/app/controllers/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/test_assets/app/controllers/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_assets/app/controllers
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.436161Z
+2010-09-23T14:37:45.771797Z
 ba97b09a04ada07aa57234ea8649c128
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/plugins/test_assets/app/views/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/test_assets/app/views/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_assets/app/views
 http://redmine.rubyforge.org/svn
 
--- a/vendor/plugins/engines/test/plugins/test_assets/app/views/assets/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/test_assets/app/views/assets/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_assets/app/views/assets
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.484093Z
+2010-09-23T14:37:45.771797Z
 5c22cfc5b27a3b2b869075baacf530a6
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/plugins/test_assets/app/views/layouts/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/test_assets/app/views/layouts/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_assets/app/views/layouts
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.480155Z
+2010-09-23T14:37:45.775754Z
 8a99331150683df5edbd645cb851de37
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/plugins/test_assets/public/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/test_assets/public/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_assets/public
 http://redmine.rubyforge.org/svn
 
@@ -35,7 +35,7 @@
 
 
 
-2010-07-23T14:49:46.492095Z
+2010-09-23T14:37:45.775754Z
 d41d8cd98f00b204e9800998ecf8427e
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/plugins/test_assets/public/subfolder/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/test_assets/public/subfolder/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_assets/public/subfolder
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.488096Z
+2010-09-23T14:37:45.775754Z
 d41d8cd98f00b204e9800998ecf8427e
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_assets_with_assets_directory
 http://redmine.rubyforge.org/svn
 
@@ -35,7 +35,7 @@
 
 
 
-2010-07-23T14:49:46.500110Z
+2010-09-23T14:37:45.779781Z
 d41d8cd98f00b204e9800998ecf8427e
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/assets/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/assets/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/assets
 http://redmine.rubyforge.org/svn
 
@@ -35,7 +35,7 @@
 
 
 
-2010-07-23T14:49:46.500110Z
+2010-09-23T14:37:45.779781Z
 d41d8cd98f00b204e9800998ecf8427e
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/assets/subfolder/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/assets/subfolder/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/assets/subfolder
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.496098Z
+2010-09-23T14:37:45.779781Z
 d41d8cd98f00b204e9800998ecf8427e
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/plugins/test_assets_with_no_subdirectory/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/test_assets_with_no_subdirectory/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_assets_with_no_subdirectory
 http://redmine.rubyforge.org/svn
 
@@ -35,7 +35,7 @@
 
 
 
-2010-07-23T14:49:46.572097Z
+2010-09-23T14:37:45.783782Z
 d41d8cd98f00b204e9800998ecf8427e
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/plugins/test_assets_with_no_subdirectory/assets/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/test_assets_with_no_subdirectory/assets/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_assets_with_no_subdirectory/assets
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.572097Z
+2010-09-23T14:37:45.783782Z
 d41d8cd98f00b204e9800998ecf8427e
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/plugins/test_code_mixing/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/test_code_mixing/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_code_mixing
 http://redmine.rubyforge.org/svn
 
@@ -35,7 +35,7 @@
 
 
 
-2010-07-23T14:49:46.568097Z
+2010-09-23T14:37:45.783782Z
 cee45809cc705092eca4e13d3aa204f1
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/plugins/test_code_mixing/app/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/test_code_mixing/app/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_code_mixing/app
 http://redmine.rubyforge.org/svn
 
--- a/vendor/plugins/engines/test/plugins/test_code_mixing/app/things/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/test_code_mixing/app/things/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_code_mixing/app/things
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.564097Z
+2010-09-23T14:37:45.783782Z
 3b8cfcd53b03ccc6db1aac5b542abaa4
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/plugins/test_load_path/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/test_load_path/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_load_path
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.628128Z
+2010-09-23T14:37:45.787823Z
 d41d8cd98f00b204e9800998ecf8427e
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/plugins/test_migration/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/test_migration/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_migration
 http://redmine.rubyforge.org/svn
 
@@ -35,7 +35,7 @@
 
 
 
-2010-07-23T14:49:46.596101Z
+2010-09-23T14:37:45.791825Z
 d41d8cd98f00b204e9800998ecf8427e
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/plugins/test_migration/db/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/test_migration/db/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_migration/db
 http://redmine.rubyforge.org/svn
 
--- a/vendor/plugins/engines/test/plugins/test_migration/db/migrate/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/test_migration/db/migrate/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_migration/db/migrate
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.596101Z
+2010-09-23T14:37:45.791825Z
 ba950e9dc666a42d09029148ae7e3234
 2009-09-13T17:14:35.707881Z
 2887
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:46.596101Z
+2010-09-23T14:37:45.791825Z
 de937ac5b434955daacc33306a5a1a2d
 2009-09-13T17:14:35.707881Z
 2887
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:46.596101Z
+2010-09-23T14:37:45.791825Z
 b9241da5bb8308bcea2f4cd5cbd32ff1
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/plugins/test_plugin_mailing/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/test_plugin_mailing/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_plugin_mailing
 http://redmine.rubyforge.org/svn
 
@@ -35,7 +35,7 @@
 
 
 
-2010-07-23T14:49:46.660177Z
+2010-09-23T14:37:45.799837Z
 d41d8cd98f00b204e9800998ecf8427e
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_plugin_mailing/app
 http://redmine.rubyforge.org/svn
 
--- a/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/models/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/models/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/models
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.648129Z
+2010-09-23T14:37:45.791825Z
 6bfa7a84bb26ae29617568896fec30ae
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views
 http://redmine.rubyforge.org/svn
 
--- a/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/plugin_mail/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/plugin_mail/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/plugin_mail
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.656097Z
+2010-09-23T14:37:45.795823Z
 cf207341167ec099c0e0ffbe3935a4d4
 2009-09-13T17:14:35.707881Z
 2887
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:46.656097Z
+2010-09-23T14:37:45.795823Z
 c54772416c0a8c4f3d46880180299dd5
 2009-09-13T17:14:35.707881Z
 2887
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:46.656097Z
+2010-09-23T14:37:45.799837Z
 6f32fb0cf1bfbf4dcc8636f350a126e8
 2009-09-13T17:14:35.707881Z
 2887
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:46.656097Z
+2010-09-23T14:37:45.795823Z
 6f32fb0cf1bfbf4dcc8636f350a126e8
 2009-09-13T17:14:35.707881Z
 2887
@@ -168,7 +168,7 @@
 
 
 
-2010-07-23T14:49:46.656097Z
+2010-09-23T14:37:45.795823Z
 ededb32a08ab9582df24ce1572dc2a20
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/plugins/test_routing/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/test_routing/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_routing
 http://redmine.rubyforge.org/svn
 
@@ -38,7 +38,7 @@
 
 
 
-2010-07-23T14:49:46.588095Z
+2010-09-23T14:37:45.803782Z
 d41d8cd98f00b204e9800998ecf8427e
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/plugins/test_routing/app/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/test_routing/app/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_routing/app
 http://redmine.rubyforge.org/svn
 
--- a/vendor/plugins/engines/test/plugins/test_routing/app/controllers/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/test_routing/app/controllers/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_routing/app/controllers
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.580097Z
+2010-09-23T14:37:45.803782Z
 e5a27666b16bdff58054a3440cf14516
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/plugins/test_routing/app/controllers/namespace/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/test_routing/app/controllers/namespace/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_routing/app/controllers/namespace
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.580097Z
+2010-09-23T14:37:45.803782Z
 515669edfb53126155e911a1ae5149ec
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/plugins/test_routing/config/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/test_routing/config/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_routing/config
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.584163Z
+2010-09-23T14:37:45.803782Z
 47135f279d2e64a431d8604df1402ffb
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/plugins/test_testing/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/test_testing/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_testing
 http://redmine.rubyforge.org/svn
 
@@ -38,7 +38,7 @@
 
 
 
-2010-07-23T14:49:46.640116Z
+2010-09-23T14:37:45.807778Z
 d41d8cd98f00b204e9800998ecf8427e
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/plugins/test_testing/app/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/test_testing/app/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_testing/app
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.640116Z
+2010-09-23T14:37:45.807778Z
 9cbac832f86ac5e8cfbbc4c69811910e
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/plugins/test_testing/test/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/test_testing/test/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_testing/test
 http://redmine.rubyforge.org/svn
 
--- a/vendor/plugins/engines/test/plugins/test_testing/test/fixtures/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/test_testing/test/fixtures/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_testing/test/fixtures
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.636170Z
+2010-09-23T14:37:45.807778Z
 d41d8cd98f00b204e9800998ecf8427e
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/plugins/test_testing/test/unit/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/plugins/test_testing/test/unit/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_testing/test/unit
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.632116Z
+2010-09-23T14:37:45.807778Z
 35e9fbc2fb32c9114a5d6cf531f41e8d
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/unit/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/unit/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/unit
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.392190Z
+2010-09-23T14:37:45.815811Z
 6724203a17cf765303c1f1cad440ec45
 2009-09-13T17:14:35.707881Z
 2887
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:46.392190Z
+2010-09-23T14:37:45.811809Z
 45a0f490d23fbb62bab17f142ba7e3a6
 2009-09-13T17:14:35.707881Z
 2887
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:46.392190Z
+2010-09-23T14:37:45.811809Z
 061b4ca6bf8ee79b149289ced48c0389
 2009-09-13T17:14:35.707881Z
 2887
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:46.392190Z
+2010-09-23T14:37:45.811809Z
 caf5ed93e20f9675e13260049b591bcb
 2009-09-13T17:14:35.707881Z
 2887
@@ -168,7 +168,7 @@
 
 
 
-2010-07-23T14:49:46.392190Z
+2010-09-23T14:37:45.811809Z
 d48da3c38e3e757d1649f48a25913284
 2009-09-13T17:14:35.707881Z
 2887
@@ -202,7 +202,7 @@
 
 
 
-2010-07-23T14:49:46.392190Z
+2010-09-23T14:37:45.815811Z
 ba3376b21f9304e1bc6dd06e88fb031f
 2009-09-13T17:14:35.707881Z
 2887
@@ -236,7 +236,7 @@
 
 
 
-2010-07-23T14:49:46.392190Z
+2010-09-23T14:37:45.815811Z
 7930dc88c66a78e10283af28694f9d75
 2009-09-13T17:14:35.707881Z
 2887
@@ -273,7 +273,7 @@
 
 
 
-2010-07-23T14:49:46.392190Z
+2010-09-23T14:37:45.811809Z
 da88ee34b7ad92288156f6dc33bc8945
 2009-09-13T17:14:35.707881Z
 2887
@@ -307,7 +307,7 @@
 
 
 
-2010-07-23T14:49:46.392190Z
+2010-09-23T14:37:45.815811Z
 749dec42d5f8db283afd40fa09a7a323
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/engines/test/unit/test_testing/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/engines/test/unit/test_testing/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/unit/test_testing
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.388128Z
+2010-09-23T14:37:45.815811Z
 55340a07100e4eea865c224b450561d8
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/gravatar/.svn/all-wcprops	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/gravatar/.svn/all-wcprops	Fri Sep 24 15:51:28 2010 +0100
@@ -1,13 +1,13 @@
 K 25
 svn:wc:ra_dav:version-url
 V 48
-/svn/!svn/ver/2832/trunk/vendor/plugins/gravatar
+/svn/!svn/ver/4072/trunk/vendor/plugins/gravatar
 END
 Rakefile
 K 25
 svn:wc:ra_dav:version-url
 V 57
-/svn/!svn/ver/2832/trunk/vendor/plugins/gravatar/Rakefile
+/svn/!svn/ver/4072/trunk/vendor/plugins/gravatar/Rakefile
 END
 README.rdoc
 K 25
--- a/vendor/plugins/gravatar/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/gravatar/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,14 +1,14 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/gravatar
 http://redmine.rubyforge.org/svn
 
 
 
-2009-08-02T04:19:44.367555Z
-2832
+2010-09-10T03:09:02.311267Z
+4072
 edavis10
 
 
@@ -32,10 +32,10 @@
 
 
 
-2010-07-23T14:49:46.928151Z
-702833cdff531d151408e9b47adb6aa3
-2009-08-02T04:19:44.367555Z
-2832
+2010-09-24T12:48:29.643852Z
+dcfa5a7b3c1cc768b2c0e3ad1ab802d0
+2010-09-10T03:09:02.311267Z
+4072
 edavis10
 
 
@@ -58,7 +58,7 @@
 
 
 
-966
+968
 
 README.rdoc
 file
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:46.932153Z
+2010-09-23T14:37:45.819779Z
 3b03a1f4670e486bfc0a99ea42fcc661
 2009-08-02T04:19:44.367555Z
 2832
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:46.932153Z
+2010-09-23T14:37:45.815811Z
 cd9b6943fc8fe58cdccef0b0215bf6bb
 2009-08-02T04:19:44.367555Z
 2832
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:46.932153Z
+2010-09-23T14:37:45.819779Z
 7560c41dd1c4891e83f52d2855a6a4e9
 2008-10-30T02:58:04.259131Z
 1962
@@ -171,7 +171,7 @@
 
 
 
-2010-07-23T14:49:46.932153Z
+2010-09-23T14:37:45.819779Z
 b718f27e16d77b36a24720b5b902328f
 2008-10-30T02:58:04.259131Z
 1962
@@ -208,7 +208,7 @@
 
 
 
-2010-07-23T14:49:46.932153Z
+2010-09-23T14:37:45.819779Z
 e052390cb0624d4b81b7809e65db85f6
 2009-08-02T04:19:44.367555Z
 2832
--- a/vendor/plugins/gravatar/.svn/text-base/Rakefile.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/gravatar/.svn/text-base/Rakefile.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -6,7 +6,7 @@
 
 desc 'Run all application-specific specs'
 Spec::Rake::SpecTask.new(:spec) do |t|
-  t.rcov = true
+  # t.rcov = true
 end
 
 desc "Report code statistics (KLOCs, etc) from the application"
--- a/vendor/plugins/gravatar/Rakefile	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/gravatar/Rakefile	Fri Sep 24 15:51:28 2010 +0100
@@ -6,7 +6,7 @@
 
 desc 'Run all application-specific specs'
 Spec::Rake::SpecTask.new(:spec) do |t|
-  t.rcov = true
+  # t.rcov = true
 end
 
 desc "Report code statistics (KLOCs, etc) from the application"
--- a/vendor/plugins/gravatar/lib/.svn/all-wcprops	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/gravatar/lib/.svn/all-wcprops	Fri Sep 24 15:51:28 2010 +0100
@@ -1,11 +1,11 @@
 K 25
 svn:wc:ra_dav:version-url
 V 52
-/svn/!svn/ver/2832/trunk/vendor/plugins/gravatar/lib
+/svn/!svn/ver/4072/trunk/vendor/plugins/gravatar/lib
 END
 gravatar.rb
 K 25
 svn:wc:ra_dav:version-url
 V 64
-/svn/!svn/ver/2832/trunk/vendor/plugins/gravatar/lib/gravatar.rb
+/svn/!svn/ver/4072/trunk/vendor/plugins/gravatar/lib/gravatar.rb
 END
--- a/vendor/plugins/gravatar/lib/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/gravatar/lib/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,14 +1,14 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/gravatar/lib
 http://redmine.rubyforge.org/svn
 
 
 
-2009-08-02T04:19:44.367555Z
-2832
+2010-09-10T03:09:02.311267Z
+4072
 edavis10
 
 
@@ -32,10 +32,10 @@
 
 
 
-2010-07-23T14:49:46.924126Z
-c686acac699ae970650d4a48ab5e84ec
-2009-08-02T04:19:44.367555Z
-2832
+2010-09-24T12:48:29.639851Z
+a988835a981d11a6fb73f61ba01e56e4
+2010-09-10T03:09:02.311267Z
+4072
 edavis10
 
 
@@ -58,5 +58,5 @@
 
 
 
-2963
+3076
 
--- a/vendor/plugins/gravatar/lib/.svn/text-base/gravatar.rb.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/gravatar/lib/.svn/text-base/gravatar.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -26,6 +26,9 @@
     # decorational picture, the alt text should be empty according to the
     # XHTML specs.
     :alt => '',
+
+    # The title text to use for the img tag for the gravatar.
+    :title => '',
     
     # The class to assign to the img tag for the gravatar.
     :class => 'gravatar',
@@ -48,8 +51,8 @@
     def gravatar(email, options={})
       src = h(gravatar_url(email, options))
       options = DEFAULT_OPTIONS.merge(options)
-      [:class, :alt, :size].each { |opt| options[opt] = h(options[opt]) }
-      "<img class=\"#{options[:class]}\" alt=\"#{options[:alt]}\" width=\"#{options[:size]}\" height=\"#{options[:size]}\" src=\"#{src}\" />"      
+      [:class, :alt, :size, :title].each { |opt| options[opt] = h(options[opt]) }
+      "<img class=\"#{options[:class]}\" alt=\"#{options[:alt]}\" title=\"#{options[:title]}\" width=\"#{options[:size]}\" height=\"#{options[:size]}\" src=\"#{src}\" />"
     end
     
     # Returns the base Gravatar URL for the given email hash. If ssl evaluates to true,
@@ -82,4 +85,4 @@
 
   end
   
-end
\ No newline at end of file
+end
--- a/vendor/plugins/gravatar/lib/gravatar.rb	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/gravatar/lib/gravatar.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -26,6 +26,9 @@
     # decorational picture, the alt text should be empty according to the
     # XHTML specs.
     :alt => '',
+
+    # The title text to use for the img tag for the gravatar.
+    :title => '',
     
     # The class to assign to the img tag for the gravatar.
     :class => 'gravatar',
@@ -48,8 +51,8 @@
     def gravatar(email, options={})
       src = h(gravatar_url(email, options))
       options = DEFAULT_OPTIONS.merge(options)
-      [:class, :alt, :size].each { |opt| options[opt] = h(options[opt]) }
-      "<img class=\"#{options[:class]}\" alt=\"#{options[:alt]}\" width=\"#{options[:size]}\" height=\"#{options[:size]}\" src=\"#{src}\" />"      
+      [:class, :alt, :size, :title].each { |opt| options[opt] = h(options[opt]) }
+      "<img class=\"#{options[:class]}\" alt=\"#{options[:alt]}\" title=\"#{options[:title]}\" width=\"#{options[:size]}\" height=\"#{options[:size]}\" src=\"#{src}\" />"
     end
     
     # Returns the base Gravatar URL for the given email hash. If ssl evaluates to true,
@@ -82,4 +85,4 @@
 
   end
   
-end
\ No newline at end of file
+end
--- a/vendor/plugins/gravatar/spec/.svn/all-wcprops	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/gravatar/spec/.svn/all-wcprops	Fri Sep 24 15:51:28 2010 +0100
@@ -1,11 +1,11 @@
 K 25
 svn:wc:ra_dav:version-url
 V 53
-/svn/!svn/ver/1962/trunk/vendor/plugins/gravatar/spec
+/svn/!svn/ver/4072/trunk/vendor/plugins/gravatar/spec
 END
 gravatar_spec.rb
 K 25
 svn:wc:ra_dav:version-url
 V 70
-/svn/!svn/ver/1962/trunk/vendor/plugins/gravatar/spec/gravatar_spec.rb
+/svn/!svn/ver/4072/trunk/vendor/plugins/gravatar/spec/gravatar_spec.rb
 END
--- a/vendor/plugins/gravatar/spec/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/gravatar/spec/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,14 +1,14 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/gravatar/spec
 http://redmine.rubyforge.org/svn
 
 
 
-2008-10-30T02:58:04.259131Z
-1962
+2010-09-10T03:09:02.311267Z
+4072
 edavis10
 
 
@@ -32,10 +32,10 @@
 
 
 
-2010-07-23T14:49:46.928151Z
-2aaebfd60071b5f1889e3875086cbdbb
-2008-10-30T02:58:04.259131Z
-1962
+2010-09-24T12:48:29.643852Z
+26b23e5e988b11435e121bf53624d934
+2010-09-10T03:09:02.311267Z
+4072
 edavis10
 
 
@@ -58,5 +58,5 @@
 
 
 
-942
+1177
 
--- a/vendor/plugins/gravatar/spec/.svn/text-base/gravatar_spec.rb.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/gravatar/spec/.svn/text-base/gravatar_spec.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -4,34 +4,40 @@
 require File.dirname(__FILE__) + '/../lib/gravatar'
 include GravatarHelper, GravatarHelper::PublicMethods, ERB::Util
 
-context "gravatar_url with a custom default URL" do
-  setup do
+describe "gravatar_url with a custom default URL" do
+  before(:each) do
     @original_options = DEFAULT_OPTIONS.dup
     DEFAULT_OPTIONS[:default] = "no_avatar.png"
     @url = gravatar_url("somewhere")
   end
   
-  specify "should include the \"default\" argument in the result" do
+  it "should include the \"default\" argument in the result" do
     @url.should match(/&default=no_avatar.png/)
   end
   
-  teardown do
+  after(:each) do
     DEFAULT_OPTIONS.merge!(@original_options)
   end
   
 end
 
-context "gravatar_url with default settings" do
-  setup do
+describe "gravatar_url with default settings" do
+  before(:each) do
     @url = gravatar_url("somewhere")
   end
   
-  specify "should have a nil default URL" do
+  it "should have a nil default URL" do
     DEFAULT_OPTIONS[:default].should be_nil
   end
   
-  specify "should not include the \"default\" argument in the result" do
+  it "should not include the \"default\" argument in the result" do
     @url.should_not match(/&default=/)
   end  
   
-end
\ No newline at end of file
+end
+
+describe "gravatar with a custom title option" do
+  it "should include the title in the result" do
+    gravatar('example@example.com', :title => "This is a title attribute").should match(/This is a title attribute/)
+  end
+end
--- a/vendor/plugins/gravatar/spec/gravatar_spec.rb	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/gravatar/spec/gravatar_spec.rb	Fri Sep 24 15:51:28 2010 +0100
@@ -4,34 +4,40 @@
 require File.dirname(__FILE__) + '/../lib/gravatar'
 include GravatarHelper, GravatarHelper::PublicMethods, ERB::Util
 
-context "gravatar_url with a custom default URL" do
-  setup do
+describe "gravatar_url with a custom default URL" do
+  before(:each) do
     @original_options = DEFAULT_OPTIONS.dup
     DEFAULT_OPTIONS[:default] = "no_avatar.png"
     @url = gravatar_url("somewhere")
   end
   
-  specify "should include the \"default\" argument in the result" do
+  it "should include the \"default\" argument in the result" do
     @url.should match(/&default=no_avatar.png/)
   end
   
-  teardown do
+  after(:each) do
     DEFAULT_OPTIONS.merge!(@original_options)
   end
   
 end
 
-context "gravatar_url with default settings" do
-  setup do
+describe "gravatar_url with default settings" do
+  before(:each) do
     @url = gravatar_url("somewhere")
   end
   
-  specify "should have a nil default URL" do
+  it "should have a nil default URL" do
     DEFAULT_OPTIONS[:default].should be_nil
   end
   
-  specify "should not include the \"default\" argument in the result" do
+  it "should not include the \"default\" argument in the result" do
     @url.should_not match(/&default=/)
   end  
   
-end
\ No newline at end of file
+end
+
+describe "gravatar with a custom title option" do
+  it "should include the title in the result" do
+    gravatar('example@example.com', :title => "This is a title attribute").should match(/This is a title attribute/)
+  end
+end
--- a/vendor/plugins/open_id_authentication/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/open_id_authentication/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/open_id_authentication
 http://redmine.rubyforge.org/svn
 
@@ -35,7 +35,7 @@
 
 
 
-2010-07-23T14:49:46.976208Z
+2010-09-23T14:37:45.823780Z
 b66b372df8374607d104228f41a06671
 2009-02-11T19:06:45.087605Z
 2438
@@ -72,7 +72,7 @@
 
 
 
-2010-07-23T14:49:46.976208Z
+2010-09-23T14:37:45.831824Z
 22579abfc9dc6a4cf475150e407e9a17
 2009-02-12T21:25:50.680468Z
 2458
@@ -109,7 +109,7 @@
 
 
 
-2010-07-23T14:49:46.976208Z
+2010-09-23T14:37:45.823780Z
 d23f4c2e6c00805d7172c76ad52ebe6f
 2009-02-11T19:06:45.087605Z
 2438
@@ -146,7 +146,7 @@
 
 
 
-2010-07-23T14:49:46.976208Z
+2010-09-23T14:37:45.823780Z
 45eb3e296a3591fca629d0c8eab71e4c
 2009-02-11T19:06:45.087605Z
 2438
--- a/vendor/plugins/open_id_authentication/generators/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/open_id_authentication/generators/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/open_id_authentication/generators
 http://redmine.rubyforge.org/svn
 
--- a/vendor/plugins/open_id_authentication/generators/open_id_authentication_tables/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/open_id_authentication/generators/open_id_authentication_tables/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/open_id_authentication/generators/open_id_authentication_tables
 http://redmine.rubyforge.org/svn
 
@@ -35,7 +35,7 @@
 
 
 
-2010-07-23T14:49:46.968098Z
+2010-09-23T14:37:45.827780Z
 ee799e52b83b842fa2a879431195e9eb
 2009-02-11T19:06:45.087605Z
 2438
--- a/vendor/plugins/open_id_authentication/generators/open_id_authentication_tables/templates/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/open_id_authentication/generators/open_id_authentication_tables/templates/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/open_id_authentication/generators/open_id_authentication_tables/templates
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.968098Z
+2010-09-23T14:37:45.827780Z
 352b0b17c079fdf355c028a9b990b3b7
 2009-02-11T19:06:45.087605Z
 2438
--- a/vendor/plugins/open_id_authentication/generators/upgrade_open_id_authentication_tables/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/open_id_authentication/generators/upgrade_open_id_authentication_tables/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/open_id_authentication/generators/upgrade_open_id_authentication_tables
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.976208Z
+2010-09-23T14:37:45.831824Z
 f401bfd8b5d2dd3008d16bf79de8c1e4
 2009-02-11T19:06:45.087605Z
 2438
--- a/vendor/plugins/open_id_authentication/generators/upgrade_open_id_authentication_tables/templates/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/open_id_authentication/generators/upgrade_open_id_authentication_tables/templates/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/open_id_authentication/generators/upgrade_open_id_authentication_tables/templates
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.972128Z
+2010-09-23T14:37:45.831824Z
 512b6bc6321e15e12a9eb5ef10317b73
 2009-02-11T19:06:45.087605Z
 2438
--- a/vendor/plugins/open_id_authentication/lib/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/open_id_authentication/lib/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/open_id_authentication/lib
 http://redmine.rubyforge.org/svn
 
@@ -35,7 +35,7 @@
 
 
 
-2010-08-25T15:27:56.758589Z
+2010-09-23T14:37:45.831824Z
 c72f1bd48e8c2dfe4e84ba232fc40030
 2010-08-10T21:12:32.103531Z
 3933
--- a/vendor/plugins/open_id_authentication/lib/open_id_authentication/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/open_id_authentication/lib/open_id_authentication/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/open_id_authentication/lib/open_id_authentication
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.960095Z
+2010-09-23T14:37:45.835838Z
 1effe2a3ab6ff2cf3a4ffc288222b114
 2009-02-11T19:06:45.087605Z
 2438
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:46.960095Z
+2010-09-23T14:37:45.835838Z
 9ed2aea6a3f0e76f21a84bf5bdb1bebe
 2009-02-11T19:06:45.087605Z
 2438
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:46.960095Z
+2010-09-23T14:37:45.835838Z
 4aa743638f54375c2f1f25e62fa50bf3
 2009-02-11T19:06:45.087605Z
 2438
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:46.960095Z
+2010-09-23T14:37:45.835838Z
 d05c8725996156d4cc153a2fc0891db8
 2009-02-11T19:06:45.087605Z
 2438
@@ -168,7 +168,7 @@
 
 
 
-2010-07-23T14:49:46.960095Z
+2010-09-23T14:37:45.835838Z
 6a6fdfddabbc9ae4b8c11f69bc653107
 2009-02-11T19:06:45.087605Z
 2438
@@ -202,7 +202,7 @@
 
 
 
-2010-07-23T14:49:46.960095Z
+2010-09-23T14:37:45.835838Z
 42863e1d17d5af05e0e896d336def59c
 2009-02-11T19:06:45.087605Z
 2438
--- a/vendor/plugins/open_id_authentication/tasks/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/open_id_authentication/tasks/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/open_id_authentication/tasks
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.952194Z
+2010-09-23T14:37:45.835838Z
 54b595ee92e0adb364a9086340b2af51
 2009-02-11T19:06:45.087605Z
 2438
--- a/vendor/plugins/open_id_authentication/test/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/open_id_authentication/test/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/open_id_authentication/test
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.948095Z
+2010-09-23T14:37:45.839834Z
 9448478c6f6c999b3dfae03f9661a7a9
 2009-02-11T19:06:45.087605Z
 2438
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:46.948095Z
+2010-09-23T14:37:45.839834Z
 218b9c429fce5d50a6de37d10d4c626a
 2009-02-11T19:06:45.087605Z
 2438
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:46.948095Z
+2010-09-23T14:37:45.839834Z
 3ffcd8ee621212d3a963257c35cf565c
 2009-02-11T19:06:45.087605Z
 2438
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:46.948095Z
+2010-09-23T14:37:45.839834Z
 26175162cebaa3962614100cac9726fc
 2009-02-11T19:06:45.087605Z
 2438
@@ -168,7 +168,7 @@
 
 
 
-2010-07-23T14:49:46.948095Z
+2010-09-23T14:37:45.839834Z
 c3e483ae649f9324f093075331c26ed1
 2009-02-11T19:06:45.087605Z
 2438
--- a/vendor/plugins/prepend_engine_views/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/prepend_engine_views/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/prepend_engine_views
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.892127Z
+2010-09-23T14:37:45.843778Z
 720c397a2f5ed49f4436f5d9cbe0b5ec
 2009-09-13T17:14:35.707881Z
 2887
--- a/vendor/plugins/rfpdf/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/rfpdf/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/rfpdf
 http://redmine.rubyforge.org/svn
 
@@ -35,7 +35,7 @@
 
 
 
-2010-07-23T14:49:46.916157Z
+2010-09-23T14:37:45.843778Z
 1da9fbada6119233134b3aab6c7d0edf
 2008-07-04T17:58:14.743502Z
 1623
@@ -72,7 +72,7 @@
 
 
 
-2010-07-23T14:49:46.916157Z
+2010-09-23T14:37:45.843778Z
 275a3dc6407eaf7c40f1d8f4e6b08803
 2006-11-21T18:34:04.275680Z
 49
@@ -106,7 +106,7 @@
 
 
 
-2010-07-23T14:49:46.916157Z
+2010-09-23T14:37:45.843778Z
 40cf182dab06e3de067375de5bbab322
 2006-11-21T18:34:04.275680Z
 49
@@ -140,7 +140,7 @@
 
 
 
-2010-07-23T14:49:46.916157Z
+2010-09-23T14:37:45.843778Z
 d58199e83ebcaa5d234764407c238bb2
 2006-11-21T18:34:04.275680Z
 49
--- a/vendor/plugins/rfpdf/lib/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/rfpdf/lib/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/rfpdf/lib
 http://redmine.rubyforge.org/svn
 
@@ -35,7 +35,7 @@
 
 
 
-2010-07-23T14:49:46.912143Z
+2010-09-23T14:37:45.847779Z
 9667df0ee17c3893ec4025f214d990ee
 2006-11-21T18:34:04.275680Z
 49
--- a/vendor/plugins/rfpdf/lib/rfpdf/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/rfpdf/lib/rfpdf/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/rfpdf/lib/rfpdf
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.908132Z
+2010-09-23T14:37:45.851779Z
 ddaf6868455af432aac221e53aadc10a
 2008-06-07T08:39:06.277997Z
 1497
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:46.908132Z
+2010-09-23T14:37:45.851779Z
 69406d6105df50a9552702d133889fd6
 2006-11-21T18:34:04.275680Z
 49
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:46.908132Z
+2010-09-23T14:37:45.855835Z
 61d6e8e3bc2a549b1adf12c8e5148019
 2010-02-07T12:30:44.486359Z
 3389
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:46.908132Z
+2010-09-23T14:37:45.855835Z
 f504607d615e4d100eb506daf3dfe038
 2006-11-21T18:34:04.275680Z
 49
@@ -168,7 +168,7 @@
 
 
 
-2010-07-23T14:49:46.912143Z
+2010-09-23T14:37:45.855835Z
 267f469d753d389beda7bb8d39ef5e79
 2007-02-18T10:33:22.252239Z
 248
@@ -202,7 +202,7 @@
 
 
 
-2010-07-23T14:49:46.912143Z
+2010-09-23T14:37:45.851779Z
 8b971319c65229a7075520cf5ce0fb84
 2006-11-21T18:34:04.275680Z
 49
@@ -236,7 +236,7 @@
 
 
 
-2010-07-23T14:49:46.912143Z
+2010-09-23T14:37:45.851779Z
 c11f99560b9b2e12cf9c679f8ef11c37
 2006-11-21T18:34:04.275680Z
 49
@@ -270,7 +270,7 @@
 
 
 
-2010-07-23T14:49:46.912143Z
+2010-09-23T14:37:45.851779Z
 48cd43d67257151aebb2e0aeee6f4cbf
 2007-03-01T19:49:04.518842Z
 287
@@ -304,7 +304,7 @@
 
 
 
-2010-07-23T14:49:46.912143Z
+2010-09-23T14:37:45.855835Z
 9bdec08cb98e4413cfb9c39877f3734d
 2008-07-04T17:58:14.743502Z
 1623
@@ -338,7 +338,7 @@
 
 
 
-2010-07-23T14:49:46.912143Z
+2010-09-23T14:37:45.851779Z
 e759935ac5ac9027073e9a2f3543b231
 2006-11-21T18:34:04.275680Z
 49
--- a/vendor/plugins/rfpdf/test/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/rfpdf/test/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/rfpdf/test
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.896133Z
+2010-09-23T14:37:45.855835Z
 65b672e3025a6dc9ed22dc2cb1356061
 2006-11-21T18:34:04.275680Z
 49
--- a/vendor/plugins/ruby-net-ldap-0.0.4/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/ruby-net-ldap-0.0.4/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/ruby-net-ldap-0.0.4
 http://redmine.rubyforge.org/svn
 
@@ -35,7 +35,7 @@
 
 
 
-2010-07-23T14:49:46.328096Z
+2010-09-23T14:37:45.859799Z
 100efd8d000514effa3709713ab85acb
 2007-01-02T08:48:40.736310Z
 134
@@ -72,7 +72,7 @@
 
 
 
-2010-07-23T14:49:46.328096Z
+2010-09-23T14:37:45.859799Z
 e951c712b462c2e6e01f12474d4a23c2
 2007-01-02T08:48:40.736310Z
 134
@@ -106,7 +106,7 @@
 
 
 
-2010-07-23T14:49:46.328096Z
+2010-09-23T14:37:45.859799Z
 ff6d66271209d878dbe3742d8061151e
 2007-01-02T08:48:40.736310Z
 134
@@ -140,7 +140,7 @@
 
 
 
-2010-07-23T14:49:46.328096Z
+2010-09-23T14:37:45.859799Z
 365281a5053e3232092adff0636600b3
 2007-01-02T08:48:40.736310Z
 134
--- a/vendor/plugins/ruby-net-ldap-0.0.4/lib/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/ruby-net-ldap-0.0.4/lib/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/ruby-net-ldap-0.0.4/lib
 http://redmine.rubyforge.org/svn
 
--- a/vendor/plugins/ruby-net-ldap-0.0.4/lib/net/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/ruby-net-ldap-0.0.4/lib/net/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/ruby-net-ldap-0.0.4/lib/net
 http://redmine.rubyforge.org/svn
 
@@ -35,7 +35,7 @@
 
 
 
-2010-07-23T14:49:46.324130Z
+2010-09-23T14:37:45.867778Z
 bcd7fbc67923f3cc1491ca301a5c39cb
 2007-01-02T08:48:40.736310Z
 134
@@ -69,7 +69,7 @@
 
 
 
-2010-07-23T14:49:46.324130Z
+2010-09-23T14:37:45.863819Z
 47d5a9c76d96071a1de184dd49c09194
 2007-01-02T08:48:40.736310Z
 134
@@ -103,7 +103,7 @@
 
 
 
-2010-07-23T14:49:46.324130Z
+2010-09-23T14:37:45.863819Z
 40f7f978006674f2b916ce341e5ad684
 2008-02-15T17:22:21.293943Z
 1148
--- a/vendor/plugins/ruby-net-ldap-0.0.4/lib/net/ldap/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/ruby-net-ldap-0.0.4/lib/net/ldap/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/ruby-net-ldap-0.0.4/lib/net/ldap
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.320094Z
+2010-09-23T14:37:45.867778Z
 be6b5dd522a4532ceeda4ab5bddcb53e
 2007-01-02T08:48:40.736310Z
 134
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:46.320094Z
+2010-09-23T14:37:45.867778Z
 dce002e156bf793b6219b50e5d4ede3a
 2007-01-02T08:48:40.736310Z
 134
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:46.320094Z
+2010-09-23T14:37:45.867778Z
 39c1aa4a3ff36f2769b6855a4b56faa7
 2007-02-18T11:45:55.832750Z
 252
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:46.320094Z
+2010-09-23T14:37:45.867778Z
 7acdae44250f47d4b177c0367865d5f7
 2007-01-02T08:48:40.736310Z
 134
@@ -168,7 +168,7 @@
 
 
 
-2010-07-23T14:49:46.320094Z
+2010-09-23T14:37:45.867778Z
 7af528c0721148b904f82e64e523ee74
 2007-01-02T08:48:40.736310Z
 134
--- a/vendor/plugins/ruby-net-ldap-0.0.4/tests/.svn/entries	Fri Sep 24 15:33:13 2010 +0100
+++ b/vendor/plugins/ruby-net-ldap-0.0.4/tests/.svn/entries	Fri Sep 24 15:51:28 2010 +0100
@@ -1,7 +1,7 @@
 10
 
 dir
-4040
+4173
 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/ruby-net-ldap-0.0.4/tests
 http://redmine.rubyforge.org/svn
 
@@ -32,7 +32,7 @@
 
 
 
-2010-07-23T14:49:46.296143Z
+2010-09-23T14:37:45.871778Z
 d32a0d5d48658b30de358974dc588b6a
 2007-01-02T08:48:40.736310Z
 134
@@ -66,7 +66,7 @@
 
 
 
-2010-07-23T14:49:46.296143Z
+2010-09-23T14:37:45.871778Z
 9a4a1de4982131870bcc016b3062b563
 2007-01-02T08:48:40.736310Z
 134
@@ -100,7 +100,7 @@
 
 
 
-2010-07-23T14:49:46.296143Z
+2010-09-23T14:37:45.871778Z
 07fadb83b55212328945590db904016b
 2007-01-02T08:48:40.736310Z
 134
@@ -134,7 +134,7 @@
 
 
 
-2010-07-23T14:49:46.296143Z
+2010-09-23T14:37:45.871778Z
 f60b9471933a7a534097d3fd1fe38a18
 2007-01-02T08:48:40.736310Z
 134
@@ -168,7 +168,7 @@
 
 
 
-2010-07-23T14:49:46.296143Z
+2010-09-23T14:37:45.871778Z
 98e4a39b73665ed7c274457213d8e3d5
 2007-01-02T08:48:40.736310Z
 134
@@ -202,7 +202,7 @@
 
 
 
-2010-07-23T14:49:46.296143Z
+2010-09-23T14:37:45.871778Z
 a6eed10e89ba06f4ffa2da720bb1752f
 2007-01-02T08:48:40.736310Z
 134
@@ -236,7 +236,7 @@
 
 
 
-2010-07-23T14:49:46.296143Z
+2010-09-23T14:37:45.871778Z
 3dcbc8b4c3717fa97211a1d75a7fab4f
 2007-01-02T08:48:40.736310Z
 134