Neuer Regeltyp lvpositivabschluss fuer Modul-Abschluss; Fehler beim verschieben von Lehrveranstaltungen im Studienplan behoben wenn die ID kleiner als die Semesteranzahl ist

This commit is contained in:
Andreas Österreicher
2014-02-06 15:24:05 +00:00
parent 9c73bd0d85
commit 080b78b748
8 changed files with 94 additions and 39 deletions
+7 -7
View File
@@ -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 '<span class="ok">';
$abgeschlossen=true;
else
echo '<span class="error">';
$abgeschlossen=false;
}
else
echo '<span>';
// Bezeichnung der Lehrveranstaltung
echo $row_tree->bezeichnung;
echo '</span>';
echo '</td>';
// ECTS Punkte
@@ -354,7 +352,9 @@ function drawTree($tree, $depth)
}
else
{
if(!$row_tree->stpllv_pflicht)
if($abgeschlossen)
echo '<span>'.$p->t('studienplan/regelabgeschlossen'),'</span>';
elseif(!$row_tree->stpllv_pflicht)
echo '<span>'.$p->t('studienplan/optional').'</span>';
else
echo '<span>'.$p->t('studienplan/offen').'</span>';
@@ -474,7 +474,7 @@ function drawTree($tree, $depth)
}
}
}
$class=implode(',',$tdclass);
$class=implode(' ',$tdclass);
echo '<td align="center" class="'.$class.'">';
echo $tdinhalt;
echo '</td>';
+50 -13
View File
@@ -503,6 +503,7 @@ class lvregel extends basis_db
{
list($testval,$ects_tmp) = $this->Test($uid, $regel, $studiensemester_kurzbz, $retval);
$this->debug("<br>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('<br>keine Anrechnung von ECTS Punkten für diesen Eintrag',3);
$this->debug('<br>keine Anrechnung von ECTS Punkten für diesen Eintrag OP:'.$regel[0]->operator.' ECTS:'.$ects_tmp,3);
}
$this->debug('<br>Zwischenergebnis :'.($retval?'TRUE':'FALSE'),5);
@@ -570,6 +571,7 @@ class lvregel extends basis_db
$regel = $regel_obj[0];
$ects=0;
$this->debug('<br><b>Teste Regel '.$regel->lvregel_id.'</b>',2);
$this->debug("<br>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('<br>Aufgrund des XOR Vergleichs werden '.$ects_tmp.' ECTS dazugerechnet');
$ects+=$ects_tmp;
if($regel->operator=='x' && $ects==0 && $ects_tmp>0)
{
$this->debug('<br>Aufgrund des XOR Vergleichs werden '.$ects_tmp.' ECTS dazugerechnet');
$ects+=$ects_tmp;
}
if(($regel->operator=='u' || $regel->operator=='o'))
{
$this->debug('<br>Aufgrund des AND / OR Operators werden '.$ects_tmp.' ECTS dazugerechnet');
$ects+=$ects_tmp;
}
}
if(($regel->operator=='u' || $regel->operator=='o'))
{
$this->debug('<br>Aufgrund des AND / OR Operators werden '.$ects_tmp.' ECTS dazugerechnet');
$ects+=$ects_tmp;
}
*/
$this->debug('<br> == <b>Subregel '.$regel->lvregel_id.'</b> Ende ==<br>',2);
}
$this->debug('<br> 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;
+1
View File
@@ -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';
?>
+7 -4
View File
@@ -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 ====
+4
View File
@@ -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;
@@ -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 '<h3>Kompatible Lehrveranstaltungen - '.$lv->bezeichnung.'</h3>';
$kompatibleLvs = $lv->loadLVkompatibel($lehrveranstaltung_id);
//var_dump($kompatibleLvs);
echo '<h3>Kompatible Lehrveranstaltungen</h3>';
if(count($kompatibleLvs)>0)
{
echo '<table style="width: auto;" class="tablesorter" id="t1">
+13 -9
View File
@@ -116,7 +116,7 @@ function loadStudienordnung()
*/
function drawStudienordnungen(data)
{
var obj='<a href="#Neu" onclick="neueStudienordnung();return false;">Neue Studienordnung</a><ul>';
var obj='<a href="#Neu" onclick="neueStudienordnung();return false;">Neue Studienordnung</a><ul style="padding-left: 15px">';
for(i in data)
{
@@ -188,7 +188,7 @@ function loadStudienplanSTO(neue_studienordnung_id,bezeichnung)
*/
function drawStudienplan(data)
{
var obj='<a href="#Neu" onclick="neuerStudienplan();return false;">Neuer Studienplan</a><ul>';
var obj='<a href="#Neu" onclick="neuerStudienplan();return false;">Neuer Studienplan</a><ul style="padding-left: 15px">';
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+'<br>'+lvdata.bezeichnung+' (Studiengang '+lvdata.studiengang_kz+', Semester '+lvdata.semester+')';
lvdata = data.result[i];
html = html+'<br>'+lvdata.kurzbz+' - '+lvdata.bezeichnung+' (Studiengang '+lvdata.studiengang_kz+', Semester '+lvdata.semester+')';
}
html = html+'<br><br><a href="lehrveranstaltung_kompatibel.php?lehrveranstaltung_id='+lvid+'&type=edit" target="_blank">kompatible Lehrveranstaltungen hinzufügen</a>';
}
$("#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;
+10 -5
View File
@@ -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+'<input type="text" '+style+' size="1" id="lvregel_parameter'+regel.lvregel_id+'" value="'+ClearNull(regel.parameter)+'" />';
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+'<input type="hidden" size="4" id="lvregel_lehrveranstaltung_id'+regel.lvregel_id+'" value="'+ClearNull(regel.lehrveranstaltung_id)+'" />';
// Autocomplete Feld fuer Lehrveranstaltung
val = val+'<input type="text" size="12" id="lvregel_lehrveranstaltung_id_autocomplete'+regel.lvregel_id+'" value="'+ClearNull(regel.lehrveranstaltung_bezeichnung)+'" lvregel_id="'+regel.lvregel_id+'"/>';
var autocompletebezeichnung = ClearNull(regel.lehrveranstaltung_bezeichnung);
if(regel.lehrveranstaltung_bezeichnung==undefined)
{
autocompletebezeichnung='Lehrveranstaltungsname eingeben';
}
val = val+'<input type="text" size="12" id="lvregel_lehrveranstaltung_id_autocomplete'+regel.lvregel_id+'" value="'+autocompletebezeichnung+'" lvregel_id="'+regel.lvregel_id+'"/>';
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+' <a href="#" style="font-size: x-small" onclick="LVRegelShowAutocomplete(\''+regel.lvregel_id+'\',true);return false;" id="lvregel_lehrveranstaltung_span'+regel.lvregel_id+'">'+lvbezeichnung+'</a>';
// 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+'</span>';
// 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();