Subversion Repositories public

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
4 andreas 1
<?
2
require_once('version.inc');
3
require_once('dbaccess.inc');
4
require_once('language.inc');
5
require_once('header.inc');
6
require_once('helper.inc');
7
require_once('crypt.inc');
8
require_once('settings.inc');
9
require_once('menu.inc');
10
require_once('knumber.inc');
11
 
12
$year = $_REQUEST["year"];
13
$month = $_REQUEST["month"];
14
$today = $_REQUEST["today"];
15
$func = $_REQUEST["func"];
16
 
17
$db = OpenDB();
18
 
19
if (isset($func) && ($func == "save" || $func == "update")) {
20
   if ($func == "update")
21
      $ca_num = $_REQUEST["ca_num"];
22
 
23
   $ca_prnum = $_REQUEST["ca_prnum"];
24
   $ca_task = $_REQUEST["ca_task"];
25
   $ca_minum = $_REQUEST["ca_minum"];
26
   $ca_date = $_REQUEST["ca_date"];
27
   $ca_end = $_REQUEST["ca_end"];
28
   $ca_title = $_REQUEST["ca_title"];
29
   $ca_text = $_REQUEST["ca_text"];
30
   $ca_priority = $_REQUEST["ca_priority"];
31
   $err = "";
32
 
33
   if (!isset($ca_prnum))
34
      $ca_prnum = 0;
35
 
36
   if (!isset($ca_task))
37
      $ca_task = 0;
38
 
39
   if (!isset($ca_minum))
40
      $ca_minum = 0;
41
 
42
   if (!isset($ca_date))
43
      $err .= "Sie haben kein Startdatum angegeben!<br>\n";
44
 
45
   if (!isset($ca_title))
46
      $err .= "Sie m&uuml;ssen unbedingt einen Titel angeben!<br>\n";
47
 
48
   $indate = $ca_date;
49
   $darr = explode(".", $ca_date);
50
 
51
   if (!checkdate($darr[1], $darr[0], $darr[2]))
52
      $err .= "Sie haben ein ung&uuml;ltiges Startdatum angegeben!<br>\n";
53
   else
54
      $ca_date = gmmktime(0, 0, 0, $darr[1], $darr[0], $darr[2]);
55
 
56
   $enddate= $ca_end;
57
 
58
   if (isset($ca_end)) {
59
      $darr = explode(".", $ca_end);
60
 
61
      if (!checkdate($darr[1], $darr[0], $darr[2]))
62
         $err .= "Sie haben ein ung&uuml;ltiges Endedatum angegeben!<br>\n";
63
      else
64
         $ca_end = gmmktime(0, 0, 0, $darr[1], $darr[0], $darr[2]);
65
   }
66
   else
67
      $ca_end = 0;
68
 
69
   if (!isset($ca_text))
70
      $ca_text = "";
71
 
72
   if (strlen($err) > 0) {
73
      closeDB($db);
74
      Error($err);
75
      echo "<form name=\"datum\" action=\"calentry.php\" method=\"post\">\n";
76
      $darr = explode(".", $indate);
77
      echo "<input type=\"hidden\" name=\"today\" value=\"" . $darr[0] . "\">\n";
78
      echo "<input type=\"hidden\" name=\"month\" value=\"" . $darr[1] . "\">\n";
79
      echo "<input type=\"hidden\" name=\"year\" value=\"" . $darr[2] . "\">\n";
80
 
81
      if ($func == "update")
82
         echo "<input type=\"hidden\" name=\"ca_num\" value=\"$ca_num\">\n";
83
 
84
      echo "<input type=\"hidden\" name=\"ca_prnum\" value=\"$ca_prnum\">\n";
85
      echo "<input type=\"hidden\" name=\"ca_task\" value=\"$ca_task\">\n";
86
      echo "<input type=\"hidden\" name=\"ca_minum\" value=\"$ca_minum\">\n";
87
      echo "<input type=\"hidden\" name=\"ca_title\" value=\"$ca_title\">\n";
88
      echo "<input type=\"hidden\" name=\"ca_text\" value=\"$ca_text\">\n";
89
      echo "<input type=\"hidden\" name=\"ca_date\" value=\"$indate\">\n";
90
      echo "<input type=\"hidden\" name=\"ca_end\" value=\"$enddate\">\n";
91
      echo "<input type=\"hidden\" name=\"ca_priority\" value=\"$ca_priority\">\n";
92
 
93
      if (isset($func) && $func == "plan")
94
         echo "<input type=\"hidden\" name=\"func\" value=\"plan\">\n";
95
 
96
      echo "<input type=\"hidden\" name=\"header\" value=\"1\">\n";
97
      echo "<input type=\"hidden\" name=\"menu\" value=\"0\">\n";
98
      echo "<table class=\"indent\"><tr><td>\n";
99
      Button("<-- Zur&uuml;ck", "datum");
100
      echo "</td></tr></table>\n";
101
      echo "</form>\n";
102
      include('footer.inc');
103
      return;
104
   }
105
 
106
   if (isset($ca_prnum) && $ca_prnum > 0) {
107
      $query = "select pr_pl from project where pr_num = $ca_prnum";
108
      $result = QueryDB($db, $query);
109
 
110
      if (!$result) {
111
         closeDB($db);
112
	 return;
113
      }
114
 
115
      $data = fetchDB($result, 0);
116
      $ca_writer = $data[0];
117
   } else
118
      $ca_writer = $unum;
119
 
120
   if ($func != "update") {
121
      $query = "select co_calendar from counter";
122
      $result = QueryDB($db, $query);
123
 
124
      if (!$result) {
125
         closeDB($db);
126
         return;
127
      }
128
 
129
      $data = fetchDB($result, 0);
130
      $co_calendar = $data[0];
131
      $co_calendar++;
132
 
133
      $query = "insert into calendar (ca_num,";
134
 
135
      if ($ca_prnum > 0)
136
         $query .= "ca_prnum,";
137
 
138
      if ($ca_minum > 0)
139
         $query .= "ca_minum,";
140
 
141
      if ($ca_task > 0)
142
         $query .= "ca_task,";
143
 
144
      $query .= "ca_date, ca_title, ca_text, ca_status, ca_end, ca_writer, ";
145
      $query .= "ca_repeat, ca_repanz, ca_priority) values ($co_calendar,";
146
 
147
      if ($ca_prnum > 0)
148
         $query .= "$ca_prnum,";
149
 
150
      if ($ca_minum > 0)
151
         $query .= "$ca_minum,";
152
 
153
      if ($ca_task > 0)
154
         $query .= "$ca_task,";
155
 
156
      $query .= "$ca_date, '$ca_title', '$ca_text',";
157
      $query .= "1, $ca_end, $ca_writer, 0, 0, $ca_priority)";
158
   } else {
159
      $query = "update calendar set ";
160
      $beistr = "";
161
 
162
      if ($ca_prnum > 0) {
163
         $query .= "ca_prnum = $ca_prnum";
164
	 $beistr = ",";
165
      }
166
 
167
      if ($ca_minum > 0) {
168
         $query .= "$beistr ca_minum = $ca_minum";
169
	 $beistr = ",";
170
      }
171
 
172
      if ($ca_task > 0) {
173
         $query .= "$beistr ca_task = $ca_task";
174
         $beistr = ",";
175
      }
176
 
177
      $query .= "$beistr ca_date = $ca_date, ca_title = '$ca_title',";
178
      $query .= "ca_text = '$ca_text', ca_end = $ca_end, ca_priority = $ca_priority ";
179
      $query .= "where ca_num = $ca_num";
180
   }
181
 
182
   QueryDB($db, "begin");
183
 
184
   if (!QueryDB($db, $query)) {
185
      QueryDB($db, "rollback");
186
      closeDB($db);
187
      return;
188
   }
189
 
190
   if ($func != "update") {
191
      $query = "update counter set co_calendar = $co_calendar";
192
 
193
      if (!QueryDB($db, $query)) {
194
         QueryDB($db, "rollback");
195
         closeDB($db);
196
         return;
197
      }
198
   }
199
 
200
   QueryDB($db, "commit");
201
   echo "<p class=\"cry\">Eintrag wurde erfolgreich gespeichert!</p>\n";
202
   echo "<form name=\"datum\" action=\"appt.php\" method=\"post\">\n";
203
   $darr = explode(".", $indate);
204
   echo "<input type=\"hidden\" name=\"today\" value=\"" . $darr[0] . "\">\n";
205
   echo "<input type=\"hidden\" name=\"month\" value=\"" . $darr[1] . "\">\n";
206
   echo "<input type=\"hidden\" name=\"year\" value=\"" . $darr[2] . "\">\n";
207
   echo "<input type=\"hidden\" name=\"header\" value=\"1\">\n";
208
   echo "<input type=\"hidden\" name=\"menu\" value=\"0\">\n";
209
   echo "<table class=\"indent\"><tr><td>\n";
210
   Button("Weiter -->", "datum");
211
   echo "</td></tr></table>\n";
212
   echo "</form>\n";
213
   include('footer.inc');
214
   return;
215
}
216
 
