[evolvis-commits] r984: Adding new Task Manager 'Beta' version - incomplete, several features still being added↵

bigdisk at evolvis.org bigdisk at evolvis.org
Thu Feb 25 16:04:49 CET 2010


Author: bigdisk
Date: 2010-02-25 16:04:49 +0100 (Thu, 25 Feb 2010)
New Revision: 984

Added:
   trunk/gforge_base/evolvisforge/gforge/common/tracker/ArtifactFromID.class
   trunk/gforge_base/evolvisforge/gforge/db/20021223.sql
Removed:
   trunk/gforge_base/evolvisforge/gforge/db/projman-rewrite.sql
Modified:
   trunk/gforge_base/evolvisforge/
   trunk/gforge_base/evolvisforge/gforge/ChangeLog
   trunk/gforge_base/evolvisforge/gforge/common/include/database.php
   trunk/gforge_base/evolvisforge/gforge/common/include/utils.php
   trunk/gforge_base/evolvisforge/gforge/common/pm/ProjectCategory.class
   trunk/gforge_base/evolvisforge/gforge/common/pm/ProjectGroup.class
   trunk/gforge_base/evolvisforge/gforge/common/pm/ProjectGroupFactory.class
   trunk/gforge_base/evolvisforge/gforge/common/pm/ProjectTask.class
   trunk/gforge_base/evolvisforge/gforge/www/pm/add_task.php
   trunk/gforge_base/evolvisforge/gforge/www/pm/admin/index.php
   trunk/gforge_base/evolvisforge/gforge/www/pm/browse_task.php
   trunk/gforge_base/evolvisforge/gforge/www/pm/detail_task.php
   trunk/gforge_base/evolvisforge/gforge/www/pm/index.php
   trunk/gforge_base/evolvisforge/gforge/www/pm/mod_task.php
   trunk/gforge_base/evolvisforge/gforge/www/pm/reporting/index.php
   trunk/gforge_base/evolvisforge/gforge/www/pm/task.php
Log:
Adding new Task Manager 'Beta' version - incomplete, several features still being added



Property changes on: trunk/gforge_base/evolvisforge
___________________________________________________________________
Modified: bzr:revision-info
   - timestamp: 2002-12-23 20:33:24.000000000 +0000
committer: bigdisk

   + timestamp: 2002-12-23 20:45:03.000000000 +0000
committer: bigdisk

Modified: bzr:file-ids
   - gforge/www/include/Layout.class	2 at 9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk%2Fgforge%2Fwww%2Finclude%2FLayout.class
gforge/www/index.php	2 at 9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk%2Fgforge%2Fwww%2Findex.php

   + gforge/ChangeLog	184 at 9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk%2Fgforge%2FChangeLog
gforge/common/include/database.php	180 at 9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk%2Fgforge%2Fcommon%2Finclude%2Fdatabase.php
gforge/common/include/utils.php	180 at 9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk%2Fgforge%2Fcommon%2Finclude%2Futils.php
gforge/common/pm/ProjectCategory.class	1221 at 9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk%2Fgforge%2Fcommon%2Fpm%2FProjectCategory.class
gforge/common/pm/ProjectGroup.class	1221 at 9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk%2Fgforge%2Fcommon%2Fpm%2FProjectGroup.class
gforge/common/pm/ProjectGroupFactory.class	1221 at 9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk%2Fgforge%2Fcommon%2Fpm%2FProjectGroupFactory.class
gforge/common/pm/ProjectTask.class	1221 at 9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk%2Fgforge%2Fcommon%2Fpm%2FProjectTask.class
gforge/common/tracker/ArtifactFromID.class	1229 at 9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk%2Fgforge%2Fcommon%2Ftracker%2FArtifactFromID.class
gforge/db/20021223.sql	1229 at 9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk%2Fgforge%2Fdb%2F20021223.sql
gforge/www/pm/add_task.php	184 at 9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk%2Fgforge%2Fwww%2Fpm%2Fadd_task.php
gforge/www/pm/admin/index.php	184 at 9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk%2Fgforge%2Fwww%2Fpm%2Fadmin%2Findex.php
gforge/www/pm/browse_task.php	184 at 9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk%2Fgforge%2Fwww%2Fpm%2Fbrowse_task.php
gforge/www/pm/detail_task.php	184 at 9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk%2Fgforge%2Fwww%2Fpm%2Fdetail_task.php
gforge/www/pm/index.php	184 at 9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk%2Fgforge%2Fwww%2Fpm%2Findex.php
gforge/www/pm/mod_task.php	184 at 9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk%2Fgforge%2Fwww%2Fpm%2Fmod_task.php
gforge/www/pm/reporting/index.php	184 at 9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk%2Fgforge%2Fwww%2Fpm%2Freporting%2Findex.php
gforge/www/pm/task.php	184 at 9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk%2Fgforge%2Fwww%2Fpm%2Ftask.php

Modified: bzr:revision-id:v4
   - 1 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1
2 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:2
3 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:7
4 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:9
5 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:10
6 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:11
7 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:12
8 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:13
9 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:14
10 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:15
11 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:16
12 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:17
13 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:18
14 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:19
15 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:20
16 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:21
17 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:22
18 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:23
19 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:24
20 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:25
21 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:26
22 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:27
23 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:28
24 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:29
25 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:30
26 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:31
27 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:32
28 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:33
29 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:34
30 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:35
31 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:36
32 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:37
33 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:38
34 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:39
35 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:40
36 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:41
37 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:42
38 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:43
39 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:44
40 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:45
41 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:46
42 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:47
43 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:48
44 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:49
45 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:50
46 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:51
47 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:52
48 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:53
49 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:54
50 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:55
51 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:56
52 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:57
53 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:58
54 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:59
55 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:60
56 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:61
57 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:62
58 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:63
59 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:64
60 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:65
61 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:66
62 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:67
63 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:68
64 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:69
65 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:70
66 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:71
67 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:72
68 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:73
69 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:74
70 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:75
71 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:76
72 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:77
73 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:78
74 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:79
75 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:80
76 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:81
77 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:82
78 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:83
79 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:84
80 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:85
81 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:86
82 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:87
83 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:88
84 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:89
85 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:90
86 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:91
87 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:92
88 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:93
89 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:94
90 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:95
91 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:96
92 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:97
93 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:98
94 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:99
95 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:100
96 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:101
97 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:102
98 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:103
99 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:104
100 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:105
101 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:106
102 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:107
103 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:108
104 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:109
105 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:110
106 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:111
107 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:112
108 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:113
109 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:114
110 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:115
111 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:116
112 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:117
113 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:118
114 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:119
115 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:120
116 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:121
117 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:122
118 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:123
119 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:124
120 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:125
121 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:126
122 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:127
123 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:128
124 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:129
125 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:130
126 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:131
127 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:132
128 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:133
129 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:134
130 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:135
131 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:136
132 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:137
133 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:138
134 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:139
135 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:140
136 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:141
137 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:142
138 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:143
139 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:144
140 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:145
141 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:146
142 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:147
143 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:148
144 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:149
145 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:150
146 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:151
147 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:152
148 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:153
149 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:154
150 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:155
151 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:156
152 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:157
153 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:158
154 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:159
155 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:160
156 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:161
157 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:162
158 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:163
159 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:164
160 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:165
161 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:166
162 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:167
163 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:168
164 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:169
165 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:170
166 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:172
167 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:173
168 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:174
169 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:175
170 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:176
171 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:180
172 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:184
173 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:186
174 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:187
175 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:188
176 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:189
177 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:190
178 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:191
179 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:192
180 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:193
181 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:194
182 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:195
183 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:196
184 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:197
185 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:198
186 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:199
187 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:200
188 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:202
189 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:203
190 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:204
191 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:205
192 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:206
193 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:207
194 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:208
195 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:209
196 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:210
197 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:211
198 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:212
199 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:213
200 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:214
201 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:215
202 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:216
203 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:217
204 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:218
205 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:219
206 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:220
207 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:221
208 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:222
209 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:223
210 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:224
211 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:225
212 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:226
213 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:227
214 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:228
215 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:229
216 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:230
217 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:231
218 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:232
219 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:233
220 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:234
221 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:235
222 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:236
223 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:237
224 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:238
225 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:241
226 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:250
227 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:253
228 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:254
229 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:255
230 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:256
231 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:258
232 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:263
233 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:264
234 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:265
235 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:266
236 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:268
237 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:269
238 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:271
239 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:275
240 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:276
241 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:277
242 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:278
243 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:288
244 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:289
245 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:290
246 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:291
247 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:292
248 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:293
249 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:294
250 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:295
251 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:296
252 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:297
253 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:298
254 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:310
255 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:311
256 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:313
257 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:315
258 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:323
259 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:324
260 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:325
261 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:326
262 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:327
263 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:328
264 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:329
265 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:331
266 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:336
267 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:337
268 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:338
269 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:339
270 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:340
271 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:341
272 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:343
273 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:359
274 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:360
275 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:361
276 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:362
277 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:363
278 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:364
279 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:365
280 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:369
281 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:371
282 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:375
283 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:377
284 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:378
285 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:379
286 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:380
287 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:384
288 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:386
289 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:387
290 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:388
291 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:390
292 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:391
293 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:392
294 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:394
295 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:395
296 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:406
297 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:407
298 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:408
299 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:409
300 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:410
301 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:411
302 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:412
303 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:413
304 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:414
305 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:415
306 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:416
307 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:417
308 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:418
309 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:419
310 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:420
311 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:421
312 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:422
313 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:427
314 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:428
315 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:429
316 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:435
317 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:436
318 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:437
319 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:438
320 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:442
321 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:443
322 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:444
323 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:448
324 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:449
325 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:450
326 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:451
327 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:452
328 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:453
329 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:454
330 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:455
331 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:456
332 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:457
333 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:458
334 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:459
335 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:460
336 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:461
337 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:463
338 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:464
339 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:465
340 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:466
341 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:467
342 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:468
343 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:476
344 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:477
345 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:478
346 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:479
347 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:480
348 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:481
349 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:488
350 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:497
351 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:498
352 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:499
353 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:500
354 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:501
355 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:502
356 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:503
357 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:504
358 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:505
359 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:506
360 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:507
361 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:508
362 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:509
363 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:510
364 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:511
365 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:512
366 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:513
367 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:514
368 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:515
369 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:516
370 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:517
371 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:518
372 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:521
373 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:522
374 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:523
375 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:528
376 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:529
377 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:530
378 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:532
379 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:533
380 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:537
381 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:538
382 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:539
383 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:540
384 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:541
385 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:542
386 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:543
387 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:544
388 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:545
389 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:546
390 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:547
391 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:548
392 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:550
393 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:551
394 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:562
395 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:565
396 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:566
397 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:567
398 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:570
399 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:571
400 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:572
401 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:574
402 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:575
403 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:576
404 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:577
405 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:578
406 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:579
407 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:580
408 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:581
409 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:582
410 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:583
411 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:584
412 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:585
413 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:586
414 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:587
415 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:588
416 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:589
417 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:590
418 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:591
419 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:592
420 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:593
421 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:594
422 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:595
423 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:596
424 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:597
425 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:598
426 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:599
427 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:600
428 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:601
429 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:602
430 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:603
431 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:604
432 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:605
433 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:606
434 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:607
435 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:608
436 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:609
437 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:610
438 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:611
439 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:612
440 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:613
441 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:614
442 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:615
443 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:616
444 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:617
445 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:618
446 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:619
447 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:620
448 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:621
449 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:622
450 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:623
451 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:624
452 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:625
453 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:626
454 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:627
455 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:628
456 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:629
457 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:632
458 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:633
459 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:634
460 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:635
461 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:636
462 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:637
463 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:638
464 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:639
465 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:640
466 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:641
467 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:642
468 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:643
469 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:644
470 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:645
471 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:646
472 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:647
473 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:648
474 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:649
475 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:650
476 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:651
477 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:652
478 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:653
479 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:654
480 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:655
481 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:656
482 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:657
483 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:658
484 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:659
485 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:660
486 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:661
487 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:662
488 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:663
489 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:664
490 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:665
491 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:666
492 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:667
493 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:668
494 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:669
495 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:670
496 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:671
497 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:672
498 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:673
499 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:674
500 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:675
501 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:676
502 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:677
503 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:678
504 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:680
505 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:681
506 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:682
507 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:683
508 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:684
509 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:685
510 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:686
511 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:687
512 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:688
513 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:689
514 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:690
515 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:691
516 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:692
517 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:693
518 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:694
519 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:695
520 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:696
521 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:697
522 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:698
523 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:699
524 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:700
525 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:701
526 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:702
527 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:703
528 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:704
529 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:705
530 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:706
531 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:707
532 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:708
533 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:712
534 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:713
535 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:714
536 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:715
537 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:716
538 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:717
539 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:718
540 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:719
541 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:720
542 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:721
543 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:722
544 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:723
545 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:725
546 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:726
547 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:727
548 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:728
549 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:729
550 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:730
551 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:731
552 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:732
553 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:734
554 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:761
555 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:762
556 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:763
557 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:766
558 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:767
559 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:768
560 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:769
561 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:770
562 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:771
563 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:772
564 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:773
565 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:774
566 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:775
567 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:776
568 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:777
569 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:778
570 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:779
571 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:780
572 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:785
573 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:786
574 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:787
575 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:788
576 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:792
577 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:793
578 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:794
579 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:795
580 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:796
581 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:798
582 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:804
583 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:805
584 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:806
585 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:807
586 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:809
587 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:814
588 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:816
589 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:817
590 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:818
591 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:824
592 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:825
593 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:827
594 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:828
595 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:830
596 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:840
597 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:841
598 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:842
599 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:843
600 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:844
601 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:848
602 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:849
603 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:850
604 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:851
605 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:852
606 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:853
607 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:854
608 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:855
609 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:856
610 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:857
611 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:858
612 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:861
613 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:862
614 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:863
615 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:864
616 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:865
617 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:866
618 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:867
619 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:868
620 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:869
621 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:870
622 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:871
623 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:872
624 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:873
625 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:874
626 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:875
627 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:876
628 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:877
629 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:878
630 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:879
631 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:880
632 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:881
633 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:882
634 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:883
635 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:884
636 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:885
637 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:886
638 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:887
639 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:888
640 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:889
641 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:890
642 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:891
643 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:892
644 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:893
645 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:894
646 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:895
647 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:896
648 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:897
649 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:898
650 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:899
651 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:900
652 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:902
653 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:903
654 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:904
655 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:907
656 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:908
657 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:909
658 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:910
659 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:911
660 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:912
661 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:913
662 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:914
663 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:915
664 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:916
665 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:917
666 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:918
667 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:919
668 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:920
669 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:921
670 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:922
671 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:923
672 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:924
673 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:925
674 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:927
675 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:928
676 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:929
677 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:930
678 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:931
679 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:932
680 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:933
681 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:934
682 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:935
683 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:936
684 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:937
685 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:938
686 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:940
687 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:941
688 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:942
689 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:943
690 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:944
691 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:945
692 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:946
693 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:947
694 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:948
695 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:949
696 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:950
697 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:951
698 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:952
699 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:953
700 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:954
701 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:955
702 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:956
703 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:957
704 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:958
705 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:959
706 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:960
707 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:961
708 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:967
709 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:968
710 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:973
711 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:974
712 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:975
713 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:977
714 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:978
715 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:979
716 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:980
717 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:981
718 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:982
719 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:985
720 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:987
721 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:989
722 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:991
723 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:994
724 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1019
725 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1033
726 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1034
727 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1037
728 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1040
729 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1052
730 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1054
731 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1055
732 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1062
733 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1070
734 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1071
735 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1074
736 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1081
737 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1082
738 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1084
739 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1087
740 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1088
741 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1091
742 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1093
743 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1106
744 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1108
745 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1129
746 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1167
747 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1221
748 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1223
749 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1228

   + 1 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1
2 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:2
3 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:7
4 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:9
5 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:10
6 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:11
7 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:12
8 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:13
9 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:14
10 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:15
11 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:16
12 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:17
13 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:18
14 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:19
15 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:20
16 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:21
17 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:22
18 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:23
19 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:24
20 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:25
21 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:26
22 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:27
23 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:28
24 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:29
25 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:30
26 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:31
27 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:32
28 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:33
29 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:34
30 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:35
31 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:36
32 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:37
33 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:38
34 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:39
35 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:40
36 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:41
37 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:42
38 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:43
39 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:44
40 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:45
41 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:46
42 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:47
43 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:48
44 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:49
45 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:50
46 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:51
47 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:52
48 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:53
49 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:54
50 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:55
51 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:56
52 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:57
53 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:58
54 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:59
55 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:60
56 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:61
57 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:62
58 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:63
59 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:64
60 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:65
61 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:66
62 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:67
63 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:68
64 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:69
65 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:70
66 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:71
67 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:72
68 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:73
69 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:74
70 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:75
71 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:76
72 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:77
73 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:78
74 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:79
75 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:80
76 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:81
77 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:82
78 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:83
79 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:84
80 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:85
81 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:86
82 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:87
83 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:88
84 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:89
85 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:90
86 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:91
87 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:92
88 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:93
89 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:94
90 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:95
91 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:96
92 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:97
93 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:98
94 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:99
95 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:100
96 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:101
97 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:102
98 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:103
99 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:104
100 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:105
101 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:106
102 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:107
103 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:108
104 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:109
105 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:110
106 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:111
107 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:112
108 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:113
109 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:114
110 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:115
111 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:116
112 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:117
113 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:118
114 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:119
115 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:120
116 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:121
117 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:122
118 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:123
119 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:124
120 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:125
121 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:126
122 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:127
123 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:128
124 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:129
125 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:130
126 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:131
127 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:132
128 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:133
129 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:134
130 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:135
131 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:136
132 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:137
133 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:138
134 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:139
135 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:140
136 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:141
137 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:142
138 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:143
139 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:144
140 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:145
141 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:146
142 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:147
143 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:148
144 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:149
145 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:150
146 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:151
147 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:152
148 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:153
149 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:154
150 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:155
151 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:156
152 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:157
153 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:158
154 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:159
155 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:160
156 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:161
157 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:162
158 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:163
159 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:164
160 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:165
161 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:166
162 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:167
163 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:168
164 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:169
165 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:170
166 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:172
167 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:173
168 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:174
169 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:175
170 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:176
171 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:180
172 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:184
173 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:186
174 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:187
175 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:188
176 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:189
177 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:190
178 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:191
179 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:192
180 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:193
181 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:194
182 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:195
183 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:196
184 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:197
185 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:198
186 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:199
187 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:200
188 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:202
189 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:203
190 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:204
191 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:205
192 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:206
193 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:207
194 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:208
195 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:209
196 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:210
197 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:211
198 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:212
199 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:213
200 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:214
201 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:215
202 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:216
203 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:217
204 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:218
205 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:219
206 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:220
207 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:221
208 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:222
209 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:223
210 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:224
211 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:225
212 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:226
213 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:227
214 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:228
215 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:229
216 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:230
217 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:231
218 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:232
219 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:233
220 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:234
221 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:235
222 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:236
223 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:237
224 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:238
225 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:241
226 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:250
227 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:253
228 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:254
229 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:255
230 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:256
231 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:258
232 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:263
233 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:264
234 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:265
235 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:266
236 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:268
237 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:269
238 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:271
239 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:275
240 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:276
241 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:277
242 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:278
243 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:288
244 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:289
245 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:290
246 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:291
247 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:292
248 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:293
249 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:294
250 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:295
251 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:296
252 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:297
253 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:298
254 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:310
255 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:311
256 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:313
257 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:315
258 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:323
259 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:324
260 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:325
261 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:326
262 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:327
263 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:328
264 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:329
265 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:331
266 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:336
267 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:337
268 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:338
269 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:339
270 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:340
271 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:341
272 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:343
273 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:359
274 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:360
275 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:361
276 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:362
277 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:363
278 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:364
279 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:365
280 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:369
281 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:371
282 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:375
283 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:377
284 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:378
285 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:379
286 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:380
287 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:384
288 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:386
289 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:387
290 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:388
291 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:390
292 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:391
293 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:392
294 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:394
295 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:395
296 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:406
297 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:407
298 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:408
299 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:409
300 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:410
301 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:411
302 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:412
303 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:413
304 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:414
305 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:415
306 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:416
307 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:417
308 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:418
309 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:419
310 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:420
311 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:421
312 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:422
313 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:427
314 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:428
315 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:429
316 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:435
317 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:436
318 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:437
319 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:438
320 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:442
321 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:443
322 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:444
323 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:448
324 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:449
325 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:450
326 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:451
327 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:452
328 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:453
329 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:454
330 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:455
331 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:456
332 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:457
333 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:458
334 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:459
335 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:460
336 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:461
337 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:463
338 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:464
339 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:465
340 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:466
341 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:467
342 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:468
343 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:476
344 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:477
345 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:478
346 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:479
347 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:480
348 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:481
349 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:488
350 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:497
351 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:498
352 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:499
353 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:500
354 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:501
355 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:502
356 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:503
357 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:504
358 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:505
359 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:506
360 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:507
361 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:508
362 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:509
363 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:510
364 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:511
365 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:512
366 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:513
367 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:514
368 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:515
369 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:516
370 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:517
371 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:518
372 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:521
373 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:522
374 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:523
375 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:528
376 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:529
377 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:530
378 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:532
379 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:533
380 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:537
381 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:538
382 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:539
383 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:540
384 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:541
385 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:542
386 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:543
387 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:544
388 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:545
389 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:546
390 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:547
391 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:548
392 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:550
393 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:551
394 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:562
395 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:565
396 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:566
397 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:567
398 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:570
399 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:571
400 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:572
401 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:574
402 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:575
403 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:576
404 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:577
405 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:578
406 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:579
407 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:580
408 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:581
409 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:582
410 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:583
411 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:584
412 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:585
413 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:586
414 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:587
415 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:588
416 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:589
417 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:590
418 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:591
419 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:592
420 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:593
421 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:594
422 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:595
423 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:596
424 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:597
425 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:598
426 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:599
427 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:600
428 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:601
429 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:602
430 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:603
431 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:604
432 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:605
433 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:606
434 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:607
435 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:608
436 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:609
437 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:610
438 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:611
439 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:612
440 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:613
441 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:614
442 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:615
443 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:616
444 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:617
445 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:618
446 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:619
447 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:620
448 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:621
449 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:622
450 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:623
451 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:624
452 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:625
453 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:626
454 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:627
455 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:628
456 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:629
457 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:632
458 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:633
459 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:634
460 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:635
461 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:636
462 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:637
463 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:638
464 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:639
465 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:640
466 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:641
467 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:642
468 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:643
469 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:644
470 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:645
471 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:646
472 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:647
473 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:648
474 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:649
475 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:650
476 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:651
477 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:652
478 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:653
479 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:654
480 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:655
481 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:656
482 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:657
483 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:658
484 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:659
485 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:660
486 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:661
487 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:662
488 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:663
489 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:664
490 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:665
491 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:666
492 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:667
493 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:668
494 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:669
495 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:670
496 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:671
497 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:672
498 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:673
499 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:674
500 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:675
501 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:676
502 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:677
503 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:678
504 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:680
505 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:681
506 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:682
507 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:683
508 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:684
509 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:685
510 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:686
511 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:687
512 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:688
513 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:689
514 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:690
515 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:691
516 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:692
517 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:693
518 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:694
519 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:695
520 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:696
521 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:697
522 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:698
523 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:699
524 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:700
525 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:701
526 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:702
527 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:703
528 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:704
529 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:705
530 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:706
531 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:707
532 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:708
533 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:712
534 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:713
535 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:714
536 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:715
537 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:716
538 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:717
539 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:718
540 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:719
541 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:720
542 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:721
543 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:722
544 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:723
545 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:725
546 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:726
547 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:727
548 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:728
549 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:729
550 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:730
551 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:731
552 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:732
553 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:734
554 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:761
555 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:762
556 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:763
557 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:766
558 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:767
559 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:768
560 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:769
561 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:770
562 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:771
563 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:772
564 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:773
565 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:774
566 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:775
567 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:776
568 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:777
569 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:778
570 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:779
571 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:780
572 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:785
573 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:786
574 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:787
575 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:788
576 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:792
577 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:793
578 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:794
579 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:795
580 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:796
581 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:798
582 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:804
583 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:805
584 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:806
585 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:807
586 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:809
587 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:814
588 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:816
589 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:817
590 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:818
591 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:824
592 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:825
593 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:827
594 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:828
595 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:830
596 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:840
597 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:841
598 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:842
599 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:843
600 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:844
601 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:848
602 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:849
603 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:850
604 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:851
605 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:852
606 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:853
607 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:854
608 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:855
609 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:856
610 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:857
611 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:858
612 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:861
613 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:862
614 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:863
615 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:864
616 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:865
617 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:866
618 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:867
619 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:868
620 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:869
621 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:870
622 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:871
623 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:872
624 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:873
625 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:874
626 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:875
627 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:876
628 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:877
629 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:878
630 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:879
631 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:880
632 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:881
633 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:882
634 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:883
635 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:884
636 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:885
637 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:886
638 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:887
639 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:888
640 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:889
641 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:890
642 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:891
643 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:892
644 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:893
645 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:894
646 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:895
647 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:896
648 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:897
649 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:898
650 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:899
651 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:900
652 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:902
653 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:903
654 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:904
655 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:907
656 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:908
657 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:909
658 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:910
659 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:911
660 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:912
661 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:913
662 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:914
663 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:915
664 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:916
665 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:917
666 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:918
667 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:919
668 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:920
669 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:921
670 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:922
671 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:923
672 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:924
673 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:925
674 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:927
675 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:928
676 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:929
677 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:930
678 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:931
679 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:932
680 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:933
681 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:934
682 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:935
683 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:936
684 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:937
685 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:938
686 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:940
687 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:941
688 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:942
689 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:943
690 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:944
691 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:945
692 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:946
693 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:947
694 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:948
695 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:949
696 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:950
697 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:951
698 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:952
699 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:953
700 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:954
701 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:955
702 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:956
703 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:957
704 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:958
705 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:959
706 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:960
707 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:961
708 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:967
709 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:968
710 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:973
711 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:974
712 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:975
713 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:977
714 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:978
715 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:979
716 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:980
717 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:981
718 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:982
719 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:985
720 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:987
721 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:989
722 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:991
723 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:994
724 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1019
725 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1033
726 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1034
727 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1037
728 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1040
729 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1052
730 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1054
731 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1055
732 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1062
733 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1070
734 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1071
735 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1074
736 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1081
737 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1082
738 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1084
739 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1087
740 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1088
741 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1091
742 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1093
743 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1106
744 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1108
745 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1129
746 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1167
747 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1221
748 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1223
749 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1228
750 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1229

Modified: bzr:text-parents
   - gforge/www/include/Layout.class	svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1221
gforge/www/index.php	svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1221

   + gforge/ChangeLog	svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1221
gforge/common/include/database.php	svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1221
gforge/common/include/utils.php	svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1221
gforge/common/pm/ProjectCategory.class	svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1221
gforge/common/pm/ProjectGroup.class	svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1221
gforge/common/pm/ProjectGroupFactory.class	svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1221
gforge/common/pm/ProjectTask.class	svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1221
gforge/www/pm/add_task.php	svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1221
gforge/www/pm/admin/index.php	svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1221
gforge/www/pm/browse_task.php	svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1221
gforge/www/pm/detail_task.php	svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:184
gforge/www/pm/index.php	svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1221
gforge/www/pm/mod_task.php	svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1033
gforge/www/pm/reporting/index.php	svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:184
gforge/www/pm/task.php	svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1221


Modified: trunk/gforge_base/evolvisforge/gforge/ChangeLog
===================================================================
--- trunk/gforge_base/evolvisforge/gforge/ChangeLog	2010-02-25 15:04:45 UTC (rev 983)
+++ trunk/gforge_base/evolvisforge/gforge/ChangeLog	2010-02-25 15:04:49 UTC (rev 984)
@@ -1,3 +1,8 @@
+2002-12-23  Tim Perdue <tim at gforge.org>
+
+	* Committing first working version of new Task Manager.
+	Still needs more testing and coding.
+
 2002-12-14  Tim Perdue <tim at gforge.org>
 
 	* Complete rewrite of FRS using OO style and coding guidelines.

Modified: trunk/gforge_base/evolvisforge/gforge/common/include/database.php
===================================================================
--- trunk/gforge_base/evolvisforge/gforge/common/include/database.php	2010-02-25 15:04:45 UTC (rev 983)
+++ trunk/gforge_base/evolvisforge/gforge/common/include/database.php	2010-02-25 15:04:49 UTC (rev 984)
@@ -82,7 +82,7 @@
 
 	$GLOBALS['G_DEBUGQUERY'] .= $qstring .' |<font size="-2">'.$dbserver.'</font>'. "<P>\n";
 	$res = @pg_exec($dbserver,$qstring);
-//	echo "|*| ".db_error().$qstring;
+	//echo "<BR>|*| ".db_error().$qstring;
 	return $res;
 }
 

Modified: trunk/gforge_base/evolvisforge/gforge/common/include/utils.php
===================================================================
--- trunk/gforge_base/evolvisforge/gforge/common/include/utils.php	2010-02-25 15:04:45 UTC (rev 983)
+++ trunk/gforge_base/evolvisforge/gforge/common/include/utils.php	2010-02-25 15:04:49 UTC (rev 984)
@@ -227,7 +227,7 @@
  * @resturns An array
  *
  */
