diff --git a/controllers/LibraryController.inc b/controllers/LibraryController.inc index c88cb21c..bd782950 100644 --- a/controllers/LibraryController.inc +++ b/controllers/LibraryController.inc @@ -121,9 +121,6 @@ { if($this->Quests->hasCharacterEnteredQuest($quest['id'], $character['id']) || count(array_intersect(array('admin', 'moderator'), self::$character['characterroles'])) > 0) { - // Get Questgroup - $quest['questgroup'] = $this->Questgroups->getQuestgroupById($quest['questgroup_id']); - // Get Subtopics $quest['subtopics'] = $this->Questtopics->getQuestsubtopicsForQuest($quest['id']); @@ -167,27 +164,42 @@ // Set Questsubtopics for Quests if($this->request->getRequestMethod() == 'POST' && !is_null($this->request->getPostParam('questsubtopics'))) { - $quests = $this->Quests->getQuestsForQuesttopic($questtopic['id']); $selectedSubtopics = $this->request->getPostParam('questsubtopics'); + + // Set subtopics of Quests + $quests = $this->Quests->getQuestsForQuesttopic($questtopic['id']); foreach($quests as &$quest) { $subtopics = (array_key_exists($quest['id'], $selectedSubtopics)) ? $selectedSubtopics[$quest['id']] : array(); $this->Questtopics->setQuestsubtopicsForQuest($quest['id'], array_keys($subtopics)); } + + // Add Quest + $addQuestId = $this->request->getPostParam('addquest'); + if(!empty($addQuestId)) + { + $subtopics = (array_key_exists('addquest', $selectedSubtopics)) ? $selectedSubtopics['addquest'] : array(); + if(!empty($subtopics)) { + $this->Questtopics->setQuestsubtopicsForQuest($addQuestId, array_keys($subtopics)); + } + } + + // Redirect + $this->redirect($this->linker->link(array('topic', $seminary['url'], $questtopic['url']), 1)); } // Get Quests $quests = $this->Quests->getQuestsForQuesttopic($questtopic['id']); foreach($quests as &$quest) { - // Get Questgroup - $quest['questgroup'] = $this->Questgroups->getQuestgroupById($quest['questgroup_id']); - // Get Subtopics $quest['subtopics'] = $this->Questtopics->getQuestsubtopicsForQuest($quest['id']); $quest['subtopics'] = array_map(function($t) { return $t['id']; }, $quest['subtopics']); } + // Get all Quests + $allQuests = $this->Quests->getQuestsForSeminary($seminary['id']); + // Set title $this->addTitle($questtopic['title']); @@ -199,6 +211,7 @@ $this->set('questtopic', $questtopic); $this->set('questsubtopics', $questsubtopics); $this->set('quests', $quests); + $this->set('allQuests', $allQuests); } } diff --git a/models/QuestsModel.inc b/models/QuestsModel.inc index 92749c03..420a88e5 100644 --- a/models/QuestsModel.inc +++ b/models/QuestsModel.inc @@ -379,11 +379,13 @@ public function getQuestsForQuesttopic($questtopicId) { return $this->db->query( - 'SELECT DISTINCT quests.id, quests.questgroup_id, quests.questtype_id, quests.title, quests.url, quests.xps, quests.task, quests.wrong_text, quests.questsmedia_id '. + 'SELECT DISTINCT quests.id, quests.questgroup_id, quests.questtype_id, quests.title, quests.url, quests.xps, quests.task, quests.wrong_text, quests.questsmedia_id, questgroups.url AS questgroup_url '. 'FROM quests_questsubtopics '. 'INNER JOIN questsubtopics ON questsubtopics.id = quests_questsubtopics.questsubtopic_id '. 'INNER JOIN quests ON quests.id = quests_questsubtopics.quest_id '. - 'WHERE questsubtopics.questtopic_id = ?', + 'INNER JOIN questgroups ON questgroups.id = quests.questgroup_id '. + 'WHERE questsubtopics.questtopic_id = ? '. + 'ORDER BY quests.title ASC', 'i', $questtopicId ); diff --git a/views/html/library/managetopic.tpl b/views/html/library/managetopic.tpl index 6303e191..63c8a10d 100644 --- a/views/html/library/managetopic.tpl +++ b/views/html/library/managetopic.tpl @@ -6,7 +6,6 @@
+ +
+ + +