From 9b6b7c6c7f20347dfdf4347e3022a2474a013cf9 Mon Sep 17 00:00:00 2001 From: Manfred Date: Fri, 15 Apr 2022 17:50:15 +0200 Subject: [PATCH 1/3] LV-Teile kopieren --- content/lvplanung/lehrveranstaltungDBDML.php | 112 ++++++++++++++++++ .../lvplanung/lehrveranstaltungoverlay.js.php | 67 ++++++++++- .../lehrveranstaltungoverlay.xul.php | 15 ++- 3 files changed, 186 insertions(+), 8 deletions(-) diff --git a/content/lvplanung/lehrveranstaltungDBDML.php b/content/lvplanung/lehrveranstaltungDBDML.php index 438844071..915efc817 100644 --- a/content/lvplanung/lehrveranstaltungDBDML.php +++ b/content/lvplanung/lehrveranstaltungDBDML.php @@ -1388,6 +1388,118 @@ if(!$error) } } } + else if ($_POST['do']=='copy') + { + if(!$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'sui') + && !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'sui') + && !$rechte->isBerechtigtMultipleOe('lv-plan', $lva->getAllOe(), 'sui')) + { + $error = true; + $return = false; + $errormsg = 'Keine Berechtigung'; + } + + if(!$leDAO->load($_POST['lehreinheit_id'])) + { + $return = false; + $error = true; + $errormsg = 'Fehler beim Laden des LV-Teils'; + } + + if(!$error) + { + // Neue Lehreinheit anlegen + $leDAO->new = true; + $leDAO->unr = ''; + $leDAO->updateamum = date('Y-m-d H:i:s'); + $leDAO->updatevon = $user; + $leDAO->insertamum = date('Y-m-d H:i:s'); + $leDAO->insertvon = $user; + + if ($leDAO->save()) + { + // Wenn Art "alle" oder "gruppen" ist, werden auch alle Lehreinheitgruppe kopiert + if(isset($_POST['art']) && ($_POST['art'] == 'alle' || $_POST['art'] == 'gruppen')) + { + $legruppe = new lehreinheitgruppe(); + $legruppe->getLehreinheitgruppe($_POST['lehreinheit_id']); + + if (count($legruppe->lehreinheitgruppe) > 0) + { + foreach ($legruppe->lehreinheitgruppe as $row) + { + $legruppe_new = new lehreinheitgruppe(); + $legruppe_new->lehreinheit_id = $leDAO->lehreinheit_id; + $legruppe_new->studiengang_kz = $row->studiengang_kz; + $legruppe_new->semester = $row->semester; + $legruppe_new->verband = $row->verband; + $legruppe_new->gruppe = $row->gruppe; + $legruppe_new->gruppe_kurzbz = $row->gruppe_kurzbz; + $legruppe_new->updateamum = date('Y-m-d H:i:s'); + $legruppe_new->updatevon = $user; + $legruppe_new->insertamum = date('Y-m-d H:i:s'); + $legruppe_new->insertvon = $user; + + if (!$legruppe_new->save(true)) + { + $errormsg = 'Fehler beim Kopieren der Gruppe: '.$legruppe_new->errormsg; + $return = false; + } + else + { + $return = true; + } + } + } + } + // Wenn Art "alle" oder "lektoren" ist, werden auch alle Lehreinheitmitarbeiter kopiert + if(isset($_POST['art']) && ($_POST['art'] == 'alle' || $_POST['art'] == 'lektoren')) + { + $lema = new lehreinheitmitarbeiter(); + $lema->getLehreinheitmitarbeiter($_POST['lehreinheit_id']); + + if (count($lema->lehreinheitmitarbeiter) > 0) + { + foreach ($lema->lehreinheitmitarbeiter as $row) + { + $lema_new = new lehreinheitmitarbeiter(); + $lema_new->lehreinheit_id = $leDAO->lehreinheit_id; + $lema_new->mitarbeiter_uid = $row->mitarbeiter_uid; + $lema_new->lehrfunktion_kurzbz = $row->lehrfunktion_kurzbz; + $lema_new->semesterstunden = $row->semesterstunden; + $lema_new->planstunden = $row->planstunden; + $lema_new->stundensatz = $row->stundensatz; + $lema_new->faktor = $row->faktor; + $lema_new->anmerkung = $row->anmerkung; + $lema_new->bismelden = $row->bismelden; + $lema_new->updateamum = date('Y-m-d H:i:s'); + $lema_new->updatevon = $user; + $lema_new->insertamum = date('Y-m-d H:i:s'); + $lema_new->insertvon = $user; + $lema_new->ext_id = $row->ext_id; + $lema_new->vertrag_id = $row->vertrag_id; + + if (!$lema_new->save(true)) + { + $errormsg = 'Fehler beim Kopieren der MitarbeiterInnen: '.$lema_new->errormsg; + $return = false; + } + else + { + $return = true; + } + } + } + } + $return = true; + } + else + { + $return = false; + $errormsg = $leDAO->errormsg; + } + } + } else if ($_POST['do']=='delete') //Lehreinheit loeschen { if(!$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid') && diff --git a/content/lvplanung/lehrveranstaltungoverlay.js.php b/content/lvplanung/lehrveranstaltungoverlay.js.php index dfb1bf4ec..436c48eb8 100644 --- a/content/lvplanung/lehrveranstaltungoverlay.js.php +++ b/content/lvplanung/lehrveranstaltungoverlay.js.php @@ -521,7 +521,7 @@ function LeDelete() } //Abfrage ob wirklich geloescht werden soll - if (confirm('Wollen Sie diese Lehreinheit wirklich loeschen?')) + if (confirm('Wollen Sie diesen LV-Teil wirklich loeschen?')) { //Script zum loeschen der Lehreinheit aufrufen var req = new phpRequest('lvplanung/lehrveranstaltungDBDML.php','',''); @@ -541,6 +541,52 @@ function LeDelete() } } +// **** +// * LV-Teile kopieren +// **** +function LeCopy(art) +{ + netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); + var tree = document.getElementById('lehrveranstaltung-tree'); + + if (tree.currentIndex==-1) + return; + + try + { + //Ausgewaehlte LV-Teile holen + var col = tree.columns ? tree.columns["lehrveranstaltung-treecol-lehreinheit_id"] : "lehrveranstaltung-treecol-lehreinheit_id"; + var lehreinheit_id = tree.view.getCellText(tree.currentIndex,col); + if(lehreinheit_id == '') + { + alert('Lehreinheit_id konnte nicht ermittelt werden'); + return false; + } + } + catch(e) + { + alert(e); + return false; + } + + //Script zum kopieren des LV-Teils aufrufen + var req = new phpRequest('lvplanung/lehrveranstaltungDBDML.php','',''); + + req.add('type','lehreinheit'); + req.add('do','copy'); + req.add('art',art); + req.add('lehreinheit_id',lehreinheit_id); + var response = req.executePOST(); + + var val = new ParseReturnValue(response) + if(!val.dbdml_return) + alert(val.dbdml_errormsg) + + LvTreeRefresh(); + LeDetailReset(); + LeDetailDisableFields(true); +} + // **** // * Leert alle Eingabe- und Auswahlfelder // **** @@ -2673,7 +2719,7 @@ function LeMitarbeiterGesamtkosten() /* * Oeffnet alle Subtrees */ -function LvTreeOpenAllSubtrees() +function LvTreeOpenAllSubtrees(art) { var tree=document.getElementById('lehrveranstaltung-tree'); @@ -2682,10 +2728,21 @@ function LvTreeOpenAllSubtrees() else return false; - for(var i=items-1;i>=0;i--) + if (art == 'aus') { - if(!tree.view.isContainerOpen(i)) - tree.view.toggleOpenState(i); + for(var i=items-1;i>=0;i--) + { + if(!tree.view.isContainerOpen(i)) + tree.view.toggleOpenState(i); + } + } + else if (art == 'ein') + { + for(var i=items-1;i>=0;i--) + { + if(tree.view.isContainerOpen(i)) + tree.view.toggleOpenState(i); + } } } diff --git a/content/lvplanung/lehrveranstaltungoverlay.xul.php b/content/lvplanung/lehrveranstaltungoverlay.xul.php index f2cc27b2d..4fde1fcc3 100644 --- a/content/lvplanung/lehrveranstaltungoverlay.xul.php +++ b/content/lvplanung/lehrveranstaltungoverlay.xul.php @@ -54,13 +54,21 @@ echo ' + + + + - - + +