-function util_result_column_to_array($result, $col=0) {
+function &util_result_column_to_array($result, $col=0) {
 	/*
 		Takes a result set and turns the optional column into
 		an array
@@ -254,7 +254,7 @@
  * @deprecated
  *
  */
-function result_column_to_array($result, $col=0) {
+function &result_column_to_array($result, $col=0) {
 	/*
 		backwards compatibility
 	*/

Modified: trunk/gforge_base/evolvisforge/gforge/common/pm/ProjectCategory.class
===================================================================
--- trunk/gforge_base/evolvisforge/gforge/common/pm/ProjectCategory.class	2010-02-25 15:04:45 UTC (rev 983)
+++ trunk/gforge_base/evolvisforge/gforge/common/pm/ProjectCategory.class	2010-02-25 15:04:49 UTC (rev 984)
@@ -1,14 +1,21 @@
 <?php
 /**
- * ProjectCategory.class - Class to handle artifact categories
+ * GForge Project Management Facility
  *
- * SourceForge: Breaking Down the Barriers to Open Source Development
- * Copyright 1999-2001 (c) VA Linux Systems
- * http://sourceforge.net
+ * Copyright 2002 GForge, LLC
+ * http://gforge.org/
  *
  * @version   $Id$
- *
  */
+/*
+
+	Project/Task Manager
+	By Tim Perdue, Sourceforge, 11/99
+	Heavy rewrite by Tim Perdue April 2000
+
+	Total rewrite in OO and GForge coding guidelines 12/2002 by Tim Perdue
+*/
+
 require_once('common/include/Error.class');
 
 class ProjectCategory extends Error {
@@ -83,15 +90,14 @@
 			$this->setError('ProjectCategory: name and assignee are Required');
 			return false;
 		}
-//
-//	Fix perms
-//
-		if (!$this->ProjectGroup->userIsAdmin()) {
+
+		$perm =& $this->ProjectGroup->Group->getPermission (session_get_user());
+		if (!$perm || !$perm->isPMAdmin()) {
 			$this->setError('Permission Denied');
 			return false;
 		}
-		$sql="INSERT INTO project_category (group_project_id,category_name,auto_assign_to) 
-			VALUES ('".$this->ProjectGroup->getID()."','$name','$auto_assign_to')";
+		$sql="INSERT INTO project_category (group_project_id,category_name) 
+			VALUES ('".$this->ProjectGroup->getID()."','$name')";
 
 		$result=db_query($sql);
 
@@ -164,17 +170,18 @@
 	 *  @return true/false
 	 */
 	function update($name) {
-		if (!$this->ProjectGroup->userIsAdmin()) {
+		$perm =& $this->ProjectGroup->Group->getPermission (session_get_user());
+		if (!$perm || !$perm->isPMAdmin()) {
 			$this->setError('Permission Denied');
 			return false;
-		}   
-		if (!$name || !$assign_to) {
+		}
+		if (!$name) {
 			$this->setError('Missing Params');
 			return false;
 		}   
 		$sql="UPDATE project_category 
 			SET category_name='$name'
-			WHERE id='". $this->getID() ."' 
+			WHERE category_id='". $this->getID() ."' 
 			AND group_project_id='".$this->ProjectGroup->getID()."'";
 		$result=db_query($sql);
 		if ($result && db_affected_rows($result) > 0) {

Modified: trunk/gforge_base/evolvisforge/gforge/common/pm/ProjectGroup.class
===================================================================
--- trunk/gforge_base/evolvisforge/gforge/common/pm/ProjectGroup.class	2010-02-25 15:04:45 UTC (rev 983)
+++ trunk/gforge_base/evolvisforge/gforge/common/pm/ProjectGroup.class	2010-02-25 15:04:49 UTC (rev 984)
@@ -1,13 +1,22 @@
 <?php
 /**
- * GForge ProjectManager Facility
+ * GForge Project Management Facility
  *
  * Copyright 2002 GForge, LLC
  * http://gforge.org/
  *
  * @version   $Id$
  */
+/*
 
+	Project/Task Manager
+	By Tim Perdue, Sourceforge, 11/99
+	Heavy rewrite by Tim Perdue April 2000
+
+	Total rewrite in OO and GForge coding guidelines 12/2002 by Tim Perdue
+*/
+
+
 require_once('common/include/Error.class');
 
 class ProjectGroup extends Error {
@@ -25,6 +34,9 @@
 	 * @var	 object  $Group
 	 */
 	var $Group;
+	var $statuses;
+	var $categories;
+	var $technicians;
 
 	/**
 	 *  Constructor.
@@ -67,10 +79,6 @@
 				}
 			}
 		}
-		$this->view_types[]='ultimate';
-		$this->view_types[]='flat';
-		$this->view_types[]='nested';
-		$this->view_types[]='threaded';
 		return true;
 	}
 
@@ -116,13 +124,13 @@
 	}
 
 	/**
-	 *  fetchData() - re-fetch the data for this ProjectGroup from the database
+	 *  fetchData() - re-fetch the data for this ProjectGroup from the database.
 	 *
-	 *  @param  int	 The artifact type ID
+	 *  @param  int	 The project group ID.
 	 *  @return true/false
 	 */
 	function fetchData($group_project_id) {
-		$res=db_query("SELECT * FROM project_group_list_vw
+		$res=db_query("SELECT * FROM project_group_list
 			WHERE group_project_id='$group_project_id'
 			AND group_id='". $this->Group->getID() ."'");
 		if (!$res || db_numrows($res) < 1) {
@@ -135,43 +143,43 @@
 	}
 
 	/**
-	 *	getGroup() - get the Group object this ProjectGroup is associated with
+	 *	getGroup() - get the Group object this ProjectGroup is associated with.
 	 *
-	 *	@return the Group object
+	 *	@return the Group object.
 	 */
 	function &getGroup() {
 		return $this->Group;
 	}
 
 	/**
-	 *	getID() - get this GroupProjectID
+	 *	getID() - get this GroupProjectID.
 	 *
-	 *	@return the group_artifact_id #
+	 *	@return the group_project_id #.
 	 */
 	function getID() {
 		return $this->data_array['group_project_id'];
 	}
 
 	/**
-	 *	isPublic - Is this forum open to the general public.
+	 *	isPublic - Is this projectGroup open to the general public.
 	 *
-	 *	@return boolean	allow
+	 *	@return boolean	allow.
 	 */
 	function isPublic() {
 		return $this->data_array['is_public'];
 	}
 
 	/**
-	 *	getName - get the name of this forum.
+	 *	getName - get the name of this projectGroup.
 	 *
-	 *	@return string	The name of this forum.
+	 *	@return string	The name of this projectGroup.
 	 */
 	function getName() {
 		return $this->data_array['project_name'];
 	}
 
 	/**
-	 *	getSendAllPostsTo - an optional email address to send all forum posts to.
+	 *	getSendAllPostsTo - an optional email address to send all task updates to.
 	 *
 	 *	@return string	The email address.
 	 */
@@ -180,7 +188,7 @@
 	}
 
 	/**
-	 *	getDescription - the description of this forum.
+	 *	getDescription - the description of this ProjectGroup.
 	 *
 	 *	@return string	The description.
 	 */
@@ -192,11 +200,57 @@
 	 *	getMessageCount - the total number of messages in this forum.
 	 *
 	 *	@return int	The count.
-	 */
+	 * /
 	function getMessageCount() {
 		return $this->data_array['total'];
+	}*/
+
+	/**
+	 * getStatuses - Return result set of statuses.
+	 *
+	 * @returns Database result set.
+	 */
+	function getStatuses () {
+		if (!$this->statuses) {
+			$sql='SELECT * FROM project_status';
+			$this->statuses=db_query($sql);
+		}
+		return $this->statuses;
 	}
 
+	/**
+	 * getCategories - Return result set of categories.
+	 *
+	 * @returns Database result set.
+	 */
+	function getCategories () {
+		if (!$this->categories) {
+			$sql="SELECT category_id,category_name 
+				FROM project_category 
+				WHERE group_project_id='".$this->getID()."'";
+			$this->categories=db_query($sql);
+		}
+		return $this->categories;
+	}
+
+	/**
+	 * getTechnicians - Return a result set of pm technicians in this group.
+	 *
+	 * @returns Datbase result set.
+	 */
+	function getTechnicians () {
+		if (!$this->technicians) {
+			$sql="SELECT users.user_id,users.user_name 
+				FROM users,user_group 
+				WHERE users.user_id=user_group.user_id 
+				AND user_group.group_id='". $this->Group->getID() ."' 
+				AND user_group.project_flags IN (1,2) 
+				ORDER BY users.user_name";
+			$this->technicians=db_query($sql);
+		}
+		return $this->technicians;
+	}
+
 	function update($project_name,$description,$is_public=1,$send_all_posts_to='') {
 
 		if (strlen($project_name) < 3) {

Modified: trunk/gforge_base/evolvisforge/gforge/common/pm/ProjectGroupFactory.class
===================================================================
--- trunk/gforge_base/evolvisforge/gforge/common/pm/ProjectGroupFactory.class	2010-02-25 15:04:45 UTC (rev 983)
+++ trunk/gforge_base/evolvisforge/gforge/common/pm/ProjectGroupFactory.class	2010-02-25 15:04:49 UTC (rev 984)
@@ -1,15 +1,23 @@
 <?php
 /**
- * GForge Project Manager Facility
+ * GForge Project Management Facility
  *
  * Copyright 2002 GForge, LLC
  * http://gforge.org/
  *
  * @version   $Id$
  */
+/*
 
+	Project/Task Manager
+	By Tim Perdue, Sourceforge, 11/99
+	Heavy rewrite by Tim Perdue April 2000
+
+	Total rewrite in OO and GForge coding guidelines 12/2002 by Tim Perdue
+*/
+
 require_once('common/include/Error.class');
-require_once('common/forum/ProjectGroup.class');
+require_once('common/pm/ProjectGroup.class');
 
 class ProjectGroupFactory extends Error {
 

Modified: trunk/gforge_base/evolvisforge/gforge/common/pm/ProjectTask.class
===================================================================
--- trunk/gforge_base/evolvisforge/gforge/common/pm/ProjectTask.class	2010-02-25 15:04:45 UTC (rev 983)
+++ trunk/gforge_base/evolvisforge/gforge/common/pm/ProjectTask.class	2010-02-25 15:04:49 UTC (rev 984)
@@ -1,13 +1,22 @@
 <?php
 /**
- * GForge ProjectGroups Facility
+ * GForge Project Management Facility
  *
  * Copyright 2002 GForge, LLC
  * http://gforge.org/
  *
  * @version   $Id$
  */
+/*
 
+	Project/Task Manager
+	By Tim Perdue, Sourceforge, 11/99
+	Heavy rewrite by Tim Perdue April 2000
+
+	Total rewrite in OO and GForge coding guidelines 12/2002 by Tim Perdue
+*/
+
+
 require_once('common/include/Error.class');
 
 class ProjectTask extends Error {
@@ -27,6 +36,7 @@
 	var $ProjectGroup;
 	var $dependon;
 	var $assignedto;
+	var $relatedartifacts;
 
 	/**
 	 *  Constructor.
@@ -66,12 +76,12 @@
 		return true;
 	}
 
-//	duration - seconds (30 days * 80640, for example)
 //	start_date - unix time
+//	end_date - unix time
 //	hours	est number of hours
-	function create($summary,$details,$priority,$hours,$start_date,
-			$duration,$category_id,&$assigned_arr,&$depend_arr) {
-		if (!$summary || !$details || !$priority || !$hours || !$duration || !$category_id) {
+	function create($summary,$details,$priority,$hours,$start_date,$end_date,
+			$hours,$category_id,$percent_complete,&$assigned_arr,&$depend_arr) {
+		if (!$summary || !$details || !$priority || !$hours || !$start_date || !$end_date || !$category_id) {
 			$this->setError('Must include a summary, details, priority, hours, start date and end date.');
 			return false;
 		}
@@ -83,38 +93,42 @@
 			return false;
 		}
 
-		//
-		//	Inserting a generic task, which will then be "updated", forcing the constraint 
-		//	Triggers to check everything out
-		//
 		db_begin();
-		$sql="INSERT INTO project_task (group_project_id,created_by,summary,
-			details,start_date,end_date,status_id,category_id) 
-			VALUES ('". $this->ProjectGroup->getID() ."', '".user_getid()."', ' ',
-			' ','$start_date','$end_date','1','$category_id'";
-
-		$result=db_query($sql);
-		if (!$result || db_affected_rows($result) < 1) {
-			$this->setError('ProjectTask::create() Posting Failed '.db_error());
+		$res=db_query("SELECT nextval('project_task_pk_seq') AS id");
+		if (!$project_task_id=db_result($res,0,'id')) {
+			$this->setError('Could Not Get Next ID');
 			db_rollback();
 			return false;
 		} else {
-			$project_task_id=db_insertid($result,'project_task','project_task_id');
-			if (!$this->fetchData($project_task_id)) {
+			$this->data_array['project_task_id']=$project_task_id;
+
+			if (!$this->setDependentOn($depend_arr)) {
 				db_rollback();
 				return false;
-			}
-			if (!$project_task_id) {
+			} elseif (!$this->setAssignedTo($assigned_arr)) {
 				db_rollback();
-				$this->setError('ProjectTask::create() Unable to get new task_id');
 				return false;
 			} else {
-				if (!$this->update($summary,$details,$priority,$hours,$start_date,$end_date,
-					1,$category_id,$assigned_arr,$depend_arr)) {
+				$sql="INSERT INTO project_task (project_task_id,group_project_id,created_by,summary,
+					details,start_date,end_date,status_id,category_id,priority,percent_complete,hours) 
+					VALUES ('$project_task_id','". $this->ProjectGroup->getID() ."', '".user_getid()."', '". htmlspecialchars($summary) ."',
+					'". htmlspecialchars($details) ."','$start_date','$end_date','1','$category_id','$priority','$percent_complete','$hours')";
+
+				$result=db_query($sql);
+				if (!$result || db_affected_rows($result) < 1) {
+					$this->setError('ProjectTask::create() Posting Failed '.db_error());
+					db_rollback();
 					return false;
+				} else {
+					if (!$this->fetchData($project_task_id)) {
+						db_rollback();
+						return false;
+					} else {
+						$this->sendNotice(1);
+						db_commit();
+						return true;
+					}
 				}
-				db_commit();
-				return true;
 			}
 		}
 	}
@@ -171,7 +185,7 @@
 	 *	@return	string	The body/details.
 	 */
 	function getDetails() {
-		return $this->data_array['Details'];
+		return $this->data_array['details'];
 	}
 
 	/**
@@ -255,6 +269,78 @@
 		return $this->data_array['category_name'];
 	}
 
+	/**
+	 *	getRelatedArtifacts - Return a result set of artifacts which are related to this task.
+	 *
+	 *	@returns Database result set.
+	 */
+	function getRelatedArtifacts() {
+		if (!$this->relatedartifacts) {
+			$this->relatedartifacts=
+			db_query("SELECT agl.group_id,agl.name,agl.group_artifact_id,a.artifact_id,a.open_date,a.summary 
+			FROM artifact_group_list agl, artifact a 
+			WHERE a.group_artifact_id=agl.group_artifact_id
+			AND EXISTS (SELECT artifact_id FROM project_task_artifact 
+				WHERE artifact_id=a.artifact_id
+				AND project_task_id='". $this->getID() ."')");
+		}
+		return $this->relatedartifacts;
+	}
+
+	/**
+	 *	addRelatedArtifacts - take an array of artifact_id's and build relationships
+	 *
+	 *	@param	array	An array of artifact_id's to be attached to this task.
+	 *	@return	boolean	True/false.
+	 */
+	function addRelatedArtifacts($art_array) {
+		$perm =& $this->ProjectGroup->Group->getPermission( session_get_user() );
+
+		if (!$perm || !is_object($perm) || !$perm->isPMAdmin()) {
+			$this->setError('Permission Denied');
+			return false;
+		}
+//
+//	SHOULD REALLY INSTANTIATE THIS ARTIFACT OBJECT TO ENSURE PROPER SECURITY - FUTURE
+//
+//	new ArtifactFromID($id)
+//
+		for ($i=0; $i<count($art_array); $i++) {
+			$res=db_query("INSERT INTO project_task_artifact (project_task_id,artifact_id) 
+				VALUES ('".$this->getID()."','".$art_array[$i]."')");
+			if (!$res) {
+				$this->setError('Error inserting artifact relationship: '.db_error());
+				return false;
+			}
+		}
+		return true;
+	}
+
+	/**
+	 *	removeRelatedArtifacts - take an array of artifact_id's and delete relationships
+	 *
+	 *	@param	array	An array of artifact_id's to be removed from this task.
+	 *	@return	boolean	True/false.
+	 */
+	function removeRelatedArtifacts($art_array) {
+		$perm =& $this->ProjectGroup->Group->getPermission( session_get_user() );
+
+		if (!$perm || !is_object($perm) || !$perm->isPMAdmin()) {
+			$this->setError('Permission Denied');
+			return false;
+		}
+
+		for ($i=0; $i<count($art_array); $i++) {
+			$res=db_query("DELETE FROM project_task_artifact
+				WHERE project_task_id='".$this->getID()."'
+				AND artifact_id='".$art_array[$i]."')");
+			if (!$res) {
+				$this->setError('Error deleting artifact relationship: '.db_error());
+				return false;
+			}
+		}
+		return true;
+	}
 /*
 	function delete() {
 
@@ -271,15 +357,35 @@
 */
 
 	/**
-	 *  getHistory() - returns a result set of audit trail for this ProjectTask
+	 *	getOtherTasks - Return a result set of tasks in this subproject that do not equal
+	 *	the current task_id.
 	 *
-	 *  @return result set
+	 *	@returns Database result set.
 	 */
+	function getOtherTasks () {
+		//
+		//	May not yet have an ID, if we are creating a NEW task
+		//
+		if ($this->getID()) {
+			$addstr=" AND project_task_id <> '". $this->getID() ."' ";
+		}
+		$sql="SELECT project_task_id,summary 
+		FROM project_task 
+		WHERE group_project_id='". $this->ProjectGroup->getID() ."' 
+		$addstr ORDER BY project_task_id DESC";
+		return db_query($sql);
+	}
+
+	/**
+	 *  getHistory() - returns a result set of audit trail for this ProjectTask.
+	 *
+	 *  @return result set.
+	 */
 	function getHistory() {
-		$sql="SELECT * ".
-		"FROM project_history_user_vw ".
-		"WHERE project_task_id='". $this->getID() ."' ".
-		"ORDER BY entrydate DESC";
+		$sql="SELECT * 
+		FROM project_history_user_vw 
+		WHERE project_task_id='". $this->getID() ."' 
+		ORDER BY mod_date DESC";
 		return db_query($sql);
 	}
 
@@ -289,12 +395,18 @@
 	 *  @return database result set
 	 */
 	function getMessages() {
-		$sql="select * ".
-			"FROM project_message_user_vw ".
-			"WHERE project_task_id='". $this->getID() ."' ORDER BY postdate DESC";
+		$sql="select * 
+			FROM project_message_user_vw 
+			WHERE project_task_id='". $this->getID() ."' ORDER BY postdate DESC";
 		return db_query($sql);
 	}
 
+	/**
+	 * addMessage - Handle the addition of a followup message to this task.
+	 *
+	 * @param	   string  The message.
+	 * @returns true on success/false on error.
+	 */
 	function addMessage($message) {
 		$sql="INSERT INTO project_messages (project_task_id,body,posted_by,postdate) 
 			VALUES ('". $this->getID() ."','". htmlspecialchars($message) ."','".user_getid()."','". time() ."')";
@@ -310,14 +422,13 @@
 	/**
 	 * addHistory - Handle the insertion of history for these parameters.
 	 *
-	 * @param	   string  The field name
-	 * @param	   string  The old value
-	 * @returns true on success/false on error
-	 *
+	 * @param	   string  The field name.
+	 * @param	   string  The old value.
+	 * @returns true on success/false on error.
 	 */
 	function addHistory ($field_name,$old_value) {
-		$sql="insert into project_history(project_task_id,field_name,old_value,mod_by,date) ".
-			"VALUES ('". $this->getID() ."','$field_name','$old_value','".user_getid()."','".time()."')";
+		$sql="insert into project_history(project_task_id,field_name,old_value,mod_by,mod_date) 
+			VALUES ('". $this->getID() ."','$field_name','$old_value','".user_getid()."','".time()."')";
 		$result=db_query($sql);
 		if (!$result) {
 			$this->setError('ERROR IN AUDIT TRAIL - '.db_error());
@@ -328,13 +439,13 @@
 	}
 
 
-	function setDependantOn(&$arr) {
+	function setDependentOn(&$arr) {
 //
 //	IMPORTANT - MUST VERIFY NO CIRCULAR DEPENDENCY!! 
 //	Simplest way is to ensure this start_date, is >= dependent_on end_date
 //
 		//get existing dependencies to diff against
-		$arr2 =& $this->getDependantOn();
+		$arr2 =& $this->getDependentOn();
 		$this->dependon =& $arr2;
 
 		if (count($arr) || count($arr2)) {
@@ -367,7 +478,10 @@
 	 *
 	 *
 	 */
-	function &getDependantOn() {
+	function &getDependentOn() {
+		if (!$this->getID()) {
+			return array();
+		}
 		if (!$this->dependon) {
 			$this->dependon =& util_result_column_to_array(db_query("SELECT is_dependent_on_task_id 
 				FROM project_dependencies 
@@ -411,6 +525,9 @@
 	 *
 	 */
 	function &getAssignedTo() {
+		if (!$this->getID()) {
+			return array();
+		}
 		if (!$this->assignedto) {
 			$this->assignedto =& util_result_column_to_array(db_query("SELECT assigned_to_id 
 				FROM project_assigned_to 
@@ -420,8 +537,8 @@
 	}
 
 	function update($summary,$details,$priority,$hours,$start_date,$end_date,
-		$status_id,$category_id,&$assigned_arr,&$depend_arr,$message) {
-		if (!$summary || !$details || !$priority || !$hours || !$start_date || !$end_date 
+		$status_id,$category_id,$percent_complete,&$assigned_arr,&$depend_arr) {
+		if (!$summary || !$priority || !$hours || !$start_date || !$end_date 
 			|| !$status_id || !$category_id) {
 			$this->setError('Must include a summary, details, priority, hours, start date, end date, status and category.');
 			return false;
@@ -433,14 +550,10 @@
 			$this->setError('Permission Denied');
 			return false;
 		}
-//
-//
-//
-//	mktime($start_hour,$start_minute,0,$start_month,$start_day,$start_year)
-//	mktime($end_hour,$end_minute,0,$end_month,$end_day,$end_year)
+
 		db_begin();
-		if ($message) {
-			if (!$this->addMessage($message)) {
+		if ($details) {
+			if (!$this->addMessage($details)) {
 				db_rollback();
 				return false;
 			}
@@ -448,6 +561,9 @@
 		if ($this->getStatusID() != $status_id)
 			{ $this->addHistory ('status_id',$this->getStatusID());  }
 
+		if ($this->getCategoryID() != $category_id)
+			{ $this->addHistory ('category_id',$this->getCategoryID());  }
+
 		if ($this->getPriority() != $priority)
 			{ $this->addHistory ('priority',$this->getPriority());  }
 
@@ -466,7 +582,7 @@
 		if ($this->getEndDate() != $end_date)
 			{ $this->addHistory ('end_date',$this->getEndDate());  }
 
-		if (!$this->setDependantOn($depend_arr)) {
+		if (!$this->setDependentOn($depend_arr)) {
 			return false;
 		} elseif (!$this->setAssignedTo($assigned_arr)) {
 			return false;
@@ -474,12 +590,12 @@
 
 			$sql="UPDATE project_task SET
 				summary='".htmlspecialchars($summary)."',
-				details='".htmlspecialchars($details)."',
 				priority='$priority',
 				hours='$hours',
 				start_date='$start_date',
 				end_date='$end_date',
 				status_id='$status_id',
+				percent_complete='$percent_complete',
 				category_id='$category_id'
 				WHERE group_project_id='".$this->ProjectGroup->getID()."'
 				AND project_task_id='".$this->getID()."'";
@@ -490,8 +606,8 @@
 				db_rollback();
 				return false;
 			} else {
-				if (!$this->fetchData($this->getID()) {
-
+				if (!$this->fetchData($this->getID())) {
+					return false;
 				} else {
 					$this->sendNotice();
 					db_commit();
@@ -502,7 +618,7 @@
 
 	}
 
-	function sendNotice() {
+	function sendNotice($first=false) {
 		$ids =& $this->getAssignedTo();
 
 		//
@@ -512,38 +628,38 @@
 			return true;
 		}
 
-        $body = "Task #". $this->getID() ." has been updated. ".
-            "\n\nProject: ". $this->ProjectGroup->Group->getPublicName() .
-            "\nSubproject: ". $this->ProjectGroup->getName() .
-            "\nSummary: ".util_unconvert_htmlspecialchars( $this->getSummary() ).
-            "\nComplete: ". $this->getPercentComplete() ."%".
-            "\nStatus: ". $this->getStatusName() .
-            "\n\nDescription: ". util_unconvert_htmlspecialchars( $this->getDetails() );
+		$body = "Task #". $this->getID() ." has been updated. ".
+			"\n\nProject: ". $this->ProjectGroup->Group->getPublicName() .
+			"\nSubproject: ". $this->ProjectGroup->getName() .
+			"\nSummary: ".util_unconvert_htmlspecialchars( $this->getSummary() ).
+			"\nComplete: ". $this->getPercentComplete() ."%".
+			"\nStatus: ". $this->getStatusName() .
+			"\n\nDescription: ". util_unconvert_htmlspecialchars( $this->getDetails() );
 
-        /*
-            Now get the followups to this task
-        */
-        $result2=$this->getMessages();
+		/*
+			Now get the followups to this task
+		*/
+		$result2=$this->getMessages();
 
-        $rows=db_numrows($result2);
+		$rows=db_numrows($result2);
 
-        if ($result2 && $rows > 0) {
-            $body .= "\n\nFollow-Ups:";
-            for ($i=0; $i<$rows;$i++) {
-                $body .= "\n\n-------------------------------------------------------";
-                $body .= "\nDate: ". date($GLOBALS['sys_datefmt'],db_result($result2,$i,'postdate'));
-                $body .= "\nBy: ".db_result($result2,$i,'user_name');
-                $body .= "\n\nComment:\n".util_unconvert_htmlspecialchars(db_result($result2,$i,'body'));
-            }
-        }
-        $body .= "\n\n-------------------------------------------------------".
-            "\nFor more info, visit:".
-            "\n\nhttp://$GLOBALS[sys_default_domain]/pm/task.php?func=detailtask&project_task_id=".
-                $this->getID(); ."&group_id=".
-                $this->ProjectGroup->Group->getID() ."&group_project_id=". $this->ProjectGroup->getID();
+		if ($result2 && $rows > 0) {
+			$body .= "\n\nFollow-Ups:";
+			for ($i=0; $i<$rows;$i++) {
+				$body .= "\n\n-------------------------------------------------------";
+				$body .= "\nDate: ". date($GLOBALS['sys_datefmt'],db_result($result2,$i,'postdate'));
+				$body .= "\nBy: ".db_result($result2,$i,'user_name');
+				$body .= "\n\nComment:\n".util_unconvert_htmlspecialchars(db_result($result2,$i,'body'));
+			}
+		}
+		$body .= "\n\n-------------------------------------------------------".
+			"\nFor more info, visit:".
+			"\n\nhttp://$GLOBALS[sys_default_domain]/pm/task.php?func=detailtask&project_task_id=".
+				$this->getID() ."&group_id=".
+				$this->ProjectGroup->Group->getID() ."&group_project_id=". $this->ProjectGroup->getID();
 
-        $subject="[Task #". $this->getID() .'] '.
-            util_unconvert_htmlspecialchars( $this->getID() );
+		$subject="[Task #". $this->getID() .'] '.
+			util_unconvert_htmlspecialchars( $this->getID() );
 
 		util_handle_message(array_unique($ids),$subject,$body,$this->ProjectGroup->getSendAllPostsTo());
 		return true;

Added: trunk/gforge_base/evolvisforge/gforge/common/tracker/ArtifactFromID.class
===================================================================
--- trunk/gforge_base/evolvisforge/gforge/common/tracker/ArtifactFromID.class	                        (rev 0)
+++ trunk/gforge_base/evolvisforge/gforge/common/tracker/ArtifactFromID.class	2010-02-25 15:04:49 UTC (rev 984)
@@ -0,0 +1,62 @@
+<?php
+/**
+ * GForge Tracker Facility
+ *
+ * Copyright 2002 GForge, LLC
+ * http://gforge.org/
+ *
+ * @version   $Id$
+ */
+
+require_once ('common/include/Error.class');
+
+class ArtifactFromID extends Error {
+
+//artifact_vw
+
+	var $Group;
+	var $ArtifactType;
+	var $Artifact;
+
+	function ArtifactFromID($id) {
+		$res=db_query("SELECT * FROM artifact_vw WHERE artifact_id='$id'");
+		if (!$res || db_numrows($res) < 1) {
+			$this->setError("Invalid Artifact ID");
+			return false;
+		} else {
+			$art_arr =& db_fetch_array($res);
+
+			$res=db_query("SELECT * FROM artifact_group_list
+            WHERE group_artifact_id='$art_arr['group_artifact_id']'");
+
+			$typ_arr =& db_fetch_array($res);
+
+			$g =& group_get_object($typ_arr['group_id']);
+			$this->Group =& $g;
+
+			$at = new ArtifactType($g,$art_arr['group_artifact_id'],$typ_arr);
+			if (!$at || !is_object($at)) {
+				$this->setError("Could Not Create ArtifactType");
+				return false;
+			} elseif ($at->isError()) {
+				$this->setError($at->getErrorMessage());
+				return false;
+			}
+			$this->ArtifactType =& $at;
+
+			$a = new Artifact($at,$id,$art_arr);
+			if (!$a || !is_object($a)) {
+				$this->setError("Could Not Create Artifact");
+				return false;
+			} elseif ($a->isError()) {
+				$this->setError($a->getErrorMessage());
+				return false;
+			}
+			$this->Artifact =& $a;
+		}
+		return true;
+	}
+
+}
+
+?>

Added: trunk/gforge_base/evolvisforge/gforge/db/20021223.sql
===================================================================
--- trunk/gforge_base/evolvisforge/gforge/db/20021223.sql	                        (rev 0)
+++ trunk/gforge_base/evolvisforge/gforge/db/20021223.sql	2010-02-25 15:04:49 UTC (rev 984)
@@ -0,0 +1,243 @@
+--
+-- rename old "date" fields to be SQL compliant
+--
+alter table project_history rename column date to mod_date;
+
+--
+--	Change project_task to delete on removal of project
+--
+ALTER TABLE project_task DROP CONSTRAINT "project_task_group_project_id_f" RESTRICT;
+
+ALTER TABLE project_task 
+	ADD CONSTRAINT projecttask_groupprojectid_fk 
+	REFERENCES project_group_list(group_project_id) ON DELETE CASCADE;
+
+--
+--	Add email address to send all task updates to
+--
+ALTER TABLE project_group_list ADD COLUMN send_all_posts_to text;
+
+--
+--	Add category_id
+--
+ALTER TABLE project_task ADD COLUMN category_id int REFERENCES project_category(category_id);
+UPDATE project_task SET category_id=100;
+
+--
+--	Convenience view required for ProjectTask object
+--
+CREATE VIEW project_task_vw AS 
+SELECT project_task.*,project_category.category_name,project_status.status_name 
+FROM project_task 
+FULL JOIN project_category ON (project_category.category_id=project_task.category_id) 
+NATURAL JOIN project_status;
+
+--
+--	Each task can be assigned a category
+--
+DROP TABLE project_category;
+DROP SEQUENCE project_categor_category_id_seq;
+CREATE TABLE project_category (
+category_id serial,
+group_project_id int 
+	CONSTRAINT projcat_projgroupid_fk REFERENCES project_group_list(group_project_id) ON DELETE CASCADE,
+category_name text);
+CREATE INDEX projectcategory_groupprojectid ON project_category(group_project_id);
+INSERT INTO project_category VALUES ('100','1','None');
+SELECT SETVAL('project_categor_category_id_seq',100);
+
+--
+--	Each task can have multiple artifacts associated with it
+--
+DROP TABLE project_task_artifact;
+CREATE TABLE project_task_artifact (
+project_task_id int 
+	CONSTRAINT projtaskartifact_projtaskid_fk REFERENCES project_task(project_task_id) ON DELETE CASCADE,
+artifact_id int 
+	CONSTRAINT projtaskartifact_artifactid_fk REFERENCES artifact(artifact_id) ON DELETE CASCADE);
+CREATE INDEX projecttaskartifact_projecttaskid ON project_task_artifact (project_task_id);
+CREATE INDEX projecttaskartifact_artifactid ON project_task_artifact (artifact_id);
+
+--
+--	Relation to forums dedicated to this project
+--
+DROP TABLE project_group_forum;
+CREATE TABLE project_group_forum (
+group_project_id int 
+	CONSTRAINT projgroupforum_projgroupid_fk REFERENCES project_group_list(group_project_id) ON DELETE CASCADE,
+group_forum_id int 
+	CONSTRAINT projgroupforum_groupforumid_fk REFERENCES forum_group_list(group_forum_id) ON DELETE CASCADE);
+CREATE INDEX projectgroupforum_groupprojectid ON project_group_forum(group_project_id);
+CREATE INDEX projectgroupforum_groupforumid ON project_group_forum(group_forum_id);
+
+--
+--	Relation to a category of docs for this project
+--
+DROP TABLE project_group_doccat;
+CREATE TABLE project_group_doccat (
+group_project_id int 
+	CONSTRAINT projgroupdoccat_projgroupid_fk REFERENCES project_group_list(group_project_id) ON DELETE CASCADE,
+doc_group_id int 
+	CONSTRAINT projgroupdoccat_docgroupid_fk REFERENCES doc_groups(doc_group) ON DELETE CASCADE);
+CREATE INDEX projectgroupdoccat_groupprojectid ON project_group_forum(group_project_id);
+CREATE INDEX projectgroupdoccat_groupgroupid ON project_group_doccat(doc_group_id);
+
+--
+--
+--
+DROP VIEW project_depend_vw;
+CREATE VIEW project_depend_vw AS 
+	SELECT pt.project_task_id,pd.is_dependent_on_task_id,pt.end_date,pt.start_date
+	FROM project_task pt NATURAL JOIN project_dependencies pd;
+
+DROP VIEW project_dependon_vw;
+CREATE VIEW project_dependon_vw AS 
+	SELECT pd.project_task_id,pd.is_dependent_on_task_id,pt.end_date,pt.start_date
+	FROM project_task pt FULL JOIN project_dependencies pd ON (pd.is_dependent_on_task_id=pt.project_task_id);
+
+DROP VIEW project_history_user_vw;
+CREATE VIEW project_history_user_vw AS
+	SELECT users.realname,users.email,users.user_name,project_history.* 
+	FROM users,project_history 
+	WHERE project_history.mod_by=users.user_id;
+
+DROP VIEW project_message_user_vw;
+CREATE VIEW project_message_user_vw AS
+	SELECT users.realname,users.email,users.user_name,project_messages.*
+	FROM users,project_messages
+	WHERE project_messages.posted_by=users.user_id;
+--
+--	Move project messages into separate table from project_history
+--
+CREATE TABLE project_messages (
+project_message_id SERIAL,
+project_task_id INT NOT NULL REFERENCES project_task(project_task_id) ON DELETE CASCADE,
+body text,
+posted_by INT NOT NULL REFERENCES users(user_id),
+postdate int NOT NULL);
+
+BEGIN;
+INSERT INTO project_messages (project_task_id,body,posted_by,postdate) 
+	SELECT project_task_id,old_value,mod_by,date 
+	FROM project_history
+	WHERE field_name='details';
+
+DELETE FROM project_history WHERE field_name='details';
+
+COMMIT;
+
+--
+--	Remove all existing dependencies, as they may be problematic.
+--
+DELETE FROM project_dependencies;
+
+--
+--	Function to enforce dependencies in the table structure
+--
+
+CREATE OR REPLACE FUNCTION projtask_update_depend () RETURNS OPAQUE AS '
+DECLARE
+	dependent RECORD;
+	dependon RECORD;
+	delta	INTEGER;
+BEGIN
+	--
+	--  See if tasks that are dependent on us are OK
+	--  See if the end date has changed
+	--
+	IF NEW.end_date > OLD.end_date THEN
+		--
+		--  If the end date pushed back, push back dependent tasks
+		--
+		FOR dependent IN SELECT * FROM project_depend_vw WHERE is_dependent_on_task_id=NEW.project_task_id LOOP
+			--
+			--  Some dependent tasks may not start immediately
+			--
+			IF dependent.start_date > OLD.end_date THEN
+				IF dependent.start_date < NEW.end_date THEN
+					delta := NEW.end_date-dependent.start_date;
+					UPDATE project_task
+						SET start_date=start_date+delta,
+						end_date=end_date+delta
+						WHERE project_task_id=dependent.project_task_id;
+				END IF;
+			ELSE
+				IF dependent.start_date = OLD.end_date THEN
+					delta := NEW.end_date-OLD.end_date;
+					UPDATE project_task
+						SET start_date=start_date+delta,
+						end_date=end_date+delta
+						WHERE project_task_id=dependent.project_task_id;
+				END IF;
+			END IF;
+		END LOOP;
+	ELSIF NEW.end_date < OLD.end_date THEN
+			--
+			--	If the end date moved up, move up dependent tasks
+			--
+			FOR dependent IN SELECT * FROM project_depend_vw WHERE is_dependent_on_task_id=NEW.project_task_id LOOP
+				IF dependent.start_date = OLD.end_date THEN
+					--
+					--  dependent task was constrained by us - bring it forward
+					--
+					delta := OLD.end_date-NEW.end_date;
+					UPDATE project_task
+						SET start_date=start_date-delta,
+						end_date=end_date-delta
+						WHERE project_task_id=dependent.project_task_id;
+				END IF;
+			END LOOP;
+	END IF;
+--
+--	MAY WISH TO INSERT AUDIT TRAIL HERE FOR CHANGED begin/end DATES
+--
+	RETURN NEW;
+END;
+' LANGUAGE 'plpgsql';
+
+
+DROP TRIGGER projtask_update_depend_trig ON project_task;
+CREATE TRIGGER projtask_update_depend_trig AFTER UPDATE ON project_task
+	FOR EACH ROW EXECUTE PROCEDURE projtask_update_depend();
+
+
+--
+--	  Function to enforce dependencies in the table structure
+--
+CREATE OR REPLACE FUNCTION projtask_insert_depend () RETURNS OPAQUE AS '
+DECLARE
+	dependon RECORD;
+	delta INTEGER;
+BEGIN
+	--
+	--  ENFORCE START/END DATE logic
+	--
+	IF NEW.start_date >= NEW.end_date THEN
+		RAISE EXCEPTION ''START DATE CANNOT BE AFTER END DATE'';
+	END IF;
+	--
+	--	  First make sure we start on or after end_date of tasks
+	--	  that we depend on
+	--
+	FOR dependon IN SELECT * FROM project_dependon_vw
+				WHERE project_task_id=NEW.project_task_id LOOP
+		--
+		--	  See if the task we are dependon on
+		--	  ends after we are supposed to start
+		--
+		IF dependon.end_date > NEW.start_date THEN
+			delta := dependon.end_date-NEW.start_date;
+			RAISE NOTICE ''Bumping Back: % Delta: % '',NEW.project_task_id,delta;
+			NEW.start_date := NEW.start_date+delta;
+			NEW.end_date := NEW.end_date+delta;
+		END IF;
+
+	END LOOP;
+	RETURN NEW;
+END;
+' LANGUAGE 'plpgsql';
+
+DROP TRIGGER projtask_insert_depend_trig ON project_task;
+CREATE TRIGGER projtask_insert_depend_trig BEFORE INSERT OR UPDATE ON project_task
+	FOR EACH ROW EXECUTE PROCEDURE projtask_insert_depend();
+

Deleted: trunk/gforge_base/evolvisforge/gforge/db/projman-rewrite.sql
===================================================================
--- trunk/gforge_base/evolvisforge/gforge/db/projman-rewrite.sql	2010-02-25 15:04:45 UTC (rev 983)
+++ trunk/gforge_base/evolvisforge/gforge/db/projman-rewrite.sql	2010-02-25 15:04:49 UTC (rev 984)
@@ -1,206 +0,0 @@
---
---	Change project_task to delete on removal of project
---
-ALTER TABLE project_task DROP CONSTRAINT "project_task_group_project_id_f" RESTRICT;
-
-ALTER TABLE project_task 
-	ADD CONSTRAINT projecttask_groupprojectid_fk 
-	REFERENCES project_group_list(group_project_id) ON DELETE CASCADE;
-
---
---	Add email address to send all task updates to
---
-ALTER TABLE project_group_list ADD COLUMN send_all_posts_to text;
-
---
---	Add category_id
---
-ALTER TABLE project_task ADD COLUMN category_id int REFERENCES project_category(category_id);
-
---
---	Convenience view required for ProjectTask object
---
-CREATE VIEW project_task_vw AS 
-SELECT project_task.*,project_category.category_name,project_status.status_name 
-FROM project_task 
-FULL JOIN project_category ON (project_category.category_id=project_task.category_id) 
-NATURAL JOIN project_status;
-
---
---	Each task can be assigned a category
---
-DROP TABLE project_category;
-DROP SEQUENCE project_categor_category_id_seq;
-CREATE TABLE project_category (
-category_id serial,
-group_project_id int 
-	CONSTRAINT projcat_projgroupid_fk REFERENCES project_group_list(group_project_id) ON DELETE CASCADE,
-category_name text);
-CREATE INDEX projectcategory_groupprojectid ON project_category(group_project_id);
-INSERT INTO project_category VALUES ('100','1','None');
-SELECT SETVAL('project_categor_category_id_seq',100);
-
---
---	Each task can have multiple artifacts associated with it
---
-DROP TABLE project_task_artifact;
-CREATE TABLE project_task_artifact (
-project_task_id int 
-	CONSTRAINT projtaskartifact_projtaskid_fk REFERENCES project_task(project_task_id) ON DELETE CASCADE,
-artifact_id int 
-	CONSTRAINT projtaskartifact_artifactid_fk REFERENCES artifact(artifact_id) ON DELETE CASCADE);
-CREATE INDEX projecttaskartifact_projecttaskid ON project_task_artifact (project_task_id);
-CREATE INDEX projecttaskartifact_artifactid ON project_task_artifact (artifact_id);
-
---
---	Relation to forums dedicated to this project
---
-DROP TABLE project_group_forum;
-CREATE TABLE project_group_forum (
-group_project_id int 
-	CONSTRAINT projgroupforum_projgroupid_fk REFERENCES project_group_list(group_project_id) ON DELETE CASCADE,
-group_forum_id int 
-	CONSTRAINT projgroupforum_groupforumid_fk REFERENCES forum_group_list(group_forum_id) ON DELETE CASCADE);
-CREATE INDEX projectgroupforum_groupprojectid ON project_group_forum(group_project_id);
-CREATE INDEX projectgroupforum_groupforumid ON project_group_forum(group_forum_id);
-
---
---	Relation to a category of docs for this project
---
-DROP TABLE project_group_doccat;
-CREATE TABLE project_group_doccat (
-group_project_id int 
-	CONSTRAINT projgroupdoccat_projgroupid_fk REFERENCES project_group_list(group_project_id) ON DELETE CASCADE,
-doc_group_id int 
-	CONSTRAINT projgroupdoccat_docgroupid_fk REFERENCES doc_groups(doc_group) ON DELETE CASCADE);
-CREATE INDEX projectgroupdoccat_groupprojectid ON project_group_forum(group_project_id);
-CREATE INDEX projectgroupdoccat_groupgroupid ON project_group_doccat(doc_group_id);
-
---
---
---
-DROP VIEW project_depend_vw;
-CREATE VIEW project_depend_vw AS 
-	SELECT pt.project_task_id,pd.is_dependent_on_task_id,pt.end_date,pt.start_date
-	FROM project_task pt NATURAL JOIN project_dependencies pd;
-
-DROP VIEW project_dependon_vw;
-CREATE VIEW project_dependon_vw AS 
-	SELECT pd.project_task_id,pd.is_dependent_on_task_id,pt.end_date,pt.start_date
-	FROM project_task pt FULL JOIN project_dependencies pd ON (pd.is_dependent_on_task_id=pt.project_task_id);
-
---
---	Remove all existing dependencies, as they may be problematic.
---
-DELETE FROM project_dependencies;
-
---
---	Function to enforce dependencies in the table structure
---
-
-CREATE OR REPLACE FUNCTION projtask_update_depend () RETURNS OPAQUE AS '
-DECLARE
-	dependent RECORD;
-	dependon RECORD;
-	delta	INTEGER;
-BEGIN
-	--
-	--  See if tasks that are dependent on us are OK
-	--  See if the end date has changed
-	--
-	IF NEW.end_date > OLD.end_date THEN
-		--
-		--  If the end date pushed back, push back dependent tasks
-		--
-		FOR dependent IN SELECT * FROM project_depend_vw WHERE is_dependent_on_task_id=NEW.project_task_id LOOP
-			--
-			--  Some dependent tasks may not start immediately
-			--
-			IF dependent.start_date > OLD.end_date THEN
-				IF dependent.start_date < NEW.end_date THEN
-					delta := NEW.end_date-dependent.start_date;
-					UPDATE project_task
-						SET start_date=start_date+delta,
-						end_date=end_date+delta
-						WHERE project_task_id=dependent.project_task_id;
-				END IF;
-			ELSE
-				IF dependent.start_date = OLD.end_date THEN
-					delta := NEW.end_date-OLD.end_date;
-					UPDATE project_task
-						SET start_date=start_date+delta,
-						end_date=end_date+delta
-						WHERE project_task_id=dependent.project_task_id;
-				END IF;
-			END IF;
-		END LOOP;
-	ELSIF NEW.end_date < OLD.end_date THEN
-			--
-			--	If the end date moved up, move up dependent tasks
-			--
-			FOR dependent IN SELECT * FROM project_depend_vw WHERE is_dependent_on_task_id=NEW.project_task_id LOOP
-				IF dependent.start_date = OLD.end_date THEN
-					--
-					--  dependent task was constrained by us - bring it forward
-					--
-					delta := OLD.end_date-NEW.end_date;
-					UPDATE project_task
-						SET start_date=start_date-delta,
-						end_date=end_date-delta
-						WHERE project_task_id=dependent.project_task_id;
-				END IF;
-			END LOOP;
-	END IF;
---
---	MAY WISH TO INSERT AUDIT TRAIL HERE FOR CHANGED begin/end DATES
---
-	RETURN NEW;
-END;
-' LANGUAGE 'plpgsql';
-
-
-DROP TRIGGER projtask_update_depend_trig ON project_task;
-CREATE TRIGGER projtask_update_depend_trig AFTER UPDATE ON project_task
-	FOR EACH ROW EXECUTE PROCEDURE projtask_update_depend();
-
-
---
---	  Function to enforce dependencies in the table structure
---
-CREATE OR REPLACE FUNCTION projtask_insert_depend () RETURNS OPAQUE AS '
-DECLARE
-	dependon RECORD;
-	delta INTEGER;
-BEGIN
-	--
-	--  ENFORCE START/END DATE logic
-	--
-	IF NEW.start_date >= NEW.end_date THEN
-		RAISE EXCEPTION ''START DATE CANNOT BE AFTER END DATE'';
-	END IF;
-	--
-	--	  First make sure we start on or after end_date of tasks
-	--	  that we depend on
-	--
-	FOR dependon IN SELECT * FROM project_dependon_vw
-				WHERE project_task_id=NEW.project_task_id LOOP
-		--
-		--	  See if the task we are dependon on
-		--	  ends after we are supposed to start
-		--
-		IF dependon.end_date > NEW.start_date THEN
-			delta := dependon.end_date-NEW.start_date;
-			RAISE NOTICE ''Bumping Back: % Delta: % '',NEW.project_task_id,delta;
-			NEW.start_date := NEW.start_date+delta;
-			NEW.end_date := NEW.end_date+delta;
-		END IF;
-
-	END LOOP;
-	RETURN NEW;
-END;
-' LANGUAGE 'plpgsql';
-
-DROP TRIGGER projtask_insert_depend_trig ON project_task;
-CREATE TRIGGER projtask_insert_depend_trig BEFORE INSERT OR UPDATE ON project_task
-	FOR EACH ROW EXECUTE PROCEDURE projtask_insert_depend();
-

Modified: trunk/gforge_base/evolvisforge/gforge/www/pm/add_task.php
===================================================================
--- trunk/gforge_base/evolvisforge/gforge/www/pm/add_task.php	2010-02-25 15:04:45 UTC (rev 983)
+++ trunk/gforge_base/evolvisforge/gforge/www/pm/add_task.php	2010-02-25 15:04:49 UTC (rev 984)
@@ -1,106 +1,126 @@
 <?php
 /**
-  *
-  * SourceForge Project/Task Manager (PM)
-  *
-  * SourceForge: Breaking Down the Barriers to Open Source Development
-  * Copyright 1999-2001 (c) VA Linux Systems
-  * http://sourceforge.net
-  *
-  * @version   $Id$
-  *
-  */
+ * GForge Project Management Facility
+ *
+ * Copyright 2002 GForge, LLC
+ * http://gforge.org/
+ *
+ * @version   $Id$
+ */
+/*
 
+	Project/Task Manager
+	By Tim Perdue, Sourceforge, 11/99
+	Heavy rewrite by Tim Perdue April 2000
+
+	Total rewrite in OO and GForge coding guidelines 12/2002 by Tim Perdue
+*/
+
 pm_header(array('title'=>'Add a New Task','pagename'=>'pm_addtask','group_project_id'=>$group_project_id));
 
 ?>
 
-<FORM ACTION="<?php echo $PHP_SELF; ?>" METHOD="POST">
-<INPUT TYPE="HIDDEN" NAME="func" VALUE="postaddtask">
-<INPUT TYPE="HIDDEN" NAME="group_id" VALUE="<?php echo $group_id; ?>">
-<INPUT TYPE="HIDDEN" NAME="group_project_id" VALUE="<?php echo $group_project_id; ?>">
+<form action="<?php echo "$PHP_SELF?group_id=$group_id&group_project_id=$group_project_id"; ?>" method="post">
+<input type="hidden" name="func" value="postaddtask">
+<input type="hidden" name="add_artifact_id[]" value="<?php echo $related_artifact_id; ?>">
 
-<TABLE BORDER="0" WIDTH="100%">
-	<TR>
-		<TD>
-			<B>Percent Complete:</B>
-			<BR>
-			<?php echo pm_show_percent_complete_box(); ?>
-		</TD>
-		<TD>
-			<B>Priority:</B>
-			<BR>
+<table border="0" width="100%">
+
+	<tr>
+		<td>
+		<b>Category:</b><br>
+		<?php echo $pg->categoryBox('category_id'); ?> <a href="/pm/admin/?<?php echo "group_id=$group_id&add_cat=1&group_project_id=$group_project_id"; ?>">(admin)</a>
+		</td>
+
+		<td><font size="-1">
+		<input type="submit" value="Submit Changes" name="submit"></font>
+		</td>
+	</tr>
+
+	<tr>
+		<td>
+			<b>Percent Complete:</b><br>
+			<?php echo $pg->percentCompleteBox(); ?>
+		</td>
+		<td>
+			<b>Priority:</b><br>
 			<?php echo build_priority_select_box(); ?>
 		</td>
-	</TR>
+	</tr>
 
-  	<TR>
-		<TD COLSPAN="2"><B>Task Summary:</B>
-		<BR>
-		<INPUT TYPE="text" name="summary" size="40" MAXLENGTH="65">
+  	<tr>
+		<td colspan="2">
+		<b>Task Summary:</b><br>
+		<input type="text" name="summary" size="40" maxlength="65" VALUE="<?php echo $related_artifact_summary; ?>">
 		</td>
-	</TR>
-	<TR>
-		<TD COLSPAN="2"><B>Task Details:</B>
-		<BR>
-		<TEXTAREA NAME="details" ROWS="5" COLS="40" WRAP="SOFT"></TEXTAREA></td>
-	</TR>
-	<TR>
-    		<TD COLSPAN="2"><B>Start Date:</B>
-		<BR>
+	</tr>
+
+	<tr>
+		<td colspan="2">
+		<b>Task Details:</b><br>
+		<textarea name="details" rows="5" cols="40" wrap="soft"></textarea></td>
+	</tr>
+
+	<tr>
+		<td colspan="2">
+		<b>Start Date:</b><br>
 		<?php
-		echo pm_show_month_box ('start_month',date('m', time()));
-		echo pm_show_day_box ('start_day',date('d', time()));
-		echo pm_show_year_box ('start_year',date('Y', time()));
-		echo pm_show_hour_box ('start_hour',date('G', time()));
-		echo pm_show_minute_box ('start_minute', date('i', 15*(time()%15)));
-		?>
-			<BR><a href="calendar.php">View Calendar</a>
-		 </td>
+		echo $pg->showMonthBox ('start_month',date('m', time()));
+		echo $pg->showDayBox ('start_day',date('d', time()));
+		echo $pg->showYearBox ('start_year',date('Y', time()));
+		echo $pg->showHourBox ('start_hour',date('G', time()));
+		echo $pg->showMinuteBox ('start_minute', date('i', 15*(time()%15)));
+		?><br>
+		The system will modify your start/end dates if you attempt to create a start date 
+		earlier than the end date of any tasks you depend on.
+		<br><a href="calendar.php" target="_blank">View Calendar</a>
+		</td>
 
-	</TR>
-	<TR>
-		<TD COLSPAN="2"><B>End Date:</B>
-		<BR>
+	</tr>
+
+	<tr>
+		<td colspan="2">
+		<b>End Date:</b><br>
 		<?php
-		echo pm_show_month_box ('end_month',date('m', time()));
-		echo pm_show_day_box ('end_day',date('d', time()));
-		echo pm_show_year_box ('end_year',date('Y', time()));
-		echo pm_show_hour_box ('end_hour',date('G', time()));
-		echo pm_show_minute_box ('end_minute', date('i', 15*(time()%15)));
+		echo $pg->showMonthBox ('end_month',date('m', (time()+604800)));
+		echo $pg->showDayBox ('end_day',date('d', (time()+604800)));
+		echo $pg->showYearBox ('end_year',date('Y', (time()+604800)));
+		echo $pg->showHourBox ('end_hour',date('G', (time()+604800)));
+		echo $pg->showMinuteBox ('end_minute', date('i', 15*((time()+604800)%15)));
 		?>
 		</td>
 
-	</TR>
-	<TR>
-		<TD>
-		<B>Assigned To:</B>
-		<BR>
+	</tr>
+
+	<tr>
+		<td valign="top">
+		<b>Assigned To:</b><br>
 		<?php
-		echo pm_multiple_assigned_box ('assigned_to[]',$group_id);
+		echo $pt->multipleAssignedBox();
 		?>
 		</td>
-		<TD>
-		<B>Dependent On Task:</B>
-		<BR>
+		<td valign="top">
+		<b>Dependent On Task:</b><br>
 		<?php
-		echo pm_multiple_task_depend_box ('dependent_on[]',$group_project_id);
-		?>
-		</TD>
-	</TR>
-	<TR>
-		<TD COLSPAN="2"><B>Hours:</B>
-		<BR>
-		<INPUT TYPE="text" name="hours" size="5">
+		echo $pt->multipleDependBox();
+		?><br>
+		You should choose only tasks which must be completed before this task can start.
 		</td>
-	</TR>
-	<TR>
-		<TD COLSPAN="2">
-		<INPUT TYPE="submit" value="Submit" name="submit">
+	</tr>
+
+	<tr>
+		<td>
+		<b>Estimated Hours:</b><br>
+		<input type="text" name="hours" size="5">
 		</td>
+
+		<td>
+		<input type="submit" value="Submit" name="submit">
+		</td>
 		</form>
-	</TR>
-</TABLE>
+	</tr>
+
+</table>
 <?php
 
 pm_footer(array());

Modified: trunk/gforge_base/evolvisforge/gforge/www/pm/admin/index.php
===================================================================
--- trunk/gforge_base/evolvisforge/gforge/www/pm/admin/index.php	2010-02-25 15:04:45 UTC (rev 983)
+++ trunk/gforge_base/evolvisforge/gforge/www/pm/admin/index.php	2010-02-25 15:04:49 UTC (rev 984)
@@ -1,204 +1,378 @@
 <?php
 /**
-  *
-  * SourceForge Project/Task Manager (PM)
-  *
-  * SourceForge: Breaking Down the Barriers to Open Source Development
-  * Copyright 1999-2001 (c) VA Linux Systems
-  * http://sourceforge.net
-  *
-  * @version   $Id$
-  *
-  */
+ * GForge Project Management Facility
+ *
+ * Copyright 2002 GForge, LLC
+ * http://gforge.org/
+ *
+ * @version   $Id$
+ */
+/*
 
+	Project/Task Manager
+	By Tim Perdue, Sourceforge, 11/99
+	Heavy rewrite by Tim Perdue April 2000
 
+	Total rewrite in OO and GForge coding guidelines 12/2002 by Tim Perdue
+*/
+
 require_once('pre.php');
-require_once('www/pm/pm_utils.php');
+require_once('www/pm/include/ProjectGroupHTML.class');
+require_once('common/pm/ProjectGroupFactory.class');
+require_once('common/pm/ProjectCategory.class');
 
-/*
+if (!session_loggedin()) {
+	exit_not_logged_in();
+}
 
-	Project / Task Manager Admin
-	By Tim Perdue Nov. 1999
+if (!$group_id) {
+	exit_no_group();
+}
 
-*/
+$g =& group_get_object($group_id);
+if (!$g || !is_object($g)) {
+	exit_no_group();
+} elseif ($g->isError()) {
+	exit_error('Error',$g->getErrorMessage());
+}
 
-if ($group_id && user_ismember($group_id,'P2')) {
+$perm =& $g->getPermission( session_get_user() );
+if (!$perm->isPMAdmin()) {
+	exit_permission_denied();
+}
 
-	if ($post_changes) {
+if ($post_changes) {
+	/*
+		Update the database
+	*/
+
+	if ($addproject) {
+
+		$pg = new ProjectGroup($g,$group_project_id);
+		if (!$pg || !is_object($pg)) {
+			exit_error('Error','Unable to create ProjectCategory Object');
+		} elseif ($pg->isError()) {
+			exit_error('Error',$pg->getErrorMessage());
+		}
+		if (!$pg->create($project_name,$description,$is_public,$send_all_posts_to)) {
+			exit_error('Error',$pg->getErrorMessage());
+		} else {
+			$feedback .= " project Inserted ";
+		}
+	} else if ($add_cat) {
 		/*
-			Update the database
+			Add a project_category
 		*/
+		$pg = new ProjectGroup($g,$group_project_id);
+		if (!$pg || !is_object($pg)) {
+			exit_error('Error','Unable to create ProjectCategory Object');
+		} elseif ($pg->isError()) {
+			exit_error('Error',$pg->getErrorMessage());
+		}
 
-		if ($projects) {
-			/*
-				Insert a new project
-			*/
-			$sql="INSERT INTO project_group_list (group_id,project_name,is_public,description) ".
-				"VALUES ('$group_id','". htmlspecialchars($project_name) ."','$is_public','". htmlspecialchars($description) ."')";
-			$result=db_query($sql);
-			if (!$result) {
-				$feedback .= " Error inserting value ";
-				echo db_error();
+		$pc = new ProjectCategory($pg);
+		if (!$pc || !is_object($pc)) {
+			exit_error('Error','Unable to create ProjectCategory Object');
+		} else {
+			if (!$pc->create($name)) {
+				exit_error('Error','Error inserting: '.$pc->getErrorMessage());
+			} else {
+				$feedback .= ' Category Inserted ';
 			}
+		}
 
-			$feedback .= " Subproject Inserted ";
+	} else if ($update_cat) {
+		/*
+			Update a project_category
+		*/
+		$pg = new ProjectGroup($g,$group_project_id);
+		if (!$pg || !is_object($pg)) {
+			exit_error('Error','Unable to create ProjectCategory Object');
+		} elseif ($pg->isError()) {
+			exit_error('Error',$pg->getErrorMessage());
+		}
 
-	       } else if ($change_status) {
-			/*
-				Change a project to public/private
-			*/
-		       $sql="UPDATE project_group_list SET is_public='$is_public',project_name='". htmlspecialchars($project_name) ."', ".
-				"description='". htmlspecialchars($description) ."' ".
-				"WHERE group_id='$group_id' AND group_project_id='$group_project_id'";
-			$result=db_query($sql);
-			if (!$result || db_affected_rows($result) < 1) {
-				$feedback .= " Error Updating Status ";
-				echo db_error();
+		$pc = new ProjectCategory($pg,$id);
+		if (!$pc || !is_object($pc)) {
+			exit_error('Error','Unable to create ProjectCategory Object');
+		} elseif ($pc->isError()) {
+			exit_error('Error',$pc->getErrorMessage());
+		} else {
+			if (!$pc->update($name)) {
+				exit_error('Error','Error updating: '.$pc->getErrorMessage());
 			} else {
-				$feedback .= " Status Updated Successfully ";
+				$feedback .= ' Category Updated ';
+				$update_cat=false;
+				$add_cat=true;
 			}
 		}
+
+	} else if ($update_pg) {
+		$pg = new ProjectGroup($g,$group_project_id);
+		if (!$pg || !is_object($pg)) {
+			exit_error('Error','Unable to create ProjectCategory Object');
+		} elseif ($pg->isError()) {
+			exit_error('Error',$pg->getErrorMessage());
+		}
+		if (!$pg->update($project_name,$description,$is_public,$send_all_posts_to)) {
+			exit_error('Error',$pg->getErrorMessage());
+		} else {
+			$feedback .= " Updated Successfully ";
+		}
 	} 
+}
+/*
+	Show UI forms
+*/
+if ($add_cat && $group_project_id) {
+//
+//  FORM TO ADD CATEGORIES
+//
+
+	$pg = new ProjectGroup($g,$group_project_id);
+	if (!$pg || !is_object($pg)) {
+		exit_error('Error','Unable to create ProjectCategory Object');
+	} elseif ($pg->isError()) {
+		exit_error('Error',$pg->getErrorMessage());
+	}
+	pm_header(array ('title'=>'Add Categories','pagename'=>'pm_admin_projects','sectionvals'=>$g->getPublicName()));
+	echo "<H1>Add Categories to: ". $pg->getName() ."</H1>";
+
 	/*
-		Show UI forms
+		List of possible categories for this ArtifactType
 	*/
+	$result=$pg->getCategories();
+	echo "<p>";
+	$rows=db_numrows($result);
+	if ($result && $rows > 0) {
+		$title_arr=array();
+		$title_arr[]='ID';
+		$title_arr[]='Title';
 
-	if ($projects) {
-		/*
-			Show categories and blank row
-		*/
+		echo $GLOBALS['HTML']->listTableTop ($title_arr);
 
-		pm_header(array ('title'=>'Add Projects','pagename'=>'pm_admin_projects','sectionvals'=>group_getname($group_id)));
-
-		/*
-			List of possible categories for this group
-		*/
-		$sql="SELECT group_project_id,project_name FROM project_group_list WHERE group_id='$group_id'";
-		$result=db_query($sql);
-		echo "<P>";
-		if ($result && db_numrows($result) > 0) {
-			ShowResultSet($result,"Existing Subprojects");
-		} else {
-			echo "\n<H1>No Subprojects in this group</H1>";
+		for ($i=0; $i < $rows; $i++) {
+			echo '<tr '. $GLOBALS['HTML']->boxGetAltRowStyle($i) .'>'.
+				'<td>'.db_result($result, $i, 'category_id').'</td>'.
+				'<td><a href="'.$PHP_SELF.'?update_cat=1&id='.
+					db_result($result, $i, 'category_id').'&group_id='.$group_id.'&group_project_id='. $pg->getID() .'">'.
+					db_result($result, $i, 'category_name').'</a></td></tr>';
 		}
-		?>
-		<P>
-		Add a new project to the Project/Task Manager. <B>This is different than
-		 adding a task to a project.</B>
-		<P>
-		<FORM ACTION="<?php echo $PHP_SELF; ?>" METHOD="POST">
-		<INPUT TYPE="HIDDEN" NAME="projects" VALUE="y">
-		<INPUT TYPE="HIDDEN" NAME="group_id" VALUE="<?php echo $group_id; ?>">
-		<INPUT TYPE="HIDDEN" NAME="post_changes" VALUE="y">
-		<P>
-		<B>Is Public?</B><BR>
-		<INPUT TYPE="RADIO" NAME="is_public" VALUE="1" CHECKED> Yes<BR>
-		<INPUT TYPE="RADIO" NAME="is_public" VALUE="0"> No<P>
-		<P>
-		<H3>New Project Name:</H3>
-		<P>
-		<INPUT TYPE="TEXT" NAME="project_name" VALUE="" SIZE="15" MAXLENGTH="30">
-		<P>
-		<B>Description:</B><BR>
-		<INPUT TYPE="TEXT" NAME="description" VALUE="" SIZE="40" MAXLENGTH="80">
-		<P>
-		<INPUT TYPE="SUBMIT" NAME="SUBMIT" VALUE="SUBMIT">
-		</FORM>
-		<?php
-		pm_footer(array());
 
-	} else if ($change_status) {
-		/*
-			Change a project to public/private
-		*/
-		pm_header(array('title'=>'Change Project/Task Manager Status','pagename'=>'pm_admin_change_status','sectionvals'=>group_getname($group_id)));
+		echo $GLOBALS['HTML']->listTableBottom();
 
-		$sql="SELECT project_name,group_project_id,is_public,description ".
-			"FROM project_group_list ".
-			"WHERE group_id='$group_id'";
-		$result=db_query($sql);
-		$rows=db_numrows($result);
+	} else {
+		echo "\n<H1>No categories defined</H1>";
+	}
 
-		if (!$result || $rows < 1) {
-			echo '
-				<H2>No Subprojects Found</H2>
-				<P>
-				None found for this project';
-			echo db_error();
-		} else {
-			echo '
-			<P>
-			You can make subprojects in the Project/Task Manager private from here. Please note that private subprojects
-			can still be viewed by members of your project, but not the general public.<P>';
+	?>
+	<p>
+	<form action="<?php echo $PHP_SELF.'?group_id='.$group_id; ?>" method="post">
+	<input type="hidden" name="add_cat" value="y">
+	<input type="hidden" name="group_project_id" value="<?php echo $pg->getID(); ?>">
+	<b>New Category Name:</b><br>
+	<input type="text" name="name" value="" size="15" maxlength="30"><br>
+	<p>
+	<b><font COLOR="RED">Once you add a category, it cannot be deleted</font></b>
+	<p>
+	<input type="SUBMIT" name="post_changes" value="SUBMIT">
+	</form>
+	<?php
 
-			$title_arr=array();
-			$title_arr[]='Status';
-			$title_arr[]='Name';
-			$title_arr[]='Update';
+	pm_footer(array());
 
-			echo $GLOBALS['HTML']->listTableTop ($title_arr);
+} elseif ($update_cat && $group_project_id && $id) {
 
-			for ($i=0; $i<$rows; $i++) {
-				echo '
-					<FORM ACTION="'.$PHP_SELF.'" METHOD="POST">
-					<INPUT TYPE="HIDDEN" NAME="post_changes" VALUE="y">
-					<INPUT TYPE="HIDDEN" NAME="change_status" VALUE="y">
-					<INPUT TYPE="HIDDEN" NAME="group_project_id" VALUE="'.db_result($result,$i,'group_project_id').'">
-					<INPUT TYPE="HIDDEN" NAME="group_id" VALUE="'.$group_id.'">';
-				echo '
-					<TR '. $GLOBALS['HTML']->boxGetAltRowStyle($i) .'><TD>
-						<FONT SIZE="-1">
-						<B>Is Public?</B><BR>
-						<INPUT TYPE="RADIO" NAME="is_public" VALUE="1"'.((db_result($result,$i,'is_public')=='1')?' CHECKED':'').'> Yes<BR>
-						<INPUT TYPE="RADIO" NAME="is_public" VALUE="0"'.((db_result($result,$i,'is_public')=='0')?' CHECKED':'').'> No<BR>
-						<INPUT TYPE="RADIO" NAME="is_public" VALUE="9"'.((db_result($result,$i,'is_public')=='9')?' CHECKED':'').'> Deleted<BR>
-					</TD><TD>
-						<INPUT TYPE="TEXT" NAME="project_name" VALUE="'. db_result($result, $i, 'project_name') .'">
-					</TD><TD>
-						<FONT SIZE="-1">
-						<INPUT TYPE="SUBMIT" NAME="SUBMIT" VALUE="Update">
-					</TD></TR>
-					<TR '.$GLOBALS['HTML']->boxGetAltRowStyle($i) .'><TD COLSPAN="3">
-						<B>Description:</B><BR>
-						<INPUT TYPE="TEXT" NAME="description" VALUE="'.
-						db_result($result,$i,'description') .'" SIZE="40" MAXLENGTH="80"><BR>
-					</TD></TR>
-					</FORM>';
-			}
+//
+//  FORM TO UPDATE CATEGORIES
+//
+	/*
+		Allow modification of a artifact category
+	*/
 
-			echo $GLOBALS['HTML']->listTableBottom();
+	$pg = new ProjectGroup($g,$group_project_id);
+	if (!$pg || !is_object($pg)) {
+		exit_error('Error','Unable to create ProjectCategory Object');
+	} elseif ($pg->isError()) {
+		exit_error('Error',$pg->getErrorMessage());
+	}
+	pm_header(array ('title'=>'Add Categories','pagename'=>'pm_admin_projects','sectionvals'=>$g->getPublicName()));
 
-		}
+	echo '
+		<H1>Modify an Category in: '. $pg->getName() .'</H1>';
 
-		pm_footer(array());
+	$ac = new ProjectCategory($pg,$id);
+	if (!$ac || !is_object($ac)) {
+		$feedback .= 'Unable to create ProjectCategory Object';
+	} elseif ($ac->isError()) {
+		$feedback .= $ac->getErrorMessage();
+	} else {
+		?>
+		<p>
+		<form action="<?php echo $PHP_SELF.'?group_id='.$group_id; ?>" method="post">
+		<input type="hidden" name="update_cat" value="y">
+		<input type="hidden" name="id" value="<?php echo $ac->getID(); ?>">
+		<input type="hidden" name="group_project_id" value="<?php echo $pg->getID(); ?>">
+		<p>
+		<b>Category Name:</b><br>
+		<input type="text" name="name" value="<?php echo $ac->getName(); ?>">
+		<p>
+		<b><font COLOR="RED">It is not recommended that you change the artifact
+			category name because other things are dependent upon it. When you change
+			the category name, all related items will be changed to the new name.</font></b>
+		<p>
+		<input type="SUBMIT" name="post_changes" value="SUBMIT">
+		</form>
+		<?php
+	}
 
+	pm_footer(array());
+
+} elseif ($addproject) {
+	/*
+		Show categories and blank row
+	*/
+
+	pm_header(array ('title'=>'Add Projects','pagename'=>'pm_admin_projects','sectionvals'=>group_getname($group_id)));
+
+	/*
+		List of possible categories for this group
+	*/
+	$sql="SELECT group_project_id,project_name FROM project_group_list WHERE group_id='$group_id'";
+	$result=db_query($sql);
+	echo "<p>";
+	if ($result && db_numrows($result) > 0) {
+		ShowResultSet($result,"Existing Subprojects");
 	} else {
+		echo "\n<H1>No Subprojects in this group</H1>";
+	}
+	?>
+	<p>
+	Add a new project to the Project/Task Manager. <b>This is different than
+	 adding a task to a project.</b>
+	<p>
+	<form action="<?php echo $PHP_SELF."?group_id=$group_id"; ?>" method="post">
+	<input type="hidden" name="addproject" value="y">
+	<input type="hidden" name="post_changes" value="y">
+	<p>
+	<b>Is Public?</b><br>
+	<input type="radio" name="is_public" value="1" checked> Yes<br>
+	<input type="radio" name="is_public" value="0"> No<p>
+	<p>
+	<H3>New Project Name:</H3>
+	<p>
+	<input type="text" name="project_name" value="" size="15" maxlength="30">
+	<p>
+	<b>Description:</b><br>
+	<input type="text" name="description" value="" size="40" maxlength="80">
+	<p>
+	<b>Send All Updates To:</b><br>
+	<input type="text" name="send_all_posts_to" value="" size="40" maxlength="80"><br>
+	<p>
+	<input type="SUBMIT" name="SUBMIT" value="SUBMIT">
+	</form>
+	<?php
+	pm_footer(array());
 
-		/*
-			Show main page
-		*/
-		pm_header(array('title'=>'Project/Task Manager Administration','pagename'=>'pm_admin','sectionvals'=>group_getname($group_id)));
+} else if ($update_pg && $group_project_id) {
 
-		echo '
-			<P>
-			<A HREF="'.$PHP_SELF.'?group_id='.$group_id.'&projects=1">Add A Subproject</A><BR>
-			Add a project, which can contain a set of tasks. This is different than creating a new task.
-			<BR>
-			<A HREF="'.$PHP_SELF.'?group_id='.$group_id.'&change_status=1">Update Information</A><BR>
-			Determine whether non-project-members can view Subprojects in the Project/Task Manager, update name and description';
 
-		pm_footer(array());
+	$pg = new ProjectGroup($g,$group_project_id);
+	if (!$pg || !is_object($pg)) {
+		exit_error('Error','Could Not Get ProjectGroup');
+	} elseif ($pg->isError()) {
+		exit_error('Error',$pg->getErrorMessage());
 	}
 
+	pm_header(array('title'=>'Change Project/Task Manager Status','pagename'=>'pm_admin_update_pg','sectionvals'=>$g->getPublicName()));
+
+	?>
+	<p>
+	You can modify an existing Project using this form. Please note that private projects
+	can still be viewed by members of your project, but not the general public.<p>
+
+	<form action="<?php echo $PHP_SELF.'?group_id='.$group_id; ?>" method="post">
+	<input type="hidden" name="post_changes" value="y">
+	<input type="hidden" name="update_pg" value="y">
+	<input type="hidden" name="group_project_id" value="<?php echo $pg->getID(); ?>">
+	<table border="0">
+	<tr>
+		<td>
+			<b>Is Public?</b><br>
+			<input type="radio" name="is_public" value="1"<?php echo (($pg->isPublic()=='1')?' checked':''); ?>> Yes<br>
+			<input type="radio" name="is_public" value="0"<?php echo (($pg->isPublic()=='0')?' checked':''); ?>> No<br>
+			<input type="radio" name="is_public" value="9"<?php echo (($pg->isPublic()=='9')?' checked':''); ?>> Deleted<br>
+		</td>
+	</tr>
+	<tr>
+		<td><b>Project Name:</b><br>
+			<input type="text" name="project_name" value="<?php echo $pg->getName() ?>">
+		</td>
+	</tr>
+	<tr>
+		<td>
+			<b>Description:</b><br>
+			<input type="text" name="description" value="<?php echo $pg->getDescription(); ?>" size="40" maxlength="80"><br>
+		</td>
+	</tr>
+	<tr>
+		<td>
+			<b>Send All Updates To:</b><br>
+			<input type="text" name="send_all_posts_to" value="<?php echo $pg->getSendAllPostsTo(); ?>" size="40" maxlength="80"><br>
+		</td>
+	</tr>
+	<tr>
+		<td>
+			<b><a href="<?php echo $PHP_SELF."?group_id=$group_id&add_cat=1&group_project_id=".$pg->getID(); ?>">Add/Edit Categories</a></b><br>
+		</td>
+	</tr>
+	<tr>
+		<td>
+			<input type="SUBMIT" name="SUBMIT" value="Update">
+		</td>
+	</tr>
+	</table>
+	</form>
+	<?php
+
+	pm_footer(array());
+
 } else {
 
-	//browse for group first message
+	/*
+		Show main page
+	*/
+	pm_header(array('title'=>'Project/Task Manager Administration','pagename'=>'pm_admin','sectionvals'=>group_getname($group_id)));
 
-	if (!$group_id) {
-		exit_no_group();
-	} else {
-		exit_permission_denied();
+	?>
+	<p>
+	<a href="<?php echo $PHP_SELF.'?group_id='.$group_id; ?>&addproject=1">Add A Project</a><br>
+	Add a project, which can contain a set of tasks. This is different than creating a new task.
+	<p>
+	<?php
+    $pgf = new ProjectGroupFactory($g);
+    if (!$pgf || !is_object($pgf)) {
+        exit_error('Error','Could Not Get Factory');
+    } elseif ($pgf->isError()) {
+        exit_error('Error',$pgf->getErrorMessage());
+    }
+
+    $pg_arr =& $pgf->getProjectGroups();
+
+    if (count($pg_arr) < 1) {
+        echo '
+            <h2>No Projects Found</h2>
+            <p>
+            None found for this group. You may add new Projects using the "Add A Project" link above.';
+        echo db_error();
+    } else {
+		for ($i=0; $i<count($pg_arr); $i++) {
+			echo '<a href="'. $PHP_SELF.'?group_id='.$group_id.'&group_project_id='.$pg_arr[$i]->getID().'&update_pg=1">Edit/Update Project: <b>'.$pg_arr[$i]->getName().'</b></a><p>';
+		}
+
 	}
 
+	pm_footer(array());
 }
+
 ?>

Modified: trunk/gforge_base/evolvisforge/gforge/www/pm/browse_task.php
===================================================================
--- trunk/gforge_base/evolvisforge/gforge/www/pm/browse_task.php	2010-02-25 15:04:45 UTC (rev 983)
+++ trunk/gforge_base/evolvisforge/gforge/www/pm/browse_task.php	2010-02-25 15:04:49 UTC (rev 984)
@@ -1,167 +1,56 @@
 <?php
 /**
-  *
-  * SourceForge Project/Task Manager (PM)
-  *
-  * SourceForge: Breaking Down the Barriers to Open Source Development
-  * Copyright 1999-2001 (c) VA Linux Systems
-  * http://sourceforge.net
-  *
-  * @version   $Id$
-  *
-  */
+ * GForge Project Management Facility
+ *
+ * Copyright 2002 GForge, LLC
+ * http://gforge.org/
+ *
+ * @version   $Id$
+ */
+/*
 
+	Project/Task Manager
+	By Tim Perdue, Sourceforge, 11/99
+	Heavy rewrite by Tim Perdue April 2000
 
-if (!$offset || $offset < 0) {
-	$offset=0;
-}
-
-//
-//  Set up local objects
-//
-$g =& group_get_object($group_id);
-
-if (session_loggedin()) {
-	$u =& session_get_user();
-	$perm =& $g->getPermission($u);
-}
-
-//
-// Memorize order by field as a user preference if explicitly specified.
-// Automatically discard invalid field names.
-//
-if ($order) {
-	if ($order=='project_task_id' || $order=='percent_complete' || $order=='summary' || $order=='start_date' || $order=='end_date' || $order=='priority') {
-		if (session_loggedin()) {
-			$u->setPreference('pm_task_order', $order);
-		}
-	} else {
-		$order = false;
-	}
-} else {
-	if (session_loggedin()) {
-		$order = $u->getPreference('pm_task_order');
-	}
-}
-
-if ($order) {
-	//if ordering by priority, sort DESC
-	$order_by = " ORDER BY project_task.$order".(($order=='priority') ? ' DESC ':' ');
-} else {
-	$order_by = "";
-}
-
-//the default is to show 'my' tasks, not 'open' as it used to be
-if (!$set) {
-	/*
-		if no set is passed in, see if a preference was set
-		if no preference or not logged in, use open set
-	*/
-	if (session_loggedin()) {
-		$custom_pref=$u->getPreference('pm_brow_cust'.$group_id);
-		if ($custom_pref) {
-			$pref_arr=explode('|',$custom_pref);
-			$_assigned_to=$pref_arr[0];
-			$_status=$pref_arr[1];
-			$set='custom';
-		} else {
-			$set='my';
-		}
-	} else {
-		$set='open';
-		$_assigned_to=0;
-	}
-}
-
-if ($set=='my') {
-	/*
-		My tasks - backwards compat can be removed 9/10
-	*/
-	$_status=1;
-	$_assigned_to=user_getid();
-
-} else if ($set=='custom') {
-	/*
-		if this custom set is different than the stored one, reset preference
-	*/
-	$pref_=$_assigned_to.'|'.$_status;
-	if (session_loggedin() && ($pref_ != $u->getPreference('pm_brow_cust'.$group_id))) {
-		//echo 'setting pref';
-		$u->setPreference('pm_brow_cust'.$group_id,$pref_);
-	}
-} else if ($set=='closed') {
-	/*
-		Closed tasks - backwards compat can be removed 9/10
-	*/
-	$_assigned_to=0;
-	$_status='2';
-} else {
-	/*
-		Open tasks - backwards compat can be removed 9/10
-	*/
-	$_assigned_to=0;
-	$_status='1';
-}
-
-/*
-	Display tasks based on the form post - by user or status or both
+	Total rewrite in OO and GForge coding guidelines 12/2002 by Tim Perdue
 */
 
-//if status selected, and more to where clause
-if ($_status && ($_status != 100)) {
-	//for open tasks, add status=100 to make sure we show all
-	$status_str="AND project_task.status_id IN ($_status".(($_status==1)?',100':'').")";
-} else {
-	//no status was chosen, so don't add it to where clause
-	$status_str='';
-}
-
-//if assigned to selected, and more to where clause
-if ($_assigned_to) {
-	$assigned_str="AND project_assigned_to.assigned_to_id='$_assigned_to'";
-
-	//workaround for old tasks that do not have anyone assigned to them
-	//should not be needed for tasks created/updated after may, 2000
-	$assigned_str2=',project_assigned_to';
-	$assigned_str3='project_task.project_task_id=project_assigned_to.project_task_id AND';
-	
-} else {
-	//no assigned to was chosen, so don't add it to where clause
-	$assigned_str='';
-}
-
+require_once('common/pm/ProjectTaskFactory.class');
 //build page title to make bookmarking easier
 //if a user was selected, add the user_name to the title
 //same for status
 
-if ($set == "my") {
-	$pagename = "pm_browse_my";
-} elseif ($set == "open") {
-	$pagename = "pm_browse_open";
-} else {
-	$pagename = "pm_browse_custom";
+$pagename = "pm_browse_custom";
+
+$ptf = new ProjectTaskFactory($pg);
+if (!$ptf || !is_object($ptf)) {
+	exit_error('Error','Could Not Get ProjectTaskFactory');
+} elseif ($ptf->isError()) {
+	exit_error('Error',$ptf->getErrorMessage());
 }
 
-pm_header(array('title'=>'Browse Tasks'.
-	(($_assigned_to)?' For: '.user_getname($_assigned_to):'').
-	(($_status && ($_status != 100))?' By Status: '.pm_data_get_status_name($_status):''),'pagename'=>$pagename,'group_project_id'=>$group_project_id,'sectionvals'=>group_getname($group_id)));
+$ptf->setup($offset,$_order,$max_rows,$set,$_assigned_to,$_status,$_category_id);
+if ($ptf->isError()) {
+	exit_error('Error',$ptf->getErrorMessage());
+}
 
-$sql="SELECT project_task.priority,project_task.group_project_id,project_task.project_task_id,".
-	"project_task.start_date,project_task.end_date,project_task.percent_complete,project_task.summary ".
-	"FROM project_task $assigned_str2 ".
-	"WHERE $assigned_str3 project_task.group_project_id='$group_project_id' ".
-	" $assigned_str $status_str ".
-	$order_by; 
+$pt_arr =& $ptf->getTasks();
+if ($ptf->isError()) {
+	exit_error('Error',$ptf->getErrorMessage());
+}
 
-$message="Browsing Custom Task List";
+$_assigned_to=$ptf->assigned_to;
+$_status=$ptf->status;
+$_order=$ptf->order;
 
-$result=db_query($sql,51,$offset);
+pm_header(array('title'=>'Browse Tasks','pagename'=>$pagename,'group_project_id'=>$group_project_id,'sectionvals'=>$g->getPublicName()));
 
 /*
 		creating a custom technician box which includes "any" and "unassigned"
 */
 
-$res_tech=pm_data_get_technicians ($group_id);
+$res_tech=$pg->getTechnicians();
 
 $tech_id_arr=util_result_column_to_array($res_tech,0);
 $tech_id_arr[]='0';  //this will be the 'any' row
@@ -171,26 +60,60 @@
 
 $tech_box=html_build_select_box_from_arrays ($tech_id_arr,$tech_name_arr,'_assigned_to',$_assigned_to,true,'Unassigned');
 
+/*
+		creating a custom category box which includes "any" and "none"
+*/
 
+$res_cat=$pg->getCategories();
 
+$cat_id_arr=util_result_column_to_array($res_cat,0);
+$cat_id_arr[]='0';  //this will be the 'any' row
+
+$cat_name_arr=util_result_column_to_array($res_cat,1);
+$cat_name_arr[]='Any';
+
+$cat_box=html_build_select_box_from_arrays ($cat_id_arr,$cat_name_arr,'_category_id',$_category_id,true,'None');
+
 /*
+	Creating a custom sort box
+*/
+$title_arr=array();
+$title_arr[]='Task ID';
+$title_arr[]='Summary';
+$title_arr[]='Start Date';
+$title_arr[]='End Date';
+$title_arr[]='Percent Complete';
+
+$order_col_arr=array();
+$order_col_arr[]='project_task_id';
+$order_col_arr[]='summary';
+$order_col_arr[]='start_date';
+$order_col_arr[]='end_date';
+$order_col_arr[]='percent_complete';
+$order_box=html_build_select_box_from_arrays ($order_col_arr,$title_arr,'_order',$_order,false);
+
+/*
 	Show the new pop-up boxes to select assigned to and/or status
 */
-echo '<TABLE WIDTH="10%" BORDER="0"><FORM ACTION="'. $PHP_SELF .'" METHOD="GET">
-	<INPUT TYPE="HIDDEN" NAME="group_id" VALUE="'.$group_id.'">
-	<INPUT TYPE="HIDDEN" NAME="set" VALUE="custom">
-	<TR><TD COLSPAN="4" nowrap><b>Browse Tasks by User and/or Status:</b></TD></TR>
-	<TR><TD>'. pm_show_subprojects_box('group_project_id',$group_id,$group_project_id) .'</TD>'.
-		'<TD><FONT SIZE="-1">'. $tech_box .'</TD><TD><FONT SIZE="-1">'. pm_status_box('_status',$_status,'Any') .'</TD>'.
-		'<TD><FONT SIZE="-1"><INPUT TYPE="SUBMIT" NAME="SUBMIT" VALUE="Browse"></TD></TR></FORM></TABLE>';
+echo '<table width="10%" BORDER="0">
+	<form action="'. $PHP_SELF .'?group_id='.$group_id.'&group_project_id='.$group_project_id.'" method="post">
+	<input type="hidden" name="set" value="custom">
+	<tr>
+		<td><font size="-1">Assignee:<br>'. $tech_box .'</td>
+		<td><font size="-1">Status:<br>'. $pg->statusBox('_status',$_status,'Any') .'</td>
+		<td><font size="-1">Category:<br>'. $cat_box .'</td>
+		<td><font size="-1">Sort On:<br>'. $order_box .'</td>
+		<td><font size="-1"><input type="SUBMIT" name="SUBMIT" value="Browse"></td>
+	</tr></form></table>';
 
 
-if (db_numrows($result) < 1) {
+$rows=count($pt_arr);
+if ($rows < 1) {
 
 	echo '
-		<H1>No Matching Tasks found</H1>
-		<P>
-		<B>Add tasks using the link above</B>';
+		<h1>No Matching Tasks found</h1>
+		<p>
+		<b>Add tasks using the link above</b>';
 	echo db_error();
 } else {
 
@@ -205,12 +128,56 @@
 
 	echo '
 		<br>
-		<H3>'.$message.' In '. pm_data_get_group_name($group_project_id) .'</H3>';
-	pm_show_tasklist($result,$offset,$set);
-	echo '<P>* Denotes overdue tasks';
+		<h3>Browsing Tasks In '. $pg->getName() .'</h3>';
+
+
+	echo $GLOBALS['HTML']->listTableTop ($title_arr);
+
+	$now=time();
+
+	for ($i=0; $i < $rows; $i++) {
+
+		echo '
+			<tr bgcolor="'.get_priority_color( $pt_arr[$i]->getPriority() ).'">'.
+			'<td><a href="/pm/task.php?func=detailtask'.
+			'&project_task_id='. $pt_arr[$i]->getID() .
+			'&group_id='.$group_id.
+			'&group_project_id='. $group_project_id .'">'.
+			$pt_arr[$i]->getID() .'</A></td>'.
+			'<td>'. $pt_arr[$i]->getSummary() .'</td>'.
+			'<td>'.date('Y-m-d', $pt_arr[$i]->getStartDate() ).'</td>'.
+			'<td>'. (($now>$pt_arr[$i]->getEndDate() )?'<b>* ':'&nbsp; ') .
+				date('Y-m-d',$pt_arr[$i]->getEndDate() ).'</td>'.
+			'<td>'. $pt_arr[$i]->getPercentComplete() .'%</td></tr>';
+
+	}
+
+	/*
+		Show extra rows for <-- Prev / Next -->
+	*/
+	echo '<tr><td colspan="2">';
+	if ($offset > 0) {
+		echo '<a href="/pm/task.php?func=browse&group_project_id='.
+			$group_project_id.'&group_id='.$group_id.'&offset='.($offset-50).'">
+			<b><-- Previous 50</b></A>';
+	} else {
+		echo '&nbsp;';
+	}
+	echo '</td><td>&nbsp;</td><td colspan="2">';
+
+	if ($rows==50) {
+		echo '<a href="/pm/task.php?func=browse&group_project_id='.
+			$group_project_id.'&group_id='.$group_id.'&offset='.($offset+50).
+			'"><b>Next 50 --></b></A>';
+	} else {
+		echo '&nbsp;';
+	}
+	echo '</td></tr>';
+
+	echo $GLOBALS['HTML']->listTableBottom();
+
+	echo '<p>* Denotes overdue tasks';
 	show_priority_colors_key();
-	$url = "/pm/task.php?group_id=$group_id&group_project_id=$group_project_id&func=browse&set=$set&order=";
-	echo '<P>Click a column heading to sort by that column, or <A HREF="'.$url.'priority">Sort by Priority</A>';
 
 }
 

Modified: trunk/gforge_base/evolvisforge/gforge/www/pm/detail_task.php
===================================================================
--- trunk/gforge_base/evolvisforge/gforge/www/pm/detail_task.php	2010-02-25 15:04:45 UTC (rev 983)
+++ trunk/gforge_base/evolvisforge/gforge/www/pm/detail_task.php	2010-02-25 15:04:49 UTC (rev 984)
@@ -1,70 +1,72 @@
 <?php
 /**
-  *
-  * SourceForge Project/Task Manager (PM)
-  *
-  * SourceForge: Breaking Down the Barriers to Open Source Development
-  * Copyright 1999-2001 (c) VA Linux Systems
-  * http://sourceforge.net
-  *
-  * @version   $Id$
-  *
-  */
+ * GForge Project Management Facility
+ *
+ * Copyright 2002 GForge, LLC
+ * http://gforge.org/
+ *
+ * @version   $Id$
+ */
+/*
 
+	Project/Task Manager
+	By Tim Perdue, Sourceforge, 11/99
+	Heavy rewrite by Tim Perdue April 2000
 
+	Total rewrite in OO and GForge coding guidelines 12/2002 by Tim Perdue
+*/
+
 pm_header(array('title'=>'View A Task','pagename'=>'pm_detailtask','group_project_id'=>$group_project_id));
 
-$sql="SELECT * FROM project_task ".
-	"WHERE project_task_id='$project_task_id' AND group_project_id='$group_project_id'";
-
-$result=db_query($sql);
-
 ?>
 
-<TABLE BORDER="0" WIDTH="100%">
-	<TR>
-		<TD><B>Percent Complete:</B>
-		<BR>
-		<?php echo db_result($result,0,'percent_complete'); ?>%
-		</TD>
+<table border="0" width="100%">
+	<tr>
+		<td colspan="2">
+		<b>Category:</b><br>
+		<?php echo $pt->getCategoryName(); ?>
+		</td>
+	</tr>
 
-		<TD><B>Priority:</B>
-		<BR>
-		<?php echo db_result($result,0,'priority'); ?>
-		</TD>
-	</TR>
+	<tr>
+		<td>
+		<b>Percent Complete:</b><br>
+		<?php echo $pt->getPercentComplete(); ?>%
+		</td>
 
-  	<TR>
-		<TD COLSPAN="2"><B>Task Summary:</B>
-		<BR>
-		<?php echo db_result($result,0,'summary'); ?>
-		</TD>
-	</TR>
+		<td>
+		<b>Priority:</b><br>
+		<?php echo $pt->getPriority(); ?>
+		</td>
+	</tr>
 
-	<TR>
-		<TD COLSPAN="2">
-		<B>Original Comment:</B>
-		<P>
-		<?php echo nl2br(db_result($result,0,'details')); ?>
-		</TD>
-	</TR>
+	<tr>
+		<td>
+		<b>Start Date:</b><br>
+		<?php echo date('Y-m-d', $pt->getStartDate() ); ?>
+		</td>
+		<td>
+		<b>End Date:</b><br>
+		<?php echo date('Y-m-d', $pt->getEndDate() ); ?>
+		</td>
+	</tr>
 
-	<TR>
-    		<TD COLSPAN="2"><B>Start Date:</B>
-		<BR>
-		<?php echo date('Y-m-d', db_result($result,0,'start_date')); ?>
-		</TD>
-	</TR>
+  	<tr>
+		<td colspan="2">
+		<b>Task Summary:</b><br>
+		<?php echo $pt->getSummary(); ?>
+		</td>
+	</tr>
 
-	<TR>
-		<TD COLSPAN="2"><B>End Date:</B>
-		<BR>
-		<?php echo date('Y-m-d', db_result($result,0,'end_date')); ?>
-		</TD>
-	</TR>
+	<tr>
+		<td colspan="2">
+		<b>Original Comment:</b><br>
+		<?php echo nl2br($pt->getDetails()); ?>
+		</td>
+	</tr>
 
-	<TR>
-		<TD VALIGN="TOP">
+	<tr>
+		<td valign="top">
 		<?php
 		/*
 			Get the list of ids this is assigned to and convert to array
@@ -75,8 +77,8 @@
 			"WHERE users.user_id=project_assigned_to.assigned_to_id AND project_task_id='$project_task_id'");
 		ShowResultSet($result2,'Assigned To');
 		?>
-		</TD>
-		<TD VALIGN="TOP">
+		</td>
+		<td valign="top">
 		<?php
 		/*
 			Get the list of ids this is dependent on and convert to array
@@ -86,43 +88,47 @@
 			"WHERE is_dependent_on_task_id=project_task.project_task_id AND project_dependencies.project_task_id='$project_task_id'");
 		ShowResultSet($result2,'Dependent On Task');
 		?>
-		</TD>
-	</TR>
+		</td>
+	</tr>
 
-	<TR>
-		<TD>
-		<B>Hours:</B>
-		<BR>
-		<?php echo db_result($result,0,'hours'); ?>
-		</TD>
+	<tr>
+		<td>
+		<b>Hours:</b><br>
+		<?php echo $pt->getHours(); ?>
+		</td>
 
-		<TD>
-		<B>Status:</B>
-		<BR>
+		<td>
+		<b>Status:</b><br>
 		<?php
-		echo pm_data_get_status_name(db_result($result,0,'status_id'));
+		echo $pt->getStatusName();
 		?>
-		</TD>
-	</TR>
+		</td>
+	</tr>
 
-	<TR>
-		<TD COLSPAN="2">
-			<?php echo pm_show_dependent_tasks ($project_task_id,$group_id,$group_project_id); ?>
-		</TD>
-	</TR>
+	<tr>
+		<td colspan="2">
+			<?php echo $pt->showDependentTasks(); ?>
+		</td>
+	</tr>
 
-	<TR>
-		<TD COLSPAN="2">
-			<?php echo pm_show_task_details ($project_task_id); ?>
-		</TD>
-	</TR>
+	<tr>
+		<td colspan="2">
+			<?php echo $pt->showRelatedArtifacts(); ?>
+		</td>
+	</tr>
 
-	<TR>
-		<TD COLSPAN="2">
-			<?php echo pm_show_task_history ($project_task_id); ?>
-		</TD>
-	</TR>
+	<tr>
+		<td colspan="2">
+			<?php echo $pt->showMessages(); ?>
+		</td>
+	</tr>
 
+	<tr>
+		<td colspan="2">
+			<?php echo $pt->showHistory(); ?>
+		</td>
+	</tr>
+
 </table>
 <?php
 

Modified: trunk/gforge_base/evolvisforge/gforge/www/pm/index.php
===================================================================
--- trunk/gforge_base/evolvisforge/gforge/www/pm/index.php	2010-02-25 15:04:45 UTC (rev 983)
+++ trunk/gforge_base/evolvisforge/gforge/www/pm/index.php	2010-02-25 15:04:49 UTC (rev 984)
@@ -1,62 +1,76 @@
 <?php
 /**
-  *
-  * SourceForge Project/Task Manager (PM)
-  *
-  * SourceForge: Breaking Down the Barriers to Open Source Development
-  * Copyright 1999-2001 (c) VA Linux Systems
-  * http://sourceforge.net
-  *
-  * @version   $Id$
-  *
-  */
+ * GForge Project Management Facility
+ *
+ * Copyright 2002 GForge, LLC
+ * http://gforge.org/
+ *
+ * @version   $Id$
+ */
+/*
 
+	Project/Task Manager
+	By Tim Perdue, Sourceforge, 11/99
+	Heavy rewrite by Tim Perdue April 2000
 
+	Total rewrite in OO and GForge coding guidelines 12/2002 by Tim Perdue
+*/
+
 require_once('pre.php');
-require_once('www/pm/pm_utils.php');
+require_once('www/pm/include/ProjectGroupHTML.class');
+require_once('common/pm/ProjectGroupFactory.class');
 
-if ($group_id) {
+if (!$group_id) {
+	exit_no_group();
+}
 
-	pm_header(array('title'=>'Projects for '.group_getname($group_id),'pagename'=>'pm','sectionvals'=>group_getname($group_id)));
+$g =& group_get_object($group_id);
+if (!$g || !is_object($g)) {
+	exit_no_group();
+} elseif ($g->isError()) {
+	exit_error('Error',$g->getErrorMessage());
+}
 
-	if (session_loggedin() && user_ismember($group_id)) {
-		$public_flag='0,1';
-	} else {
-		$public_flag='1';
-	}
+$pgf = new ProjectGroupFactory($g);
+if (!$pgf || !is_object($pgf)) {
+    exit_error('Error','Could Not Get Factory');
+} elseif ($pgf->isError()) {
+    exit_error('Error',$pgf->getErrorMessage());
+}
 
-	$sql="SELECT * FROM project_group_list WHERE group_id='$group_id' AND is_public IN ($public_flag)";
+$pg_arr =& $pgf->getProjectGroups();
+if ($pgf->isError()) {
+	exit_error('Error',$pgf->getErrorMessage());
+}
 
-	$result = db_query ($sql);
-	$rows = db_numrows($result); 
-	if (!$result || $rows < 1) {
-		echo $Language->getText('pm', 'noprj');
-		pm_footer(array());
-		exit;
-	}
+pm_header(array('title'=>'Projects for '. $g->getPublicName(),'pagename'=>'pm','sectionvals'=>$g->getPublicName()));
 
+if (count($pg_arr) < 1) {
+	echo '<p>No Projects Defined.';
+} else {
 	echo '
-		<P>
-		Choose a Subproject and you can browse/edit/add tasks to it.
-		<P>';
+	<p>
+	Choose a Subproject and you can browse/edit/add tasks to it.
+	<p>';
 
 	/*
-		Put the result set (list of forums for this group) into a column with folders
+		Put the result set (list of projects for this group) into a column with folders
 	*/
 
-	for ($j = 0; $j < $rows; $j++) { 
+	for ($j = 0; $j < count($pg_arr); $j++) { 
+		if ($pg_arr[$j]->isError()) {
+			echo $pg_arr[$j]->getErrorMessage();
+		}
 		echo '
-		<A HREF="/pm/task.php?group_project_id='.db_result($result, $j, 'group_project_id').
+		<a href="/pm/task.php?group_project_id='. $pg_arr[$j]->getID().
 		'&group_id='.$group_id.'&func=browse">' .
-		html_image("ic/index.png","15","13",array("BORDER"=>"0")) . ' &nbsp;'.
-		db_result($result, $j, 'project_name').'</A><BR>'.
-		db_result($result, $j, 'description').'<P>';
+		html_image("ic/cfolder15.png","15","13",array("BORDER"=>"0")) . ' &nbsp;'.
+		$pg_arr[$j]->getName() .'</a><br>'.
+		$pg_arr[$j]->getDescription() .'<p>';
 	}
 
-} else {
-	pm_header(array('title'=>'Choose a Group First','pagename'=>'pm'));
-	echo '<H1>Error - choose a group first</H1>';
 }
+
 pm_footer(array()); 
 
 ?>

Modified: trunk/gforge_base/evolvisforge/gforge/www/pm/mod_task.php
===================================================================
--- trunk/gforge_base/evolvisforge/gforge/www/pm/mod_task.php	2010-02-25 15:04:45 UTC (rev 983)
+++ trunk/gforge_base/evolvisforge/gforge/www/pm/mod_task.php	2010-02-25 15:04:49 UTC (rev 984)
@@ -1,167 +1,168 @@
 <?php
 /**
-  *
-  * SourceForge Project/Task Manager (PM)
-  *
-  * SourceForge: Breaking Down the Barriers to Open Source Development
-  * Copyright 1999-2001 (c) VA Linux Systems
-  * http://sourceforge.net
-  *
-  * @version   $Id$
-  *
-  */
+ * GForge Project Management Facility
+ *
+ * Copyright 2002 GForge, LLC
+ * http://gforge.org/
+ *
+ * @version   $Id$
+ */
+/*
 
+	Project/Task Manager
+	By Tim Perdue, Sourceforge, 11/99
+	Heavy rewrite by Tim Perdue April 2000
 
+	Total rewrite in OO and GForge coding guidelines 12/2002 by Tim Perdue
+*/
+
 pm_header(array('title'=>'Modify A Task','pagename'=>'pm_modtask','group_project_id'=>$group_project_id));
 
-$sql="SELECT * FROM project_task ".
-	"WHERE project_task_id='$project_task_id' AND group_project_id='$group_project_id'";
+?>
 
-$result=db_query($sql);
+<form action="<?php echo "$PHP_SELF?group_id=$group_id&group_project_id=$group_project_id"; ?>" method="post">
+<input type="hidden" name="func" value="postmodtask">
+<input type="hidden" name="project_task_id" value="<?php echo $project_task_id; ?>">
 
-?>
+<table border="0" width="100%">
 
-<FORM ACTION="<?php echo $PHP_SELF; ?>" METHOD="POST">
-<INPUT TYPE="HIDDEN" NAME="func" VALUE="postmodtask">
-<INPUT TYPE="HIDDEN" NAME="group_id" VALUE="<?php echo $group_id; ?>">
-<INPUT TYPE="HIDDEN" NAME="group_project_id" VALUE="<?php echo $group_project_id; ?>">
-<INPUT TYPE="HIDDEN" NAME="project_task_id" VALUE="<?php echo $project_task_id; ?>">
+	<tr>	
+		<td>
+		<b>Category:</b><br>
+		<?php echo $pg->categoryBox('category_id',$pt->getCategoryID()); ?> <a href="/pm/admin/?<?php echo "group_id=$group_id&add_cat=1&group_project_id=$group_project_id"; ?>">(admin)</a>
+		</td>
 
-<TABLE BORDER="0" WIDTH="100%">
-	<TR>    
-		<TD><B>Subproject:</B>
-		<BR>
-		<?php echo pm_show_subprojects_box('new_group_project_id',$group_id,$group_project_id); ?>
-		</TD>
+		<td>
+		<input type="submit" value="Submit Changes" name="submit">
+		</td>
+	</tr>
 
-		<TD><FONT SIZE="-1">
-		<INPUT TYPE="submit" value="Submit Changes" name="submit"></FONT>
-		</TD>
-	</TR>
+	<tr>
+		<td>
+		<b>Percent Complete:</b><br>
+		<?php echo $pg->percentCompleteBox('percent_complete',$pt->getPercentComplete()); ?>
+		</td>
 
-	<TR>
-		<TD><B>Percent Complete:</B>
-		<BR>
-		<?php echo pm_show_percent_complete_box('percent_complete',db_result($result,0,'percent_complete')); ?>
-		</TD>
+		<td>
+		<b>Priority:</b><br>
+		<?php echo build_priority_select_box('priority',$pt->getPriority()); ?>
+		</td>
+	</tr>
 
-		<TD><B>Priority:</B>
-		<BR>
-		<?php echo build_priority_select_box('priority',db_result($result,0,'priority')); ?>
-		</TD>
-	</TR>
+  	<tr>
+		<td colspan="2">
+		<b>Task Summary:</b><br>
+		<input type="text" name="summary" size="40" MAXLENGTH="65" value="<?php echo $pt->getSummary(); ?>">
+		</td>
+	</tr>
 
-  	<TR>
-		<TD COLSPAN="2"><B>Task Summary:</B>
-		<BR>
-		<INPUT TYPE="text" name="summary" size="40" MAXLENGTH="65" VALUE="<?php echo db_result($result,0,'summary'); ?>">
-		</TD>
-	</TR>
+	<tr>
+		<td colspan="2">
+		<b>Original Comment:</b><br>
+		<?php echo nl2br( $pt->getDetails() ); ?>
+		<p>
+		<b>Add A Comment:</b><br>
+		<textarea name="details" rows="5" cols="40" wrap="soft"></textarea>
+		</td>
+	</tr>
 
-	<TR>
-		<TD COLSPAN="2">
-		<B>Original Comment:</B>
-		<P>
-		<?php echo nl2br(db_result($result,0,'details')); ?>
-		<P>
-		<B>Add A Comment:</B>
-		<BR>
-		<TEXTAREA NAME="details" ROWS="5" COLS="40" WRAP="SOFT"></TEXTAREA>
-		</TD>
-	</TR>
-
-	<TR>
-    		<TD COLSPAN="2"><B>Start Date:</B>
-		<BR>
+	<tr>
+		<td colspan="2">
+		<b>Start Date:</b><br>
 		<?php
-		echo pm_show_month_box ('start_month',date('m', db_result($result,0,'start_date')));
-		echo pm_show_day_box ('start_day',date('d', db_result($result,0,'start_date')));
-		echo pm_show_year_box ('start_year',date('Y', db_result($result,0,'start_date')));
-		echo pm_show_hour_box ('start_hour',date('G', db_result($result,0,'start_date')));
-		echo pm_show_minute_box ('start_minute',date('i', db_result($result,0,'start_date')));		
-		?>
-		<BR><a href="calendar.php">View Calendar</a>
-		</TD>
-	</TR>
+		echo $pg->showMonthBox ('start_month',date('m', $pt->getStartDate()));
+		echo $pg->showDayBox ('start_day',date('d', $pt->getStartDate()));
+		echo $pg->showYearBox ('start_year',date('Y', $pt->getStartDate()));
+		echo $pg->showHourBox ('start_hour',date('G', $pt->getStartDate()));
+		echo $pg->showMinuteBox ('start_minute',date('i',$pt->getStartDate())); 
+		?><br>
+		The system will modify your start/end dates if you attempt to create a start date
+		earlier than the end date of any tasks you depend on.
+		<br><a href="calendar.php" target="_blank">View Calendar</a>
+		</td>
+	</tr>
 
-	<TR>
-		<TD COLSPAN="2"><B>End Date:</B>
-		<BR>
+	<tr>
+		<td colspan="2">
+		<b>End Date:</b><br>
 		<?php
-		echo pm_show_month_box ('end_month',date('m', db_result($result,0,'end_date')));
-		echo pm_show_day_box ('end_day',date('d', db_result($result,0,'end_date')));
-		echo pm_show_year_box ('end_year',date('Y', db_result($result,0,'end_date')));
-		echo pm_show_hour_box ('end_hour',date('G', db_result($result,0,'end_date')));
-		echo pm_show_minute_box ('end_minute',date('i', db_result($result,0,'end_date')));		
+		echo $pg->showMonthBox ('end_month',date('m', $pt->getEndDate()));
+		echo $pg->showDayBox ('end_day',date('d', $pt->getEndDate()));
+		echo $pg->showYearBox ('end_year',date('Y', $pt->getEndDate()));
+		echo $pg->showHourBox ('end_hour',date('G', $pt->getEndDate()));
+		echo $pg->showMinuteBox ('end_minute',date('i', $pt->getEndDate()));
 		?>
-		</TD>
-	</TR>
+		</td>
+	</tr>
 
-	<TR>
-		<TD>
-		<B>Assigned To:</B>
-		<BR>
+	<tr>
+		<td valign="top">
+		<b>Assigned To:</b><br>
 		<?php
 		/*
 			List of possible users that this one could be assigned to
 		*/
-		echo pm_multiple_assigned_box ('assigned_to[]',$group_id,$project_task_id);
+		echo $pt->multipleAssignedBox ();
 		?>
-		</TD>
+		</td>
 
-		<TD>
-		<B>Dependent On Task:</B>
-		<BR>
+		<td valign="top">
+		<b>Dependent On Task:</b><br>
 		<?php
 		/*
 			List of possible tasks that this one could depend on
 		*/
 
-		echo pm_multiple_task_depend_box ('dependent_on[]',$group_project_id,$project_task_id);
-		?>
-		</TD>
-	</TR>
+		echo $pt->multipleDependBox();
+		?><br>
+		You should choose only tasks which must be completed before this task can start.
+		</td>
+	</tr>
 
-	<TR>
-		<TD>
-		<B>Hours:</B>
-		<BR>
-		<INPUT TYPE="text" name="hours" size="5" VALUE="<?php echo db_result($result,0,'hours'); ?>">
-		</TD>
+	<tr>
+		<td>
+		<b>Hours:</b><br>
+		<input type="text" name="hours" size="5" value="<?php echo $pt->getHours(); ?>">
+		</td>
 
-		<TD>
-		<B>Status:</B>
-		<BR>
+		<td>
+		<b>Status:</b><br>
 		<?php
-		echo pm_status_box ('status_id',db_result($result,0,'status_id'));
+		echo $pg->statusBox('status_id', $pt->getStatusID() );
 		?>
-		</TD>
-	</TR>
+		</td>
+	</tr>
 
-	<TR>
-		<TD COLSPAN="2">
-			<?php echo pm_show_dependent_tasks ($project_task_id,$group_id,$group_project_id); ?>
-		</TD>
-	</TR>
+	<tr>
+		<td colspan="2">
+			<?php echo $pt->showDependentTasks(); ?>
+		</td>
+	</tr>
 
-	<TR>
-		<TD COLSPAN="2">
-			<?php echo pm_show_task_details ($project_task_id); ?>
-		</TD>
-	</TR>
+	<tr>
+		<td colspan="2">
+			<?php echo $pt->showRelatedArtifacts(); ?>
+		</td>
+	</tr>
 
-	<TR>
-		<TD COLSPAN="2">
-			<?php echo pm_show_task_history ($project_task_id); ?>
-		</TD>
-	</TR>
+	<tr>
+		<td colspan="2">
+			<?php echo $pt->showMessages(); ?>
+		</td>
+	</tr>
 
-	<TR>
-		<TD COLSPAN="2" ALIGN="MIDDLE">
-		<INPUT TYPE="submit" value="Submit Changes" name="submit">
-		</TD>
+	<tr>
+		<td colspan="2">
+			<?php echo $pt->showHistory(); ?>
+		</td>
+	</tr>
+
+	<tr>
+		<td colspan="2" ALIGN="MIDDLE">
+		<input type="submit" value="Submit Changes" name="submit">
+		</td>
 		</form>
-	</TR>
+	</tr>
 
 </table>
 <?php

Modified: trunk/gforge_base/evolvisforge/gforge/www/pm/reporting/index.php
===================================================================
--- trunk/gforge_base/evolvisforge/gforge/www/pm/reporting/index.php	2010-02-25 15:04:45 UTC (rev 983)
+++ trunk/gforge_base/evolvisforge/gforge/www/pm/reporting/index.php	2010-02-25 15:04:49 UTC (rev 984)
@@ -1,224 +1,240 @@
 <?php
 /**
-  *
-  * SourceForge Project/Task Manager (PM): Reporting Facility
-  *
-  * SourceForge: Breaking Down the Barriers to Open Source Development
-  * Copyright 1999-2001 (c) VA Linux Systems
-  * http://sourceforge.net
-  *
-  * @version   $Id$
-  *
-  */
+ * GForge Project Management Facility
+ *
+ * Copyright 2002 GForge, LLC
+ * http://gforge.org/
+ *
+ * @version   $Id$
+ */
+/*
 
+	Project/Task Manager
+	By Tim Perdue, Sourceforge, 11/99
+	Heavy rewrite by Tim Perdue April 2000
 
+	Total rewrite in OO and GForge coding guidelines 12/2002 by Tim Perdue
+*/
+
 require_once('pre.php');
-require_once('www/pm/pm_utils.php');
+require_once('www/pm/include/ProjectGroupHTML.class');
+require_once('common/pm/ProjectGroupFactory.class');
+require_once('common/pm/ProjectCategory.class');
 require_once('www/project/stats/project_stats_utils.php');
 require_once('www/include/tool_reports.php');
 
+if (!session_loggedin()) {
+	exit_not_logged_in();
+}
+
+if (!$group_id) {
+	exit_no_group();
+}
+
+$g =& group_get_object($group_id);
+if (!$g || !is_object($g)) {
+	exit_no_group();
+} elseif ($g->isError()) {
+	exit_error('Error',$g->getErrorMessage());
+}
+
+$perm =& $g->getPermission( session_get_user() );
+if (!$perm->isPMAdmin()) {
+	exit_permission_denied();
+}
+
+
 $page_title="Task Reporting System";
 $bar_colors=array("pink","violet");
 
 function pm_reporting_header($group_id) {
-        reports_header($group_id,
-        	array('aging','tech','subproject'),
-                array('Aging Report','Tasks by Technician','Tasks by Subproject')
+		reports_header($group_id,
+			array('aging','tech','subproject'),
+				array('Aging Report','Tasks by Technician','Tasks by Subproject')
 	);
 }
 
 function pm_quick_report($group_id,$title,$subtitle1,$sql1,$subtitle2,$sql2,$comment="") {
-        global $bar_colors;
+		global $bar_colors;
 
-       	pm_header(array ("title"=>$title,'pagename'=>'pm_reporting'));
-       	pm_reporting_header($group_id);
-       	echo "\n<H1>$title</H1>";
+	   	pm_header(array ("title"=>$title,'pagename'=>'pm_reporting'));
+	   	pm_reporting_header($group_id);
+	   	echo "\n<H1>$title</H1>";
 
-        reports_quick_graph($subtitle1,$sql1,$sql2,$bar_colors);
+		reports_quick_graph($subtitle1,$sql1,$sql2,$bar_colors);
 
-        if ($comment) echo $comment;
+		if ($comment) echo $comment;
 
 	pm_footer(array());
 }
 
 
-if ($group_id && user_ismember($group_id/*,"P2"*/)) {
+include_once('www/include/HTML_Graphs.php');
 
-	include_once('www/include/HTML_Graphs.php');
+if ($what) {
+	/*
+		Update the database
+	*/
 
-	if ($what) {
-		/*
-			Update the database
-		*/
+	$period_clause=period2sql($period,$span,"start_date");
 
-                $period_clause=period2sql($period,$span,"start_date");
+	if ($what=="aging") {
 
-		if ($what=="aging") {
+		pm_header(array ("title"=>"Aging Report",'pagename'=>'pm_reporting'));
+		pm_reporting_header($group_id);
+		echo "\n<H1>Aging Report</H1>";
 
-			pm_header(array ("title"=>"Aging Report",'pagename'=>'pm_reporting'));
-			pm_reporting_header($group_id);
-			echo "\n<H1>Aging Report</H1>";
+		$time_now=time();
+//		echo $time_now."<P>";
 
-			$time_now=time();
-//			echo $time_now."<P>";
+		if (!$period || $period=="lifespan") {
+			$period="month";
+			$span=12;
+		}
 
-		        if (!$period || $period=="lifespan") {
-		        	$period="month";
-                                $span=12;
-		        }
+		if (!$span) {
+			$span=1;
+		}
+		$sub_duration=period2seconds($period,1);
+//		echo $sub_duration,"<br>";
 
-			if (!$span) $span=1;
-                        $sub_duration=period2seconds($period,1);
-//                        echo $sub_duration,"<br>";
+		for ($counter=1; $counter<=$span; $counter++) {
 
-			for ($counter=1; $counter<=$span; $counter++) {
+			$start=($time_now-($counter*$sub_duration));
+			$end=($time_now-(($counter-1)*$sub_duration));
 
-				$start=($time_now-($counter*$sub_duration));
-				$end=($time_now-(($counter-1)*$sub_duration));
+			$sql="SELECT avg((end_date-start_date)/(24*60*60)) ".
+				 "FROM project_task,project_group_list ".
+				 "WHERE end_date > 0 ".
+				 "AND (start_date >= '$start' AND start_date <= '$end') ".
+				 "AND project_task.status_id=2 ".
+				 "AND project_group_list.group_project_id=project_task.group_project_id ".
+				 "AND project_group_list.group_id='$group_id' ";
 
-				$sql="SELECT avg((end_date-start_date)/(24*60*60)) ".
-                                     "FROM project_task,project_group_list ".
-                                     "WHERE end_date > 0 ".
-                                     "AND (start_date >= '$start' AND start_date <= '$end') ".
-                                     "AND project_task.status_id=2 ".
-       			             "AND project_group_list.group_project_id=project_task.group_project_id ".
-                                     "AND project_group_list.group_id='$group_id' ";
+			$result = db_query($sql);
 
-				$result = db_query($sql);
+			$names[$counter-1]=date("Y-m-d",($start))." to ".date("Y-m-d",($end));
+			$values[$counter-1]=((int)(db_result($result, 0,0)*1000))/1000;
+		}
 
-				$names[$counter-1]=date("Y-m-d",($start))." to ".date("Y-m-d",($end));
-				$values[$counter-1]=((int)(db_result($result, 0,0)*1000))/1000;
-			}
+		GraphIt($names, $values,
+			"Average Duration For Closed Tasks (days)");
 
-			GraphIt($names, $values,
-                        "Average Duration For Closed Tasks (days)");
+		echo "<P>";
 
-			echo "<P>";
+		for ($counter=1; $counter<=$span; $counter++) {
 
-			for ($counter=1; $counter<=$span; $counter++) {
+			$start=($time_now-($counter*$sub_duration));
+			$end=($time_now-(($counter-1)*$sub_duration));
 
-				$start=($time_now-($counter*$sub_duration));
-				$end=($time_now-(($counter-1)*$sub_duration));
+			$sql="SELECT count(*) ".
+				 "FROM project_task,project_group_list ".
+				 "WHERE start_date >= '$start' ".
+				 "AND start_date <= '$end' ".
+				 "AND project_group_list.group_project_id=project_task.group_project_id ".
+				 "AND project_group_list.group_id='$group_id' ";
 
-				$sql="SELECT count(*) ".
-                                     "FROM project_task,project_group_list ".
-                                     "WHERE start_date >= '$start' ".
-                                     "AND start_date <= '$end' ".
-       			             "AND project_group_list.group_project_id=project_task.group_project_id ".
-                                     "AND project_group_list.group_id='$group_id' ";
+			$result = db_query($sql);
 
-				$result = db_query($sql);
+			$names[$counter-1]=date("Y-m-d",($start))." to ".date("Y-m-d",($end));
+			$values[$counter-1]=db_result($result, 0,0);
+		}
 
-				$names[$counter-1]=date("Y-m-d",($start))." to ".date("Y-m-d",($end));
-				$values[$counter-1]=db_result($result, 0,0);
-			}
+		GraphIt($names, $values, "Number of Tasks Started");
 
-			GraphIt($names, $values, "Number of Tasks Started");
+		echo "<P>";
 
-			echo "<P>";
+		for ($counter=1; $counter<=$span; $counter++) {
 
-			for ($counter=1; $counter<=$span; $counter++) {
+			$start=($time_now-($counter*$sub_duration));
+			$end=($time_now-(($counter-1)*$sub_duration));
 
-				$start=($time_now-($counter*$sub_duration));
-				$end=($time_now-(($counter-1)*$sub_duration));
+			$sql="SELECT count(*) ".
+				 "FROM project_task,project_group_list ".
+				 "WHERE start_date <= '$end' ".
+				 "AND (end_date >= '$end' OR end_date < 1 OR end_date is null) ".
+				 "AND project_group_list.group_project_id=project_task.group_project_id ".
+				 "AND project_group_list.group_id='$group_id' ";
 
-				$sql="SELECT count(*) ".
-                                     "FROM project_task,project_group_list ".
-                                     "WHERE start_date <= '$end' ".
-                                     "AND (end_date >= '$end' OR end_date < 1 OR end_date is null) ".
-       			             "AND project_group_list.group_project_id=project_task.group_project_id ".
-                                     "AND project_group_list.group_id='$group_id' ";
+			$result = db_query($sql);
 
-				$result = db_query($sql);
+			$names[$counter-1]=date("Y-m-d",($end));
+			$values[$counter-1]=db_result($result, 0,0);
+		}
 
-				$names[$counter-1]=date("Y-m-d",($end));
-				$values[$counter-1]=db_result($result, 0,0);
-			}
+		GraphIt($names, $values, "Number of Tasks Still Not Completed");
 
-			GraphIt($names, $values, "Number of Tasks Still Not Completed");
+		echo "<P>";
 
-			echo "<P>";
+		pm_footer(array());
 
-			pm_footer(array());
+	} else if ($what=="subproject") {
 
-		} else if ($what=="subproject") {
+		$sql1="SELECT project_group_list.project_name AS Subproject, count(*) AS Count ".
+			  "FROM project_group_list,project_task ".
+			  "WHERE project_group_list.group_project_id=project_task.group_project_id ".
+			  "AND project_task.status_id = '1' ".
+			  "AND project_group_list.group_id='$group_id' ".
+			  $period_clause .
+			  "GROUP BY Subproject";
+		$sql2="SELECT project_group_list.project_name AS Subproject, count(*) AS Count ".
+			  "FROM project_group_list,project_task ".
+			  "WHERE project_group_list.group_project_id=project_task.group_project_id ".
+			  "AND project_task.status_id <> '3' ".
+			  "AND project_group_list.group_id='$group_id' ".
+			  $period_clause .
+			  "GROUP BY Subproject";
 
-			$sql1="SELECT project_group_list.project_name AS Subproject, count(*) AS Count ".
-                              "FROM project_group_list,project_task ".
-			      "WHERE project_group_list.group_project_id=project_task.group_project_id ".
-                              "AND project_task.status_id = '1' ".
-                              "AND project_group_list.group_id='$group_id' ".
-                              $period_clause .
-			      "GROUP BY Subproject";
-			$sql2="SELECT project_group_list.project_name AS Subproject, count(*) AS Count ".
-                              "FROM project_group_list,project_task ".
-			      "WHERE project_group_list.group_project_id=project_task.group_project_id ".
-                              "AND project_task.status_id <> '3' ".
-                              "AND project_group_list.group_id='$group_id' ".
-                              $period_clause .
-			      "GROUP BY Subproject";
+		pm_quick_report($group_id,
+			  "Tasks By Category",
+			  "Open Tasks By Category",$sql1,
+			  "All Tasks By Category",$sql2);
 
-                	pm_quick_report($group_id,
-                        		  "Tasks By Category",
-                        		  "Open Tasks By Category",$sql1,
-                        		  "All Tasks By Category",$sql2);
+	} else if ($what=="tech") {
 
-		} else if ($what=="tech") {
+		$sql1="SELECT users.user_name AS Technician, count(*) AS Count ".
+			  "FROM users,project_group_list,project_task,project_assigned_to ".
+			  "WHERE users.user_id=project_assigned_to.assigned_to_id ".
+			  "AND project_assigned_to.project_task_id=project_task.project_task_id ".
+			  "AND project_task.group_project_id=project_group_list.group_project_id ".
+			  "AND project_task.status_id = '1' ".
+			  "AND project_group_list.group_id='$group_id' ".
+			  $period_clause .
+			  "GROUP BY Technician";
 
-			$sql1="SELECT users.user_name AS Technician, count(*) AS Count ".
-                              "FROM users,project_group_list,project_task,project_assigned_to ".
-			      "WHERE users.user_id=project_assigned_to.assigned_to_id ".
-                              "AND project_assigned_to.project_task_id=project_task.project_task_id ".
-                              "AND project_task.group_project_id=project_group_list.group_project_id ".
-                              "AND project_task.status_id = '1' ".
-                              "AND project_group_list.group_id='$group_id' ".
-                              $period_clause .
-			      "GROUP BY Technician";
+		$sql2="SELECT users.user_name AS Technician, count(*) AS Count ".
+			  "FROM users,project_group_list,project_task,project_assigned_to ".
+			  "WHERE users.user_id=project_assigned_to.assigned_to_id ".
+			  "AND project_assigned_to.project_task_id=project_task.project_task_id ".
+			  "AND project_task.group_project_id=project_group_list.group_project_id ".
+			  "AND project_task.status_id <> '3' ".
+			  "AND project_group_list.group_id='$group_id' ".
+			  $period_clause .
+			  "GROUP BY Technician";
 
-			$sql2="SELECT users.user_name AS Technician, count(*) AS Count ".
-                              "FROM users,project_group_list,project_task,project_assigned_to ".
-			      "WHERE users.user_id=project_assigned_to.assigned_to_id ".
-                              "AND project_assigned_to.project_task_id=project_task.project_task_id ".
-                              "AND project_task.group_project_id=project_group_list.group_project_id ".
-                              "AND project_task.status_id <> '3' ".
-                              "AND project_group_list.group_id='$group_id' ".
-                              $period_clause .
-			      "GROUP BY Technician";
+		pm_quick_report($group_id,
+		  "Tasks By Technician",
+		  "Open Tasks By Technician",$sql1,
+		  "All Tasks By Technician",$sql2,
+		  "<p>Note that same task can be ".
+		  "assigned to several technicians. ".
+		  "Such task will be counted for ".
+		  "each of them.</p>");
 
-                	pm_quick_report($group_id,
-                        		  "Tasks By Technician",
-                        		  "Open Tasks By Technician",$sql1,
-                        		  "All Tasks By Technician",$sql2,
-                                          "<p>Note that same task can be ".
-                                          "assigned to several technicians. ".
-                                          "Such task will be counted for ".
-                                          "each of them.</p>");
-
-		} else {
-                	exit_missing_param();
-                }
-
 	} else {
-		/*
-			Show main page
-		*/
-		pm_header(array ("title"=>$page_title,'pagename'=>'pm_reporting'));
-
-		pm_reporting_header($group_id);
-
-		pm_footer(array());
-
+		exit_missing_param();
 	}
 
 } else {
+	/*
+		Show main page
+	*/
+	pm_header(array ("title"=>$page_title,'pagename'=>'pm_reporting'));
 
-	// Cannot show reports
+	pm_reporting_header($group_id);
 
-	if (!$group_id) {
-		exit_no_group();
-	} else {
-		exit_permission_denied();
-	}
+	pm_footer(array());
 
 }
+
 ?>

Modified: trunk/gforge_base/evolvisforge/gforge/www/pm/task.php
===================================================================
--- trunk/gforge_base/evolvisforge/gforge/www/pm/task.php	2010-02-25 15:04:45 UTC (rev 983)
+++ trunk/gforge_base/evolvisforge/gforge/www/pm/task.php	2010-02-25 15:04:49 UTC (rev 984)
@@ -1,123 +1,196 @@
 <?php
 /**
-  *
-  * SourceForge Project/Task Manager (PM)
-  *
-  * SourceForge: Breaking Down the Barriers to Open Source Development
-  * Copyright 1999-2001 (c) VA Linux Systems
-  * http://sourceforge.net
-  *
-  * @version   $Id$
-  *
-  */
+ * GForge Project Management Facility
+ *
+ * Copyright 2002 GForge, LLC
+ * http://gforge.org/
+ *
+ * @version   $Id$
+ */
+/*
 
+	Project/Task Manager
+	By Tim Perdue, Sourceforge, 11/99
+	Heavy rewrite by Tim Perdue April 2000
 
+	Total rewrite in OO and GForge coding guidelines 12/2002 by Tim Perdue
+*/
+
 require_once('pre.php');
-require_once('www/pm/pm_utils.php');
-require_once('common/pm/pm_data.php');
+require_once('www/pm/include/ProjectGroupHTML.class');
+require_once('www/pm/include/ProjectTaskHTML.class');
+require_once('common/pm/ProjectGroupFactory.class');
 
-if ($group_id && $group_project_id) {
+if (!$group_id || !$group_project_id) {
+	exit_missing_params();
+}
 
-	$project=&group_get_object($group_id);
+$g =& group_get_object($group_id);
+if (!$g || !is_object($g)) {
+	exit_no_group();
+} elseif ($g->isError()) {
+	exit_error('Error',$g->getErrorMessage());
+}
 
-	if (session_loggedin()) {
-		$perm =& $project->getPermission( session_get_user() );
-	}
+$pg = new ProjectGroupHTML($g,$group_project_id);
+if (!$pg || !is_object($pg)) {
+	exit_error('Error','Could Not Get Factory');
+} elseif ($pg->isError()) {
+	exit_error('Error',$pg->getErrorMessage());
+}
 
-	/*
-		Verify that this group_project_id falls under this group
-	*/
+if (!$func) {
+	$func='browse';
+}
 
-	//can this person view these tasks? they may have hacked past the /pm/index.php page
-	if (session_loggedin() && $perm->isMember()) {
-		$public_flag='0,1';
-	} else {
-		$public_flag='1';
-	}
+if (session_loggedin()) {
+	$perm =& $g->getPermission( session_get_user() );
+}
 
-	/*
-		Verify that this subproject belongs to this project
-	*/
-	$result=db_query("SELECT * FROM project_group_list ".
-		"WHERE group_project_id='$group_project_id' AND group_id='$group_id' AND is_public IN ($public_flag)");
-	if (db_numrows($result) < 1) {
-		exit_permission_denied();
-	}
+/*
+	Figure out which function we're dealing with here
+*/
+switch ($func) {
 
-	if (!$func) {
-		$func='browse';
+	//
+	//	Show blank form to add new task
+	//
+	case 'addtask' : {
+		if (session_loggedin() && $perm->isPMAdmin()) {
+			$pt=new ProjectTaskHTML($pg);
+			if (!$pt || !is_object($pt)) {
+				exit_error('Error','Could Not Get ProjectTask');
+			} elseif ($pt->isError()) {
+				exit_error('Error',$pt->getErrorMessage());
+			}
+			include 'add_task.php';
+		} else {
+			exit_permission_denied();
+		}
+		break;
 	}
-	/*
-		Figure out which function we're dealing with here
-	*/
 
-	switch ($func) {
+	//
+	//	Insert the task into the database
+	//
+	case 'postaddtask' : {
+		if (session_loggedin() && $perm->isPMAdmin()) {
+			$pt = new ProjectTask($pg);
+			if (!$pt || !is_object($pt)) {
+				exit_error('Error','Could Not Get Empty ProjectTask');
+			} elseif ($pt->isError()) {
+				exit_error('Error',$pt->getErrorMessage());
+			}
 
-		case 'addtask' : {
-			if (session_loggedin() && $perm->isPMAdmin()) {
-				include '../pm/add_task.php';
+			$start_date=mktime($start_hour,$start_minute,0,$start_month,$start_day,$start_year);
+			$end_date=mktime($end_hour,$end_minute,0,$end_month,$end_day,$end_year);
+
+			if (!$pt->create($summary,$details,$priority,$hours,$start_date,$end_date,$hours,$category_id,$percent_complete,$assigned_to,$dependent_on)) {
+				exit_error('ERROR',$pt->getErrorMessage());
 			} else {
-				exit_permission_denied();
+				if (count($add_artifact_id) > 0) {
+					if (!$pt->addRelatedArtifacts($add_artifact_id)) {
+						exit_error('ERROR','addRelatedArtifacts():: '.$pt->getErrorMessage());
+					}
+				}
+				$feedback='Task Created Successfully';
+				include 'browse_task.php';
 			}
-			break;;
+		} else {
+			exit_permission_denied();
 		}
+		break;
+	}
 
-		case 'postaddtask' : {
-			if (session_loggedin() && $perm->isPMAdmin()) {
-				if (pm_data_create_task ($group_project_id,$start_month,$start_day,$start_year,
-					$start_hour,$start_minute,$end_month,$end_day,$end_year,
-					$end_hour,$end_minute,$summary,$details,$percent_complete,
-					$priority,$hours,$assigned_to,$dependent_on)) {
-					$feedback='Task Created Successfully';
-					include '../pm/browse_task.php';
-				} else {
-					exit_error('ERROR',$feedback);
-				}
-			} else {
-				exit_permission_denied();
+	//
+	//	Modify an existing task
+	//
+	case 'postmodtask' : {
+		if (session_loggedin() && $perm->isPMAdmin()) {
+			$pt = new ProjectTask($pg,$project_task_id);
+			if (!$pt || !is_object($pt)) {
+				exit_error('Error','Could Not Get ProjectTask');
+			} elseif ($pt->isError()) {
+				exit_error('Error',$pt->getErrorMessage());
 			}
-			break;;
-		}
 
-		case 'postmodtask' : {
-			if (session_loggedin() && $perm->isPMAdmin()) {
-				if (pm_data_update_task ($group_project_id,$project_task_id,$start_month,$start_day,
-					$start_year,$start_hour,$start_minute,$end_month,$end_day,$end_year,$end_hour,
-					$end_minute,$summary,$details,$percent_complete,$priority,$hours,$status_id,
-					$assigned_to,$dependent_on,$new_group_project_id,$group_id)) {
-					$feedback='Task Updated Successfully';
-					include '../pm/browse_task.php';
-				} else {
-					exit_error('ERROR',$feedback);
+			$start_date=mktime($start_hour,$start_minute,0,$start_month,$start_day,$start_year);
+			$end_date=mktime($end_hour,$end_minute,0,$end_month,$end_day,$end_year);
+			if (!$pt->update($summary,$details,$priority,$hours,$start_date,$end_date,$status_id,$category_id,$percent_complete,$assigned_to,$dependent_on)) {
+				exit_error('ERROR','update():: '.$pt->getErrorMessage());
+			} else {
+				if (count($rem_artifact_id) > 0) {
+					if (!$pt->removeRelatedArtifacts($rem_artifact_id)) {
+						exit_error('ERROR','removeRelatedArtifacts():: '.$pt->getErrorMessage());
+					}
 				}
-				break;;
-			} else {
-				exit_permission_denied();
+				$feedback='Task Updated Successfully';
+				include 'browse_task.php';
 			}
+		} else {
+			exit_permission_denied();
 		}
+		break;
+	}
 
-		case 'browse' : {
-			include '../pm/browse_task.php';
-			break;;
-		}
+	//
+	//	Add an artifact relationship to an existing task
+	//
+	case 'addartifact' : {
+		if (session_loggedin() && $perm->isPMAdmin()) {
+			$pt = new ProjectTask($pg,$project_task_id);
+			if (!$pt || !is_object($pt)) {
+				exit_error('Error','Could Not Get ProjectTask');
+			} elseif ($pt->isError()) {
+				exit_error('Error',$pt->getErrorMessage());
+			}
+			if (!$pt->addRelatedArtifacts($add_artifact_id)) {
+				exit_error('ERROR','addRelatedArtifacts():: '.$pt->getErrorMessage());
+			} else {
+				$feedback='Successfully Added Tracker Relationship';
+				include 'browse_task.php';
 
-		case 'detailtask' : {
-			if (session_loggedin() && $perm->isPMAdmin()) {
-				include '../pm/mod_task.php';
-			} else {
-				include '../pm/detail_task.php';
 			}
-			break;;
+		} else {
+			exit_permission_denied();
 		}
+		break;
+	}
 
+	//
+	//	Simply browse existing tasks
+	//
+	case 'browse' : {
+		include 'browse_task.php';
+		break;
 	}
 
-} else {
-	//browse for group first message
-	if (!$group_id || !$group_project_id) {
-		exit_no_group();
-	} else {
-		exit_permission_denied();
+	//
+	//	Show a gantt chart
+	//
+	case 'ganttchart' : {
+		include 'gantt.php';
+		break;
 	}
+
+	//
+	//	View a specific existing task
+	//
+	case 'detailtask' : {
+		$pt=new ProjectTaskHTML($pg,$project_task_id);
+		if (!$pt || !is_object($pt)) {
+			exit_error('Error','Could Not Get ProjectTask');
+		} elseif ($pt->isError()) {
+			exit_error('Error',$pt->getErrorMessage());
+		}
+		if (session_loggedin() && $perm->isPMAdmin()) {
+			include 'mod_task.php';
+		} else {
+			include 'detail_task.php';
+		}
+		break;
+	}
+
 }
+
 ?>




More information about the evolvis-commits mailing list