javascriptcursus/php/admin/new_assignment.php

<?php $page = new adminpage("Nieuwe opdracht"); $showForm = true; if(isset($_POST['assignment'])) { if($_POST['assignment'] == null) $page->addContent($page->createWhiteBlock('<div class="error">De opdracht mag niet leeg zijn!</div>').'<br />'); else if(!is_numeric($_POST['orderNr']) || !is_int($_POST['orderNr']*1) || $_POST['orderNr']<0) // $_POST['orderNr']*1 om er een getal van te maken (en dus geen string) $page->addContent($page->createWhiteBlock('<div class="error">Het nummer van de opdracht moet een geheel getal, groter dan of gelijk aan 0 zijn!</div>').'<br />'); else { $chapter = explode('.', $_POST['chapter']); if($_POST['orderNr'] == 0) { $client = new assignmentsClient(); $assignments = $client->getAssignmentsByChapter($chapter[0]); while(++$_POST['orderNr']) { $found = true; foreach($assignments as $assignment) { if($_POST['orderNr'] == $assignment->orderNr) { $found = false; break; } } if($found) break; } } $assignment = new assignment(0, $_POST['assignment'], new answer($_POST['answer-text'], $_POST['answer-js'], $_POST['answer-html'], $_POST['answer-code-place']), $chapter[0], $chapter[1], $_POST['example'], $_POST['view-answer'], 0, $_POST['display'], $_POST['orderNr']); if(!($showForm = !$assignment->save())) $page->addContent('De nieuwe opdracht is succesvol opgeslagen!'); else $page->addContent($page->createWhiteBlock('<div class="error">Er ging iets fout bij het opslaan van de opdracht!<br />Mysql error: <i>'.mysql_error().'</i></div>').'<br />'); } } if($showForm) { // Default values: $assignment = isset($_POST['assignment']) ? htmlentities($_POST['assignment']) : null; $answerText = isset($_POST['answer-text']) ? htmlentities($_POST['answer-text']) : null; $answerJs = isset($_POST['answer-js']) ? htmlentities($_POST['answer-js']) : null; $answerHtml = isset($_POST['answer-html']) ? htmlentities($_POST['answer-html']) : null; $answerCodePlace = isset($_POST['answer-code-place']) ? htmlentities($_POST['answer-code-place']) : codePlace_body; $chapter = isset($_POST['chapter']) ? htmlentities($_POST['chapter']) : null; $example = isset($_POST['example']) ? htmlentities($_POST['example']) : null; $viewAnswer = isset($_POST['view-answer']) ? htmlentities($_POST['view-answer']) : null; $orderNr = isset($_POST['orderNr']) ? htmlentities($_POST['orderNr']) : 0; $display = isset($_POST['display']) ? htmlentities($_POST['display']) : true; // Prepareer de selectie-lijst voor het hoofdstuk $chapterChooser = '<select name="chapter">'; for($i = 1; $i < count($GLOBALS['chapter_titles']); ++$i) for($j = 0; $j < count($GLOBALS['chapter_titles'][$i]); ++$j) { if("$i.$j" == $chapter) $chapterChooser .= "<option value=\"$i.$j\" selected=\"selected\">H$i.$j</option>"; else $chapterChooser .= "<option value=\"$i.$j\">H$i.$j</option>"; } $chapterChooser .= '</select>'; // Genereer de inhoud van de pagina $page->addContent('<form action="admin.php?page=new_assignment" method="post">'); $page->addContent($page->createWhiteBlock( '<h3>Opdracht:</h3><p>'. 'Geef hier de opdracht op, u kunt gebruik maken van HTML om eventuele opmaak toe te voegen. Dit betekent dus ook dat HTML-tekens (zoals &lt;) op de HTML manier moeten worden geschreven (dus: &amp;lt;).</p>'. "<textarea name=\"assignment\">$assignment</textarea>").'<br />'); $page->addContent($page->createWhiteBlock( '<h3>Antwoord:</h3><p>'. 'Geef hier het antwoord op de opdracht op. Let op! Dit is een omschrijving (wederom in HTML), de code die eventueel voor de opdracht geschreven moet worden komt pas later.</p>'. "<textarea name=\"answer-text\">$answerText</textarea>").'<br />'); $page->addContent($page->createWhiteBlock( '<h3>JavaScript code:</h3><p>'. 'Geef hier de JavaScript code op, indien het nodig was een stukje code te schrijven voor de opdracht. Dit is dus alleen de JavaScript, de <i>script-tags</i> zijn dus niet nodig! De site zal deze er automatisch omheen plaatsen wanneer mensen de code willen bekijken. Laat leeg indien het niet nodig was JavaScript te schrijven voor de opdracht.</p>'. "<textarea name=\"answer-js\">$answerJs</textarea>").'<br />'); $page->addContent($page->createWhiteBlock( '<h3>HTML code:</h3><p>'. 'Geef hier de HTML code op, indien het nodig was een stukje code te schrijven voor de opdracht. U heeft hier 4 opties:'. '<ol>'. '<li>Alleen de HTML schrijven die in de <i>body</i>-tag moet komen (de site zorgt automatisch voor de rest wanneer de code bekeken wordt)</li>'. '<li>Alleen de HTML schrijven die in de <i>head</i>-tag moet komen (de site zorgt automatisch voor de rest wanneer de code bekeken wordt)</li>'. '<li>Het gehele HTML-document schrijven, als u hierboven ook JavaScript-code heeft opgegeven zal deze automatisch in de <i>head</i>-tag worden ingevoegd bij het bekijken van de code</li>'. '<li>Helemaal geen code opgeven, indien het niet nodig was HTML te schrijven voor de opdracht.</li>'. '</ol>'. 'Waar moet de HTML-code: '. '<select name="answer-code-place">'. '<option value="'.codePlace_body.'"'.($answerCodePlace == codePlace_body ? ' selected="selected"' : null).'>In de body</option>'. '<option value="'.codePlace_head.'"'.($answerCodePlace == codePlace_head ? ' selected="selected"' : null).'>In de head</option>'. '<option value="'.codePlace_wholeDocument.'"'.($answerCodePlace == codePlace_wholeDocument ? ' selected="selected"' : null).'>Geheel document</option>'. '</select>'. '</p>'. "<textarea name=\"answer-html\">$answerHtml</textarea>").'<br />'); $page->addContent($page->createWhiteBlock( '<h3>Voorbeeld:</h3><p>'. 'U kunt een voorbeeld-pagina maken waar de bezoeker kan zien wat de bedoeling is van de uitkomst van de opdracht. Bedenk hierbij wel dat de bezoeker de broncode kan bekijken. Laat leeg indien u geen voorbeeld-pagina wilt maken.</p>'. "<textarea name=\"example\">$example</textarea>").'<br />'); $page->addContent($page->createWhiteBlock( '<h3>Overig:</h3><p>'. "Deze opdracht hoort bij $chapterChooser, en is opdracht nummer: <input type=\"text\" style=\"width:50px\" name=\"orderNr\" value=\"$orderNr\" /> <small>(vul 0 in voor een automatisch keuze)</small><br />". 'Merk op dat dubbele nummers toe zijn gestaan (bijvoorbeeld twee keer een opdracht 3), omdat dit het makkelijker maakt de volgorde van de opdrachten te veranderen. Hou dus goed in de gaten of er na het sorteren geen dubbele opdrachtnummers zijn!<br /><br />'. 'Het antwoord op deze opdracht moet '. '<select name="view-answer">'. '<option value="0"'.($viewAnswer == 0 ? ' selected="selected"' : null).'>niet</option>'. '<option value="1"'.($viewAnswer == 1 ? ' selected="selected"' : null).'>wel</option>'. '</select>'. ' weergegeven worden.<br /><br />'. 'Deze opdracht voor bezoekers '. '<select name="display">'. '<option value="1"'.($display == 1 ? ' selected="selected"' : null).'>weergeven</option>'. '<option value="0"'.($display == 0 ? ' selected="selected"' : null).'>verbergen</option>'. '</select></p>'. '<input type="submit" value="Opslaan" />')); $page->addContent('</form>'); } $page->printAll(); ?>

Resultaat

Made by Thijs Aarnoudse