feat(main): Add base theme: This is the falcon theme out of the box.

This is falcon v3.1.2
This commit is contained in:
2025-11-18 14:04:01 +01:00
parent 3a7f2db331
commit 6849b8eefd
605 changed files with 49820 additions and 0 deletions

View File

@ -0,0 +1,48 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{block name='breadcrumb'}
{if $breadcrumb.links|count > 1}
<nav aria-label="breadcrumb" data-depth="{$breadcrumb.count}">
{block name='breadcrumb_list'}
<ol class="breadcrumb">
{foreach from=$breadcrumb.links item=path name=breadcrumb}
{block name='breadcrumb_item'}
<li {if $smarty.foreach.breadcrumb.last}class="breadcrumb-item active" aria-current="page"{else}class="breadcrumb-item"{/if}>
{if !$smarty.foreach.breadcrumb.last}
<a href="{$path.url}">
{/if}
{$path.title}
{if !$smarty.foreach.breadcrumb.last}
</a>
{/if}
</li>
{/block}
{/foreach}
</ol>
{/block}
</nav>
{/if}
{/block}

View File

@ -0,0 +1,45 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
<div class="container">
<div class="row">
{block name='hook_footer_before'}
{hook h='displayFooterBefore'}
{/block}
</div>
</div>
<div class="footer-container">
<div class="container">
<div class="row">
{block name='hook_footer'}
{hook h='displayFooter'}
{/block}
</div>
<div class="row">
{block name='hook_footer_after'}
{hook h='displayFooterAfter'}
{/block}
</div>
</div>
</div>

View File

@ -0,0 +1,35 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{if $errors|count}
<div class="help-block mt-2">
{block name='form_errors'}
<ul>
{foreach $errors as $error}
<li class="alert alert-danger">{$error|nl2br nofilter}</li>
{/foreach}
</ul>
{/block}
</div>
{/if}

View File

@ -0,0 +1,221 @@
{**
* 2007-2017 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
* @author PrestaShop SA <contact@prestashop.com>
* @copyright 2007-2017 PrestaShop SA
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
* International Registered Trademark & Property of PrestaShop SA
*}
{$autocomplete = [
'firstname' => 'given-name',
'lastname' => 'family-name',
'email'=>'email',
'password'=>'current-password',
'new_password'=>'new-password',
'postcode'=>'postal-code',
'birthday'=>'bday',
'address1'=>'street-address',
'address2'=>'address-line2',
'id_state'=>'address-level1',
'city'=>'address-level2',
'company'=>'organization'
]}
{if $field.type == 'hidden'}
{block name='form_field_item_hidden'}
<input type="hidden" name="{$field.name}" value="{$field.value|default}">
{/block}
{else}
{assign var=uniqId value=10|mt_rand:100000}
<div class="form-group js-input-column">
{if $field.type == 'checkbox' || $field.type == 'radio-buttons'}
{if $field.type == 'radio-buttons'}
<div class="form-label label mr-3">{$field.label}</div>
{/if}
{else}
<label class="form-label {if $field.required}required{/if}" for="f-{$field.name}_{$uniqId}">
{$field.label}
{block name='form_field_comment'}
{if (!$field.required && !in_array($field.type, ['radio-buttons', 'checkbox']))}
<small class="text-muted">({l s='Optional' d='Shop.Forms.Labels'})</small>
{/if}
{/block}
</label>
{/if}
{if $field.type === 'select'}
{block name='form_field_item_select'}
<select class="custom-select wide{if !empty($field.errors)} is-invalid{/if}" name="{$field.name}"
id="f-{$field.name}_{$uniqId}" {if $field.required} required{/if}>
<option value disabled selected>{l s='-- please choose --' d='Shop.Forms.Labels'}</option>
{foreach from=$field.availableValues item="label" key="value"}
<option value="{$value}" {if $value eq $field.value} selected {/if}>{$label}</option>
{/foreach}
</select>
{/block}
{elseif $field.type === 'countrySelect'}
{block name='form_field_item_country'}
<select class="custom-select js-country wide{if !empty($field.errors)} is-invalid{/if}" name="{$field.name}"
id="f-{$field.name}_{$uniqId}" {if $field.required}required{/if}>
<option value disabled selected>{l s='-- please choose --' d='Shop.Forms.Labels'}</option>
{foreach from=$field.availableValues item="label" key="value"}
<option value="{$value}" {if $value eq $field.value} selected {/if}>{$label}</option>
{/foreach}
</select>
{/block}
{elseif $field.type === 'radio-buttons'}
{block name='form_field_item_radio'}
{foreach from=$field.availableValues item="label" key="value" name="radiolist"}
<div class="custom-control custom-radio custom-control-inline">
<input name="{$field.name}" type="radio" value="{$value}"
class="custom-control-input {if !empty($field.errors)} is-invalid{/if}"
id="f-{$field.name}_{$uniqId}-{$smarty.foreach.radiolist.iteration}" {if $field.required}required{/if}
{if $value eq $field.value} checked {/if}>
<label class="custom-control-label"
for="f-{$field.name}_{$uniqId}-{$smarty.foreach.radiolist.iteration}">{$label}</label>
</div>
{/foreach}
{/block}
{elseif $field.type === 'checkbox'}
{block name='form_field_item_checkbox'}
<div class="custom-control custom-checkbox">
<input name="{$field.name}" type="checkbox" value="1" id="f-{$field.name}_{$uniqId}"
class="custom-control-input{if !empty($field.errors)} is-invalid{/if}" {if $field.value} checked="checked"
{/if}{if $field.required} required{/if}>
<label class="custom-control-label" for="f-{$field.name}_{$uniqId}">{$field.label|unescape:'html' nofilter}</label>
</div>
{/block}
{elseif $field.type === 'date'}
{block name='form_field_item_date'}
<input
name="{$field.name}"
class="form-control{if !empty($field.errors)} is-invalid{/if}"
type="date"
value="{$field.value|default}"
placeholder="{if isset($field.availableValues.placeholder)}{$field.availableValues.placeholder}{/if}"
id="f-{$field.name}_{$uniqId}" {if isset($autocomplete[$field.name])} autocomplete="{$autocomplete[$field.name]}"
{/if}>
{if isset($field.availableValues.comment)}
<span class="form-text text-muted">
{$field.availableValues.comment}
</span>
{/if}
{/block}
{elseif $field.type === 'birthday'}
{block name='form_field_item_birthday'}
<div class="js-parent-focus">
{html_select_date
field_order=DMY
time={$field.value}
field_array={$field.name}
prefix=false
reverse_years=true
field_separator='<br>'
day_extra='class="form-control form-control-select"'
month_extra='class="form-control form-control-select"'
year_extra='class="form-control form-control-select"'
day_empty={l s='-- day --' d='Shop.Forms.Labels'}
month_empty={l s='-- month --' d='Shop.Forms.Labels'}
year_empty={l s='-- year --' d='Shop.Forms.Labels'}
start_year={'Y'|date}-100 end_year={'Y'|date}
}
</div>
{/block}
{elseif $field.type === 'password'}
{block name='form_field_item_password'}
<div class="input-group js-parent-focus">
<input
class="form-control js-child-focus js-visible-password{if !empty($field.errors)} is-invalid{/if}"
name="{$field.name}"
id="f-{$field.name}_{$uniqId}"
type="password"
value=""
{if isset($configuration.password_policy.minimum_length)}data-minlength="{$configuration.password_policy.minimum_length}"{/if}
{if isset($configuration.password_policy.maximum_length)}data-maxlength="{$configuration.password_policy.maximum_length}"{/if}
{if isset($configuration.password_policy.minimum_score)}data-minscore="{$configuration.password_policy.minimum_score}"{/if}
pattern=".{literal}{{/literal}{$configuration.password_policy.minimum_length},{literal}}{/literal}"
{if isset($autocomplete[$field.name])}autocomplete="{$autocomplete[$field.name]}" {/if}
{if $field.required}required{/if}>
<span class="input-group-append">
<button class="btn btn-primary" type="button" data-action="show-password"
data-text-show="<span class='material-icons d-block'>visibility</span>" data-text-hide="<span class='material-icons d-block'>visibility_off</span>">
<span class="material-icons d-block">visibility</span>
</button>
</span>
</div>
{include file='_partials/form-errors.tpl' errors=$field.errors required=$field.required label=$field.label}
{/block}
{elseif $field.type === 'file'}
<div class="custom-file">
<input name="{$field.name}" type="file" class="custom-file-input{if !empty($field.errors)} is-invalid{/if}"
id="f-{$field.name}_{$uniqId}" {if $field.required} required{/if}>
<label class="custom-file-label" for="f-{$field.name}_{$uniqId}">{l s='Choose file' d='Shop.Theme.Actions'}</label>
</div>
{else}
{block name='form_field_item_other'}
<input
class="form-control{if !empty($field.errors)} is-invalid{/if}"
name="{$field.name}"
type="{if $field.name === "phone"}tel{else}{$field.type}{/if}"
value="{$field.value|default}"
id="f-{$field.name}_{$uniqId}"
{if isset($field.availableValues.placeholder)}placeholder="{$field.availableValues.placeholder}" {/if}
{if $field.maxLength}maxlength="{$field.maxLength}" {/if}
{if $field.required}required{/if}
{if isset($autocomplete[$field.name])} autocomplete="{$autocomplete[$field.name]}" {/if}
pattern="^[^\s]+(\s+[^\s]+)*$">
{if isset($field.availableValues.comment)}
<small class="form-text text-muted">
{$field.availableValues.comment}
</small>
{/if}
{/block}
{/if}
{block name='form_field_errors'}
{if $field.type !== 'password'}
{include file='_partials/form-errors.tpl' errors=$field.errors required=$field.required label=$field.label}
{/if}
{/block}
</div>
{/if}

View File

@ -0,0 +1,10 @@
{$themeDir = _PS_THEME_DIR_}
{$preloadFilePath = "`$themeDir`assets/preload.html"}
{$urlsWithCdn = $urls.img_ps_url|replace:'/img/':'/'}
{if file_exists($preloadFilePath)}
{capture name="preloadBlock"}{include file=$preloadFilePath}{/capture}
{$smarty.capture.preloadBlock|replace:'/themes/':"`$urlsWithCdn`themes/" nofilter}
{/if}

View File

@ -0,0 +1,84 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{block name='head_charset'}
<meta charset="utf-8">
{/block}
{block name='head_ie_compatibility'}
<meta http-equiv="x-ua-compatible" content="ie=edge">
{/block}
{block name='head_seo'}
<title>{block name='head_seo_title'}{$page.meta.title}{/block}</title>
{block name='hook_after_title_tag'}
{hook h='displayAfterTitleTag'}
{/block}
<meta name="description" content="{block name='head_seo_description'}{$page.meta.description}{/block}">
<meta name="keywords" content="{block name='head_seo_keywords'}{$page.meta.keywords}{/block}">
{if $page.meta.robots !== 'index'}
<meta name="robots" content="{$page.meta.robots}">
{/if}
{if $page.canonical}
<link rel="canonical" href="{$page.canonical}">
{/if}
{block name='head_hreflang'}
{foreach from=$urls.alternative_langs item=pageUrl key=code}
<link rel="alternate" href="{$pageUrl}" hreflang="{$code}">
{/foreach}
{/block}
{block name='head_pagination_seo'}
{include file="_partials/pagination-seo.tpl"}
{/block}
{/block}
{block name='head_viewport'}
<meta name="viewport" content="width=device-width, initial-scale=1">
{/block}
{block name='head_icons'}
<link rel="icon" type="image/vnd.microsoft.icon" href="{$shop.favicon}?{$shop.favicon_update_time}">
<link rel="shortcut icon" type="image/x-icon" href="{$shop.favicon}?{$shop.favicon_update_time}">
{/block}
{block name='hook_header'}
{$HOOK_HEADER nofilter}
{/block}
{block name='head_preload'}
{if $shop.logo}
<link rel="preload" as="image" href="{$shop.logo}">
{/if}
{include file="_partials/head-preload.tpl"}
{/block}
{block name='stylesheets'}
{include file="_partials/stylesheets.tpl" stylesheets=$stylesheets}
{/block}
{block name='javascript_head'}
{include file="_partials/javascript.tpl" javascript=$javascript.head vars=$js_custom_vars}
{/block}
{block name='hook_extra'}{/block}

View File

@ -0,0 +1,91 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{block name='header_banner'}
<div class="header-banner">
{hook h='displayBanner'}
</div>
{/block}
{block name='header_nav'}
<nav class="header-nav border-bottom bg-light py-1 d-none d-md-block">
<div class="container">
<div class="row align-items-center">
{hook h='displayNav1'}
{hook h='displayNav2'}
</div>
</div>
</nav>
{/block}
{block name='header_top'}
<div class="js-header-top-wrapper">
<div class="header-top js-header-top">
<div class="header-top__content pt-md-3 pb-md-0 py-2">
<div class="container">
<div class="row header-top__row">
<div class="col flex-grow-0 header-top__block header-top__block--menu-toggle d-block d-md-none">
<a
class="header-top__link"
rel="nofollow"
href="#"
data-toggle="modal"
data-target="#mobile_top_menu_wrapper"
>
<div class="header-top__icon-container">
<span class="header-top__icon material-icons">menu</span>
</div>
</a>
</div>
<div class="col-md-4 col header-top__block header-top__block--logo">
<a href="{$urls.pages.index}">
{images_block webpEnabled=$webpEnabled}
<img
{if !empty($shop.logo_details)}
src="{$shop.logo_details.src}"
width="{$shop.logo_details.width}"
height="{$shop.logo_details.height}"
{else}
src="{$shop.logo}"
{/if}
class="logo img-fluid"
alt="{$shop.name} {l s='logo' d='Shop.Theme.Global'}">
{/images_block}
</a>
</div>
{hook h='displayTop'}
</div>
</div>
</div>
</div>
</div>
{hook h='displayNavFullWidth'}
{/block}

View File

@ -0,0 +1,48 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{$jsAssetHash = Configuration::get('PS_CCCJS_VERSION')|md5}
{foreach $javascript.external as $js}
<script
type="text/javascript"
src="{appendParamToUrl url=$js.uri key=v value=$jsAssetHash}"
{$js.attribute}></script>
{/foreach}
{foreach $javascript.inline as $js}
<script type="text/javascript">
{$js.content nofilter}
</script>
{/foreach}
{if isset($vars) && $vars|@count}
<script type="text/javascript">
{foreach from=$vars key=var_name item=var_value}
var {$var_name} = {$var_value|json_encode nofilter};
{/foreach}
</script>
{/if}

View File

@ -0,0 +1,6 @@
{include file="_partials/modal-search.tpl"}
{include file="_partials/modal-menu.tpl"}
{include file="_partials/modal-filters.tpl"}

View File

@ -0,0 +1,19 @@
{extends file='components/modal.tpl'}
{block name='modal_extra_attribues'}id="mobile_filters" data-modal-hide-mobile{/block}
{block name='modal_extra_class'}fixed-right{/block}
{block name='modal_dialog_extra_class'}modal-dialog-aside{/block}
{block name='modal_title'}{l s='Filters' d='Shop.Theme.Catalog'}{/block}
{block name='modal_body_extra_class'}p-0{/block}
{block name='modal_body'}
<div id="_mobile_filters"></div>
{/block}
{block name='modal_footer'}
<button type="button" class="btn btn-block btn-primary" data-dismiss="modal" aria-label="Close">
{l s='Show results' d='Shop.Istheme'}
</button>
{/block}

View File

@ -0,0 +1,16 @@
{extends file='components/modal.tpl'}
{block name='modal_extra_attribues'}id="mobile_top_menu_wrapper" data-modal-hide-mobile{/block}
{block name='modal_extra_class'}fixed-left{/block}
{block name='modal_dialog_extra_class'}modal-dialog-aside{/block}
{block name='modal_title'}{l s='Menu' d='Shop.Theme.Catalog'}{/block}
{block name='modal_body'}
<div class="js-top-menu mobile" id="_mobile_top_menu"></div>
<div class="js-top-menu-bottom">
<div id="_mobile_currency_selector" class="mb-2"></div>
<div id="_mobile_language_selector" class="mb-2"></div>
<div id="_mobile_contact_link" class="mb-2"></div>
</div>
</div>
{/block}

View File

@ -0,0 +1,12 @@
{extends file='components/modal.tpl'}
{block name='modal_extra_attribues'}id="saerchModal" data-modal-hide-mobile{/block}
{block name='modal_extra_class'}modal-fullscreen search-modal{/block}
{block name='modal_header'}{/block}
{block name='modal_body'}
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
<div id="_mobile_search_from">
</div>
{/block}

View File

@ -0,0 +1,78 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{if isset($notifications)}
<aside id="notifications">
<div class="container">
{if $notifications.error}
{block name='notifications_error'}
<article class="alert alert-danger" role="alert" data-alert="danger">
<ul class="mb-0">
{foreach $notifications.error as $notif}
<li>{$notif nofilter}</li>
{/foreach}
</ul>
</article>
{/block}
{/if}
{if $notifications.warning}
{block name='notifications_warning'}
<article class="alert alert-warning" role="alert" data-alert="warning">
<ul class="mb-0">
{foreach $notifications.warning as $notif}
<li>{$notif nofilter}</li>
{/foreach}
</ul>
</article>
{/block}
{/if}
{if $notifications.success}
{block name='notifications_success'}
<article class="alert alert-success" role="alert" data-alert="success">
<ul class="mb-0">
{foreach $notifications.success as $notif}
<li>{$notif nofilter}</li>
{/foreach}
</ul>
</article>
{/block}
{/if}
{if $notifications.info}
{block name='notifications_info'}
<article class="alert alert-info" role="alert" data-alert="info">
<ul class="mb-0">
{foreach $notifications.info as $notif}
<li>{$notif nofilter}</li>
{/foreach}
</ul>
</article>
{/block}
{/if}
</div>
</aside>
{/if}

View File

@ -0,0 +1,3 @@
<div class="page-loader">
<div class="spinner-border text-primary" role="status"><span class="sr-only">{l s='Loading...' d='Shop.Theme.Global'}</span></div>
</div>

View File

@ -0,0 +1,47 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{if isset($listing.pagination) && $listing.pagination.should_be_displayed}
{$page_nb = 1}
{if isset($smarty.get.page)}
{$page_nb = $smarty.get.page|intval|default:1}
{/if}
{$queryPage = '?page='|cat:$page_nb}
{$page.canonical = $page.canonical|replace:$queryPage:''}
{$prev = false}
{$next = false}
{if ($page_nb - 1) == 1}
{$prev = $page.canonical}
{elseif $page_nb > 2}
{$prev = ($page['canonical']|cat:'?page='|cat:($page_nb - 1))}
{/if}
{if $listing.pagination.total_items > $listing.pagination.items_shown_to}
{$next = ($page['canonical']|cat:'?page='|cat:($page_nb + 1))}
{/if}
{if $prev}<link rel="prev" href="{$prev}">{/if}
{if $next}<link rel="next" href="{$next}">{/if}
{/if}

