Rename products to wishes
This commit is contained in:
parent
9cbab6c929
commit
63d936acaf
14 changed files with 98 additions and 98 deletions
|
@ -1,7 +1,7 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Generate cache for product
|
||||
* Generate cache for wish
|
||||
*
|
||||
* @author Jay Trees <github.jay@grandel.anonaddy.me>
|
||||
*/
|
||||
|
@ -17,7 +17,7 @@ require '../../index.php';
|
|||
|
||||
switch ($_SERVER['REQUEST_METHOD']) {
|
||||
case 'GET':
|
||||
$cache = new EmbedCache($_GET['product_url']);
|
||||
$cache = new EmbedCache($_GET['wish_url']);
|
||||
$info = $cache->get(true);
|
||||
|
||||
$response['success'] = true;
|
||||
|
|
|
@ -18,7 +18,7 @@ switch ($_SERVER['REQUEST_METHOD']) {
|
|||
if (isset($_GET['table'])) {
|
||||
if ('all' === $_GET['table']) {
|
||||
$tables = array(
|
||||
'products',
|
||||
'wishes',
|
||||
'wishlists',
|
||||
'users',
|
||||
);
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* products.php
|
||||
* wishes.php
|
||||
*
|
||||
* @author Jay Trees <github.jay@grandel.anonaddy.me>
|
||||
*/
|
||||
|
@ -17,17 +17,17 @@ require '../../index.php';
|
|||
|
||||
switch ($_SERVER['REQUEST_METHOD']) {
|
||||
case 'POST':
|
||||
if (isset($_POST['wishlist_id'], $_POST['product_url'])) {
|
||||
if (isset($_POST['wishlist_id'], $_POST['wish_url'])) {
|
||||
/**
|
||||
* Insert New Product
|
||||
* Insert New Wish
|
||||
*/
|
||||
$database->query('INSERT INTO `products`
|
||||
$database->query('INSERT INTO `wishes`
|
||||
(
|
||||
`wishlist`,
|
||||
`url`
|
||||
) VALUES ('
|
||||
. $_POST['wishlist_id'] . ',
|
||||
"' . $_POST['product_url'] . '"
|
||||
"' . $_POST['wish_url'] . '"
|
||||
)
|
||||
;');
|
||||
|
||||
|
@ -41,23 +41,23 @@ switch ($_SERVER['REQUEST_METHOD']) {
|
|||
case 'PUT':
|
||||
parse_str(file_get_contents("php://input"), $_PUT);
|
||||
|
||||
if (isset($_PUT['productID'], $_PUT['productStatus'])) {
|
||||
if (isset($_PUT['wish_id'], $_PUT['wish_status'])) {
|
||||
/**
|
||||
* Update Product Status
|
||||
* Update Wish Status
|
||||
*/
|
||||
$database->query('UPDATE `products`
|
||||
SET `status` = "' . $_PUT['productStatus'] . '"
|
||||
WHERE `id` = ' . $_PUT['productID'] . '
|
||||
$database->query('UPDATE `wishes`
|
||||
SET `status` = "' . $_PUT['wish_status'] . '"
|
||||
WHERE `id` = ' . $_PUT['wish_id'] . '
|
||||
;');
|
||||
|
||||
$response['success'] = true;
|
||||
} elseif (isset($_PUT['product_url_current'], $_PUT['product_url_proposed'])) {
|
||||
} elseif (isset($_PUT['wish_url_current'], $_PUT['wish_url_proposed'])) {
|
||||
/**
|
||||
* Update Product URL
|
||||
* Update Wish URL
|
||||
*/
|
||||
$database->query('UPDATE `products`
|
||||
SET `url` = "' . $_PUT['product_url_proposed'] . '"
|
||||
WHERE `url` = "' . $_PUT['product_url_current'] . '"
|
||||
$database->query('UPDATE `wishes`
|
||||
SET `url` = "' . $_PUT['wish_url_proposed'] . '"
|
||||
WHERE `url` = "' . $_PUT['wish_url_current'] . '"
|
||||
;');
|
||||
|
||||
$response['success'] = true;
|
||||
|
@ -67,9 +67,9 @@ switch ($_SERVER['REQUEST_METHOD']) {
|
|||
case 'DELETE':
|
||||
parse_str(file_get_contents("php://input"), $_DELETE);
|
||||
|
||||
if (isset($_DELETE['productID'])) {
|
||||
$database->query('DELETE FROM `products`
|
||||
WHERE `id` = ' . $_DELETE['productID'] . '
|
||||
if (isset($_DELETE['wish_id'])) {
|
||||
$database->query('DELETE FROM `wishes`
|
||||
WHERE `id` = ' . $_DELETE['wish_id'] . '
|
||||
;');
|
||||
|
||||
$response['success'] = true;
|
|
@ -20,8 +20,8 @@ $(function() {
|
|||
$.fn.api.settings.api = {
|
||||
'get wishlists' : '/src/api/wishlists.php',
|
||||
'delete wishlist' : '/src/api/wishlists.php',
|
||||
'update product status': '/src/api/products.php',
|
||||
'delete product' : '/src/api/products.php',
|
||||
'update wish status': '/src/api/wishes.php',
|
||||
'delete wish' : '/src/api/wishes.php',
|
||||
};
|
||||
|
||||
/** Default callbacks */
|
||||
|
|
|
@ -11,8 +11,8 @@ $(function() {
|
|||
|
||||
if (response.success) {
|
||||
showStatistic(
|
||||
$('#products .value'),
|
||||
response.data.products.count,
|
||||
$('#wishes .value'),
|
||||
response.data.wishes.count,
|
||||
0
|
||||
);
|
||||
showStatistic(
|
||||
|
|
|
@ -31,7 +31,7 @@ $(function() {
|
|||
}
|
||||
|
||||
/**
|
||||
* Commit to Product
|
||||
* Commit to Wish
|
||||
*/
|
||||
$(document).on('click', '.ui.button.commit', function() {
|
||||
var button = $(this);
|
||||
|
@ -55,14 +55,14 @@ $(function() {
|
|||
],
|
||||
onApprove: function() {
|
||||
/**
|
||||
* Update product status
|
||||
* Update wish status
|
||||
*/
|
||||
button.api({
|
||||
action: 'update product status',
|
||||
action: 'update wish status',
|
||||
method: 'PUT',
|
||||
data: {
|
||||
productID: card.data('id'),
|
||||
productStatus: 'unavailable'
|
||||
wish_id: card.data('id'),
|
||||
wish_status: 'unavailable'
|
||||
},
|
||||
on: 'now',
|
||||
onSuccess: function(response, element, xhr) {
|
||||
|
|
|
@ -49,7 +49,7 @@ $(function () {
|
|||
|
||||
$('.wishlist-share').attr('href', '/?wishlist=' + wishlists[wishlistIndex].hash);
|
||||
|
||||
$('.button.wishlist-product-add').removeClass('disabled');
|
||||
$('.button.wishlist-wish-add').removeClass('disabled');
|
||||
$('.button.wishlist-share').removeClass('disabled');
|
||||
$('.wishlist-delete button').removeClass('disabled');
|
||||
|
||||
|
@ -66,7 +66,7 @@ $(function () {
|
|||
}
|
||||
});
|
||||
} else {
|
||||
$('.button.wishlist-product-add').addClass('disabled');
|
||||
$('.button.wishlist-wish-add').addClass('disabled');
|
||||
$('.button.wishlist-share').addClass('disabled');
|
||||
$('.wishlist-delete button').addClass('disabled');
|
||||
}
|
||||
|
@ -120,13 +120,13 @@ $(function () {
|
|||
card = $(card);
|
||||
|
||||
var href = card.find('.content [href]').prop('href');
|
||||
var product_id = card.data('id');
|
||||
var wish_id = card.data('id');
|
||||
var refresh = card.find('button.refresh');
|
||||
|
||||
card.addClass('loading');
|
||||
card.attr('data-cache', true);
|
||||
|
||||
fetch('/src/api/cache.php?product_id=' + product_id + '&product_url=' + href, {
|
||||
fetch('/src/api/cache.php?wish_id=' + wish_id + '&wish_url=' + href, {
|
||||
method: 'GET'
|
||||
})
|
||||
.then(response => response.json())
|
||||
|
@ -311,7 +311,7 @@ $(function () {
|
|||
});
|
||||
|
||||
/**
|
||||
* Delete Product
|
||||
* Delete Wish
|
||||
*/
|
||||
$(document).on('click', '.ui.button.delete', function () {
|
||||
var button = $(this);
|
||||
|
@ -322,7 +322,7 @@ $(function () {
|
|||
modalDefault
|
||||
.modal({
|
||||
title: 'Really delete?',
|
||||
content: '<p>Would you really like to delete to this product? It will be gone forever.</p>',
|
||||
content: '<p>Would you really like to delete to this wish? It will be gone forever.</p>',
|
||||
class: 'tiny',
|
||||
actions: [
|
||||
{
|
||||
|
@ -337,13 +337,13 @@ $(function () {
|
|||
buttonApprove.addClass('loading');
|
||||
|
||||
/**
|
||||
* Delete product
|
||||
* Delete wish
|
||||
*/
|
||||
button.api({
|
||||
action: 'delete product',
|
||||
action: 'delete wish',
|
||||
method: 'DELETE',
|
||||
data: {
|
||||
productID: card.data('id'),
|
||||
wish_id: card.data('id'),
|
||||
},
|
||||
on: 'now',
|
||||
onSuccess: function () {
|
||||
|
@ -352,7 +352,7 @@ $(function () {
|
|||
$('body').toast({
|
||||
class: 'success',
|
||||
showIcon: 'check',
|
||||
message: 'Product successfully deleted.'
|
||||
message: 'Wish successfully deleted.'
|
||||
});
|
||||
|
||||
wishlistsRefresh();
|
||||
|
@ -374,25 +374,25 @@ $(function () {
|
|||
});
|
||||
|
||||
/**
|
||||
* Add product
|
||||
* Add wish
|
||||
*/
|
||||
$(document).on('click', '.button.wishlist-product-add', function () {
|
||||
var modalWishlistProductAdd = $('.ui.modal.wishlist-product-add');
|
||||
$(document).on('click', '.button.wishlist-wish-add', function () {
|
||||
var modalWishlistWishAdd = $('.ui.modal.wishlist-wish-add');
|
||||
|
||||
modalWishlistProductAdd.find('[name="wishlist_id"]').val($('.ui.dropdown.wishlists').dropdown('get value'));
|
||||
modalWishlistProductAdd.find('.primary.approve.button').addClass('disabled');
|
||||
modalWishlistWishAdd.find('[name="wishlist_id"]').val($('.ui.dropdown.wishlists').dropdown('get value'));
|
||||
modalWishlistWishAdd.find('.primary.approve.button').addClass('disabled');
|
||||
|
||||
modalWishlistProductAdd
|
||||
modalWishlistWishAdd
|
||||
.modal({
|
||||
onApprove: function (button) {
|
||||
button.addClass('loading');
|
||||
|
||||
var form = $('.ui.form.wishlist-product-fetch');
|
||||
var form = $('.ui.form.wishlist-wish-fetch');
|
||||
var formData = new URLSearchParams();
|
||||
formData.append('wishlist_id', form.find('input[name="wishlist_id"]').val());
|
||||
formData.append('product_url', form.find('input[name="product_url"]').val());
|
||||
formData.append('wish_url', form.find('input[name="wish_url"]').val());
|
||||
|
||||
fetch('/src/api/products.php', {
|
||||
fetch('/src/api/wishes.php', {
|
||||
method: 'POST',
|
||||
body: formData
|
||||
})
|
||||
|
@ -402,12 +402,12 @@ $(function () {
|
|||
$('body').toast({
|
||||
class: 'success',
|
||||
showIcon: 'check',
|
||||
message: 'Product successfully added.'
|
||||
message: 'Wish successfully added.'
|
||||
});
|
||||
|
||||
wishlistsRefresh();
|
||||
|
||||
modalWishlistProductAdd.modal('hide');
|
||||
modalWishlistWishAdd.modal('hide');
|
||||
}
|
||||
|
||||
button.removeClass('loading');
|
||||
|
@ -420,20 +420,20 @@ $(function () {
|
|||
});
|
||||
|
||||
/** Fetch */
|
||||
$(document).on('submit', '.wishlist-product-fetch', function (event) {
|
||||
$(document).on('submit', '.wishlist-wish-fetch', function (event) {
|
||||
event.preventDefault();
|
||||
|
||||
var form = $(event.currentTarget);
|
||||
var href = form.find('[name="product_url"]').val();
|
||||
var href = form.find('[name="wish_url"]').val();
|
||||
|
||||
var elementModalAdd = $('.ui.modal.wishlist-product-add');
|
||||
var elementModalAdd = $('.ui.modal.wishlist-wish-add');
|
||||
var elementButtons = elementModalAdd.find('.actions .button');
|
||||
var elementImage = elementModalAdd.find('.image img');
|
||||
|
||||
form.addClass('loading');
|
||||
elementButtons.addClass('disabled');
|
||||
|
||||
fetch('/src/api/cache.php?product_url=' + href, {
|
||||
fetch('/src/api/cache.php?wish_url=' + href, {
|
||||
method: 'GET'
|
||||
})
|
||||
.then(response => response.json())
|
||||
|
@ -452,7 +452,7 @@ $(function () {
|
|||
* URL
|
||||
*/
|
||||
if (info.url && info.url !== href) {
|
||||
var elementModalFetch = $('.ui.modal.wishlist-product-fetch');
|
||||
var elementModalFetch = $('.ui.modal.wishlist-wish-fetch');
|
||||
|
||||
elementModalFetch.find('input.current').val(href);
|
||||
elementModalFetch.find('input.proposed').val(info.url);
|
||||
|
@ -465,12 +465,12 @@ $(function () {
|
|||
closable: false,
|
||||
onApprove: function (buttonFetch) {
|
||||
var formData = new URLSearchParams();
|
||||
formData.append('product_url_current', href);
|
||||
formData.append('product_url_proposed', info.url);
|
||||
formData.append('wish_url_current', href);
|
||||
formData.append('wish_url_proposed', info.url);
|
||||
|
||||
buttonFetch.addClass('loading');
|
||||
|
||||
fetch('/src/api/products.php', {
|
||||
fetch('/src/api/wishes.php', {
|
||||
method: 'PUT',
|
||||
body: formData
|
||||
})
|
||||
|
|
|
@ -69,22 +69,22 @@ class User
|
|||
}
|
||||
|
||||
/**
|
||||
* Returns a list of products for a given wishlist.
|
||||
* Returns a list of wishes for a given wishlist.
|
||||
*
|
||||
* @param int $wishlist
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getProducts(int $wishlist): array
|
||||
public function getWishes(int $wishlist): array
|
||||
{
|
||||
global $database;
|
||||
|
||||
$products = $database->query(
|
||||
$wishes = $database->query(
|
||||
'SELECT *
|
||||
FROM products
|
||||
FROM wishes
|
||||
WHERE wishlist = ' . $wishlist . ';'
|
||||
)->fetchAll();
|
||||
|
||||
return $products;
|
||||
return $wishes;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -14,7 +14,7 @@ class Wishlist
|
|||
private string $hash;
|
||||
|
||||
public array $data;
|
||||
public array $products = array();
|
||||
public array $wishes = array();
|
||||
|
||||
public bool $exists = false;
|
||||
|
||||
|
@ -52,10 +52,10 @@ class Wishlist
|
|||
}
|
||||
|
||||
/**
|
||||
* Get Products
|
||||
* Get Wishes
|
||||
*/
|
||||
$this->products = $database->query('SELECT *
|
||||
FROM `products`
|
||||
$this->wishes = $database->query('SELECT *
|
||||
FROM `wishes`
|
||||
WHERE `wishlist` = ' . $this->id . ';')
|
||||
->fetchAll();
|
||||
}
|
||||
|
@ -70,11 +70,11 @@ class Wishlist
|
|||
$exclude = isset($options['exclude']) ? $options['exclude'] : array();
|
||||
|
||||
if ($exclude) {
|
||||
$products = array_filter($this->products, function ($product) use ($exclude) {
|
||||
return !in_array($product['status'], $exclude);
|
||||
$wishes = array_filter($this->wishes, function ($wish) use ($exclude) {
|
||||
return !in_array($wish['status'], $exclude);
|
||||
});
|
||||
} else {
|
||||
$products = $this->products;
|
||||
$wishes = $this->wishes;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -83,15 +83,15 @@ class Wishlist
|
|||
$userIsCurrent = isset($_SESSION['user']) && $this->data['user'] === $_SESSION['user']['id'];
|
||||
$cardIndex = 0;
|
||||
|
||||
if (!empty($products)) { ?>
|
||||
if (!empty($wishes)) { ?>
|
||||
<div class="ui three column doubling stackable grid">
|
||||
<?php foreach ($products as $product) {
|
||||
$cache = new EmbedCache($product['url']);
|
||||
<?php foreach ($wishes as $wish) {
|
||||
$cache = new EmbedCache($wish['url']);
|
||||
$info = $cache->get(false);
|
||||
$exists = $cache->exists() ? 'true' : 'false';
|
||||
?>
|
||||
<div class="column">
|
||||
<div class="ui fluid card stretch" data-id="<?= $product['id'] ?>" data-index="<?= $cardIndex ?>" data-cache="<?= $exists ?>">
|
||||
<div class="ui fluid card stretch" data-id="<?= $wish['id'] ?>" data-index="<?= $cardIndex ?>" data-cache="<?= $exists ?>">
|
||||
<div class="overlay"></div>
|
||||
|
||||
<div class="image">
|
||||
|
|
|
@ -51,9 +51,9 @@ $page->navigation();
|
|||
|
||||
<div class="ui stackable statistics">
|
||||
|
||||
<div class="statistic" id="products">
|
||||
<div class="statistic" id="wishes">
|
||||
<div class="value">N. A.</div>
|
||||
<div class="label">Products</div>
|
||||
<div class="label">Wishes</div>
|
||||
</div>
|
||||
|
||||
<div class="statistic" id="wishlists">
|
||||
|
|
|
@ -135,9 +135,9 @@ switch ($step) {
|
|||
$database->query('CREATE INDEX `idx_hash` ON `wishlists` (`hash`);');
|
||||
|
||||
/**
|
||||
* Products
|
||||
* Wishes
|
||||
*/
|
||||
$database->query('CREATE TABLE `products` (
|
||||
$database->query('CREATE TABLE `wishes` (
|
||||
`id` int NOT NULL PRIMARY KEY AUTO_INCREMENT,
|
||||
`wishlist` int NOT NULL,
|
||||
`url` VARCHAR(255) NOT NULL,
|
||||
|
|
|
@ -80,7 +80,7 @@ if ('POST' === $_SERVER['REQUEST_METHOD']) {
|
|||
|
||||
/** Current version is below 0.3.0 */
|
||||
if (-1 === version_compare($options->version, '0.3.0')) {
|
||||
$database->query('ALTER TABLE `products`
|
||||
$database->query('ALTER TABLE `wishes`
|
||||
ADD `status` VARCHAR(32) NOT NULL AFTER `url`
|
||||
;');
|
||||
}
|
||||
|
|
|
@ -32,7 +32,7 @@ $page->navigation();
|
|||
/**
|
||||
* Warn the wishlist creator
|
||||
*/
|
||||
if (isset($user->id) && $user->id === intval($wishlist->data['user']) && !empty($wishlist->products)) { ?>
|
||||
if (isset($user->id) && $user->id === intval($wishlist->data['user']) && !empty($wishlist->wishes)) { ?>
|
||||
<div class="ui icon warning message wishlist-own">
|
||||
<i class="exclamation triangle icon"></i>
|
||||
<div class="content">
|
||||
|
@ -42,7 +42,7 @@ $page->navigation();
|
|||
<div class="text">
|
||||
<p>
|
||||
You are viewing your own wishlist!
|
||||
You will be able to see which products have already been bought for you.
|
||||
You will be able to see which wishes have already been bought for you.
|
||||
Don't you want to be surprised?
|
||||
</p>
|
||||
<p>
|
||||
|
@ -69,7 +69,7 @@ $page->navigation();
|
|||
</div>
|
||||
|
||||
<div class="ui container">
|
||||
<h2 class="ui header">Products</h2>
|
||||
<h2 class="ui header">Wishes</h2>
|
||||
|
||||
<div class="wishlist-cards">
|
||||
<?php
|
||||
|
|
|
@ -36,9 +36,9 @@ $page->navigation();
|
|||
<div class="ui divider"></div>
|
||||
|
||||
<div class="flex">
|
||||
<a class="ui small labeled icon button wishlist-product-add disabled">
|
||||
<a class="ui small labeled icon button wishlist-wish-add disabled">
|
||||
<i class="add icon"></i>
|
||||
Add a product
|
||||
Add a wish
|
||||
</a>
|
||||
|
||||
<a class="ui small labeled icon button wishlist-share disabled" target="_blank">
|
||||
|
@ -68,7 +68,7 @@ $page->navigation();
|
|||
|
||||
</div>
|
||||
|
||||
<h2 class="ui header">Products</h2>
|
||||
<h2 class="ui header">Wishes</h2>
|
||||
|
||||
<div class="ui primary progress">
|
||||
<div class="bar">
|
||||
|
@ -122,25 +122,25 @@ $page->navigation();
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Wishlist: Add a product -->
|
||||
<div class="ui modal wishlist-product-add">
|
||||
<!-- Wishlist: Add a wish -->
|
||||
<div class="ui modal wishlist-wish-add">
|
||||
<div class="header">
|
||||
Add a product
|
||||
Add a wish
|
||||
</div>
|
||||
<div class="image content">
|
||||
<div class="ui medium image">
|
||||
<img src="/src/assets/img/no-image.svg" loading="lazy" />
|
||||
</div>
|
||||
<div class="description">
|
||||
<div class="ui header">Product</div>
|
||||
<p>Fill out the below fields to add your new product.</p>
|
||||
<div class="ui header">Wish</div>
|
||||
<p>Fill out the below fields to add your new wish.</p>
|
||||
|
||||
<form class="ui form wishlist-product-fetch" method="post">
|
||||
<form class="ui form wishlist-wish-fetch" method="post">
|
||||
<input type="hidden" name="wishlist_id" />
|
||||
|
||||
<div class="field">
|
||||
<label>URL</label>
|
||||
<input type="url" name="product_url" />
|
||||
<input type="url" name="wish_url" />
|
||||
</div>
|
||||
|
||||
<input class="ui button" type="submit" value="Fetch" />
|
||||
|
@ -157,14 +157,14 @@ $page->navigation();
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Wishlist: Add a product (fetch) -->
|
||||
<div class="ui small modal wishlist-product-fetch">
|
||||
<!-- Wishlist: Add a wish (fetch) -->
|
||||
<div class="ui small modal wishlist-wish-fetch">
|
||||
<div class="header">
|
||||
Incorrect URL
|
||||
</div>
|
||||
<div class="content">
|
||||
<div class="description">
|
||||
<div class="ui header">Product URLs</div>
|
||||
<div class="ui header">Wish URLs</div>
|
||||
<p>The URL you have entered does not seem quite right. Would you like to update it with the one I found?</p>
|
||||
|
||||
<div class="ui form urls">
|
||||
|
|
Loading…
Reference in a new issue