source: trunk/gm_system/tasks/task_add.php@ 638

Last change on this file since 638 was 638, checked in by barny, 16 years ago
File size: 16.0 KB
Line 
1<?php
2/*
3 $Id: task_add.php 2233 2009-05-22 22:13:55Z andrewsimpson $
4
5 (c) 2002 - 2009 Andrew Simpson <andrew.simpson at paradise.net.nz>
6
7 WebCollab
8 ---------------------------------------
9
10 This program is free software; you can redistribute it and/or modify it under the
11 terms of the GNU General Public License as published by the Free Software Foundation;
12 either version 2 of the License, or (at your option) any later version.
13
14 This program is distributed in the hope that it will be useful, but WITHOUT ANY
15 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
16 PARTICULAR PURPOSE. See the GNU General Public License for more details.
17
18 You should have received a copy of the GNU General Public License along with this
19 program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave,
20 Cambridge, MA 02139, USA.
21
22 Function:
23 ---------
24
25 Add a task or a project (parentless task) to the task-list
26
27*/
28
29//security check
30if(! defined('UID' ) ) {
31 die('Direct file access not permitted' );
32}
33
34include_once(BASE.'includes/admin_config.php' );
35include_once(BASE.'includes/time.php' );
36
37//secure vars
38$content = '';
39$javascript = '';
40$allowed = array();
41
42if(GUEST ) {
43 warning($lang['access_denied'], $lang['not_owner'] );
44}
45
46//get list of common users in private usergroups that this user can view
47$q = db_query('SELECT '.PRE.'usergroups_users.usergroupid AS usergroupid,
48 '.PRE.'usergroups_users.userid AS userid
49 FROM '.PRE.'usergroups_users
50 LEFT JOIN '.PRE.'usergroups ON ('.PRE.'usergroups.id='.PRE.'usergroups_users.usergroupid)
51 WHERE '.PRE.'usergroups.private=1');
52
53for( $i=0 ; $row = @db_fetch_num($q, $i ) ; ++$i ) {
54 if(isset($GID[($row[0])] ) ) {
55 $allowed[($row[1])] = $row[1];
56 }
57}
58
59//shows a priority-select box
60$priority_select_box = "<tr><td>".$lang['priority'].":</td> <td>\n".
61 "<select name=\"priority\">\n".
62 "<option value=\"0\">".$task_state['dontdo']."</option>\n".
63 "<option value=\"1\">".$task_state['low']."</option>\n".
64 "<option value=\"2\" selected=\"selected\">".$task_state['normal']."</option>\n".
65 "<option value=\"3\">".$task_state['high']."</option>\n".
66 "<option value=\"4\">".$task_state['yesterday']."</option>\n".
67 "</select>\n</td></tr>\n";
68
69$content .= "<form method=\"post\" action=\"tasks.php\" onsubmit=\"return fieldCheck('name') && dateCheck();\" >\n".
70 "<fieldset><input type=\"hidden\" name=\"x\" value=\"".X."\" />\n".
71 "<input type=\"hidden\" name=\"action\" value=\"submit_insert\" />\n".
72 "<input type=\"hidden\" id=\"token\" name=\"token\" value=\"".TOKEN."\" />\n".
73 "<input type=\"hidden\" id=\"alert_field\" name=\"alert1\" value=\"".$lang['missing_field_javascript']."\" />\n".
74 "<input type=\"hidden\" id=\"alert_date\" name=\"alert2\" value=\"".$lang['invalid_date_javascript']."\" />\n".
75 "<input type=\"hidden\" id=\"alert_finish\" name=\"alert3\" value=\"".$lang['finish_date_javascript']."\" />\n";
76
77//this is split up in 2 parts for readabilities' sake
78
79// add a new TASK
80if( @safe_integer($_GET['parentid']) ) {
81
82 $parentid = $_GET['parentid'];
83
84 //get info about the parent of this task
85 $q = db_query('SELECT name,
86 deadline,
87 '.$epoch.'deadline) AS epoch_deadline,
88 status,
89 owner,
90 parent,
91 projectid,
92 usergroupid,
93 globalaccess, taskgroupid
94 FROM '.PRE.'tasks WHERE id='.$parentid.' LIMIT 1' );
95
96 if( ! $parent_row = db_fetch_array($q, 0 ) ) {
97 error('Task add', 'No parent for taskid' );
98 }
99
100 switch ($parent_row['status'] ) {
101
102 case 'created':
103 case 'active':
104 //add the project deadline (plus GMT offset) for the javascript
105 $project_deadline = $parent_row['epoch_deadline'] + TZ*60*60;
106 break;
107
108 case 'notactive':
109 case 'cantcomplete':
110 case 'done':
111 case 'nolimit':
112 default:
113 //don't check project deadline with inactive parents
114 $project_deadline = -1;
115 break;
116 }
117
118 $content .= "<input id=\"projectDate\" type=\"hidden\" name=\"projectDate\" value=\"".$project_deadline."\" />\n";
119
120 $content .= "<input type=\"hidden\" name=\"parentid\" value=\"".$parentid."\" />\n".
121 "<input type=\"hidden\" name=\"projectid\" value=\"".$parent_row['projectid']."\" /></fieldset>\n".
122 "<table class=\"celldata\">\n";
123
124 //show project name
125 if($parent_row['projectid'] == $parentid ) {
126 $project_name = $parent_row['name'];
127 }
128 else {
129 $project_name = db_result(db_query('SELECT name FROM '.PRE.'tasks WHERE id='.$parent_row['projectid'] ), 0, 0 );
130 }
131
132 $content .= "<tr><td>".$lang['project'] .":</td> <td><a href=\"tasks.php?x=".X."&amp;action=show&amp;taskid=".$parent_row['projectid']."\">".$project_name."</a></td></tr>\n";
133
134 //check if task has a parent task
135 if( $parent_row['parent'] != 0 ) {
136 $content .= "<tr><td>".$lang['parent_task'].":</td> <td><a href=\"tasks.php?x=".X."&amp;action=show&amp;taskid=".$parent_row['parent']."\">".$parent_row['name']."</a></td> </tr>\n";
137 }
138 $content .= "<tr><td>".$lang['creation_time'].":</td> <td>".nicetime(date('Y-m-d H:i:s', TIME_NOW - date('Z') + TZ*60*60 ) )."</td> </tr>\n".
139 "<tr><td>".$lang['task_name'].":</td> <td><input id=\"name\" type=\"text\" name=\"name\" size=\"60\" /></td> </tr>\n".
140 "<tr><td>".$lang['deadline'].":</td> <td>".date_select_from_timestamp( $parent_row['deadline'] ).
141 "&nbsp;<small><i>".$lang['taken_from_parent']."</i></small></td></tr>\n";
142
143 //priority
144 $content .= $priority_select_box;
145
146 //status
147 // tasks inherit status from parent
148 $s1=''; $s2=''; $s3=''; $s4='';
149 switch ($parent_row['status'] ) {
150
151 case 'notactive':
152 $s2 = "selected=\"selected\" ";
153 break;
154
155 case 'cantcomplete':
156 $s3 = "selected=\"selected\" ";
157 break;
158
159 case 'done':
160 $s4 = "selected=\"selected\" ";
161 break;
162
163 case 'created':
164 case 'nolimit':
165 case 'active':
166 default:
167 $s1 = "selected=\"selected\" ";
168 break;
169 }
170
171 $content .= "<tr><td>".$lang['status'].":</td> <td>\n".
172 "<select id=\"projectStatus\" name=\"status\">\n".
173 "<option value=\"created\" ".$s1.">".$task_state['new']."</option>\n".
174 "<option value=\"notactive\" ".$s2.">".$task_state['planned']."</option>\n".
175 "<option value=\"active\" >".$task_state['active']."</option>\n".
176 "<option value=\"cantcomplete\" ".$s3.">".$task_state['cantcomplete']."</option>\n".
177 "<option value=\"done\" ".$s4.">".$task_state['completed']."</option>\n".
178 "</select></td></tr>";
179
180
181 //get all users in order to show a task owner
182 $q = db_query('SELECT id, fullname, private FROM '.PRE.'users WHERE deleted=\'f\' AND guest=0 ORDER BY fullname');
183
184 //owner box
185 $content .= "<tr><td>".$lang['task_owner'].":</td><td><select name=\"owner\">\n".
186 "<option value=\"0\">".$lang['nobody']."</option>\n";
187 for( $i=0 ; $user_row = @db_fetch_array($q, $i ) ; ++$i) {
188
189 //user test for privacy
190 if($user_row['private'] && ($user_row['id'] != UID ) && ( ! ADMIN ) && (! isset($allowed[($user_row['id'])] ) ) ) {
191 continue;
192 }
193
194 $content .= "<option value=\"".$user_row['id']."\"";
195
196 //default owner is present user
197 if($user_row['id'] == UID )
198 $content .= " selected=\"selected\"";
199
200 $content .= ">".$user_row['fullname']."</option>\n";
201 }
202
203 $content .= "</select></td></tr>\n";
204
205 //get all taskgroups in order to show a task owner
206 $q = db_query('SELECT id, name FROM '.PRE.'taskgroups ORDER BY name');
207
208 $content .= "<tr> <td><a href=\"help/help_language.php?item=taskgroup&amp;type=help&amp;lang=".LOCALE_USER."&amp;lang=".LOCALE_USER."\" onclick=\"window.open('help/help_language.php?item=taskgroup&amp;type=help&amp;lang=".LOCALE_USER."&amp;lang=".LOCALE_USER."'); return false\">".$lang['taskgroup']."</a>: </td> <td><select name=\"taskgroupid\">\n";
209 $content .= "<option value=\"0\">".$lang['no_group']."</option>\n";
210
211 for( $i=0 ; $taskgroup_row = @db_fetch_array($q, $i ) ; ++$i) {
212
213 //inherit taskgroup from parent
214 if($parent_row['taskgroupid'] == $taskgroup_row['id'] ) {
215 $content .= "<option value=\"".$taskgroup_row['id']."\" selected=\"selected\">".$taskgroup_row['name']."</option>\n";
216 }
217 else {
218 $content .= "<option value=\"".$taskgroup_row['id']."\">".$taskgroup_row['name']."</option>\n";
219 }
220 }
221 $content .= "</select></td></tr>\n";
222
223 //show all the groups
224 $q = db_query( 'SELECT id, name, private FROM '.PRE.'usergroups ORDER BY name' );
225
226 $content .= "<tr><td><a href=\"help/help_language.php?item=usergroup&amp;type=help&amp;lang=".LOCALE_USER."&amp;lang=".LOCALE_USER."\" onclick=\"window.open('help/help_language.php?item=usergroup&amp;type=help&amp;lang=".LOCALE_USER."&amp;lang=".LOCALE_USER."'); return false\">".$lang['usergroup']."</a>: </td> <td><select name=\"usergroupid\">\n";
227 $content .= "<option value=\"0\">".$lang['all_groups']."</option>\n";
228
229 for( $i=0 ; $usergroup_row = @db_fetch_array($q, $i ) ; ++$i ) {
230
231 //usergroup test for privacy
232 if( (! ADMIN ) && ($usergroup_row['private'] ) && ( ! isset($GID[($usergroup_row['id'])] ) ) ) {
233 continue;
234 }
235
236 //inherit usergroup from parent, if parent is private
237 if(($parent_row['globalaccess'] == 'f' ) && ( $parent_row['usergroupid'] == $usergroup_row['id'] ) ) {
238 $content .= "<option value=\"".$usergroup_row['id']."\" selected=\"selected\">".$usergroup_row['name']."</option>\n";
239 }
240 else {
241 $content .= "<option value=\"".$usergroup_row['id']."\">".$usergroup_row['name']."</option>\n";
242 }
243 }
244
245 //new task inherits globaccess from parent
246 if($parent_row['globalaccess'] == 'f' ) {
247 //set private
248 $globalaccess = "";
249 }
250 else {
251 //use defaults
252 $globalaccess = DEFAULT_ACCESS;
253 }
254
255 $content .= "</select></td></tr>\n".
256 "<tr><td><a href=\"help/help_language.php?item=globalaccess&amp;type=help&amp;lang=".LOCALE_USER."\" onclick=\"window.open('help/help_language.php?item=globalaccess&amp;type=help&amp;lang=".LOCALE_USER."'); return false\">".$lang['all_users_view']."</a> </td><td><input type=\"checkbox\" name=\"globalaccess\" ".$globalaccess." /></td></tr>\n".
257 "<tr><td><a href=\"help/help_language.php?item=groupaccess&amp;type=help&amp;lang=".LOCALE_USER."&amp;lang=".LOCALE_USER."\" onclick=\"window.open('help/help_language.php?item=groupaccess&amp;type=help&amp;lang=".LOCALE_USER."&amp;lang=".LOCALE_USER."'); return false\">".$lang['group_edit']."</a> </td><td><input type=\"checkbox\" name=\"groupaccess\" ".DEFAULT_EDIT." /></td></tr>\n".
258
259 "<tr> <td>".$lang['task_description']."</td> <td><textarea name=\"text\" rows=\"10\" cols=\"60\"></textarea></td> </tr>\n".
260
261 //do we need to email ?
262 "<tr><td><label for=\"mailowner\">".$lang['email_owner']."</label></td><td><input type=\"checkbox\" name=\"mailowner\" id=\"mailowner\" ".DEFAULT_OWNER." /></td></tr>\n".
263 "<tr><td><label for=\"maillist\">".$lang['email_group']."</label></td><td><input type=\"checkbox\" name=\"maillist\" id=\"maillist\" ".DEFAULT_GROUP." /></td></tr>\n".
264
265 "</table>\n".
266 "<p><input type=\"submit\" value=\"".$lang['add_task']."\" /></p>".
267 "</form>\n";
268
269 new_box( $lang['add_task'], $content );
270
271}
272
273// ADD A NEW PROJECT
274else {
275
276 $content .= "<input type=\"hidden\" name=\"parentid\" value=\"0\" />\n".
277 "<input type=\"hidden\" name=\"projectid\" value=\"0\" />\n".
278 //disable project date check in javascript
279 "<input id=\"projectDate\" type=\"hidden\" name=\"projectDate\" value=\"-1\" />\n".
280 //taskgroup - we don't have this for projects
281 "<input type=\"hidden\" name=\"taskgroupid\" value=\"0\" /></fieldset>\n".
282 "<table class=\"celldata\">\n".
283 "<tr><td>".$lang['creation_time'].":</td><td>".nicetime(date('Y-m-d H:i:s',TIME_NOW - date('Z') + TZ*60*60 ) )."</td></tr>\n".
284 "<tr><td>".$lang['project_name'].":</td> <td><input id=\"name\" type=\"text\" name=\"name\" size=\"30\" /></td> </tr>\n".
285
286 //deadline
287 "<tr><td>".$lang['deadline'].":</td> <td>".date_select()."</td></tr>\n";
288
289 //priority
290 $content .= $priority_select_box;
291
292 //status
293 $content .= "<tr> <td>".$lang['status'].":</td> <td>\n".
294 "<select name=\"status\">\n".
295 "<option value=\"notactive\" >".$task_state['planned_project']."</option>\n".
296 "<option value=\"nolimit\" >".$task_state['no_deadline_project']."</option>\n".
297 "<option value=\"active\" selected=\"selected\" >".$task_state['active_project']."</option>\n".
298 "<option value=\"cantcomplete\" >".$task_state['cantcomplete']."</option>\n".
299 "</select></td></tr>";
300
301 //get all users in order to show a task owner
302 $q = db_query('SELECT id, fullname, private FROM '.PRE.'users WHERE deleted=\'f\' AND guest=0 ORDER BY fullname');
303
304 //owner
305 $content .= "<tr><td>".$lang['project_owner'].":</td><td><select name=\"owner\">\n";
306 for( $i=0 ; $user_row = @db_fetch_array($q, $i) ; ++$i) {
307
308 //user test for privacy
309 if($user_row['private'] && ($user_row['id'] != UID ) && ( ! ADMIN ) && ( ! isset($allowed[($user_row['id'])] ) ) ){
310 continue;
311 }
312
313 $content .= "<option value=\"".$user_row['id']."\"";
314
315 //owner is user
316 if( $user_row['id'] == UID ) {
317 $content .= " selected=\"selected\"";
318 }
319 $content .= ">".$user_row['fullname']."</option>\n";
320 }
321 $content .= "</select></td></tr>\n";
322
323 //show all the groups
324 $q = db_query( 'SELECT id, name, private FROM '.PRE.'usergroups ORDER BY name' );
325 $content .= "<tr> <td><a href=\"help/help_language.php?item=usergroup&amp;type=help&amp;lang=".LOCALE_USER."\" onclick=\"window.open('help/help_language.php?item=usergroup&amp;type=help&amp;lang=".LOCALE_USER."'); return false\">".$lang['usergroup']."</a>: </td> <td><select name=\"usergroupid\">\n".
326 "<option value=\"0\">".$lang['all_groups']."</option>\n";
327
328 for( $i=0 ; $usergroup_row = @db_fetch_array($q, $i ) ; ++$i ) {
329
330 //usergroup test for privacy
331 if( (! ADMIN ) && ($usergroup_row['private'] ) && ( ! isset($GID[($usergroup_row['id'])] ) ) ) {
332 continue;
333 }
334
335 $content .= "<option value=\"".$usergroup_row['id']."\">".$usergroup_row['name']."</option>\n";
336 }
337 $content .= "</select></td></tr>\n".
338 "<tr><td><a href=\"help/help_language.php?item=globalaccess&amp;type=help&amp;lang=".LOCALE_USER."\" onclick=\"window.open('help/help_language.php?item=globalaccess&amp;type=help&amp;lang=".LOCALE_USER."'); return false\">".$lang['all_users_view']."</a> </td><td><input type=\"checkbox\" name=\"globalaccess\" ".DEFAULT_ACCESS." /></td></tr>\n".
339 "<tr><td><a href=\"help/help_language.php?item=groupaccess&amp;type=help&amp;lang=".LOCALE_USER."\" onclick=\"window.open('help/help_language.php?item=groupaccess&amp;type=help&amp;lang=".LOCALE_USER."'); return false\">".$lang['group_edit']."</a> </td><td><input type=\"checkbox\" name=\"groupaccess\" ".DEFAULT_EDIT." /></td></tr>\n".
340
341 "<tr> <td>".$lang['project_description']."</td> <td><textarea name=\"text\" rows=\"10\" cols=\"60\"></textarea></td> </tr>\n".
342
343 //do we need to email ?
344 "<tr><td><label for=\"mailowner\">".$lang['email_owner']."</label></td><td><input type=\"checkbox\" name=\"mailowner\" id=\"mailowner\" ".DEFAULT_OWNER." /></td></tr>\n".
345 "<tr><td><label for=\"maillist\">".$lang['email_group']."</label></td><td><input type=\"checkbox\" name=\"maillist\" id=\"maillist\" ".DEFAULT_GROUP." /></td></tr>\n".
346
347 "</table>\n".
348 "<p><input type=\"submit\" value=\"".$lang['add_project']."\" /></p>".
349 "</form>\n";
350
351 new_box( $lang['add_new_project'], $content );
352
353}
354
355?>
Note: See TracBrowser for help on using the repository browser.