Subida del módulo y tema de PrestaShop

This commit is contained in:
Kaloyan
2026-04-09 18:31:51 +02:00
parent 12c253296f
commit 16b3ff9424
39262 changed files with 7418797 additions and 0 deletions

View File

@@ -0,0 +1,13 @@
{**
* For the full copyright and license information, please view the
* docs/licenses/LICENSE.txt file that was distributed with this source code.
*}
{if isset($confirmations) && count($confirmations) && $confirmations}
<div class="bootstrap">
<div class="alert alert-success" style="display:block;">
{foreach $confirmations as $conf}
{$conf}
{/foreach}
</div>
</div>
{/if}

View File

@@ -0,0 +1,41 @@
{**
* For the full copyright and license information, please view the
* docs/licenses/LICENSE.txt file that was distributed with this source code.
*}
{if isset($employee)}
<div class="dropdown employee-dropdown">
<div class="rounded-circle person" data-toggle="dropdown">
<i class="material-icons">account_circle</i>
</div>
<div class="dropdown-menu dropdown-menu-right">
<div class="employee-wrapper-avatar">
<div class="employee-top">
<span class="employee-avatar"><img class="avatar rounded-circle" src="{$employee->getImage()}" alt="{$employee->firstname}" /></span>
<span class="employee_profile">{l s='Welcome back %name%' sprintf=['%name%' => $employee->firstname] d='Admin.Navigation.Header'}</span>
</div>
<a class="dropdown-item employee-link profile-link" href="{$link->getAdminLink('AdminEmployees', true, [], ['id_employee' => $employee->id|intval, 'updateemployee' => 1])|escape:'html':'UTF-8'}">
<i class="material-icons">edit</i>
<span>{l s='Your profile' d='Admin.Navigation.Header'}</span>
</a>
</div>
<p class="divider"></p>
{foreach from=$displayBackOfficeEmployeeMenu item=$menuItem}
{assign var=menuItemProperties value=$menuItem->getProperties()}
<a class="dropdown-item {$menuItem->getClass()}" href="{$menuItemProperties.link}" {if !isset($menuItemProperties.isExternalLink) || true === $menuItemProperties.isExternalLink} target="_blank"{/if} rel="noopener noreferrer nofollow">
{if isset($menuItemProperties.icon)}<i class="material-icons">{$menuItemProperties.icon}</i> {/if}{$menuItem->getContent()}
</a>
{if $menuItem@last}
<p class="divider"></p>
{/if}
{/foreach}
<a class="dropdown-item employee-link text-center" id="header_logout" href="{$logout_link|escape:'html':'UTF-8'}">
<i class="material-icons d-lg-none">power_settings_new</i>
<span>{l s='Sign out' d='Admin.Navigation.Header'}</span>
</a>
</div>
</div>
{/if}

View File

@@ -0,0 +1,22 @@
{**
* For the full copyright and license information, please view the
* docs/licenses/LICENSE.txt file that was distributed with this source code.
*}
{if count($errors) && current($errors) != '' && (!isset($disableDefaultErrorOutPut) || $disableDefaultErrorOutPut == false)}
<div class="bootstrap">
<div class="alert alert-danger">
<button type="button" class="close" data-dismiss="alert">&times;</button>
{if count($errors) == 1}
{reset($errors)}
{else }
{l s='There are %d errors.' sprintf=[$errors|count] d='Admin.Notifications.Error'}
<br/>
<ol>
{foreach $errors as $error}
<li>{$error}</li>
{/foreach}
</ol>
{/if}
</div>
</div>
{/if}

View File

@@ -0,0 +1,16 @@
{**
* For the full copyright and license information, please view the
* docs/licenses/LICENSE.txt file that was distributed with this source code.
*}
{if isset($informations) && count($informations) && $informations}
<div class="bootstrap">
<div class="alert alert-info">
<button type="button" class="close" data-dismiss="alert">&times;</button>
<ul id="infos_block" class="list-unstyled">
{foreach $informations as $info}
<li>{$info}</li>
{/foreach}
</ul>
</div>
</div>
{/if}

View File

@@ -0,0 +1,53 @@
{**
* For the full copyright and license information, please view the
* docs/licenses/LICENSE.txt file that was distributed with this source code.
*}
<div class="component-search-quickaccess d-none">
<p class="component-search-title">{l s='Quick Access' d='Admin.Navigation.Header'}</p>
{if $quick_access}
{foreach $quick_access as $quick}
<a class="dropdown-item quick-row-link{if $link->matchQuickLink({$quick.link|escape:'html':'UTF-8'})}{assign "matchQuickLink" $quick.id_quick_access} active{/if}"
href="{$quick.link|escape:'html':'UTF-8'}"
{if $quick.new_window} target="_blank"{/if}
data-item="{$quick.name|escape:'html':'UTF-8'}"
>{$quick.name|escape:'html':'UTF-8'}</a>
{/foreach}
{/if}
<div class="dropdown-divider"></div>
{if isset($matchQuickLink)}
<a id="quick-remove-link"
class="dropdown-item js-quick-link"
href="#"
data-method="remove"
data-quicklink-id="{$matchQuickLink}"
data-rand="{1|rand:200}"
data-icon="{$quick_access_current_link_icon|escape:'html':'UTF-8'}"
data-url="{$link->getQuickLink($smarty.server['REQUEST_URI']|escape:'javascript')}"
data-post-link="{$link->getAdminLink('AdminQuickAccesses')|escape:'html':'UTF-8'}"
data-prompt-text="{l s='Please name this shortcut:' js=1 d='Admin.Navigation.Header'}"
data-link="{$quick_access_current_link_name|truncate:32}"
>
<i class="material-icons">remove_circle_outline</i>
{l s='Remove from Quick Access' d='Admin.Navigation.Header'}
</a>
{else}
<a id="quick-add-link"
class="dropdown-item js-quick-link"
href="#"
data-rand="{1|rand:200}"
data-icon="{$quick_access_current_link_icon|escape:'html':'UTF-8'}"
data-method="add"
data-url="{$link->getQuickLink($smarty.server['REQUEST_URI']|escape:'javascript')}"
data-post-link="{$link->getAdminLink('AdminQuickAccesses')|escape:'html':'UTF-8'}"
data-prompt-text="{l s='Please name this shortcut:' js=1 d='Admin.Navigation.Header'}"
data-link="{$quick_access_current_link_name|truncate:32|escape:'html':'UTF-8'}"
>
<i class="material-icons">add_circle</i>
{l s='Add current page to Quick Access' d='Admin.Actions'}
</a>
{/if}
<a id="quick-manage-link" class="dropdown-item" href="{$link->getAdminLink("AdminQuickAccesses")|escape:'html':'UTF-8'}">
<i class="material-icons">settings</i>
{l s='Manage your quick accesses' d='Admin.Navigation.Header'}
</a>
</div>