217
$ca_num = $_REQUEST['ca_num'];
218
$ca_prnum = $_REQUEST['ca_prnum'];
219
$ca_task = $_REQUEST['ca_task'];
220
$ca_minum = $_REQUEST['ca_minum'];
221
$ca_date = $_REQUEST['ca_date'];
222
$ca_end = $_REQUEST['ca_end'];
223
$ca_title = $_REQUEST['ca_title'];
224
$ca_text = $_REQUEST['ca_text'];
225
$ca_writer = $_REQUEST['ca_writer'];
226
$ca_priority = $_REQUEST['ca_priority'];
227
 
228
echo "<form name=\"Cal\" action=\"calentry.php\" method=\"post\">\n";
229
 
230
if (isset($func) && $func == "edit") {
231
   echo "<input type=\"hidden\" name=\"func\" value=\"update\">\n";
232
   echo "<input type=\"hidden\" name=\"ca_num\" value=\"$ca_num\">\n";
233
} else
234
   echo "<input type=\"hidden\" name=\"func\" value=\"save\">\n";
235
 
236
echo "<input type=\"hidden\" name=\"header\" value=\"1\">\n";
237
echo "<input type=\"hidden\" name=\"menu\" value=\"0\">\n";
238
 
239
if (isset($func) && $func == "plan") {
240
   echo "<input type=\"hidden\" name=\"ca_prnum\" value=\"$ca_prnum\">\n";
241
   echo "<input type=\"hidden\" name=\"ca_task\" value=\"$ca_task\">\n";
242
}
243
 
244
echo "<table class=\"input\">\n";
245
echo "<tr><th class=\"sel\" colspan=2>";
246
 
247
if (isset($ca_num) && $ca_num > 0)
248
   echo "Kalendereintrag editieren";
249
else
250
   echo "Neuer Kalendereintrag";
251
 
252
echo "</th></tr>\n";
253
// Anzeigen der Projekte fuer die ein Kalendertask erfasst werden kann.
254
// Die angezeigten Projekte haengen von der Berechtigungsstufe ab.
255
echo "<tr><td>Projekt:</td><td>\n";
256
 
257
if ($rstufe == 1 || $rstufe == 2) {
258
   $query = "select pr_num, pr_name from project where ";
259
 
260
   if ($rstufe == 1) {
261
      $query .= "pr_status = 0 ";
262
   } else if ($rstufe == 2) {
263
      $query .= "pr_status = 0 and pr_pl = $unum";
264
   }
265
} else if ($rstufe >= 3) {
266
   $query = "select distinct al_ressource, ta_plnum, pl_prnum, pr_name from ";
267
   $query .= "allocation, task, plan, project ";
268
   $query .= "where task.ta_num = allocation.al_task and ";
269
   $query .= "plan.pl_num = task.ta_plnum and project.pr_num = plan.pl_prnum";
270
}
271
 
272
if ($rstufe >= 3)
273
   $query .= " order by pl_prnum";
274
else
275
   $query .= " order by pr_num";
276
 
277
$result = QueryDB($db, $query);
278
 
279
if (!$result) {
280
   closeDB($db);
281
   include('footer.inc');
282
   return;
283
}
284
 
285
$anz = numrowsDB($result);
286
 
