--- a/fhiiqm/prozess_ed.php Thu Sep 12 09:04:56 2013 +0200
+++ b/fhiiqm/prozess_ed.php Fri Dec 20 15:19:32 2013 +0100
@@ -1,443 +1,515 @@
-<?php
-
-/**
- * @author Bettina Schwarzer, Fritz-Haber-Institut
- * @copyright 03/2012
- *
- * Prozess INSERT/UPDATE/DELETE/DUPLICATE
- */
-
-
- error_reporting(E_ALL ^ E_NOTICE);
-
- session_start();
- if (! isset($_SESSION["userid"]))
- {
- include_once ("inc/func_lib.inc.php");
- login($_SERVER["PHP_SELF"]);
- exit;
- }
-
- if (is_null($_SESSION["recht"]) || (!is_null($_SESSION["recht"]) && !in_array("pzr",$_SESSION["recht"]) && !in_array("pze",$_SESSION["recht"])))
- {
- header("Location: start.php");
- exit;
- }
-
- $zeil = $_GET["z"];
- if (!$zeil) $zeil = 25; // Anzahl der gezeigten Zeilen
- $start = $_GET["st"]; // Start bei DS $start+1
- if (!$start) $start=0;
- $sort = $_GET["s"]; // Sortierung nach Spalte
- $dir = $_GET["d"]; // Sortierrichtung
- $fnum = $_GET["f"]; // Spaltennummer, nach der aktuell gefiltert wird
- $filter = $_GET["b"]; // Filterbegriff
- $getp = "?s=$sort&d=$dir&f=$fnum&b=$filter&st=$start&z=$zeil";
-
- $pzid = $_GET["i"];
- $del = $_POST["del"];
- $sub = $_POST["eintragen"];
- $dup = $_POST["dup"];
- if (!$dup) $dup = $_GET["dp"];
- $copy = $_GET["c"];
- $pz = $_POST["pz"];
- $ok = $_POST["ok"];
- if (!$pz["okn"]) $ok = false;
- $duptext="";
-
- include_once($_SERVER['DOCUMENT_ROOT'] ."/fhiiqm/inc/dbconnect.inc.php");
- include_once($_SERVER['DOCUMENT_ROOT'] ."/fhiiqm/inc/func_lib.inc.php");
- $dbc = new dbconnection();
-
- $sql = "SELECT persknr FROM userweb WHERE userid ='" . $_SESSION["userid"] ."'";
- $persknr = $dbc -> querySingleItem($sql);
-
- if ($dup)
- { // Prozess duplizieren
- $tab = "Prozess";
- $key = "proz_ID";
- $val = $pzid;
-// $ret=1;
- $ret = duplicate_record ($tab, $key, $val);
- if ($ret)
- {
- $pzid_new=$ret;
- // duplizieren Schritte
- $sql = "INSERT INTO Proz_Step SELECT NULL, $pzid_new, proz_step,step_stat_ID,step_bem FROM Proz_Step WHERE proz_ID=$pzid ORDER BY proz_step_ID";
- $rets = $dbc -> execute($sql);
- if ($ret && $rets)
- {
- $addr = $_SERVER["PHP_SELF"] . "?i=$pzid_new&c=1";
- header("Location: $addr");
- exit;
- }
- else $duptext = " - Fehler beim Duplizieren von '". $pz["bez"] ."'";
- }
- else $duptext = " - Fehler beim Duplizieren von '". $pz["bez"] ."'";
- }
-
-?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-
-<head>
- <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
- <link href="css/db.css" rel="STYLESHEET" type="TEXT/CSS" media="screen"/>
- <link href="css/db_print.css" rel="STYLESHEET" type="TEXT/CSS" media="print"/>
-<!--
- <link type="text/css" href="/fhiiqm/css/jquery/ui-lightness/jquery-ui-1.8.16.custom.css" rel="Stylesheet" />
- <script type="text/javascript" src="/fhiiqm/js/jquery/jquery-1.6.2.min.js"></script>
- <script type="text/javascript" src="/fhiiqm/js/jquery/jquery-ui-1.8.16.custom.min.js"></script>
--->
- <link type="text/css" href="/fhiiqm/css/jquery/ui-lightness-1.8.21/jquery-ui-1.8.21.custom.css" rel="Stylesheet" />
- <script type="text/javascript" src="/fhiiqm/js/jquery/jquery-1.7.2.min.js"></script>
- <script type="text/javascript" src="/fhiiqm/js/jquery/jquery-ui-1.8.21.custom.min.js"></script>
-
- <script type="text/javascript">
- //<!--
- var counter = 0;
- var limit = 99;
- var arr = new Array();
- function addInput(divId,anz){
- if (counter == limit) {
- alert("Das Limit von " + counter + " zusätzlichen inputs ist erreicht");
- }
- else
- {
- var newdiv = document.createElement('div');
- var opt="<option value='-1'></option>";
- var i;
- for (var key in arr)
- {
- opt = opt.concat("<option value='",key,"'>",arr[key],"</option>\n" );
- }
- opt += "</select>\n";
- newdiv.innerHTML = "<span></span><input type='text' name='pz[step][]' size='50' maxlength='50' />";
- newdiv.innerHTML += " Status <select name='pz[ststat][]'>"+opt;
- newdiv.innerHTML += " Sort <input type='text' name='pz[sort][]' class='right' size='2' maxlength='2' value='' />";
- newdiv.innerHTML += "<img src='/fhiiqm/img/nixt.gif' border='0' height='100%' />";
- newdiv.innerHTML += "<br /> Bemerkung zu Schritt ";
- newdiv.innerHTML += "<input type='text' name='pz[stbem][]' size='50' maxlength='50' />";
- newdiv.innerHTML += "<span id='cbl'> <input type='checkbox' id='del' name='pz[del][]' value='1'/>";
- newdiv.innerHTML += "<label id='lb' for='del'> löschen</label></span>";
- document.getElementById(divId).appendChild(newdiv);
- var delcb = document.getElementById('del');
- delcb.id = "del_" + anz;
- delcb.style.display = 'none';
- var lcb = document.getElementById('lb');
- lcb.id = "lb_" + anz;
- lcb.setAttribute("for", delcb.id);
- lcb.style.display = 'none';
- counter++;
- }
- }
- function markdelInput(divId,anz){
- for (i=1; i<anz; i++)
- {
- var id = "del_" + i;
- var delcb = document.getElementById(id);
- delcb.style.display = 'inline';
- var idl = "lb_" + i;
- var lcb = document.getElementById(idl);
- lcb.style.display = 'inline';
- }
- }
- function delInput(divId){
- var kn = document.getElementById(divId);
- while (kn.childNodes.length>0 && kn.lastChild.nodeName != "SPAN" && kn.lastChild.nodeName != "A")
- {
- //alert ("vor "+kn.lastChild.nodeName+", nodetyp = "+ kn.lastChild.nodeType);
- var knc = kn.lastChild;
- document.getElementById(divId).removeChild(knc);
- }
- if (kn.lastChild.nodeName == "SPAN") document.getElementById(divId).removeChild(kn.lastChild);
- }
- //-->
- </script>
-
- <title>Edit Projekt</title>
-</head>
-
-<body>
-
- <script>
- $(document).ready(function() {
- $("#bez").focus();
- $("#pers").autocomplete({
- source: "/fhiiqm/inc/ma_list_ac.inc.php",
- minLength: 2,
- select: function(event,ui){$("#pid").val(ui.item.id);}
- });
- $("#persa").autocomplete({
- source: "/fhiiqm/inc/ma_list_ac.inc.php",
- minLength: 2,
- select: function(event,ui){$("#paid").val(ui.item.id);}
- });
- $("#sdat").datepicker({
- dateFormat: 'yy-mm-dd', //nur Datum
- yearRange: '2000:2025',
- changeMonth: true,
- changeYear: true,
- firstDay: 1,
- dayNamesMin: ['So','Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa' ],
- monthNamesShort: ['Jan','Feb','Mar','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez']
- });
- $("#edat").datepicker({
- dateFormat: 'yy-mm-dd', //nur Datum
- yearRange: '2000:2025',
- changeMonth: true,
- changeYear: true,
- firstDay: 1,
- dayNamesMin: ['So','Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa' ],
- monthNamesShort: ['Jan','Feb','Mar','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez']
- });
- $("#psdat").datepicker({
- dateFormat: 'yy-mm-dd', //nur Datum
- yearRange: '2000:2025',
- changeMonth: true,
- changeYear: true,
- firstDay: 1,
- dayNamesMin: ['So','Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa' ],
- monthNamesShort: ['Jan','Feb','Mar','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez']
- });
- $("#pedat").datepicker({
- dateFormat: 'yy-mm-dd', //nur Datum
- yearRange: '2000:2025',
- changeMonth: true,
- changeYear: true,
- firstDay: 1,
- dayNamesMin: ['So','Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa' ],
- monthNamesShort: ['Jan','Feb','Mar','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez']
- });
- $("input[id='pers']").addClass("long20");
- $("input[id='persa']").addClass("long20");
- });
- </script>
-
-<?php
- echo " ";
- echo "<div class=\"float-br smaller\" valign='top'>";
- echo " user: " . $_SESSION["userid"];
- echo " <a class='sc' href='/fhiiqm/logout.php' title='Session beenden'>logout</a></div>\n";
- echo "<div class=\"float-r\"><img src=\"img/sheduled_task.png\" border=\"0\" alt=\"Projekt ändern\" title=\"Projekt ändern\"/></div>\n";
-
-
- echo "<div align='center'>";
- if ($pzid) $text = "editieren"; else $text = "erfassen";
- if ($copy) $duptext = " (Kopie)";
- echo "<h3>Projekt $text$duptext<h3>";
-
- echo "</div>\n";
-
- if (!$ok || (!$sub && !$del && !$dup))
- {
- if ($pzid && (!$sub || !$del) && !isset($pz))
- { // update
- $sql = "SELECT proz_ID,produkt_ID,proz_bez,proz_bez_l,proz_start,proz_end,proz_kosten,
- proz_start_pl,proz_end_pl,proz_kost_pl,
- proz_urg_ID,proz_stat_ID,p.persknr,proz_ref_ID,proz_bem,persknr_a,
- CONCAT (m.nachname, ', ',m.vorname) AS vma,
- CONCAT (a.nachname, ', ',a.vorname) AS ama
- FROM Prozess p LEFT OUTER JOIN Mitarbeiter m
- ON p.persknr=m.persknr LEFT OUTER JOIN Mitarbeiter a
- ON p.persknr_a=a.persknr
- WHERE proz_ID = $pzid";
- if ($res = $dbc -> queryObjectArray($sql))
- {
- foreach ($res as $row)
- {
- $pz["pzid"] = $pzid;
- $pz["bez"] = $row->proz_bez;
- $pz["bezl"] = $row->proz_bez_l;
- $pz["prid"] = $row->produkt_ID;
- $pz["psdat"] = $row->proz_start_pl;
- $pz["pedat"] = $row->proz_end_pl;
- $pz["pkost"] = str_replace('.',',',$row->proz_kost_pl);
- $pz["sdat"] = $row->proz_start;
- $pz["edat"] = $row->proz_end;
- $pz["kost"] = str_replace('.',',',$row->proz_kosten);
- $pz["urg"] = $row->proz_urg_ID;
- $pz["stat"] = $row->proz_stat_ID;
- $pz["persknr"] = $row->persknr;
- $pz["pzref"] = $row->proz_ref_ID;
- $pz["bem"] = $row->proz_bem;
- $pz["persknra"] = $row->persknr_a;
- $pz["persa"] = $row->ama;
- $pz["pers"] = $row->vma;
- }
- }
- // Daten aus Proz_Step
- $sql = "SELECT proz_step,step_sort,step_stat_ID,step_bem FROM Proz_Step WHERE proz_ID = $pzid ORDER BY step_sort";
- if ($ress = $dbc -> queryObjectArray($sql))
- {
- foreach ($ress as $row)
- {
- $pz["step"][] = $row->proz_step;
- $pz["sort"][] = $row->step_sort;
- $pz["ststat"][] = $row->step_stat_ID;
- $pz["stbem"][] = $row->step_bem;
- }
- }
-
- }
- include($_SERVER["DOCUMENT_ROOT"]."/fhiiqm/form/prozess_form.inc.php");
- if ($sub || $del)
- {
- if ($sub)
- $frage = "Alle Angaben ok?";
- elseif ($del)
- $frage = "Projekt wirklich löschen?";
- echo "<tr>
- <td class=\"red\" valign=\"top\" align=\"left\">$frage</td>
- <td><input type=\"checkbox\" name=\"ok\" value=\"1\"";
- if ($ok) echo "checked=\"checked\"";
- echo " /></td>\n</tr>\n";
- }
- if (!is_null($_SESSION["recht"]) && in_array("pze",$_SESSION["recht"]))
- {
- echo "
- <tr><td> </td>\n
- <td><input class=\"button\" type=\"submit\" name=\"eintragen\" value=\" eintragen \" />";
- if ($pzid)
- {
- echo " <input class=\"buttonr\" type=\"submit\" value=\"löschen\" name=\"del\" title=\"delete\" />";
- echo " <input class=\"button\" type=\"submit\" value=\"duplizieren\" name=\"dup\" title=\"delete\" />";
- }
- echo "</td></tr>\n";
- }
- echo "</table>\n";
- echo "</div>\n";
-// if (!is_null($_SESSION["recht"]) && !in_array("le", $_SESSION["recht"]))
- echo "<p class='sc'> <a href=\"prozess_flist.php$getp\" target=\"_self\" title=\"Projektliste\">« zur Projektliste</a></p>\n";
- echo "</form>\n";
- }
- else
- {
- echo "<div align='center'>\n";
-
- if ($del)
- { // Loeschen, Proz_Step wird wegen DELETE CASCADE ebenfalls geloescht
- $sql = "DELETE FROM Prozess WHERE proz_ID = '$pzid'";
- $retdi = $dbc -> execute($sql);
- if ($retdi)
- {
- echo "<p class='green'><b>DELETE: Daten zu '".$pz["bez"]."' wurden erfolgreich gelöscht.</b></p>\n";
- include ("inc/prozess_dat_show.inc.php");
- }
- else
- {
- echo "<p class='red'><b>DELETE: Daten zu '".$pz["bez"]."', ID = '$pzid' konnten nicht gelöscht werden!</b></p>\n";
- if (strpos($dbc->error,'1451') !== false)
- echo "error DELETE: Es gibt mindestens einen abhängiges Projekt zu Projekt-ID '$pzid'<br />";
- else
- {
- echo "sql = $sql<br />";
- echo "error DELETE: " . $dbc->error . "<br />";
- }
- }
- }
- else //INSERT oder UPDATE
- {
- //daten speichern
-// echo "INSERT/UPDATE: Daten speichern<br /><br />\n";
-// print_r($pz); echo "<br />\n";
-
- $pz["bezl"] = substr($pz["bezl"],0,200);
- $pz["bem"] = substr($pz["bem"],0,500);
- if ($pz["sdat"] == "") $pz["sdat"] = null;
- if ($pz["edat"] == "") $pz["edat"] = null;
- if ($pz["psdat"] == "") $pz["psdat"] = null;
- if ($pz["pedat"] == "") $pz["pedat"] = null;
- if ($pz["kost"]) $pz["kost"] = dbformat_wert($pz["kost"]); else $pz["kost"] = null;
- if ($pz["pkost"]) $pz["pkost"] = dbformat_wert($pz["pkost"]); else $pz["pkost"] = null;
- if ($pz["urg"] == -1) $pz["urg"] = null;
- if ($pz["stat"] == -1) $pz["stat"] = null;
- if ($pz["pzref"] == -1) $pz["pzref"] = null;
- if ($pz["prid"] < 1) $pz["prid"] = null;
-
- if ($pz["pers"] < "!") $pz["persknr"] = null;
- if ($pz["persa"] < "!") $pz["persknra"] = null;
-
- if (!isset($dbc) || !$dbc) $dbc = new dbconnection();
-
- $stmt = $dbc -> stmtinit();
- if (is_object($stmt))
- {
- if ($pzid)
- { //UPDATE
- $stmt -> prepare("UPDATE Prozess SET
- produkt_ID = ?,
- proz_bez = ?,
- proz_bez_l = ?,
- proz_start = ?,
- proz_end = ?,
- proz_kosten = ?,
- proz_start_pl = ?,
- proz_end_pl = ?,
- proz_kost_pl = ?,
- proz_urg_ID = ?,
- proz_stat_ID = ?,
- persknr = ?,
- proz_ref_ID = ?,
- proz_bem = ?,
- persknr_a = ? WHERE proz_ID = $pzid");
- $stmt -> bind_param('issssdssdiiiisi',$pz["prid"],$pz["bez"],$pz["bezl"],$pz["sdat"],$pz["edat"],$pz["kost"],$pz["psdat"],$pz["pedat"],$pz["pkost"],
- $pz["urg"],$pz["stat"],$pz["persknr"],$pz["pzref"],$pz["bem"],$pz["persknra"]);
- $result = $stmt -> execute();
- if ($stmt->error) echo "error UPDATE Projekt: " . $stmt->error . "<br><br>\n";
-
- }
- else
- { //INSERT
- $stmt -> prepare ("INSERT INTO Prozess (produkt_ID, proz_bez, proz_bez_l, proz_start, proz_end, proz_kosten, proz_start_pl, proz_end_pl, proz_kost_pl,
- proz_urg_ID, proz_stat_ID, persknr, proz_ref_ID, proz_bem, persknr_a) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
- $stmt -> bind_param('issssdssdiiiisi',$pz["prid"],$pz["bez"],$pz["bezl"],$pz["sdat"],$pz["edat"],$pz["kost"],$pz["psdat"],$pz["pedat"],$pz["pkost"],
- $pz["urg"],$pz["stat"],$pz["persknr"],$pz["pzref"],$pz["bem"],$pz["persknra"]);
- $result = $stmt -> execute();
- if ($stmt->error) echo "error INSERT Projekt: " . $stmt->error . "<br><br>\n";
- if ($result)
- { // INSERT o.k.
- // info_ID ermitteln
- $pzid = $dbc -> insertId();
- }
- }
- if ($result && is_array($pz["step"]) && count($pz["step"])>0)
- { // INSERT Prozessschritte
- $sql = "DELETE FROM Proz_Step WHERE proz_ID = $pzid";
- $retd = $dbc -> execute($sql);
- if ($retd)
- {
- $rets = 1;
- $stmt -> prepare("INSERT INTO Proz_Step (proz_ID,proz_step,step_sort,step_stat_ID,step_bem) VALUES(?,?,?,?,?)");
- for ($k=0; $k<count($pz["step"]); $k++)
- {
- if ($pz["step"][$k] && !$pz["del"][$k])
- {
- if (!is_numeric($pz["sort"][$k]) || (is_numeric($pz["sort"][$k]) && $pz["sort"]< 1)) $pz["sort"][$k] = null;
- if ($pz["ststat"][$k] == -1) $pz["ststat"][$k] = null;
- if ($pz["stbem"][$k] < "!") $pz["stbem"][$k] = null;
- $stmt -> bind_param('isiis',$pzid, $pz["step"][$k], $pz["sort"][$k],$pz["ststat"][$k], $pz["stbem"][$k]);
- $rets = $rets && $stmt -> execute();
- }
- }
- if (!$rets) echo "error INSERT Projekt-Schritt: $stmt->error<br />\n";
- }
- else echo "error INSERT Projekt-Schritt: $dbc->error<br />\n";
- }
- else $rets = 1;
- }
-
- if ($result && $rets)
- {
- echo "<p class='green'><b>Projekt '".$pz["bez"]."' mit ID '$pzid' wurden erfolgreich gespeichert.</b></p>\n";
- include ("inc/prozess_dat_show.inc.php");
- }
- else
- echo "<p class='red'><b>Daten zu '".$pz["bez"]."' wurden nicht oder nur teilweise gespeichert</b></p>\n";
-
- }
- echo "</div>";
- echo "<p class='sc'> <a href=\"prozess_flist.php$getp\" target=\"_self\" title=\"Projektliste\">« zur Projektliste</a></p>\n";
- }
- echo "</body>\n</html>\n";
+<?php
+
+/**
+ * @author Bettina Schwarzer, Fritz-Haber-Institut
+ * @copyright 03/2012
+ *
+ * Prozess INSERT/UPDATE/DELETE/DUPLICATE
+ */
+
+
+ error_reporting(E_ALL ^ E_NOTICE);
+
+ session_start();
+ if (! isset($_SESSION["userid"]))
+ {
+ include_once ("inc/func_lib.inc.php");
+ login($_SERVER["PHP_SELF"]);
+ exit;
+ }
+
+ if (is_null($_SESSION["recht"]) || (!is_null($_SESSION["recht"]) && !in_array("pzr",$_SESSION["recht"]) && !in_array("pze",$_SESSION["recht"])))
+ {
+ header("Location: start.php");
+ exit;
+ }
+
+ $zeil = $_GET["z"];
+ if (!$zeil) $zeil = 25; // Anzahl der gezeigten Zeilen
+ $start = $_GET["st"]; // Start bei DS $start+1
+ if (!$start) $start=0;
+ $sort = $_GET["s"]; // Sortierung nach Spalte
+ $dir = $_GET["d"]; // Sortierrichtung
+ $fnum = $_GET["f"]; // Spaltennummer, nach der aktuell gefiltert wird
+ $filter = $_GET["b"]; // Filterbegriff
+ $getp = "?s=$sort&d=$dir&f=$fnum&b=$filter&st=$start&z=$zeil";
+
+ $pzid = $_GET["i"];
+ $del = $_POST["del"];
+ $sub = $_POST["eintragen"];
+ $dup = $_POST["dup"];
+ if (!$dup) $dup = $_GET["dp"];
+ $copy = $_GET["c"];
+ $pz = $_POST["pz"];
+ $ok = $_POST["ok"];
+ if (!$pz["okn"]) $ok = false;
+ $duptext="";
+
+ include_once($_SERVER['DOCUMENT_ROOT'] ."/fhiiqm/inc/dbconnect.inc.php");
+ include_once($_SERVER['DOCUMENT_ROOT'] ."/fhiiqm/inc/func_lib.inc.php");
+ $dbc = new dbconnection();
+
+ $sql = "SELECT persknr FROM userweb WHERE userid ='" . $_SESSION["userid"] ."'";
+ $persknr = $dbc -> querySingleItem($sql);
+
+ if ($dup)
+ { // Prozess duplizieren
+ $tab = "Prozess";
+ $key = "proz_ID";
+ $val = $pzid;
+// $ret=1;
+ $ret = duplicate_record ($tab, $key, $val);
+ if ($ret)
+ {
+ $pzid_new=$ret;
+ // duplizieren Schritte
+ $sql = "INSERT INTO Proz_Step SELECT NULL, $pzid_new, proz_step,step_sort,step_stat_ID,step_bem FROM Proz_Step WHERE proz_ID=$pzid ORDER BY proz_step_ID";
+ $rets = $dbc -> execute($sql);
+ $sql = "INSERT INTO Proz_RaumArbGruppe SELECT $pzid_new,rag_ID FROM Proz_RaumArbGruppe WHERE proz_ID=$pzid ORDER BY rag_ID";
+ $retr = $dbc -> execute($sql);
+ if ($ret && $rets && $retr)
+ {
+ $addr = $_SERVER["PHP_SELF"] . "?i=$pzid_new&c=1";
+ header("Location: $addr");
+ exit;
+ }
+ else $duptext = " - Fehler beim Duplizieren von Step oder AG, idold=$pzid, idnew=$pzid_new, ret=$ret, rets=$rets, retr=$retr";
+ }
+ else $duptext = " - Fehler beim Duplizieren von Projekt-ID=$pzid";
+ }
+
+?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+
+<head>
+ <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
+ <link href="css/db.css" rel="STYLESHEET" type="TEXT/CSS" media="screen"/>
+ <link href="css/db_print.css" rel="STYLESHEET" type="TEXT/CSS" media="print"/>
+<!--
+ <link type="text/css" href="/fhiiqm/css/jquery/ui-lightness/jquery-ui-1.8.16.custom.css" rel="Stylesheet" />
+ <script type="text/javascript" src="/fhiiqm/js/jquery/jquery-1.6.2.min.js"></script>
+ <script type="text/javascript" src="/fhiiqm/js/jquery/jquery-ui-1.8.16.custom.min.js"></script>
+-->
+ <link type="text/css" href="/fhiiqm/css/jquery/ui-lightness-1.8.21/jquery-ui-1.8.21.custom.css" rel="Stylesheet" />
+ <script type="text/javascript" src="/fhiiqm/js/jquery/jquery-1.7.2.min.js"></script>
+ <script type="text/javascript" src="/fhiiqm/js/jquery/jquery-ui-1.8.21.custom.min.js"></script>
+
+ <script type="text/javascript">
+ //<!--
+ var counter = 0;
+ var limit = 99;
+ var arr = new Array();
+ var arrag = new Array();
+ function addInput(divId,anz){
+ if (counter == limit) {
+ alert("Das Limit von " + counter + " zusätzlichen inputs ist erreicht");
+ }
+ else
+ {
+ if (divId == 'add')
+ {
+ var newdiv = document.createElement('div');
+ var opt="<option value='-1'></option>";
+ var i;
+ for (var key in arr)
+ {
+ opt = opt.concat("<option value='",key,"'>",arr[key],"</option>\n" );
+ }
+ opt += "</select>\n";
+ newdiv.innerHTML = "<span></span><input type='text' name='pz[step][]' size='50' maxlength='50' />";
+ newdiv.innerHTML += " Status <select name='pz[ststat][]'>"+opt;
+ newdiv.innerHTML += " Sort <input type='text' name='pz[sort][]' class='right' size='2' maxlength='2' value='' />";
+ newdiv.innerHTML += "<img src='/fhiiqm/img/nixt.gif' border='0' height='100%' />";
+ newdiv.innerHTML += "<br /> Bemerkung zu Schritt ";
+ newdiv.innerHTML += "<input type='text' name='pz[stbem][]' size='50' maxlength='50' />";
+ newdiv.innerHTML += "<span id='cbl'> <input type='checkbox' id='del' name='pz[del][]' value='1'/>";
+ newdiv.innerHTML += "<label id='lb' for='del'> löschen</label></span>";
+ document.getElementById(divId).appendChild(newdiv);
+ var delcb = document.getElementById('del');
+ delcb.id = "del_" + anz;
+ delcb.style.display = 'none';
+ var lcb = document.getElementById('lb');
+ lcb.id = "lb_" + anz;
+ lcb.setAttribute("for", delcb.id);
+ lcb.style.display = 'none';
+ counter++;
+ }
+ else
+ {
+ var newdiv = document.createElement('div');
+ var opt="";
+ var opt="<option value='-1'></option>";
+ for (var key in arrag)
+ {
+ var keym = parseInt(key.substr(1)); //key = abt_ID*1000+rag_ID wegen sort nach Abteilung
+ opt = opt.concat("<option value='",keym,"'>",arrag[key],"</option>\n" );
+ }
+ opt += "</select>\n";
+// alert (opt+"\n");
+ newdiv.innerHTML = "<span></span><select name='pz[rag][]'>"+opt;
+ newdiv.innerHTML += "<span id='cblag'> <input type='checkbox' id='delag' name='pz[delag][]' value='1'/>";
+ newdiv.innerHTML += "<label id='lbag' for='delag'> löschen</label></span>";
+ newdiv.innerHTML += "<img src='/fhiiqm/img/nixt.gif' border='0' height='100%' />";
+ document.getElementById(divId).appendChild(newdiv);
+ var delcb = document.getElementById('delag');
+ delcb.id = "delag_" + anz;
+ delcb.style.display = 'none';
+ var lcb = document.getElementById('lbag');
+ lcb.id = "lbag_" + anz;
+ lcb.setAttribute("for", delcb.id);
+ lcb.style.display = 'none';
+ counter++;
+ }
+ }
+ }
+ function markdelInput(divId,anz){
+ for (i=1; i<anz; i++)
+ {
+ if (divId == 'add')
+ {
+ var id = "del_" + i;
+ var delcb = document.getElementById(id);
+ delcb.style.display = 'inline';
+ var idl = "lb_" + i;
+ var lcb = document.getElementById(idl);
+ lcb.style.display = 'inline';
+ }
+ else
+ {
+ var id = "delag_" + i;
+ var delcb = document.getElementById(id);
+ delcb.style.display = 'inline';
+ var idl = "lbag_" + i;
+ var lcb = document.getElementById(idl);
+ lcb.style.display = 'inline';
+ }
+ }
+ }
+ function delInput(divId){
+ var kn = document.getElementById(divId);
+ while (kn.childNodes.length>0 && kn.lastChild.nodeName != "SPAN" && kn.lastChild.nodeName != "A")
+ {
+ //alert ("vor "+kn.lastChild.nodeName+", nodetyp = "+ kn.lastChild.nodeType);
+ var knc = kn.lastChild;
+ document.getElementById(divId).removeChild(knc);
+ }
+ if (kn.lastChild.nodeName == "SPAN") document.getElementById(divId).removeChild(kn.lastChild);
+ }
+ //-->
+ </script>
+
+ <title>Edit Projekt</title>
+</head>
+
+<body>
+
+ <script>
+ $(document).ready(function() {
+ $("#bez").focus();
+ $("#pers").autocomplete({
+ source: "/fhiiqm/inc/ma_list_ac.inc.php",
+ minLength: 2,
+ select: function(event,ui){$("#pid").val(ui.item.id);}
+ });
+ $("#persa").autocomplete({
+ source: "/fhiiqm/inc/ma_list_ac.inc.php",
+ minLength: 2,
+ select: function(event,ui){$("#paid").val(ui.item.id);}
+ });
+ $("#sdat").datepicker({
+ dateFormat: 'yy-mm-dd', //nur Datum
+ yearRange: '2000:2025',
+ changeMonth: true,
+ changeYear: true,
+ firstDay: 1,
+ dayNamesMin: ['So','Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa' ],
+ monthNamesShort: ['Jan','Feb','Mar','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez']
+ });
+ $("#edat").datepicker({
+ dateFormat: 'yy-mm-dd', //nur Datum
+ yearRange: '2000:2025',
+ changeMonth: true,
+ changeYear: true,
+ firstDay: 1,
+ dayNamesMin: ['So','Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa' ],
+ monthNamesShort: ['Jan','Feb','Mar','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez']
+ });
+ $("#psdat").datepicker({
+ dateFormat: 'yy-mm-dd', //nur Datum
+ yearRange: '2000:2025',
+ changeMonth: true,
+ changeYear: true,
+ firstDay: 1,
+ dayNamesMin: ['So','Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa' ],
+ monthNamesShort: ['Jan','Feb','Mar','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez']
+ });
+ $("#pedat").datepicker({
+ dateFormat: 'yy-mm-dd', //nur Datum
+ yearRange: '2000:2025',
+ changeMonth: true,
+ changeYear: true,
+ firstDay: 1,
+ dayNamesMin: ['So','Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa' ],
+ monthNamesShort: ['Jan','Feb','Mar','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez']
+ });
+ $("input[id='pers']").addClass("long20");
+ $("input[id='persa']").addClass("long20");
+ });
+ </script>
+
+<?php
+ echo " ";
+ echo "<div class=\"float-br smaller\" valign='top'>";
+ echo " user: " . $_SESSION["userid"];
+ echo " <a class='sc' href='/fhiiqm/logout.php' title='Session beenden'>logout</a></div>\n";
+ echo "<div class=\"float-r\"><img src=\"img/sheduled_task.png\" border=\"0\" alt=\"Projekt ändern\" title=\"Projekt ändern\"/></div>\n";
+
+
+ echo "<div align='center'>";
+ if ($pzid) $text = "editieren"; else $text = "erfassen";
+ if ($copy) $duptext = " (Kopie)";
+ echo "<h3>Projekt $text$duptext<h3>";
+
+ echo "</div>\n";
+
+ if (!$ok || (!$sub && !$del && !$dup))
+ {
+ if ($pzid && (!$sub || !$del) && !isset($pz))
+ { // update
+ $sql = "SELECT proz_ID,produkt_ID,proz_bez,proz_bez_l,proz_start,proz_end,proz_kosten,
+ proz_start_pl,proz_end_pl,proz_kost_pl,
+ proz_urg_ID,proz_stat_ID,p.persknr,proz_ref_ID,proz_bem,persknr_a,
+ CONCAT (m.nachname, ', ',m.vorname) AS vma,
+ CONCAT (a.nachname, ', ',a.vorname) AS ama
+ FROM Prozess p LEFT OUTER JOIN Mitarbeiter m
+ ON p.persknr=m.persknr LEFT OUTER JOIN Mitarbeiter a
+ ON p.persknr_a=a.persknr
+ WHERE proz_ID = $pzid";
+ if ($res = $dbc -> queryObjectArray($sql))
+ {
+ foreach ($res as $row)
+ {
+ $pz["pzid"] = $pzid;
+ $pz["bez"] = $row->proz_bez;
+ $pz["bezl"] = $row->proz_bez_l;
+ $pz["prid"] = $row->produkt_ID;
+ $pz["psdat"] = $row->proz_start_pl;
+ $pz["pedat"] = $row->proz_end_pl;
+ $pz["pkost"] = str_replace('.',',',$row->proz_kost_pl);
+ $pz["sdat"] = $row->proz_start;
+ $pz["edat"] = $row->proz_end;
+ $pz["kost"] = str_replace('.',',',$row->proz_kosten);
+ $pz["urg"] = $row->proz_urg_ID;
+ $pz["stat"] = $row->proz_stat_ID;
+ $pz["persknr"] = $row->persknr;
+ $pz["pzref"] = $row->proz_ref_ID;
+ $pz["bem"] = $row->proz_bem;
+ $pz["persknra"] = $row->persknr_a;
+ $pz["persa"] = $row->ama;
+ $pz["pers"] = $row->vma;
+ }
+ }
+ // Daten aus Proz_Step
+ $sql = "SELECT proz_step,step_sort,step_stat_ID,step_bem FROM Proz_Step WHERE proz_ID = $pzid ORDER BY step_sort";
+ if ($ress = $dbc -> queryObjectArray($sql))
+ {
+ foreach ($ress as $row)
+ {
+ $pz["step"][] = $row->proz_step;
+ $pz["sort"][] = $row->step_sort;
+ $pz["ststat"][] = $row->step_stat_ID;
+ $pz["stbem"][] = $row->step_bem;
+ }
+ }
+ // Daten aus Proz_RaumArbGruppe
+ $sql = "SELECT rag_ID FROM Proz_RaumArbGruppe WHERE proz_ID=$pzid ORDER BY rag_ID";
+ if ($resr = $dbc -> queryObjectArray($sql))
+ {
+ foreach ($resr as $row)
+ $pz["rag"][] = $row->rag_ID;
+ }
+ }
+ include($_SERVER["DOCUMENT_ROOT"]."/fhiiqm/form/prozess_rag_form.inc.php");
+ if ($sub || $del)
+ {
+ if ($sub)
+ $frage = "Alle Angaben ok?";
+ elseif ($del)
+ $frage = "Projekt wirklich löschen?";
+ echo "<tr>
+ <td class=\"red\" valign=\"top\" align=\"left\">$frage</td>
+ <td><input type=\"checkbox\" name=\"ok\" value=\"1\"";
+ if ($ok) echo "checked=\"checked\"";
+ echo " /></td>\n</tr>\n";
+ }
+ if (!is_null($_SESSION["recht"]) && in_array("pze",$_SESSION["recht"]))
+ {
+ echo "
+ <tr><td> </td>\n
+ <td><input class=\"button\" type=\"submit\" name=\"eintragen\" value=\" eintragen \" />";
+ if ($pzid)
+ {
+ echo " <input class=\"buttonr\" type=\"submit\" value=\"löschen\" name=\"del\" title=\"delete\" />";
+ echo " <input class=\"button\" type=\"submit\" value=\"duplizieren\" name=\"dup\" title=\"delete\" />";
+ }
+ echo "</td></tr>\n";
+ }
+ echo "</table>\n";
+ echo "</div>\n";
+// if (!is_null($_SESSION["recht"]) && !in_array("le", $_SESSION["recht"]))
+ echo "<p class='sc'> <a href=\"prozess_flist.php$getp\" target=\"_self\" title=\"Projektliste\">« zur Projektliste</a></p>\n";
+ echo "</form>\n";
+ }
+ else
+ {
+ echo "<div align='center'>\n";
+
+ if ($del)
+ { // Loeschen, Proz_Step,Proz_RaumArbGruppe werden wegen DELETE CASCADE ebenfalls geloescht
+ $sql = "DELETE FROM Prozess WHERE proz_ID = '$pzid'";
+ $retdi = $dbc -> execute($sql);
+ if ($retdi)
+ {
+ echo "<p class='green'><b>DELETE: Daten zu '".$pz["bez"]."' wurden erfolgreich gelöscht.</b></p>\n";
+ include ("inc/prozess_dat_show.inc.php");
+ }
+ else
+ {
+ echo "<p class='red'><b>DELETE: Daten zu '".$pz["bez"]."', ID = '$pzid' konnten nicht gelöscht werden!</b></p>\n";
+ if (strpos($dbc->error,'1451') !== false)
+ echo "error DELETE: Es gibt mindestens einen abhängiges Projekt zu Projekt-ID '$pzid'<br />";
+ else
+ {
+ echo "sql = $sql<br />";
+ echo "error DELETE: " . $dbc->error . "<br />";
+ }
+ }
+ }
+ else //INSERT oder UPDATE
+ {
+ //daten speichern
+// echo "INSERT/UPDATE: Daten speichern<br /><br />\n";
+// print_r($pz); echo "<br />\n";
+
+ $pz["bezl"] = substr($pz["bezl"],0,200);
+ $pz["bem"] = substr($pz["bem"],0,500);
+ if ($pz["sdat"] == "") $pz["sdat"] = null;
+ if ($pz["edat"] == "") $pz["edat"] = null;
+ if ($pz["psdat"] == "") $pz["psdat"] = null;
+ if ($pz["pedat"] == "") $pz["pedat"] = null;
+ if ($pz["kost"]) $pz["kost"] = dbformat_wert($pz["kost"]); else $pz["kost"] = null;
+ if ($pz["pkost"]) $pz["pkost"] = dbformat_wert($pz["pkost"]); else $pz["pkost"] = null;
+ if ($pz["urg"] == -1) $pz["urg"] = null;
+ if ($pz["stat"] == -1) $pz["stat"] = null;
+ if ($pz["pzref"] == -1) $pz["pzref"] = null;
+ if ($pz["prid"] < 1) $pz["prid"] = null;
+
+ if ($pz["pers"] < "!") $pz["persknr"] = null;
+ if ($pz["persa"] < "!") $pz["persknra"] = null;
+
+ if (!isset($dbc) || !$dbc) $dbc = new dbconnection();
+
+ $stmt = $dbc -> stmtinit();
+ if (is_object($stmt))
+ {
+ if ($pzid)
+ { //UPDATE
+ $stmt -> prepare("UPDATE Prozess SET
+ produkt_ID = ?,
+ proz_bez = ?,
+ proz_bez_l = ?,
+ proz_start = ?,
+ proz_end = ?,
+ proz_kosten = ?,
+ proz_start_pl = ?,
+ proz_end_pl = ?,
+ proz_kost_pl = ?,
+ proz_urg_ID = ?,
+ proz_stat_ID = ?,
+ persknr = ?,
+ proz_ref_ID = ?,
+ proz_bem = ?,
+ persknr_a = ? WHERE proz_ID = $pzid");
+ $stmt -> bind_param('issssdssdiiiisi',$pz["prid"],$pz["bez"],$pz["bezl"],$pz["sdat"],$pz["edat"],$pz["kost"],$pz["psdat"],$pz["pedat"],$pz["pkost"],
+ $pz["urg"],$pz["stat"],$pz["persknr"],$pz["pzref"],$pz["bem"],$pz["persknra"]);
+ $result = $stmt -> execute();
+ if ($stmt->error) echo "error UPDATE Projekt: " . $stmt->error . "<br><br>\n";
+
+ }
+ else
+ { //INSERT
+ $stmt -> prepare ("INSERT INTO Prozess (produkt_ID, proz_bez, proz_bez_l, proz_start, proz_end, proz_kosten, proz_start_pl, proz_end_pl, proz_kost_pl,
+ proz_urg_ID, proz_stat_ID, persknr, proz_ref_ID, proz_bem, persknr_a) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
+ $stmt -> bind_param('issssdssdiiiisi',$pz["prid"],$pz["bez"],$pz["bezl"],$pz["sdat"],$pz["edat"],$pz["kost"],$pz["psdat"],$pz["pedat"],$pz["pkost"],
+ $pz["urg"],$pz["stat"],$pz["persknr"],$pz["pzref"],$pz["bem"],$pz["persknra"]);
+ $result = $stmt -> execute();
+ if ($stmt->error) echo "error INSERT Projekt: " . $stmt->error . "<br><br>\n";
+ if ($result)
+ { // INSERT o.k.
+ // info_ID ermitteln
+ $pzid = $dbc -> insertId();
+ }
+ }
+ if ($result && is_array($pz["step"]) && count($pz["step"])>0)
+ { // INSERT Prozessschritte
+ $sql = "DELETE FROM Proz_Step WHERE proz_ID = $pzid";
+ $retd = $dbc -> execute($sql);
+ if ($retd)
+ {
+ $rets = 1;
+ $stmt -> prepare("INSERT INTO Proz_Step (proz_ID,proz_step,step_sort,step_stat_ID,step_bem) VALUES(?,?,?,?,?)");
+ for ($k=0; $k<count($pz["step"]); $k++)
+ {
+ if ($pz["step"][$k] && !$pz["del"][$k])
+ {
+ if (!is_numeric($pz["sort"][$k]) || (is_numeric($pz["sort"][$k]) && $pz["sort"]< 1)) $pz["sort"][$k] = null;
+ if ($pz["ststat"][$k] == -1) $pz["ststat"][$k] = null;
+ if ($pz["stbem"][$k] < "!") $pz["stbem"][$k] = null;
+ $stmt -> bind_param('isiis',$pzid, $pz["step"][$k], $pz["sort"][$k],$pz["ststat"][$k], $pz["stbem"][$k]);
+ $rets = $rets && $stmt -> execute();
+ }
+ }
+ if (!$rets) echo "error INSERT Projekt-Schritt: $stmt->error<br />\n";
+ }
+ else echo "error INSERT Projekt-Schritt: $dbc->error<br />\n";
+ }
+ else $rets = 1;
+
+ if ($result && is_array($pz["rag"]) && count($pz["rag"])>0)
+ { // INSERT betroffene Arbeitsgruppen
+ $sql = "DELETE FROM Proz_RaumArbGruppe WHERE proz_ID = $pzid";
+ $retd = $dbc -> execute($sql);
+ if ($retd)
+ {
+ $retr = 1;
+ $stmt -> prepare("INSERT INTO Proz_RaumArbGruppe (proz_ID,rag_ID) VALUES(?,?)");
+ for ($k=0; $k<count($pz["rag"]); $k++)
+ {
+ if ($pz["rag"][$k]>0 && !$pz["delag"][$k])
+ {
+ $stmt -> bind_param('ii',$pzid,$pz["rag"][$k]);
+ $retr = $retr && $stmt -> execute();
+ }
+ }
+ if (!$retr) echo "error INSERT Projekt-Arbeitsgruppe: $stmt->error<br />\n";
+ }
+ else echo "error INSERT Projekt-Arbeitsgruppe: $dbc->error<br />\n";
+ }
+ else $retr = 1;
+ }
+
+ if ($result && $rets && $retr)
+ {
+ echo "<p class='green'><b>Projekt '".$pz["bez"]."' mit ID '$pzid' wurden erfolgreich gespeichert.</b></p>\n";
+ include ("inc/prozess_dat_show.inc.php");
+ }
+ else
+ echo "<p class='red'><b>Daten zu '".$pz["bez"]."' wurden nicht oder nur teilweise gespeichert</b></p>\n";
+
+ }
+ echo "</div>";
+ echo "<p class='sc'> <a href=\"prozess_flist.php$getp\" target=\"_self\" title=\"Projektliste\">« zur Projektliste</a></p>\n";
+ }
+ echo "</body>\n</html>\n";
?>
\ No newline at end of file