View File

@@ -0,0 +1,114 @@
{**
* For the full copyright and license information, please view the
* docs/licenses/LICENSE.txt file that was distributed with this source code.
*}
<nav class="nav-bar d-none d-print-none d-md-block">
<span class="menu-collapse" data-toggle-url="{$toggle_navigation_url}">
<i class="material-icons rtl-flip">first_page</i>
</span>
<div class="nav-bar-overflow">
<div class="logo-container">
<div class="logo-container__header">
<a id="header_logo" class="logo float-left" href="{$default_tab_link|escape:'html':'UTF-8'}"></a>
<span id="shop_version" class="header-version">{$ps_version}</span>
</div>
<div class="logo-container__close js-mobile-menu">
<i class="material-icons close-btn">close</i>
</div>
</div>
<ul class="main-menu{if $collapse_menu} sidebar-closed{/if}">
{foreach $tabs as $level1}
{if $level1.active}
{$level1Href = $level1.href|escape:'html':'UTF-8'}
{if $level1.sub_tabs|@count && isset($level1.sub_tabs[0].href)}
{$level1Href = $level1.sub_tabs[0].href|escape:'html':'UTF-8'}
{/if}
{$level1Name = $level1.name|escape:'html':'UTF-8'}
{if $level1.name eq ''}
{$level1Name = $level1.class_name|escape:'html':'UTF-8'}
{/if}
{if $level1.icon != ''}
<li class="link-levelone{if $level1.current} link-levelone-active{/if}" data-submenu="{$level1.id_tab}" id="tab-{$level1.class_name}">
<a href="{$level1Href}" class="link" >
<i class="material-icons">{$level1.icon}</i> <span>{$level1Name}</span>
</a>
</li>
{else}
<li class="category-title{if $level1.current} link-active{/if}" data-submenu="{$level1.id_tab}" id="tab-{$level1.class_name}">
<span class="title">{$level1Name}</span>
</li>
{foreach $level1.sub_tabs as $level2}
{if $level2.active}
{$level2Href = $level2.href|escape:'html':'UTF-8'}
{$level2Name = $level2.name|escape:'html':'UTF-8'}
{if $level2.name eq ''}
{$level2Name = $level2.class_name|escape:'html':'UTF-8'}
{/if}
{assign var="levelOneClass" value=''}
{if $level2.current and not $collapse_menu}
{assign var="levelOneClass" value=" link-active open ul-open"}
{elseif $level2.current and $collapse_menu}
{assign var="levelOneClass" value=" link-active"}
{/if}
<li class="link-levelone{if $level2.sub_tabs|@count} has_submenu{/if}{$levelOneClass}" data-submenu="{$level2.id_tab}" id="subtab-{$level2.class_name}">
<a href="{$level2Href}" class="link">
<i class="material-icons mi-{$level2.icon}">{$level2.icon}</i>
<span>
{$level2Name}
</span>
{if $level1.sub_tabs|@count}
<i class="material-icons sub-tabs-arrow">
{if $level2.current}
keyboard_arrow_up
{else}
keyboard_arrow_down
{/if}
</i>
{/if}
</a>
{if $level2.sub_tabs|@count}
<ul id="collapse-{$level2.id_tab}" class="submenu panel-collapse">
{foreach $level2.sub_tabs as $level3}
{if $level3.active}
{$level3Href = $level3.href|escape:'html':'UTF-8'}
{$level3Name = $level3.name|escape:'html':'UTF-8'}
{if $level3.name eq ''}
{$level3Name = $level3.class_name|escape:'html':'UTF-8'}
{/if}
<li class="link-leveltwo{if $level3.current} link-active{/if}" data-submenu="{$level3.id_tab}" id="subtab-{$level3.class_name}">
<a href="{$level3Href}" class="link"> {$level3Name}
</a>
</li>
{/if}
{/foreach}
</ul>
{/if}
</li>
{/if}
{/foreach}
{/if}
{/if}
{/foreach}
</ul>
</div>
{hook h='displayAdminNavBarBeforeEnd'}
</nav>

View File

@@ -0,0 +1,126 @@
{**
* For the full copyright and license information, please view the
* docs/licenses/LICENSE.txt file that was distributed with this source code.
*}
<div id="notif" class="notification-center dropdown dropdown-clickable">
<button class="btn notification js-notification dropdown-toggle" data-toggle="dropdown">
<i class="material-icons">notifications_none</i>
<span id="notifications-total" class="count hide">0</span>
</button>
<div class="dropdown-menu dropdown-menu-right js-notifs_dropdown">
<div class="notifications">
<ul class="nav nav-pills" role="tablist">
{$active = "active"}
{if $show_new_orders}
<li class="nav-item">
<a
class="nav-link {$active}"
id="orders-tab"
data-toggle="tab"
data-type="order"
href="#orders-notifications"
role="tab"
>
{l s='Orders[1][/1]' html=true sprintf=['[1]' => '<span id="_nb_new_orders_">', '[/1]' => '</span>'] d='Admin.Navigation.Notification'}
</a>
</li>
{$active = ""}
{/if}
{if $show_new_customers}
<li class="nav-item">
<a
class="nav-link {$active}"
id="customers-tab"
data-toggle="tab"
data-type="customer"
href="#customers-notifications"
role="tab"
>
{l s='Customers[1][/1]' html=true sprintf=['[1]' => '<span id="_nb_new_customers_">', '[/1]' => '</span>'] d='Admin.Navigation.Notification'}
</a>
</li>
{$active = ""}
{/if}
{if $show_new_messages}
<li class="nav-item">
<a
class="nav-link {$active}"
id="messages-tab"
data-toggle="tab"
data-type="customer_message"
href="#messages-notifications"
role="tab"
>
{l s='Messages[1][/1]' html=true sprintf=['[1]' => '<span id="_nb_new_messages_">', '[/1]' => '</span>'] d='Admin.Navigation.Notification'}
</a>
</li>
{$active = ""}
{/if}
</ul>
<!-- Tab panes -->
<div class="tab-content">
{$active = "active"}
{if $show_new_orders}
<div class="tab-pane {$active} empty" id="orders-notifications" role="tabpanel">
<p class="no-notification">
{l s='No new order for now :(' d='Admin.Navigation.Notification'}<br>
{$no_order_tip}
</p>
<div class="notification-elements"></div>
</div>
{$active = ""}
{/if}
{if $show_new_customers}
<div class="tab-pane {$active} empty" id="customers-notifications" role="tabpanel">
<p class="no-notification">
{l s='No new customer for now :(' d='Admin.Navigation.Notification'}<br>
{$no_customer_tip}
</p>
<div class="notification-elements"></div>
</div>
{$active = ""}
{/if}
{if $show_new_messages}
<div class="tab-pane {$active} empty" id="messages-notifications" role="tabpanel">
<p class="no-notification">
{l s='No new message for now.' d='Admin.Navigation.Notification'}<br>
{$no_customer_message_tip}
</p>
<div class="notification-elements"></div>
</div>
{$active = ""}
{/if}
</div>
</div>
</div>
</div>
{if $show_new_orders}
<script type="text/html" id="order-notification-template">
<a class="notif" href='order_url'>
#_id_order_ -
{l s='from' d='Admin.Navigation.Notification'} <strong>_customer_name_</strong> (_iso_code_)_carrier_
<strong class="float-sm-right">_total_paid_</strong>
</a>
</script>
{/if}
{if $show_new_customers}
<script type="text/html" id="customer-notification-template">
<a class="notif" href='customer_url'>
#_id_customer_ - <strong>_customer_name_</strong>_company_ - {l s='registered' d='Admin.Navigation.Notification'} <strong>_date_add_</strong>
</a>
</script>
{/if}
{if $show_new_messages}
<script type="text/html" id="message-notification-template">
<a class="notif" href='message_url'>
<span class="message-notification-status _status_">
<i class="material-icons">fiber_manual_record</i> _status_
</span>
- <strong>_customer_name_</strong> (_company_) - <i class="material-icons">access_time</i> _date_add_
</a>
</script>
{/if}

