From 506878c59f90a77029e08ecf2df0de7d7ff15bd6 Mon Sep 17 00:00:00 2001 From: Stefan Puraner Date: Tue, 26 Nov 2013 12:12:22 +0000 Subject: [PATCH] =?UTF-8?q?Studienordnung:=20LVs=20mit=20Studienplan=20ver?= =?UTF-8?q?kn=C3=BCpfen;=20speichern=20der=20verkn=C3=BCpften=20LVs=20in?= =?UTF-8?q?=20DB=20und=20l=C3=B6schen=20aus=20DB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/js/jstree/icons/lehrveranstaltung.png | Bin 0 -> 920 bytes include/js/jstree/icons/modul.png | Bin 0 -> 976 bytes include/lehrtyp.class.php | 6 +- include/lehrveranstaltung.class.php | 228 +++++++- include/organisationseinheit.class.php | 11 +- include/studiengang.class.php | 2 +- include/studienordnung.class.php | 3 + include/studienplan.class.php | 36 +- include/studiensemester.class.php | 2 +- soap/lehrveranstaltung.json.php | 4 +- .../lehre/lehrveranstaltung_kompatibel.php | 2 +- vilesci/lehre/studienordnung.js | 501 ++++++++++-------- vilesci/lehre/studienordnung.php | 9 +- 13 files changed, 543 insertions(+), 261 deletions(-) create mode 100644 include/js/jstree/icons/lehrveranstaltung.png create mode 100644 include/js/jstree/icons/modul.png diff --git a/include/js/jstree/icons/lehrveranstaltung.png b/include/js/jstree/icons/lehrveranstaltung.png new file mode 100644 index 0000000000000000000000000000000000000000..5b27ba5e9d390e2b416e8eb2bd393149f514c453 GIT binary patch literal 920 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2>S ze-LI&?)rNj$dD{?jVKAuPb(=;EJ|f4FE7{2%*!rLPAo{(%P&fw{mw=TsE7}wC?vBa zCzT;3Ke;qFHLs+4e(VRJj08x=v9u&3zlg!DC^4@pvp73ZA-EtvuQ)X)Lt5P)s3r@f z#wE2lxhS)sBr`vcL7}ubwOGL>qokz3N?$*%q(HAUFH<+QC?_#5JvC1+B~`zmG)cdx zs47*z1SpgbX6j}p=jZ7br~iOSf~fS>^<^RSaaS zb5Uv{NP$8~W^O8je{zX}k%6I+X?#mIP(=_}MSekLQD%BZ34^nJ}&J8|xY9$2CXoVPIf< z=;`7ZV$nNy^1-ZNN0GMu#c6p()%laAwp__Q+IxllgCNUF?${qPN>O(?SwCvVbm*-L zIg+lC7t@g!BJgU}QI)mJeBa$kON)s~Uhli)!Ty8)^~ z zc7Aei>hHH^f8RHMc=~#|d3pZ&^=BEZZcB)+@%6}Q3OxPr$ApJ<^MPpbM?tfVDK{s5 z+jTnJTrT&{teCuwy0euxtcG|{-{FDb`Uu=MevQ(SBJ^lE$ke)aX5?}MN542Epk zlVHrTGV4mF zKvYbO0LNd5W8NRcH(#I(#%;j~eY;aBCP9-yd^-ib}BA)+f&H!SZ?Zw{Rv z*d1`zvqvyAlE>rn6cgX)3}4w4D?zopr0Eu{eD*ylh literal 0 HcmV?d00001 diff --git a/include/js/jstree/icons/modul.png b/include/js/jstree/icons/modul.png new file mode 100644 index 0000000000000000000000000000000000000000..e69599e84bcb25cba26403a61cac938464eaaab3 GIT binary patch literal 976 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2>S zXAoxG@waFJkRe&(8c`CQpH@mmtT}V`<;yxP>~EsQAlP< zPAWr6W>IQ#Nq$kKLVi*fkfo5ElUQ8rAE;yjR3{2j=U7^jkzd5%k(!rMl$ovInx39o zR9xQE*8o&d0aDyUjTB4eo10pdOn2I%}mbE(=EwJ%}vz@Iy5ISDJNAwv7n$>zn~~JEwv~$FFCbX zx45#nBsEvJJTosPzr0wlxGdeS?cQYrpc}+NZg4J2O$0eWAtW<5mBFhtr&7Vlz`#PM z+UXroNf1~`enDkXW_m^mgR`@OV@XL-W>P6gi*9fRFsK}JGP6?^ppH%kn^u;ZoS&PU zpH~caaZYA(YF=?_v3^peZgHZ%v7Ui`TyxYO1_s9eo-U3d7QIU+duIqc%Cy(-zRNqi z-E(Vigr=C_!P!+W7Rs^g4Xb*2wjn{#zcuRXgINBh?$sJq7iN37UTJO@u#vKHxqT_g zN2k_R>*kWP`!?;KdAyH3GwSTKEAl*N3=W&$|C8<}#mnhUpTqYX5RUGj2AcsoEDgiHNM?4;k3A5 zptb8hwgVrRnAw?qEvndiYeqzEZT(K(gvN%q#!vQ5nYh!i=aRnhl}Ab!>eXc5)*H>2 zWiMcO5ObhFBZ6T`_2P)z>lF8IVf2_g;e3yCug3QEcWcdpZf-KpzS+L(5L2V=@%FqO z2D4ap)<{mCxjN#1ZmIUk1Sej$Woh?f89&4&Ix;Li=`ge5VoC!K&s;CXQk`2{SIidO zTl<~sIny$4MQyHC%lJ<(-C*06YkNmw*~$+b`Te5De!M#6wewv>+@gnDOq?uBF1ue< zS;%nqaY1YqgT}tOaTeBApB3f$ZMWN$d3zXXl}dNpe+_WZTKMqD!pkQaHhlaT*xkKg z!uiwYBdo3A?ryKi=+ctS`Oi{Yx(8hAQRAv80%Mbhs z_DAxs*460Gv=LC$f0&, * Andreas Oesterreicher and * Rudolf Hangl . + * Stefan Puraner */ 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 diff --git a/include/organisationseinheit.class.php b/include/organisationseinheit.class.php index 0c00b3a30..02568e535 100644 --- a/include/organisationseinheit.class.php +++ b/include/organisationseinheit.class.php @@ -1,5 +1,5 @@ , * Rudolf Hangl and * Gerald Simane-Sequens + * Stefan Puraner */ /** * 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){ diff --git a/include/studiengang.class.php b/include/studiengang.class.php index ef7fc23f8..9c475e234 100644 --- a/include/studiengang.class.php +++ b/include/studiengang.class.php @@ -1,5 +1,5 @@ + * Stefan Puraner */ 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; + } + } } ?> diff --git a/include/studiensemester.class.php b/include/studiensemester.class.php index a202f4dc4..e8dc4abfb 100644 --- a/include/studiensemester.class.php +++ b/include/studiensemester.class.php @@ -1,5 +1,5 @@ , + * Stefan Puraner */ 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'; diff --git a/vilesci/lehre/lehrveranstaltung_kompatibel.php b/vilesci/lehre/lehrveranstaltung_kompatibel.php index c213774e3..52138dbe4 100755 --- a/vilesci/lehre/lehrveranstaltung_kompatibel.php +++ b/vilesci/lehre/lehrveranstaltung_kompatibel.php @@ -1,5 +1,5 @@ , + * Stefan Puraner */ 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+'
  • '+data[i].bezeichnung+'
  • '; + obj=obj+'
  • '+data[i].bezeichnung+'
  • '; } obj=obj+''; $('#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("
    ") 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 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; iOrganisationseinheit

    Lehrtyp

    "); - $.ajax( - { - dataType: "json", - url: "../../soap/fhcomplete.php", - data: { - "typ": "json", - "class": "organisationseinheit", - "method": "getAll", - }, - error: loadError - }).success(function(data) - { - var html = ""; - $("#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("

    Lehrveranstaltungen

    "); + + if($("#lvListe").length === 0) + { + $("#filteredLVs").html("

    Lehrveranstaltungen

    "); + } + $("#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("
    Keine Einträge gefunden!
    "); } - $("#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("

    Lehrveranstaltungen

    "); + } + $("#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("
    Keine Einträge gefunden!
    "); } - $("h3:contains('Lehrveranstaltungen')").remove(); - $("#filteredLVs").append("
    Keine Einträge gefunden!
    "); - } - }); + }); + } } /* @@ -589,7 +624,7 @@ function loadLehrtypen() { $("#lehrveranstaltung").append("

    Lehrtyp

    "); } - var html = ""; for(i in data.result) { html+=''; @@ -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"; } -function writeOverallSum(root){ -// console.log(root); +function writeOverallSum(root) +{ + $("#treeData").append('
    '); var cells = $(root).find(".jstree-grid-col-1"); var sum = 0; - //console.log(cells); + for(var i=1; i"+sum+"
    "); $("#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({ // // }) diff --git a/vilesci/lehre/studienordnung.php b/vilesci/lehre/studienordnung.php index 97a94ad34..53ee679c2 100644 --- a/vilesci/lehre/studienordnung.php +++ b/vilesci/lehre/studienordnung.php @@ -19,6 +19,7 @@ * * * Authors: Andreas Österreicher + * Stefan Puraner */ 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 '   -
    - -
    +