From 2bab62026e38fe2679852345333f40bbb14209a8 Mon Sep 17 00:00:00 2001
From: oliver
Date: Wed, 8 Apr 2015 16:24:01 +0200
Subject: [PATCH] Questtype ?textinput?: show count of correctly filled fields
(implements #3)
---
locale/de_DE/LC_MESSAGES/The Legend of Z.mo | Bin 25317 -> 25440 bytes
locale/de_DE/LC_MESSAGES/The Legend of Z.po | 11 ++++++++---
.../TextinputQuesttypeController.inc | 10 ++++++++--
questtypes/textinput/html/quest.tpl | 1 +
4 files changed, 17 insertions(+), 5 deletions(-)
diff --git a/locale/de_DE/LC_MESSAGES/The Legend of Z.mo b/locale/de_DE/LC_MESSAGES/The Legend of Z.mo
index 2e43403896dfbb5f1a0f23dd385172632a909cfa..b1540fbfafaac2b326d78c188667b81f997b2c64 100644
GIT binary patch
delta 8299
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
zhlP=Wp_~!YsQuests->hasCharacterSolvedQuest($quest['id'], $character['id']);
// Get Character answers
- if(!$solved || $this->request->getGetParam('show-answer') == 'true' || $this->request->getGetParam('status') == 'solved') {
- foreach($fields as &$field) {
+ $correctAnswersCount = null;
+ if(!$solved || $this->request->getGetParam('show-answer') == 'true' || $this->request->getGetParam('status') == 'solved')
+ {
+ $correctAnswersCount = 0;
+ foreach($fields as &$field)
+ {
$field['answer'] = $this->Textinput->getCharacterSubmission($field['id'], $character['id']);
+ $correctAnswersCount += $this->isMatching($field['regex'], $field['answer']);
}
}
@@ -134,6 +139,7 @@
// Pass data to view
$this->set('task', $task);
$this->set('fields', $fields);
+ $this->set('count', $correctAnswersCount);
}
diff --git a/questtypes/textinput/html/quest.tpl b/questtypes/textinput/html/quest.tpl
index 9aaf010b..0e786e56 100644
--- a/questtypes/textinput/html/quest.tpl
+++ b/questtypes/textinput/html/quest.tpl
@@ -9,5 +9,6 @@
=$t->t(mb_substr($task['text'], $posStart, mb_strlen($task['text'], 'UTF-8')-$posStart, 'UTF-8'))?>
+ =sprintf(_('You filled %d of %d fields correctly'), $count, count($fields))?>.