Version 5.0.13
This commit is contained in:
1 parent
b89858b2ff
commit
5efe744c5f
1407 files changed
+69690
-30177
No files matched your search
@@ -1,9 +1,9 @@
|
||||
{
|
||||
"application_title": "Commerce",
|
||||
"app_author": "",
|
||||
"app_author": "Invision Power Services, Inc.",
|
||||
"app_directory": "nexus",
|
||||
"app_protected": 0,
|
||||
"app_website": "",
|
||||
"app_update_check": "",
|
||||
"app_website": null,
|
||||
"app_update_check": null,
|
||||
"app_hide_tab": 0
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<javascript app="nexus">
|
||||
<file javascript_app="nexus" javascript_location="front" javascript_path="controllers/checkout" javascript_name="ips.checkout.register.js" javascript_type="controller" javascript_version="5000074" javascript_position="1000100">/**
|
||||
<file javascript_app="nexus" javascript_location="front" javascript_path="controllers/checkout" javascript_name="ips.checkout.register.js" javascript_type="controller" javascript_version="5001302" javascript_position="1000100">/**
|
||||
* Invision Community
|
||||
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
|
||||
*
|
||||
@@ -34,7 +34,7 @@
|
||||
}
|
||||
});
|
||||
}(jQuery, _));</file>
|
||||
<file javascript_app="nexus" javascript_location="front" javascript_path="controllers/checkout" javascript_name="ips.checkout.review.js" javascript_type="controller" javascript_version="5000074" javascript_position="1000100"><![CDATA[/**
|
||||
<file javascript_app="nexus" javascript_location="front" javascript_path="controllers/checkout" javascript_name="ips.checkout.review.js" javascript_type="controller" javascript_version="5001302" javascript_position="1000100"><![CDATA[/**
|
||||
* Invision Community
|
||||
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
|
||||
*
|
||||
@@ -91,7 +91,7 @@
|
||||
}
|
||||
});
|
||||
}(jQuery, _));]]></file>
|
||||
<file javascript_app="nexus" javascript_location="global" javascript_path="controllers/forms" javascript_name="ips.forms.businessAddressVat.js" javascript_type="controller" javascript_version="5000074" javascript_position="1000150"><![CDATA[/**
|
||||
<file javascript_app="nexus" javascript_location="global" javascript_path="controllers/forms" javascript_name="ips.forms.businessAddressVat.js" javascript_type="controller" javascript_version="5001302" javascript_position="1000150"><![CDATA[/**
|
||||
* Invision Community
|
||||
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
|
||||
*
|
||||
@@ -130,7 +130,7 @@
|
||||
|
||||
});
|
||||
}(jQuery, _));]]></file>
|
||||
<file javascript_app="nexus" javascript_location="global" javascript_path="controllers/gateways" javascript_name="ips.gateways.stripe.js" javascript_type="controller" javascript_version="5000074" javascript_position="1000200"><![CDATA[/**
|
||||
<file javascript_app="nexus" javascript_location="global" javascript_path="controllers/gateways" javascript_name="ips.gateways.stripe.js" javascript_type="controller" javascript_version="5001302" javascript_position="1000200"><![CDATA[/**
|
||||
* Invision Community
|
||||
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
|
||||
*
|
||||
@@ -471,7 +471,7 @@
|
||||
|
||||
});
|
||||
}(jQuery, _));]]></file>
|
||||
<file javascript_app="nexus" javascript_location="global" javascript_path="controllers/gateways" javascript_name="ips.gateways.stripepaymentrequest.js" javascript_type="controller" javascript_version="5000074" javascript_position="1000200">/**
|
||||
<file javascript_app="nexus" javascript_location="global" javascript_path="controllers/gateways" javascript_name="ips.gateways.stripepaymentrequest.js" javascript_type="controller" javascript_version="5001302" javascript_position="1000200">/**
|
||||
* IPS Community Suite 4
|
||||
* (c) 2017 Invision Power Services - http://www.invisionpower.com
|
||||
*
|
||||
@@ -552,7 +552,7 @@
|
||||
|
||||
});
|
||||
}(jQuery, _));</file>
|
||||
<file javascript_app="nexus" javascript_location="global" javascript_path="controllers/misc" javascript_name="ips.misc.print.js" javascript_type="controller" javascript_version="5000074" javascript_position="1000100">/**
|
||||
<file javascript_app="nexus" javascript_location="global" javascript_path="controllers/misc" javascript_name="ips.misc.print.js" javascript_type="controller" javascript_version="5001302" javascript_position="1000100">/**
|
||||
* Invision Community
|
||||
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
|
||||
*
|
||||
@@ -574,7 +574,7 @@
|
||||
|
||||
});
|
||||
}(jQuery, _));</file>
|
||||
<file javascript_app="nexus" javascript_location="admin" javascript_path="controllers/notifications" javascript_name="ips.notifications.pendingTransactions.js" javascript_type="controller" javascript_version="5000074" javascript_position="1000100">/**
|
||||
<file javascript_app="nexus" javascript_location="admin" javascript_path="controllers/notifications" javascript_name="ips.notifications.pendingTransactions.js" javascript_type="controller" javascript_version="5001302" javascript_position="1000100">/**
|
||||
* Invision Community
|
||||
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
|
||||
*
|
||||
@@ -654,7 +654,7 @@
|
||||
|
||||
});
|
||||
}(jQuery, _));</file>
|
||||
<file javascript_app="nexus" javascript_location="admin" javascript_path="controllers/store" javascript_name="ips.store.productoptions.js" javascript_type="controller" javascript_version="5000074" javascript_position="1000150"><![CDATA[/**
|
||||
<file javascript_app="nexus" javascript_location="admin" javascript_path="controllers/store" javascript_name="ips.store.productoptions.js" javascript_type="controller" javascript_version="5001302" javascript_position="1000150"><![CDATA[/**
|
||||
* Invision Community
|
||||
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
|
||||
*
|
||||
@@ -709,7 +709,7 @@
|
||||
|
||||
});
|
||||
}(jQuery, _));]]></file>
|
||||
<file javascript_app="nexus" javascript_location="admin" javascript_path="controllers/store" javascript_name="ips.store.productselector.js" javascript_type="controller" javascript_version="5000074" javascript_position="1000150"><![CDATA[/**
|
||||
<file javascript_app="nexus" javascript_location="admin" javascript_path="controllers/store" javascript_name="ips.store.productselector.js" javascript_type="controller" javascript_version="5001302" javascript_position="1000150"><![CDATA[/**
|
||||
* Invision Community
|
||||
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
|
||||
*
|
||||
@@ -769,7 +769,7 @@
|
||||
|
||||
});
|
||||
}(jQuery, _));]]></file>
|
||||
<file javascript_app="nexus" javascript_location="front" javascript_path="controllers/store" javascript_name="ips.store.cartReview.js" javascript_type="controller" javascript_version="5000074" javascript_position="1000200">/**
|
||||
<file javascript_app="nexus" javascript_location="front" javascript_path="controllers/store" javascript_name="ips.store.cartReview.js" javascript_type="controller" javascript_version="5001302" javascript_position="1000200">/**
|
||||
* Invision Community
|
||||
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
|
||||
*
|
||||
@@ -838,16 +838,6 @@
|
||||
e.preventDefault();
|
||||
var self = this;
|
||||
var form = $( e.currentTarget );
|
||||
var menu = form.closest('.ipsMenu');
|
||||
|
||||
// Set menu to loading and hide form
|
||||
menu
|
||||
.css({
|
||||
height: menu.outerHeight() + 'px'
|
||||
})
|
||||
.addClass('ipsLoading');
|
||||
|
||||
form.hide();
|
||||
|
||||
// Do ajax request to update it
|
||||
ips.getAjax()( form.attr('action'), {
|
||||
@@ -857,8 +847,6 @@
|
||||
self.scope.find('[data-role="cart"]').html( response );
|
||||
})
|
||||
.fail(function(response){
|
||||
menu.removeClass( 'ipsLoading' );
|
||||
form.show();
|
||||
ips.ui.alert.show( {
|
||||
type: 'alert',
|
||||
icon: 'warn',
|
||||
@@ -869,7 +857,7 @@
|
||||
}
|
||||
});
|
||||
}(jQuery, _));</file>
|
||||
<file javascript_app="nexus" javascript_location="front" javascript_path="controllers/store" javascript_name="ips.store.category.js" javascript_type="controller" javascript_version="5000074" javascript_position="1000200"><![CDATA[/**
|
||||
<file javascript_app="nexus" javascript_location="front" javascript_path="controllers/store" javascript_name="ips.store.category.js" javascript_type="controller" javascript_version="5001302" javascript_position="1000200"><![CDATA[/**
|
||||
* Invision Community
|
||||
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
|
||||
*
|
||||
@@ -977,7 +965,7 @@
|
||||
}
|
||||
});
|
||||
}(jQuery, _));]]></file>
|
||||
<file javascript_app="nexus" javascript_location="front" javascript_path="controllers/store" javascript_name="ips.store.currencySelect.js" javascript_type="controller" javascript_version="5000074" javascript_position="1000200"><![CDATA[/**
|
||||
<file javascript_app="nexus" javascript_location="front" javascript_path="controllers/store" javascript_name="ips.store.currencySelect.js" javascript_type="controller" javascript_version="5001302" javascript_position="1000200"><![CDATA[/**
|
||||
* Invision Community
|
||||
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
|
||||
*
|
||||
@@ -1027,7 +1015,7 @@
|
||||
}
|
||||
});
|
||||
}(jQuery, _));]]></file>
|
||||
<file javascript_app="nexus" javascript_location="front" javascript_path="controllers/store" javascript_name="ips.store.giftCard.js" javascript_type="controller" javascript_version="5000074" javascript_position="1000200"><![CDATA[/**
|
||||
<file javascript_app="nexus" javascript_location="front" javascript_path="controllers/store" javascript_name="ips.store.giftCard.js" javascript_type="controller" javascript_version="5001302" javascript_position="1000200"><![CDATA[/**
|
||||
* Invision Community
|
||||
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
|
||||
*
|
||||
@@ -1115,7 +1103,7 @@
|
||||
}
|
||||
});
|
||||
}(jQuery, _));]]></file>
|
||||
<file javascript_app="nexus" javascript_location="front" javascript_path="controllers/store" javascript_name="ips.store.packagePage.js" javascript_type="controller" javascript_version="5000074" javascript_position="1000200"><![CDATA[/**
|
||||
<file javascript_app="nexus" javascript_location="front" javascript_path="controllers/store" javascript_name="ips.store.packagePage.js" javascript_type="controller" javascript_version="5001302" javascript_position="1000200"><![CDATA[/**
|
||||
* Invision Community
|
||||
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
|
||||
*
|
||||
@@ -1380,9 +1368,9 @@
|
||||
self.scope.find('[data-role="renewalTerm"]').html( response.renewal );
|
||||
self.scope.find('[data-role="initialTerm"]').html( response.initialTerm );
|
||||
if( response.okay ){
|
||||
self.scope.find('button').removeAttr('disabled').text( ips.getString('add_to_cart_js') );
|
||||
self.scope.find('[type="submit"]').removeAttr('disabled').text( ips.getString('add_to_cart_js') );
|
||||
} else {
|
||||
self.scope.find('button').attr( 'disabled','disabled' ).text( ips.getString('out_of_stock') );
|
||||
self.scope.find('[type="submit"]').attr( 'disabled','disabled' ).text( ips.getString('out_of_stock') );
|
||||
}
|
||||
})
|
||||
.fail(function(response){
|
||||
@@ -1392,7 +1380,7 @@
|
||||
|
||||
});
|
||||
}(jQuery, _));]]></file>
|
||||
<file javascript_app="nexus" javascript_location="front" javascript_path="controllers/store" javascript_name="ips.store.register.js" javascript_type="controller" javascript_version="5000074" javascript_position="1000200"><![CDATA[/**
|
||||
<file javascript_app="nexus" javascript_location="front" javascript_path="controllers/store" javascript_name="ips.store.register.js" javascript_type="controller" javascript_version="5001302" javascript_position="1000200"><![CDATA[/**
|
||||
* Invision Community
|
||||
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
|
||||
*
|
||||
@@ -1541,7 +1529,7 @@
|
||||
},
|
||||
});
|
||||
}(jQuery, _));]]></file>
|
||||
<file javascript_app="nexus" javascript_location="front" javascript_path="controllers/subscriptions" javascript_name="ips.subscriptions.main.js" javascript_type="controller" javascript_version="5000074" javascript_position="1000150">/**
|
||||
<file javascript_app="nexus" javascript_location="front" javascript_path="controllers/subscriptions" javascript_name="ips.subscriptions.main.js" javascript_type="controller" javascript_version="5001302" javascript_position="1000150">/**
|
||||
* Invision Community
|
||||
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
|
||||
*
|
||||
@@ -1579,7 +1567,7 @@
|
||||
}
|
||||
});
|
||||
}(jQuery, _));</file>
|
||||
<file javascript_app="nexus" javascript_location="admin" javascript_path="templates" javascript_name="ips.templates.store.js" javascript_type="template" javascript_version="5000074" javascript_position="1000050"><![CDATA[ips.templates.set('nexus.store.images', `
|
||||
<file javascript_app="nexus" javascript_location="admin" javascript_path="templates" javascript_name="ips.templates.store.js" javascript_type="template" javascript_version="5001302" javascript_position="1000050"><![CDATA[ips.templates.set('nexus.store.images', `
|
||||
<div class='ipsUploader__row ipsUploader__row--image ipsAttach {{#done}}ipsAttach_done{{/done}}' id='{{id}}' data-role='file' data-fileid='{{id}}' data-fullsizeurl='{{imagesrc}}' data-thumbnailurl='{{thumbnail}}' data-fileType='image'>
|
||||
<div class='ipsUploader__rowPreview' data-role='preview'>
|
||||
{{#thumb}}
|
||||
@@ -1612,12 +1600,12 @@
|
||||
ips.templates.set('nexus.store.imagesWrapper', `
|
||||
<div class='ipsUploader__container ipsUploader__container--images'>{{{content}}}</div>
|
||||
`);]]></file>
|
||||
<file javascript_app="nexus" javascript_location="front" javascript_path="templates" javascript_name="ips.templates.store.js" javascript_type="template" javascript_version="5000074" javascript_position="1000050"><![CDATA[ips.templates.set('nexus.store.productImage', " \
|
||||
<file javascript_app="nexus" javascript_location="front" javascript_path="templates" javascript_name="ips.templates.store.js" javascript_type="template" javascript_version="5001302" javascript_position="1000050"><![CDATA[ips.templates.set('nexus.store.productImage', " \
|
||||
<a href='{{fullURL}}' data-fullURL='{{fullURL}}' class='cNexusProduct_primaryImage' data-ipsLightbox data-ipsLightbox-group='product' style='background-image:url({{thumbURL}})'>\
|
||||
<img src='{{thumbURL}}' alt=''>\
|
||||
</a>\
|
||||
");]]></file>
|
||||
<file javascript_app="nexus" javascript_location="global" javascript_path="templates" javascript_name="ips.templates.gateways.js" javascript_type="template" javascript_version="5000074" javascript_position="1000050"><![CDATA[ips.templates.set('nexus.gateway.vaultAccount', " \
|
||||
<file javascript_app="nexus" javascript_location="global" javascript_path="templates" javascript_name="ips.templates.gateways.js" javascript_type="template" javascript_version="5001302" javascript_position="1000050"><![CDATA[ips.templates.set('nexus.gateway.vaultAccount', " \
|
||||
<li>\
|
||||
<input type='radio' name='{{fieldName}}[stored]' value='{{value}}' id='{{fieldName}}_stored{{random}}' data-control='toggle' data-toggles='{{fieldName}}_existing' class='ipsInput ipsInput--toggle'>\
|
||||
<div class='ipsFieldList__content'>\
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<language>
|
||||
<app key="nexus" version="5000074">
|
||||
<app key="nexus" version="5001302">
|
||||
<word key="__app_nexus" js="0">Commerce</word>
|
||||
<word key="menutab__nexus" js="0">Commerce</word>
|
||||
<word key="menutab__nexus_icon" js="0">usd</word>
|
||||
@@ -1606,6 +1606,12 @@
|
||||
<word key="cf_invoice_desc" js="0">If set to No, this field will be excluded from being displayed on invoices. The field will still display when viewing the actual purchase.</word>
|
||||
<word key="custom_packages" js="0">Custom Packages</word>
|
||||
<word key="cm_fields_modified" js="0">You have modified the values for a field which is being used for stock and price adjustments. You need to update the configuration for each of the products which are affected by this field.</word>
|
||||
<word key="sf_type_UserPass" js="0"><![CDATA[Username & Password]]></word>
|
||||
<word key="sf_type_Ftp" js="0">FTP Details</word>
|
||||
<word key="sf_validate_ftp" js="0">Validate FTP details?</word>
|
||||
<word key="sf_validate_ftp_desc" js="0">If enabled, the system will attempt to make an FTP connection and will not allow the user to continue if the details appear to be incorrect.</word>
|
||||
<word key="sf_validate_ftp_noftp" js="0">Your server does not have the FTP PHP extension enabled and so this option is not available. In order to use this option, contact your hosting provider or system administrator and ask them to enable the FTP and SSH2 PHP extensions.</word>
|
||||
<word key="sf_validate_ftp_nosftp" js="0">Your server does not have the SSH2 PHP extension enabled and so this option is not available. In order to use this option, contact your hosting provider or system administrator and ask them to enable the FTP and SSH2 PHP extensions.</word>
|
||||
<word key="module__nexus_store" js="0">Store</word>
|
||||
<word key="buy" js="0">Buy</word>
|
||||
<word key="redeem" js="0">Redeem</word>
|
||||
|
||||
@@ -5303,6 +5303,18 @@
|
||||
"comment": "",
|
||||
"unsigned": false,
|
||||
"auto_increment": false
|
||||
},
|
||||
"p_email": {
|
||||
"name": "p_email",
|
||||
"type": "TINYINT",
|
||||
"length": null,
|
||||
"decimals": null,
|
||||
"values": null,
|
||||
"allow_null": true,
|
||||
"default": "0",
|
||||
"comment": "",
|
||||
"unsigned": false,
|
||||
"auto_increment": false
|
||||
}
|
||||
},
|
||||
"indexes": {
|
||||
|
||||
+295
-260
@@ -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> · {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">×{$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">×{$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">×{$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">×{$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;
|
||||
}
|
||||
|
||||
|
||||
@@ -348,5 +348,54 @@
|
||||
"5000071": "5.0.6 Beta 2",
|
||||
"5000072": "5.0.6 Beta 3",
|
||||
"5000073": "5.0.6 Beta 4",
|
||||
"5000074": "5.0.6"
|
||||
"5000074": "5.0.6",
|
||||
"5000075": "5.0.7 Beta 1",
|
||||
"5000076": "5.0.7 Beta 2",
|
||||
"5000077": "5.0.7 Beta 2",
|
||||
"5000078": "5.0.7 Beta 3",
|
||||
"5000079": "5.0.7 Beta 4",
|
||||
"5000080": "5.0.7",
|
||||
"5000081": "5.0.7",
|
||||
"5000082": "5.0.7",
|
||||
"5000800": "5.0.8 Alpha 1",
|
||||
"5000801": "5.0.8 Alpha 2",
|
||||
"5000802": "5.0.8 Beta 1",
|
||||
"5000803": "5.0.8 Beta 2",
|
||||
"5000804": "5.0.8 Beta 3",
|
||||
"5000805": "5.0.8",
|
||||
"5000900": "5.0.9 Beta 1",
|
||||
"5000901": "5.0.9 Beta 1",
|
||||
"5000902": "5.0.9 Beta 1",
|
||||
"5000903": "5.0.9 Beta 2",
|
||||
"5000904": "5.0.9",
|
||||
"5000905": "5.0.9",
|
||||
"5000906": "5.0.10 Beta 1",
|
||||
"5000907": "5.0.10 Beta 1",
|
||||
"5000908": "5.0.10 Beta 1",
|
||||
"5000909": "5.0.10 Beta 1",
|
||||
"5000910": "5.0.10 Beta 2",
|
||||
"5000911": "5.0.10 Beta 3",
|
||||
"5000912": "5.0.10 Beta 4",
|
||||
"5000913": "5.0.10 Beta 4",
|
||||
"5000914": "5.0.10",
|
||||
"5000915": "5.0.10",
|
||||
"5000916": "5.0.10",
|
||||
"5000917": "5.0.10",
|
||||
"5000918": "5.0.10",
|
||||
"5000919": "5.0.10",
|
||||
"5000920": "5.0.10",
|
||||
"5001100": "5.0.11 Beta 1",
|
||||
"5001101": "5.0.11 Beta 1",
|
||||
"5001102": "5.0.11 Beta 2",
|
||||
"5001103": "5.0.11",
|
||||
"5001104": "5.0.11",
|
||||
"5001105": "5.0.11",
|
||||
"5001200": "5.0.12 Beta 1",
|
||||
"5001201": "5.0.12 Beta 2",
|
||||
"5001202": "5.0.12 Beta 3",
|
||||
"5001203": "5.0.12",
|
||||
"5001204": "5.0.12",
|
||||
"5001300": "5.0.13 Beta 1",
|
||||
"5001301": "5.0.13 Beta 2",
|
||||
"5001302": "5.0.13"
|
||||
}
|
||||
Reference in new issue
Block a user