implement CRUD for Characters and improve Character registration
This commit is contained in:
parent
9a85595611
commit
3b1c030568
10 changed files with 607 additions and 199 deletions
|
|
@ -183,7 +183,8 @@
|
|||
array('^quests/(?!(index|create|createmedia))/?', 'quests/quest/$1', true),
|
||||
array('^characters/([^/]+)/(register|manage)/?$', 'characters/$2/$1', true),
|
||||
array('^characters/([^/]+)/?$', 'characters/index/$1', true),
|
||||
array('^characters/([^/]+)/(?!(index|create|register|manage))/?', 'characters/character/$1/$2', true),
|
||||
array('^characters/([^/]+)/([^/]+)/(edit|delete)/?$', 'characters/$3/$1/$2', true),
|
||||
array('^characters/([^/]+)/(?!(index|register|manage))/?', 'characters/character/$1/$2', true),
|
||||
array('^charactergroups/([^/]+)/?$', 'charactergroups/index/$1', true),
|
||||
array('^charactergroups/([^/]+)/(create)/?$', 'charactergroups/creategroupsgroup/$1/$2', true),
|
||||
array('^charactergroups/([^/]+)/([^/]+)/?$', 'charactergroups/groupsgroup/$1/$2', true),
|
||||
|
|
@ -219,8 +220,9 @@
|
|||
array('^quests/(create|createmedia)/(.*)$', 'quests/$2/$1' , true),
|
||||
array('^quests/(submissions)/(.*)$', 'quests/$2/$1', true),
|
||||
array('^quests/(submission)/([^/]+)/([^/]+)/([^/]+)/([^/]+)$', 'quests/$2/$3/$4/$1/$5', true),
|
||||
array('^characters/(index|character)/(.*)$', 'characters/$2', true),
|
||||
array('^characters/(register|manage)/(.*)$', 'characters/$2/$1', true),
|
||||
array('^characters/(index|character)/(.*)$', 'characters/$2', true),
|
||||
array('^characters/(register|manage)/([^/]+)$', 'characters/$2/$1', true),
|
||||
array('^characters/(edit|delete)/([^/]+)/([^/]+)$', 'characters/$2/$3/$1', true),
|
||||
array('^charactergroups/index/([^/]+)$', 'charactergroups/$1', true),
|
||||
array('^charactergroups/creategroupsgroup/([^/]+)$', 'charactergroups/$1/create', true),
|
||||
array('^charactergroups/groupsgroup/([^/]+)/([^/]+)$', 'charactergroups/$1/$2', true),
|
||||
|
|
|
|||
|
|
@ -40,7 +40,9 @@
|
|||
'index' => array('admin', 'moderator', 'user'),
|
||||
'character' => array('admin', 'moderator', 'user'),
|
||||
'register' => array('admin', 'moderator', 'user'),
|
||||
'manage' => array('admin', 'moderator', 'user')
|
||||
'manage' => array('admin', 'moderator', 'user'),
|
||||
'edit' => array('admin', 'moderator', 'user'),
|
||||
'delete' => array('admin', 'moderator', 'user')
|
||||
);
|
||||
/**
|
||||
* User seminary permissions
|
||||
|
|
@ -50,7 +52,9 @@
|
|||
public $seminaryPermissions = array(
|
||||
'index' => array('admin', 'moderator'),
|
||||
'character' => array('admin', 'moderator', 'user'),
|
||||
'manage' => array('admin', 'moderator')
|
||||
'manage' => array('admin', 'moderator'),
|
||||
'edit' => array('admin', 'moderator', 'user'),
|
||||
'delete' => array('admin', 'moderator')
|
||||
);
|
||||
|
||||
|
||||
|
|
@ -242,7 +246,7 @@
|
|||
}
|
||||
}
|
||||
if(is_null($typeIndex)) {
|
||||
throw new \nre\exceptions\ParamsNotValidException($typeIndex);
|
||||
$validation = $this->Validation->addValidationResult($validation, 'type', 'exist', false);
|
||||
}
|
||||
|
||||
// Validate fields
|
||||
|
|
@ -274,7 +278,7 @@
|
|||
// Add Seminary fields
|
||||
foreach($fields as &$field) {
|
||||
if(!empty($fieldsValues[$field['url']])) {
|
||||
$this->Characters->setSeminaryFieldOfCharacter($characterId, $field['id'], $fieldsValues[$field['url']]);
|
||||
$this->Seminarycharacterfield->setSeminaryFieldOfCharacter($field['id'], $characterId, $fieldsValues[$field['url']]);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -426,6 +430,178 @@
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Acton: edit.
|
||||
*
|
||||
* Edit a new character for a Seminary.
|
||||
*
|
||||
* @throws IdNotFoundException
|
||||
* @throws ParamsNotValidException
|
||||
* @param string $seminaryUrl URL-Title of a Seminary
|
||||
* @param string $characterUrl URL-name of a Charater
|
||||
*/
|
||||
public function edit($seminaryUrl, $characterUrl)
|
||||
{
|
||||
// Get Seminary
|
||||
$seminary = $this->Seminaries->getSeminaryByUrl($seminaryUrl);
|
||||
|
||||
// Get Character
|
||||
$character = $this->Characters->getCharacterByUrl($seminary['id'], $characterUrl);
|
||||
|
||||
// Check permissions
|
||||
if(count(array_intersect(array('admin','moderator'), \hhu\z\controllers\SeminaryController::$character['characterroles'])) == 0 && $character['id'] != \hhu\z\controllers\SeminaryController::$character['id']) {
|
||||
throw new \nre\exceptions\AccessDeniedException();
|
||||
}
|
||||
|
||||
// Get User
|
||||
$user = $this->Users->getUserById($character['user_id']);
|
||||
|
||||
// Character types
|
||||
$types = $this->Charactertypes->getCharacterTypesForSeminary($seminary['id']);
|
||||
foreach($types as &$type) {
|
||||
$type['selected'] = ($type['url'] == $character['charactertype_url']);
|
||||
}
|
||||
|
||||
// Character fields
|
||||
$fields = $this->Seminarycharacterfields->getFieldsForSeminary($seminary['id']);
|
||||
foreach($fields as &$field)
|
||||
{
|
||||
$userValue = $this->Seminarycharacterfields->getSeminaryFieldOfCharacter($field['id'], $character['id']);
|
||||
if(!empty($userValue)) {
|
||||
$field['uservalue'] = $userValue['value'];
|
||||
}
|
||||
}
|
||||
|
||||
// Values
|
||||
$charactername = $character['name'];
|
||||
$validation = array();
|
||||
$fieldsValidation = true;
|
||||
|
||||
// Edit Character
|
||||
if($this->request->getRequestMethod() == 'POST' && !is_null($this->request->getPostParam('edit')))
|
||||
{
|
||||
// Validate Character properties
|
||||
$validation = $this->Validation->validateParams($this->request->getPostParams(), array('charactername'));
|
||||
$charactername = (count(array_intersect(array('admin','moderator'), \hhu\z\controllers\SeminaryController::$character['characterroles'])) > 0) ? $this->request->getPostParam('charactername') : $character['name'];
|
||||
if($this->Characters->characterNameExists($charactername, $character['id'])) {
|
||||
$validation = $this->Validation->addValidationResult($validation, 'charactername', 'exist', true);
|
||||
}
|
||||
|
||||
// Validate type
|
||||
$typeIndex = null;
|
||||
foreach($types as $index => &$type)
|
||||
{
|
||||
$type['selected'] = ($type['url'] == $this->request->getPostParam('type'));
|
||||
if($type['selected']) {
|
||||
$typeIndex = $index;
|
||||
}
|
||||
}
|
||||
if(is_null($typeIndex)) {
|
||||
$validation = $this->Validation->addValidationResult($validation, 'type', 'exist', false);
|
||||
}
|
||||
|
||||
// Validate fields
|
||||
$fieldsValues = $this->request->getPostParam('fields');
|
||||
foreach($fields as &$field)
|
||||
{
|
||||
if(!array_key_exists($field['url'], $fieldsValues)) {
|
||||
throw new \nre\exceptions\ParamsNotValidException($index);
|
||||
}
|
||||
$field['uservalue'] = $fieldsValues[$field['url']];
|
||||
if($field['required'])
|
||||
{
|
||||
$fieldValidation = $this->Validation->validate($fieldsValues[$field['url']], array('regex'=>$field['regex']));
|
||||
if($fieldValidation !== true)
|
||||
{
|
||||
if(!is_array($fieldsValidation)) {
|
||||
$fieldsValidation = array();
|
||||
}
|
||||
$fieldsValidation[$field['url']] = $fieldValidation;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Edit
|
||||
if($validation === true && $fieldsValidation === true)
|
||||
{
|
||||
$this->Characters->editCharacter(
|
||||
$character['id'],
|
||||
$types[$typeIndex]['id'],
|
||||
$charactername
|
||||
);
|
||||
|
||||
// Set Seminary fields
|
||||
foreach($fields as &$field) {
|
||||
if(!empty($fieldsValues[$field['url']])) {
|
||||
$this->Seminarycharacterfields->setSeminaryFieldOfCharacter($field['id'], $character['id'], $fieldsValues[$field['url']]);
|
||||
}
|
||||
}
|
||||
|
||||
// Redirect
|
||||
$character = $this->Characters->getCharacterById($character['id']);
|
||||
$this->redirect($this->linker->link(array('character', $seminary['url'], $character['url']), 1));
|
||||
}
|
||||
}
|
||||
|
||||
// Get XP-levels
|
||||
$xplevels = $this->Characters->getXPLevelsForSeminary($seminary['id']);
|
||||
|
||||
// Pass data to view
|
||||
$this->set('seminary', $seminary);
|
||||
$this->set('types', $types);
|
||||
$this->set('fields', $fields);
|
||||
$this->set('charactername', $charactername);
|
||||
$this->set('validation', $validation);
|
||||
$this->set('fieldsValidation', $fieldsValidation);
|
||||
$this->set('xplevels', $xplevels);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: delete.
|
||||
*
|
||||
* Delete a Character.
|
||||
*
|
||||
* @throws IdNotFoundException
|
||||
* @param string $seminaryUrl URL-Title of a Seminary
|
||||
* @param string $characterUrl URL-name of a Charater
|
||||
*/
|
||||
public function delete($seminaryUrl, $characterUrl)
|
||||
{
|
||||
// Get Seminary
|
||||
$seminary = $this->Seminaries->getSeminaryByUrl($seminaryUrl);
|
||||
|
||||
// Get Character
|
||||
$character = $this->Characters->getCharacterByUrl($seminary['id'], $characterUrl);
|
||||
|
||||
// Get User
|
||||
$user = $this->Users->getUserById($character['user_id']);
|
||||
|
||||
// Check request method
|
||||
if($this->request->getRequestMethod() == 'POST')
|
||||
{
|
||||
// Check confirmation
|
||||
if(!is_null($this->request->getPostParam('delete')))
|
||||
{
|
||||
// Delete Character
|
||||
$this->Characters->deleteCharacter($character['id']);
|
||||
|
||||
// Redirect to overview
|
||||
$this->redirect($this->linker->link(array('index', $seminary['url']), 1));
|
||||
}
|
||||
|
||||
// Redirect to entry
|
||||
$this->redirect($this->linker->link(array('index', $seminary['url'], $character['url']), 1));
|
||||
}
|
||||
|
||||
|
||||
// Pass data to view
|
||||
$this->set('seminary', $seminary);
|
||||
$this->set('character', $character);
|
||||
$this->set('user', $user);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -1,8 +1,8 @@
|
|||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: The Legend of Z\n"
|
||||
"POT-Creation-Date: 2014-05-01 01:48+0100\n"
|
||||
"PO-Revision-Date: 2014-05-01 01:48+0100\n"
|
||||
"POT-Creation-Date: 2014-05-01 13:08+0100\n"
|
||||
"PO-Revision-Date: 2014-05-01 13:08+0100\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"Language: de_DE\n"
|
||||
|
|
@ -164,7 +164,7 @@ msgstr "Persönlicher Fortschritt: %d%%"
|
|||
#: views/html/achievements/index.tpl:52
|
||||
#: views/html/charactergroups/group.tpl:30
|
||||
#: views/html/charactergroups/managegroup.tpl:23
|
||||
#: views/html/characters/character.tpl:36 views/html/seminarybar/index.tpl:7
|
||||
#: views/html/characters/character.tpl:46 views/html/seminarybar/index.tpl:7
|
||||
msgid "Rank"
|
||||
msgstr "Platz"
|
||||
|
||||
|
|
@ -197,7 +197,7 @@ msgstr "Spiele weiter, um diesen geheimen Erfolg freizuschalten"
|
|||
#: views/html/charactergroupsquests/edit.tpl:8
|
||||
#: views/html/charactergroupsquests/manage.tpl:8
|
||||
#: views/html/charactergroupsquests/quest.tpl:8
|
||||
#: views/html/characters/character.tpl:85 views/html/seminarymenu/index.tpl:3
|
||||
#: views/html/characters/character.tpl:95 views/html/seminarymenu/index.tpl:3
|
||||
msgid "Character Groups"
|
||||
msgstr "Gruppen"
|
||||
|
||||
|
|
@ -262,7 +262,7 @@ msgstr "Das Motto ist ungültig"
|
|||
#: views/html/charactergroups/editgroupsgroup.tpl:46
|
||||
#: views/html/charactergroups/editgroupsgroup.tpl:47
|
||||
#: views/html/quests/create.tpl:15 views/html/quests/create.tpl:16
|
||||
#: views/html/users/user.tpl:14
|
||||
#: views/html/users/user.tpl:23
|
||||
msgid "Name"
|
||||
msgstr "Name"
|
||||
|
||||
|
|
@ -276,8 +276,8 @@ msgstr "Motto"
|
|||
#: views/html/charactergroups/creategroup.tpl:59
|
||||
#: views/html/charactergroups/creategroupsgroup.tpl:50
|
||||
#: views/html/charactergroupsquests/create.tpl:75
|
||||
#: views/html/characters/register.tpl:87 views/html/seminaries/create.tpl:12
|
||||
#: views/html/users/create.tpl:20
|
||||
#: views/html/characters/register.tpl:94 views/html/seminaries/create.tpl:12
|
||||
#: views/html/users/create.tpl:96
|
||||
msgid "create"
|
||||
msgstr "erstellen"
|
||||
|
||||
|
|
@ -303,14 +303,16 @@ msgstr "Soll die Gruppe „%s“ wirklich gelöscht werden?"
|
|||
#: views/html/charactergroups/deletegroup.tpl:15
|
||||
#: views/html/charactergroups/deletegroupsgroup.tpl:14
|
||||
#: views/html/charactergroupsquests/delete.tpl:15
|
||||
#: views/html/seminaries/delete.tpl:11 views/html/users/delete.tpl:9
|
||||
#: views/html/characters/delete.tpl:17 views/html/seminaries/delete.tpl:11
|
||||
#: views/html/users/delete.tpl:11
|
||||
msgid "delete"
|
||||
msgstr "löschen"
|
||||
|
||||
#: views/html/charactergroups/deletegroup.tpl:16
|
||||
#: views/html/charactergroups/deletegroupsgroup.tpl:15
|
||||
#: views/html/charactergroupsquests/delete.tpl:16
|
||||
#: views/html/seminaries/delete.tpl:12 views/html/users/delete.tpl:10
|
||||
#: views/html/characters/delete.tpl:18 views/html/seminaries/delete.tpl:12
|
||||
#: views/html/users/delete.tpl:12
|
||||
msgid "cancel"
|
||||
msgstr "abbrechen"
|
||||
|
||||
|
|
@ -332,6 +334,7 @@ msgstr "Gruppe bearbeiten"
|
|||
#: views/html/charactergroups/editgroup.tpl:59
|
||||
#: views/html/charactergroups/editgroupsgroup.tpl:50
|
||||
#: views/html/charactergroupsquests/edit.tpl:75
|
||||
#: views/html/characters/edit.tpl:94
|
||||
msgid "edit"
|
||||
msgstr "bearbeiten"
|
||||
|
||||
|
|
@ -351,10 +354,10 @@ msgstr "Gruppe verwalten"
|
|||
#: views/html/charactergroupsquests/manage.tpl:36
|
||||
#: views/html/charactergroupsquests/quest.tpl:29
|
||||
#: views/html/charactergroupsquests/quest.tpl:62
|
||||
#: views/html/characters/character.tpl:67
|
||||
#: views/html/characters/character.tpl:73
|
||||
#: views/html/characters/character.tpl:79
|
||||
#: views/html/characters/character.tpl:97 views/html/quests/index.tpl:37
|
||||
#: views/html/characters/character.tpl:77
|
||||
#: views/html/characters/character.tpl:83
|
||||
#: views/html/characters/character.tpl:89
|
||||
#: views/html/characters/character.tpl:107 views/html/quests/index.tpl:37
|
||||
#: views/html/seminaries/index.tpl:29 views/html/seminarybar/index.tpl:6
|
||||
#: views/html/seminarybar/index.tpl:42
|
||||
#, php-format
|
||||
|
|
@ -374,9 +377,10 @@ msgstr "Mitglied"
|
|||
#: views/html/charactergroups/group.tpl:36
|
||||
#: views/html/charactergroups/managegroup.tpl:29
|
||||
#: views/html/characters/character.tpl:11
|
||||
#: views/html/characters/character.tpl:13 views/html/characters/index.tpl:9
|
||||
#: views/html/characters/manage.tpl:8 views/html/seminarymenu/index.tpl:2
|
||||
#: views/html/users/user.tpl:18
|
||||
#: views/html/characters/character.tpl:13 views/html/characters/delete.tpl:10
|
||||
#: views/html/characters/edit.tpl:8 views/html/characters/index.tpl:9
|
||||
#: views/html/characters/manage.tpl:8 views/html/characters/register.tpl:8
|
||||
#: views/html/seminarymenu/index.tpl:2 views/html/users/user.tpl:27
|
||||
msgid "Characters"
|
||||
msgstr "Charaktere"
|
||||
|
||||
|
|
@ -559,43 +563,93 @@ msgstr "Gewonnene Quest"
|
|||
msgid "Lost Quest"
|
||||
msgstr "Verlorene Quest"
|
||||
|
||||
#: views/html/characters/character.tpl:24
|
||||
#: views/html/characters/character.tpl:21 views/html/characters/edit.tpl:11
|
||||
msgid "Edit Character"
|
||||
msgstr "Charakter bearbeiten"
|
||||
|
||||
#: views/html/characters/character.tpl:24 views/html/characters/delete.tpl:14
|
||||
msgid "Delete Character"
|
||||
msgstr "Charakter löschen"
|
||||
|
||||
#: views/html/characters/character.tpl:34
|
||||
msgid "Total progress"
|
||||
msgstr "Fortschritt"
|
||||
|
||||
#: views/html/characters/character.tpl:28
|
||||
#: views/html/characters/character.tpl:67
|
||||
#: views/html/characters/character.tpl:73
|
||||
#: views/html/characters/character.tpl:79 views/html/seminarybar/index.tpl:42
|
||||
#: views/html/users/user.tpl:32
|
||||
#: views/html/characters/character.tpl:38
|
||||
#: views/html/characters/character.tpl:77
|
||||
#: views/html/characters/character.tpl:83
|
||||
#: views/html/characters/character.tpl:89 views/html/seminarybar/index.tpl:42
|
||||
#: views/html/users/user.tpl:41
|
||||
msgid "Level"
|
||||
msgstr "Level"
|
||||
|
||||
#: views/html/characters/character.tpl:38
|
||||
#: views/html/characters/character.tpl:48
|
||||
msgid "Milestones"
|
||||
msgstr "Meilensteine"
|
||||
|
||||
#: views/html/characters/character.tpl:61
|
||||
#: views/html/characters/character.tpl:71
|
||||
msgid "Ranking"
|
||||
msgstr "Ranking"
|
||||
|
||||
#: views/html/characters/character.tpl:106 views/html/seminarybar/index.tpl:14
|
||||
#: views/html/characters/character.tpl:116 views/html/seminarybar/index.tpl:14
|
||||
msgid "Last Quest"
|
||||
msgstr "Letzter Speicherpunkt"
|
||||
|
||||
#: views/html/characters/character.tpl:112
|
||||
#: views/html/characters/character.tpl:122
|
||||
msgid "Topic progress"
|
||||
msgstr "Thematischer Fortschritt"
|
||||
|
||||
#: views/html/characters/delete.tpl:15
|
||||
#, php-format
|
||||
msgid "Should the Character “%s” of user “%s” (%s) really be deleted?"
|
||||
msgstr "Soll der Charakter „%s“ von Benutzer %s (%s) wirklich gelöscht werden?"
|
||||
|
||||
#: views/html/characters/edit.tpl:23 views/html/characters/register.tpl:22
|
||||
#, php-format
|
||||
msgid "Character name is too short (min. %d chars)"
|
||||
msgstr "Der Charaktername ist zu kurz (min. %d Zeichen)"
|
||||
|
||||
#: views/html/characters/edit.tpl:25 views/html/characters/register.tpl:24
|
||||
#, php-format
|
||||
msgid "Character name is too long (max. %d chars)"
|
||||
msgstr "Der Charaktername ist zu lang (max. %d Zeichen)"
|
||||
|
||||
#: views/html/characters/edit.tpl:27 views/html/characters/register.tpl:26
|
||||
msgid "Character name contains illegal characters"
|
||||
msgstr "Der Charaktername enthält ungültige Zeichen"
|
||||
|
||||
#: views/html/characters/edit.tpl:29 views/html/characters/register.tpl:28
|
||||
msgid "Character name already exists"
|
||||
msgstr "Der Charaktername existiert bereits"
|
||||
|
||||
#: views/html/characters/edit.tpl:31 views/html/characters/register.tpl:30
|
||||
msgid "Character name invalid"
|
||||
msgstr "Der Charaktername ist ungültig"
|
||||
|
||||
#: views/html/characters/edit.tpl:43 views/html/characters/register.tpl:48
|
||||
msgid "Character properties"
|
||||
msgstr "Charaktereigenschaften"
|
||||
|
||||
#: views/html/characters/edit.tpl:44 views/html/characters/edit.tpl:46
|
||||
#: views/html/characters/edit.tpl:48 views/html/characters/index.tpl:21
|
||||
#: views/html/characters/manage.tpl:16 views/html/characters/register.tpl:49
|
||||
#: views/html/characters/register.tpl:50
|
||||
msgid "Character name"
|
||||
msgstr "Charaktername"
|
||||
|
||||
#: views/html/characters/edit.tpl:67 views/html/characters/register.tpl:67
|
||||
#, php-format
|
||||
msgid "The Seminary field “%s” is invalid"
|
||||
msgstr "Das Kursfeld „%s“ ist ungültig"
|
||||
|
||||
#: views/html/characters/edit.tpl:72 views/html/characters/register.tpl:72
|
||||
msgid "Seminary fields"
|
||||
msgstr "Kursfelder"
|
||||
|
||||
#: views/html/characters/index.tpl:13 views/html/characters/manage.tpl:10
|
||||
msgid "Manage"
|
||||
msgstr "Verwalten"
|
||||
|
||||
#: views/html/characters/index.tpl:21 views/html/characters/manage.tpl:16
|
||||
#: views/html/characters/register.tpl:42 views/html/characters/register.tpl:43
|
||||
msgid "Character name"
|
||||
msgstr "Charaktername"
|
||||
|
||||
#: views/html/characters/index.tpl:23 views/html/characters/manage.tpl:18
|
||||
msgid "Role"
|
||||
msgstr "Rolle"
|
||||
|
|
@ -627,44 +681,13 @@ msgstr "Füge Rolle hinzu"
|
|||
msgid "Remove role"
|
||||
msgstr "Entferne Rolle"
|
||||
|
||||
#: views/html/characters/register.tpl:9
|
||||
#: views/html/characters/register.tpl:10
|
||||
msgid "Create Character"
|
||||
msgstr "Charakter erstellen"
|
||||
|
||||
#: views/html/characters/register.tpl:21
|
||||
#, php-format
|
||||
msgid "Character name is too short (min. %d chars)"
|
||||
msgstr "Der Charaktername ist zu kurz (min. %d Zeichen)"
|
||||
|
||||
#: views/html/characters/register.tpl:23
|
||||
#, php-format
|
||||
msgid "Character name is too long (max. %d chars)"
|
||||
msgstr "Der Charaktername ist zu lang (max. %d Zeichen)"
|
||||
|
||||
#: views/html/characters/register.tpl:25
|
||||
msgid "Character name contains illegal characters"
|
||||
msgstr "Der Charaktername enthält ungültige Zeichen"
|
||||
|
||||
#: views/html/characters/register.tpl:27
|
||||
msgid "Character name already exists"
|
||||
msgstr "Der Charaktername existiert bereits"
|
||||
|
||||
#: views/html/characters/register.tpl:29
|
||||
msgid "Character name invalid"
|
||||
msgstr "Der Charaktername ist ungültig"
|
||||
|
||||
#: views/html/characters/register.tpl:41
|
||||
msgid "Character properties"
|
||||
msgstr "Charaktereigenschaften"
|
||||
|
||||
#: views/html/characters/register.tpl:60
|
||||
#, php-format
|
||||
msgid "The Seminary field “%s” is invalid"
|
||||
msgstr "Das Kursfeld „%s“ ist ungültig"
|
||||
|
||||
#: views/html/characters/register.tpl:65
|
||||
msgid "Seminary fields"
|
||||
msgstr "Kursfelder"
|
||||
#: views/html/characters/register.tpl:35
|
||||
msgid "Please choose an avatar"
|
||||
msgstr "Bitte wähle einen Avatar aus"
|
||||
|
||||
#: views/html/error/index.tpl:5 views/html/error/index.tpl:14
|
||||
#: views/html/introduction/index.tpl:9 views/html/menu/index.tpl:6
|
||||
|
|
@ -673,20 +696,20 @@ msgid "Login"
|
|||
msgstr "Login"
|
||||
|
||||
#: views/html/error/index.tpl:8 views/html/error/index.tpl:9
|
||||
#: views/html/introduction/index.tpl:7 views/html/users/create.tpl:9
|
||||
#: views/html/users/create.tpl:10 views/html/users/edit.tpl:9
|
||||
#: views/html/users/edit.tpl:10 views/html/users/login.tpl:12
|
||||
#: views/html/users/login.tpl:13 views/html/users/register.tpl:81
|
||||
#: views/html/users/register.tpl:82
|
||||
#: views/html/introduction/index.tpl:7 views/html/users/create.tpl:84
|
||||
#: views/html/users/create.tpl:85 views/html/users/edit.tpl:87
|
||||
#: views/html/users/edit.tpl:89 views/html/users/edit.tpl:91
|
||||
#: views/html/users/login.tpl:12 views/html/users/login.tpl:13
|
||||
#: views/html/users/register.tpl:83 views/html/users/register.tpl:84
|
||||
msgid "Username"
|
||||
msgstr "Benutzername"
|
||||
|
||||
#: views/html/error/index.tpl:10 views/html/error/index.tpl:11
|
||||
#: views/html/introduction/index.tpl:8 views/html/users/create.tpl:17
|
||||
#: views/html/users/create.tpl:18 views/html/users/edit.tpl:16
|
||||
#: views/html/users/edit.tpl:17 views/html/users/login.tpl:14
|
||||
#: views/html/users/login.tpl:15 views/html/users/register.tpl:89
|
||||
#: views/html/users/register.tpl:90
|
||||
#: views/html/introduction/index.tpl:8 views/html/users/create.tpl:92
|
||||
#: views/html/users/create.tpl:93 views/html/users/edit.tpl:100
|
||||
#: views/html/users/edit.tpl:101 views/html/users/login.tpl:14
|
||||
#: views/html/users/login.tpl:15 views/html/users/register.tpl:91
|
||||
#: views/html/users/register.tpl:92
|
||||
msgid "Password"
|
||||
msgstr "Passwort"
|
||||
|
||||
|
|
@ -734,10 +757,11 @@ msgstr ""
|
|||
msgid "Total progress: %d %%"
|
||||
msgstr "Gesamtfortschritt: %d%%"
|
||||
|
||||
#: views/html/menu/index.tpl:2 views/html/users/create.tpl:4
|
||||
#: views/html/users/delete.tpl:4 views/html/users/edit.tpl:4
|
||||
#: views/html/users/index.tpl:4 views/html/users/login.tpl:4
|
||||
#: views/html/users/register.tpl:4 views/html/users/user.tpl:4
|
||||
#: views/html/menu/index.tpl:2 views/html/users/create.tpl:5
|
||||
#: views/html/users/delete.tpl:5 views/html/users/edit.tpl:6
|
||||
#: views/html/users/edit.tpl:8 views/html/users/index.tpl:4
|
||||
#: views/html/users/login.tpl:4 views/html/users/register.tpl:5
|
||||
#: views/html/users/user.tpl:6 views/html/users/user.tpl:8
|
||||
msgid "Users"
|
||||
msgstr "Benutzer"
|
||||
|
||||
|
|
@ -859,7 +883,7 @@ msgstr "Soll der Kurs „%s“ wirklich gelöscht werden?"
|
|||
msgid "Edit seminary"
|
||||
msgstr "Kurs bearbeiten"
|
||||
|
||||
#: views/html/seminaries/edit.tpl:14 views/html/users/edit.tpl:19
|
||||
#: views/html/seminaries/edit.tpl:14 views/html/users/edit.tpl:103
|
||||
msgid "save"
|
||||
msgstr "speichern"
|
||||
|
||||
|
|
@ -894,39 +918,140 @@ msgstr "Letztes Achievement"
|
|||
msgid "Show %s-Profile"
|
||||
msgstr "%s-Profil anzeigen"
|
||||
|
||||
#: views/html/users/create.tpl:5
|
||||
#: views/html/users/create.tpl:8
|
||||
msgid "New user"
|
||||
msgstr "Neuer Benutzer"
|
||||
|
||||
#: views/html/users/create.tpl:11 views/html/users/create.tpl:12
|
||||
#: views/html/users/edit.tpl:11 views/html/users/register.tpl:83
|
||||
#: views/html/users/register.tpl:84
|
||||
#: views/html/users/create.tpl:19 views/html/users/edit.tpl:23
|
||||
#: views/html/users/register.tpl:19
|
||||
#, php-format
|
||||
msgid "Username is too short (min. %d chars)"
|
||||
msgstr "Der Benutzername ist zu kurz (min. %d Zeichen)"
|
||||
|
||||
#: views/html/users/create.tpl:21 views/html/users/edit.tpl:25
|
||||
#: views/html/users/register.tpl:21
|
||||
#, php-format
|
||||
msgid "Username is too long (max. %d chars)"
|
||||
msgstr "Der Benutzername ist zu lang (max. %d Zeichen)"
|
||||
|
||||
#: views/html/users/create.tpl:23 views/html/users/edit.tpl:27
|
||||
#: views/html/users/register.tpl:23
|
||||
msgid "Username contains illegal characters"
|
||||
msgstr "Der Benutzername enthält ungültige Zeichen"
|
||||
|
||||
#: views/html/users/create.tpl:25 views/html/users/edit.tpl:29
|
||||
#: views/html/users/register.tpl:25
|
||||
msgid "Username already exists"
|
||||
msgstr "Der Benutzername existiert bereits"
|
||||
|
||||
#: views/html/users/create.tpl:27 views/html/users/edit.tpl:31
|
||||
#: views/html/users/register.tpl:27
|
||||
msgid "Username invalid"
|
||||
msgstr "Der Benutzername ist ungültig"
|
||||
|
||||
#: views/html/users/create.tpl:32 views/html/users/edit.tpl:36
|
||||
#: views/html/users/register.tpl:32
|
||||
#, php-format
|
||||
msgid "Prename is too short (min. %d chars)"
|
||||
msgstr "Der Vorname ist zu kurz (min. %d Zeichen)"
|
||||
|
||||
#: views/html/users/create.tpl:34 views/html/users/edit.tpl:38
|
||||
#: views/html/users/register.tpl:34
|
||||
#, php-format
|
||||
msgid "Prename is too long (max. %d chars)"
|
||||
msgstr "Der Vorname ist zu lang (max. %d Zeichen)"
|
||||
|
||||
#: views/html/users/create.tpl:36 views/html/users/edit.tpl:40
|
||||
#: views/html/users/register.tpl:36
|
||||
#, php-format
|
||||
msgid "Prename contains illegal characters"
|
||||
msgstr "Der Vorname enthält ungültige Zeichen"
|
||||
|
||||
#: views/html/users/create.tpl:38 views/html/users/edit.tpl:42
|
||||
#: views/html/users/register.tpl:38
|
||||
msgid "Prename invalid"
|
||||
msgstr "Der Vorname ist ungültig"
|
||||
|
||||
#: views/html/users/create.tpl:43 views/html/users/edit.tpl:47
|
||||
#: views/html/users/register.tpl:43
|
||||
#, php-format
|
||||
msgid "Surname is too short (min. %d chars)"
|
||||
msgstr "Der Nachname ist zu kurz (min. %d Zeichen)"
|
||||
|
||||
#: views/html/users/create.tpl:45 views/html/users/edit.tpl:49
|
||||
#: views/html/users/register.tpl:45
|
||||
#, php-format
|
||||
msgid "Surname is too long (max. %d chars)"
|
||||
msgstr "Der Nachname ist zu lang (max. %d Zeichen)"
|
||||
|
||||
#: views/html/users/create.tpl:47 views/html/users/edit.tpl:51
|
||||
#: views/html/users/register.tpl:47
|
||||
#, php-format
|
||||
msgid "Surname contains illegal characters"
|
||||
msgstr "Der Nachname enthält ungültige Zeichen"
|
||||
|
||||
#: views/html/users/create.tpl:49 views/html/users/edit.tpl:53
|
||||
#: views/html/users/register.tpl:49
|
||||
msgid "Surname invalid"
|
||||
msgstr "Der Nachname ist ungültig"
|
||||
|
||||
#: views/html/users/create.tpl:54 views/html/users/create.tpl:58
|
||||
#: views/html/users/edit.tpl:58 views/html/users/edit.tpl:62
|
||||
#: views/html/users/register.tpl:54 views/html/users/register.tpl:58
|
||||
msgid "E‑mail address invalid"
|
||||
msgstr "Die E‑Mail-Adresse ist ungültig"
|
||||
|
||||
#: views/html/users/create.tpl:56 views/html/users/edit.tpl:60
|
||||
#: views/html/users/register.tpl:56
|
||||
msgid "E‑mail address already exists"
|
||||
msgstr "E‑Mail-Adresse existiert bereits"
|
||||
|
||||
#: views/html/users/create.tpl:63 views/html/users/edit.tpl:67
|
||||
#: views/html/users/register.tpl:63
|
||||
#, php-format
|
||||
msgid "Password is too short (min. %d chars)"
|
||||
msgstr "Das Passwort ist zu kurz (min. %d Zeichen)"
|
||||
|
||||
#: views/html/users/create.tpl:65 views/html/users/edit.tpl:69
|
||||
#: views/html/users/register.tpl:65
|
||||
#, php-format
|
||||
msgid "Password is too long (max. %d chars)"
|
||||
msgstr "Das Passwort ist zu lang (max. %d Zeichen)"
|
||||
|
||||
#: views/html/users/create.tpl:67 views/html/users/edit.tpl:71
|
||||
#: views/html/users/register.tpl:67
|
||||
msgid "Password invalid"
|
||||
msgstr "Das Passwort ist ungültig"
|
||||
|
||||
#: views/html/users/create.tpl:86 views/html/users/create.tpl:87
|
||||
#: views/html/users/edit.tpl:94 views/html/users/edit.tpl:95
|
||||
#: views/html/users/register.tpl:85 views/html/users/register.tpl:86
|
||||
msgid "Prename"
|
||||
msgstr "Vorname"
|
||||
|
||||
#: views/html/users/create.tpl:13 views/html/users/create.tpl:14
|
||||
#: views/html/users/edit.tpl:12 views/html/users/edit.tpl:13
|
||||
#: views/html/users/register.tpl:85 views/html/users/register.tpl:86
|
||||
#: views/html/users/create.tpl:88 views/html/users/create.tpl:89
|
||||
#: views/html/users/edit.tpl:96 views/html/users/edit.tpl:97
|
||||
#: views/html/users/register.tpl:87 views/html/users/register.tpl:88
|
||||
msgid "Surname"
|
||||
msgstr "Nachname"
|
||||
|
||||
#: views/html/users/create.tpl:15 views/html/users/create.tpl:16
|
||||
#: views/html/users/edit.tpl:14 views/html/users/edit.tpl:15
|
||||
#: views/html/users/register.tpl:87 views/html/users/register.tpl:88
|
||||
#: views/html/users/user.tpl:15
|
||||
#: views/html/users/create.tpl:90 views/html/users/create.tpl:91
|
||||
#: views/html/users/edit.tpl:98 views/html/users/edit.tpl:99
|
||||
#: views/html/users/register.tpl:89 views/html/users/register.tpl:90
|
||||
#: views/html/users/user.tpl:24
|
||||
msgid "E‑mail address"
|
||||
msgstr "E‑Mail-Adresse"
|
||||
|
||||
#: views/html/users/delete.tpl:5 views/html/users/user.tpl:8
|
||||
#: views/html/users/delete.tpl:8 views/html/users/user.tpl:18
|
||||
msgid "Delete user"
|
||||
msgstr "Benutzer löschen"
|
||||
|
||||
#: views/html/users/delete.tpl:7
|
||||
#: views/html/users/delete.tpl:9
|
||||
#, php-format
|
||||
msgid "Should the user “%s” (%s) really be deleted?"
|
||||
msgstr "Soll der Benutzer „%s“ (%s) wirklich gelöscht werden?"
|
||||
|
||||
#: views/html/users/edit.tpl:5 views/html/users/user.tpl:7
|
||||
#: views/html/users/edit.tpl:12 views/html/users/user.tpl:15
|
||||
msgid "Edit user"
|
||||
msgstr "Benutzer bearbeiten"
|
||||
|
||||
|
|
@ -934,7 +1059,7 @@ msgstr "Benutzer bearbeiten"
|
|||
msgid "Create new user"
|
||||
msgstr "Neuen Benutzer erstellen"
|
||||
|
||||
#: views/html/users/index.tpl:10 views/html/users/user.tpl:13
|
||||
#: views/html/users/index.tpl:10 views/html/users/user.tpl:22
|
||||
#, php-format
|
||||
msgid "registered on %s"
|
||||
msgstr "registriert am %s"
|
||||
|
|
@ -943,97 +1068,15 @@ msgstr "registriert am %s"
|
|||
msgid "Login failed"
|
||||
msgstr "Die Anmeldung war nicht korrekt"
|
||||
|
||||
#: views/html/users/register.tpl:6
|
||||
#: views/html/users/register.tpl:8
|
||||
msgid "Registration"
|
||||
msgstr "Registrierung"
|
||||
|
||||
#: views/html/users/register.tpl:17
|
||||
#, php-format
|
||||
msgid "Username is too short (min. %d chars)"
|
||||
msgstr "Der Benutzername ist zu kurz (min. %d Zeichen)"
|
||||
|
||||
#: views/html/users/register.tpl:19
|
||||
#, php-format
|
||||
msgid "Username is too long (max. %d chars)"
|
||||
msgstr "Der Benutzername ist zu lang (max. %d Zeichen)"
|
||||
|
||||
#: views/html/users/register.tpl:21
|
||||
msgid "Username contains illegal characters"
|
||||
msgstr "Der Benutzername enthält ungültige Zeichen"
|
||||
|
||||
#: views/html/users/register.tpl:23
|
||||
msgid "Username already exists"
|
||||
msgstr "Der Benutzername existiert bereits"
|
||||
|
||||
#: views/html/users/register.tpl:25
|
||||
msgid "Username invalid"
|
||||
msgstr "Der Benutzername ist ungültig"
|
||||
|
||||
#: views/html/users/register.tpl:30
|
||||
#, php-format
|
||||
msgid "Prename is too short (min. %d chars)"
|
||||
msgstr "Der Vorname ist zu kurz (min. %d Zeichen)"
|
||||
|
||||
#: views/html/users/register.tpl:32
|
||||
#, php-format
|
||||
msgid "Prename is too long (max. %d chars)"
|
||||
msgstr "Der Vorname ist zu lang (max. %d Zeichen)"
|
||||
|
||||
#: views/html/users/register.tpl:34
|
||||
#, php-format
|
||||
msgid "Prename contains illegal characters"
|
||||
msgstr "Der Vorname enthält ungültige Zeichen"
|
||||
|
||||
#: views/html/users/register.tpl:36
|
||||
msgid "Prename invalid"
|
||||
msgstr "Der Vorname ist ungültig"
|
||||
|
||||
#: views/html/users/register.tpl:41
|
||||
#, php-format
|
||||
msgid "Surname is too short (min. %d chars)"
|
||||
msgstr "Der Nachname ist zu kurz (min. %d Zeichen)"
|
||||
|
||||
#: views/html/users/register.tpl:43
|
||||
#, php-format
|
||||
msgid "Surname is too long (max. %d chars)"
|
||||
msgstr "Der Nachname ist zu lang (max. %d Zeichen)"
|
||||
|
||||
#: views/html/users/register.tpl:45
|
||||
#, php-format
|
||||
msgid "Surname contains illegal characters"
|
||||
msgstr "Der Nachname enthält ungültige Zeichen"
|
||||
|
||||
#: views/html/users/register.tpl:47
|
||||
msgid "Surname invalid"
|
||||
msgstr "Der Nachname ist ungültig"
|
||||
|
||||
#: views/html/users/register.tpl:52 views/html/users/register.tpl:56
|
||||
msgid "E‑mail address invalid"
|
||||
msgstr "Die E‑Mail-Adresse ist ungültig"
|
||||
|
||||
#: views/html/users/register.tpl:54
|
||||
msgid "E‑mail address already exists"
|
||||
msgstr "E‑Mail-Adresse existiert bereits"
|
||||
|
||||
#: views/html/users/register.tpl:61
|
||||
#, php-format
|
||||
msgid "Password is too short (min. %d chars)"
|
||||
msgstr "Das Passwort ist zu kurz (min. %d Zeichen)"
|
||||
|
||||
#: views/html/users/register.tpl:63
|
||||
#, php-format
|
||||
msgid "Password is too long (max. %d chars)"
|
||||
msgstr "Das Passwort ist zu lang (max. %d Zeichen)"
|
||||
|
||||
#: views/html/users/register.tpl:65
|
||||
msgid "Password invalid"
|
||||
msgstr "Das Passwort ist ungültig"
|
||||
|
||||
#: views/html/users/register.tpl:92
|
||||
#: views/html/users/register.tpl:94
|
||||
msgid "Register"
|
||||
msgstr "Registrieren"
|
||||
|
||||
#: views/html/users/user.tpl:37
|
||||
#: views/html/users/user.tpl:46
|
||||
msgid "Roles"
|
||||
msgstr "Rollen"
|
||||
|
||||
|
|
|
|||
|
|
@ -424,28 +424,49 @@
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get Characters with the given Character role.
|
||||
*
|
||||
* @param int $seminaryId ID of Seminary
|
||||
* @param string $characterrole Character role
|
||||
* @return array List of users
|
||||
*/
|
||||
public function getCharactersWithCharacterRole($seminaryId, $characterrole)
|
||||
{
|
||||
return $this->db->query(
|
||||
'SELECT characters.id, characters.created, characters.charactertype_id, characters.name, characters.url, characters.user_id, characters.xps, characters.xplevel, characters.avatar_id, charactertypes.name AS charactertype_name, charactertypes.url AS charactertype_url, seminaries.id AS seminary_url, seminaries.title AS seminary_title, seminaries.url AS seminary_url '.
|
||||
'FROM v_characters AS characters '.
|
||||
'LEFT JOIN charactertypes ON charactertypes.id = characters.charactertype_id '.
|
||||
'LEFT JOIN seminaries ON seminaries.id = charactertypes.seminary_id '.
|
||||
'LEFT JOIN characters_characterroles ON characters_characterroles.character_id = characters.id '.
|
||||
'LEFT JOIN characterroles ON characterroles.id = characters_characterroles.characterrole_id '.
|
||||
'WHERE seminaries.id = ? AND characterroles.name = ?',
|
||||
'is',
|
||||
$seminaryId, $characterrole
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Check if a Character name already exists.
|
||||
*
|
||||
* @param string $name Character name to check
|
||||
* @return boolean Whether Character name exists or not
|
||||
* @param string $name Character name to check
|
||||
* @param int $characterId Do not check this ID (for editing)
|
||||
* @return boolean Whether Character name exists or not
|
||||
*/
|
||||
public function characterNameExists($name)
|
||||
public function characterNameExists($name, $characterId=null)
|
||||
{
|
||||
$data = $this->db->query(
|
||||
'SELECT count(id) AS c '.
|
||||
'SELECT id '.
|
||||
'FROM characters '.
|
||||
'WHERE name = ? OR url = ?',
|
||||
'ss',
|
||||
$name,
|
||||
\nre\core\Linker::createLinkParam($name)
|
||||
);
|
||||
if(!empty($data)) {
|
||||
return ($data[0]['c'] > 0);
|
||||
}
|
||||
|
||||
|
||||
return false;
|
||||
return (!empty($data) && (is_null($characterId) || $characterId != $data[0]['id']));
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -477,50 +498,35 @@
|
|||
|
||||
|
||||
/**
|
||||
* Set the value of a Seminary field for a Character.
|
||||
* Edit a new Character.
|
||||
*
|
||||
* @param int $characterId ID of Character
|
||||
* @param int $seminarycharacterfieldId ID of seminarycharacterfield to set value of
|
||||
* @param string $value Value to set
|
||||
* @param int $characterId ID of the Character to edit
|
||||
* @param int $charactertypeId ID of new type of Character
|
||||
* @param string $characterName New name for Character
|
||||
*/
|
||||
public function setSeminaryFieldOfCharacter($characterId, $seminarycharacterfieldId, $value)
|
||||
public function editCharacter($characterId, $charactertypeId, $characterName)
|
||||
{
|
||||
$this->db->query(
|
||||
'INSERT INTO characters_seminarycharacterfields '.
|
||||
'(character_id, seminarycharacterfield_id, value) '.
|
||||
'VALUES '.
|
||||
'(?, ?, ?) '.
|
||||
'ON DUPLICATE KEY UPDATE '.
|
||||
'value = ?',
|
||||
'iiss',
|
||||
$characterId,
|
||||
$seminarycharacterfieldId,
|
||||
$value,
|
||||
$value
|
||||
'UPDATE characters '.
|
||||
'SET charactertype_id = ?, name = ?, url = ? '.
|
||||
'WHERE id = ?',
|
||||
'issi',
|
||||
$charactertypeId,
|
||||
$characterName,
|
||||
\nre\core\Linker::createLinkParam($characterName),
|
||||
$characterId
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get Characters with the given Character role.
|
||||
* Delete a Character.
|
||||
*
|
||||
* @param int $seminaryId ID of Seminary
|
||||
* @param string $characterrole Character role
|
||||
* @return array List of users
|
||||
* @param int $characterId ID of the Character to delete
|
||||
*/
|
||||
public function getCharactersWithCharacterRole($seminaryId, $characterrole)
|
||||
public function deleteCharacter($characterId)
|
||||
{
|
||||
return $this->db->query(
|
||||
'SELECT characters.id, characters.created, characters.charactertype_id, characters.name, characters.url, characters.user_id, characters.xps, characters.xplevel, characters.avatar_id, charactertypes.name AS charactertype_name, charactertypes.url AS charactertype_url, seminaries.id AS seminary_url, seminaries.title AS seminary_title, seminaries.url AS seminary_url '.
|
||||
'FROM v_characters AS characters '.
|
||||
'LEFT JOIN charactertypes ON charactertypes.id = characters.charactertype_id '.
|
||||
'LEFT JOIN seminaries ON seminaries.id = charactertypes.seminary_id '.
|
||||
'LEFT JOIN characters_characterroles ON characters_characterroles.character_id = characters.id '.
|
||||
'LEFT JOIN characterroles ON characterroles.id = characters_characterroles.characterrole_id '.
|
||||
'WHERE seminaries.id = ? AND characterroles.name = ?',
|
||||
'is',
|
||||
$seminaryId, $characterrole
|
||||
);
|
||||
$this->db->query('DELETE FROM characters WHERE id = ?', 'i', $characterId);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -54,6 +54,56 @@
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set the value of a Seminary field for a Character.
|
||||
*
|
||||
* @param int $characterId ID of Character
|
||||
* @param int $seminarycharacterfieldId ID of seminarycharacterfield to set value of
|
||||
* @param string $value Value to set
|
||||
*/
|
||||
public function setSeminaryFieldOfCharacter($seminarycharacterfieldId, $characterId, $value)
|
||||
{
|
||||
$this->db->query(
|
||||
'INSERT INTO characters_seminarycharacterfields '.
|
||||
'(character_id, seminarycharacterfield_id, value) '.
|
||||
'VALUES '.
|
||||
'(?, ?, ?) '.
|
||||
'ON DUPLICATE KEY UPDATE '.
|
||||
'value = ?',
|
||||
'iiss',
|
||||
$characterId,
|
||||
$seminarycharacterfieldId,
|
||||
$value,
|
||||
$value
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get Seminary Character fields of a Character.
|
||||
*
|
||||
* @param int $characterId ID of the Character
|
||||
* @return array Seminary Character fields
|
||||
*/
|
||||
public function getSeminaryFieldOfCharacter($fieldId, $characterId)
|
||||
{
|
||||
$data = $this->db->query(
|
||||
'SELECT created, value '.
|
||||
'FROM characters_seminarycharacterfields '.
|
||||
'WHERE seminarycharacterfield_id = ? AND character_id = ?',
|
||||
'ii',
|
||||
$fieldId,
|
||||
$characterId
|
||||
);
|
||||
if(!empty($data)) {
|
||||
return $data[0];
|
||||
}
|
||||
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get Seminary Character fields of a Character.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -14,7 +14,17 @@
|
|||
<?php endif ?>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h1><i class="fa fa-user fa-fw"></i><?=$character['name']?></h1>
|
||||
<nav class="admin">
|
||||
<?php if(count(array_intersect(array('admin','moderator'), \hhu\z\controllers\SeminaryController::$character['characterroles'])) > 0 || $character['id'] == \hhu\z\controllers\SeminaryController::$character['id']) : ?>
|
||||
<li><a href="<?=$linker->link(array('edit',$seminary['url'],$character['url']),1)?>"><?=_('Edit Character')?></a></li>
|
||||
<?php endif ?>
|
||||
<?php if(count(array_intersect(array('admin', 'moderator'), \hhu\z\controllers\SeminaryController::$character['characterroles'])) > 0) : ?>
|
||||
<li><a href="<?=$linker->link(array('delete',$seminary['url'],$character['url']),1)?>"><?=_('Delete Character')?></a></li>
|
||||
<?php endif ?>
|
||||
</nav>
|
||||
|
||||
<section class="cf">
|
||||
<div class="cinfo">
|
||||
<div class="cdata">
|
||||
|
|
|
|||
19
views/html/characters/delete.tpl
Normal file
19
views/html/characters/delete.tpl
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
<?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>
|
||||
<a href="<?=$linker->link(array('characters','index',$seminary['url']))?>"><?=_('Characters')?></a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h1><?=_('Delete Character')?></h1>
|
||||
<?=sprintf(_('Should the Character “%s” of user “%s” (%s) really be deleted?'), $character['name'], $user['username'], $user['email'])?>
|
||||
<form method="post">
|
||||
<input type="submit" name="delete" value="<?=_('delete')?>" />
|
||||
<input type="submit" name="not-delete" value="<?=_('cancel')?>" />
|
||||
</form>
|
||||
95
views/html/characters/edit.tpl
Normal file
95
views/html/characters/edit.tpl
Normal file
|
|
@ -0,0 +1,95 @@
|
|||
<?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><a href="<?=$linker->link(array('characters','index',$seminary['url']))?>"><?=_('Characters')?></a></li>
|
||||
</ul>
|
||||
|
||||
<h1><?=_('Edit Character')?></h1>
|
||||
<form method="post" action="" class="logreg">
|
||||
<?php if($validation !== true) : ?>
|
||||
<ul>
|
||||
<?php foreach($validation as $field => &$settings) : ?>
|
||||
<li>
|
||||
<ul>
|
||||
<?php foreach($settings as $setting => $value) : ?>
|
||||
<li>
|
||||
<?php switch($field) {
|
||||
case 'charactername':
|
||||
switch($setting) {
|
||||
case 'minlength': printf(_('Character name is too short (min. %d chars)'), $value);
|
||||
break;
|
||||
case 'maxlength': printf(_('Character name is too long (max. %d chars)'), $value);
|
||||
break;
|
||||
case 'regex': echo _('Character name contains illegal characters');
|
||||
break;
|
||||
case 'exist': echo _('Character name already exists');
|
||||
break;
|
||||
default: echo _('Character name invalid');
|
||||
}
|
||||
break;
|
||||
} ?>
|
||||
</li>
|
||||
<?php endforeach ?>
|
||||
</ul>
|
||||
</li>
|
||||
<?php endforeach ?>
|
||||
</ul>
|
||||
<?php endif ?>
|
||||
<fieldset>
|
||||
<legend class="fwb"><?=_('Character properties')?></legend>
|
||||
<label for="charactername"><?=_('Character name')?>:</label>
|
||||
<?php if(count(array_intersect(array('admin','moderator'), \hhu\z\controllers\SeminaryController::$character['characterroles'])) > 0) : ?>
|
||||
<input type="text" name="charactername" placeholder="<?=_('Character name')?>" required="required" value="<?=$charactername?>" maxlength="<?=$validationSettings['charactername']['maxlength']?>" <?=(array_key_exists('charactername', $validation)) ? 'class="invalid"' : null ?>/>
|
||||
<?php else : ?>
|
||||
<input type="text" name="charactername" placeholder="<?=_('Character name')?>" disabled="disabled" value="<?=$charactername?>" />
|
||||
<input type="hidden" name="charactername" value="<?=$charactername?>" />
|
||||
<?php endif ?><br />
|
||||
<ul class="avatar">
|
||||
<?php foreach($types as &$type) : ?>
|
||||
<li>
|
||||
<label for="type-<?=$type['id']?>">
|
||||
<p><?=$type['name']?></p>
|
||||
<img id="avatar" src="<?=$linker->link(array('media','avatar',$seminary['url'],$type['url'],$xplevels[0]['level'],'portrait'))?>" />
|
||||
</label>
|
||||
<input id="type-<?=$type['id']?>" name="type" type="radio" value="<?=$type['url']?>" <?php if(array_key_exists('selected', $type) && $type['selected']) : ?>checked="checked"<?php endif ?> />
|
||||
</li>
|
||||
<?php endforeach ?>
|
||||
</ul>
|
||||
</fieldset>
|
||||
|
||||
<?php if($fieldsValidation !== true) : ?>
|
||||
<ul>
|
||||
<?php foreach($fieldsValidation as $field => &$settings) : ?>
|
||||
<li><?=sprintf(_('The Seminary field “%s” is invalid'), $field)?></li>
|
||||
<?php endforeach ?>
|
||||
</ul>
|
||||
<?php endif ?>
|
||||
<fieldset>
|
||||
<legend class="fwb"><?=_('Seminary fields')?></legend>
|
||||
<?php foreach($fields as &$field) : ?>
|
||||
<label for="fields[<?=$field['url']?>]"><?=$field['title']?>:</label>
|
||||
<?php switch($field['type_title']) {
|
||||
case 'Number':
|
||||
case 'Varchar': ?>
|
||||
<input type="text" name="fields[<?=$field['url']?>]" pattern="<?=(!empty($field['regex'])) ? substr($field['regex'],1,strrpos($field['regex'],$field['regex'][0])-1) : ''?>" <?php if(array_key_exists('uservalue', $field)) : ?>value="<?=$field['uservalue']?>"<?php endif ?> <?php if($field['required']) : ?>required="required"<?php endif ?>/>
|
||||
<?php break;
|
||||
case 'Text': ?>
|
||||
<textarea name="fields[<?=$field['url']?>]"><?=(array_key_exists('uservalue', $field) ? $field['uservalue'] : null)?></textarea>
|
||||
<?php break;
|
||||
case 'List': ?>
|
||||
<select name="fields[<?=$field['url']?>]">
|
||||
<?php foreach(explode('|', substr($field['regex'],1,strrpos($field['regex'],$field['regex'][0])-1)) as $option) : ?>
|
||||
<option value="<?=mb_eregi_replace('\\\\','',$option)?>" <?php if(array_key_exists('uservalue', $field) && $field['uservalue'] == mb_eregi_replace('\\\\','',$option)) : ?>selected="selected"<?php endif ?>><?=mb_eregi_replace('\\\\','',$option)?></option>
|
||||
<?php endforeach?>
|
||||
</select>
|
||||
<?php break;
|
||||
} ?>
|
||||
<br />
|
||||
<?php endforeach ?>
|
||||
</fieldset>
|
||||
<input type="submit" name="edit" value="<?=_('edit')?>" />
|
||||
</form>
|
||||
|
|
@ -4,7 +4,8 @@
|
|||
</div>
|
||||
<?php endif ?>
|
||||
<ul class="breadcrumbs">
|
||||
<li><a href="<?=$linker->link(array('seminaries',$seminary['url']))?>"><?=$seminary['title']?></a></li>
|
||||
<li><?=$seminary['title']?></li>
|
||||
<li><i class="fa fa-chevron-right fa-fw"></i><?=_('Characters')?></li>
|
||||
</ul>
|
||||
<h1><?=_('Create Character')?></h1>
|
||||
<form method="post" action="" class="logreg">
|
||||
|
|
@ -29,6 +30,12 @@
|
|||
default: echo _('Character name invalid');
|
||||
}
|
||||
break;
|
||||
case 'type':
|
||||
switch($setting) {
|
||||
case 'exist': echo _('Please choose an avatar');
|
||||
break;
|
||||
}
|
||||
break;
|
||||
} ?>
|
||||
</li>
|
||||
<?php endforeach ?>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue