forked from Public/pics
Support 'quick create subalbums' style, too.
This commit is contained in:
parent
2a25434862
commit
096cea078c
@ -15,11 +15,11 @@ class EditAlbum extends HTMLController
|
|||||||
throw new NotAllowedException();
|
throw new NotAllowedException();
|
||||||
|
|
||||||
$id_tag = isset($_GET['id']) ? (int) $_GET['id'] : 0;
|
$id_tag = isset($_GET['id']) ? (int) $_GET['id'] : 0;
|
||||||
if (empty($id_tag) && !isset($_GET['add']))
|
if (empty($id_tag) && !isset($_GET['add']) && $_GET['action'] !== 'addalbum')
|
||||||
throw new UnexpectedValueException('Requested album not found or not requesting a new album.');
|
throw new UnexpectedValueException('Requested album not found or not requesting a new album.');
|
||||||
|
|
||||||
// Adding an album?
|
// Adding an album?
|
||||||
if (isset($_GET['add']))
|
if (isset($_GET['add']) || $_GET['action'] === 'addalbum')
|
||||||
{
|
{
|
||||||
parent::__construct('Add a new album');
|
parent::__construct('Add a new album');
|
||||||
$form_title = 'Add a new album';
|
$form_title = 'Add a new album';
|
||||||
@ -30,7 +30,7 @@ class EditAlbum extends HTMLController
|
|||||||
{
|
{
|
||||||
// So far so good?
|
// So far so good?
|
||||||
$album = Tag::fromId($id_tag);
|
$album = Tag::fromId($id_tag);
|
||||||
if (Session::validateSession('get') && $tag->kind === 'Album' && $tag->delete())
|
if (Session::validateSession('get') && $album->kind === 'Album' && $album->delete())
|
||||||
{
|
{
|
||||||
header('Location: ' . BASEURL . '/managealbums/');
|
header('Location: ' . BASEURL . '/managealbums/');
|
||||||
exit;
|
exit;
|
||||||
@ -96,8 +96,24 @@ class EditAlbum extends HTMLController
|
|||||||
],
|
],
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
if (empty($_POST) && isset($_GET['tag']))
|
||||||
|
{
|
||||||
|
$parentTag = Tag::fromId($_GET['tag']);
|
||||||
|
if ($parentTag->kind === 'Album')
|
||||||
|
{
|
||||||
|
$formDefaults = [
|
||||||
|
'id_parent' => $parentTag->id_tag,
|
||||||
|
'tag' => 'New Album Title Here',
|
||||||
|
'slug' => ($parentTag->slug ? $parentTag->slug . '/' : '') . 'NEW_ALBUM_SLUG_HERE',
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isset($formDefaults))
|
||||||
|
$formDefaults = isset($album) ? get_object_vars($album) : $_POST;
|
||||||
|
|
||||||
// Create the form, add in default values.
|
// Create the form, add in default values.
|
||||||
$form->setData($id_tag ? get_object_vars($album) : $_POST);
|
$form->setData($formDefaults);
|
||||||
$formview = new FormView($form, $form_title ?? '');
|
$formview = new FormView($form, $form_title ?? '');
|
||||||
$this->page->adopt($formview);
|
$this->page->adopt($formview);
|
||||||
|
|
||||||
@ -112,6 +128,8 @@ class EditAlbum extends HTMLController
|
|||||||
$data = $form->getData();
|
$data = $form->getData();
|
||||||
|
|
||||||
// Quick stripping.
|
// Quick stripping.
|
||||||
|
$data['tag'] = htmlentities($data['tag']);
|
||||||
|
$data['description'] = htmlentities($data['description']);
|
||||||
$data['slug'] = strtr(strtolower($data['slug']), [' ' => '-', '--' => '-', '&' => 'and', '=>' => '', "'" => "", ":"=> "", '/' => '-', '\\' => '-']);
|
$data['slug'] = strtr(strtolower($data['slug']), [' ' => '-', '--' => '-', '&' => 'and', '=>' => '', "'" => "", ":"=> "", '/' => '-', '\\' => '-']);
|
||||||
|
|
||||||
// TODO: when updating slug, update slug for all photos in this album.
|
// TODO: when updating slug, update slug for all photos in this album.
|
||||||
@ -120,13 +138,13 @@ class EditAlbum extends HTMLController
|
|||||||
if (!$id_tag)
|
if (!$id_tag)
|
||||||
{
|
{
|
||||||
$data['kind'] = 'Album';
|
$data['kind'] = 'Album';
|
||||||
$return = Tag::createNew($data);
|
$newTag = Tag::createNew($data);
|
||||||
if ($return === false)
|
if ($newTag === false)
|
||||||
return $formview->adopt(new Alert('Cannot create this album', 'Something went wrong while creating the album...', 'error'));
|
return $formview->adopt(new Alert('Cannot create this album', 'Something went wrong while creating the album...', 'error'));
|
||||||
|
|
||||||
if (isset($_POST['submit_and_new']))
|
if (isset($_POST['submit_and_new']))
|
||||||
{
|
{
|
||||||
header('Location: ' . BASEURL . '/editalbum/?add');
|
header('Location: ' . BASEURL . '/editalbum/?add&tag=' . $data['id_parent']);
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,6 +11,7 @@ class Dispatcher
|
|||||||
public static function route()
|
public static function route()
|
||||||
{
|
{
|
||||||
$possibleActions = [
|
$possibleActions = [
|
||||||
|
'addalbum' => 'EditAlbum',
|
||||||
'albums' => 'ViewPhotoAlbums',
|
'albums' => 'ViewPhotoAlbums',
|
||||||
'editalbum' => 'EditAlbum',
|
'editalbum' => 'EditAlbum',
|
||||||
'editasset' => 'EditAsset',
|
'editasset' => 'EditAsset',
|
||||||
|
@ -272,7 +272,7 @@ class Tag
|
|||||||
$db = Registry::get('db');
|
$db = Registry::get('db');
|
||||||
|
|
||||||
$res = $db->query('
|
$res = $db->query('
|
||||||
DELETE FROM posts_tags
|
DELETE FROM assets_tags
|
||||||
WHERE id_tag = {int:id_tag}',
|
WHERE id_tag = {int:id_tag}',
|
||||||
[
|
[
|
||||||
'id_tag' => $this->id_tag,
|
'id_tag' => $this->id_tag,
|
||||||
|
Loading…
Reference in New Issue
Block a user