implement CRUD for Questgroupshierarchy

This commit is contained in:
coderkun 2014-06-03 14:30:26 +02:00
commit 7264b623c1
11 changed files with 737 additions and 4 deletions

View 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
{
}
?>

View file

@ -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),

View 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);
}
}
?>

View file

@ -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);
}
}
?>

View file

@ -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) : ?>

View 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>

View 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>

View 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>

View 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>