implement rudimental form for creating Quests and Questgroups
This commit is contained in:
parent
b64577a221
commit
bfe9155fe4
7 changed files with 271 additions and 7 deletions
|
|
@ -31,7 +31,8 @@
|
|||
* @var array
|
||||
*/
|
||||
public $permissions = array(
|
||||
'questgroup' => array('admin', 'moderator', 'user')
|
||||
'questgroup' => array('admin', 'moderator', 'user'),
|
||||
'create' => array('admin', 'moderator', 'user')
|
||||
);
|
||||
/**
|
||||
* User seminary permissions
|
||||
|
|
@ -39,7 +40,8 @@
|
|||
* @var array
|
||||
*/
|
||||
public $seminaryPermissions = array(
|
||||
'questgroup' => array('admin', 'moderator', 'user')
|
||||
'questgroup' => array('admin', 'moderator', 'user'),
|
||||
'create' => array('admin', 'moderator')
|
||||
);
|
||||
|
||||
|
||||
|
|
@ -174,6 +176,45 @@
|
|||
$this->set('quests', $quests);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: create.
|
||||
*
|
||||
* Create a new Questgroup.
|
||||
*
|
||||
* @param string $seminaryUrl URL-Title of a Seminary
|
||||
*/
|
||||
public function create($seminaryUrl)
|
||||
{
|
||||
// Get seminary
|
||||
$seminary = $this->Seminaries->getSeminaryByUrl($seminaryUrl);
|
||||
|
||||
// Create Questgroup
|
||||
$validation = true;
|
||||
if($this->request->getRequestMethod() == 'POST' && !is_null($this->request->getPostParam('create')))
|
||||
{
|
||||
// TODO Validation
|
||||
$title = $this->request->getPostParam('title');
|
||||
|
||||
// Create new Questgroup
|
||||
if($validation === true)
|
||||
{
|
||||
$questgroupId = $this->Questgroups->createQuestgroup(
|
||||
$this->Auth->getUserId(),
|
||||
$seminary['id'],
|
||||
$title
|
||||
);
|
||||
|
||||
// Redirect
|
||||
$this->redirect($this->linker->link(array('seminaries', 'seminary', $seminary['url'])));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Pass data to view
|
||||
$this->set('seminary', $seminary);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -34,7 +34,8 @@
|
|||
'index' => array('admin', 'moderator', 'user'),
|
||||
'quest' => array('admin', 'moderator', 'user'),
|
||||
'submissions' => array('admin', 'moderator', 'user'),
|
||||
'submission' => array('admin', 'moderator', 'user')
|
||||
'submission' => array('admin', 'moderator', 'user'),
|
||||
'create' => array('admin', 'moderator', 'user')
|
||||
);
|
||||
/**
|
||||
* User seminary permissions
|
||||
|
|
@ -42,10 +43,11 @@
|
|||
* @var array
|
||||
*/
|
||||
public $seminaryPermissions = array(
|
||||
'index' => array('admin', 'moderator', 'user'),
|
||||
'quest' => array('admin', 'moderator', 'user'),
|
||||
'submissions' => array('admin', 'moderator'),
|
||||
'submission' => array('admin', 'moderator')
|
||||
'index' => array('admin', 'moderator', 'user'),
|
||||
'quest' => array('admin', 'moderator', 'user'),
|
||||
'submissions' => array('admin', 'moderator'),
|
||||
'submission' => array('admin', 'moderator'),
|
||||
'create' => array('admin', 'moderator')
|
||||
);
|
||||
|
||||
|
||||
|
|
@ -418,6 +420,86 @@
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: create.
|
||||
*
|
||||
* Create a new Quest.
|
||||
*
|
||||
* @param string $seminaryUrl URL-Title of a Seminary
|
||||
*/
|
||||
public function create($seminaryUrl)
|
||||
{
|
||||
// Get seminary
|
||||
$seminary = $this->Seminaries->getSeminaryByUrl($seminaryUrl);
|
||||
|
||||
// Quest groups
|
||||
$questgroups = $this->Questgroups->getQuestgroupsForSeminary($seminary['id']);
|
||||
|
||||
// Quest types
|
||||
$questtypes = $this->Questtypes->getQuesttypes();
|
||||
|
||||
// Create Quest
|
||||
$validation = true;
|
||||
if($this->request->getRequestMethod() == 'POST' && !is_null($this->request->getPostParam('create')))
|
||||
{
|
||||
// TODO Validation
|
||||
$name = $this->request->getPostParam('name');
|
||||
$xps = $this->request->getPostParam('xps');
|
||||
$wrongtext = $this->request->getPostParam('wrongtext');
|
||||
$task = $this->request->getPostParam('task');
|
||||
|
||||
// Validate Questgroup
|
||||
$questgroupIndex = null;
|
||||
foreach($questgroups as $index => &$questgroup)
|
||||
{
|
||||
$questgroup['selected'] = ($questgroup['url'] == $this->request->getPostParam('questgroup'));
|
||||
if($questgroup['selected']) {
|
||||
$questgroupIndex = $index;
|
||||
}
|
||||
}
|
||||
if(is_null($questgroupIndex)) {
|
||||
throw new \nre\exceptions\ParamsNotValidException($questgroup);
|
||||
}
|
||||
|
||||
// Validate Questtype
|
||||
$questtypeIndex = null;
|
||||
foreach($questtypes as $index => &$questtype)
|
||||
{
|
||||
$questtype['selected'] = ($questtype['url'] == $this->request->getPostParam('questtype'));
|
||||
if($questtype['selected']) {
|
||||
$questtypeIndex = $index;
|
||||
}
|
||||
}
|
||||
if(is_null($questtypeIndex)) {
|
||||
throw new \nre\exceptions\ParamsNotValidException($questtype);
|
||||
}
|
||||
|
||||
// Create new Quest
|
||||
if($validation === true)
|
||||
{
|
||||
$questId = $this->Quests->createQuest(
|
||||
$this->Auth->getUserId(),
|
||||
$name,
|
||||
$questgroups[$questgroupIndex]['id'],
|
||||
$questtypes[$questtypeIndex]['id'],
|
||||
$xps,
|
||||
$wrongtext,
|
||||
$task
|
||||
);
|
||||
|
||||
// Redirect
|
||||
$this->redirect($this->linker->link(array('quests', 'index', $seminary['url'])));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Pass data to view
|
||||
$this->set('seminary', $seminary);
|
||||
$this->set('questgroups', $questgroups);
|
||||
$this->set('questtypes', $questtypes);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue