1. Contact us page fixed - Model_View_Contact had not been updated to match new arguments for Model_View_Base.\n 2. Logo border radius increased to hide pencil icon watermark in bottom right hand corner. \n 3. Nav layout structure now dynamic based on user permissions

This commit is contained in:
2024-08-04 02:58:55 +01:00
parent 0201b85836
commit 6ad86825ea
116 changed files with 1878 additions and 1039 deletions

View File

@@ -24,9 +24,9 @@
-->
<p>This website is run by {{ model.NAME_COMPANY }}. We want as many people as possible to be able to use this website. For example, that means you should be able to:
<ul>
<li>zoom in up to 400% without the text spilling off the screen</li>
<li>navigate most of the website using just a keyboard or speech recognition software</li>
<li>listen to most of the website using a screen reader (including the most recent versions of NVDA and TalkBack)</li>
<li>Zoom in up to 400% without the text spilling off the screen</li>
<li>Navigate most of the website using just a keyboard or speech recognition software</li>
<li>Listen to most of the website using a screen reader (including the most recent versions of NVDA and TalkBack)</li>
<li>We've also made the website text as simple as possible to understand.</li>
<a href="https://mcmw.abilitynet.org.uk/">AbilityNet</a> has advice on making your device easier to use if you have a disability.

View File

@@ -30,42 +30,42 @@
</div>
<button type="submit" id="submit_form_email">Submit request</button>
-->
{{ model.form.hidden_tag() }}
{{ model.form_contact.hidden_tag() }}
<div class="container-input">
{{ model.form.email.label }}
{{ model.form.email(size=254) }}
{% for error in model.form.email.errors %}
{{ model.form_contact.email.label }}
{{ model.form_contact.email(size=254) }}
{% for error in model.form_contact.email.errors %}
<p class="error">{{ error }}</p>
{% endfor %}
</div>
<!--
<div class="container-input">
{{ model.form.CC.label }}
{{ model.form.CC(checked=True) }}
{% for error in model.form.name.errors %}
{{ model.form_contact.CC.label }}
{{ model.form_contact.CC(checked=True) }}
{% for error in model.form_contact.name.errors %}
<p class="error">{{ error }}</p>
{% endfor %}
</div>
-->
<div class="container-input">
{{ model.form.name.label }}
{{ model.form.name(size=50) }}
{% for error in model.form.name.errors %}
{{ 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">
{{ model.form.message.label }}
{{ model.form.message(rows=4, cols=80) }}
{% for error in model.form.name.errors %}
{{ 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">
{{ model.form.recaptcha() }}
{{ model.form_contact.recaptcha() }}
</div>
<div class="container-input">
{{ model.form.submit() }}
{{ model.form_contact.submit() }}
</div>
</form>
</div>

View File

@@ -26,7 +26,7 @@
<li>Legitimate interest:</li>
<ul>
<li>
I collect the user's name and email address alongside a message they send on our 'Contact Us' form in order to respond to their request. Alternatively, the user has the option to contact us directly by email.
We collect the user's name and email address alongside a message they send on our 'Contact Us' form in order to respond to their request. Alternatively, the user has the option to contact us directly by email.
</li>
</ul>
</ul>

View File

@@ -6,14 +6,14 @@
<title>{{ model.title }} - {{ model.NAME_COMPANY }}</title>
<meta name="description" content="Explore our wide range of software engineering services. We specialize in various tech stacks including MySQL, Python, Microsoft SQL Server, C#, Firebase, Node.js, Java, HTML5, React, CSS3, Flask, JavaScript, MVC, and REST." />
<meta name="keywords" content="software engineering, software development, software design, software testing, software maintenance, software support, software consultancy, software training, software documentation, software project management, software quality assurance, software process improvement, software configuration management, software requirements engineering, software architecture, software design patterns, software design principles, software testing principles, software testing techniques, software testing tools, software testing automation, software testing manual, software testing exploratory, software testing regression, software testing performance, software testing security, software testing usability, software testing accessibility, software testing compatibility, software testing reliability, software testing maintainability, software testing portability, software testing scalability, software testing test-driven development, software testing behaviour-driven development, software testing acceptance test-driven development, software testing continuous integration, software testing continuous deployment, software testing continuous delivery, software testing continuous monitoring, software testing continuous feedback, software testing continuous improvement, software testing agile, software testing scrum, software testing kanban, software testing lean, software testing waterfall, software testing v-model, software testing spiral, software testing incremental, software testing iterative, software testing adaptive, software testing predictive, software testing hybrid, software testing manual, software testing automated, software testing exploratory, software testing regression, software testing performance, software testing security, software testing usability, software testing accessibility, software testing compatibility, software testing reliability, software testing maintainability, software testing portability, software testing scalability, software testing test-driven development, software testing behaviour-driven development, software testing acceptance test-driven development, software testing continuous integration, software testing continuous deployment, software testing continuous delivery, software testing continuous monitoring, software testing continuous feedback, software testing continuous improvement, software testing agile, software testing scrum, software testing kanban, software testing lean, software testing waterfall, software testing v-model, software testing spiral, software testing incremental, software testing iterative, software testing adaptive, software testing predictive, software testing hybrid, software testing manual, software testing automated, software testing exploratory, software testing regression, software testing performance, software testing security, software testing usability, software testing accessibility, software testing compatibility, software testing reliability, software testing maintainability, software testing portability, software testing scalability, software testing test-driven development, software testing behaviour-driven development, software testing acceptance test-driven development, software testing continuous integration, software testing continuous deployment, software testing continuous delivery, software testing continuous monitoring, software testing continuous feedback, software testing continuous improvement, software testing agile, software testing, MySQL, Python, Microsoft SQL Server, MS SQL Server, C#, Firebase, Node.js, Java, HTML5, React, CSS3, Flask, JavaScript, MVC, REST" />
<link rel="canonical" href="{{ model.URL_HOST }}" />
<link rel="canonical" href="{{ model.get_url_host() }}" />
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "ProfessionalService",
"name": "{{ model.NAME_COMPANY }}",
"url": "{{ model.URL_HOST }}",
"logo": "{{ model.URL_HOST }}{{ url_for('static', filename='images/Logo.png') }}",
"url": "{{ model.get_url_host() }}",
"logo": "{{ model.get_url_host() }}{{ url_for('static', filename='images/Logo.png') }}",
"description": "Explore our wide range of software engineering services. We specialize in various tech stacks including MySQL, Python, Microsoft SQL Server, C#, Firebase, Node.js, Java, HTML5, React, CSS3, Flask, JavaScript, MVC, and REST.",
"address": {
"@type": "PostalAddress",
@@ -61,15 +61,16 @@
var flagRowNew = "{{ model.FLAG_ROW_NEW }}";
var flagScrollable = "{{ model.FLAG_SCROLLABLE }}";
var flagSubmitted = "{{ model.FLAG_SUBMITTED }}";
var hashApplyFiltersStoreProductPermutation = "{{ model.HASH_APPLY_FILTERS_STORE_PRODUCT_PERMUTATION }}";
var hashPageContact = "{{ model.HASH_PAGE_CONTACT }}";
var hashPageErrorNoPermission = "{{ model.HASH_PAGE_ERROR_NO_PERMISSION }}";
var hashPageAdmin = "{{ model.HASH_PAGE_ADMIN }}";
var hashPageHome = "{{ model.HASH_PAGE_HOME }}";
var hashPageServices = "{{ model.HASH_PAGE_SERVICES }}";
var hashPageStoreHome = "{{ model.HASH_PAGE_STORE_HOME }}";
var hashPageStoreProduct = "{{ model.HASH_PAGE_STORE_PRODUCT }}";
var hashPageStoreProductPermutation = "{{ model.HASH_PAGE_STORE_PRODUCT_PERMUTATION }}";
var hashPageStoreProductPermutationFilter = "{{ model.HASH_PAGE_STORE_PRODUCT_PERMUTATION_FILTER }}";
var hashPageStoreProductPermutationSave = "{{ model.HASH_PAGE_STORE_PRODUCT_PERMUTATION_SAVE }}";
var hashPageStoreProducts = "{{ model.HASH_PAGE_STORE_PRODUCTS }}";
var hashPageStoreProductPermutations = "{{ model.HASH_PAGE_STORE_PRODUCT_PERMUTATIONS }}";
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 }}";
@@ -79,12 +80,14 @@
var idFormDeliveryRegion = "#{{ model.ID_FORM_DELIVERY_REGION }}";
var idFormIsIncludedVAT = "#{{ model.ID_FORM_IS_INCLUDED_VAT }}";
var idLabelError = "#{{ model.ID_LABEL_ERROR }}";
var idNavAdmin = "#{{ model.ID_NAV_ADMIN }}";
var idNavContact = "#{{ model.ID_NAV_CONTACT }}";
var idNavHome = "#{{ model.ID_NAV_HOME }}";
var idNavServices = "#{{ model.ID_NAV_SERVICES }}";
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 idOverlayConfirm = "#{{ model.ID_OVERLAY_CONFIRM }}";
var idOverlayError = "#{{ model.ID_OVERLAY_ERROR }}";
var idOverlayHamburger = "#{{ model.ID_OVERLAY_HAMBURGER }}";
@@ -96,7 +99,7 @@
var keyPrice = "{{ model.KEY_PRICE }}";
var keyQuantity = "{{ model.KEY_QUANTITY }}";
var keyShared = "shared";
var _pathHost = "{{ model.URL_HOST }}";
var _pathHost = "{{ model.get_url_host() }}";
</script>
@@ -105,6 +108,8 @@
</head>
<body>
{% set is_admin_store_user = model.get_is_admin_store_user() %}
{% set is_admin_user_user = model.get_is_admin_user_user() %}
<div class="topnav">
<div class="{{ model.FLAG_CONTAINER }}" style="width: 18vw; min-width: 18vw; max-width: 20vw;">
@@ -120,27 +125,29 @@
<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> <!-- href="{{ url_for('home') }}" -->
<a id="{{ model.ID_NAV_HOME }}">Home</a>
</div>
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
<a id="{{ model.ID_NAV_SERVICES }}">Services</a>
</div>
<!--
<div class="container column">
<a id="{{ model.ID_NAV_TECHNOLOGIES }}">Technologies</a>
</div>
<div class="container column">
<a id="{{ model.ID_NAV_STORE_HOME }}">Store</a>
</div>
-->
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
<a id="{{ model.ID_NAV_CONTACT }}">Contact</a> <!-- href="{{ url_for('contact') }}" -->
<a id="{{ model.ID_NAV_CONTACT }}">Contact</a>
</div>
<div class="container column">
<a id="{{ model.ID_NAV_STORE_PERMUTATIONS }}">Product Permutations</a>
</div>
{% if is_admin_store_user %}
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
<a id="{{ model.ID_NAV_ADMIN }}">Admin</a>
</div>
{% endif %}
{% if model.is_page_store %}
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
<a id="{{ model.ID_NAV_STORE_PERMUTATIONS }}">Product Permutations</a>
</div>
{% if is_admin_store_user %}
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
<a id="{{ model.ID_NAV_STORE_STOCK_ITEMS }}">Stock Items</a>
</div>
{% endif %}
<!--
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
<!-- <a href="{ url_ for('create_price_dummy') }">Create template price</a> --
@@ -183,6 +190,12 @@
<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>
</div>
-->
{% else %}
<!--
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
<a id="{{ model.ID_NAV_STORE_HOME }}">Shop</a>
</div>
-->
{% endif %}
</div>
@@ -204,16 +217,8 @@
</body>
</html>
<!-- Scripts --
<script src="{{ url_for('static', filename='js/main.js') }}"></script>
-->
<!-- Include jQuery from a CDN --
<script src="https://code.jquery.com/jquery-3.7.1.js"></script>
-->
<script>
$(document).ready(function() {
// alert("naughty boy");
hookupShared();