1.started removal of CDNs.\n 2. Improved modular structure for all parts of project including database.

This commit is contained in:
2024-08-30 23:27:28 +01:00
parent 18977c8cac
commit f9cd9ec33a
2895 changed files with 490579 additions and 7561 deletions

View File

@@ -0,0 +1,9 @@
<!-- Store Product Category Card -->
<div class="card" {{ model.attr_product_category_id }}="{{ cat.id_category }}">
<h3 style="width: 100%; justify-self: left; margin-left: 3vh; display: inline-flex;">{{ cat.name }}</h4>
<div class="container">
{% for product in cat.products %}
{% include '_block_store_product.html' %}
{% endfor %}
</div>
</div>

View File

@@ -24,8 +24,8 @@
</div>
<div class="topnav">
<a href="{{ url_for('home') }}">Home</a> <!-- -->
<a href="{{ url_for('store_home') }}">Store</a>
<a href="{{ url_for('routes_core.home') }}">Home</a> <!-- -->
<a href="{{ url_for('routes_store.store_home') }}">Store</a>
<!--
<a href="{{ url_for('get_publishable_key') }}">Get Key</a>
<a href="{{ url_for('get_checkout_session') }}">Get Session</a>
@@ -37,7 +37,7 @@
</form>
<a href="#" onclick="document.getElementById('formCreateCheckoutSession').submit();">About - Post Session</a>
-->
<a href="{{ url_for('contact') }}" style="float:right">Contact</a>
<a href="{{ url_for('routes_core.contact') }}" style="float:right">Contact</a>
</div>
<div class="content">

View File

@@ -0,0 +1 @@
<div class="{{ model.FLAG_BUTTON_SLIDER }}"></div>

View File

@@ -1,8 +1,8 @@
{% if is_blank_row %}
<tr class="{{ model.FLAG_ROW_NEW }}" {{ model.ATTR_ID_PERMUTATION }}>
<td class="{{ model.FLAG_CATEGORY }}">
<select class="{{ model.FLAG_CATEGORY}}" {{ model.ATTR_VALUE_CURRENT }} {{ model.ATTR_VALUE_PREVIOUS }}>
<td class="{{ model.FLAG_PRODUCT_CATEGORY }}">
<select class="{{ model.FLAG_PRODUCT_CATEGORY}}" {{ model.ATTR_VALUE_CURRENT }} {{ model.ATTR_VALUE_PREVIOUS }}>
{% for cat in model.category_list.categories %}
<option value="{{ cat.id_category }}">{{ cat.name }}</option>
{% endfor %}
@@ -32,8 +32,8 @@
</tr>
{% else %}
<tr {{ model.ATTR_ID_PERMUTATION }}="{{ permutation.id_permutation }}">
<td class="{{ model.FLAG_CATEGORY }}">
<select class="{{ model.FLAG_CATEGORY }}" {{ model.ATTR_VALUE_CURRENT }}="{{ category.id_category }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ category.id_category }}"> <!-- {{ model.ATTR_ID_CATEGORY }}="{{ category.id_category }}" -->
<td class="{{ model.FLAG_PRODUCT_CATEGORY }}">
<select class="{{ model.FLAG_PRODUCT_CATEGORY }}" {{ model.ATTR_VALUE_CURRENT }}="{{ category.id_category }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ category.id_category }}"> <!-- {{ model.ATTR_ID_CATEGORY }}="{{ category.id_category }}" -->
{% for c in model.category_list.categories %}
<option value="{{ c.id_category }}" {{ "selected" if c.id_category == category.id_category else "" }}>{{ c.name }}</option>
{% endfor %}

View File

@@ -1,9 +1,37 @@
<!-- Store Product Category Card -->
<div class="card" {{ model.attr_product_category_id }}="{{ cat.id_category }}">
<h3 style="width: 100%; justify-self: left; margin-left: 3vh; display: inline-flex;">{{ cat.name }}</h4>
<div class="container">
{% for product in cat.products %}
{% include '_block_store_product.html' %}
{% endfor %}
</div>
</div>
{% if is_blank_row %}
<tr class="{{ model.FLAG_ROW_NEW }}" {{ model.ATTR_ID_CATEGORY }}>
<td class="{{ model.FLAG_DISPLAY_ORDER }}">
{% include '_block_button_slider.html' %}
</td>
<td class="{{ model.FLAG_CODE }}">
<textarea class="{{ model.FLAG_CODE }}" {{ model.ATTR_VALUE_CURRENT }} {{ model.ATTR_VALUE_PREVIOUS }}></select>
</td>
<td class="{{ model.FLAG_NAME }}">
<textarea class="{{ model.FLAG_NAME }}" {{ model.ATTR_VALUE_CURRENT }} {{ model.ATTR_VALUE_PREVIOUS }}></textarea>
</td>
<td class="{{ model.FLAG_DESCRIPTION }}">
<textarea class="{{ model.FLAG_DESCRIPTION }}" {{ model.ATTR_VALUE_CURRENT }} {{ model.ATTR_VALUE_PREVIOUS }}>
</td>
<td class="{{ model.FLAG_ACTIVE }}">
<input class="{{ model.FLAG_ACTIVE }}" type="checkbox" checked {{ model.ATTR_VALUE_CURRENT }}="true" {{ model.ATTR_VALUE_PREVIOUS }}="true">
</td>
</tr>
{% else %}
<tr {{ model.ATTR_ID_CATEGORY }}="{{ category.id_category }}">
<td class="{{ model.FLAG_DISPLAY_ORDER }}">
{% include '_block_button_slider.html' %}
</td>
<td class="{{ model.FLAG_CODE }}">
<textarea class="{{ model.FLAG_CODE }}" value="{{ category.code }}" {{ model.ATTR_VALUE_CURRENT }}="{{ category.code }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ category.code }}"></select>
</td>
<td class="{{ model.FLAG_NAME }}">
<textarea class="{{ model.FLAG_NAME }}" value="{{ category.name }}" {{ model.ATTR_VALUE_CURRENT }}="{{ category.name }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ category.name }}"></textarea>
</td>
<td class="{{ model.FLAG_DESCRIPTION }}">
<textarea class="{{ model.FLAG_DESCRIPTION }}" value="{{ category.description }}" {{ model.ATTR_VALUE_CURRENT }}="{{ category.description }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ category.description }}">
</td>
<td class="{{ model.FLAG_ACTIVE }}">
<input class="{{ model.FLAG_ACTIVE }}" type="checkbox" {% if category.active %}checked{% endif %} {{ model.ATTR_VALUE_CURRENT }}="{{ str(category.active).lower() }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ str(category.active).lower() }}">
</td>
</tr>
{% endif %}

View File

@@ -1,8 +1,8 @@
{% if is_blank_row %}
<tr class="{{ model.FLAG_ROW_NEW }}" {{ model.ATTR_ID_STOCK_ITEM }}>
<td class="{{ model.FLAG_CATEGORY }}">
<select class="{{ model.FLAG_CATEGORY}}" {{ model.ATTR_VALUE_CURRENT }} {{ model.ATTR_VALUE_PREVIOUS }}>
<td class="{{ model.FLAG_PRODUCT_CATEGORY }}">
<select class="{{ model.FLAG_PRODUCT_CATEGORY}}" {{ model.ATTR_VALUE_CURRENT }} {{ model.ATTR_VALUE_PREVIOUS }}>
{% for cat in model.category_list.categories %}
<option value="{{ cat.id_category }}">{{ cat.name }}</option>
{% endfor %}
@@ -48,8 +48,8 @@
</tr>
{% else %}
<tr {{ model.ATTR_ID_STOCK_ITEM }}="{{ stock_item.id_stock_item }}">
<td class="{{ model.FLAG_CATEGORY }}">
<select class="{{ model.FLAG_CATEGORY }}" {{ model.ATTR_VALUE_CURRENT }}="{{ category.id_category }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ category.id_category }}"> <!-- {{ model.ATTR_ID_CATEGORY }}="{{ category.id_category }}" -->
<td class="{{ model.FLAG_PRODUCT_CATEGORY }}">
<select class="{{ model.FLAG_PRODUCT_CATEGORY }}" {{ model.ATTR_VALUE_CURRENT }}="{{ category.id_category }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ category.id_category }}"> <!-- {{ model.ATTR_ID_CATEGORY }}="{{ category.id_category }}" -->
{% for c in model.category_list.categories %}
<option value="{{ c.id_category }}" {{ "selected" if c.id_category == category.id_category else "" }}>{{ c.name }}</option>
{% endfor %}

View File

@@ -1,9 +1,9 @@
{% if block_id == 'button_save' %}
<button id="{{ model.ID_BUTTON_SAVE }}" type="submit" class="{{ model.FLAG_BUTTON_SUBMIT }}">Save</button>
<button id="{{ model.ID_BUTTON_SAVE }}" type="button" class="{{ model.FLAG_BUTTON_SUBMIT }}">Save</button>
{% elif block_id == 'button_cancel' %}
<button id="{{ model.ID_BUTTON_CANCEL }}" class="{{ model.FLAG_BUTTON_CANCEL }}">Cancel</button>
<button id="{{ model.ID_BUTTON_CANCEL }}" type="button" class="{{ model.FLAG_BUTTON_CANCEL }}">Cancel</button>
{% elif block_id == 'button_add' %}
<button id="{{ model.ID_BUTTON_ADD }}" class="{{ model.FLAG_BUTTON_ADD }}">Add new</button>
<button id="{{ model.ID_BUTTON_ADD }}" type="button" class="{{ model.FLAG_ADD }}">Add new</button>
{% elif block_id == 'button_confirm' %}
<button id="{{ model.ID_BUTTON_CONFIRM }}" class="{{ model.FLAG_BUTTON_SUBMIT }}">Confirm</button>
<button id="{{ model.ID_BUTTON_CONFIRM }}" type="button" class="{{ model.FLAG_BUTTON_SUBMIT }}">Confirm</button>
{% endif %}

View File

@@ -4,7 +4,7 @@
{% block page_body %}
<!-- Include Stylesheet -->
<link rel="stylesheet" href="{{ url_for('static', filename='css/services.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/pages/page_services.css') }}">
<!-- HTML content -->
<div class="{{ model.FLAG_CARD }} {{ model.FLAG_COLUMN }}">
@@ -198,17 +198,9 @@
[Note: publishing the test report is optional but doing so may allow you to make your accessibility statement shorter and more focused.]
https://www.w3.org/WAI/eval/report-tool/#/
-->
<p>You can read the full accessibility test report {{ model.URL_HOST }}{{ url_for('accessibility_report') }}.</p>
<p>You can read the full accessibility test report {{ model.URL_HOST }}{{ url_for('routes_legal.accessibility_report') }}.</p>
</div>
<!-- Include JavaScript -->
<script src="{{ url_for('static', filename='js/accessibility_statement.js') }}"></script>
<script>
var hashPageCurrent = "{{ model.HASH_PAGE_ACCESSIBILITY_STATEMENT }}";
$(document).ready(function() {
hookupPageAccessibilityStatement();
});
</script>
<script type="module" src="{{ url_for('static', filename='js/pages/page_accessibility_statement.js') }}"></script>
{% endblock %}

View File

@@ -0,0 +1,52 @@
{% extends 'layout.html' %}
{% block title %}{{ model.title }}{% endblock %}
{% block page_body %}
<!-- Include Stylesheet -->
<link rel="stylesheet" href="{{ url_for('static', filename='css/pages/page_admin_home.css') }}">
<!-- HTML content -->
<div class="{{ model.FLAG_CARD }} {{ model.FLAG_ROW }}">
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
<h2>Store</h2>
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
<button class="{{ model.FLAG_NAV_STORE_PRODUCT_CATEGORIES }}">Product Categories</button>
</div>
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
<button class="{{ model.FLAG_NAV_STORE_PRODUCTS }}">Products</button>
</div>
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
<button class="{{ model.FLAG_NAV_STORE_PRODUCT_PERMUTATIONS }}">Product Permutations</button>
</div>
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
<button class="{{ model.FLAG_NAV_STORE_PRODUCT_PRICES }}">Product Prices</button>
</div>
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
<button class="{{ model.FLAG_NAV_STORE_STOCK_ITEMS }}">Product Stock</button>
</div>
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
<button class="{{ model.FLAG_NAV_STORE_PRODUCT_VARIATIONS }}">Product Variations</button>
</div>
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
<button class="{{ model.FLAG_NAV_ADMIN_STORE_STRIPE_PRODUCTS }}">Add new Stripe products</button>
</div>
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
<button class="{{ model.FLAG_NAV_ADMIN_STORE_STRIPE_PRICES }}">Add new Stripe prices</button>
</div>
</div>
<!-- Include JavaScript -->
<script type="module" src="{{ url_for('static', filename='js/pages/page_admin_home.js') }}"></script>
<script type="module" src="{{ url_for('static', filename='js/pages/page_store_base.js') }}"></script>
<!--
<script>
var hashPageCurrent = "{{ model.HASH_PAGE_STORE_ADMIN_HOME }}";
$(document).ready(function() {
hookupPageAdminHome();
});
</script>
-->
{% endblock %}

View File

@@ -4,34 +4,36 @@
{% block page_body %}
<!-- Include Stylesheet -->
<link rel="stylesheet" href="{{ url_for('static', filename='css/contact.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/pages/page_contact.css') }}">
<script src="https://www.google.com/recaptcha/enterprise.js?render=6Lf8Q8cpAAAAAFAawGu4-ma60bvbEixNVTVvRzKe"></script> <!-- reCaptcha Integration -->
<!-- HTML content -->
<div class="card">
<form id="{{ model.ID_FORM_CONTACT }}" class="container" action="{{ url_for('contact') }}" method="POST">
<form id="{{ model.ID_FORM_CONTACT }}" class="container" action="{{ url_for('routes_core.contact') }}" method="POST">
<h2 class="label-title">Complete the form or find our details below.</h2>
<!--
<div class="container-input">
<div class="{{ model.FLAG_CONTAINER_INPUT }}">
<label for="sender_email">Email address</label> <!-- class="input-label" --
<input type="email" id="sender_email" name="sender_email" placeholder="Please enter your email address so we can get back to you." style="width: 50%;"/>
</div>
<div class="container-input">
<div class="{{ model.FLAG_CONTAINER_INPUT }}">
<label for="sender_CC">
<input type="checkbox" id="sender_CC" name="sender_CC" checked/>Uncheck this box if you do not wish to receive a copy of the email
</label>
</div>
<div class="container-input">
<div class="{{ model.FLAG_CONTAINER_INPUT }}">
<label for="sender_name">Name</label> <!-- class="input-label" --
<input type="text" id="sender_name" name="sender_name" placeholder="Please enter your preferred name." style="width: 30%;"/>
</div>
<div class="container-input">
<div class="{{ model.FLAG_CONTAINER_INPUT }}">
<label for="sender_message">Message</label> <!-- class="input-label" --
<textarea id="sender_message" name="sender_message" rows="4" cols="80" placeholder="How can we help?"></textarea>
</div>
<button type="submit" id="submit_form_email">Submit request</button>
-->
{{ model.form_contact.hidden_tag() }}
<div class="container-input">
<div class="{{ model.FLAG_CONTAINER_INPUT }}">
{{ model.form_contact.email.label }}
{{ model.form_contact.email(size=254) }}
{% for error in model.form_contact.email.errors %}
@@ -39,7 +41,7 @@
{% endfor %}
</div>
<!--
<div class="container-input">
<div class="{{ model.FLAG_CONTAINER_INPUT }}">
{{ model.form_contact.CC.label }}
{{ model.form_contact.CC(checked=True) }}
{% for error in model.form_contact.name.errors %}
@@ -47,24 +49,24 @@
{% endfor %}
</div>
-->
<div class="container-input">
<div class="{{ model.FLAG_CONTAINER_INPUT }}">
{{ model.form_contact.name.label }}
{{ model.form_contact.name(size=50) }}
{% for error in model.form_contact.name.errors %}
<p class="error">{{ error }}</p>
{% endfor %}
</div>
<div class="container-input">
<div class="{{ model.FLAG_CONTAINER_INPUT }}">
{{ model.form_contact.message.label }}
{{ model.form_contact.message(rows=4, cols=80) }}
{% for error in model.form_contact.name.errors %}
<p class="error">{{ error }}</p>
{% endfor %}
</div>
<div class="container-input">
<div class="{{ model.FLAG_CONTAINER_INPUT }}">
{{ model.form_contact.recaptcha() }}
</div>
<div class="container-input">
<div class="{{ model.FLAG_CONTAINER_INPUT }}">
{{ model.form_contact.submit() }}
</div>
</form>
@@ -78,23 +80,24 @@
<h4>{{ model.app.MAIL_CONTACT_PUBLIC }}</h4>
</div>
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}" style="padding-top: 0; width: fit-content;">
<a href="{{ model.url_LinkedIn }}" class="container-icon-label"><img class="img-icon" src="{{ url_for('static', filename='images/Logo_LinkedIn.png') }}" alt="LinkedIn"></img><!--<h4>LinkedIn</h4>--></a>
<a href="{{ model.url_GitHub }}" class="container-icon-label"><img class="img-icon" src="{{ url_for('static', filename='images/Logo_GitHub.png') }}" alt="GitHub"></img><!--<h4>GitHub</h4>--></a>
<a href="{{ model.url_LinkedIn }}" class="container-icon-label"><img class="img-icon" src="{{ url_for('static', filename='images/Logo_LinkedIn.png') }}" alt="LinkedIn" aria-label="LinkedIn"></img><!--<h4>LinkedIn</h4>--></a>
<a href="{{ model.url_GitHub }}" class="container-icon-label"><img class="img-icon" src="{{ url_for('static', filename='images/Logo_GitHub.png') }}" alt="GitHub" aria-label="GitHub"></img><!--<h4>GitHub</h4>--></a>
</div>
</div>
<!-- Include JavaScript -->
<script src="{{ url_for('static', filename='js/contact.js') }}"></script>
<script type="module" src="{{ url_for('static', filename='js/pages/page_contact.js') }}"></script>
<script>
var hashPageCurrent = "{{ model.HASH_PAGE_CONTACT }}";
var idEmail = "#{{ model.ID_EMAIL }}";
var idMessage = "#{{ model.ID_MESSAGE }}";
var idName = "#{{ model.ID_NAME }}";
/*
$(document).ready(function() {
stylePageContact();
hookupPageContact();
});
*/
</script>
{% endblock %}

View File

@@ -4,7 +4,7 @@
{% block page_body %}
<!-- Include Stylesheet -->
<link rel="stylesheet" href="{{ url_for('static', filename='css/home.css') }}" />
<link rel="stylesheet" href="{{ url_for('static', filename='css/pages/page_home.css') }}" />
<!-- HTML content -->
<div>
@@ -14,8 +14,9 @@
</div>
<!-- Include JavaScript -->
<script src="{{ url_for('static', filename='js/home.js') }}"></script>
<script type="module" src="{{ url_for('static', filename='js/pages/page_home.js') }}"></script>
<!--
<script>
var hashPageCurrent = "{{ model.HASH_PAGE_HOME }}";
@@ -23,4 +24,5 @@
hookupPageHome();
});
</script>
-->
{% endblock %}

View File

@@ -4,7 +4,7 @@
{% block page_body %}
<!-- Include Stylesheet -->
<link rel="stylesheet" href="{{ url_for('static', filename='css/contact.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/pages/page_license.css') }}">
<!-- HTML content -->
<div class="{{ model.FLAG_CARD }} {{ model.FLAG_COLUMN }}">
@@ -21,8 +21,9 @@
</div>
<!-- Include JavaScript -->
<script src="{{ url_for('static', filename='js/contact.js') }}"></script>
<script type="module" src="{{ url_for('static', filename='js/pages/page_license.js') }}"></script>
<!--
<script>
var hashPageCurrent = "{{ model.HASH_PAGE_LICENSE }}";
@@ -30,4 +31,5 @@
hookupPageLicense();
});
</script>
-->
{% endblock %}

View File

@@ -4,7 +4,7 @@
{% block page_body %}
<!-- Include Stylesheet -->
<link rel="stylesheet" href="{{ url_for('static', filename='css/services.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/pages/page_services.css') }}">
<!-- HTML content -->
<div class="{{ model.FLAG_CARD }} {{ model.FLAG_COLUMN }}">
@@ -80,8 +80,9 @@
</div>
<!-- Include JavaScript -->
<script src="{{ url_for('static', filename='js/accessibility_statement.js') }}"></script>
<script type="module" src="{{ url_for('static', filename='js/pages/page_accessibility_statement.js') }}"></script>
<!--
<script>
var hashPageCurrent = "{{ model.HASH_PAGE_ACCESSIBILITY_STATEMENT }}";
@@ -89,4 +90,5 @@
hookupPageAccessibilityStatement();
});
</script>
-->
{% endblock %}

View File

@@ -4,7 +4,7 @@
{% block page_body %}
<!-- Include Stylesheet -->
<link rel="stylesheet" href="{{ url_for('static', filename='css/services.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/pages/page_services.css') }}">
<!-- HTML content -->
<div class="{{ model.FLAG_CARD }} {{ model.FLAG_COLUMN }}">
@@ -1946,8 +1946,9 @@
</div>
<!-- Include JavaScript -->
<script src="{{ url_for('static', filename='js/retention_schedule.js') }}"></script>
<script type="module" src="{{ url_for('static', filename='js/pages/page_retention_schedule.js') }}"></script>
<!--
<script>
var hashPageCurrent = "{{ model.HASH_PAGE_RETENTION_SCHEDULE }}";
@@ -1955,5 +1956,6 @@
hookupPageRetentionSchedule();
});
</script>
-->
{% endblock %}

View File

@@ -6,7 +6,7 @@
{% block page_body %}
<!-- Include Stylesheet -->
<link rel="stylesheet" href="{{ url_for('static', filename='css/services.css') }}" />
<link rel="stylesheet" href="{{ url_for('static', filename='css/pages/page_services.css') }}" />
<!-- HTML content -->
<div class="{{ model.FLAG_CARD }}">
@@ -101,8 +101,9 @@
</div>
<!-- Include JavaScript -->
<script src="{{ url_for('static', filename='js/services.js') }}"></script>
<script type="module" src="{{ url_for('static', filename='js/pages/page_services.js') }}"></script>
<!--
<script>
var hashPageCurrent = "{{ model.HASH_PAGE_SERVICES }}";
@@ -110,4 +111,5 @@
hookupPageServices();
});
</script>
-->
{% endblock %}

View File

@@ -1,78 +0,0 @@
{% extends 'layout.html' %}
{% block title %}{{ model.title }}{% endblock %}
{% block page_body %}
<!-- Include Stylesheet -->
<link rel="stylesheet" href="{{ url_for('static', filename='css/home.css') }}">
<!-- HTML content -->
<div class="row">
<div class="leftcolumn">
<div class="card">
<div class="container column">
<button id="{{ model.id_btn_admin_stripe_product_new }}">Add new Stripe products</button>
</div>
</div>
<div class="card">
<div class="container column">
<button id="{{ model.id_btn_admin_stripe_price_new }}">Add new Stripe prices</button>
</div>
</div>
<div class="card">
<div class="container column">
<button>Admin template 1</button>
</div>
</div>
</div>
<div class="rightcolumn">
<div class="card">
<div class="container">
<h3 class="label-title">About Us</h3>
<img class="img-featured" src="{{ url_for('static', filename='images/Tag_Molly1.jpg')}}" alt="Molly tag image">
<p>We are open for business!</p>
</div>
</div>
<div class="card">
<div class="container">
<h3 class="label-title">Promoted content</h3>
<div class="card">
<div class="container">
<img class="img-featured" src="{{ url_for('static', filename='images/Braille_Translator_Demo.png')}}" alt="Braille translator demo image">
</div>
<div class="container">
<p>Braille Keyboard Learning Tool</p>
</div>
</div>
<div class="card">
<div class="container">
<img class="img-featured" src="{{ url_for('static', filename='images/Prosthetics_Demo.gif')}}" alt="Prosthetics demo gif">
</div>
<div class="container">
<p>FREE Prosthetic Hands by e-NABLE</p>
</div>
</div>
</div>
</div>
<div class="card">
<div class="container">
<h3 class="label-title">Where to find us</h3>
<a href="{{ model.url_LinkedIn }}" class="container-icon-label"><img class="img-icon" src="{{ url_for('static', filename='images/Logo_LinkedIn.png') }}"/><h4>LinkedIn</h4></a>
<a href="{{ model.url_GitHub }}" class="container-icon-label"><img class="img-icon" src="{{ url_for('static', filename='images/Logo_GitHub.png') }}"/><h4>GitHub</h4></a>
</div>
</div>
</div>
</div>
<!-- Include JavaScript -->
<script src="{{ url_for('static', filename='js/store_admin.js') }}"></script>
<script src="{{ url_for('static', filename='js/store_shared.js') }}"></script>
<script>
var hashPageCurrent = "{{ model.HASH_PAGE_STORE_ADMIN_HOME }}";
$(document).ready(function() {
hookupPageStoreAdminHome();
});
</script>
{% endblock %}

View File

@@ -53,9 +53,10 @@
<!-- Include JavaScript -->
{% set block_id = 'scripts' %}
{% include '_shared_store.html' %}
<script src="{{ url_for('static', filename='js/store_page_basket.js') }}"></script>
<script type="module" src="{{ url_for('static', filename='js/pages/page_store_basket.js') }}"></script>
{% set block_id = 'checkout' %}
{% include '_shared_store.html' %}
<!--
<script>
var hashPageCurrent = "{{ model.HASH_PAGE_STORE_BASKET }}";
@@ -65,4 +66,5 @@
// hookupStorePageBilling();
});
</script>
-->
{% endblock %}

View File

@@ -6,7 +6,6 @@
<!-- Include Stylesheets -->
{% set block_id = 'styles' %}
{% include '_shared_store.html' %}
<!-- <link rel="stylesheet" href="{{ url_for('static', filename='css/store_home.css') }}"> css/store_basket.css -->
<!-- HTML content -->
<div class="{{ model.FLAG_CARD }}">
@@ -29,9 +28,10 @@
<!-- Include JavaScript -->
{% set block_id = 'scripts' %}
{% include '_shared_store.html' %}
<script src="{{ url_for('static', filename='js/store_page_basket.js') }}"></script>
<script type="module" src="{{ url_for('static', filename='js/pages/page_store_basket.js') }}"></script>
{% set block_id = 'checkout' %}
{% include '_shared_store.html' %}
<!--
<script>
var hashPageCurrent = "{{ model.HASH_PAGE_STORE_BASKET }}";
@@ -40,4 +40,5 @@
hookupStorePageCheckoutSuccess();
});
</script>
-->
{% endblock %}

View File

@@ -0,0 +1,81 @@
{% extends 'layout.html' %}
{% block page_body %}
{% set block_id = 'styles' %}
{% include '_shared_store.html' %}
<link rel="stylesheet" href="{{ url_for('static', filename='css/pages/page_store_product_categories.css') }}">
<form id="{{ model.ID_FORM_FILTERS_CATEGORIES }}" class="{{ model.FLAG_ROW }} {{ model.FLAG_CARD }}" action="{{ url_for('routes_store.category_save') }}" method="POST"> <!-- {{ model.FLAG_CONTAINER }} -->
{{ model.form_filters.hidden_tag() }}
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
<div class="{{ model.FLAG_CONTAINER_INPUT }} {{ model.FLAG_ROW }}">
{{ model.form_filters.is_not_empty.label }}
{{ model.form_filters.is_not_empty() }}
{% for error in model.form_filters.is_not_empty.errors %}
<p class="error">{{ error }}</p>
{% endfor %}
</div>
</div>
<!--
-->
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
<div class="{{ model.FLAG_CONTAINER_INPUT }}">
{% set block_id = 'button_add' %}
{% include '_blocks_button_save_cancel.html' %}
</div>
</div>
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
<div class="{{ model.FLAG_CONTAINER_INPUT }}">
{% set block_id = 'button_save' %}
{% include '_blocks_button_save_cancel.html' %}
</div>
</div>
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
<div class="{{ model.FLAG_CONTAINER_INPUT }}">
{% set block_id = 'button_cancel' %}
{% include '_blocks_button_save_cancel.html' %}
</div>
</div>
<!--
<div class="{{ model.FLAG_ROW }} {{ model.FLAG_CARD }}">
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
</div>
</div>
-->
</form>
<table id="{{ model.ID_TABLE_MAIN }}" class="{{ model.FLAG_ROW }} {{ model.FLAG_CARD }}">
<thead>
<tr class="{{ model.FLAG_PRODUCT_CATEGORY }}">
<th class="{{ model.FLAG_DISPLAY_ORDER }}">Display Order</th>
<th class="{{ model.FLAG_CODE }}">Code</th>
<th class="{{ model.FLAG_NAME }}">Name</th>
<th class="{{ model.FLAG_DESCRIPTION }}">Description</th>
</tr>
</thead>
<tbody>
{% set is_blank_row = False %}
{% for category in model.category_list.categories %}
{% include '_block_store_product_category.html' %}
{% endfor %}
{% set is_blank_row = True %}
{% include '_block_store_product_category.html' %}
</tbody>
</table>
{% include '_block_overlay_confirm.html' %}
{% include '_block_overlay_error.html' %}
{% set block_id = 'scripts' %}
{% include '_shared_store.html' %}
<!-- Include JavaScript -->
<script type="module" src="{{ url_for('static', filename='js/pages/page_store_product_permutations.js') }}"></script>
<script>
// pass arguments from model to JS
var idFormFiltersProductCategories = "#{{ model.ID_FORM_FILTERS_PRODUCT_CATEGORIES }}";
var keyProductCategory = "{{ model.KEY_PRODUCT_CATEGORY }}";
var listCategories = {{ model.category_list.to_list_categories() | tojson | safe }};
</script>
{% endblock %}

View File

