implement CRUD for Characters and improve Character registration
This commit is contained in:
parent
fe55b87ea4
commit
0cba4afefb
10 changed files with 607 additions and 199 deletions
|
|
@ -183,7 +183,8 @@
|
||||||
array('^quests/(?!(index|create|createmedia))/?', 'quests/quest/$1', true),
|
array('^quests/(?!(index|create|createmedia))/?', 'quests/quest/$1', true),
|
||||||
array('^characters/([^/]+)/(register|manage)/?$', 'characters/$2/$1', true),
|
array('^characters/([^/]+)/(register|manage)/?$', 'characters/$2/$1', true),
|
||||||
array('^characters/([^/]+)/?$', 'characters/index/$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/([^/]+)/?$', 'charactergroups/index/$1', true),
|
||||||
array('^charactergroups/([^/]+)/(create)/?$', 'charactergroups/creategroupsgroup/$1/$2', true),
|
array('^charactergroups/([^/]+)/(create)/?$', 'charactergroups/creategroupsgroup/$1/$2', true),
|
||||||
array('^charactergroups/([^/]+)/([^/]+)/?$', 'charactergroups/groupsgroup/$1/$2', true),
|
array('^charactergroups/([^/]+)/([^/]+)/?$', 'charactergroups/groupsgroup/$1/$2', true),
|
||||||
|
|
@ -220,7 +221,8 @@
|
||||||
array('^quests/(submissions)/(.*)$', 'quests/$2/$1', true),
|
array('^quests/(submissions)/(.*)$', 'quests/$2/$1', true),
|
||||||
array('^quests/(submission)/([^/]+)/([^/]+)/([^/]+)/([^/]+)$', 'quests/$2/$3/$4/$1/$5', true),
|
array('^quests/(submission)/([^/]+)/([^/]+)/([^/]+)/([^/]+)$', 'quests/$2/$3/$4/$1/$5', true),
|
||||||
array('^characters/(index|character)/(.*)$', 'characters/$2', true),
|
array('^characters/(index|character)/(.*)$', 'characters/$2', true),
|
||||||
array('^characters/(register|manage)/(.*)$', 'characters/$2/$1', 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/index/([^/]+)$', 'charactergroups/$1', true),
|
||||||
array('^charactergroups/creategroupsgroup/([^/]+)$', 'charactergroups/$1/create', true),
|
array('^charactergroups/creategroupsgroup/([^/]+)$', 'charactergroups/$1/create', true),
|
||||||
array('^charactergroups/groupsgroup/([^/]+)/([^/]+)$', 'charactergroups/$1/$2', true),
|
array('^charactergroups/groupsgroup/([^/]+)/([^/]+)$', 'charactergroups/$1/$2', true),
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,9 @@
|
||||||
'index' => array('admin', 'moderator', 'user'),
|
'index' => array('admin', 'moderator', 'user'),
|
||||||
'character' => array('admin', 'moderator', 'user'),
|
'character' => array('admin', 'moderator', 'user'),
|
||||||
'register' => 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
|
* User seminary permissions
|
||||||
|
|
@ -50,7 +52,9 @@
|
||||||
public $seminaryPermissions = array(
|
public $seminaryPermissions = array(
|
||||||
'index' => array('admin', 'moderator'),
|
'index' => array('admin', 'moderator'),
|
||||||
'character' => array('admin', 'moderator', 'user'),
|
'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)) {
|
if(is_null($typeIndex)) {
|
||||||
throw new \nre\exceptions\ParamsNotValidException($typeIndex);
|
$validation = $this->Validation->addValidationResult($validation, 'type', 'exist', false);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Validate fields
|
// Validate fields
|
||||||
|
|
@ -274,7 +278,7 @@
|
||||||
// Add Seminary fields
|
// Add Seminary fields
|
||||||
foreach($fields as &$field) {
|
foreach($fields as &$field) {
|
||||||
if(!empty($fieldsValues[$field['url']])) {
|
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 ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: The Legend of Z\n"
|
"Project-Id-Version: The Legend of Z\n"
|
||||||
"POT-Creation-Date: 2014-05-01 01:48+0100\n"
|
"POT-Creation-Date: 2014-05-01 13:08+0100\n"
|
||||||
"PO-Revision-Date: 2014-05-01 01:48+0100\n"
|
"PO-Revision-Date: 2014-05-01 13:08+0100\n"
|
||||||
"Last-Translator: \n"
|
"Last-Translator: \n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
"Language: de_DE\n"
|
"Language: de_DE\n"
|
||||||
|
|
@ -164,7 +164,7 @@ msgstr "Persönlicher Fortschritt: %d%%"
|
||||||
#: views/html/achievements/index.tpl:52
|
#: views/html/achievements/index.tpl:52
|
||||||
#: views/html/charactergroups/group.tpl:30
|
#: views/html/charactergroups/group.tpl:30
|
||||||
#: views/html/charactergroups/managegroup.tpl:23
|
#: 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"
|
msgid "Rank"
|
||||||
msgstr "Platz"
|
msgstr "Platz"
|
||||||
|
|
||||||
|
|
@ -197,7 +197,7 @@ msgstr "Spiele weiter, um diesen geheimen Erfolg freizuschalten"
|
||||||
#: views/html/charactergroupsquests/edit.tpl:8
|
#: views/html/charactergroupsquests/edit.tpl:8
|
||||||
#: views/html/charactergroupsquests/manage.tpl:8
|
#: views/html/charactergroupsquests/manage.tpl:8
|
||||||
#: views/html/charactergroupsquests/quest.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"
|
msgid "Character Groups"
|
||||||
msgstr "Gruppen"
|
msgstr "Gruppen"
|
||||||
|
|
||||||
|
|
@ -262,7 +262,7 @@ msgstr "Das Motto ist ungültig"
|
||||||
#: views/html/charactergroups/editgroupsgroup.tpl:46
|
#: views/html/charactergroups/editgroupsgroup.tpl:46
|
||||||
#: views/html/charactergroups/editgroupsgroup.tpl:47
|
#: views/html/charactergroups/editgroupsgroup.tpl:47
|
||||||
#: views/html/quests/create.tpl:15 views/html/quests/create.tpl:16
|
#: 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"
|
msgid "Name"
|
||||||
msgstr "Name"
|
msgstr "Name"
|
||||||
|
|
||||||
|
|
@ -276,8 +276,8 @@ msgstr "Motto"
|
||||||
#: views/html/charactergroups/creategroup.tpl:59
|
#: views/html/charactergroups/creategroup.tpl:59
|
||||||
#: views/html/charactergroups/creategroupsgroup.tpl:50
|
#: views/html/charactergroups/creategroupsgroup.tpl:50
|
||||||
#: views/html/charactergroupsquests/create.tpl:75
|
#: views/html/charactergroupsquests/create.tpl:75
|
||||||
#: views/html/characters/register.tpl:87 views/html/seminaries/create.tpl:12
|
#: views/html/characters/register.tpl:94 views/html/seminaries/create.tpl:12
|
||||||
#: views/html/users/create.tpl:20
|
#: views/html/users/create.tpl:96
|
||||||
msgid "create"
|
msgid "create"
|
||||||
msgstr "erstellen"
|
msgstr "erstellen"
|
||||||
|
|
||||||
|
|
@ -303,14 +303,16 @@ msgstr "Soll die Gruppe „%s“ wirklich gelöscht werden?"
|
||||||
#: views/html/charactergroups/deletegroup.tpl:15
|
#: views/html/charactergroups/deletegroup.tpl:15
|
||||||
#: views/html/charactergroups/deletegroupsgroup.tpl:14
|
#: views/html/charactergroups/deletegroupsgroup.tpl:14
|
||||||
#: views/html/charactergroupsquests/delete.tpl:15
|
#: 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"
|
msgid "delete"
|
||||||
msgstr "löschen"
|
msgstr "löschen"
|
||||||
|
|
||||||
#: views/html/charactergroups/deletegroup.tpl:16
|
#: views/html/charactergroups/deletegroup.tpl:16
|
||||||
#: views/html/charactergroups/deletegroupsgroup.tpl:15
|
#: views/html/charactergroups/deletegroupsgroup.tpl:15
|
||||||
#: views/html/charactergroupsquests/delete.tpl:16
|
#: 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"
|
msgid "cancel"
|
||||||
msgstr "abbrechen"
|
msgstr "abbrechen"
|
||||||
|
|
||||||
|
|
@ -332,6 +334,7 @@ msgstr "Gruppe bearbeiten"
|
||||||
#: views/html/charactergroups/editgroup.tpl:59
|
#: views/html/charactergroups/editgroup.tpl:59
|
||||||
#: views/html/charactergroups/editgroupsgroup.tpl:50
|
#: views/html/charactergroups/editgroupsgroup.tpl:50
|
||||||
#: views/html/charactergroupsquests/edit.tpl:75
|
#: views/html/charactergroupsquests/edit.tpl:75
|
||||||
|
#: views/html/characters/edit.tpl:94
|
||||||
msgid "edit"
|
msgid "edit"
|
||||||
msgstr "bearbeiten"
|
msgstr "bearbeiten"
|
||||||
|
|
||||||
|
|
@ -351,10 +354,10 @@ msgstr "Gruppe verwalten"
|
||||||
#: views/html/charactergroupsquests/manage.tpl:36
|
#: views/html/charactergroupsquests/manage.tpl:36
|
||||||
#: views/html/charactergroupsquests/quest.tpl:29
|
#: views/html/charactergroupsquests/quest.tpl:29
|
||||||
#: views/html/charactergroupsquests/quest.tpl:62
|
#: views/html/charactergroupsquests/quest.tpl:62
|
||||||
#: views/html/characters/character.tpl:67
|
#: views/html/characters/character.tpl:77
|
||||||
#: views/html/characters/character.tpl:73
|
#: views/html/characters/character.tpl:83
|
||||||
#: views/html/characters/character.tpl:79
|
#: views/html/characters/character.tpl:89
|
||||||
#: views/html/characters/character.tpl:97 views/html/quests/index.tpl:37
|
#: 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/seminaries/index.tpl:29 views/html/seminarybar/index.tpl:6
|
||||||
#: views/html/seminarybar/index.tpl:42
|
#: views/html/seminarybar/index.tpl:42
|
||||||
#, php-format
|
#, php-format
|
||||||
|
|
@ -374,9 +377,10 @@ msgstr "Mitglied"
|
||||||
#: views/html/charactergroups/group.tpl:36
|
#: views/html/charactergroups/group.tpl:36
|
||||||
#: views/html/charactergroups/managegroup.tpl:29
|
#: views/html/charactergroups/managegroup.tpl:29
|
||||||
#: views/html/characters/character.tpl:11
|
#: views/html/characters/character.tpl:11
|
||||||
#: views/html/characters/character.tpl:13 views/html/characters/index.tpl:9
|
#: views/html/characters/character.tpl:13 views/html/characters/delete.tpl:10
|
||||||
#: views/html/characters/manage.tpl:8 views/html/seminarymenu/index.tpl:2
|
#: views/html/characters/edit.tpl:8 views/html/characters/index.tpl:9
|
||||||
#: views/html/users/user.tpl:18
|
#: 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"
|
msgid "Characters"
|
||||||
msgstr "Charaktere"
|
msgstr "Charaktere"
|
||||||
|
|
||||||
|
|
@ -559,43 +563,93 @@ msgstr "Gewonnene Quest"
|
||||||
msgid "Lost Quest"
|
msgid "Lost Quest"
|
||||||
msgstr "Verlorene 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"
|
msgid "Total progress"
|
||||||
msgstr "Fortschritt"
|
msgstr "Fortschritt"
|
||||||
|
|
||||||
#: views/html/characters/character.tpl:28
|
#: views/html/characters/character.tpl:38
|
||||||
#: views/html/characters/character.tpl:67
|
#: views/html/characters/character.tpl:77
|
||||||
#: views/html/characters/character.tpl:73
|
#: views/html/characters/character.tpl:83
|
||||||
#: views/html/characters/character.tpl:79 views/html/seminarybar/index.tpl:42
|
#: views/html/characters/character.tpl:89 views/html/seminarybar/index.tpl:42
|
||||||
#: views/html/users/user.tpl:32
|
#: views/html/users/user.tpl:41
|
||||||
msgid "Level"
|
msgid "Level"
|
||||||
msgstr "Level"
|
msgstr "Level"
|
||||||
|
|
||||||
#: views/html/characters/character.tpl:38
|
#: views/html/characters/character.tpl:48
|
||||||
msgid "Milestones"
|
msgid "Milestones"
|
||||||
msgstr "Meilensteine"
|
msgstr "Meilensteine"
|
||||||
|
|
||||||
#: views/html/characters/character.tpl:61
|
#: views/html/characters/character.tpl:71
|
||||||
msgid "Ranking"
|
msgid "Ranking"
|
||||||
msgstr "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"
|
msgid "Last Quest"
|
||||||
msgstr "Letzter Speicherpunkt"
|
msgstr "Letzter Speicherpunkt"
|
||||||
|
|
||||||
#: views/html/characters/character.tpl:112
|
#: views/html/characters/character.tpl:122
|
||||||
msgid "Topic progress"
|
msgid "Topic progress"
|
||||||
msgstr "Thematischer Fortschritt"
|
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
|
#: views/html/characters/index.tpl:13 views/html/characters/manage.tpl:10
|
||||||
msgid "Manage"
|
msgid "Manage"
|
||||||
msgstr "Verwalten"
|
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
|
#: views/html/characters/index.tpl:23 views/html/characters/manage.tpl:18
|
||||||
msgid "Role"
|
msgid "Role"
|
||||||
msgstr "Rolle"
|
msgstr "Rolle"
|
||||||
|
|
@ -627,44 +681,13 @@ msgstr "Füge Rolle hinzu"
|
||||||
msgid "Remove role"
|
msgid "Remove role"
|
||||||
msgstr "Entferne Rolle"
|
msgstr "Entferne Rolle"
|
||||||
|
|
||||||
#: views/html/characters/register.tpl:9
|
#: views/html/characters/register.tpl:10
|
||||||
msgid "Create Character"
|
msgid "Create Character"
|
||||||
msgstr "Charakter erstellen"
|
msgstr "Charakter erstellen"
|
||||||
|
|
||||||
#: views/html/characters/register.tpl:21
|
#: views/html/characters/register.tpl:35
|
||||||
#, php-format
|
msgid "Please choose an avatar"
|
||||||
msgid "Character name is too short (min. %d chars)"
|
msgstr "Bitte wähle einen Avatar aus"
|
||||||
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/error/index.tpl:5 views/html/error/index.tpl:14
|
#: views/html/error/index.tpl:5 views/html/error/index.tpl:14
|
||||||
#: views/html/introduction/index.tpl:9 views/html/menu/index.tpl:6
|
#: views/html/introduction/index.tpl:9 views/html/menu/index.tpl:6
|
||||||
|
|
@ -673,20 +696,20 @@ msgid "Login"
|
||||||
msgstr "Login"
|
msgstr "Login"
|
||||||
|
|
||||||
#: views/html/error/index.tpl:8 views/html/error/index.tpl:9
|
#: 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/introduction/index.tpl:7 views/html/users/create.tpl:84
|
||||||
#: views/html/users/create.tpl:10 views/html/users/edit.tpl:9
|
#: views/html/users/create.tpl:85 views/html/users/edit.tpl:87
|
||||||
#: views/html/users/edit.tpl:10 views/html/users/login.tpl:12
|
#: views/html/users/edit.tpl:89 views/html/users/edit.tpl:91
|
||||||
#: views/html/users/login.tpl:13 views/html/users/register.tpl:81
|
#: views/html/users/login.tpl:12 views/html/users/login.tpl:13
|
||||||
#: views/html/users/register.tpl:82
|
#: views/html/users/register.tpl:83 views/html/users/register.tpl:84
|
||||||
msgid "Username"
|
msgid "Username"
|
||||||
msgstr "Benutzername"
|
msgstr "Benutzername"
|
||||||
|
|
||||||
#: views/html/error/index.tpl:10 views/html/error/index.tpl:11
|
#: 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/introduction/index.tpl:8 views/html/users/create.tpl:92
|
||||||
#: views/html/users/create.tpl:18 views/html/users/edit.tpl:16
|
#: views/html/users/create.tpl:93 views/html/users/edit.tpl:100
|
||||||
#: views/html/users/edit.tpl:17 views/html/users/login.tpl:14
|
#: views/html/users/edit.tpl:101 views/html/users/login.tpl:14
|
||||||
#: views/html/users/login.tpl:15 views/html/users/register.tpl:89
|
#: views/html/users/login.tpl:15 views/html/users/register.tpl:91
|
||||||
#: views/html/users/register.tpl:90
|
#: views/html/users/register.tpl:92
|
||||||
msgid "Password"
|
msgid "Password"
|
||||||
msgstr "Passwort"
|
msgstr "Passwort"
|
||||||
|
|
||||||
|
|
@ -734,10 +757,11 @@ msgstr ""
|
||||||
msgid "Total progress: %d %%"
|
msgid "Total progress: %d %%"
|
||||||
msgstr "Gesamtfortschritt: %d%%"
|
msgstr "Gesamtfortschritt: %d%%"
|
||||||
|
|
||||||
#: views/html/menu/index.tpl:2 views/html/users/create.tpl:4
|
#: views/html/menu/index.tpl:2 views/html/users/create.tpl:5
|
||||||
#: views/html/users/delete.tpl:4 views/html/users/edit.tpl:4
|
#: views/html/users/delete.tpl:5 views/html/users/edit.tpl:6
|
||||||
#: views/html/users/index.tpl:4 views/html/users/login.tpl:4
|
#: views/html/users/edit.tpl:8 views/html/users/index.tpl:4
|
||||||
#: views/html/users/register.tpl:4 views/html/users/user.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"
|
msgid "Users"
|
||||||
msgstr "Benutzer"
|
msgstr "Benutzer"
|
||||||
|
|
||||||
|
|
@ -859,7 +883,7 @@ msgstr "Soll der Kurs „%s“ wirklich gelöscht werden?"
|
||||||
msgid "Edit seminary"
|
msgid "Edit seminary"
|
||||||
msgstr "Kurs bearbeiten"
|
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"
|
msgid "save"
|
||||||
msgstr "speichern"
|
msgstr "speichern"
|
||||||
|
|
||||||
|
|
@ -894,39 +918,140 @@ msgstr "Letztes Achievement"
|
||||||
msgid "Show %s-Profile"
|
msgid "Show %s-Profile"
|
||||||
msgstr "%s-Profil anzeigen"
|
msgstr "%s-Profil anzeigen"
|
||||||
|
|
||||||
#: views/html/users/create.tpl:5
|
#: views/html/users/create.tpl:8
|
||||||
msgid "New user"
|
msgid "New user"
|
||||||
msgstr "Neuer Benutzer"
|
msgstr "Neuer Benutzer"
|
||||||
|
|
||||||
#: views/html/users/create.tpl:11 views/html/users/create.tpl:12
|
#: views/html/users/create.tpl:19 views/html/users/edit.tpl:23
|
||||||
#: views/html/users/edit.tpl:11 views/html/users/register.tpl:83
|
#: views/html/users/register.tpl:19
|
||||||
#: views/html/users/register.tpl:84
|
#, 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"
|
msgid "Prename"
|
||||||
msgstr "Vorname"
|
msgstr "Vorname"
|
||||||
|
|
||||||
#: views/html/users/create.tpl:13 views/html/users/create.tpl:14
|
#: views/html/users/create.tpl:88 views/html/users/create.tpl:89
|
||||||
#: views/html/users/edit.tpl:12 views/html/users/edit.tpl:13
|
#: views/html/users/edit.tpl:96 views/html/users/edit.tpl:97
|
||||||
#: views/html/users/register.tpl:85 views/html/users/register.tpl:86
|
#: views/html/users/register.tpl:87 views/html/users/register.tpl:88
|
||||||
msgid "Surname"
|
msgid "Surname"
|
||||||
msgstr "Nachname"
|
msgstr "Nachname"
|
||||||
|
|
||||||
#: views/html/users/create.tpl:15 views/html/users/create.tpl:16
|
#: views/html/users/create.tpl:90 views/html/users/create.tpl:91
|
||||||
#: views/html/users/edit.tpl:14 views/html/users/edit.tpl:15
|
#: views/html/users/edit.tpl:98 views/html/users/edit.tpl:99
|
||||||
#: views/html/users/register.tpl:87 views/html/users/register.tpl:88
|
#: views/html/users/register.tpl:89 views/html/users/register.tpl:90
|
||||||
#: views/html/users/user.tpl:15
|
#: views/html/users/user.tpl:24
|
||||||
msgid "E‑mail address"
|
msgid "E‑mail address"
|
||||||
msgstr "E‑Mail-Adresse"
|
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"
|
msgid "Delete user"
|
||||||
msgstr "Benutzer löschen"
|
msgstr "Benutzer löschen"
|
||||||
|
|
||||||
#: views/html/users/delete.tpl:7
|
#: views/html/users/delete.tpl:9
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Should the user “%s” (%s) really be deleted?"
|
msgid "Should the user “%s” (%s) really be deleted?"
|
||||||
msgstr "Soll der Benutzer „%s“ (%s) wirklich gelöscht werden?"
|
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"
|
msgid "Edit user"
|
||||||
msgstr "Benutzer bearbeiten"
|
msgstr "Benutzer bearbeiten"
|
||||||
|
|
||||||
|
|
@ -934,7 +1059,7 @@ msgstr "Benutzer bearbeiten"
|
||||||
msgid "Create new user"
|
msgid "Create new user"
|
||||||
msgstr "Neuen Benutzer erstellen"
|
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
|
#, php-format
|
||||||
msgid "registered on %s"
|
msgid "registered on %s"
|
||||||
msgstr "registriert am %s"
|
msgstr "registriert am %s"
|
||||||
|
|
@ -943,97 +1068,15 @@ msgstr "registriert am %s"
|
||||||
msgid "Login failed"
|
msgid "Login failed"
|
||||||
msgstr "Die Anmeldung war nicht korrekt"
|
msgstr "Die Anmeldung war nicht korrekt"
|
||||||
|
|
||||||
#: views/html/users/register.tpl:6
|
#: views/html/users/register.tpl:8
|
||||||
msgid "Registration"
|
msgid "Registration"
|
||||||
msgstr "Registrierung"
|
msgstr "Registrierung"
|
||||||
|
|
||||||
#: views/html/users/register.tpl:17
|
#: views/html/users/register.tpl:94
|
||||||
#, 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
|
|
||||||
msgid "Register"
|
msgid "Register"
|
||||||
msgstr "Registrieren"
|
msgstr "Registrieren"
|
||||||
|
|
||||||
#: views/html/users/user.tpl:37
|
#: views/html/users/user.tpl:46
|
||||||
msgid "Roles"
|
msgid "Roles"
|
||||||
msgstr "Rollen"
|
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.
|
* Check if a Character name already exists.
|
||||||
*
|
*
|
||||||
* @param string $name Character name to check
|
* @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
|
* @return boolean Whether Character name exists or not
|
||||||
*/
|
*/
|
||||||
public function characterNameExists($name)
|
public function characterNameExists($name, $characterId=null)
|
||||||
{
|
{
|
||||||
$data = $this->db->query(
|
$data = $this->db->query(
|
||||||
'SELECT count(id) AS c '.
|
'SELECT id '.
|
||||||
'FROM characters '.
|
'FROM characters '.
|
||||||
'WHERE name = ? OR url = ?',
|
'WHERE name = ? OR url = ?',
|
||||||
'ss',
|
'ss',
|
||||||
$name,
|
$name,
|
||||||
\nre\core\Linker::createLinkParam($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 $characterId ID of the Character to edit
|
||||||
* @param int $seminarycharacterfieldId ID of seminarycharacterfield to set value of
|
* @param int $charactertypeId ID of new type of Character
|
||||||
* @param string $value Value to set
|
* @param string $characterName New name for Character
|
||||||
*/
|
*/
|
||||||
public function setSeminaryFieldOfCharacter($characterId, $seminarycharacterfieldId, $value)
|
public function editCharacter($characterId, $charactertypeId, $characterName)
|
||||||
{
|
{
|
||||||
$this->db->query(
|
$this->db->query(
|
||||||
'INSERT INTO characters_seminarycharacterfields '.
|
'UPDATE characters '.
|
||||||
'(character_id, seminarycharacterfield_id, value) '.
|
'SET charactertype_id = ?, name = ?, url = ? '.
|
||||||
'VALUES '.
|
'WHERE id = ?',
|
||||||
'(?, ?, ?) '.
|
'issi',
|
||||||
'ON DUPLICATE KEY UPDATE '.
|
$charactertypeId,
|
||||||
'value = ?',
|
$characterName,
|
||||||
'iiss',
|
\nre\core\Linker::createLinkParam($characterName),
|
||||||
$characterId,
|
$characterId
|
||||||
$seminarycharacterfieldId,
|
|
||||||
$value,
|
|
||||||
$value
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get Characters with the given Character role.
|
* Delete a Character.
|
||||||
*
|
*
|
||||||
* @param int $seminaryId ID of Seminary
|
* @param int $characterId ID of the Character to delete
|
||||||
* @param string $characterrole Character role
|
|
||||||
* @return array List of users
|
|
||||||
*/
|
*/
|
||||||
public function getCharactersWithCharacterRole($seminaryId, $characterrole)
|
public function deleteCharacter($characterId)
|
||||||
{
|
{
|
||||||
return $this->db->query(
|
$this->db->query('DELETE FROM characters WHERE id = ?', 'i', $characterId);
|
||||||
'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
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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.
|
* Get Seminary Character fields of a Character.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,17 @@
|
||||||
<?php endif ?>
|
<?php endif ?>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<h1><i class="fa fa-user fa-fw"></i><?=$character['name']?></h1>
|
<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">
|
<section class="cf">
|
||||||
<div class="cinfo">
|
<div class="cinfo">
|
||||||
<div class="cdata">
|
<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>
|
</div>
|
||||||
<?php endif ?>
|
<?php endif ?>
|
||||||
<ul class="breadcrumbs">
|
<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>
|
</ul>
|
||||||
<h1><?=_('Create Character')?></h1>
|
<h1><?=_('Create Character')?></h1>
|
||||||
<form method="post" action="" class="logreg">
|
<form method="post" action="" class="logreg">
|
||||||
|
|
@ -29,6 +30,12 @@
|
||||||
default: echo _('Character name invalid');
|
default: echo _('Character name invalid');
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case 'type':
|
||||||
|
switch($setting) {
|
||||||
|
case 'exist': echo _('Please choose an avatar');
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
} ?>
|
} ?>
|
||||||
</li>
|
</li>
|
||||||
<?php endforeach ?>
|
<?php endforeach ?>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue