1) update Quest stati
2) add SubmissionNotValidException and -handling for Quests
This commit is contained in:
parent
5bdddf5eaf
commit
f3fca171e2
11 changed files with 268 additions and 108 deletions
|
|
@ -59,12 +59,13 @@
|
||||||
*
|
*
|
||||||
* Show the task of a Quest.
|
* Show the task of a Quest.
|
||||||
*
|
*
|
||||||
* @param array $seminary Current Seminary data
|
* @param array $seminary Current Seminary data
|
||||||
* @param array $questgroup Current Questgroup data
|
* @param array $questgroup Current Questgroup data
|
||||||
* @param array $quest Current Quest data
|
* @param array $quest Current Quest data
|
||||||
* @param array $character Current Character data
|
* @param array $character Current Character data
|
||||||
|
* @param Exception $exception Character submission exception
|
||||||
*/
|
*/
|
||||||
public abstract function quest($seminary, $questgroup, $quest, $character);
|
public abstract function quest($seminary, $questgroup, $quest, $character, $exception);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
77
app/exceptions/SubmissionNotValidException.inc
Normal file
77
app/exceptions/SubmissionNotValidException.inc
Normal file
|
|
@ -0,0 +1,77 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Legend of Z
|
||||||
|
*
|
||||||
|
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||||
|
* @copyright 2014 Heinrich-Heine-Universität Düsseldorf
|
||||||
|
* @license http://www.gnu.org/licenses/gpl.html
|
||||||
|
* @link https://bitbucket.org/coderkun/the-legend-of-z
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace hhu\z\exceptions;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Exception: Character submission not valid.
|
||||||
|
*
|
||||||
|
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||||
|
*/
|
||||||
|
class SubmissionNotValidException extends \nre\core\Exception
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Error code
|
||||||
|
*
|
||||||
|
* @var int
|
||||||
|
*/
|
||||||
|
const CODE = 200;
|
||||||
|
/**
|
||||||
|
* Error message
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
const MESSAGE = 'Character submission not valid';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Nested exception
|
||||||
|
*
|
||||||
|
* @var Exception
|
||||||
|
*/
|
||||||
|
private $nestedException;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Construct a new exception.
|
||||||
|
*
|
||||||
|
* @param string $nestedException Nested exception
|
||||||
|
*/
|
||||||
|
function __construct($nestedException, $message=self::MESSAGE, $code=self::CODE)
|
||||||
|
{
|
||||||
|
parent::__construct(
|
||||||
|
$message,
|
||||||
|
$code,
|
||||||
|
$nestedException
|
||||||
|
);
|
||||||
|
|
||||||
|
// Store value
|
||||||
|
$this->nestedException = $nestedException;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get Nested exception.
|
||||||
|
*
|
||||||
|
* @return string Nested exception
|
||||||
|
*/
|
||||||
|
public function getNestedException()
|
||||||
|
{
|
||||||
|
return $this->nestedException;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
||||||
|
|
@ -277,17 +277,14 @@
|
||||||
$questmedia = $this->Media->getMediaById($quest['questsmedia_id']);
|
$questmedia = $this->Media->getMediaById($quest['questsmedia_id']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Get submitted Character submissions
|
||||||
|
$submittedSubmissionCharacters = $this->Characters->getCharactersSubmittedQuest($quest['id']);
|
||||||
|
|
||||||
// Get unsolved Character submissions
|
// Get unsolved Character submissions
|
||||||
$unsolvedSubmissions = $this->Quests->getCharactersUnsolvedQuest($quest['id']);
|
$unsolvedSubmissionCharacters = $this->Characters->getCharactersUnsolvedQuest($quest['id']);
|
||||||
foreach($unsolvedSubmissions as &$submission) {
|
|
||||||
$submission['character'] = $this->Characters->getCharacterById($submission['character_id']);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get solved Character submissions
|
// Get solved Character submissions
|
||||||
$solvedSubmissions = $this->Quests->getCharactersSolvedQuest($quest['id']);
|
$solvedSubmissionCharacters = $this->Characters->getCharactersSolvedQuest($quest['id']);
|
||||||
foreach($solvedSubmissions as &$submission) {
|
|
||||||
$submission['character'] = $this->Characters->getCharacterById($submission['character_id']);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Pass data to view
|
// Pass data to view
|
||||||
|
|
@ -295,8 +292,9 @@
|
||||||
$this->set('questgroup', $questgroup);
|
$this->set('questgroup', $questgroup);
|
||||||
$this->set('quest', $quest);
|
$this->set('quest', $quest);
|
||||||
$this->set('media', $questmedia);
|
$this->set('media', $questmedia);
|
||||||
$this->set('unsolvedsubmissions', $unsolvedSubmissions);
|
$this->set('submittedSubmissionCharacters', $submittedSubmissionCharacters);
|
||||||
$this->set('solvedsubmissions', $solvedSubmissions);
|
$this->set('unsolvedSubmissionCharacters', $unsolvedSubmissionCharacters);
|
||||||
|
$this->set('solvedSubmissionCharacters', $solvedSubmissionCharacters);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -380,27 +378,39 @@
|
||||||
$answers = $this->request->getPostParam('answers');
|
$answers = $this->request->getPostParam('answers');
|
||||||
|
|
||||||
// Save answers in database
|
// Save answers in database
|
||||||
if(!$this->Quests->hasCharacterSolvedQuest($quest['id'], $character['id'])) {
|
try {
|
||||||
$questtypeAgent->saveAnswersOfCharacter($seminary, $questgroup, $quest, $character, $answers);
|
if(!$this->Quests->hasCharacterSolvedQuest($quest['id'], $character['id'])) {
|
||||||
}
|
$questtypeAgent->saveAnswersOfCharacter($seminary, $questgroup, $quest, $character, $answers);
|
||||||
|
}
|
||||||
|
|
||||||
// Match answers with correct ones
|
// Match answers with correct ones
|
||||||
$status = $questtypeAgent->matchAnswersofCharacter($seminary, $questgroup, $quest, $character, $answers);
|
$status = $questtypeAgent->matchAnswersofCharacter($seminary, $questgroup, $quest, $character, $answers);
|
||||||
if($status === true)
|
if($status === true)
|
||||||
{
|
{
|
||||||
// Mark Quest as solved
|
// Mark Quest as solved
|
||||||
$this->Quests->setQuestSolved($quest['id'], $character['id']);
|
$this->Quests->setQuestSolved($quest['id'], $character['id']);
|
||||||
|
|
||||||
// Redirect
|
// Redirect
|
||||||
$this->redirect($this->linker->link('Epilog', 5, true, array('status'=>'solved')));
|
$this->redirect($this->linker->link('Epilog', 5, true, array('status'=>'solved')));
|
||||||
|
}
|
||||||
|
elseif($status === false)
|
||||||
|
{
|
||||||
|
// Mark Quest as unsolved
|
||||||
|
$this->Quests->setQuestUnsolved($quest['id'], $character['id']);
|
||||||
|
|
||||||
|
// Redirect
|
||||||
|
$this->redirect($this->linker->link('Prolog', 5, true, array('status'=>'unsolved')));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// Mark Quest as submitted
|
||||||
|
$this->Quests->setQuestSubmitted($quest['id'], $character['id']);
|
||||||
|
|
||||||
|
// Redirect
|
||||||
|
$this->redirect($this->linker->link('Prolog', 5, true));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
elseif($status === false)
|
catch(\hhu\z\exceptions\SubmissionNotValidException $e) {
|
||||||
{
|
$response->addParam($e);
|
||||||
// Mark Quest as unsolved
|
|
||||||
$this->Quests->setQuestUnsolved($quest['id'], $character['id']);
|
|
||||||
|
|
||||||
// Redirect
|
|
||||||
$this->redirect($this->linker->link('Prolog', 5, true, array('status'=>'unsolved')));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -254,6 +254,88 @@
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get Characters that solved a Quest.
|
||||||
|
*
|
||||||
|
* @param int $questId ID of Quest to get Characters for
|
||||||
|
* @return array Characters data
|
||||||
|
*/
|
||||||
|
public function getCharactersSolvedQuest($questId)
|
||||||
|
{
|
||||||
|
return $data = $this->db->query(
|
||||||
|
'SELECT characters.id, characters.created, characters.charactertype_id, characters.name, characters.url, characters.user_id, characters.xps, characters.xplevel, charactertypes.name AS charactertype_name, charactertypes.url AS charactertypes_url, media.url AS avatar_url, media.description AS avatar_description '.
|
||||||
|
'FROM v_characters AS characters '.
|
||||||
|
'LEFT JOIN charactertypes ON charactertypes.id = characters.charactertype_id '.
|
||||||
|
'LEFT JOIN avatars ON avatars.id = characters.avatar_id '.
|
||||||
|
'LEFT JOIN avatarpictures ON avatarpictures.media_id = avatars.avatarpicture_id '.
|
||||||
|
'LEFT JOIN media ON media.id = avatarpictures.media_id '.
|
||||||
|
'WHERE EXISTS ('.
|
||||||
|
'SELECT character_id FROM quests_characters WHERE character_id = characters.id AND quest_id = ? AND status = ?'.
|
||||||
|
')',
|
||||||
|
'ii',
|
||||||
|
$questId,
|
||||||
|
QuestsModel::QUEST_STATUS_SOLVED
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get Characters that did not solv a Quest.
|
||||||
|
*
|
||||||
|
* @param int $questId ID of Quest to get Characters for
|
||||||
|
* @return array Characters data
|
||||||
|
*/
|
||||||
|
public function getCharactersUnsolvedQuest($questId)
|
||||||
|
{
|
||||||
|
return $data = $this->db->query(
|
||||||
|
'SELECT characters.id, characters.created, characters.charactertype_id, characters.name, characters.url, characters.user_id, characters.xps, characters.xplevel, charactertypes.name AS charactertype_name, charactertypes.url AS charactertypes_url, media.url AS avatar_url, media.description AS avatar_description '.
|
||||||
|
'FROM v_characters AS characters '.
|
||||||
|
'LEFT JOIN charactertypes ON charactertypes.id = characters.charactertype_id '.
|
||||||
|
'LEFT JOIN avatars ON avatars.id = characters.avatar_id '.
|
||||||
|
'LEFT JOIN avatarpictures ON avatarpictures.media_id = avatars.avatarpicture_id '.
|
||||||
|
'LEFT JOIN media ON media.id = avatarpictures.media_id '.
|
||||||
|
'WHERE EXISTS ('.
|
||||||
|
'SELECT character_id FROM quests_characters WHERE character_id = characters.id AND quest_id = ? AND status = ?'.
|
||||||
|
') AND NOT EXISTS ('.
|
||||||
|
'SELECT character_id FROM quests_characters WHERE character_id = characters.id AND quest_id = ? AND status = ?'.
|
||||||
|
')',
|
||||||
|
'iiii',
|
||||||
|
$questId, QuestsModel::QUEST_STATUS_UNSOLVED,
|
||||||
|
$questId, QuestsModel::QUEST_STATUS_SOLVED
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get Characters that sent a submission for a Quest.
|
||||||
|
*
|
||||||
|
* @param int $questId ID of Quest to get Characters for
|
||||||
|
* @return array Characters data
|
||||||
|
*/
|
||||||
|
public function getCharactersSubmittedQuest($questId)
|
||||||
|
{
|
||||||
|
return $data = $this->db->query(
|
||||||
|
'SELECT characters.id, characters.created, characters.charactertype_id, characters.name, characters.url, characters.user_id, characters.xps, characters.xplevel, charactertypes.name AS charactertype_name, charactertypes.url AS charactertypes_url, media.url AS avatar_url, media.description AS avatar_description '.
|
||||||
|
'FROM v_characters AS characters '.
|
||||||
|
'LEFT JOIN charactertypes ON charactertypes.id = characters.charactertype_id '.
|
||||||
|
'LEFT JOIN avatars ON avatars.id = characters.avatar_id '.
|
||||||
|
'LEFT JOIN avatarpictures ON avatarpictures.media_id = avatars.avatarpicture_id '.
|
||||||
|
'LEFT JOIN media ON media.id = avatarpictures.media_id '.
|
||||||
|
'WHERE EXISTS ('.
|
||||||
|
'SELECT character_id FROM quests_characters WHERE character_id = characters.id AND quest_id = ? AND status = ?'.
|
||||||
|
') AND NOT EXISTS ('.
|
||||||
|
'SELECT character_id FROM quests_characters WHERE character_id = characters.id AND quest_id = ? AND status = ?'.
|
||||||
|
') AND NOT EXISTS ('.
|
||||||
|
'SELECT character_id FROM quests_characters WHERE character_id = characters.id AND quest_id = ? AND status = ?'.
|
||||||
|
')',
|
||||||
|
'iiiiii',
|
||||||
|
$questId, QuestsModel::QUEST_STATUS_SUBMITTED,
|
||||||
|
$questId, QuestsModel::QUEST_STATUS_UNSOLVED,
|
||||||
|
$questId, QuestsModel::QUEST_STATUS_SOLVED
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -24,19 +24,25 @@
|
||||||
*
|
*
|
||||||
* @var int;
|
* @var int;
|
||||||
*/
|
*/
|
||||||
const QUEST_STATUS_ENTERED = 1;
|
const QUEST_STATUS_ENTERED = 0;
|
||||||
/**
|
/**
|
||||||
* Quest-status: Solved
|
* Quest-status: submitted
|
||||||
*
|
*
|
||||||
* @var int;
|
* @var int;
|
||||||
*/
|
*/
|
||||||
const QUEST_STATUS_SOLVED = 0;
|
const QUEST_STATUS_SUBMITTED = 1;
|
||||||
/**
|
/**
|
||||||
* Quest-status: Unsolved
|
* Quest-status: Unsolved
|
||||||
*
|
*
|
||||||
* @var int;
|
* @var int;
|
||||||
*/
|
*/
|
||||||
const QUEST_STATUS_UNSOLVED = -1;
|
const QUEST_STATUS_UNSOLVED = 2;
|
||||||
|
/**
|
||||||
|
* Quest-status: Solved
|
||||||
|
*
|
||||||
|
* @var int;
|
||||||
|
*/
|
||||||
|
const QUEST_STATUS_SOLVED = 3;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -184,14 +190,14 @@
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Mark a Quest as solved for a Character.
|
* Mark a Quest as submitted for a Character.
|
||||||
*
|
*
|
||||||
* @param int $questId ID of Quest to mark as solved
|
* @param int $questId ID of Quest to mark as unsolved
|
||||||
* @param int $characterId ID of Character that solved the Quest
|
* @param int $characterId ID of Character that unsolved the Quest
|
||||||
*/
|
*/
|
||||||
public function setQuestSolved($questId, $characterId)
|
public function setQuestSubmitted($questId, $characterId)
|
||||||
{
|
{
|
||||||
$this->setQuestStatus($questId, $characterId, static::QUEST_STATUS_SOLVED);
|
$this->setQuestStatus($questId, $characterId, static::QUEST_STATUS_SUBMITTED);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -207,6 +213,18 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Mark a Quest as solved for a Character.
|
||||||
|
*
|
||||||
|
* @param int $questId ID of Quest to mark as solved
|
||||||
|
* @param int $characterId ID of Character that solved the Quest
|
||||||
|
*/
|
||||||
|
public function setQuestSolved($questId, $characterId)
|
||||||
|
{
|
||||||
|
$this->setQuestStatus($questId, $characterId, static::QUEST_STATUS_SOLVED, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Determine if the given Character has entered a Quest.
|
* Determine if the given Character has entered a Quest.
|
||||||
*
|
*
|
||||||
|
|
@ -279,48 +297,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get Characters that solved a Quest.
|
|
||||||
*
|
|
||||||
* @param int $questId ID of Quest to get Characters for
|
|
||||||
* @return array Characters data
|
|
||||||
*/
|
|
||||||
public function getCharactersSolvedQuest($questId)
|
|
||||||
{
|
|
||||||
return $data = $this->db->query(
|
|
||||||
'SELECT character_id, created, text '.
|
|
||||||
'FROM questtypes_submit_characters '.
|
|
||||||
'WHERE quest_id = ? AND EXISTS ('.
|
|
||||||
'SELECT character_id FROM quests_characters WHERE quest_id = questtypes_submit_characters.quest_id AND status = ?'.
|
|
||||||
')',
|
|
||||||
'ii',
|
|
||||||
$questId,
|
|
||||||
static::QUEST_STATUS_SOLVED
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get Characters that did not solved a Quest.
|
|
||||||
*
|
|
||||||
* @param int $questId ID of Quest to get Characters for
|
|
||||||
* @return array Characters data
|
|
||||||
*/
|
|
||||||
public function getCharactersUnsolvedQuest($questId)
|
|
||||||
{
|
|
||||||
return $data = $this->db->query(
|
|
||||||
'SELECT character_id, created, text '.
|
|
||||||
'FROM questtypes_submit_characters '.
|
|
||||||
'WHERE quest_id = ? AND NOT EXISTS ('.
|
|
||||||
'SELECT character_id FROM quests_characters WHERE quest_id = questtypes_submit_characters.quest_id AND status = ?'.
|
|
||||||
')',
|
|
||||||
'ii',
|
|
||||||
$questId,
|
|
||||||
static::QUEST_STATUS_SOLVED
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -102,12 +102,13 @@
|
||||||
* Display a text with input fields and evaluate if user input
|
* Display a text with input fields and evaluate if user input
|
||||||
* matches with stored regular expressions.
|
* matches with stored regular expressions.
|
||||||
*
|
*
|
||||||
* @param array $seminary Current Seminary data
|
* @param array $seminary Current Seminary data
|
||||||
* @param array $questgroup Current Questgroup data
|
* @param array $questgroup Current Questgroup data
|
||||||
* @param array $quest Current Quest data
|
* @param array $quest Current Quest data
|
||||||
* @param array $character Current Character data
|
* @param array $character Current Character data
|
||||||
|
* @param Exception $exception Character submission exception
|
||||||
*/
|
*/
|
||||||
public function quest($seminary, $questgroup, $quest, $character)
|
public function quest($seminary, $questgroup, $quest, $character, $exception)
|
||||||
{
|
{
|
||||||
// Get Drag&Drop field
|
// Get Drag&Drop field
|
||||||
$dndField = $this->Dragndrop->getDragndrop($quest['id']);
|
$dndField = $this->Dragndrop->getDragndrop($quest['id']);
|
||||||
|
|
|
||||||
|
|
@ -61,12 +61,13 @@
|
||||||
*
|
*
|
||||||
* Show the task of a Quest.
|
* Show the task of a Quest.
|
||||||
*
|
*
|
||||||
* @param array $seminary Current Seminary data
|
* @param array $seminary Current Seminary data
|
||||||
* @param array $questgroup Current Questgroup data
|
* @param array $questgroup Current Questgroup data
|
||||||
* @param array $quest Current Quest data
|
* @param array $quest Current Quest data
|
||||||
* @param array $character Current Character data
|
* @param array $character Current Character data
|
||||||
|
* @param Exception $exception Character submission exception
|
||||||
*/
|
*/
|
||||||
public function quest($seminary, $questgroup, $quest, $character)
|
public function quest($seminary, $questgroup, $quest, $character, $exception)
|
||||||
{
|
{
|
||||||
// Nothing to do
|
// Nothing to do
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -112,12 +112,13 @@
|
||||||
* Display questions with a checkbox to let the user choose the
|
* Display questions with a checkbox to let the user choose the
|
||||||
* right ones.
|
* right ones.
|
||||||
*
|
*
|
||||||
* @param array $seminary Current Seminary data
|
* @param array $seminary Current Seminary data
|
||||||
* @param array $questgroup Current Questgroup data
|
* @param array $questgroup Current Questgroup data
|
||||||
* @param array $quest Current Quest data
|
* @param array $quest Current Quest data
|
||||||
* @param array $character Current Character data
|
* @param array $character Current Character data
|
||||||
|
* @param Exception $exception Character submission exception
|
||||||
*/
|
*/
|
||||||
public function quest($seminary, $questgroup, $quest, $character)
|
public function quest($seminary, $questgroup, $quest, $character, $exception)
|
||||||
{
|
{
|
||||||
// Get count of questions
|
// Get count of questions
|
||||||
$count = $this->Multiplechoice->getQuestionsCountOfQuest($quest['id']);
|
$count = $this->Multiplechoice->getQuestionsCountOfQuest($quest['id']);
|
||||||
|
|
|
||||||
|
|
@ -90,12 +90,13 @@
|
||||||
* Display a text with input fields and evaluate if user input
|
* Display a text with input fields and evaluate if user input
|
||||||
* matches with stored regular expressions.
|
* matches with stored regular expressions.
|
||||||
*
|
*
|
||||||
* @param array $seminary Current Seminary data
|
* @param array $seminary Current Seminary data
|
||||||
* @param array $questgroup Current Questgroup data
|
* @param array $questgroup Current Questgroup data
|
||||||
* @param array $quest Current Quest data
|
* @param array $quest Current Quest data
|
||||||
* @param array $character Current Character data
|
* @param array $character Current Character data
|
||||||
|
* @param Exception $exception Character submission exception
|
||||||
*/
|
*/
|
||||||
public function quest($seminary, $questgroup, $quest, $character)
|
public function quest($seminary, $questgroup, $quest, $character, $exception)
|
||||||
{
|
{
|
||||||
// Get Task
|
// Get Task
|
||||||
$task = $this->Textinput->getTextinputQuest($quest['id']);
|
$task = $this->Textinput->getTextinputQuest($quest['id']);
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@
|
||||||
<?php endif ?>
|
<?php endif ?>
|
||||||
<h1><a href="<?=$linker->link(array('seminaries',$seminary['url']))?>"><?=$seminary['title']?></a></h1>
|
<h1><a href="<?=$linker->link(array('seminaries',$seminary['url']))?>"><?=$seminary['title']?></a></h1>
|
||||||
<?=$questgroupshierarchypath?>
|
<?=$questgroupshierarchypath?>
|
||||||
|
<h2><?=$quest['title']?></h2>
|
||||||
|
|
||||||
<?php if(!is_null($media)) : ?>
|
<?php if(!is_null($media)) : ?>
|
||||||
<img src="<?=$linker->link(array('media','index',$seminary['url'],$media['url']))?>" />
|
<img src="<?=$linker->link(array('media','index',$seminary['url'],$media['url']))?>" />
|
||||||
|
|
|
||||||
|
|
@ -12,20 +12,29 @@
|
||||||
<?php endif ?>
|
<?php endif ?>
|
||||||
|
|
||||||
<section>
|
<section>
|
||||||
|
<h1><?=_('submitted')?></h1>
|
||||||
|
<ul>
|
||||||
|
<?php foreach($submittedSubmissionCharacters as &$character) : ?>
|
||||||
|
<li>
|
||||||
|
<a href="<?=$linker->link(array('submission',$seminary['url'],$questgroup['url'],$quest['url'],$character['url']),1)?>"><?=$character['name']?></a>
|
||||||
|
</li>
|
||||||
|
<?php endforeach?>
|
||||||
|
</ul>
|
||||||
|
|
||||||
<h1><?=_('unsolved')?></h1>
|
<h1><?=_('unsolved')?></h1>
|
||||||
<ul>
|
<ul>
|
||||||
<?php foreach($unsolvedsubmissions as &$submission) : ?>
|
<?php foreach($unsolvedSubmissionCharacters as &$character) : ?>
|
||||||
<li>
|
<li>
|
||||||
<a href="<?=$linker->link(array('submission',$seminary['url'],$questgroup['url'],$quest['url'],$submission['character']['url']),1)?>"><?=$submission['character']['name']?></a>
|
<a href="<?=$linker->link(array('submission',$seminary['url'],$questgroup['url'],$quest['url'],$character['url']),1)?>"><?=$character['name']?></a>
|
||||||
</li>
|
</li>
|
||||||
<?php endforeach?>
|
<?php endforeach?>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<h1><?=_('solved')?></h1>
|
<h1><?=_('solved')?></h1>
|
||||||
<ul>
|
<ul>
|
||||||
<?php foreach($solvedsubmissions as &$submission) : ?>
|
<?php foreach($solvedSubmissionCharacters as &$character) : ?>
|
||||||
<li>
|
<li>
|
||||||
<a href="<?=$linker->link(array('submission',$seminary['url'],$questgroup['url'],$quest['url'],$submission['character']['url']),1)?>"><?=$submission['character']['name']?></a>
|
<a href="<?=$linker->link(array('submission',$seminary['url'],$questgroup['url'],$quest['url'],$character['url']),1)?>"><?=$character['name']?></a>
|
||||||
</li>
|
</li>
|
||||||
<?php endforeach?>
|
<?php endforeach?>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue