function game_cryptex_play($id, $game, $attempt, $cryptexrec, $crossm, $updateattempt = false, $onlyshow = false, $showsolution = false, $context) { global $DB; global $CFG; if ($game->toptext != '') { echo $game->toptext . '<br>'; } echo '<br>'; $cryptex = new CryptexDB(); $language = $attempt->language; $questions = $cryptex->loadcryptex($crossm, $mask, $corrects, $attempt->language); if ($language != $attempt->language) { if (!$DB->set_field('game_attempts', 'language', $attempt->language, array('id' => $attempt->id))) { print_error("game_cross_play: Can't set language"); } } if ($attempt->language != '') { $wordrtl = game_right_to_left($attempt->language); } else { $wordrtl = right_to_left(); } $reverseprint = $wordrtl != right_to_left(); if ($reverseprint) { $textdir = 'dir="' . ($wordrtl ? 'rtl' : 'ltr') . '"'; } else { $textdir = ''; } $len = textlib::strlen($mask); //count1 means there is a guested letter //count2 means there is a letter that not guessed $count1 = $count2 = 0; for ($i = 0; $i < $len; $i++) { $c = textlib::substr($mask, $i, 1); if ($c == '1') { $count1++; } else { if ($c == '2') { $count2++; } } } if ($count1 + $count2 == 0) { $gradeattempt = 0; } else { $gradeattempt = $count1 / ($count1 + $count2); } $finished = $count2 == 0; if ($finished === false && $game->param8 > 0) { $found = false; foreach ($questions as $q) { if ($q->tries < $game->param8) { $found = true; } } if ($found == false) { $finished = true; } //rich max tries } if ($updateattempt) { game_updateattempts($game, $attempt, $gradeattempt, $finished); } if ($onlyshow == false and $showsolution == false) { if ($finished) { game_cryptex_onfinished($id, $game, $attempt, $cryptexrec); } } ?> <style type="text/css"><!-- .answerboxstyle { background-color: #FFFAF0; border-color: #808080; border-style: solid; border-width: 1px; display: block; padding: .75em; width: 240pt; } --></style> <?php echo '<table border=0>'; echo '<tr><td>'; $cryptex->displaycryptex($crossm->cols, $crossm->rows, $cryptexrec->letters, $mask, $showsolution, $textdir); ?> </td> <td width=10%> </td> <td> <form method="get" action="<?php echo $CFG->wwwroot; ?> /mod/game/attempt.php"> <div id="answerbox" class="answerboxstyle" style="display:none;"> <div id="wordclue" name="wordclue" class="cluebox"> </div> <input id="action" name="action" type="hidden" value="cryptexcheck"> <input id="q" name="q" type="hidden" > <input id="id" name="id" value="<?php echo $id; ?> " type="hidden"> <div style="margin-top:1em;"><input id="answer" name="answer" type="text" size="24" style="font-weight: bold; text-transform:uppercase;" autocomplete="off"></div> <table border="0" cellspacing="0" cellpadding="0" width="100%" style="margin-top:1em;"><tr> <td align="right"> <button id="okbutton" type="submit" class="button" style="font-weight: bold;">OK</button> <button id="cancelbutton" type="button" class="button" onclick="DeselectCurrentWord();">Cancel</button> </td></tr></table> </form> </td> </tr> </table> <?php $grade = round(100 * $gradeattempt); echo '<br>' . get_string('grade', 'game') . ' ' . $grade . ' %'; echo "<br><br>"; $i = 0; $else = ''; $contextglossary = false; foreach ($questions as $key => $q) { //print_r( $q); $i++; if ($showsolution == false) { //When I want to show the solution a want to show the questions to. if (array_key_exists($q->id, $corrects)) { continue; } } $question = "{$i}. " . $q->questiontext; $question = game_filterquestion(str_replace('\\"', '"', $question), $q->questionid, $context->id, $game->course); $question2 = strip_tags($question); //ADDED BY DP (AUG 2009) - fixes " breaking the Answer button for this question if ($onlyshow == false and $showsolution == false) { if ($game->param8 == 0 || $game->param8 > $q->tries) { $question .= ' <input type="submit" value="' . get_string('answer') . '" onclick="OnCheck( ' . $q->id . ',\'' . $question2 . '\');" />'; } } echo $question; if ($showsolution) { echo " {$q->answertext}<B></b>"; } echo '<br>'; } if ($game->bottomtext != '') { echo '<br><br>' . $game->bottomtext; } ?> <script> function OnCheck( id, question) { document.getElementById("q").value = id; document.getElementById("wordclue").innerHTML = question; // Finally, show the answer box. document.getElementById("answerbox").style.display = "block"; try { document.getElementById("answer").focus(); document.getElementById("answer").select(); } catch (e) { } } </script> <?php }