implement CRUD for seminaries and correct typos for users

This commit is contained in:
coderkun 2014-01-25 20:55:10 +01:00
commit 297c56e29d
15 changed files with 247 additions and 27 deletions

View file

@ -73,7 +73,8 @@
array('css/?(.*)', 'css/$1?layout=stylesheet', false),
array('users/([^/]+)/(edit|delete)', 'users/$2/$1', true),
array('users/(?!(index|login|logout|create|edit|delete))', 'users/user/$1', true),
array('seminaries/(.+)', 'seminaries/seminary/$1', false)
array('seminaries/([^/]+)/(edit|delete)', 'seminaries/$2/$1', true),
array('seminaries/(?!(index|create|edit|delete))', 'seminaries/seminary/$1', true)
);

View file

@ -82,6 +82,103 @@
$this->set('seminary', $seminary);
}
/**
* Action: create.
*
* Create a new seminary.
*/
public function create()
{
if($this->request->getRequestMethod() == 'POST' && !is_null($this->request->getPostParam('create')))
{
// Create new seminary
var_dump($this->Auth->getUserId());
$seminaryId = $this->Seminaries->createSeminary(
$this->request->getPostParam('title'),
$this->Auth->getUserId()
);
// Redirect to seminary
$user = $this->Seminaries->getSeminaryById($seminaryId);
$this->redirect($this->linker->link(array($seminary['url']), 1));
}
}
/**
* Action: edit.
*
* Edit a seminary.
*
* @throws IdNotFoundException
* @param string $seminaryUrl URL-Title of a seminary
*/
public function edit($seminaryUrl)
{
// Get seminary
$seminary = $this->Seminaries->getSeminaryByUrl($seminaryUrl);
// Check request method
if($this->request->getRequestMethod() == 'POST')
{
// Save changes
if(!empty($this->request->getPostParam('save')))
{
// Edit seminary
$this->Seminaries->editSeminary(
$seminary['id'],
$this->request->getPostParam('title')
);
$seminary = $this->Seminaries->getSeminaryById($seminary['id']);
}
// Redirect to entry
$this->redirect($this->linker->link(array($seminary['url']), 1));
}
// Pass data to view
$this->set('seminary', $seminary);
}
/**
* Action: delete.
*
* Delete a seminary.
*
* @throws IdNotFoundException
* @param string $seminaryUrl URL-Title of a seminary
*/
public function delete($seminaryUrl)
{
// Get seminary
$seminary = $this->Seminaries->getSeminaryByUrl($seminaryUrl);
// Check request method
if($this->request->getRequestMethod() == 'POST')
{
// Check confirmation
if(!empty($this->request->getPostParam('delete')))
{
// Delete seminary
$this->Seminaries->deleteSeminary($seminary['id']);
// Redirect to overview
$this->redirect($this->linker->link(null, 1));
}
// Redirect to entry
$this->redirect($this->linker->link(array('seminary', $seminary['url']), 1));
}
// Show confirmation
$this->set('seminary', $seminary);
}
}
?>

View file

@ -167,10 +167,11 @@
$this->request->getPostParam('email'),
$this->request->getPostParam('password')
);
$user = $this->Users->getUserById($user['id']);
}
// Redirect to user
// Redirect to entry
$this->redirect($this->linker->link(array($user['url']), 1));
}
@ -197,7 +198,7 @@
if($this->request->getRequestMethod() == 'POST')
{
// Check confirmation
if($this->request->getPostParam('delete') == 'delete')
if(!empty($this->request->getPostParam('delete')))
{
// Delete user
$this->Users->deleteUser($user['id']);

View file

@ -1,8 +1,8 @@
msgid ""
msgstr ""
"Project-Id-Version: The Legend of Z\n"
"POT-Creation-Date: 2014-01-25 20:20+0100\n"
"PO-Revision-Date: 2014-01-25 20:20+0100\n"
"POT-Creation-Date: 2014-01-25 20:52+0100\n"
"PO-Revision-Date: 2014-01-25 20:52+0100\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: de_DE\n"
@ -25,6 +25,8 @@ msgstr "Benutzer"
#: ../../../views/html/menu/index.tpl:3
#: ../../../views/html/seminaries/seminary.tpl:1
#: ../../../views/html/seminaries/index.tpl:1
#: ../../../views/html/seminaries/edit.tpl:1
#: ../../../views/html/seminaries/delete.tpl:1
#: ../../../views/html/seminaries/create.tpl:1
msgid "Seminaries"
msgstr "Kurse"
@ -52,11 +54,15 @@ msgstr "Benutzername"
msgid "Password"
msgstr "Passwort"
#: ../../../views/html/users/user.tpl:4 ../../../views/html/users/delete.tpl:2
#: ../../../views/html/users/user.tpl:4 ../../../views/html/users/edit.tpl:2
msgid "Edit user"
msgstr "Benutzer bearbeiten"
#: ../../../views/html/users/user.tpl:5 ../../../views/html/users/delete.tpl:2
msgid "Delete user"
msgstr "Benutzer löschen"
#: ../../../views/html/users/user.tpl:7 ../../../views/html/users/index.tpl:10
#: ../../../views/html/users/user.tpl:8 ../../../views/html/users/index.tpl:10
#, php-format
msgid "registered on %s"
msgstr "registriert am %s"
@ -65,10 +71,6 @@ msgstr "registriert am %s"
msgid "Create new user"
msgstr "Neuen Benutzer erstellen"
#: ../../../views/html/users/edit.tpl:2
msgid "Edit user"
msgstr "Benutzer bearbeiten"
#: ../../../views/html/users/edit.tpl:8 ../../../views/html/users/edit.tpl:9
#: ../../../views/html/users/create.tpl:8
#: ../../../views/html/users/create.tpl:9
@ -76,10 +78,9 @@ msgid "EMail-Address"
msgstr "EMail-Adresse"
#: ../../../views/html/users/edit.tpl:13
#: ../../../views/html/users/create.tpl:13
#: ../../../views/html/seminaries/create.tpl:9
msgid "create"
msgstr "erstellen"
#: ../../../views/html/seminaries/edit.tpl:9
msgid "save"
msgstr "speichern"
#: ../../../views/html/users/delete.tpl:4
#, php-format
@ -87,10 +88,12 @@ msgid "Should the user “%s” (%s) really be deleted?"
msgstr "Soll der Benutzer „%s“ (%s) wirklich gelöscht werden?"
#: ../../../views/html/users/delete.tpl:6
#: ../../../views/html/seminaries/delete.tpl:6
msgid "delete"
msgstr "löschen"
#: ../../../views/html/users/delete.tpl:7
#: ../../../views/html/seminaries/delete.tpl:7
msgid "cancel"
msgstr "abbrechen"
@ -98,11 +101,26 @@ msgstr "abbrechen"
msgid "New user"
msgstr "Neuer Benutzer"
#: ../../../views/html/users/create.tpl:13
#: ../../../views/html/seminaries/create.tpl:9
msgid "create"
msgstr "erstellen"
#: ../../../views/html/error/index.tpl:1
msgid "Error"
msgstr "Fehler"
#: ../../../views/html/seminaries/seminary.tpl:4
#: ../../../views/html/seminaries/edit.tpl:2
msgid "Edit seminary"
msgstr "Kurs bearbeiten"
#: ../../../views/html/seminaries/seminary.tpl:5
#: ../../../views/html/seminaries/delete.tpl:2
msgid "Delete seminary"
msgstr "Kurs löschen"
#: ../../../views/html/seminaries/seminary.tpl:8
#: ../../../views/html/seminaries/index.tpl:10
#, php-format
msgid "created by %s on %s"
@ -112,15 +130,22 @@ msgstr "erstellt von %s am %s"
msgid "Create new seminary"
msgstr "Neuen Kurs erstellen"
#: ../../../views/html/seminaries/create.tpl:2
msgid "New seminary"
msgstr "Neuer Kurs"
#: ../../../views/html/seminaries/edit.tpl:6
#: ../../../views/html/seminaries/edit.tpl:7
#: ../../../views/html/seminaries/create.tpl:6
#: ../../../views/html/seminaries/create.tpl:7
msgid "Title"
msgstr "Titel"
#: ../../../views/html/seminaries/delete.tpl:4
#, php-format
msgid "Should the seminary “%s” really be deleted?"
msgstr "Soll der Kurs „%s“ wirklich gelöscht werden?"
#: ../../../views/html/seminaries/create.tpl:2
msgid "New seminary"
msgstr "Neuer Kurs"
#: ../../../views/html/introduction/index.tpl:1
msgid "Introduction"
msgstr "Einführung"

View file

@ -99,6 +99,63 @@
return $seminary[0];
}
/**
* Create a new seminary.
*
* @param string $title Title of seminary to create
* @param int $userId ID of creating user
* @return int ID of the newly created seminary
*/
public function createSeminary($title, $userId)
{
$this->db->query(
'INSERT INTO seminaries '.
'(created_user_id, title, url) '.
'VALUES '.
'(?, ?, ?)',
'iss',
$userId,
$title,
\nre\core\Linker::createLinkParam($title)
);
return $this->db->getInsertId();
}
/**
* Edit a seminary.
*
* @throws DatamodelException
* @param int $seminaryId ID of the seminary to delete
* @param string $title New title of seminary
*/
public function editSeminary($seminaryId, $title)
{
$this->db->query(
'UPDATE seminaries '.
'SET title = ?, url = ? '.
'WHERE id = ?',
'ssi',
$title,
\nre\core\Linker::createLinkParam($title),
$seminaryId
);
}
/**
* Delete a seminary.
*
* @param int $seminaryId ID of the seminary to delete
*/
public function deleteSeminary($seminaryId)
{
$this->db->query('DELETE FROM seminaries WHERE id = ?', 'i', $seminaryId);
}
}
?>