View File

@@ -0,0 +1,58 @@
{**
* For the full copyright and license information, please view the
* docs/licenses/LICENSE.txt file that was distributed with this source code.
*}
<div class="dropdown quick-accesses">
<button class="btn btn-link btn-sm dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" id="quick_select">
{l s='Quick Access' d='Admin.Navigation.Header'}
</button>
<div class="dropdown-menu">
{if $quick_access}
{foreach $quick_access as $quick}
<a class="dropdown-item quick-row-link {if isset($quick.class)}{$quick.class|escape:'html':'UTF-8'}{/if}{if $link->matchQuickLink({$quick.link})}{assign "matchQuickLink" $quick.id_quick_access} active{/if}"
href="{$quick.link|escape:'html':'UTF-8'}"
{if $quick.new_window} target="_blank"{/if}
data-item="{$quick.name|escape:'html':'UTF-8'}"
>{$quick.name|escape:'html':'UTF-8'}</a>
{/foreach}
{/if}
<div class="dropdown-divider"></div>
{if isset($matchQuickLink)}
<a id="quick-remove-link"
class="dropdown-item js-quick-link"
href="#"
data-method="remove"
data-quicklink-id="{$matchQuickLink|escape:'html':'UTF-8'}"
data-rand="{1|rand:200}"
data-icon="{$quick_access_current_link_icon|escape:'html':'UTF-8'}"
data-url="{$link->getQuickLink($smarty.server['REQUEST_URI']|escape:'javascript')}"
data-post-link="{$link->getAdminLink('AdminQuickAccesses')|escape:'html':'UTF-8'}"
data-prompt-text="{l s='Please name this shortcut:' js=1 d='Admin.Navigation.Header'}"
data-link="{$quick_access_current_link_name|truncate:32|escape:'html':'UTF-8'}"
>
<i class="material-icons">remove_circle_outline</i>
{l s='Remove from Quick Access' d='Admin.Navigation.Header'}
</a>
{else}
<a id="quick-add-link"
class="dropdown-item js-quick-link"
href="#"
data-rand="{1|rand:200}"
data-icon="{$quick_access_current_link_icon|escape:'html':'UTF-8'}"
data-method="add"
data-url="{$link->getQuickLink($smarty.server['REQUEST_URI']|escape:'javascript')}"
data-post-link="{$link->getAdminLink('AdminQuickAccesses')|escape:'html':'UTF-8'}"
data-prompt-text="{l s='Please name this shortcut:' js=1 d='Admin.Navigation.Header'}"
data-link="{$quick_access_current_link_name|truncate:32|escape:'html':'UTF-8'}"
>
<i class="material-icons">add_circle</i>
{l s='Add current page to Quick Access' d='Admin.Actions'}
</a>
{/if}
<a id="quick-manage-link" class="dropdown-item" href="{$link->getAdminLink("AdminQuickAccesses")|escape:'html':'UTF-8'}">
<i class="material-icons">settings</i>
{l s='Manage your quick accesses' d='Admin.Navigation.Header'}
</a>
</div>
</div>

View File

@@ -0,0 +1,46 @@
{**
* For the full copyright and license information, please view the
* docs/licenses/LICENSE.txt file that was distributed with this source code.
*}
<form id="header_search"
class="bo_search_form dropdown-form js-dropdown-form collapsed"
method="post"
action="{$link->getAdminLink('AdminSearch')}"
role="search">
<input type="hidden" name="bo_search_type" id="bo_search_type" class="js-search-type" />
{if isset($show_clear_btn) && $show_clear_btn}
<a href="#" class="clear_search hide"><i class="icon-remove"></i></a>
{/if}
<div class="input-group">
<input type="text" class="form-control js-form-search" id="bo_query" name="bo_query" value="{$bo_query}" placeholder="{l s='Search (e.g.: product reference, customer name…)' d='Admin.Navigation.Header'}" aria-label="{l s='Searchbar' d='Admin.Navigation.Header'}">
<div class="input-group-append">
<button type="button" class="btn btn-outline-secondary dropdown-toggle js-dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
{l s='Everywhere' d='Admin.Navigation.Header'}
</button>
<div class="dropdown-menu js-items-list">
<a class="dropdown-item" data-item="{l s='Everywhere' d='Admin.Navigation.Header'}" href="#" data-value="0" data-placeholder="{l s='What are you looking for?' d='Admin.Navigation.Header'}" data-icon="icon-search"><i class="material-icons">search</i> {l s='Everywhere' d='Admin.Navigation.Header'}</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" data-item="{l s='Catalog' d='Admin.Global'}" href="#" data-value="1" data-placeholder="{l s='Product name, reference, etc.' d='Admin.Navigation.Header'}" data-icon="icon-book"><i class="material-icons">store_mall_directory</i> {l s='Catalog' d='Admin.Global'}</a>
<a class="dropdown-item" data-item="{l s='Customers' d='Admin.Navigation.Header'} {l s='by name'}" href="#" data-value="2" data-placeholder="{l s='Name' d='Admin.Navigation.Header'}" data-icon="icon-group"><i class="material-icons">group</i> {l s='Customers' d='Admin.Navigation.Header'} {l s='by name' d='Admin.Navigation.Header'}</a>
<a class="dropdown-item" data-item="{l s='Customers' d='Admin.Navigation.Header'} {l s='by ip address'}" href="#" data-value="6" data-placeholder="{l s='123.45.67.89' d='Admin.Navigation.Header'}" data-icon="icon-desktop"><i class="material-icons">desktop_mac</i> {l s='Customers' d='Admin.Navigation.Header'} {l s='by IP address' d='Admin.Navigation.Header'}</a>
<a class="dropdown-item" data-item="{l s='Orders' d='Admin.Global'}" href="#" data-value="3" data-placeholder="{l s='Order ID' d='Admin.Navigation.Header'}" data-icon="icon-credit-card"><i class="material-icons">shopping_basket</i> {l s='Orders' d='Admin.Global'}</a>
<a class="dropdown-item" data-item="{l s='Invoices' d='Admin.Global'}" href="#" data-value="4" data-placeholder="{l s='Invoice number' d='Admin.Navigation.Header'}" data-icon="icon-book"><i class="material-icons">book</i> {l s='Invoices' d='Admin.Global'}</a>
<a class="dropdown-item" data-item="{l s='Carts' d='Admin.Global'}" href="#" data-value="5" data-placeholder="{l s='Cart ID' d='Admin.Navigation.Header'}" data-icon="icon-shopping-cart"><i class="material-icons">shopping_cart</i> {l s='Carts' d='Admin.Global'}</a>
<a class="dropdown-item" data-item="{l s='Modules' d='Admin.Global'}" href="#" data-value="7" data-placeholder="{l s='Module name' d='Admin.Navigation.Header'}" data-icon="icon-puzzle-piece"><i class="material-icons">extension</i> {l s='Modules' d='Admin.Global'}</a>
</div>
<button class="btn btn-secondary" type="submit"><span class="d-none">{l s='SEARCH' d='Admin.Navigation.Header'}</span><i class="material-icons">search</i></button>
</div>
</div>
</form>
<script type="text/javascript">
$(function(){
{if isset($search_type) && $search_type}
$('.search-option a[data-value='+{$search_type|intval}+']').click();
{/if}
$('#bo_query').one('click', function() {
$(this).closest('form').removeClass('collapsed');
});
});
</script>

View File

@@ -0,0 +1,37 @@
{**
* For the full copyright and license information, please view the
* docs/licenses/LICENSE.txt file that was distributed with this source code.
*}
{if isset($is_multishop)
&& $is_multishop
&& $shop_list
&& (
isset($multishop_context)
&& $multishop_context & Shop::CONTEXT_GROUP
|| $multishop_context & Shop::CONTEXT_SHOP
|| $multishop_context & Shop::CONTEXT_ALL
)}
<div id="shop-list" class="shop-list dropdown ps-dropdown stores">
<button class="btn btn-link" type="button" data-toggle="dropdown">
<span class="selected-item">
<i class="material-icons visibility">visibility</i>
{if !isset($current_shop_name) || $current_shop_name == ''}
{l s='All stores' d='Admin.Global'}
{else}
{$current_shop_name}
{/if}
<i class="material-icons arrow-down">arrow_drop_down</i>
</span>
</button>
<div class="dropdown-menu dropdown-menu-right ps-dropdown-menu">
{$shop_list}
</div>
</div>
{else}
<div class="shop-list">
<a class="link" id="header_shopname" href="{$base_url|escape:'html':'UTF-8'}" target= "_blank">
<i class="material-icons">visibility</i>
<span>{l s='View my store' d='Admin.Navigation.Header'}</span>
</a>
</div>
{/if}

View File

@@ -0,0 +1,19 @@
{**
* For the full copyright and license information, please view the
* docs/licenses/LICENSE.txt file that was distributed with this source code.
*}
{if count($warnings)}
<div class="bootstrap">
<div class="alert alert-warning">
<button type="button" class="close" data-dismiss="alert">&times;</button>
{if count($warnings) > 1}
<h4>{l s='There are %d warnings.' sprintf=[count($warnings)] d='Admin.Notifications.Error'}</h4>
{/if}
<ul class="list-unstyled">
{foreach $warnings as $warning}
<li>{$warning}</li>
{/foreach}
</ul>
</div>
</div>
{/if}

View File

@@ -0,0 +1,16 @@
{**
* For the full copyright and license information, please view the
* docs/licenses/LICENSE.txt file that was distributed with this source code.
*}
<div id="ajax_confirmation" class="alert alert-success" style="display: none;"></div>
<div id="content-message-box"></div>
{* Ajax box *}
{* TODO: FIND WHY AND REAPPLY IF NEEDED
<div id="ajaxBox" style="display:none"></div>
*}
{if isset($content)}
{$content}
{/if}

View File

@@ -0,0 +1,19 @@
{**
* For the full copyright and license information, please view the
* docs/licenses/LICENSE.txt file that was distributed with this source code.
*}
{extends file='page_header_toolbar.tpl'}
{block name=pageTitle}
{if !isset($use_regular_h1_structure)}
{assign var="use_regular_h1_structure" value=true}
{/if}
{if $use_regular_h1_structure}
<h1 class="title">
{if is_array($title)}{$title|end|escape}{else}{$title|escape}{/if}
</h1>
{else}
{$title}
{/if}
{/block}

View File

@@ -0,0 +1,19 @@
{**
* For the full copyright and license information, please view the
* docs/licenses/LICENSE.txt file that was distributed with this source code.
*}
{if isset($php_errors) && $php_errors|@count}
<div class="bootstrap">
<div id="error-modal" class="modal fade">
<div class="modal-dialog">
<div class="alert alert-danger clearfix">
{foreach $php_errors item=php_error}
{l s='%1$s on line %2$s in file %3$s' sprintf=[$php_error.type|escape, $php_error.errline|escape, $php_error.errfile|escape] d='Admin.Notifications.Error'}<br />
[{$php_error.errno|escape}] {$php_error.errstr|escape}<br /><br />
{/foreach}
<button type="button" class="btn btn-default float-right" data-dismiss="modal"><i class="icon-remove"></i> {l s='Close' d='Admin.Actions'}</button>
</div>
</div>
</div>
</div>
{/if}

View File

@@ -0,0 +1,7 @@
{**
* For the full copyright and license information, please view the
* docs/licenses/LICENSE.txt file that was distributed with this source code.
*}
<div id="footer" class="bootstrap">
{hook h="displayBackOfficeFooter"}
</div>

View File

@@ -0,0 +1,75 @@
{**
* For the full copyright and license information, please view the
* docs/licenses/LICENSE.txt file that was distributed with this source code.
*}
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale={(isset($viewport_scale)) ? $viewport_scale : '1'}">
<meta name="mobile-web-app-capable" content="yes">
<meta name="robots" content="NOFOLLOW, NOINDEX">
<link rel="icon" type="image/x-icon" href="{$img_dir}favicon.ico" />
<link rel="apple-touch-icon" href="{$img_dir}app_icon.png" />
<title>{if $meta_title != ''}{$meta_title}{/if}{$shop_name}</title>
{if !isset($display_header_javascript) || $display_header_javascript}
<script type="text/javascript">
var help_class_name = '{$controller_name|@addcslashes:'\''}';
var iso_user = '{$iso_user|@addcslashes:'\''}';
var lang_is_rtl = '{$lang_is_rtl|intval}';
var full_language_code = '{$full_language_code|@addcslashes:'\''}';
var full_cldr_language_code = '{$full_cldr_language_code|@addcslashes:'\''}';
var country_iso_code = '{$country_iso_code|@addcslashes:'\''}';
var _PS_VERSION_ = '{$smarty.const._PS_VERSION_|@addcslashes:'\''}';
var roundMode = {$round_mode|intval};
var youEditFieldFor = '';
{if isset($shop_context)}
{if $shop_context == Shop::CONTEXT_ALL}
youEditFieldFor = '{l s='This field will be modified for all your shops.' js=1 d='Admin.Notifications.Info'}';
{elseif $shop_context == Shop::CONTEXT_GROUP}
youEditFieldFor = '{l s='This field will be modified for all shops in this shop group:' js=1 d='Admin.Notifications.Info'} <b>{$shop_name|@addcslashes:'\''}</b>';
{else}
youEditFieldFor = '{l s='This field will be modified for this shop:' js=1 d='Admin.Notifications.Info'} <b>{$shop_name|@addcslashes:'\''}</b>';
{/if}
{/if}
var new_order_msg = '{l s='A new order has been placed on your store.' js=1 d='Admin.Navigation.Header'}';
var order_number_msg = '{l s='Order number:' js=1 d='Admin.Navigation.Header'} ';
var total_msg = '{l s='Total:' js=1 d='Admin.Global'} ';
var from_msg = '{l s='From:' js=1 d='Admin.Global'} ';
var see_order_msg = '{l s='View this order' js=1 d='Admin.Orderscustomers.Feature'}';
var new_customer_msg = '{l s='A new customer registered on your store.' js=1 d='Admin.Navigation.Header'}';
var customer_name_msg = '{l s='Registered on:' js=1 d='Admin.Navigation.Header'} ';
var new_msg = '{l s='A new message was posted on your store.' js=1 d='Admin.Navigation.Header'}';
var see_msg = '{l s='Read this message' js=1 d='Admin.Navigation.Header'}';
var token = '{$token|addslashes}';
var currentIndex = '{$currentIndex|@addcslashes:'\''}';
var employee_token = '{getAdminToken tab='AdminEmployees'}';
var choose_language_translate = '{l s='Choose language:' js=1 d='Admin.Actions'}';
var default_language = '{$default_language|intval}';
var admin_modules_link = '{$link->getAdminLink("AdminModulesSf", true, ['route' => "admin_module_manage"])|addslashes}';
var admin_notification_get_link = '{$link->getAdminLink("AdminCommon")|addslashes}';
var admin_notification_push_link = adminNotificationPushLink = '{$link->getAdminLink("AdminCommon", true, ['route' => 'admin_common_notifications_ack'])|addslashes}';
var update_success_msg = '{l s='Update successful' js=1 d='Admin.Notifications.Success'}';
var search_product_msg = '{l s='Search for a product' js=1 d='Admin.Orderscustomers.Feature'}';
</script>
{/if}
{$admin_path = "{__PS_BASE_URI__}{basename(_PS_ADMIN_DIR_)}/themes/new-theme/public/"}
{$preloadFilePath = "../public/preload.tpl"}
{include file=$preloadFilePath admin_dir=$admin_path}
{if isset($css_files)}
{foreach from=$css_files key=css_uri item=media}
<link href="{$css_uri|escape:'html':'UTF-8'}" rel="stylesheet" type="text/css"/>
{/foreach}
{/if}
{if (isset($js_def) && count($js_def) || isset($js_files) && count($js_files))}
{include file=$smarty.const._PS_ALL_THEMES_DIR_|cat:"javascript.tpl"}
{/if}
{if isset($displayBackOfficeHeader)}
{$displayBackOfficeHeader}
{/if}

View File

@@ -0,0 +1,100 @@
{**
* For the full copyright and license information, please view the
* docs/licenses/LICENSE.txt file that was distributed with this source code.
*}
<script>
function refresh_{$id|replace:'-':'_'|addslashes}()
{
{if !isset($source) || $source == '' || !isset($refresh) || $refresh == ''}
if (arguments.length < 1 || arguments[0] != true) {
// refresh kpis only if force mode is true (pass true as first argument of this function).
return;
}
{/if}
$.ajax({
url: '{$source|addslashes}' + '&rand=' + new Date().getTime(),
dataType: 'json',
type: 'GET',
cache: false,
headers: { 'cache-control': 'no-cache' },
success: function(jsonData){
if (!jsonData.has_errors)
{
if (jsonData.value != undefined)
{
$('#{$id|addslashes} .value').html(jsonData.value);
$('#{$id|addslashes}').attr('data-original-title', jsonData.tooltip);
}
if (jsonData.data != undefined)
{
$("#{$id|addslashes} .boxchart svg").remove();
set_d3_{$id|replace:'-':'_'|addslashes}(jsonData.data);
}
}
}
});
}
</script>
{if $chart}
<script>
function set_d3_{$id|str_replace:'-':'_'|addslashes}(jsonObject)
{
var data = new Array;
$.each(jsonObject, function (index, value) {
data.push(value);
});
var data_max = d3.max(data);
var chart = d3.select("#{$id|addslashes} .boxchart").append("svg")
.attr("class", "data_chart")
.attr("width", data.length * 6)
.attr("height", 45);
var y = d3.scale.linear()
.domain([0, data_max])
.range([0, data_max * 45]);
chart.selectAll("rect")
.data(data)
.enter().append("rect")
.attr("y", function(d) { return 45 - d * 45 / data_max; })
.attr("x", function(d, i) { return i * 6; })
.attr("width", 4)
.attr("height", y);
}
{if $data}
set_d3_{$id|replace:'-':'_'|addslashes}($.parseJSON("{$data|addslashes}"));
{/if}
</script>
{/if}
{if isset($href) && $href}
<a href="{$href|escape:'html':'UTF-8'}" id="{$id|escape:'html':'UTF-8'}" class="kpi-container box-stats">
{else}
<div id="{$id|escape:'html':'UTF-8'}" class="kpi-container box-stats">
{/if}
<div class="kpi-content -{$color|escape}" data-original-title="{$tooltip|escape}" data-toggle="pstooltip">
{if isset($icon) && $icon}
<i class="material-icons">{$icon|escape}</i>
{/if}
{if isset($chart) && $chart}
<div class="boxchart-overlay">
<div class="boxchart">
</div>
</div>
{/if}
<span class="title">{$title|escape}</span>
<div class="kpi-description">
<div class="subtitle">{$subtitle|escape}</div>
<div class="value">{$value|escape|replace:'&amp;':'&'}</div>
</div>
</div>
{if isset($href) && $href}
</a>
{else}
</div>
{/if}

View File

@@ -0,0 +1,22 @@
{**
* For the full copyright and license information, please view the
* docs/licenses/LICENSE.txt file that was distributed with this source code.
*}
<div class="content container-fluid">
<div class="row">
<div class="col-md-12">
<div class="kpi-container">
<div class="row">
{assign var='col' value=(int)(12 / $kpis|count)}
{foreach from=$kpis item=i name=kpi}
{if $smarty.foreach.kpi.iteration > $col+1}
</div>
<div class="row">
{/if}
<div class="col-md-{$col}">{$i}</div>
{/foreach}
</div>
</div>
</div>
</div>
</div>

View File

@@ -0,0 +1,46 @@
{**
* For the full copyright and license information, please view the
* docs/licenses/LICENSE.txt file that was distributed with this source code.
*}
{strip}
<ul class="items-list">
<li{if !isset($current_shop_value) || $current_shop_value == ''} class="active"{/if}>
<a class="dropdown-item" href="{$url|escape:'html':'UTF-8'}">{l s='All stores' d='Admin.Global'}</a>
</li>
{foreach key=group_id item=group_data from=$tree}
{if !isset($multishop_context) || $is_group_context}
<li class="group{if $current_shop_value == 'g-'|cat:$group_id} active{/if}">
<a class="dropdown-item{if $multishop_context_group == false} disabled{/if}" href="{if $multishop_context_group == false}#{else}{$url|escape:'html':'UTF-8'}g-{$group_id}{/if}">
{l s='%s group' sprintf=[$group_data['name']|escape:'html':'UTF-8']}
</a>
</li>
{elseif !$is_all_context}
<ul class="group {if $multishop_context_group == false} disabled{/if}">{l s='%s group' sprintf=[$group_data['name']|escape:'html':'UTF-8']}
{/if}
{if !isset($multishop_context) || $is_shop_context}
{foreach key=shop_id item=shop_data from=$group_data['shops']}
{if ($shop_data['active'])}
<li class="shop{if $current_shop_value == 's-'|cat:$shop_id} active{/if}">
<a class="dropdown-item {if $shop_data['uri'] == NULL} disabled{/if}" href="{if $shop_data['uri'] == NULL}#{else}{$url|escape:'html':'UTF-8'}s-{$shop_id}{/if}">
{$shop_data['name']}
</a>
{if $shop_data['uri'] == NULL}
<a class="link-shop" href="{$link->getAdminLink('AdminShop', true)|escape:'html':'UTF-8'}" target="_blank">
<i class="material-icons">&#xE869;</i>
</a>
{else}
<a class="link-shop" href="{$link->getBaseLink($shop_data['id_shop'])}" target="_blank">
<i class="material-icons">&#xE8F4;</i>
</a>
{/if}
</li>
{/if}
{/foreach}
{/if}
{if !(!isset($multishop_context) || $is_group_context)}
</ul>
{/if}
{/foreach}
</ul>
{/strip}

View File

@@ -0,0 +1,168 @@
{**
* For the full copyright and license information, please view the
* docs/licenses/LICENSE.txt file that was distributed with this source code.
*}
<!DOCTYPE html>
<html lang="{$iso}">
<head>
{$header}
</head>
<body
class="lang-{$iso_user}{if $lang_is_rtl} lang-rtl{/if} {$controller_name|escape|strtolower}{if $collapse_menu} page-sidebar-closed{/if}{if isset($is_multishop) && $is_multishop} multishop-enabled{/if}{if isset($lite_display) && $lite_display} light_display_layout{/if}{if !empty($debug_mode)} developer-mode{/if}"
{if isset($js_router_metadata.base_url)}data-base-url="{$js_router_metadata.base_url}"{/if}
{if isset($js_router_metadata.token)}data-token="{$js_router_metadata.token}"{/if}
>
{if $display_header}
<header id="header" class="d-print-none">
<nav id="header_infos" class="main-header">
<button class="btn btn-primary-reverse onclick btn-lg unbind ajax-spinner"></button>
{* Logo *}
<i class="material-icons js-mobile-menu">menu</i>
<a id="header_logo" class="logo float-left" href="{$default_tab_link|escape:'html':'UTF-8'}"></a>
<span id="shop_version">{$ps_version}</span>
<div class="component" id="quick-access-container">
{include file="components/layout/quick_access.tpl"}
</div>
<div class="component component-search" id="header-search-container">
<div class="component-search-body">
<div class="component-search-top">
{include file="components/layout/search_form.tpl"}
<button class="component-search-cancel d-none">{l|escape s='Cancel' d='Admin.Actions'}</button>
</div>
{include file="components/layout/mobile_quickaccess.tpl"}
</div>
<div class="component-search-background d-none"></div>
</div>
{if isset($debug_mode) && $debug_mode == true}
<div class="component hide-mobile-sm" id="header-debug-mode-container">
<a class="link shop-state"
id="debug-mode"
data-toggle="pstooltip"
data-placement="bottom"
data-html="true"
title="<p class=&quot;text-left&quot;><strong>{l|escape s='Your store is in debug mode.' d='Admin.Navigation.Notification'}</strong></p><p class=&quot;text-left&quot;>{l|escape s='All the PHP errors and messages are displayed. When you no longer need it, [1]turn off[/1] this mode.' html=true sprintf=['[1]' => '<strong>', '[/1]' => '</strong>'] d='Admin.Navigation.Notification'}</p>"
href="{$link->getAdminLink('AdminPerformance')|escape:'html':'UTF-8'}"
>
<i class="material-icons">bug_report</i>
<span>{l|escape s='Debug mode' d='Admin.Navigation.Header'}</span>
</a>
</div>
{/if}
{if isset($maintenance_mode) && $maintenance_mode == true}
{capture name="title"}
<p class="text-left">
<strong>{l s='Your store is in maintenance mode.' d='Admin.Navigation.Notification'}</strong>
</p>
<p class="text-left">
{l s='Your visitors and customers cannot access your store while in maintenance mode.' d='Admin.Navigation.Notification'}
</p>
<p class="text-left">
{l s='To manage the maintenance settings, go to Shop Parameters > General > Maintenance tab.' d='Admin.Navigation.Notification'}
</p>
{if isset($maintenance_allow_admins) && $maintenance_allow_admins}
<p class="text-left">
{l s='Admins can access the store front office without storing their IP.' d='Admin.Navigation.Notification'}
</p>
{/if}
{/capture}
<div class="component hide-mobile-sm" id="header-maintenance-mode-container">
<a class="link shop-state"
id="maintenance-mode"
data-toggle="pstooltip"
data-placement="bottom"
data-html="true"
title="{$smarty.capture.title|htmlspecialchars}"
href="{$link->getAdminLink('AdminMaintenance')|escape:'html':'UTF-8'}"
>
<i class="material-icons">build</i>
<span>{l|escape s='Maintenance mode' d='Admin.Navigation.Header'}</span>
</a>
</div>
{/if}
<div class="header-right">
{if !isset($hideLegacyStoreContextSelector) || !$hideLegacyStoreContextSelector}
<div class="component" id="header-shop-list-container">
{include file="components/layout/shop_list.tpl"}
</div>
{/if}
{if $show_new_orders || $show_new_customers || $show_new_messages}
<div class="component header-right-component" id="header-notifications-container">
{include file="components/layout/notifications_center.tpl"}
</div>
{/if}
<div class="component" id="header-employee-container">
{include file="components/layout/employee_dropdown.tpl"}
</div>
{if isset($displayBackOfficeTop)}{$displayBackOfficeTop}{/if}
</div>
</nav>
</header>
{/if}
{if $display_header}
{include file='components/layout/nav_bar.tpl'}
{/if}
{if isset($page_header_toolbar)}
{$page_header_toolbar}
{/if}
<div id="main-div">
{if $install_dir_exists}
<div class="alert alert-warning">
{l|escape s='For security reasons, you must also delete the /install folder.' d='Admin.Login.Notification'}
</div>
{else}
{if isset($modal_module_list)}{$modal_module_list}{/if}
<div class="{if $display_header}content-div{/if} {if !isset($page_header_toolbar)}-notoolbar{/if} {if $current_tab_level == 3}with-tabs{/if}">
{hook h='displayAdminAfterHeader'}
{if $display_header}
{include file='components/layout/error_messages.tpl'}
{include file='components/layout/information_messages.tpl'}
{include file='components/layout/confirmation_messages.tpl'}
{include file='components/layout/warning_messages.tpl'}
{/if}
{$page}
{hook h='displayAdminEndContent'}
</div>
{/if}
</div>
{if (!isset($lite_display) || (isset($lite_display) && !$lite_display))}
<div class="mobile-layer"></div>
{if $display_footer}
{include file='footer.tpl'}
{/if}
{/if}
{if isset($php_errors)}
{include file="error.tpl"}
{/if}
{if (!isset($lite_display) || (isset($lite_display) && !$lite_display))}
{if isset($modals)}
<div class="bootstrap">
{$modals}
</div>
{/if}
{/if}
</body>
</html>

View File

@@ -0,0 +1,46 @@
{**
* For the full copyright and license information, please view the
* docs/licenses/LICENSE.txt file that was distributed with this source code.
*}
<!DOCTYPE html>
<html lang="{$iso}">
<head>
{$header}
<link href="{$baseAdminUrl}themes/new-theme/public/light_theme.css" rel="stylesheet" type="text/css">
</head>
<body
class="lang-{$iso_user}{if $lang_is_rtl} lang-rtl{/if} {$controller_name|escape|strtolower}{if $collapse_menu} page-sidebar-closed{/if}{if !empty($debug_mode)} developer-mode{/if}"
{if isset($js_router_metadata.base_url)}data-base-url="{$js_router_metadata.base_url}"{/if}
{if isset($js_router_metadata.token)}data-token="{$js_router_metadata.token}"{/if}
>
<div id="main-div" class="light_display_layout">
{if $install_dir_exists}
<div class="alert alert-warning">
{l|escape s='For security reasons, you must also delete the /install folder.' d='Admin.Login.Notification'}
</div>
{else}
{if isset($modal_module_list)}{$modal_module_list}{/if}
<div class="-notoolbar">
{hook h='displayAdminAfterHeader'}
{if $display_header}
{include file='components/layout/error_messages.tpl'}
{include file='components/layout/information_messages.tpl'}
{include file='components/layout/confirmation_messages.tpl'}
{include file='components/layout/warning_messages.tpl'}
{/if}
{$page}
{hook h='displayAdminEndContent'}
</div>
{/if}
</div>
{if isset($php_errors)}
{include file="error.tpl"}
{/if}
</body>
</html>

View File

@@ -0,0 +1,35 @@
{**
* For the full copyright and license information, please view the
* docs/licenses/LICENSE.txt file that was distributed with this source code.
*}
<div class="modal fade" id="{$modal_id}" tabindex="-1">
<div class="modal-dialog {if isset($modal_class)}{$modal_class}{/if}">
<div class="modal-content">
{if isset($modal_title)}
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">&times;</button>
<h4 class="modal-title">{$modal_title}</h4>
</div>
{/if}
{$modal_content}
{if isset($modal_actions)}
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">
{if isset($modal_cancel_label)}{$modal_cancel_label}{else}{l s='Close' d='Admin.Actions'}{/if}
</button>
{foreach $modal_actions as $action}
{if $action.type == 'link'}
<a href="{$action.href}" class="btn {$action.class}">{$action.label}</a>
{elseif $action.type == 'button'}
<button type="button" value="{$action.value}" class="btn {$action.class}">
{$action.label}
</button>
{/if}
{/foreach}
</div>
{/if}
</div>
</div>
</div>

View File