@@ -8,10 +8,10 @@
{% set block_id = 'styles' %}
{% include '_shared_store.html' %}
<script>console.log("test 1");</script>
<link rel="stylesheet" href="{{ url_for('static', filename='css/store_product_permutation.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/pages/page_store_product_permutations.css') }}">
<!-- HTML content -->
<form id="{{ model.ID_FORM_FILTERS_PERMUTATIONS }}" class="{{ model.FLAG_ROW }} {{ model.FLAG_CARD }}" action="{{ url_for('permutation_save') }}" method="POST"> <!-- {{ model.FLAG_CONTAINER }} -->
<form id="{{ model.ID_FORM_FILTERS_PERMUTATIONS }}" class="{{ model.FLAG_ROW }} {{ model.FLAG_CARD }}" action="{{ url_for('routes_store_product_permutation.permutation_save') }}" method="POST"> <!-- {{ model.FLAG_CONTAINER }} -->
{{ model.form_filters.hidden_tag() }}
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
<div class="{{ model.FLAG_CONTAINER_INPUT }}">
@@ -81,17 +81,17 @@
{% include '_blocks_button_save_cancel.html' %}
</div>
</div>
</form>
<!--
<div class="{{ model.FLAG_ROW }} {{ model.FLAG_CARD }}">
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
<!--
<div class="{{ model.FLAG_ROW }} {{ model.FLAG_CARD }}">
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
</div>
</div>
</div>
-->
-->
</form>
<table id="{{ model.ID_TABLE_MAIN }}" class="{{ model.FLAG_ROW }} {{ model.FLAG_CARD }}">
<thead>
<tr>
<th class="{{ model.FLAG_CATEGORY }}">Category</th>
<th class="{{ model.FLAG_PRODUCT_CATEGORY }}">Category</th>
<th class="{{ model.FLAG_PRODUCT }}">Product</th>
<th class="{{ model.FLAG_VARIATIONS }}">Variations</th>
<th class="{{ model.FLAG_QUANTITY_STOCK }}">Quantity Stock</th>
@@ -123,30 +123,20 @@
{% set block_id = 'scripts' %}
{% include '_shared_store.html' %}
<!-- Include JavaScript -->
<script src="{{ url_for('static', filename='js/store_product_permutation.js') }}"></script>
<script type="module" src="{{ url_for('static', filename='js/pages/page_store_product_permutations.js') }}"></script>
<script>
// pass arguments from model to JS
var attrIdCategory = "{{ model.ATTR_ID_CATEGORY }}";
var attrIdProduct = "{{ model.ATTR_ID_PRODUCT }}";
var attrIdPermutation = "{{ model.ATTR_ID_PERMUTATION }}";
var flagCategory = "{{ model.FLAG_CATEGORY }}";
var flagProduct = "{{ model.FLAG_PRODUCT }}";
var flagVariations = "{{ model.FLAG_VARIATIONS }}";
var flagQuantityStock = "{{ model.FLAG_QUANTITY_STOCK }}";
var flagQuantityMin = "{{ model.FLAG_QUANTITY_MIN }}";
var flagQuantityMax = "{{ model.FLAG_QUANTITY_MAX }}";
var flagCostLocalVATIncl = "{{ model.FLAG_COST_LOCAL_VAT_INCL }}";
var flagIsOutOfStock = "{{ model.FLAG_IS_OUT_OF_STOCK }}";
var hashPageCurrent = "{{ model.HASH_PAGE_STORE_PRODUCT_PERMUTATION }}";
/*
var idFilterCategory = "#{{ model.ID_FILTER_CATEGORY }}";
var idFilterProduct = "#{{ model.ID_FILTER_PRODUCT }}";
var idFilterIsOutOfStock = "#{{ model.ID_FILTER_IS_OUT_OF_STOCK }}";
var idFilterQuantityMin = "#{{ model.ID_FILTER_QUANTITY_MIN }}";
var idFilterQuantityMax = "#{{ model.ID_FILTER_QUANTITY_MAX }}";
*/
var idFormFiltersPermutations = "#{{ model.ID_FORM_FILTERS_PERMUTATIONS }}";
var keyPermutations = "{{ model.KEY_PERMUTATIONS }}";
var dictListsProducts = {{ model.category_list.to_dict_lists_products() | tojson | safe }};
var productsByCategory = {{ model.category_list.to_dict_lists_products() | tojson | safe }};
var listCategories = {{ model.category_list.to_list_categories() | tojson | safe }};
var listProducts = {{ model.category_list.to_list_products() | tojson | safe }};
var listVariations = {{ model.variations.to_list_variations() | tojson | safe }};
@@ -156,10 +146,12 @@
listVariations = listVariations.map((variation, index) => { return variation[attrIdVariation]; });
listVariationTypes = listVariationTypes.map((variationType, index) => { return variationType[attrIdVariationType]; });
/*
// hookup elements
$(document).ready(function() {
console.log('Hooking up store product permutation page...');
hookupStorePageProductPermutation();
});
*/
</script>
{% endblock %}

View File

@@ -4,10 +4,10 @@
{% set block_id = 'styles' %}
{% include '_shared_store.html' %}
<script>console.log("test 1");</script>
<link rel="stylesheet" href="{{ url_for('static', filename='css/store_stock_item.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/pages/page_store_stock_items.css') }}">
<!-- HTML content -->
<form id="{{ model.ID_FORM_FILTERS_STOCK }}" class="{{ model.FLAG_ROW }} {{ model.FLAG_CARD }}" action="{{ url_for('stock_filter') }}" method="POST"> <!-- {{ model.FLAG_CONTAINER }} -->
<form id="{{ model.ID_FORM_FILTERS_STOCK }}" class="{{ model.FLAG_ROW }} {{ model.FLAG_CARD }}" action="{{ url_for('routes_store.stock_filter') }}" method="POST"> <!-- {{ model.FLAG_CONTAINER }} -->
{{ model.form_filters.hidden_tag() }}
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
<div class="{{ model.FLAG_CONTAINER_INPUT }}">
@@ -75,7 +75,7 @@
<table id="{{ model.ID_TABLE_MAIN }}" class="{{ model.FLAG_ROW }} {{ model.FLAG_CARD }}">
<thead>
<tr>
<th class="{{ model.FLAG_CATEGORY }}">Category</th>
<th class="{{ model.FLAG_PRODUCT_CATEGORY }}">Category</th>
<th class="{{ model.FLAG_PRODUCT }}">Product</th>
<th class="{{ model.FLAG_VARIATIONS }}">Variations</th>
<th class="{{ model.FLAG_CURRENCY }}">Currency</th>
@@ -115,37 +115,29 @@
{% set block_id = 'scripts' %}
{% include '_shared_store.html' %}
<!-- Include JavaScript -->
<script src="{{ url_for('static', filename='js/store_stock_item.js') }}"></script>
<script type="module" src="{{ url_for('static', filename='js/pages/page_store_stock_items.js') }}"></script>
<script>
// pass arguments from model to JS
var attrIdCategory = "{{ model.ATTR_ID_CATEGORY }}";
var attrIdProduct = "{{ model.ATTR_ID_PRODUCT }}";
var attrIdPermutation = "{{ model.ATTR_ID_PERMUTATION }}";
var flagCategory = "{{ model.FLAG_CATEGORY }}";
var flagProduct = "{{ model.FLAG_PRODUCT }}";
var flagVariations = "{{ model.FLAG_VARIATIONS }}";
var flagQuantityStock = "{{ model.FLAG_QUANTITY_STOCK }}";
var flagQuantityMin = "{{ model.FLAG_QUANTITY_MIN }}";
var flagQuantityMax = "{{ model.FLAG_QUANTITY_MAX }}";
var flagCostLocal = "{{ model.FLAG_COST_LOCAL }}";
var flagIsOutOfStock = "{{ model.FLAG_IS_OUT_OF_STOCK }}";
var hashPageCurrent = "{{ model.HASH_PAGE_STORE_STOCK }}";
/*
var idFilterCategory = "#{{ model.ID_FILTER_CATEGORY }}";
var idFilterProduct = "#{{ model.ID_FILTER_PRODUCT }}";
var idFilterIsOutOfStock = "#{{ model.ID_FILTER_IS_OUT_OF_STOCK }}";
var idFilterQuantityMin = "#{{ model.ID_FILTER_QUANTITY_MIN }}";
var idFilterQuantityMax = "#{{ model.ID_FILTER_QUANTITY_MAX }}";
*/
var idFormFiltersPermutations = "#{{ model.ID_FORM_FILTERS_PERMUTATIONS }}";
var keyPermutations = "{{ model.KEY_PERMUTATIONS }}";
var dictListsProducts = {{ model.category_list.to_dict_lists_products() | tojson | safe }};
var listCategories = {{ model.category_list.to_list_categories() | tojson | safe }};
var listProducts = {{ model.category_list.to_list_products() | tojson | safe }};
/*
// hookup elements
$(document).ready(function() {
console.log('Hooking up store stock page...');
hookupStorePageStockItem();
});
*/
</script>
{% endblock %}

View File

@@ -7,11 +7,11 @@
{% set block_id = 'styles' %}
{% include '_shared_store.html' %}
<link rel="stylesheet" href="{{ url_for('static', filename='css/store_supplier.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/pages/page_store_supplier.css') }}">
<!-- HTML content -->
<div class="card">
<form id="{{ model.ID_FORM_SUPPLIER }}" class="{{ model.FLAG_CONTAINER }}" action="{{ url_for('supplier') }}" method="POST">
<form id="{{ model.ID_FORM_SUPPLIER }}" class="{{ model.FLAG_CONTAINER }}" action="{{ url_for('routes_store.supplier') }}" method="POST">
<h2 class="label-title">Supplier</h2>
{{ model.form.hidden_tag() }}
<div class="card subcard">
@@ -95,16 +95,20 @@
{% set block_id = 'scripts' %}
{% include '_shared_store.html' %}
<!-- Include JavaScript -->
<script src="{{ url_for('static', filename='js/store_product.js') }}"></script>
<script type="module" src="{{ url_for('static', filename='js/pages/page_store_supplier.js') }}"></script>
<!--
<script>
// pass arguments from model to JS
var hashPageCurrent = "{{ model.HASH_PAGE_STORE_SUPPLIER }}";
/*
// hookup elements
$(document).ready(function() {
console.log('Hooking up store supplier page...');
hookupStorePageSupplier();
});
*/
</script>
-->
{% endblock %}

View File

@@ -4,7 +4,7 @@
{% block page_body %}
<!-- Include Stylesheet -->
<link rel="stylesheet" href="{{ url_for('static', filename='css/home.css') }}" />
<link rel="stylesheet" href="{{ url_for('static', filename='css/pages/page_user.css') }}" />
<!-- HTML content -->
<div>
@@ -15,8 +15,9 @@
</div>
<!-- Include JavaScript -->
<script src="{{ url_for('static', filename='js/user.js') }}"></script>
<script type="module" src="{{ url_for('static', filename='js/pages/page_user.js') }}"></script>
<!--
<script>
var hashPageCurrent = "{{ model.HASH_PAGE_USER_ACCOUNT }}";
@@ -24,4 +25,5 @@
hookupPageUserAccount();
});
</script>
-->
{% endblock %}

View File

@@ -1,4 +1,4 @@
{% if block_id == 'button_get_in_touch' %}
<button class="button-contact" alt="Get in touch" aria-label="Get in touch">Get in touch</button>
<button class="{{ model.FLAG_NAV_CONTACT_US }}" alt="Get in touch" aria-label="Get in touch">Get in touch</button>
{% endif %}

View File

@@ -4,20 +4,29 @@
</div>
{% elif block_id == 'styles' %}
<!-- Include Stylesheet -->
<link rel="stylesheet" href="{{ url_for('static', filename='css/store_shared.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/sections/store.css') }}">
{% elif block_id == 'scripts' %}
<!-- Include JavaScript -->
<script src="{{ url_for('static', filename='js/store_shared.js') }}"></script>
<!-- Variables from Model_View_Store + model-->
<script>
var attrFormType = "{{ model.ATTR_FORM_TYPE }}";
var attrIdCategory = "{{ model.ATTR_ID_CATEGORY }}";
var attrIdPermutation = "{{ model.ATTR_ID_PERMUTATION }}";
var attrIdProduct = "{{ model.ATTR_ID_PRODUCT }}";
var attrIdProductCategory = "{{ model.ATTR_ID_PRODUCT_CATEGORY }}";
var attrIdVariation = "{{ model.ATTR_ID_VARIATION }}";
var attrIdVariationType = "{{ model.ATTR_ID_VARIATION_TYPE }}";
var flagBtnBasketAdd = "{{ model.FLAG_BTN_BASKET_ADD }}";
var flagBtnBuyNow = "{{ model.FLAG_BTN_BUY_NOW }}";
var flagButtonBasketAdd = "{{ model.FLAG_BUTTON_BASKET_ADD }}";
var flagButtonBuyNow = "{{ model.FLAG_BUTTON_BUY_NOW }}";
var flagCategory = "{{ model.FLAG_PRODUCT_CATEGORY }}";
var flagCostLocal = "{{ model.FLAG_COST_LOCAL }}";
var flagIsOutOfStock = "{{ model.FLAG_IS_OUT_OF_STOCK }}";
var flagProduct = "{{ model.FLAG_PRODUCT }}";
var flagQuantityMin = "{{ model.FLAG_QUANTITY_MIN }}";
var flagQuantityMax = "{{ model.FLAG_QUANTITY_MAX }}";
var flagQuantityStock = "{{ model.FLAG_QUANTITY_STOCK }}";
var flagVariations = "{{ model.FLAG_VARIATIONS }}";
var hashStoreBasketAdd = "{{ model.HASH_STORE_BASKET_ADD }}";
var hashStoreBasketDelete = "{{ model.HASH_STORE_BASKET_DELETE }}";
var hashStoreBasketEdit = "{{ model.HASH_STORE_BASKET_EDIT }}";
@@ -30,6 +39,7 @@
var idBasketContainer = "#{{ model.ID_BASKET_CONTAINER }}";
var idBasketTotal = "#{{ model.ID_BASKET_TOTAL }}";
var idBtnCheckout = "#{{ model.ID_BUTTON_CHECKOUT }}";
var idCategoryDefault = "{{ model.ID_CATEGORY_DEFAULT }}";
var idCurrency = "#{{ model.ID_CURRENCY }}";
var idLabelBasketEmpty = "#{{ model.ID_LABEL_BASKET_EMPTY }}";
var idRegionDelivery = "#{{ model.ID_REGION_DELIVERY }}";
@@ -42,18 +52,7 @@
var keyNameVariation = "{{ model.KEY_NAME_VARIATION }}";
var keyNameVariationType = "{{ model.KEY_NAME_VARIATION_TYPE }}";
var typeFormBasketAdd = "{{ model.TYPE_FORM_BASKET_ADD }}";
var typeFormBasketEdit = "{{ model.TYPE_FORM_BASKET_EDIT }}";
/*
if (!isEmpty({ { model.basket.items }})) {
localStorage.setItem(keyBasket, JSON.parse(JSON.stringify({'items': "{ { model.basket.items }}"})));
}
*/
$(document).ready(function() {
// hookupStore();
});
var typeFormBasketEdit = "{{ model.TYPE_FORM_BASKET_EDIT }}";
</script>
{% elif block_id == 'checkout' %}
<!-- Variables from Model_View_Store + model-->

View File

@@ -36,9 +36,15 @@
<meta id="{{ model.ID_CSRF_TOKEN }}" name="{{ model.NAME_CSRF_TOKEN }}" content="{{ csrf_token() }}" />
<!-- Scripts -->
<script src="{{ url_for('static', filename='js/shared.js') }}"></script>
<script src="https://code.jquery.com/jquery-3.7.1.js"></script> <!-- Include jQuery from a CDN -->
<script src="https://www.google.com/recaptcha/enterprise.js?render=6Lf8Q8cpAAAAAFAawGu4-ma60bvbEixNVTVvRzKe"></script> <!-- reCaptcha Integration -->
<script src="{{ url_for('static', filename='js/lib/common.js') }}"></script>
<script src="{{ url_for('static', filename='js/lib/constants.js') }}"></script>
<script src="{{ url_for('static', filename='js/lib/events.js') }}"></script>
<script src="{{ url_for('static', filename='js/lib/extras.js') }}"></script>
<script src="{{ url_for('static', filename='js/lib/init.js') }}"></script>
<script src="{{ url_for('static', filename='js/lib/local_storage.js') }}"></script>
<script src="{{ url_for('static', filename='js/lib/utils.js') }}"></script>
<script src="{{ url_for('static', filename='js/lib/validation.js') }}"></script>
<script type="module" src="{{ url_for('static', filename='js/app.js') }}"></script>
<script>
var attrTextCollapsed = "{{ model.ATTR_TEXT_COLLAPSED }}";
@@ -47,62 +53,98 @@
var attrValuePrevious = "{{ model.ATTR_VALUE_PREVIOUS }}";
var attrValueNew = "{{ model.ATTR_VALUE_NEW }}";
var flagAdd = "{{ model.FLAG_ADD }}";
var flagBtnOverlayClose = "{{ model.FLAG_BTN_OVERLAY_CLOSE }}";
var flagBtnSubmit = "{{ model.FLAG_BTN_SUBMIT }}";
var flagCancel = "{{ model.FLAG_CANCEL }}";
var flagCard = "{{ model.FLAG_CARD }}";
var flagCollapsed = "{{ model.FLAG_COLLAPSED }}";
var flagCollapsible = "{{ model.FLAG_COLLAPSIBLE }}";
var flagColumn = "{{ model.FLAG_COLUMN }}";
// var flagContactUs = "{{ model.FLAG_CONTACT_US }}";
var flagContainer = "{{ model.FLAG_CONTAINER }}";
var flagContainerInput = "{{ model.FLAG_CONTAINER_INPUT }}";
var flagDelete = "{{ model.FLAG_DELETE }}";
var flagDetail = "{{ model.FLAG_DETAIL }}";
var flagDirty = "{{ model.FLAG_DIRTY }}";
var flagExpanded = "{{ model.FLAG_EXPANDED }}";
var flagImageLogo = "{{ model.FLAG_IMAGE_LOGO }}";
var flagInitialised = "{{ model.FLAG_INITIALISED }}";
var flagNavAdminHome = "{{ model.FLAG_NAV_ADMIN_HOME }}";
var flagNavAdminStoreStripePrices = "{{ model.FLAG_NAV_ADMIN_STORE_STRIPE_PRICES }}";
var flagNavAdminStoreStripeProducts = "{{ model.FLAG_NAV_ADMIN_STORE_STRIPE_PRODUCTS }}";
var flagNavContact = "{{ model.FLAG_NAV_CONTACT }}";
var flagNavHome = "{{ model.FLAG_NAV_HOME }}";
var flagNavServices = "{{ model.FLAG_NAV_SERVICES }}";
var flagNavStoreHome = "{{ model.FLAG_NAV_STORE_HOME }}";
var flagNavStoreProducts = "{{ model.FLAG_NAV_STORE_PRODUCTS }}";
var flagNavStoreProductCategories = "{{ model.FLAG_NAV_STORE_PRODUCT_CATEGORIES }}";
var flagNavStoreProductPermutations = "{{ model.FLAG_NAV_STORE_PRODUCT_PERMUTATIONS }}";
var flagNavStoreProductPrices = "{{ model.FLAG_NAV_STORE_PRODUCT_PRICES }}";
var flagNavStoreProductVariations = "{{ model.FLAG_NAV_STORE_PRODUCT_VARIATIONS }}";
var flagNavStoreStockItems = "{{ model.FLAG_NAV_STORE_STOCK_ITEMS }}";
var flagNavUserAccount = "{{ model.FLAG_NAV_USER_ACCOUNT }}";
var flagNavUserAdmin = "{{ model.FLAG_NAV_USER_ADMIN }}";
var flagNavUserLogin = "{{ model.FLAG_NAV_USER_LOGIN }}";
var flagNavUserLogout = "{{ model.FLAG_NAV_USER_LOGOUT }}";
var flagOverlay = "{{ model.FLAG_OVERLAY }}";
var flagOverlayClose = "{{ model.FLAG_OVERLAY_CLOSE }}";
var flagRow = "{{ model.FLAG_ROW }}";
var flagRowNew = "{{ model.FLAG_ROW_NEW }}";
var flagScrollable = "{{ model.FLAG_SCROLLABLE }}";
var flagSubmit = "{{ model.FLAG_SUBMIT }}";
var flagSubmitted = "{{ model.FLAG_SUBMITTED }}";
var hashApplyFiltersStoreProductPermutation = "{{ model.HASH_APPLY_FILTERS_STORE_PRODUCT_PERMUTATION }}";
var hashPageAccessibilityStatement = "{{ model.HASH_PAGE_ACCESSIBILITY_STATEMENT }}";
var hashPageAdminHome = "{{ model.HASH_PAGE_ADMIN_HOME }}";
var hashPageContact = "{{ model.HASH_PAGE_CONTACT }}";
// var hashPageCurrent = "{{ model.hash_page_current }}";
var hashPageErrorNoPermission = "{{ model.HASH_PAGE_ERROR_NO_PERMISSION }}";
var hashPageAdminHome = "{{ model.HASH_PAGE_ADMIN_HOME }}";
var hashPageHome = "{{ model.HASH_PAGE_HOME }}";
var hashPageLicense = "{{ model.HASH_PAGE_LICENSE }}";
var hashPageServices = "{{ model.HASH_PAGE_SERVICES }}";
var hashPageStoreAdmin = "{{ model.HASH_PAGE_STORE_ADMIN }}";
var hashPageStoreAdminStripePrices = "{{ model.HASH_PAGE_STORE_ADMIN_STRIPE_PRICES }}";
var hashPageStoreAdminStripeProducts = "{{ model.HASH_PAGE_STORE_ADMIN_STRIPE_PRODUCTS }}";
var hashPageStoreBasket = "{{ model.HASH_PAGE_STORE_BASKET }}";
var hashPageStoreHome = "{{ model.HASH_PAGE_STORE_HOME }}";
var hashPageStoreProductCategories = "{{ model.HASH_PAGE_STORE_PRODUCT_CATEGORIES }}";
var hashPageStoreProducts = "{{ model.HASH_PAGE_STORE_PRODUCTS }}";
var hashPageStoreProductPermutations = "{{ model.HASH_PAGE_STORE_PRODUCT_PERMUTATIONS }}";
var hashPageStoreProductPrices = "{{ model.HASH_PAGE_STORE_PRODUCT_PRICES }}";
var hashPageStoreProductVariations = "{{ model.HASH_PAGE_STORE_PRODUCT_VARIATIONS }}";
var hashPageStoreStockItems = "{{ model.HASH_PAGE_STORE_STOCK_ITEMS }}";
var hashPageUserAccount = "{{ model.HASH_PAGE_USER_ACCOUNT }}";
var hashPageUserAdmin = "{{ model.HASH_PAGE_USER_ADMIN }}";
var hashPageUserLogin = "{{ model.HASH_PAGE_USER_LOGIN }}";
var hashPageUserLogout = "{{ model.HASH_PAGE_USER_LOGOUT }}";
var hashSaveStoreProductPermutation = "{{ model.HASH_SAVE_STORE_PRODUCT_PERMUTATION }}";
/*
var idButtonAdd = "#{{ model.ID_BUTTON_ADD }}";
var idButtonCancel = "#{{ model.ID_BUTTON_CANCEL }}";
var idButtonConfirm = "#{{ model.ID_BUTTON_CONFIRM }}";
*/
var idButtonHamburger = "#{{ model.ID_BUTTON_HAMBURGER }}";
/*
var idButtonNavAdminHome = "#{{ model.ID_NAV_ADMIN_HOME }}";
// var idButtonNavContact = "#{{ model.ID_NAV_CONTACT }}";
var idButtonNavHome = "#{{ model.ID_NAV_HOME }}";
var idButtonNavServices = "#{{ model.ID_NAV_SERVICES }}";
var idButtonNavStoreHome = "#{{ model.ID_NAV_STORE_HOME }}";
var idButtonNavStoreProduct = "#{{ model.ID_NAV_STORE_PRODUCT }}";
var idButtonNavStoreProductCategories = "#{{ model.ID_NAV_STORE_PRODUCT_CATEGORIES }}";
var idButtonNavStoreProductPermutations = "#{{ model.ID_NAV_STORE_PRODUCT_PERMUTATIONS }}";
var idButtonNavStoreProductPrices = "#{{ model.ID_NAV_STORE_PRODUCT_PRICES }}";
var idButtonNavStoreProductVariations = "#{{ model.ID_NAV_STORE_PRODUCT_VARIATIONS }}";
var idButtonNavStoreStockItems = "#{{ model.ID_NAV_STORE_STOCK_ITEMS }}";
var idButtonNavUserAccount = "#{{ model.ID_NAV_USER_ACCOUNT }}";
var idButtonNavUserAdmin = "#{{ model.ID_NAV_USER_ADMIN }}";
var idButtonNavUserLogin = "#{{ model.ID_NAV_USER_LOGIN }}";
var idButtonNavUserLogout = "#{{ model.ID_NAV_USER_LOGOUT }}";
var idButtonSave = "#{{ model.ID_BUTTON_SAVE }}";
*/
var idCSRFToken = "#{{ model.ID_CSRF_TOKEN }}";
var idFormCurrency = "#{{ model.ID_FORM_CURRENCY }}";
var idFormDeliveryRegion = "#{{ model.ID_FORM_DELIVERY_REGION }}";
var idFormIsIncludedVAT = "#{{ model.ID_FORM_IS_INCLUDED_VAT }}";
var idLabelError = "#{{ model.ID_LABEL_ERROR }}";
var idNavAdminHome = "#{{ model.ID_NAV_ADMIN_HOME }}";
var idNavContact = "#{{ model.ID_NAV_CONTACT }}";
var idNavHome = "#{{ model.ID_NAV_HOME }}";
var idNavServices = "#{{ model.ID_NAV_SERVICES }}";
var idNavStoreAdmin = "#{{ model.ID_NAV_STORE_ADMIN }}";
var idNavStoreHome = "#{{ model.ID_NAV_STORE_HOME }}";
var idNavStorePermutations = "#{{ model.ID_NAV_STORE_PERMUTATIONS }}";
var idNavStoreProduct = "#{{ model.ID_NAV_STORE_PRODUCT }}";
var idNavStoreStockItems = "#{{ model.ID_NAV_STORE_STOCK_ITEMS }}";
var idNavUserAccount = "#{{ model.ID_NAV_USER_ACCOUNT }}";
var idNavUserAdmin = "#{{ model.ID_NAV_USER_ADMIN }}";
var idNavUserLogin = "#{{ model.ID_NAV_USER_LOGIN }}";
var idNavUserLogout = "#{{ model.ID_NAV_USER_LOGOUT }}";
var idOverlayConfirm = "#{{ model.ID_OVERLAY_CONFIRM }}";
var idOverlayError = "#{{ model.ID_OVERLAY_ERROR }}";
var idOverlayHamburger = "#{{ model.ID_OVERLAY_HAMBURGER }}";
@@ -118,13 +160,14 @@
var keyShared = "shared";
var nameCSRFToken = "{{ model.NAME_CSRF_TOKEN }}";
var _pathHost = "{{ model.get_url_host() }}";
var titlePageCurrent = "{{ model.title }}";
</script>
<!-- Stylesheets -->
<link href="{{ url_for('static', filename='css/shared.css') }}" rel="stylesheet" type="text/css"/>
<link href="{{ url_for('static', filename='css/main.css') }}" rel="stylesheet" type="text/css"/>
</head>
<body>
<body data-page="{{ model.hash_page_current }}">
{% set user = model.get_user_session() %}
<!--
{ % set is_admin_store_user = model.get_is_admin_store_user() % }
@@ -138,28 +181,28 @@
<h1 class="company-name">{{ model.NAME_COMPANY }} - {{ model.title }}</h1>
</div>
<div class="{{ model.FLAG_CONTAINER }}" style="width: 7vw; min-width: 7vw; max-width: 15vw; justify-content: flex-end; "> <!-- padding-left: 25%; -->
<button id="{{ model.ID_BUTTON_HAMBURGER }}" tabindex="1" alt="Hamburger menu button" aria-label="Hamburger menu button">=</button>
<button id="{{ model.ID_BUTTON_HAMBURGER }}" tabindex="1" alt="Hamburger menu button" aria-label="Hamburger menu button"></button>
</div>
</div>
<div id="{{ model.ID_OVERLAY_HAMBURGER }}" class="{{ model.FLAG_OVERLAY}} {{ model.FLAG_HAMBURGER }} {{ model.FLAG_COLLAPSED }}"> <!-- style="height: {{ 27 * 3 }}px" {- { 4.5 * 3 }}vh -->
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
<a id="{{ model.ID_NAV_HOME }}">Home</a>
<a class="{{ model.FLAG_NAV_HOME }}">Home</a>
</div>
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
<a id="{{ model.ID_NAV_SERVICES }}">Services</a>
<a class="{{ model.FLAG_NAV_SERVICES }}">Services</a>
</div>
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
<a id="{{ model.ID_NAV_CONTACT }}">Contact</a>
<a class="{{ model.FLAG_NAV_CONTACT }}">Contact</a>
</div>
{% if model.is_page_store and user.can_admin_store %}
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
<a id="{{ model.ID_NAV_STORE_PERMUTATIONS }}">Product Permutations</a>
<a class="{{ model.FLAG_NAV_STORE_PRODUCT_PERMUTATIONS }}">Product Permutations</a>
</div>
{% if user.can_admin_store %}
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
<a id="{{ model.ID_NAV_STORE_STOCK_ITEMS }}">Stock Items</a>
<a class="{{ model.FLAG_NAV_STORE_STOCK_ITEMS }}">Stock Items</a>
</div>
{% endif %}
<!--
@@ -201,31 +244,31 @@
</form>
</div>
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
<a href="{ { url_for('logout') if model.is_user_logged_in else url_for('login') }}" style="float:right">{{ 'Logout' if model.is_user_logged_in else 'Login' }}</a>
<a href="{ { url_for('routes_user.logout') if model.is_user_logged_in else url_for('routes_user.login') }}" style="float:right">{{ 'Logout' if model.is_user_logged_in else 'Login' }}</a>
</div>
-->
{% else %}
{% if user.can_admin_store %}
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
<a id="{{ model.ID_NAV_STORE_HOME }}">Shop</a>
<a class="{{ model.FLAG_NAV_STORE_HOME }}">Shop</a>
</div>
{% endif %}
{% endif %}
{% if user.can_admin_store %}
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
<a id="{{ model.ID_NAV_ADMIN }}">Admin</a>
<a class="{{ model.FLAG_NAV_ADMIN_HOME }}">Admin</a>
</div>
{% endif %}
{% if user.is_logged_in %}
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
<a id="{{ model.ID_NAV_USER_ACCOUNT }}">Account</a>
<a class="{{ model.FLAG_NAV_USER_ACCOUNT }}">Account</a>
</div>
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
<a id="{{ model.ID_NAV_USER_LOGOUT }}">Logout</a>
<a class="{{ model.FLAG_NAV_USER_LOGOUT }}">Logout</a>
</div>
{% else %}
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
<a id="{{ model.ID_NAV_USER_LOGIN }}">Login</a>
<a class="{{ model.FLAG_NAV_USER_LOGIN }}">Login</a>
</div>
{% endif %}
</div>
@@ -237,17 +280,18 @@
<div class="footer">
<h4 style="padding-top: 1vh;">Copyright &copy; {{ model.NAME_COMPANY }}. <a href="{{ url_for('license') }}" alt="License" aria-label="License">All rights reserved.</a></h4>
<h4 style="padding-top: 1vh;">Copyright &copy; {{ model.NAME_COMPANY }}. <a href="{{ url_for('routes_legal.license') }}" alt="License" aria-label="License">All rights reserved.</a></h4>
<h5>Company number 13587499</h5>
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}"><p><a href="{{ url_for('accessibility_statement') }}" alt="Accessibility statement" aria-label="Accessibility statement">Accessibility statement</a></p></div>
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}"><p><a href="{{ url_for('privacy_notice') }}" alt="Privacy notice" aria-label="Privacy notice">Privacy notice</a></p></div>
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}"><p><a href="{{ url_for('routes_legal.accessibility_statement') }}" alt="Accessibility statement" aria-label="Accessibility statement">Accessibility statement</a></p></div>
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}"><p><a href="{{ url_for('routes_legal.privacy_notice') }}" alt="Privacy notice" aria-label="Privacy notice">Privacy notice</a></p></div>
</div>
</div>
</body>
</html>
<!--
<script>
$(document).ready(function() {
@@ -255,4 +299,4 @@
hookupShared();
});
</script>
-->