1. Refactoring form objects and database objects to use inheritance and abstract base class for consistency and reduced redundancy.\n2. Contact us page button links updated to resolve error of missing link causing page refresh instead of expected functionality.
This commit is contained in:
@@ -14,7 +14,7 @@
|
||||
<h2>{{ product.name }}</h2>
|
||||
<h3>{{ permutation.output_price(model.is_included_VAT) }}</h3>
|
||||
{% set tmp_quantity = 1 %}
|
||||
{% include '_block_input_number_plus_minus.html' %}
|
||||
{% include 'components/common/inputs/_input_number_plus_minus.html' %}
|
||||
{{ form.submit() }}
|
||||
<p>Get it: <strong>{{ permutation.output_delivery_date() }}</strong></p>
|
||||
</form>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<form {{ model.attr_form_type }}="{{ form.form_type }}" {{ model.attr_id_product }}="{{ product.id_product }}" {{ model.attr_id_permutation }}="{{ permutation.id_permutation }}" class="container column">
|
||||
{{ form.hidden_tag() }}
|
||||
{% set tmp_quantity = 1 %}
|
||||
{% include '_block_input_number_plus_minus.html' %}
|
||||
{% include 'components/common/inputs/_input_number_plus_minus.html' %}
|
||||
{{ form.submit() }}
|
||||
</form>
|
||||
<!--
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{% extends 'layout.html' %}
|
||||
{% extends 'layouts/layout.html' %}
|
||||
|
||||
{% block title %}{{ model.title }}{% endblock %}
|
||||
|
||||
|
||||
@@ -10,8 +10,8 @@
|
||||
<script src="https://code.jquery.com/jquery-3.7.1.js"></script> <!-- Include jQuery from a CDN -->
|
||||
|
||||
<script>
|
||||
var flagBtnOverlayClose = "{{ model.flag_btn_overlay_close }}";
|
||||
var flagBtnSubmit = "{{ model.flag_btn_submit }}";
|
||||
var flagButtonOverlayClose = "{{ model.flag_btn_overlay_close }}";
|
||||
var flagButtonSubmit = "{{ model.flag_btn_submit }}";
|
||||
var flagCard = "{{ model.flag_card }}";
|
||||
var flagCollapsible = "{{ model.flag_collapsible }}";
|
||||
var flagColumn = "{{ model.flag_column }}";
|
||||
@@ -19,7 +19,7 @@
|
||||
var flagContainerInput = "{{ model.flag_container_input }}";
|
||||
var flagRow = "{{ model.flag_row }}";
|
||||
var flagScrollable = "{{ model.flag_scrollable }}";
|
||||
var flagBtnOverlayClose = "{{ model.flag_btn_overlay_close }}";
|
||||
var flagButtonOverlayClose = "{{ model.flag_btn_overlay_close }}";
|
||||
var flagInitialised = "{{ model.flag_initalised }}";
|
||||
var flagSubmitted = "{{ model.flag_submitted }}";
|
||||
var hashPageContact = "{{ model.hash_page_contact }}";
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<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' %}
|
||||
{% include 'components/store/_product.html' %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
{% if display_order is defined %}
|
||||
<div class="{{ model.FLAG_SLIDER }} {{ model.FLAG_DISPLAY_ORDER }}" {{ model.ATTR_VALUE_CURRENT }}="{{ display_order }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ display_order }}">☰</div>
|
||||
{% else %}
|
||||
<div class="{{ model.FLAG_SLIDER }} {{ model.FLAG_DISPLAY_ORDER }}" {{ model.ATTR_VALUE_CURRENT }} {{ model.ATTR_VALUE_PREVIOUS }}>☰</div>
|
||||
{% endif %}
|
||||
@@ -1,7 +0,0 @@
|
||||
{% extends 'layout.html' %}
|
||||
|
||||
{% block title %}{{ model.title }}{% endblock %}
|
||||
|
||||
{% block page_body %}
|
||||
{% include '_block_store_home_body.html' %}
|
||||
{% endblock %}
|
||||
@@ -1,96 +0,0 @@
|
||||
{% if block_id == 'block1' %}
|
||||
<div class="common-block" id="block1">
|
||||
<h1>Feckin common block boi</h1>
|
||||
</div>
|
||||
{% elif block_id == 'styles' %}
|
||||
<!-- Include Stylesheet -->
|
||||
<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 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 hashGetStoreProductCategory = "{{ model.HASH_GET_STORE_PRODUCT_CATEGORY }}";
|
||||
var hashGetStoreProductPermutation = "{{ model.HASH_GET_STORE_PRODUCT_PERMUTATION }}";
|
||||
var hashSaveStoreProductCategory = "{{ model.HASH_SAVE_STORE_PRODUCT_CATEGORY }}";
|
||||
var hashSaveStoreProductPermutation = "{{ model.HASH_SAVE_STORE_PRODUCT_PERMUTATION }}";
|
||||
var hashStoreBasketAdd = "{{ model.HASH_STORE_BASKET_ADD }}";
|
||||
var hashStoreBasketDelete = "{{ model.HASH_STORE_BASKET_DELETE }}";
|
||||
var hashStoreBasketEdit = "{{ model.HASH_STORE_BASKET_EDIT }}";
|
||||
var hashStoreBasketLoad = "{{ model.HASH_STORE_BASKET_LOAD }}";
|
||||
var hashStoreSetCurrency = "{{ model.HASH_STORE_SET_CURRENCY }}";
|
||||
var hashStoreSetRegion = "{{ model.HASH_STORE_SET_REGION }}";
|
||||
var hashStoreSetIsIncludedVAT = "{{ model.HASH_STORE_SET_IS_INCLUDED_VAT }}";
|
||||
var hashPageStoreBasket = "{{ model.HASH_PAGE_STORE_BASKET }}";
|
||||
var idBasket = "#{{ model.ID_BASKET }}";
|
||||
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 }}";
|
||||
var keyIdCurrency = "{{ model.KEY_ID_CURRENCY }}";
|
||||
var keyItems = "{{ model.KEY_ITEMS }}";
|
||||
var keyIdPermutation = "{{ model.KEY_ID_PERMUTATION }}";
|
||||
var keyIdProduct = "{{ model.KEY_ID_PRODUCT }}";
|
||||
var keyIdRegionDelivery = "{{ model.KEY_ID_REGION_DELIVERY }}";
|
||||
var keyIsIncludedVAT = "{{ model.KEY_IS_INCLUDED_VAT }}";
|
||||
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 }}";
|
||||
</script>
|
||||
{% elif block_id == 'checkout' %}
|
||||
<!-- Variables from Model_View_Store + model-->
|
||||
<script>
|
||||
var hashPageStoreCheckout = "{{ model.HASH_PAGE_STORE_CHECKOUT }}";
|
||||
var hashPageStoreCheckoutSession = "{{ model.HASH_PAGE_STORE_CHECKOUT_SESSION }}";
|
||||
var hashStoreBasketInfo = "{{ model.HASH_STORE_BASKET_INFO }}";
|
||||
var idOverlayInfoBilling = "#{{ model.ID_OVERLAY_INFO_BILLING }}";
|
||||
var idOverlayInfoDelivery = "#{{ model.ID_OVERLAY_INFO_DELIVERY }}";
|
||||
var idContainerInfoBilling = "#{{ model.ID_CONTAINER_INFO_BILLING }}";
|
||||
var idContainerInfoDelivery = "#{{ model.ID_CONTAINER_INFO_DELIVERY }}";
|
||||
var keyIdCheckout = "{{ model.KEY_ID_CHECKOUT }}";
|
||||
var keyInfoBilling = "{{ model.KEY_INFO_BILLING }}";
|
||||
var keyInfoDelivery = "{{ model.KEY_INFO_DELIVERY }}";
|
||||
var keyInfoIdentical = "{{ model.KEY_INFO_IDENTICAL }}";
|
||||
var keyInfoType = "{{ model.KEY_INFO_TYPE }}";
|
||||
var keyIsSubscription = "{{ model.KEY_IS_SUBSCRIPTION }}";
|
||||
var keyAddress1 = "{{ model.KEY_ADDRESS1 }}";
|
||||
var keyAddress2 = "{{ model.KEY_ADDRESS2 }}";
|
||||
var keyCity = "{{ model.KEY_CITY }}";
|
||||
var keyCounty = "{{ model.KEY_COUNTY }}";
|
||||
var keyNameFull = "{{ model.KEY_NAME_FULL }}";
|
||||
var keyPhoneNumber = "{{ model.KEY_PHONE_NUMBER }}";
|
||||
var keyPostcode = "{{ model.KEY_POSTCODE }}";
|
||||
var keyRegion = "{{ model.KEY_REGION }}";
|
||||
var keyUrlCheckout = "{{ model.KEY_URL_CHECKOUT }}";
|
||||
</script>
|
||||
{% elif block_id == 'Textarea_Product_Permutation_Variations' %}
|
||||
<textarea
|
||||
class="{{ model.FLAG_VARIATIONS }}"
|
||||
{{ model.ATTR_VALUE_CURRENT }}="{{ permutation.output_variations_jsonify() }}"
|
||||
{{ model.ATTR_VALUE_PREVIOUS }}="{{ permutation.output_variations_jsonify() }}"
|
||||
>{{ permutation.output_variations() }}</textarea>
|
||||
{% elif block_id == 'Textarea_Product_Permutation_Variations_Blank' %}
|
||||
<textarea class="{{ model.FLAG_VARIATIONS }}" {{ model.ATTR_VALUE_CURRENT }} {{ model.ATTR_VALUE_PREVIOUS }}></textarea>
|
||||
{% endif %}
|
||||
@@ -0,0 +1,8 @@
|
||||
{% if display_order is defined %}
|
||||
<!-- Fix this
|
||||
<div class="{{ model.FLAG_SLIDER }} {{ model.FLAG_DISPLAY_ORDER }}" {{ model.ATTR_VALUE_CURRENT }}="{{ display_order }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ display_order }}">☰</div>
|
||||
-->
|
||||
<input type="number" class="{{ model.FLAG_SLIDER }} {{ model.FLAG_DISPLAY_ORDER }}" {{ model.ATTR_VALUE_CURRENT }}="{{ display_order }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ display_order }}" value="{{ display_order }}">
|
||||
{% else %}
|
||||
<div class="{{ model.FLAG_SLIDER }} {{ model.FLAG_DISPLAY_ORDER }}" {{ model.ATTR_VALUE_CURRENT }} {{ model.ATTR_VALUE_PREVIOUS }}>☰</div>
|
||||
{% endif %}
|
||||
@@ -0,0 +1,18 @@
|
||||
|
||||
{% if variation_tree is not defined %}
|
||||
{% set is_blank_row = True %}
|
||||
{% endif %}
|
||||
{% if is_blank_row is not defined %}
|
||||
{% set is_blank_row = True %}
|
||||
{% endif %}
|
||||
|
||||
{% if not is_blank_row %}
|
||||
{% set json_str_variations = permutation.variation_tree.to_json_str() %}
|
||||
<textarea
|
||||
class="{{ model.FLAG_VARIATIONS }}"
|
||||
{{ model.ATTR_VALUE_CURRENT }}="{{ json_str_variations }}"
|
||||
{{ model.ATTR_VALUE_PREVIOUS }}="{{ json_str_variations }}"
|
||||
>{{ permutation.variation_tree.to_str_textarea() }}</textarea>
|
||||
{% else %}
|
||||
<textarea class="{{ model.FLAG_VARIATIONS }}" {{ model.ATTR_VALUE_CURRENT }} {{ model.ATTR_VALUE_PREVIOUS }}></textarea>
|
||||
{% endif %}
|
||||
@@ -0,0 +1,20 @@
|
||||
|
||||
{% if variation_tree is not defined %}
|
||||
{% set is_blank_row = True %}
|
||||
{% endif %}
|
||||
{% if is_blank_row is not defined %}
|
||||
{% set is_blank_row = True %}
|
||||
{% endif %}
|
||||
|
||||
{% if not is_blank_row %}
|
||||
{# % set json_str_variation_types = product.get_json_str_types_variation_trees() % #}
|
||||
{% set names_variation_type = product.get_variation_types_unique() %}
|
||||
{% set json_str_variation_types = jsonify(names_variation_type) %}
|
||||
<textarea
|
||||
class="{{ model.FLAG_VARIATIONS }}"
|
||||
{{ model.ATTR_VALUE_CURRENT }}="{{ json_str_variation_types }}"
|
||||
{{ model.ATTR_VALUE_PREVIOUS }}="{{ json_str_variation_types }}"
|
||||
>{{ model.join_with_linebreaks(names_variation_type) }}</textarea>
|
||||
{% else %}
|
||||
<textarea class="{{ model.FLAG_VARIATIONS }}" {{ model.ATTR_VALUE_CURRENT }} {{ model.ATTR_VALUE_PREVIOUS }}></textarea>
|
||||
{% endif %}
|
||||
@@ -6,5 +6,5 @@
|
||||
string overlay_title
|
||||
-->
|
||||
{% block overlay_body %}
|
||||
{% include '_block_store_address.html' %}
|
||||
{% include 'components/store/_address.html' %}
|
||||
{% endblock %}
|
||||
@@ -7,9 +7,9 @@
|
||||
</div>
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
|
||||
{% set block_id = 'button_cancel' %}
|
||||
{% include '_blocks_button_save_cancel.html' %}
|
||||
{% include 'components/common/buttons/_buttons_save_cancel.html' %}
|
||||
{% set block_id = 'button_confirm' %}
|
||||
{% include '_blocks_button_save_cancel.html' %}
|
||||
{% include 'components/common/buttons/_buttons_save_cancel.html' %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
</div>
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
|
||||
{% set block_id = 'button_cancel' %}
|
||||
{% include '_blocks_button_save_cancel.html' %}
|
||||
{% include 'components/common/buttons/_buttons_save_cancel.html' %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,28 +1,30 @@
|
||||
|
||||
|
||||
{% set block_id = 'styles' %}
|
||||
{% include '_shared_store.html' %}
|
||||
{% include 'layouts/_shared_store.html' %}
|
||||
<!-- Include Stylesheet -->
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/store_home.css') }}">
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/sections/store.css') }}">
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/store/home.css') }}">
|
||||
|
||||
<!-- HTML content -->
|
||||
<div class="model.FLAG_ROW">
|
||||
<div class="leftcolumn">
|
||||
{% for cat in model.category_list.categories %}
|
||||
{% if cat.is_available() %}
|
||||
{% include '_block_store_product_category.html' %}
|
||||
{% include 'components/store/_product_category.html' %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
<div id="{{ model.ID_BASKET_CONTAINER}}" class="rightcolumn">
|
||||
{% include '_block_store_basket.html' %}
|
||||
{% include 'components/store/_basket.html' %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% set block_id = 'scripts' %}
|
||||
{% include '_shared_store.html' %}
|
||||
{% include 'layouts/_shared_store.html' %}
|
||||
<!-- Include JavaScript -->
|
||||
<script src="{{ url_for('static', filename='js/store_home.js') }}"></script>
|
||||
<script src="{{ url_for('routes_store.scripts_section_store') }}"></script>
|
||||
<script src="{{ url_for('static', filename='js/store/home.js') }}"></script>
|
||||
|
||||
<script>
|
||||
var hashPageCurrent = "{{ model.HASH_PAGE_STORE_HOME }}";
|
||||
@@ -7,7 +7,7 @@
|
||||
<img class="img-icon" src="{{ url_for('static', filename='images/icon_basket.png')}}" alt="Basket icon">
|
||||
</div>
|
||||
{% for basket_item in model.basket.items %}
|
||||
{% include '_block_store_basket_item.html' %}
|
||||
{% include 'components/store/_basket_item.html' %}
|
||||
{% endfor %}
|
||||
<h3 id="{{ model.ID_BASKET_TOTAL }}">Total: {{ model.output_basket_total() }}</h3>{% if not model.app.is_included_VAT %}<h4> + VAT </h4>{% endif %}
|
||||
<p id="{{ model.ID_LABEL_BASKET_EMPTY }}" style="margin: 1vh;">Buy some shit dawg!</p>
|
||||
@@ -17,7 +17,7 @@
|
||||
{% if permutation.is_available %}
|
||||
<h3 style="white-space: nowrap;">{{ basket_item.quantity }} x {{ product.output_price(model.app.is_included_VAT) }} = {{ basket_item.output_subtotal() }}</h3>
|
||||
{% set tmp_quantity = basket_item.quantity %}
|
||||
{% include '_block_input_number_plus_minus.html' %}
|
||||
{% include 'components/common/inputs/_input_number_plus_minus.html' %}
|
||||
{% elif permutation.is_unavailable_in_currency_or_region %}
|
||||
<h3 style="white-space: nowrap;">Product not available in currency and region</h3>
|
||||
{% else %}
|
||||
@@ -35,20 +35,20 @@
|
||||
<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>
|
||||
<option value="{{ c.id_category }}" {% if c.id_category == category.id_category %}{% endif %}>{{ c.name }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</td>
|
||||
<td class="{{ model.FLAG_PRODUCT }}">
|
||||
<select class="{{ model.FLAG_PRODUCT }}" {{ model.ATTR_VALUE_CURRENT }}="{{ product.id_product }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ product.id_product }}"> <!-- {{ model.ATTR_ID_PRODUCT }}="{{ product.id_product }} -->
|
||||
{% for p in model.category_list.categories[model.category_list.get_index_category_from_id(category.id_category)].products %}
|
||||
<option value="{{ p.id_product }}" {{ "selected" if p.id_product == product.id_product else "" }}>{{ p.name }}</option>
|
||||
<option value="{{ p.id_product }}" {% if p.id_product == product.id_product %}{% endif %}>{{ p.name }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</td>
|
||||
<td class="{{ model.FLAG_VARIATIONS }}">
|
||||
{% set block_id = 'Textarea_Product_Permutation_Variations' %}
|
||||
{% include '_shared_store.html' %}
|
||||
{% include 'layouts/_shared_store.html' %}
|
||||
</td>
|
||||
<td class="{{ model.FLAG_QUANTITY_STOCK }}">
|
||||
<input class="{{ model.FLAG_QUANTITY_STOCK }}" type="number" min="0" value="{{ permutation.quantity_stock }}" {{ model.ATTR_VALUE_CURRENT }}="{{ permutation.quantity_stock }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ permutation.quantity_stock }}">
|
||||
45
templates/components/store/_row_product.html
Normal file
45
templates/components/store/_row_product.html
Normal file
@@ -0,0 +1,45 @@
|
||||
{% if is_blank_row %}
|
||||
<tr class="{{ model.FLAG_ROW_NEW }}" {{ model.ATTR_ID_CATEGORY }}>
|
||||
<td class="{{ model.FLAG_DISPLAY_ORDER }}">
|
||||
{% include 'components/common/buttons/_slider_display_order.html' %}
|
||||
</td>
|
||||
<td class="{{ model.FLAG_PRODUCT_CATEGORY }}">
|
||||
<textarea class="{{ model.FLAG_PRODUCT_CATEGORY }}" {{ model.ATTR_ID_CATEGORY }} {{ model.ATTR_VALUE_CURRENT }} {{ model.ATTR_VALUE_PREVIOUS }}></textarea>
|
||||
</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_VARIATIONS }}">
|
||||
<textarea class="{{ model.FLAG_VARIATIONS }}" {{ model.ATTR_VALUE_CURRENT }} {{ model.ATTR_VALUE_PREVIOUS }}></textarea>
|
||||
</td>
|
||||
<td class="{{ model.FLAG_ACCESS_LEVEL }}" {{ model.ATTR_ID_ACCESS_LEVEL }}="1" {{ model.FLAG_ACCESS_LEVEL_REQUIRED }}="View">
|
||||
<div class="{{ model.FLAG_ACCESS_LEVEL}}" {{ model.ATTR_ID_ACCESS_LEVEL }}="1">View</div>
|
||||
</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_PRODUCT }}="{{ product.id_product }}">
|
||||
<td class="{{ model.FLAG_DISPLAY_ORDER }}">
|
||||
{% set display_order = category.display_order %}
|
||||
{% include 'components/common/buttons/_slider_display_order.html' %}
|
||||
</td>
|
||||
<td class="{{ model.FLAG_CODE }}">
|
||||
<textarea class="{{ model.FLAG_CODE }}" {{ model.ATTR_VALUE_CURRENT }}="{{ product.code }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ product.code }}">{{ product.code }}</textarea>
|
||||
</td>
|
||||
<td class="{{ model.FLAG_NAME }}">
|
||||
<textarea class="{{ model.FLAG_NAME }}" {{ model.ATTR_VALUE_CURRENT }}="{{ product.name }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ product.name }}">{{ product.name }}</textarea>
|
||||
</td>
|
||||
<td class="{{ model.FLAG_VARIATIONS }}">
|
||||
{% include 'components/common/inputs/_textarea_product_variation_types.html' %}
|
||||
<textarea class="{{ model.FLAG_VARIATIONS }}" {{ model.ATTR_VALUE_CURRENT }}="{{ product.description }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ product.description }}">{{ product.description }}</textarea>
|
||||
</td>
|
||||
<td class="{{ model.FLAG_ACCESS_LEVEL }}" {{ model.ATTR_ID_ACCESS_LEVEL }}="1" {{ model.FLAG_ACCESS_LEVEL_REQUIRED }}="{{ product.name_access_level_required }}">
|
||||
<div class="{{ model.FLAG_ACCESS_LEVEL}}" {{ model.ATTR_ID_ACCESS_LEVEL }}="{{ product.id_access_level_required }}" {{ model.ATTR_VALUE_CURRENT }}="{{ product.id_access_level_required }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ product.id_access_level_required }}">{{ product.name_access_level_required }}</div>
|
||||
</td>
|
||||
<td class="{{ model.FLAG_ACTIVE }}">
|
||||
<input class="{{ model.FLAG_ACTIVE }}" type="checkbox" {% if product.active %}checked{% endif %} {{ model.ATTR_VALUE_CURRENT }}="{{ product.active | lower }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ product.active | lower }}">
|
||||
</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
@@ -1,7 +1,7 @@
|
||||
{% if is_blank_row %}
|
||||
<tr class="{{ model.FLAG_ROW_NEW }}" {{ model.ATTR_ID_CATEGORY }}>
|
||||
<td class="{{ model.FLAG_DISPLAY_ORDER }}">
|
||||
{% include '_block_slider_display_order.html' %}
|
||||
{% include 'components/common/buttons/_slider_display_order.html' %}
|
||||
</td>
|
||||
<td class="{{ model.FLAG_CODE }}">
|
||||
<textarea class="{{ model.FLAG_CODE }}" {{ model.ATTR_VALUE_CURRENT }} {{ model.ATTR_VALUE_PREVIOUS }}></textarea>
|
||||
@@ -12,18 +12,18 @@
|
||||
<td class="{{ model.FLAG_DESCRIPTION }}">
|
||||
<textarea class="{{ model.FLAG_DESCRIPTION }}" {{ model.ATTR_VALUE_CURRENT }} {{ model.ATTR_VALUE_PREVIOUS }}></textarea>
|
||||
</td>
|
||||
<td class="{{ model.FLAG_ACCESS_LEVEL }}">
|
||||
{% include '_block_select_access_level.html' %}
|
||||
<td class="{{ model.FLAG_ACCESS_LEVEL }}" {{ model.ATTR_ID_ACCESS_LEVEL }}="1" {{ model.FLAG_ACCESS_LEVEL_REQUIRED }}="View">
|
||||
<div class="{{ model.FLAG_ACCESS_LEVEL}}" {{ model.ATTR_ID_ACCESS_LEVEL }}="1">View</div>
|
||||
</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 }}">
|
||||
<tr {{ model.ATTR_ID_PRODUCT_CATEGORY }}="{{ category.id_category }}">
|
||||
<td class="{{ model.FLAG_DISPLAY_ORDER }}">
|
||||
{% set display_order = category.display_order %}
|
||||
{% include '_block_slider_display_order.html' %}
|
||||
{% include 'components/common/buttons/_slider_display_order.html' %}
|
||||
</td>
|
||||
<td class="{{ model.FLAG_CODE }}">
|
||||
<textarea class="{{ model.FLAG_CODE }}" {{ model.ATTR_VALUE_CURRENT }}="{{ category.code }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ category.code }}">{{ category.code }}</textarea>
|
||||
@@ -34,9 +34,8 @@
|
||||
<td class="{{ model.FLAG_DESCRIPTION }}">
|
||||
<textarea class="{{ model.FLAG_DESCRIPTION }}" {{ model.ATTR_VALUE_CURRENT }}="{{ category.description }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ category.description }}">{{ category.description }}</textarea>
|
||||
</td>
|
||||
<td class="{{ model.FLAG_ACCESS_LEVEL }}">
|
||||
{% set id_access_level = category.id_access_level_required %}
|
||||
{% include '_block_select_access_level.html' %}
|
||||
<td class="{{ model.FLAG_ACCESS_LEVEL }}" {{ model.ATTR_ID_ACCESS_LEVEL }}="1" {{ model.FLAG_ACCESS_LEVEL_REQUIRED }}="{{ category.name_access_level_required }}">
|
||||
<div class="{{ model.FLAG_ACCESS_LEVEL}}" {{ model.ATTR_ID_ACCESS_LEVEL }}="{{ category.id_access_level_required }}" {{ model.ATTR_VALUE_CURRENT }}="{{ category.id_access_level_required }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ category.id_access_level_required }}">{{ category.name_access_level_required }}</div>
|
||||
</td>
|
||||
<td class="{{ model.FLAG_ACTIVE }}">
|
||||
<input class="{{ model.FLAG_ACTIVE }}" type="checkbox" {% if category.active %}checked{% endif %} {{ model.ATTR_VALUE_CURRENT }}="{{ category.active | lower }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ category.active | lower }}">
|
||||
@@ -51,26 +51,26 @@
|
||||
<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>
|
||||
<option value="{{ c.id_category }}" {% if c.id_category == category.id_category %}selected{% endif %}>{{ c.name }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</td>
|
||||
<td class="{{ model.FLAG_PRODUCT }}">
|
||||
<select class="{{ model.FLAG_PRODUCT }}" {{ model.ATTR_VALUE_CURRENT }}="{{ product.id_product }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ product.id_product }}"> <!-- {{ model.ATTR_ID_PRODUCT }}="{{ product.id_product }} -->
|
||||
{% for p in model.category_list.categories[model.category_list.get_index_category_from_id(category.id_category)].products %}
|
||||
<option value="{{ p.id_product }}" {{ "selected" if p.id_product == product.id_product else "" }}>{{ p.name }}</option>
|
||||
<option value="{{ p.id_product }}" {% if p.id_product == product.id_product %}selected{% endif %}>{{ p.name }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</td>
|
||||
<td class="{{ model.FLAG_VARIATIONS }}">
|
||||
{% set block_id = 'Textarea_Product_Permutation_Variations' %}
|
||||
{% include '_shared_store.html' %}
|
||||
{% include 'layouts/_shared_store.html' %}
|
||||
</td>
|
||||
<td class="{{ model.FLAG_CURRENCY }}">
|
||||
{{ permutation.output_currency() }}
|
||||
<select class="{{ model.FLAG_CURRENCY }}" {{ model.ATTR_VALUE_CURRENT }}="{{ permutation.id_currency }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ permutation.id_currency }}">
|
||||
{% for currency in model.currency_list.currencies %}
|
||||
<option value="{{ currency.id_currency }}" {{ "selected" if currency.id_currency == permutation.id_currency else "" }}>{{ currency.name }}</option>
|
||||
<option value="{{ currency.id_currency }}" {% if currency.id_currency == permutation.id_currency %}selected{% endif %}>{{ currency.name }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</td>
|
||||
48
templates/js/sections/store.js
Normal file
48
templates/js/sections/store.js
Normal file
@@ -0,0 +1,48 @@
|
||||
|
||||
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 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 hashGetStoreProductCategory = "{{ model.HASH_GET_STORE_PRODUCT_CATEGORY }}";
|
||||
var hashGetStoreProductPermutation = "{{ model.HASH_GET_STORE_PRODUCT_PERMUTATION }}";
|
||||
var hashSaveStoreProductCategory = "{{ model.HASH_SAVE_STORE_PRODUCT_CATEGORY }}";
|
||||
var hashSaveStoreProductPermutation = "{{ model.HASH_SAVE_STORE_PRODUCT_PERMUTATION }}";
|
||||
var hashStoreBasketAdd = "{{ model.HASH_STORE_BASKET_ADD }}";
|
||||
var hashStoreBasketDelete = "{{ model.HASH_STORE_BASKET_DELETE }}";
|
||||
var hashStoreBasketEdit = "{{ model.HASH_STORE_BASKET_EDIT }}";
|
||||
var hashStoreBasketLoad = "{{ model.HASH_STORE_BASKET_LOAD }}";
|
||||
var hashStoreSetCurrency = "{{ model.HASH_STORE_SET_CURRENCY }}";
|
||||
var hashStoreSetRegion = "{{ model.HASH_STORE_SET_REGION }}";
|
||||
var hashStoreSetIsIncludedVAT = "{{ model.HASH_STORE_SET_IS_INCLUDED_VAT }}";
|
||||
var hashPageStoreBasket = "{{ model.HASH_PAGE_STORE_BASKET }}";
|
||||
var idBasket = "#{{ model.ID_BASKET }}";
|
||||
var idBasketContainer = "#{{ model.ID_BASKET_CONTAINER }}";
|
||||
var idBasketTotal = "#{{ model.ID_BASKET_TOTAL }}";
|
||||
var idButtonCheckout = "#{{ 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 }}";
|
||||
var keyIdCurrency = "{{ model.KEY_ID_CURRENCY }}";
|
||||
var keyItems = "{{ model.KEY_ITEMS }}";
|
||||
var keyIdPermutation = "{{ model.KEY_ID_PERMUTATION }}";
|
||||
var keyIdProduct = "{{ model.KEY_ID_PRODUCT }}";
|
||||
var keyIdRegionDelivery = "{{ model.KEY_ID_REGION_DELIVERY }}";
|
||||
var keyIsIncludedVAT = "{{ model.KEY_IS_INCLUDED_VAT }}";
|
||||
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 }}";
|
||||
31
templates/layouts/_shared_store.html
Normal file
31
templates/layouts/_shared_store.html
Normal file
@@ -0,0 +1,31 @@
|
||||
{% if block_id == 'block1' %}
|
||||
<div class="common-block" id="block1">
|
||||
<h1>Feckin common block boi</h1>
|
||||
</div>
|
||||
{% elif block_id == 'checkout' %}
|
||||
<!-- Variables from Model_View_Store + model-->
|
||||
<script>
|
||||
var hashPageStoreCheckout = "{{ model.HASH_PAGE_STORE_CHECKOUT }}";
|
||||
var hashPageStoreCheckoutSession = "{{ model.HASH_PAGE_STORE_CHECKOUT_SESSION }}";
|
||||
var hashStoreBasketInfo = "{{ model.HASH_STORE_BASKET_INFO }}";
|
||||
var idOverlayInfoBilling = "#{{ model.ID_OVERLAY_INFO_BILLING }}";
|
||||
var idOverlayInfoDelivery = "#{{ model.ID_OVERLAY_INFO_DELIVERY }}";
|
||||
var idContainerInfoBilling = "#{{ model.ID_CONTAINER_INFO_BILLING }}";
|
||||
var idContainerInfoDelivery = "#{{ model.ID_CONTAINER_INFO_DELIVERY }}";
|
||||
var keyIdCheckout = "{{ model.KEY_ID_CHECKOUT }}";
|
||||
var keyInfoBilling = "{{ model.KEY_INFO_BILLING }}";
|
||||
var keyInfoDelivery = "{{ model.KEY_INFO_DELIVERY }}";
|
||||
var keyInfoIdentical = "{{ model.KEY_INFO_IDENTICAL }}";
|
||||
var keyInfoType = "{{ model.KEY_INFO_TYPE }}";
|
||||
var keyIsSubscription = "{{ model.KEY_IS_SUBSCRIPTION }}";
|
||||
var keyAddress1 = "{{ model.KEY_ADDRESS1 }}";
|
||||
var keyAddress2 = "{{ model.KEY_ADDRESS2 }}";
|
||||
var keyCity = "{{ model.KEY_CITY }}";
|
||||
var keyCounty = "{{ model.KEY_COUNTY }}";
|
||||
var keyNameFull = "{{ model.KEY_NAME_FULL }}";
|
||||
var keyPhoneNumber = "{{ model.KEY_PHONE_NUMBER }}";
|
||||
var keyPostcode = "{{ model.KEY_POSTCODE }}";
|
||||
var keyRegion = "{{ model.KEY_REGION }}";
|
||||
var keyUrlCheckout = "{{ model.KEY_URL_CHECKOUT }}";
|
||||
</script>
|
||||
{% endif %}
|
||||
@@ -47,11 +47,14 @@
|
||||
|
||||
<script>
|
||||
// var attrFor = "{{ model.ATTR_FOR }}";
|
||||
var attrIdAccessLevel = "{{ model.ATTR_ID_ACCESS_LEVEL }}";
|
||||
var attrTextCollapsed = "{{ model.ATTR_TEXT_COLLAPSED }}";
|
||||
var attrTextExpanded = "{{ model.ATTR_TEXT_EXPANDED }}";
|
||||
var attrValueCurrent = "{{ model.ATTR_VALUE_CURRENT }}";
|
||||
var attrValuePrevious = "{{ model.ATTR_VALUE_PREVIOUS }}";
|
||||
var attrValueNew = "{{ model.ATTR_VALUE_NEW }}";
|
||||
var flagAccessLevel = "{{ model.FLAG_ACCESS_LEVEL }}";
|
||||
var flagAccessLevelRequired = "{{ model.FLAG_ACCESS_LEVEL_REQUIRED }}";
|
||||
var flagActive = "{{ model.FLAG_ACTIVE }}";
|
||||
var flagAdd = "{{ model.FLAG_ADD }}";
|
||||
var flagCancel = "{{ model.FLAG_CANCEL }}";
|
||||
@@ -69,10 +72,18 @@
|
||||
var flagDetail = "{{ model.FLAG_DETAIL }}";
|
||||
var flagDirty = "{{ model.FLAG_DIRTY }}";
|
||||
var flagDisplayOrder = "{{ model.FLAG_DISPLAY_ORDER }}";
|
||||
var flagDragging = "dragging";
|
||||
var flagDragOver = "drag-over";
|
||||
var flagExpanded = "{{ model.FLAG_EXPANDED }}";
|
||||
var flagFailure = "{{ model.FLAG_FAILURE }}";
|
||||
var flagFilter = "{{ model.FLAG_FILTER }}";
|
||||
var flagFormFilters = "{{ model.FLAG_FORM_FILTERS }}";
|
||||
var flagAccessLevelRequired = "{{ model.FLAG_ACCESS_LEVEL_REQUIRED }}";
|
||||
var flagImageLogo = "{{ model.FLAG_IMAGE_LOGO }}";
|
||||
var flagInitialised = "{{ model.FLAG_INITIALISED }}";
|
||||
var flagKeyPrimary = "{{ model.FLAG_KEY_PRIMARY }}";
|
||||
var flagMessage = "{{ model.FLAG_MESSAGE }}";
|
||||
var flagMove = "move";
|
||||
var flagName = "{{ model.FLAG_NAME }}";
|
||||
var flagNavAdminHome = "{{ model.FLAG_NAV_ADMIN_HOME }}";
|
||||
var flagNavAdminStoreStripePrices = "{{ model.FLAG_NAV_ADMIN_STORE_STRIPE_PRICES }}";
|
||||
@@ -95,11 +106,14 @@
|
||||
var flagOverlayClose = "{{ model.FLAG_OVERLAY_CLOSE }}";
|
||||
var flagRow = "{{ model.FLAG_ROW }}";
|
||||
var flagRowNew = "{{ model.FLAG_ROW_NEW }}";
|
||||
var flagRows = "{{ model.FLAG_ROWS }}";
|
||||
var flagSave = "{{ model.FLAG_SAVE }}";
|
||||
var flagScrollable = "{{ model.FLAG_SCROLLABLE }}";
|
||||
var flagSlider = "{{ model.FLAG_SLIDER }}";
|
||||
var flagStatus = "{{ model.FLAG_STATUS }}";
|
||||
var flagSubmit = "{{ model.FLAG_SUBMIT }}";
|
||||
var flagSubmitted = "{{ model.FLAG_SUBMITTED }}";
|
||||
var flagSuccess = "{{ model.FLAG_SUCCESS }}";
|
||||
var hashApplyFiltersStoreProductPermutation = "{{ model.HASH_APPLY_FILTERS_STORE_PRODUCT_PERMUTATION }}";
|
||||
var hashPageAccessibilityStatement = "{{ model.HASH_PAGE_ACCESSIBILITY_STATEMENT }}";
|
||||
var hashPageAdminHome = "{{ model.HASH_PAGE_ADMIN_HOME }}";
|
||||
@@ -152,6 +166,7 @@
|
||||
var idCSRFToken = "#{{ model.ID_CSRF_TOKEN }}";
|
||||
var idFormCurrency = "#{{ model.ID_FORM_CURRENCY }}";
|
||||
var idFormDeliveryRegion = "#{{ model.ID_FORM_DELIVERY_REGION }}";
|
||||
var idFormFilters = "#{{ model.ID_FORM_FILTERS }}";
|
||||
var idFormIsIncludedVAT = "#{{ model.ID_FORM_IS_INCLUDED_VAT }}";
|
||||
var idLabelError = "#{{ model.ID_LABEL_ERROR }}";
|
||||
var idOverlayConfirm = "#{{ model.ID_OVERLAY_CONFIRM }}";
|
||||
@@ -164,12 +179,14 @@
|
||||
var keyBasket = "{{ model.KEY_BASKET }}";
|
||||
var keyCallback = "{{ model.KEY_CALLBACK }}";
|
||||
var keyCSRFToken = "{{ model.ID_CSRF_TOKEN }}";
|
||||
var keyData = "{{ model.KEY_DATA }}";
|
||||
var keyForm = "{{ model.KEY_FORM }}";
|
||||
var keyPrice = "{{ model.KEY_PRICE }}";
|
||||
var keyQuantity = "{{ model.KEY_QUANTITY }}";
|
||||
var keyShared = "shared";
|
||||
var nameCSRFToken = "{{ model.NAME_CSRF_TOKEN }}";
|
||||
var _pathHost = "{{ model.get_url_host() }}";
|
||||
var _rowBlank = null;
|
||||
var titlePageCurrent = "{{ model.title }}";
|
||||
</script>
|
||||
|
||||
@@ -298,7 +315,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!--<script type="module" src="{{ url_for('static', filename='js/pages/page_base.js') }}"></script>-->
|
||||
<!--<script type="module" src="{{ url_for('static', filename='js/pages/base.js') }}"></script>-->
|
||||
<script type="module" src="{{ url_for('static', filename='js/app.js') }}"></script>
|
||||
|
||||
</body>
|
||||
@@ -1,10 +1,11 @@
|
||||
{% extends 'layout.html' %}
|
||||
{% extends 'layouts/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') }}">
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/sections/core.css') }}">
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/pages/core/admin_home.css') }}">
|
||||
|
||||
<!-- HTML content -->
|
||||
<div class="{{ model.FLAG_CARD }} {{ model.FLAG_ROW }}">
|
||||
@@ -37,8 +38,9 @@
|
||||
</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 type="module" src="{{ url_for('static', filename='js/sections/core.js') }}"></script>
|
||||
<script type="module" src="{{ url_for('static', filename='js/pages/core/admin_home.js') }}"></script>
|
||||
<!-- <script type="module" src="{{ url_for('static', filename='js/pages/store/base.js') }}"></script> -->
|
||||
|
||||
<!--
|
||||
<script>
|
||||
@@ -1,10 +1,11 @@
|
||||
{% extends 'layout.html' %}
|
||||
{% extends 'layouts/layout.html' %}
|
||||
|
||||
{% block title %}{{ model.title }}{% endblock %}
|
||||
|
||||
{% block page_body %}
|
||||
<!-- Include Stylesheet -->
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/pages/page_contact.css') }}">
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/sections/core.css') }}">
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/pages/contact.css') }}">
|
||||
|
||||
<script src="https://www.google.com/recaptcha/enterprise.js?render=6Lf8Q8cpAAAAAFAawGu4-ma60bvbEixNVTVvRzKe"></script> <!-- reCaptcha Integration -->
|
||||
|
||||
@@ -80,13 +81,14 @@
|
||||
<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" 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>
|
||||
<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 type="module" src="{{ url_for('static', filename='js/pages/page_contact.js') }}"></script>
|
||||
<script type="module" src="{{ url_for('static', filename='js/sections/core.js') }}"></script>
|
||||
<script type="module" src="{{ url_for('static', filename='js/pages/contact.js') }}"></script>
|
||||
|
||||
<script>
|
||||
var idEmail = "#{{ model.ID_EMAIL }}";
|
||||
@@ -1,20 +1,22 @@
|
||||
<!-- v2a -->
|
||||
|
||||
{% extends 'layout.html' %}
|
||||
{% extends 'layouts/layout.html' %}
|
||||
|
||||
{% block page_body %}
|
||||
<!-- Include Stylesheet -->
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/pages/page_home.css') }}" />
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/sections/core.css') }}" />
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/pages/home.css') }}" />
|
||||
|
||||
<!-- HTML content -->
|
||||
<div>
|
||||
<h2 style="font-size: 24px; color: white; font-weight: normal;">We make websites, web apps, and desktop software</h2>
|
||||
{% set block_id = 'button_get_in_touch' %}
|
||||
{% include '_shared.html' %}
|
||||
{% include 'layouts/_shared.html' %}
|
||||
</div>
|
||||
|
||||
<!-- Include JavaScript -->
|
||||
<script type="module" src="{{ url_for('static', filename='js/pages/page_home.js') }}"></script>
|
||||
<script type="module" src="{{ url_for('static', filename='js/sections/core.js') }}"></script>
|
||||
<script type="module" src="{{ url_for('static', filename='js/pages/home.js') }}"></script>
|
||||
|
||||
<!--
|
||||
<script>
|
||||
@@ -1,12 +1,13 @@
|
||||
<!-- v2a -->
|
||||
|
||||
{% extends 'layout.html' %}
|
||||
{% extends 'layouts/layout.html' %}
|
||||
|
||||
{% block title %}{{ model.title }}{% endblock %}
|
||||
|
||||
{% block page_body %}
|
||||
<!-- Include Stylesheet -->
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/pages/page_services.css') }}" />
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/sections/core.css') }}" />
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/pages/services.css') }}" />
|
||||
|
||||
<!-- HTML content -->
|
||||
<div class="{{ model.FLAG_CARD }}">
|
||||
@@ -101,7 +102,8 @@
|
||||
</div>
|
||||
|
||||
<!-- Include JavaScript -->
|
||||
<script type="module" src="{{ url_for('static', filename='js/pages/page_services.js') }}"></script>
|
||||
<script type="module" src="{{ url_for('static', filename='js/sections/core.js') }}"></script>
|
||||
<script type="module" src="{{ url_for('static', filename='js/pages/services.js') }}"></script>
|
||||
|
||||
<!--
|
||||
<script>
|
||||
@@ -1,10 +1,11 @@
|
||||
{% extends 'layout.html' %}
|
||||
{% extends 'layouts/layout.html' %}
|
||||
|
||||
{% block title %}{{ model.title }}{% endblock %}
|
||||
|
||||
{% block page_body %}
|
||||
<!-- Include Stylesheet -->
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/pages/page_services.css') }}">
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/sections/legal.css') }}">
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/pages/accessibility_statement.css') }}">
|
||||
|
||||
<!-- HTML content -->
|
||||
<div class="{{ model.FLAG_CARD }} {{ model.FLAG_COLUMN }}">
|
||||
@@ -48,7 +49,7 @@
|
||||
If you need information on this website in a different format like accessible PDF, large print, easy read, audio recording or braille:
|
||||
</p>
|
||||
{% set block_id = 'button_get_in_touch' %}
|
||||
{% include '_shared.html' %}
|
||||
{% include 'layouts/_shared.html' %}
|
||||
<p>
|
||||
We’ll consider your request and get back to you in 7 days.
|
||||
|
||||
@@ -202,5 +203,6 @@
|
||||
</div>
|
||||
|
||||
<!-- Include JavaScript -->
|
||||
<script type="module" src="{{ url_for('static', filename='js/pages/page_accessibility_statement.js') }}"></script>
|
||||
<script type="module" src="{{ url_for('static', filename='js/sections/legal.js') }}"></script>
|
||||
<script type="module" src="{{ url_for('static', filename='js/pages/accessibility_statement.js') }}"></script>
|
||||
{% endblock %}
|
||||
@@ -1,35 +1,37 @@
|
||||
{% extends 'layout.html' %}
|
||||
|
||||
{% block title %}{{ model.title }}{% endblock %}
|
||||
|
||||
{% block page_body %}
|
||||
<!-- Include Stylesheet -->
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/pages/page_license.css') }}">
|
||||
|
||||
<!-- HTML content -->
|
||||
<div class="{{ model.FLAG_CARD }} {{ model.FLAG_COLUMN }}">
|
||||
<p>Copyright © 2024 Precision And Research Technology Systems Limited
|
||||
</p>
|
||||
<p>Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
</p>
|
||||
|
||||
<p>The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||
</p>
|
||||
|
||||
<p>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<!-- Include JavaScript -->
|
||||
<script type="module" src="{{ url_for('static', filename='js/pages/page_license.js') }}"></script>
|
||||
|
||||
<!--
|
||||
<script>
|
||||
var hashPageCurrent = "{{ model.HASH_PAGE_LICENSE }}";
|
||||
|
||||
$(document).ready(function() {
|
||||
hookupPageLicense();
|
||||
});
|
||||
</script>
|
||||
-->
|
||||
{% extends 'layouts/layout.html' %}
|
||||
|
||||
{% block title %}{{ model.title }}{% endblock %}
|
||||
|
||||
{% block page_body %}
|
||||
<!-- Include Stylesheet -->
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/sections/legal.css') }}">
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/pages/license.css') }}">
|
||||
|
||||
<!-- HTML content -->
|
||||
<div class="{{ model.FLAG_CARD }} {{ model.FLAG_COLUMN }}">
|
||||
<p>Copyright © 2024 Precision And Research Technology Systems Limited
|
||||
</p>
|
||||
<p>Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
</p>
|
||||
|
||||
<p>The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||
</p>
|
||||
|
||||
<p>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<!-- Include JavaScript -->
|
||||
<script type="module" src="{{ url_for('static', filename='js/sections/legal.js') }}"></script>
|
||||
<script type="module" src="{{ url_for('static', filename='js/pages/license.js') }}"></script>
|
||||
|
||||
<!--
|
||||
<script>
|
||||
var hashPageCurrent = "{{ model.HASH_PAGE_LICENSE }}";
|
||||
|
||||
$(document).ready(function() {
|
||||
hookupPageLicense();
|
||||
});
|
||||
</script>
|
||||
-->
|
||||
{% endblock %}
|
||||
@@ -1,10 +1,11 @@
|
||||
{% extends 'layout.html' %}
|
||||
{% extends 'layouts/layout.html' %}
|
||||
|
||||
{% block title %}{{ model.title }}{% endblock %}
|
||||
|
||||
{% block page_body %}
|
||||
<!-- Include Stylesheet -->
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/pages/page_services.css') }}">
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/sections/legal.css') }}">
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/pages/privacy_notice.css') }}">
|
||||
|
||||
<!-- HTML content -->
|
||||
<div class="{{ model.FLAG_CARD }} {{ model.FLAG_COLUMN }}">
|
||||
@@ -80,7 +81,8 @@
|
||||
</div>
|
||||
|
||||
<!-- Include JavaScript -->
|
||||
<script type="module" src="{{ url_for('static', filename='js/pages/page_accessibility_statement.js') }}"></script>
|
||||
<script type="module" src="{{ url_for('static', filename='js/sections/legal.js') }}"></script>
|
||||
<script type="module" src="{{ url_for('static', filename='js/pages/privacy_notice.js') }}"></script>
|
||||
|
||||
<!--
|
||||
<script>
|
||||
@@ -1,10 +1,11 @@
|
||||
{% extends 'layout.html' %}
|
||||
{% extends 'layouts/layout.html' %}
|
||||
|
||||
{% block title %}{{ model.title }}{% endblock %}
|
||||
|
||||
{% block page_body %}
|
||||
<!-- Include Stylesheet -->
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/pages/page_services.css') }}">
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/sections/legal.css') }}">
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/pages/services.css') }}">
|
||||
|
||||
<!-- HTML content -->
|
||||
<div class="{{ model.FLAG_CARD }} {{ model.FLAG_COLUMN }}">
|
||||
@@ -1946,7 +1947,8 @@
|
||||
</div>
|
||||
|
||||
<!-- Include JavaScript -->
|
||||
<script type="module" src="{{ url_for('static', filename='js/pages/page_retention_schedule.js') }}"></script>
|
||||
<script type="module" src="{{ url_for('static', filename='js/sections/legal.js') }}"></script>
|
||||
<script type="module" src="{{ url_for('static', filename='js/pages/retention_schedule.js') }}"></script>
|
||||
|
||||
<!--
|
||||
<script>
|
||||
@@ -1,12 +1,11 @@
|
||||
{% extends 'layout.html' %}
|
||||
{% extends 'layouts/layout.html' %}
|
||||
|
||||
{% block title %}{{ model.title }}{% endblock %}
|
||||
|
||||
{% block page_body %}
|
||||
<!-- 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 -->
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/sections/store.css') }}">
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/store/basket.css') }}">
|
||||
|
||||
<!-- HTML content -->
|
||||
<div class="{{ model.FLAG_CARD }}">
|
||||
@@ -25,7 +24,7 @@
|
||||
</div>
|
||||
<div class="{{ model.FLAG_CONTAINER }}">
|
||||
<div id="{{ model.ID_BASKET_CONTAINER }}">
|
||||
{% include '_block_store_basket.html' %}
|
||||
{% include 'components/store/_basket.html' %}
|
||||
</div>
|
||||
<!-- Comes with basket block
|
||||
<div class="{{ model.FLAG_CONTAINER }}">
|
||||
@@ -42,20 +41,19 @@
|
||||
{% set form = model.form_delivery %}
|
||||
{% set overlay_id = model.id_overlay_info_delivery %}
|
||||
{% set overlay_title = 'Delivery Information' %}
|
||||
{% include '_block_overlay_address.html' %}
|
||||
{% include 'components/common/temporary/_overlay_address.html' %}
|
||||
|
||||
{% set form = model.form_billing %}
|
||||
{% set overlay_id = model.id_overlay_info_billing %}
|
||||
{% set overlay_title = 'Billing Information' %}
|
||||
{% include '_block_overlay_address.html' %}
|
||||
{% include 'components/common/temporary/_overlay_address.html' %}
|
||||
|
||||
|
||||
<!-- Include JavaScript -->
|
||||
{% set block_id = 'scripts' %}
|
||||
{% include '_shared_store.html' %}
|
||||
<script type="module" src="{{ url_for('static', filename='js/pages/page_store_basket.js') }}"></script>
|
||||
<script src="{{ url_for('routes_store.scripts_section_store') }}"></script>
|
||||
<script type="module" src="{{ url_for('static', filename='js/pages/store/basket.js') }}"></script>
|
||||
{% set block_id = 'checkout' %}
|
||||
{% include '_shared_store.html' %}
|
||||
{% include 'layouts/_shared_store.html' %}
|
||||
<!--
|
||||
<script>
|
||||
var hashPageCurrent = "{{ model.HASH_PAGE_STORE_BASKET }}";
|
||||
@@ -1,11 +1,11 @@
|
||||
{% extends 'layout.html' %}
|
||||
{% extends 'layouts/layout.html' %}
|
||||
|
||||
{% block title %}{{ model.title }}{% endblock %}
|
||||
|
||||
{% block page_body %}
|
||||
<!-- Include Stylesheets -->
|
||||
{% set block_id = 'styles' %}
|
||||
{% include '_shared_store.html' %}
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/sections/store.css') }}">
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/store/checkout_success.css') }}">
|
||||
|
||||
<!-- HTML content -->
|
||||
<div class="{{ model.FLAG_CARD }}">
|
||||
@@ -26,11 +26,10 @@
|
||||
</div>
|
||||
|
||||
<!-- Include JavaScript -->
|
||||
{% set block_id = 'scripts' %}
|
||||
{% include '_shared_store.html' %}
|
||||
<script type="module" src="{{ url_for('static', filename='js/pages/page_store_basket.js') }}"></script>
|
||||
<script src="{{ url_for('routes_store.scripts_section_store') }}"></script>
|
||||
<script type="module" src="{{ url_for('static', filename='js/pages/store/checkout_success.js') }}"></script>
|
||||
{% set block_id = 'checkout' %}
|
||||
{% include '_shared_store.html' %}
|
||||
{% include 'layouts/_shared_store.html' %}
|
||||
<!--
|
||||
<script>
|
||||
var hashPageCurrent = "{{ model.HASH_PAGE_STORE_BASKET }}";
|
||||
7
templates/pages/store/_home.html
Normal file
7
templates/pages/store/_home.html
Normal file
@@ -0,0 +1,7 @@
|
||||
{% extends 'layouts/layout.html' %}
|
||||
|
||||
{% block title %}{{ model.title }}{% endblock %}
|
||||
|
||||
{% block page_body %}
|
||||
{% include 'components/store/_home_body.html' %}
|
||||
{% endblock %}
|
||||
@@ -1,11 +1,10 @@
|
||||
{% extends 'layout.html' %}
|
||||
{% extends 'layouts/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') }}">
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/sections/store.css') }}">
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/pages/store/product_categories.css') }}">
|
||||
|
||||
<form id="{{ model.ID_FORM_FILTERS_PRODUCT_CATEGORY }}" class="{{ model.FLAG_FILTER }} {{ model.FLAG_ROW }} {{ model.FLAG_CARD }}" action="{{ url_for('routes_store_product_category.save_category') }}" method="POST"> <!-- {{ model.FLAG_CONTAINER }} -->
|
||||
<form id="{{ model.ID_FORM_FILTERS }}" class="{{ model.FLAG_FILTER }} {{ model.FLAG_ROW }} {{ model.FLAG_CARD }}" action="{{ url_for('routes_store_product_category.save_category') }}" 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.FLAG_FILTER }}">
|
||||
@@ -28,7 +27,7 @@
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
|
||||
<div class="{{ model.FLAG_CONTAINER_INPUT }} {{ model.FLAG_ROW }}">
|
||||
{% set block_id = 'button_apply_filters' %}
|
||||
{% include '_blocks_button_save_cancel.html' %}
|
||||
{% include 'components/common/buttons/_buttons_save_cancel.html' %}
|
||||
</div>
|
||||
</div>
|
||||
<!--
|
||||
@@ -36,19 +35,19 @@
|
||||
<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' %}
|
||||
{% include 'components/common/buttons/_buttons_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' %}
|
||||
{% include 'components/common/buttons/_buttons_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' %}
|
||||
{% include 'components/common/buttons/_buttons_save_cancel.html' %}
|
||||
</div>
|
||||
</div>
|
||||
<!--
|
||||
@@ -74,28 +73,24 @@
|
||||
<tbody>
|
||||
{% set is_blank_row = False %}
|
||||
{% for category in model.category_list.categories %}
|
||||
{% include '_block_store_product_category.html' %}
|
||||
{% include 'components/store/_row_product_category.html' %}
|
||||
{% endfor %}
|
||||
|
||||
{% set is_blank_row = True %}
|
||||
{% include '_block_store_product_category.html' %}
|
||||
{% include 'components/store/_row_product_category.html' %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{% include '_block_overlay_confirm.html' %}
|
||||
{% include '_block_overlay_error.html' %}
|
||||
{% include 'components/common/temporary/_overlay_confirm.html' %}
|
||||
{% include 'components/common/temporary/_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_categories.js') }}"></script>
|
||||
-->
|
||||
<!-- Include JavaScript -->
|
||||
<script src="{{ url_for('routes_store.scripts_section_store') }}"></script>
|
||||
<script type="module" src="{{ url_for('static', filename='js/pages/store/product_categories.js') }}"></script>
|
||||
|
||||
<script>
|
||||
// pass arguments from model to JS
|
||||
var flagIsNotEmpty = "{{ model.FLAG_IS_NOT_EMPTY }}";
|
||||
var idFormFiltersProductCategory = "#{{ model.ID_FORM_FILTERS_PRODUCT_CATEGORY }}";
|
||||
var keyProductCategory = "{{ model.KEY_PRODUCT_CATEGORY }}";
|
||||
var listCategories = {{ model.category_list.to_list_category_options() | tojson | safe }};
|
||||
|
||||
var optionsAccessLevel = {{ model.convert_list_objects_to_list_options(model.access_levels) | tojson | safe }};
|
||||
</script>
|
||||
{% endblock %}
|
||||
@@ -1,17 +1,16 @@
|
||||
{% extends 'layout.html' %}
|
||||
{% extends 'layouts/layout.html' %}
|
||||
|
||||
{% block page_body %}
|
||||
<!--
|
||||
{ % set product = model.product %}
|
||||
{ % set permutation = product.get_permutation_selected() %}
|
||||
-->
|
||||
{% set block_id = 'styles' %}
|
||||
{% include '_shared_store.html' %}
|
||||
<script>console.log("test 1");</script>
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/pages/page_store_product_permutations.css') }}">
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/sections/store.css') }}">
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/pages/store/product_permutations.css') }}">
|
||||
|
||||
<!-- HTML content -->
|
||||
<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 }} -->
|
||||
<form id="{{ model.ID_FORM_FILTERS }}" 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 }}">
|
||||
@@ -66,19 +65,19 @@
|
||||
<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' %}
|
||||
{% include 'components/common/buttons/_buttons_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' %}
|
||||
{% include 'components/common/buttons/_buttons_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' %}
|
||||
{% include 'components/common/buttons/_buttons_save_cancel.html' %}
|
||||
</div>
|
||||
</div>
|
||||
<!--
|
||||
@@ -107,23 +106,22 @@
|
||||
{% for category in model.category_list.categories %}
|
||||
{% for product in category.products %}
|
||||
{% for permutation in product.permutations %}
|
||||
{% include '_block_store_permutation.html' %}
|
||||
{% include 'components/store/_permutation.html' %}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
|
||||
{% set is_blank_row = True %}
|
||||
{% include '_block_store_permutation.html' %}
|
||||
{% include 'components/store/_permutation.html' %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{% include '_block_overlay_confirm.html' %}
|
||||
{% include '_block_overlay_error.html' %}
|
||||
{% include 'components/common/temporary/_overlay_confirm.html' %}
|
||||
{% include 'components/common/temporary/_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 src="{{ url_for('routes_store.scripts_section_store') }}"></script>
|
||||
<script type="module" src="{{ url_for('static', filename='js/pages/store/product_permutations.js') }}"></script>
|
||||
|
||||
<script>
|
||||
// pass arguments from model to JS
|
||||
@@ -134,11 +132,11 @@
|
||||
var idFilterQuantityMin = "#{{ model.ID_FILTER_QUANTITY_MIN }}";
|
||||
var idFilterQuantityMax = "#{{ model.ID_FILTER_QUANTITY_MAX }}";
|
||||
*/
|
||||
var idFormFiltersPermutations = "#{{ model.ID_FORM_FILTERS_PERMUTATIONS }}";
|
||||
// var idFormFiltersPermutations = "#{ { model.ID_FORM_FILTERS_PERMUTATIONS } }";
|
||||
var keyPermutations = "{{ model.KEY_PERMUTATIONS }}";
|
||||
var productsByCategory = {{ model.category_list.to_dict_lists_products() | tojson | safe }};
|
||||
var productsByCategory = {{ model.category_list.get_product_option_lists_by_category() | tojson | safe }};
|
||||
var listCategories = {{ model.category_list.to_list_categories() | tojson | safe }};
|
||||
var listProducts = {{ model.category_list.to_list_products() | tojson | safe }};
|
||||
var listProducts = {{ model.category_list.to_product_option_list() | tojson | safe }};
|
||||
var listVariations = {{ model.variations.to_list_variations() | tojson | safe }};
|
||||
var listVariationTypes = {{ model.variations.to_list_variation_types() | tojson | safe }};
|
||||
var dictVariations = Object.fromEntries(listVariations.map((variation, index) => [variation[attrIdVariation], variation]));
|
||||
107
templates/pages/store/_products.html
Normal file
107
templates/pages/store/_products.html
Normal file
@@ -0,0 +1,107 @@
|
||||
{% extends 'layouts/layout.html' %}
|
||||
|
||||
{% block page_body %}
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/sections/store.css') }}">
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/pages/store/products.css') }}">
|
||||
|
||||
<form id="{{ model.ID_FORM_FILTERS }}" class="{{ model.FLAG_FILTER }} {{ model.FLAG_ROW }} {{ model.FLAG_CARD }}" action="{{ url_for('routes_store_product.save_product') }}" 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.form_filters.id_category.label }}
|
||||
{{ model.form_filters.id_category() }}
|
||||
{% for error in model.form_filters.id_category.errors %}
|
||||
<p class="error">{{ error }}</p>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
|
||||
<div class="{{ model.FLAG_CONTAINER_INPUT }} {{ model.FLAG_ROW }} {{ model.FLAG_FILTER }}">
|
||||
{{ 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 }} {{ model.FLAG_ROW }} {{ model.FLAG_FILTER }}">
|
||||
{{ model.form_filters.active.label }}
|
||||
{{ model.form_filters.active() }}
|
||||
{% for error in model.form_filters.active.errors %}
|
||||
<p class="error">{{ error }}</p>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
|
||||
<div class="{{ model.FLAG_CONTAINER_INPUT }} {{ model.FLAG_ROW }}">
|
||||
{% set block_id = 'button_apply_filters' %}
|
||||
{% include 'components/common/buttons/_buttons_save_cancel.html' %}
|
||||
</div>
|
||||
</div>
|
||||
<!--
|
||||
-->
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
|
||||
<div class="{{ model.FLAG_CONTAINER_INPUT }}">
|
||||
{% set block_id = 'button_add' %}
|
||||
{% include 'components/common/buttons/_buttons_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 'components/common/buttons/_buttons_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 'components/common/buttons/_buttons_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 }}">
|
||||
<th class="{{ model.FLAG_DISPLAY_ORDER }}">Display Order</th>
|
||||
<th class="{{ model.FLAG_PRODUCT_CATEGORY }}">Category</th>
|
||||
<th class="{{ model.FLAG_NAME }}">Name</th>
|
||||
<th class="{{ model.FLAG_VARIATIONS }}">Variations</th>
|
||||
<th class="{{ model.FLAG_ACCESS_LEVEL }}">Access Level Required</th>
|
||||
<th class="{{ model.FLAG_ACTIVE}}">Active</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% set is_blank_row = False %}
|
||||
{% for category in model.category_list.categories %}
|
||||
{% for product in category.products %}
|
||||
{% include 'components/store/_row_product.html' %}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
|
||||
{% set is_blank_row = True %}
|
||||
{% include 'components/store/_row_product.html' %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{% include 'components/common/temporary/_overlay_confirm.html' %}
|
||||
{% include 'components/common/temporary/_overlay_error.html' %}
|
||||
|
||||
<!-- Include JavaScript -->
|
||||
<script src="{{ url_for('routes_store.scripts_section_store') }}"></script>
|
||||
<script type="module" src="{{ url_for('static', filename='js/pages/store/products.js') }}"></script>
|
||||
|
||||
<script>
|
||||
// pass arguments from model to JS
|
||||
var flagIsNotEmpty = "{{ model.FLAG_IS_NOT_EMPTY }}";
|
||||
var optionsAccessLevel = {{ model.convert_list_objects_to_list_options(model.access_levels) | tojson | safe }};
|
||||
</script>
|
||||
{% endblock %}
|
||||
@@ -1,10 +1,9 @@
|
||||
{% extends 'layout.html' %}
|
||||
{% extends 'layouts/layout.html' %}
|
||||
|
||||
{% block page_body %}
|
||||
{% set block_id = 'styles' %}
|
||||
{% include '_shared_store.html' %}
|
||||
<script>console.log("test 1");</script>
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/pages/page_store_stock_items.css') }}">
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/sections/store.css') }}">
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/pages/store/stock_items.css') }}">
|
||||
|
||||
<!-- HTML content -->
|
||||
<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 }} -->
|
||||
@@ -58,11 +57,11 @@
|
||||
<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' %}
|
||||
{% include 'components/common/buttons/_buttons_save_cancel.html' %}
|
||||
{% set block_id = 'button_cancel' %}
|
||||
{% include '_blocks_button_save_cancel.html' %}
|
||||
{% include 'components/common/buttons/_buttons_save_cancel.html' %}
|
||||
{% set block_id = 'button_add' %}
|
||||
{% include '_blocks_button_save_cancel.html' %}
|
||||
{% include 'components/common/buttons/_buttons_save_cancel.html' %}
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
@@ -98,24 +97,23 @@
|
||||
{% for permutation in product.permutations %}
|
||||
{% for stock_item in permutation.stock_items %}
|
||||
{% set is_blank_row = False %}
|
||||
{% include '_block_store_stock_item.html' %}
|
||||
{% include 'components/store/_stock_item.html' %}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
|
||||
{% set is_blank_row = True %}
|
||||
{% include '_block_store_stock_item.html' %}
|
||||
{% include 'components/store/_stock_item.html' %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{% include '_block_overlay_confirm.html' %}
|
||||
{% include '_block_overlay_error.html' %}
|
||||
{% include 'components/common/temporary/_overlay_confirm.html' %}
|
||||
{% include 'components/common/temporary/_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_stock_items.js') }}"></script>
|
||||
<script src="{{ url_for('routes_store.scripts_section_store') }}"></script>
|
||||
<script type="module" src="{{ url_for('static', filename='js/pages/store/stock_items.js') }}"></script>
|
||||
|
||||
<script>
|
||||
// pass arguments from model to JS
|
||||
@@ -128,9 +126,9 @@
|
||||
*/
|
||||
var idFormFiltersPermutations = "#{{ model.ID_FORM_FILTERS_PERMUTATIONS }}";
|
||||
var keyPermutations = "{{ model.KEY_PERMUTATIONS }}";
|
||||
var dictListsProducts = {{ model.category_list.to_dict_lists_products() | tojson | safe }};
|
||||
var dictListsProducts = {{ model.category_list.get_product_option_lists_by_category() | tojson | safe }};
|
||||
var listCategories = {{ model.category_list.to_list_categories() | tojson | safe }};
|
||||
var listProducts = {{ model.category_list.to_list_products() | tojson | safe }};
|
||||
var listProducts = {{ model.category_list.to_product_option_list() | tojson | safe }};
|
||||
|
||||
/*
|
||||
// hookup elements
|
||||
@@ -1,12 +1,13 @@
|
||||
{% extends 'layout.html' %}
|
||||
{% extends 'layouts/layout.html' %}
|
||||
|
||||
{% block title %}{{ model.title }}{% endblock %}
|
||||
|
||||
{% block page_body %}
|
||||
{% set supplier = model.supplier %}
|
||||
{% set block_id = 'styles' %}
|
||||
{% include '_shared_store.html' %}
|
||||
{% include 'layouts/_shared_store.html' %}
|
||||
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/sections/store.css') }}">
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/pages/page_store_supplier.css') }}">
|
||||
|
||||
<!-- HTML content -->
|
||||
@@ -92,10 +93,9 @@
|
||||
</form>
|
||||
</div>
|
||||
|
||||
{% set block_id = 'scripts' %}
|
||||
{% include '_shared_store.html' %}
|
||||
<!-- Include JavaScript -->
|
||||
<script type="module" src="{{ url_for('static', filename='js/pages/page_store_supplier.js') }}"></script>
|
||||
<script src="{{ url_for('routes_store.scripts_section_store') }}"></script>
|
||||
<script type="module" src="{{ url_for('static', filename='js/pages/store/supplier.js') }}"></script>
|
||||
|
||||
<!--
|
||||
<script>
|
||||
@@ -1,21 +1,23 @@
|
||||
<!-- v2a -->
|
||||
|
||||
{% extends 'layout.html' %}
|
||||
{% extends 'layouts/layout.html' %}
|
||||
|
||||
{% block page_body %}
|
||||
<!-- Include Stylesheet -->
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/pages/page_user.css') }}" />
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/sections/user.css') }}" />
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/pages/user.css') }}" />
|
||||
|
||||
<!-- HTML content -->
|
||||
<div>
|
||||
{% set firstname = 'new user' if user.firstname is none else user.firstname %}
|
||||
<h2 style="font-size: 24px; color: white; font-weight: normal;">Welcome, {{ firstname }}</h2>
|
||||
{% set block_id = 'button_get_in_touch' %}
|
||||
{% include '_shared.html' %}
|
||||
{% include 'layouts/_shared.html' %}
|
||||
</div>
|
||||
|
||||
<!-- Include JavaScript -->
|
||||
<script type="module" src="{{ url_for('static', filename='js/pages/page_user.js') }}"></script>
|
||||
<script type="module" src="{{ url_for('static', filename='js/sections/user.js') }}"></script>
|
||||
<script type="module" src="{{ url_for('static', filename='js/pages/user.js') }}"></script>
|
||||
|
||||
<!--
|
||||
<script>
|
||||
Reference in New Issue
Block a user