@@ -0,0 +1,192 @@
{**
* For the full copyright and license information, please view the
* docs/licenses/LICENSE.txt file that was distributed with this source code.
*}
{* TODO: 1.7.0.0: RENAME THIS FILE AT THE NEXT RETROCOMPATIBILITY BREAK *}
<div class="header-toolbar d-print-none">
{$multistore_header}
<div class="container-fluid">
{block name=pageBreadcrumb}
<nav aria-label="Breadcrumb">
<ol class="breadcrumb">
{if $breadcrumbs2.container.name != ''}
<li class="breadcrumb-item">{$breadcrumbs2.container.name|escape}</li>
{/if}
{if $breadcrumbs2.tab.name != '' && $breadcrumbs2.container.name != $breadcrumbs2.tab.name && $breadcrumbs2.tab.href != ''}
<li class="breadcrumb-item active">
<a href="{$breadcrumbs2.tab.href|escape}" aria-current="page">{$breadcrumbs2.tab.name|escape}</a>
</li>
{/if}
</ol>
</nav>
{/block}
{$persistent_help_btn= isset($help_link) and $help_link != false and empty($toolbar_btn)}
<div class="title-row {if $persistent_help_btn}flex-nowrap flex-md-wrap{/if}">
{block name=pageTitle}
<h1 class="title">
{if is_array($title)}{$title|end|escape}{else}{$title|escape}{/if}
</h1>
{/block}
{block name=toolbarBox}
<div class="toolbar-icons{if $persistent_help_btn} toolbar-icons--persistent{/if}">
<div class="wrapper">
{hook h='displayDashboardToolbarTopMenu'}
{foreach from=$toolbar_btn item=btn key=k}
{if $k != 'back' && $k != 'modules-list'}
{* TODO: REFACTOR ALL THIS THINGS *}
<a
class="btn {if isset($btn.class) && $btn.class}{$btn.class|escape}{else}btn-primary{/if}{if isset($btn.target) && $btn.target} _blank{/if}{if isset($btn.disabled) && $btn.disabled} disabled auto-pointer-events{/if} pointer"{if isset($btn.href)}
id="page-header-desc-{$table}-{if isset($btn.imgclass)}{$btn.imgclass|escape}{else}{$k}{/if}"
href="{$btn.href|escape}"{/if}
title="{if isset($btn.help)}{$btn.help}{else}{$btn.desc|escape}{/if}"{if isset($btn.js) && $btn.js}
onclick="{$btn.js}"{/if}{if isset($btn.modal_target) && $btn.modal_target}
data-target="{$btn.modal_target}"
data-toggle="modal"{/if}{if isset($btn.help)}
data-toggle="pstooltip"
data-placement="bottom"{/if}
{if isset($btn.data_attributes) && $btn.data_attributes}{foreach from=$btn.data_attributes item=attribute_value key=attribute_name}data-{$attribute_name}="{$attribute_value}"{/foreach}{/if}
>
{if !empty($btn.icon)}<i class="material-icons">{$btn.icon}</i>{/if}
{$btn.desc|escape}
</a>
{/if}
{/foreach}
{if isset($toolbar_btn['modules-list'])}
{* TODO: REFACTOR ALL THIS THINGS *}
<a
class="btn btn-outline-secondary {if isset($toolbar_btn['modules-list'].target) && $toolbar_btn['modules-list'].target} _blank{/if}"
id="page-header-desc-{$table}-{if isset($toolbar_btn['modules-list'].imgclass)}{$toolbar_btn['modules-list'].imgclass}{else}modules-list{/if}"
{if isset($toolbar_btn['modules-list'].href)}href="{$toolbar_btn['modules-list'].href}"{/if}
title="{$toolbar_btn['modules-list'].desc}"
{if isset($toolbar_btn['modules-list'].js) && $toolbar_btn['modules-list'].js}onclick="{$toolbar_btn['modules-list'].js}"{/if}
>
{$toolbar_btn['modules-list'].desc}
</a>
{/if}
{if isset($help_link) and $help_link != false}
{if $enableSidebar}
<a class="toolbar-button btn-sidebar d-inline-block d-md-none" href="#"
title="{l s='Help' d='Admin.Global'}"
data-toggle="sidebar"
data-target="#right-sidebar"
data-url="{$help_link|escape}"
id="product_form_open_help_mobile"
>
<i class="material-icons">help_outline</i>
</a>
<a class="btn btn-outline-secondary btn-help btn-sidebar d-none d-md-inline-block" href="#"
title="{l s='Help' d='Admin.Global'}"
data-toggle="sidebar"
data-target="#right-sidebar"
data-url="{$help_link|escape}"
id="product_form_open_help"
>
{l s='Help' d='Admin.Global'}
</a>
{else}
<a class="toolbar-button d-inline-block d-md-none" href="{$help_link|escape}" title="{l s='Help' d='Admin.Global'}">
<i class="material-icons">help_outline</i>
</a>
<a class="btn btn-outline-secondary btn-help d-none d-md-inline-block" href="{$help_link|escape}" title="{l s='Help' d='Admin.Global'}">
{l s='Help' d='Admin.Global'}
</a>
{/if}
{/if}
</div>
</div>
{/block}
</div>
</div>
{if isset($headerTabContent) and $headerTabContent}
<div class="page-head-tabs" id="head_tabs">
{foreach $headerTabContent as $tabContent}
{{$tabContent}}
{/foreach}
</div>
{/if}
{if $current_tab_level == 3}
<div class="page-head-tabs" id="head_tabs">
<ul class="nav nav-pills">
{foreach $tabs as $level_1}
{foreach $level_1.sub_tabs as $level_2}
{foreach $level_2.sub_tabs as $level_3}
{if $level_3.current}
{foreach $level_3.sub_tabs as $level_4}
{if $level_4.active}
<li class="nav-item">
<a href="{$level_4.href}" id="subtab-{$level_4.class_name}" class="nav-link tab {if $level_4.current}active current{/if}" data-submenu="{$level_4.id_tab}">
{$level_4.name}
<span class="notification-container">
<span class="notification-counter"></span>
</span>
</a>
</li>
{/if}
{/foreach}
{/if}
{/foreach}
{/foreach}
{/foreach}
</ul>
</div>
{/if}
{if not empty($toolbar_btn)}
<div class="btn-floating">
<button class="btn btn-primary collapsed" data-toggle="collapse" data-target=".btn-floating-container" aria-expanded="false">
<i class="material-icons">add</i>
</button>
<div class="btn-floating-container collapse">
<div class="btn-floating-menu">
{hook h='displayDashboardToolbarTopMenu'}
{foreach from=$toolbar_btn item=btn key=k}
{if $k != 'back' && $k != 'modules-list'}
<a
class="btn btn-floating-item {if isset($btn.floating_class) && $btn.floating_class}{$btn.floating_class|escape}{/if} {if isset($btn.target) && $btn.target} _blank{/if} pointer"{if isset($btn.href)}
id="page-header-desc-floating-{$table}-{if isset($btn.imgclass)}{$btn.imgclass|escape}{else}{$k}{/if}"
href="{$btn.href|escape}"{/if}
title="{if isset($btn.help)}{$btn.help}{else}{$btn.desc|escape}{/if}"{if isset($btn.js) && $btn.js}
onclick="{$btn.js}"{/if}{if isset($btn.modal_target) && $btn.modal_target}
data-target="{$btn.modal_target}"
data-toggle="modal"{/if}{if isset($btn.help)}
data-toggle="pstooltip"
data-placement="bottom"{/if}
>
{$btn.desc|escape}
{if !empty($btn.icon)}<i class="material-icons">{$btn.icon}</i>{/if}
</a>
{/if}
{/foreach}
{if isset($help_link) and $help_link != false}
{if $enableSidebar}
<a class="btn btn-floating-item btn-help btn-sidebar" href="#"
title="{l s='Help' d='Admin.Global'}"
data-toggle="sidebar"
data-target="#right-sidebar"
data-url="{$help_link|escape}"
>
{l s='Help' d='Admin.Global'}
</a>
{else}
<a class="btn btn-floating-item btn-help" href="{$help_link|escape}" title="{l s='Help' d='Admin.Global'}">
{l s='Help' d='Admin.Global'}
</a>
{/if}
{/if}
</div>
</div>
</div>
{/if}
{hook h='displayDashboardTop'}
</div>