287
if (!$anz) {
288
   echo "--- Keine Projekte ---";
289
} else {
290
   echo "<select ";
291
 
292
   if (isset($func) && $func == "plan")
293
      echo "disabled ";
294
 
295
   echo "onChange=\"javascript:MoveTo('calentry.php','ca_prnum='+this.value+'&header=1&menu=0')\" name=\"ca_prnum\">\n<option value=0>-- kein Projekt --</option>\n";
296
   $i = 0;
297
 
298
   while ($i < $anz) {
299
      $data = fetchDB($result, $i);
300
 
301
      if ($rstufe == 3) {
302
         $pr_num = $data[2];
303
	 $pr_name = $data[3];
304
      } else {
305
         $pr_num = $data[0];
306
	 $pr_name = $data[1];
307
      }
308
 
309
      # Pruefen, ob es sich um ein laufendes Projekt handelt
310
      $query = "select count(*) from plan where pl_status = 6 and pl_prnum = $pr_num";
311
 
312
      if (!($resco = QueryDB($db, $query))) {
313
         closeDB($db);
314
         include('footer.inc');
315
         return;
316
      }
317
 
318
      $data = fetchDB($resco, 0);
319
 
320
      if ($data[0] > 0) {
321
         $i++;
322
         continue;
323
      }
324
 
325
      if (isset($ca_prnum) && $ca_prnum == $pr_num)
326
         echo "<option selected value=\"$pr_num\">$pr_num $pr_name</option>\n";
327
      else
328
         echo "<option value=\"$pr_num\">$pr_num $pr_name</option>\n";
329
 
330
      $i++;
331
   }
332
 
333
   echo "</select>\n";
334
}
335
 
336
echo "</td></tr>\n";
337
// Aussuchen eines Tasks. Es werden nur jene Tasks angezeigt, welche
338
// dem zuvor ausgewaehlten Projekt entsprechen. Wurde kein Projekt
339
// gewaehlt ist diese Auswahl deaktiviert!
340
echo "<tr><td>Task:</td><td>";
341
 
342
if (isset($ca_prnum) && $ca_prnum > 0) {
343
   // Ermitteln der Plannummer
344
   $query = "SELECT pl_num, pl_lfd FROM plan WHERE pl_prnum = $ca_prnum ";
345
   $query .= "ORDER BY pl_lfd desc";
346
   $result = QueryDB($db, $query);
347
 
348
   if (!$result) {
349
      closeDB($db);
350
      return;
351
   }
352
 
353
   if (numrowsDB($result) > 0) {
354
      $data = fetchDB($result, 0);
355
      $pl_num = $data[0];
356
 
357
      echo "<select ";
358
 
359
      if (isset($func) && $func == "plan")
360
         echo "disabled ";
361
 
362
      echo "onChange=\"javascript:MoveTo('calentry.php','ca_prnum=$ca_prnum&ca_task='+this.value+'&header=1&menu=0')\" name=\"ca_task\">\n";
363
 
364
      if (isset($ca_task) && $ca_task > 0) {
365
         $query = "select ta_start, ta_duration from task where ";
366
	 $query .= "ta_num = $ca_task";
367
	 $result = QueryDB($db, $query);
368
 
369
	 if (!$result) {
370
	    closeDB($db);
371
	    return;
372
	 }
373
 
374
	 $data = fetchDB($result, 0);
375
	 $ta_start = $data[0];
376
	 $ta_duration = $data[1];
377
         $sel = $ca_task;
378
      }
379
      else
380
         $sel = 0;
381
 
382
      echo "<option value=\"0\">-- kein Task --</option>\n";
383
      SelectTask($pl_num, 0, $sel);
384
      echo "</select>\n";
385
   } else
386
      echo "&nbsp;";
387
} else {
388
   echo "&nbsp;";
389
}
390
 
391
echo "</td></tr>\n";
392
// Aussuchen eines Mitarbeiters dem der Kalendereintrag zugeordnet werden
393
// soll. Wurde zuvor ein Task ausgewaehlt, werden hier nur die dem Task
394
// zugeordneten Mitarbeiter angezeigt.
395
echo "<tr><td>Mitarbeiter:</td><td>";
396
if (isset($ca_task) && $ca_task > 0) {
397
   $query = "select distinct al_ressource, mi_vname, mi_nname from allocation,";
398
   $query .= "mitarbeiter where al_task = $ca_task and mi_num = al_ressource ";
399
   $query .= "order by mi_nname, mi_vname";
400
} else if ($rstufe >= 3) {
401
   $query = "select mi_num, mi_vname, mi_nname from mitarbeiter ";
402
   $query = "where mi_num = $unum";
403
} else {
404
   $query = "select mi_num, mi_vname, mi_nname from mitarbeiter ";
405
   $query .= "order by mi_nname, mi_vname";
406
}
407
 
408
$result = QueryDB($db, $query);
409
 
410
if (!$result) {
411
   closeDB($db);
412
   include('footer.inc');
413
   return;
414
}
415
 
