diff options
| -rw-r--r-- | views/css/wpsg-theme.css | 14 | ||||
| -rw-r--r-- | views/warenkorb/checkout.phtml | 5 | ||||
| -rw-r--r-- | views/warenkorb/checkout2.phtml | 5 | ||||
| -rw-r--r-- | views/warenkorb/checkout_summary.phtml | 67 |
4 files changed, 91 insertions, 0 deletions
diff --git a/views/css/wpsg-theme.css b/views/css/wpsg-theme.css index 2993174..7dd86e3 100644 --- a/views/css/wpsg-theme.css +++ b/views/css/wpsg-theme.css @@ -175,6 +175,20 @@ .wpsg_checkout :where(.wpsg_checkout2button) { float:right; } /* Zurück als Link (Punkt 8.12): links, auf Höhe des Knopfs rechts */ .wpsg-checkout__back { float:left; display:inline-block; padding:var(--wpsg-button-padding); padding-inline-start:0; color:inherit; } +/* Kasse zweispaltig (Punkt 8.10): Formular links, „Ihre Bestellung“ rechts; schmal untereinander */ +.wpsg-checkout__layout { display:grid; grid-template-columns:minmax(0, 1fr); gap:calc(var(--wpsg-gap) * 2); align-items:start; } +@media (min-width: 900px) { .wpsg-checkout__layout { grid-template-columns:minmax(0, 2fr) minmax(16rem, 1fr); } .wpsg-checkout__summary { position:sticky; top:var(--wpsg-gap); } } +.wpsg-checkout__layout > form { min-width:0; } +.wpsg-checkout__summary { padding:calc(var(--wpsg-gap) * 1.5); border:var(--wpsg-field-border); border-radius:var(--wpsg-radius); background:var(--wpsg-color-surface); } +.wpsg-checkout__summary-title { margin:0 0 0.75em; font-size:1.25em; } +.wpsg-checkout__summary-items { margin:0; padding:0; list-style:none; } +.wpsg-checkout__summary-row { display:flex; justify-content:space-between; gap:var(--wpsg-gap); margin:0 0 0.5em; } +.wpsg-checkout__summary-row > span:last-child { white-space:nowrap; text-align:right; } +.wpsg-checkout__summary-row > span:first-child { overflow-wrap:break-word; hyphens:auto; } +.wpsg-checkout__summary-variant { display:block; font-size:var(--wpsg-font-size-small); opacity:var(--wpsg-muted-opacity); } +.wpsg-checkout__summary-row.is-muted, .wpsg-checkout__summary-tax { opacity:var(--wpsg-muted-opacity); } +.wpsg-checkout__summary-total { margin-top:0.75em; padding-top:0.75em; border-top:var(--wpsg-field-border); font-weight:700; font-size:1.1em; } +.wpsg-checkout__summary-tax { margin:0.25em 0 0; font-size:var(--wpsg-font-size-small); } .wpsg_checkout :where(.wpsg_mod_ordervars), .wpsg_checkout :where(.wpsg_mod_shippingadress) { margin-bottom:var(--wpsg-gap); } .wpsg_checkout :where(.wpsg_mod_ordervars_field) { display:inline; } :where(.wpsg_checkout h2) { padding:10px 0; } diff --git a/views/warenkorb/checkout.phtml b/views/warenkorb/checkout.phtml index 094e44c..4b91475 100644 --- a/views/warenkorb/checkout.phtml +++ b/views/warenkorb/checkout.phtml @@ -87,6 +87,9 @@ <?php $GLOBALS['step'] = 2; $this->render(WPSG_PATH_VIEW.'/warenkorb/progress.phtml'); ?>
+ <?php $bSummary = \wpsg\ThemeStyle::isThemeMode(); /* Modus „neu“: Formular und „Ihre Bestellung“ nebeneinander (Punkt 8.10) */ ?>
+ <?php if ($bSummary) { ?><div class="wpsg-checkout__layout"><?php } ?>
+
<form id="form-step2" method="post" action="<?php echo esc_url($this->getURL(wpsg_ShopController::URL_BASKET)); ?>" enctype="multipart/form-data">
<?php /* Einbindung des Logins im Checkout */ ?>
@@ -406,6 +409,8 @@ </form>
+ <?php if ($bSummary) { $this->render(WPSG_PATH_VIEW.'/warenkorb/checkout_summary.phtml'); ?></div><?php } ?>
+
<script type="text/javascript">/* <![CDATA[ */
jQuery(document).ready(function() {
diff --git a/views/warenkorb/checkout2.phtml b/views/warenkorb/checkout2.phtml index 01b545c..84d1ac8 100644 --- a/views/warenkorb/checkout2.phtml +++ b/views/warenkorb/checkout2.phtml @@ -15,6 +15,9 @@ <?php $GLOBALS['step'] = 3; $this->render(WPSG_PATH_VIEW.'/warenkorb/progress.phtml'); ?>
+ <?php $bSummary = \wpsg\ThemeStyle::isThemeMode(); /* Modus „neu“: Formular und „Ihre Bestellung“ nebeneinander (Punkt 8.10) */ ?>
+ <?php if ($bSummary) { ?><div class="wpsg-checkout__layout"><?php } ?>
+
<form id="wpsg_checkout_form" method="post" action="<?php echo $this->getURL(wpsg_ShopController::URL_BASKET); ?>">
<input type="hidden" value="1" name="wpsg[checkout][send]" />
@@ -111,6 +114,8 @@ <div class="wpsg_clear"></div>
</form>
+
+ <?php if ($bSummary) { $this->render(WPSG_PATH_VIEW.'/warenkorb/checkout_summary.phtml'); ?></div><?php } ?>
<div style="position:fixed; left:0; top:0; width:100vw; height:100vh; background-color:rgba(255, 255, 255, 0.5); display:none;" id="pppl_loading_blocker"></div>
diff --git a/views/warenkorb/checkout_summary.phtml b/views/warenkorb/checkout_summary.phtml new file mode 100644 index 0000000..bbb3a4b --- /dev/null +++ b/views/warenkorb/checkout_summary.phtml @@ -0,0 +1,67 @@ +<?php + + /** + * „Ihre Bestellung“ neben dem Formular der Kasse, nur im Modus „neu“ (Punkt 8.10) + * + * Posten, Versand, Zahlungsgebühr, Rabatt, Summe und die enthaltene MwSt. aus dem Warenkorb ($this->view['basket']). + * @version 4.6.1 + */ + + if (!defined('ABSPATH')) exit; + + $arBasket = (array)($this->view['basket']??[]); + $arSum = (array)($arBasket['sum']??[]); + $currency = $this->get_option('wpsg_currency'); + +?> +<aside class="wpsg-checkout__summary" aria-labelledby="wpsg-checkout-summary-title"> + + <h2 id="wpsg-checkout-summary-title" class="wpsg-checkout__summary-title"><?php echo esc_html__('Ihre Bestellung', 'wpsg'); ?></h2> + + <ul class="wpsg-checkout__summary-items"> + <?php foreach ((array)($arBasket['produkte']??[]) as $product_data) { $name = (((string)($product_data['detailname']??'') !== '')?$product_data['detailname']:($product_data['name']??'')); ?> + <li class="wpsg-checkout__summary-row"> + <span> + <?php /* translators: 1: Menge, 2: Produktname */ echo esc_html(sprintf(__('%1$s × %2$s', 'wpsg'), (string)$product_data['menge'], (string)$name)); ?> + <?php $product_key = (string)($product_data['product_key']??($product_data['id']??'')); if ($this->hasMod('wpsg_mod_productvariants') && preg_match('/pv_(.*)/', $product_key)) { $arVariant = (array)$this->callMod('wpsg_mod_productvariants', 'getVariantenInfoArray', [$product_key]); ?> + <span class="wpsg-checkout__summary-variant"><?php echo esc_html(rtrim(trim((string)($arVariant['key']??'')), ';')); ?></span> + <?php } ?> + </span> + <span><?php echo esc_html(wpsg_ff(floatval($product_data['menge']) * floatval($product_data['preis']), $currency)); ?></span> + </li> + <?php } ?> + </ul> + + <?php if (wpsg_tf($arSum['preis_rabatt']??0) > 0) { ?> + <div class="wpsg-checkout__summary-row is-muted"> + <span><?php echo esc_html__('Rabatt', 'wpsg'); ?></span> + <span><?php echo esc_html('-'.wpsg_ff($arSum['preis_rabatt'], $currency)); ?></span> + </div> + <?php } ?> + + <?php if (isset($arSum['preis_shipping'])) { ?> + <div class="wpsg-checkout__summary-row is-muted"> + <span><?php echo esc_html__('Versand', 'wpsg'); ?></span> + <span><?php echo esc_html(wpsg_ff($arSum['preis_shipping'], $currency)); ?></span> + </div> + <?php } ?> + + <?php if (wpsg_tf($arSum['preis_payment']??0) != 0) { ?> + <div class="wpsg-checkout__summary-row is-muted"> + <span><?php echo esc_html__('Zahlungsart', 'wpsg'); ?></span> + <span><?php echo esc_html(wpsg_ff($arSum['preis_payment'], $currency)); ?></span> + </div> + <?php } ?> + + <div class="wpsg-checkout__summary-row wpsg-checkout__summary-total"> + <span><?php echo esc_html__('Summe', 'wpsg'); ?></span> + <span><?php echo esc_html(wpsg_ff($arSum['preis_gesamt_brutto']??0, $currency)); ?></span> + </div> + + <?php if (get_option('wpsg_kleinunternehmer') == '1') { ?> + <p class="wpsg-checkout__summary-tax"><?php echo wp_kses_post((string)get_option('wpsg_kleinunternehmer_text')); ?></p> + <?php } else { foreach ((array)($arBasket['mwst']??[]) as $mwst) { ?> + <p class="wpsg-checkout__summary-tax"><?php /* translators: 1: Steuersatz, 2: Betrag */ echo esc_html(sprintf(__('enthält MwSt. (%1$s): %2$s', 'wpsg'), __($mwst['name'], 'wpsg'), wpsg_ff($mwst['sum'], $currency))); ?></p> + <?php } } ?> + +</aside> |