View file

@ -155,6 +155,7 @@
* Edit a user.
*
* @throws DatamodelException
* @param int $userId ID of the user to delete
* @param string $username New name of user
* @param string $email Changed email-address of user
* @param string $password Changed plaintext password of user
@ -165,10 +166,12 @@
// Update user data
$this->db->query(
'UPDATE users '.
'SET username = ?, email = ? '.
'SET username = ?, url = ?, email = ? '.
'WHERE id = ?',
'ssi',
$sername, $email,
'sssi',
$username,
\nre\core\Linker::createLinkParam($username),
$email,
$userId
);
@ -214,7 +217,7 @@
* @param string $password Plaintext password
* @return string Hashed password
*/
private function hash($password)
public function hash($password)
{
return password_hash($password, PASSWORD_DEFAULT);
}

View file

@ -0,0 +1,10 @@
<h1><?=_('Seminaries')?></h1>
<h2><?=_('New seminary')?></h2>
<form method="post" action="<?=$linker->link('create', 1)?>">
<fieldset>
<label for="title"><?=_('Title')?>:</label>
<input type="text" name="title" placeholder="<?=_('Title')?>" /><br />
</fieldset>
<input type="submit" name="create" value="<?=_('create')?>" />
</form>

View file

@ -0,0 +1,8 @@
<h1><?=_('Seminaries')?></h1>
<h2><?=_('Delete seminary')?></h2>
<?=sprintf(_('Should the seminary “%s” really be deleted?'), $seminary['title'])?>
<form method="post">
<input type="submit" name="delete" value="<?=_('delete')?>" />
<input type="submit" name="not-delete" value="<?=_('cancel')?>" />
</form>

View file

@ -0,0 +1,10 @@
<h1><?=_('Seminaries')?></h1>
<h2><?=_('Edit seminary')?></h2>
<form method="post">
<fieldset>
<label for="title"><?=_('Title')?>:</label>
<input type="text" name="title" placeholder="<?=_('Title')?>" value="<?=$seminary['title']?>" /><br />
</fieldset>
<input type="submit" name="save" value="<?=_('save')?>" />
</form>

View file

@ -1,4 +1,7 @@
<h1><?=_('Seminaries')?></h1>
<nav>
<li><a href="<?=$linker->link('create', 1)?>"><?=_('Create new seminary')?></a></li>
</nav>
<ul>
<?php foreach($seminaries as &$seminary) : ?>
<li>

View file

@ -1,5 +1,9 @@
<h1><?=_('Seminaries')?></h1>
<h2><?=$seminary['title']?></h2>
<nav>
<li><a href="<?=$linker->link('edit', 3)?>"><?=_('Edit seminary')?></a></li>
<li><a href="<?=$linker->link('delete', 3)?>"><?=_('Delete seminary')?></a></li>
</nav>
<p>
<?=sprintf(_('created by %s on %s'), $seminary['creator']['username'], $dateFormatter->format(new \DateTime($seminary['created'])))?>
</p>

View file

@ -2,7 +2,7 @@
<h2><?=_('New user')?></h2>
<form method="post" action="<?=$linker->link('create', 1)?>">
<filedset>
<fieldset>
<label for="username"><?=_('Username')?>:</label>
<input type="text" name="username" placeholder="<?=_('Username')?>" /><br />
<label for="email"><?=_('EMail-Address')?>:</label>

View file

@ -1,8 +1,8 @@
<h1><?=_('Users')?></h1>
<h2><?=_('Edit user')?></h2>
<form method="post" action="<?=$linker->link('edit', 1)?>">
<filedset>
<form method="post">
<fieldset>
<label for="username"><?=_('Username')?>:</label>
<input type="text" name="username" placeholder="<?=_('Username')?>" value="<?=$user['username']?>" /><br />
<label for="email"><?=_('EMail-Address')?>:</label>
@ -10,5 +10,5 @@
<label for="password"><?=_('Password')?>:</label>
<input type="password" name="password" placeholder="<?=_('Password')?>" /><br />
</fieldset>
<input type="submit" name="create" value="<?=_('create')?>" />
<input type="submit" name="save" value="<?=_('save')?>" />
</form>

View file

@ -1,6 +1,7 @@
<h1><?=_('Users')?></h1>
<h2><?=$user['username']?></h2>
<nav>
<li><a href="<?=$linker->link('edit', 3)?>"><?=_('Edit user')?></a></li>
<li><a href="<?=$linker->link('delete', 3)?>"><?=_('Delete user')?></a></li>
</nav>
<p>