diff --git a/cis/index.php b/cis/index.php index 8fa3d3cc5..747b0cad8 100644 --- a/cis/index.php +++ b/cis/index.php @@ -244,38 +244,6 @@ function loadampel() - -
- -
- - - - - - - -
- - - - - - - - - - - - -
Impressum
Kontakt
 
Powered by FH Complete 2.0
-
-
-
- -->';*/ - ?> diff --git a/cis/testtool/admin/gebieteAnheangen.php b/cis/testtool/admin/gebieteAnheangen.php index 877ba4a8b..7e8771cf9 100644 --- a/cis/testtool/admin/gebieteAnheangen.php +++ b/cis/testtool/admin/gebieteAnheangen.php @@ -34,6 +34,7 @@ require_once('../../../include/studienplan.class.php'); require_once('../../../include/studiensemester.class.php'); require_once('../../../include/organisationsform.class.php'); require_once('../../../include/ablauf.class.php'); +require_once('../../../include/content.class.php'); if (!$user = get_uid()) die('Sie sind nicht angemeldet. Es wurde keine Benutzer UID gefunden ! Zurück'); @@ -47,7 +48,7 @@ $rechte = new benutzerberechtigung(); $rechte->getBerechtigungen($user); $sprache = new sprache(); -$sprache->getAll(true); +$sprache->getAll(true, 'index'); echo ' @@ -58,26 +59,15 @@ echo ' + $("#t1").tablesorter( + { + sortList: [[3,0],[1,0]], + widgets: ["zebra"] + }); + }); +
@@ -90,7 +80,7 @@ else $stg_kz = (isset($_GET['stg_kz'])?$_GET['stg_kz']:'-1'); -echo '

 Gebiete an Studiengänge anhängen

'; +echo '

Ablauf der Gebiete verwalten

'; if (!$rechte->isBerechtigt('basis/testtool')) die($rechte->errormsg); @@ -102,6 +92,7 @@ $gebiet->getAll(); $ablauf_vorgabe = new gebiet(); $ablauf_vorgabe->getAblaufVorgaben(); +$errormsg = ''; echo 'Zurück zur Admin Seite

'; echo ''; //Zusaetzliche EingabeFelder anzeigen diff --git a/cis/testtool/menu.php b/cis/testtool/menu.php index 92885b4b4..a9538ea8e 100644 --- a/cis/testtool/menu.php +++ b/cis/testtool/menu.php @@ -16,9 +16,9 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. * * Authors: Christian Paminger , - * Andreas Oesterreicher , - * Rudolf Hangl , - * Manfred Kindl + * Andreas Oesterreicher , + * Rudolf Hangl , + * Manfred Kindl */ require_once('../../config/cis.config.inc.php'); @@ -27,9 +27,9 @@ require_once('../../include/basis_db.class.php'); require_once('../../include/sprache.class.php'); require_once '../../include/phrasen.class.php'; - if (!$db = new basis_db()) - die('Fehler beim Oeffnen der Datenbankverbindung'); - +if (!$db = new basis_db()) + die('Fehler beim Oeffnen der Datenbankverbindung'); + require_once('../../include/gebiet.class.php'); function getSpracheUser() @@ -91,7 +91,7 @@ if (isset($_SESSION['pruefling_id'])) $qry = "SELECT content_id FROM testtool.tbl_ablauf_vorgaben WHERE studiengang_kz=".$db->db_add_param($_SESSION['studiengang_kz'])." LIMIT 1"; $result = $db->db_query($qry); - echo '
'; @@ -135,6 +126,44 @@ if (isset($_GET['action']) && $_GET['action'] == 'save') isset($_POST['semester']) && $_POST['semester'] != '' && isset($_POST['studienplan'])) { + // Ablauf-Vorgaben-Daten werden nur beim ersten Gebietseintrag gesendet. + // In diesem Fall wird vorher ein neuer Ablauf-Vorgaben-Eintrag erstellt. + $vorgaben_id = ''; + if (isset($_POST['sprache']) && $_POST['sprache'] != '') + { + // Prüfen, ob Content ID schon existiert + foreach ($sprache->result as $row) + { + $content = new content(); + if ($content->getContent($_POST['content_id'], $row->sprache)) + { + $content_id = $_POST['content_id']; + break; + } + else + { + $content_id = ''; + $errormsg = 'Content_ID '.$_POST['content_id'].' ist nicht vorhanden und wurde nicht gespeichert'; + } + } + echo $errormsg; + $ablauf_vorgaben = new ablauf(); + $ablauf_vorgaben->studiengang_kz = $stg_kz; + $ablauf_vorgaben->sprache = $_POST['sprache']; + $ablauf_vorgaben->sprachwahl = isset($_POST['sprachwahl'])?true:false; + $ablauf_vorgaben->content_id = $content_id; + $ablauf_vorgaben->insertamum = date('Y-m-d H:i:s'); + $ablauf_vorgaben->insertvon = $user; + if ($ablauf_vorgaben->saveAblaufVorgabe(true)) + { + $vorgaben_id = $ablauf_vorgaben->ablauf_vorgaben_id; + } + else + echo $ablauf_vorgaben->errormsg; + } + elseif (isset($_POST['ablauf_vorgaben_id']) && $_POST['ablauf_vorgaben_id'] != '') + $vorgaben_id = $_POST['ablauf_vorgaben_id']; + $ablauf = new ablauf(); $ablauf->studiengang_kz = $_POST['stg_kz']; $ablauf->gebiet_id = $_POST['gebiet_id']; @@ -144,6 +173,7 @@ if (isset($_GET['action']) && $_GET['action'] == 'save') $ablauf->insertvon = $user; $ablauf->insertamum = date('Y-m-d H:i:s'); $ablauf->studienplan_id = $_POST['studienplan']; + $ablauf->ablauf_vorgaben_id = $vorgaben_id; if (!$ablauf->save(true)) echo $ablauf->errormsg; @@ -156,42 +186,58 @@ if (isset($_GET['action']) && $_GET['action'] == 'save') // Gebiet entfernen if (isset($_GET['action']) && $_GET['action'] == 'delete') { - if (isset($_POST['gebiet_id']) && $_POST['gebiet_id'] != '') + if (isset($_POST['ablauf_id']) && $_POST['ablauf_id'] != '') { - $ablauf = new ablauf(); - $ablauf->getAblaufId($stg_kz, $_POST['gebiet_id']); - $ablauf_id = $ablauf->result[0]; - if ($ablauf->delete($ablauf_id)) + $ablauf = new ablauf($_POST['ablauf_id']); + if ($ablauf->delete($_POST['ablauf_id'])) echo $ablauf->errormsg; - } - else - { - //echo 'Bitte füllen Sie alle Felder aus'; + + // Wenn der Ablauf-Eintrag der letzte war, und die Ablauf-Vorgaben-ID nicht woanders verwendet wird, dann auch diesen löschen + if (isset($_POST['ablauf_vorgaben_id']) && $_POST['ablauf_vorgaben_id'] != '') + { + $abl_vorgabe = new ablauf(); + $vorlage_count = $abl_vorgabe->countAblaufVorgabe($_POST['ablauf_vorgaben_id']); + + if ($vorlage_count == 0) + { + if (!$abl_vorgabe->deleteAblaufVorgabe($_POST['ablauf_vorgaben_id'])) + echo $abl_vorgabe->errormsg; + } + } } } // Gebiet bearbeiten if (isset($_GET['action']) && $_GET['action'] == 'edit') { - if (isset($_POST['gebiet_id']) && $_POST['gebiet_id'] != '') + if (isset($_POST['ablauf_id']) && $_POST['ablauf_id'] != '') { - $ablauf = new ablauf(); - $ablauf->getAblaufId($stg_kz, $_POST['gebiet_id']); - $ablauf_id = $ablauf->result[0]; - $ablauf = new ablauf($ablauf_id); - $ablauf = $ablauf->result[0]; + $ablauf = new ablauf($_POST['ablauf_id']); - $gebiet = new gebiet($_POST['gebiet_id']); + $gebiet = new gebiet($ablauf->result[0]->gebiet_id); $studiengang = new studiengang($stg_kz); echo ' - - - - + + + + + + + +
Studiengang_kz:
Gebiet:
Reihung:
Gewichtung:
Semester:
Gebiet:
Reihung:
Gewichtung:
Semester:
Studienplan: '; - drawStudienplanDropdown($stg_kz, $db, $name = 'studienplan_id', null, 'width:100%', $ablauf->studienplan_id); + drawStudienplanDropdown($stg_kz, $db, $name = 'studienplan_id', null, 'width:100%', $ablauf->result[0]->studienplan_id); echo '
Sprache*:
Sprachwahl*: result[0]->sprachwahl?'checked':'').' />
Content ID*:
* Wirken sich auf alle Gebiete gleich aus
'; } @@ -213,10 +259,44 @@ if (isset($_GET['action']) && $_GET['action'] == 'editsave') $ablauf->reihung = $_POST['reihung']; $ablauf->gewicht = $_POST['gewicht']; $ablauf->semester = $_POST['semester']; + if (isset($_POST['studienplan_id'])) // && $_POST['studienplan_id'] != '' $ablauf->studienplan_id = $_POST['studienplan_id']; - if (!$ablauf->save(false)) + if ($ablauf->save(false)) + { + // Prüfen, ob Content ID schon existiert + foreach ($sprache->result as $row) + { + $content = new content(); + if ($content->getContent($_POST['content_id'], $row->sprache)) + { + $content_id = $_POST['content_id']; + break; + } + else + { + $content_id = ''; + $errormsg = 'Content_ID '.$_POST['content_id'].' ist nicht vorhanden und wurde nicht gespeichert'; + } + } + echo $errormsg; + $ablauf_vorgaben = new ablauf(); + $ablauf_vorgaben->ablauf_vorgaben_id = $ablauf->ablauf_vorgaben_id; + $ablauf_vorgaben->studiengang_kz = $stg_kz; + $ablauf_vorgaben->sprache = $_POST['sprache']; + $ablauf_vorgaben->sprachwahl = isset($_POST['sprachwahl'])?true:false; + $ablauf_vorgaben->content_id = $content_id; + $ablauf_vorgaben->updateamum = date('Y-m-d H:i:s'); + $ablauf_vorgaben->updatevon = $user; + + if (!$ablauf_vorgaben->saveAblaufVorgabe(false)) + { + echo $ablauf_vorgaben->errormsg; + } + + } + else echo $ablauf->errormsg; } else @@ -237,47 +317,68 @@ else } $gebieteangehaengt = array(); $studienplan = new studienplan(); +$ablauf_vorgaben_id = ''; if ($stg_kz != -1) { echo ' - - - - - - - - '; + + + + + + + + + + + '; foreach ($ablauf->result as $row) { $studienplan->loadStudienplan($row->studienplan_id); $gebiet = new gebiet($row->gebiet_id); array_push($gebieteangehaengt, $gebiet->gebiet_id); - echo ''; + + if ($ablauf_vorgaben_id == '' && $row->ablauf_vorgaben_id != '') + $ablauf_vorgaben_id = $row->ablauf_vorgaben_id; + echo ' + + + + + + + + + + '; } - $gebiet->getAll(); - echo ' + + + '; echo ''; @@ -286,26 +387,24 @@ if ($stg_kz != -1) echo ''; + // Ablauf-Vorgaben können nur beim ersten Eintrag gespeichert werden. Ansonsten werden sie über EDIT geändert. + if (count($gebieteangehaengt) == 0) + { + echo ''; + echo ''; + echo ''; + } + else + echo ''; + echo ''; echo '
GebietReihungGewichtungSemesterStudienplan
GebietReihungGewichtungSemesterStudienplanSpracheSprachwahlContent ID
'.$gebiet->kurzbz.' ('.$gebiet->bezeichnung.')'.$row->reihung.''.$row->gewicht.''.$row->semester.''.$studienplan->bezeichnung.' -
edit - -
-
delete - -
'.$gebiet->bezeichnung.' ('.$gebiet->kurzbz.')'.$row->reihung.''.$row->gewicht.''.$row->semester.''.$studienplan->bezeichnung.''.$row->sprache.''.($row->sprachwahl != ''?($row->sprachwahl?'Ja':'Nein'):'-').''.$row->content_id.' +
edit + +
+
delete + + +
+
+ '; drawStudienplanDropdown($stg_kz, $db, "studienplan"); echo '
'; } - - - -// Ablaufzuordnung entfernen -if (isset($_POST['action']) && $_POST['action'] == 'deleteZuordnung') -{ - if (!isset($_POST['ablauf_id']) || !is_numeric($_POST['ablauf_id'])) - die('ungueltige Parameteruebergabe'); - - $ablauf_id = $_POST['ablauf_id']; - - $ablauf = new gebiet(); - if ($ablauf->deleteAblaufZuordnung($ablauf_id)) - echo 'Ablauf wurde entfernt'; - else - echo 'Fehler beim Entfernen:'.$ablauf->errormsg.''; -} // Ablaufzuordnung hinzufügen if (isset($_POST['action']) && $_POST['action'] == 'saveAblauf') { diff --git a/cis/testtool/admin/index.php b/cis/testtool/admin/index.php index 48727e997..f2678cfff 100644 --- a/cis/testtool/admin/index.php +++ b/cis/testtool/admin/index.php @@ -273,6 +273,41 @@ if (isset($_POST['submitaudio'])) echo "Es duerfen nur mp3 Dateien hochgeladen werden
"; } } +//Loeschen eines Bildes +if (isset($_POST['deletePicture']) || isset($_POST['deleteAudio'])) +{ + if (!$rechte->isBerechtigt('basis/testtool', null, 'suid')) + die($rechte->errormsg); + + $frage = new frage(); + if ($frage->load($_GET['frage_id'])) + { + $frage->new = false; + + if ($frage->getFrageSprache($frage->frage_id, $sprache)) + { + $frage->new = false; + } + else + $frage->new = true; + + if (isset($_POST['deletePicture'])) + $frage->bild = ''; + elseif (isset($_POST['deleteAudio'])) + $frage->audio = ''; + + if ($frage->save_fragesprache()) + { + echo "File erfolgreich gelöscht
"; + $nummer = $frage->nummer; + } + else + echo 'Fehler:'.$frage->errormsg.'
'; + + } + else + echo ''.$frage->errormsg.'
'; +} //Speichern der Frage-Daten if (isset($_POST['submitdata'])) @@ -816,6 +851,9 @@ if ($frage_id != '') if ($frage->bild != '') { echo "\n
"; + echo "\n
"; + echo "\n
"; + echo "\n
"; } else { @@ -831,6 +869,9 @@ if ($frage_id != '')

Ihr Browser unterstützt dieses Audioelement leider nicht.

'; + echo "\n
"; + echo "\n
"; + echo "\n
"; } echo '
'; + echo '
'; echo ''; @@ -100,9 +100,11 @@ if (isset($_SESSION['pruefling_id'])) echo ''; echo ''; echo '
'.$p->t('testtool/startseite').'
'.$p->t('testtool/einleitung').'
 
'; - - $qry = "SELECT * FROM testtool.vw_ablauf WHERE studiengang_kz=".$db->db_add_param($_SESSION['studiengang_kz'])." ORDER BY semester,reihung"; + $sprache_mehrsprachig = new sprache(); + $bezeichnung_mehrsprachig = $sprache_mehrsprachig->getSprachQuery('bezeichnung_mehrsprachig'); + $qry = "SELECT vw_ablauf.*, ".$bezeichnung_mehrsprachig." FROM testtool.vw_ablauf JOIN testtool.tbl_gebiet USING (gebiet_id) WHERE studiengang_kz=".$db->db_add_param($_SESSION['studiengang_kz'])." ORDER BY semester,reihung"; + $result = $db->db_query($qry); $lastsemester = ''; @@ -119,7 +121,7 @@ if (isset($_SESSION['pruefling_id'])) $lastsemester = $row->semester; echo ''; - echo ''; + echo ''; } $gebiet = new gebiet(); if($gebiet->check_gebiet($row->gebiet_id)) @@ -167,22 +169,22 @@ if (isset($_SESSION['pruefling_id'])) $style=''; $class='ItemTesttool'; } - + echo ' - - - - '; + + + + '; } else { echo ' - - '; + + '; } } echo '
'.$row->semester.'. '.$p->t('testtool/semester').' '.($row->semester!='1'?$p->t('testtool/quereinstieg'):'').'
'.$row->semester.'. '.$p->t('testtool/semester').' '.($row->semester!='1'?$p->t('testtool/quereinstieg'):'').'
- '.$row->gebiet_bez.' -
+ '.$sprache_mehrsprachig->parseSprachResult("bezeichnung_mehrsprachig", $row)[$sprache_user].' +
-  '.$row->gebiet_bez.' (invalid) -
+  '.$row->gebiet_bez.' (invalid) +
'; diff --git a/include/ablauf.class.php b/include/ablauf.class.php index 66f139059..fe3492617 100644 --- a/include/ablauf.class.php +++ b/include/ablauf.class.php @@ -76,10 +76,16 @@ class ablauf extends basis_db //laden des Datensatzes $qry = "SELECT - * + tbl_ablauf.*, + tbl_ablauf_vorgaben.sprache, + tbl_ablauf_vorgaben.sprachwahl, + tbl_ablauf_vorgaben.content_id FROM testtool.tbl_ablauf - WHERE ablauf_id=".$this->db_add_param($ablauf_id, FHC_INTEGER, false).";"; + LEFT JOIN + testtool.tbl_ablauf_vorgaben USING (ablauf_vorgaben_id) + WHERE + ablauf_id=".$this->db_add_param($ablauf_id, FHC_INTEGER, false).";"; if($this->db_query($qry)) { @@ -99,6 +105,9 @@ class ablauf extends basis_db $obj->updatevon = $row->updatevon; $obj->insertamum = $row->insertamum; $obj->insertvon = $row->insertvon; + $obj->sprache = $row->sprache; + $obj->sprachwahl = $this->db_parse_bool($row->sprachwahl); + $obj->content_id = $row->content_id; $this->result[] = $obj; return true; @@ -143,6 +152,34 @@ class ablauf extends basis_db return false; } } + + /** + * Loescht einen Ablauf-Vorgabe Datensatz + * @param $ablauf_vorgabe_id ID des zu loeschenden Datensatzes + * @return true wenn ok, false im Fehlerfall + */ + public function deleteAblaufVorgabe($ablauf_vorgabe_id) + { + //$ablauf_vorgabe_id auf Gueltigkeit pruefen + if(!is_numeric($ablauf_vorgabe_id)) + { + $this->errormsg = 'ablauf_vorgabe_id muss eine gueltige Zahl sein'; + return false; + } + + $qry = "DELETE FROM testtool.tbl_ablauf_vorgaben + WHERE ablauf_vorgaben_id=".$this->db_add_param($ablauf_vorgabe_id, FHC_INTEGER).";"; + + if($this->db_query($qry)) + { + return true; + } + else + { + $this->errormsg = 'Fehler beim Loeschen der Ablauf-Vorgabe mit der ID '.$ablauf_vorgabe_id; + return false; + } + } /** * Prueft die Daten vor dem Speichern @@ -273,24 +310,38 @@ class ablauf extends basis_db */ public function getAblaufGebiete($studiengang_kz, $studienplan_id=null, $semester=null) { - $qry = "SELECT * FROM testtool.tbl_ablauf WHERE studiengang_kz=".$studiengang_kz; + $qry = "SELECT + tbl_ablauf.*, + tbl_ablauf_vorgaben.sprache, + tbl_ablauf_vorgaben.sprachwahl, + tbl_ablauf_vorgaben.content_id + FROM + testtool.tbl_ablauf + LEFT JOIN + testtool.tbl_ablauf_vorgaben USING (ablauf_vorgaben_id) + WHERE + tbl_ablauf.studiengang_kz=".$studiengang_kz; if (!is_null($studienplan_id)) $qry .= " AND studienplan_id=".$studienplan_id; if (!is_null($semester)) $qry .= " AND semester=".$semester; - + if($result = $this->db_query($qry)) { while($row = $this->db_fetch_object($result)) { $obj = new stdClass(); + $obj->ablauf_id = $row->ablauf_id; $obj->gebiet_id = $row->gebiet_id; $obj->reihung = $row->reihung; $obj->gewicht = $row->gewicht; $obj->semester = $row->semester; $obj->studienplan_id = $row->studienplan_id; $obj->ablauf_vorgaben_id = $row->ablauf_vorgaben_id; + $obj->sprache = $row->sprache; + $obj->sprachwahl = $this->db_parse_bool($row->sprachwahl); + $obj->content_id = $row->content_id; $this->result[]= $obj; } @@ -341,7 +392,7 @@ class ablauf extends basis_db //id auf Gueltigkeit pruefen if(!is_numeric($ablauf_vorgaben_id)) { - $this->errormsg = '$ablauf_vorgaben_id muss eine gueltige Zahl sein'; + $this->errormsg = 'ablauf_vorgaben_id muss eine gueltige Zahl sein'; return false; } @@ -473,7 +524,7 @@ class ablauf extends basis_db $obj->ablauf_vorgaben_id = $row->ablauf_vorgaben_id; $obj->studiengang_kz = $row->studiengang_kz; $obj->sprache = $row->sprache; - $obj->sprachwahl = $row->sprachwahl; + $obj->sprachwahl = $this->db_parse_bool($row->sprachwahl); $obj->content_id = $row->content_id; $this->result[]= $obj; @@ -497,7 +548,7 @@ class ablauf extends basis_db //id auf Gueltigkeit pruefen if(!is_numeric($studiengang_kz)) { - $this->errormsg = '$studiengang_kz muss eine gueltige Zahl sein'; + $this->errormsg = 'studiengang_kz muss eine gueltige Zahl sein'; return false; } @@ -525,5 +576,82 @@ class ablauf extends basis_db return false; } } + + /** + * Zaehlt, wie of die ablauf_vorgabe_id noch in tbl_ablauf verwendet wird + * @param integer $ablauf_vorgaben_id Ablauf-Vorlage-ID + * @return boolean true wenn ok sonst false + */ + public function countAblaufVorgabe($ablauf_vorgaben_id) + { + //id auf Gueltigkeit pruefen + if(!is_numeric($ablauf_vorgaben_id)) + { + $this->errormsg = 'ablauf_vorgaben_id muss eine gueltige Zahl sein'; + return false; + } + + $qry = "SELECT count(*) FROM testtool.tbl_ablauf WHERE ablauf_vorgaben_id=".$this->db_add_param($ablauf_vorgaben_id, FHC_INTEGER); + + if($this->db_query($qry)) + { + if($row = $this->db_fetch_object()) + { + return $row->count; + } + else + { + $this->errormsg = 'Fehler bei der Datenbankabfrage'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + + /** + * Berechnet die Dauer eines Tests + * @param integer $studiengang_kz Kennzahl des Studiengangs + * @param integer $studienplan_id Optional. Default NULL. ID des Studienplans + * @param integer $semester Optional. Default NULL. + * @return boolean true wenn ok sonst false + */ + public function getDauer($studiengang_kz, $studienplan_id=null, $semester=null) + { + $qry = "SELECT + SUM (zeit) as dauer + FROM + testtool.tbl_ablauf + JOIN + testtool.tbl_gebiet USING (gebiet_id) + WHERE + studiengang_kz=".$studiengang_kz; + if (!is_null($studienplan_id)) + $qry .= " AND studienplan_id=".$studienplan_id; + if (!is_null($semester)) + $qry .= " AND semester=".$semester; + + if($this->db_query($qry)) + { + if($row = $this->db_fetch_object()) + { + + return $row->dauer; + } + else + { + $this->errormsg = 'Fehler bei der Datenbankabfrage'; + return false; + } + } + else + { + $this->errormsg = 'Fehler bei der Datenbankabfrage'; + return false; + } + } } ?>