add title filter for Quest listing
This commit is contained in:
parent
e495738691
commit
0076e9b629
3 changed files with 17 additions and 9 deletions
|
|
@ -84,6 +84,7 @@
|
|||
// Set filters
|
||||
$selectedQuestgroup = null;
|
||||
$selectedQuesttype = null;
|
||||
$selectedTitle = null;
|
||||
$page = 1;
|
||||
if($this->request->getRequestMethod() == 'GET')
|
||||
{
|
||||
|
|
@ -91,6 +92,8 @@
|
|||
$selectedQuestgroup = !empty($selectedQuestgroup) ? $selectedQuestgroup : null;
|
||||
$selectedQuesttype = $this->request->getGetParam('questtype');
|
||||
$selectedQuesttype = !empty($selectedQuesttype) ? $selectedQuesttype : null;
|
||||
$selectedTitle = $this->request->getGetParam('title');
|
||||
$selectedTitle = !empty($selectedTitle) ? $selectedTitle : null;
|
||||
$page = $this->request->getGetParam('page');
|
||||
$page = !empty($page) ? intval($page) : 1;
|
||||
}
|
||||
|
|
@ -98,8 +101,8 @@
|
|||
// Get Quests
|
||||
$limit = ($all != 'all') ? \nre\configs\AppConfig::$misc['lists_limit'] : null;
|
||||
$offset = ($all != 'all') ? max((intval($page) - 1), 0) * $limit : 0;
|
||||
$questsCount = $this->Quests->getCountForQuestsForSeminaryByOpenSubmissions($seminary['id'], $selectedQuestgroup, $selectedQuesttype);
|
||||
$quests = $this->Quests->getQuestsForSeminaryByOpenSubmissions($seminary['id'], $selectedQuestgroup, $selectedQuesttype, $limit, $offset);
|
||||
$questsCount = $this->Quests->getCountForQuestsForSeminaryByOpenSubmissions($seminary['id'], $selectedQuestgroup, $selectedQuesttype, $selectedTitle);
|
||||
$quests = $this->Quests->getQuestsForSeminaryByOpenSubmissions($seminary['id'], $selectedQuestgroup, $selectedQuesttype, $selectedTitle, $limit, $offset);
|
||||
foreach($quests as &$quest)
|
||||
{
|
||||
// Get Questtype
|
||||
|
|
@ -121,6 +124,7 @@
|
|||
$this->set('questtypes', $questtypes);
|
||||
$this->set('selectedQuestgroup', $selectedQuestgroup);
|
||||
$this->set('selectedQuesttype', $selectedQuesttype);
|
||||
$this->set('selectedTitle', $selectedTitle);
|
||||
$this->set('quests', $quests);
|
||||
$this->set('questsCount', $questsCount);
|
||||
$this->set('all', $all);
|
||||
|
|
|
|||
|
|
@ -376,7 +376,7 @@
|
|||
* @param int $questtypeId ID of Questtype (optional)
|
||||
* @return int Count of Quests for this Seminary
|
||||
*/
|
||||
public function getCountForQuestsForSeminaryByOpenSubmissions($seminaryId, $questgroupId=null, $questtypeId=null)
|
||||
public function getCountForQuestsForSeminaryByOpenSubmissions($seminaryId, $questgroupId=null, $questtypeId=null, $title=null)
|
||||
{
|
||||
$data = $this->db->query(
|
||||
'SELECT count(DISTINCT quests.id) AS c '.
|
||||
|
|
@ -384,7 +384,8 @@
|
|||
'INNER JOIN quests ON quests.questgroup_id = questgroups.id '.
|
||||
'WHERE questgroups.seminary_id = ? '.
|
||||
(!empty($questgroupId) ? sprintf('AND questgroups.id = %d ', $questgroupId) : null).
|
||||
(!empty($questtypeId) ? sprintf('AND quests.questtype_id = %d ', $questtypeId) : null),
|
||||
(!empty($questtypeId) ? sprintf('AND quests.questtype_id = %d ', $questtypeId) : null).
|
||||
(!empty($title) ? sprintf('AND quests.title LIKE \'%%%s%%\' ', $title) : null),
|
||||
'i',
|
||||
$seminaryId
|
||||
);
|
||||
|
|
@ -408,7 +409,7 @@
|
|||
* @param int $offset Offset (optional)
|
||||
* @return array Quests for this Seminary
|
||||
*/
|
||||
public function getQuestsForSeminaryByOpenSubmissions($seminaryId, $questgroupId=null, $questtypeId=null, $limit=null, $offset=0)
|
||||
public function getQuestsForSeminaryByOpenSubmissions($seminaryId, $questgroupId=null, $questtypeId=null, $title=null, $limit=null, $offset=0)
|
||||
{
|
||||
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, questgroups.title AS questgroup_title, questgroups.url AS questgroup_url, ('.
|
||||
|
|
@ -425,6 +426,7 @@
|
|||
'WHERE questgroups.seminary_id = ? '.
|
||||
(!empty($questgroupId) ? sprintf('AND questgroups.id = %d ', $questgroupId) : null).
|
||||
(!empty($questtypeId) ? sprintf('AND quests.questtype_id = %d ', $questtypeId) : null).
|
||||
(!empty($title) ? sprintf('AND quests.title LIKE \'%%%s%%\' ', $title) : null).
|
||||
'ORDER BY opensubmissionscount DESC '.
|
||||
(!empty($limit) ? sprintf('LIMIT %d, %d', $offset, $limit) : null),
|
||||
'ii',
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
|
||||
<form method="get" class="logreg admnqf">
|
||||
<fieldset>
|
||||
<legend>Filter</legend>
|
||||
<legend><?=_('Filter')?></legend>
|
||||
<label for="questgroup"><?=_('Questgroup')?>:</label>
|
||||
<select id="questgroup" name="questgroup">
|
||||
<option value=""><?=_('all')?></option>
|
||||
|
|
@ -44,6 +44,8 @@
|
|||
</option>
|
||||
<?php endforeach ?>
|
||||
</select>
|
||||
<label for="title"><?=_('Title')?>:</label>
|
||||
<input type="text" id="title" name="title" placeholder="<?=_('Title')?>" value="<?=$selectedTitle?>" />
|
||||
</fieldset>
|
||||
<input type="submit" value="<?=_('Apply filters')?>" />
|
||||
</form>
|
||||
|
|
@ -77,8 +79,8 @@
|
|||
</ul>
|
||||
<?php if(is_null($all) && ($page*$limit) < $questsCount) : ?>
|
||||
<nav class="admin">
|
||||
<li><a id="show-more" href="<?=$linker->link(null,3,true,array('page'=>$page+1,'questgroup'=>$selectedQuestgroup,'questtype'=>$selectedQuesttype))?>"><?=_('Show more')?></a></li>
|
||||
<li><a id="show-all" href="<?=$linker->link('all',3,true,array('questgroup'=>$selectedQuestgroup,'questtype'=>$selectedQuesttype))?>"><?=_('Show all')?></a></li>
|
||||
<li><a id="show-more" href="<?=$linker->link(null,3,true,array('page'=>$page+1,'questgroup'=>$selectedQuestgroup,'questtype'=>$selectedQuesttype,'title'=>$selectedTitle))?>"><?=_('Show more')?></a></li>
|
||||
<li><a id="show-all" href="<?=$linker->link('all',3,true,array('questgroup'=>$selectedQuestgroup,'questtype'=>$selectedQuesttype,'title'=>$selectedTitle))?>"><?=_('Show all')?></a></li>
|
||||
</nav>
|
||||
<?php endif ?>
|
||||
|
||||
|
|
@ -88,7 +90,7 @@
|
|||
var linkSubmissions = "<?=$linker->link(array('submissions','SEMINARY','QUESTGROUP','QUEST'),1)?>";
|
||||
var linkQuestgroup = "<?=$linker->link(array('questgroups','questgroup','SEMINARY','QUESTGROUP'))?>";
|
||||
var linkQuest = "<?=$linker->link(array('quest','SEMINARY','QUESTGROUP','QUEST'),1)?>";
|
||||
var linkPage = "<?=$linker->link(null,3,true,array('page'=>'PAGE','questgroup'=>$selectedQuestgroup,'questtype'=>$selectedQuesttype))?>";
|
||||
var linkPage = "<?=$linker->link(null,3,true,array('page'=>'PAGE','questgroup'=>$selectedQuestgroup,'questtype'=>$selectedQuesttype,'title'=>$selectedTitle))?>";
|
||||
|
||||
$("#show-more").click(function(event) {
|
||||
if(request) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue