Version 5.0.13

This commit is contained in:
Neo committed 2025-12-19 19:04:57 -08:00
1 parent b89858b2ff
commit 5efe744c5f
1407 files changed
+69690 -30177

No files matched your search

+295 -260
View File
@@ -230,7 +230,7 @@
{{foreach $summary['items'] as $item}}
{{if !( $item instanceof \IPS\nexus\extensions\nexus\Item\CouponDiscount )}}
<li class='ipsData__item'>
<figure class='ipsData__image'>
<div class="ipsData__image" aria-hidden="true">
{{if $image = $item->image()}}
<img src="{$image->url}" alt="" loading="lazy">
{{elseif $item::$icon}}
@@ -238,7 +238,7 @@
{{else}}
<i></i>
{{endif}}
</figure>
</div>
<div class='ipsData__main'>
<div><span class='i-color_soft'>{$item->quantity} x </span>{$item->name}</div>
{$item->detailsForDisplay( 'checkout' )|raw}
@@ -328,7 +328,7 @@
{{foreach $recurring['items'] as $rId => $item}}
{{if !( $item instanceof \IPS\nexus\extensions\nexus\Item\CouponDiscount )}}
<li class='ipsData__item'>
<figure class='ipsData__image'>
<div class="ipsData__image" aria-hidden="true">
{{if $image = $item->image()}}
<img src="{$image->url}" alt="" loading="lazy">
{{elseif $item::$icon}}
@@ -336,7 +336,7 @@
{{else}}
<i></i>
{{endif}}
</figure>
</div>
<div class='ipsData__main'>
<div><span class='i-color_soft'>{$item->quantity} x </span>{$item->name}</div>
{$item->detailsForDisplay( 'checkout' )|raw}
@@ -596,13 +596,13 @@
{{foreach $summary['items'] as $item}}
{{if !( $item instanceof \IPS\nexus\extensions\nexus\Item\CouponDiscount )}}
<li class='ipsData__item'>
<figure class='ipsData__image'>
<div class="ipsData__image" aria-hidden="true">
{{if $image = $item->image()}}
<img src="{$image->url}" alt="" loading="lazy">
{{else}}
<i></i>
{{endif}}
</figure>
</div>
<div class='ipsData__main'>
<div><span class='i-color_soft'>{$item->quantity} x </span>{$item->name}</div>
{{if \count( $item->details )}}
@@ -818,7 +818,7 @@
{{endif}}
</ul>
{{endif}}]]></template>
<template template_group="clients" template_name="addresses" template_data="$billingAddress=NULL, $otherAddresses=array()" template_location="front" template_app="nexus"><![CDATA[<div class="ipsBox ipsPull">
<template template_group="clients" template_name="addresses" template_data="$billingAddress=NULL, $otherAddresses=array()" template_location="front" template_app="nexus"><![CDATA[<div class="ipsBox ipsBox--commerceAddresses ipsPull">
<header class='ipsPageHeader'>
<div class="ipsPageHeader__row">
<div class="ipsPageHeader__primary">
@@ -854,7 +854,7 @@
</div>
{{endif}}
</div>]]></template>
<template template_group="clients" template_name="alternatives" template_data="$protected=FALSE" template_location="front" template_app="nexus"><![CDATA[<section class='ipsBox ipsPull'>
<template template_group="clients" template_name="alternatives" template_data="$protected=FALSE" template_location="front" template_app="nexus"><![CDATA[<section class='ipsBox ipsBox--cmsAlternativeClients ipsPull'>
<header class='ipsPageHeader'>
<div class="ipsPageHeader__row">
<div class="ipsPageHeader__primary">
@@ -1216,7 +1216,7 @@
</div>
</div>
</div>]]></template>
<template template_group="clients" template_name="donations" template_data="" template_location="front" template_app="nexus"><![CDATA[<section class="ipsBox ipsPull">
<template template_group="clients" template_name="donations" template_data="" template_location="front" template_app="nexus"><![CDATA[<section class="ipsBox ipsBox--commerceDonations ipsPull">
<header class="ipsPageHeader ipsPageHeader--padding">
<h1 class='ipsPageHeader__title'>{lang="current_donation_goals"}</h1>
</header>
@@ -1257,14 +1257,14 @@
{{endforeach}}
</div>
</section>]]></template>
<template template_group="clients" template_name="info" template_data="$form" template_location="front" template_app="nexus"><![CDATA[<section class='ipsBox ipsPull'>
<template template_group="clients" template_name="info" template_data="$form" template_location="front" template_app="nexus"><![CDATA[<section class='ipsBox ipsBox--cmsClientInfo ipsPull'>
<header class="ipsPageHeader ipsPageHeader--padding">
<h1 class='ipsPageHeader__title'>{lang="customerinfo_title"}</h1>
</header>
{$form|raw}
</section>]]></template>
<template template_group="clients" template_name="invoice" template_data="$invoice" template_location="front" template_app="nexus"><![CDATA[
<div class='ipsBox i-padding_3 i-margin-bottom_3'>
<div class='ipsBox ipsBox--commerceInvoice i-padding_3 i-margin-bottom_3'>
<div class='i-flex i-justify-content_space-between i-margin-bottom_2'>
<div>
<h1 class='ipsTitle ipsTitle--h3'>{lang="order_title"} #{$invoice->id}</h1>
@@ -1348,7 +1348,7 @@
{{$summary = $invoice->summary();}}
<div class='ipsBox'>
<div class='ipsBox ipsBox--commerceOrderDetails'>
<h2 class='ipsBox__header'>{lang="order_details"}</h2>
<div class='ipsBox__content'>
<i-data>
@@ -1356,7 +1356,7 @@
{{foreach $summary['items'] as $k => $item}}
{{if !( $item instanceof \IPS\nexus\extensions\nexus\Item\CouponDiscount )}}
<li class='ipsData__item'>
<figure class='ipsData__image'>
<div class="ipsData__image" aria-hidden="true">
{{if $image = $item->image()}}
<img src="{$image->url}" alt='' loading='lazy'>
{{elseif $item::$icon}}
@@ -1364,7 +1364,7 @@
{{else}}
<i></i>
{{endif}}
</figure>
</div>
<div class='ipsData__content'>
<div class='ipsData__main'>
<h2 class='ipsData__title'>
@@ -1437,66 +1437,69 @@
<template template_group="clients" template_name="invoiceList" template_data="$invoice, $fromBillingAgreement=NULL" template_location="front" template_app="nexus"><![CDATA[<li class='ipsData__item'>
<a href='{$invoice->url()}' class="ipsLinkPanel" aria-hidden="true"><span>{lang="order_view_details"}</span></a>
<div class='ipsData__content'>
{{if !$fromBillingAgreement}}
<div class='ipsData__main'>
{{$summary = $invoice->summary();}}
{{if \count( $summary['items'] )}}
<ul class='i-grid i-gap_3 cNexusOrderList_items'>
{{foreach $summary['items'] as $k => $item}}
<li class='i-flex i-gap_2'>
<div class='i-basis_40 i-flex_00' {{if $item::$title}}title='{lang="$item::$title"}' data-ipsTooltip{{endif}}>
<div class="ipsThumb">
{{if $image = $item->image()}}
<img src="{$image->url}" alt='' loading='lazy'>
{{elseif $item::$icon}}
<i class='fa-solid fa-{$item::$icon}'></i>
{{else}}
<i></i>
{{endif}}
</div>
</div>
<div class='i-flex_11'>
{{if $url = $item->url()}}
<a href="{$url}" class='i-color_hard i-font-weight_600'>{$item->name}</a>
{{else}}
<span class='i-color_hard i-font-weight_600'>{$item->name}</span>
{{endif}}
<p class='i-color_soft'>{lang="quantity"}: {$item->quantity}</p>
<p class='i-color_soft'>{lang="invoice_unit_price"}: {$item->price}</p>
</div>
</li>
{{endforeach}}
</ul>
{{else}}
<span class='ipsEmptyMessage'>{lang="orders_no_items"}</span>
<div class='ipsData__main'>
<div class="ipsColumns ipsColumns--orders">
<div class='ipsColumns__secondary i-basis_260'>
<a href='{$invoice->url()}' class='ipsData__title'>{datetime="$invoice->date"}</a>
<div class='ipsData__meta'><strong class='cNexusPrice'>{$invoice->total}</strong> &middot; {lang="order_title"} #{$invoice->id}</div>
<p class='i-flex i-gap_1 i-align-items_center i-flex-wrap_wrap i-margin-top_1'>
<span class='cNexusOrderBadge cNexusOrderBadge_{$invoice->status}'>{lang="istatus_{$invoice->status}"}</span>
</p>
</div>
{{if !$fromBillingAgreement}}
<div class="ipsColumns__primary i-align-self_center">
{{$summary = $invoice->summary();}}
{{if \count( $summary['items'] )}}
<ul class='i-grid i-gap_3 cNexusOrderList_items'>
{{foreach $summary['items'] as $k => $item}}
<li class='i-flex i-gap_2'>
<div class='i-basis_40 i-flex_00' {{if $item::$title}}title='{lang="$item::$title"}' data-ipsTooltip{{endif}}>
<div class="ipsThumb i-width_100p">
{{if $image = $item->image()}}
<img src="{$image->url}" alt='' loading='lazy'>
{{elseif $item::$icon}}
<i class='fa-solid fa-{$item::$icon}'></i>
{{else}}
<i></i>
{{endif}}
</div>
</div>
<div class='i-flex_11'>
{{if $url = $item->url()}}
<a href="{$url}" class='i-color_hard i-font-weight_600'>{$item->name}</a>
{{else}}
<span class='i-color_hard i-font-weight_600'>{$item->name}</span>
{{endif}}
<ul class='ipsList ipsList--inline i-color_soft i-gap_3 i-row-gap_0'>
<li>{lang="quantity"}: {$item->quantity}</li>
<li>{lang="invoice_unit_price"}: {$item->price}</li>
</ul>
</div>
</li>
{{endforeach}}
</ul>
{{else}}
<span class='ipsEmptyMessage'>{lang="orders_no_items"}</span>
{{endif}}
</div>
{{endif}}
</div>
{{endif}}
<div class='i-basis_220'>
<strong class='i-font-size_2'>{datetime="$invoice->date"}</strong><br>
<span class='i-color_soft'>{lang="order_title"} #{$invoice->id}</span>
<p class='i-flex i-gap_1 i-align-items_center i-flex-wrap_wrap'>
<span class='cNexusOrderBadge cNexusOrderBadge_{$invoice->status}'>{lang="istatus_{$invoice->status}"}</span> <strong class='i-font-size_2 cNexusPrice'>{$invoice->total}</strong>
</p>
</div>
<ul class='ipsButtons ipsButtons--fill i-margin-block_2'>
{{if $invoice->status === $invoice::STATUS_PENDING}}
{{if $invoice->status === $invoice::STATUS_PENDING}}
<ul class='ipsButtons ipsButtons--fill i-flex_00'>
<li>
<a href='{$invoice->checkoutUrl()}' class='ipsButton ipsButton--primary ipsButton--small' title="{lang="order_pay_now_title"}">{lang="order_pay_now"}</a>
<a href='{$invoice->url()->setQueryString( 'do', 'cancel' )->csrf()}' data-confirm class='ipsButton ipsButton--inherit ipsButton--small' title="{lang="orders_cancel_title"}"><i class="fa-solid fa-xmark"></i> {lang="orders_cancel"}</a>
</li>
<li>
<a href='{$invoice->url()->setQueryString( 'do', 'cancel' )->csrf()}' data-confirm class='ipsButton ipsButton--inherit ipsButton--small' title="{lang="orders_cancel_title"}">{lang="orders_cancel"}</a>
<a href='{$invoice->checkoutUrl()}' class='ipsButton ipsButton--primary ipsButton--small' title="{lang="order_pay_now_title"}"><i class="fa-solid fa-check"></i> {lang="order_pay_now"}</a>
</li>
{{endif}}
<li>
<a href='{$invoice->url()}' title="{lang="orders_view_details_title"}" class='ipsButton ipsButton--inherit ipsButton--small'>{lang="order_view_details"}</a>
</li>
</ul>
</ul>
{{endif}}
</div>
</li>
]]></template>
<template template_group="clients" template_name="invoices" template_data="$invoices, $pagination" template_location="front" template_app="nexus"><![CDATA[{template="pageHeader" group="global" app="core" params="\IPS\Member::loggedIn()->language()->addToStack('orders_title')"}
<div class="ipsBox ipsPull">
<div class="ipsBox ipsBox--commerceInvoices ipsPull">
{{if \count( $invoices )}}
{{if trim($pagination)}}
<div class="ipsButtonBar ipsButtonBar--top">
@@ -1638,10 +1641,10 @@
</ul>
</i-data>]]></template>
<template template_group="clients" template_name="purchase" template_data="$purchase" template_location="front" template_app="nexus"><![CDATA[{{$extra = $purchase->clientAreaPage();}}
<div class='ipsBox'>
<div class='ipsBox ipsBox--commercePurchase'>
<div class='ipsColumns cNexusPurchase i-padding_2'>
<div class='ipsColumns__secondary i-basis_200'>
<span class='ipsThumb'>
<span class='ipsThumb i-display_block'>
{{if $image = $purchase->image()}}
<img src="{expression="str_replace( array( '(', ')' ), array( '\(', '\)' ), $image->url )"}" alt="" loading="lazy">
{{elseif $icon = $purchase->getIcon()}}
@@ -1792,7 +1795,7 @@
</div>
</li>
{{endforeach}}]]></template>
<template template_group="clients" template_name="purchases" template_data="$purchases" template_location="front" template_app="nexus"><![CDATA[<div class="ipsBox ipsPull">
<template template_group="clients" template_name="purchases" template_data="$purchases" template_location="front" template_app="nexus"><![CDATA[<div class="ipsBox ipsBox--commercePurchases ipsPull">
<header class="ipsPageHeader ipsPageHeader--padding">
<h1 class='ipsPageHeader__title'>{lang="purchases_title"}</h1>
{{if \count( $purchases )}}
@@ -2501,7 +2504,7 @@
</ol>
</div>]]></template>
<template template_group="forms" template_name="addPaymentMethodForm" template_data="$showSubmitButton, $id, $action, $elements, $hiddenValues, $actionButtons, $uploadField, $class='', $attributes=array(), $sidebar=NULL, $form=NULL" template_location="global" template_app="nexus"><![CDATA[
<div class="ipsBox">
<div class="ipsBox ipsBox--commerceAddPaymentMethodForm">
<form accept-charset='utf-8' class="ipsFormWrap ipsFormWrap--add-payment" action="{$action}" method="post" {{if $uploadField}}enctype="multipart/form-data"{{endif}} {{foreach $attributes as $k => $v}}{$k}="{$v}"{{endforeach}} data-ipsForm>
<input type="hidden" name="{$id}_submitted" value="1">
{{foreach $hiddenValues as $k => $v}}
@@ -3046,66 +3049,68 @@
<template template_group="global" template_name="userNav" template_data="" template_location="front" template_app="nexus"><![CDATA[{{if isset( $_SESSION['cart'] ) and \count( $_SESSION['cart'] )}}
{{$subtotal = new \IPS\Math\Number('0');}}
<li data-el='cart' id='elCart_container'>
<a href='{url="app=nexus&module=store&controller=cart" seoTemplate="store_cart"}' class="ipsUserNav__link" id='elCart' data-ipsTooltip title='{lang="your_cart"}' data-ipsMenu data-ipsMenu-closeOnClick='false'>
<button type="button" id="elCart" popovertarget="elCart_menu" class="ipsUserNav__link" data-ipsTooltip title='{lang="your_cart"}'>
<i class="fa-solid fa-basket-shopping ipsUserNav__icon"></i>
<span class='ipsNotification'>{expression="\IPS\nexus\Application::cartCount()"}</span>
<span class="ipsUserNav__text ipsInvisible">{lang="cart"}</span>
</a>
<div id='elCart_menu' class='ipsMenu ipsMenu_wide ipsHide'>
<div class="ipsMenu_headerBar"><h4 class="ipsTitle ipsTitle--h3">{lang="your_cart"}</h4></div>
<div class='ipsMenu_innerContent'>
<i-data>
<ul class="ipsData ipsData--table ipsData--compact ipsData--cart-dropdown" data-role='cartList' id='elCartContent'>
{{foreach $_SESSION['cart'] as $id => $item}}
<li class='ipsData__item'>
<figure class='ipsData__image'>
{{if $image = $item->image()}}
<img src="{$image->url}" alt="{$item->name}" loading="lazy">
{{elseif $icon = $item::$icon}}
<i class='fa fa-solid fa-{$icon}'></i>
{{else}}
<i></i>
{{endif}}
</figure>
<div class='ipsData__main'>
<div class='ipsData__title'>{$item->name}</div>
<p class="ipsData__meta">&times;{$item->quantity}</p>
</div>
<div class='cNexusPrice'>
<strong>
{{$location = NULL;}}
{{if settings.nexus_show_tax}}
{{$location = $location ?: \IPS\nexus\Customer::loggedIn()->estimatedLocation();}}
{{$linePrice = $item->grossLinePrice( $location );}}
</button>
<i-dropdown popover id="elCart_menu">
<div class="iDropdown">
<div class="iDropdown__header">
<h4>{lang="your_cart"}</h4>
</div>
<div class='iDropdown__content'>
<i-data>
<ul class="ipsData ipsData--table ipsData--compact ipsData--cart-dropdown" data-role='cartList' id='elCartContent'>
{{foreach $_SESSION['cart'] as $id => $item}}
<li class='ipsData__item'>
<div class='ipsData__image' aria-hidden="true">
{{if $image = $item->image()}}
<img src="{$image->url}" alt="{$item->name}" loading="lazy">
{{elseif $icon = $item::$icon}}
<i class='fa fa-solid fa-{$icon}'></i>
{{else}}
{{$linePrice = $item->linePrice();}}
<i></i>
{{endif}}
{$linePrice}
{{$subtotal = $subtotal->add( $linePrice->amount );}}
</strong>
{{if $item->quantity > 1}}
<p class='i-font-size_-2 i-color_soft'>
{lang="each_short" sprintf="$item->price"}
</p>
{{endif}}
</div>
<div class='ipsData__main'>
<div class='ipsData__title'>{$item->name}</div>
<p class="ipsData__meta">&times;{$item->quantity}</p>
</div>
<div class='cNexusPrice'>
<strong>
{{$location = NULL;}}
{{if settings.nexus_show_tax}}
{{$location = $location ?: \IPS\nexus\Customer::loggedIn()->estimatedLocation();}}
{{$linePrice = $item->grossLinePrice( $location );}}
{{else}}
{{$linePrice = $item->linePrice();}}
{{endif}}
{$linePrice}
{{$subtotal = $subtotal->add( $linePrice->amount );}}
</strong>
{{if $item->quantity > 1}}
<p class='i-font-size_-2 i-color_soft'>
{lang="each_short" sprintf="$item->price"}
</p>
{{endif}}
</div>
</li>
{{endforeach}}
<li class='ipsData__item cNexusMenuCart_totalRow'>
<div class='ipsData__main i-font-size_2 i-text-align_end'>
<strong>{lang="subtotal"}</strong>
</div>
<div class='i-basis_100 cNexusPrice i-font-size_2 i-text-align_end'>
<strong>{money="$subtotal"}</strong>
</div>
</li>
{{endforeach}}
<li class='ipsData__item cNexusMenuCart_totalRow'>
<div class='ipsData__main i-font-size_2 i-text-align_end'>
<strong>{lang="subtotal"}</strong>
</div>
<div class='i-basis_100 cNexusPrice i-font-size_2 i-text-align_end'>
<strong>{money="$subtotal"}</strong>
</div>
</li>
</ul>
</i-data>
</ul>
</i-data>
</div>
<a href='{url="app=nexus&module=store&controller=cart" seoTemplate="store_cart"}' class='iDropdown__footer'>{lang="review_and_checkout"}</a>
</div>
<div class='ipsMenu_footerBar i-text-align_center'>
<a href='{url="app=nexus&module=store&controller=cart" seoTemplate="store_cart"}' class='ipsButton ipsButton--small ipsButton--primary'>{lang="review_and_checkout"}</a>
</div>
</div>
</i-dropdown>
</li>
{{else}}
<li class='ipsHide' id='elCart_container'></li>
@@ -3122,17 +3127,19 @@
<template template_group="invoices" template_name="generate" template_data="$summary, $itemTypes, $url" template_location="admin" template_app="nexus"><![CDATA[<div class="i-padding_3">
<ul class="ipsButtons ipsButtons--end ipsButtons--generate-invoice i-margin-bottom_2">
<li>
<a href="#el_addItem_menu" class="ipsButton ipsButton--secondary ipsButton--small" data-ipsMenu id='el_addItem'><i class="fa-solid fa-plus"></i> {lang="invoice_add_item"} <i class="fa-solid fa-caret-down"></i></a>
<div id='el_addItem_menu' class='ipsMenu ipsHide'>
<ul>
{{foreach $itemTypes as $k => $class}}
{{if method_exists( $class, 'form' )}}
<li class="ipsMenu_item"><a href="{$url->setQueryString('add', $k )}" data-ipsDialog data-ipsDialog-title="{lang="$class::$title"}"><i class="fa-solid fa-{$class::$icon}"></i> {lang="$class::$title"}</a></li>
{{endif}}
{{endforeach}}
<li class="ipsMenu_item"><a href="{$url->setQueryString('addRenewal', 1 )}" data-ipsDialog data-ipsDialog-title="{lang="renewal"}"><i class="fa-solid fa-rotate-right"></i> {lang="renewal"}</a></li>
</ul>
</div>
<button type="button" id="el_addItem" popovertarget="el_addItem_menu" class="ipsButton ipsButton--secondary ipsButton--small"><i class="fa-solid fa-plus"></i> {lang="invoice_add_item"} <i class="fa-solid fa-caret-down"></i></button>
<i-dropdown popover id="el_addItem_menu">
<div class="iDropdown">
<ul class="iDropdown__items">
{{foreach $itemTypes as $k => $class}}
{{if method_exists( $class, 'form' )}}
<li><a href="{$url->setQueryString('add', $k )}" data-ipsDialog data-ipsDialog-title="{lang="$class::$title"}"><i class="fa-solid fa-{$class::$icon}"></i> {lang="$class::$title"}</a></li>
{{endif}}
{{endforeach}}
<li><a href="{$url->setQueryString('addRenewal', 1 )}" data-ipsDialog data-ipsDialog-title="{lang="renewal"}"><i class="fa-solid fa-rotate-right"></i> {lang="renewal"}</a></li>
</ul>
</div>
</i-dropdown>
</li>
</ul>
<table class="ipsTable ipsTable_zebra">
@@ -3908,7 +3915,7 @@
<div class="i-text-align_center i-margin-top_1">
<ul class='ipsButton_split' data-role="buttons">
{{foreach $buttons as $k => $button}}
<li><a {{if !isset( $button['data']['ipsDialog'] )}}data-action="quickAction"{{else}}{{foreach $button['data'] as $_k => $v}}data-{$_k}="{$v}"{{endforeach}}{{endif}} title="{lang="$button['title']"}" data-ipsTooltip class="ipsButton ipsButton--small {{if $k === 'approve'}}ipsButton--positive{{elseif $k === 'review'}}ipsButton--intermediate{{else}}ipsButton--negative{{endif}}" href="{$button['link']->setQueryString( 'queueStatus', $transaction->status )}"><i class="fa-solid fa-{$button['icon']}"></i></a></li>
<li><a {{if !isset( $button['data']['ipsDialog'] )}}data-action="quickAction"{{else}}{{foreach $button['data'] as $_k => $v}}data-{$_k}="{$v}"{{endforeach}}{{endif}} title="{lang="$button['title']"}" data-ipsTooltip class="ipsButton ipsButton--small {{if $k === 'approve'}}ipsButton--positive{{elseif $k === 'review'}}ipsButton--primary{{else}}ipsButton--negative{{endif}}" href="{$button['link']->setQueryString( 'queueStatus', $transaction->status )}"><i class="fa-solid fa-{$button['icon']}"></i></a></li>
{{endforeach}}
</ul>
</div>
@@ -4087,6 +4094,10 @@
<span class="i-basis_120"><strong>{lang="advertisement_url"}</strong></span>
<span class="ipsData__main">{$advertisement->link}</span>
</li>
<li class="ipsData__item">
<span class="i-basis_120"><strong>{lang="ad_image_alt"}</strong></span>
<span class="ipsData__main">{$advertisement->image_alt}</span>
</li>
<li class="ipsData__item">
<span class="i-basis_120"><strong>{lang="ads_ad_impressions"}</strong></span>
<span class="ipsData__main">{$advertisement->impressions}{{if $advertisement->maximum_unit == 'i' and $advertisement->maximum_value != -1}} / {$advertisement->maximum_value}{{endif}}</span>
@@ -4112,6 +4123,9 @@
{{endif}}
{{endforeach}}
</ul>
</div>]]></template>
<template template_group="purchases" template_name="advertisementType" template_data="$purchase, $advertisement" template_location="front" template_app="nexus"><![CDATA[<div class='i-font-size_-1'>
{{if $advertisement->type == \IPS\core\Advertisement::AD_EMAIL}}{lang="advertisements_emails"}{{else}}{lang="advertisements_site"}{{endif}}
</div>]]></template>
<template template_group="purchases" template_name="giftVoucher" template_data="$purchase, $data" template_location="admin" template_app="nexus"><![CDATA[
<div class='i-padding_3 i-background_2'>
@@ -4482,14 +4496,15 @@
<hr class='ipsHr i-margin-bottom_4'>
{{endif}}
<br><br>
{{if \count( $associatedFiles )}}
<h2 class='ipsTitle ipsTitle--h3 i-margin-bottom_2'>{lang="package_downloads"}</h2>
<ul class='ipsCarousel ipsCarousel--commerce-package-downloads i-basis_200' id='commerce-package-downloads' tabindex="0">
{{foreach $associatedFiles as $idx => $file}}
{template="indexBlock" app="downloads" group="browse" params="$file"}
{{endforeach}}
</ul>
<i-data>
<ul class='ipsData ipsData--associatedFiles ipsData--grid ipsData--carousel i-basis_200' id='commerce-package-downloads' tabindex="0">
{{foreach $associatedFiles as $idx => $file}}
{template="indexBlock" app="downloads" group="browse" params="$file"}
{{endforeach}}
</ul>
</i-data>
{template="carouselNavigation" group="global" app="core" params="'commerce-package-downloads'"}
{{endif}}
@@ -4687,7 +4702,7 @@
<ul class="ipsData ipsData--table ipsData--cart-contents">
{{foreach $_SESSION['cart'] as $id => $item}}
<li id='elCartItem_{$id}' class="ipsData__item">
<figure class='ipsData__image'>
<div class="ipsData__image" aria-hidden="true">
{{if $image = $item->image()}}
<img src="{$image->url}" alt='' loading='lazy'>
{{elseif $icon = $item::$icon}}
@@ -4695,7 +4710,7 @@
{{else}}
<i></i>
{{endif}}
</figure>
</div>
<div class='ipsData__content'>
<div class='ipsData__main'>
<h2 class='ipsData__title'>{{if $item->canChangeQuantity()}}<span class='i-color_soft'>{$item->quantity} x</span> {{endif}}{$item->name}</h2>
@@ -4703,14 +4718,21 @@
<div class='ipsData__meta'>
<ul class='ipsList ipsList--inline i-font-size_-2'>
<li><a href='{url="app=nexus&module=store&controller=cart&do=quantities&item[$id]=0" csrf="1"}' title='{lang="remove_from_cart_title"}' data-action='removeFromCart'>{lang="remove_from_cart"}</a></li>
{{if $item->canChangeQuantity()}}<li><a href='#elItemRow{$id}_quantity_menu' data-ipsMenu data-ipsMenu-appendTo='#elCartItem_{$id}' data-ipsMenu-closeOnClick='false' id='elItemRow{$id}_quantity' title='{lang="change_quantity_title"}'>{lang="change_quantity"} <i class='fa-solid fa-caret-down'></i></a></li>{{endif}}
{{if $item->canChangeQuantity()}}
<li><button type="button" id="elItemRow{$id}_quantity" popovertarget="elItemRow{$id}_quantity_menu" title='{lang="change_quantity_title"}'>{lang="change_quantity"} <i class='fa-solid fa-caret-down'></i></button></li>
{{endif}}
</ul>
<div class='i-padding_2 ipsHide ipsMenu' id='elItemRow{$id}_quantity_menu'>
<form action="{url="app=nexus&module=store&controller=cart&do=quantities" seoTemplate="store_cart" csrf="1"}" method="post" data-role='quantityForm' class="i-flex i-gap_2">
<input class="ipsInput ipsInput--number" type='number' name="item[{$id}]" value='{$item->quantity}' size="6" min="0">
<button type='submit' class='ipsButton ipsButton--primary ipsButton--small'>{lang="update"}</button>
</form>
</div>
<i-dropdown popover id="elItemRow{$id}_quantity_menu">
<div class="iDropdown">
<form action="{url="app=nexus&module=store&controller=cart&do=quantities" seoTemplate="store_cart" csrf="1"}" method="post" data-role='quantityForm' class="ipsForm">
<label class="ipsFieldRow">
<span class="ipsFieldRow__label">{lang="change_quantity"}</span>
<input class="ipsInput ipsInput--number" type='number' name="item[{$id}]" value='{$item->quantity}' min="0">
</label>
<div class="ipsSubmitRow"><button type='submit' class='ipsButton ipsButton--primary ipsButton--wide'>{lang="update"}</button></div>
</form>
</div>
</i-dropdown>
</div>
</div>
<div class='i-basis_180'>
@@ -4772,68 +4794,68 @@
{{if isset( $_SESSION['cart'] ) and \count( $_SESSION['cart'] ) and \IPS\Member::loggedIn()->canAccessModule( \IPS\Application\Module::get( 'nexus', 'store' ) )}}
{{$subtotal = new \IPS\Math\Number('0');}}
<li data-el='cart' id='elCart_container'>
<a href='{url="app=nexus&module=store&controller=cart" seoTemplate="store_cart"}' class="ipsUserNav__link" id='elCart' data-ipsTooltip title='{lang="your_cart"}' data-ipsMenu data-ipsMenu-closeOnClick='false'>
<button type="button" id="elCart" popovertarget="elCart_menu" class="ipsUserNav__link" data-ipsTooltip title='{lang="your_cart"}'>
<i class="fa-solid fa-basket-shopping ipsUserNav__icon"></i>
<span class="ipsUserNav__text">{lang="cart"}</span>
<span class='ipsNotification'>{expression="\IPS\nexus\Application::cartCount()"}</span>
</a>
<div id='elCart_menu' class='ipsMenu ipsMenu_wide ipsHide'>
<div class="ipsMenu_headerBar"><h4 class="ipsTitle ipsTitle--h3">{lang="your_cart"}</h4></div>
<div class='ipsMenu_innerContent'>
<i-data>
<ul class="ipsData ipsData--table ipsData--compact ipsData--cart-dropdown" data-role='cartList' id='elCartContent'>
{{foreach $_SESSION['cart'] as $id => $item}}
<li class='ipsData__item'>
<figure class='ipsData__image'>
{{if $image = $item->image()}}
<img src="{$image->url}" alt="{$item->name}" loading="lazy">
{{elseif $icon = $item::$icon}}
<i class='fa fa-solid fa-{$icon}'></i>
{{else}}
<i></i>
{{endif}}
</figure>
<div class='ipsData__main'>
<div class='ipsData__title'>{$item->name}</div>
<p class="ipsData__meta">&times;{$item->quantity}</p>
</div>
<div class='cNexusPrice'>
<strong>
{{if settings.nexus_show_tax}}
{{$location = $location ?: \IPS\nexus\Customer::loggedIn()->estimatedLocation();}}
{{$linePrice = $item->grossLinePrice( $location );}}
</button>
<i-dropdown popover id="elCart_menu">
<div class="iDropdown">
<div class="iDropdown__header">
<h4>{lang="your_cart"}</h4>
</div>
<div class='iDropdown__content'>
<i-data>
<ul class="ipsData ipsData--table ipsData--compact ipsData--cart-dropdown" data-role='cartList' id='elCartContent'>
{{foreach $_SESSION['cart'] as $id => $item}}
<li class='ipsData__item'>
<div class='ipsData__image' aria-hidden="true">
{{if $image = $item->image()}}
<img src="{$image->url}" alt="{$item->name}" loading="lazy">
{{elseif $icon = $item::$icon}}
<i class='fa fa-solid fa-{$icon}'></i>
{{else}}
{{$linePrice = $item->linePrice();}}
<i></i>
{{endif}}
{$linePrice}
{{$subtotal = $subtotal->add( $linePrice->amount );}}
</strong>
{{if $item->quantity > 1}}
<p class='i-font-size_-2 i-color_soft'>
{lang="each_short" sprintf="$item->price"}
</p>
{{endif}}
</div>
<div class='ipsData__main'>
<div class='ipsData__title'>{$item->name}</div>
<p class="ipsData__meta">&times;{$item->quantity}</p>
</div>
<div class='cNexusPrice'>
<strong>
{{if settings.nexus_show_tax}}
{{$location = $location ?: \IPS\nexus\Customer::loggedIn()->estimatedLocation();}}
{{$linePrice = $item->grossLinePrice( $location );}}
{{else}}
{{$linePrice = $item->linePrice();}}
{{endif}}
{$linePrice}
{{$subtotal = $subtotal->add( $linePrice->amount );}}
</strong>
{{if $item->quantity > 1}}
<p class='i-font-size_-2 i-color_soft'>
{lang="each_short" sprintf="$item->price"}
</p>
{{endif}}
</div>
</li>
{{endforeach}}
<li class='ipsData__item cNexusMenuCart_totalRow'>
<div class='ipsData__main i-font-size_2 i-text-align_end'>
<strong>{lang="subtotal"}</strong>
</div>
<div class='i-basis_100 cNexusPrice i-font-size_2 i-text-align_end'>
<strong>{money="$subtotal"}</strong>
</div>
</li>
{{endforeach}}
<li class='ipsData__item cNexusMenuCart_totalRow'>
<div class='ipsData__main i-font-size_2 i-text-align_end'>
<strong>{lang="subtotal"}</strong>
</div>
<div class='i-basis_100 cNexusPrice i-font-size_2 i-text-align_end'>
<strong>{money="$subtotal"}</strong>
</div>
</li>
</ul>
</i-data>
</ul>
</i-data>
</div>
<a href='{url="app=nexus&module=store&controller=cart" seoTemplate="store_cart"}' class='iDropdown__footer'>{lang="review_and_checkout"}</a>
</div>
<div class='ipsMenu_footerBar i-text-align_center'>
<a href='{url="app=nexus&module=store&controller=cart" seoTemplate="store_cart"}' class='ipsButton ipsButton--small ipsButton--primary'>{lang="review_and_checkout"}</a>
</div>
</div>
</i-dropdown>
</li>
{{else}}
<li class='ipsHide' id='elCart_container'></li>
{{endif}}]]></template>
<template template_group="store" template_name="cartHeaderMobile" template_data="" template_location="front" template_app="nexus"><![CDATA[<li data-el='cart' id="elCart_mobileHeaderContainer">
<a href='{url="app=nexus&module=store&controller=cart" seoTemplate="store_cart"}' class="ipsMobileNavIcons__button">
@@ -4881,26 +4903,28 @@
</header>
{{if \count( $subcategories )}}
<section class='ipsBox ipsPull ipsBox--padding'>
<ul class='ipsGrid ipsGrid--commerce-subcategories i-basis_280 i-text-align_center'>
{{foreach $subcategories as $group}}
<li>
<figure class='ipsFigure'>
<a href='{$group->url()}' class='ipsFigure__main i-aspect-ratio_6'>
<section class='ipsBox ipsBox--commerceSubcategories ipsPull'>
<i-data>
<ul class='ipsData ipsData--wallpaper ipsData--carousel ipsData--commerceCategories'>
{{foreach $subcategories as $group}}
<li class="ipsData__item">
<a href='{$group->url()}' class='ipsLinkPanel' aria-hidden="true" tabindex="-1"><span>{$group->_title}</span></a>
<div class="ipsData__image" aria-hidden="true">
{{if $group->image}}
<img src='{expression="str_replace( array( '(', ')' ), array( '\(', '\)' ), $group->image )"}' alt='' loading='lazy'>
{{else}}
<i class="ipsFigure__icon"></i>
<i></i>
{{endif}}
<span class="ipsInvisible">{$group->_title}</span>
</a>
<figcaption class="ipsFigure__footer">
<h3 class='i-font-size_2 i-font-weight_600'>{$group->_title}</h3>
</figcaption>
</figure>
</li>
{{endforeach}}
</ul>
</div>
<div class="ipsData__content">
<div class="ipsData__main">
<h3 class="ipsData__title">{$group->_title}</h3>
</div>
</div>
</li>
{{endforeach}}
</ul>
</i-data>
</section>
<br>
{{endif}}
@@ -4909,7 +4933,7 @@
{template="categoryContents" group="store" params="$category, $subcategories, $packages, $pagination, $packagesWithCustomFields, $totalCount"}
</div>]]></template>
<template template_group="store" template_name="categoryContents" template_data="$category, $subcategories, $packages, $pagination, $packagesWithCustomFields, $totalCount" template_location="front" template_app="nexus"><![CDATA[{{if \count( $packages )}}
<section class='ipsBox'>
<section class='ipsBox ipsBox--commerceCategoryContents'>
<h2 class='ipsBox__header'>{lang="products_count" pluralize="$totalCount"}</h2>
<div class="ipsButtonBar ipsButtonBar--top">
{{if $pagination}}
@@ -4918,20 +4942,20 @@
<div class="ipsButtonBar__end">
<ul class="ipsDataFilters">
<li>
<a href="#elSortByMenu_menu" id="elSortByMenu_products" class="ipsDataFilters__button" data-role="sortButton" data-ipsMenu data-ipsMenu-activeclass="ipsDataFilters__button--active" data-ipsMenu-selectable="radio"><span>{lang="sort_by"}</span><i class="fa-solid fa-caret-down"></i></a>
<ul class="ipsMenu ipsMenu_auto ipsMenu_withStem ipsMenu_selectable ipsHide" id="elSortByMenu_products_menu">
{{foreach array( 'default', 'name', 'price_low', 'price_high', 'rating' ) as $k}}
<li class="ipsMenu_item {{if ( request.sortby and request.sortby == $k ) or ( !request.sortby and $k === 'default' )}}ipsMenu_itemChecked{{endif}}" data-ipsmenuvalue="{$k}">
{{if $k === 'default'}}
<a data-action="filter" href="{$category->url()}">
{{else}}
<a data-action="filter" href="{$category->url()->setQueryString( 'sortby', $k )}">
{{endif}}
{lang="products_sort_{$k}"}
</a>
</li>
{{endforeach}}
</ul>
<button type="button" id="elSortByMenu_products" popovertarget="elSortByMenu_products_menu" class="ipsDataFilters__button" data-role="sortButton"><span>{lang="sort_by"}</span><i class="fa-solid fa-caret-down"></i></button>
<i-dropdown popover id="elSortByMenu_products_menu" data-i-dropdown-selectable="radio">
<div class="iDropdown">
<ul class="iDropdown__items">
{{foreach array( 'default', 'name', 'price_low', 'price_high', 'rating' ) as $k}}
<li>
<a data-action="filter" {{if $k === 'default'}}href="{$category->url()}"{{else}}href="{$category->url()->setQueryString( 'sortby', $k )}"{{endif}} {{if ( request.sortby and request.sortby == $k ) or ( !request.sortby and $k === 'default' )}}aria-selected="true"{{endif}} data-ipsmenuvalue="{$k}">
<i class="iDropdown__input"></i>{lang="products_sort_{$k}"}
</a>
</li>
{{endforeach}}
</ul>
</div>
</i-dropdown>
</li>
</ul>
</div>
@@ -5368,24 +5392,24 @@
</div>
{{endif}}
<section class='ipsBox ipsPull'>
<section class='ipsBox ipsBox--commerceCategories ipsPull'>
<header class='ipsBox__header'>
<h2>{lang="categories"}</h2>
{template="carouselNavigation" group="global" app="core" params="'carousel--commerce-categories'"}
</header>
<nav class='ipsBox__content'>
<i-data>
<ul class='ipsData ipsData--wallpaper ipsData--carousel ipsData--commerce-categories i-basis_220 i-text-align_center' id='carousel--commerce-categories' tabindex="0">
<ul class='ipsData ipsData--wallpaper ipsData--carousel ipsData--commerceCategories' id='carousel--commerce-categories' tabindex="0">
{{foreach \IPS\nexus\Package\Group::rootsWithViewablePackages() as $group}}
<li class="ipsData__item">
<a href='{$group->url()}' class='ipsLinkPanel' aria-hidden="true" tabindex="-1"><span>{$group->_title}</span></a>
<figure class="ipsData__image">
<div class="ipsData__image" aria-hidden="true">
{{if $group->image}}
<img src='{expression="str_replace( array( '(', ')' ), array( '\(', '\)' ), $group->image )"}' alt='' loading='lazy'>
{{else}}
<i></i>
{{endif}}
</figure>
</div>
<div class="ipsData__content">
<div class="ipsData__main">
<h3 class="ipsData__title">{$group->_title}</h3>
@@ -5399,7 +5423,7 @@
</section>
{{if \count( \IPS\nexus\Package\Item::featured() )}}
<section class='ipsBox ipsPull'>
<section class='ipsBox ipsBox--commerceFeaturedProducts ipsPull'>
<header class='ipsBox__header'>
<h2>{lang="featured_products"}</h2>
{template="carouselNavigation" group="global" app="core" params="'carousel--commerce-featured'"}
@@ -5415,7 +5439,7 @@
{{endif}}
{{if \count( $newProducts )}}
<section class='ipsBox ipsPull'>
<section class='ipsBox ipsBox--commerceNewProducts ipsPull'>
<header class='ipsBox__header'>
<h2>{lang="new_products"}</h2>
{template="carouselNavigation" group="global" app="core" params="'carousel--commerce-new'"}
@@ -5431,7 +5455,7 @@
{{endif}}
{{if \count( $popularProducts )}}
<section class='ipsBox ipsPull'>
<section class='ipsBox ipsBox--commercePopularProducts ipsPull'>
<header class='ipsBox__header'>
<h2>{lang="popular_products"}</h2>
{template="carouselNavigation" group="global" app="core" params="'carousel--commerce-popular'"}
@@ -5446,7 +5470,7 @@
</section>
{{endif}}]]></template>
<template template_group="store" template_name="package" template_data="$package, $item, $purchaseForm, $inCart, $renewalTerm, $initialTerm" template_location="front" template_app="nexus"><![CDATA[
<div class='ipsBox ipsPull'>
<div class='ipsBox ipsBox--commercePackage ipsPull'>
<section class='cNexusProduct_header ipsFluid i-basis_400 i-gap_lines' data-controller='nexus.front.store.packagePage' data-itemTitle="{$package->_title}">
{{if $images = $item->images() and \count( $images )}}
<div class='i-background_2'>
@@ -5546,7 +5570,7 @@
</div>
{{if $package->reviewable}}
<section class="ipsBox ipsPull">
<section class="ipsBox ipsBox--packageReviews ipsPull">
<h2 class="ipsBox__header">{lang="product_reviews_pl"}</h2>
<div class="ipsBox__content">
{template="reviews" group="store" app="nexus" params="$item"}
@@ -5556,7 +5580,7 @@
<template template_group="store" template_name="packageBlock" template_data="$package, $layout='grid', $isCarousel=false" template_location="front" template_app="nexus"><![CDATA[
<li class='ipsData__item {$package->ui( "css" )}' {$package->ui( 'dataAttributes' )}>
<a href='{$package->url()}' class="ipsLinkPanel" aria-hidden="true" tabindex="-1"><span>{$package->_title}</span></a>
<a href='{$package->url()}' class='ipsData__image'>
<a href='{$package->url()}' class='ipsData__image' aria-hidden="true" tabindex="-1">
{{if $package->image}}
<img src="{$package->image}" alt='{$package->_title}' loading='lazy'>
{{else}}
@@ -5643,7 +5667,7 @@
</div>]]></template>
<template template_group="store" template_name="packageBlockWidget" template_data="$package, $mini=FALSE, $showAddToCart=FALSE" template_location="front" template_app="nexus"><![CDATA[<li class="ipsData__item cNexusWidgetProduct {{if $mini}}cNexusProduct_mini{{endif}}">
<a href="{$package->url()}" class="ipsLinkPanel" aria-hidden="true" tabindex="-1"><span>{$package->_title}</span></a>
<a href='{$package->url()}' class='ipsData__image'>
<a href='{$package->url()}' class='ipsData__image' aria-hidden="true" tabindex="-1">
{{if $package->image}}
<img src="{$package->image}" alt='{$package->_title}' loading='lazy'>
{{else}}
@@ -5680,7 +5704,7 @@
<template template_group="store" template_name="packageRow" template_data="$package, $hasCustomFields=FALSE" template_location="front" template_app="nexus"><![CDATA[
<li class='ipsData__item {$package->ui( 'css' )}' {$package->ui( 'dataAttributes' )}>
<a href='{$package->url()}' class="ipsLinkPanel" aria-hidden="true" tabindex="-1"><span>{$package->_title}</span></a>
<a href='{$package->url()}' class='ipsData__image cNexusProduct_image'>
<a href='{$package->url()}' class='ipsData__image cNexusProduct_image' aria-hidden="true" tabindex="-1">
{{if $package->image}}
<img src="{$package->image}" alt="{$package->_title}" loading="lazy">
{{else}}
@@ -5701,7 +5725,7 @@
</div>
{{endif}}
</div>
<div>
<div class="i-flex_00">
{{if $package->stock === 0}}
<span class='ipsButton ipsButton--primary' aria-disabled="true">{lang="out_of_stock"}</span>
{{else}}
@@ -6010,7 +6034,7 @@
</div>
</div>]]></template>
<template template_group="store" template_name="register" template_data="$packages" template_location="front" template_app="nexus"><![CDATA[
<div class='ipsBox ipsPull'>
<div class='ipsBox ipsBox--commerceRegister ipsPull'>
<div class="i-padding_3 i-border-bottom_3">
<h1 class='i-font-size_4 i-font-weight_600 i-color_hard'>{lang='sign_up'}: {lang="choose_product"}</h1>
<p class='i-font-size_2 i-font-weight_500 i-color_soft'>
@@ -6315,7 +6339,7 @@
{{endforeach}}
{{endif}}]]></template>
<template template_group="subscription" template_name="status" template_data="$active" template_location="admin" template_app="nexus"><![CDATA[<span class="ipsBadge {{if $active}}ipsBadge--positive{{else}}ipsBadge--neutral{{endif}}">{{if $active}}{lang="active"}{{else}}{lang="inactive"}{{endif}}</span>]]></template>
<template template_group="subscription" template_name="table" template_data="$table, $headers, $rows, $quickSearch" template_location="front" template_app="nexus"><![CDATA[<section class='ipsBox ipsPull'>
<template template_group="subscription" template_name="table" template_data="$table, $headers, $rows, $quickSearch" template_location="front" template_app="nexus"><![CDATA[<section class='ipsBox ipsBox--commerceSubscription ipsPull'>
<header class='ipsPageHeader'>
<div class="ipsPageHeader__row">
<div class='ipsPageHeader__primary'>
@@ -6341,16 +6365,20 @@
{{$baseUrl = $baseUrl->setQueryString( 'register', (int) \IPS\Request::i()->register );}}
{{endif}}
{{$memberCurrency = ( ( isset( \IPS\Request::i()->cookie['currency'] ) and \in_array( \IPS\Request::i()->cookie['currency'], \IPS\nexus\Money::currencies() ) ) ? \IPS\Request::i()->cookie['currency'] : \IPS\nexus\Customer::loggedIn()->defaultCurrency() );}}
<a href='#elCurrencyChooser_menu' data-ipsMenu id='elCurrencyChooser' class='ipsButton ipsButton--soft'><span>{$memberCurrency}</span><i class='fa-solid fa-caret-down'></i></a>
<ul class='ipsMenu ipsMenu_veryNarrow ipsHide' id='elCurrencyChooser_menu' {{if isset( $_SESSION['cart'] ) and \count( $_SESSION['cart'] )}}data-controller="nexus.front.store.currencySelect"{{endif}}>
{{foreach \IPS\nexus\Money::currencies() as $currency}}
<li class='ipsMenu_item' {{if $currency == $memberCurrency}}data-selected{{endif}}>
<a href='{$baseUrl->setQueryString( 'currency', $currency )->csrf()}' title='{lang="set_currency_to" sprintf="$currency"}'>
{{if $currency == $memberCurrency}}<i class='fa-solid fa-check'></i> {{endif}}{$currency}
</a>
</li>
{{endforeach}}
</ul>
<button type="button" id="elCurrencyChooser" popovertarget="elCurrencyChooser_menu" class='ipsButton ipsButton--soft'><span>{$memberCurrency}</span><i class='fa-solid fa-caret-down'></i></button>
<i-dropdown popover id="elCurrencyChooser_menu">
<div class="iDropdown">
<ul class="iDropdown__items">
{{foreach \IPS\nexus\Money::currencies() as $currency}}
<li>
<a href='{$baseUrl->setQueryString( 'currency', $currency )->csrf()}' title='{lang="set_currency_to" sprintf="$currency"}' {{if $currency == $memberCurrency}}data-selected aria-selected="true"{{endif}}>
<i class="iDropdown__input"></i>{$currency}
</a>
</li>
{{endforeach}}
</ul>
</div>
</i-dropdown>
</div>
{{endif}}
</div>
@@ -6608,7 +6636,7 @@
{{endif}}
</div>
</li>]]></template>
<template template_group="transactions" template_name="status" template_data="$status" template_location="admin" template_app="nexus"><![CDATA[<span class="ipsBadge ipsBadge--style{{if $status == \IPS\nexus\Transaction::STATUS_PAID}}4{{elseif $status == \IPS\nexus\Transaction::STATUS_HELD}}1{{elseif $status == \IPS\nexus\Transaction::STATUS_REVIEW or $status == \IPS\nexus\Transaction::STATUS_DISPUTED}}7{{elseif $status == \IPS\nexus\Transaction::STATUS_REFUSED}}5{{elseif $status == \IPS\nexus\Transaction::STATUS_REFUNDED or $status == \IPS\nexus\Transaction::STATUS_PART_REFUNDED}}2{{else}}6{{endif}}">
<template template_group="transactions" template_name="status" template_data="$status" template_location="admin" template_app="nexus"><![CDATA[<span class="ipsBadge {{if $status == \IPS\nexus\Transaction::STATUS_PAID}}ipsBadge--positive{{elseif $status == \IPS\nexus\Transaction::STATUS_HELD}}ipsBadge--pending{{elseif $status == \IPS\nexus\Transaction::STATUS_REVIEW or $status == \IPS\nexus\Transaction::STATUS_DISPUTED}}ipsBadge--warning{{elseif $status == \IPS\nexus\Transaction::STATUS_REFUSED}}ipsBadge--negative{{elseif $status == \IPS\nexus\Transaction::STATUS_REFUNDED or $status == \IPS\nexus\Transaction::STATUS_PART_REFUNDED}}ipsBadge--neutral{{else}}ipsBadge--intermediary{{endif}}">
{lang="tstatus_{$status}"}
</span>]]></template>
<template template_group="transactions" template_name="stripeData" template_data="$response=NULL, $error=NULL" template_location="admin" template_app="nexus"><![CDATA[{{if isset( $response['outcome'] )}}
@@ -7865,7 +7893,7 @@
{{$package = \IPS\nexus\Package::load( $review->item()->id );}}
<li class='ipsData__item'>
<a href="{$package->url()}" class="ipsLinkPanel" aria-hidden="true" tabindex="-1"><span>{$package->_title}</span></a>
<a href='{$review->url()}' class='ipsData__image'>
<a href='{$review->url()}' class='ipsData__image' aria-hidden="true" tabindex="-1">
{{if $package->image}}
<img src="{$package->image}" alt="{$package->_title}" loading="lazy">
{{else}}
@@ -7915,13 +7943,13 @@
{{if $package->enabled }}
<li class="ipsData__item">
<a href="{$package->url()}" class="ipsLinkPanel" aria-hidden="true" tabindex="-1"><span>{lang="nexus_subs_widget_title_and_price" sprintf="$package->_title, $package->priceBlurb()"}</span></a>
<figure class="ipsData__image">
<div class="ipsData__image" aria-hidden="true">
{{if $package->_image}}
<img src='{expression="str_replace( array( '(', ')' ), array( '\(', '\)' ), $package->_image->url )"}' alt='' loading='lazy'>
{{else}}
<i></i>
{{endif}}
</figure>
</div>
<div class="ipsData__content">
<div class='ipsData__main'>
<h4 class="ipsData__title"><a href="{$package->url()}">{expression="$package->_title"}</a></h4>
@@ -8689,7 +8717,14 @@ ul.cInvoiceUnpaidConsequences ul {
.ipsUploader__row.ipsAttach_error .cNexusPrimaryRadio {
display: none;
}]]></css>
<css css_location="front" css_app="nexus" css_attributes="" css_path="." css_name="nexus.css">.cNexusPrice {
<css css_location="front" css_app="nexus" css_attributes="" css_path="." css_name="nexus.css">/* Category thumbnails */
.ipsData--commerceCategories{
--i-data--basis: 320px;
--i-data--wallpaper-height: calc((16 / 10) * 100% - 100%);
text-align: center;
}
.cNexusPrice {
font-weight: 500;
}