first commit

This commit is contained in:
sujan
2024-08-06 18:06:00 +05:45
commit a2fa49071a
2745 changed files with 391199 additions and 0 deletions

View File

@ -0,0 +1,55 @@
{{ header }}
<div id="account-account" class="container">
<ul class="breadcrumb">
{% for breadcrumb in breadcrumbs %}
<li class="breadcrumb-item"><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li>
{% endfor %}
</ul>
{% if success %}
<div class="alert alert-success alert-dismissible"><i class="fa-solid fa-circle-check"></i> {{ success }}</div>
{% endif %}
<div class="row">{{ column_left }}
<div id="content" class="col">{{ content_top }}
<h2>{{ text_my_account }}</h2>
<ul class="list-unstyled">
<li><a href="{{ edit }}">{{ text_edit }}</a></li>
<li><a href="{{ password }}">{{ text_password }}</a></li>
<li><a href="{{ address }}">{{ text_address }}</a></li>
<li><a href="{{ wishlist }}">{{ text_wishlist }}</a></li>
</ul>
<h2>
{{ text_my_orders }}
</h2>
<ul class="list-unstyled">
<li><a href="{{ order }}">{{ text_order }}</a></li>
<li><a href="{{ subscription }}">{{ text_subscription }}</a></li>
<li><a href="{{ download }}">{{ text_download }}</a></li>
{% if reward %}
<li><a href="{{ reward }}">{{ text_reward }}</a></li>
{% endif %}
<li><a href="{{ return }}">{{ text_return }}</a></li>
<li><a href="{{ transaction }}">{{ text_transaction }}</a></li>
</ul>
{% if affiliate %}
<h2>
{{ text_my_affiliate }}
</h2>
<ul class="list-unstyled">
{% if not tracking %}
<li><a href="{{ affiliate }}">{{ text_affiliate_add }}</a></li>
{% else %}
<li><a href="{{ affiliate }}">{{ text_affiliate_edit }}</a></li>
<li><a href="{{ tracking }}">{{ text_tracking }}</a></li>
{% endif %}
</ul>
{% endif %}
<h2>
{{ text_my_newsletter }}
</h2>
<ul class="list-unstyled">
<li><a href="{{ newsletter }}">{{ text_newsletter }}</a></li>
</ul>
{{ content_bottom }}</div>
{{ column_right }}</div>
</div>
{{ footer }}

View File

@ -0,0 +1,62 @@
{{ header }}
<div id="account-address" class="container">
<ul class="breadcrumb">
{% for breadcrumb in breadcrumbs %}
<li class="breadcrumb-item"><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li>
{% endfor %}
</ul>
{% if success %}
<div class="alert alert-success alert-dismissible"><i class="fa-solid fa-circle-check"></i> {{ success }}</div>
{% endif %}
<div class="row">{{ column_left }}
<div id="content" class="col">{{ content_top }}
<h1>{{ text_address_book }}</h1>
<div id="address">{{ list }}</div>
<div class="row">
<div class="col">
<a href="{{ back }}" class="btn btn-light">{{ button_back }}</a>
</div>
<div class="col text-end">
<a href="{{ add }}" class="btn btn-primary">{{ button_new_address }}</a>
</div>
</div>
{{ content_bottom }}</div>
{{ column_right }}</div>
</div>
<script type="text/javascript"><!--
$('#address').on('click', '.btn-danger', function (e) {
e.preventDefault();
var element = this;
$.ajax({
url: $(element).attr('href'),
dataType: 'json',
beforeSend: function () {
$(element).prop('disabled', true);
},
complete: function () {
$(element).prop('disabled', false);
},
success: function (json) {
console.log(json);
$('.alert-dismissible').remove();
if (json['error']) {
$('#address').before('<div class="alert alert-danger alert-dismissible"><i class="fa-solid fa-circle-exclamation"></i> ' + json['error'] + ' <button type="button" class="btn-close" data-bs-dismiss="alert"></button></div>');
}
if (json['success']) {
$('#address').before('<div class="alert alert-success alert-dismissible"><i class="fa-solid fa-circle-check"></i> ' + json['success'] + ' <button type="button" class="btn-close" data-bs-dismiss="alert"></button></div>');
$('#address').load('index.php?route=account/address.list&language={{ language }}&customer_token={{ customer_token }}');
}
},
error: function (xhr, ajaxOptions, thrownError) {
console.log(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
}
});
});
//--></script>
{{ footer }}

View File

@ -0,0 +1,275 @@
{{ header }}
<div id="account-address" class="container">
<ul class="breadcrumb">
{% for breadcrumb in breadcrumbs %}
<li class="breadcrumb-item"><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li>
{% endfor %}
</ul>
<div class="row">{{ column_left }}
<div id="content" class="col">{{ content_top }}
<h1>{{ text_address }}</h1>
<form id="form-address" action="{{ save }}" method="post" data-oc-toggle="ajax">
<fieldset>
<div class="row mb-3 required">
<label for="input-firstname" class="col-sm-2 col-form-label">{{ entry_firstname }}</label>
<div class="col-sm-10">
<input type="text" name="firstname" value="{{ firstname }}" placeholder="{{ entry_firstname }}" id="input-firstname" class="form-control"/>
<div id="error-firstname" class="invalid-feedback"></div>
</div>
</div>
<div class="row mb-3 required">
<label for="input-lastname" class="col-sm-2 col-form-label">{{ entry_lastname }}</label>
<div class="col-sm-10">
<input type="text" name="lastname" value="{{ lastname }}" placeholder="{{ entry_lastname }}" id="input-lastname" class="form-control"/>
<div id="error-lastname" class="invalid-feedback"></div>
</div>
</div>
<div class="row mb-3">
<label for="input-company" class="col-sm-2 col-form-label">{{ entry_company }}</label>
<div class="col-sm-10">
<input type="text" name="company" value="{{ company }}" placeholder="{{ entry_company }}" id="input-company" class="form-control"/>
</div>
</div>
<div class="row mb-3 required">
<label for="input-address-1" class="col-sm-2 col-form-label">{{ entry_address_1 }}</label>
<div class="col-sm-10">
<input type="text" name="address_1" value="{{ address_1 }}" placeholder="{{ entry_address_1 }}" id="input-address-1" class="form-control"/>
<div id="error-address-1" class="invalid-feedback"></div>
</div>
</div>
<div class="row mb-3">
<label for="input-address-2" class="col-sm-2 col-form-label">{{ entry_address_2 }}</label>
<div class="col-sm-10">
<input type="text" name="address_2" value="{{ address_2 }}" placeholder="{{ entry_address_2 }}" id="input-address-2" class="form-control"/>
</div>
</div>
<div class="row mb-3 required">
<label for="input-city" class="col-sm-2 col-form-label">{{ entry_city }}</label>
<div class="col-sm-10">
<input type="text" name="city" value="{{ city }}" placeholder="{{ entry_city }}" id="input-city" class="form-control"/>
<div id="error-city" class="invalid-feedback"></div>
</div>
</div>
<div class="row mb-3 required">
<label for="input-postcode" class="col-sm-2 col-form-label">{{ entry_postcode }}</label>
<div class="col-sm-10">
<input type="text" name="postcode" value="{{ postcode }}" placeholder="{{ entry_postcode }}" id="input-postcode" class="form-control"/>
<div id="error-postcode" class="invalid-feedback"></div>
</div>
</div>
<div class="row mb-3 required">
<label for="input-country" class="col-sm-2 col-form-label">{{ entry_country }}</label>
<div class="col-sm-10">
<select name="country_id" id="input-country" class="form-select">
<option value="0">{{ text_select }}</option>
{% for country in countries %}
<option value="{{ country.country_id }}"{% if country.country_id == country_id %} selected{% endif %}>{{ country.name }}</option>
{% endfor %}
</select>
<div id="error-country" class="invalid-feedback"></div>
</div>
</div>
<div class="row mb-3 required">
<label for="input-zone" class="col-sm-2 col-form-label">{{ entry_zone }}</label>
<div class="col-sm-10">
<select name="zone_id" id="input-zone" class="form-select"></select>
<div id="error-zone" class="invalid-feedback"></div>
</div>
</div>
{% for custom_field in custom_fields %}
{% if custom_field.type == 'select' %}
<div class="row mb-3{% if custom_field.required %} required{% endif %}">
<label for="input-custom-field-{{ custom_field.custom_field_id }}" class="col-sm-2 col-form-label">{{ custom_field.name }}</label>
<div class="col-sm-10">
<select name="custom_field[{{ custom_field.custom_field_id }}]" id="input-custom-field-{{ custom_field.custom_field_id }}" class="form-select">
<option value="">{{ text_select }}</option>
{% for custom_field_value in custom_field.custom_field_value %}
<option value="{{ custom_field_value.custom_field_value_id }}"{% if address_custom_field[custom_field.custom_field_id] and custom_field_value.custom_field_value_id == address_custom_field[custom_field.custom_field_id] %} selected{% endif %}>{{ custom_field_value.name }}</option>
{% endfor %}
</select>
<div id="error-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
</div>
{% endif %}
{% if custom_field.type == 'radio' %}
<div class="row mb-3{% if custom_field.required %} required{% endif %}">
<label class="col-sm-2 col-form-label">{{ custom_field.name }}</label>
<div class="col-sm-10">
<div id="input-custom-field-{{ custom_field.custom_field_id }}">
{% for custom_field_value in custom_field.custom_field_value %}
<div class="form-check">
<input type="radio" name="custom_field[{{ custom_field.custom_field_id }}]" value="{{ custom_field_value.custom_field_value_id }}" id="input-custom-value-{{ custom_field_value.custom_field_value_id }}" class="form-check-input"{% if address_custom_field[custom_field.custom_field_id] and custom_field_value.custom_field_value_id == address_custom_field[custom_field.custom_field_id] %} checked{% endif %}/> <label for="input-custom-value-{{ custom_field_value.custom_field_value_id }}" class="form-check-label">{{ custom_field_value.name }}</label>
</div>
{% endfor %}
</div>
<div id="error-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
</div>
{% endif %}
{% if custom_field.type == 'checkbox' %}
<div class="row mb-3{% if custom_field.required %} required{% endif %}">
<label class="col-sm-2 col-form-label">{{ custom_field.name }}</label>
<div class="col-sm-10">
<div id="input-custom-field-{{ custom_field.custom_field_id }}">
{% for custom_field_value in custom_field.custom_field_value %}
<div class="form-check">
<input type="checkbox" name="custom_field[{{ custom_field.custom_field_id }}][]" value="{{ custom_field_value.custom_field_value_id }}" id="input-custom-value-{{ custom_field_value.custom_field_value_id }}" class="form-check-input"{% if address_custom_field[custom_field.custom_field_id] and custom_field_value.custom_field_value_id in address_custom_field[custom_field.custom_field_id] %} checked{% endif %}/> <label for="input-custom-value-{{ custom_field_value.custom_field_value_id }}" class="form-check-label">{{ custom_field_value.name }}</label>
</div>
{% endfor %}
</div>
<div id="error-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
</div>
{% endif %}
{% if custom_field.type == 'text' %}
<div class="row mb-3{% if custom_field.required %} required{% endif %}">
<label for="input-custom-field-{{ custom_field.custom_field_id }}" class="col-sm-2 col-form-label">{{ custom_field.name }}</label>
<div class="col-sm-10">
<input type="text" name="custom_field[{{ custom_field.custom_field_id }}]" value="{% if address_custom_field[custom_field.custom_field_id] %}{{ address_custom_field[custom_field.custom_field_id] }}{% else %}{{ custom_field.value }}{% endif %}" placeholder="{{ custom_field.name }}" id="input-custom-field-{{ custom_field.custom_field_id }}" class="form-control"/>
<div id="error-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
</div>
{% endif %}
{% if custom_field.type == 'textarea' %}
<div class="row mb-3{% if custom_field.required %} required{% endif %}">
<label for="input-custom-field-{{ custom_field.custom_field_id }}" class="col-sm-2 col-form-label">{{ custom_field.name }}</label>
<div class="col-sm-10">
<textarea name="custom_field[{{ custom_field.custom_field_id }}]" rows="5" placeholder="{{ custom_field.name }}" id="input-custom-field-{{ custom_field.custom_field_id }}" class="form-control">{% if address_custom_field[custom_field.custom_field_id] %}{{ address_custom_field[custom_field.custom_field_id] }}{% else %}{{ custom_field.value }}{% endif %}</textarea>
<div id="error-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
</div>
{% endif %}
{% if custom_field.type == 'file' %}
<div class="row mb-3{% if custom_field.required %} required{% endif %}">
<label class="col-sm-2 col-form-label">{{ custom_field.name }}</label>
<div class="col-sm-10">
<div>
<button type="button" data-oc-toggle="upload" data-oc-url="{{ upload }}" data-oc-size-max="{{ config_file_max_size }}" data-oc-size-error="{{ error_upload_size }}" data-oc-target="#input-custom-field-{{ custom_field.custom_field_id }}" class="btn btn-light"><i class="fa-solid fa-upload"></i> {{ button_upload }}</button>
<input type="hidden" name="custom_field[{{ custom_field.custom_field_id }}]" value="{% if address_custom_field[custom_field.custom_field_id] %}{{ address_custom_field[custom_field.custom_field_id] }}{% endif %}" id="input-custom-field-{{ custom_field.custom_field_id }}"/>
</div>
<div id="error-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
</div>
{% endif %}
{% if custom_field.type == 'date' %}
<div class="row mb-3{% if custom_field.required %} required{% endif %}">
<label for="input-custom-field-{{ custom_field.custom_field_id }}" class="col-sm-2 col-form-label">{{ custom_field.name }}</label>
<div class="col-sm-10">
<div class="input-group">
<input type="text" name="custom_field[{{ custom_field.custom_field_id }}]" value="{% if address_custom_field[custom_field.custom_field_id] %}{{ address_custom_field[custom_field.custom_field_id] }}{% else %}{{ custom_field.value }}{% endif %}" placeholder="{{ custom_field.name }}" id="input-custom-field-{{ custom_field.custom_field_id }}" class="form-control date"/>
<div class="input-group-text"><i class="fa-regular fa-calendar"></i></div>
</div>
<div id="error-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
</div>
{% endif %}
{% if custom_field.type == 'time' %}
<div class="row mb-3{% if custom_field.required %} required{% endif %}">
<label for="input-custom-field-{{ custom_field.custom_field_id }}" class="col-sm-2 col-form-label">{{ custom_field.name }}</label>
<div class="col-sm-10">
<div class="input-group">
<input type="text" name="custom_field[{{ custom_field.custom_field_id }}]" value="{% if address_custom_field[custom_field.custom_field_id] %}{{ address_custom_field[custom_field.custom_field_id] }}{% else %}{{ custom_field.value }}{% endif %}" placeholder="{{ custom_field.name }}" id="input-custom-field-{{ custom_field.custom_field_id }}" class="form-control time"/>
<div class="input-group-text"><i class="fa-regular fa-calendar"></i></div>
</div>
<div id="error-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
</div>
{% endif %}
{% if custom_field.type == 'datetime' %}
<div class="row mb-3{% if custom_field.required %} required{% endif %}">
<label for="input-custom-field-{{ custom_field.custom_field_id }}" class="col-sm-2 col-form-label">{{ custom_field.name }}</label>
<div class="col-sm-10">
<div class="input-group">
<input type="text" name="custom_field[{{ custom_field.custom_field_id }}]" value="{% if address_custom_field[custom_field.custom_field_id] %}{{ address_custom_field[custom_field.custom_field_id] }}{% else %}{{ custom_field.value }}{% endif %}" placeholder="{{ custom_field.name }}" id="input-custom-field-{{ custom_field.custom_field_id }}" class="form-control datetime"/>
<div class="input-group-text"><i class="fa-regular fa-calendar"></i></div>
</div>
<div id="error-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
</div>
{% endif %}
{% endfor %}
<div class="row mb-3">
<label class="col-sm-2 col-form-label">{{ entry_default }}</label>
<div class="col-sm-10">
<div class="form-check-inline">
<input type="radio" name="default" value="1" id="input-default-yes" class="form-check-input"{% if default %} checked{% endif %}/> <label for="input-default-yes" class="form-check-label">{{ text_yes }}</label>
</div>
<div class="form-check-inline">
<input type="radio" name="default" value="0" id="input-default-no" class="form-check-input"{% if not default %} checked{% endif %}/> <label for="input-default-no" class="form-check-label">{{ text_no }}</label>
</div>
</div>
</div>
</fieldset>
<div class="row">
<div class="col">
<a href="{{ back }}" class="btn btn-light">{{ button_back }}</a>
</div>
<div class="col text-end">
<button type="submit" class="btn btn-primary">{{ button_continue }}</button>
</div>
</div>
</form>
{{ content_bottom }}</div>
{{ column_right }}</div>
</div>
<script type="text/javascript"><!--
$('#input-country').on('change', function () {
var element = this;
$.ajax({
url: 'index.php?route=localisation/country&country_id=' + this.value + '&language={{ language }}',
dataType: 'json',
beforeSend: function () {
$(element).prop('disabled', true);
$('#input-zone').prop('disabled', true);
},
complete: function () {
$(element).prop('disabled', false);
$('#input-zone').prop('disabled', false);
},
success: function (json) {
if (json['postcode_required'] == '1') {
$('#input-postcode').parent().parent().addClass('required');
} else {
$('#input-postcode').parent().parent().removeClass('required');
}
html = '<option value="">{{ text_select|escape('js') }}</option>';
if (json['zone'] && json['zone'] != '') {
for (i = 0; i < json['zone'].length; i++) {
html += '<option value="' + json['zone'][i]['zone_id'] + '"';
if (json['zone'][i]['zone_id'] == '{{ zone_id }}') {
html += ' selected';
}
html += '>' + json['zone'][i]['name'] + '</option>';
}
} else {
html += '<option value="0" selected>{{ text_none|escape('js') }}</option>';
}
$('#input-zone').html(html);
},
error: function (xhr, ajaxOptions, thrownError) {
console.log(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
}
});
});
$('#input-country').trigger('change');
//--></script>
{{ footer }}

View File

@ -0,0 +1,14 @@
{% if addresses %}
<div class="table-responsive">
<table class="table table-bordered table-hover">
{% for address in addresses %}
<tr>
<td class="text-start">{{ address.address }}</td>
<td class="text-end"><a href="{{ address.edit }}" data-bs-toggle="tooltip" title="{{ button_edit }}" class="btn btn-primary"><i class="fa-regular fa-solid fa-pencil"></i></a> <a href="{{ address.delete }}" data-bs-toggle="tooltip" title="{{ button_delete }}" class="btn btn-danger"><i class="fa-regular fa-trash-can"></i></a></td>
</tr>
{% endfor %}
</table>
</div>
{% else %}
<p>{{ text_no_results }}</p>
{% endif %}

View File

@ -0,0 +1,248 @@
{{ header }}
<div id="account-affiliate" class="container">
<ul class="breadcrumb">
{% for breadcrumb in breadcrumbs %}
<li class="breadcrumb-item"><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li>
{% endfor %}
</ul>
<div class="row">{{ column_left }}
<div id="content" class="col">{{ content_top }}
<h1>{{ heading_title }}</h1>
<form id="form-affiliate" action="{{ save }}" method="post" data-oc-toggle="ajax">
<fieldset>
<legend>{{ text_my_affiliate }}</legend>
<div class="row mb-3">
<label for="input-company" class="col-sm-2 col-form-label">{{ entry_company }}</label>
<div class="col-sm-10">
<input type="text" name="company" value="{{ company }}" placeholder="{{ entry_company }}" id="input-company" class="form-control"/>
</div>
</div>
<div class="row mb-3">
<label for="input-website" class="col-sm-2 col-form-label">{{ entry_website }}</label>
<div class="col-sm-10">
<input type="text" name="website" value="{{ website }}" placeholder="{{ entry_website }}" id="input-website" class="form-control"/>
</div>
</div>
</fieldset>
<fieldset>
<legend>{{ text_payment }}</legend>
<div class="row mb-3">
<label for="input-tax" class="col-sm-2 col-form-label">{{ entry_tax }}</label>
<div class="col-sm-10">
<input type="text" name="tax" value="{{ tax }}" placeholder="{{ entry_tax }}" id="input-tax" class="form-control"/>
</div>
</div>
<div class="row mb-3">
<label class="col-sm-2 col-form-label">{{ entry_payment_method }}</label>
<div class="col-sm-10">
<div class="form-check">
<input type="radio" name="payment_method" value="cheque" id="input-payment-cheque" class="form-check-input"{% if payment_method == 'cheque' %} checked{% endif %}/>
<label for="input-payment-cheque" class="form-check-label">{{ text_cheque }}</label>
</div>
<div class="form-check">
<input type="radio" name="payment_method" value="paypal" id="input-payment-paypal" class="form-check-input"{% if payment_method == 'paypal' %} checked{% endif %}/>
<label for="input-payment-paypal" class="form-check-label">{{ text_paypal }}</label>
</div>
<div class="form-check">
<input type="radio" name="payment_method" value="bank" id="input-payment-bank" class="form-check-input"{% if payment_method == 'bank' %} checked{% endif %}/>
<label for="input-payment-bank" class="form-check-label">{{ text_bank }}</label>
</div>
<div id="error-payment-method" class="invalid-feedback"></div>
</div>
</div>
<div class="row mb-3 required payment" id="payment-cheque">
<label for="input-cheque" class="col-sm-2 col-form-label">{{ entry_cheque }}</label>
<div class="col-sm-10">
<input type="text" name="cheque" value="{{ cheque }}" placeholder="{{ entry_cheque }}" id="input-cheque" class="form-control"/>
<div id="error-cheque" class="invalid-feedback"></div>
</div>
</div>
<div class="row mb-3 required payment" id="payment-paypal">
<label for="input-paypal" class="col-sm-2 col-form-label">{{ entry_paypal }}</label>
<div class="col-sm-10">
<input type="text" name="paypal" value="{{ paypal }}" placeholder="{{ entry_paypal }}" id="input-paypal" class="form-control"/>
<div id="error-paypal" class="invalid-feedback"></div>
</div>
</div>
<div id="payment-bank" class="payment">
<div class="row mb-3">
<label for="input-bank-name" class="col-sm-2 col-form-label">{{ entry_bank_name }}</label>
<div class="col-sm-10">
<input type="text" name="bank_name" value="{{ bank_name }}" placeholder="{{ entry_bank_name }}" id="input-bank-name" class="form-control"/>
</div>
</div>
<div class="row mb-3">
<label for="input-bank-branch-number" class="col-sm-2 col-form-label">{{ entry_bank_branch_number }}</label>
<div class="col-sm-10">
<input type="text" name="bank_branch_number" value="{{ bank_branch_number }}" placeholder="{{ entry_bank_branch_number }}" id="input-bank-branch-number" class="form-control"/>
</div>
</div>
<div class="row mb-3">
<label for="input-bank-swift-code" class="col-sm-2 col-form-label">{{ entry_bank_swift_code }}</label>
<div class="col-sm-10">
<input type="text" name="bank_swift_code" value="{{ bank_swift_code }}" placeholder="{{ entry_bank_swift_code }}" id="input-bank-swift-code" class="form-control"/>
</div>
</div>
<div class="row mb-3 required row">
<label for="input-bank-account-name" class="col-sm-2 col-form-label">{{ entry_bank_account_name }}</label>
<div class="col-sm-10">
<input type="text" name="bank_account_name" value="{{ bank_account_name }}" placeholder="{{ entry_bank_account_name }}" id="input-bank-account-name" class="form-control"/>
<div id="error-bank-account-name" class="invalid-feedback"></div>
</div>
</div>
<div class="row mb-3 required row">
<label for="input-bank-account-number" class="col-sm-2 col-form-label">{{ entry_bank_account_number }}</label>
<div class="col-sm-10">
<input type="text" name="bank_account_number" value="{{ bank_account_number }}" placeholder="{{ entry_bank_account_number }}" id="input-bank-account-number" class="form-control"/>
<div id="error-bank-account-number" class="invalid-feedback"></div>
</div>
</div>
</div>
{% for custom_field in custom_fields %}
{% if custom_field.location == 'affiliate' %}
{% if custom_field.type == 'select' %}
<div class="row mb-3{% if custom_field.required %} required{% endif %} custom-field">
<label for="input-custom-field-{{ custom_field.custom_field_id }}" class="col-sm-2 col-form-label">{{ custom_field.name }}</label>
<div class="col-sm-10">
<select name="custom_field[{{ custom_field.custom_field_id }}]" id="input-custom-field-{{ custom_field.custom_field_id }}" class="form-select">
<option value="">{{ text_select }}</option>
{% for custom_field_value in custom_field.custom_field_value %}
<option value="{{ custom_field_value.custom_field_value_id }}"{% if affiliate_custom_field[custom_field.custom_field_id] and custom_field_value.custom_field_value_id == affiliate_custom_field[custom_field.custom_field_id] %} selected{% endif %}>{{ custom_field_value.name }}</option>
{% endfor %}
</select>
<div id="error-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
</div>
{% endif %}
{% if custom_field.type == 'radio' %}
<div class="row mb-3{% if custom_field.required %} required{% endif %} custom-field">
<label class="col-sm-2 col-form-label">{{ custom_field.name }}</label>
<div class="col-sm-10">
<div id="input-custom-field-{{ custom_field.custom_field_id }}">
{% for custom_field_value in custom_field.custom_field_value %}
<div class="form-check">
<input type="radio" name="custom_field[{{ custom_field.custom_field_id }}]" value="{{ custom_field_value.custom_field_value_id }}" id="input-custom-value-{{ custom_field_value.custom_field_value_id }}" class="form-check-input"{% if affiliate_custom_field[custom_field.custom_field_id] and custom_field_value.custom_field_value_id == affiliate_custom_field[custom_field.custom_field_id] %} checked{% endif %}/> <label for="input-custom-value-{{ custom_field_value.custom_field_value_id }}" class="form-check-label">{{ custom_field_value.name }}</label>
</div>
{% endfor %}
</div>
<div id="error-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
</div>
{% endif %}
{% if custom_field.type == 'checkbox' %}
<div class="row mb-3{% if custom_field.required %} required{% endif %} custom-field">
<label class="col-sm-2 col-form-label">{{ custom_field.name }}</label>
<div class="col-sm-10">
<div id="input-custom-field-{{ custom_field.custom_field_id }}">
{% for custom_field_value in custom_field.custom_field_value %}
<div class="form-check">
<input type="checkbox" name="custom_field[{{ custom_field.custom_field_id }}]" value="{{ custom_field_value.custom_field_value_id }}" id="input-custom-value-{{ custom_field_value.custom_field_value_id }}" class="form-check-input"{% if affiliate_custom_field[custom_field.custom_field_id] and custom_field_value.custom_field_value_id in affiliate_custom_field[custom_field.custom_field_id] %} checked{% endif %}/> <label for="input-custom-value-{{ custom_field_value.custom_field_value_id }}" class="form-check-label">{{ custom_field_value.name }}</label>
</div>
{% endfor %}
</div>
<div id="error-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
</div>
{% endif %}
{% if custom_field.type == 'text' %}
<div class="row mb-3{% if custom_field.required %} required{% endif %} custom-field">
<label for="input-custom-field-{{ custom_field.custom_field_id }}" class="col-sm-2 col-form-label">{{ custom_field.name }}</label>
<div class="col-sm-10">
<input type="text" name="custom_field[{{ custom_field.custom_field_id }}]" value="{% if affiliate_custom_field[custom_field.custom_field_id] %}{{ affiliate_custom_field[custom_field.custom_field_id] }}{% else %}{{ custom_field.value }}{% endif %}" placeholder="{{ custom_field.name }}" id="input-custom-field-{{ custom_field.custom_field_id }}" class="form-control"/>
<div id="error-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
</div>
{% endif %}
{% if custom_field.type == 'textarea' %}
<div class="row mb-3{% if custom_field.required %} required{% endif %} custom-field">
<label for="input-custom-field-{{ custom_field.custom_field_id }}" class="col-sm-2 col-form-label">{{ custom_field.name }}</label>
<div class="col-sm-10">
<textarea name="custom_field[{{ custom_field.custom_field_id }}]" rows="5" placeholder="{{ custom_field.name }}" id="input-custom-field-{{ custom_field.custom_field_id }}" class="form-control">{% if affiliate_custom_field[custom_field.custom_field_id] %}{{ affiliate_custom_field[custom_field.custom_field_id] }}{% else %}{{ custom_field.value }}{% endif %}</textarea>
<div id="error-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
</div>
{% endif %}
{% if custom_field.type == 'file' %}
<div class="row mb-3{% if custom_field.required %} required{% endif %} custom-field">
<label class="col-sm-2 col-form-label">{{ custom_field.name }}</label>
<div class="col-sm-10">
<div>
<button type="button" data-oc-toggle="upload" data-oc-url="{{ upload }}" data-oc-size-max="{{ config_file_max_size }}" data-oc-size-error="{{ error_upload_size }}" data-oc-target="#input-custom-field-{{ custom_field.custom_field_id }}" class="btn btn-light"><i class="fa-solid fa-upload"></i> {{ button_upload }}</button>
<input type="hidden" name="custom_field[{{ custom_field.custom_field_id }}]" value="{% if affiliate_custom_field[custom_field.custom_field_id] %}{{ affiliate_custom_field[custom_field.custom_field_id] }}{% endif %}" id="input-custom-field-{{ custom_field.custom_field_id }}"/>
</div>
<div id="error-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
</div>
{% endif %}
{% if custom_field.type == 'date' %}
<div class="row mb-3{% if custom_field.required %} required{% endif %} custom-field">
<label for="input-custom-field-{{ custom_field.custom_field_id }}" class="col-sm-2 col-form-label">{{ custom_field.name }}</label>
<div class="col-sm-10">
<div class="input-group">
<input type="text" name="custom_field[{{ custom_field.custom_field_id }}]" value="{% if affiliate_custom_field[custom_field.custom_field_id] %}{{ affiliate_custom_field[custom_field.custom_field_id] }}{% else %}{{ custom_field.value }}{% endif %}" placeholder="{{ custom_field.name }}" id="input-custom-field-{{ custom_field.custom_field_id }}" class="form-control date"/>
<div class="input-group-text"><i class="fa-regular fa-calendar"></i></div>
</div>
<div id="error-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
</div>
{% endif %}
{% if custom_field.type == 'time' %}
<div class="row mb-3{% if custom_field.required %} required{% endif %} custom-field">
<label for="input-custom-field-{{ custom_field.custom_field_id }}" class="col-sm-2 col-form-label">{{ custom_field.name }}</label>
<div class="col-sm-10">
<div class="input-group">
<input type="text" name="custom_field[{{ custom_field.custom_field_id }}]" value="{% if affiliate_custom_field[custom_field.custom_field_id] %}{{ affiliate_custom_field[custom_field.custom_field_id] }}{% else %}{{ custom_field.value }}{% endif %}" placeholder="{{ custom_field.name }}" id="input-custom-field-{{ custom_field.custom_field_id }}" class="form-control time"/>
<div class="input-group-text"><i class="fa-regular fa-calendar"></i></div>
</div>
<div id="error-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
</div>
{% endif %}
{% if custom_field.type == 'datetime' %}
<div class="row mb-3{% if custom_field.required %} required{% endif %} custom-field">
<label for="input-custom-field-{{ custom_field.custom_field_id }}" class="col-sm-2 col-form-label">{{ custom_field.name }}</label>
<div class="col-sm-10">
<div class="input-group">
<input type="text" name="custom_field[{{ custom_field.custom_field_id }}]" value="{% if affiliate_custom_field[custom_field.custom_field_id] %}{{ affiliate_custom_field[custom_field.custom_field_id] }}{% else %}{{ custom_field.value }}{% endif %}" placeholder="{{ custom_field.name }}" id="input-custom-field-{{ custom_field.custom_field_id }}" class="form-control datetime"/>
<div class="input-group-text"><i class="fa-regular fa-calendar"></i></div>
</div>
<div id="error-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
</div>
{% endif %}
{% endif %}
{% endfor %}
</fieldset>
<div class="text-end">
{% if text_agree %}
<div class="form-check form-switch form-switch-lg form-check-reverse form-check-inline">
<label class="form-check-label">{{ text_agree }}</label> <input type="hidden" name="agree" value="0"/> <input type="checkbox" name="agree" value="1" id="input-agree" class="form-check-input"/>
</div>
{% endif %}
<button type="submit" class="btn btn-primary">{{ button_continue }}</button>
</div>
</form>
{{ content_bottom }}</div>
{{ column_right }}</div>
</div>
<script type="text/javascript"><!--
$('input[name=\'payment_method\']').on('change', function() {
$('.payment').hide();
$('#payment-' + this.value).show();
});
$('input[name=\'payment_method\']:checked').trigger('change');
//--></script>
{{ footer }}

View File

@ -0,0 +1,49 @@
{{ header }}
<div id="account-download" class="container">
<ul class="breadcrumb">
{% for breadcrumb in breadcrumbs %}
<li class="breadcrumb-item"><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li>
{% endfor %}
</ul>
<div class="row">{{ column_left }}
<div id="content" class="col">{{ content_top }}
<h1>{{ heading_title }}</h1>
{% if downloads %}
<div class="table-responsive">
<table class="table table-bordered table-hover">
<thead>
<tr>
<td class="text-end"><strong>{{ column_order_id }}</strong></td>
<td class="text-start"><strong>{{ column_name }}</strong></td>
<td class="text-start"><strong>{{ column_size }}</strong></td>
<td class="text-start"><strong>{{ column_date_added }}</strong></td>
<td></td>
</tr>
</thead>
<tbody>
{% for download in downloads %}
<tr>
<td class="text-end">{{ download.order_id }}</td>
<td class="text-start">{{ download.name }}</td>
<td class="text-start">{{ download.size }}</td>
<td class="text-start">{{ download.date_added }}</td>
<td><a href="{{ download.href }}" data-bs-toggle="tooltip" title="{{ button_download }}" class="btn btn-primary"><i class="fa-solid fa-cloud-arrow-down"></i></a></td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
<div class="row mb-3">
<div class="col-sm-6 text-start">{{ pagination }}</div>
<div class="col-sm-6 text-end">{{ results }}</div>
</div>
{% else %}
<p>{{ text_no_results }}</p>
{% endif %}
<div class="text-end">
<a href="{{ continue }}" class="btn btn-primary">{{ button_continue }}</a>
</div>
{{ content_bottom }}</div>
{{ column_right }}</div>
</div>
{{ footer }}

View File

@ -0,0 +1,181 @@
{{ header }}
<div id="account-edit" class="container">
<ul class="breadcrumb">
{% for breadcrumb in breadcrumbs %}
<li class="breadcrumb-item"><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li>
{% endfor %}
</ul>
<div class="row">{{ column_left }}
<div id="content" class="col">{{ content_top }}
<h1>{{ heading_title }}</h1>
<form id="form-customer" action="{{ save }}" method="post" data-oc-toggle="ajax">
<fieldset>
<legend>{{ text_your_details }}</legend>
<div class="row mb-3 required">
<label for="input-firstname" class="col-sm-2 col-form-label">{{ entry_firstname }} </label>
<div class="col-sm-10">
<input type="text" name="firstname" value="{{ firstname }}" placeholder="{{ entry_firstname }}" id="input-firstname" class="form-control"/>
<div id="error-firstname" class="invalid-feedback"></div>
</div>
</div>
<div class="row mb-3 required">
<label for="input-lastname" class="col-sm-2 col-form-label">{{ entry_lastname }}</label>
<div class="col-sm-10">
<input type="text" name="lastname" value="{{ lastname }}" placeholder="{{ entry_lastname }}" id="input-lastname" class="form-control"/>
<div id="error-lastname" class="invalid-feedback"></div>
</div>
</div>
<div class="row mb-3 required">
<label for="input-email" class="col-sm-2 col-form-label">{{ entry_email }}</label>
<div class="col-sm-10">
<input type="email" name="email" value="{{ email }}" placeholder="{{ entry_email }}" id="input-email" class="form-control"/>
<div id="error-email" class="invalid-feedback"></div>
</div>
</div>
{% if config_telephone_display %}
<div class="row mb-3{% if config_telephone_required %} required{% endif %}">
<label for="input-telephone" class="col-sm-2 col-form-label">{{ entry_telephone }}</label>
<div class="col-sm-10">
<input type="tel" name="telephone" value="{{ telephone }}" placeholder="{{ entry_telephone }}" id="input-telephone" class="form-control"/>
<div id="error-telephone" class="invalid-feedback"></div>
</div>
</div>
{% endif %}
{% for custom_field in custom_fields %}
{% if custom_field.type == 'select' %}
<div class="row mb-3{% if custom_field.required %} required{% endif %} custom-field">
<label for="input-custom-field-{{ custom_field.custom_field_id }}" class="col-sm-2 col-form-label">{{ custom_field.name }}</label>
<div class="col-sm-10">
<select name="custom_field[{{ custom_field.custom_field_id }}]" id="input-custom-field-{{ custom_field.custom_field_id }}" class="form-select">
<option value="">{{ text_select }}</option>
{% for custom_field_value in custom_field.custom_field_value %}
<option value="{{ custom_field_value.custom_field_value_id }}"{% if account_custom_field[custom_field.custom_field_id] and custom_field_value.custom_field_value_id == account_custom_field[custom_field.custom_field_id] %} selected{% endif %}>{{ custom_field_value.name }}</option>
{% endfor %}
</select>
<div id="error-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
</div>
{% endif %}
{% if custom_field.type == 'radio' %}
<div class="row mb-3{% if custom_field.required %} required{% endif %} custom-field">
<label class="col-sm-2 col-form-label">{{ custom_field.name }}</label>
<div class="col-sm-10">
<div id="input-custom-field-{{ custom_field.custom_field_id }}">
{% for custom_field_value in custom_field.custom_field_value %}
<div class="form-check">
<input type="radio" name="custom_field[{{ custom_field.custom_field_id }}]" value="{{ custom_field_value.custom_field_value_id }}" id="input-custom-value-{{ custom_field_value.custom_field_value_id }}" class="form-check-input"{% if account_custom_field[custom_field.custom_field_id] and custom_field_value.custom_field_value_id == account_custom_field[custom_field.custom_field_id] %} checked{% endif %}/> <label for="input-custom-value-{{ custom_field_value.custom_field_value_id }}" class="form-check-label">{{ custom_field_value.name }}</label>
</div>
{% endfor %}
</div>
<div id="error-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
</div>
{% endif %}
{% if custom_field.type == 'checkbox' %}
<div class="row mb-3{% if custom_field.required %} required{% endif %} custom-field">
<label class="col-sm-2 col-form-label">{{ custom_field.name }}</label>
<div class="col-sm-10">
<div id="input-custom-field-{{ custom_field.custom_field_id }}">
{% for custom_field_value in custom_field.custom_field_value %}
<div class="form-check">
<input type="checkbox" name="custom_field[{{ custom_field.custom_field_id }}][]" value="{{ custom_field_value.custom_field_value_id }}" id="input-custom-value-{{ custom_field_value.custom_field_value_id }}" class="form-check-input"{% if account_custom_field[custom_field.custom_field_id] and custom_field_value.custom_field_value_id in account_custom_field[custom_field.custom_field_id] %} checked{% endif %}/> <label for="input-custom-value-{{ custom_field_value.custom_field_value_id }}" class="form-check-label">{{ custom_field_value.name }}</label>
</div>
{% endfor %}
</div>
<div id="error-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
</div>
{% endif %}
{% if custom_field.type == 'text' %}
<div class="row mb-3{% if custom_field.required %} required{% endif %} custom-field">
<label for="input-custom-field-{{ custom_field.custom_field_id }}" class="col-sm-2 col-form-label">{{ custom_field.name }}</label>
<div class="col-sm-10">
<input type="text" name="custom_field[{{ custom_field.custom_field_id }}]" value="{% if account_custom_field[custom_field.custom_field_id] %}{{ account_custom_field[custom_field.custom_field_id] }}{% else %}{{ custom_field.value }}{% endif %}" placeholder="{{ custom_field.name }}" id="input-custom-field-{{ custom_field.custom_field_id }}" class="form-control"/>
<div id="error-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
</div>
{% endif %}
{% if custom_field.type == 'textarea' %}
<div class="row mb-3{% if custom_field.required %} required{% endif %} custom-field">
<label for="input-custom-field-{{ custom_field.custom_field_id }}" class="col-sm-2 col-form-label">{{ custom_field.name }}</label>
<div class="col-sm-10">
<textarea name="custom_field[{{ custom_field.custom_field_id }}]" rows="5" placeholder="{{ custom_field.name }}" id="input-custom-field-{{ custom_field.custom_field_id }}" class="form-control">{% if account_custom_field[custom_field.custom_field_id] %}{{ account_custom_field[custom_field.custom_field_id] }}{% else %}{{ custom_field.value }}{% endif %}</textarea>
<div id="error-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
</div>
{% endif %}
{% if custom_field.type == 'file' %}
<div class="row mb-3{% if custom_field.required %} required{% endif %} custom-field">
<label class="col-sm-2 col-form-label">{{ custom_field.name }}</label>
<div class="col-sm-10">
<div>
<button type="button" data-oc-toggle="upload" data-oc-url="{{ upload }}" data-oc-size-max="{{ config_file_max_size }}" data-oc-size-error="{{ error_upload_size }}" data-oc-target="#input-custom-field-{{ custom_field.custom_field_id }}" class="btn btn-light"><i class="fa-solid fa-upload"></i> {{ button_upload }}</button>
<input type="hidden" name="custom_field[{{ custom_field.custom_field_id }}]" value="{% if account_custom_field[custom_field.custom_field_id] %}{{ account_custom_field[custom_field.custom_field_id] }}{% endif %}" id="input-custom-field-{{ custom_field.custom_field_id }}"/>
</div>
<div id="error-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
</div>
{% endif %}
{% if custom_field.type == 'date' %}
<div class="row mb-3{% if custom_field.required %} required{% endif %} custom-field">
<label for="input-custom-field-{{ custom_field.custom_field_id }}" class="col-sm-2 col-form-label">{{ custom_field.name }}</label>
<div class="col-sm-10">
<div class="input-group">
<input type="text" name="custom_field[{{ custom_field.custom_field_id }}]" value="{% if account_custom_field[custom_field.custom_field_id] %}{{ account_custom_field[custom_field.custom_field_id] }}{% else %}{{ custom_field.value }}{% endif %}" placeholder="{{ custom_field.name }}" id="input-custom-field-{{ custom_field.custom_field_id }}" class="form-control date"/>
<div class="input-group-text"><i class="fa-regular fa-calendar"></i></div>
</div>
<div id="error-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
</div>
{% endif %}
{% if custom_field.type == 'time' %}
<div class="row mb-3{% if custom_field.required %} required{% endif %} custom-field">
<label for="input-custom-field-{{ custom_field.custom_field_id }}" class="col-sm-2 col-form-label">{{ custom_field.name }}</label>
<div class="col-sm-10">
<div class="input-group">
<input type="text" name="custom_field[{{ custom_field.custom_field_id }}]" value="{% if account_custom_field[custom_field.custom_field_id] %}{{ account_custom_field[custom_field.custom_field_id] }}{% else %}{{ custom_field.value }}{% endif %}" placeholder="{{ custom_field.name }}" id="input-custom-field-{{ custom_field.custom_field_id }}" class="form-control time"/>
<div class="input-group-text"><i class="fa-regular fa-calendar"></i></div>
</div>
<div id="error-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
</div>
{% endif %}
{% if custom_field.type == 'datetime' %}
<div class="row mb-3{% if custom_field.required %} required{% endif %} custom-field">
<label for="input-custom-field-{{ custom_field.custom_field_id }}" class="col-sm-2 col-form-label">{{ custom_field.name }}</label>
<div class="col-sm-10">
<div class="input-group">
<input type="text" name="custom_field[{{ custom_field.custom_field_id }}]" value="{% if account_custom_field[custom_field.custom_field_id] %}{{ account_custom_field[custom_field.custom_field_id] }}{% else %}{{ custom_field.value }}{% endif %}" placeholder="{{ custom_field.name }}" id="input-custom-field-{{ custom_field.custom_field_id }}" class="form-control datetime"/>
<div class="input-group-text"><i class="fa-regular fa-calendar"></i></div>
</div>
<div id="error-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
</div>
{% endif %}
{% endfor %}
</fieldset>
<div class="row">
<div class="col">
<a href="{{ back }}" class="btn btn-light">{{ button_back }}</a>
</div>
<div class="col text-end">
<button type="submit" class="btn btn-primary">{{ button_continue }}</button>
</div>
</div>
</form>
{{ content_bottom }}</div>
{{ column_right }}</div>
</div>
{{ footer }}

View File

@ -0,0 +1,35 @@
{{ header }}
<div id="account-forgotten" class="container">
<ul class="breadcrumb">
{% for breadcrumb in breadcrumbs %}
<li class="breadcrumb-item"><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li>
{% endfor %}
</ul>
<div class="row">{{ column_left }}
<div id="content" class="col">{{ content_top }}
<h1>{{ heading_title }}</h1>
<p>{{ text_email }}</p>
<form id="form-forgotten" action="{{ confirm }}" method="post" data-oc-toggle="ajax">
<fieldset>
<legend>{{ text_your_email }}</legend>
<div class="row mb-3 required">
<label for="input-email" class="col-sm-2 col-form-label">{{ entry_email }}</label>
<div class="col-sm-10">
<input type="text" name="email" value="" placeholder="{{ entry_email }}" id="input-email" class="form-control"/>
<div id="error-email" class="invalid-feedback"></div>
</div>
</div>
</fieldset>
<div class="row">
<div class="col">
<a href="{{ back }}" class="btn btn-light">{{ button_back }}</a>
</div>
<div class="col text-end">
<button type="submit" class="btn btn-primary">{{ button_continue }}</button>
</div>
</div>
</form>
{{ content_bottom }}</div>
{{ column_right }}</div>
</div>
{{ footer }}

View File

@ -0,0 +1,41 @@
{{ header }}
<div id="account-reset" class="container">
<ul class="breadcrumb">
{% for breadcrumb in breadcrumbs %}
<li class="breadcrumb-item"><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li>
{% endfor %}
</ul>
<div class="row">{{ column_left }}
<div id="content" class="col">{{ content_top }}
<h1>{{ heading_title }}</h1>
<form id="form-reset" action="{{ save }}" method="post" data-oc-toggle="ajax">
<fieldset>
<legend>{{ text_password }}</legend>
<div class="row mb-3">
<label for="input-password" class="col-sm-2 col-form-label">{{ entry_password }}</label>
<div class="col-sm-10">
<input type="password" name="password" value="" id="input-password" class="form-control"/>
<div id="error-password" class="invalid-feedback"></div>
</div>
</div>
<div class="row mb-3">
<label for="input-confirm" class="col-sm-2 col-form-label">{{ entry_confirm }}</label>
<div class="col-sm-10">
<input type="password" name="confirm" value="" id="input-confirm" class="form-control"/>
<div id="error-confirm" class="invalid-feedback"></div>
</div>
</div>
</fieldset>
<div class="row">
<div class="col">
<a href="{{ back }}" class="btn btn-light">{{ button_back }}</a>
</div>
<div class="col text-end">
<button type="submit" class="btn btn-primary">{{ button_continue }}</button>
</div>
</div>
</form>
{{ content_bottom }}</div>
{{ column_right }}</div>
</div>
{{ footer }}

View File

@ -0,0 +1,54 @@
{{ header }}
<div id="account-login" class="container">
<ul class="breadcrumb">
{% for breadcrumb in breadcrumbs %}
<li class="breadcrumb-item"><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li>
{% endfor %}
</ul>
{% if success %}
<div class="alert alert-success alert-dismissible"><i class="fa-solid fa-circle-check"></i> {{ success }} <button type="button" class="btn-close" data-bs-dismiss="alert"></button></div>
{% endif %}
{% if error_warning %}
<div class="alert alert-danger alert-dismissible"><i class="fa-solid fa-circle-exclamation"></i> {{ error_warning }} <button type="button" class="btn-close" data-bs-dismiss="alert"></button></div>
{% endif %}
<div class="row">{{ column_left }}
<div id="content" class="col">{{ content_top }}
<div class="row">
<div class="col mb-3">
<div class="border rounded p-3 d-flex flex-column h-100">
<h2>{{ text_new_customer }}</h2>
<p><strong>{{ text_register }}</strong></p>
<p>{{ text_register_account }}</p>
<div class="text-end">
<a href="{{ register }}" class="btn btn-primary">{{ button_continue }}</a>
</div>
</div>
</div>
<div class="col mb-3">
<div class="border rounded p-3 d-flex flex-column h-100">
<form id="form-login" action="{{ login }}" method="post" data-oc-toggle="ajax">
<h2>{{ text_returning_customer }}</h2>
<p><strong>{{ text_i_am_returning_customer }}</strong></p>
<div class="mb-3">
<label for="input-email" class="col-form-label">{{ entry_email }}</label>
<input type="text" name="email" value="{{ email }}" placeholder="{{ entry_email }}" id="input-email" class="form-control"/>
</div>
<div class="mb-3">
<label for="input-password" class="col-form-label">{{ entry_password }}</label>
<input type="password" name="password" value="{{ password }}" placeholder="{{ entry_password }}" id="input-password" class="form-control mb-1"/>
<a href="{{ forgotten }}">{{ text_forgotten }}</a>
</div>
<div class="text-end">
<button type="submit" class="btn btn-primary">{{ button_login }}</button>
</div>
{% if redirect %}
<input type="hidden" name="redirect" value="{{ redirect }}"/>
{% endif %}
</form>
</div>
</div>
</div>
{{ content_bottom }}</div>
{{ column_right }}</div>
</div>
{{ footer }}

View File

@ -0,0 +1,36 @@
{{ header }}
<div id="account-newsletter" class="container">
<ul class="breadcrumb">
{% for breadcrumb in breadcrumbs %}
<li class="breadcrumb-item"><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li>
{% endfor %}
</ul>
<div class="row">{{ column_left }}
<div id="content" class="col">{{ content_top }}
<h1>{{ heading_title }}</h1>
<form id="form-newsletter" action="{{ save }}" method="post" data-oc-toggle="ajax">
<fieldset>
<div class="row mb-3 mb-0">
<label class="col-md-3 col-form-label">{{ entry_newsletter }}</label>
<div class="col-md-9">
<div class="form-check form-switch form-switch-lg">
<input type="hidden" name="newsletter" value="0"/>
<input type="checkbox" name="newsletter" value="1" id="input-newsletter" class="form-check-input"{% if newsletter %} checked{% endif %}/>
</div>
</div>
</div>
</fieldset>
<div class="row">
<div class="col">
<a href="{{ back }}" class="btn btn-light">{{ button_back }}</a>
</div>
<div class="col text-end">
<button type="submit" class="btn btn-primary">{{ button_continue }}</button>
</div>
</div>
</form>
{{ content_bottom }}
</div>
{{ column_right }}</div>
</div>
{{ footer }}

View File

@ -0,0 +1,30 @@
<div class="table-responsive">
<table class="table table-bordered">
<thead>
<tr>
<td class="text-start"><strong>{{ column_date_added }}</strong></td>
<td class="text-start"><strong>{{ column_comment }}</strong></td>
<td class="text-start"><strong>{{ column_status }}</strong></td>
</tr>
</thead>
<tbody>
{% if histories %}
{% for history in histories %}
<tr>
<td class="text-start">{{ history.date_added }}</td>
<td class="text-start">{{ history.comment }}</td>
<td class="text-start">{{ history.status }}</td>
</tr>
{% endfor %}
{% else %}
<tr>
<td class="text-center" colspan="3">{{ text_no_results }}</td>
</tr>
{% endif %}
</tbody>
</table>
</div>
<div class="row">
<div class="col-sm-6 text-start">{{ pagination }}</div>
<div class="col-sm-6 text-end">{{ results }}</div>
</div>

View File

@ -0,0 +1,166 @@
{{ header }}
<div id="account-order" class="container">
<ul class="breadcrumb">
{% for breadcrumb in breadcrumbs %}
<li class="breadcrumb-item"><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li>
{% endfor %}
</ul>
<div class="row">{{ column_left }}
<div id="content" class="col">{{ content_top }}
<h1>{{ heading_title }}</h1>
<div class="row row-cols-md-2">
<div class="col">
<table class="table table-bordered table-hover">
{% if invoice_no %}
<tr>
<td><strong>{{ text_invoice_no }}</strong></td>
<td>{{ invoice_no }}</td>
</tr>
{% endif %}
<tr>
<td><strong>{{ text_order_id }}</strong></td>
<td>#{{ order_id }}</td>
</tr>
<tr>
<td><strong>{{ text_order_status }}</strong></td>
<td>{{ order_status }}</td>
</tr>
</table>
</div>
<div class="col">
<table class="table table-bordered table-hover">
{% if shipping_method %}
<tr>
<td><strong>{{ text_shipping_method }}</strong></td>
<td>{{ shipping_method }}</td>
</tr>
{% endif %}
<tr>
<td><strong>{{ text_payment_method }}</strong></td>
<td>{{ payment_method }}</td>
</tr>
<tr>
<td><strong>{{ text_date_added }}</strong></td>
<td>{{ date_added }}</td>
</tr>
</table>
</div>
</div>
{% if payment_address or shipping_address %}
<table class="table table-bordered table-hover">
<thead>
<tr>
{% if payment_address %}
<td class="text-start align-top"><strong>{{ text_payment_address }}</strong></td>
{% endif %}
{% if shipping_address %}
<td class="text-start align-top"><strong>{{ text_shipping_address }}</strong></td>
{% endif %}
</tr>
</thead>
<tbody>
<tr>
{% if payment_address %}
<td class="text-start align-top">{{ payment_address }}</td>
{% endif %}
{% if shipping_address %}
<td class="text-start align-top">{{ shipping_address }}</td>
{% endif %}</tr>
</tbody>
</table>
{% endif %}
<div class="table-responsive">
<table class="table table-bordered table-hover">
<thead>
<tr>
<td class="text-start"><strong>{{ column_name }}</strong></td>
<td class="text-start"><strong>{{ column_model }}</strong></td>
<td class="text-end"><strong>{{ column_quantity }}</strong></td>
<td class="text-end"><strong>{{ column_price }}</strong></td>
<td class="text-end"><strong>{{ column_total }}</strong></td>
{% if products %}
<td class="text-end"><strong>{{ column_action }}</strong></td>
{% endif %}
</tr>
</thead>
<tbody>
{% for product in products %}
<tr>
<td class="text-start"><a href="{{ product.href }}">{{ product.name }}</a>
{% for option in product.option %}
<br/>
<small> - {{ option.name }}: {{ option.value }}</small>
{% endfor %}
{% if product.reward %}
<br/>
<small> - {{ text_points }}: {{ product.reward }}</small>
{% endif %}
{% if product.subscription %}
<br/>
<small> - {{ text_subscription }}: <a href="{{ product.subscription }}" target="_blank">{{ product.subscription_description }}</a></small>
{% endif %}
</td>
<td class="text-start">{{ product.model }}</td>
<td class="text-end">{{ product.quantity }}</td>
<td class="text-end">{{ product.price }}</td>
<td class="text-end">{{ product.total }}</td>
<td class="text-end text-nowrap">{% if product.reorder %}<a href="{{ product.reorder }}" data-bs-toggle="tooltip" title="{{ button_reorder }}" class="btn btn-primary"><i class="fa-solid fa-cart-shopping"></i></a>{% endif %}
<a href="{{ product.return }}" data-bs-toggle="tooltip" title="{{ button_return }}" class="btn btn-danger"><i class="fa-solid fa-reply"></i></a></td>
</tr>
{% endfor %}
{% for voucher in vouchers %}
<tr>
<td class="text-start">{{ voucher.description }}</td>
<td class="text-start"></td>
<td class="text-end">1</td>
<td class="text-end">{{ voucher.amount }}</td>
<td class="text-end">{{ voucher.amount }}</td>
{% if products %}
<td></td>
{% endif %}
</tr>
{% endfor %}
</tbody>
<tfoot>
{% for total in totals %}
<tr>
<td colspan="3"></td>
<td class="text-end"><b>{{ total.title }}</b></td>
<td class="text-end">{{ total.text }}</td>
{% if products %}
<td></td>
{% endif %}
</tr>
{% endfor %}
</tfoot>
</table>
</div>
{% if comment %}
<table class="table table-bordered table-hover">
<thead>
<tr>
<td class="text-start"><strong>{{ text_comment }}</strong></td>
</tr>
</thead>
<tbody>
<tr>
<td class="text-start">{{ comment }}</td>
</tr>
</tbody>
</table>
{% endif %}
<h2>{{ text_history }}</h2>
<div id="history">{{ history }}</div>
<div class="text-end mt-3"><a href="{{ continue }}" class="btn btn-primary">{{ button_continue }}</a></div>
{{ content_bottom }}</div>
{{ column_right }}</div>
</div>
<script type="text/javascript"><!--
$('#history').on('click', '.pagination a', function(e) {
e.preventDefault();
$('#history').load(this.href);
});
//--></script>
{{ footer }}

View File

@ -0,0 +1,51 @@
{{ header }}
<div id="account-order" class="container">
<ul class="breadcrumb">
{% for breadcrumb in breadcrumbs %}
<li class="breadcrumb-item"><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li>
{% endfor %}
</ul>
<div class="row">{{ column_left }}
<div id="content" class="col">{{ content_top }}
<h1>{{ heading_title }}</h1>
{% if orders %}
<div class="table-responsive">
<table class="table table-bordered table-hover">
<thead>
<tr>
<td class="text-end">{{ column_order_id }}</td>
<td class="text-start">{{ column_customer }}</td>
<td class="text-end">{{ column_product }}</td>
<td class="text-start">{{ column_status }}</td>
<td class="text-end">{{ column_total }}</td>
<td class="text-start">{{ column_date_added }}</td>
<td></td>
</tr>
</thead>
<tbody>
{% for order in orders %}
<tr>
<td class="text-end">#{{ order.order_id }}</td>
<td class="text-start">{{ order.name }}</td>
<td class="text-end">{{ order.products }}</td>
<td class="text-start">{{ order.status }}</td>
<td class="text-end">{{ order.total }}</td>
<td class="text-start">{{ order.date_added }}</td>
<td class="text-end"><a href="{{ order.view }}" data-bs-toggle="tooltip" title="{{ button_view }}" class="btn btn-info"><i class="fa-solid fa-eye"></i></a></td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
<div class="row mb-3">
<div class="col-sm-6 text-start">{{ pagination }}</div>
<div class="col-sm-6 text-end">{{ results }}</div>
</div>
{% else %}
<p>{{ text_no_results }}</p>
{% endif %}
<div class="text-end"><a href="{{ continue }}" class="btn btn-primary">{{ button_continue }}</a></div>
{{ content_bottom }}</div>
{{ column_right }}</div>
</div>
{{ footer }}

View File

@ -0,0 +1,41 @@
{{ header }}
<div id="account-password" class="container">
<ul class="breadcrumb">
{% for breadcrumb in breadcrumbs %}
<li class="breadcrumb-item"><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li>
{% endfor %}
</ul>
<div class="row">{{ column_left }}
<div id="content" class="col">{{ content_top }}
<h1>{{ heading_title }}</h1>
<form id="form-password" action="{{ save }}" method="post" data-oc-toggle="ajax">
<fieldset>
<legend>{{ text_password }}</legend>
<div class="row mb-3 required">
<label for="input-password" class="col-md-3 col-form-label">{{ entry_password }}</label>
<div class="col-md-9">
<input type="password" name="password" value="{{ password }}" placeholder="{{ entry_password }}" id="input-password" class="form-control" autocomplete="new-password"/>
<div id="error-password" class="invalid-feedback"></div>
</div>
</div>
<div class="row mb-3 required">
<label for="input-confirm" class="col-md-3 col-form-label">{{ entry_confirm }}</label>
<div class="col-md-9">
<input type="password" name="confirm" value="{{ confirm }}" placeholder="{{ entry_confirm }}" id="input-confirm" class="form-control"/>
<div id="error-confirm" class="invalid-feedback"></div>
</div>
</div>
</fieldset>
<div class="row">
<div class="col">
<a href="{{ back }}" class="btn btn-light">{{ button_back }}</a>
</div>
<div class="col text-end">
<button type="submit" class="btn btn-primary">{{ button_continue }}</button>
</div>
</div>
</form>
{{ content_bottom }}</div>
{{ column_right }}</div>
</div>
{{ footer }}

View File

@ -0,0 +1,50 @@
{{ header }}
<div id="account-payment-method" class="container">
<ul class="breadcrumb">
{% for breadcrumb in breadcrumbs %}
<li class="breadcrumb-item"><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li>
{% endfor %}
</ul>
<div class="row">{{ column_left }}
<div id="content" class="col">{{ content_top }}
<h1>{{ heading_title }}</h1>
<div id="payment-method">{{ list }}</div>
<div class="text-end"><a href="{{ continue }}" class="btn btn-primary">{{ button_continue }}</a></div>
{{ content_bottom }}</div>
{{ column_right }}</div>
</div>
<script type="text/javascript"><!--
$('#payment-method').on('click', '.btn-danger', function (e) {
e.preventDefault();
var element = this;
$.ajax({
url: $(element).attr('href'),
dataType: 'json',
beforeSend: function () {
$(element).prop('disabled', true);
},
complete: function () {
$(element).prop('disabled', false);
},
success: function (json) {
$('.alert-dismissible').remove();
if (json['error']) {
$('#alert').prepend('<div class="alert alert-danger alert-dismissible"><i class="fa-solid fa-circle-exclamation"></i> ' + json['error'] + ' <button type="button" class="btn-close" data-bs-dismiss="alert"></button></div>');
}
if (json['success']) {
$('#alert').prepend('<div class="alert alert-success alert-dismissible"><i class="fa-solid fa-circle-check"></i> ' + json['success'] + ' <button type="button" class="btn-close" data-bs-dismiss="alert"></button></div>');
$('#payment-method').load('index.php?route=account/payment_method.list&customer_token={{ customer_token }}');
}
},
error: function (xhr, ajaxOptions, thrownError) {
console.log(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
}
});
});
//--></script>
{{ footer }}

View File

@ -0,0 +1,29 @@
{% if payment_methods %}
<div class="table-responsive">
<table class="table table-bordered table-hover">
<thead>
<tr>
<th class="text-start">{{ column_payment_method }}</th>
<th></th>
<th class="text-start">{{ column_type }}</th>
<th class="text-start">{{ column_date_expire }}</th>
<th class="text-end">{{ column_action }}</th>
</tr>
</thead>
<tbody>
<tbody>
{% for payment_method in payment_methods %}
<tr>
<td class="text-start">{{ payment_method.name }}</td>
<td class="text-start">{{ payment_method.image }}</td>
<td class="text-start">{{ payment_method.type }}</td>
<td class="text-start">{{ payment_method.date_expire }}</td>
<td class="text-end"><a href="{{ payment_method.delete }}" class="btn btn-danger">{{ button_delete }}</a></td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% else %}
<p>{{ text_no_results }}</p>
{% endif %}

View File

@ -0,0 +1,248 @@
{{ header }}
<div id="account-register" class="container">
<ul class="breadcrumb">
{% for breadcrumb in breadcrumbs %}
<li class="breadcrumb-item"><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li>
{% endfor %}
</ul>
<div class="row">
{{ column_left }}
<div id="content" class="col">{{ content_top }}
<h1>{{ heading_title }}</h1>
<p>{{ text_account_already }}</p>
<form id="form-register" action="{{ register }}" method="post" data-oc-toggle="ajax">
<fieldset id="account">
<legend>{{ text_your_details }}</legend>
{% if customer_groups|length > 1 %}
<div class="row mb-3 required">
<label class="col-sm-2 col-form-label">{{ entry_customer_group }}</label>
<div class="col-sm-10">
<select name="customer_group_id" id="input-customer-group" class="form-select">
{% for customer_group in customer_groups %}
<option value="{{ customer_group.customer_group_id }}"{% if customer_group.customer_group_id == customer_group_id %} selected{% endif %}>{{ customer_group.name }}</option>
{% endfor %}
</select>
</div>
</div>
{% endif %}
<div class="row mb-3 required">
<label for="input-firstname" class="col-sm-2 col-form-label">{{ entry_firstname }}</label>
<div class="col-sm-10">
<input type="text" name="firstname" value="" placeholder="{{ entry_firstname }}" id="input-firstname" class="form-control"/>
<div id="error-firstname" class="invalid-feedback"></div>
</div>
</div>
<div class="row mb-3 required">
<label for="input-lastname" class="col-sm-2 col-form-label">{{ entry_lastname }}</label>
<div class="col-sm-10">
<input type="text" name="lastname" value="" placeholder="{{ entry_lastname }}" id="input-lastname" class="form-control"/>
<div id="error-lastname" class="invalid-feedback"></div>
</div>
</div>
<div class="row mb-3 required">
<label for="input-email" class="col-sm-2 col-form-label">{{ entry_email }}</label>
<div class="col-sm-10">
<input type="email" name="email" value="" placeholder="{{ entry_email }}" id="input-email" class="form-control"/>
<div id="error-email" class="invalid-feedback"></div>
</div>
</div>
{% if config_telephone_display %}
<div class="row mb-3{% if config_telephone_required %} required{% endif %}">
<label for="input-telephone" class="col-sm-2 col-form-label">{{ entry_telephone }}</label>
<div class="col-sm-10">
<input type="tel" name="telephone" value="" placeholder="{{ entry_telephone }}" id="input-telephone" class="form-control"/>
<div id="error-telephone" class="invalid-feedback"></div>
</div>
</div>
{% endif %}
{% for custom_field in custom_fields %}
{% if custom_field.type == 'select' %}
<div class="row mb-3 custom-field custom-field-{{ custom_field.custom_field_id }}">
<label for="input-custom-field-{{ custom_field.custom_field_id }}" class="col-sm-2 col-form-label">{{ custom_field.name }}</label>
<div class="col-sm-10">
<select name="custom_field[{{ custom_field.custom_field_id }}]" id="input-custom-field-{{ custom_field.custom_field_id }}" class="form-select">
<option value="">{{ text_select }}</option>
{% for custom_field_value in custom_field.custom_field_value %}
<option value="{{ custom_field_value.custom_field_value_id }}">{{ custom_field_value.name }}</option>
{% endfor %}
</select>
<div id="error-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
</div>
{% endif %}
{% if custom_field.type == 'radio' %}
<div class="row mb-3 custom-field custom-field-{{ custom_field.custom_field_id }}">
<label class="col-sm-2 col-form-label">{{ custom_field.name }}</label>
<div class="col-sm-10">
<div id="input-custom-field-{{ custom_field.custom_field_id }}">
{% for custom_field_value in custom_field.custom_field_value %}
<div class="form-check">
<input type="radio" name="custom_field[{{ custom_field.custom_field_id }}]" value="{{ custom_field_value.custom_field_value_id }}" id="input-custom-value-{{ custom_field_value.custom_field_value_id }}" class="form-check-input"/> <label for="input-custom-value-{{ custom_field_value.custom_field_value_id }}" class="form-check-label">{{ custom_field_value.name }}</label>
</div>
{% endfor %}
</div>
<div id="error-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
</div>
{% endif %}
{% if custom_field.type == 'checkbox' %}
<div class="row mb-3 custom-field custom-field-{{ custom_field.custom_field_id }}">
<label class="col-sm-2 col-form-label">{{ custom_field.name }}</label>
<div class="col-sm-10">
<div id="input-custom-field-{{ custom_field.custom_field_id }}">
{% for custom_field_value in custom_field.custom_field_value %}
<div class="form-check">
<input type="checkbox" name="custom_field[{{ custom_field.custom_field_id }}][]" value="{{ custom_field_value.custom_field_value_id }}" id="input-custom-value-{{ custom_field_value.custom_field_value_id }}" class="form-check-input"/> <label for="input-custom-value-{{ custom_field_value.custom_field_value_id }}" class="form-check-label">{{ custom_field_value.name }}</label>
</div>
{% endfor %}
</div>
<div id="error-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
</div>
{% endif %}
{% if custom_field.type == 'text' %}
<div class="row mb-3 custom-field custom-field-{{ custom_field.custom_field_id }}">
<label for="input-custom-field-{{ custom_field.custom_field_id }}" class="col-sm-2 col-form-label">{{ custom_field.name }}</label>
<div class="col-sm-10">
<input type="text" name="custom_field[{{ custom_field.custom_field_id }}]" value="{{ custom_field.value }}" placeholder="{{ custom_field.name }}" id="input-custom-field-{{ custom_field.custom_field_id }}" class="form-control"/>
<div id="error-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
</div>
{% endif %}
{% if custom_field.type == 'textarea' %}
<div class="row mb-3 custom-field custom-field-{{ custom_field.custom_field_id }}">
<label for="input-custom-field-{{ custom_field.custom_field_id }}" class="col-sm-2 col-form-label">{{ custom_field.name }}</label>
<div class="col-sm-10">
<textarea name="custom_field[{{ custom_field.custom_field_id }}]" rows="5" placeholder="{{ custom_field.name }}" id="input-custom-field-{{ custom_field.custom_field_id }}" class="form-control">{{ custom_field.value }}</textarea>
<div id="error-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
</div>
{% endif %}
{% if custom_field.type == 'file' %}
<div class="row mb-3 custom-field custom-field-{{ custom_field.custom_field_id }}">
<label class="col-sm-2 col-form-label">{{ custom_field.name }}</label>
<div class="col-sm-10">
<div>
<button type="button" data-oc-toggle="upload" data-oc-url="{{ upload }}" data-oc-size-max="{{ config_file_max_size }}" data-oc-size-error="{{ error_upload_size }}" data-oc-target="#input-custom-field-{{ custom_field.custom_field_id }}" class="btn btn-light"><i class="fa-solid fa-upload"></i> {{ button_upload }}</button>
<input type="hidden" name="custom_field[{{ custom_field.custom_field_id }}]" value="" id="input-custom-field-{{ custom_field.custom_field_id }}"/>
</div>
<div id="error-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
</div>
{% endif %}
{% if custom_field.type == 'date' %}
<div class="row mb-3 custom-field custom-field-{{ custom_field.custom_field_id }}">
<label for="input-custom-field-{{ custom_field.custom_field_id }}" class="col-sm-2 col-form-label">{{ custom_field.name }}</label>
<div class="col-sm-10">
<div class="input-group">
<input type="text" name="custom_field[{{ custom_field.custom_field_id }}]" value="{{ custom_field.value }}" placeholder="{{ custom_field.name }}" id="input-custom-field-{{ custom_field.custom_field_id }}" class="form-control date"/>
<div class="input-group-text"><i class="fa-regular fa-calendar"></i></div>
</div>
<div id="error-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
</div>
{% endif %}
{% if custom_field.type == 'time' %}
<div class="row mb-3 custom-field custom-field-{{ custom_field.custom_field_id }}">
<label for="input-custom-field-{{ custom_field.custom_field_id }}" class="col-sm-2 col-form-label">{{ custom_field.name }}</label>
<div class="col-sm-10">
<div class="input-group">
<input type="text" name="custom_field[{{ custom_field.custom_field_id }}]" value="{{ custom_field.value }}" placeholder="{{ custom_field.name }}" id="input-custom-field-{{ custom_field.custom_field_id }}" class="form-control time"/>
<div class="input-group-text"><i class="fa-regular fa-calendar"></i></div>
</div>
<div id="error-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
</div>
{% endif %}
{% if custom_field.type == 'datetime' %}
<div class="row mb-3 custom-field custom-field-{{ custom_field.custom_field_id }}">
<label for="input-custom-field-{{ custom_field.custom_field_id }}" class="col-sm-2 col-form-label">{{ custom_field.name }}</label>
<div class="col-sm-10">
<div class="input-group">
<input type="text" name="custom_field[{{ custom_field.custom_field_id }}]" value="{{ custom_field.value }}" placeholder="{{ custom_field.name }}" id="input-custom-field-{{ custom_field.custom_field_id }}" class="form-control datetime"/>
<div class="input-group-text"><i class="fa-regular fa-calendar"></i></div>
</div>
<div id="error-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
</div>
{% endif %}
{% endfor %}
</fieldset>
<fieldset>
<legend>{{ text_your_password }}</legend>
<div class="row mb-3 required">
<label for="input-password" class="col-sm-2 col-form-label">{{ entry_password }}</label>
<div class="col-sm-10">
<input type="password" name="password" value="" placeholder="{{ entry_password }}" id="input-password" class="form-control"/>
<div id="error-password" class="invalid-feedback"></div>
</div>
</div>
</fieldset>
<fieldset>
<legend>{{ text_newsletter }}</legend>
<div class="row mb-3">
<label class="col-sm-2 col-form-label">{{ entry_newsletter }}</label>
<div class="col-sm-10">
<div class="form-check form-switch form-switch-lg">
<input type="hidden" name="newsletter" value="0"/> <input type="checkbox" name="newsletter" value="1" id="input-newsletter" class="form-check-input"/>
</div>
</div>
</div>
</fieldset>
{{ captcha }}
<div class="text-end">
{% if text_agree %}
<div class="form-check form-switch form-switch-lg form-check-reverse form-check-inline">
<label class="form-check-label">{{ text_agree }}</label> <input type="checkbox" name="agree" value="1" class="form-check-input"/>
</div>
{% endif %}
<button type="submit" class="btn btn-primary">{{ button_continue }}</button>
</div>
</form>
{{ content_bottom }}
</div>
{{ column_right }}
</div>
</div>
<script type="text/javascript"><!--
$('#input-customer-group').on('change', function() {
$.ajax({
url: 'index.php?route=account/custom_field&customer_group_id=' + this.value + '&language={{ language }}',
dataType: 'json',
success: function(json) {
$('.custom-field').hide();
$('.custom-field').removeClass('required');
for (i = 0; i < json.length; i++) {
custom_field = json[i];
$('.custom-field-' + custom_field['custom_field_id']).show();
if (custom_field['required']) {
$('.custom-field-' + custom_field['custom_field_id']).addClass('required');
}
}
},
error: function(xhr, ajaxOptions, thrownError) {
console.log(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
}
});
});
$('#input-customer-group').trigger('change');
//--></script>
{{ footer }}

View File

@ -0,0 +1,133 @@
{{ header }}
<div id="account-return" class="container">
<ul class="breadcrumb">
{% for breadcrumb in breadcrumbs %}
<li class="breadcrumb-item"><a href="{{ breadcrumb.href }}"> {{ breadcrumb.text }}</a></li>
{% endfor %}
</ul>
<div class="row">{{ column_left }}
<div id="content" class="col">{{ content_top }}
<h1>{{ heading_title }}</h1>
<p>{{ text_description }}</p>
<form id="form-return" action="{{ save }}" method="post" data-oc-toggle="ajax">
<fieldset>
<legend>{{ text_order }}</legend>
<div class="row mb-3 required">
<label for="input-firstname" class="col-sm-2 col-form-label">{{ entry_firstname }}</label>
<div class="col-sm-10">
<input type="text" name="firstname" value="{{ firstname }}" placeholder="{{ entry_firstname }}" id="input-firstname" class="form-control"/>
<div id="error-firstname" class="invalid-feedback"></div>
</div>
</div>
<div class="row mb-3 required">
<label for="input-lastname" class="col-sm-2 col-form-label">{{ entry_lastname }}</label>
<div class="col-sm-10">
<input type="text" name="lastname" value="{{ lastname }}" placeholder="{{ entry_lastname }}" id="input-lastname" class="form-control"/>
<div id="error-lastname" class="invalid-feedback"></div>
</div>
</div>
<div class="row mb-3 required">
<label for="input-email" class="col-sm-2 col-form-label">{{ entry_email }}</label>
<div class="col-sm-10">
<input type="text" name="email" value="{{ email }}" placeholder="{{ entry_email }}" id="input-email" class="form-control"/>
<div id="error-email" class="invalid-feedback"></div>
</div>
</div>
<div class="row mb-3 required">
<label for="input-telephone" class="col-sm-2 col-form-label">{{ entry_telephone }}</label>
<div class="col-sm-10">
<input type="text" name="telephone" value="{{ telephone }}" placeholder="{{ entry_telephone }}" id="input-telephone" class="form-control"/>
<div id="error-telephone" class="invalid-feedback"></div>
</div>
</div>
<div class="row mb-3 required">
<label for="input-order-id" class="col-sm-2 col-form-label">{{ entry_order_id }}</label>
<div class="col-sm-10">
<input type="text" name="order_id" value="{{ order_id }}" placeholder="{{ entry_order_id }}" id="input-order-id" class="form-control"/>
<div id="error-order-id" class="invalid-feedback"></div>
</div>
</div>
<div class="row mb-3">
<label for="input-date-ordered" class="col-sm-2 col-form-label">{{ entry_date_ordered }}</label>
<div class="col-sm-10 col-md-4">
<div class="input-group">
<input type="text" name="date_ordered" value="{{ date_ordered }}" placeholder="{{ entry_date_ordered }}" id="input-date-ordered" class="form-control date"/>
<div class="input-group-text"><i class="fa-regular fa-calendar"></i></div>
</div>
</div>
</div>
</fieldset>
<fieldset>
<legend>{{ text_product }}</legend>
<div class="row mb-3 required">
<label for="input-product" class="col-sm-2 col-form-label">{{ entry_product }}</label>
<div class="col-sm-10">
<input type="text" name="product" value="{{ product }}" placeholder="{{ entry_product }}" id="input-product" class="form-control"/> <input type="hidden" name="product_id" value="{{ product_id }}"/>
<div id="error-product" class="invalid-feedback"></div>
</div>
</div>
<div class="row mb-3 required">
<label for="input-model" class="col-sm-2 col-form-label">{{ entry_model }}</label>
<div class="col-sm-10">
<input type="text" name="model" value="{{ model }}" placeholder="{{ entry_model }}" id="input-model" class="form-control"/>
<div id="error-model" class="invalid-feedback"></div>
</div>
</div>
<div class="row mb-3">
<label for="input-quantity" class="col-sm-2 col-form-label">{{ entry_quantity }}</label>
<div class="col-sm-10">
<input type="text" name="quantity" value="1" placeholder="{{ entry_quantity }}" id="input-quantity" class="form-control"/>
</div>
</div>
<div class="row mb-3 required">
<label class="col-sm-2 col-form-label">{{ entry_reason }}</label>
<div class="col-sm-10">
<div id="input-reason">
{% for return_reason in return_reasons %}
<div class="form-check">
<input type="radio" name="return_reason_id" value="{{ return_reason.return_reason_id }}" id="input-return-reason-{{ return_reason.return_reason_id }}" class="form-check-input"/> <label for="input-return-reason-{{ return_reason.return_reason_id }}" class="form-check-label">{{ return_reason.name }}</label>
</div>
{% endfor %}
</div>
<div id="error-reason" class="invalid-feedback"></div>
</div>
</div>
<div class="row mb-3 required">
<label class="col-sm-2 col-form-label">{{ entry_opened }}</label>
<div class="col-sm-10">
<div class="form-check form-check-inline">
<input type="radio" name="opened" value="1" id="input-opened-yes" class="form-check-input" checked/>
<label for="input-opened-yes" class="form-check-label">{{ text_yes }}</label>
</div>
<div class="form-check form-check-inline">
<input type="radio" name="opened" value="0" id="input-opened-no" class="form-check-input"/>
<label for="input-opened-no" class="form-check-label">{{ text_no }}</label>
</div>
</div>
</div>
<div class="row mb-3">
<label for="input-comment" class="col-sm-2 col-form-label">{{ entry_fault_detail }}</label>
<div class="col-sm-10">
<textarea name="comment" rows="5" placeholder="{{ entry_fault_detail }}" id="input-comment" class="form-control"></textarea>
</div>
</div>
{{ captcha }}
</fieldset>
<div class="row">
<div class="col-3"><a href="{{ back }}" class="btn btn-light">{{ button_back }}</a></div>
<div class="col text-end">
{% if text_agree %}
<div class="form-check form-switch form-switch-lg form-check-reverse form-check-inline">
<label class="form-check-label">{{ text_agree }}</label>
<input type="hidden" name="agree" value="0"/>
<input type="checkbox" name="agree" value="1" id="input-agree" class="form-check-input"/>
</div>
{% endif %}
<button type="submit" class="btn btn-primary">{{ button_submit }}</button>
</div>
</div>
</form>
{{ content_bottom }}</div>
{{ column_right }}</div>
</div>
{{ footer }}

View File

@ -0,0 +1,113 @@
{{ header }}
<div id="account-return" class="container">
<ul class="breadcrumb">
{% for breadcrumb in breadcrumbs %}
<li class="breadcrumb-item"><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li>
{% endfor %}
</ul>
<div class="row">{{ column_left }}
<div id="content" class="col">{{ content_top }}
<h1>{{ heading_title }}</h1>
<table class="table table-bordered table-hover">
<thead>
<tr>
<td class="text-start" colspan="2">{{ text_return_detail }}</td>
</tr>
</thead>
<tbody>
<tr>
<td class="text-start" style="width: 50%;"><b>{{ text_return_id }}</b> #{{ return_id }}
<br/>
<b>{{ text_date_added }}</b> {{ date_added }}</td>
<td class="text-start" style="width: 50%;"><b>{{ text_orders_id }}</b> #{{ order_id }}
<br/>
<b>{{ text_date_ordered }}</b> {{ date_ordered }}</td>
</tr>
</tbody>
</table>
<h3>{{ text_product }}</h3>
<div class="table-responsive">
<table class="table table-bordered table-hover">
<thead>
<tr>
<td class="text-start" style="width: 33.3%;">{{ column_product }}</td>
<td class="text-start" style="width: 33.3%;">{{ column_model }}</td>
<td class="text-end" style="width: 33.3%;">{{ column_quantity }}</td>
</tr>
</thead>
<tbody>
<tr>
<td class="text-start">{{ product }}</td>
<td class="text-start">{{ model }}</td>
<td class="text-end">{{ quantity }}</td>
</tr>
</tbody>
</table>
</div>
<h3>{{ text_reason }}</h3>
<div class="table-responsive">
<table class="list table table-bordered table-hover">
<thead>
<tr>
<td class="text-start" style="width: 33.3%;">{{ column_reason }}</td>
<td class="text-start" style="width: 33.3%;">{{ column_opened }}</td>
<td class="text-start" style="width: 33.3%;">{{ column_action }}</td>
</tr>
</thead>
<tbody>
<tr>
<td class="text-start">{{ reason }}</td>
<td class="text-start">{{ opened }}</td>
<td class="text-start">{{ action }}</td>
</tr>
</tbody>
</table>
</div>
{% if comment %}
<div class="table-responsive">
<table class="table table-bordered table-hover">
<thead>
<tr>
<td class="text-start">{{ text_comment }}</td>
</tr>
</thead>
<tbody>
<tr>
<td class="text-start">{{ comment }}</td>
</tr>
</tbody>
</table>
</div>
{% endif %}
<h3>{{ text_history }}</h3>
<div class="table-responsive">
<table class="table table-bordered table-hover">
<thead>
<tr>
<td class="text-start" style="width: 33.3%;">{{ column_date_added }}</td>
<td class="text-start" style="width: 33.3%;">{{ column_status }}</td>
<td class="text-start" style="width: 33.3%;">{{ column_comment }}</td>
</tr>
</thead>
<tbody>
{% if histories %}
{% for history in histories %}
<tr>
<td class="text-start">{{ history.date_added }}</td>
<td class="text-start">{{ history.status }}</td>
<td class="text-start">{{ history.comment }}</td>
</tr>
{% endfor %}
{% else %}
<tr>
<td colspan="3" class="text-center">{{ text_no_results }}</td>
</tr>
{% endif %}
</tbody>
</table>
</div>
<div class="text-end"><a href="{{ continue }}" class="btn btn-primary">{{ button_continue }}</a></div>
{{ content_bottom }}</div>
{{ column_right }}</div>
</div>
{{ footer }}

View File

@ -0,0 +1,49 @@
{{ header }}
<div id="account-return" class="container">
<ul class="breadcrumb">
{% for breadcrumb in breadcrumbs %}
<li class="breadcrumb-item"><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li>
{% endfor %}
</ul>
<div class="row">{{ column_left }}
<div id="content" class="col">{{ content_top }}
<h1>{{ heading_title }}</h1>
{% if returns %}
<div class="table-responsive">
<table class="table table-bordered table-hover">
<thead>
<tr>
<td class="text-end">{{ column_return_id }}</td>
<td class="text-start">{{ column_status }}</td>
<td class="text-start">{{ column_date_added }}</td>
<td class="text-end">{{ column_order_id }}</td>
<td class="text-start">{{ column_customer }}</td>
<td></td>
</tr>
</thead>
<tbody>
{% for return in returns %}
<tr>
<td class="text-end">#{{ return.return_id }}</td>
<td class="text-start">{{ return.status }}</td>
<td class="text-start">{{ return.date_added }}</td>
<td class="text-end">{{ return.order_id }}</td>
<td class="text-start">{{ return.name }}</td>
<td class="text-end"><a href="{{ return.href }}" data-bs-toggle="tooltip" title="{{ button_view }}" class="btn btn-info"><i class="fa-solid fa-eye"></i></a></td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
<div class="row mb-3">
<div class="col-sm-6 text-start">{{ pagination }}</div>
<div class="col-sm-6 text-end">{{ results }}</div>
</div>
{% else %}
<p>{{ text_no_results }}</p>
{% endif %}
<div class="text-end"><a href="{{ continue }}" class="btn btn-primary">{{ button_continue }}</a></div>
{{ content_bottom }}</div>
{{ column_right }}</div>
</div>
{{ footer }}

View File

@ -0,0 +1,48 @@
{{ header }}
<div id="account-reward" class="container">
<ul class="breadcrumb">
{% for breadcrumb in breadcrumbs %}
<li class="breadcrumb-item"><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li>
{% endfor %}
</ul>
<div class="row">{{ column_left }}
<div id="content" class="col">{{ content_top }}
<h1>{{ heading_title }}</h1>
<p>{{ text_total }} <b>{{ total }}</b>.</p>
<div class="table-responsive">
<table class="table table-bordered table-hover">
<thead>
<tr>
<th class="text-start">{{ column_date_added }}</th>
<th class="text-start">{{ column_description }}</th>
<th class="text-end">{{ column_points }}</th>
</tr>
</thead>
<tbody>
{% if rewards %}
{% for reward in rewards %}
<tr>
<td class="text-start">{{ reward.date_added }}</td>
<td class="text-start">{% if reward.order_id %} <a href="{{ reward.href }}">{{ reward.description }}</a> {% else %}
{{ reward.description }}
{% endif %}</td>
<td class="text-end">{{ reward.points }}</td>
</tr>
{% endfor %}
{% else %}
<tr>
<td class="text-center" colspan="3">{{ text_no_results }}</td>
</tr>
{% endif %}
</tbody>
</table>
</div>
<div class="row mb-3">
<div class="col-sm-6 text-start">{{ pagination }}</div>
<div class="col-sm-6 text-end">{{ results }}</div>
</div>
<div class="text-end"><a href="{{ continue }}" class="btn btn-primary">{{ button_continue }}</a></div>
{{ content_bottom }}</div>
{{ column_right }}</div>
</div>
{{ footer }}

View File

@ -0,0 +1,30 @@
<div class="table-responsive">
<table class="table table-bordered">
<thead>
<tr>
<td class="text-start">{{ column_date_added }}</td>
<td class="text-start">{{ column_comment }}</td>
<td class="text-start">{{ column_status }}</td>
</tr>
</thead>
<tbody>
{% if histories %}
{% for history in histories %}
<tr>
<td class="text-start">{{ history.date_added }}</td>
<td class="text-start">{{ history.comment }}</td>
<td class="text-start">{{ history.status }}</td>
</tr>
{% endfor %}
{% else %}
<tr>
<td class="text-center" colspan="3">{{ text_no_results }}</td>
</tr>
{% endif %}
</tbody>
</table>
</div>
<div class="row">
<div class="col-sm-6 text-start">{{ pagination }}</div>
<div class="col-sm-6 text-end">{{ results }}</div>
</div>

View File

@ -0,0 +1,108 @@
{{ header }}
<div id="account-subscription" class="container">
<ul class="breadcrumb">
{% for breadcrumb in breadcrumbs %}
<li class="breadcrumb-item"><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li>
{% endfor %}
</ul>
<div class="row">{{ column_left }}
<div id="content" class="col">{{ content_top }}
<h1>{{ heading_title }}</h1>
<div class="row row-cols-md-2">
<div class="col">
<table class="table table-bordered table-hover">
<tr>
<td><b>{{ text_subscription_id }}</b></td>
<td>#{{ subscription_id }}</td>
</tr>
<tr>
<td><b>{{ text_status }}</b></td>
<td>{{ subscription_status }}</td>
</tr>
<tr>
<td><b>{{ text_order_id }}</b></td>
<td>#{{ order_id }}</td>
</tr>
</table>
</div>
<div class="col">
<table class="table table-bordered table-hover">
{% if shipping_method %}
<tr>
<td><strong>{{ text_shipping_method }}</strong></td>
<td>{{ shipping_method }}</td>
</tr>
{% endif %}
<tr>
<td><strong>{{ text_payment_method }}</strong></td>
<td>{{ payment_method }}</td>
</tr>
<tr>
<td><b>{{ text_date_added }}</b></td>
<td>{{ date_added }}</td>
</tr>
</table>
</div>
</div>
{% if payment_address or shipping_address %}
<table class="table table-bordered table-hover">
<thead>
<tr>
{% if payment_address %}
<td class="text-start align-top">{{ text_payment_address }}</td>
{% endif %}
{% if shipping_address %}
<td class="text-start align-top">{{ text_shipping_address }}</td>
{% endif %}
</tr>
</thead>
<tbody>
<tr>
{% if payment_address %}
<td class="text-start align-top">{{ payment_address }}</td>
{% endif %}
{% if shipping_address %}
<td class="text-start align-top">{{ shipping_address }}</td>
{% endif %}</tr>
</tbody>
</table>
{% endif %}
<table class="table table-bordered table-hover">
<thead>
<tr>
<td class="text-start w-50">{{ text_description }}</td>
<td class="text-start w-50">{{ text_quantity }}</td>
</tr>
</thead>
<tbody>
<tr>
<td class="text-start"><a href="{{ product }}">{{ name }}</a>
<br/>{{ description }}</td>
<td class="text-start">{{ product_quantity }}</td>
</tr>
</tbody>
</table>
<h2>{{ text_history }}</h2>
<div id="history">{{ history }}</div>
<h2>{{ text_order }}</h2>
<div id="order">{{ order }}</div>
<div class="text-end mt-3"><a href="{{ continue }}" class="btn btn-primary">{{ button_continue }}</a></div>
{{ content_bottom }}</div>
{{ column_right }}</div>
</div>
<script type="text/javascript"><!--
$('#history').on('click', '.pagination a', function(e) {
e.preventDefault();
$('#history').load(this.href);
});
$('#order').on('click', '.pagination a', function(e) {
e.preventDefault();
$('#order').load(this.href);
});
//--></script>
{{ footer }}

View File

@ -0,0 +1,50 @@
{{ header }}
<div id="account-subscription" class="container">
<ul class="breadcrumb">
{% for breadcrumb in breadcrumbs %}
<li class="breadcrumb-item"><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li>
{% endfor %}
</ul>
<div class="row">{{ column_left }}
<div id="content" class="col">{{ content_top }}
<h1>{{ heading_title }}</h1>
{% if subscriptions %}
<div class="table-responsive">
<table class="table table-bordered table-hover">
<thead>
<tr>
<td class="text-end">{{ column_subscription_id }}</td>
<td class="text-start">{{ column_product }}</td>
<td class="text-start">{{ column_status }}</td>
<td class="text-start">{{ column_date_added }}</td>
<td class="text-end"></td>
</tr>
</thead>
<tbody>
{% for subscription in subscriptions %}
<tr>
<td class="text-end">#{{ subscription.subscription_id }}</td>
<td class="text-start"><a href="{{ subscription.product }}">{{ subscription.product_name }}</a>
<br/>
{{ subscription.description }}
</td>
<td class="text-start">{{ subscription.status }}</td>
<td class="text-start">{{ subscription.date_added }}</td>
<td class="text-end"><a href="{{ subscription.view }}" data-bs-toggle="tooltip" title="{{ button_view }}" class="btn btn-info"><i class="fa-solid fa-eye"></i></a></td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
<div class="row mb-3">
<div class="col-sm-6 text-start">{{ pagination }}</div>
<div class="col-sm-6 text-end">{{ results }}</div>
</div>
{% else %}
<p>{{ text_no_results }}</p>
{% endif %}
<div class="text-end"><a href="{{ continue }}" class="btn btn-primary">{{ button_continue }}</a></div>
{{ content_bottom }}</div>
{{ column_right }}</div>
</div>
{{ footer }}

View File

@ -0,0 +1,32 @@
<div class="table-responsive">
<table class="table table-bordered table-hover">
<thead>
<tr>
<td class="text-end">{{ column_order_id }}</td>
<td class="text-start">{{ column_status }}</td>
<td class="text-end">{{ column_total }}</td>
<td class="text-start">{{ column_date_added }}</td>
</tr>
</thead>
<tbody>
{% if orders %}
{% for order in orders %}
<tr>
<td class="text-end"><a href="{{ order.view }}" target="_blank">{{ order.order_id }}</a></td>
<td class="text-start">{{ order.status }}</td>
<td class="text-end">{{ order.total }}</td>
<td class="text-start">{{ order.date_added }}</td>
</tr>
{% endfor %}
{% else %}
<tr>
<td class="text-center" colspan="4">{{ text_no_results }}</td>
</tr>
{% endif %}
</tbody>
</table>
</div>
<div class="row">
<div class="col-sm-6 text-start">{{ pagination }}</div>
<div class="col-sm-6 text-end">{{ results }}</div>
</div>

View File

@ -0,0 +1,59 @@
{{ header }}
<div id="account-tracking" class="container">
<ul class="breadcrumb">
{% for breadcrumb in breadcrumbs %}
<li class="breadcrumb-item"><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li>
{% endfor %}
</ul>
<div class="row">{{ column_left }}
<div id="content" class="col">{{ content_top }}
<h1>{{ heading_title }}</h1>
<p>{{ text_description }}</p>
<form>
<div class="row mb-3">
<label for="input-code" class="col-md-2 col-form-label">{{ entry_code }}</label>
<div class="col-md-10">
<textarea cols="40" rows="5" placeholder="{{ entry_code }}" id="input-code" class="form-control">{{ code }}</textarea>
</div>
</div>
<div class="row mb-3">
<label for="input-generator" class="col-md-2 col-form-label">{{ entry_generator }}</label>
<div class="col-md-10">
<input type="text" name="product" value="" placeholder="{{ entry_generator }}" id="input-generator" data-oc-target="autocomplete-generator" class="form-control" autocomplete="off"/>
<ul id="autocomplete-generator" class="dropdown-menu"></ul>
<div class="text-muted">{{ help_generator }}</div>
</div>
</div>
<div class="row mb-3">
<label for="input-link" class="col-md-2 col-form-label">{{ entry_link }}</label>
<div class="col-md-10">
<textarea name="link" cols="40" rows="5" placeholder="{{ entry_link }}" id="input-link" class="form-control"></textarea>
</div>
</div>
</form>
<div class="text-end"><a href="{{ continue }}" class="btn btn-primary">{{ button_continue }}</a></div>
{{ content_bottom }}</div>
{{ column_right }}</div>
</div>
<script type="text/javascript"><!--
$('#input-generator').autocomplete({
'source': function(request, response) {
return $.ajax({
url: 'index.php?route=account/tracking.autocomplete&customer_token={{ customer_token }}&search=' + encodeURIComponent(request) + '&tracking=' + encodeURIComponent($('#input-code').val()) + '&language={{ language }}',
dataType: 'json',
success: function(json) {
response($.map(json, function(item) {
return {
label: item['name'],
value: item['link']
}
}));
}
});
},
'select': function(item) {
$('#input-link').val(item['value']);
}
});
//--></script>
{{ footer }}

View File

@ -0,0 +1,44 @@
{{ header }}
<div id="account-transaction" class="container">
<ul class="breadcrumb">
{% for breadcrumb in breadcrumbs %}
<li class="breadcrumb-item"><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li>
{% endfor %}
</ul>
<div class="row">{{ column_left }}
<div id="content" class="col">{{ content_top }}
<h1>{{ heading_title }}</h1>
<p>{{ text_total }} <b>{{ total }}</b>.</p>
<table class="table table-bordered table-hover">
<thead>
<tr>
<td class="text-start">{{ column_date_added }}</td>
<td class="text-start">{{ column_description }}</td>
<td class="text-end">{{ column_amount }}</td>
</tr>
</thead>
<tbody>
{% if transactions %}
{% for transaction in transactions %}
<tr>
<td class="text-start">{{ transaction.date_added }}</td>
<td class="text-start">{{ transaction.description }}</td>
<td class="text-end">{{ transaction.amount }}</td>
</tr>
{% endfor %}
{% else %}
<tr>
<td class="text-center" colspan="5">{{ text_no_results }}</td>
</tr>
{% endif %}
</tbody>
</table>
<div class="row mb-3">
<div class="col-sm-6 text-start">{{ pagination }}</div>
<div class="col-sm-6 text-end">{{ results }}</div>
</div>
<div class="text-end"><a href="{{ continue }}" class="btn btn-primary">{{ button_continue }}</a></div>
{{ content_bottom }}</div>
{{ column_right }}</div>
</div>
{{ footer }}

View File

@ -0,0 +1,16 @@
{{ header }}
<div id="account-wishlist" class="container">
<ul class="breadcrumb">
{% for breadcrumb in breadcrumbs %}
<li class="breadcrumb-item"><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li>
{% endfor %}
</ul>
<div class="row">{{ column_left }}
<div id="content" class="col">{{ content_top }}
<h1>{{ heading_title }}</h1>
<div id="wishlist">{{ list }}</div>
<div class="text-end"><a href="{{ continue }}" class="btn btn-primary">{{ button_continue }}</a></div>
{{ content_bottom }}</div>
{{ column_right }}</div>
</div>
{{ footer }}

View File

@ -0,0 +1,46 @@
{% if products %}
<div class="table-responsive">
<table class="table table-bordered table-hover">
<thead>
<tr>
<td class="text-center"><strong>{{ column_image }}</strong></td>
<td class="text-start"><strong>{{ column_name }}</strong></td>
<td class="text-start"><strong>{{ column_model }}</strong></td>
<td class="text-end"><strong>{{ column_stock }}</strong></td>
<td class="text-end"><strong>{{ column_price }}</strong></td>
<td class="text-end"><strong>{{ column_action }}</strong></td>
</tr>
</thead>
<tbody>
{% for product in products %}
<tr>
<td class="text-center">{% if product.thumb %}<a href="{{ product.href }}"><img src="{{ product.thumb }}" alt="{{ product.name }}" title="{{ product.name }}"/></a>{% endif %}</td>
<td class="text-start"><a href="{{ product.href }}">{{ product.name }}</a></td>
<td class="text-start">{{ product.model }}</td>
<td class="text-end">{{ product.stock }}</td>
<td class="text-end">
{% if product.price %}
<div class="price">
{% if not product.special %}
{{ product.price }}
{% else %}
<b>{{ product.special }}</b> <s>{{ product.price }}</s>
{% endif %}
</div>
{% endif %}
</td>
<td class="text-end">
<form method="post" data-oc-toggle="ajax" data-oc-load="{{ wishlist }}" data-oc-target="#wishlist">
<input type="hidden" name="product_id" value="{{ product.product_id }}"/> <input type="hidden" name="quantity" value="{{ product.minimum }}"/>
<button type="submit" formaction="{{ add_to_cart }}" data-bs-toggle="tooltip" title="{{ button_cart }}" class="btn btn-primary"><i class="fa-solid fa-cart-shopping fa-fw"></i></button>
<button type="submit" formaction="{{ remove }}" data-bs-toggle="tooltip" title="{{ button_remove }}" class="btn btn-danger"><i class="fa-solid fa-circle-xmark fa-fw"></i></button>
</form>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% else %}
<p>{{ text_no_results }}</p>
{% endif %}

View File

@ -0,0 +1,86 @@
{{ header }}
<div id="checkout-cart" class="container">
<ul class="breadcrumb">
{% for breadcrumb in breadcrumbs %}
<li class="breadcrumb-item"><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li>
{% endfor %}
</ul>
{% if attention %}
<div class="alert alert-info"><i class="fa-solid fa-circle-info"></i> {{ attention }} <button type="button" class="btn-close" data-bs-dismiss="alert"></button></div>
{% endif %}
{% if success %}
<div class="alert alert-success alert-dismissible"><i class="fa-solid fa-circle-check"></i> {{ success }} <button type="button" class="btn-close" data-bs-dismiss="alert"></button></div>
{% endif %}
{% if error_warning %}
<div class="alert alert-danger alert-dismissible"><i class="fa-solid fa-circle-exclamation"></i> {{ error_warning }} <button type="button" class="btn-close" data-bs-dismiss="alert"></button></div>
{% endif %}
<div class="row">{{ column_left }}
<div id="content" class="col">{{ content_top }}
<h1>{{ heading_title }}{% if weight %} ({{ weight }}){% endif %}</h1>
<div id="shopping-cart">{{ list }}</div>
{% if modules %}
<h2>{{ text_next }}</h2>
<p>{{ text_next_choice }}</p>
<div id="accordion" class="accordion">
{% for module in modules %}
{{ module }}
{% endfor %}
</div>
{% endif %}
<br/>
<div class="row">
<div class="col"><a href="{{ continue }}" class="btn btn-light">{{ button_shopping }}</a></div>
<div class="col text-end"><a href="{{ checkout }}" class="btn btn-primary">{{ button_checkout }}</a></div>
</div>
{{ content_bottom }}</div>
{{ column_right }}</div>
</div>
<script type="text/javascript"><!--
$('#shopping-cart').on('submit', 'form', function (e) {
e.preventDefault();
var element = this;
if (e.originalEvent !== undefined && e.originalEvent.submitter !== undefined) {
var button = e.originalEvent.submitter;
} else {
var button = '';
}
$.ajax({
url: $(button).attr('formaction'),
type: 'post',
data: $(element).serialize(),
dataType: 'json',
beforeSend: function () {
$(button).button('loading');
},
complete: function () {
$(button).button('reset');
},
success: function (json) {
console.log(json);
if (json['redirect']) {
location = json['redirect'];
}
if (json['error']) {
$('#alert').prepend('<div class="alert alert-danger alert-dismissible"><i class="fa-solid fa-circle-exclamation"></i> ' + json['error'] + ' <button type="button" class="btn-close" data-bs-dismiss="alert"></button></div>');
}
if (json['success']) {
$('#alert').prepend('<div class="alert alert-success alert-dismissible"><i class="fa-solid fa-circle-exclamation"></i> ' + json['success'] + ' <button type="button" class="btn-close" data-bs-dismiss="alert"></button></div>');
}
$('#shopping-cart').load('index.php?route=checkout/cart.list&language={{ language }}', {}, function () {
$('#header-cart').load('index.php?route=common/cart.info&language={{ language }}');
});
},
error: function (xhr, ajaxOptions, thrownError) {
console.log(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
}
});
});
//--></script>
{{ footer }}

View File

@ -0,0 +1,73 @@
<div class="table-responsive">
<table class="table table-bordered">
<thead>
<tr>
<td class="text-center">{{ column_image }}</td>
<td class="text-start">{{ column_name }}</td>
<td class="text-start">{{ column_model }}</td>
<td class="text-start">{{ column_quantity }}</td>
<td class="text-end">{{ column_price }}</td>
<td class="text-end">{{ column_total }}</td>
</tr>
</thead>
<tbody>
{% for product in products %}
<tr>
<td class="text-center">{% if product.thumb %} <a href="{{ product.href }}"><img src="{{ product.thumb }}" alt="{{ product.name }}" title="{{ product.name }}" class="img-thumbnail"/></a> {% endif %}</td>
<td class="text-start text-wrap"><a href="{{ product.href }}">{{ product.name }}</a>{% if not product.stock %} <span class="text-danger">***</span>{% endif %}
{% for option in product.option %}
<br/>
<small> - {{ option.name }}: {{ option.value }}</small>
{% endfor %}
{% if product.reward %}
<br/>
<small> - {{ text_points }}: {{ product.reward }}</small>
{% endif %}
{% if product.subscription %}
<br/>
<small> - {{ text_subscription }}: {{ product.subscription }}</small>
{% endif %}
</td>
<td class="text-start">{{ product.model }}</td>
<td class="text-start">
<form method="post" data-oc-target="#shopping-cart">
<div class="input-group">
<input type="text" name="quantity" value="{{ product.quantity }}" size="1" class="form-control"> <input type="hidden" name="key" value="{{ product.cart_id }}">
<button type="submit" formaction="{{ product_edit }}" data-bs-toggle="tooltip" title="{{ button_update }}" class="btn btn-primary"><i class="fa-solid fa-rotate"></i></button>
<button type="submit" formaction="{{ product_remove }}" data-bs-toggle="tooltip" title="{{ button_remove }}" class="btn btn-danger"><i class="fa-solid fa-circle-xmark"></i></button>
</div>
</form>
</td>
<td class="text-end">{{ product.price }}</td>
<td class="text-end">{{ product.total }}</td>
</tr>
{% endfor %}
{% for voucher in vouchers %}
<tr>
<td></td>
<td class="text-start text-wrap">{{ voucher.description }}</td>
<td class="text-start"></td>
<td class="text-start">
<form method="post" data-oc-target="#shopping-cart">
<div class="input-group">
<input type="text" name="quantity" value="1" size="1" class="form-control" disabled/>
<button type="submit" formaction="{{ voucher_remove }}" data-bs-toggle="tooltip" title="{{ button_remove }}" class="btn btn-danger"><i class="fa-solid fa-circle-xmark"></i></button>
</div>
<input type="hidden" name="key" value="{{ voucher.key }}"/>
</form>
</td>
<td class="text-end">{{ voucher.amount }}</td>
<td class="text-end">{{ voucher.amount }}</td>
</tr>
{% endfor %}
</tbody>
<tfoot id="checkout-total">
{% for total in totals %}
<tr>
<td colspan="5" class="text-end"><strong>{{ total.title }}</strong></td>
<td class="text-end">{{ total.text }}</td>
</tr>
{% endfor %}
</tfoot>
</table>
</div>

View File

@ -0,0 +1,38 @@
{{ header }}
<div id="checkout-checkout" class="container">
<ul class="breadcrumb">
{% for breadcrumb in breadcrumbs %}
<li class="breadcrumb-item"><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li>
{% endfor %}
</ul>
<div class="row">{{ column_left }}
<div id="content" class="col">{{ content_top }}
<h1>{{ heading_title }}</h1>
<div class="row">
{% if register or payment_address or shipping_address %}
<div class="col-md-7 mb-3">
{% if register %}
<div id="checkout-register">{{ register }}</div>
{% endif %}
{% if payment_address %}
<div id="checkout-payment-address">{{ payment_address }}</div>
{% endif %}
{% if shipping_address %}
<div id="checkout-shipping-address">{{ shipping_address }}</div>
{% endif %}
</div>
{% endif %}
<div class="col">
{% if shipping_method %}
<div id="checkout-shipping-method" class="mb-3">{{ shipping_method }}</div>
{% endif %}
<div id="checkout-payment-method" class="mb-4">{{ payment_method }}</div>
<div id="checkout-confirm">{{ confirm }}</div>
</div>
</div>
</div>
{{ content_bottom }}
</div>
{{ column_right }}
</div>
{{ footer }}

View File

@ -0,0 +1,51 @@
<div class="table-responsive">
<table class="table table-bordered table-hover">
<thead>
<tr>
<td class="text-start">{{ column_name }}</td>
<td class="text-end">{{ column_total }}</td>
</tr>
</thead>
<tbody>
{% for product in products %}
<tr>
<td class="text-start">{{ product.quantity }}x <a href="{{ product.href }}">{{ product.name }}</a>
{% for option in product.option %}
<br/>
<small> - {{ option.name }}: {{ option.value }}</small>
{% endfor %}
{% if product.reward %}
<br/>
<small> - {{ text_points }}: {{ product.reward }}</small>
{% endif %}
{% if product.subscription %}
<br/>
<small> - {{ text_subscription }} {{ product.subscription }}</small>
{% endif %}</td>
<td class="text-end">{{ product.total }}</td>
</tr>
{% endfor %}
{% for voucher in vouchers %}
<tr>
<td class="text-start">1x {{ voucher.description }}</td>
<td class="text-end">{{ voucher.amount }}</td>
</tr>
{% endfor %}
</tbody>
<tfoot>
{% for total in totals %}
<tr>
<td class="text-end"><strong>{{ total.title }}</strong></td>
<td class="text-end">{{ total.text }}</td>
</tr>
{% endfor %}
</tfoot>
</table>
</div>
<div id="checkout-payment">
{% if payment %}
{{ payment }}
{% else %}
<div class="text-end"><button type="button" class="btn btn-primary" disabled>{{ button_confirm }}</button></div>
{% endif %}
</div>

View File

@ -0,0 +1,372 @@
<fieldset>
<legend>{{ heading_title }}</legend>
<div id="payment-addresses" style="display: {% if addresses %}block{% else %}none{% endif %};">
<div class="form-check">
<input type="radio" name="payment_existing" value="1" id="input-payment-existing" class="form-check-input"{% if addresses %} checked{% endif %}/>
<label for="input-payment-existing" class="form-check-label">{{ text_address_existing }}</label>
</div>
<div class="form-check">
<input type="radio" name="payment_existing" value="0" id="input-payment-new" class="form-check-input"{% if not addresses %} checked{% endif %}>
<label for="input-payment-new" class="form-check-label">{{ text_address_new }}</label>
</div>
</div>
<div id="payment-existing" style="display: {% if addresses %}block{% else %}none{% endif %};">
<select name="address_id" id="input-payment-address" class="form-select">
<option value="">{{ text_select }}</option>
{% for address in addresses %}
<option value="{{ address.address_id }}"{% if address.address_id == address_id %} selected{% endif %}>{{ address.firstname }} {{ address.lastname }},{% if address.company %} {{ address.company }},{% endif %} {{ address.address_1 }}, {{ address.city }}, {{ address.zone }}, {{ address.country }}</option>
{% endfor %}
</select>
<div id="error-payment-address" class="invalid-feedback"></div>
</div>
<br/>
<div id="payment-new" style="display: {% if not addresses %}block{% else %}none{% endif %};">
<form id="form-payment-address">
<div class="row row-cols-1 row-cols-md-2">
<div class="col mb-3 required">
<label for="input-payment-firstname" class="form-label">{{ entry_firstname }}</label>
<input type="text" name="firstname" value="" placeholder="{{ entry_firstname }}" id="input-payment-firstname" class="form-control"/>
<div id="error-payment-firstname" class="invalid-feedback"></div>
</div>
<div class="col mb-3 required">
<label for="input-payment-lastname" class="form-label">{{ entry_lastname }}</label>
<input type="text" name="lastname" value="" placeholder="{{ entry_lastname }}" id="input-payment-lastname" class="form-control"/>
<div id="error-payment-lastname" class="invalid-feedback"></div>
</div>
<div class="col mb-3">
<label for="input-payment-company" class="form-label">{{ entry_company }}</label>
<input type="text" name="company" value="" placeholder="{{ entry_company }}" id="input-payment-company" class="form-control"/>
</div>
<div class="col mb-3 required">
<label for="input-payment-address-1" class="form-label">{{ entry_address_1 }}</label>
<input type="text" name="address_1" value="" placeholder="{{ entry_address_1 }}" id="input-payment-address-1" class="form-control"/>
<div id="error-payment-address-1" class="invalid-feedback"></div>
</div>
<div class="col mb-3">
<label for="input-payment-address-2" class="form-label">{{ entry_address_2 }}</label>
<input type="text" name="address_2" value="" placeholder="{{ entry_address_2 }}" id="input-payment-address-2" class="form-control"/>
</div>
<div class="col mb-3 required">
<label for="input-payment-city" class="form-label">{{ entry_city }}</label>
<input type="text" name="city" value="" placeholder="{{ entry_city }}" id="input-payment-city" class="form-control"/>
<div id="error-payment-city" class="invalid-feedback"></div>
</div>
<div class="col mb-3 required">
<label for="input-payment-postcode" class="form-label">{{ entry_postcode }}</label>
<input type="text" name="postcode" value="" placeholder="{{ entry_postcode }}" id="input-payment-postcode" class="form-control"/>
<div id="error-payment-postcode" class="invalid-feedback"></div>
</div>
<div class="col mb-3 required">
<label for="input-payment-country" class="form-label">{{ entry_country }}</label>
<select name="country_id" id="input-payment-country" class="form-select">
<option value="0">{{ text_select }}</option>
{% for country in countries %}
<option value="{{ country.country_id }}">{{ country.name }}</option>
{% endfor %}
</select>
<div id="error-payment-country" class="invalid-feedback"></div>
</div>
<div class="col mb-3 required">
<label for="input-payment-zone" class="form-label">{{ entry_zone }}</label>
<select name="zone_id" id="input-payment-zone" class="form-select"></select>
<div id="error-payment-zone" class="invalid-feedback"></div>
</div>
{% for custom_field in custom_fields %}
{% if custom_field.type == 'select' %}
<div class="col mb-3{% if custom_field.required %} required{% endif %} custom-field custom-field-{{ custom_field.custom_field_id }}">
<label for="input-payment-custom-field-{{ custom_field.custom_field_id }}" class="form-label">{{ custom_field.name }}</label>
<select name="custom_field[{{ custom_field.custom_field_id }}]" id="input-payment-custom-field-{{ custom_field.custom_field_id }}" class="form-select">
<option value="">{{ text_select }}</option>
{% for custom_field_value in custom_field.custom_field_value %}
<option value="{{ custom_field_value.custom_field_value_id }}">{{ custom_field_value.name }}</option>
{% endfor %}
</select>
<div id="error-payment-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
{% endif %}
{% if custom_field.type == 'radio' %}
<div class="col mb-3{% if custom_field.required %} required{% endif %} custom-field custom-field-{{ custom_field.custom_field_id }}">
<label class="form-label">{{ custom_field.name }}</label>
<div id="input-payment-custom-field-{{ custom_field.custom_field_id }}">
{% for custom_field_value in custom_field.custom_field_value %}
<div class="form-check">
<input type="radio" name="custom_field[{{ custom_field.custom_field_id }}]" value="{{ custom_field_value.custom_field_value_id }}" id="input-payment-custom-value-{{ custom_field_value.custom_field_value_id }}" class="form-check-input"/>
<label for="input-payment-custom-value-{{ custom_field_value.custom_field_value_id }}" class="form-check-label">{{ custom_field_value.name }}</label>
</div>
{% endfor %}
</div>
<div id="error-payment-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
{% endif %}
{% if custom_field.type == 'checkbox' %}
<div class="col mb-3{% if custom_field.required %} required{% endif %} custom-field custom-field-{{ custom_field.custom_field_id }}">
<label class="form-label">{{ custom_field.name }}</label>
<div id="input-payment-custom-field-{{ custom_field.custom_field_id }}">
{% for custom_field_value in custom_field.custom_field_value %}
<div class="form-check">
<input type="checkbox" name="custom_field[{{ custom_field.custom_field_id }}][]" value="{{ custom_field_value.custom_field_value_id }}" id="input-payment-custom-value-{{ custom_field_value.custom_field_value_id }}" class="form-check-input"/>
<label for="input-payment-custom-value-{{ custom_field_value.custom_field_value_id }}" class="form-check-label">{{ custom_field_value.name }}</label>
</div>
{% endfor %}
</div>
<div id="error-payment-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
{% endif %}
{% if custom_field.type == 'text' %}
<div class="col mb-3{% if custom_field.required %} required{% endif %} custom-field custom-field-{{ custom_field.custom_field_id }}">
<label for="input-payment-custom-field-{{ custom_field.custom_field_id }}" class="form-label">{{ custom_field.name }}</label>
<input type="text" name="custom_field[{{ custom_field.custom_field_id }}]" value="{{ custom_field.value }}" placeholder="{{ custom_field.name }}" id="input-payment-custom-field-{{ custom_field.custom_field_id }}" class="form-control"/>
<div id="error-payment-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
{% endif %}
{% if custom_field.type == 'textarea' %}
<div class="col mb-3{% if custom_field.required %} required{% endif %} custom-field custom-field-{{ custom_field.custom_field_id }}">
<label for="input-payment-custom-field-{{ custom_field.custom_field_id }}" class="form-label">{{ custom_field.name }}</label>
<textarea name="custom_field[{{ custom_field.custom_field_id }}]" rows="5" placeholder="{{ custom_field.name }}" id="input-payment-custom-field-{{ custom_field.custom_field_id }}" class="form-control">{{ custom_field.value }}</textarea>
<div id="error-payment-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
{% endif %}
{% if custom_field.type == 'file' %}
<div class="col mb-3{% if custom_field.required %} required{% endif %} custom-field custom-field-{{ custom_field.custom_field_id }}">
<label class="form-label">{{ custom_field.name }}</label>
<div>
<button type="button" data-oc-toggle="upload" data-oc-url="{{ upload }}" data-oc-size-max="{{ config_file_max_size }}" data-oc-size-error="{{ error_upload_size }}" data-oc-target="#input-payment-custom-field-{{ custom_field.custom_field_id }}" class="btn btn-light"><i class="fa-solid fa-upload"></i> {{ button_upload }}</button>
<input type="hidden" name="custom_field[{{ custom_field.custom_field_id }}]" value="" id="input-payment-custom-field-{{ custom_field.custom_field_id }}"/>
</div>
<div id="error-payment-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
{% endif %}
{% if custom_field.type == 'date' %}
<div class="col mb-3{% if custom_field.required %} required{% endif %} custom-field custom-field-{{ custom_field.custom_field_id }}">
<label for="input-payment-custom-field-{{ custom_field.custom_field_id }}" class="form-label">{{ custom_field.name }}</label>
<div class="input-group">
<input type="text" name="custom_field[{{ custom_field.custom_field_id }}]" value="{{ custom_field.value }}" placeholder="{{ custom_field.name }}" id="input-payment-custom-field-{{ custom_field.custom_field_id }}" class="form-control date"/>
<div class="input-group-text"><i class="fa-regular fa-calendar"></i></div>
</div>
<div id="error-payment-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
{% endif %}
{% if custom_field.type == 'time' %}
<div class="col mb-3{% if custom_field.required %} required{% endif %} custom-field custom-field-{{ custom_field.custom_field_id }}">-
<label for="input-payment-custom-field-{{ custom_field.custom_field_id }}" class="form-label">{{ custom_field.name }}</label>
<div class="input-group">
<input type="text" name="custom_field[{{ custom_field.custom_field_id }}]" value="{{ custom_field.value }}" placeholder="{{ custom_field.name }}" id="input-payment-custom-field-{{ custom_field.custom_field_id }}" class="form-control time"/>
<div class="input-group-text"><i class="fa-regular fa-calendar"></i></div>
</div>
<div id="error-payment-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
{% endif %}
{% if custom_field.type == 'datetime' %}
<div class="col mb-3{% if custom_field.required %} required{% endif %} custom-field custom-field-{{ custom_field.custom_field_id }}">
<label for="input-payment-custom-field-{{ custom_field.custom_field_id }}" class="form-label">{{ custom_field.name }}</label>
<div class="input-group">
<input type="text" name="custom_field[{{ custom_field.custom_field_id }}]" value="{{ custom_field.value }}" placeholder="{{ custom_field.name }}" id="input-payment-custom-field-{{ custom_field.custom_field_id }}" class="form-control datetime"/>
<div class="input-group-text"><i class="fa-regular fa-calendar"></i></div>
</div>
<div id="error-payment-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
{% endif %}
{% endfor %}
</div>
<div class="text-end mb-3">
<button type="submit" id="button-payment-address" class="btn btn-primary">{{ button_continue }}</button>
</div>
</form>
</div>
</fieldset>
<script type="text/javascript"><!--
$('input[name=\'payment_existing\']').on('change', function() {
if ($(this).val() == 1) {
$('#payment-existing').show();
$('#payment-new').hide();
} else {
$('#payment-existing').hide();
$('#payment-new').show();
}
});
// Existing Payment Address
$('#input-payment-address').on('change', function() {
var element = this;
chain.attach(function() {
return $.ajax({
url: 'index.php?route=checkout/payment_address.address&language={{ language }}&address_id=' + $(element).val(),
dataType: 'json',
beforeSend: function() {
$(element).prop('disabled', true);
},
complete: function() {
$(element).prop('disabled', false);
},
success: function(json) {
console.log(json);
$('#input-payment-address').removeClass('is-invalid');
$('#error-payment-address').removeClass('d-block');
if (json['redirect']) {
location = json['redirect'];
}
if (json['error']) {
$('#input-payment-address').addClass('is-invalid');
$('#error-payment-address').html(json['error']).addClass('d-block');
}
if (json['success']) {
$('#alert').prepend('<div class="alert alert-success alert-dismissible"><i class="fa-solid fa-circle-check"></i> ' + json['success'] + ' <button type="button" class="btn-close" data-bs-dismiss="alert"></button></div>');
$('#input-shipping-method').val('');
$('#input-payment-method').val('');
$('#checkout-confirm').load('index.php?route=checkout/confirm.confirm&language={{ language }}');
}
},
error: function(xhr, ajaxOptions, thrownError) {
console.log(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
}
});
});
});
// New Payment Address
$('#form-payment-address').on('submit', function(e) {
e.preventDefault();
chain.attach(function() {
return $.ajax({
url: 'index.php?route=checkout/payment_address.save&language={{ language }}',
type: 'post',
data: $('#form-payment-address').serialize(),
dataType: 'json',
contentType: 'application/x-www-form-urlencoded',
beforeSend: function() {
$('#button-payment-address').button('loading');
},
complete: function() {
$('#button-payment-address').button('reset');
},
success: function(json) {
console.log(json);
$('#form-payment-address').find('.is-invalid').removeClass('is-invalid');
$('#form-payment-address').find('.invalid-feedback').removeClass('d-block');
if (json['redirect']) {
location = json['redirect'];
}
if (json['error']) {
if (json['error']['warning']) {
$('#alert').prepend('<div class="alert alert-danger alert-dismissible"><i class="fa-solid fa-circle-exclamation"></i> ' + json['error']['warning'] + ' <button type="button" class="btn-close" data-bs-dismiss="alert"></button></div>');
}
for (i in json['error']) {
for (key in json['error']) {
$('#input-payment-' + key.replaceAll('_', '-')).addClass('is-invalid').find('.form-control, .form-select, .form-check-input, .form-check-label').addClass('is-invalid');
$('#error-payment-' + key.replaceAll('_', '-')).html(json['error'][key]).addClass('d-block');
}
}
}
if (json['success']) {
$('#alert').prepend('<div class="alert alert-success alert-dismissible"><i class="fa-solid fa-circle-check"></i> ' + json['success'] + ' <button type="button" class="btn-close" data-bs-dismiss="alert"></button></div>');
$('#form-payment-address')[0].reset();
var html = '<option value="">{{ text_select|escape('js') }}</option>';
if (json['addresses']) {
for (i in json['addresses']) {
html += '<option value="' + json['addresses'][i]['address_id'] + '">' + json['addresses'][i]['firstname'] + ' ' + json['addresses'][i]['lastname'] + ', ' + (json['addresses'][i]['company'] ? json['addresses'][i]['company'] + ', ' : '') + json['addresses'][i]['address_1'] + ', ' + json['addresses'][i]['city'] + ', ' + json['addresses'][i]['zone'] + ', ' + json['addresses'][i]['country'] + '</option>';
}
}
// Payment Address
$('#input-payment-address').html(html);
$('#input-payment-address').val(json['address_id']);
$('#payment-addresses').css({display: 'block'});
$('#input-payment-existing').trigger('click');
// Shipping Address
var shipping_address_id = $('#input-shipping-address').val();
$('#input-shipping-address').html(html);
if (shipping_address_id) {
$('#input-shipping-address').val(shipping_address_id);
}
$('#shipping-address').css({display: 'block'});
$('#shipping-addresses').css({display: 'block'});
$('#input-shipping-existing').trigger('click');
$('#input-shipping-method').val('');
$('#input-payment-method').val('');
$('#checkout-confirm').load('index.php?route=checkout/confirm.confirm&language={{ language }}');
}
},
error: function(xhr, ajaxOptions, thrownError) {
console.log(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
}
});
});
});
$('#input-payment-country').on('change', function() {
var element = this;
chain.attach(function() {
return $.ajax({
url: 'index.php?route=localisation/country&language={{ language }}&country_id=' + $('#input-payment-country').val(),
dataType: 'json',
beforeSend: function() {
$(element).prop('disabled', true);
$('#input-payment-zone').prop('disabled', true);
},
complete: function() {
$(element).prop('disabled', false);
$('#input-payment-zone').prop('disabled', false);
},
success: function(json) {
if (json['postcode_required'] == '1') {
$('#input-payment-postcode').parent().addClass('required');
} else {
$('#input-payment-postcode').parent().removeClass('required');
}
html = '<option value="">{{ text_select|escape('js') }}</option>';
if (json['zone'] && json['zone'] != '') {
for (i = 0; i < json['zone'].length; i++) {
html += '<option value="' + json['zone'][i]['zone_id'] + '">' + json['zone'][i]['name'] + '</option>';
}
} else {
html += '<option value="0" selected>{{ text_none|escape('js') }}</option>';
}
$('#input-payment-zone').html(html);
},
error: function(xhr, ajaxOptions, thrownError) {
console.log(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
}
});
});
});
//--></script>

View File

@ -0,0 +1,230 @@
<fieldset>
<legend>{{ heading_title }}</legend>
<div class="input-group">
<span class="input-group-text"><i class="fa fa-credit-card"></i></span><input type="text" name="payment_method" value="{{ payment_method }}" placeholder="{{ entry_payment_method }}" id="input-payment-method" class="form-control" readonly/>
<button type="button" id="button-payment-methods" class="btn btn-primary">{{ button_choose }}</button>
</div>
<input type="hidden" name="code" value="{{ code }}" id="input-payment-code"/>
<div id="error-payment-method" class="invalid-feedback"></div>
</fieldset>
<br/>
<div class="mb-2">
<label for="input-comment" class="form-label"><strong>{{ text_comments }}</strong></label> <textarea name="comment" rows="4" id="input-comment" class="form-control">{{ comment }}</textarea>
</div>
{% if text_agree %}
<div class="form-check form-switch form-switch-lg form-check-reverse mt-3">
<label class="form-check-label">{{ text_agree }}</label> <input type="checkbox" name="agree" value="1" id="input-checkout-agree" class="form-check-input"/>
</div>
{% endif %}
<script type="text/javascript"><!--
$('#button-payment-methods').on('click', function() {
var element = this;
chain.attach(function() {
return $.ajax({
url: 'index.php?route=checkout/payment_method.getMethods&language={{ language }}',
dataType: 'json',
beforeSend: function() {
$(element).button('loading');
},
complete: function() {
$(element).button('reset');
},
success: function(json) {
console.log(json);
$('#input-payment-method').removeClass('is-invalid');
$('#error-payment-method').removeClass('d-block');
if (json['error']) {
$('#input-payment-method').addClass('is-invalid');
$('#error-payment-method').html(json['error']).addClass('d-block');
}
if (json['payment_methods']) {
$('#modal-payment').remove();
html = '<div id="modal-payment" class="modal">';
html += ' <div class="modal-dialog modal-dialog-centered">';
html += ' <div class="modal-content">';
html += ' <div class="modal-header">';
html += ' <h5 class="modal-title"><i class="fa fa-credit-card"></i> {{ text_payment_method|escape('js') }}</h5>';
html += ' <button type="button" class="btn-close" data-bs-dismiss="modal"></button>';
html += ' </div>';
html += ' <div class="modal-body">';
html += ' <form id="form-payment-method">';
html += ' <p>{{ text_payment|escape('js') }}</p>';
for (i in json['payment_methods']) {
html += '<p><strong>' + json['payment_methods'][i]['name'] + '</strong></p>';
if (!json['payment_methods'][i]['error']) {
for (j in json['payment_methods'][i]['option']) {
html += '<div class="form-check">';
var code = i + '-' + j.replaceAll('_', '-');
html += '<input type="radio" name="payment_method" value="' + json['payment_methods'][i]['option'][j]['code'] + '" id="input-payment-method-' + code + '"';
if (json['payment_methods'][i]['option'][j]['code'] == $('#input-payment-code').val()) {
html += ' checked';
}
html += '/>';
html += ' <label for="input-payment-method-' + code + '">' + json['payment_methods'][i]['option'][j]['name'] + '</label>';
html += '</div>';
}
} else {
html += '<div class="alert alert-danger">' + json['payment_methods'][i]['error'] + '</div>';
}
}
html += ' <div class="text-end">';
html += ' <button type="submit" id="button-payment-method" class="btn btn-primary">{{ button_continue|escape('js') }}</button>';
html += ' </div>';
html += ' </form>';
html += ' </div>';
html += ' </div>';
html += ' </div>';
html += '</div>';
$('body').append(html);
$('#modal-payment').modal('show');
}
},
error: function(xhr, ajaxOptions, thrownError) {
console.log(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
}
});
});
});
$(document).on('submit', '#form-payment-method', function(e) {
e.preventDefault();
var element = this;
chain.attach(function() {
return $.ajax({
url: 'index.php?route=checkout/payment_method.save&language={{ language }}',
type: 'post',
data: $('#form-payment-method').serialize(),
dataType: 'json',
contentType: 'application/x-www-form-urlencoded',
beforeSend: function() {
$('#button-payment-method').button('loading');
},
complete: function() {
$('#button-payment-method').button('reset');
},
success: function(json) {
console.log(json);
if (json['redirect']) {
location = json['redirect'];
}
if (json['error']) {
$('#alert').prepend('<div class="alert alert-danger alert-dismissible"><i class="fa-solid fa-circle-exclamation"></i> ' + json['error'] + ' <button type="button" class="btn-close" data-bs-dismiss="alert"></button></div>');
}
if (json['success']) {
$('#alert').prepend('<div class="alert alert-success alert-dismissible"><i class="fa-solid fa-circle-check"></i> ' + json['success'] + ' <button type="button" class="btn-close" data-bs-dismiss="alert"></button></div>');
$('#modal-payment').modal('hide');
$('#input-payment-method').val($('input[name=\'payment_method\']:checked').parent().find('label').text());
$('#input-payment-code').val($('input[name=\'payment_method\']:checked').val());
$('#checkout-confirm').load('index.php?route=checkout/confirm.confirm&language={{ language }}');
}
},
error: function(xhr, ajaxOptions, thrownError) {
console.log(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
}
});
});
});
// Comment
var timer = '';
$('#input-comment').on('keydown', function() {
$('#button-confirm').prop('disabled', true);
// Request
clearTimeout(timer);
timer = setTimeout(function(object) {
chain.attach(function() {
return $.ajax({
url: 'index.php?route=checkout/payment_method.comment&language={{ language }}',
type: 'post',
data: $('#input-comment').serialize(),
dataType: 'json',
contentType: 'application/x-www-form-urlencoded',
success: function(json) {
console.log(json);
$('.alert-dismissible').remove();
if (json['redirect']) {
location = json['redirect'];
}
if (json['error']) {
$('#alert').prepend('<div class="alert alert-danger alert-dismissible"><i class="fa-solid fa-circle-exclamation"></i> ' + json['error'] + ' <button type="button" class="btn-close" data-bs-dismiss="alert"></button></div>');
$('#button-confirm').prop('disabled', false);
}
if (json['success']) {
$('#alert').prepend('<div class="alert alert-success alert-dismissible"><i class="fa-solid fa-circle-check"></i> ' + json['success'] + ' <button type="button" class="btn-close" data-bs-dismiss="alert"></button></div>');
$('#button-confirm').prop('disabled', false);
}
window.setTimeout(function() {
$('.alert-dismissible').fadeTo(1000, 0, function() {
$(this).remove();
});
}, 3000);
},
error: function(xhr, ajaxOptions, thrownError) {
$('#button-confirm').prop('disabled', false);
console.log(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
}
});
});
}, 1000, this);
});
/* Agree to terms */
$('#input-checkout-agree').on('change', function() {
var element = this;
chain.attach(function() {
return $.ajax({
url: 'index.php?route=checkout/payment_method.agree&language={{ language }}',
type: 'post',
data: $('#input-checkout-agree').serialize(),
dataType: 'json',
contentType: 'application/x-www-form-urlencoded',
beforeSend: function() {
$('#button-confirm').button('loading');
},
complete: function() {
$('#button-confirm').button('reset');
},
success: function(json) {
$('#checkout-confirm').load('index.php?route=checkout/confirm.confirm&language={{ language }}');
},
error: function(xhr, ajaxOptions, thrownError) {
console.log(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
}
});
});
});
//--></script>

View File

@ -0,0 +1,671 @@
<form id="form-register">
<p>{{ text_login }}</p>
<fieldset>
<legend>{{ heading_title }}</legend>
<div class="row">
{% if config_checkout_guest %}
<div class="col mb-3 required">
<div class="form-check form-check-inline">
<input type="radio" name="account" value="1" id="input-register" class="form-check-input"{% if account %} checked{% endif %}/> <label for="input-register" class="form-check-label">{{ text_register }}</label>
</div>
<div class="form-check form-check-inline">
<input type="radio" name="account" value="0" id="input-guest" class="form-check-input"{% if not account %} checked{% endif %}/> <label for="input-guest" class="form-check-label">{{ text_guest }}</label>
</div>
</div>
{% endif %}
<div class="col mb-3{% if customer_groups|length <= 1 %} d-none{% endif %}">
<label class="form-label">{{ entry_customer_group }}</label>
<select name="customer_group_id" id="input-customer-group" class="form-select">
{% for customer_group in customer_groups %}
<option value="{{ customer_group.customer_group_id }}"{% if customer_group.customer_group_id == customer_group_id %} selected{% endif %}>{{ customer_group.name }}</option>
{% endfor %}
</select>
</div>
</div>
<div class="row row-cols-1 row-cols-md-2">
<div class="col mb-3 required">
<label for="input-firstname" class="form-label">{{ entry_firstname }}</label>
<input type="text" name="firstname" value="{{ firstname }}" placeholder="{{ entry_firstname }}" id="input-firstname" class="form-control"/>
<div id="error-firstname" class="invalid-feedback"></div>
</div>
<div class="col mb-3 required">
<label for="input-lastname" class="form-label">{{ entry_lastname }}</label>
<input type="text" name="lastname" value="{{ lastname }}" placeholder="{{ entry_lastname }}" id="input-lastname" class="form-control"/>
<div id="error-lastname" class="invalid-feedback"></div>
</div>
<div class="col mb-3 required">
<label for="input-email" class="form-label">{{ entry_email }}</label>
<input type="text" name="email" value="{{ email }}" placeholder="{{ entry_email }}" id="input-email" class="form-control"/>
<div id="error-email" class="invalid-feedback"></div>
</div>
{% if config_telephone_display %}
<div class="col mb-3{% if config_telephone_required %} required{% endif %}">
<label for="input-telephone" class="form-label">{{ entry_telephone }}</label>
<input type="text" name="telephone" value="{{ telephone }}" placeholder="{{ entry_telephone }}" id="input-telephone" class="form-control"/>
<div id="error-telephone" class="invalid-feedback"></div>
</div>
{% endif %}
{% for custom_field in custom_fields %}
{% if custom_field.location == 'account' %}
{% if custom_field.type == 'select' %}
<div class="col mb-3 custom-field custom-field-{{ custom_field.custom_field_id }}">
<label for="input-custom-field-{{ custom_field.custom_field_id }}" class="form-label">{{ custom_field.name }}</label> <select name="custom_field[{{ custom_field.location }}][{{ custom_field.custom_field_id }}]" id="input-customer-custom-field-{{ custom_field.custom_field_id }}" class="form-select">
<option value="">{{ text_select }}</option>
{% for custom_field_value in custom_field.custom_field_value %}
<option value="{{ custom_field_value.custom_field_value_id }}"{% if account_custom_field[custom_field.custom_field_id] and custom_field_value.custom_field_value_id == account_custom_field[custom_field.custom_field_id] %} selected{% endif %}>{{ custom_field_value.name }}</option>
{% endfor %}
</select>
<div id="error-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
{% endif %}
{% if custom_field.type == 'radio' %}
<div class="col mb-3 custom-field custom-field-{{ custom_field.custom_field_id }}">
<label class="form-label">{{ custom_field.name }}</label>
<div id="input-custom-field-{{ custom_field.custom_field_id }}">
{% for custom_field_value in custom_field.custom_field_value %}
<div class="form-check">
<input type="radio" name="custom_field[{{ custom_field.location }}][{{ custom_field.custom_field_id }}]" value="{{ custom_field_value.custom_field_value_id }}" id="input-custom-value-{{ custom_field_value.custom_field_value_id }}" class="form-check-input"{% if account_custom_field[custom_field.custom_field_id] and custom_field_value.custom_field_value_id == account_custom_field[custom_field.custom_field_id] %} checked{% endif %}/>
<label for="input-custom-value-{{ custom_field_value.custom_field_value_id }}" class="form-check-label">{{ custom_field_value.name }}</label>
</div>
{% endfor %}
</div>
<div id="error-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
{% endif %}
{% if custom_field.type == 'checkbox' %}
<div class="col mb-3 custom-field custom-field-{{ custom_field.custom_field_id }}">
<label class="form-label">{{ custom_field.name }}</label>
<div id="input-custom-field-{{ custom_field.custom_field_id }}">
{% for custom_field_value in custom_field.custom_field_value %}
<div class="form-check">
<input type="checkbox" name="custom_field[{{ custom_field.location }}][{{ custom_field.custom_field_id }}][]" value="{{ custom_field_value.custom_field_value_id }}" id="input-custom-value-{{ custom_field_value.custom_field_value_id }}" class="form-check-input"{% if account_custom_field[custom_field.custom_field_id] and custom_field_value.custom_field_value_id in account_custom_field[custom_field.custom_field_id] %} checked{% endif %}/>
<label for="input-custom-value-{{ custom_field_value.custom_field_value_id }}" class="form-check-label">{{ custom_field_value.name }}</label>
</div>
{% endfor %}
</div>
<div id="error-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
{% endif %}
{% if custom_field.type == 'text' %}
<div class="col mb-3 custom-field custom-field-{{ custom_field.custom_field_id }}">
<label for="input-custom-field-{{ custom_field.custom_field_id }}" class="form-label">{{ custom_field.name }}</label>
<input type="text" name="custom_field[{{ custom_field.location }}][{{ custom_field.custom_field_id }}]" value="{% if account_custom_field[custom_field.custom_field_id] %}{{ account_custom_field[custom_field.custom_field_id] }}{% else %}{{ custom_field.value }}{% endif %}" placeholder="{{ custom_field.name }}" id="input-custom-field-{{ custom_field.custom_field_id }}" class="form-control"/>
<div id="error-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
{% endif %}
{% if custom_field.type == 'textarea' %}
<div class="col mb-3 custom-field custom-field-{{ custom_field.custom_field_id }}">
<label for="input-custom-field-{{ custom_field.custom_field_id }}" class="form-label">{{ custom_field.name }}</label> <textarea name="custom_field[{{ custom_field.location }}][{{ custom_field.custom_field_id }}]" rows="5" placeholder="{{ custom_field.name }}" id="input-custom-field-{{ custom_field.custom_field_id }}" class="form-control">{% if account_custom_field[custom_field.custom_field_id] %}{{ account_custom_field[custom_field.custom_field_id] }}{% else %}{{ custom_field.value }}{% endif %}</textarea>
<div id="error-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
{% endif %}
{% if custom_field.type == 'file' %}
<div class="col mb-3 custom-field custom-field-{{ custom_field.custom_field_id }}">
<label for="input-custom-field-{{ custom_field.custom_field_id }}" class="form-label">{{ custom_field.name }}</label>
<div>
<button type="button" data-oc-toggle="upload" data-oc-url="{{ upload }}" data-oc-size-max="{{ config_file_max_size }}" data-oc-size-error="{{ error_upload_size }}" data-oc-target="#input-custom-field-{{ custom_field.custom_field_id }}" class="btn btn-light"><i class="fa-solid fa-upload"></i> {{ button_upload }}</button>
<input type="hidden" name="custom_field[{{ custom_field.location }}][{{ custom_field.custom_field_id }}]" value="{% if account_custom_field[custom_field.custom_field_id] %}{{ account_custom_field[custom_field.custom_field_id] }}{% endif %}" id="input-custom-field-{{ custom_field.custom_field_id }}"/>
</div>
<div id="error-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
{% endif %}
{% if custom_field.type == 'date' %}
<div class="col mb-3 custom-field custom-field-{{ custom_field.custom_field_id }}">
<label for="input-custom-field-{{ custom_field.custom_field_id }}" class="form-label">{{ custom_field.name }}</label>
<div class="input-group">
<input type="text" name="custom_field[{{ custom_field.location }}][{{ custom_field.custom_field_id }}]" value="{% if account_custom_field[custom_field.custom_field_id] %}{{ account_custom_field[custom_field.custom_field_id] }}{% else %}{{ custom_field.value }}{% endif %}" placeholder="{{ custom_field.name }}" id="input-custom-field-{{ custom_field.custom_field_id }}" class="form-control date"/>
<div class="input-group-text"><i class="fa-regular fa-calendar"></i></div>
</div>
<div id="error-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
{% endif %}
{% if custom_field.type == 'time' %}
<div class="col mb-3 custom-field custom-field-{{ custom_field.custom_field_id }}">
<label for="input-custom-field-{{ custom_field.custom_field_id }}" class="form-label">{{ custom_field.name }}</label>
<div class="input-group">
<input type="text" name="custom_field[{{ custom_field.location }}][{{ custom_field.custom_field_id }}]" value="{% if account_custom_field[custom_field.custom_field_id] %}{{ account_custom_field[custom_field.custom_field_id] }}{% else %}{{ custom_field.value }}{% endif %}" placeholder="{{ custom_field.name }}" id="input-custom-field-{{ custom_field.custom_field_id }}" class="form-control time"/>
<div class="input-group-text"><i class="fa-regular fa-calendar"></i></div>
</div>
<div id="error-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
{% endif %}
{% if custom_field.type == 'datetime' %}
<div class="col mb-3 custom-field custom-field-{{ custom_field.custom_field_id }}">
<label for="input-custom-field-{{ custom_field.custom_field_id }}" class="form-label">{{ custom_field.name }}</label>
<div class="input-group">
<input type="text" name="custom_field[{{ custom_field.location }}][{{ custom_field.custom_field_id }}]" value="{% if account_custom_field[custom_field.custom_field_id] %}{{ account_custom_field[custom_field.custom_field_id] }}{% else %}{{ custom_field.value }}{% endif %}" placeholder="{{ custom_field.name }}" id="input-custom-field-{{ custom_field.custom_field_id }}" class="form-control datetime"/>
<div class="input-group-text"><i class="fa-regular fa-calendar"></i></div>
</div>
<div id="error-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
{% endif %}
{% endif %}
{% endfor %}
</div>
</fieldset>
{% if config_checkout_payment_address %}
<fieldset>
<legend>{{ text_payment_address }}</legend>
<div class="row row-cols-1 row-cols-md-2">
<div class="col mb-3">
<label for="input-payment-company" class="form-label">{{ entry_company }}</label> <input type="text" name="payment_company" value="{{ payment_company }}" placeholder="{{ entry_company }}" id="input-payment-company" class="form-control"/>
</div>
<div class="col mb-3 required">
<label for="input-payment-address-1" class="form-label">{{ entry_address_1 }}</label> <input type="text" name="payment_address_1" value="{{ payment_address_1 }}" placeholder="{{ entry_address_1 }}" id="input-payment-address-1" class="form-control"/>
<div id="error-payment-address-1" class="invalid-feedback"></div>
</div>
<div class="col mb-3">
<label for="input-payment-address-2" class="form-label">{{ entry_address_2 }}</label> <input type="text" name="payment_address_2" value="{{ payment_address_2 }}" placeholder="{{ entry_address_2 }}" id="input-payment-address-2" class="form-control"/>
</div>
<div class="col mb-3 required">
<label for="input-payment-city" class="form-label">{{ entry_city }}</label> <input type="text" name="payment_city" value="{{ payment_city }}" placeholder="{{ entry_city }}" id="input-payment-city" class="form-control"/>
<div id="error-payment-city" class="invalid-feedback"></div>
</div>
<div class="col mb-3 required">
<label for="input-payment-postcode" class="form-label">{{ entry_postcode }}</label> <input type="text" name="payment_postcode" value="{{ payment_postcode }}" placeholder="{{ entry_postcode }}" id="input-payment-postcode" class="form-control"/>
<div id="error-payment-postcode" class="invalid-feedback"></div>
</div>
<div class="col mb-3 required">
<label for="input-payment-country" class="form-label">{{ entry_country }}</label> <select name="payment_country_id" id="input-payment-country" class="form-select">
<option value="">{{ text_select }}</option>
{% for country in countries %}
<option value="{{ country.country_id }}"{% if country.country_id == payment_country_id %} selected{% endif %}>{{ country.name }}</option>
{% endfor %}
</select>
<div id="error-payment-country" class="invalid-feedback"></div>
</div>
<div class="col mb-3 required">
<label for="input-payment-zone" class="form-label">{{ entry_zone }}</label>
<select name="payment_zone_id" id="input-payment-zone" class="form-select" data-oc-value="{{ payment_zone_id }}"></select>
<div id="error-payment-zone" class="invalid-feedback"></div>
</div>
{% for custom_field in custom_fields %}
{% if custom_field.location == 'address' %}
{% if custom_field.type == 'select' %}
<div class="col mb-3{% if custom_field.required %} required{% endif %} custom-field custom-field-{{ custom_field.custom_field_id }}">
<label for="input-payment-custom-field-{{ custom_field.custom_field_id }}" class="form-label">{{ custom_field.name }}</label> <select name="payment_custom_field[{{ custom_field.location }}][{{ custom_field.custom_field_id }}]" id="input-payment-custom-field-{{ custom_field.custom_field_id }}" class="form-select">
<option value="">{{ text_select }}</option>
{% for custom_field_value in custom_field.custom_field_value %}
<option value="{{ custom_field_value.custom_field_value_id }}"{% if payment_custom_field[custom_field.custom_field_id] and custom_field_value.custom_field_value_id == payment_custom_field[custom_field.custom_field_id] %} selected{% endif %}>{{ custom_field_value.name }}</option>
{% endfor %}
</select>
<div id="error-payment-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
{% endif %}
{% if custom_field.type == 'radio' %}
<div class="col mb-3{% if custom_field.required %} required{% endif %} custom-field custom-field-{{ custom_field.custom_field_id }}">
<label class="form-label">{{ custom_field.name }}</label>
<div id="input-payment-custom-field-{{ custom_field.custom_field_id }}">
{% for custom_field_value in custom_field.custom_field_value %}
<div class="form-check">
<input type="radio" name="payment_custom_field[{{ custom_field.location }}][{{ custom_field.custom_field_id }}]" value="{{ custom_field_value.custom_field_value_id }}" id="input-payment-custom-value-{{ custom_field_value.custom_field_value_id }}" class="form-check-input"{% if payment_custom_field[custom_field.custom_field_id] and custom_field_value.custom_field_value_id == payment_custom_field[custom_field.custom_field_id] %} checked{% endif %}/> <label for="input-payment-custom-value-{{ custom_field_value.custom_field_value_id }}" class="form-check-label">{{ custom_field_value.name }}</label>
</div>
{% endfor %}
</div>
<div id="error-payment-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
{% endif %}
{% if custom_field.type == 'checkbox' %}
<div class="col mb-3{% if custom_field.required %} required{% endif %} custom-field custom-field-{{ custom_field.custom_field_id }}">
<label class="form-label">{{ custom_field.name }}</label>
<div id="input-payment-custom-field-{{ custom_field.custom_field_id }}">
{% for custom_field_value in custom_field.custom_field_value %}
<div class="form-check">
<input type="checkbox" name="payment_custom_field[{{ custom_field.location }}][{{ custom_field.custom_field_id }}][]" value="{{ custom_field_value.custom_field_value_id }}" id="input-payment-custom-value-{{ custom_field_value.custom_field_value_id }}" class="form-check-input"{% if address_custom_field[custom_field.custom_field_id] and custom_field_value.custom_field_value_id in address_custom_field[custom_field.custom_field_id] %} checked{% endif %}/> <label for="input-payment-custom-value-{{ custom_field_value.custom_field_value_id }}" class="form-check-label">{{ custom_field_value.name }}</label>
</div>
{% endfor %}
</div>
<div id="error-payment-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
{% endif %}
{% if custom_field.type == 'text' %}
<div class="col mb-3{% if custom_field.required %} required{% endif %} custom-field custom-field-{{ custom_field.custom_field_id }}">
<label for="input-payment-custom-field-{{ custom_field.custom_field_id }}" class="form-label">{{ custom_field.name }}</label>
<input type="text" name="payment_custom_field[{{ custom_field.location }}][{{ custom_field.custom_field_id }}]" value="{% if address_custom_field[custom_field.custom_field_id] %}{{ address_custom_field[custom_field.custom_field_id] }}{% else %}{{ custom_field.value }}{% endif %}" placeholder="{{ custom_field.name }}" id="input-payment-custom-field-{{ custom_field.custom_field_id }}" class="form-control"/>
<div id="error-payment-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
{% endif %}
{% if custom_field.type == 'textarea' %}
<div class="col mb-3{% if custom_field.required %} required{% endif %} custom-field custom-field-{{ custom_field.custom_field_id }}">
<label for="input-payment-custom-field-{{ custom_field.custom_field_id }}" class="form-label">{{ custom_field.name }}</label> <textarea name="payment_custom_field[{{ custom_field.location }}][{{ custom_field.custom_field_id }}]" rows="5" placeholder="{{ custom_field.name }}" id="input-payment-custom-field-{{ custom_field.custom_field_id }}" class="form-control">{% if address_custom_field[custom_field.custom_field_id] %}{{ address_custom_field[custom_field.custom_field_id] }}{% else %}{{ custom_field.value }}{% endif %}</textarea>
<div id="error-payment-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
{% endif %}
{% if custom_field.type == 'file' %}
<div class="col mb-3{% if custom_field.required %} required{% endif %} custom-field custom-field-{{ custom_field.custom_field_id }}">
<label class="form-label">{{ custom_field.name }}</label>
<div>
<button type="button" data-oc-toggle="upload" data-oc-url="{{ upload }}" data-oc-size-max="{{ config_file_max_size }}" data-oc-size-error="{{ error_upload_size }}" data-oc-target="#input-payment-custom-field-{{ custom_field.custom_field_id }}" class="btn btn-light"><i class="fa-solid fa-upload"></i> {{ button_upload }}</button>
<input type="hidden" name="payment_custom_field[{{ custom_field.location }}][{{ custom_field.custom_field_id }}]" value="{% if payment_custom_field[custom_field.custom_field_id] %}{{ payment_custom_field[custom_field.custom_field_id] }}{% endif %}" id="input-payment-custom-field-{{ custom_field.custom_field_id }}"/>
</div>
<div id="error-payment-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
{% endif %}
{% if custom_field.type == 'date' %}
<div class="col mb-3{% if custom_field.required %} required{% endif %} custom-field custom-field-{{ custom_field.custom_field_id }}">
<label for="input-payment-custom-field-{{ custom_field.custom_field_id }}" class="form-label">{{ custom_field.name }}</label>
<div class="input-group">
<input type="text" name="payment_custom_field[{{ custom_field.location }}][{{ custom_field.custom_field_id }}]" value="{% if payment_custom_field[custom_field.custom_field_id] %}{{ payment_custom_field[custom_field.custom_field_id] }}{% else %}{{ custom_field.value }}{% endif %}" placeholder="{{ custom_field.name }}" id="input-payment-custom-field-{{ custom_field.custom_field_id }}" class="form-control date"/>
<div class="input-group-text"><i class="fa-regular fa-calendar"></i></div>
</div>
<div id="error-payment-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
{% endif %}
{% if custom_field.type == 'time' %}
<div class="col mb-3{% if custom_field.required %} required{% endif %} custom-field custom-field-{{ custom_field.custom_field_id }}">
<label for="input-payment-custom-field-{{ custom_field.custom_field_id }}" class="form-label">{{ custom_field.name }}</label>
<div class="input-group">
<input type="text" name="payment_custom_field[{{ custom_field.location }}][{{ custom_field.custom_field_id }}]" value="{% if payment_custom_field[custom_field.custom_field_id] %}{{ payment_custom_field[custom_field.custom_field_id] }}{% else %}{{ custom_field.value }}{% endif %}" placeholder="{{ custom_field.name }}" id="input-payment-custom-field-{{ custom_field.custom_field_id }}" class="form-control time"/>
<div class="input-group-text"><i class="fa-regular fa-calendar"></i></div>
</div>
<div id="error-payment-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
{% endif %}
{% if custom_field.type == 'datetime' %}
<div class="col mb-3{% if custom_field.required %} required{% endif %} custom-field custom-field-{{ custom_field.custom_field_id }}">
<label for="input-payment-custom-field-{{ custom_field.custom_field_id }}" class="form-label">{{ custom_field.name }}</label>
<div class="input-group">
<input type="text" name="payment_custom_field[{{ custom_field.location }}][{{ custom_field.custom_field_id }}]" value="{% if payment_custom_field[custom_field.custom_field_id] %}{{ payment_custom_field[custom_field.custom_field_id] }}{% else %}{{ custom_field.value }}{% endif %}" placeholder="{{ custom_field.name }}" id="input-payment-custom-field-{{ custom_field.custom_field_id }}" class="form-control datetime"/>
<div class="input-group-text"><i class="fa-regular fa-calendar"></i></div>
</div>
<div id="error-payment-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
{% endif %}
{% endif %}
{% endfor %}
{% if shipping_required %}
<div class="col mb-3">
<div class="form-check">
<input type="checkbox" name="address_match" value="1" id="input-address-match" class="form-check-input" checked/> <label for="input-address-match" class="form-check-label">{{ entry_match }}</label>
</div>
</div>
{% endif %}
</div>
</fieldset>
{% endif %}
<fieldset id="shipping-address" style="display: {% if not config_checkout_payment_address %}block{% else %}none{% endif %};">
<legend>{{ text_shipping_address }}</legend>
<div class="row row-cols-1 row-cols-md-2">
{% if config_checkout_payment_address %}
<div class="col mb-3 required">
<label for="input-shipping-firstname" class="form-label">{{ entry_firstname }}</label>
<input type="text" name="shipping_firstname" value="{{ shipping_firstname }}" placeholder="{{ entry_firstname }}" id="input-shipping-firstname" class="form-control"/>
<div id="error-shipping-firstname" class="invalid-feedback"></div>
</div>
<div class="col mb-3 required">
<label for="input-shipping-lastname" class="form-label">{{ entry_lastname }}</label>
<input type="text" name="shipping_lastname" value="{{ shipping_lastname }}" placeholder="{{ entry_lastname }}" id="input-shipping-lastname" class="form-control"/>
<div id="error-shipping-lastname" class="invalid-feedback"></div>
</div>
{% endif %}
<div class="col mb-3">
<label for="input-shipping-company" class="form-label">{{ entry_company }}</label>
<input type="text" name="shipping_company" value="{{ shipping_company }}" placeholder="{{ entry_company }}" id="input-shipping-company" class="form-control"/>
</div>
<div class="col mb-3 required">
<label for="input-shipping-address-1" class="form-label">{{ entry_address_1 }}</label>
<input type="text" name="shipping_address_1" value="{{ shipping_address_1 }}" placeholder="{{ entry_address_1 }}" id="input-shipping-address-1" class="form-control"/>
<div id="error-shipping-address-1" class="invalid-feedback"></div>
</div>
<div class="col mb-3">
<label for="input-shipping-address-2" class="form-label">{{ entry_address_2 }}</label>
<input type="text" name="shipping_address_2" value="{{ shipping_address_2 }}" placeholder="{{ entry_address_2 }}" id="input-shipping-address-2" class="form-control"/>
</div>
<div class="col mb-3 required">
<label for="input-shipping-city" class="form-label">{{ entry_city }}</label>
<input type="text" name="shipping_city" value="{{ shipping_city }}" placeholder="{{ entry_city }}" id="input-shipping-city" class="form-control"/>
<div id="error-shipping-city" class="invalid-feedback"></div>
</div>
<div class="col mb-3 required">
<label for="input-shipping-postcode" class="form-label">{{ entry_postcode }}</label>
<input type="text" name="shipping_postcode" value="{{ shipping_postcode }}" placeholder="{{ entry_postcode }}" id="input-shipping-postcode" class="form-control"/>
<div id="error-shipping-postcode" class="invalid-feedback"></div>
</div>
<div class="col mb-3 required">
<label for="input-shipping-country" class="form-label">{{ entry_country }}</label>
<select name="shipping_country_id" id="input-shipping-country" class="form-select">
<option value="">{{ text_select }}</option>
{% for country in countries %}
<option value="{{ country.country_id }}"{% if country.country_id == shipping_country_id %} selected{% endif %}>{{ country.name }}</option>
{% endfor %}
</select>
<div id="error-shipping-country" class="invalid-feedback"></div>
</div>
<div class="col mb-3 required">
<label for="input-shipping-zone" class="form-label">{{ entry_zone }}</label>
<select name="shipping_zone_id" id="input-shipping-zone" class="form-select" data-oc-value="{{ shipping_zone_id }}"></select>
<div id="error-shipping-zone" class="invalid-feedback"></div>
</div>
{% for custom_field in custom_fields %}
{% if custom_field.location == 'address' %}
{% if custom_field.type == 'select' %}
<div class="col mb-3{% if custom_field.required %} required{% endif %} custom-field custom-field-{{ custom_field.custom_field_id }}">
<label for="input-shipping-custom-field-{{ custom_field.custom_field_id }}" class="form-label">{{ custom_field.name }}</label>
<select name="shipping_custom_field[{{ custom_field.location }}][{{ custom_field.custom_field_id }}]" id="input-shipping-custom-field-{{ custom_field.custom_field_id }}" class="form-select">
<option value="">{{ text_select }}</option>
{% for custom_field_value in custom_field.custom_field_value %}
<option value="{{ custom_field_value.custom_field_value_id }}"{% if shipping_custom_field[custom_field.custom_field_id] and custom_field_value.custom_field_value_id == shipping_custom_field[custom_field.custom_field_id] %} selected{% endif %}>{{ custom_field_value.name }}</option>
{% endfor %}
</select>
<div id="error-shipping-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
{% endif %}
{% if custom_field.type == 'radio' %}
<div class="col mb-3{% if custom_field.required %} required{% endif %} custom-field custom-field-{{ custom_field.custom_field_id }}">
<label class="form-label">{{ custom_field.name }}</label>
<div id="input-shipping-custom-field-{{ custom_field.custom_field_id }}">
{% for custom_field_value in custom_field.custom_field_value %}
<div class="form-check">
<input type="radio" name="shipping_custom_field[{{ custom_field.location }}][{{ custom_field.custom_field_id }}]" value="{{ custom_field_value.custom_field_value_id }}" id="input-shipping-custom-value-{{ custom_field_value.custom_field_value_id }}" class="form-check-input"{% if shipping_custom_field[custom_field.custom_field_id] and custom_field_value.custom_field_value_id in shipping_custom_field[custom_field.custom_field_id] %} checked{% endif %}/>
<label for="input-shipping-custom-value-{{ custom_field_value.custom_field_value_id }}" class="form-check-label">{{ custom_field_value.name }}</label>
</div>
{% endfor %}
</div>
<div id="error-shipping-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
{% endif %}
{% if custom_field.type == 'checkbox' %}
<div class="col mb-3{% if custom_field.required %} required{% endif %} custom-field custom-field-{{ custom_field.custom_field_id }}">
<label class="form-label">{{ custom_field.name }}</label>
<div id="input-shipping-custom-field-{{ custom_field.custom_field_id }}">
{% for custom_field_value in custom_field.custom_field_value %}
<div class="form-check">
<input type="checkbox" name="shipping_custom_field[{{ custom_field.location }}][{{ custom_field.custom_field_id }}][]" value="{{ custom_field_value.custom_field_value_id }}" id="input-shipping-custom-value-{{ custom_field_value.custom_field_value_id }}" class="form-check-input"{% if shipping_custom_field[custom_field.custom_field_id] and custom_field_value.custom_field_value_id in shipping_custom_field[custom_field.custom_field_id] %} checked{% endif %}/>
<label for="input-shipping-custom-value-{{ custom_field_value.custom_field_value_id }}" class="form-check-label">{{ custom_field_value.name }}</label>
</div>
{% endfor %}
</div>
<div id="error-shipping-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
{% endif %}
{% if custom_field.type == 'text' %}
<div class="col mb-3{% if custom_field.required %} required{% endif %} custom-field custom-field-{{ custom_field.custom_field_id }}">
<label for="input-shipping-custom-field-{{ custom_field.custom_field_id }}" class="form-label">{{ custom_field.name }}</label>
<input type="text" name="shipping_custom_field[{{ custom_field.location }}][{{ custom_field.custom_field_id }}]" value="{% if shipping_custom_field[custom_field.custom_field_id] %}{{ shipping_custom_field[custom_field.custom_field_id] }}{% else %}{{ custom_field.value }}{% endif %}" placeholder="{{ custom_field.name }}" id="input-shipping-custom-field-{{ custom_field.custom_field_id }}" class="form-control"/>
<div id="error-shipping-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
{% endif %}
{% if custom_field.type == 'textarea' %}
<div class="col mb-3{% if custom_field.required %} required{% endif %} custom-field custom-field-{{ custom_field.custom_field_id }}">
<label for="input-shipping-custom-field-{{ custom_field.custom_field_id }}" class="form-label">{{ custom_field.name }}</label>
<textarea name="shipping_custom_field[{{ custom_field.location }}][{{ custom_field.custom_field_id }}]" rows="5" placeholder="{% if shipping_custom_field[custom_field.custom_field_id] %}{{ shipping_custom_field[custom_field.custom_field_id] }}{% else %}{{ custom_field.value }}{% endif %}" id="input-shipping-custom-field-{{ custom_field.custom_field_id }}" class="form-control">{{ custom_field.value }}</textarea>
<div id="error-shipping-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
{% endif %}
{% if custom_field.type == 'file' %}
<div class="col mb-3{% if custom_field.required %} required{% endif %} custom-field custom-field-{{ custom_field.custom_field_id }}">
<label class="form-label">{{ custom_field.name }}</label>
<div>
<button type="button" data-oc-toggle="upload" data-oc-url="{{ upload }}" data-oc-size-max="{{ config_file_max_size }}" data-oc-size-error="{{ error_upload_size }}" data-oc-target="#input-shipping-custom-field-{{ custom_field.custom_field_id }}" class="btn btn-light"><i class="fa-solid fa-upload"></i> {{ button_upload }}</button>
<input type="hidden" name="shipping_custom_field[{{ custom_field.location }}][{{ custom_field.custom_field_id }}]" value="{% if shipping_custom_field[custom_field.custom_field_id] %}{{ shipping_custom_field[custom_field.custom_field_id] }}{% endif %}" id="input-shipping-custom-field-{{ custom_field.custom_field_id }}"/>
<div id="error-shipping-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
</div>
{% endif %}
{% if custom_field.type == 'date' %}
<div class="col mb-3{% if custom_field.required %} required{% endif %} custom-field custom-field-{{ custom_field.custom_field_id }}">
<label for="input-shipping-custom-field-{{ custom_field.custom_field_id }}" class="form-label">{{ custom_field.name }}</label>
<div class="input-group">
<input type="text" name="shipping_custom_field[{{ custom_field.location }}][{{ custom_field.custom_field_id }}]" value="{% if shipping_custom_field[custom_field.custom_field_id] %}{{ shipping_custom_field[custom_field.custom_field_id] }}{% else %}{{ custom_field.value }}{% endif %}" placeholder="{{ custom_field.name }}" id="input-shipping-custom-field-{{ custom_field.custom_field_id }}" class="form-control date"/>
<div class="input-group-text"><i class="fa-regular fa-calendar"></i></div>
</div>
<div id="error-shipping-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
{% endif %}
{% if custom_field.type == 'time' %}
<div class="col mb-3{% if custom_field.required %} required{% endif %} custom-field custom-field-{{ custom_field.custom_field_id }}">
<label for="input-shipping-custom-field-{{ custom_field.custom_field_id }}" class="form-label">{{ custom_field.name }}</label>
<div class="input-group">
<input type="text" name="shipping_custom_field[{{ custom_field.location }}][{{ custom_field.custom_field_id }}]" value="{% if shipping_custom_field[custom_field.custom_field_id] %}{{ shipping_custom_field[custom_field.custom_field_id] }}{% else %}{{ custom_field.value }}{% endif %}" placeholder="{{ custom_field.name }}" id="input-shipping-custom-field-{{ custom_field.custom_field_id }}" class="form-control time"/>
<div class="input-group-text"><i class="fa-regular fa-calendar"></i></div>
</div>
<div id="error-shipping-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
{% endif %}
{% if custom_field.type == 'datetime' %}
<div class="col mb-3{% if custom_field.required %} required{% endif %} custom-field custom-field-{{ custom_field.custom_field_id }}">
<label for="input-shipping-custom-field-{{ custom_field.custom_field_id }}" class="form-label">{{ custom_field.name }}</label>
<div class="input-group">
<input type="text" name="shipping_custom_field[{{ custom_field.location }}][{{ custom_field.custom_field_id }}]" value="{% if shipping_custom_field[custom_field.custom_field_id] %}{{ shipping_custom_field[custom_field.custom_field_id] }}{% else %}{{ custom_field.value }}{% endif %}" placeholder="{{ custom_field.name }}" id="input-shipping-custom-field-{{ custom_field.custom_field_id }}" class="form-control datetime"/>
<div class="input-group-text"><i class="fa-regular fa-calendar"></i></div>
</div>
<div id="error-shipping-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
{% endif %}
{% endif %}
{% endfor %}
</div>
</fieldset>
<div id class="row row-cols-1 row-cols-md-2">
<div id="password" class="col mb-3 required">
<fieldset>
<legend>{{ text_your_password }}</legend>
<div class="row">
<div class="col mb-3 required">
<label for="input-password" class="form-label">{{ entry_password }}</label> <input type="password" name="password" value="" placeholder="{{ entry_password }}" id="input-password" class="form-control"/>
<div id="error-password" class="invalid-feedback"></div>
</div>
</div>
</fieldset>
</div>
<div class="col mb-3 required">{{ captcha }}</div>
</div>
<div id class="row">
<div class="col">
<div class="form-check form-switch form-switch-lg">
<label for="input-newsletter" class="form-check-label">{{ entry_newsletter }}</label>
<input type="checkbox" name="newsletter" value="1" id="input-newsletter" class="form-check-input"/>
</div>
{% if text_agree %}
<div id="register-agree" class="form-check form-switch form-switch-lg">
<label class="form-check-label">{{ text_agree }}</label>
<input type="checkbox" name="agree" value="1" id="input-register-agree" class="form-check-input"{% if agree %} checked{% endif %}/>
</div>
{% endif %}
<button type="submit" id="button-register" class="btn btn-primary mt-2">{{ button_continue }}</button>
</div>
</div>
</form>
<script type="text/javascript"><!--
// Account
$('input[name=\'account\']').on('click', function() {
if ($(this).val() == 1) {
$('#password').removeClass('d-none');
} else {
// If guest hide password field
$('#password').addClass('d-none');
}
if ($(this).val() == 1) {
$('#register-agree').removeClass('d-none');
} else {
// If guest hide register agree field
$('#register-agree').addClass('d-none');
}
});
$('input[name=\'account\']:checked').trigger('click');
// Customer Group
$('#input-customer-group').on('change', function() {
var element = this;
chain.attach(function() {
return $.ajax({
url: 'index.php?route=account/custom_field&language={{ language }}&customer_group_id=' + $(element).val(),
dataType: 'json',
beforeSend: function() {
$(element).prop('disabled', true);
},
complete: function() {
$(element).prop('disabled', false);
},
success: function(json) {
$('.custom-field').addClass('d-none');
$('.custom-field').removeClass('required');
for (i = 0; i < json.length; i++) {
custom_field = json[i];
$('.custom-field-' + custom_field['custom_field_id']).removeClass('d-none');
if (custom_field['required']) {
$('.custom-field-' + custom_field['custom_field_id']).addClass('required');
}
}
},
error: function(xhr, ajaxOptions, thrownError) {
console.log(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
}
});
});
});
$('#input-customer-group').trigger('change');
$('#input-address-match').on('change', function() {
if ($(this).prop('checked')) {
$('#shipping-address').hide();
} else {
$('#shipping-address').show();
}
});
$('#form-register').on('submit', function(e) {
e.preventDefault();
var element = this;
chain.attach(function() {
return $.ajax({
url: 'index.php?route=checkout/register.save&language={{ language }}',
type: 'post',
dataType: 'json',
data: $('#form-register').serialize(),
contentType: 'application/x-www-form-urlencoded',
beforeSend: function() {
$('#button-register').button('loading');
},
complete: function() {
$('#button-register').button('reset');
},
success: function(json) {
console.log(json);
$('#form-register').find('.is-invalid').removeClass('is-invalid');
$('#form-register').find('.invalid-feedback').removeClass('d-block');
if (json['redirect']) {
location = json['redirect'];
}
if (json['error']) {
if (json['error']['warning']) {
$('#alert').prepend('<div class="alert alert-danger alert-dismissible"><i class="fa-solid fa-circle-exclamation"></i> ' + json['error']['warning'] + ' <button type="button" class="btn-close" data-bs-dismiss="alert"></button></div>');
}
for (key in json['error']) {
$('#input-' + key.replaceAll('_', '-')).addClass('is-invalid').find('.form-control, .form-select, .form-check-input, .form-check-label').addClass('is-invalid');
$('#error-' + key.replaceAll('_', '-')).html(json['error'][key]).addClass('d-block');
}
}
if (json['success']) {
$('#alert').prepend('<div class="alert alert-success alert-dismissible"><i class="fa-solid fa-circle-check"></i> ' + json['success'] + ' <button type="button" class="btn-close" data-bs-dismiss="alert"></button></div>');
if ($('#input-register').prop('checked')) {
$('input[name=\'account\']').prop('disabled', true);
$('#input-customer-group').prop('disabled', true);
$('#input-password').prop('disabled', true);
$('#input-captcha').prop('disabled', true);
$('#input-register-agree').prop('disabled', true);
}
$('#input-shipping-method').val('');
$('#input-payment-method').val('');
$('#checkout-confirm').load('index.php?route=checkout/confirm.confirm&language={{ language }}');
}
},
error: function(xhr, ajaxOptions, thrownError) {
console.log(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
}
});
});
});
$('select[name$=\'_country_id\']').on('change', function() {
var element = this;
var type = $(this).attr('name').slice(0, -11);
chain.attach(function() {
return $.ajax({
url: 'index.php?route=localisation/country&language={{ language }}&country_id=' + $('#input-' + type + '-country').val(),
dataType: 'json',
beforeSend: function() {
$(element).prop('disabled', true);
$('#input-' + type + '-zone').prop('disabled', true);
},
complete: function() {
$(element).prop('disabled', false);
$('#input-' + type + '-zone').prop('disabled', false);
},
success: function(json) {
if (json['postcode_required'] == '1') {
$('#input-' + type + '-postcode').parent().addClass('required');
} else {
$('#input-' + type + '-postcode').parent().removeClass('required');
}
html = '<option value="">{{ text_select|escape('js') }}</option>';
if (json['zone'] && json['zone'] != '') {
for (i = 0; i < json['zone'].length; i++) {
html += '<option value="' + json['zone'][i]['zone_id'] + '"';
if (json['zone'][i]['zone_id'] == $('#input-' + type + '-zone').attr('data-oc-value')) {
html += ' selected';
}
html += '>' + json['zone'][i]['name'] + '</option>';
}
} else {
html += '<option value="0" selected>{{ text_none|escape('js') }}</option>';
}
$('#input-' + type + '-zone').html(html);
},
error: function(xhr, ajaxOptions, thrownError) {
console.log(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
}
});
});
});
$('select[name$=\'_country_id\']').trigger('change');
//--></script>

View File

@ -0,0 +1,382 @@
<fieldset id="shipping-address" style="display: {% if payment_address_required and not addresses %}none{% else %}block{% endif %};">
<legend>{{ heading_title }}</legend>
<div id="shipping-addresses" style="display: {% if addresses %}block{% else %}none{% endif %};">
<div class="form-check">
<input type="radio" name="shipping_existing" value="1" id="input-shipping-existing" class="form-check-input"{% if addresses %} checked{% endif %}/>
<label for="input-shipping-existing" class="form-check-label">{{ text_address_existing }}</label>
</div>
<div class="form-check">
<input type="radio" name="shipping_existing" value="0" id="input-shipping-new" class="form-check-input"{% if not addresses %} checked{% endif %}/>
<label for="input-shipping-new" class="form-check-label">{{ text_address_new }}</label>
</div>
</div>
<div id="shipping-existing" style="display: {% if addresses %}block{% else %}none{% endif %};">
<select name="address_id" id="input-shipping-address" class="form-select">
<option value="">{{ text_select }}</option>
{% for address in addresses %}
<option value="{{ address.address_id }}"{% if address.address_id == address_id %} selected{% endif %}>{{ address.firstname }} {{ address.lastname }},{% if address.company %} {{ address.company }},{% endif %} {{ address.address_1 }}, {{ address.city }}, {{ address.zone }}, {{ address.country }}</option>
{% endfor %}
</select>
<div id="error-shipping-address" class="invalid-feedback"></div>
</div>
<br/>
<div id="shipping-new" style="display: {% if not addresses %}block{% else %}none{% endif %};">
<form id="form-shipping-address">
<div class="row row-cols-1 row-cols-md-2">
<div class="col mb-3 required">
<label for="input-shipping-firstname" class="form-label">{{ entry_firstname }}</label >
<input type="text" name="firstname" value="" placeholder="{{ entry_firstname }}" id="input-shipping-firstname" class="form-control"/>
<div id="error-shipping-firstname" class="invalid-feedback"></div>
</div>
<div class="col mb-3 required">
<label for="input-shipping-lastname" class="form-label">{{ entry_lastname }}</label>
<input type="text" name="lastname" value="" placeholder="{{ entry_lastname }}" id="input-shipping-lastname" class="form-control"/>
<div id="error-shipping-lastname" class="invalid-feedback"></div>
</div>
<div class="col mb-3">
<label for="input-shipping-company" class="form-label">{{ entry_company }}</label>
<input type="text" name="company" value="" placeholder="{{ entry_company }}" id="input-shipping-company" class="form-control"/>
</div>
<div class="col mb-3 required">
<label for="input-shipping-address-1" class="form-label">{{ entry_address_1 }}</label>
<input type="text" name="address_1" value="" placeholder="{{ entry_address_1 }}" id="input-shipping-address-1" class="form-control"/>
<div id="error-shipping-address-1" class="invalid-feedback"></div>
</div>
<div class="col mb-3">
<label for="input-shipping-address-2" class="form-label">{{ entry_address_2 }}</label>
<input type="text" name="address_2" value="" placeholder="{{ entry_address_2 }}" id="input-shipping-address-2" class="form-control"/>
</div>
<div class="col mb-3 required">
<label for="input-shipping-city" class="form-label">{{ entry_city }}</label>
<input type="text" name="city" value="" placeholder="{{ entry_city }}" id="input-shipping-city" class="form-control"/>
<div id="error-shipping-city" class="invalid-feedback"></div>
</div>
<div class="col mb-3 required">
<label for="input-shipping-postcode" class="form-label">{{ entry_postcode }}</label>
<input type="text" name="postcode" value="{{ postcode }}" placeholder="{{ entry_postcode }}" id="input-shipping-postcode" class="form-control"/>
<div id="error-shipping-postcode" class="invalid-feedback"></div>
</div>
<div class="col mb-3 required">
<label for="input-shipping-country" class="form-label">{{ entry_country }}</label>
<select name="country_id" id="input-shipping-country" class="form-select">
<option value="0">{{ text_select }}</option>
{% for country in countries %}
<option value="{{ country.country_id }}"{% if country.country_id == country_id %} selected{% endif %}>{{ country.name }}</option>
{% endfor %}
</select>
<div id="error-shipping-country" class="invalid-feedback"></div>
</div>
<div class="col mb-3 required">
<label for="input-shipping-zone" class="form-label">{{ entry_zone }}</label>
<select name="zone_id" id="input-shipping-zone" class="form-select"></select>
<div id="error-shipping-zone" class="invalid-feedback"></div>
</div>
{% for custom_field in custom_fields %}
{% if custom_field.type == 'select' %}
<div class="col mb-3{% if custom_field.required %} required{% endif %} custom-field custom-field-{{ custom_field.custom_field_id }}">
<label for="input-shipping-custom-field-{{ custom_field.custom_field_id }}" class="form-label">{{ custom_field.name }}</label>
<select name="custom_field[{{ custom_field.custom_field_id }}]" id="input-shipping-custom-field-{{ custom_field.custom_field_id }}" class="form-select">
<option value="">{{ text_select }}</option>
{% for custom_field_value in custom_field.custom_field_value %}
<option value="{{ custom_field_value.custom_field_value_id }}">{{ custom_field_value.name }}</option>
{% endfor %}
</select>
<div id="error-shipping-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
{% endif %}
{% if custom_field.type == 'radio' %}
<div class="col mb-3{% if custom_field.required %} required{% endif %} custom-field custom-field-{{ custom_field.custom_field_id }}">
<label class="form-label">{{ custom_field.name }}</label>
<div id="input-shipping-custom-field-{{ custom_field.custom_field_id }}">
{% for custom_field_value in custom_field.custom_field_value %}
<div class="form-check">
<input type="radio" name="custom_field[{{ custom_field.custom_field_id }}]" value="{{ custom_field_value.custom_field_value_id }}" id="input-shipping-custom-value-{{ custom_field_value.custom_field_value_id }}" class="form-check-input"/>
<label for="input-shipping-custom-value-{{ custom_field_value.custom_field_value_id }}" class="form-check-label">{{ custom_field_value.name }}</label>
</div>
{% endfor %}
</div>
<div id="error-shipping-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
{% endif %}
{% if custom_field.type == 'checkbox' %}
<div class="col mb-3{% if custom_field.required %} required{% endif %} custom-field custom-field-{{ custom_field.custom_field_id }}">
<label class="form-label">{{ custom_field.name }}</label>
<div id="input-shipping-custom-field-{{ custom_field.custom_field_id }}">
{% for custom_field_value in custom_field.custom_field_value %}
<div class="form-check">
<input type="checkbox" name="custom_field[{{ custom_field.custom_field_id }}][]" value="{{ custom_field_value.custom_field_value_id }}" id="input-shipping-custom-value-{{ custom_field_value.custom_field_value_id }}" class="form-check-input"/>
<label for="input-shipping-custom-value-{{ custom_field_value.custom_field_value_id }}" class="form-check-label">{{ custom_field_value.name }}</label>
</div>
{% endfor %}
</div>
<div id="error-shipping-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
{% endif %}
{% if custom_field.type == 'text' %}
<div class="col mb-3{% if custom_field.required %} required{% endif %} custom-field custom-field-{{ custom_field.custom_field_id }}">
<label for="input-shipping-custom-field-{{ custom_field.custom_field_id }}" class="form-label">{{ custom_field.name }}</label>
<input type="text" name="custom_field[{{ custom_field.custom_field_id }}]" value="{{ custom_field.value }}" placeholder="{{ custom_field.name }}" id="input-shipping-custom-field-{{ custom_field.custom_field_id }}" class="form-control"/>
<div id="error-shipping-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
{% endif %}
{% if custom_field.type == 'textarea' %}
<div class="col mb-3{% if custom_field.required %} required{% endif %} custom-field custom-field-{{ custom_field.custom_field_id }}">
<label for="input-shipping-custom-field-{{ custom_field.custom_field_id }}" class="form-label">{{ custom_field.name }}</label>
<textarea name="custom_field[{{ custom_field.custom_field_id }}]" rows="5" placeholder="{{ custom_field.value }}" id="input-shipping-custom-field-{{ custom_field.custom_field_id }}" class="form-control">{{ custom_field.value }}</textarea>
<div id="error-shipping-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
{% endif %}
{% if custom_field.type == 'file' %}
<div class="col mb-3{% if custom_field.required %} required{% endif %} custom-field custom-field-{{ custom_field.custom_field_id }}">
<label class="form-label">{{ custom_field.name }}</label>
<div>
<button type="button" data-oc-toggle="upload" data-oc-url="{{ upload }}" data-oc-size-max="{{ config_file_max_size }}" data-oc-size-error="{{ error_upload_size }}" data-oc-target="#input-shipping-custom-field-{{ custom_field.custom_field_id }}" class="btn btn-light"><i class="fa-solid fa-upload"></i> {{ button_upload }}</button>
<input type="hidden" name="custom_field{{ custom_field.custom_field_id }}]" value="" id="input-shipping-custom-field-{{ custom_field.custom_field_id }}"/>
<div id="error-shipping-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
</div>
{% endif %}
{% if custom_field.type == 'date' %}
<div class="col mb-3{% if custom_field.required %} required{% endif %} custom-field custom-field-{{ custom_field.custom_field_id }}">
<label for="input-shipping-custom-field-{{ custom_field.custom_field_id }}" class="form-label">{{ custom_field.name }}</label>
<div class="input-group">
<input type="text" name="custom_field[{{ custom_field.custom_field_id }}]" value="{{ custom_field.value }}" placeholder="{{ custom_field.name }}" id="input-shipping-custom-field-{{ custom_field.custom_field_id }}" class="form-control date"/>
<div class="input-group-text"><i class="fa-regular fa-calendar"></i></div>
</div>
<div id="error-shipping-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
{% endif %}
{% if custom_field.type == 'time' %}
<div class="col mb-3{% if custom_field.required %} required{% endif %} custom-field custom-field-{{ custom_field.custom_field_id }}">
<label for="input-shipping-custom-field-{{ custom_field.custom_field_id }}" class="form-label">{{ custom_field.name }}</label>
<div class="input-group">
<input type="text" name="custom_field[{{ custom_field.custom_field_id }}]" value="{{ custom_field.value }}" placeholder="{{ custom_field.name }}" id="input-shipping-custom-field-{{ custom_field.custom_field_id }}" class="form-control time"/>
<div class="input-group-text"><i class="fa-regular fa-calendar"></i></div>
</div>
<div id="error-shipping-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
{% endif %}
{% if custom_field.type == 'datetime' %}
<div class="col mb-3{% if custom_field.required %} required{% endif %} custom-field custom-field-{{ custom_field.custom_field_id }}">
<label for="input-shipping-custom-field-{{ custom_field.custom_field_id }}" class="form-label">{{ custom_field.name }}</label>
<div class="input-group">
<input type="text" name="custom_field[{{ custom_field.custom_field_id }}]" value="{{ custom_field.value }}" placeholder="{{ custom_field.name }}" id="input-shipping-custom-field-{{ custom_field.custom_field_id }}" class="form-control datetime"/>
<div class="input-group-text"><i class="fa-regular fa-calendar"></i></div>
</div>
<div id="error-shipping-custom-field-{{ custom_field.custom_field_id }}" class="invalid-feedback"></div>
</div>
{% endif %}
{% endfor %}
</div>
<div class="text-end mb-3">
<button type="submit" id="button-shipping-address" class="btn btn-primary">{{ button_continue }}</button>
</div>
</form>
</div>
</fieldset>
<script type="text/javascript"><!--
$('input[name=\'shipping_existing\']').on('change', function () {
if ($(this).val() == 1) {
$('#shipping-existing').show();
$('#shipping-new').hide();
} else {
$('#shipping-existing').hide();
$('#shipping-new').show();
}
});
// Existing Shipping Address
$('#input-shipping-address').on('change', function () {
var element = this;
chain.attach(function () {
return $.ajax({
url: 'index.php?route=checkout/shipping_address.address&language={{ language }}&address_id=' + $(element).val(),
dataType: 'json',
beforeSend: function () {
$(element).prop('disabled', true);
},
complete: function () {
$(element).prop('disabled', false);
},
success: function (json) {
console.log(json);
$('#input-shipping-address').removeClass('is-invalid');
$('#error-shipping-address').removeClass('d-block');
if (json['redirect']) {
location = json['redirect'];
}
if (json['error']) {
$('#input-shipping-address').addClass('is-invalid');
$('#error-shipping-address').html(json['error']).addClass('d-block');
}
if (json['success']) {
$('#alert').prepend('<div class="alert alert-success alert-dismissible"><i class="fa-solid fa-circle-check"></i> ' + json['success'] + ' <button type="button" class="btn-close" data-bs-dismiss="alert"></button></div>');
$('#input-shipping-method').val('');
$('#input-payment-method').val('');
$('#checkout-confirm').load('index.php?route=checkout/confirm.confirm&language={{ language }}');
}
},
error: function (xhr, ajaxOptions, thrownError) {
console.log(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
}
});
});
});
// New Shipping Address
$('#form-shipping-address').on('submit', function (e) {
e.preventDefault();
chain.attach(function () {
return $.ajax({
url: 'index.php?route=checkout/shipping_address.save&language={{ language }}',
type: 'post',
data: $('#form-shipping-address').serialize(),
dataType: 'json',
contentType: 'application/x-www-form-urlencoded',
beforeSend: function () {
$('#button-shipping-address').button('loading');
},
complete: function () {
$('#button-shipping-address').button('reset');
},
success: function (json) {
console.log(json);
$('#form-shipping-address').find('.is-invalid').removeClass('is-invalid');
$('#form-shipping-address').find('.invalid-feedback').removeClass('d-block');
if (json['redirect']) {
location = json['redirect'];
}
if (json['error']) {
if (json['error']['warning']) {
$('#alert').prepend('<div class="alert alert-danger alert-dismissible"><i class="fa-solid fa-circle-exclamation"></i> ' + json['error']['warning'] + ' <button type="button" class="btn-close" data-bs-dismiss="alert"></button></div>');
}
for (i in json['error']) {
for (key in json['error']) {
$('#input-shipping-' + key.replaceAll('_', '-')).addClass('is-invalid').find('.form-control, .form-select, .form-check-input, .form-check-label').addClass('is-invalid');
$('#error-shipping-' + key.replaceAll('_', '-')).html(json['error'][key]).addClass('d-block');
}
}
}
if (json['success']) {
$('#alert').prepend('<div class="alert alert-success alert-dismissible"><i class="fa-solid fa-circle-check"></i> ' + json['success'] + ' <button type="button" class="btn-close" data-bs-dismiss="alert"></button></div>');
$('#form-shipping-address')[0].reset();
var html = '<option value="">{{ text_select|escape('js') }}</option>';
if (json['addresses']) {
for (i in json['addresses']) {
html += '<option value="' + json['addresses'][i]['address_id'] + '">' + json['addresses'][i]['firstname'] + ' ' + json['addresses'][i]['lastname'] + ', ' + (json['addresses'][i]['company'] ? json['addresses'][i]['company'] + ', ' : '') + json['addresses'][i]['address_1'] + ', ' + json['addresses'][i]['city'] + ', ' + json['addresses'][i]['zone'] + ', ' + json['addresses'][i]['country'] + '</option>';
}
}
// Shipping Address
$('#input-shipping-address').html(html);
$('#input-shipping-address').val(json['address_id']);
$('#shipping-addresses').css({display: 'block'});
$('#input-shipping-existing').trigger('click');
// Payment Address
var payment_address_id = $('#input-payment-address').val();
$('#input-payment-address').html(html);
if (payment_address_id) {
$('#input-payment-address').val(payment_address_id);
}
$('#payment-addresses').css({display: 'block'});
$('#input-payment-existing').trigger('click');
$('#input-shipping-method').val('');
$('#input-payment-method').val('');
$('#checkout-confirm').load('index.php?route=checkout/confirm.confirm&language={{ language }}');
}
},
error: function (xhr, ajaxOptions, thrownError) {
console.log(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
}
});
});
});
$('#input-shipping-country').on('change', function () {
var element = this;
chain.attach(function () {
return $.ajax({
url: 'index.php?route=localisation/country&language={{ language }}&country_id=' + $('#input-shipping-country').val(),
dataType: 'json',
beforeSend: function () {
$(element).prop('disabled', true);
$('#input-shipping-zone').prop('disabled', true);
},
complete: function () {
$(element).prop('disabled', false);
$('#input-shipping-zone').prop('disabled', false);
},
success: function (json) {
if (json['postcode_required'] == '1') {
$('#input-shipping-postcode').parent().addClass('required');
} else {
$('#input-shipping-postcode').parent().removeClass('required');
}
html = '<option value="">{{ text_select|escape('js') }}</option>';
if (json['zone'] && json['zone'] != '') {
for (i = 0; i < json['zone'].length; i++) {
html += '<option value="' + json['zone'][i]['zone_id'] + '"';
if (json['zone'][i]['zone_id'] == '{{ zone_id }}') {
html += ' selected';
}
html += '>' + json['zone'][i]['name'] + '</option>';
}
} else {
html += '<option value="0" selected>{{ text_none|escape('js') }}</option>';
}
$('#input-shipping-zone').html(html);
},
error: function (xhr, ajaxOptions, thrownError) {
console.log(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
}
});
});
});
$('#input-shipping-country').trigger('change');
//--></script>

View File

@ -0,0 +1,142 @@
<fieldset>
<legend>{{ heading_title }}</legend>
<div class="input-group">
<span class="input-group-text"><i class="fa fa-truck"></i></span><input type="text" name="shipping_method" value="{{ shipping_method }}" placeholder="{{ entry_shipping_method }}" id="input-shipping-method" class="form-control" readonly/>
<button type="button" id="button-shipping-methods" class="btn btn-primary">{{ button_choose }}</button>
</div>
<input type="hidden" name="code" value="{{ code }}" id="input-shipping-code"/>
<div id="error-shipping-method" class="invalid-feedback"></div>
</fieldset>
<script type="text/javascript"><!--
$('#button-shipping-methods').on('click', function() {
var element = this;
chain.attach(function() {
return $.ajax({
url: 'index.php?route=checkout/shipping_method.quote&language={{ language }}',
dataType: 'json',
beforeSend: function() {
$(element).button('loading');
},
complete: function() {
$(element).button('reset');
},
success: function(json) {
console.log(json);
$('#input-shipping-method').removeClass('is-invalid');
$('#error-shipping-method').removeClass('d-block');
if (json['error']) {
$('#input-shipping-method').addClass('is-invalid');
$('#error-shipping-method').html(json['error']).addClass('d-block');
}
if (json['shipping_methods']) {
$('#modal-shipping').remove();
html = '<div id="modal-shipping" class="modal">';
html += ' <div class="modal-dialog modal-dialog-centered">';
html += ' <div class="modal-content">';
html += ' <div class="modal-header">';
html += ' <h5 class="modal-title"><i class="fa fa-truck"></i> {{ text_shipping_method|escape('js') }}</h5>';
html += ' <button type="button" class="btn-close" data-bs-dismiss="modal"></button>';
html += ' </div>';
html += ' <div class="modal-body">';
html += ' <form id="form-shipping-method">';
html += ' <p>{{ text_shipping|escape('js') }}</p>';
for (i in json['shipping_methods']) {
html += '<p><strong>' + json['shipping_methods'][i]['name'] + '</strong></p>';
if (!json['shipping_methods'][i]['error']) {
for (j in json['shipping_methods'][i]['quote']) {
html += '<div class="form-check">';
var code = i + '-' + j.replaceAll('_', '-');
html += '<input type="radio" name="shipping_method" value="' + json['shipping_methods'][i]['quote'][j]['code'] + '" id="input-shipping-method-' + code + '"';
if (json['shipping_methods'][i]['quote'][j]['code'] == $('#input-shipping-code').val()) {
html += ' checked';
}
html += '/>';
html += ' <label for="input-shipping-method-' + code + '">' + json['shipping_methods'][i]['quote'][j]['name'] + ' - ' + json['shipping_methods'][i]['quote'][j]['text'] + '</label>';
html += '</div>';
}
} else {
html += '<div class="alert alert-danger">' + json['shipping_methods'][i]['error'] + '</div>';
}
}
html += ' <div class="text-end">';
html += ' <button type="submit" id="button-shipping-method" class="btn btn-primary">{{ button_continue|escape('js') }}</button>';
html += ' </div>';
html += ' </form>';
html += ' </div>';
html += ' </div>';
html += ' </div>';
html += '</div>';
$('body').append(html);
$('#modal-shipping').modal('show');
}
},
error: function(xhr, ajaxOptions, thrownError) {
console.log(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
}
});
});
});
$(document).on('submit', '#form-shipping-method', function(e) {
e.preventDefault();
var element = this;
chain.attach(function() {
return $.ajax({
url: 'index.php?route=checkout/shipping_method.save&language={{ language }}',
type: 'post',
data: $('#form-shipping-method').serialize(),
dataType: 'json',
contentType: 'application/x-www-form-urlencoded',
beforeSend: function() {
$('#button-shipping-method').button('loading');
},
complete: function() {
$('#button-shipping-method').button('reset');
},
success: function(json) {
console.log(json);
if (json['redirect']) {
location = json['redirect'];
}
if (json['error']) {
$('#alert').prepend('<div class="alert alert-danger alert-dismissible"><i class="fa-solid fa-circle-exclamation"></i> ' + json['error'] + ' <button type="button" class="btn-close" data-bs-dismiss="alert"></button></div>');
}
if (json['success']) {
$('#alert').prepend('<div class="alert alert-success alert-dismissible"><i class="fa-solid fa-circle-check"></i> ' + json['success'] + ' <button type="button" class="btn-close" data-bs-dismiss="alert"></button></div>');
$('#modal-shipping').modal('hide');
$('#input-shipping-method').val($('input[name=\'shipping_method\']:checked').parent().find('label').text());
$('#input-shipping-code').val($('input[name=\'shipping_method\']:checked').val());
$('#input-payment-method').val('');
$('#checkout-confirm').load('index.php?route=checkout/confirm.confirm&language={{ language }}');
}
},
error: function(xhr, ajaxOptions, thrownError) {
console.log(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
}
});
});
});
//--></script>

View File

@ -0,0 +1,82 @@
{{ header }}
<div id="account-voucher" class="container">
<ul class="breadcrumb">
{% for breadcrumb in breadcrumbs %}
<li class="breadcrumb-item"><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li>
{% endfor %}
</ul>
{% if error_warning %}
<div class="alert alert-danger alert-dismissible"><i class="fa-solid fa-circle-exclamation"></i> {{ error_warning }}</div>
{% endif %}
<div class="row">{{ column_left }}
<div id="content" class="col">{{ content_top }}
<h1>{{ heading_title }}</h1>
<p>{{ text_description }}</p>
<form id="form-voucher" action="{{ save }}" method="post" data-oc-toggle="ajax">
<div class="row mb-3 required">
<label for="input-to-name" class="col-sm-2 col-form-label">{{ entry_to_name }}</label>
<div class="col-sm-10">
<input type="text" name="to_name" value="{{ to_name }}" placeholder="{{ entry_to_name }}" id="input-to-name" class="form-control"/>
<div id="error-to-name" class="invalid-feedback"></div>
</div>
</div>
<div class="row mb-3 required">
<label for="input-to-email" class="col-sm-2 col-form-label">{{ entry_to_email }}</label>
<div class="col-sm-10">
<input type="text" name="to_email" value="{{ to_email }}" placeholder="{{ entry_to_email }}" id="input-to-email" class="form-control"/>
<div id="error-to-email" class="invalid-feedback"></div>
</div>
</div>
<div class="row mb-3 required">
<label for="input-from-name" class="col-sm-2 col-form-label">{{ entry_from_name }}</label>
<div class="col-sm-10">
<input type="text" name="from_name" value="{{ from_name }}" placeholder="{{ entry_from_name }}" id="input-from-name" class="form-control"/>
<div id="error-from-name" class="invalid-feedback"></div>
</div>
</div>
<div class="row mb-3 required">
<label for="input-from-email" class="col-sm-2 col-form-label">{{ entry_from_email }}</label>
<div class="col-sm-10">
<input type="text" name="from_email" value="{{ from_email }}" placeholder="{{ entry_from_email }}" id="input-from-email" class="form-control"/>
<div id="error-from-email" class="invalid-feedback"></div>
</div>
</div>
<div class="row mb-3 required">
<label class="col-sm-2 col-form-label">{{ entry_theme }}</label>
<div class="col-sm-10">
<div id="input-theme">
{% for voucher_theme in voucher_themes %}
<div class="form-check">
<input type="radio" name="voucher_theme_id" value="{{ voucher_theme.voucher_theme_id }}" id="input-theme-{{ voucher_theme.voucher_theme_id }}" class="form-check-input"{% if voucher_theme.voucher_theme_id == voucher_theme_id %} checked{% endif %}/> <label for="input-theme-{{ voucher_theme.voucher_theme_id }}" class="form-check-label">{{ voucher_theme.name }}</label>
</div>
{% endfor %}
</div>
<div id="error-theme" class="invalid-feedback"></div>
</div>
</div>
<div class="row mb-3">
<label for="input-message" class="col-sm-2 col-form-label"><span data-bs-toggle="tooltip" title="{{ help_message }}" class="col-sm-2 col-form-label">{{ entry_message }}</span></label>
<div class="col-sm-10">
<textarea name="message" cols="40" rows="5" placeholder="{{ entry_message }}" id="input-message" class="form-control">{{ message }}</textarea>
</div>
</div>
<div class="row mb-3 required">
<label for="input-amount" class="col-sm-2 col-form-label"><span data-bs-toggle="tooltip" title="{{ help_amount }}">{{ entry_amount }}</span></label>
<div class="col-sm-10">
<input type="text" name="amount" value="{{ amount }}" placeholder="{{ entry_amount }}" id="input-amount" class="form-control" size="5"/>
<div id="error-amount" class="invalid-feedback"></div>
</div>
</div>
<div class="text-end">
<div class="form-check form-switch form-switch-lg form-check-reverse form-check-inline">
<label class="form-check-label">{{ text_agree }}</label> <input type="hidden" name="agree" value="0"/> <input type="checkbox" name="agree" value="1" class="form-check-input"/>
</div>
<button type="submit" class="btn btn-primary">{{ button_continue }}</button>
</div>
</form>
{{ content_bottom }}</div>
{{ column_right }}</div>
</div>
{{ footer }}

View File

@ -0,0 +1,37 @@
{{ header }}
<div id="cms-blog" class="container">
<ul class="breadcrumb">
{% for breadcrumb in breadcrumbs %}
<li class="breadcrumb-item"><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li>
{% endfor %}
</ul>
<div class="row">
{{ column_left }}
<div id="content" class="col">
{{ content_top }}
<h2>{{ heading_title }}</h2>
{% if thumb %}
<img src="{{ thumb }}" alt="{{ heading_title }}" title="{{ heading_title }}" class="img-thumbnail"/>
{% endif %}
<div>{{ description }}</div>
<hr/>
<div id="comment">{{ comment }}</div>
{{ content_bottom }}
</div>
{{ column_right }}
</div>
</div>
<script type="text/javascript"><!--
$('#comment').on('click', '.pagination a', function(e) {
e.preventDefault();
$('#comment').load(this.href);
});
//--></script>
{{ footer }}

View File

@ -0,0 +1,62 @@
{{ header }}
<div id="product-category" class="container">
<ul class="breadcrumb">
{% for breadcrumb in breadcrumbs %}
<li class="breadcrumb-item"><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li>
{% endfor %}
</ul>
<div class="row">{{ column_left }}
<div id="content" class="col">
{{ content_top }}
{% if topics %}
<h3>{{ text_refine }}</h3>
<div class="input-group dropdown mb-3">
<input type="text" name="filter_search" value="{{ filter_search }}" placeholder="{{ text_search }}" id="input-search" class="form-control"/>
<select name="topic_id" id="input-topic" class="form-select">
{% for topic in topics %}
<option value="{{ topic.topic_id }}"{% if topic.topic_id == topic_id %} selected{% endif %}>{{ topic.name }}</option>
{% endfor %}
</select> <a href="{{ continue }}" class="btn btn-primary">{{ button_search }}</a>
</div>
{% endif %}
{% if articles %}
{% for article in articles %}
<div class="mb-3">
<h2><a href="{{ article.href }}">{{ article.name }}</a></h2>
{% if article.image %}
<div class="article-image"><a href="{{ article.href }}"><img src="{{ article.image }}" title="{{ article.name }}" alt="{{ article.name }}" class="img-responsive"/></a></div>
{% endif %}
<ul class="list-inline">
<li class="list-inline-item">By <a href="{{ article.filter_author }}">{{ article.author }}</a></li>
<li class="list-inline-item">{{ article.date_added }}</li>
<li class="list-inline-item">{{ article.comment_total }} Comments</li>
</ul>
<div class="mb-3">{{ article.description }}</div>
<a href="{{ article.href }}" class="btn btn-primary">{{ button_continue }}</a>
</div>
{% endfor %}
<div class="row">
<div class="col-sm-6 text-start">{{ pagination }}</div>
<div class="col-sm-6 text-end">{{ results }}</div>
</div>
{% else %}
<p>{{ text_no_results }}</p>
{% endif %}
{{ content_bottom }}
</div>
{{ column_right }}
</div>
</div>
{{ footer }}

View File

@ -0,0 +1,82 @@
<form id="form-comment">
<div id="comment">{{ list }}</div>
<h2>{{ text_write }}</h2>
{% if review_guest %}
<div class="mb-3 required">
<label for="input-author" class="form-label">{{ entry_author }}</label>
<input type="text" name="author" value="{{ author }}" id="input-author" class="form-control"/>
<div id="error-author" class="invalid-feedback"></div>
</div>
<div class="mb-3 required">
<label for="input-comment" class="form-label">{{ entry_comment }}</label>
<textarea name="text" rows="5" id="input-comment" class="form-control"></textarea>
<div id="error-comment" class="invalid-feedback"></div>
</div>
{{ captcha }}
<div class="row">
<div class="col">
<a href="{{ back }}" class="btn btn-light">{{ button_back }}</a>
</div>
<div class="col text-end">
<button type="submit" id="button-comment" class="btn btn-primary">{{ button_continue }}</button>
</div>
</div>
{% else %}
{{ text_login }}
{% endif %}
</form>
<script type="text/javascript"><!--
$('#comment').on('click', '.pagination a', function(e) {
e.preventDefault();
$('#comment').load(this.href);
});
// Forms
$('#form-comment').on('submit', function(e) {
e.preventDefault();
var element = this;
$.ajax({
url: 'index.php?route=cms/comment.addComment&language={{ language }}&comment_token={{ comment_token }}&article_id={{ article_id }}',
type: 'post',
data: $('#form-comment').serialize(),
dataType: 'json',
cache: false,
contentType: 'application/x-www-form-urlencoded',
processData: false,
beforeSend: function() {
$('#button-comment').button('loading');
},
complete: function() {
$('#button-comment').button('reset');
},
success: function(json) {
$('.alert-dismissible').remove();
$('#form-comment').find('.is-invalid').removeClass('is-invalid');
$('#form-comment').find('.invalid-feedback').removeClass('d-block');
if (json['error']) {
if (json['error']['warning']) {
$('#alert').prepend('<div class="alert alert-danger alert-dismissible"><i class="fa-solid fa-circle-exclamation"></i> ' + json['error']['warning'] + ' <button type="button" class="btn-close" data-bs-dismiss="alert"></button></div>');
}
for (key in json['error']) {
$('#input-' + key.replaceAll('_', '-')).addClass('is-invalid').find('.form-control, .form-select, .form-check-input, .form-check-label').addClass('is-invalid');
$('#error-' + key.replaceAll('_', '-')).html(json['error'][key]).addClass('d-block');
}
}
if (json['success']) {
$('#alert').prepend('<div class="alert alert-success alert-dismissible"><i class="fa-solid fa-circle-exclamation"></i> ' + json['success'] + ' <button type="button" class="btn-close" data-bs-dismiss="alert"></button></div>');
$('#input-comment').val('');
}
},
error: function(xhr, ajaxOptions, thrownError) {
console.log(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
}
});
});
//--></script>

View File

@ -0,0 +1,69 @@
{% if comments %}
{% for comment in comments %}
<div id="comment{{ comment.blog_comment_id }}" class="media">
<div class="media-left"><img src="{{ comment.image }}" alt="{{ comment.member }}" title="{{ comment.member }}" class="media-object"/></div>
<div class="media-body">
{% if comment.remove %}
<div class="pull-right"><a href="{{ comment.remove }}" class="btn btn-link btn-xs comment-remove">Remove</a></div>
{% endif %}
<p class="media-heading">{{ comment.member }} <span>{{ comment.date_added }}</span></p>
<p>{{ comment.comment }}</p>
<div class="reply">
<div class="reply-box">
<div>
{% if comment.reply %}
{% for reply in comment.reply %}
<div class="media">
<div class="media-left"><img src="{{ reply.image }}" alt="{{ reply.member }}" title="{{ reply.member }}" class="media-object"/></div>
<div class="media-body">{% if reply.remove %}
<div class="pull-right"><a href="{{ reply.remove }}" class="btn btn-link btn-xs reply-remove">Remove</a></div>
{% endif %}
<p class="media-heading">{{ reply.member }} <span>{{ reply.date_added }}</span></p>
<p>{{ reply.comment }}</p>
</div>
</div>
{% endfor %}
{% if comment.next %}
<div class="text-center"><a href="{{ comment.next }}" class="btn btn-block">see more replies...</a></div>
{% endif %}
{% endif %} <a href="{{ comment.refresh }}" class="reply-refresh hide">refresh</a>
</div>
</div>
{% if logged %}
<p class="text-right">
<button type="button" data-toggle="tooltip" data-title="Reply" class="btn btn-link btn-sm">Reply</button>
{% else %}
<button type="button" class="btn btn-link btn-xs" disabled="disabled">Reply</button>
{% endif %}
</p>
<div class="reply-input-box" style="display: none;">
<div class="media">
<div class="media-left"><img src="{{ comment_image }}" alt="{{ comment_username }}" title="{{ comment_username }}" class="media-object"/></div>
<div class="media-body">
<div class="form-group">
<label for="input-comment{{ comment.blog_comment_id }}">Leave your comment</label>
<textarea name="comment" placeholder="Write your comment here..." id="input-comment{{ comment.blog_comment_id }}" class="form-control"></textarea>
</div>
<div class="text-right"><a href="{{ comment.add }}" class="btn btn-primary btn-sm">Comment</a></div>
</div>
</div>
</div>
</div>
</div>
</div>
{% endfor %}
<br/>
<div class="text-center">{{ pagination }}</div>
{% else %}
<div class="text-center">{{ text_no_results }}</div>
{% endif %}

View File

@ -0,0 +1,71 @@
<div class="dropdown d-grid">
<button type="button" data-bs-toggle="dropdown" class="btn btn-lg btn-inverse btn-block dropdown-toggle"><i class="fa-solid fa-cart-shopping"></i> {{ text_items }}</button>
<ul class="dropdown-menu dropdown-menu-end p-2">
{% if products or vouchers %}
<li>
<table class="table table-striped mb-2">
{% for product in products %}
<tr>
<td class="text-center">{% if product.thumb %}<a href="{{ product.href }}"><img src="{{ product.thumb }}" alt="{{ product.name }}" title="{{ product.name }}" class="img-thumbnail"/></a>{% endif %}</td>
<td class="text-start"><a href="{{ product.href }}">{{ product.name }}</a>
{% if product.option %}
{% for option in product.option %}
<br/>
<small> - {{ option.name }}: {{ option.value }}</small>
{% endfor %}
{% endif %}
{% if product.reward %}
<br/>
<small> - {{ text_points }}: {{ product.reward }}</small>
{% endif %}
{% if product.subscription %}
<br/>
<small> - {{ text_subscription }}: {{ product.subscription }}</small>
{% endif %}
</td>
<td class="text-end">x {{ product.quantity }}</td>
<td class="text-end">{{ product.total }}</td>
<td class="text-end">
<form action="{{ product_remove }}" method="post" data-oc-toggle="ajax" data-oc-load="{{ list }}" data-oc-target="#header-cart">
<input type="hidden" name="key" value="{{ product.cart_id }}">
<button type="submit" data-bs-toggle="tooltip" title="{{ button_remove }}" class="btn btn-danger"><i class="fa-solid fa-circle-xmark"></i></button>
</form>
</td>
</tr>
{% endfor %}
{% for voucher in vouchers %}
<tr>
<td class="text-center"></td>
<td class="text-start">{{ voucher.description }}</td>
<td class="text-end">x&nbsp;1</td>
<td class="text-end">{{ voucher.amount }}</td>
<td class="text-end">
<form action="{{ voucher_remove }}" method="post" data-oc-toggle="ajax" data-oc-load="{{ list }}" data-oc-target="#header-cart">
<input type="hidden" name="key" value="{{ voucher.key }}"/>
<button type="submit" data-bs-toggle="tooltip" title="{{ button_remove }}" class="btn btn-danger"><i class="fa-solid fa-circle-xmark"></i></button>
</form>
</td>
</tr>
{% endfor %}
</table>
<div>
<table class="table table-sm table-bordered mb-2">
{% for total in totals %}
<tr>
<td class="text-end"><strong>{{ total.title }}</strong></td>
<td class="text-end">{{ total.text }}</td>
</tr>
{% endfor %}
</table>
<p class="text-end"><a href="{{ cart }}"><strong><i class="fa-solid fa-cart-shopping"></i> {{ text_cart }}</strong></a>&nbsp;&nbsp;&nbsp;<a href="{{ checkout }}"><strong><i class="fa-solid fa-share"></i> {{ text_checkout }}</strong></a></p>
</div>
</li>
{% else %}
<li class="text-center p-4">{{ text_no_results }}</li>
{% endif %}
</ul>
</div>

View File

@ -0,0 +1,7 @@
{% if modules %}
<aside id="column-left" class="col-3 d-none d-md-block">
{% for module in modules %}
{{ module }}
{% endfor %}
</aside>
{% endif %}

View File

@ -0,0 +1,7 @@
{% if modules %}
<aside id="column-right" class="col-3 d-none d-md-block">
{% for module in modules %}
{{ module }}
{% endfor %}
</aside>
{% endif %}

View File

@ -0,0 +1,3 @@
{% for module in modules %}
{{ module }}
{% endfor %}

View File

@ -0,0 +1,3 @@
{% for module in modules %}
{{ module }}
{% endfor %}

View File

@ -0,0 +1,9 @@
<div id="cookie">
<div class="container">
<div class="row mt-2">
<div class="col-12 p-2 text-center"><p>{{ text_cookie }}</p>
<button type="button" value="{{ agree }}" class="btn bg-primary btn-block text-white">{{ button_agree }}</button>&nbsp;&nbsp;&nbsp;<button type="button" value="{{ disagree }}" class="btn btn-light btn-block">{{ button_disagree }}</button>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,17 @@
{% if currencies|length > 1 %}
<form action="{{ action }}" method="post" enctype="multipart/form-data" id="form-currency">
<div class="dropdown">
<a href="#" data-bs-toggle="dropdown" class="dropdown-toggle">{% for currency in currencies %}{% if currency.symbol_left and currency.code == code %}<strong>{{ currency.symbol_left }}</strong>{% elseif currency.symbol_right and currency.code == code %}<strong>{{ currency.symbol_right }}</strong>{% endif %}{% endfor %} <span class="d-none d-md-inline">{{ text_currency }}</span> <i class="fa-solid fa-caret-down"></i></a>
<ul class="dropdown-menu">
{% for currency in currencies %}
{% if currency.symbol_left %}
<li><a href="{{ currency.code }}" class="dropdown-item">{{ currency.symbol_left }} {{ currency.title }}</a></li>
{% else %}
<li><a href="{{ currency.code }}" class="dropdown-item">{{ currency.symbol_right }} {{ currency.title }}</a></li>
{% endif %}
{% endfor %}
</ul>
</div>
<input type="hidden" name="code" value=""/> <input type="hidden" name="redirect" value="{{ redirect }}"/>
</form>
{% endif %}

View File

@ -0,0 +1,58 @@
</main>
<footer>
<div class="container">
<div class="row">
<div class="col-sm-3">
<h5>{{ text_information }}</h5>
<ul class="list-unstyled">
{% for information in informations %}
<li><a href="{{ information.href }}">{{ information.title }}</a></li>
{% endfor %}
</ul>
</div>
<div class="col-sm-3">
<h5>{{ text_service }}</h5>
<ul class="list-unstyled">
<li><a href="{{ contact }}">{{ text_contact }}</a></li>
<li><a href="{{ return }}">{{ text_return }}</a></li>
{% if gdpr %}
<li><a href="{{ gdpr }}">{{ text_gdpr }}</a></li>
{% endif %}
<li><a href="{{ sitemap }}">{{ text_sitemap }}</a></li>
</ul>
</div>
<div class="col-sm-3">
<h5>{{ text_extra }}</h5>
<ul class="list-unstyled">
<li><a href="{{ manufacturer }}">{{ text_manufacturer }}</a></li>
<li><a href="{{ voucher }}">{{ text_voucher }}</a></li>
{% if affiliate %}
<li><a href="{{ affiliate }}">{{ text_affiliate }}</a></li>
{% endif %}
<li><a href="{{ special }}">{{ text_special }}</a></li>
</ul>
</div>
<div class="col-sm-3">
<h5>{{ text_account }}</h5>
<ul class="list-unstyled">
<li><a href="{{ account }}">{{ text_account }}</a></li>
<li><a href="{{ order }}">{{ text_order }}</a></li>
<li><a href="{{ wishlist }}">{{ text_wishlist }}</a></li>
<li><a href="{{ newsletter }}">{{ text_newsletter }}</a></li>
</ul>
</div>
</div>
<hr>
<p>{{ powered }}</p>
<!--
OpenCart is open source software and you are free to remove the powered by OpenCart if you want, but its generally accepted practise to make a small donation.
Please donate via PayPal to donate@opencart.com
//-->
</div>
</footer>
{{ cookie }}
<script src="{{ bootstrap }}" type="text/javascript"></script>
{% for script in scripts %}
<script src="{{ script.href }}" type="text/javascript"></script>
{% endfor %}
</body></html>

View File

@ -0,0 +1,92 @@
<!DOCTYPE html>
<html dir="{{ direction }}" lang="{{ lang }}">
<head>
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>{{ title }}</title>
<base href="{{ base }}"/>
{% if description %}
<meta name="description" content="{{ description }}"/>
{% endif %}
{% if keywords %}
<meta name="keywords" content="{{ keywords }}"/>
{% endif %}
<script src="{{ jquery }}" type="text/javascript"></script>
<link href="{{ bootstrap }}" type="text/css" rel="stylesheet" media="screen"/>
<link href="{{ icons }}" type="text/css" rel="stylesheet"/>
<link href="{{ stylesheet }}" type="text/css" rel="stylesheet"/>
<script type="text/javascript" src="catalog/view/javascript/jquery/datetimepicker/moment.min.js"></script>
<script type="text/javascript" src="catalog/view/javascript/jquery/datetimepicker/moment-with-locales.min.js"></script>
<script type="text/javascript" src="catalog/view/javascript/jquery/datetimepicker/daterangepicker.js"></script>
<link href="catalog/view/javascript/jquery/datetimepicker/daterangepicker.css" rel="stylesheet" type="text/css"/>
<script src="catalog/view/javascript/common.js" type="text/javascript"></script>
{% for style in styles %}
<link href="{{ style.href }}" type="text/css" rel="{{ style.rel }}" media="{{ style.media }}"/>
{% endfor %}
{% for script in scripts %}
<script src="{{ script.href }}" type="text/javascript"></script>
{% endfor %}
{% for link in links %}
<link href="{{ link.href }}" rel="{{ link.rel }}"/>
{% endfor %}
{% for analytic in analytics %}
{{ analytic }}
{% endfor %}
</head>
<body>
<div id="alert" class="toast-container position-fixed top-0 end-0 p-3"></div>
<nav id="top">
<div class="container">
<div class="nav float-start">
<ul class="list-inline">
<li class="list-inline-item">{{ currency }}</li>
<li class="list-inline-item">{{ language }}</li>
</ul>
</div>
<div class="nav float-end">
<ul class="list-inline">
<li class="list-inline-item"><a href="{{ contact }}"><i class="fa-solid fa-phone"></i></a> <span class="d-none d-md-inline">{{ telephone }}</span></li>
<li class="list-inline-item">
<div class="dropdown">
<a href="{{ account }}" class="dropdown-toggle" data-bs-toggle="dropdown"><i class="fa-solid fa-user"></i> <span class="d-none d-md-inline">{{ text_account }}</span> <i class="fa-solid fa-caret-down"></i></a>
<ul class="dropdown-menu dropdown-menu-right">
{% if not logged %}
<li><a href="{{ register }}" class="dropdown-item">{{ text_register }}</a></li>
<li><a href="{{ login }}" class="dropdown-item">{{ text_login }}</a></li>
{% else %}
<li><a href="{{ account }}" class="dropdown-item">{{ text_account }}</a></li>
<li><a href="{{ order }}" class="dropdown-item">{{ text_order }}</a></li>
<li><a href="{{ transaction }}" class="dropdown-item">{{ text_transaction }}</a></li>
<li><a href="{{ download }}" class="dropdown-item">{{ text_download }}</a></li>
<li><a href="{{ logout }}" class="dropdown-item">{{ text_logout }}</a></li>
{% endif %}
</ul>
</div>
</li>
<li class="list-inline-item"><a href="{{ wishlist }}" id="wishlist-total" title="{{ text_wishlist }}"><i class="fa-solid fa-heart"></i> <span class="d-none d-md-inline">{{ text_wishlist }}</span></a></li>
<li class="list-inline-item"><a href="{{ shopping_cart }}" title="{{ text_shopping_cart }}"><i class="fa-solid fa-cart-shopping"></i> <span class="d-none d-md-inline">{{ text_shopping_cart }}</span></a></li>
<li class="list-inline-item"><a href="{{ checkout }}" title="{{ text_checkout }}"><i class="fa-solid fa-share"></i> <span class="d-none d-md-inline">{{ text_checkout }}</span></a></li>
</ul>
</div>
</div>
</nav>
<header>
<div class="container">
<div class="row">
<div class="col-md-3 col-lg-4">
<div id="logo">
{% if logo %}
<a href="{{ home }}"><img src="{{ logo }}" title="{{ name }}" alt="{{ name }}" class="img-fluid"/></a>
{% else %}
<h1><a href="{{ home }}">{{ name }}</a></h1>
{% endif %}
</div>
</div>
<div class="col-md-5">{{ search }}</div>
<div id="header-cart" class="col-md-4 col-lg-3 mb-2">{{ cart }}</div>
</div>
</div>
</header>
<main>
{{ menu }}

View File

@ -0,0 +1,7 @@
{{ header }}
<div id="common-home" class="container">
<div class="row">{{ column_left }}
<div id="content" class="col">{{ content_top }}{{ content_bottom }}</div>
{{ column_right }}</div>
</div>
{{ footer }}

View File

@ -0,0 +1,17 @@
{% if languages|length > 1 %}
<div class="dropdown">
<div class="dropdown-toggle" data-bs-toggle="dropdown">
{% for language in languages %}
{% if language.code == code %}
<img src="{{ language.image }}" alt="{{ language.name }}" title="{{ language.name }}">
{% endif %}
{% endfor %}
<span class="d-none d-md-inline">{{ text_language }}</span> <i class="fa-solid fa-caret-down"></i>
</div>
<ul class="dropdown-menu">
{% for language in languages %}
<li><a href="{{ language.href }}" class="dropdown-item"><img src="{{ language.image }}" alt="{{ language.name }}" title="{{ language.name }}"/> {{ language.name }}</a></li>
{% endfor %}
</ul>
</div>
{% endif %}

View File

@ -0,0 +1,7 @@
{{ header }}
<div id="common-maintenance" class="container">
<div class="row">
<div class="col-12">{{ message }}</div>
</div>
</div>
{{ footer }}

View File

@ -0,0 +1,32 @@
{% if categories %}
<div class="container">
<nav id="menu" class="navbar navbar-expand-lg navbar-light bg-primary">
<div id="category" class="d-block d-sm-block d-lg-none">{{ text_category }}</div>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#narbar-menu"><i class="fa-solid fa-bars"></i></button>
<div class="collapse navbar-collapse" id="narbar-menu">
<ul class="nav navbar-nav">
{% for category in categories %}
{% if category.children %}
<li class="nav-item dropdown"><a href="{{ category.href }}" class="nav-link dropdown-toggle" data-bs-toggle="dropdown">{{ category.name }}</a>
<div class="dropdown-menu">
<div class="dropdown-inner">
{% for children in category.children|batch(category.children|length / category.column|round(1, 'ceil')) %}
<ul class="list-unstyled">
{% for child in children %}
<li><a href="{{ child.href }}" class="nav-link">{{ child.name }}</a></li>
{% endfor %}
</ul>
{% endfor %}
</div>
<a href="{{ category.href }}" class="see-all">{{ text_all }} {{ category.name }}</a>
</div>
</li>
{% else %}
<li class="nav-item"><a href="{{ category.href }}" class="nav-link">{{ category.name }}</a></li>
{% endif %}
{% endfor %}
</ul>
</div>
</nav>
</div>
{% endif %}

View File

@ -0,0 +1,21 @@
<ul class="pagination">
{% if first %}
<li class="page-item"><a href="{{ first }}" class="page-link">|&lt;</a></li>
{% endif %}
{% if prev %}
<li class="page-item"><a href="{{ prev }}" class="page-link">&lt;</a></li>
{% endif %}
{% for link in links %}
{% if link.page == page %}
<li class="page-item active"><span class="page-link">{{ link.page }}</span></li>
{% else %}
<li class="page-item"><a href="{{ link.href }}" class="page-link">{{ link.page }}</a></li>
{% endif %}
{% endfor %}
{% if next %}
<li class="page-item"><a href="{{ next }}" class="page-link">&gt;</a></li>
{% endif %}
{% if last %}
<li class="page-item"><a href="{{ last }}" class="page-link">&gt;|</a></li>
{% endif %}
</ul>

View File

@ -0,0 +1,4 @@
<div id="search" class="input-group mb-3">
<input type="text" name="search" value="{{ search }}" placeholder="{{ text_search }}" class="form-control form-control-lg">
<button type="button" data-lang="{{ language }}" class="btn btn-light btn-lg"><i class="fa-solid fa-magnifying-glass"></i></button>
</div>

View File

@ -0,0 +1,16 @@
{{ header }}
<div id="common-success" class="container">
<ul class="breadcrumb">
{% for breadcrumb in breadcrumbs %}
<li class="breadcrumb-item"><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li>
{% endfor %}
</ul>
<div class="row">{{ column_left }}
<div id="content" class="col">{{ content_top }}
<h1>{{ heading_title }}</h1>
{{ text_message }}
<div class="text-end"><a href="{{ continue }}" class="btn btn-primary">{{ button_continue }}</a></div>
{{ content_bottom }}</div>
{{ column_right }}</div>
</div>
{{ footer }}

View File

@ -0,0 +1,16 @@
{{ header }}
<div id="error-not-found" class="container">
<ul class="breadcrumb">
{% for breadcrumb in breadcrumbs %}
<li class="breadcrumb-item"><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li>
{% endfor %}
</ul>
<div class="row">{{ column_left }}
<div id="content" class="col">{{ content_top }}
<h1>{{ heading_title }}</h1>
<p>{{ text_error }}</p>
<div class="text-end"><a href="{{ continue }}" class="btn btn-primary">{{ button_continue }}</a></div>
{{ content_bottom }}</div>
{{ column_right }}</div>
</div>
{{ footer }}

View File

@ -0,0 +1,133 @@
{{ header }}
<div id="information-contact" class="container">
<ul class="breadcrumb">
{% for breadcrumb in breadcrumbs %}
<li class="breadcrumb-item"><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li>
{% endfor %}
</ul>
<div class="row">{{ column_left }}
<div id="content" class="col">{{ content_top }}
<h1>{{ heading_title }}</h1>
<h3>{{ text_location }}</h3>
<div class="card">
<div class="card-body">
<div class="row">
{% if image %}
<div class="col-sm-3"><img src="{{ image }}" alt="{{ store }}" title="{{ store }}" class="img-thumbnail"/></div>
{% endif %}
<div class="col-sm-3"><strong>{{ store }}</strong>
<br/>
<address>
{{ address }}
</address>
{% if geocode %}
<a href="https://maps.google.com/maps?q={{ geocode|url_encode }}&hl={{ geocode_hl }}&t=m&z=15" target="_blank" class="btn btn-info"><i class="fa-solid fa-location-dot"></i> {{ button_map }}</a>
{% endif %}
</div>
<div class="col-sm-3"><strong>{{ text_telephone }}</strong>
<br/>
{{ telephone }}
<br/>
<br/>
</div>
<div class="col-sm-3">
{% if open %}
<strong>{{ text_open }}</strong>
<br/>
{{ open }}
<br/>
<br/>
{% endif %}
{% if comment %}
<strong>{{ text_comment }}</strong>
<br/>
{{ comment }}
{% endif %}
</div>
</div>
</div>
</div>
{% if locations %}
<h3>{{ text_store }}</h3>
<div id="accordion" class="card-group">
{% for location in locations %}
<div class="card">
<div class="card-header">
<h4 class="card-title pt-2"><a href="#collapse-location-{{ location.location_id }}" class="accordion-toggle" data-bs-toggle="collapse" data-bs-parent="#accordion">{{ location.name }} <i class="fa-solid fa-caret-down"></i></a></h4>
</div>
<div class="card-collapse collapse" id="collapse-location-{{ location.location_id }}">
<div class="card-body">
<div class="row">
{% if location.image %}
<div class="col-sm-3"><img src="{{ location.image }}" alt="{{ location.name }}" title="{{ location.name }}" class="img-thumbnail"/></div>
{% endif %}
<div class="col-sm-3"><strong>{{ location.name }}</strong>
<br/>
<address>
{{ location.address }}
</address>
{% if location.geocode %}
<a href="https://maps.google.com/maps?q={{ location.geocode|url_encode }}&hl={{ geocode_hl }}&t=m&z=15" target="_blank" class="btn btn-info"><i class="fa-solid fa-location-dot"></i> {{ button_map }}</a>
{% endif %}
</div>
<div class="col-sm-3"><strong>{{ text_telephone }}</strong>
<br/>
{{ location.telephone }}
<br/>
<br/>
</div>
<div class="col-sm-3">
{% if location.open %}
<strong>{{ text_open }}</strong>
<br/>
{{ location.open }}
<br/>
<br/>
{% endif %}
{% if location.comment %}
<strong>{{ text_comment }}</strong>
<br/>
{{ location.comment }}
{% endif %}
</div>
</div>
</div>
</div>
</div>
{% endfor %}
</div>
{% endif %}
<form id="form-contact" action="{{ send }}" method="post" data-oc-toggle="ajax">
<fieldset>
<legend>{{ text_contact }}</legend>
<div class="row mb-3 required">
<label for="input-name" class="col-sm-2 col-form-label">{{ entry_name }}</label>
<div class="col-sm-10">
<input type="text" name="name" value="{{ name }}" id="input-name" class="form-control"/>
<div id="error-name" class="invalid-feedback"></div>
</div>
</div>
<div class="row mb-3 required">
<label for="input-email" class="col-sm-2 col-form-label">{{ entry_email }}</label>
<div class="col-sm-10">
<input type="text" name="email" value="{{ email }}" id="input-email" class="form-control"/>
<div id="error-email" class="invalid-feedback"></div>
</div>
</div>
<div class="row mb-3 required">
<label for="input-enquiry" class="col-sm-2 col-form-label">{{ entry_enquiry }}</label>
<div class="col-sm-10">
<textarea name="enquiry" rows="10" id="input-enquiry" class="form-control"></textarea>
<div id="error-enquiry" class="invalid-feedback"></div>
</div>
</div>
{{ captcha }}
</fieldset>
<div class="text-end">
<button type="submit" class="btn btn-primary">{{ button_submit }}</button>
</div>
</form>
{{ content_bottom }}</div>
{{ column_right }}</div>
</div>
{{ footer }}

View File

@ -0,0 +1,69 @@
{{ header }}
<div id="account-gdpr" class="container">
<ul class="breadcrumb">
{% for breadcrumb in breadcrumbs %}
<li class="breadcrumb-item"><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li>
{% endfor %}
</ul>
{% if success %}
<div class="alert alert-success alert-dismissible"><i class="fa-solid fa-circle-check"></i> {{ success }} <button type="button" class="btn-close" data-bs-dismiss="alert"></button></div>
{% endif %}
<div class="row">{{ column_left }}
<div id="content" class="col">{{ content_top }}
<h1>{{ heading_title }}</h1>
<p>{{ text_gdpr|format(store, gdpr, title) }}</p>
<form action="{{ action }}" method="post" data-oc-toggle="ajax">
<fieldset>
<legend id="account">{{ text_verification }}</legend>
<div class="mb-3">
<p><label for="input-email" class="form-check-label">{{ text_email }}</label></p>
<div class="input-group">
<input type="text" name="email" value="{{ email }}" placeholder="{{ entry_email }}" id="input-email" class="form-control"/>
<div class="input-group-text"><i class="fa-solid fa-envelope"></i></div>
</div>
<div id="error-email" class="invalid-feedback"></div>
</div>
</fieldset>
<fieldset>
<legend id="action">{{ text_action }}</legend>
<div class="mb-3">
<div class="form-check">
<input type="radio" name="action" value="export" id="input-export" checked class="form-check-input"/> <label for="input-export" class="form-check-label"><strong>{{ text_export }}</strong></label>
</div>
<div class="form-check">
<input type="radio" name="action" value="remove" id="input-remove" class="form-check-input"/> <label for="input-remove" class="form-check-label"><strong>{{ text_remove }}</strong></label>
</div>
</div>
<div id="collapse-remove" class="alert alert-warning collapse">
<p><i class="fa-solid fa-triangle-exclamation"></i> {{ text_warning }}</p>
<ul>
<li>{{ text_access|format(store) }}</li>
<li>{{ text_history }}</li>
<li>{{ text_limit|format(limit) }}</li>
</ul>
</div>
</fieldset>
<div class="row">
<div class="col">
<a href="{{ cancel }}" class="btn btn-light">{{ button_cancel }}</a>
</div>
<div class="col text-end">
<button type="submit" class="btn btn-primary">{{ button_continue }}</button>
</div>
</div>
</form>
{{ content_bottom }}</div>
{{ column_right }}</div>
</div>
<script type="text/javascript"><!--
$('input[name=\'action\']').on('change', function () {
if (this.value == 'remove') {
$('#collapse-remove').slideDown();
} else {
$('#collapse-remove').slideUp();
}
});
//--></script>
{{ footer }}

View File

@ -0,0 +1,14 @@
{{ header }}
<div id="information-information" class="container">
<ul class="breadcrumb">
{% for breadcrumb in breadcrumbs %}
<li class="breadcrumb-item"><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li>
{% endfor %}
</ul>
<div class="row">{{ column_left }}
<div id="content" class="col">{{ content_top }}
<h1>{{ heading_title }}</h1>
{{ description }}{{ content_bottom }}</div>
{{ column_right }}</div>
</div>
{{ footer }}

View File

@ -0,0 +1,11 @@
<div id="modal-information" class="modal fade">
<div class="modal-dialog modal-lg modal-dialog-centered">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title">{{ title }}</h4>
<button type="button" class="btn-close" data-bs-dismiss="modal"></button>
</div>
<div class="modal-body">{{ description }}</div>
</div>
</div>
</div>

View File

@ -0,0 +1,64 @@
{{ header }}
<div id="information-sitemap" class="container">
<ul class="breadcrumb">
{% for breadcrumb in breadcrumbs %}
<li class="breadcrumb-item"><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li>
{% endfor %}
</ul>
<div class="row">{{ column_left }}
<div id="content" class="col">{{ content_top }}
<h1>{{ heading_title }}</h1>
<div class="row">
<div class="col-sm-6">
<ul>
{% for category_1 in categories %}
<li><a href="{{ category_1.href }}">{{ category_1.name }}</a>
{% if category_1.children %}
<ul>
{% for category_2 in category_1.children %}
<li><a href="{{ category_2.href }}">{{ category_2.name }}</a>
{% if category_2.children %}
<ul>
{% for category_3 in category_2.children %}
<li><a href="{{ category_3.href }}">{{ category_3.name }}</a></li>
{% endfor %}
</ul>
{% endif %}
</li>
{% endfor %}
</ul>
{% endif %}
</li>
{% endfor %}
</ul>
</div>
<div class="col-sm-6">
<ul>
<li><a href="{{ special }}">{{ text_special }}</a></li>
<li><a href="{{ account }}">{{ text_account }}</a>
<ul>
<li><a href="{{ edit }}">{{ text_edit }}</a></li>
<li><a href="{{ password }}">{{ text_password }}</a></li>
<li><a href="{{ address }}">{{ text_address }}</a></li>
<li><a href="{{ history }}">{{ text_history }}</a></li>
<li><a href="{{ download }}">{{ text_download }}</a></li>
</ul>
</li>
<li><a href="{{ history }}">{{ text_cart }}</a></li>
<li><a href="{{ checkout }}">{{ text_checkout }}</a></li>
<li><a href="{{ search }}">{{ text_search }}</a></li>
<li>{{ text_information }}
<ul>
{% for information in informations %}
<li><a href="{{ information.href }}">{{ information.title }}</a></li>
{% endfor %}
<li><a href="{{ contact }}">{{ text_contact }}</a></li>
</ul>
</li>
</ul>
</div>
</div>
{{ content_bottom }}</div>
{{ column_right }}</div>
</div>
{{ footer }}

View File

@ -0,0 +1,20 @@
{{ text_welcome }}<br/>
<br/>
{% if not approval %}
{{ text_login }}<br/>
<br/>
{{ login }}<br/>
<br/>
{{ text_service }}<br/>
<br/>
{{ text_thanks }}<br/>
{{ store }}
{% else %}
{{ text_approval }}<br/>
<br/>
{{ login }}<br/>
<br/>
{{ text_thanks }}<br/>
{{ store }}<br/>
{{ store_url }}
{% endif %}

View File

@ -0,0 +1,18 @@
{{ text_signup }}<br/>
<br/>
{% if company %}
{{ text_company }} {{ company }}<br/>
{% endif %}
{% if website %}
{{ text_website }} {{ website }}<br/>
{% endif %}
{{ text_firstname }} {{ firstname }}<br/>
{{ text_lastname }} {{ lastname }}<br/>
{% if customer_group %}
{{ text_customer_group }} {{ customer_group }}<br/>
{% endif %}
{{ text_email }} {{ email }}<br/>
{{ text_telephone }} {{ telephone }}<br/>
<br/>
{{ store }}<br/>
{{ store_url }}

View File

@ -0,0 +1,12 @@
{{ text_greeting }}<br/>
<br/>
{{ text_change }}<br/>
<br/>
{{ reset }}<br/>
<br/>
{{ text_ip }}<br/>
<br/>
{{ ip }}<br/>
<br/>
{{ store }}<br/>
{{ store_url }}

View File

@ -0,0 +1,32 @@
<div style="width: 570px; border: 1px solid #e1e1e1; margin-left: auto; margin-right: auto; border-radius: 4px; padding-top: 5px; padding-bottom: 15px; padding-left: 25px; padding-right: 25px;">
<table style="width: 100%; font-size: 16px; border: 0;">
<thead>
<tr>
<td style="text-align: center; border-bottom: 1px solid #ddd; padding-top: 15px; padding-bottom: 15px;">
{% if logo %}
<a href="{{ store_url }}"><img src="{{ logo }}" alt="{{ store_name }}" title="{{ store_name }}" style="margin-left: auto; margin-right: auto;"/></a>
{% else %}
<a href="{{ store_url }}">{{ store_name }}</a>
{% endif %}
</td>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: center; border-bottom: 1px solid #ddd;"><h1>{{ text_request }}</h1></td>
</tr>
<tr>
<td style="line-height: 25px;">
<p style="margin-bottom: 40px;">{{ text_gdpr }}</p>
<p style="margin-bottom: 40px; text-align: center;"><a href="{{ confirm }}" style="border-radius: 4px; color: #fff; text-decoration: none; background-color: #01b3e8; padding-left: 18px; padding-right: 18px; padding-top: 10px; padding-bottom: 10px; font-size: 18px; font-weight: bold;">{{ button_confirm }}</a></p>
<p style="margin-bottom: 40px;">{{ text_ignore }}</p>
<p>
{{ text_thanks }}
<br/>
<strong>{{ store_name }}</strong>
</p>
</td>
</tr>
</tbody>
</table>
</div>

View File

@ -0,0 +1,36 @@
<div style="width:570px; border: 1px solid #e1e1e1; margin-left: auto; margin-right: auto; border-radius: 4px; padding-top: 5px; padding-bottom: 15px; padding-left: 25px; padding-right: 25px;">
<table style="width:100%; font-size:16px; border:0;">
<thead>
<tr>
<td style="text-align: center; border-bottom: 1px solid #ddd; padding-top: 15px; padding-bottom: 15px;">
{% if logo %}
<a href="{{ store_url }}"><img src="{{ logo }}" alt="{{ store_name }}" title="{{ store_name }}" style="margin-left: auto; margin-right: auto;"/></a>
{% else %}
<a href="{{ store_url }}">{{ store_name }}</a>
{% endif %}
</td>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: center; border-bottom: 1px solid #ddd;"><h1>{{ text_request }}</h1></td>
</tr>
<tr>
<td style="line-height: 1.8;">
<p>{{ text_hello }}</p>
<p>{{ text_delete }}</p>
<p>{{ text_contact }}</p>
<p>
<br/>
</p>
<p style="text-align: center;"><a href="{{ contact }}" style="border-radius: 4px; color: #fff; text-decoration: none; background-color: #01b3e8; padding-left: 18px; padding-right: 18px; padding-top: 10px; padding-bottom: 10px; font-size: 18px; font-weight: bold;">{{ button_contact }}</a></p>
<p>
{{ text_thanks }}
<br/>
<strong>{{ store_name }}</strong>
</p>
</td>
</tr>
</tbody>
</table>
</div>

View File

@ -0,0 +1,143 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>{{ title }}</title>
</head>
<body style="font-family: Arial, Helvetica, sans-serif; font-size: 12px; color: #000000;">
<div style="width: 680px;">
{% if logo %}
<a href="{{ store_url }}" title="{{ store_name }}"><img src="{{ logo }}" alt="{{ store_name }}" style="margin-bottom: 20px; border: none;"/></a>
{% else %}
<h2><a href="{{ store_url }}" title="{{ store_name }}">{{ store_name }}</a></h2>
{% endif %}
<p style="margin-top: 0px; margin-bottom: 20px;">{{ text_greeting }}</p>
{% if customer_id %}
<p style="margin-top: 0px; margin-bottom: 20px;">{{ text_link }}</p>
<p style="margin-top: 0px; margin-bottom: 20px;"><a href="{{ link }}">{{ link }}</a></p>
{% endif %}
{% if download %}
<p style="margin-top: 0px; margin-bottom: 20px;">{{ text_download }}</p>
<p style="margin-top: 0px; margin-bottom: 20px;"><a href="{{ download }}">{{ download }}</a></p>
{% endif %}
<table style="border-collapse: collapse; width: 100%; border-top: 1px solid #DDDDDD; border-left: 1px solid #DDDDDD; margin-bottom: 20px;">
<thead>
<tr>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; background-color: #EFEFEF; font-weight: bold; text-align: left; padding: 7px; color: #222222;" colspan="2">{{ text_order_detail }}</td>
</tr>
</thead>
<tbody>
<tr>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: left; padding: 7px;"><b>{{ text_order_id }}</b> {{ order_id }}
<br/>
<b>{{ text_date_added }}</b> {{ date_added }}
<br/>
<b>{{ text_payment_method }}</b> {{ payment_method }}
<br/>
{% if shipping_method %} <b>{{ text_shipping_method }}</b> {{ shipping_method }}{% endif %}</td>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: left; padding: 7px;"><b>{{ text_email }}</b> {{ email }}
<br/>
<b>{{ text_telephone }}</b> {{ telephone }}
<br/>
<b>{{ text_ip }}</b> {{ ip }}
<br/>
<b>{{ text_order_status }}</b> {{ order_status }}
<br/>
</td>
</tr>
</tbody>
</table>
{% if comment %}
<table style="border-collapse: collapse; width: 100%; border-top: 1px solid #DDDDDD; border-left: 1px solid #DDDDDD; margin-bottom: 20px;">
<thead>
<tr>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; background-color: #EFEFEF; font-weight: bold; text-align: left; padding: 7px; color: #222222;">{{ text_instruction }}</td>
</tr>
</thead>
<tbody>
<tr>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: left; padding: 7px;">{{ comment }}</td>
</tr>
</tbody>
</table>
{% endif %}
{% if payment_address || shipping_address %}
<table style="border-collapse: collapse; width: 100%; border-top: 1px solid #DDDDDD; border-left: 1px solid #DDDDDD; margin-bottom: 20px;">
<thead>
<tr>
{% if payment_address %}
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; background-color: #EFEFEF; font-weight: bold; text-align: left; padding: 7px; color: #222222;">{{ text_payment_address }}</td>
{% endif %}
{% if shipping_address %}
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; background-color: #EFEFEF; font-weight: bold; text-align: left; padding: 7px; color: #222222;">{{ text_shipping_address }}</td>
{% endif %}
</tr>
</thead>
<tbody>
<tr>
{% if payment_address %}
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: left; padding: 7px;">{{ payment_address }}</td>
{% endif %}
{% if shipping_address %}
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: left; padding: 7px;">{{ shipping_address }}</td>
{% endif %}
</tr>
</tbody>
</table>
{% endif %}
<table style="border-collapse: collapse; width: 100%; border-top: 1px solid #DDDDDD; border-left: 1px solid #DDDDDD; margin-bottom: 20px;">
<thead>
<tr>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; background-color: #EFEFEF; font-weight: bold; text-align: left; padding: 7px; color: #222222;">{{ text_product }}</td>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; background-color: #EFEFEF; font-weight: bold; text-align: left; padding: 7px; color: #222222;">{{ text_model }}</td>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; background-color: #EFEFEF; font-weight: bold; text-align: right; padding: 7px; color: #222222;">{{ text_quantity }}</td>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; background-color: #EFEFEF; font-weight: bold; text-align: right; padding: 7px; color: #222222;">{{ text_price }}</td>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; background-color: #EFEFEF; font-weight: bold; text-align: right; padding: 7px; color: #222222;">{{ text_total }}</td>
</tr>
</thead>
<tbody>
{% for product in products %}
<tr>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: left; padding: 7px;">{{ product.name }}
{% for option in product.option %}
<br/>
<small> - {{ option.name }}: {{ option.value }}</small>
{% endfor %}
{% if product.reward %}
<br/>
<small>{{ text_points }}: {{ product.reward }}</small>
{% endif %}
{% if product.subscription %}
<br/>
<small>{{ text_subscription }}: {{ product.subscription }}</small>
{% endif %}
</td>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: left; padding: 7px;">{{ product.model }}</td>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: right; padding: 7px;">{{ product.quantity }}</td>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: right; padding: 7px;">{{ product.price }}</td>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: right; padding: 7px;">{{ product.total }}</td>
</tr>
{% endfor %}
{% for voucher in vouchers %}
<tr>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: left; padding: 7px;">{{ voucher.description }}</td>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: left; padding: 7px;"></td>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: right; padding: 7px;">1</td>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: right; padding: 7px;">{{ voucher.amount }}</td>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: right; padding: 7px;">{{ voucher.amount }}</td>
</tr>
{% endfor %}
</tbody>
<tfoot>
{% for total in totals %}
<tr>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: right; padding: 7px;" colspan="4"><b>{{ total.title }}:</b></td>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: right; padding: 7px;">{{ total.text }}</td>
</tr>
{% endfor %}
</tfoot>
</table>
<p style="margin-top: 0px; margin-bottom: 20px;">{{ text_footer }}</p>
</div>
</body>
</html>

View File

@ -0,0 +1,37 @@
{{ text_received }}<br/>
<br/>
{{ text_order_id }} {{ order_id }}<br/>
{{ text_date_added }} {{ date_added }}<br/>
{{ text_order_status }} {{ order_status }}<br/>
<br/>
{{ text_product }}<br/>
<br/>
{% for product in products %}
{{ product.quantity }}x {{ product.name }} ({{ product.model }}) {{ product.total }}<br/>
{% if product.option %}
{% for option in product.option %}
- {{ option.name }} {{ option.value }}<br/>
{% endfor %}
{% endif %}
{% endfor %}
{% if vouchers %}
<br/>
{% for voucher in vouchers %}
1x {{ voucher.description }} {{ voucher.amount }}<br/>
{% endfor %}
{% endif %}
<br/>
{{ text_total }}<br/>
<br/>
{% for total in totals %}
{{ total.title }}: {{ total.value }}<br/>
{% endfor %}
<br/>
{% if comment %}
{{ text_comment }}<br/>
<br/>
{{ comment }}<br/>
{% endif %}
<br/>
{{ store }}<br/>
{{ store_url }}

View File

@ -0,0 +1,24 @@
{{ text_order_id }} {{ order_id }}<br/>
{{ text_date_added }} {{ date_added }}<br/>
<br/>
{{ text_order_status }}<br/>
<br/>
{{ order_status }}<br/>
<br/>
{% if link %}
{{ text_link }}<br/>
<br/>
{{ link }}<br/>
{% endif %}
{% if comment %}
<br/>
{{ text_comment }}<br/>
<br/>
{{ comment }}<br/>
{{ text_footer }}<br/>
{% else %}
{{ text_footer }}<br/>
{% endif %}
<br/>
{{ store }}<br/>
{{ store_url }}

View File

@ -0,0 +1,24 @@
{{ text_order_id }} {{ order_id }}<br/>
{{ text_date_added }} {{ date_added }}<br/>
<br/>
{{ text_order_status }}<br/>
<br/>
{{ order_status }}<br/>
<br/>
{% if link %}
{{ text_link }}<br/>
<br/>
{{ link }}<br/>
{% endif %}
{% if comment %}
<br/>
{{ text_comment }}<br/>
<br/>
{{ comment }}<br/>
{{ text_footer }}<br/>
{% else %}
{{ text_footer }}<br/>
{% endif %}
<br/>
{{ store }}<br/>
{{ store_url }}

View File

@ -0,0 +1,129 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>{{ title }}</title>
</head>
<body style="font-family: Arial, Helvetica, sans-serif; font-size: 12px; color: #000000;">
<div style="width: 680px;">
{% if logo %}
<a href="{{ store_url }}" title="{{ store_name }}"><img src="{{ logo }}" alt="{{ store_name }}" style="margin-bottom: 20px; border: none;"/></a>
{% else %}
<h2><a href="{{ store_url }}" title="{{ store_name }}">{{ store_name }}</a></h2>
{% endif %}
<p style="margin-top: 0px; margin-bottom: 20px;">{{ text_greeting }}</p>
{% if customer_id %}
<p style="margin-top: 0px; margin-bottom: 20px;">{{ text_link }}</p>
<p style="margin-top: 0px; margin-bottom: 20px;"><a href="{{ link }}">{{ link }}</a></p>
{% endif %}
{% if download %}
<p style="margin-top: 0px; margin-bottom: 20px;">{{ text_download }}</p>
<p style="margin-top: 0px; margin-bottom: 20px;"><a href="{{ download }}">{{ download }}</a></p>
{% endif %}
<table style="border-collapse: collapse; width: 100%; border-top: 1px solid #DDDDDD; border-left: 1px solid #DDDDDD; margin-bottom: 20px;">
<thead>
<tr>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; background-color: #EFEFEF; font-weight: bold; text-align: left; padding: 7px; color: #222222;" colspan="2">{{ text_order_detail }}</td>
</tr>
</thead>
<tbody>
<tr>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: left; padding: 7px;"><b>{{ text_order_id }}</b> {{ order_id }}
<br/>
<b>{{ text_date_added }}</b> {{ date_added }}
<br/>
<b>{{ text_payment_method }}</b> {{ payment_method }}
<br/>
{% if shipping_method %} <b>{{ text_shipping_method }}</b> {{ shipping_method }}
{% endif %}</td>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: left; padding: 7px;"><b>{{ text_email }}</b> {{ email }}
<br/>
<b>{{ text_telephone }}</b> {{ telephone }}
<br/>
<b>{{ text_ip }}</b> {{ ip }}
<br/>
<b>{{ text_order_status }}</b> {{ order_status }}
<br/>
</td>
</tr>
</tbody>
</table>
{% if comment %}
<table style="border-collapse: collapse; width: 100%; border-top: 1px solid #DDDDDD; border-left: 1px solid #DDDDDD; margin-bottom: 20px;">
<thead>
<tr>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; background-color: #EFEFEF; font-weight: bold; text-align: left; padding: 7px; color: #222222;">{{ text_instruction }}</td>
</tr>
</thead>
<tbody>
<tr>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: left; padding: 7px;">{{ comment }}</td>
</tr>
</tbody>
</table>
{% endif %}
<table style="border-collapse: collapse; width: 100%; border-top: 1px solid #DDDDDD; border-left: 1px solid #DDDDDD; margin-bottom: 20px;">
<thead>
<tr>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; background-color: #EFEFEF; font-weight: bold; text-align: left; padding: 7px; color: #222222;">{{ text_payment_address }}</td>
{% if shipping_address %}
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; background-color: #EFEFEF; font-weight: bold; text-align: left; padding: 7px; color: #222222;">{{ text_shipping_address }}</td>
{% endif %}
</tr>
</thead>
<tbody>
<tr>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: left; padding: 7px;">{{ payment_address }}</td>
{% if shipping_address %}
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: left; padding: 7px;">{{ shipping_address }}</td>
{% endif %}
</tr>
</tbody>
</table>
<table style="border-collapse: collapse; width: 100%; border-top: 1px solid #DDDDDD; border-left: 1px solid #DDDDDD; margin-bottom: 20px;">
<thead>
<tr>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; background-color: #EFEFEF; font-weight: bold; text-align: left; padding: 7px; color: #222222;">{{ text_product }}</td>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; background-color: #EFEFEF; font-weight: bold; text-align: left; padding: 7px; color: #222222;">{{ text_model }}</td>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; background-color: #EFEFEF; font-weight: bold; text-align: right; padding: 7px; color: #222222;">{{ text_quantity }}</td>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; background-color: #EFEFEF; font-weight: bold; text-align: right; padding: 7px; color: #222222;">{{ text_price }}</td>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; background-color: #EFEFEF; font-weight: bold; text-align: right; padding: 7px; color: #222222;">{{ text_total }}</td>
</tr>
</thead>
<tbody>
{% for product in products %}
<tr>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: left; padding: 7px;">{{ product.name }}
{% for option in product.option %}
<br/>
<small> - {{ option.name }}: {{ option.value }}</small>
{% endfor %}</td>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: left; padding: 7px;">{{ product.model }}</td>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: right; padding: 7px;">{{ product.quantity }}</td>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: right; padding: 7px;">{{ product.price }}</td>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: right; padding: 7px;">{{ product.total }}</td>
</tr>
{% endfor %}
{% for voucher in vouchers %}
<tr>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: left; padding: 7px;">{{ voucher.description }}</td>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: left; padding: 7px;"></td>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: right; padding: 7px;">1</td>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: right; padding: 7px;">{{ voucher.amount }}</td>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: right; padding: 7px;">{{ voucher.amount }}</td>
</tr>
{% endfor %}
</tbody>
<tfoot>
{% for total in totals %}
<tr>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: right; padding: 7px;" colspan="4"><b>{{ total.title }}:</b></td>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: right; padding: 7px;">{{ total.text }}</td>
</tr>
{% endfor %}
</tfoot>
</table>
<p style="margin-top: 0px; margin-bottom: 20px;">{{ text_footer }}</p>
</div>
</body>
</html>

View File

@ -0,0 +1,21 @@
{{ text_welcome }}<br/>
<br/>
{% if not approval %}
{{ text_login }}<br/>
<br/>
{{ login }}<br/>
<br/>
{{ text_service }}<br/>
<br/>
{{ text_thanks }}<br/>
{{ store }}<br/>
{{ store_url }}
{% else %}
{{ text_approval }}<br/>
<br/>
{{ login }}<br/>
<br/>
{{ text_thanks }}<br/>
{{ store }}<br/>
{{ store_url }}
{% endif %}

View File

@ -0,0 +1,14 @@
{{ text_signup }}<br/>
<br/>
{{ text_firstname }} {{ firstname }}<br/>
{{ text_lastname }} {{ lastname }}<br/>
{% if customer_group %}
{{ text_customer_group }} {{ customer_group }}<br/>
{% endif %}
{{ text_email }} {{ email }}<br/>
{% if telephone %}
{{ text_telephone }} {{ telephone }}
{% endif %}
<br/>
{{ store }}<br/>
{{ store_url }}

View File

@ -0,0 +1,12 @@
{{ text_waiting }}<br/>
<br/>
{{ text_product }} {{ product }}<br/>
{{ text_reviewer }} {{ reviewer }}<br/>
{{ text_rating }} {{ rating }}<br/>
<br/>
{{ text_review }}<br/>
<br/>
{{ text }}<br/>
<br/>
{{ store }}<br/>
{{ store_url }}

View File

@ -0,0 +1,99 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>{{ title }}</title>
</head>
<body style="font-family: Arial, Helvetica, sans-serif; font-size: 12px; color: #000000;">
<div style="width: 680px;"><a href="{{ store_url }}" title="{{ store_name }}"><img src="{{ logo }}" alt="{{ store_name }}" style="margin-bottom: 20px; border: none;"/></a>
<p style="margin-top: 0px; margin-bottom: 20px;">{{ text_greeting }}</p>
{% if customer_id %}
<p style="margin-top: 0px; margin-bottom: 20px;">{{ text_link }}</p>
<p style="margin-top: 0px; margin-bottom: 20px;"><a href="{{ link }}">{{ link }}</a></p>
{% endif %}
<table style="border-collapse: collapse; width: 100%; border-top: 1px solid #DDDDDD; border-left: 1px solid #DDDDDD; margin-bottom: 20px;">
<thead>
<tr>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; background-color: #EFEFEF; font-weight: bold; text-align: left; padding: 7px; color: #222222;" colspan="2">{{ text_subscription_detail }}</td>
</tr>
</thead>
<tbody>
<tr>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: left; padding: 7px;"><b>{{ text_orders_id }}</b> <a href="{{ order }}">#{{ order_id }}</a>
<br/>
<b>{{ text_date_added }}</b> {{ date_added }}
<br/>
<b>{{ text_payment_method }}</b> {{ payment_method }}
</td>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: left; padding: 7px;"><b>{{ text_email }}</b> {{ email }}
<br/>
<b>{{ text_telephone }}</b> {{ telephone }}
<br/>
<b>{{ text_ip }}</b> {{ ip }}
<br/>
<b>{{ text_order_status }}</b> {{ order_status }}
<br/>
<b>{{ text_description }}</b> {{ description }}
</td>
</tr>
</tbody>
</table>
{% if comment %}
<table style="border-collapse: collapse; width: 100%; border-top: 1px solid #DDDDDD; border-left: 1px solid #DDDDDD; margin-bottom: 20px;">
<thead>
<tr>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; background-color: #EFEFEF; font-weight: bold; text-align: left; padding: 7px; color: #222222;">{{ text_instruction }}</td>
</tr>
</thead>
<tbody>
<tr>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: left; padding: 7px;">{{ comment }}</td>
</tr>
</tbody>
</table>
{% endif %}
<table style="border-collapse: collapse; width: 100%; border-top: 1px solid #DDDDDD; border-left: 1px solid #DDDDDD; margin-bottom: 20px;">
<thead>
<tr>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; background-color: #EFEFEF; font-weight: bold; text-align: left; padding: 7px; color: #222222;">{{ text_payment_address }}</td>
</tr>
</thead>
<tbody>
<tr>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: left; padding: 7px;">{{ payment_address }}</td>
</tr>
</tbody>
</table>
<table style="border-collapse: collapse; width: 100%; border-top: 1px solid #DDDDDD; border-left: 1px solid #DDDDDD; margin-bottom: 20px;">
<thead>
<tr>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; background-color: #EFEFEF; font-weight: bold; text-align: left; padding: 7px; color: #222222;"><a href="{{ product }}">{{ text_product }}</a></td>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; background-color: #EFEFEF; font-weight: bold; text-align: left; padding: 7px; color: #222222;">{{ text_model }}</td>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; background-color: #EFEFEF; font-weight: bold; text-align: right; padding: 7px; color: #222222;">{{ text_quantity }}</td>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; background-color: #EFEFEF; font-weight: bold; text-align: right; padding: 7px; color: #222222;">{{ text_price }}</td>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; background-color: #EFEFEF; font-weight: bold; text-align: right; padding: 7px; color: #222222;">{{ text_total }}</td>
</tr>
</thead>
<tbody>
<tr>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: left; padding: 7px;">{{ name }}</td>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: left; padding: 7px;">{{ model }}</td>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: right; padding: 7px;">{{ quantity }}</td>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: right; padding: 7px;">{{ price }}</td>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: right; padding: 7px;">{{ total }}</td>
</tr>
</tbody>
<tfoot>
{% for total in totals %}
<tr>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: right; padding: 7px;" colspan="4"><b>{{ total.title }}:</b></td>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: right; padding: 7px;">{{ total.text }}</td>
</tr>
{% endfor %}
</tfoot>
</table>
{% if promotion %}{{ promotion }}{% endif %}
<p style="margin-top: 0px; margin-bottom: 20px;">{{ text_footer }}</p>
</div>
</body>
</html>

View File

@ -0,0 +1,12 @@
{{ text_received }}
{{ text_orders_id }} {{ order_id }}
{{ text_subscription_id }} {{ subscription_id }}
{{ text_date_added }} {{ date_added }}
{{ text_subscription_status }} {{ subscription_status }}
{% if comment %}
{{ text_comment }}
{{ comment }}
{% endif %}

View File

@ -0,0 +1,12 @@
{{ text_received }}<br/>
<br/>
{{ text_amount }}<br/>
<br/>
{{ amount }}<br/>
<br/>
{{ text_total }}<br/>
<br/>
{{ total }}<br/>
<br/>
{{ store }}<br/>
{{ store_url }}

View File

@ -0,0 +1,58 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>{{ title }}</title>
<style type="text/css">
body {
color: #000000;
font-family: Arial, Helvetica, sans-serif;
}
body, td, th, input, textarea, select, a {
font-size: 12px;
}
p {
margin-top: 0px;
margin-bottom: 20px;
}
a, a:visited, a b {
color: #378DC1;
text-decoration: underline;
cursor: pointer;
}
a:hover {
text-decoration: none;
}
a img {
border: none;
}
#container {
width: 680px;
}
</style>
</head>
<body>
<div id="container">
{% if image %}
<div style="float: right; margin-left: 20px;"><a href="{{ store_url }}" title="{{ store_name }}"><img src="{{ image }}" alt="{{ store_name }}"/></a></div>
{% endif %}
<div>
<p>{{ text_greeting }}</p>
<p>{{ text_from }}</p>
{% if message %}
<p>{{ text_message }}</p>
<p>{{ message }}</p>
{% endif %}
<p>{{ text_redeem }}</p>
<p><a href="{{ store_url }}" title="{{ store_name }}">{{ store_url }}</a></p>
<p>{{ text_footer }}</p>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,98 @@
{{ header }}
<div id="product-category" class="container">
<ul class="breadcrumb">
{% for breadcrumb in breadcrumbs %}
<li class="breadcrumb-item"><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li>
{% endfor %}
</ul>
<div class="row">{{ column_left }}
<div id="content" class="col">{{ content_top }}
<h2>{{ heading_title }}</h2>
{% if thumb or description %}
<div class="row">
{% if thumb %}
<div class="col-sm-2"><img src="{{ thumb }}" alt="{{ heading_title }}" title="{{ heading_title }}" class="img-thumbnail"/></div>
{% endif %}
{% if description %}
<div class="col-sm-10">{{ description }}</div>
{% endif %}
</div>
<hr/>
{% endif %}
{% if categories %}
<h3>{{ text_refine }}</h3>
{% if categories|length <= 5 %}
<div class="row">
<div class="col-sm-3">
<ul>
{% for category in categories %}
<li><a href="{{ category.href }}">{{ category.name }}</a></li>
{% endfor %}
</ul>
</div>
</div>
{% else %}
<div class="row row-cols-sm-2 row-cols-lg-4">
{% for category in categories|batch((categories|length / 4)|round(1, 'ceil')) %}
<div class="col">
<ul>
{% for child in category %}
<li><a href="{{ child.href }}">{{ child.name }}</a></li>
{% endfor %}
</ul>
</div>
{% endfor %}
</div>
<br/>
{% endif %}
{% endif %}
{% if products %}
<div id="display-control" class="row">
<div class="col-lg-3">
<div class="mb-3">
<a href="{{ compare }}" id="compare-total" class="btn btn-primary d-block"><i class="fa-solid fa-arrow-right-arrow-left"></i> <span class="d-none d-xl-inline">{{ text_compare }}</span></a>
</div>
</div>
<div class="col-lg-1 d-none d-lg-block">
<div class="btn-group">
<button type="button" id="button-list" class="btn btn-light" data-bs-toggle="tooltip" title="{{ button_list }}"><i class="fa-solid fa-table-list"></i></button>
<button type="button" id="button-grid" class="btn btn-light" data-bs-toggle="tooltip" title="{{ button_grid }}"><i class="fa-solid fa-table-cells"></i></button>
</div>
</div>
<div class="col-lg-4 offset-lg-1 col-6">
<div class="input-group mb-3">
<label for="input-sort" class="input-group-text">{{ text_sort }}</label> <select id="input-sort" class="form-select" onchange="location = this.value;">
{% for sorts in sorts %}
<option value="{{ sorts.href }}"{% if sorts.value == '%s-%s'|format(sort, order) %} selected{% endif %}>{{ sorts.text }}</option>
{% endfor %}
</select>
</div>
</div>
<div class="col-lg-3 col-6">
<div class="input-group mb-3">
<label for="input-limit" class="input-group-text">{{ text_limit }}</label> <select id="input-limit" class="form-select" onchange="location = this.value;">
{% for limits in limits %}
<option value="{{ limits.href }}"{% if limits.value == limit %} selected{% endif %}>{{ limits.text }}</option>
{% endfor %}
</select>
</div>
</div>
</div>
<div id="product-list" class="row row-cols-1 row-cols-sm-2 row-cols-md-2 row-cols-lg-4">
{% for product in products %}
<div class="col mb-3">{{ product }}</div>
{% endfor %}
</div>
<div class="row">
<div class="col-sm-6 text-start">{{ pagination }}</div>
<div class="col-sm-6 text-end">{{ results }}</div>
</div>
{% endif %}
{% if not categories and not products %}
<p>{{ text_no_results }}</p>
<div class="text-end"><a href="{{ continue }}" class="btn btn-primary">{{ button_continue }}</a></div>
{% endif %}
{{ content_bottom }}</div>
{{ column_right }}</div>
</div>
{{ footer }}

View File

@ -0,0 +1,137 @@
{{ header }}
<div id="product-compare" class="container">
<ul class="breadcrumb">
{% for breadcrumb in breadcrumbs %}
<li class="breadcrumb-item"><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li>
{% endfor %}
</ul>
{% if success %}
<div class="alert alert-success alert-dismissible"><i class="fa-solid fa-circle-check"></i> {{ success }}
<button type="button" class="btn-close" data-bs-dismiss="alert"></button>
</div>
{% endif %}
<div class="row">{{ column_left }}
<div id="content" class="col">{{ content_top }}
<h1>{{ heading_title }}</h1>
{% if products %}
<table class="table table-bordered">
<thead>
<tr>
<td colspan="{{ products|length + 1 }}"><strong>{{ text_product }}</strong></td>
</tr>
</thead>
<tbody>
<tr>
<td>{{ text_name }}</td>
{% for product in products %}
<td><a href="{{ product.href }}"><strong>{{ product.name }}</strong></a></td>
{% endfor %}
</tr>
<tr>
<td>{{ text_image }}</td>
{% for product in products %}
<td class="text-center">{% if product.thumb %} <img src="{{ product.thumb }}" alt="{{ product.name }}" title="{{ product.name }}" class="img-thumbnail"/> {% endif %}</td>
{% endfor %}
</tr>
<tr>
<td>{{ text_price }}</td>
{% for product in products %}
<td>{% if not product.special %}
{{ product.price }}
{% else %}
<span class="price-new">{{ product.special }}</span> <span class="price-old">{{ product.price }}</span>
{% endif %}</td>
{% endfor %}
</tr>
<tr>
<td>{{ text_model }}</td>
{% for product in products %}
<td>{{ product.model }}</td>
{% endfor %}
</tr>
<tr>
<td>{{ text_manufacturer }}</td>
{% for product in products %}
<td>{{ product.manufacturer }}</td>
{% endfor %}
</tr>
<tr>
<td>{{ text_availability }}</td>
{% for product in products %}
<td>{{ product.availability }}</td>
{% endfor %}
</tr>
{% if review_status %}
<tr>
<td>{{ text_rating }}</td>
{% for product in products %}
<td class="rating">
{% for i in 1..5 %}
{% if product.rating < i %}
<span class="fa-stack"><i class="fa-regular fa-star fa-stack-1x"></i></span>
{% else %}
<span class="fa-stack"><i class="fa-solid fa-star fa-stack-1x"></i><i class="fa-regular fa-star fa-stack-1x"></i></span>
{% endif %}
{% endfor %}
<br/>
{{ product.reviews }}
</td>
{% endfor %}
</tr>
{% endif %}
<tr>
<td>{{ text_summary }}</td>
{% for product in products %}
<td class="description">{{ product.description }}</td>
{% endfor %}
</tr>
<tr>
<td>{{ text_weight }}</td>
{% for product in products %}
<td>{{ product.weight }}</td>
{% endfor %}
</tr>
<tr>
<td>{{ text_dimension }}</td>
{% for product in products %}
<td>{{ product.length }} x {{ product.width }} x {{ product.height }}</td>
{% endfor %} </tr>
</tbody>
{% for attribute_group in attribute_groups %}
<thead>
<tr>
<td colspan="{{ products|length + 1 }}"><strong>{{ attribute_group.name }}</strong></td>
</tr>
</thead>
{% for key, attribute in attribute_group.attribute %}
<tbody>
<tr>
<td>{{ attribute.name }}</td>
{% for product in products %}
<td>{% if product.attribute[key] %}{{ product.attribute[key] }}{% endif %}</td>
{% endfor %}
</tr>
</tbody>
{% endfor %}
{% endfor %}
<tr>
<td></td>
{% for product in products %}
<td class="text-center">
<form action="{{ add_to_cart }}" method="post" data-oc-toggle="ajax" data-oc-load="{{ cart }}" data-oc-target="#header-cart">
<button type="submit" id="button-confirm" class="btn btn-primary btn-block">{{ button_cart }}</button>
<input type="hidden" name="product_id" value="{{ product.product_id }}"/> <input type="hidden" name="quantity" value="{{ product.minimum }}"/>
<a href="{{ product.remove }}" class="btn btn-danger btn-block">{{ button_remove }}</a>
</form>
</td>
{% endfor %}
</tr>
</table>
{% else %}
<p>{{ text_no_results }}</p>
<div class="text-end"><a href="{{ continue }}" class="btn btn-primary">{{ button_continue }}</a></div>
{% endif %}
{{ content_bottom }}</div>
{{ column_right }}</div>
</div>
{{ footer }}

View File

@ -0,0 +1,61 @@
{{ header }}
<div id="product-manufacturer" class="container">
<ul class="breadcrumb">
{% for breadcrumb in breadcrumbs %}
<li class="breadcrumb-item"><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li>
{% endfor %}
</ul>
<div class="row">{{ column_left }}
<div id="content" class="col">{{ content_top }}
<h2>{{ heading_title }}</h2>
{% if products %}
<div id="display-control" class="row">
<div class="col-md-3">
<div class="mb-3">
<a href="{{ compare }}" id="compare-total" class="btn btn-primary d-block"><i class="fa-solid fa-arrow-right-arrow-left"></i> <span class="d-inline d-md-none d-lg-inline">{{ text_compare }}</span></a>
</div>
</div>
<div class="col-md-1 d-none d-md-block">
<div class="btn-group">
<button type="button" id="button-list" class="btn btn-light" data-bs-toggle="tooltip" title="{{ button_list }}"><i class="fa-solid fa-table-list"></i></button>
<button type="button" id="button-grid" class="btn btn-light" data-bs-toggle="tooltip" title="{{ button_grid }}"><i class="fa-solid fa-table-cells"></i></button>
</div>
</div>
<div class="col-md-4 offset-md-1 col-6">
<div class="input-group mb-3">
<label for="input-sort" class="input-group-text">{{ text_sort }}</label>
<select id="input-sort" class="form-select" onchange="location = this.value;">
{% for sorts in sorts %}
<option value="{{ sorts.href }}"{% if sorts.value == '%s-%s'|format(sort, order) %} selected{% endif %}>{{ sorts.text }}</option>
{% endfor %}
</select>
</div>
</div>
<div class="col-md-3 col-6">
<div class="input-group mb-3">
<label for="input-limit" class="input-group-text">{{ text_limit }}</label>
<select id="input-limit" class="form-select" onchange="location = this.value;">
{% for limits in limits %}
<option value="{{ limits.href }}"{% if limits.value == limit %} selected{% endif %}>{{ limits.text }}</option>
{% endfor %}
</select>
</div>
</div>
</div>
<div id="product-list" class="row row-cols-1 row-cols-sm-2 row-cols-md-2 row-cols-lg-4">
{% for product in products %}
<div class="col mb-3">{{ product }}</div>
{% endfor %}
</div>
<div class="row">
<div class="col-sm-6 text-start">{{ pagination }}</div>
<div class="col-sm-6 text-end">{{ results }}</div>
</div>
{% else %}
<p>{{ text_no_results }}</p>
<div class="text-end"><a href="{{ continue }}" class="btn btn-primary">{{ button_continue }}</a></div>
{% endif %}
{{ content_bottom }}</div>
{{ column_right }}</div>
</div>
{{ footer }}

View File

@ -0,0 +1,36 @@
{{ header }}
<div id="product-manufacturer" class="container">
<ul class="breadcrumb">
{% for breadcrumb in breadcrumbs %}
<li class="breadcrumb-item"><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li>
{% endfor %}
</ul>
<div class="row">{{ column_left }}
<div id="content" class="col">{{ content_top }}
<h1>{{ heading_title }}</h1>
{% if categories %}
<p><strong>{{ text_index }}</strong>
{% for category in categories %}
&nbsp;&nbsp;&nbsp;<a href="{{ category.href }}#{{ category.name }}">{{ category.name }}</a>
{% endfor %}
</p>
{% for category in categories %}
<h2 id="{{ category.name }}">{{ category.name }}</h2>
{% if category.manufacturer %}
{% for manufacturers in category.manufacturer|batch(4) %}
<div class="row mb-3">
{% for manufacturer in manufacturers %}
<div class="col-sm-3"><a href="{{ manufacturer.href }}">{{ manufacturer.name }}</a></div>
{% endfor %}
</div>
{% endfor %}
{% endif %}
{% endfor %}
{% else %}
<p>{{ text_no_results }}</p>
<div class="text-end"><a href="{{ continue }}" class="btn btn-primary">{{ button_continue }}</a></div>
{% endif %}
{{ content_bottom }}</div>
{{ column_right }}</div>
</div>
{{ footer }}

View File

@ -0,0 +1,393 @@
{{ header }}
<div id="product-info" class="container">
<ul class="breadcrumb">
{% for breadcrumb in breadcrumbs %}
<li class="breadcrumb-item"><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li>
{% endfor %}
</ul>
<div class="row">{{ column_left }}
<div id="content" class="col">
{{ content_top }}
<div class="row mb-3">
{% if thumb or images %}
<div class="col-sm">
<div class="image magnific-popup">
{% if thumb %}
<a href="{{ popup }}" title="{{ heading_title }}"><img src="{{ thumb }}" title="{{ heading_title }}" alt="{{ heading_title }}" class="img-thumbnail mb-3"/></a>
{% endif %}
{% if images %}
<div>
{% for image in images %}
<a href="{{ image.popup }}" title="{{ heading_title }}"><img src="{{ image.thumb }}" title="{{ heading_title }}" alt="{{ heading_title }}" class="img-thumbnail"/></a>&nbsp;
{% endfor %}
</div>
{% endif %}
</div>
</div>
{% endif %}
<div class="col-sm">
<h1>{{ heading_title }}</h1>
<ul class="list-unstyled">
{% if manufacturer %}
<li>{{ text_manufacturer }} <a href="{{ manufacturers }}">{{ manufacturer }}</a></li>
{% endif %}
<li>{{ text_model }} {{ model }}</li>
{% if reward %}
<li>{{ text_reward }} {{ reward }}</li>
{% endif %}
<li>{{ text_stock }} {{ stock }}</li>
</ul>
{% if price %}
<ul class="list-unstyled">
{% if not special %}
<li>
<h2><span class="price-new">{{ price }}</span></h2>
</li>
{% else %}
<li><span class="price-old">{{ price }}</span></li>
<li><h2><span class="price-new">{{ special }}</span></h2></li>
{% endif %}
{% if tax %}
<li>{{ text_tax }} {{ tax }}</li>
{% endif %}
{% if points %}
<li>{{ text_points }} {{ points }}</li>
{% endif %}
{% if discounts %}
<li>
<hr>
</li>
{% for discount in discounts %}
<li>{{ discount.quantity }}{{ text_discount }}{{ discount.price }}</li>
{% endfor %}
{% endif %}
</ul>
{% endif %}
<form method="post" data-oc-toggle="ajax">
<div class="btn-group">
<button type="submit" formaction="{{ add_to_wishlist }}" data-bs-toggle="tooltip" class="btn btn-light" title="{{ button_wishlist }}"><i class="fa-solid fa-heart"></i></button>
<button type="submit" formaction="{{ add_to_compare }}" data-bs-toggle="tooltip" class="btn btn-light" title="{{ button_compare }}"><i class="fa-solid fa-arrow-right-arrow-left"></i></button>
</div>
<input type="hidden" name="product_id" value="{{ product_id }}"/>
</form>
<br/>
<div id="product">
<form id="form-product">
{% if options %}
<hr>
<h3>{{ text_option }}</h3>
<div>
{% for option in options %}
{% if option.type == 'select' %}
<div class="mb-3{% if option.required %} required{% endif %}">
<label for="input-option-{{ option.product_option_id }}" class="form-label">{{ option.name }}</label>
<select name="option[{{ option.product_option_id }}]" id="input-option-{{ option.product_option_id }}" class="form-select">
<option value="">{{ text_select }}</option>
{% for option_value in option.product_option_value %}
<option value="{{ option_value.product_option_value_id }}">{{ option_value.name }}
{% if option_value.price %}
({{ option_value.price_prefix }}{{ option_value.price }})
{% endif %}</option>
{% endfor %}
</select>
<div id="error-option-{{ option.product_option_id }}" class="invalid-feedback"></div>
</div>
{% endif %}
{% if option.type == 'radio' %}
<div class="mb-3{% if option.required %} required{% endif %}">
<label class="form-label">{{ option.name }}</label>
<div id="input-option-{{ option.product_option_id }}">
{% for option_value in option.product_option_value %}
<div class="form-check">
<input type="radio" name="option[{{ option.product_option_id }}]" value="{{ option_value.product_option_value_id }}" id="input-option-value-{{ option_value.product_option_value_id }}" class="form-check-input"/>
<label for="input-option-value-{{ option_value.product_option_value_id }}" class="form-check-label">{% if option_value.image %}<img src="{{ option_value.image }}" alt="{{ option_value.name }} {% if option_value.price %}{{ option_value.price_prefix }} {{ option_value.price }}{% endif %}" class="img-thumbnail"/>{% endif %}
{{ option_value.name }}
{% if option_value.price %}
({{ option_value.price_prefix }}{{ option_value.price }})
{% endif %}
</label>
</div>
{% endfor %}
</div>
<div id="error-option-{{ option.product_option_id }}" class="invalid-feedback"></div>
</div>
{% endif %}
{% if option.type == 'checkbox' %}
<div class="mb-3{% if option.required %} required{% endif %}">
<label class="form-label">{{ option.name }}</label>
<div id="input-option-{{ option.product_option_id }}">
{% for option_value in option.product_option_value %}
<div class="form-check">
<input type="checkbox" name="option[{{ option.product_option_id }}][]" value="{{ option_value.product_option_value_id }}" id="input-option-value-{{ option_value.product_option_value_id }}" class="form-check-input"/>
<label for="input-option-value-{{ option_value.product_option_value_id }}" class="form-check-label">
{% if option_value.image %}
<img src="{{ option_value.image }}" alt="{{ option_value.name }} {% if option_value.price %}{{ option_value.price_prefix }} {{ option_value.price }}{% endif %}" class="img-thumbnail"/>{% endif %}
{{ option_value.name }}
{% if option_value.price %}
({{ option_value.price_prefix }}{{ option_value.price }})
{% endif %}</label>
</div>
{% endfor %}
</div>
<div id="error-option-{{ option.product_option_id }}" class="invalid-feedback"></div>
</div>
{% endif %}
{% if option.type == 'text' %}
<div class="mb-3{% if option.required %} required{% endif %}">
<label for="input-option-{{ option.product_option_id }}" class="form-label">{{ option.name }}</label>
<input type="text" name="option[{{ option.product_option_id }}]" value="{{ option.value }}" placeholder="{{ option.name }}" id="input-option-{{ option.product_option_id }}" class="form-control"/>
<div id="error-option-{{ option.product_option_id }}" class="invalid-feedback"></div>
</div>
{% endif %}
{% if option.type == 'textarea' %}
<div class="mb-3{% if option.required %} required{% endif %}">
<label for="input-option-{{ option.product_option_id }}" class="form-label">{{ option.name }}</label>
<textarea name="option[{{ option.product_option_id }}]" rows="5" placeholder="{{ option.name }}" id="input-option-{{ option.product_option_id }}" class="form-control">{{ option.value }}</textarea>
<div id="error-option-{{ option.product_option_id }}" class="invalid-feedback"></div>
</div>
{% endif %}
{% if option.type == 'file' %}
<div class="mb-3{% if option.required %} required{% endif %}">
<label for="button-upload-{{ option.product_option_id }}" class="form-label">{{ option.name }}</label>
<div>
<button type="button" id="button-upload-{{ option.product_option_id }}" data-oc-toggle="upload" data-oc-url="{{ upload }}" data-oc-target="#input-option-{{ option.product_option_id }}" data-oc-size-max="{{ config_file_max_size }}" data-oc-size-error="{{ error_upload_size }}" class="btn btn-light btn-block"><i class="fa-solid fa-upload"></i> {{ button_upload }}</button>
<input type="hidden" name="option[{{ option.product_option_id }}]" value="" id="input-option-{{ option.product_option_id }}"/>
</div>
<div id="error-option-{{ option.product_option_id }}" class="invalid-feedback"></div>
</div>
{% endif %}
{% if option.type == 'date' %}
<div class="mb-3{% if option.required %} required{% endif %}">
<label for="input-option-{{ option.product_option_id }}" class="form-label">{{ option.name }}</label>
<div class="input-group">
<input type="text" name="option[{{ option.product_option_id }}]" value="{{ option.value }}" id="input-option-{{ option.product_option_id }}" class="form-control date"/>
<div class="input-group-text"><i class="fa-regular fa-calendar"></i></div>
</div>
<div id="error-option-{{ option.product_option_id }}" class="invalid-feedback"></div>
</div>
{% endif %}
{% if option.type == 'datetime' %}
<div class="mb-3{% if option.required %} required{% endif %}">
<label for="input-option-{{ option.product_option_id }}" class="form-label">{{ option.name }}</label>
<div class="input-group">
<input type="text" name="option[{{ option.product_option_id }}]" value="{{ option.value }}" id="input-option-{{ option.product_option_id }}" class="form-control datetime"/>
<div class="input-group-text"><i class="fa-regular fa-calendar"></i></div>
</div>
<div id="error-option-{{ option.product_option_id }}" class="invalid-feedback"></div>
</div>
{% endif %}
{% if option.type == 'time' %}
<div class="mb-3{% if option.required %} required{% endif %}">
<label for="input-option-{{ option.product_option_id }}" class="form-label">{{ option.name }}</label>
<div class="input-group">
<input type="text" name="option[{{ option.product_option_id }}]" value="{{ option.value }}" id="input-option-{{ option.product_option_id }}" class="form-control time"/>
<div class="input-group-text"><i class="fa-regular fa-calendar"></i></div>
</div>
<div id="error-option-{{ option.product_option_id }}" class="invalid-feedback"></div>
</div>
{% endif %}
{% endfor %}
{% endif %}
{% if subscription_plans %}
<hr/>
<h3>{{ text_subscription }}</h3>
<div class="mb-3 required">
<select name="subscription_plan_id" id="input-subscription" class="form-select">
<option value="">{{ text_select }}</option>
{% for subscription_plan in subscription_plans %}
<option value="{{ subscription_plan.subscription_plan_id }}">{{ subscription_plan.name }}</option>
{% endfor %}
</select>
{% for subscription_plan in subscription_plans %}
<div id="subscription-description-{{ subscription_plan.subscription_plan_id }}" class="form-text subscription d-none">{{ subscription_plan.description }}</div>
{% endfor %}
<div id="error-subscription" class="invalid-feedback"></div>
</div>
{% endif %}
<div class="mb-3">
<label for="input-quantity" class="form-label">{{ entry_qty }}</label>
<input type="text" name="quantity" value="{{ minimum }}" size="2" id="input-quantity" class="form-control"/>
<input type="hidden" name="product_id" value="{{ product_id }}" id="input-product-id"/>
<div id="error-quantity" class="form-text"></div>
<br/>
<button type="submit" id="button-cart" class="btn btn-primary btn-lg btn-block">{{ button_cart }}</button>
</div>
{% if minimum > 1 %}
<div class="alert alert-info"><i class="fa-solid fa-circle-info"></i> {{ text_minimum }}</div>
{% endif %}
</div>
{% if review_status %}
<div class="rating">
<p>{% for i in 1..5 %}
{% if rating < i %}
<span class="fa-stack"><i class="fa-regular fa-star fa-stack-1x"></i></span>
{% else %}
<span class="fa-stack"><i class="fa-solid fa-star fa-stack-1x"></i><i class="fa-regular fa-star fa-stack-1x"></i></span>
{% endif %}
{% endfor %}
<a href="" onclick="$('a[href=\'#tab-review\']').tab('show'); return false;">{{ text_reviews }}</a> / <a href="" onclick="$('a[href=\'#tab-review\']').tab('show'); return false;">{{ text_write }}</a></p>
</div>
{% endif %}
</form>
</div>
</div>
<ul class="nav nav-tabs">
<li class="nav-item"><a href="#tab-description" data-bs-toggle="tab" class="nav-link active">{{ tab_description }}</a></li>
{% if attribute_groups %}
<li class="nav-item"><a href="#tab-specification" data-bs-toggle="tab" class="nav-link">{{ tab_attribute }}</a></li>
{% endif %}
{% if review_status %}
<li class="nav-item"><a href="#tab-review" data-bs-toggle="tab" class="nav-link">{{ tab_review }}</a></li>
{% endif %}
</ul>
<div class="tab-content">
<div id="tab-description" class="tab-pane fade show active mb-4">{{ description }}</div>
{% if attribute_groups %}
<div id="tab-specification" class="tab-pane fade">
<div class="table-responsive">
<table class="table table-bordered">
{% for attribute_group in attribute_groups %}
<thead>
<tr>
<td colspan="2"><strong>{{ attribute_group.name }}</strong></td>
</tr>
</thead>
<tbody>
{% for attribute in attribute_group.attribute %}
<tr>
<td>{{ attribute.name }}</td>
<td>{{ attribute.text }}</td>
</tr>
{% endfor %}
</tbody>
{% endfor %}
</table>
</div>
</div>
{% endif %}
{% if review_status %}
<div id="tab-review" class="tab-pane fade mb-4">{{ review }}</div>
{% endif %}
</div>
</div>
{% if products %}
<h3>{{ text_related }}</h3>
<div class="row row-cols-1 row-cols-sm-2 row-cols-md-3 row-cols-xl-4">
{% for product in products %}
<div class="col mb-3">{{ product }}</div>
{% endfor %}
</div>
{% endif %}
{% if tags %}
<p>{{ text_tags }}
{% for i in 0..(tags|length - 1) %}
<a href="{{ tags[i].href }}">{{ tags[i].tag }}</a>{% if not loop.end %},{% endif %}
{% endfor %}
</p>
{% endif %}
{{ content_bottom }}</div>
{{ column_right }}</div>
</div>
<script type="text/javascript"><!--
$('#input-subscription').on('change', function(e) {
var element = this;
$('.subscription').addClass('d-none');
$('#subscription-description-' + $(element).val()).removeClass('d-none');
});
$('#form-product').on('submit', function(e) {
e.preventDefault();
$.ajax({
url: 'index.php?route=checkout/cart.add&language={{ language }}',
type: 'post',
data: $('#form-product').serialize(),
dataType: 'json',
contentType: 'application/x-www-form-urlencoded',
cache: false,
processData: false,
beforeSend: function() {
$('#button-cart').button('loading');
},
complete: function() {
$('#button-cart').button('reset');
},
success: function(json) {
console.log(json);
$('#form-product').find('.is-invalid').removeClass('is-invalid');
$('#form-product').find('.invalid-feedback').removeClass('d-block');
if (json['error']) {
for (key in json['error']) {
$('#input-' + key.replaceAll('_', '-')).addClass('is-invalid').find('.form-control, .form-select, .form-check-input, .form-check-label').addClass('is-invalid');
$('#error-' + key.replaceAll('_', '-')).html(json['error'][key]).addClass('d-block');
}
}
if (json['success']) {
$('#alert').prepend('<div class="alert alert-success alert-dismissible"><i class="fa-solid fa-circle-check"></i> ' + json['success'] + ' <button type="button" class="btn-close" data-bs-dismiss="alert"></button></div>');
$('#header-cart').load('index.php?route=common/cart.info');
}
},
error: function(xhr, ajaxOptions, thrownError) {
console.log(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
}
});
});
$(document).ready(function() {
$('.magnific-popup').magnificPopup({
type: 'image',
delegate: 'a',
gallery: {
enabled: true
}
});
});
//--></script>
{{ footer }}

View File

@ -0,0 +1,99 @@
<form id="form-review">
<div id="review">{{ list }}</div>
<h2>{{ text_write }}</h2>
{% if review_guest %}
<div class="mb-3 required">
<label for="input-name" class="form-label">{{ entry_name }}</label> <input type="text" name="name" value="{{ customer_name }}" id="input-name" class="form-control"/>
<div id="error-name" class="invalid-feedback"></div>
</div>
<div class="mb-3 required">
<label for="input-text" class="form-label">{{ entry_review }}</label> <textarea name="text" rows="5" id="input-text" class="form-control"></textarea>
<div id="error-text" class="invalid-feedback"></div>
<div class="invalid-feedback">{{ text_note }}</div>
</div>
<div class="row mb-3 required">
<label class="form-label">{{ entry_rating }}</label>
<div id="input-rating">
{{ entry_bad }}&nbsp;
<input type="radio" name="rating" value="1" class="form-check-input"/>
&nbsp;
<input type="radio" name="rating" value="2" class="form-check-input"/>
&nbsp;
<input type="radio" name="rating" value="3" class="form-check-input"/>
&nbsp;
<input type="radio" name="rating" value="4" class="form-check-input"/>
&nbsp;
<input type="radio" name="rating" value="5" class="form-check-input"/>
&nbsp;{{ entry_good }}
</div>
<div id="error-rating" class="invalid-feedback"></div>
</div>
{{ captcha }}
<div class="row">
<div class="col">
<a href="{{ back }}" class="btn btn-light">{{ button_back }}</a>
</div>
<div class="col text-end">
<button type="submit" id="button-review" class="btn btn-primary">{{ button_continue }}</button>
</div>
</div>
{% else %}
{{ text_login }}
{% endif %}
</form>
<script type="text/javascript"><!--
$('#review').on('click', '.pagination a', function(e) {
e.preventDefault();
$('#review').load(this.href);
});
// Forms
$('#form-review').on('submit', function(e) {
e.preventDefault();
var element = this;
$.ajax({
url: 'index.php?route=product/review.write&language={{ language }}&review_token={{ review_token }}&product_id={{ product_id }}',
type: 'post',
data: $('#form-review').serialize(),
dataType: 'json',
cache: false,
contentType: 'application/x-www-form-urlencoded',
processData: false,
beforeSend: function() {
$('#button-review').button('loading');
},
complete: function() {
$('#button-review').button('reset');
},
success: function(json) {
$('.alert-dismissible').remove();
$('#form-review').find('.is-invalid').removeClass('is-invalid');
$('#form-review').find('.invalid-feedback').removeClass('d-block');
if (json['error']) {
if (json['error']['warning']) {
$('#alert').prepend('<div class="alert alert-danger alert-dismissible"><i class="fa-solid fa-circle-exclamation"></i> ' + json['error']['warning'] + ' <button type="button" class="btn-close" data-bs-dismiss="alert"></button></div>');
}
for (key in json['error']) {
$('#input-' + key.replaceAll('_', '-')).addClass('is-invalid').find('.form-control, .form-select, .form-check-input, .form-check-label').addClass('is-invalid');
$('#error-' + key.replaceAll('_', '-')).html(json['error'][key]).addClass('d-block');
}
}
if (json['success']) {
$('#alert').prepend('<div class="alert alert-success alert-dismissible"><i class="fa-solid fa-circle-exclamation"></i> ' + json['success'] + ' <button type="button" class="btn-close" data-bs-dismiss="alert"></button></div>');
$('#input-text').val('');
$('#input-rating input[type=\'radio\']').prop('checked', false);
}
},
error: function(xhr, ajaxOptions, thrownError) {
console.log(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
}
});
});
//--></script>

View File

@ -0,0 +1,26 @@
{% if reviews %}
{% for review in reviews %}
<table class="table table-striped table-bordered">
<tr>
<td style="width: 50%;"><strong>{{ review.author }}</strong></td>
<td class="text-end">{{ review.date_added }}</td>
</tr>
<tr>
<td colspan="2"><p>{{ review.text }}</p>
<div class="rating">
{% for i in 1..5 %}
{% if review.rating < i %}
<span class="fa-stack"><i class="fa-regular fa-star fa-stack-1x"></i></span>
{% else %}
<span class="fa-stack"><i class="fa-solid fa-star fa-stack-1x"></i><i class="fa-regular fa-star fa-stack-1x"></i></span>
{% endif %}
{% endfor %}
</div>
</td>
</tr>
</table>
{% endfor %}
<div class="text-end">{{ pagination }}</div>
{% else %}
<p class="text-center">{{ text_no_results }}</p>
{% endif %}

View File

@ -0,0 +1,138 @@
{{ header }}
<div id="product-search" class="container">
<ul class="breadcrumb">
{% for breadcrumb in breadcrumbs %}
<li class="breadcrumb-item"><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li>
{% endfor %}
</ul>
<div class="row">{{ column_left }}
<div id="content" class="col">{{ content_top }}
<h1>{{ heading_title }}</h1>
<div class="row">
<div class="col"><label for="input-search" class="col-form-label">{{ entry_search }}</label></div>
</div>
<div class="row row-cols-1 row-cols-md-2">
<div class="col">
<input type="text" name="search" value="{{ search }}" placeholder="{{ text_keyword }}" id="input-search" class="form-control mb-1"/>
<div class="form-check">
<input type="checkbox" name="description" value="1" id="input-description" class="form-check-input"{% if description %} checked{% endif %}/> <label for="input-description" class="form-check-label">{{ entry_description }}</label>
</div>
</div>
<div class="col">
<select name="category_id" id="input-category" class="form-select mb-1">
<option value="0">{{ text_category }}</option>
{% for category_1 in categories %}
<option value="{{ category_1.category_id }}"{% if category_1.category_id == category_id %} selected{% endif %}>{{ category_1.name }}</option>
{% for category_2 in category_1.children %}
<option value="{{ category_2.category_id }}"{% if category_2.category_id == category_id %} selected{% endif %}>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{{ category_2.name }}</option>
{% for category_3 in category_2.children %}
<option value="{{ category_3.category_id }}"{% if category_3.category_id == category_id %} selected{% endif %}>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{{ category_3.name }}</option>
{% endfor %}
{% endfor %}
{% endfor %}
</select>
<div class="form-check">
<input type="checkbox" name="sub_category" value="1" id="input-sub-category" class="form-check-input"{% if sub_category %} checked{% endif %}/> <label for="input-sub-category" class="form-check-label">{{ text_sub_category }}</label>
</div>
</div>
</div>
<div class="row">
<div class="col text-end">
<button type="button" id="button-search" class="btn btn-primary">{{ button_search }}</button>
</div>
</div>
<hr/>
<h2>{{ text_search }}</h2>
{% if products %}
<div id="display-control" class="row">
<div class="col-md-3">
<div class="mb-3">
<a href="{{ compare }}" id="compare-total" class="btn btn-primary d-block"><i class="fa-solid fa-arrow-right-arrow-left"></i> <span class="d-inline d-md-none d-lg-inline">{{ text_compare }}</span></a>
</div>
</div>
<div class="col-md-1 d-none d-md-block">
<div class="btn-group">
<button type="button" id="button-list" class="btn btn-light" data-bs-toggle="tooltip" title="{{ button_list }}"><i class="fa-solid fa-table-list"></i></button>
<button type="button" id="button-grid" class="btn btn-light" data-bs-toggle="tooltip" title="{{ button_grid }}"><i class="fa-solid fa-table-cells"></i></button>
</div>
</div>
<div class="col-md-4 offset-md-1 col-6">
<div class="input-group mb-3">
<label for="input-sort" class="input-group-text">{{ text_sort }}</label>
<select id="input-sort" class="form-select" onchange="location = this.value;">
{% for sorts in sorts %}
<option value="{{ sorts.href }}"{% if sorts.value == '%s-%s'|format(sort, order) %} selected{% endif %}>{{ sorts.text }}</option>
{% endfor %}
</select>
</div>
</div>
<div class="col-md-3 col-6">
<div class="input-group mb-3">
<label for="input-limit" class="input-group-text">{{ text_limit }}</label>
<select id="input-limit" class="form-select" onchange="location = this.value;">
{% for limits in limits %}
<option value="{{ limits.href }}"{% if limits.value == limit %} selected{% endif %}>{{ limits.text }}</option>
{% endfor %}
</select>
</div>
</div>
</div>
<div id="product-list" class="row row-cols-1 row-cols-sm-2 row-cols-md-2 row-cols-lg-4">
{% for product in products %}
<div class="col mb-3">{{ product }}</div>
{% endfor %}
</div>
<div class="row">
<div class="col-sm-6 text-start">{{ pagination }}</div>
<div class="col-sm-6 text-end">{{ results }}</div>
</div>
{% else %}
<p>{{ text_no_results }}</p>
{% endif %}
{{ content_bottom }}</div>
{{ column_right }}</div>
</div>
<script type="text/javascript"><!--
$('#button-search').bind('click', function() {
url = 'index.php?route=product/search&language={{ language }}';
var search = $('#input-search').val();
if (search) {
url += '&search=' + encodeURIComponent(search);
}
var category_id = $('#input-category').prop('value');
if (category_id > 0) {
url += '&category_id=' + encodeURIComponent(category_id);
}
var sub_category = $('#input-sub-category:checked').prop('value');
if (sub_category) {
url += '&sub_category=1';
}
var filter_description = $('#input-description:checked').prop('value');
if (filter_description) {
url += '&description=1';
}
location = url;
});
$('#input-search').bind('keydown', function(e) {
if (e.keyCode == 13) {
$('#button-search').trigger('click');
}
});
$('#input-category').on('change', function() {
$('#input-sub-category').prop('disabled', (this.value == '0' ? true : false));
});
$('#input-category').trigger('change');
//--></script>
{{ footer }}

View File

@ -0,0 +1,60 @@
{{ header }}
<div id="product-search" class="container">
<ul class="breadcrumb">
{% for breadcrumb in breadcrumbs %}
<li class="breadcrumb-item"><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li>
{% endfor %}
</ul>
<div class="row">{{ column_left }}
<div id="content" class="col">{{ content_top }}
<h2>{{ heading_title }}</h2>
{% if products %}
<div id="display-control" class="row">
<div class="col-md-3">
<div class="mb-3">
<a href="{{ compare }}" id="compare-total" class="btn btn-primary d-block"><i class="fa-solid fa-arrow-right-arrow-left"></i> <span class="d-inline d-md-none d-lg-inline">{{ text_compare }}</span></a>
</div>
</div>
<div class="col-md-1 d-none d-md-block">
<div class="btn-group">
<button type="button" id="button-list" class="btn btn-light" data-bs-toggle="tooltip" title="{{ button_list }}"><i class="fa-solid fa-table-list"></i></button>
<button type="button" id="button-grid" class="btn btn-light" data-bs-toggle="tooltip" title="{{ button_grid }}"><i class="fa-solid fa-table-cells"></i></button>
</div>
</div>
<div class="col-md-4 offset-md-1 col-6">
<div class="input-group mb-3">
<label for="input-sort" class="input-group-text">{{ text_sort }}</label> <select id="input-sort" class="form-select" onchange="location = this.value;">
{% for sorts in sorts %}
<option value="{{ sorts.href }}"{% if sorts.value == '%s-%s'|format(sort, order) %} selected{% endif %}>{{ sorts.text }}</option>
{% endfor %}
</select>
</div>
</div>
<div class="col-md-3 col-6">
<div class="input-group mb-3">
<label for="input-limit" class="input-group-text">{{ text_limit }}</label>
<select id="input-limit" class="form-select" onchange="location = this.value;">
{% for limits in limits %}
<option value="{{ limits.href }}"{% if limits.value == limit %} selected{% endif %}>{{ limits.text }}</option>
{% endfor %}
</select>
</div>
</div>
</div>
<div id="product-list" class="row row-cols-1 row-cols-sm-2 row-cols-md-2 row-cols-lg-4">
{% for product in products %}
<div class="col mb-3">{{ product }}</div>
{% endfor %}
</div>
<div class="row">
<div class="col-sm-6 text-start">{{ pagination }}</div>
<div class="col-sm-6 text-end">{{ results }}</div>
</div>
{% else %}
<p>{{ text_no_results }}</p>
<div class="text-end"><a href="{{ continue }}" class="btn btn-primary">{{ button_continue }}</a></div>
{% endif %}
{{ content_bottom }}</div>
{{ column_right }}</div>
</div>
{{ footer }}

View File

@ -0,0 +1,40 @@
<div class="product-thumb">
<div class="image"><a href="{{ href }}"><img src="{{ thumb }}" alt="{{ name }}" title="{{ name }}" class="img-fluid"/></a></div>
<div class="content">
<div class="description">
<h4><a href="{{ href }}">{{ name }}</a></h4>
<p>{{ description }}</p>
{% if price %}
<div class="price">
{% if not special %}
<span class="price-new">{{ price }}</span>
{% else %}
<span class="price-new">{{ special }}</span> <span class="price-old">{{ price }}</span>
{% endif %}
{% if tax %}
<span class="price-tax">{{ text_tax }} {{ tax }}</span>
{% endif %}
</div>
{% endif %}
{% if review_status and rating %}
<div class="rating">
{% for i in 1..5 %}
{% if rating < i %}
<span class="fa-stack"><i class="fa-regular fa-star fa-stack-1x"></i></span>
{% else %}
<span class="fa-stack"><i class="fa-solid fa-star fa-stack-1x"></i><i class="fa-regular fa-star fa-stack-1x"></i></span>
{% endif %}
{% endfor %}
</div>
{% endif %}
</div>
<form method="post" data-oc-toggle="ajax" data-oc-load="{{ cart }}" data-oc-target="#header-cart">
<div class="button-group">
<button type="submit" formaction="{{ add_to_cart }}" data-bs-toggle="tooltip" title="{{ button_cart }}"><i class="fa-solid fa-shopping-cart"></i></button>
<button type="submit" formaction="{{ add_to_wishlist }}" data-bs-toggle="tooltip" title="{{ button_wishlist }}"><i class="fa-solid fa-heart"></i></button>
<button type="submit" formaction="{{ add_to_compare }}" data-bs-toggle="tooltip" title="{{ button_compare }}"><i class="fa-solid fa-arrow-right-arrow-left"></i></button>
</div>
<input type="hidden" name="product_id" value="{{ product_id }}"/> <input type="hidden" name="quantity" value="{{ minimum }}"/>
</form>
</div>
</div>