From 81ef2f0eea1529ca09a168e5edc96b9d1194eec3 Mon Sep 17 00:00:00 2001 From: Nikolaus Krondraf Date: Wed, 19 Nov 2014 11:45:38 +0000 Subject: [PATCH] =?UTF-8?q?Anlegen=20von=20mehreren=20Gruppen=20pro=20Stud?= =?UTF-8?q?iensemester=20erm=C3=B6glicht=20(inkl.=20automatischer=20Nummer?= =?UTF-8?q?ierung=20der=20Gruppenbezeichnungen)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/lvplanung/lehrveranstaltungDBDML.php | 54 +++++++++++-------- .../lvplanung/lehrveranstaltungoverlay.js.php | 14 ++++- include/gruppe.class.php | 27 ++++++++++ include/lvangebot.class.php | 14 ----- vilesci/lehre/lehrveranstaltung_lvangebot.php | 3 +- 5 files changed, 73 insertions(+), 39 deletions(-) diff --git a/content/lvplanung/lehrveranstaltungDBDML.php b/content/lvplanung/lehrveranstaltungDBDML.php index 53e691fd0..32745bfa9 100644 --- a/content/lvplanung/lehrveranstaltungDBDML.php +++ b/content/lvplanung/lehrveranstaltungDBDML.php @@ -1115,30 +1115,38 @@ if(!$error) if(!$studiengang->load($lehrveranstaltung_obj->studiengang_kz)) $errormsg = 'Fehler beim Laden des Studienganges'; - $gruppe_kurzbz = mb_strtoupper(substr($studiengang->kuerzel.$lehrveranstaltung_obj->semester.'-'.$_POST['studiensemester_kurzbz'].'-'.$lehrveranstaltung_obj->kurzbz,0,32)); - $gruppe = new gruppe(); - $gruppe->gruppe_kurzbz=$gruppe_kurzbz; - $gruppe->studiengang_kz=$studiengang->studiengang_kz; - $gruppe->bezeichnung=mb_substr($lehrveranstaltung_obj->bezeichnung,0,30); - $gruppe->semester=$lehrveranstaltung_obj->semester; - $gruppe->sort=''; - $gruppe->mailgrp=false; - $gruppe->beschreibung=$lehrveranstaltung_obj->bezeichnung; - $gruppe->sichtbar=true; - $gruppe->generiert=false; - $gruppe->aktiv=true; - $gruppe->lehre=true; - $gruppe->content_visible=false; - $gruppe->orgform_kurzbz=$lehrveranstaltung_obj->orgform_kurzbz; - $gruppe->gesperrt=false; - $gruppe->zutrittssystem=false; - $gruppe->insertamum=date('Y-m-d H:i:s'); - $gruppe->insertvon=$user; - - if(!$gruppe->save(true)) + if($_POST['neue_gruppe'] == "false") { - $errormsg = 'Fehler beim Erstellen der Gruppe'.$gruppe->errormsg; - $return = false; + $gruppe_kurzbz = $_POST['gruppe']; + } + else + { + $gruppe = new gruppe(); + $gruppe_kurzbz = mb_strtoupper(substr($studiengang->kuerzel.$lehrveranstaltung_obj->semester.'-'.$_POST['studiensemester_kurzbz'].'-'.$lehrveranstaltung_obj->kurzbz,0,32)); + $gruppe_kurzbz = $gruppe->getNummerierteGruppenbez($gruppe_kurzbz); + $gruppe->gruppe_kurzbz=$gruppe_kurzbz; + $gruppe->studiengang_kz=$studiengang->studiengang_kz; + $gruppe->bezeichnung=mb_substr($lehrveranstaltung_obj->bezeichnung,0,30); + $gruppe->semester=$lehrveranstaltung_obj->semester; + $gruppe->sort=''; + $gruppe->mailgrp=false; + $gruppe->beschreibung=$lehrveranstaltung_obj->bezeichnung; + $gruppe->sichtbar=true; + $gruppe->generiert=false; + $gruppe->aktiv=true; + $gruppe->lehre=true; + $gruppe->content_visible=false; + $gruppe->orgform_kurzbz=$lehrveranstaltung_obj->orgform_kurzbz; + $gruppe->gesperrt=false; + $gruppe->zutrittssystem=false; + $gruppe->insertamum=date('Y-m-d H:i:s'); + $gruppe->insertvon=$user; + + if(!$gruppe->save(true)) + { + $errormsg = 'Fehler beim Erstellen der Gruppe'.$gruppe->errormsg; + $return = false; + } } $lvangebot->lehrveranstaltung_id = $_POST['lehrveranstaltung_id']; diff --git a/content/lvplanung/lehrveranstaltungoverlay.js.php b/content/lvplanung/lehrveranstaltungoverlay.js.php index 931fbf11c..9df9db71e 100644 --- a/content/lvplanung/lehrveranstaltungoverlay.js.php +++ b/content/lvplanung/lehrveranstaltungoverlay.js.php @@ -1948,15 +1948,24 @@ function LvAngebotGruppeSave() //Werte holen var lehrveranstaltung_id = tree.view.getCellText(tree.currentIndex,col); + var neue_gruppe = document.getElementById('lehrveranstaltung-lvangebot-checkbox-gruppe').checked; var gruppe = document.getElementById('lehrveranstaltung-lvangebot-textbox-gruppe').value; var incomingplaetze = document.getElementById('lehrveranstaltung-lvangebot-textbox-incoming').value; var gesamtplaetze = document.getElementById('lehrveranstaltung-lvangebot-textbox-gesamt').value; var anmeldefenster_start = document.getElementById('lehrveranstaltung-lvangebot-textbox-start').value; var anmeldefenster_ende = document.getElementById('lehrveranstaltung-lvangebot-textbox-ende').value; + + //Eingaben validieren + if(neue_gruppe == false && gruppe == "") + { + alert('Es muss eine Gruppe ausgewaehlt werden'); + return false; + } var req = new phpRequest('lvplanung/lehrveranstaltungDBDML.php','',''); req.add('type', 'lvangebot-gruppe-save'); + req.add('neue_gruppe', neue_gruppe); req.add('gruppe', gruppe); req.add('incomingplaetze', incomingplaetze); req.add('gesamtplaetze', gesamtplaetze); @@ -1971,7 +1980,10 @@ function LvAngebotGruppeSave() if (!val.dbdml_return) { - alert(val.dbdml_errormsg); + if (val.dbdml_errormsg == "") + alert('Es ist ein unbekannter Fehler aufgetreten'); + else + alert(val.dbdml_errormsg); } else { diff --git a/include/gruppe.class.php b/include/gruppe.class.php index 79a6d8320..5cb5f7331 100644 --- a/include/gruppe.class.php +++ b/include/gruppe.class.php @@ -540,5 +540,32 @@ class gruppe extends basis_db return false; } } + + /** + * Prüft ob die Gruppenbezeichnung bereits vorhanden ist + * und gibt bei Bedarf die Bezeichnung inkl. Nummerierung zurück + * + * @param $gruppe_kurzbz zu prüfende Gruppenbezeichnung + */ + public function getNummerierteGruppenbez($gruppe_kurzbz) + { + $gruppe_kurzbz_regex = $gruppe_kurzbz . '-[0-9]+$'; + + $qry = 'SELECT COUNT(gruppe_kurzbz) AS anzahl + FROM public.tbl_gruppe + WHERE gruppe_kurzbz = ' . $this->db_add_param($gruppe_kurzbz) . ' + OR gruppe_kurzbz ~ ' . $this->db_add_param($gruppe_kurzbz_regex); + + if($this->db_query($qry)) + { + if($row = $this->db_fetch_object()) + { + if($row->anzahl > 0) + $gruppe_kurzbz = $gruppe_kurzbz . "-" . $row->anzahl; + } + } + + return $gruppe_kurzbz; + } } ?> \ No newline at end of file diff --git a/include/lvangebot.class.php b/include/lvangebot.class.php index 61594771c..701d54ab7 100644 --- a/include/lvangebot.class.php +++ b/include/lvangebot.class.php @@ -219,20 +219,6 @@ class lvangebot extends basis_db if($this->new) { - //prüfen, ob Datensatz schon vorhanden - $qry='SELECT studiensemester_kurzbz - FROM lehre.tbl_lvangebot - WHERE studiensemester_kurzbz='.$this->db_add_param($this->studiensemester_kurzbz).' - AND lehrveranstaltung_id='.$this->db_add_param($this->lehrveranstaltung_id); - if($this->db_query($qry)) - { - if($row=$this->db_fetch_object()) - { - $this->errormsg = 'Eintrag für '.$this->studiensemester_kurzbz.' existiert bereits'; - return false; - } - } - //Neuen Datensatz einfuegen $qry='BEGIN;INSERT INTO lehre.tbl_lvangebot (lehrveranstaltung_id, studiensemester_kurzbz, gruppe_kurzbz, incomingplaetze, gesamtplaetze, anmeldefenster_start, anmeldefenster_ende, diff --git a/vilesci/lehre/lehrveranstaltung_lvangebot.php b/vilesci/lehre/lehrveranstaltung_lvangebot.php index 72774eb84..43a8c5157 100644 --- a/vilesci/lehre/lehrveranstaltung_lvangebot.php +++ b/vilesci/lehre/lehrveranstaltung_lvangebot.php @@ -119,8 +119,9 @@ if(isset($_POST["schick"])) if(!$studiengang->load($lehrveranstaltung_obj->studiengang_kz)) die('Fehler beim Laden des Studienganges'); - $gruppe_kurzbz = mb_strtoupper(substr($studiengang->kuerzel.$lehrveranstaltung_obj->semester.'-'.$_POST['studiensemester_kurzbz'].'-'.$lehrveranstaltung_obj->kurzbz,0,32)); $gruppe = new gruppe(); + $gruppe_kurzbz = mb_strtoupper(substr($studiengang->kuerzel.$lehrveranstaltung_obj->semester.'-'.$_POST['studiensemester_kurzbz'].'-'.$lehrveranstaltung_obj->kurzbz,0,32)); + $gruppe_kurzbz = $gruppe->getNummerierteGruppenbez($gruppe_kurzbz); $gruppe->gruppe_kurzbz=$gruppe_kurzbz; $gruppe->studiengang_kz=$studiengang->studiengang_kz; $gruppe->bezeichnung=mb_substr($lehrveranstaltung_obj->bezeichnung,0,30);