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('css/?(.*)', 'css/$1?layout=stylesheet', false),
array('users/([^/]+)/(edit|delete)', 'users/$2/$1', true), array('users/([^/]+)/(edit|delete)', 'users/$2/$1', true),
array('users/(?!(index|login|logout|create|edit|delete))', 'users/user/$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); $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('email'),
$this->request->getPostParam('password') $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)); $this->redirect($this->linker->link(array($user['url']), 1));
} }
@ -197,7 +198,7 @@
if($this->request->getRequestMethod() == 'POST') if($this->request->getRequestMethod() == 'POST')
{ {
// Check confirmation // Check confirmation
if($this->request->getPostParam('delete') == 'delete') if(!empty($this->request->getPostParam('delete')))
{ {
// Delete user // Delete user
$this->Users->deleteUser($user['id']); $this->Users->deleteUser($user['id']);

View file

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

View file

@ -99,6 +99,63 @@
return $seminary[0]; 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. * Edit a user.
* *
* @throws DatamodelException * @throws DatamodelException
* @param int $userId ID of the user to delete
* @param string $username New name of user * @param string $username New name of user
* @param string $email Changed email-address of user * @param string $email Changed email-address of user
* @param string $password Changed plaintext password of user * @param string $password Changed plaintext password of user
@ -165,10 +166,12 @@
// Update user data // Update user data
$this->db->query( $this->db->query(
'UPDATE users '. 'UPDATE users '.
'SET username = ?, email = ? '. 'SET username = ?, url = ?, email = ? '.
'WHERE id = ?', 'WHERE id = ?',
'ssi', 'sssi',
$sername, $email, $username,
\nre\core\Linker::createLinkParam($username),
$email,
$userId $userId
); );
@ -214,7 +217,7 @@
* @param string $password Plaintext password * @param string $password Plaintext password
* @return string Hashed password * @return string Hashed password
*/ */
private function hash($password) public function hash($password)
{ {
return password_hash($password, PASSWORD_DEFAULT); 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> <h1><?=_('Seminaries')?></h1>
<nav>
<li><a href="<?=$linker->link('create', 1)?>"><?=_('Create new seminary')?></a></li>
</nav>
<ul> <ul>
<?php foreach($seminaries as &$seminary) : ?> <?php foreach($seminaries as &$seminary) : ?>
<li> <li>

View file

@ -1,5 +1,9 @@
<h1><?=_('Seminaries')?></h1> <h1><?=_('Seminaries')?></h1>
<h2><?=$seminary['title']?></h2> <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> <p>
<?=sprintf(_('created by %s on %s'), $seminary['creator']['username'], $dateFormatter->format(new \DateTime($seminary['created'])))?> <?=sprintf(_('created by %s on %s'), $seminary['creator']['username'], $dateFormatter->format(new \DateTime($seminary['created'])))?>
</p> </p>

View file

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

View file

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

View file

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