Edit wish in a modal instead of page
This commit is contained in:
parent
c977ba0605
commit
363788a9db
4 changed files with 167 additions and 30 deletions
|
@ -17,23 +17,25 @@ require '../../index.php';
|
||||||
|
|
||||||
switch ($_SERVER['REQUEST_METHOD']) {
|
switch ($_SERVER['REQUEST_METHOD']) {
|
||||||
case 'GET':
|
case 'GET':
|
||||||
if (isset($_GET['wish_id'], $_GET['wishlist_user'])) {
|
if (isset($_GET['wish_id'])) {
|
||||||
$columns = $database
|
$columns = $database
|
||||||
->query('SELECT *
|
->query(
|
||||||
|
'SELECT *
|
||||||
FROM `wishes`
|
FROM `wishes`
|
||||||
WHERE `id` = ' . $_GET['wish_id'] . ';')
|
WHERE `id` = ' . $_GET['wish_id'] . ';'
|
||||||
|
)
|
||||||
->fetch();
|
->fetch();
|
||||||
|
|
||||||
$wish = new Wish($columns, true);
|
$wish = new Wish($columns, true);
|
||||||
|
|
||||||
$response = array(
|
$response['info'] = $wish;
|
||||||
'info' => $wish,
|
|
||||||
'html' => $wish->getCard($_GET['wishlist_user'])
|
if (isset($_GET['wishlist_user'])) {
|
||||||
);
|
$response['html'] = $wish->getCard($_GET['wishlist_user']);
|
||||||
|
}
|
||||||
} elseif (isset($_GET['wish_url'])) {
|
} elseif (isset($_GET['wish_url'])) {
|
||||||
$cache = new Cache\Embed($_GET['wish_url']);
|
$cache = new Cache\Embed($_GET['wish_url']);
|
||||||
$info = $cache->get(true);
|
$info = $cache->get(true);
|
||||||
$exists = $cache->exists() ? 'true' : 'false';
|
|
||||||
|
|
||||||
$response = array(
|
$response = array(
|
||||||
'info' => $info,
|
'info' => $info,
|
||||||
|
@ -42,9 +44,9 @@ switch ($_SERVER['REQUEST_METHOD']) {
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'POST':
|
case 'POST':
|
||||||
if (isset($_POST['wishlist_id'])) {
|
if (isset($_POST['wishlist_id']) || isset($_POST['wish_id'])) {
|
||||||
/**
|
/**
|
||||||
* Insert New Wish
|
* Save wish
|
||||||
*/
|
*/
|
||||||
if (
|
if (
|
||||||
empty($_POST['wish_title'])
|
empty($_POST['wish_title'])
|
||||||
|
@ -54,28 +56,62 @@ switch ($_SERVER['REQUEST_METHOD']) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
$wishlist_id = $_POST['wishlist_id'];
|
|
||||||
$wish_title = trim($_POST['wish_title']);
|
$wish_title = trim($_POST['wish_title']);
|
||||||
$wish_description = trim($_POST['wish_description']);
|
$wish_description = trim($_POST['wish_description']);
|
||||||
$wish_url = trim($_POST['wish_url']);
|
$wish_url = trim($_POST['wish_url']);
|
||||||
$wish_priority = isset($_POST['wish_priority']) && $_POST['wish_priority'] ? $_POST['wish_priority'] : 'NULL';
|
$wish_priority = isset($_POST['wish_priority']) && $_POST['wish_priority'] ? $_POST['wish_priority'] : 'NULL';
|
||||||
|
$wish_is_purchasable = isset($_POST['wish_is_purchasable']);
|
||||||
|
|
||||||
|
if (isset($_POST['wish_id'], $_POST['wishlist_id'])) {
|
||||||
|
/** Update wish */
|
||||||
|
$wish_id = $_POST['wish_id'];
|
||||||
|
$wishlist_id = $_POST['wishlist_id'];
|
||||||
|
|
||||||
$database
|
$database
|
||||||
->query('INSERT INTO `wishes`
|
->query(
|
||||||
|
'REPLACE INTO `wishes`
|
||||||
|
(
|
||||||
|
`id`,
|
||||||
|
`wishlist`,
|
||||||
|
`title`,
|
||||||
|
`description`,
|
||||||
|
`url`,
|
||||||
|
`priority`,
|
||||||
|
`is_purchasable`
|
||||||
|
) VALUES (
|
||||||
|
' . $wish_id . ',
|
||||||
|
' . $wishlist_id . ',
|
||||||
|
"' . $wish_title . '",
|
||||||
|
"' . $wish_description . '",
|
||||||
|
"' . $wish_url . '",
|
||||||
|
' . $wish_priority . ',
|
||||||
|
' . $wish_is_purchasable . '
|
||||||
|
);'
|
||||||
|
);
|
||||||
|
} elseif (isset($_POST['wishlist_id'])) {
|
||||||
|
/** Insert wish */
|
||||||
|
$wishlist_id = $_POST['wishlist_id'];
|
||||||
|
|
||||||
|
$database
|
||||||
|
->query(
|
||||||
|
'INSERT INTO `wishes`
|
||||||
(
|
(
|
||||||
`wishlist`,
|
`wishlist`,
|
||||||
`title`,
|
`title`,
|
||||||
`description`,
|
`description`,
|
||||||
`url`,
|
`url`,
|
||||||
`priority`
|
`priority`,
|
||||||
|
`is_purchasable`
|
||||||
) VALUES (
|
) VALUES (
|
||||||
' . $wishlist_id . ',
|
' . $wishlist_id . ',
|
||||||
"' . $wish_title . '",
|
"' . $wish_title . '",
|
||||||
"' . $wish_description . '",
|
"' . $wish_description . '",
|
||||||
"' . $wish_url . '",
|
"' . $wish_url . '",
|
||||||
' . $wish_priority . '
|
' . $wish_priority . ',
|
||||||
)
|
' . $wish_is_purchasable . '
|
||||||
;');
|
);'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
$response['data'] = array(
|
$response['data'] = array(
|
||||||
'lastInsertId' => $database->lastInsertId(),
|
'lastInsertId' => $database->lastInsertId(),
|
||||||
|
|
|
@ -321,6 +321,78 @@ $(function () {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Edit Wish
|
||||||
|
*/
|
||||||
|
$(document).on('click', '.wish-edit', function (event) {
|
||||||
|
/** Form */
|
||||||
|
var form = $('.form.wishlist-wish-edit');
|
||||||
|
form.addClass('loading');
|
||||||
|
form.trigger('reset');
|
||||||
|
form.find('.dropdown').dropdown('restore defaults');
|
||||||
|
|
||||||
|
/** Get Wish */
|
||||||
|
var wishID = $(this).attr('data-id');
|
||||||
|
|
||||||
|
var wishFormData = new URLSearchParams({
|
||||||
|
'wish_id' : wishID
|
||||||
|
});
|
||||||
|
|
||||||
|
fetch('/src/api/wishes.php?' + wishFormData, {
|
||||||
|
method: 'GET'
|
||||||
|
})
|
||||||
|
.then(handleFetchError)
|
||||||
|
.then(handleFetchResponse)
|
||||||
|
.then(function(response) {
|
||||||
|
var wish = response.info;
|
||||||
|
|
||||||
|
$('[name="wish_id"]').val(wish.id);
|
||||||
|
$('[name="wish_title"]').val(wish.title);
|
||||||
|
$('[name="wish_description"]').val(wish.description);
|
||||||
|
$('[name="wish_url"]').val(wish.url);
|
||||||
|
$('.ui.selection.dropdown.priority').dropdown('set selected', wish.priority);
|
||||||
|
$('[name="wish_is_purchasable"]').prop('checked', wish.is_purchasable);
|
||||||
|
})
|
||||||
|
.catch(handleFetchCatch)
|
||||||
|
.finally(function() {
|
||||||
|
form.removeClass('loading');
|
||||||
|
});
|
||||||
|
|
||||||
|
/** Modal */
|
||||||
|
var modalWishlistWishEdit = $('.ui.modal.wishlist-wish-edit');
|
||||||
|
|
||||||
|
modalWishlistWishEdit.find('[name="wishlist_id"]').val($('.ui.dropdown.wishlists').dropdown('get value'));
|
||||||
|
modalWishlistWishEdit
|
||||||
|
.modal({
|
||||||
|
autoShow : true,
|
||||||
|
onApprove : function (buttonSave) {
|
||||||
|
buttonSave.addClass('loading');
|
||||||
|
|
||||||
|
var formData = new URLSearchParams(new FormData(form[0]));
|
||||||
|
|
||||||
|
fetch('/src/api/wishes.php', {
|
||||||
|
method : 'POST',
|
||||||
|
body : formData
|
||||||
|
})
|
||||||
|
.then(handleFetchError)
|
||||||
|
.then(handleFetchResponse)
|
||||||
|
.then(function(response) {
|
||||||
|
$('body').toast({ message: text.toast_wish_update });
|
||||||
|
|
||||||
|
wishlistsRefresh();
|
||||||
|
|
||||||
|
modalWishlistWishEdit.modal('hide');
|
||||||
|
buttonSave.removeClass('loading');
|
||||||
|
})
|
||||||
|
.catch(handleFetchCatch);
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
event.preventDefault();
|
||||||
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Delete Wish
|
* Delete Wish
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -50,6 +50,8 @@ class Wish
|
||||||
public ?string $image;
|
public ?string $image;
|
||||||
public ?string $url;
|
public ?string $url;
|
||||||
public ?int $priority;
|
public ?int $priority;
|
||||||
|
public bool $is_purchasable;
|
||||||
|
|
||||||
public ?string $status;
|
public ?string $status;
|
||||||
|
|
||||||
public \stdClass $info;
|
public \stdClass $info;
|
||||||
|
|
|
@ -188,6 +188,33 @@ $page->navigation();
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- Wishlist: Edit a wish -->
|
||||||
|
<div class="ui modal wishlist-wish-edit">
|
||||||
|
<div class="header">
|
||||||
|
<?= __('Edit wish') ?>
|
||||||
|
</div>
|
||||||
|
<div class="content">
|
||||||
|
<div class="description">
|
||||||
|
<form class="ui form wishlist-wish-edit" method="POST">
|
||||||
|
<input type="hidden" name="wish_id" />
|
||||||
|
<input type="hidden" name="wishlist_id" />
|
||||||
|
|
||||||
|
<div class="ui two column grid">
|
||||||
|
<?php include 'parts/wish-add.php' ?>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="actions">
|
||||||
|
<div class="ui primary approve button" title="<?= __('Save') ?>">
|
||||||
|
<?= __('Save') ?>
|
||||||
|
</div>
|
||||||
|
<div class="ui deny button" title="<?= __('Cancel') ?>">
|
||||||
|
<?= __('Cancel') ?>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
$page->footer();
|
$page->footer();
|
||||||
$page->bodyEnd();
|
$page->bodyEnd();
|
||||||
|
|
Loading…
Reference in a new issue