From 080b78b748a878f89514d57c81ece88c06981a45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Thu, 6 Feb 2014 15:24:05 +0000 Subject: [PATCH] Neuer Regeltyp lvpositivabschluss fuer Modul-Abschluss; Fehler beim verschieben von Lehrveranstaltungen im Studienplan behoben wenn die ID kleiner als die Semesteranzahl ist --- cis/private/profile/studienplan.php | 14 ++--- include/lvregel.class.php | 63 +++++++++++++++---- locale/de-AT/studienplan.php | 1 + skin/styles/tw.css | 11 ++-- system/checksystem.php | 4 ++ .../lehre/lehrveranstaltung_kompatibel.php | 3 +- vilesci/lehre/studienordnung.js | 22 ++++--- vilesci/lehre/studienordnung_lvregel.js | 15 +++-- 8 files changed, 94 insertions(+), 39 deletions(-) diff --git a/cis/private/profile/studienplan.php b/cis/private/profile/studienplan.php index 49a819a0f..f0d261e4d 100644 --- a/cis/private/profile/studienplan.php +++ b/cis/private/profile/studienplan.php @@ -314,20 +314,18 @@ function drawTree($tree, $depth) $lvkompatibel_arr = $lvkompatibel->loadLVkompatibel($row_tree->lehrveranstaltung_id); $lvkompatibel_arr[]=$row_tree->lehrveranstaltung_id; + $abgeschlossen=false; $lvregel = new lvregel(); if($lvregel->exists($row_tree->studienplan_lehrveranstaltung_id)) { if($lvregel->isAbgeschlossen($uid, $row_tree->studienplan_lehrveranstaltung_id)) - echo ''; + $abgeschlossen=true; else - echo ''; + $abgeschlossen=false; } - else - echo ''; // Bezeichnung der Lehrveranstaltung echo $row_tree->bezeichnung; - echo ''; echo ''; // ECTS Punkte @@ -354,7 +352,9 @@ function drawTree($tree, $depth) } else { - if(!$row_tree->stpllv_pflicht) + if($abgeschlossen) + echo ''.$p->t('studienplan/regelabgeschlossen'),''; + elseif(!$row_tree->stpllv_pflicht) echo ''.$p->t('studienplan/optional').''; else echo ''.$p->t('studienplan/offen').''; @@ -474,7 +474,7 @@ function drawTree($tree, $depth) } } } - $class=implode(',',$tdclass); + $class=implode(' ',$tdclass); echo ''; echo $tdinhalt; echo ''; diff --git a/include/lvregel.class.php b/include/lvregel.class.php index c64daafe5..4e264df5f 100644 --- a/include/lvregel.class.php +++ b/include/lvregel.class.php @@ -503,6 +503,7 @@ class lvregel extends basis_db { list($testval,$ects_tmp) = $this->Test($uid, $regel, $studiensemester_kurzbz, $retval); + $this->debug("
Compare ".$regel[0]->operator.", ".($retval?'T':'F').", ".($testval?'T':'F'),5); $retval = $this->Compare($regel[0]->operator, $retval, $testval); if($regel[0]->operator=='x' && $ects==0 && $ects_tmp>0) @@ -519,7 +520,7 @@ class lvregel extends basis_db } else { - $this->debug('
keine Anrechnung von ECTS Punkten für diesen Eintrag',3); + $this->debug('
keine Anrechnung von ECTS Punkten für diesen Eintrag OP:'.$regel[0]->operator.' ECTS:'.$ects_tmp,3); } $this->debug('
Zwischenergebnis :'.($retval?'TRUE':'FALSE'),5); @@ -570,6 +571,7 @@ class lvregel extends basis_db $regel = $regel_obj[0]; $ects=0; $this->debug('
Teste Regel '.$regel->lvregel_id.'',2); + $this->debug("
UID:$uid OP:$regel->operator STSEM:$studiensemester_kurzbz RETVAL:".($retvalglobal?'T':'F'),5); switch($regel->lvregeltyp_kurzbz) { @@ -630,6 +632,40 @@ class lvregel extends basis_db AND student_uid=".$this->db_add_param($uid)." AND lehrveranstaltung_id=".$this->db_add_param($regel->lehrveranstaltung_id); + if($result = $this->db_query($qry)) + { + if($row = $this->db_fetch_object($result)) + { + $this->debug('Positive Note gefunden:'.$row->note,3); + $retval = true; + } + else + { + $this->debug('Keine positive Note',3); + $retval = false; + } + } + else + { + $this->debug('Fehler bei Abfrage',1); + $this->errormsg = 'Fehler bei Abfrage'; + $retval = false; + } + break; + + case 'lvpositivabschluss': + $this->debug('Regeltyp lvpositivabschluss:'.$regel->lehrveranstaltung_id,3); + $qry = "SELECT + tbl_lehrveranstaltung.ects, tbl_zeugnisnote.note + FROM + lehre.tbl_zeugnisnote + JOIN lehre.tbl_note USING(note) + JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id) + WHERE + tbl_note.positiv + AND student_uid=".$this->db_add_param($uid)." + AND lehrveranstaltung_id=".$this->db_add_param($regel->lehrveranstaltung_id); + if($result = $this->db_query($qry)) { if($row = $this->db_fetch_object($result)) @@ -665,21 +701,22 @@ class lvregel extends basis_db list($testval,$ects_tmp) = $this->TestRegeln($uid, $regel_obj['childs'],null, $retval); $retval = $this->Compare($regel->operator, $retval, $testval); -/* - if($regel->operator=='x' && $ects==0 && $ects_tmp>0) + if($testval) { - $this->debug('
Aufgrund des XOR Vergleichs werden '.$ects_tmp.' ECTS dazugerechnet'); - $ects+=$ects_tmp; + if($regel->operator=='x' && $ects==0 && $ects_tmp>0) + { + $this->debug('
Aufgrund des XOR Vergleichs werden '.$ects_tmp.' ECTS dazugerechnet'); + $ects+=$ects_tmp; + } + if(($regel->operator=='u' || $regel->operator=='o')) + { + $this->debug('
Aufgrund des AND / OR Operators werden '.$ects_tmp.' ECTS dazugerechnet'); + $ects+=$ects_tmp; + } } - if(($regel->operator=='u' || $regel->operator=='o')) - { - $this->debug('
Aufgrund des AND / OR Operators werden '.$ects_tmp.' ECTS dazugerechnet'); - $ects+=$ects_tmp; - } -*/ $this->debug('
== Subregel '.$regel->lvregel_id.' Ende ==
',2); } - + $this->debug('
TEST Return Retval:'.($retval?'T':'F').' ECTS:'.$ects); return array($retval,$ects); } @@ -741,7 +778,7 @@ class lvregel extends basis_db $lv->load($stpllv->lehrveranstaltung_id); $this->debug('Abgeschlossen:'.$retval.' ECTS:'.$ects,1); - if($ects>=$lv->ects && $retval) + if($ects>=$lv->ects) return true; else return false; diff --git a/locale/de-AT/studienplan.php b/locale/de-AT/studienplan.php index e5dcf48d5..b43658bee 100644 --- a/locale/de-AT/studienplan.php +++ b/locale/de-AT/studienplan.php @@ -22,5 +22,6 @@ $this->phrasen['studienplan/zuWenigCP']='Sie haben zu wenig Credit Points für e $this->phrasen['studienplan/reduzierteCP']='Für dieses Semester sind die verfügbaren ECTS Punkte reduziert. Noch verfügbare ECTS Punkte: %s'; $this->phrasen['studienplan/einschreibungErfolgreich']='Sie wurden erfolgreich in die Lehrveranstaltung eingeschrieben'; $this->phrasen['studienplan/AnmeldungNichtMoeglich']='Keine Anmeldung moeglich'; +$this->phrasen['studienplan/regelabgeschlossen']='abgeschlossen'; ?> diff --git a/skin/styles/tw.css b/skin/styles/tw.css index b6f06a9f3..79d78ca5d 100644 --- a/skin/styles/tw.css +++ b/skin/styles/tw.css @@ -927,15 +927,18 @@ ul.menu padding-left: 5px; } + +/* LV Angebot im Studienplan */ +.angebot +{ + border: 3px solid #edd400; +} + /* Empfehlung im Studienplan */ .empfehlung { border: 3px solid green; } -.angebot -{ - border: 3px solid #edd400; -} /* ==== Menubox-Effekt am Seitenrand. Nettes Feature aber dzt. nicht sinnvoll einsetzbar ==== diff --git a/system/checksystem.php b/system/checksystem.php index 3eff936d0..4bb316dbf 100644 --- a/system/checksystem.php +++ b/system/checksystem.php @@ -289,6 +289,10 @@ if(!$result = @$db->db_query("SELECT 1 FROM lehre.tbl_lvregel LIMIT 1;")) ALTER TABLE lehre.tbl_lvregel ADD CONSTRAINT fk_lvregel_lehrveranstaltung_lehrveranstaltung_id FOREIGN KEY (lehrveranstaltung_id) REFERENCES lehre.tbl_lehrveranstaltung (lehrveranstaltung_id) ON DELETE RESTRICT ON UPDATE CASCADE; ALTER TABLE lehre.tbl_lvregel ADD CONSTRAINT fk_lvregel_studienplan_lehrveranstaltung FOREIGN KEY (studienplan_lehrveranstaltung_id) REFERENCES lehre.tbl_studienplan_lehrveranstaltung (studienplan_lehrveranstaltung_id) ON DELETE RESTRICT ON UPDATE CASCADE; + INSERT INTO lehre.tbl_lvregeltyp(lvregeltyp_kurzbz, bezeichnung) VALUES('ausbsemmin','Ausbildungssemester Min'); + INSERT INTO lehre.tbl_lvregeltyp(lvregeltyp_kurzbz, bezeichnung) VALUES('lvpositiv','LV Positiv für Anmeldung'); + INSERT INTO lehre.tbl_lvregeltyp(lvregeltyp_kurzbz, bezeichnung) VALUES('lvpositivabschluss','LV Positiv für Abschluss'); + GRANT SELECT ON lehre.tbl_lvregel TO web; GRANT SELECT, UPDATE, INSERT, DELETE ON lehre.tbl_lvregel TO vilesci; GRANT SELECT, UPDATE ON lehre.seq_lvregel_lvregel_id TO vilesci; diff --git a/vilesci/lehre/lehrveranstaltung_kompatibel.php b/vilesci/lehre/lehrveranstaltung_kompatibel.php index 25a204fc8..0be49e616 100755 --- a/vilesci/lehre/lehrveranstaltung_kompatibel.php +++ b/vilesci/lehre/lehrveranstaltung_kompatibel.php @@ -245,10 +245,11 @@ $rechte->getBerechtigungen($user); $lehrveranstaltung_id = $_GET["lehrveranstaltung_id"]; $type = isset($_GET["type"]) ? $_GET["type"] : ""; $lv = new lehrveranstaltung(); +$lv->load($lehrveranstaltung_id); +echo '

Kompatible Lehrveranstaltungen - '.$lv->bezeichnung.'

'; $kompatibleLvs = $lv->loadLVkompatibel($lehrveranstaltung_id); //var_dump($kompatibleLvs); -echo '

Kompatible Lehrveranstaltungen

'; if(count($kompatibleLvs)>0) { echo ' diff --git a/vilesci/lehre/studienordnung.js b/vilesci/lehre/studienordnung.js index be9bd2005..71684bb71 100644 --- a/vilesci/lehre/studienordnung.js +++ b/vilesci/lehre/studienordnung.js @@ -116,7 +116,7 @@ function loadStudienordnung() */ function drawStudienordnungen(data) { - var obj='Neue Studienordnung
    '; + var obj='Neue Studienordnung
      '; for(i in data) { @@ -188,7 +188,7 @@ function loadStudienplanSTO(neue_studienordnung_id,bezeichnung) */ function drawStudienplan(data) { - var obj='Neuer Studienplan
        '; + var obj='Neuer Studienplan
          '; for(i in data) { @@ -286,7 +286,7 @@ function loadLehrveranstaltungSTPL(studienplan_id, bezeichnung, max_semester) var obj = { "data":sem+'. Semester', - "attr":{"id":sem,"rel":"semester"}, + "attr":{"id":"Semester"+sem,"rel":"semester","semester":sem}, "children":children }; treeData.push(obj); @@ -595,11 +595,12 @@ function loadLVKompatibilitaet(lvid) var html=''; for(i in data.result) { - if(data.result[i].metadata) + if(data.result[i]) { - lvdata = data.result[i].metadata; - html = html+'
          '+lvdata.bezeichnung+' (Studiengang '+lvdata.studiengang_kz+', Semester '+lvdata.semester+')'; + lvdata = data.result[i]; + html = html+'
          '+lvdata.kurzbz+' - '+lvdata.bezeichnung+' (Studiengang '+lvdata.studiengang_kz+', Semester '+lvdata.semester+')'; } + html = html+'

          kompatible Lehrveranstaltungen hinzufügen'; } $("#tab-kompatibel").html(html); @@ -878,10 +879,11 @@ function hideAllTreeColumns() */ function saveJsondataFromTree(nodeId, studienplan_id, studienplan_lehrveranstaltung_id) { + var obj = $("#treeData").find("li[id="+nodeId+"]"); var jsonData = $("#treeData").jstree("get_json", $("#treeData").find("li[id="+nodeId+"]")); + var copy = false; - - + if(jsonData.length !== 1) { jsonData = $("#treeData").jstree("get_json", $("#copy_"+nodeId)); @@ -903,7 +905,9 @@ function saveJsondataFromTree(nodeId, studienplan_id, studienplan_lehrveranstalt } var lehrveranstaltung_id = jsonData[0]["metadata"]["lehrveranstaltung_id"]; - var semester = node.closest("li[rel=semester]").attr("id"); + var semester = node.closest("li[rel=semester]").attr("semester"); + + // Wenn die Lehrveranstaltung ausserhalb des Semester platziert wird, werden diese ins 0er Semester gelegt if(semester === undefined) { semester = 0; diff --git a/vilesci/lehre/studienordnung_lvregel.js b/vilesci/lehre/studienordnung_lvregel.js index 9806f7be6..85f873f1e 100644 --- a/vilesci/lehre/studienordnung_lvregel.js +++ b/vilesci/lehre/studienordnung_lvregel.js @@ -203,14 +203,14 @@ function drawRegel(regel) // Parameter // Input Feld verstecken wenn der Typ LVpositiv ist - if(regel.lvregeltyp_kurzbz=='lvpositiv') + if(regel.lvregeltyp_kurzbz=='lvpositiv' || regel.lvregeltyp_kurzbz=='lvpositivabschluss') var style='style="display:none"'; else var style=''; val = val+''; - if(regel.lvregeltyp_kurzbz=='lvpositiv') + if(regel.lvregeltyp_kurzbz=='lvpositiv' || regel.lvregeltyp_kurzbz=='lvpositivabschluss') var style=''; else var style='style="display: none"'; @@ -220,7 +220,12 @@ function drawRegel(regel) val = val+''; // Autocomplete Feld fuer Lehrveranstaltung - val = val+''; + var autocompletebezeichnung = ClearNull(regel.lehrveranstaltung_bezeichnung); + if(regel.lehrveranstaltung_bezeichnung==undefined) + { + autocompletebezeichnung='Lehrveranstaltungsname eingeben'; + } + val = val+''; if(regel.lehrveranstaltung_bezeichnung==null || regel.lehrveranstaltung_bezeichnung=='undefined' || regel.lehrveranstaltung_bezeichnung=='') var lvbezeichnung = 'klicken um LV auszuwählen'; else @@ -229,7 +234,7 @@ function drawRegel(regel) val = val+' '+lvbezeichnung+''; // Die Autocomplete Funktionalitaet wird erst hinzugefuegt, wenn das Input Feld tatsaechlich existiert und // bis dort hin zwischengespeichert - LVREGELLehrveranstaltungAutocompleteArray[LVREGELLehrveranstaltungAutocompleteArray.length]=regel.lvregel_id; // WORKING + LVREGELLehrveranstaltungAutocompleteArray[LVREGELLehrveranstaltungAutocompleteArray.length]=regel.lvregel_id; val = val+''; // Speichern Button @@ -256,7 +261,7 @@ function LVRegelTypChange(id) { var typ = $('#lvregel_lvregeltyp'+id+' option:selected').val(); - if(typ=='lvpositiv') + if(typ=='lvpositiv' || typ=='lvpositivabschluss') { $('#lvregel_lehrveranstaltung_data'+id).show(); $('#lvregel_parameter'+id).hide();