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();