View File

@ -0,0 +1,63 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{block name='pagination_page_list'}
{if $pagination.should_be_displayed}
<nav>
<ul class="pagination justify-content-center mt-4 mb-2">
{foreach from=$pagination.pages item="page"}
<li class="page-item{if $page.current} active{/if} {if $page.type === 'spacer'}disabled{/if}">
{if $page.type === 'spacer'}
<span
rel="{if $page.type === 'previous'}prev{elseif $page.type === 'next'}next{else}nofollow{/if}"
href="#"
class="page-link"
>
&hellip;
</span>
{else}
<a
rel="{if $page.type === 'previous'}prev{elseif $page.type === 'next'}next{else}nofollow{/if}"
href="{$page.url}"
class="page-link {['disabled' => !$page.clickable, 'js-search-link' => true]|classnames}"
>
{if $page.type === 'previous'}
<span class="material-icons font-reset align-middle">keyboard_arrow_left</span>
<span class="sr-only">{l s='Previous' d='Shop.Theme.Actions'}</span>
{elseif $page.type === 'next'}
<span class="material-icons font-reset align-middle">keyboard_arrow_right</span>
<span class="sr-only">{l s='Next' d='Shop.Theme.Actions'}</span>
{else}
{$page.page}
{/if}
</a>
{/if}
</li>
{/foreach}
</ul>
</nav>
{/if}
{/block}

View File

@ -0,0 +1,29 @@
<template id="password-feedback">
<div
class="js-password-strength-feedback password-strength-feedback mt-1"
style="display: none;"
>
<div class="progress-container">
<div class="progress mb-1">
<div class="progress-bar js-password-policy-progress-bar" role="progressbar" aria-valuemin="0" aria-valuemax="100"></div>
</div>
</div>
<script type="text/javascript" class="js-hint-password">
{if !empty($page['password-policy']['feedbacks'])}
{$page['password-policy']['feedbacks']|@json_encode nofilter}
{/if}
</script>
<div class="js-password-strength-text password-strength-text"></div>
<div class="password-requirements">
<p class="js-password-requirements-length password-requirements-length font-sm d-flex align-items-center my-2" data-translation="{l s='Enter a password between %s and %s characters' d='Shop.Theme.Customeraccount'}">
<i class="material-icons mr-1 font-size-lg">check_circle</i>
<span></span>
</p>
<p class="js-password-requirements-score password-requirements-score font-sm d-flex align-items-center my-2" data-translation="{l s='The minimum score must be: %s' d='Shop.Theme.Customeraccount'}">
<i class="material-icons mr-1 font-size-lg">check_circle</i>
<span></span>
</p>
</div>
</div>
</template>

View File

@ -0,0 +1,54 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{$cssAssetHash = Configuration::get('PS_CCCCSS_VERSION')|md5}
{foreach $stylesheets.external as $stylesheet}
{$url = {appendParamToUrl url=$stylesheet.uri key=v value=$cssAssetHash}}
{if $preloadCss|default:false &&
($stylesheet.id === 'theme-ccc')
||
(in_array($stylesheet.id, ['theme-main', 'theme-product', 'theme-listing', 'theme-checkout']) && $stylesheet.server !== 'remote')
}
<link
rel="preload"
href="{appendParamToUrl url=$stylesheet.uri key=v value=$cssAssetHash}"
as="style"
>
{/if}
<link
rel="stylesheet"
href="{appendParamToUrl url=$stylesheet.uri key=v value=$cssAssetHash}"
type="text/css"
media="{$stylesheet.media}">
{/foreach}
{foreach $stylesheets.inline as $stylesheet}
<style>
{$stylesheet.content}
</style>
{/foreach}