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

feat: #14 - integrated into the orders list in the frontend users profile

Übergeordneter bac7ef8d
Keine zugehörigen Branchen gefunden
Keine zugehörigen Tags gefunden
Keine zugehörigen Merge Requests gefunden
......@@ -2,12 +2,21 @@
* @module package/quiqqer/order/bin/frontend/controls/frontendusers/Orders
* @author www.pcsg.de (Henning Leutz)
*/
require.config({
paths: {
'Navigo' : URL_OPT_DIR + 'bin/navigo/lib/navigo.min',
'HistoryEvents': URL_OPT_DIR + 'bin/history-events/dist/history-events.min'
}
});
define('package/quiqqer/order/bin/frontend/controls/frontendusers/Orders', [
'qui/QUI',
'qui/controls/Control',
'qui/controls/loader/Loader',
'Ajax'
'Ajax',
'HistoryEvents'
], function (QUI, QUIControl, QUILoader, QUIAjax) {
"use strict";
......@@ -18,20 +27,25 @@ define('package/quiqqer/order/bin/frontend/controls/frontendusers/Orders', [
Type : 'package/quiqqer/order/bin/frontend/controls/frontendusers/Orders',
Binds: [
'$addArticleToBasket'
'$addArticleToBasket',
'$onChangeState'
],
initialize: function (options) {
this.parent(options);
this.$Orders = null;
this.$List = null;
this.$List = null;
this.$OrderContainer = null;
this.$orderOpened = false;
this.Loader = new QUILoader();
this.addEvents({
onImport: this.$onImport
});
window.addEventListener('changestate', this.$onChangeState, false);
},
/**
......@@ -41,9 +55,12 @@ define('package/quiqqer/order/bin/frontend/controls/frontendusers/Orders', [
var self = this,
Elm = this.getElm();
this.$List = Elm.getElement('.quiqqer-order-profile-orders-list');
this.$OrderContainer = new Element('div', {
'class': 'quiqqer-order-profile-orders-order'
}).inject(this.getElm());
this.Loader.inject(Elm);
this.$setEvents();
......@@ -65,6 +82,52 @@ define('package/quiqqer/order/bin/frontend/controls/frontendusers/Orders', [
});
},
/**
* event: change url state
*/
$onChangeState: function () {
var self = this,
hash = window.location.hash;
if (hash === '') {
if (this.$orderOpened) {
this.$hideOrderContainer().then(function () {
return self.$showList();
});
}
this.$orderOpened = '';
return;
}
hash = hash.replace('#', '');
if (this.$orderOpened === hash) {
return;
}
this.Loader.show();
self.$orderOpened = hash;
require([
'package/quiqqer/order/bin/frontend/controls/order/Order'
], function (Order) {
new Order({
hash : self.$orderOpened,
events: {
onLoad: function () {
self.Loader.hide();
self.$hideList().then(function () {
return self.$showOrderContainer();
});
}
}
}).inject(self.$OrderContainer);
});
},
/**
* Refresh the order listing
*
......@@ -101,34 +164,144 @@ define('package/quiqqer/order/bin/frontend/controls/frontendusers/Orders', [
* Set click / mouse / touch events
*/
$setEvents: function () {
var self = this;
var orderLinks = this.getElm().getElements(
'.quiqqer-order-profile-orders-order-header-orderId a'
);
orderLinks.addEvent('click', function (event) {
var Target = event.target,
hash = false;
var Target = event.target;
if (Target.nodeName !== 'A') {
Target = Target.getParent('a');
}
hash = Target.get('data-hash');
var hash = Target.get('data-hash');
if (!hash) {
return;
}
self.Loader.show();
event.stop();
require([
'package/quiqqer/order/bin/frontend/controls/order/Window'
], function (Window) {
new Window({
hash: hash
}).open();
window.location.hash = hash;
self.$onChangeState();
});
},
//region utils
/**
* hide the order list
*
* @return {Promise}
*/
$hideList: function () {
var self = this;
var elements = this.getElm().getElements(
'[data-qui="package/quiqqer/controls/bin/navigating/Pagination"]'
);
elements.push(self.$List);
return new Promise(function (resolve) {
elements.setStyle('position', 'relative');
moofx(elements).animate({
left : -20,
opacity: 0
}, {
callback: function () {
elements.setStyle('display', 'none');
resolve();
}
});
});
},
/**
* show the order list
*
* @return {Promise}
*/
$showList: function () {
var self = this;
var elements = this.getElm().getElements(
'[data-qui="package/quiqqer/controls/bin/navigating/Pagination"]'
);
elements.push(self.$List);
elements.setStyle('display', null);
return new Promise(function (resolve) {
moofx(elements).animate({
left : 0,
opacity: 1
}, {
callback: function () {
self.$List.setStyles({
left : null,
opacity : null,
position: null
});
resolve();
}
});
});
},
/**
* shows the order container
*
* @return {Promise}
*/
$showOrderContainer: function () {
var self = this;
return new Promise(function (resolve) {
self.$OrderContainer.setStyles({
left : -20,
opacity : 0,
position: 'relative'
});
moofx(self.$OrderContainer).animate({
left : 0,
opacity: 1
}, {
callback: resolve
});
});
},
/**
* hide the order container
*
* @return {Promise}
*/
$hideOrderContainer: function () {
var self = this;
return new Promise(function (resolve) {
moofx(self.$OrderContainer).animate({
left : -20,
opacity: 0
}, {
callback: function () {
self.$OrderContainer.setStyle('display', '');
self.$OrderContainer.set('html', '');
resolve();
}
});
});
}
//endregion
});
});
......@@ -34,6 +34,7 @@ abstract class AbstractOrder extends QUI\QDOM
/**
* Order is only created
*
* @deprecated
*/
const STATUS_CREATED = 0;
......@@ -41,6 +42,7 @@ abstract class AbstractOrder extends QUI\QDOM
/**
* Order is posted (Invoice created)
* Bestellung ist gebucht (Invoice erstellt)
*
* @deprecated
*/
const STATUS_POSTED = 1; // Bestellung ist gebucht (Invoice erstellt)
......
......@@ -57,6 +57,16 @@
clear: both;
}
.quiqqer-order-control-order-information-payment-icon {
float: left;
max-width: 30%;
}
.quiqqer-order-control-order-information-payment-title {
float: left;
padding: 0 0 0 10px;
}
/** Article
========================================== */
......
......@@ -92,7 +92,12 @@
{locale group="quiqqer/order" var="control.order.payment.title"}
</h2>
</header>
{$Payment->getTitle()}
<img src="{$Payment->getIcon()}" class="quiqqer-order-control-order-information-payment-icon"/>
<div class="quiqqer-order-control-order-information-payment-title">
{$Payment->getTitle()}
</div>
</section>
{/if}
</div>
......
......@@ -22,7 +22,7 @@ class UserOrders extends Control implements ControlInterface
*
* @param array $attributes
*/
public function __construct(array $attributes = array())
public function __construct(array $attributes = [])
{
$this->addCSSClass('quiqqer-order-profile-orders');
$this->addCSSFile(dirname(__FILE__).'/UserOrders.css');
......@@ -82,7 +82,7 @@ public function getBody()
$orders[] = $View;
}
$Engine->assign(array(
$Engine->assign([
'orders' => $orders,
'this' => $this,
'Project' => $this->getProject(),
......@@ -92,7 +92,7 @@ public function getBody()
'sheetCurrent' => $sheetCurrent,
'sheetLimit' => $limit,
'sheetCount' => $count
));
]);
return $Engine->fetch(dirname(__FILE__).'/UserOrders.html');
}
......@@ -138,7 +138,7 @@ public function renderOrder($Order)
$paymentStatus = QUI::getLocale()->get('quiqqer/order', 'payment.status.0');
}
$Engine->assign(array(
$Engine->assign([
'this' => $this,
'Project' => $this->getProject(),
'Order' => $Order,
......@@ -153,7 +153,7 @@ public function renderOrder($Order)
$this->getProject(),
$Order->getHash()
)
));
]);
return $Engine->fetch(dirname(__FILE__).'/UserOrders.Order.html');
}
......@@ -187,13 +187,13 @@ public function renderArticle(QUI\ERP\Accounting\Article $Article)
$Article->calc();
$Engine->assign(array(
$Engine->assign([
'this' => $this,
'Article' => $Article,
'Product' => $Product,
'Image' => $Image,
'Project' => QUI::getProjectManager()->get()
));
]);
return $Engine->fetch(dirname(__FILE__).'/UserOrders.Article.html');
}
......
......@@ -116,11 +116,19 @@ public function getTransactions()
}
/**
* @return int
* @return string
*/
public function getCreateDate()
{
return $this->Order->getCreateDate();
$createDate = $this->Order->getCreateDate();
$createDate = strtotime($createDate);
$DateFormatter = QUI::getLocale()->getDateFormatter(
\IntlDateFormatter::SHORT,
\IntlDateFormatter::SHORT
);
return $DateFormatter->format($createDate);
}
/**
......
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