<h1>Kartei{if $modus == 'formular' && !$neu} {$studenten_index+1}/ {$studenten_anzahl}{/if}</h1>
{if $meldung != ''}<p><span class="formmeldung">{$meldung|escape}</span></p>{/if}
{if $modus == 'uebersicht'}
<form method="post" action="{$self}">
<input type="hidden" name="formular" value="filter" />
Zeige folgende Studenten an
<select name="filter">
<option value="all"{if $filter=='all'} selected="selected"{/if}>Alle</option>
<option value="info"{if $filter=='info'} selected="selected"{/if}>Informatiker</option>
<option value="ninfo"{if $filter=='ninfo'} selected="selected"{/if}>nicht Informatiker</option>
</select>
<input type="submit" value="OK" />
</form>
<script type="text/javascript">
var studenten = new Array();
{section name=myS loop=$studenten}
studenten[{$smarty.section.myS.index}] = new Array('{$studenten[myS].id}', '{$studenten[myS].matrikelnummer}', '{$studenten[myS].name}', '{$studenten[myS].vorname}', '{$studenten[myS].fachrichtung}', '{$studenten[myS].semester}', '{$studenten[myS].wiederholer}', '{$studenten[myS].punkte}', '{$studenten[myS].punktesumme}', '{$studenten[myS].note}', '{$studenten[myS].sortname}');
{/section}
{literal}
function showStudenten(von)
{
var bis = von;
bis += 20;
var sfr = '<table><tr><td>#</td><td><b>Name</b></td><td><b>Vorname</b></td><td><b>Matrikelnummer</b></td><td><b>Fachrichtung</b></td><td></td></tr>';
for (i = von; i < bis && i < studenten.length; i++)
{
j = i;
j++;
sfr += '<tr><td>'+j+'</td><td>'+studenten[i][2]+'</td><td>'+studenten[i][3]+'</td><td>'+studenten[i][1]+'</td><td>'+studenten[i][4]+'</td><td><a href="{/literal}{$self}{literal}'+studenten[i][0]+'/">bearbeiten</a></td></tr>';
}
sfr += '</table>';
document.getElementById('studentenliste').innerHTML = sfr;
}
function sucheStudenten(str)
{
document.getElementById('studentenliste').innerHTML = '<i>Suche Studenten...</i>';
var sfr = '<table><tr><td>#</td><td><b>Name</b></td><td><b>Vorname</b></td><td><b>Matrikelnummer</b></td><td><b>Fachrichtung</b></td><td></td></tr>';
for (i = 0; i < studenten.length; i++)
{
if (studenten[i][2].search(eval("/" + str + "/i")) != -1 || studenten[i][3].search(eval("/" + str + "/i")) != -1 || studenten[i][1].search(eval("/" + str + "/i")) != -1)
sfr += '<tr><td>'+j+'</td><td>'+studenten[i][2]+'</td><td>'+studenten[i][3]+'</td><td>'+studenten[i][1]+'</td><td>'+studenten[i][4]+'</td><td><a href="{/literal}{$self}{literal}'+studenten[i][0]+'/">bearbeiten</a></td></tr>';
}
sfr += '</table>';
document.getElementById('studentenliste').innerHTML = sfr;
}
function positionen()
{
var sfr = 'Davon zeige Studenten <select onchange="showStudenten(this.value);">';
for (i = 0; i < studenten.length; i += 20)
{
var von = i+1;
var bis = i+20;
if (bis > studenten.length)
bis = studenten.length;
sfr += '<option value="'+i+'"';
if (i == 0)
sfr += ' selected="selected"';
sfr += '>'+von+' - '+bis+'</option>';
}
sfr += '</select> an <u>oder</u>';
document.write(sfr);
}
{/literal}
positionen();
</script>
suche nach <input type="text" name="suchestud" /> <input type="button" value="Suche" onclick="sucheStudenten(document.getElementsByName('suchestud')[0].value);" />
<div id="studentenliste"></div>
<script type="text/javascript">
showStudenten(0, (20 > studenten.length ? studenten.length : 20));
</script>
{/if}
{if $modus == 'formular'}
<script type="text/javascript">
//wandelt einen String in eine Zahl um. Verwendet , statt . als Dezimaltrennzeichen
// gibt NaN zurueck, wenn keine gueltige Zahl dargestellt wird ('-' und '' werden dabei zu 0)
{if $studenten_index eq 0}
geht_zurueck=0;
{else}
geht_zurueck=1;
{/if}
{if $studenten_index eq ($studenten_anzahl-1)}
geht_vor =0;
{else}
geht_vor=1;
{/if}
{literal}
function toNumber(s)
{
if (s == '-' || s == '')
return 0*0;
Ausdruck = /^(\d+)(,|.)?(\d*)$/;
Ausdruck.exec(s);
return (RegExp.$1+'.'+RegExp.$3)*1;
}
function punktesummenAktualisieren()
{
//erste Zeile:
max1 = 0.0;
summe = 0.0;
for(i=0; i<6; i++){
tempwert = toNumber(document.getElementById('punkte'+i).value);
summe += tempwert;
if(max1<tempwert)max1 = tempwert;
}
summe += max1;
document.getElementById('tds1').firstChild.nodeValue=summe;
document.getElementById('max1').firstChild.nodeValue=max1;
//zweite Zeile:
max2 = 0.0;
summe2 = 0.0;
for(i=6; i<12; i++){
tempwert = toNumber(document.getElementById('punkte'+i).value);
summe2 += tempwert;
if(max2<tempwert)max2 = tempwert;
}
summe2 += max2;
document.getElementById('tds2').firstChild.nodeValue=summe2;
document.getElementById('max2').firstChild.nodeValue=max2;
//Gesamtsumme:
document.getElementById('summe').firstChild.nodeValue = summe + summe2;
// note
var note = 0;
if (document.getElementsByName('fachrichtung')[0].value == 'info')
{
if (summe + summe2 <= 12.5) note = 5.0;
else if (summe + summe2 <= 16.5) note = 5.0;//4.7;
else if (summe + summe2 <= 18.5) note = 4.0;
else if (summe + summe2 <= 20.5) note = 3.7;
else if (summe + summe2 <= 22.5) note = 3.3;
else if (summe + summe2 <= 24.5) note = 3.0;
else if (summe + summe2 <= 26.5) note = 2.7;
else if (summe + summe2 <= 28.5) note = 2.3;
else if (summe + summe2 <= 30.5) note = 2.0;
else if (summe + summe2 <= 32.5) note = 1.7;
else if (summe + summe2 <= 34.5) note = 1.3;
else note = 1.0;
}
else
{
if (summe + summe2 <= 15.5) note = 5.0;
else if (summe + summe2 <= 19.5) note = 5.0;//4.7;
else if (summe + summe2 <= 21.5) note = 4.0;
else if (summe + summe2 <= 23.5) note = 3.7;
else if (summe + summe2 <= 25.5) note = 3.3;
else if (summe + summe2 <= 27.5) note = 3.0;
else if (summe + summe2 <= 29.5) note = 2.7;
else if (summe + summe2 <= 31.5) note = 2.3;
else if (summe + summe2 <= 33.5) note = 2.0;
else if (summe + summe2 <= 35.5) note = 1.7;
else if (summe + summe2 <= 38) note = 1.3;
else note = 1.0;
}
document.getElementById('note').firstChild.nodeValue = note;
// document.getElementById('maxsumme').firstChild.nodeValue = max1 + max2; wird nicht benötigt
}
function aktualisieren(id, id2)
{
//alert('test1');
a = document.getElementById(id);
if(a.value=='!') a.value='1,5';
else if(a.value=='"') a.value='2,5';
else if(a.value=='§') a.value='3,5';
else if(a.value=='=') a.value='0,5';
if(a.value=='0' || a.value=='1' || a.value=='2' || a.value=='3' || a.value=='4' ||
a.value=='0,5' || a.value=='1,5' || a.value=='2,5' || a.value=='3,5' || a.value=='-'){
//Firefox beschwert sich über die folgende Zeile, führt sie aber trotzdem wie erwartet aus...
document.getElementById(id2).focus();
//TODO: Zelleninhalt markieren
}
else{
a.value='';
}
punktesummenAktualisieren();
}
function TasteLosgelassen (Ereignis)
{
if (!Ereignis)
Ereignis = window.event;
if (Ereignis.which) {
Tastencode = Ereignis.which;
} else if (Ereignis.keyCode) {
Tastencode = Ereignis.keyCode;
}
//alert('Tastenr. '+Tastencode+' losgel.');
if(Tastencode==33 && geht_vor){
document.getElementById('richtung').value='vor';
document.getElementById('formstudent').submit();
}
else if(Tastencode==34 && geht_zurueck){
document.getElementById('richtung').value='zur';
document.getElementById('formstudent').submit();
}
}
//document.onkeydown = TasteGedrueckt;
document.onkeyup = TasteLosgelassen;
{/literal}
</script>
{if not $neu}
<p>
Schnellnavigation: In der Kartei vor/ zurück gehen von hier aus:<br />
{foreach from=$links item=i}<a href="{$i.link}">{$i.text}</a> {/foreach}
</p>
<p>
{if $filter == 'info'}Es werden nur <u>Informatiker</u> angezeigt. Wenn sie andere
Studenten anzeigen wollen, klicken Sie im Menü auf Studentenkartei und wählen eine
andere Fachrichtung, oder alle Studenten aus.{/if}
{if $filter == 'ninfo'}Es werden nur <u>nicht Informatiker</u> angezeigt. Wenn sie andere
Studenten anzeigen wollen, klicken Sie im Menü auf Studentenkartei und wählen eine
andere Fachrichtung, oder alle Studenten aus.{/if}
{if $filter == '' || $filter == 'all'}Es werden <u>alle Studenten</u> angezeigt.{/if}
</p>
<hr />
{/if}
<form action="{$self}" method="post" id="formstudent">
<table border="0">
<tr>
<td>Name</td>
<td>{if $klausurchanges == 0}<input type="text" name="name" value="{$student.name}" size="20" />{else}{$student.name}{/if}</td>
</tr>
<tr>
<td>Vorname</td>
<td>{if $klausurchanges == 0}<input type="text" name="vorname" value="{$student.vorname}" size="20" />{else}{$student.vorname}{/if}</td>
</tr>
<tr>
<td>Matrikelnummer</td>
<td>{if $klausurchanges == 0}<input type="text" name="matrikelnummer" value="{$student.matrikelnummer}" size="20" />{else}{$student.matrikelnummer}{/if}</td>
</tr>
<tr>
<td>Semester</td>
<td>{if $klausurchanges == 0}<input type="text" name="semester" value="{$student.semester}" size="2" />{else}{$student.semester}{/if}</td>
</tr>
<tr>
<td>Wiederholer?</td>
<td>
{if $klausurchanges == 0}
<input type="radio" name="wiederholer" value="1" {if $student.wiederholer}checked="checked"{/if} /> Ja
<input type="radio" name="wiederholer" value="0" {if !$student.wiederholer}checked="checked"{/if} /> Nein
{else}
{if !$student.wiederholer}<u>kein</u>{/if} Wiederholer
{/if}
</td>
</tr>
<tr>
<td>Fachrichtung</td>
<td>
{if $klausurchanges == 0}
<select name="fachrichtung">
{foreach from=$fachrichtungen item=i key=k}
<option value="{$k}" {if $student.fachrichtung eq $k}selected="selected"{/if}>{$i.name}</option>
{/foreach}
</select>
{else}
{foreach from=$fachrichtungen item=i key=k}
{if $student.fachrichtung eq $k}{$i.name}{/if}
{/foreach}
{/if}
</td>
</tr>
</table>
<table cellpadding="3" cellspacing="0" border="1">
<tr>
<th>Aufgabe</th>
<th>1</th>
<th>2</th>
<th>3</th>
<th>4</th>
<th>5</th>
<th>6</th>
<th>Max</th>
<th>Summe</th>
<th>Note</th>
</tr>
<tr>
<td>Teil I</td>
<td><input type="text" id="punkte0" name="punkte0" value="{$punkte.0}" size="3" onKeyUp="aktualisieren('punkte0','punkte1')" /></td>
<td><input type="text" id="punkte1" name="punkte1" value="{$punkte.1}" size="3" onKeyUp="aktualisieren('punkte1','punkte2')" /></td>
<td><input type="text" id="punkte2" name="punkte2" value="{$punkte.2}" size="3" onKeyUp="aktualisieren('punkte2','punkte3')" /></td>
<td><input type="text" id="punkte3" name="punkte3" value="{$punkte.3}" size="3" onKeyUp="aktualisieren('punkte3','punkte4')" /></td>
<td><input type="text" id="punkte4" name="punkte4" value="{$punkte.4}" size="3" onKeyUp="aktualisieren('punkte4','punkte5')" /></td>
<td><input type="text" id="punkte5" name="punkte5" value="{$punkte.5}" size="3" onKeyUp="aktualisieren('punkte5','punkte6')" /></td>
<td id="max1">0</td>
<td id="tds1">0</td>
<td></td>
</tr>
<tr>
<td>Teil II</td>
<td><input type="text" id="punkte6" name="punkte6" value="{$punkte.6}" size="3" onKeyUp="aktualisieren('punkte6','punkte7')" /></td>
<td><input type="text" id="punkte7" name="punkte7" value="{$punkte.7}" size="3" onKeyUp="aktualisieren('punkte7','punkte8')" /></td>
<td><input type="text" id="punkte8" name="punkte8" value="{$punkte.8}" size="3" onKeyUp="aktualisieren('punkte8','punkte9')" /></td>
{if $student.fachrichtung eq 'info'}
<td><input type="text" id="punkte9" name="punkte9" value="{$punkte.9}" size="3" onKeyUp="aktualisieren('punkte9','save0')" /></td>
<td><input type="text" id="punkte10" name="punkte10" disabled="disabled" value="-" size="3" /></td>
<td><input type="text" id="punkte11" name="punkte11" disabled="disabled" value="-" size="3" /></td>
{else}
<td><input type="text" id="punkte9" name="punkte9" value="{$punkte.9}" size="3" onKeyUp="aktualisieren('punkte9','punkte10')" /></td>
<td><input type="text" id="punkte10" name="punkte10" value="{$punkte.10}" size="3" onKeyUp="aktualisieren('punkte10','punkte11')" /></td>
<td><input type="text" id="punkte11" name="punkte11" value="{$punkte.11}"size="3" onKeyUp="aktualisieren('punkte11','save0')" /></td>
{/if}
<td id="max2">0</td>
<td id="tds2">0</td>
<td></td>
</tr>
<tr>
<td>Gesamt</td>
<td colspan="7"></td>
<td id="summe">0</td>
<td id="note">{$student.note/10}</td>
</tr>
</table>
<p>
<input type="hidden" id="richtung" name="richtung" value="nichtgesetzt" />
<input type="hidden" name="formular" value="student_speichern" />
<input type="hidden" name="student_id" value="{$student.id}" />
<input type="hidden" name="student_hash" value="{$hash}" />
</p>
{if $neu}
<input type="hidden" name="neu" value="1" />
<input id="save1" type="submit" name="submit" value="Speichern" />
{else}
{if $klausurchanges == 0}
<table border="0">
<tr>
{if $studenten_index neq 0}<td align="right"><input type="submit" name="submitvor" value="Speichern und zurück (...)" /></td>{/if}
<td align="center"><input id="save1" type="submit" name="submit" value="Speichern" /></td>
{if $studenten_index neq $studenten_anzahl-1}<td align="left"><input id="save0" type="submit" name="submitwei" value="Speichern und weiter (...)" /></td>{/if}
</tr>
</table>
<input type="checkbox" name="wirklich" value="ja" /> wirklich <input type="submit" name='loeschen' value="Student löschen">
{/if}
</form>
{/if}
<p>Kurzbeschreibung:</p>
<ul>
<li>JavaScript sollte eingeschaltet sein</li>
<li>Mögliche Eingaben bei den Punkte-Feldern: -, 0, 1, 2, 3, 4, shift+0, shift+1, shift+2, shift+3</li>
<li>Hat man eine gültige Eingabe gemacht, wird das nächste Feld aktiviert; eine ungültige Eingabe wird sofort gelöscht.</li>
<li>Die hier angezeigten Summen werden per JavaScript berechnet und können daher nicht richtig sein (falls z.B. JavaScript deaktiviert ist). An allen maßgeblichen Stellen wird natürlich mit der korrekten Punktesumme gerechnet.</li>
</ul>
<script type="text/javascript">
document.getElementById('punkte0').focus();
punktesummenAktualisieren();
</script>
{/if}