Studienordnung: LVs mit Studienplan verknüpfen; speichern der verknüpften LVs in DB und löschen aus DB

This commit is contained in:
Stefan Puraner
2013-11-26 12:12:22 +00:00
parent db7ce5a681
commit 506878c59f
13 changed files with 543 additions and 261 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 920 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 976 B

+4 -2
View File
@@ -1,6 +1,5 @@
<?php
/* Copyright (C) 2006 Technikum-Wien
/* 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
@@ -54,6 +53,9 @@ class lehrtyp extends basis_db {
return true;
}
/**
* Baut die Datenstruktur für senden als JSON Objekt auf
*/
public function cleanResult()
{
$data = array();
+200 -28
View File
@@ -1,6 +1,6 @@
<?php
/* Copyright (C) 2006 Technikum-Wien
/* Copyright (C) 2006 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
@@ -19,12 +19,13 @@
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
* Stefan Puraner <puraner@technikum-wien.at>
*/
require_once(dirname(__FILE__) . '/basis_db.class.php');
require_once(dirname(__FILE__) . '/functions.inc.php');
class lehrveranstaltung extends basis_db {
class lehrveranstaltung extends basis_db
{
public $new; // boolean
public $lehrveranstaltungen = array(); // lehrveranstaltung Objekt
public $lehrveranstaltung_id; // serial
@@ -57,6 +58,7 @@ class lehrveranstaltung extends basis_db {
public $bezeichnung_english; // varchar(256)
public $orgform_kurzbz;
public $bezeichnung_arr = array();
public $lehrtyp_kurzbz; //varchar(32)
public $studienplan_lehrveranstaltung_id;
public $studienplan_lehrveranstaltung_id_parent;
@@ -68,7 +70,8 @@ class lehrveranstaltung extends basis_db {
* Konstruktor
* @param $lehrveranstaltung_id ID der zu ladenden Lehrveranstaltung
*/
public function __construct($lehrveranstaltung_id = null) {
public function __construct($lehrveranstaltung_id = null)
{
parent::__construct();
if (!is_null($lehrveranstaltung_id))
@@ -80,8 +83,10 @@ class lehrveranstaltung extends basis_db {
* @param $lehrveranstaltung_id ID des zu ladenden Datensatzes
* @return true wenn ok, false im Fehlerfall
*/
public function load($lehrveranstaltung_id) {
if (!is_numeric($lehrveranstaltung_id)) {
public function load($lehrveranstaltung_id)
{
if (!is_numeric($lehrveranstaltung_id))
{
$this->errormsg = 'Lehrveranstaltung_id muss eine gueltige Zahl sein';
return false;
}
@@ -253,7 +258,7 @@ class lehrveranstaltung extends basis_db {
$qry .= " ORDER BY semester, bezeichnung";
else
$qry .= " ORDER BY $sort ";
//Datensaetze laden
if (!$this->db_query($qry)) {
$this->errormsg = 'Datensatz konnte nicht geladen werden';
@@ -292,6 +297,7 @@ class lehrveranstaltung extends basis_db {
$lv_obj->koordinator = $row->koordinator;
$lv_obj->bezeichnung_english = $row->bezeichnung_english;
$lv_obj->orgform_kurzbz = $row->orgform_kurzbz;
$lv_obj->lehrtyp_kurzbz = $row->lehrtyp_kurzbz;
$lv_obj->bezeichnung_arr['German'] = $row->bezeichnung;
$lv_obj->bezeichnung_arr['English'] = $row->bezeichnung_english;
@@ -300,7 +306,6 @@ class lehrveranstaltung extends basis_db {
$this->lehrveranstaltungen[] = $lv_obj;
}
return true;
}
@@ -899,23 +904,23 @@ class lehrveranstaltung extends basis_db {
return false;
}
$qry = "SELECT
tbl_lehrveranstaltung.*,
tbl_studienplan_lehrveranstaltung.studienplan_lehrveranstaltung_id,
tbl_studienplan_lehrveranstaltung.semester as stpllv_semester,
tbl_studienplan_lehrveranstaltung.pflicht as stpllv_pflicht,
tbl_studienplan_lehrveranstaltung.koordinator as stpllv_koordinator,
tbl_studienplan_lehrveranstaltung.studienplan_lehrveranstaltung_id_parent
FROM
lehre.tbl_lehrveranstaltung
JOIN lehre.tbl_studienplan_lehrveranstaltung USING(lehrveranstaltung_id)
WHERE
tbl_studienplan_lehrveranstaltung.studienplan_id=" . $this->db_add_param($studienplan_id, FHC_INTEGER);
$qry = "SELECT tbl_lehrveranstaltung.*,
tbl_studienplan_lehrveranstaltung.studienplan_lehrveranstaltung_id,
tbl_studienplan_lehrveranstaltung.semester as stpllv_semester,
tbl_studienplan_lehrveranstaltung.pflicht as stpllv_pflicht,
tbl_studienplan_lehrveranstaltung.koordinator as stpllv_koordinator,
tbl_studienplan_lehrveranstaltung.studienplan_lehrveranstaltung_id_parent
FROM lehre.tbl_lehrveranstaltung
JOIN lehre.tbl_studienplan_lehrveranstaltung
USING(lehrveranstaltung_id)
WHERE tbl_studienplan_lehrveranstaltung.studienplan_id=" . $this->db_add_param($studienplan_id, FHC_INTEGER);
if (!is_null($semester)) {
$qry.=" AND tbl_studienplan_lehrveranstaltung.semester=" . $this->db_add_param($semester, FHC_INTEGER);
}
$qry.=" ORDER BY semester, sort";
// echo $qry;
// var_dump($qry);
$this->lehrveranstaltungen = array();
if ($result = $this->db_query($qry)) {
while ($row = $this->db_fetch_object($result)) {
@@ -950,6 +955,7 @@ class lehrveranstaltung extends basis_db {
$obj->koordinator = $row->koordinator;
$obj->bezeichnung_english = $row->bezeichnung_english;
$obj->orgform_kurzbz = $row->orgform_kurzbz;
$obj->lehrtyp_kurzbz = $row->lehrtyp_kurzbz;
$obj->bezeichnung_arr['German'] = $row->bezeichnung;
$obj->bezeichnung_arr['English'] = $row->bezeichnung_english;
@@ -965,6 +971,7 @@ class lehrveranstaltung extends basis_db {
$this->lehrveranstaltungen[] = $obj;
}
// var_dump($this->lehrveranstaltungen);
return true;
}
else {
@@ -992,7 +999,7 @@ class lehrveranstaltung extends basis_db {
*/
protected function getLehrveranstaltungTreeChilds($studienplan_lehrveranstaltung_id) {
$childs = array();
foreach ($this->lehrveranstaltungen as $row) {
foreach ($this->lehrveranstaltungen as $row) {
if ($row->studienplan_lehrveranstaltung_id_parent === $studienplan_lehrveranstaltung_id) {
$childs[$row->studienplan_lehrveranstaltung_id] = $row;
$childs[$row->studienplan_lehrveranstaltung_id]->childs = $this->getLehrveranstaltungTreeChilds($row->studienplan_lehrveranstaltung_id);
@@ -1064,6 +1071,9 @@ class lehrveranstaltung extends basis_db {
return $this->studienplan_lehrveranstaltung_id;
}
/**
* Baut die Datenstruktur für senden als JSON Objekt auf
*/
public function cleanResult()
{
$values = array();
@@ -1086,7 +1096,7 @@ class lehrveranstaltung extends basis_db {
$data->metadata = $obj;
$data->attr = array();
$data->attr["id"]=$lv->lehrveranstaltung_id;
$data->attr["rel"] = "lv";
$data->attr["rel"] = $lv->lehrtyp_kurzbz;
$values[] = $data;
}
}
@@ -1106,11 +1116,73 @@ class lehrveranstaltung extends basis_db {
return $values;
}
public function getLvTree($studienplan_id)
/**
* Baut die Baumstruktur für jsTree in Studienordnung auf
* @param $tree Array von Lehrveranstaltungen
* @return Array mit der Baumstruktur
*/
protected function cleanTreeResult($tree)
{
$values = array();
if (count($tree) > 0)
{
foreach ($tree as $lv)
{
$data = new stdClass();
$data->data = $lv->bezeichnung;
$obj = new stdClass();
$obj->lehrveranstaltung_id = $lv->lehrveranstaltung_id;
$obj->studiengang_kz = $lv->studiengang_kz;
$obj->bezeichnung = $lv->bezeichnung;
$obj->kurzbz = $lv->kurzbz;
$obj->lehrform_kurzbz = $lv->lehrform_kurzbz;
$obj->semester = $lv->semester;
$obj->ects = $lv->ects;
$obj->semesterstunden = $lv->semesterstunden;
$data->metadata = $obj;
$data->attr = array();
$data->attr["id"]=$lv->lehrveranstaltung_id;
$data->attr["rel"] = $lv->lehrtyp_kurzbz;
$data->attr["studienplan_lehrveranstaltung_id"] = $lv->studienplan_lehrveranstaltung_id;
$data->children = array();
if(count($lv->childs) > 0)
{
$data->children = $this->cleanTreeResult($lv->childs);
}
$values[] = $data;
}
}
else
{
$obj = new stdClass();
$obj->lehrveranstaltung_id = $this->lehrveranstaltung_id;
$obj->studiengang_kz = $this->studiengang_kz;
$obj->bezeichnung = $this->bezeichnung;
$obj->kurzbz = $this->kurzbz;
$obj->lehrform_kurzbz = $this->lehrform_kurzbz;
$obj->semester = $this->semester;
$obj->ects = $this->ects;
$obj->semesterstunden = $this->semesterstunden;
$values[] = $obj;
}
return $values;
}
/**
* Baut die Datenstruktur für jsTree in Studienordnung auf
* @param $studienplan_id ID des Studienpland
* @param $semester Maximale Anzahl an Semester
*/
public function getLvTree($studienplan_id, $semester)
{
$values = array();
//TODO Anzahl der Semester laden; Quelle ?
for($i = 1; $i<=6; $i++)
$this->loadLehrveranstaltungStudienplan($studienplan_id, 0);
$tree = $this->getLehrveranstaltungTree();
$data = $this->cleanTreeResult($tree);
array_push($values, $data);
for($i = 1; $i<=$semester; $i++)
{
$data = new stdClass();
$data->data = "Semester ".$i;
@@ -1119,13 +1191,17 @@ class lehrveranstaltung extends basis_db {
$data->attr["rel"] = "semester";
$data->children = array();
$this->loadLehrveranstaltungStudienplan($studienplan_id, $i);
$data->children = $this->cleanResult();
//$values[] = $data;
$tree = $this->getLehrveranstaltungTree();
$data->children = $this->cleanTreeResult($tree);
array_push($values, $data);
}
return $values;
}
/**
* Lädt alle kompatiblen LVs zu einer Lehrveranstaltung
* @param $lehrveranstaltung_id ID der Lehrveranstaltung
*/
public function loadLVkompatibel($lehrveranstaltung_id)
{
if (!is_numeric($lehrveranstaltung_id)) {
@@ -1147,6 +1223,12 @@ class lehrveranstaltung extends basis_db {
}
}
/**
* Speichert eine Kombination aus LV und ihrer kompatiblen Lehrveranstaltung
* @param $lehrveranstaltung_id ID der Lehrveranstaltung
* @param $lehrveranstaltung_id ID der kompatiblen Lehrveranstaltung
*/
public function saveKompatibleLehrveranstaltung($lehrveranstaltung_id, $lehrveranstaltung_id_kompatibel)
{
$qry = 'SELECT * FROM lehre.tbl_lehrveranstaltung_kompatibel WHERE
@@ -1185,7 +1267,12 @@ class lehrveranstaltung extends basis_db {
}
}
public function deleteKompatibleLehrveranstaltung($lehrveranstaltung_id, $lehrveranstaltung_id_kompatibel)
/**
* Löscht eine kompatible Lehrveranstaltung
* @param $lehrveranstaltung_id ID der Lehrveranstaltung
* @param $lehrveranstaltung_id ID der kompatiblen Lehrveranstaltung
*/
public function deleteKompatibleLehrveranstaltung($lehrveranstaltung_id, $lehrveranstaltung_id)
{
$qry = 'DELETE FROM lehre.tbl_lehrveranstaltung_kompatibel WHERE
lehrveranstaltung_id='.$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER).' AND
@@ -1201,7 +1288,92 @@ class lehrveranstaltung extends basis_db {
return false;
}
}
/**
* Lädt Lehrveranstaltungen nach ihrer Organisationseinheit
* @param $oe_kurzbz Kurzbezeichnung der Organisationseinheit
* @param $aktiv optional, true wenn nur aktive LVs
* @param $lehrtyp optional, gewünschter Lehrtyp
*/
public function load_lva_oe($oe_kurzbz, $aktiv=null, $lehrtyp=null)
{
if (is_null($oe_kurzbz)) {
$this->errormsg = 'OE KurzBz darf nicht null sein';
return false;
}
if (!is_null($aktiv) && !is_bool($aktiv)) {
$this->errormsg = 'Aktivkz muss ein boolscher Wert sein';
return false;
}
$qry = "SELECT * FROM lehre.tbl_lehrveranstaltung where oe_kurzbz=" . $this->db_add_param($oe_kurzbz, FHC_STRING);
//Select Befehl zusammenbauen
if (!is_null($aktiv) && $aktiv)
$qry .= " AND aktiv ";
if(!is_null($lehrtyp))
$qry .= " AND lehrtyp_kurzbz='".$lehrtyp."'";
// if ($sort == "bezeichnung")
// $qry .= " ORDER BY bezeichnung";
// elseif (is_null($sort) || empty($sort))
// $qry .= " ORDER BY semester, bezeichnung";
// else
// $qry .= " ORDER BY $sort ";
$qry .= ";";
//Datensaetze laden
if (!$this->db_query($qry)) {
$this->errormsg = 'Datensatz konnte nicht geladen werden';
return false;
}
while ($row = $this->db_fetch_object()) {
$lv_obj = new lehrveranstaltung();
$lv_obj->lehrveranstaltung_id = $row->lehrveranstaltung_id;
$lv_obj->studiengang_kz = $row->studiengang_kz;
$lv_obj->bezeichnung = $row->bezeichnung;
$lv_obj->kurzbz = $row->kurzbz;
$lv_obj->lehrform_kurzbz = $row->lehrform_kurzbz;
$lv_obj->semester = $row->semester;
$lv_obj->ects = $row->ects;
$lv_obj->semesterstunden = $row->semesterstunden;
$lv_obj->anmerkung = $row->anmerkung;
$lv_obj->lehre = $this->db_parse_bool($row->lehre);
$lv_obj->lehreverzeichnis = $row->lehreverzeichnis;
$lv_obj->aktiv = $this->db_parse_bool($row->aktiv);
$lv_obj->ext_id = $row->ext_id;
$lv_obj->insertamum = $row->insertamum;
$lv_obj->insertvon = $row->insertvon;
$lv_obj->planfaktor = $row->planfaktor;
$lv_obj->planlektoren = $row->planlektoren;
$lv_obj->planpersonalkosten = $row->planpersonalkosten;
$lv_obj->plankostenprolektor = $row->plankostenprolektor;
$lv_obj->updateamum = $row->updateamum;
$lv_obj->updatevon = $row->updatevon;
$lv_obj->sprache = $row->sprache;
$lv_obj->sort = $row->sort;
$lv_obj->incoming = $row->incoming;
$lv_obj->zeugnis = $this->db_parse_bool($row->zeugnis);
$lv_obj->projektarbeit = $this->db_parse_bool($row->projektarbeit);
$lv_obj->koordinator = $row->koordinator;
$lv_obj->bezeichnung_english = $row->bezeichnung_english;
$lv_obj->orgform_kurzbz = $row->orgform_kurzbz;
$lv_obj->bezeichnung_arr['German'] = $row->bezeichnung;
$lv_obj->bezeichnung_arr['English'] = $row->bezeichnung_english;
if ($lv_obj->bezeichnung_arr['English'] == '')
$lv_obj->bezeichnung_arr['English'] = $lv_obj->bezeichnung_arr['German'];
$this->lehrveranstaltungen[] = $lv_obj;
}
return true;
}
/**
* Sucht nach Lehrveranstaltungen
* @param $filter Suchfilter
+9 -2
View File
@@ -1,5 +1,5 @@
<?php
/* Copyright (C) 2009 Technikum-Wien
/* Copyright (C) 2009 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
@@ -19,6 +19,7 @@
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>,
* Rudolf Hangl <rudolf.hangl@technikum-wien.at> and
* Gerald Simane-Sequens <gerald.simane-sequens@technikum-wien.at>
* Stefan Puraner <puraner@technikum-wien.at>
*/
/**
* Klasse Organisationseinheit
@@ -57,7 +58,10 @@ class organisationseinheit extends basis_db
$this->load($oe_kurzbz);
}
/**
* Liefert alle Organisationseinheiten
* @return true wenn ok, false im Fehlerfall
*/
public function getAll()
{
$qry = "SELECT * FROM public.tbl_organisationseinheit ORDER BY organisationseinheittyp_kurzbz, oe_kurzbz";
@@ -462,6 +466,9 @@ class organisationseinheit extends basis_db
return false;
}
/**
* Baut die Datenstruktur für senden als JSON Objekt auf
*/
public function cleanResult(){
$data = array();
if(count($this->result)>0){
+1 -1
View File
@@ -1,5 +1,5 @@
<?php
/* Copyright (C) 2007 Technikum-Wien
/* Copyright (C) 2007 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
+3
View File
@@ -388,6 +388,9 @@ class studienordnung extends basis_db
}
}
/**
* Baut die Datenstruktur für senden als JSON Objekt auf
*/
public function cleanResult()
{
$data = array();
+34 -2
View File
@@ -2,8 +2,8 @@
/*
* studienplan.class.php
*
* Copyright 2013 fhcomplete.org
*
* Copyright 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
@@ -21,6 +21,7 @@
*
*
* Authors: Andreas Österreicher <andreas.oesterreicher@technikum-wien.at>
* Stefan Puraner <puraner@technikum-wien.at>
*/
require_once(dirname(__FILE__).'/basis_db.class.php');
@@ -356,6 +357,9 @@ class studienplan extends basis_db
}
}
/**
* Baut die Datenstruktur für senden als JSON Objekt auf
*/
public function cleanResult()
{
$data = array();
@@ -619,5 +623,33 @@ class studienplan extends basis_db
return false;
}
}
/**
* Löscht eine Lehrveranstaltung aus dem Studienplan
* @param $studienplan_lehrveranstaltung_id ID der LV in der Zwischentabelle
* @return boolean
*/
public function deleteStudienplanLehrveranstaltung($studienplan_lehrveranstaltung_id)
{
//Pruefen ob studienplan_lehrveranstaltung_id eine gueltige Zahl ist
if(!is_numeric($studienplan_lehrveranstaltung_id) || $studienplan_lehrveranstaltung_id === '')
{
$this->errormsg = 'studienplan_lehrveranstaltung_id muss eine gültige Zahl sein'."\n";
return false;
}
$qry = "DELETE from lehre.tbl_studienplan_lehrveranstaltung
WHERE studienplan_lehrveranstaltung_id=".$this->db_add_param($studienplan_lehrveranstaltung_id, FHC_INTEGER).";";
if($this->db_query($qry))
{
return true;
}
else
{
$this->errormsg = 'Fehler beim Löschen der Daten'."\n";
return false;
}
}
}
?>
+1 -1
View File
@@ -1,5 +1,5 @@
<?php
/* Copyright (C) 2009 Technikum-Wien
/* Copyright (C) 2009 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
+3 -1
View File
@@ -16,6 +16,7 @@
* 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>
*/
header( 'Expires: -1' );
header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' );
@@ -72,8 +73,9 @@ switch($method)
break;
case 'getLvTree':
$studienplan_id = $_REQUEST['studienplan_id'];
$semester = $_REQUEST['semester'];
$lehrveranstaltung = new lehrveranstaltung();
if(($result = $lehrveranstaltung->getLvTree($studienplan_id)))
if(($result = $lehrveranstaltung->getLvTree($studienplan_id, $semester)))
{
$data["result"]=$result;
$data['error']='false';
@@ -1,5 +1,5 @@
<?php
/* Copyright (C) 2006 Technikum-Wien
/* Copyright (C) 2006 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
+283 -218
View File
@@ -15,6 +15,7 @@
* 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>
*/
var studiengang_kz='';
var studiengang_bezeichnung='';
@@ -22,6 +23,7 @@ var studienordnung_id='';
var studienordnung_bezeichnung='';
var studienplan_id='';
var lehrveranstaltungen='';
var max_semester = 0;
function loadError(xhr, textStatus, errorThrown)
{
@@ -78,7 +80,6 @@ function loadStudienordnung()
}).success(function(data)
{
StudienordnungLoaded(data);
hideStplDetails();
});
}
@@ -101,14 +102,15 @@ function drawStudienordnungen(data)
for(i in data)
{
obj=obj+'<li><a href="#Load'+data[i].studienordnung_id+'" onclick="loadStudienplanSTO('+data[i].studienordnung_id+',\''+data[i].bezeichnung+'\');return false;">'+data[i].bezeichnung+'</a></li>';
obj=obj+'<li><a href="#Load'+data[i].studienordnung_id+'" onclick="loadStudienplanSTO('+data[i].studienordnung_id+',\''+data[i].bezeichnung+'\',\''+data[i].max_semester+'\');return false;">'+data[i].bezeichnung+'</a></li>';
}
obj=obj+'</ul>';
$('#studienordnung').html(obj);
}
function loadStudienplanSTO(neue_studienordnung_id,bezeichnung)
function loadStudienplanSTO(neue_studienordnung_id,bezeichnung, maxSemester)
{
max_semester = maxSemester;
$(".jstree-grid-header").hide();
$(".jstree-grid-wrapper").hide();
studienordnung_bezeichnung=bezeichnung;
@@ -128,7 +130,7 @@ function loadStudienplanSTO(neue_studienordnung_id,bezeichnung)
}).success(function(data)
{
StudienplanSTOLoaded(data)
semesterStoZuordnung();
//semesterStoZuordnung();
});
$.ajax({
dataType: "json",
@@ -146,7 +148,6 @@ function loadStudienplanSTO(neue_studienordnung_id,bezeichnung)
var html = "";
html += data.result[0]
}
// console.log(data);
});
}
@@ -189,16 +190,18 @@ function loadLehrveranstaltungSTPL(studienplan_id, bezeichnung)
"class": "lehrveranstaltung",
"method": "getLvTree",
// "parameter_0": 100, //for debugging
"studienplan_id": studienplan_id
"studienplan_id": studienplan_id,
"semester": max_semester
},
error: loadError
}).success(function(data)
{
$("#data").html("<div id='treeData'></div>")
if(data.result[0].lehrveranstaltung_id !== null)
{
$("#data").jstree({
$("#treeData").jstree({
ui: {
"select_limit": -1,
"select_limit": 1,
"select_multiple_modifier": "ctrl"
},
json_data: {
@@ -208,45 +211,12 @@ function loadLehrveranstaltungSTPL(studienplan_id, bezeichnung)
move: {
"always_copy": "multitree",
"check_move": function(m) {
//alert(m.o[0].id);
// alert($("#data").jstree._get_parent(m.o));
// if(jQuery.jstree._reference("#data")._get_children(m.np).find("li[id="+m.o[0].id+"]"))
// {
// //alert(jQuery.jstree._reference("#data")._get_children(m.np).find("li[id="+m.o[0].id+"]"));
// return true;
// }
// else
// if(m.np.children().find("li[id="+m.o[0].id+"]").length !== 0 && m.np.attr("id") !== "data")
// {
//
// return false;
// }
// return (m.ot === m.rt) || !m.rt.get_container().find("li[id="+m.o[0].id+"]").length;
//console.log(m.rt._get_children(m.np).find("li[id="+m.o[0].id+"]").length+" "+m.np[0].id);
// console.log(m.np.children().find("ul > li[id="+m.o[0].id+"]").length);
// if(m.np.children("ul").find("ul > li[id="+m.o[0].id+"]").length !== 0)
// console.log(m.np.attr("id"));
// console.log("Länge: "+m.np.children().find("li[id="+m.o[0].id+"]").length);
if(m.np.children().find("li[id="+m.o[0].id+"]").length !== 0 && m.np.attr("id") !== "data")
{
return false;
}
// console.log(m.r.siblings().length);
// var s = m.r.siblings().length;
// var err = false;
// for(var i=0; i<s; i++)
// {
// //console.log(m.r.siblings().get(i).id);
//// console.log(m.r.siblings().get(i).id);
//// console.log("copy_"+m.o[0].id);
// if(m.r.siblings().get(i).id === "copy_"+m.o[0].id)
// {
// //console.log(m.r.siblings().find("li[id="+m.o[0].id+"]").length);
// err = true;
// }
// }
//// console.log(err);
// if(err) return false;
//// console.log(m.r.siblings().get("#copy_"+m.o[0].id));
return true;
}
}
@@ -273,15 +243,21 @@ function loadLehrveranstaltungSTPL(studienplan_id, bezeichnung)
// "valid_children" : ["semester", "lv", "default"],
"lv" : {
icon : {
//image : "test.jpg"
image : "../../include/js/jstree/icons/lehrveranstaltung.png"
},
max_children: 0
},
"semester" : {
// "valid_children" : ["lv"]
"valid_children" : ["lv", "lf", "modul"]
},
"default" : {
// "valid_children" : [ "default", "lv"]
"modul" : {
icon : {
image : "../../include/js/jstree/icons/modul.png"
},
"valid_children" : ["lv"]
},
"lf" : {
//TODO valid_children
}
}
},
@@ -289,25 +265,37 @@ function loadLehrveranstaltungSTPL(studienplan_id, bezeichnung)
return this._get_node(a).attr("rel") > this._get_node(b).attr("rel");
},
contextmenu: {
"items" : function($node) {
return {
"Delete" : {
"label" : "delete",
"action": function(obj){
var conf = confirm("Wollen Sie das Objekt wirklich löschen?");
if(conf)
{
this.remove(obj);
"items" : function(node) {
if(node.attr("rel") !== "semester")
{
return {
"Delete" : {
"label" : "delete",
"action": function(obj){
if(obj.children().find("li").length === 0)
{
var conf = confirm("Wollen Sie das \""+this.get_text(obj)+"\" wirklich löschen?");
if(conf)
{
this.remove(obj);
deleteLehrveranstaltungFromStudienplan(obj.attr("studienplan_lehrveranstaltung_id"));
}
}
else
{
alert("Element darf keine Elemente beinhalten!");
}
}
}
}
};
}
}
},
plugins: ["themes", "ui", "dnd", "grid", "json_data", "crrm", "types", "sort", "contextmenu"]
}).bind("move_node.jstree", function(event, data)
{
saveJsondataFromTree("copy_"+data.rslt.o[0].id, studienplan_id);
saveJsondataFromTree(data.rslt.o[0].id, studienplan_id);
var root = data.inst.get_container_ul();
var nodes = root[0].childNodes;
for(var i=0; i<nodes.length; i++)
@@ -346,10 +334,10 @@ function loadLehrveranstaltungSTPL(studienplan_id, bezeichnung)
}
else
{
$('#data').addClass("jstree-drop");
$('#data').css("border", "1px solid black");
$('#treeData').addClass("jstree-drop");
$('#treeData').css("border", "1px solid black");
$('#data').jstree({
$('#treeData').jstree({
"json_data": {
"data" : [ ]
},
@@ -376,7 +364,7 @@ function loadLehrveranstaltungSTPL(studienplan_id, bezeichnung)
],
resizable: true
},
"plugins": ["themes", "json_data", "ui", "crrm", "dnd", "grid"]
"plugins": ["themes", "json_data", "ui", "crrm", "dnd", "grid", "sort"]
}).bind("move_node.jstree", function (e, data) {
saveJsondataFromTree("copy_"+data.rslt.o[0].id, studienplan_id);
writeEctsSum(data.rslt.np);
@@ -397,7 +385,7 @@ function loadLehrveranstaltungSTPL(studienplan_id, bezeichnung)
error: loadError
}).success(function(data)
{
var html = "<div><select id='oeDropdown' onchange='loadFilteredLehrveranstaltungen();'>";
var html = "<div><select id='oeDropdown' onchange='loadFilteredLehrveranstaltungen();'><option value=''>&nbsp;</option>";
for(i in data.result)
{
if(data.result[i].aktiv===true)
@@ -412,48 +400,6 @@ function loadLehrveranstaltungSTPL(studienplan_id, bezeichnung)
})
}
//LehrveranstaltungSTPLLoaded nicht in Verwendung
function LehrveranstaltungSTPLLoaded(data)
{
if(data.error=='true')
{
alert('Fehler:'+data.errormsg);
}
else
{
lehrveranstaltungen = data.result;
drawLehrveranstaltung(data.result);
jqUi( "#menueRechts" ).accordion("option","active",1);
//drawLehrveranstaltungGrid();
$("#lehrveranstaltung").html("<h3>Organisationseinheit</h3><div id='oeDiv'></div><h3>Lehrtyp</h3><div id='lehrtypenDiv'></div>");
$.ajax(
{
dataType: "json",
url: "../../soap/fhcomplete.php",
data: {
"typ": "json",
"class": "organisationseinheit",
"method": "getAll",
},
error: loadError
}).success(function(data)
{
var html = "<select id='oeDropdown'>";
for(i in data.result)
{
if(data.result[i].aktiv===true)
{
html+='<option value="'+data.result[i].oe_kurzbz+'">'+data.result[i].bezeichnung+' - '+data.result[i].oe_kurzbz+'</option>';
}
}
html+="</select>";
$("#oeDiv").html(html);
});
}
}
function drawLehrveranstaltung(data)
{
var obj='';
@@ -479,14 +425,12 @@ function getLehrveranstaltungSub(data)
function neueStudienordnung()
{
hideStplDetails();
drawHeader('Neue Studienordnung');
$("#data").load('studienordnung.inc.php?method=neueStudienordnung&studiengang_kz='+studiengang_kz);
}
function neuerStudienplan()
{
hideStplDetails();
drawHeader('Neuer Studienplan');
$("#data").load('studienordnung.inc.php?method=neuerStudienplan&studiengang_kz='+studiengang_kz);
}
@@ -497,74 +441,165 @@ function neuerStudienplan()
* */
function loadFilteredLehrveranstaltungen()
{
$.ajax(
if($("#oeDropdown option:selected").val() === "")
{
dataType: "json",
url: "../../soap/fhcomplete.php",
data: {
"typ": "json",
"class": "lehrveranstaltung",
"method": "load_lva",
"parameter_0": studiengang_kz, //Studiengangskennzahl
"parameter_1": $("#semesterDropdown").val(), //Semester
"parameter_2": "null", //Lehrverzeichnis
"parameter_3": "null", //Lehre // sollte TRUE sein
"parameter_4": "null", //Aktiv // sollte TRUE sein
"parameter_5": "bezeichnung", //Sortierung
"parameter_6": $("#oeDropdown option:selected").val(), //Organisationseinheit KurzBz
"parameter_7": $("#lehrtypDropdown").val() //Lehrtyp KurzBz
},
error: loadError
}).success(function(data)
{
if(data.result[0].lehrveranstaltung_id!==null)
$.ajax(
{
if($("#lvListe").length === 0)
dataType: "json",
url: "../../soap/fhcomplete.php",
data: {
"typ": "json",
"class": "lehrveranstaltung",
"method": "load_lva",
"parameter_0": 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)
{
if(data.result[0].lehrveranstaltung_id!==null)
{
$("#filteredLVs").html("<h3>Lehrveranstaltungen</h3><div id='lvListe'></div>");
if($("#lvListe").length === 0)
{
$("#filteredLVs").html("<h3>Lehrveranstaltungen</h3><div id='lvListe'></div>");
}
$("#lvListe").jstree({
ui: {
"select_limit": 1,
"select_multiple_modifier": "ctrl"
},
json_data: {
data: data.result
},
crrm: {
move: {
"check_move" : function(m)
{
return false;
},
"always_copy": "multitree"
}
},
types: {
"types" : {
// "valid_children" : ["semester", "lv", "default"],
"lv" : {
icon : {
image : "../../include/js/jstree/icons/lehrveranstaltung.png"
},
// max_children: 0
},
"modul" : {
icon : {
image : "../../include/js/jstree/icons/modul.png"
},
},
"lf" : {
icon : {
//image : "../../include/js/jstree/icons/lehrveranstaltung.png"
},
},
}
},
grid: {
columns: [
{width: 325, header: "Lehrveranstaltung", value: "bezeichnung", source: "metadata"},
{width: 50, header: "ECTS", value: "ects", 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"]
}).bind("loaded.jstree", function(event, data)
{
hideAllTreeColumns();
});
} else {
$("#filteredLVs .jstree-grid-wrapper").remove();
if($("#lvListe").length !== 0)
{
$("#lvListe").remove();
}
$("h3:contains('Lehrveranstaltungen')").remove();
$("#filteredLVs").append("<div id='lvListe'>Keine Einträge gefunden!</div>");
}
$("#lvListe").jstree({
ui: {
"select_limit": -1,
"select_multiple_modifier": "ctrl"
});
}
else
{
//TODO 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
},
json_data: {
data: data.result
},
crrm: {
move: {
"check_move" : function(m)
{
return false;
},
"always_copy": "multitree"
}
},
grid: {
columns: [
{width: 325, header: "Lehrveranstaltung", value: "bezeichnung", source: "metadata"},
{width: 50, header: "ECTS", value: "ects", 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"]
}).bind("loaded.jstree", function(event, data)
error: loadError
}).success(function(data)
{
if(data.result[0].lehrveranstaltung_id!==null)
{
hideAllTreeColumns();
});
} else {
$("#filteredLVs .jstree-grid-wrapper").remove();
if($("#lvListe").length !== 0)
{
$("#lvListe").remove();
if($("#lvListe").length === 0)
{
$("#filteredLVs").html("<h3>Lehrveranstaltungen</h3><div id='lvListe'></div>");
}
$("#lvListe").jstree({
ui: {
"select_limit": -1,
"select_multiple_modifier": "ctrl"
},
json_data: {
data: data.result
},
crrm: {
move: {
"check_move" : function(m)
{
return false;
},
"always_copy": "multitree"
}
},
grid: {
columns: [
{width: 325, header: "Lehrveranstaltung", value: "bezeichnung", source: "metadata"},
{width: 50, header: "ECTS", value: "ects", 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"]
}).bind("loaded.jstree", function(event, data)
{
hideAllTreeColumns();
});
} else {
$("#filteredLVs .jstree-grid-wrapper").remove();
if($("#lvListe").length !== 0)
{
$("#lvListe").remove();
}
$("h3:contains('Lehrveranstaltungen')").remove();
$("#filteredLVs").append("<div id='lvListe'>Keine Einträge gefunden!</div>");
}
$("h3:contains('Lehrveranstaltungen')").remove();
$("#filteredLVs").append("<div id='lvListe'>Keine Einträge gefunden!</div>");
}
});
});
}
}
/*
@@ -589,7 +624,7 @@ function loadLehrtypen()
{
$("#lehrveranstaltung").append("<h3>Lehrtyp</h3><div id='lehrtypenDiv'></div>");
}
var html = "<select id='lehrtypDropdown' onchange='loadFilteredLehrveranstaltungen();'>";
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>';
@@ -656,49 +691,89 @@ function hideAllTreeColumns()
function saveJsondataFromTree(data, studienplan_id)
{
var jsonData = $("#data").jstree("get_json", $("#"+data));
var jsonData = $("#treeData").jstree("get_json", $("#"+data));
var copy = false;
if(jsonData.length !== 1)
{
jsonData = $("#treeData").jstree("get_json", $("#copy_"+data));
copy = true;
}
var jsonString = JSON.stringify(jsonData);
//alert(JSON.stringify(jsonString));
loaddata = {
"method" : "loadLehrveranstaltungStudienplanByLvId",
"parameter_0" : studienplan_id,
"parameter_1" : jsonData[0]["metadata"]["lehrveranstaltung_id"]
};
//alert(JSON.stringify(loaddata));
var node;
if(copy)
{
node = $("#copy_"+jsonData[0]["metadata"]["lehrveranstaltung_id"]);
}
else
{
node = $("#"+jsonData[0]["metadata"]["lehrveranstaltung_id"]);
}
var lvParent = "";
if(node.length > 2)
{
lvParent = node;
}
savedata = {
"studienplan_id": studienplan_id,
"lehrveranstaltung_id" : jsonData[0]["metadata"]["lehrveranstaltung_id"],
"stpllv_semester": jsonData[0]["metadata"]["semester"],
"studienplan_lehrveranstaltung_id_parent": "",
"stpllv_semester": node.closest("li[rel=semester]").attr("id"),
"studienplan_lehrveranstaltung_id_parent": node.parent().parent().attr("studienplan_lehrveranstaltung_id"),
//TODO parent richtig auslesen
"stpllv_pflicht": true
};
// $.ajax(
// {
// dataType: "json",
// url: "../../soap/fhcomplete.php",
// type: "POST",
// data: {
// "typ": "json",
// "class": "studienplan",
// "method": "saveStudienplanLehrveranstaltung",
// "loaddata": JSON.stringify(loaddata),
// "savedata": JSON.stringify(savedata),
// }
// }).success(function(d)
// {
$.ajax(
{
dataType: "json",
url: "../../soap/fhcomplete.php",
type: "POST",
data: {
"typ": "json",
"class": "studienplan",
"method": "saveStudienplanLehrveranstaltung",
"loaddata": JSON.stringify(loaddata),
"savedata": JSON.stringify(savedata),
}
}).success(function(d)
{
// alert(d);
//// if(d.error !== "bereits vorhanden")
//// {
//// $("#jsonData").html(d);
//// }
//// else
//// {
//// alert("Lehrveranstaltung ist bereits im Studiengang enthalten!");
//// $("#data").jstree("remove", $("#"+data));
//// }
// });
if(d.error !== "bereits vorhanden")
{
$("#jsonData").html(d);
}
else
{
alert("Lehrveranstaltung ist bereits im Studiengang enthalten!");l
$("#treeData").jstree("remove", $("#"+data));
}
});
}
function deleteLehrveranstaltungFromStudienplan(lehrveranstaltung_studienplan_id)
{
$.ajax({
dataType: "json",
url: "../../soap/fhcomplete.php",
type: "POST",
data: {
"typ": "json",
"class": "studienplan",
"method": "deleteStudienplanLehrveranstaltung",
"parameter_0" : lehrveranstaltung_studienplan_id
}
}).success(function(data)
{
console.log(data);
});
}
function saveStudienordnung()
@@ -754,6 +829,7 @@ function saveStudienordnung()
error: loadError
});
}
function StudienordnungSaved()
{
if(data.error=='true')
@@ -817,6 +893,7 @@ function saveStudienplan()
error: loadError
});
}
function StudienplanSaved(data)
{
if(data.error=='true')
@@ -829,48 +906,39 @@ function StudienplanSaved(data)
}
}
function writeEctsSum(parent){
//alert(parent);
//console.log($("#data").jstree("get_children", parent));
function writeEctsSum(parent)
{
var cells = $(parent).find(".jstree-grid-col-1");
var sum = 0;
//console.log(cells);
for(var i=1; i<cells.length; i++)
{
if(!isNaN(parseFloat(cells[i].childNodes[0].innerHTML)))
{
sum+=parseFloat(cells[i].childNodes[0].innerHTML);
}
//console.log(sum);
}
cells[0].childNodes[0].innerHTML = "<b>"+sum+"</b>";
}
function writeOverallSum(root){
// console.log(root);
function writeOverallSum(root)
{
$("#treeData").append('<div id="stplDetails" style="padding-top: 1.0em"></div>');
var cells = $(root).find(".jstree-grid-col-1");
var sum = 0;
//console.log(cells);
for(var i=1; i<cells.length; i++)
{
if(!isNaN(parseFloat(cells[i].childNodes[0].innerHTML)))
{
sum+=parseFloat(cells[i].childNodes[0].innerHTML);
}
//console.log(sum);
}
$("#stplDetails").html("ECTS-Summe: <b>"+sum+"</b>");
$("#stplDetails").show();
}
function hideStplDetails()
{
$("#stplDetails").hide();
}
function semesterStoZuordnung()
{
hideStplDetails();
drawHeader('Neue Semester Zuordnung');
$("#data").load('studienordnung.inc.php?method=semesterStoZuordnung&studienordnung_id='+studienordnung_id);
}
@@ -883,11 +951,8 @@ function saveSemesterStoZuordnung(sem)
var semesterKurzbz = "";
for(var i = 0; i < cells.length; i++)
{
// semesterChecked.push(cells[i].checked);
console.log(cells);
semester[cells[i].getAttribute("semester")] = cells[i].checked;
}
console.log(semester);
// $.ajax({
//
// })
+4 -5
View File
@@ -19,6 +19,7 @@
*
*
* Authors: Andreas Österreicher <andreas.oesterreicher@technikum-wien.at>
* Stefan Puraner <puraner@technikum-wien.at>
*/
require_once('../../config/vilesci.config.inc.php');
require_once('../../include/studienordnung.class.php');
@@ -88,8 +89,8 @@ echo "
return false;
})
.next()
.addClass('ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom')
.hide();
.addClass('ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom');
//.hide();
});
var user='".$uid."';
@@ -164,9 +165,7 @@ echo '
&nbsp;
</div>
</div>
<div id="stplDetails" style="padding-top: 1.0em">
</div>
<div id="jsonData"></div>
</td>
<td valign="top" width="20%">
<div id="menueRechts" style="width: 420px;">