implement CRUD for Questgroupshierarchy
This commit is contained in:
parent
8ef116f8ae
commit
7264b623c1
11 changed files with 737 additions and 4 deletions
24
agents/intermediate/QuestgroupshierarchyAgent.inc
Normal file
24
agents/intermediate/QuestgroupshierarchyAgent.inc
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
<?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\agents\intermediate;
|
||||
|
||||
|
||||
/**
|
||||
* Agent to manage Questgroupshierarchy.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class QuestgroupshierarchyAgent extends \nre\agents\IntermediateAgent
|
||||
{
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
@ -216,6 +216,10 @@
|
|||
'minlength' => 1,
|
||||
'maxlength' => 32
|
||||
),
|
||||
'questgroupshierarchytitle' => array(
|
||||
'minlength' => 1,
|
||||
'maxlength' => 64
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
|
|
@ -231,6 +235,8 @@
|
|||
array('^users/(?!(index|login|register|logout|manage|create|edit|delete))/?', 'users/user/$1', true),
|
||||
array('^seminaries/([^/]+)/(edit|delete)/?$', 'seminaries/$2/$1', true),
|
||||
array('^seminaries/(?!(index|create|edit|delete|calculatexps))/?', 'seminaries/seminary/$1', true),
|
||||
array('^questgroupshierarchy/([^/]+)/create/?$', 'questgroupshierarchy/create/$1', true),
|
||||
array('^questgroupshierarchy/([^/]+)/([^/]+)/(edit|delete|moveup|movedown)/?$', 'questgroupshierarchy/$3/$1/$2', true),
|
||||
array('^questgroups/([^/]+)/(create)/?$', 'questgroups/$2/$1', true),
|
||||
array('^questgroups/([^/]+)/([^/]+)/?$', 'questgroups/questgroup/$1/$2', true),
|
||||
array('^quests/([^/]+)/?$', 'quests/index/$1', true),
|
||||
|
|
@ -275,6 +281,8 @@
|
|||
array('^users/user/(.*)$', 'users/$1', true),
|
||||
array('^users/([^/]+)/(.*)$', 'users/$2/$1', true),
|
||||
array('^seminaries/seminary/(.*)$', 'seminaries/$1', false),
|
||||
array('^questgroupshierarchy/create/(.*)$', 'questgroupshierarchy/$1/create', true),
|
||||
array('^questgroupshierarchy/([^/]+)/(.*)$', 'questgroupshierarchy/$2/$1', true),
|
||||
array('^questgroups/create/(.*)$', 'questgroups/$2/$1', true),
|
||||
array('^questgroups/questgroup/(.*)$', 'questgroups/$1', true),
|
||||
array('^quests/index/(.+)$', 'quests/$1', true),
|
||||
|
|
|
|||
342
controllers/QuestgroupshierarchyController.inc
Normal file
342
controllers/QuestgroupshierarchyController.inc
Normal file
|
|
@ -0,0 +1,342 @@
|
|||
<?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\controllers;
|
||||
|
||||
|
||||
/**
|
||||
* Controller of the QuestgroupsAgent to display Questgroups.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class QuestgroupshierarchyController extends \hhu\z\controllers\SeminaryController
|
||||
{
|
||||
/**
|
||||
* Required components
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public $components = array('validation');
|
||||
/**
|
||||
* Required models
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public $models = array('seminaries', 'questgroupshierarchy', 'questgroups');
|
||||
/**
|
||||
* User permissions
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public $permissions = array(
|
||||
'create' => array('admin', 'moderator', 'user'),
|
||||
'edit' => array('admin', 'moderator', 'user'),
|
||||
'delete' => array('admin', 'moderator', 'user')
|
||||
);
|
||||
/**
|
||||
* User seminary permissions
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public $seminaryPermissions = array(
|
||||
'create' => array('admin', 'moderator'),
|
||||
'edit' => array('admin', 'moderator'),
|
||||
'delete' => array('admin')
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Action: create.
|
||||
*
|
||||
* Create a new Questgroupshierarchy.
|
||||
*
|
||||
* @param string $seminaryUrl URL-title of a Seminary
|
||||
*/
|
||||
public function create($seminaryUrl)
|
||||
{
|
||||
// Get seminary
|
||||
$seminary = $this->Seminaries->getSeminaryByUrl($seminaryUrl);
|
||||
|
||||
// Get parent Questgroupshierarchy
|
||||
$parentQuestgroupshierarchy = $this->Questgroupshierarchy->getHierarchyOfSeminary($seminary['id']);
|
||||
|
||||
// Values
|
||||
$titleSingular = '';
|
||||
$titlePlural = '';
|
||||
$validation = array();
|
||||
|
||||
// Create Questgroupshierarchy
|
||||
if($this->request->getRequestMethod() == 'POST' && !is_null($this->request->getPostParam('create')))
|
||||
{
|
||||
// Get params and validate them
|
||||
$titleSingular = $this->request->getPostParam('title_singular');
|
||||
$validation = $this->Validation->addValidationResults(
|
||||
$validation,
|
||||
'titleSingular',
|
||||
$this->Validation->validate($titleSingular, \nre\configs\AppConfig::$validation['questgroupshierarchytitle'])
|
||||
);
|
||||
if($this->Questgroupshierarchy->questgroupshierarchyTitleSingularExists($titleSingular, $seminary['id'])) {
|
||||
$validation = $this->Validation->addValidationResult($validation, 'titleSingular', 'exist', true);
|
||||
}
|
||||
$titlePlural = $this->request->getPostParam('title_plural');
|
||||
$validation = $this->Validation->addValidationResults(
|
||||
$validation,
|
||||
'titlePlural',
|
||||
$this->Validation->validate($titlePlural, \nre\configs\AppConfig::$validation['questgroupshierarchytitle'])
|
||||
);
|
||||
if($this->Questgroupshierarchy->questgroupshierarchyTitleSingularExists($titlePlural, $seminary['id'])) {
|
||||
$validation = $this->Validation->addValidationResult($validation, 'titlePlural', 'exist', true);
|
||||
}
|
||||
|
||||
// Validate parent Questgroupshierarchy
|
||||
$parentQuestgroupshierarchyIndex = null;
|
||||
foreach($parentQuestgroupshierarchy as $index => &$parentHierarchy)
|
||||
{
|
||||
$parentHierarchy['selected'] = ($parentHierarchy['url'] == $this->request->getPostParam('parent'));
|
||||
if($parentHierarchy['selected']) {
|
||||
$parentQuestgroupshierarchyIndex = $index;
|
||||
}
|
||||
}
|
||||
|
||||
// Create new Questgroupshierarchy
|
||||
if($validation === true)
|
||||
{
|
||||
$questgroupshierarchyId = $this->Questgroupshierarchy->createQuestgroupshierarchy(
|
||||
$this->Auth->getUserId(),
|
||||
$seminary['id'],
|
||||
(!is_null($parentQuestgroupshierarchyIndex) ? $parentQuestgroupshierarchy[$parentQuestgroupshierarchyIndex]['id'] : null),
|
||||
$titleSingular,
|
||||
$titlePlural
|
||||
);
|
||||
$questgroupshierarchy = $this->Questgroupshierarchy->getHierarchyById($questgroupshierarchyId);
|
||||
|
||||
// Redirect
|
||||
$this->redirect($this->linker->link(array('seminaries', 'seminary', $seminary['url'])));
|
||||
}
|
||||
}
|
||||
|
||||
// Get validation settings
|
||||
$validationSettings = array(
|
||||
'title' => \nre\configs\AppConfig::$validation['title']
|
||||
);
|
||||
|
||||
|
||||
// Set titile
|
||||
$this->addTitleLocalized('Create Questgroupshierarchy');
|
||||
$this->addTitle($seminary['title']);
|
||||
|
||||
// Pass data to view
|
||||
$this->set('seminary', $seminary);
|
||||
$this->set('titleSingular', $titleSingular);
|
||||
$this->set('titlePlural', $titlePlural);
|
||||
$this->set('parentQuestgroupshierarchy', $parentQuestgroupshierarchy);
|
||||
$this->set('validation', $validation);
|
||||
$this->set('validationSettings', $validationSettings);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: edit.
|
||||
*
|
||||
* Edit a Questgroupshierarchy.
|
||||
*
|
||||
* @throws IdNotFoundException
|
||||
* @param string $seminaryUrl URL-title of Seminary
|
||||
* @param string $questgroupshierarchyUrl URL-title of Questgroupshierarchy
|
||||
*/
|
||||
public function edit($seminaryUrl, $questgroupshierarchyUrl)
|
||||
{
|
||||
// Get seminary
|
||||
$seminary = $this->Seminaries->getSeminaryByUrl($seminaryUrl);
|
||||
|
||||
// Get Questgroupshierarchy
|
||||
$questgroupshierarchy = $this->Questgroupshierarchy->getHierarchyByUrl($seminary['id'], $questgroupshierarchyUrl);
|
||||
|
||||
// Values
|
||||
$titleSingular = $questgroupshierarchy['title_singular'];
|
||||
$titlePlural = $questgroupshierarchy['title_plural'];
|
||||
$validation = array();
|
||||
|
||||
// Check request method
|
||||
if($this->request->getRequestMethod() == 'POST' && !is_null($this->request->getPostParam('edit')))
|
||||
{
|
||||
// Get params and validate them
|
||||
$titleSingular = $this->request->getPostParam('title_singular');
|
||||
$validation = $this->Validation->addValidationResults(
|
||||
$validation,
|
||||
'titleSingular',
|
||||
$this->Validation->validate($titleSingular, \nre\configs\AppConfig::$validation['questgroupshierarchytitle'])
|
||||
);
|
||||
if($this->Questgroupshierarchy->questgroupshierarchyTitleSingularExists($titleSingular, $seminary['id'], $questgroupshierarchy['id'])) {
|
||||
$validation = $this->Validation->addValidationResult($validation, 'titleSingular', 'exist', true);
|
||||
}
|
||||
$titlePlural = $this->request->getPostParam('title_plural');
|
||||
$validation = $this->Validation->addValidationResults(
|
||||
$validation,
|
||||
'titlePlural',
|
||||
$this->Validation->validate($titlePlural, \nre\configs\AppConfig::$validation['questgroupshierarchytitle'])
|
||||
);
|
||||
if($this->Questgroupshierarchy->questgroupshierarchyTitleSingularExists($titlePlural, $seminary['id'], $questgroupshierarchy['id'])) {
|
||||
$validation = $this->Validation->addValidationResult($validation, 'titlePlural', 'exist', true);
|
||||
}
|
||||
|
||||
|
||||
// Edit Questgroup
|
||||
if($validation === true)
|
||||
{
|
||||
$this->Questgroupshierarchy->editQuestgroupshierarchy(
|
||||
$questgroupshierarchy['id'],
|
||||
$titleSingular,
|
||||
$titlePlural
|
||||
);
|
||||
$questgroupshierarchy = $this->Questgroupshierarchy->getHierarchyById($questgroupshierarchy['id']);
|
||||
|
||||
// Redirect to Seminary page
|
||||
$this->redirect($this->linker->link(array('seminaries', 'seminary', $seminary['url'])));
|
||||
}
|
||||
}
|
||||
|
||||
// Get validation settings
|
||||
$validationSettings = array(
|
||||
'title' => \nre\configs\AppConfig::$validation['title']
|
||||
);
|
||||
|
||||
|
||||
// Set titile
|
||||
$this->addTitleLocalized('Edit Questgroupshierarchy');
|
||||
$this->addTitle($seminary['title']);
|
||||
|
||||
// Pass data to view
|
||||
$this->set('seminary', $seminary);
|
||||
$this->set('titleSingular', $titleSingular);
|
||||
$this->set('titlePlural', $titlePlural);
|
||||
$this->set('validation', $validation);
|
||||
$this->set('validationSettings', $validationSettings);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: moveup.
|
||||
*
|
||||
* Move a Questgroupshierarchy up (decrement position).
|
||||
*
|
||||
* @throws IdNotFoundException
|
||||
* @param string $seminaryUrl URL-title of Seminary
|
||||
* @param string $questgroupshierarchyUrl URL-title of Questgroupshierarchy
|
||||
*/
|
||||
public function moveup($seminaryUrl, $questgroupshierarchyUrl)
|
||||
{
|
||||
// Get seminary
|
||||
$seminary = $this->Seminaries->getSeminaryByUrl($seminaryUrl);
|
||||
|
||||
// Get Questgroupshierarchy
|
||||
$questgroupshierarchy = $this->Questgroupshierarchy->getHierarchyByUrl($seminary['id'], $questgroupshierarchyUrl);
|
||||
|
||||
// Set position
|
||||
$this->Questgroupshierarchy->moveQuestgroupshierarchy($questgroupshierarchy, true);
|
||||
|
||||
|
||||
// Redirect
|
||||
$referer = $this->request->getGetParam('referer');
|
||||
if(!is_null($referer))
|
||||
{
|
||||
try {
|
||||
$questgroup = $this->Questgroups->getQuestgroupById($referer);
|
||||
$this->redirect($this->linker->link(array('questgroups', 'questgroup', $seminary['url'], $questgroup['url'])));
|
||||
}
|
||||
catch(IdNotFoundException $e) {
|
||||
}
|
||||
}
|
||||
$this->redirect($this->linker->link(array('seminaries', 'seminary', $seminary['url'])));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: movedown.
|
||||
*
|
||||
* Move a Questgroupshierarchy down (increment position).
|
||||
*
|
||||
* @throws IdNotFoundException
|
||||
* @param string $seminaryUrl URL-title of Seminary
|
||||
* @param string $questgroupshierarchyUrl URL-title of Questgroupshierarchy
|
||||
*/
|
||||
public function movedown($seminaryUrl, $questgroupshierarchyUrl)
|
||||
{
|
||||
// Get seminary
|
||||
$seminary = $this->Seminaries->getSeminaryByUrl($seminaryUrl);
|
||||
|
||||
// Get Questgroupshierarchy
|
||||
$questgroupshierarchy = $this->Questgroupshierarchy->getHierarchyByUrl($seminary['id'], $questgroupshierarchyUrl);
|
||||
|
||||
// Set position
|
||||
$this->Questgroupshierarchy->moveQuestgroupshierarchy($questgroupshierarchy, false);
|
||||
|
||||
|
||||
// Redirect
|
||||
$referer = $this->request->getGetParam('referer');
|
||||
if(!is_null($referer))
|
||||
{
|
||||
try {
|
||||
$questgroup = $this->Questgroups->getQuestgroupById($referer);
|
||||
$this->redirect($this->linker->link(array('questgroups', 'questgroup', $seminary['url'], $questgroup['url'])));
|
||||
}
|
||||
catch(IdNotFoundException $e) {
|
||||
}
|
||||
}
|
||||
$this->redirect($this->linker->link(array('seminaries', 'seminary', $seminary['url'])));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: delete.
|
||||
*
|
||||
* Delete a Questgroupshierarchy.
|
||||
*
|
||||
* @throws IdNotFoundException
|
||||
* @param string $seminaryUrl URL-title of Seminary
|
||||
* @param string $questgroupshierarchyUrl URL-title of Questgroupshierarchy
|
||||
*/
|
||||
public function delete($seminaryUrl, $questgroupshierarchyUrl)
|
||||
{
|
||||
// Get seminary
|
||||
$seminary = $this->Seminaries->getSeminaryByUrl($seminaryUrl);
|
||||
|
||||
// Get Questgroupshierarchy
|
||||
$questgroupshierarchy = $this->Questgroupshierarchy->getHierarchyByUrl($seminary['id'], $questgroupshierarchyUrl);
|
||||
|
||||
// Check request method
|
||||
if($this->request->getRequestMethod() == 'POST')
|
||||
{
|
||||
// Check confirmation
|
||||
if(!is_null($this->request->getPostParam('delete')))
|
||||
{
|
||||
// Delete Questgroupshierarchy
|
||||
$this->Questgroupshierarchy->deleteQuestgroupshierarchy($questgroupshierarchy['id']);
|
||||
}
|
||||
|
||||
// Redirect to Seminary page
|
||||
$this->redirect($this->linker->link(array('seminaries', 'seminary', $seminary['url'])));
|
||||
}
|
||||
|
||||
|
||||
// Set titile
|
||||
$this->addTitleLocalized('Delete Questgroupshierarchy');
|
||||
|
||||
// Show confirmation
|
||||
$this->set('seminary', $seminary);
|
||||
$this->set('questgroupshierarchy', $questgroupshierarchy);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
@ -59,6 +59,32 @@
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get a Questgroup hierarchy by its URL.
|
||||
*
|
||||
* throws IdNotFoundException
|
||||
* @param int $questgroupshierarchyURL URL of a Questgroup hierarchy
|
||||
* @return array Questgroup hierarchy
|
||||
*/
|
||||
public function getHierarchyByUrl($seminaryId, $questgroupshierarchyUrl)
|
||||
{
|
||||
$data = $this->db->query(
|
||||
'SELECT id, seminary_id, parent_questgroupshierarchy_id, pos, title_singular, title_plural, url '.
|
||||
'FROM questgroupshierarchy '.
|
||||
'WHERE questgroupshierarchy.seminary_id = ? AND questgroupshierarchy.url = ?',
|
||||
'is',
|
||||
$seminaryId,
|
||||
$questgroupshierarchyUrl
|
||||
);
|
||||
if(empty($data)) {
|
||||
throw new \nre\exceptions\IdNotFoundException($questgroupshierarchyUrl);
|
||||
}
|
||||
|
||||
|
||||
return $data[0];
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get the toplevel hierarchy entries of a Seminary.
|
||||
*
|
||||
|
|
@ -123,6 +149,170 @@
|
|||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Check if a title for a Questgroupshierarchy already exists
|
||||
* for a Seminary.
|
||||
*
|
||||
* @param string $title
|
||||
* @param int $seminaryId
|
||||
* @param int $questgroupshierarchyId Do not check this Questgroupshierarchy (for editing)
|
||||
* @return Whether title already exists or not
|
||||
*/
|
||||
public function questgroupshierarchyTitleSingularExists($title, $seminaryId, $questgroupshierarchyId=null)
|
||||
{
|
||||
$data = $this->db->query(
|
||||
'SELECT id '.
|
||||
'FROM questgroupshierarchy '.
|
||||
'WHERE seminary_id = ? AND (title_singular = ? OR url = ?) ',
|
||||
'iss',
|
||||
$seminaryId,
|
||||
$title,
|
||||
\nre\core\Linker::createLinkParam($title)
|
||||
);
|
||||
|
||||
|
||||
return (!empty($data) && (is_null($questgroupshierarchyId) || $questgroupshierarchyId != $data[0]['id']));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Create a new Questgroupshierarchy for a Seminary
|
||||
*
|
||||
* @param int $userId ID of creating user
|
||||
* @param int $seminaryId ID of Seminary
|
||||
* @param int $parentQuestgroupsierarchyId ID of parent Questgroupshierarchy
|
||||
* @param string $title Title (singular)
|
||||
* @param string $course Title (plural)
|
||||
*/
|
||||
public function createQuestgroupshierarchy($userId, $seminaryId, $parentQuestgroupsierarchyId, $titleSingular, $titlePlural)
|
||||
{
|
||||
// Get last position
|
||||
$pos = $this->db->query(
|
||||
'SELECT COALESCE(MAX(pos),0) AS pos '.
|
||||
'FROM questgroupshierarchy '.
|
||||
'WHERE seminary_id = ? AND '.
|
||||
'parent_questgroupshierarchy_id '.(!is_null($parentQuestgroupsierarchyId) ? sprintf('= %d', $parentQuestgroupsierarchyId) : 'IS NULL'),
|
||||
'i',
|
||||
$seminaryId
|
||||
);
|
||||
$pos = intval($pos[0]['pos']);
|
||||
|
||||
// Create Questgroupshierarchy
|
||||
$this->db->query(
|
||||
'INSERT INTO questgroupshierarchy '.
|
||||
'(created_user_id, seminary_id, parent_questgroupshierarchy_id, pos, title_singular, title_plural, url) '.
|
||||
'VALUES '.
|
||||
'(?, ?, ?, ?, ?, ?, ?)',
|
||||
'iiiisss',
|
||||
$userId,
|
||||
$seminaryId,
|
||||
$parentQuestgroupsierarchyId,
|
||||
$pos + 1,
|
||||
$titleSingular,
|
||||
$titlePlural,
|
||||
\nre\core\Linker::createLinkParam($titleSingular)
|
||||
);
|
||||
|
||||
|
||||
return $this->db->getInsertId();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Edit a Questgroupshierarchy.
|
||||
*
|
||||
* @param int $questgroupshierarchyId ID of Questgroupshierarchy to edit
|
||||
* @param string $title New title (singular)
|
||||
* @param string $course New title (plural)
|
||||
*/
|
||||
public function editQuestgroupshierarchy($questgroupshierarchyId, $titleSingular, $titlePlural)
|
||||
{
|
||||
$this->db->query(
|
||||
'UPDATE questgroupshierarchy '.
|
||||
'SET title_singular = ?, title_plural = ?, url = ? '.
|
||||
'WHERE id = ?',
|
||||
'sssi',
|
||||
$titleSingular,
|
||||
$titlePlural,
|
||||
\nre\core\Linker::createLinkParam($titleSingular),
|
||||
$questgroupshierarchyId
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Move a Questgroupshierarchy up (decrement position) or down
|
||||
* (increment position).
|
||||
*
|
||||
* @param array $questgroupshierarchy Questgroupshierarchy to move
|
||||
* @param boolean $up True for moving up, false for down
|
||||
*/
|
||||
public function moveQuestgroupshierarchy($questgroupshierarchy, $up)
|
||||
{
|
||||
$this->db->setAutocommit(false);
|
||||
try {
|
||||
// Set temporary position
|
||||
$this->db->query(
|
||||
'UPDATE questgroupshierarchy '.
|
||||
'SET pos = 0 '.
|
||||
'WHERE id = ?',
|
||||
'i',
|
||||
$questgroupshierarchy['id']
|
||||
);
|
||||
// Switch entry
|
||||
if(is_null($questgroupshierarchy['parent_questgroupshierarchy_id'])) {
|
||||
$this->db->query(
|
||||
'UPDATE questgroupshierarchy '.
|
||||
'SET pos = ? '.
|
||||
'WHERE parent_questgroupshierarchy_id IS NULL AND pos = ?',
|
||||
'ii',
|
||||
$questgroupshierarchy['pos'],
|
||||
$questgroupshierarchy['pos'] + ($up ? -1 : 1)
|
||||
);
|
||||
}
|
||||
else {
|
||||
$this->db->query(
|
||||
'UPDATE questgroupshierarchy '.
|
||||
'SET pos = ? '.
|
||||
'WHERE parent_questgroupshierarchy_id = ? AND pos = ?',
|
||||
'iii',
|
||||
$questgroupshierarchy['pos'],
|
||||
$questgroupshierarchy['parent_questgroupshierarchy_id'],
|
||||
$questgroupshierarchy['pos'] + ($up ? -1 : 1)
|
||||
);
|
||||
}
|
||||
// Set new position
|
||||
$this->db->query(
|
||||
'UPDATE questgroupshierarchy '.
|
||||
'SET pos = ? '.
|
||||
'WHERE id = ?',
|
||||
'ii',
|
||||
$questgroupshierarchy['pos'] + ($up ? -1 : 1),
|
||||
$questgroupshierarchy['id']
|
||||
);
|
||||
|
||||
$this->db->commit();
|
||||
}
|
||||
catch(\nre\exceptions\DatamodelException $e) {
|
||||
$this->db->rollback();
|
||||
$this->db->setAutocommit(true);
|
||||
throw $e;
|
||||
}
|
||||
$this->db->setAutocommit(true);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Delete a Questgroupshierarchy.
|
||||
*
|
||||
* @param int $seminaryId ID of the seminary to delete
|
||||
*/
|
||||
public function deleteQuestgroupshierarchy($questgroupshierarchyId)
|
||||
{
|
||||
$this->db->query('DELETE FROM questgroupshierarchy WHERE id = ?', 'i', $questgroupshierarchyId);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -19,9 +19,17 @@
|
|||
<?php endif ?>
|
||||
|
||||
<?php if(!is_null($childquestgroupshierarchy)) : ?>
|
||||
<?php foreach($childquestgroupshierarchy as &$hierarchy) : ?>
|
||||
<?php if(count($hierarchy['questgroups']) > 0) : ?>
|
||||
<?php foreach($childquestgroupshierarchy as $hierarchyIndex => &$hierarchy) : ?>
|
||||
<?php if(count($hierarchy['questgroups']) > 0 || count(array_intersect(array('admin', 'moderator'), \hhu\z\controllers\SeminaryController::$character['characterroles'])) > 0) : ?>
|
||||
<h3><?=$hierarchy['title_plural']?></h3>
|
||||
<?php if(count(array_intersect(array('admin', 'moderator'), \hhu\z\controllers\SeminaryController::$character['characterroles'])) > 0) : ?>
|
||||
<nav class="admin">
|
||||
<li><a href="<?=$linker->link(array('questgroupshierarchy','edit',$seminary['url'],$hierarchy['url']))?>"><?=_('Edit Questgroupshierarchy')?></a></li>
|
||||
<li><a href="<?=$linker->link(array('questgroupshierarchy','delete',$seminary['url'],$hierarchy['url']))?>"><?=_('Delete Questgroupshierarchy')?></a></li>
|
||||
<?php if($hierarchyIndex > 0) : ?><li><a href="<?=$linker->link(array('questgroupshierarchy','moveup',$seminary['url'],$hierarchy['url']),0,true,array('referer'=>$questgroup['id']))?>">↑</a></li><?php endif ?>
|
||||
<?php if($hierarchyIndex < count($childquestgroupshierarchy)-1) : ?><li><a href="<?=$linker->link(array('questgroupshierarchy','movedown',$seminary['url'],$hierarchy['url']),0,true,array('referer'=>$questgroup['id']))?>">↓</a></li><?php endif ?>
|
||||
</nav>
|
||||
<?php endif ?>
|
||||
<ul class="qg">
|
||||
<?php foreach($hierarchy['questgroups'] as &$group) : ?>
|
||||
<li class="cf">
|
||||
|
|
@ -51,6 +59,13 @@
|
|||
</ul>
|
||||
<?php endif ?>
|
||||
<?php endforeach ?>
|
||||
<form method="post" action="<?=$linker->link(array('questgroupshierarchy','create',$seminary['url']))?>">
|
||||
<h2><?=_('New Questgroupshierarchy')?></h2>
|
||||
<?=_('Title (singular)')?>: <input type="text" name="title_singular" placeholder="<?=_('Title (singular)')?>" />
|
||||
<?=_('Title (plural)')?>: <input type="text" name="title_plural" placeholder="<?=_('Title (plural)')?>" />
|
||||
<input type="hidden" name="parent" value="<?=$questgroup['hierarchy']['url']?>" />
|
||||
<input type="submit" name="create" value="<?=_('Add new Questgroupshierarchy')?>" />
|
||||
</form>
|
||||
<?php endif ?>
|
||||
|
||||
<?php if(isset($quests) && !is_null($quests) && count($quests) > 0) : ?>
|
||||
|
|
|
|||
64
views/html/questgroupshierarchy/create.tpl
Normal file
64
views/html/questgroupshierarchy/create.tpl
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
<?php if(!is_null($seminary['seminarymedia_id'])) : ?>
|
||||
<div class="moodpic">
|
||||
<img src="<?=$linker->link(array('media','seminarymoodpic',$seminary['url']))?>" />
|
||||
</div>
|
||||
<?php endif ?>
|
||||
<ul class="breadcrumbs">
|
||||
<li><a href="<?=$linker->link(array('seminaries',$seminary['url']))?>"><?=$seminary['title']?></a></li>
|
||||
<li><i class="fa fa-chevron-right fa-fw"></i><?=_('Questgroupshierarchy')?></li>
|
||||
</ul>
|
||||
|
||||
<h1><?=_('Create Questgroupshierarchy')?></h1>
|
||||
<?php if($validation !== true) : ?>
|
||||
<ul>
|
||||
<?php foreach($validation as $field => &$settings) : ?>
|
||||
<li>
|
||||
<ul>
|
||||
<?php foreach($settings as $setting => $value) : ?>
|
||||
<li>
|
||||
<?php switch($field) {
|
||||
case 'titleSingular':
|
||||
switch($setting) {
|
||||
case 'minlength': printf(_('Title (singular) is too short (min. %d chars)'), $value);
|
||||
break;
|
||||
case 'maxlength': printf(_('Title (singular) is too long (max. %d chars)'), $value);
|
||||
break;
|
||||
case 'exist': echo _('Title (singular) already exists');
|
||||
break;
|
||||
default: echo _('Title (singular) invalid');
|
||||
}
|
||||
break;
|
||||
case 'titlePlural':
|
||||
switch($setting) {
|
||||
case 'minlength': printf(_('Title (plural) is too short (min. %d chars)'), $value);
|
||||
break;
|
||||
case 'maxlength': printf(_('Title (plural) is too long (max. %d chars)'), $value);
|
||||
break;
|
||||
case 'exist': echo _('Title (plural) already exists');
|
||||
break;
|
||||
default: echo _('Title (plural) invalid');
|
||||
}
|
||||
break;
|
||||
} ?>
|
||||
</li>
|
||||
<?php endforeach ?>
|
||||
</ul>
|
||||
</li>
|
||||
<?php endforeach ?>
|
||||
</ul>
|
||||
<?php endif ?>
|
||||
<form method="post" class="logreg">
|
||||
<fieldset>
|
||||
<label for="title_singular"><?=_('Title (singular)')?>:</label>
|
||||
<input type="text" name="title_singular" placeholder="<?=_('Title (singular)')?>" value="<?=$titleSingular?>" required="required" maxlength="<?=$validationSettings['title']['maxlength']?>" <?=(array_key_exists('titleSingular', $validation)) ? 'class="invalid"' : null?> /><br />
|
||||
<label for="title_plural"><?=_('Title (plural)')?>:</label>
|
||||
<input type="text" name="title_plural" placeholder="<?=_('Title (plural)')?>" value="<?=$titlePlural?>" required="required" maxlength="<?=$validationSettings['title']['maxlength']?>" <?=(array_key_exists('titlePlural', $validation)) ? 'class="invalid"' : null?> /><br />
|
||||
<select name="parent">
|
||||
<option value="null"><?=$seminary['title']?></option>
|
||||
<?php foreach($parentQuestgroupshierarchy as &$hierarchy) : ?>
|
||||
<option value="<?=$hierarchy['url']?>" <?php if(array_key_exists('selected', $hierarchy) && $hierarchy['selected']) : ?>selected="selected"<?php endif ?>><?=$hierarchy['title_singular']?></option>
|
||||
<?php endforeach ?>
|
||||
</select>
|
||||
</fieldset>
|
||||
<input type="submit" name="create" value="<?=_('create')?>" />
|
||||
</form>
|
||||
16
views/html/questgroupshierarchy/delete.tpl
Normal file
16
views/html/questgroupshierarchy/delete.tpl
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
<?php if(!is_null($seminary['seminarymedia_id'])) : ?>
|
||||
<div class="moodpic">
|
||||
<img src="<?=$linker->link(array('media','seminarymoodpic',$seminary['url']))?>">
|
||||
</div>
|
||||
<?php endif ?>
|
||||
<ul class="breadcrumbs">
|
||||
<li><a href="<?=$linker->link(array('seminaries',$seminary['url']))?>"><?=$seminary['title']?></a></li>
|
||||
<li><i class="fa fa-chevron-right fa-fw"></i><?=_('Questgroupshierarchy')?></li>
|
||||
</ul>
|
||||
|
||||
<h1><?=_('Delete Questgroupshierarchy')?></h1>
|
||||
<?=sprintf(_('Should the Questgroupshierarchy “%s” really be deleted?'), $questgroupshierarchy['title_singular'])?>
|
||||
<form method="post">
|
||||
<input type="submit" name="delete" value="<?=_('delete')?>" />
|
||||
<input type="submit" name="not-delete" value="<?=_('cancel')?>" />
|
||||
</form>
|
||||
58
views/html/questgroupshierarchy/edit.tpl
Normal file
58
views/html/questgroupshierarchy/edit.tpl
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
<?php if(!is_null($seminary['seminarymedia_id'])) : ?>
|
||||
<div class="moodpic">
|
||||
<img src="<?=$linker->link(array('media','seminarymoodpic',$seminary['url']))?>">
|
||||
</div>
|
||||
<?php endif ?>
|
||||
<ul class="breadcrumbs">
|
||||
<li><a href="<?=$linker->link(array('seminaries',$seminary['url']))?>"><?=$seminary['title']?></a></li>
|
||||
<li><i class="fa fa-chevron-right fa-fw"></i><?=_('Questgroupshierarchy')?></li>
|
||||
</ul>
|
||||
|
||||
<h1><?=_('Edit Questgroupshierarchy')?></h1>
|
||||
<?php if($validation !== true) : ?>
|
||||
<ul>
|
||||
<?php foreach($validation as $field => &$settings) : ?>
|
||||
<li>
|
||||
<ul>
|
||||
<?php foreach($settings as $setting => $value) : ?>
|
||||
<li>
|
||||
<?php switch($field) {
|
||||
case 'titleSingular':
|
||||
switch($setting) {
|
||||
case 'minlength': printf(_('Title (singular) is too short (min. %d chars)'), $value);
|
||||
break;
|
||||
case 'maxlength': printf(_('Title (singular) is too long (max. %d chars)'), $value);
|
||||
break;
|
||||
case 'exist': echo _('Title (singular) already exists');
|
||||
break;
|
||||
default: echo _('Title (singular) invalid');
|
||||
}
|
||||
break;
|
||||
case 'titlePlural':
|
||||
switch($setting) {
|
||||
case 'minlength': printf(_('Title (plural) is too short (min. %d chars)'), $value);
|
||||
break;
|
||||
case 'maxlength': printf(_('Title (plural) is too long (max. %d chars)'), $value);
|
||||
break;
|
||||
case 'exist': echo _('Title (plural) already exists');
|
||||
break;
|
||||
default: echo _('Title (plural) invalid');
|
||||
}
|
||||
break;
|
||||
} ?>
|
||||
</li>
|
||||
<?php endforeach ?>
|
||||
</ul>
|
||||
</li>
|
||||
<?php endforeach ?>
|
||||
</ul>
|
||||
<?php endif ?>
|
||||
<form method="post" class="logreg">
|
||||
<fieldset>
|
||||
<label for="title_singular"><?=_('Title (singular)')?>:</label>
|
||||
<input type="text" name="title_singular" placeholder="<?=_('Title (singular)')?>" value="<?=$titleSingular?>" required="required" maxlength="<?=$validationSettings['title']['maxlength']?>" <?=(array_key_exists('titleSingular', $validation)) ? 'class="invalid"' : null?> /><br />
|
||||
<label for="title_plural"><?=_('Title (plural)')?>:</label>
|
||||
<input type="text" name="title_plural" placeholder="<?=_('Title (plural)')?>" value="<?=$titlePlural?>" required="required" maxlength="<?=$validationSettings['title']['maxlength']?>" <?=(array_key_exists('titlePlural', $validation)) ? 'class="invalid"' : null?> /><br />
|
||||
</fieldset>
|
||||
<input type="submit" name="edit" value="<?=_('edit')?>" />
|
||||
</form>
|
||||
0
views/html/questgroupshierarchy/movedown.tpl
Normal file
0
views/html/questgroupshierarchy/movedown.tpl
Normal file
0
views/html/questgroupshierarchy/moveup.tpl
Normal file
0
views/html/questgroupshierarchy/moveup.tpl
Normal file
|
|
@ -20,8 +20,17 @@
|
|||
</nav>
|
||||
<?php endif ?>
|
||||
<p><?=\hhu\z\Utils::t($seminary['description'])?></p>
|
||||
<?php foreach($questgroupshierarchy as &$hierarchy) : ?>
|
||||
<h2><?=$hierarchy['title_plural']?></h2>
|
||||
<?php foreach($questgroupshierarchy as $hierarchyIndex => &$hierarchy) : ?>
|
||||
<h2 id="<?=$hierarchy['url']?>"><?=$hierarchy['title_plural']?></h2>
|
||||
<?php if(count(array_intersect(array('admin', 'moderator'), \hhu\z\controllers\SeminaryController::$character['characterroles'])) > 0) : ?>
|
||||
<nav class="admin">
|
||||
<li><a href="<?=$linker->link(array('questgroupshierarchy','edit',$seminary['url'],$hierarchy['url']))?>"><?=_('Edit Questgrouphierarchy')?></a></li>
|
||||
<li><a href="<?=$linker->link(array('questgroupshierarchy','delete',$seminary['url'],$hierarchy['url']))?>"><?=_('Delete Questgrouphierarchy')?></a></li>
|
||||
<?php if($hierarchyIndex > 0) : ?><li><a href="<?=$linker->link(array('questgroupshierarchy','moveup',$seminary['url'],$hierarchy['url']))?>">↑</a></li><?php endif ?>
|
||||
<?php if($hierarchyIndex < count($questgroupshierarchy)-1) : ?><li><a href="<?=$linker->link(array('questgroupshierarchy','movedown',$seminary['url'],$hierarchy['url']))?>">↓</a></li><?php endif ?>
|
||||
</div>
|
||||
</nav>
|
||||
<?php endif ?>
|
||||
<ul class="questgroups cf">
|
||||
<?php foreach($hierarchy['questgroups'] as &$group) : ?>
|
||||
<li>
|
||||
|
|
@ -46,3 +55,10 @@
|
|||
<?php endforeach?>
|
||||
</ul>
|
||||
<?php endforeach ?>
|
||||
|
||||
<form method="post" action="<?=$linker->link(array('questgroupshierarchy','create',$seminary['url']))?>">
|
||||
<h2><?=_('New Questgroupshierarchy')?></h2>
|
||||
<?=_('Title (singular)')?>: <input type="text" name="title_singular" placeholder="<?=_('Title (singular)')?>" /></h2>
|
||||
<?=_('Title (plural)')?>: <input type="text" name="title_plural" placeholder="<?=_('Title (plural)')?>" /></h2>
|
||||
<input type="submit" name="create" value="<?=_('Add new Questgroupshierarchy')?>" />
|
||||
</form>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue