diff --git a/bin/frontend/controls/frontendusers/Orders.js b/bin/frontend/controls/frontendusers/Orders.js index 431ebc224e8140697b2e3be0f62128f1b9d1f2a4..760eef85f3839a7394d466cc3588ea7cdc4eaa0e 100644 --- a/bin/frontend/controls/frontendusers/Orders.js +++ b/bin/frontend/controls/frontendusers/Orders.js @@ -63,9 +63,10 @@ define('package/quiqqer/order/bin/frontend/controls/frontendusers/Orders', [ */ $onImport: function () { var self = this, - Elm = this.getElm(); + Elm = this.getElm(), + SectionContainer = Elm.querySelector('[data-ref="section-container"]'); - this.$List = Elm.getElement('.quiqqer-order-profile-orders-list'); + this.$List = Elm.getElement('[data-ref="order-list"]'); this.$OrderContainer = new Element('div', { 'class': 'quiqqer-order-profile-orders-order-container', @@ -74,9 +75,16 @@ define('package/quiqqer/order/bin/frontend/controls/frontendusers/Orders', [ opacity : 0, position: 'relative' } - }).inject(this.getElm()); + }); + + if (SectionContainer) { + this.$OrderContainer.inject(SectionContainer); + this.Loader.inject(SectionContainer); + } else { + this.$OrderContainer.inject(Elm); + this.Loader.inject(Elm); + } - this.Loader.inject(Elm); this.$setEvents(); // pagination events @@ -179,6 +187,11 @@ define('package/quiqqer/order/bin/frontend/controls/frontendusers/Orders', [ onLoad: function () { self.Loader.hide(); self.$hideList().then(function () { + self.$OrderContainer.scrollIntoView({ + behavior: "smooth", + block: "start" + }); + return self.$showOrderContainer(); }); } @@ -245,9 +258,7 @@ define('package/quiqqer/order/bin/frontend/controls/frontendusers/Orders', [ */ $setEvents: function () { var self = this; - var orderLinks = this.getElm().getElements( - '.quiqqer-order-profile-orders-order-header-orderId a' - ); + var orderLinks = this.getElm().getElements('[data-ref="order-link"]'); orderLinks.addEvent('click', function (event) { var Target = event.target; @@ -298,6 +309,7 @@ define('package/quiqqer/order/bin/frontend/controls/frontendusers/Orders', [ ); elements.push(self.$List); + elements.push(...this.getElm().querySelectorAll('[data-ref="order-text"]')) return new Promise(function (resolve) { elements.setStyle('position', 'relative'); @@ -328,6 +340,7 @@ define('package/quiqqer/order/bin/frontend/controls/frontendusers/Orders', [ ); elements.push(self.$List); + elements.push(...this.getElm().querySelectorAll('[data-ref="order-text"]')) elements.setStyle('display', null); diff --git a/locale.xml b/locale.xml index 16fda9b3be8193aa6a31fadb4fa1a7353e422cfa..1d2c6178c14b2fa3ce8f38d33a7812265a98f968 100644 --- a/locale.xml +++ b/locale.xml @@ -357,10 +357,18 @@ <de><![CDATA[Meine Bestellungen]]></de> <en><![CDATA[My orders]]></en> </locale> + <locale name="control.frontendUsers.orders.title"> + <de><![CDATA[Bestellungen]]></de> + <en><![CDATA[Orders]]></en> + </locale> <locale name="profile.opened.orders.title"> - <de><![CDATA[Meine offene Bestellungen]]></de> + <de><![CDATA[Meine offenen Bestellungen]]></de> <en><![CDATA[My open orders]]></en> </locale> + <locale name="control.frontendUsers.opened.orders.title"> + <de><![CDATA[Offene Bestellungen]]></de> + <en><![CDATA[Open orders]]></en> + </locale> <locale name="message.orders.panel.empty.articles"> <de><![CDATA[Die Bestellung besitzt keine Artikel.]]></de> <en><![CDATA[The order does not own any articles.]]></en> @@ -833,6 +841,28 @@ <de><![CDATA[Vorgehen bei gescheiterter Zahlung]]></de> <en><![CDATA[Procedure for failed payment]]></en> </locale> + + <locale name="order.settings.userProfile.title"> + <de><![CDATA[Benutezrprofil]]></de> + <en><![CDATA[User profile]]></en> + </locale> + <locale name="order.settings.userProfile.showArticleImage"> + <de><![CDATA[Artikelbilder anzeigen]]></de> + <en><![CDATA[Show article images]]></en> + </locale> + <locale name="order.settings.userProfile.showArticleImage.desc"> + <de><![CDATA[Wenn aktiviert, werden Artikelbilder im Benutzerprofil im Bereich "Bestellungen" und "Offene Bestellungen" angezeigt.]]></de> + <en><![CDATA[When enabled, product images are displayed in the user profile's order history and open orders section.]]></en> + </locale> + <locale name="order.settings.userProfile.disableProductLinks"> + <de><![CDATA[Keine Prodeuktlinks]]></de> + <en><![CDATA[Disable product links]]></en> + </locale> + <locale name="order.settings.userProfile.disableProductLinks.desc"> + <de><![CDATA[Wenn aktiviert, werden keine Links zu den Produkten im Benutzerprofil angezeigt.]]></de> + <en><![CDATA[When enabled, no links to products will be displayed in the user profile.]]></en> + </locale> + <locale name="order.settings.mails.attachments"> <de><![CDATA[Automatische Mailanhänge]]></de> <en><![CDATA[Automatic mail attachments]]></en> @@ -1090,10 +1120,18 @@ <de><![CDATA[Bestellstatus]]></de> <en><![CDATA[Order status]]></en> </locale> - <locale name="control.profile.orders.order.invoice"> + <locale name="control.profile.orders.order.invoice.label"> <de><![CDATA[Rechnung]]></de> <en><![CDATA[Invoice]]></en> </locale> + <locale name="control.profile.orders.order.invoice"> + <de><![CDATA[Rechnung herunterladen]]></de> + <en><![CDATA[Download invoice]]></en> + </locale> + <locale name="control.profile.orders.order.continuePayment.label"> + <de><![CDATA[Benötigte Aktion]]></de> + <en><![CDATA[Required action]]></en> + </locale> <locale name="control.profile.orders.order.continuePayment"> <de><![CDATA[Bezahlung fortführen]]></de> <en><![CDATA[Continue payment]]></en> diff --git a/settings.xml b/settings.xml index 7e481a0fead3616547d1f8b55f33c7a87ac3681f..bfabc705627d19b944d98f5a1d28823671fdc7d5 100644 --- a/settings.xml +++ b/settings.xml @@ -37,6 +37,17 @@ </conf> </section> + <section name="userProfile"> + <conf name="showArticleImage"> + <type><![CDATA[bool]]></type> + <defaultvalue><![CDATA[1]]></defaultvalue> + </conf> + <conf name="disableProductLinks"> + <type><![CDATA[bool]]></type> + <defaultvalue><![CDATA[0]]></defaultvalue> + </conf> + </section> + <section name="mails"> <!-- Datenschutz --> <conf name="privacyPolicy"> @@ -234,6 +245,36 @@ </input> </settings> + <settings> + <title> + <locale group="quiqqer/order" var="order.settings.userProfile.title"/> + </title> + + <input type="checkbox" conf="userProfile.showArticleImage"> + <text> + <locale group="quiqqer/order" + var="order.settings.userProfile.showArticleImage"/> + </text> + <description> + <locale group="quiqqer/order" + var="order.settings.userProfile.showArticleImage.desc" + /> + </description> + </input> + + <input type="checkbox" conf="userProfile.disableProductLinks"> + <text> + <locale group="quiqqer/order" + var="order.settings.userProfile.disableProductLinks"/> + </text> + <description> + <locale group="quiqqer/order" + var="order.settings.userProfile.disableProductLinks.desc" + /> + </description> + </input> + </settings> + <settings> <title> <locale group="quiqqer/order" var="order.settings.mails.attachments"/> diff --git a/src/QUI/ERP/Order/FrontendUsers/Controls/UserOrders.Article.html b/src/QUI/ERP/Order/FrontendUsers/Controls/UserOrders.Article.html index 9510f0652ca56d223b3c6d7c7bd2ce11a9dadb08..9bb19e3eeacaf4ec92dd41712f84669d735e9e3a 100644 --- a/src/QUI/ERP/Order/FrontendUsers/Controls/UserOrders.Article.html +++ b/src/QUI/ERP/Order/FrontendUsers/Controls/UserOrders.Article.html @@ -1,52 +1,65 @@ <article class="quiqqer-order-profile-orders-order-articles-article" data-qui="package/quiqqer/order/bin/frontend/controls/frontendusers/Article" > - <div class="quiqqer-order-profile-orders-order-articles-image"> - {if !empty($Image)} - {image image=$Image width="200" height=200} - {else} - {image image=$Project->getMedia()->getPlaceholderImage()} - {/if} - </div> + {if $showImage} + <div class="quiqqer-order-profile-orders-order-articles-image"> + {if !$noLink && !empty($Product) && $Product->getUrl()} + <a href="{$Product->getUrl()}" + class="quiqqer-order-profile-orders-order-articles-image__link" + target="_blank" + > + {/if} + {if !empty($Image)} + {image image=$Image width="200" height=200} + {else} + {image image=$Project->getMedia()->getPlaceholderImage()} + {/if} + {if !$noLink && !empty($Product) && $Product->getUrl()} + </a> + {/if} + </div> + {/if} - <div class="quiqqer-order-profile-orders-order-articles-information"> - {if !empty($Product)} - <a href="{$Product->getUrl()}" - class="quiqqer-order-profile-orders-order-articles-title" - target="_blank" - > - {$Article->getTitle()} - </a> - {else} - <div class="quiqqer-order-profile-orders-order-articles-title"> - {$Article->getTitle()} + <div class="quiqqer-order-profile-orders-order-articles-data"> + <div class="quiqqer-order-profile-orders-order-articles-information"> + {if !$noLink &&!empty($Product)} + <a href="{$Product->getUrl()}" + class="quiqqer-order-profile-orders-order-articles-title" + target="_blank" + > + {$Article->getTitle()} + </a> + {else} + <div class="quiqqer-order-profile-orders-order-articles-title"> + {$Article->getTitle()} + </div> + {/if} + + <div class="quiqqer-order-profile-orders-order-articles-description"> + {$Article->getDescription()} + </div> </div> - {/if} - <div class="quiqqer-order-profile-orders-order-articles-description"> - {$Article->getDescription()} + <div class="quiqqer-order-profile-orders-order-articles-price"> + {$Article->getPrice()->getDisplayPrice()} </div> - </div> - <div class="quiqqer-order-profile-orders-order-articles-price"> - {$Article->getPrice()->getDisplayPrice()} + <div class="quiqqer-order-profile-orders-order-articles-buttons"> + {if !empty($Product) && $Product->isActive()} + <noscript> + <style> + .quiqqer-order-profile-orders-order-articles-rebuy { + display: none + } + </style> + </noscript> + <button class="quiqqer-order-profile-orders-order-articles-rebuy btn btn-primary" + data-articleno="{$Article->getArticleNo()}" + disabled + > + {locale group="quiqqer/order" var="controls.UsedOrders.Article.buy_again"} + </button> + {/if} + </div> </div> - - {if !empty($Product) && $Product->isActive()} - <noscript> - <style> - .quiqqer-order-profile-orders-order-articles-rebuy { - display: none - } - </style> - </noscript> - <button class="quiqqer-order-profile-orders-order-articles-rebuy" - data-articleno="{$Article->getArticleNo()}" - disabled - > - {locale group="quiqqer/order" var="controls.UsedOrders.Article.buy_again"} - </button> - {/if} - - <div class="quiqqer-order-profile-orders-order-articles-buttons"></div> </article> diff --git a/src/QUI/ERP/Order/FrontendUsers/Controls/UserOrders.Order.html b/src/QUI/ERP/Order/FrontendUsers/Controls/UserOrders.Order.html index 662a7fd240025e113433e78e35d965b52798a57e..120f9eaee4f44ec55c3e3431b747dd6397b9ebc4 100644 --- a/src/QUI/ERP/Order/FrontendUsers/Controls/UserOrders.Order.html +++ b/src/QUI/ERP/Order/FrontendUsers/Controls/UserOrders.Order.html @@ -1,81 +1,96 @@ <section class="quiqqer-order-profile-orders-order"> - <header> - <div class="quiqqer-order-profile-orders-order-header-date"> - <span>{locale group="quiqqer/order" var="control.profile.orders.order.date"}</span> - <span>{$Order->getCreateDate()}</span> + <header class="quiqqer-order-profile-orders-order__header"> + <div class="quiqqer-order-profile-orders-order__date"> + <span class="quiqqer-order-profile-orders-order__label">{locale group="quiqqer/order" var="control.profile.orders.order.date"}</span> + <div class="quiqqer-order-profile-orders-order__value">{$Order->getCreateDate()}</div> </div> - <div class="quiqqer-order-profile-orders-order-header-total"> - <span>{locale group="quiqqer/order" var="control.profile.orders.order.total"}</span> - <span>{$order.calculations.display_sum}</span> - </div> - - <div class="quiqqer-order-profile-orders-order-header-addressInvoice"> - <span>{locale group="quiqqer/order" var="control.profile.orders.order.invoiceAddress"}</span> - {if $Invoice} - {assign var=Customer value=$Invoice->getCustomer()} - {else} - {assign var=Customer value=$Order->getCustomer()} - {/if} - - {assign var=Address value=$Customer->getAddress()} - {$Address->render(['tel' => false, 'mail' => false])} - <span> - <span>{$Address->getName()}</span> - <span class="fa fa-angle-down"></span> - </span> - </div> - - <div class="quiqqer-order-profile-orders-order-header-orderId"> - <span>{locale group="quiqqer/order" var="control.profile.orders.order.orderNo"}</span> - <a href="{$Utils->getOrderUrl($Project, $Order)}" - target="_blank" - data-hash="{$Order->getHash()}" - title="{locale group='quiqqer/order' var='control.order.details.title'}" - > - {$Order->getPrefixedId()} - </a> + <div class="quiqqer-order-profile-orders-order__orderId"> + <span class="quiqqer-order-profile-orders-order__label">{locale group="quiqqer/order" var="control.profile.orders.order.orderNo"}</span> + <div class="quiqqer-order-profile-orders-order__value"> + <a href="{$Utils->getOrderUrl($Project, $Order)}" + target="_blank" + data-ref="order-link" + data-hash="{$Order->getHash()}" + title="{locale group='quiqqer/order' var='control.order.details.title'}" + > + {$Order->getPrefixedId()} + </a> + </div> </div> </header> <div class="quiqqer-order-profile-orders-order-articles"> {foreach $articles as $Article} - {$this->renderArticle($Article)} + {$this->renderArticle($Article)} {/foreach} </div> - <footer> + <footer class="quiqqer-order-profile-orders-order__footer"> {if $Order->isPosted()} - <a href="{$Order->getAttribute('downloadLink')}" target="_blank"> - <span class="fa fa-file-pdf-o"></span> - <span>{locale group="quiqqer/order" var="control.profile.orders.order.invoice"}</span> - </a> + <div class="quiqqer-order-profile-orders-order__group quiqqer-order-profile-orders-order-invoice"> + <span class="quiqqer-order-profile-orders-order__label"> + {locale group="quiqqer/order" var="control.profile.orders.order.invoice.label"} + </span> + <div class="quiqqer-order-profile-orders-order__value"> + <a href="{$Order->getAttribute('downloadLink')}" target="_blank"> + <span class="fa fa-file-pdf-o"></span> + <span>{locale group="quiqqer/order" var="control.profile.orders.order.invoice"}</span> + </a> + </div> + </div> {else if !$Order->isSuccessful()} - <a href="{$orderUrl}" target="_blank" class=""> - <span class="fa fa-shopping-basket"></span> - <span>{locale group="quiqqer/order" var="control.profile.orders.order.continuePayment"}</span> - </a> + <div class="quiqqer-order-profile-orders-order__group quiqqer-order-profile-orders-order-continuePayment"> + <span class="quiqqer-order-profile-orders-order__label"> + {locale group="quiqqer/order" var="control.profile.orders.order.continuePayment.label"} + </span> + <div class="quiqqer-order-profile-orders-order__value"> + <a href="{$orderUrl}" target="_blank"> + <span class="fa fa-shopping-basket"></span> + <span>{locale group="quiqqer/order" var="control.profile.orders.order.continuePayment"}</span> + </a> + </div> + </div> {/if} - {if $Payment} - <div class="quiqqer-order-profile-orders-order-footer-paymentType"> - <span>{locale group="quiqqer/order" var="control.profile.orders.order.paymentMethod"}:</span> - <span>{$Payment->getTitle()}</span> + <div class="quiqqer-order-profile-orders-order__group quiqqer-order-profile-orders-order-total"> + <span class="quiqqer-order-profile-orders-order__label">{locale group="quiqqer/order" var="control.profile.orders.order.total"}</span> + <div class="quiqqer-order-profile-orders-order__value">{$order.calculations.display_sum}</div> </div> + + <div class="quiqqer-order-profile-orders-order__group quiqqer-order-profile-orders-order-addressInvoice"> + <span class="quiqqer-order-profile-orders-order__label">{locale group="quiqqer/order" var="control.profile.orders.order.invoiceAddress"}</span> + {if $Invoice} + {assign var=Customer value=$Invoice->getCustomer()} + {else} + {assign var=Customer value=$Order->getCustomer()} + {/if} + + {assign var=Address value=$Customer->getAddress()} + <div class="quiqqer-order-profile-orders-order__value"> + {$Address->render(['tel' => false, 'mail' => false])} + </div> + </div> + + {if $Payment} + <div class="quiqqer-order-profile-orders-order__group quiqqer-order-profile-orders-order-paymentType"> + <span class="quiqqer-order-profile-orders-order__label">{locale group="quiqqer/order" var="control.profile.orders.order.paymentMethod"}:</span> + <div class="quiqqer-order-profile-orders-order__value">{$Payment->getTitle()}</div> + </div> {/if} {if !empty($shippingStatus)} - <div class="quiqqer-order-profile-orders-order-footer-shipping"> - <span>{locale group="quiqqer/shipping" var="control.profile.orders.shipping"}:</span> - <span>{$shippingStatus}</span> - </div> + <div class="quiqqer-order-profile-orders-order__group quiqqer-order-profile-orders-order-footer-shipping"> + <span class="quiqqer-order-profile-orders-order__label">{locale group="quiqqer/shipping" var="control.profile.orders.shipping"}:</span> + <div class="quiqqer-order-profile-orders-order__value">{$shippingStatus}</div> + </div> {/if} {if isset($orderStatus)} - <div class="quiqqer-order-profile-orders-order-footer-orderStatus"> - <span>{locale group="quiqqer/order" var="control.profile.orders.order.orderStatus"}:</span> - <span>{$orderStatus}</span> - </div> + <div class="quiqqer-order-profile-orders-order__group quiqqer-order-profile-orders-order-footer-orderStatus"> + <span class="quiqqer-order-profile-orders-order__label">{locale group="quiqqer/order" var="control.profile.orders.order.orderStatus"}:</span> + <div class="quiqqer-order-profile-orders-order__value">{$orderStatus}</div> + </div> {/if} </footer> </section> diff --git a/src/QUI/ERP/Order/FrontendUsers/Controls/UserOrders.css b/src/QUI/ERP/Order/FrontendUsers/Controls/UserOrders.css index 4c8b10183f31ef1d0256181b5dfb59f4b7351630..ad0c4a21f0e36c07ae705bbb8b4815ef7cdeb606 100644 --- a/src/QUI/ERP/Order/FrontendUsers/Controls/UserOrders.css +++ b/src/QUI/ERP/Order/FrontendUsers/Controls/UserOrders.css @@ -1,110 +1,122 @@ -.quiqqer-order-profile-orders, -.quiqqer-order-profile-orders-list { - float: left; - width: 100%; +.quiqqer-frontendUsers-section--userOrders { + --_label-color: var(--label-color, #999); + --_label-fontSize: var(--label-fontSize, 0.875rem); + --_box-padding: var(--box-padding, 0.75rem); + --_box-bgColor: var(--box-bgColor, #f6f6f6); + --_borderColor: var(--borderColor, #ddd); + --_borderWidth: var(--borderWidth, 1px); + --_scrollMarginTop: var(--scrollMarginTop,var(--_qui-template-scrollMarginTop, 0px)); } -/** One Order - =============================================== */ - -.quiqqer-order-profile-orders-order { - border: 1px #ddd solid; - clear: both; - float: left; - margin-bottom: 10px; - width: 100%; +.quiqqer-order-profile-orders-list { + display: grid; + grid-template-columns: 1fr; + gap: 2rem; } -.quiqqer-order-profile-orders-order header { - background: #f6f6f6; - border-bottom: 1px #ddd solid; - float: left; - padding: 10px; - width: 100%; +:where(.quiqqer-order-profile-orders-order__label) { + color: var(--_label-color); + font-size: var(--_label-fontSize); } -.quiqqer-order-profile-orders-order-header-date, -.quiqqer-order-profile-orders-order-header-total, -.quiqqer-order-profile-orders-order-header-addressInvoice, -.quiqqer-order-profile-orders-order-header-addressDelivery { - float: left; - position: relative; - width: 25%; +/* header */ +:where(.quiqqer-order-profile-orders-order__header) { + background: var(--_box-bgColor); + border-bottom: var(--_borderWidth) solid var(--_borderColor); + padding: var(--_box-padding); + display: flex; + justify-content: space-between; } -.quiqqer-order-profile-orders-order-header-date span, -.quiqqer-order-profile-orders-order-header-total span, -.quiqqer-order-profile-orders-order-header-addressInvoice span, -.quiqqer-order-profile-orders-order-header-addressDelivery span { - clear: both; - float: left; +:where(.quiqqer-order-profile-orders-order__header .quiqqer-order-profile-orders-order__orderId) { + text-align: right; } -.quiqqer-order-profile-orders-order-header-addressInvoice { - cursor: pointer; -} +/** One Order + =============================================== */ -.quiqqer-order-profile-orders-order-header-addressInvoice address { - cursor: default; - display: none; - background: #ffffff; - border: 1px #ddd solid; - left: 0; - top: 35px; - padding: 10px; - position: absolute; - width: 100%; +:where(.quiqqer-order-profile-orders-order) { + container-type: inline-size; + container-name: quiqqer-order-profile-orders-order; + + border: var(--_borderWidth) solid var(--_borderColor); + min-width: 0; } -.quiqqer-order-profile-orders-order-header-addressInvoice:is(:hover, :active) address { - display: inline-block; +/* article list */ +.quiqqer-order-profile-orders-order-articles { + padding: var(--_box-padding); + display: grid; + gap: 1rem; } -.quiqqer-order-profile-orders-order-header-addressInvoice span { - text-align: left; +/* single article */ +.quiqqer-order-profile-orders-order-articles-article { + display: flex; + gap: 1rem; + min-width: 0; } -.quiqqer-order-profile-orders-order-articles { - float: left; - padding: 10px; - width: 100%; +:where(.quiqqer-order-profile-orders-order-articles-image) { + width: calc(10rem - 0.5rem); + height: calc(10rem - 0.5rem); + background: var(--_box-bgColor); + border-radius: 0.5rem; + overflow: hidden; + display: grid; + place-content: center; + padding: var(--_box-padding); + flex-shrink: 0; } -.quiqqer-order-profile-orders-order-articles-article { - float: left; - width: 100%; +.quiqqer-order-profile-orders-order-articles-data { + flex-grow: 1; + display: flex; + flex-direction: column; + gap: 0.5rem; } -.quiqqer-order-profile-orders-order-articles-information { - padding-top: 10px; +:where(.quiqqer-order-profile-orders-order-articles-title) { + font-weight: bolder; } -.quiqqer-order-profile-orders-order-articles-image { - float: left; - margin-right: 10px; +.quiqqer-order-profile-orders-order-articles-buttons { + margin-top: auto; } -.quiqqer-order-profile-orders-order-articles-description { - margin: 5px 0; +/* footer */ +:where(.quiqqer-order-profile-orders-order__footer) { + border-top: var(--_borderWidth) solid var(--_borderColor); + padding: var(--_box-padding); + display: flex; + flex-direction: column; + gap: 0.5rem; } -.quiqqer-order-profile-orders-order-footer-paymentType { - margin-top: 10px; +:where(.quiqqer-order-profile-orders-order__group) { + display: grid; + grid-template-columns: 10rem 1fr; + gap: 0.5rem; } -.quiqqer-order-profile-orders-order footer { - background: #f6f6f6; - border-top: 1px #ddd solid; - float: left; - padding: 10px; - width: 100%; +@container quiqqer-order-profile-orders-order (max-width: 25rem) { + .quiqqer-order-profile-orders-order-articles-article { + flex-direction: column; + } + + :where(.quiqqer-order-profile-orders-order-articles-article:not(:first-child)) { + border-top: var(--_borderWidth) solid var(--_borderColor); + padding-top: 1rem; + } + + :where(.quiqqer-order-profile-orders-order__group) { + display: block; + } } /** Pagination =============================================== */ - .quiqqer-order-profile-orders-pagination { - float: left; width: 100%; } @@ -112,56 +124,17 @@ text-align: right; } -@media (max-width: 768px) { - .quiqqer-order-profile-orders-order-header-date, - .quiqqer-order-profile-orders-order-header-total, - .quiqqer-order-profile-orders-order-header-addressInvoice, - .quiqqer-order-profile-orders-order-header-addressDelivery { - width: 100%; - } - - .quiqqer-order-profile-orders-order-header-orderId { - float: left; - margin-top: 10px; - width: 100%; - } - - .quiqqer-order-profile-orders-order-header-date > span, - .quiqqer-order-profile-orders-order-header-total > span, - .quiqqer-order-profile-orders-order-header-orderId > span, - .quiqqer-order-profile-orders-order-header-orderId > a, - .quiqqer-order-profile-orders-order-header-addressInvoice > span { - clear: none; - float: left; - width: 50%; - } - - .quiqqer-order-profile-orders-order-header-addressInvoice address { - top: 100%; - z-index: 1; - } - - .quiqqer-order-profile-orders .quiqqer-order-profile-orders-pagination:first-child { - margin-bottom: 20px; - } - - .quiqqer-order-control-order-information-invoiceAddress, - .quiqqer-order-control-order-information-orderData, - .quiqqer-order-control-order-information-payment { - clear: both; - width: 100%; - } +.quiqqer-sheets-mobile { + margin-top: 2rem; + width: 100%; +} - .quiqqer-order-control-order-information-payment-icon { - margin-bottom: 10px; - max-width: 100%; - } +/* Back btn */ +.quiqqer-order-control-order-backButton { + margin-top: 1rem; +} - .quiqqer-order-control-order-information-orderData-placeholder td { - font-size: 1px; - height: 2px; - display: block; - padding: 0; - margin: 0; - } +/* container for order details (open per click on order number) */ +.quiqqer-order-profile-orders-order-container { + scroll-margin-top: var(--_scrollMarginTop); } \ No newline at end of file diff --git a/src/QUI/ERP/Order/FrontendUsers/Controls/UserOrders.html b/src/QUI/ERP/Order/FrontendUsers/Controls/UserOrders.html index 4923344e6380204b2ff2d1aa4055761cdff2b7de..ecbb8fec976df979c5680ef471013b55f57cc7ad 100644 --- a/src/QUI/ERP/Order/FrontendUsers/Controls/UserOrders.html +++ b/src/QUI/ERP/Order/FrontendUsers/Controls/UserOrders.html @@ -1,33 +1,27 @@ -{if $sheetsMax && $sheetsMax != 1} -<div class="quiqqer-order-profile-orders-pagination"> - {control - control="QUI\Controls\Navigating\Pagination" - useAjax=true - Project=$Project - limit=$sheetLimit - sheets=$sheetsMax - sheet=$sheetCurrent - } -</div> -{/if} +<section class="quiqqer-frontendUsers-profile-section quiqqer-frontendUsers-section--userOrders" data-ref="section-container"> + <div data-ref="order-text"> + <h2>{locale group="quiqqer/order" var="control.frontendUsers.orders.title"}</h2> + </div> -<div class="quiqqer-order-profile-orders-list"> - {foreach $orders as $Order} - {$this->renderOrder($Order)} - {foreachelse} - <p>{locale group="quiqqer/order" var="message.no.orders"}</p> - {/foreach} -</div> + <div class="quiqqer-order-profile-orders-list" data-ref="order-list"> + {foreach $orders as $Order} + {$this->renderOrder($Order)} + {foreachelse} + <p class="text-muted">{locale group="quiqqer/order" var="message.no.orders"}</p> + {/foreach} + </div> -{if $sheetsMax && $sheetsMax != 1} -<div class="quiqqer-order-profile-orders-pagination"> - {control - control="QUI\Controls\Navigating\Pagination" - useAjax=true - Project=$Project - limit=$sheetLimit - sheets=$sheetsMax - sheet=$sheetCurrent - } -</div> -{/if} \ No newline at end of file + {if $sheetsMax && $sheetsMax != 1} + <div class="quiqqer-order-profile-orders-pagination" data-ref="pagination"> + {control + control="QUI\Controls\Navigating\Pagination" + useAjax=true + Project=$Project + limit=$sheetLimit + sheets=$sheetsMax + sheet=$sheetCurrent + } + </div> + {/if} + +</section> \ No newline at end of file diff --git a/src/QUI/ERP/Order/FrontendUsers/Controls/UserOrders.php b/src/QUI/ERP/Order/FrontendUsers/Controls/UserOrders.php index 2135ea1603881ff97a78e49ee0731bc2506fbe3a..3b4efa8500231d6154d106aecf4b30b9d35673c6 100644 --- a/src/QUI/ERP/Order/FrontendUsers/Controls/UserOrders.php +++ b/src/QUI/ERP/Order/FrontendUsers/Controls/UserOrders.php @@ -216,6 +216,9 @@ class_exists('QUI\ERP\Shipping\ShippingStatus\Status') */ public function renderArticle(QUI\ERP\Accounting\Article $Article): string { + $Settings = QUI\ERP\Order\Settings::getInstance(); + $showImage = $Settings->get('userProfile', 'showArticleImage'); + $noLink = $Settings->get('userProfile', 'disableProductLinks'); $Engine = QUI::getTemplateManager()->getEngine(); $Product = null; $Image = null; @@ -244,6 +247,8 @@ public function renderArticle(QUI\ERP\Accounting\Article $Article): string 'Article' => $Article, 'Product' => $Product, 'Image' => $Image, + 'showImage' => $showImage, + 'noLink' => $noLink, 'Project' => QUI::getProjectManager()->get() ]);