416
echo "<select name=\"ca_minum\">";
417
 
418
if ($rstufe < 2)
419
   echo "<option value=\"0\">-- kein Mitarbeiter --</option>\n";
420
 
421
$anz = numrowsDB($result);
422
$i = 0;
423
 
424
while ($i < $anz) {
425
   $data = fetchDB($result, $i);
426
   $mi_num = $data[0];
427
   $mi_vname = $data[1];
428
   $mi_nname = $data[2];
429
   echo "<option ";
430
 
431
   if (isset($ca_minum) && $ca_minum > 0 && $ca_minum == $mi_num)
432
      echo "selected ";
433
 
434
   echo "value=\"$mi_num\">$mi_nname $mi_vname</option>\n";
435
   $i++;
436
}
437
 
438
echo "</select></td></tr>\n";
439
echo "<tr><td>Priorit&auml;t:</td><td>";
440
echo "<select name=\"ca_priority\">\n";
441
 
442
for ($i = 0; $i < 3; $i++) {
443
   echo "<option ";
444
 
445
   if ($i == $ca_priority)
446
      echo "selected ";
447
 
448
   switch ($i) {
449
      case 0: echo "value=\"$i\">Niedrig</option>\n"; break;
450
 
451
      case 1: if (!isset($ca_priority))
452
		 echo "selected ";
453
 
454
	      echo "value=\"$i\">Normal</option>\n";
455
      break;
456
 
457
      case 2: echo "value=\"$i\">Hoch</option>\n"; break;
458
   }
459
}
460
 
461
echo "</select></td></tr>\n";
462
// Eingabe des Startdatums.
463
// Wurde ein Task ausgewaehlt, dann darf dieses Datum nicht kleiner dem
464
// Startdatum des Tasks sein und nicht groesser dem Endedatum des Tasks!
465
echo "<tr><td>Startdatum:</td>";
466
 
467
if (isset($ca_date))
468
   $datum = $ca_date;
469
else
470
   $datum = gmdate($dtformatshort, time());
471
 
472
$vd = GetVisualDate($dtformatshort);
473
echo "<td><input type=\"text\" name=\"ca_date\" value=\"$datum\" size=10 maxlength=10>
474
          <input type=\"button\" value=\"...\" onClick=\"javascript:open_window('calendar.php?header=1&target=window.opener.document.Cal.ca_date', 'Calendar', 200, 250)\">
475
      &nbsp;&nbsp;($vd)</td></tr>\n";
476
// Eingabe des Endedatums. Dieses kann auch leer bleiben.
477
// Wurde ein Task ausgewaehlt, dann darf dieses Datum nicht kleiner dem
478
// Startdatum des Tasks sein und nicht groesser dem Endedatum des Tasks!
479
echo "<tr><td>Endedatum:</td>";
480
 
481
echo "<td><input type=\"text\" name=\"ca_end\" value=\"$ca_end\" size=10 maxlength=10>
482
          <input type=\"button\" value=\"...\" onClick=\"javascript:open_window('calendar.php?header=1&target=window.opener.document.Cal.ca_end', 'Calendar', 200, 250)\">
483
      &nbsp;&nbsp;($vd)</td></tr>\n";
484
// Eingabe des Titels. Es muss ein Titel (Ueberschrift) angegeben werden!
485
echo "<tr><td>Titel:</td>";
486
 
487
if (!isset($ca_title) && isset($func) && $func == "plan") {
488
   $query = "select ta_name from task where ta_num = $ca_task";
489
   $result = QueryDB($db, $query);
490
   $data = fetchDB($result, 0);
491
   $ca_title = $data[0];
492
}
493
 
494
echo "<td><input type=\"text\" name=\"ca_title\" value=\"$ca_title\" size=60 maxlength=60></td></tr>\n";
495
// Eingabe eines freien Textes.
496
echo "<tr><td valign=\"top\">Text:</td>";
497
echo "<td><textarea name=\"ca_text\" rows=10 cols=60>$ca_text</textarea></td></tr>\n";
498
echo "<table class=\"indent\"><tr><td>\n";
499
ButtonSubmit("Speichern", "Cal");
500
echo "</td></tr></table>\n";	// class = indent!
501
echo "</td></tr></table>\n";
502
echo "</form>\n";
503
 
504
include('footer.inc');