implement simple overview of Quests for a Seminary
This commit is contained in:
parent
fc6dcfcf6d
commit
3a1d55b73c
3 changed files with 135 additions and 3 deletions
|
|
@ -31,9 +31,10 @@
|
||||||
* @var array
|
* @var array
|
||||||
*/
|
*/
|
||||||
public $permissions = array(
|
public $permissions = array(
|
||||||
'quest' => array('admin', 'moderator', 'user'),
|
'index' => array('admin', 'moderator', 'user'),
|
||||||
'submissions' => array('admin', 'moderator'),
|
'quest' => array('admin', 'moderator', 'user'),
|
||||||
'submission' => array('admin', 'moderator')
|
'submissions' => array('admin', 'moderator', 'user'),
|
||||||
|
'submission' => array('admin', 'moderator', 'user')
|
||||||
);
|
);
|
||||||
/**
|
/**
|
||||||
* User seminary permissions
|
* User seminary permissions
|
||||||
|
|
@ -41,6 +42,7 @@
|
||||||
* @var array
|
* @var array
|
||||||
*/
|
*/
|
||||||
public $seminaryPermissions = array(
|
public $seminaryPermissions = array(
|
||||||
|
'index' => array('admin', 'moderator', 'user'),
|
||||||
'quest' => array('admin', 'moderator', 'user'),
|
'quest' => array('admin', 'moderator', 'user'),
|
||||||
'submissions' => array('admin', 'moderator'),
|
'submissions' => array('admin', 'moderator'),
|
||||||
'submission' => array('admin', 'moderator')
|
'submission' => array('admin', 'moderator')
|
||||||
|
|
@ -49,6 +51,68 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Action: index.
|
||||||
|
*
|
||||||
|
* List all Quests for a Seminary.
|
||||||
|
*
|
||||||
|
* @param string $seminaryUrl URL-Title of Seminary
|
||||||
|
*/
|
||||||
|
public function index($seminaryUrl)
|
||||||
|
{
|
||||||
|
// Get seminary
|
||||||
|
$seminary = $this->Seminaries->getSeminaryByUrl($seminaryUrl);
|
||||||
|
|
||||||
|
// Prepare filters
|
||||||
|
$filters = array(
|
||||||
|
'questgroups' => array(),
|
||||||
|
'questtypes' => array()
|
||||||
|
);
|
||||||
|
|
||||||
|
// Get selected filters
|
||||||
|
$selectedFilters = array(
|
||||||
|
'questgroup' => "0",
|
||||||
|
'questtype' => ""
|
||||||
|
);
|
||||||
|
if($this->request->getRequestMethod() == 'POST' && !is_null($this->request->getPostParam('filters'))) {
|
||||||
|
$selectedFilters = $this->request->getPostParam('filters');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get Quests
|
||||||
|
$quests = array();
|
||||||
|
foreach($this->Quests->getQuestsForSeminary($seminary['id']) as $quest)
|
||||||
|
{
|
||||||
|
// Get Questgroup
|
||||||
|
$quest['questgroup'] = $this->Questgroups->getQuestgroupById($quest['questgroup_id']);
|
||||||
|
if($selectedFilters['questgroup'] != "0" && $selectedFilters['questgroup'] != $quest['questgroup']['id']) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get Questtype
|
||||||
|
$quest['questtype'] = $this->Questtypes->getQuesttypeById($quest['questtype_id']);
|
||||||
|
if($selectedFilters['questtype'] != "" && $selectedFilters['questtype'] != $quest['questtype']['classname']) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add filter values
|
||||||
|
$filters['questgroups'][$quest['questgroup']['id']] = $quest['questgroup'];
|
||||||
|
$filters['questtypes'][$quest['questtype']['classname']] = $quest['questtype'];
|
||||||
|
|
||||||
|
// Add open submissions count
|
||||||
|
$quest['opensubmissionscount'] = count($this->Characters->getCharactersSubmittedQuest($quest['id']));
|
||||||
|
|
||||||
|
$quests[] = $quest;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Pass data to view
|
||||||
|
$this->set('seminary', $seminary);
|
||||||
|
$this->set('quests', $quests);
|
||||||
|
$this->set('filters', $filters);
|
||||||
|
$this->set('selectedFilters', $selectedFilters);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Action: quest.
|
* Action: quest.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -325,6 +325,25 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get all Quests for a Seminary.
|
||||||
|
*
|
||||||
|
* @param int $seminaryId ID of Seminary
|
||||||
|
* @return array Quests for this Seminary
|
||||||
|
*/
|
||||||
|
public function getQuestsForSeminary($seminaryId)
|
||||||
|
{
|
||||||
|
return $this->db->query(
|
||||||
|
'SELECT DISTINCT quests.id, quests.questgroup_id, quests.questtype_id, quests.title, quests.url, quests.xps, quests.task, quests.right_text, quests.wrong_text, quests.questsmedia_id '.
|
||||||
|
'FROM questgroups '.
|
||||||
|
'INNER JOIN quests ON quests.questgroup_id = questgroups.id '.
|
||||||
|
'WHERE questgroups.seminary_id = ?',
|
||||||
|
'i',
|
||||||
|
$seminaryId
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get all Quests that are linked to a Questtopic.
|
* Get all Quests that are linked to a Questtopic.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,49 @@
|
||||||
|
<?php if(!is_null($seminary['seminarymedia_id'])) : ?>
|
||||||
|
<div class="moodpic">
|
||||||
|
<img src="<?=$linker->link(array('media','seminaryheader',$seminary['url']))?>" />
|
||||||
|
</div>
|
||||||
|
<?php endif ?>
|
||||||
|
<h1><a href="<?=$linker->link(array('seminaries',$seminary['url']))?>"><?=$seminary['title']?></a></h1>
|
||||||
|
<h2><?=_('Quests')?></h2>
|
||||||
|
|
||||||
|
<form method="post">
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
<select name="filters[questgroup]">
|
||||||
|
<option value="0"><?=_('Questgroup')?></option>
|
||||||
|
<?php foreach($filters['questgroups'] as &$filter) : ?>
|
||||||
|
<option value="<?=$filter['id']?>" <?php if($filter['id'] == $selectedFilters['questgroup']) : ?>selected="selected"<?php endif ?>><?=$filter['title']?></option>
|
||||||
|
<?php endforeach ?>
|
||||||
|
</select>
|
||||||
|
</th>
|
||||||
|
<th><?=_('Questname')?></th>
|
||||||
|
<th>
|
||||||
|
<select name="filters[questtype]">
|
||||||
|
<option value=""><?=_('Questtype')?></option>
|
||||||
|
<?php foreach($filters['questtypes'] as &$filter) : ?>
|
||||||
|
<option value="<?=$filter['classname']?>" <?php if($filter['classname'] == $selectedFilters['questtype']) : ?>selected="selected"<?php endif ?>><?=$filter['title']?></option>
|
||||||
|
<?php endforeach ?>
|
||||||
|
</select>
|
||||||
|
</th>
|
||||||
|
<th>XPs</th>
|
||||||
|
<th><?=('Submissions')?></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<?php foreach($quests as &$quest) : ?>
|
||||||
|
<tr>
|
||||||
|
<td><a href="<?=$linker->link(array('questgroups','questgroup',$seminary['url'],$quest['questgroup']['url']))?>"><?=$quest['questgroup']['title']?></a></td>
|
||||||
|
<td><a href="<?=$linker->link(array('quests','quest',$seminary['url'],$quest['url']))?>"><?=$quest['title']?></a></td>
|
||||||
|
<td><?=$quest['questtype']['title']?></td>
|
||||||
|
<td><?=$quest['xps']?></td>
|
||||||
|
<td><?=$quest['opensubmissionscount']?></td>
|
||||||
|
</tr>
|
||||||
|
<?php endforeach ?>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<input type="submit" name="filter" value="<?=_('Apply filters')?>" />
|
||||||
|
<input type="submit" name="reset" value="<?=_('Reset filters')?>" />
|
||||||
|
</form>
|
||||||
Loading…
Add table
Add a link
Reference in a new issue