Überarbeitungen am Testtool. Neues Design. Mehrsprachige Menüführung, Einführung kommt aus CMS aus neuer Tabelle tbl_ablauf_vorgaben

admin.php: Audio- und Source-Tags werden protected, um ein Audiofile in den Content einfügen zu können.
This commit is contained in:
Manfred Kindl
2014-11-21 14:05:32 +00:00
parent 6780cbe8e8
commit 330163c8ee
14 changed files with 816 additions and 310 deletions
+193 -156
View File
@@ -17,8 +17,9 @@
*
* Authors: Christian Paminger <[email protected]>,
* Andreas Oesterreicher <[email protected]>,
* Rudolf Hangl <[email protected]> and
* Gerald Simane-Sequens <[email protected]>
* Rudolf Hangl <[email protected]>,
* Gerald Simane-Sequens <[email protected]>,
* Manfred Kindl <[email protected]>
*/
/**
* Formular zum Beantworten der Fragen
@@ -27,17 +28,63 @@
header("Content-type: application/xhtml+xml");
require_once('../../config/cis.config.inc.php');
require_once('../../config/global.config.inc.php');
require_once('../../include/functions.inc.php');
require_once('../../include/frage.class.php');
require_once('../../include/vorschlag.class.php');
require_once('../../include/antwort.class.php');
require_once('../../include/gebiet.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');
$PHP_SELF=$_SERVER["PHP_SELF"];
function getSpracheUser()
{
if(isset($_SESSION['sprache_user']))
{
$sprache_user=$_SESSION['sprache_user'];
}
else
{
if(isset($_COOKIE['sprache_user']))
{
$sprache_user=$_COOKIE['sprache_user'];
}
else
{
$sprache_user=DEFAULT_LANGUAGE;
}
setSpracheUser($sprache_user);
}
return $sprache_user;
}
function setSpracheUser($sprache)
{
$_SESSION['sprache_user']=$sprache;
setcookie('sprache_user',$sprache,time()+60*60*24*30,'/');
}
if(isset($_GET['sprache_user']))
{
$sprache_user = new sprache();
if($sprache_user->load($_GET['sprache_user']))
{
setSpracheUser($_GET['sprache_user']);
}
else
setSpracheUser(DEFAULT_LANGUAGE);
}
$sprache_user = getSpracheUser();
$p = new phrasen($sprache_user);
$sprache = getSprache();
session_start();
if(isset($_GET['gebiet_id']))
@@ -52,8 +99,11 @@ else
//$MAX_VORSCHLAEGE_PRO_ZEILE=4;
?>
<!--[IF !IE]>
<?xml version="1.0" ?>
<?xml-stylesheet type="text/xsl" href="mathml.xsl" ?>
-->
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
@@ -106,6 +156,23 @@ else
}
}
function GebietStarten(bezeichnung,stunde,minute,sekunde,gebiet_id)
{
var check = confirm(<?php echo "'".$p->t('testtool/okKlickenUmZuStarten')."'"?>+' '+stunde+'h '+minute+'m '+sekunde+'s');
if (check == true) {
document.location.href = 'frage.php?gebiet_id='+gebiet_id+'&start=true';
}
else {
return false;
}
}
function letzteFrage()
{
alert(<?php echo "'".$p->t("testtool/alleFragenBeantwortet")."'"?>);
return true;
}
//]]>
</script>
</head>
@@ -113,7 +180,7 @@ else
<body>
<?php
if(!isset($_SESSION['pruefling_id']))
die('Bitte zuerst anmelden!');
die($p->t('testtool/bitteZuerstAnmelden'));
$gebiet = new gebiet($gebiet_id);
@@ -130,20 +197,20 @@ if(isset($_GET['start']))
//Fragenpool generieren
$frage = new frage();
if(!$frage->generateFragenpool($_SESSION['pruefling_id'], $gebiet_id))
die('Fehler beim Generieren des Fragenpools:'.$frage->errormsg);
die($p->t('testtool/fehlerBeimGenerierenDesFragenpools').':'.$frage->errormsg);
//Erste Frage des Pools holen
if(!$frage_id = $frage->getNextFrage($gebiet_id, $_SESSION['pruefling_id']))
die('Es wurde keine Frage gefunden');
die($p->t('testtool/esWurdeKeineFrageGefunden'));
//Beginnzeit Speichern
$prueflingfrage = new frage();
if(!$prueflingfrage->getPrueflingfrage($_SESSION['pruefling_id'], $frage_id))
die('Fehler:'.$prueflingfrage->errormsg);
die($p->t('testtool/fehler').':'.$prueflingfrage->errormsg);
$prueflingfrage->begintime = date('Y-m-d H:i:s');
if(!$prueflingfrage->save_prueflingfrage(false))
die('Fehler beim Startvorgang');
die($p->t('testtool/fehlerBeimStartvorgang'));
echo '<script language="Javascript">parent.menu.location.reload();</script>';
}
@@ -157,7 +224,7 @@ if(isset($_POST['submitantwort']) && isset($_GET['frage_id']))
if($levelgebiet && !isset($_POST['vorschlag_id']))
{
echo '<span class="error">Bei diesem Gebietssen Sie jede Frage beantworten!</span>';
echo '<span class="error">'.$p->t('testtool/beiDiesemGebietMuessenSieJedeFrageBeantworten').'</span>';
}
else
{
@@ -224,7 +291,7 @@ if(isset($_POST['submitantwort']) && isset($_GET['frage_id']))
if($error)
{
$db->db_query('ROLLBACK;');
die('Fehler:'.$errormsg);
die($p->t('testtool/fehler').':'.$errormsg);
}
else
{
@@ -274,14 +341,16 @@ else
$info='';
//Name und Studiengang anzeigen
$qry_pruefling = "SELECT vorname, nachname, stg_bez FROM testtool.vw_pruefling
$qry_pruefling = "SELECT vorname, nachname, stg_bez, tbl_studiengangstyp.bezeichnung FROM testtool.vw_pruefling
JOIN public.tbl_studiengang USING (studiengang_kz)
JOIN public.tbl_studiengangstyp USING (typ)
WHERE pruefling_id='".addslashes($_SESSION['pruefling_id'])."'";
if($result_pruefling = $db->db_query($qry_pruefling))
{
if($row_pruefling = $db->db_fetch_object($result_pruefling))
{
$info = "$row_pruefling->vorname $row_pruefling->nachname, $row_pruefling->stg_bez";
$info = "$row_pruefling->vorname $row_pruefling->nachname, $row_pruefling->bezeichnung $row_pruefling->stg_bez";
}
}
@@ -323,13 +392,13 @@ if($levelgebiet)
}
//Zeit des Gebietes holen
echo '<table width="100%"><tr><td valign="top" width="50%">'.$info.'</td><td align="center">'.$fortschrittsbalken.'</td><td width="50%"></td></tr><tr><td>';
echo '<table width="100%"><tr><td valign="top" width="50%">'.$info.'</td><td align="center">'.$fortschrittsbalken.'</td><td width="50%"></td></tr><tr><td colspan="3">';
if($demo)
{
//Wenn es sich um ein Demobeispiel handelt, dann wird die Maximale Gesamtzeit angezeigt
echo "<input type=\"button\" style=\"width:110px; height:40px; white-space:normal\" value=\"Gebiet starten Start chapter\" onclick=\"document.location.href='$PHP_SELF?gebiet_id=$gebiet_id&amp;start=true'\" /> ";
echo $minute.':'.$sekunde.' Minuten ';
echo "<input type=\"button\" value=\"".$p->t("testtool/gebietStarten")."\" onclick=\"GebietStarten('".$db->convert_html_chars($gebiet->bezeichnung)."','".$stunde."','".$minute."','".$sekunde."','".$gebiet_id."')\" /> ";
echo '<center>'.$p->t('testtool/bearbeitungszeit').': '.$stunde.'h '.$minute.'m '.$sekunde.'s</center>';
}
else
{
@@ -349,11 +418,11 @@ else
$zeit = $zeit*-1;
}
echo '<span id="counter"></span> Minuten';
echo $p->t('testtool/bearbeitungszeit').': <span id="counter"></span>';
echo "<script>count_down($zeit)</script>";
if($zeit<0)
die('</td></tr></table><center><b>Die Zeit ist abgelaufen!<br /> Bitte aktivieren Sie Javascript in Ihrem Browser!</b></center></body></html>');
die('</td></tr></table><center><b>'.$p->t('testtool/dieZeitIstAbgelaufen').'</b></center></body></html>');
}
echo '</td></tr>';
echo '</table>';
@@ -402,18 +471,115 @@ if($frage->frage_id!='')
//wenn diese noch nicht angesehen wurde, dann wird die begintime gesetzt
$prueflingfrage = new frage();
if(!$prueflingfrage->getPrueflingfrage($_SESSION['pruefling_id'], $frage_id))
die('Diese Frage ist nicht fuer Sie bestimmt');
die($p->t('testtool/dieseFrageIstNichtFuerSieBestimmt'));
if($prueflingfrage->begintime=='')
{
$prueflingfrage->begintime = date('Y-m-d H:i:s');
$prueflingfrage->new = false;
if(!$prueflingfrage->save_prueflingfrage())
echo 'Fehler beim Speichern der Erstansicht';
echo $p->t('testtool/fehlerBeimSpeichernDerErstansicht');
}
}
}
echo '<br/><br/><center>';
echo '<center>';
//Kopfzeile mit Weiter Button und Sprung direkt zu einer Frage
if(!$demo && !$levelgebiet)
{
$qry = "SELECT tbl_pruefling_frage.nummer, tbl_pruefling_frage.frage_id
FROM testtool.tbl_pruefling_frage JOIN testtool.tbl_frage USING(frage_id)
WHERE gebiet_id='".addslashes($gebiet_id)."' AND pruefling_id='".addslashes($_SESSION['pruefling_id'])."' AND demo=false ORDER BY nummer";
echo " <table><tr>";
//Nummern der Fragen Anzeigen
$result = $db->db_query($qry);
while($row = $db->db_fetch_object($result))
{
$antwort = new antwort();
$antwort->getAntwort($_SESSION['pruefling_id'],$row->frage_id);
if($row->frage_id==$frage_id)
echo " <a href='#' target='_self'><td style='width:12px; text-align:center; padding:2px; box-shadow: 0px 0px 3px 3px #888888;".(count($antwort->result)!=0?"background-color:lightgreen;":"")."'>".($row->nummer<10?" ":"")."$row->nummer</td></a>";
else
echo " <a href='$PHP_SELF?gebiet_id=$gebiet_id&amp;frage_id=$row->frage_id'><td style='width:12px; text-align:center; padding:2px; box-shadow: 0px 0px 3px 0px #888888;".(count($antwort->result)!=0?"background-color:lightgreen;":"")."'>$row->nummer</td></a>";
}
//echo " </tr></table>";
}
//Weiter Button nur bei nicht gelevelten Gebieten anzeigen
if(!$levelgebiet)
{
//Naechste Frage holen und Weiter-Button anzeigen
$frage2 = new frage();
$nextfrage = $frage2->getNextFrage($gebiet_id, $_SESSION['pruefling_id'], $frage_id, $demo);
if($nextfrage)
{
if($demo)
$value=$p->t('testtool/demo');
else
$value=$p->t('testtool/blaettern');
echo " <a href='$PHP_SELF?gebiet_id=$gebiet_id&amp;frage_id=$nextfrage' class='Item'>$value &gt;&gt;</a>";
}
else
{
if($demo)
{
$qry = "SELECT count(*) as anzahl FROM testtool.tbl_frage
WHERE tbl_frage.gebiet_id='".addslashes($gebiet_id)."'
AND demo ";
if($row = $db->db_fetch_object($db->db_query($qry)))
{
if($row->anzahl>1)
{
//Bei Demos den Weiter-Button nur anzeigen, wenn ausser der Startseite noch andere Demoseiten vorhanden sind
echo " <a href='$PHP_SELF?gebiet_id=$gebiet_id' class='Item'>".$p->t("testtool/startseite")." &gt;&gt;</a>";
}
}
}
else
{
//Wenns der letzte Eintrag ist, wieder zum ersten springen
echo " <a href='$PHP_SELF?gebiet_id=$gebiet_id' class='Item'>".$p->t('testtool/blaettern')." &gt;&gt;</a>";
}
}
}
else
{
//Naechste Frage holen und Weiter-Button anzeigen
if($demo)
{
$frage2 = new frage();
$nextfrage = $frage2->getNextFrage($gebiet_id, $_SESSION['pruefling_id'], $frage_id, $demo);
if($nextfrage)
{
$value="Demo";
echo " <a href='$PHP_SELF?gebiet_id=$gebiet_id&amp;frage_id=$nextfrage' class='Item'>$value &gt;&gt;</a>";
}
else
{
//Naechste Frage holen und Weiter-Button anzeigen
//$frage = new frage();
//$nextfrage = $frage->getNextFrage($gebiet_id, $_SESSION['pruefling_id'], $frage_id, $demo);
$qry = "SELECT count(*) as anzahl FROM testtool.tbl_frage
WHERE tbl_frage.gebiet_id='".addslashes($gebiet_id)."'
AND demo ";
if($row = $db->db_fetch_object($db->db_query($qry)))
{
if($row->anzahl>1)
{
//Bei Demos den Weiter-Button nur anzeigen, wenn ausser der Startseite noch andere Demoseiten vorhanden sind
echo " <a href='$PHP_SELF?gebiet_id=$gebiet_id' class='Item'>".$p->t("testtool/startseite")." &gt;&gt;</a>";
}
}
}
}
}
if(!$demo && !$levelgebiet)
echo " </tr></table>";
echo '<br/><br/><br/><br/>';
//Bild und Text der Frage anzeigen
if($frage->bild!='')
echo "<img class='testtoolfrage' src='bild.php?src=frage&amp;frage_id=$frage->frage_id&amp;sprache=".$_SESSION['sprache']."' /><br/><br/>\n";
@@ -437,10 +603,12 @@ if($frage->frage_id!='')
//Vorschlaege laden
$vs = new vorschlag();
$vs->getVorschlag($frage->frage_id, $_SESSION['sprache'], $gebiet->zufallvorschlag);
echo "<form action=\"$PHP_SELF?gebiet_id=$gebiet_id&amp;frage_id=$frage->frage_id\" method=\"POST\">";
$letzte = $frage->getNextFrage($gebiet_id, $_SESSION['pruefling_id'], $frage_id, $demo);
echo "<form action=\"$PHP_SELF?gebiet_id=$gebiet_id&amp;frage_id=$frage->frage_id\" method=\"POST\" ".(!$letzte && !$levelgebiet?"onsubmit=\"letzteFrage()\"":"").">";
echo '<table cellspacing="30px">';
echo '<tr>';
$anzahl = 1;
$beantwortet = false;
//Antworten laden falls bereits vorhanden
$antwort = new antwort();
@@ -465,10 +633,11 @@ if($frage->frage_id!='')
if($vorschlag->vorschlag_id==$answer->vorschlag_id)
{
$checked='checked="checked"';
$beantwortet = true;
}
}
echo '<input type="'.$type.'" name="vorschlag_id[]" value="'.$vorschlag->vorschlag_id.'" '.$checked.'/>';
echo '<input type="'.$type.'" class="button_style" name="vorschlag_id[]" value="'.$vorschlag->vorschlag_id.'" '.$checked.'/>';
echo '<br/>';
if($vorschlag->bild!='')
@@ -503,159 +672,27 @@ if($frage->frage_id!='')
if(!$gebiet->multipleresponse && !$levelgebiet && count($vs->result)>0)
{
echo "<td align='center' valign='top'>";
echo '<input type="radio" name="vorschlag_id[]" value="" /><br /><font color="#acacac">CLEAR</font></td>';
echo '<input type="radio" class="button_style" name="vorschlag_id[]" value="" '.($beantwortet==false?'checked="checked"':'').'/><br /><font color="#acacac">'.$p->t('testtool/keineAntwort').'</font></td>';
}
echo '</tr></table>';
if(!$demo)
{
echo "<input style=\"width:180px; height:45px; white-space:normal\" type=\"submit\" name=\"submitantwort\" value=\"Speichern und weiter Save and next\" />";
echo '<input style="width:180px; white-space:normal" type="submit" name="submitantwort" value="'.$p->t('testtool/speichernUndWeiter').'" />';
}
echo "</form>";
echo '<br/><br/><br/>';
//Fusszeile mit Weiter Button und Sprung direkt zu einer Frage
if(!$demo && !$levelgebiet)
{
$qry = "SELECT tbl_pruefling_frage.nummer, tbl_pruefling_frage.frage_id
FROM testtool.tbl_pruefling_frage JOIN testtool.tbl_frage USING(frage_id)
WHERE gebiet_id='".addslashes($gebiet_id)."' AND pruefling_id='".addslashes($_SESSION['pruefling_id'])."' AND demo=false ORDER BY nummer";
//Nummern der Fragen Anzeigen
$result = $db->db_query($qry);
while($row = $db->db_fetch_object($result))
{
if($row->frage_id==$frage_id)
echo " <u>$row->nummer</u> -";
else
echo " <a href='$PHP_SELF?gebiet_id=$gebiet_id&amp;frage_id=$row->frage_id' class='Item'>$row->nummer</a> -";
}
}
//Weiter Button nur bei nicht gelevelten Gebieten anzeigen
if(!$levelgebiet)
{
//Naechste Frage holen und Weiter-Button anzeigen
$frage = new frage();
$nextfrage = $frage->getNextFrage($gebiet_id, $_SESSION['pruefling_id'], $frage_id, $demo);
if($nextfrage)
{
if($demo)
$value="Demo";
else
$value="Weiter";
echo " <a href='$PHP_SELF?gebiet_id=$gebiet_id&amp;frage_id=$nextfrage' class='Item'>$value &gt;&gt;</a>";
}
else
{
if($demo)
{
$qry = "SELECT count(*) as anzahl FROM testtool.tbl_frage
WHERE tbl_frage.gebiet_id='".addslashes($gebiet_id)."'
AND demo ";
if($row = $db->db_fetch_object($db->db_query($qry)))
{
if($row->anzahl>1)
{
//Bei Demos den Weiter-Button nur anzeigen, wenn ausser der Startseite noch andere Demoseiten vorhanden sind
echo " <a href='$PHP_SELF?gebiet_id=$gebiet_id' class='Item'>Startseite &gt;&gt;</a>";
}
}
}
else
{
//Wenns der letzte Eintrag ist, wieder zum ersten springen
echo " <a href='$PHP_SELF?gebiet_id=$gebiet_id' class='Item'>Weiter &gt;&gt;</a>";
}
}
}
else
{
//Naechste Frage holen und Weiter-Button anzeigen
if($demo)
{
$frage = new frage();
$nextfrage = $frage->getNextFrage($gebiet_id, $_SESSION['pruefling_id'], $frage_id, $demo);
if($nextfrage)
{
$value="Demo";
echo " <a href='$PHP_SELF?gebiet_id=$gebiet_id&amp;frage_id=$nextfrage' class='Item'>$value &gt;&gt;</a>";
}
else
{
//Naechste Frage holen und Weiter-Button anzeigen
//$frage = new frage();
//$nextfrage = $frage->getNextFrage($gebiet_id, $_SESSION['pruefling_id'], $frage_id, $demo);
$qry = "SELECT count(*) as anzahl FROM testtool.tbl_frage
WHERE tbl_frage.gebiet_id='".addslashes($gebiet_id)."'
AND demo ";
if($row = $db->db_fetch_object($db->db_query($qry)))
{
if($row->anzahl>1)
{
//Bei Demos den Weiter-Button nur anzeigen, wenn ausser der Startseite noch andere Demoseiten vorhanden sind
echo " <a href='$PHP_SELF?gebiet_id=$gebiet_id' class='Item'>Startseite &gt;&gt;</a>";
}
}
}
}
}
echo '</center>';
}
else
{
//Wenn kein Demo vorhanden ist
echo "<br/><br/><br/><center><b>Start druecken um zu beginnen</b></center>";
echo "<br/><br/><br/><center><b>".$p->t("testtool/startDrueckenUmZuBeginnen")."</b></center>";
}
/*
//Test mit Button unten
echo '<br/><br/><br/><table width="100%"><tr><td valign="top" align="center">';
if($demo)
{
//Wenn es sich um ein Demobeispiel handelt, dann wird die Maximale Gesamtzeit angezeigt
echo $minute.':'.$sekunde.' Minuten ';
echo '<br/><br/>';
echo "<input type=\"button\" value=\"Start des Teilgebiets\" onclick=\"document.location.href='$PHP_SELF?gebiet_id=$gebiet_id&amp;start=true'\" />";
}
else
{
//Wenn es sich um eine Testfrage handelt, dann wird die verbleibende Zeit angezeigt
$qry = "SELECT '$gebiet->zeit'-(now()-min(begintime)) as time
FROM testtool.tbl_pruefling_frage JOIN testtool.tbl_frage USING(frage_id)
WHERE gebiet_id='".addslashes($gebiet_id)."' AND pruefling_id='".addslashes($_SESSION['pruefling_id'])."'";
$result = $db->db_query($qry);
$row = $db->db_fetch_object($result);
//Zeit in Sekunden umrechnen
list($stunde, $minute, $sekunde) = split(':',$row->time);
$zeit = (int) ($stunde*60*60+$minute*60+$sekunde);
//Wenn die Zeit negativ ist und die Stunde 0 ist,
//dann muss die Zeit mit -1 multipliziert werden
if(substr($stunde,0,1)=='-' && $stunde==0)
{
$zeit = $zeit*-1;
}
echo '<span id="counter"></span> Minuten';
echo "<script>count_down($zeit)</script>";
}
echo '</td></tr>';
echo '</table>';
*/
?>
</body>