Files
FHC-Core/vilesci/lehre/studienordnung.js
T

1609 lines
43 KiB
JavaScript

/* Copyright (C) 2013 fhcomplete.org
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>,
* Stefan Puraner <puraner@technikum-wien.at>
* Andreas Moik <moik@technikum-wien.at>
* Cristina Hainberger <hainberg@technikum-wien.at>
*/
var global_studiengang_kz='';
var global_studiengang_bezeichnung='';
var global_studienordnung_id='';
var global_studienordnung_bezeichnung='';
var global_studienplan_id='';
var lehrveranstaltungen='';
// Speichert die Parameter des aktuell angezeigten Studienplans fuer Refresh des Trees
var loadLehrveranstaltungSTPLStudienplan_id = '';
var loadLehrveranstaltungSTPLBezeichnung = '';
var loadLehrveranstaltungSTPLSemester = '';
// Wenn true sind die LV Filter bereits geladen und muessen nicht erneut geladen werden
var isLVFilterLoaded=false;
/**
* Error-Behandlung bei Ajax Requests
*/
function loadError(xhr, textStatus, errorThrown)
{
if(xhr.status==200)
alert('Fehler:'+xhr.responseText);
else
alert('Fehler beim Laden der Daten. ErrorNr:'+xhr.status);
}
/**
* Entfernt Null Werte
*/
function ClearNull(value)
{
if(value===null)
return '';
else
return value;
}
/**
* Schreibt die Ueberschrift des angezeigten Studienplanes
*/
function drawHeader(text)
{
if(text===undefined)
{
text = '<h2>';
if(global_studiengang_bezeichnung!='')
text=text+global_studiengang_bezeichnung;
if(global_studienordnung_bezeichnung!='')
text=text+' <b>&gt;</b> '+global_studienordnung_bezeichnung;
if(studienplan_bezeichnung!='')
text=text+' <b>&gt;</b> '+studienplan_bezeichnung;
text=text+'</h2>';
}
else
text='<h2>'+text+'</h2>';
$('#header').html(text);
}
/**
* Laedt die Studienordnungen und zeigt diese im linken Menue an
*/
function loadStudienordnung()
{
var method = 'loadStudienordnungSTGInaktiv';
if(typeof initSTOs === 'undefined')
{
method = 'loadStudienordnungSTG';
}
// Ausgewaehlten Studiengang holen
global_studiengang_kz = $('#studiengang').val();
global_studiengang_bezeichnung = $( "#studiengang option:selected" ).text();
// Globale Variablen resetten
global_studienordnung_id='';
global_studienordnung_bezeichnung='';
global_studienplan_id='';
studienplan_bezeichnung='';
drawHeader();
// Laden der Studienordnungen
$.ajax(
{
dataType: "json",
url: "../../soap/fhcomplete.php",
data: {
"typ": "json",
"class": "studienordnung",
"method": method,
"parameter_0": global_studiengang_kz
},
error: loadError
}).success(function(data)
{
if(data.error=='true')
{
alert('Fehler:'+data.errormsg);
}
else
{
$("#studienplan").html("Bitte wählen Sie zuerst eine Studienordnung aus!");
drawStudienordnungen(data.result);
//jqUi( "#menueLinks" ).accordion("option","active",1);
}
neueStudienordnung();
});
}
/**
* Erstellt die Links fuer die Studienordnungen
* @param data Objekt mit den Studienordnungsdaten
*/
function drawStudienordnungen(data)
{
var obj='<a href="#Neu" onclick="neueStudienordnung();return false;">Neue Studienordnung</a><ul style="padding-left: 15px">';
for(i in data)
{
if(data[i].studienordnung_id !== null)
{
obj = obj + '<li>'
+' <a style="white-space:nowrap" href="#Load'+data[i].studienordnung_id+'" onclick="loadStudienplanSTO('+data[i].studienordnung_id+','+data[i].studienplan_id+',\''+data[i].bezeichnung+'\');return false;">'+data[i].bezeichnung+'</a>&nbsp;'
+' <a href="#Copy'+data[i].studienordnung_id+'" onclick="copyStudienordnung('+data[i].studienordnung_id+');return false;"><img title="Studienordnung kopieren" src="../../skin/images/copy.png"></a>&nbsp;&nbsp;&nbsp;'
+' <a href="../../content/pdfExport.php?xml=studienordnung.rdf.php&xsl=Studienordnung&studienordnung_id='+data[i].studienordnung_id+'&stg_kz=0&output=doc"><img style="cursor:pointer; height: 16px;" title="Studienordnung als Word-Dokument exportieren" src="../../skin/images/doc_icon.png"></a>'
+' <a href="../../content/pdfExport.php?xml=studienordnung.rdf.php&xsl=Studienordnung&studienordnung_id='+data[i].studienordnung_id+'&stg_kz=0&output=pdf"><img style="cursor:pointer; height: 16px;" title="Studienordnung als PDF-Dokument exportieren" src="../../skin/images/pdf_icon.png"></a>'
+' </li>';
}
}
obj=obj+'</ul>';
$("#data").empty();
$("#tabs").hide();
$('#studienordnung').html(obj);
}
/**
* Laedt die Studienplaene zu einer Studienordnung
*/
function loadStudienplanSTO(neue_studienordnung_id, studienplan_id,bezeichnung)
{
global_studienordnung_bezeichnung=bezeichnung;
global_studienordnung_id=neue_studienordnung_id;
global_studienplan_id = studienplan_id;
drawHeader();
$.ajax(
{
dataType: "json",
url: "../../soap/fhcomplete.php",
data: {
"typ": "json",
"class": "studienplan",
"method": "loadStudienplanSTO",
"parameter_0": global_studienordnung_id
},
error: loadError
}).success(function(data)
{
if(data.error=='true')
{
alert('Fehler:'+data.errormsg);
}
else
{
drawStudienplan(data.result);
//jqUi( "#menueLinks" ).accordion("option","active",2);
}
editStudienordnung(global_studienordnung_id);
});
$.ajax({
dataType: "json",
url: "../../soap/fhcomplete.php",
data: {
"typ" : "json",
"class": "studienordnung",
"method": "loadStudienordnung",
"parameter_0": global_studienordnung_id
},
error: loadError
}).success(function(data){
if(data.result.length === 1)
{
var html = "";
html += data.result[0];
}
});
}
/**
* Erstellt die Links zu den Studienplaenen
*/
function drawStudienplan(data)
{
var obj ='<a href="#Neu" onclick="neuerStudienplan();return false;">Neuer Studienplan</a>\n\
<ul style="padding-left: 15px">';
for(i in data)
{
if(data[i].studienplan_id !== null)
{
global_studienplan_id = data[i].studienplan_id;
obj=obj+'<li>'
+' <a href="#Load'+data[i].studienplan_id+'" onclick="loadLehrveranstaltungSTPL('+data[i].studienplan_id+',\''+data[i].bezeichnung+'\',\''+data[i].regelstudiendauer+'\');return false;">'+data[i].bezeichnung+'</a>'
+' <a href="#Edit'+data[i].studienplan_id+'" onclick="editStudienplan('+data[i].studienplan_id+');return false;"><img title="edit" src="../../skin/images/edit.png"></a>'
+' <a href="#Load'+data[i].studienplan_id+'" onclick="semesterSTPLZuordnung();return false;"><img title="Semesterzuordnung" src="../../skin/images/split-arrows.png"></a>'
+'</li>';
}
}
obj=obj+'</ul>';
$("#tabs").hide();
$('#studienplan').html(obj);
}
/**
* Konvertiert den Tree fuer den Studienplan damit dieser mit jstree angezeigt werden kann
*/
function GenerateTreeChilds(data)
{
var children = [];
if(data.children!==undefined)
{
// Rekursiv die darunterliegenden LVs aufloesen
for(i in data.children)
children.push(GenerateTreeChilds(data.children[i]));
}
var obj = {
"data":data.bezeichnung,
"metadata": {"lehrveranstaltung_id":data.lehrveranstaltung_id,"bezeichnung":data.bezeichnung,"ects":data.ects,"semesterstunden":data.semesterstunden,"lehrform_kurzbz":data.lehrform_kurzbz,"lvnr":data.lvnr,"sortierung":data.stpllv_sort,"pflicht":data.stpllv_pflicht,"export":data.export,"genehmigung":data.genehmigung},
"attr":{"id":data.studienplan_lehrveranstaltung_id,"rel":data.lehrtyp_kurzbz,"lvID":data.lehrveranstaltung_id,"studienplan_lehrveranstaltung_id":data.studienplan_lehrveranstaltung_id},
"children":children
};
return obj;
}
/**
* Laedt die Lehrveranstaltungen eines Studienplanes
*/
function loadLehrveranstaltungSTPL(studienplan_id, bezeichnung, max_semester)
{
// Daten in globale Variable Speichern damit der Tree spaeter refresht werden kann
loadLehrveranstaltungSTPLStudienplan_id = studienplan_id;
loadLehrveranstaltungSTPLBezeichnung = bezeichnung;
loadLehrveranstaltungSTPLSemester = max_semester;
global_studienplan_id = studienplan_id;
studienplan_bezeichnung=bezeichnung;
drawHeader();
// Laden der Daten
$.ajax(
{
dataType: "json",
url: "../../soap/fhcomplete.php",
data: {
"typ": "json",
"class": "lehrveranstaltung",
"method": "getLvTree",
"parameter_0": global_studienplan_id,
},
error: loadError
}).success(function(data)
{
// Daten konvertieren damit diese im Tree angezeigt werden koennen
var treeData=[];
var semester=max_semester;
// Semester Baum aufbauen
// 0er Semester direkt anzeigen (als uebergeordnete LVs)
var children = [];
for(i in data.return)
{
var item = data.return[i];
if(item.stpllv_semester==0)
{
treeData.push(GenerateTreeChilds(item));
}
}
// Alle anderen Semester durchlaufen
for(var sem=1;sem<=semester;sem++)
{
// LVs die direkt unter diesem Semester liegen
var children = [];
for(i in data.return)
{
var item = data.return[i];
if(item.stpllv_semester==sem)
{
children.push(GenerateTreeChilds(item));
}
}
// Sortieren nach der Bezeichnung
children.sort(function(a,b){
return a.data>b.data;
});
var obj = {
"data":sem+'. Semester',
"attr":{"id":"Semester"+sem,"rel":"semester","semester":sem},
"children":children
};
treeData.push(obj);
}
// DIV fuer den Tree neu anlegen damit der alte Tree vollstaendig entfernt wird
$("#data").html("<div id='treeData'></div>");
function searchChildren(element, matchingId, original)
{
var found = false;
$("#"+element.attr("id")+" ul").first().children().each(function(i,v){
if($(v).attr("lvid") === original.attr("id"))
{
found = true;
}
});
if((found) || ($("#"+element.attr("id")).attr("lvid") === matchingId))
{
if(($("#"+element.attr("id")).find("[lvid='"+matchingId+"']").attr("id") === original.attr("id")) || ($("#"+element.attr("id")).attr("id") === original.attr("id")))
{
return false;
}
return true;
}
return false;
}
function searchParents(element, matchingId)
{
if((element.parent().parent().attr("lvid") === matchingId) || (element.attr("lvid") === matchingId))
{
return true;
}
else
{
if(element.parent().parent().attr("lvid") !== undefined)
{
if(searchParents(element.parent().parent(), matchingId))
return true;
}
return false;
}
}
// Anzeigen des Trees mit den Lehrveranstaltungen
$("#treeData").jstree({
ui: {
"select_limit": 1,
"select_multiple_modifier": "ctrl"
},
json_data: {
data: treeData // Daten an den Tree binden
},
crrm: {
move: {
"always_copy": "multitree",
"check_move": function(m) {
var text;
if(m.ot === m.rt)
{
if((searchChildren(m.r, m.o.attr("lvid"), m.o) === true) || (searchParents(m.r, m.o.attr("lvid")) === true))
{
return false;
}
}
else
{
if((searchChildren(m.r, m.o.attr("id"), m.o) === true) || (searchParents(m.r, m.o.attr("id")) === true))
{
return false;
}
}
if(m.o.attr("rel")==="semester")
{
return false;
}
if(m.r.attr("rel")==="semester" && (m.p === "inside" || m.p === "before"))
{
return true;
}
if(m.p === "inside" || m.p === "last")
{
return true;
}
return false;
}
}
},
dnd: {
"drag_check": function(data){
return {
after: false,
before: false,
inside: true
};
}
},
grid: {
columns: [
{width: 300, header: "Lehrveranstaltung", value: "bezeichnung", source: "metadata", headerClass: "header_lv"},
{width: 50, header: "ECTS", value: "ects", source: "metadata", wideCellClass: "col_ects", headerClass: "header_ects"},
{width: 60, header: "SemStd", value: "semesterstunden", source: "metadata", cellClass: "col_left"},
{width: 80, header: "Lehrform", value: "lehrform_kurzbz", source: "metadata", cellClass: "col_lehrform"},
{width: 60, header: "StudPlan", value: "export", source: "metadata", cellClass: "col_left"},
{width: 60, header: "Pflicht", value: "pflicht", source: "metadata", cellClass: "col_left"},
{width: 60, header: "Gen", value: "genehmigung", source: "metadata", cellClass: "col_left"},
{width: 80, header: "LVNR", value: "lvnr", source: "metadata", cellClass: "col_left"},
{width: 60, header: "Sort", value: "sortierung", source: "metadata", cellClass: "col_left"},
],
resizable: true
},
types: {
"types" : {
"lv" : {
icon : {
image : "../../skin/images/lv.png"
}
},
"semester" : {
},
"modul" : {
icon : {
image : "../../skin/images/modul.png"
}
},
"lf" : {
}
}
},
sort : function(a, b){
return this._get_node(a).attr("rel") > this._get_node(b).attr("rel");
},
contextmenu: {
// Kontextmenue
"items" : function(node) {
// Loeschen nur anzeigen wenn Eintrag kein Semester ist
if(node.attr("rel") !== "semester")
{
return {
"Delete" : {
"label" : "Eintrag entfernen",
"action": function(obj){
// Pruefen ob LVs unterhalb dieser LV haengen,
// falls ja wird das loeschen verhindert
if(obj.children().find("li").length === 0)
{
var conf = confirm("Wollen Sie \""+this.get_text(obj)+"\" wirklich aus diesem Studienplan löschen?");
if(conf)
{
deleteLehrveranstaltungFromStudienplan(obj.attr("studienplan_lehrveranstaltung_id"), this, obj);
}
}
else
{
alert("Das zu löschende Element darf keine Elemente beinhalten!");
}
}
}
};
}
}
},
plugins: ["themes", "ui", "dnd", "grid", "json_data", "crrm", "types", "sort", "contextmenu"]
}).bind("move_node.jstree", function(event, data)
{
// Verschieben eines Eintrages
// Studienplan_lehrveranstaltung_id ermitteln
var studienplan_lehrveranstaltung_id='';
if(data.rslt.o[0].attributes.studienplan_lehrveranstaltung_id){
studienplan_lehrveranstaltung_id=data.rslt.o[0].attributes.studienplan_lehrveranstaltung_id.value;
//$("#treeData").jstree('refresh');
}
// Aenderung speichern
saveJsondataFromTree(data.rslt.o[0].id, global_studienplan_id, studienplan_lehrveranstaltung_id);
// ECTS Summen neu berechnen
var root = data.inst.get_container_ul();
var nodes = root[0].childNodes;
for(var i=0; i<nodes.length; i++)
{
if(nodes[i].getAttribute("rel") === "semester")
{
writeEctsSum(nodes[i]);
}
}
hideAllTreeColumns();
writeOverallSum(nodes);
}).bind("loaded.jstree", function(event, data)
{
// Wenn der Tree geladen wird, die ECTS Summen der einzelnen Semester berechnen
var root = data.inst.get_container_ul();
var nodes = root[0].childNodes;
for(var i=0; i<nodes.length; i++)
{
if(nodes[i].getAttribute("rel") === "semester"){
writeEctsSum(nodes[i]);
}
}
writeOverallSum(nodes);
}).bind("open_node.jstree", function(event, data)
{
if(data.args[0].attr)
{
var root = data.inst.get_container_ul()[0].childNodes;
var nodes = $("#"+data.args[0].attr("id"));
for(var i=0; i<nodes.length; i++)
{
if(nodes[i].getAttribute("rel") === "semester"){
writeEctsSum(nodes[i]);
}
}
writeOverallSum(root);
}
}).bind("select_node.jstree", function(event, data)
{
// Bei einem Klick auf eine LV werden die Details geladen
stpllvid = data.rslt.obj.attr("studienplan_lehrveranstaltung_id");
lvid = data.rslt.obj.attr("lvID");
if(lvid !== undefined)
{
if(lvid.substring(0,5)==="copy_")
{
lvid = lvid.substring(5);
}
}
// Lehrveranstaltungsdetails laden
if(data.rslt.obj.attr("rel") !== "semester")
{
LoadLVDetails(lvid, stpllvid);
}
else
{
$("#tab-lehrveranstaltungdetail").html("<p>Klicken Sie auf eine Lehrveranstaltung um die Details anzuzeigen</p>");
}
// Regeln laden
if(data.rslt.obj.attr("rel") !== "semester")
{
if(stpllvid!==undefined)
LVRegelnloadRegeln(stpllvid);
}
else
{
$("#tab-regel").html("<p>Klicken Sie auf eine Lehrveranstaltung um die Regeln anzuzeigen</p>");
}
// Kompatibilitaet laden
if(data.rslt.obj.attr("rel") !== "semester")
{
if(lvid!==undefined)
loadLVKompatibilitaet(lvid);
}
else
{
$("#tab-kompatibel").html("<p>Klicken Sie auf eine Lehrveranstaltung um die kompatiblen Lehrveranstaltungen anzuzeigen</p>");
}
// Sortierung laden
if(data.rslt.obj.attr("rel") !== "semester")
{
if(lvid!==undefined)
loadSTPLSortierung(stpllvid);
}
else
{
$("#tab-sortierung").html("<p>Klicken Sie auf eine Lehrveranstaltung um die Sortierung innerhalb der Studienplanansicht im CIS zu ändern.</p>");
}
});
if(!isLVFilterLoaded)
{
$("#lehrveranstaltung").html("OE: <div id='oeDiv' style='display:inline'></div><br><br>");
$.ajax(
{
dataType: "json",
url: "../../soap/fhcomplete.php",
data: {
"typ": "json",
"class": "organisationseinheit",
"method": "getAll",
"parameter_0":true,
"parameter_1":true
},
error: loadError
}).success(function(data)
{
var html = "<select id='oeDropdown' style='max-width: 200px' onchange='loadFilteredLehrveranstaltungen();'><option value=''>-- Keine --</option>";
for(i in data.result)
{
if(data.result[i].aktiv===true)
{
html+='<option value="'+data.result[i].oe_kurzbz+'">'+data.result[i].organisationseinheittyp_kurzbz+' '+data.result[i].bezeichnung+'</option>';
}
}
html+="</select>";
$("#oeDiv").html(html);
loadLehrtypen();
});
}
else
{
// Filter sind bereits vorhanden, nur die LVs und Semesteranzahl werden neu geladen
loadSemester();
}
});
$( "#tabs" ).show();
}
/**
* Laedt Details zur ausgewaehlten Lehrveranstaltung
*/
function LoadLVDetails(lvid, stpllvid)
{
$.ajax(
{
dataType: "json",
url: "../../soap/fhcomplete.php",
data: {
"typ": "json",
"class": "lehrveranstaltung",
"method": "load",
"parameter_0":lvid
},
error: loadError
}).success(function(data)
{
lvdata = data.result[0];
var html = "<b>"+ClearNull(lvdata.bezeichnung)+" - "+ClearNull(lvdata.kurzbz)+"</b>";
html+="<br>ECTS: "+ClearNull(lvdata.ects);
html+="<br>Semesterstunden: "+ClearNull(lvdata.semesterstunden);
html+="<br>LVNR: "+ClearNull(lvdata.lvnr);
html+="<br>Lehrform: "+ClearNull(lvdata.lehrform_kurzbz);
html+="<br>LV-Semester: "+ClearNull(lvdata.semester);
html+="<br><br>LVID: "+ClearNull(lvdata.lehrveranstaltung_id)+" / StgKz: "+ClearNull(lvdata.studiengang_kz);
$("#tab-lehrveranstaltungdetail").html(html);
});
}
/**
* Laedt kompatible LVs zur ausgewaehlten Lehrveranstaltung
*/
function loadLVKompatibilitaet(lvid)
{
$.ajax(
{
dataType: "json",
url: "../../soap/fhcomplete.php",
data: {
"typ": "json",
"class": "lehrveranstaltung",
"method": "getLVkompatibel",
"parameter_0":lvid
},
error: loadError
}).success(function(data)
{
var html='';
for(i in data.result)
{
if(data.result[i])
{
lvdata = data.result[i];
if(!(lvdata.kurzbz===null && lvdata.bezeichnung===null && lvdata.studiengang_kz===null && lvdata.semester===null))
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);
});
}
/*
* lädt die Sortierung einer Lehrveranstaltung innerhalb eines Studienplans
* @param {type} lvid
* @returns {undefined}
*/
function loadSTPLSortierung(stpllvid)
{
$.ajax(
{
dataType: "json",
url: "../../soap/fhcomplete.php",
data: {
"typ": "json",
"class": "studienplan",
"method": "loadStudienplanLehrveranstaltung",
"parameter_0":stpllvid
},
error: loadError
}).success(function(data)
{
var html='';
for(i in data.result)
{
if(data.result[i])
{
lvdata = data.result[i];
html += 'Sortierung: <input type="number" id="stplSort" value="'+ClearNull(lvdata.sort)+'"><br/><input type="button" onclick="saveSortierung(\''+stpllvid+'\');" value="Speichern">';
}
}
$("#tab-sortierung").html(html);
});
}
function saveSortierung(stpllvid)
{
var sort = $('#stplSort').val();
if(sort === "")
sort=null;
savedata = {
"studienplan_lehrveranstaltung_id": stpllvid,
"sort": sort
};
$.ajax(
{
dataType: "json",
url: "../../soap/fhcomplete.php",
type: "POST",
data: {
"typ": "json",
"class": "studienplan",
"method": "saveSortierung",
"savedata": JSON.stringify(savedata)
}
}).success(function(d)
{
//console.log(d);
});
}
/**
* Laedt die Daten um eine neue Studienordnung zu erstellen
*/
function neueStudienordnung()
{
$("#tabs").hide();
drawHeader('Neue Studienordnung');
$("#data").load('studienordnung.inc.php?method=neueStudienordnung&studiengang_kz='+global_studiengang_kz);
}
/**
* Laedt die Daten um einen neuen Studienplan zu erstellen
*/
function neuerStudienplan()
{
$("#tabs").hide();
drawHeader('Neuer Studienplan');
$("#data").load('studienordnung.inc.php?method=neuerStudienplan&studiengang_kz='+global_studiengang_kz);
}
/**
* Laedt die Daten um eine Studienordnung zu editieren
*/
function editStudienordnung(studienordnung_id)
{
$("#tabs").hide();
drawHeader('Studienordnung bearbeiten');
$("#data").load('studienordnung.inc.php?method=neueStudienordnung&studiengang_kz='+global_studiengang_kz+'&studienordnung_id='+studienordnung_id);
}
/**
* Laedt die Daten um einen Studienplan zu editieren
*/
function editStudienplan(studienplan_id)
{
$("#tabs").hide();
drawHeader('Studienplan bearbeiten');
$("#data").load('studienordnung.inc.php?method=neuerStudienplan&studiengang_kz='+global_studiengang_kz+'&studienplan_id='+studienplan_id);
}
/*
* Funktion zum Laden des Baumes der
* gefilterten LVs
* */
function loadFilteredLehrveranstaltungen()
{
if($("#oeDropdown option:selected").val() === "")
{
$.ajax(
{
dataType: "json",
url: "../../soap/fhcomplete.php",
data: {
"typ": "json",
"class": "lehrveranstaltung",
"method": "load_lva",
"parameter_0": global_studiengang_kz, //Studiengangskennzahl
"parameter_1": $("#semesterDropdown").val(), //Semester
"parameter_2": "null", //Lehrverzeichnis
"parameter_3": "null", //Lehre // sollte TRUE sein
"parameter_4": "true", //Aktiv // sollte TRUE sein
"parameter_5": "bezeichnung", //Sortierung
"parameter_6": "null", //$("#oeDropdown option:selected").val(),//Organisationseinheit KurzBz
"parameter_7": $("#lehrtypDropdown option:selected").val() //Lehrtyp KurzBz
},
error: loadError
}).success(function(data)
{
showLVTree(data);
});
}
else
{
//get LVs by OE
$.ajax(
{
dataType: "json",
url: "../../soap/fhcomplete.php",
data: {
"typ": "json",
"class": "lehrveranstaltung",
"method": "load_lva_oe",
"parameter_0": $("#oeDropdown option:selected").val(), //Organisationseinheit KurzBz
"parameter_1": "true", //Aktiv // sollte TRUE sein
"parameter_2": $("#lehrtypDropdown option:selected").val(), //Lehrtyp KurzBz
"parameter_3": "null", //optionale Sortierung
"parameter_4": $("#semesterDropdown option:selected").val() //Semester
},
error: loadError
}).success(function(data)
{
showLVTree(data);
});
}
}
function showLVTree(data)
{
if(data.result[0].lehrveranstaltung_id!==null)
{
var TreeData = []
for(i in data.result)
{
item = data.result[i];
var obj = {
"data":item.bezeichnung,
"metadata": {"lehrveranstaltung_id":item.lehrveranstaltung_id,"bezeichnung":item.bezeichnung,"ects":item.ects,"semesterstunden":item.semesterstunden,"lvnr":item.lvnr,"lehrform_kurzbz":item.lehrform_kurzbz},
"attr":{"id":item.lehrveranstaltung_id,"rel":item.lehrtyp_kurzbz,"lvID":item.lehrveranstaltung_id,"studienplan_lehrveranstaltung_id":item.studienplanlehrveranstaltung_id},
};
TreeData.push(obj);
}
if($("#lvListe").length === 0)
{
$("#filteredLVs").html("<h3></h3><div id='lvListe'></div>");
}
else
{
$("#filteredLVs").html("<h3>Daten werden geladen...</h3><div id='lvListe'></div>");
}
$("#lvListe").jstree({
ui: {
"select_limit": 1,
"select_multiple_modifier": "ctrl"
},
json_data: {
data: TreeData,
progressive_render : true
},
crrm: {
move: {
"check_move" : function(m)
{
return false;
},
"always_copy": "multitree"
}
},
types: {
"types" : {
"lv" : {
icon : {
image : "../../skin/images/lv.png"
}
},
"modul" : {
icon : {
image : "../../skin/images/modul.png"
}
},
"lf" : {
}
}
},
grid: {
columns: [
{width: 250, header: "Lehrveranstaltung", value: "bezeichnung", source: "metadata"},
{width: 50, header: "ECTS", value: "ects", source: "metadata"},
{width: 80, header: "Lehrform", value: "lehrform_kurzbz", source: "metadata"},
{width: 100, header: "LVNR", value: "lvnr", source: "metadata"}
//{width: 80, header: "Semester", value: "semester", source: "metadata"},
//{width: 120, header: "Semesterstunden", value: "semesterstunden", source: "metadata"},
],
resizable: true
},
plugins: ["themes", "ui", "dnd", "grid", "json_data", "crrm", "types", "sort"]
}).bind("loaded.jstree", function(event, data)
{
$("#loadingGif").remove();
$("h3:contains('Daten werden geladen...')").remove();
$("#filteredLVs").height("auto");
$("#menueRechts").height("auto");
//hideAllTreeColumns();
}).bind("select_node.jstree", function(event, data)
{
// Bei einem Klick auf eine LV werden die Details geladen
lvid = data.rslt.obj.attr("lvID");
LoadLVDetails(lvid, null);
// Regeln laden
$("#tab-regel").html("<p>Regeln werden nur angezeigt wenn die LV im Studienplan hängt</p>");
// Kompatibilitaet laden
if(lvid!==undefined)
loadLVKompatibilitaet(lvid);
}).bind("move_node.jstree", function(event, data)
{
var studienplan_lehrveranstaltung_id='';
if(data.rslt.o[0].attributes.studienplan_lehrveranstaltung_id){
studienplan_lehrveranstaltung_id=data.rslt.o[0].attributes.studienplan_lehrveranstaltung_id.value;
$("#treeData").jstree.refresh();
}
// Aenderung speichern
saveJsondataFromTree(data.rslt.o[0].id, global_studienplan_id, studienplan_lehrveranstaltung_id);
// ECTS Summen neu berechnen
hideAllTreeColumns();
writeOverallSum(nodes);
});
}
else
{
$("#filteredLVs .jstree-grid-wrapper").remove();
if($("#lvListe").length !== 0)
{
$("#lvListe").remove();
}
$("h3:contains('')").remove();
$("#filteredLVs").append("<div id='lvListe'>Keine Einträge gefunden!</div>");
}
/*$("#filteredLVs").css(
max-width, $("#divLVuebersicht").width()
);*/
}
/*
* Funktion zum Laden der Daten für
* das Dropdownfeld zum Filtern nach Lehrtyp
*/
function loadLehrtypen()
{
$.ajax(
{
dataType: "json",
url: "../../soap/fhcomplete.php",
data: {
"typ": "json",
"class": "lehrtyp",
"method": "getAll"
},
error: loadError
}).success(function(data)
{
if($("#lehrtypenDiv").length === 0)
{
$("#lehrveranstaltung").append("Lehrtyp: <div id='lehrtypenDiv' style='display:inline'></div><br><br>");
}
var html = "<select id='lehrtypDropdown' onchange='loadFilteredLehrveranstaltungen();'><option value='null'>-- Alle --</option>";
for(i in data.result)
{
html+='<option value="'+data.result[i].lehrtyp_kurzbz+'">'+data.result[i].bezeichnung+'</option>';
}
html+="</select>";
$("#lehrtypenDiv").html(html);
loadSemester();
});
}
/*
* Funktion zum Laden der Daten für
* das Dropdownfeld zum Filtern nach Semester
*/
function loadSemester()
{
$.ajax(
{
dataType: "json",
url: "../../soap/studienplan.json.php",
data: {
"method": "getSemesterFromStudiengang",
"studiengang_kz": global_studiengang_kz
},
error: loadError
}).success(function(data)
{
if($("#semesterListe").length === 0)
{
$("#lehrveranstaltung").append("Semester: <div id='semesterListe' style='display:inline'></div><br>");
}
var html = "<select id='semesterDropdown' onchange='loadFilteredLehrveranstaltungen();'>";
html += "<option value='null'>-- Alle --</option>";
var semesterselected=false;
var selected='';
for(i in data.result)
{
// Der erste Eintrag im Drop Down wird markiert da sonst alle Semester geladen werden
// was in manchen Studiengaengen sehr lange dauern kann
if(!semesterselected)
{
selected='selected';
semesterselected=true;
}
else
selected='';
html+="<option value='"+data.result[i]+"' "+selected+">"+data.result[i]+". Semester</option>";
}
html+="</select>";
$("#semesterListe").html(html);
if($("#neueLV").length === 0)
$("#lehrveranstaltung").append("<div id='neueLV'></div>");
$("#neueLV").html("<br/><a href='./lehrveranstaltung_details.php?neu=true&stg_kz="+global_studiengang_kz+"' target='_blank'><input type='button' value='Neue LV anlegen'></a>");
isLVFilterLoaded=true;
loadFilteredLehrveranstaltungen();
});
}
/**
* Funktion zum Verstecken der Spalten im Baum der
* gefilterten LV-Liste
*/
function hideAllTreeColumns()
{
var headers = $("#filteredLVs .jstree-grid-header-cell");
var separators = $("#filteredLVs .jstree-grid-separator");
//separators[0].style.display = "none";
for(var j=4; j<headers.length; j++)
{
headers[j].style.display = "none";
separators[j].style.display = "none";
var divs = $("#filteredLVs .jstree-grid-col-" + j);
for (var i = 0; i < divs.length; i++)
{
divs[i].style.display = "none";
}
}
}
/**
* Speichert einen Datensatz der in den LV Tree gezogen wurde
* @param nodeId ID des Eintrages der gedroppt wurde
* @param studienplan_id ID des Studienplanes
* @param studienplan_lehrveranstaltung_id wird nur bei verschiebungen uebergeben
*/
function saveJsondataFromTree(nodeId, studienplan_id, studienplan_lehrveranstaltung_id)
{
var jsonData=Array();
// Wenn eine verschiebung innerhalb des Studienplans stattfindet wird der Eintrag aus dem Tree geholt
if(studienplan_lehrveranstaltung_id!='')
{
jsonData = $("#treeData").jstree("get_json", $("#treeData").find("li[id="+nodeId+"]"));
}
var copy = false;
// Wenn die Lehrveranstaltung aus dem Lehrveranstaltungstree kommt ist diese mit copy_ geprefixt
if(jsonData.length !== 1)
{
jsonData = $("#treeData").jstree("get_json", $("#copy_"+nodeId));
copy = true;
}
loaddata = {
"method" : "loadStudienplanLehrveranstaltung",
"parameter_0" : studienplan_lehrveranstaltung_id
};
var node;
if(copy)
{
node = $("#copy_"+jsonData[0]["metadata"]["lehrveranstaltung_id"]);
}
else
{
node = $("#"+studienplan_lehrveranstaltung_id);
}
var lehrveranstaltung_id = jsonData[0]["metadata"]["lehrveranstaltung_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;
}
var parent_id ='';
if(node.parent().parent().attr("studienplan_lehrveranstaltung_id"))
parent_id = node.parent().parent().attr("studienplan_lehrveranstaltung_id");
var neu = true;
if(studienplan_lehrveranstaltung_id !== undefined && studienplan_lehrveranstaltung_id!='')
neu = false;
// Bei neuen Eintraegen kein Load noetig
if(neu)
loaddata='';
savedata = {
"studienplan_id": studienplan_id,
"lehrveranstaltung_id" : lehrveranstaltung_id,
"semester": semester,
"studienplan_lehrveranstaltung_id_parent": parent_id,
"pflicht": true
};
$.ajax(
{
dataType: "json",
url: "./saveStudienordnung.php",
//url: "../../soap/fhcomplete.php",
type: "POST",
data: {
"typ": "json",
"class": "studienplan",
"method": "saveStudienplanLehrveranstaltung",
"loaddata": JSON.stringify(loaddata),
"savedata": JSON.stringify(savedata)
},
error: TreeSaveError
}).success(function(d)
{
if(d.error!==undefined && d.error=='false')
{
node.attr("studienplan_lehrveranstaltung_id", d.result[0].studienplan_lehrveranstaltung_id);
node.attr("id", d.result[0].studienplan_lehrveranstaltung_id);
$("#jsonData").html(d);
}
else
{
alert('Fehler:'+d.errormsg);
$("#treeData").jstree("remove", node);
}
});
}
/**
* Wird aufgerufen wenn ein Fehler beim Speichern der TreeZuteilung passiert
* Dabei wird der ganze Tree neu geladen
*/
function TreeSaveError(xhr, textStatus, errorThrown)
{
if(xhr.status==200)
{
alert('Fehler:'+xhr.responseText);
}
else
alert('Fehler beim Laden der Daten. ErrorNr:'+xhr.status);
// Studienplan Tree neu Laden um inkonsistente Anzeigen zu verhindern
loadLehrveranstaltungSTPL(loadLehrveranstaltungSTPLStudienplan_id, loadLehrveranstaltungSTPLBezeichnung, loadLehrveranstaltungSTPLSemester);
}
/**
* Entfernt eine LV Zuordnung
*/
function deleteLehrveranstaltungFromStudienplan(lehrveranstaltung_studienplan_id, tree, obj)
{
$.ajax({
dataType: "json",
url: "./saveStudienordnung.php",
type: "POST",
data: {
"typ": "json",
"class": "lvregel",
"method": "exists",
"parameter_0": lehrveranstaltung_studienplan_id
},
error: loadError
}).success(function(data){
if(data.return === false)
{
$.ajax({
dataType: "json",
url: "./saveStudienordnung.php",
type: "POST",
data: {
"typ": "json",
"class": "studienplan",
"method": "deleteStudienplanLehrveranstaltung",
"parameter_0" : lehrveranstaltung_studienplan_id
},
error: loadError
}).success(function(data)
{
if(data.error==true)
{
alert('Fehler beim Entfernen:'+data.errormsg);
}
else
{
tree.remove(obj);
}
});
}
else
{
alert("Es müssen zuerst die LV-Regeln gelöscht werden.");
}
});
}
/**
* Speichert die Studienordnung
*/
function saveStudienordnung()
{
var bezeichnung = $("#bezeichnung").val();
var version = $("#version").val();
var gueltigvon = $("#gueltigvon option:selected").val();
var gueltigbis = $("#gueltigbis option:selected").val();
var ects = $("#ects").val();
var studiengangbezeichnung = $("#studiengangbezeichnung").val();
var studiengangbezeichnungenglisch = $("#studiengangbezeichnungenglisch").val();
var studiengangkurzbzlang = $("#studiengangkurzbzlang").val();
var mystudienordnung_id = $("#studienordnung_id").val();
var akadgrad_id = $("#akadgrad_id").val();
var status_kurzbz = $("#studienordnung_status").val();
var standort_id = $("#standort_id").val();
if(mystudienordnung_id!='')
{
loaddata = {
"method": "loadStudienordnung",
"parameter_0": mystudienordnung_id
};
}
else
loaddata={};
savedata = {
"bezeichnung": bezeichnung,
"version":version,
"gueltigvon":gueltigvon,
"gueltigbis":gueltigbis,
"ects":ects,
"studiengangbezeichnung":studiengangbezeichnung,
"studiengangbezeichnung_englisch":studiengangbezeichnungenglisch,
"studiengangkurzbzlang":studiengangkurzbzlang,
"akadgrad_id":akadgrad_id,
"studiengang_kz":global_studiengang_kz,
"status_kurzbz":status_kurzbz,
"standort_id":standort_id
};
$.ajax(
{
dataType: "json",
url: "./saveStudienordnung.php",
type: "POST",
data: {
"typ": "json",
"class": "studienordnung",
"method": "save",
"loaddata": JSON.stringify(loaddata),
"savedata": JSON.stringify(savedata),
},
success: function(data){
if(data.error=='true')
alert('Fehler:'+data.errormsg);
else
{
$("#submsg").css("visibility", "visible");
window.setTimeout(function(){$("#submsg").css("visibility", "hidden");}, 1500);
loadStudienordnung();
}
},
error: loadError
});
}
/**
* Speichert den Studienplan
*/
function saveStudienplan()
{
bezeichnung = $("#bezeichnung").val();
version = $("#version").val();
orgform_kurzbz = $("#orgform_kurzbz option:selected").val();
sprache = $("#sprache option:selected").val();
regelstudiendauer = $("#regelstudiendauer").val();
semesterwochen = $("#semesterwochen").val();
testtool_sprachwahl = $("#testtool_sprachwahl").prop("checked");
aktiv = $("#aktiv").prop("checked");
onlinebewerbung_studienplan = $("#onlinebewerbung_studienplan").prop("checked");
var studienplan_id = $("#studienplan_id").val();
var pflicht_sws = $("#pflicht_sws").val();
var pflicht_lvs = $("#pflicht_lvs").val();
var ects_stpl = $("#ects_stpl").val();
if(studienplan_id!='')
{
loaddata = {
"method": "loadStudienplan",
"parameter_0": studienplan_id
};
}
else
loaddata={};
savedata = {
"bezeichnung": bezeichnung,
"version":version,
"orgform_kurzbz":orgform_kurzbz,
"sprache":sprache,
"regelstudiendauer":regelstudiendauer,
"semesterwochen":semesterwochen,
"testtool_sprachwahl":testtool_sprachwahl,
"aktiv":aktiv,
"onlinebewerbung_studienplan":onlinebewerbung_studienplan,
"studienordnung_id":global_studienordnung_id,
"ects_stpl":ects_stpl,
"pflicht_sws":pflicht_sws,
"pflicht_lvs":pflicht_lvs
};
$.ajax(
{
dataType: "json",
url: "./saveStudienordnung.php",
type: "POST",
data: {
"typ": "json",
"class": "studienplan",
"method": "save",
"loaddata": JSON.stringify(loaddata),
"savedata": JSON.stringify(savedata)
},
success: function(data){
if(data.error=='true')
alert('Fehler:'+data.errormsg);
else
{
$("#submsg").css("visibility", "visible");
window.setTimeout(function(){$("#submsg").css("visibility", "hidden");}, 1500);
loadStudienplanSTO(global_studienordnung_id, studienplan_id, global_studienordnung_bezeichnung);
}
},
error: loadError
});
}
/**
* Berechnet dei ECTS Summe fuer ein Semester / Modul
*/
function writeEctsSum(parent)
{
for(var i=0; i<$(parent).children("ul").children().length; i++)
{
if($(parent).children("ul").children().length > 0)
{
writeEctsSum($(parent).children("ul").children()[i]);
}
}
if($(parent).attr("rel") === "semester")
{
var cells = $(parent).children("ul").children();
var sum = 0;
for(var j=0; j<cells.length; j++)
{
if(!isNaN(parseFloat(cells[j].childNodes[2].childNodes[0].innerHTML)))
{
sum+=parseFloat(cells[j].childNodes[2].childNodes[0].innerHTML);
}
}
$(parent).children()[2].innerHTML = "<b>"+sum+"</b>";
}
}
/**
* Berechnet die ECTS Gesamt summe
*/
function writeOverallSum(root)
{
if(!$('#stplDetails').length)
$("#treeData").append('<div id="stplDetails" style="padding-top: 1.0em"></div>');
var cells = $(root).children("ul").children();
var sum = 0;
for(var i=0; i<cells.length; i++)
{
if(!isNaN(parseFloat(cells[i].childNodes[2].childNodes[0].innerHTML)))
{
sum+=parseFloat(cells[i].childNodes[2].childNodes[0].innerHTML);
}
}
$("#stplDetails").html("ECTS-Summe: <b>"+sum+"</b>");
$("#stplDetails").show();
}
/**
* Laedt die Daten zum Eintragen der Studienplan/Semester zuordnung
*/
function semesterSTPLZuordnung()
{
drawHeader('Neue Studienplan Zuordnung');
$("#data").load('studienordnung.inc.php?method=semesterSTPLZuordnung&studienplan_id='+global_studienplan_id);
}
/**
* Speichert die Studienplan/Semester zuordnung
*/
function saveSemesterSTPLZuordnung(studiensemester, ausbildungssemester)
{
//new
if(studiensemester == undefined && ausbildungssemester == undefined)
{
var sem = $("#studiensemester").val();
var cells = $("#studiensemester").parents().closest("tr").find("input[type=checkbox]");
var semester = new Array();
var semesterKurzbz = "";
for(var i = 0; i < cells.length; i++)
{
//semester[cells[i].getAttribute("semester")] = cells[i].checked;
semester.push(cells[i].checked);
}
var studiensemester = $("#studiensemester").val();
for(var j=0; j<semester.length; j++)
{
if(semester[j] === true)
{
$.ajax({
dataType: "json",
url: "../../soap/studienplan.json.php",
type: "POST",
data: {
"method": "saveSemesterSTPLZuordnung",
"studienplan_id": global_studienplan_id,
"studiensemester_kurzbz" : studiensemester,
"ausbildungssemester": j+1
}
}).success(function(data)
{
if(data.error === "true")
{
alert(data.errormsg);
}
semesterSTPLZuordnung();
});
}
}
}
//update
else
{
$.ajax({
dataType: "json",
url: "../../soap/studienplan.json.php",
type: "POST",
data: {
"method": "saveSemesterSTPLZuordnung",
"studienplan_id": global_studienplan_id,
"studiensemester_kurzbz" : studiensemester,
"ausbildungssemester": ausbildungssemester
}
}).success(function(data)
{
if(data.error === "true")
{
alert(data.errormsg);
}
semesterSTPLZuordnung();
});
}
}
function deleteSemesterSTPLZuordnung(ausbildungssemester_kurzbz, studiensemester)
{
//new
if(studiensemester == undefined)
{
var row = $("#row_"+ausbildungssemester_kurzbz);
$.ajax({
dataType: "json",
url: "../../soap/studienplan.json.php",
type: "POST",
data: {
"method": "deleteSemesterSTPLZuordnung",
"studienplan_id": global_studienplan_id,
"ausbildungssemester_kurzbz" : ausbildungssemester_kurzbz
}
}).success(function(data)
{
if(data.error === "true")
{
alert(data.errormsg);
}
semesterSTPLZuordnung();
});
}
//update
else
{
$.ajax({
dataType: "json",
url: "../../soap/studienplan.json.php",
type: "POST",
data: {
"method": "deleteSemesterSTPLZuordnung",
"studienplan_id": global_studienplan_id,
"ausbildungssemester_kurzbz" : ausbildungssemester_kurzbz,
"studiensemester" : studiensemester
}
}).success(function(data)
{
if(data.error === "true")
{
alert(data.errormsg);
}
semesterSTPLZuordnung();
});
}
}
/**
* Kopiert eine Studienordnung
* @param studienordnung_id
*/
function copyStudienordnung(studienordnung_id)
{
if(confirm("Wollen Sie diese Studienordnung wirklich kopieren?"))
{
$.ajax({
dataType: "json",
url: "../../soap/studienordnung.json.php",
type: "POST",
data: {
"method": "copyStudienordnung",
"studienordnung_id": studienordnung_id
},
error: loadError
}).success(function(data)
{
if(data.error === "true")
{
alert(data.errormsg);
}
loadStudienordnung();
});
}
}