Skip to content
Code-Schnipsel Gruppen Projekte
Commit cac57626 erstellt von Henning Leutz's avatar Henning Leutz :martial_arts_uniform:
Dateien durchsuchen

refactor: guest -> basket small

Übergeordneter fc8b4564
Keine zugehörigen Branchen gefunden
Keine zugehörigen Tags gefunden
Keine zugehörigen Merge Requests gefunden
<?php
/**
* This file contains package_quiqqer_order_ajax_frontend_basket_existsArticle
*/
/**
* Is the product still active and available?
*
* @param integer $productId
* @return bool
*/
QUI::$Ajax->registerFunction(
'package_quiqqer_order_ajax_frontend_basket_controls_smallGuest',
function ($products) {
$products = json_decode($products, true);
$Basket = new \QUI\ERP\Order\Basket\BasketGuest();
$Basket->import($products);
$Control = new QUI\ERP\Order\Controls\Basket\Small();
$Control->setBasket($Basket);
return $Control->create();
},
array('products')
);
......@@ -56,12 +56,15 @@ define('package/quiqqer/order/bin/frontend/classes/Basket', [
return Promise.resolve();
}
this.fireEvent('refreshBegin', [this]);
data = JSON.decode(data);
try {
data = JSON.decode(data);
if (!data) {
if (!data) {
data = {};
}
} catch (e) {
data = {};
}
......@@ -100,6 +103,7 @@ define('package/quiqqer/order/bin/frontend/classes/Basket', [
this.$isLoaded = true;
this.fireEvent('refresh', [this]);
this.save();
}.bind(this));
},
......@@ -295,6 +299,15 @@ define('package/quiqqer/order/bin/frontend/classes/Basket', [
});
},
/**
* Return the basket products
*
* @return {Array}
*/
getProducts: function () {
return this.$products;
},
/**
* Saves the basket to the temporary order
*
......@@ -357,8 +370,8 @@ define('package/quiqqer/order/bin/frontend/classes/Basket', [
data.products = {};
}
data.currentList = this.$listid;
data.products[this.$listid] = products;
data.currentList = this.$basketId;
data.products[this.$basketId] = products;
QUI.Storage.set('quiqqer-basket-products', JSON.encode(data));
......
......@@ -62,12 +62,13 @@ define('package/quiqqer/order/bin/frontend/controls/basket/Small', [
var self = this,
basketId = this.getAttribute('basketId');
if (basketId === false || isNaN(basketId)) {
self.getElm().set('html', 'Gast Warenkorb');
if (basketId === false) {
self.getElm().set('html', '');
return Promise.resolve();
}
QUIAjax.get('package_quiqqer_order_ajax_frontend_basket_controls_small', function (result) {
// render the result - set events etc
var render = function (result) {
self.getElm().set('html', result);
var ButtonCheckout = self.getElm().getElement('.to-the-checkout');
......@@ -75,24 +76,47 @@ define('package/quiqqer/order/bin/frontend/controls/basket/Small', [
ButtonCheckout.addEvent('mousedown', function (event) {
event.stop();
});
//
// ButtonCheckout.addEvent('click', function (event) {
// event.stop();
//
// console.log(123);
// });
self.getElm().getElements('.fa-trash').addEvent('click', function () {
Basket.removeProductPos(
this.getParent('.quiqqer-order-basket-small-articles-article').get('data-pos')
);
});
}, {
};
// guest
if (this.isGuest()) {
var products = [];
var basketProducts = Basket.getProducts();
for (var i = 0, len = basketProducts.length; i < len; i++) {
products.push(basketProducts[i].getAttributes());
}
QUIAjax.get('package_quiqqer_order_ajax_frontend_basket_controls_smallGuest', render, {
'package': 'quiqqer/order',
products : JSON.encode(products)
});
return;
}
// user
QUIAjax.get('package_quiqqer_order_ajax_frontend_basket_controls_small', render, {
'package': 'quiqqer/order',
basketId : parseInt(this.getAttribute('basketId'))
});
},
/**
* Is the user a guest?
*
* @return {boolean}
*/
isGuest: function () {
return !(QUIQQER_USER && QUIQQER_USER.id);
},
/**
* event: on basket refresh
*/
......
<?php
/**
* This file contains QUI\ERP\Order\Basket\Baseket
*/
namespace QUI\ERP\Order\Basket;
use QUI;
use QUI\ERP\Products\Product\ProductList;
/**
* Class BasketGuest
* Basket for the guest
*
* @package QUI\ERP\Order\Basket
*/
class BasketGuest
{
/**
* List of products
*
* @var QUI\ERP\Products\Product\ProductList
*/
protected $List = array();
/**
* Basket constructor.
*/
public function __construct()
{
$this->List = new ProductList();
$this->List->duplicate = true;
}
/**
* Clear the basket
*/
public function clear()
{
$this->List->clear();
}
/**
* @return int
*/
public function count()
{
return $this->List->count();
}
//region product handling
/**
* Return the product list
*
* @return ProductList
*/
public function getProducts()
{
return $this->List;
}
/**
* Add a product to the basket
*
* @param Product $Product
*/
public function addProduct(Product $Product)
{
$this->List->addProduct($Product);
}
//endregion
/**
* Import the products to the basket
*
* @param array $products
*/
public function import($products = array())
{
$this->clear();
if (!is_array($products)) {
$products = array();
}
foreach ($products as $productData) {
if (!isset($productData['id'])) {
continue;
}
try {
$Product = new Product($productData['id'], $productData);
// check if active
$Real = QUI\ERP\Products\Handler\Products::getProduct($productData['id']);
if (!$Real->isActive()) {
continue;
}
if (isset($productData['quantity'])) {
$Product->setQuantity($productData['quantity']);
}
$this->List->addProduct($Product);
} catch (QUI\Exception $Exception) {
}
}
}
/**
* placeholder
*/
public function save()
{
// nothing to do
}
/**
* Return the basket as array
*
* @return array
*/
public function toArray()
{
$Products = $this->getProducts();
$products = $Products->getProducts();
$result = array();
/* @var $Product Product */
foreach ($products as $Product) {
$fields = array();
/* @var $Field \QUI\ERP\Products\Field\UniqueField */
foreach ($Product->getFields() as $Field) {
if (!$Field->isPublic()) {
continue;
}
if (!$Field->isCustomField()) {
continue;
}
$fields[$Field->getId()] = $Field->getValue();
}
$result[] = array(
'id' => $Product->getId(),
'quantity' => $Product->getQuantity(),
'fields' => $fields
);
}
return array(
'products' => $result
);
}
//region hash & orders
/**
* Does the basket have an assigned order?
*
* @return bool
*/
public function hasOrder()
{
return false;
}
/**
* placeholder
*
* @throws Exception
*/
public function getOrder()
{
throw new Exception(
QUI::getLocale()->get('quiqqer/order', 'exception.order.not.found'),
QUI\ERP\Order\Handler::ERROR_ORDER_NOT_FOUND
);
}
//endregion
}
......@@ -18,7 +18,7 @@ class Small extends QUI\Controls\Control
/**
* Used basket
*
* @var QUI\ERP\Order\Basket\Basket
* @var QUI\ERP\Order\Basket\Basket|QUI\ERP\Order\Basket\BasketGuest
*/
protected $Basket;
......@@ -28,11 +28,15 @@ class Small extends QUI\Controls\Control
protected $Project;
/**
* @param QUI\ERP\Order\Basket\Basket $Basket
* @param QUI\ERP\Order\Basket\Basket|QUI\ERP\Order\Basket\BasketGuest $Basket
*/
public function setBasket(QUI\ERP\Order\Basket\Basket $Basket)
public function setBasket($Basket)
{
$this->Basket = $Basket;
if ($Basket instanceof QUI\ERP\Order\Basket\Basket ||
$Basket instanceof QUI\ERP\Order\Basket\BasketGuest
) {
$this->Basket = $Basket;
}
}
/**
......@@ -45,7 +49,6 @@ protected function onCreate()
$Products = $this->Basket->getProducts()->getView();
$Project = $this->getProject();
$Engine->assign(array(
'data' => $Products->toArray(),
'Basket' => $this->Basket,
......
0% Lade oder .
You are about to add 0 people to the discussion. Proceed with caution.
Bearbeitung dieser Nachricht zuerst beenden!
Bitte registrieren oder zum Kommentieren