add empik module

This commit is contained in:
2025-05-30 09:08:26 +02:00
parent 87a41f4cfc
commit 56aa2cdc2d
1466 changed files with 138249 additions and 146 deletions

View File

@@ -0,0 +1,35 @@
<?php
/*
* 2007-2015 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (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:
* http://opensource.org/licenses/afl-3.0.php
* 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-2015 PrestaShop SA
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header("Location: ../");
exit;

View File

@@ -0,0 +1,158 @@
{#**
* 2007-2018 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 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/OSL-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-2018 PrestaShop SA
* @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*#}
<tbody
{% if activate_drag_and_drop %}class="sortable"{% endif %}
last_sql="{{ last_sql_query|escape('html_attr') }}"
>
{% for product in products %}
{% block product_catalog_form_table_row %}
<tr data-uniturl="{{ product.unit_action_url|default('#') }}" data-product-id="{{ product.id_product }}">
<td class="checkbox-column form-group">
<div class="md-checkbox md-checkbox-inline">
<label>
<input type="checkbox" id="bulk_action_selected_products-{{ product.id_product }}" name="bulk_action_selected_products[]" value="{{ product.id_product }}">
<i class="md-checkbox-control"></i>
</label>
</div>
</td>
<td>
<label class="form-check-label" for="bulk_action_selected_products-{{ product.id_product }}">
{{ product.id_product }}
</label>
</td>
<td>
<a href="{{ product.url|default('') }}#tab-step1">{{ product.image|raw }}</a>
</td>
<td>
<a href="{{ product.url|default('') }}#tab-step1">{{ product.name|default('N/A'|trans({}, 'Admin.Global')) }}</a>
</td>
<td>
{{ product.reference|default('') }}
</td>
<td>
{{ product.name_category|default('') }}
</td>
<td class="text-center">
<a href="{{ product.url|default('') }}#tab-step2">{{ product.price|default('N/A'|trans({}, 'Admin.Global')) }}</a>
</td>
<td class="text-center">
<a href="{{ product.url|default('') }}#tab-step2">{{ product.price_final|default('N/A'|trans({}, 'Admin.Global')) }}</a>
</td>
{% if 'PS_STOCK_MANAGEMENT'|configuration %}
<td class="product-sav-quantity text-center" data-product-quantity-value="{{ product.sav_quantity|default('') }}">
<a href="{{ product.url|default('') }}#tab-step3">
{% if product.sav_quantity is defined and product.sav_quantity > 0 %}
{{ product.sav_quantity }}
{% else %}
{{ product.sav_quantity|default('N/A'|trans({}, 'Admin.Global')) }}
{% endif %}
</a>
</td>
{% else %}
<td></td>
{% endif %}
<td class="text-center">
{% if product.active|default(0) == 0 %}
<a href="#" onclick="unitProductAction(this, 'activate'); return false;">
<i class="material-icons action-disabled">clear</i>
</a>
{% else %}
<a href="#" onclick="unitProductAction(this, 'deactivate'); return false;">
<i class="material-icons action-enabled ">check</i>
</a>
{% endif %}
</td>
{{renderhook ('displayAdminCatalogTwigListingProductFields', {'product': product})}}
{% if product.position is defined %}
<td {% if activate_drag_and_drop %}class="placeholder"{% endif %} style="cursor: pointer; cursor: hand;">
{% if activate_drag_and_drop %}
<big><big>⇅</big></big>
{% endif %}
<span class="position">{{ product.position }}</span>
<input type="hidden" name="mass_edit_action_sorted_products[]" value="{{ product.id_product }}" />
<input type="hidden" name="mass_edit_action_sorted_positions[]" value="{{ product.position }}" />
</td>
{% endif %}
<td class="text-right">
<div class="btn-group-action">
{% set buttons_action = [
{
"href": product.preview_url|default('#'),
"target": "_blank",
"icon": "remove_red_eye",
"label": "Preview"|trans({}, 'Admin.Actions')
}
] %}
{% set buttons_action = buttons_action|merge([
{
"onclick": "unitProductAction(this, 'duplicate');",
"icon": "content_copy",
"label": "Duplicate"|trans({}, 'Admin.Actions')
}
]) %}
{% set buttons_action = buttons_action|merge([
{
"onclick": "unitProductAction(this, 'delete');",
"icon": "delete",
"label": "Delete"|trans({}, 'Admin.Actions')
}
]) %}
{% include '@Product/CatalogPage/Forms/form_edit_dropdown.html.twig' with {
'button_id': "product_list_id_" ~ product.id_product ~ "_menu",
'default_item': {
"href": product.url|default('#'),
"icon": "mode_edit"
},
'right': true,
'items': buttons_action
} %}
</div>
</td>
</tr>
{% endblock %}
{% else %}
<tr><td colspan="11">
{{ "There is no result for this search. Update your filters to view other products."|trans({}, 'Admin.Catalog.Notification') }}
</td></tr>
{% endfor %}

View File

@@ -0,0 +1,155 @@
{#**
* 2007-2018 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 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/OSL-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-2018 PrestaShop SA
* @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*#}
<tbody
{% if activate_drag_and_drop %}class="sortable"{% endif %}
last_sql="{{ last_sql_query|escape('html_attr') }}"
>
{% for product in products %}
{% block product_catalog_form_table_row %}
<tr data-uniturl="{{ product.unit_action_url|default('#') }}" data-product-id="{{ product.id_product }}">
<td class="checkbox-column form-group">
<div class="md-checkbox md-checkbox-inline">
<label>
<input type="checkbox" id="bulk_action_selected_products-{{ product.id_product }}" name="bulk_action_selected_products[]" value="{{ product.id_product }}">
<i class="md-checkbox-control"></i>
</label>
</div>
</td>
<td>
<label class="form-check-label" for="bulk_action_selected_products-{{ product.id_product }}">
{{ product.id_product }}
</label>
</td>
<td>
<a href="{{ product.url|default('') }}#tab-step1">{{ product.image|raw }}</a>
</td>
<td>
<a href="{{ product.url|default('') }}#tab-step1">{{ product.name|default('N/A'|trans({}, 'Admin.Global')) }}</a>
</td>
<td>
{{ product.reference|default('') }}
</td>
<td>
{{ product.name_category|default('') }}
</td>
<td class="text-center">
<a href="{{ product.url|default('') }}#tab-step2">{{ product.price|default('N/A'|trans({}, 'Admin.Global')) }}</a>
</td>
{% if 'PS_STOCK_MANAGEMENT'|configuration %}
<td class="product-sav-quantity text-center" data-product-quantity-value="{{ product.sav_quantity|default('') }}">
<a href="{{ product.url|default('') }}#tab-step3">
{% if product.sav_quantity is defined and product.sav_quantity > 0 %}
{{ product.sav_quantity }}
{% else %}
{{ product.sav_quantity|default('N/A'|trans({}, 'Admin.Global')) }}
{% endif %}
</a>
</td>
{% else %}
<td></td>
{% endif %}
<td class="text-center">
{% if product.active|default(0) == 0 %}
<a href="#" onclick="unitProductAction(this, 'activate'); return false;">
<i class="material-icons action-disabled">clear</i>
</a>
{% else %}
<a href="#" onclick="unitProductAction(this, 'deactivate'); return false;">
<i class="material-icons action-enabled ">check</i>
</a>
{% endif %}
</td>
{{renderhook ('displayAdminCatalogTwigListingProductFields', {'product': product})}}
{% if product.position is defined %}
<td {% if activate_drag_and_drop %}class="placeholder"{% endif %} style="cursor: pointer; cursor: hand;">
{% if activate_drag_and_drop %}
<big><big>⇅</big></big>
{% endif %}
<span class="position">{{ product.position }}</span>
<input type="hidden" name="mass_edit_action_sorted_products[]" value="{{ product.id_product }}" />
<input type="hidden" name="mass_edit_action_sorted_positions[]" value="{{ product.position }}" />
</td>
{% endif %}
<td class="text-right">
<div class="btn-group-action">
{% set buttons_action = [
{
"href": product.preview_url|default('#'),
"target": "_blank",
"icon": "remove_red_eye",
"label": "Preview"|trans({}, 'Admin.Actions')
}
] %}
{% set buttons_action = buttons_action|merge([
{
"onclick": "unitProductAction(this, 'duplicate');",
"icon": "content_copy",
"label": "Duplicate"|trans({}, 'Admin.Actions')
}
]) %}
{% set buttons_action = buttons_action|merge([
{
"onclick": "unitProductAction(this, 'delete');",
"icon": "delete",
"label": "Delete"|trans({}, 'Admin.Actions')
}
]) %}
{% include '@Product/CatalogPage/Forms/form_edit_dropdown.html.twig' with {
'button_id': "product_list_id_" ~ product.id_product ~ "_menu",
'default_item': {
"href": product.url|default('#'),
"icon": "mode_edit"
},
'right': true,
'items': buttons_action
} %}
</div>
</td>
</tr>
{% endblock %}
{% else %}
<tr><td colspan="11">
{{ "There is no result for this search. Update your filters to view other products."|trans({}, 'Admin.Catalog.Notification') }}
</td></tr>
{% endfor %}

View File

@@ -0,0 +1,232 @@
{#**
* 2007-2018 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 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/OSL-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-2018 PrestaShop SA
* @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*#}
{% import '@PrestaShop/Admin/macros.html.twig' as ps %}
<div class="table-responsive">
<table
class="table product mt-3"
redirecturl="{{ path('admin_product_catalog', {
'limit': limit,
'offset': offset,
'orderBy': orderBy,
'sortOrder': sortOrder
})
}}"
>
<thead class="with-filters">
{% block product_catalog_form_table_header %}
<tr class="column-headers">
<th scope="col" style="width: 2rem"></th>
<th scope="col" style="width: 5rem">
{{ ps.sortable_column_header("ID"|trans({}, 'Admin.Global'), 'id_product', orderBy, sortOrder) }}
</th>
<th scope="col">
{{ "Image"|trans({}, 'Admin.Global') }}
</th>
<th scope="col">
{{ ps.sortable_column_header("Name"|trans({}, 'Admin.Global'), 'name', orderBy, sortOrder) }}
</th>
<th scope="col" style="width: 9%">
{{ ps.sortable_column_header("Reference"|trans({}, 'Admin.Global'), 'reference', orderBy, sortOrder) }}
</th>
<th scope="col">
{{ ps.sortable_column_header("Category"|trans({}, 'Admin.Catalog.Feature'), 'name_category', orderBy, sortOrder) }}
</th>
<th scope="col" class="text-center" style="width: 9%">
{{ ps.sortable_column_header("Price (tax excl.)"|trans({}, 'Admin.Catalog.Feature'), 'price', orderBy, sortOrder) }}
</th>
<th scope="col" class="text-center" style="width: 9%">
{{ "Price (tax incl.)"|trans({}, 'Admin.Catalog.Feature') }}
</th>
{% if 'PS_STOCK_MANAGEMENT'|configuration %}
<th scope="col" class="text-center" style="width: 9%">
{{ ps.sortable_column_header("Quantity"|trans({}, 'Admin.Catalog.Feature'), 'sav_quantity', orderBy, sortOrder) }}
</th>
{% else %}
<th></th>
{% endif %}
<th scope="col" class="text-center">
{{ ps.sortable_column_header("Status"|trans({}, 'Admin.Global'), 'active', orderBy, sortOrder) }}
</th>
{{renderhook ('displayAdminCatalogTwigProductHeader')}}
{% if has_category_filter == true %}
<th scope="col">
{{ ps.sortable_column_header("Position"|trans({}, 'Admin.Global'), 'position', orderBy, sortOrder) }}
</th>
{% endif %}
<th scope="col" class="text-right" style="width: 3rem; padding-right: 2rem">
{{ "Actions"|trans({}, 'Admin.Global') }}
</th>
</tr>
{% endblock %}
{% block product_catalog_form_table_filters %}
{% set filters_disabled = activate_drag_and_drop %}
<tr class="column-filters">
<th colspan="2">
{% include '@PrestaShop/Admin/Helpers/range_inputs.html.twig' with {
'input_name': "filter_column_id_product",
'min': '0',
'max': '1000000',
'minLabel': "Min"|trans({}, 'Admin.Global'),
'maxLabel': "Max"|trans({}, 'Admin.Global'),
'value': filter_column_id_product,
'disabled': filters_disabled,
} %}
</th>
<th>&nbsp;</th>
<th>
<input
type="text"
class="form-control"
placeholder="{{ "Search name"|trans({}, 'Admin.Catalog.Help') }}"
name="filter_column_name"
value="{{ filter_column_name }}"
{% if filters_disabled %}disabled{% endif %}
/>
</th>
<th>
<input
type="text"
class="form-control"
placeholder="{{ "Search ref."|trans({}, 'Admin.Catalog.Help') }}"
name="filter_column_reference"
value="{{ filter_column_reference }}"
{% if filters_disabled %}disabled{% endif %}
/>
</th>
<th>
<input
type="text"
class="form-control"
placeholder="{{ "Search category"|trans({}, 'Admin.Catalog.Help') }}"
name="filter_column_name_category"
value="{{ filter_column_name_category }}"
{% if filters_disabled %}disabled{% endif %}
/>
</th>
<th class="text-center">
{% include '@PrestaShop/Admin/Helpers/range_inputs.html.twig' with {
'input_name': "filter_column_price",
'min': '0',
'max': '1000000',
'minLabel': "Min"|trans({}, 'Admin.Global'),
'maxLabel': "Max"|trans({}, 'Admin.Global'),
'value': filter_column_price,
'disabled': filters_disabled,
} %}
</th>
<th class="text-center"></th>
{% if 'PS_STOCK_MANAGEMENT'|configuration %}
<th class="text-center">
{% include '@PrestaShop/Admin/Helpers/range_inputs.html.twig' with {
'input_name': "filter_column_sav_quantity",
'min': '-1000000',
'max': '1000000',
'minLabel': "Min"|trans({}, 'Admin.Global'),
'maxLabel': "Max"|trans({}, 'Admin.Global'),
'value': filter_column_sav_quantity,
'disabled': filters_disabled,
} %}
</th>
{% else %}
<th></th>
{% endif %}
<th id="product_filter_column_active" class="text-center">
<div class="form-select">
<select class="custom-select" name="filter_column_active" {% if filters_disabled %}disabled{% endif %}>
<option value=""></option>
<option value="1" {% if (filter_column_active is defined) and filter_column_active == '1' %}selected="selected"{% endif %}>Active</option>
<option value="0" {% if (filter_column_active is defined) and filter_column_active == '0' %}selected="selected"{% endif %}>Inactive</option>
</select>
</div>
</th>
{{renderhook ('displayAdminCatalogTwigProductFilter')}}
{% if has_category_filter == true %}
<th>
{% if not(activate_drag_and_drop) %}
<input type="button" class="btn btn-outline-secondary" name="products_filter_position_asc" value="{{ "Reorder"|trans({}, 'Admin.Actions') }}" onclick="productOrderPrioritiesTable();" />
{% else %}
<input type="button" id="bulk_edition_save_keep" class="btn" onclick="bulkProductAction(this, 'edition');" value="{{ "Save & refresh"|trans({}, 'Admin.Actions')|raw }}" />
{% endif %}
</th>
{% endif %}
<th class="text-right" style="width: 5rem">
<button
type="submit"
class="btn btn-primary"
name="products_filter_submit"
title="{{ "Search"|trans({}, 'Admin.Actions') }}"
>
<i class="material-icons">search</i>
{{ "Search"|trans({}, 'Admin.Actions') }}
</button>
<button
type="reset"
class="btn btn-link"
name="products_filter_reset"
onclick="productColumnFilterReset($(this).closest('tr.column-filters'))"
title="{{ "Reset"|trans({}, 'Admin.Actions') }}"
>
<i class="material-icons">clear</i>
{{ "Reset"|trans({}, 'Admin.Actions') }}
</button>
</th>
</tr>
{% endblock %}
</thead>
{% block product_catalog_form_table_items %}
{{ render(controller('PrestaShopBundle\\Controller\\Admin\\ProductController::listAction', {
'limit': limit,
'offset': offset,
'orderBy': orderBy,
'sortOrder': sortOrder,
'products': products,
'last_sql': last_sql
})) }}
{% endblock %}
</table>
</div>

View File

@@ -0,0 +1,229 @@
{#**
* 2007-2018 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 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/OSL-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-2018 PrestaShop SA
* @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*#}
{% import '@PrestaShop/Admin/macros.html.twig' as ps %}
<div class="table-responsive">
<table
class="table product mt-3"
redirecturl="{{ path('admin_product_catalog', {
'limit': limit,
'offset': offset,
'orderBy': orderBy,
'sortOrder': sortOrder
})
}}"
>
<thead class="with-filters">
{% block product_catalog_form_table_header %}
<tr class="column-headers">
<th scope="col" style="width: 2rem"></th>
<th scope="col" style="width: 5rem">
{{ ps.sortable_column_header("ID"|trans({}, 'Admin.Global'), 'id_product', orderBy, sortOrder) }}
</th>
<th scope="col">
{{ "Image"|trans({}, 'Admin.Global') }}
</th>
<th scope="col">
{{ ps.sortable_column_header("Name"|trans({}, 'Admin.Global'), 'name', orderBy, sortOrder) }}
</th>
<th scope="col" style="width: 9%">
{{ ps.sortable_column_header("Reference"|trans({}, 'Admin.Global'), 'reference', orderBy, sortOrder) }}
</th>
<th scope="col">
{{ ps.sortable_column_header("Category"|trans({}, 'Admin.Catalog.Feature'), 'name_category', orderBy, sortOrder) }}
</th>
<th scope="col" class="text-center" style="width: 9%">
{{ ps.sortable_column_header("Price (tax excl.)"|trans({}, 'Admin.Catalog.Feature'), 'price', orderBy, sortOrder) }}
</th>
{% if 'PS_STOCK_MANAGEMENT'|configuration %}
<th scope="col" class="text-center" style="width: 9%">
{{ ps.sortable_column_header("Quantity"|trans({}, 'Admin.Catalog.Feature'), 'sav_quantity', orderBy, sortOrder) }}
</th>
{% else %}
<th></th>
{% endif %}
<th scope="col" class="text-center">
{{ ps.sortable_column_header("Status"|trans({}, 'Admin.Global'), 'active', orderBy, sortOrder) }}
</th>
{{renderhook ('displayAdminCatalogTwigProductHeader')}}
{% if has_category_filter == true %}
<th scope="col">
{{ ps.sortable_column_header("Position"|trans({}, 'Admin.Global'), 'position', orderBy, sortOrder) }}
</th>
{% endif %}
<th scope="col" class="text-right" style="width: 3rem; padding-right: 2rem">
{{ "Actions"|trans({}, 'Admin.Global') }}
</th>
</tr>
{% endblock %}
{% block product_catalog_form_table_filters %}
{% set filters_disabled = activate_drag_and_drop %}
<tr class="column-filters">
<th colspan="2">
{% include '@PrestaShop/Admin/Helpers/range_inputs.html.twig' with {
'input_name': "filter_column_id_product",
'min': '0',
'max': '1000000',
'minLabel': "Min"|trans({}, 'Admin.Global'),
'maxLabel': "Max"|trans({}, 'Admin.Global'),
'value': filter_column_id_product,
'disabled': filters_disabled,
} %}
</th>
<th>&nbsp;</th>
<th>
<input
type="text"
class="form-control"
placeholder="{{ "Search name"|trans({}, 'Admin.Catalog.Help') }}"
name="filter_column_name"
value="{{ filter_column_name }}"
{% if filters_disabled %}disabled{% endif %}
/>
</th>
<th>
<input
type="text"
class="form-control"
placeholder="{{ "Search ref."|trans({}, 'Admin.Catalog.Help') }}"
name="filter_column_reference"
value="{{ filter_column_reference }}"
{% if filters_disabled %}disabled{% endif %}
/>
</th>
<th>
<input
type="text"
class="form-control"
placeholder="{{ "Search category"|trans({}, 'Admin.Catalog.Help') }}"
name="filter_column_name_category"
value="{{ filter_column_name_category }}"
{% if filters_disabled %}disabled{% endif %}
/>
</th>
<th class="text-center">
{% include '@PrestaShop/Admin/Helpers/range_inputs.html.twig' with {
'input_name': "filter_column_price",
'min': '0',
'max': '1000000',
'minLabel': "Min"|trans({}, 'Admin.Global'),
'maxLabel': "Max"|trans({}, 'Admin.Global'),
'value': filter_column_price,
'disabled': filters_disabled,
} %}
</th>
{% if 'PS_STOCK_MANAGEMENT'|configuration %}
<th class="text-center">
{% include '@PrestaShop/Admin/Helpers/range_inputs.html.twig' with {
'input_name': "filter_column_sav_quantity",
'min': '-1000000',
'max': '1000000',
'minLabel': "Min"|trans({}, 'Admin.Global'),
'maxLabel': "Max"|trans({}, 'Admin.Global'),
'value': filter_column_sav_quantity,
'disabled': filters_disabled,
} %}
</th>
{% else %}
<th></th>
{% endif %}
<th id="product_filter_column_active" class="text-center">
<div class="form-select">
<select class="custom-select" name="filter_column_active" {% if filters_disabled %}disabled{% endif %}>
<option value=""></option>
<option value="1" {% if (filter_column_active is defined) and filter_column_active == '1' %}selected="selected"{% endif %}>Active</option>
<option value="0" {% if (filter_column_active is defined) and filter_column_active == '0' %}selected="selected"{% endif %}>Inactive</option>
</select>
</div>
</th>
{{renderhook ('displayAdminCatalogTwigProductFilter')}}
{% if has_category_filter == true %}
<th>
{% if not(activate_drag_and_drop) %}
<input type="button" class="btn btn-outline-secondary" name="products_filter_position_asc" value="{{ "Reorder"|trans({}, 'Admin.Actions') }}" onclick="productOrderPrioritiesTable();" />
{% else %}
<input type="button" id="bulk_edition_save_keep" class="btn" onclick="bulkProductAction(this, 'edition');" value="{{ "Save & refresh"|trans({}, 'Admin.Actions')|raw }}" />
{% endif %}
</th>
{% endif %}
<th class="text-right" style="width: 5rem">
<button
type="submit"
class="btn btn-primary"
name="products_filter_submit"
title="{{ "Search"|trans({}, 'Admin.Actions') }}"
>
<i class="material-icons">search</i>
{{ "Search"|trans({}, 'Admin.Actions') }}
</button>
<button
type="reset"
class="btn btn-link"
name="products_filter_reset"
onclick="productColumnFilterReset($(this).closest('tr.column-filters'))"
title="{{ "Reset"|trans({}, 'Admin.Actions') }}"
>
<i class="material-icons">clear</i>
{{ "Reset"|trans({}, 'Admin.Actions') }}
</button>
</th>
</tr>
{% endblock %}
</thead>
{% block product_catalog_form_table_items %}
{{ render(controller('PrestaShopBundle\\Controller\\Admin\\ProductController::listAction', {
'limit': limit,
'offset': offset,
'orderBy': orderBy,
'sortOrder': sortOrder,
'products': products,
'last_sql': last_sql
})) }}
{% endblock %}
</table>
</div>

View File

@@ -0,0 +1,35 @@
<?php
/*
* 2007-2015 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (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:
* http://opensource.org/licenses/afl-3.0.php
* 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-2015 PrestaShop SA
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header("Location: ../");
exit;

View File

@@ -0,0 +1,35 @@
<?php
/*
* 2007-2015 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (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:
* http://opensource.org/licenses/afl-3.0.php
* 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-2015 PrestaShop SA
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header("Location: ../");
exit;

View File

@@ -0,0 +1,35 @@
<?php
/*
* 2007-2015 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (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:
* http://opensource.org/licenses/afl-3.0.php
* 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-2015 PrestaShop SA
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header("Location: ../");
exit;

View File

@@ -0,0 +1,35 @@
<?php
/*
* 2007-2015 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (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:
* http://opensource.org/licenses/afl-3.0.php
* 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-2015 PrestaShop SA
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header("Location: ../");
exit;

View File

@@ -0,0 +1,3 @@
.icon-AdminEmpik::before {
content: "\f0b1";
}

View File

@@ -0,0 +1,11 @@
<?php
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');
header('Location: ../');
exit;

View File

@@ -0,0 +1 @@

View File

@@ -0,0 +1,11 @@
<?php
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');
header('Location: ../');
exit;

View File

@@ -0,0 +1,11 @@
<?php
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');
header('Location: ../');
exit;

View File

@@ -0,0 +1,126 @@
$(function () {
const empikProductExportButtonSelector = '.js-empik-products-export';
const empikOfferExportButtonSelector = '.js-empik-offers-export';
const empikPriceInputSelector = '.js-empik-price-input';
$(document).on('click', empikProductExportButtonSelector, function (e) {
e.preventDefault();
$(this).attr('disabled', 'disabled');
let page = 0;
ajaxRequest();
function ajaxRequest() {
const formData = new FormData();
formData.append('action', 'exportProducts');
formData.append('page', page);
$.ajax({
method: 'post',
url: empikAjaxUrl,
data: formData,
processData: false,
contentType: false,
dataType: 'json',
success: function (response) {
if (response.success) {
if (response.continue) {
page++;
ajaxRequest();
} else {
window.location = response.redirect;
$(this).removeAttr('disabled');
}
} else {
alert(response.errors[0]);
}
},
});
}
});
$(document).on('click', empikOfferExportButtonSelector, function (e) {
e.preventDefault();
$(this).attr('disabled', 'disabled');
let page = 0;
ajaxRequest();
function ajaxRequest() {
const formData = new FormData();
formData.append('action', 'exportOffers');
formData.append('page', page);
$.ajax({
method: 'post',
url: empikAjaxUrl,
data: formData,
processData: false,
contentType: false,
dataType: 'json',
success: function (response) {
if (response.success) {
if (response.continue) {
page++;
ajaxRequest();
} else {
window.location = response.redirect;
$(this).removeAttr('disabled');
}
} else {
alert(response.errors[0]);
}
},
});
}
});
$(document).on('change', empikPriceInputSelector, function (e) {
const value = $(this).val();
// replace , with .
let formattedValue = value.replace(',', '.');
// remove all non-numeric characters
formattedValue = formattedValue.replace(/[^0-9\.]/g, '');
formattedValue = parseFloat(formattedValue);
// check is value is a number
if (isNaN(formattedValue)) {
formattedValue = 0.00;
}
formattedValue = formattedValue.toFixed(2);
$(this).val(formattedValue);
});
$(document).on('change', empikPriceInputSelector, function (e) {
e.preventDefault();
const formData = new FormData();
formData.append('action', $(this).data('action'));
formData.append('id_product', $(this).data('product-id'));
formData.append('id_product_attribute', $(this).data('product-attribute-id'));
formData.append('price', $(this).val());
$.ajax({
method: 'post',
url: empikAjaxUrl,
data: formData,
processData: false,
contentType: false,
dataType: 'json',
success: (response) => {
if (response.success && typeof response.message !== 'undefined') {
showSuccessMessage(response.message);
}
},
});
});
});

View File

@@ -0,0 +1,11 @@
<?php
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');
header('Location: ../');
exit;

View File

@@ -0,0 +1,122 @@
/******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ }
/******/ };
/******/
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 8|1: behave like require
/******/ __webpack_require__.t = function(value, mode) {
/******/ if(mode & 1) value = __webpack_require__(value);
/******/ if(mode & 8) return value;
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ var ns = Object.create(null);
/******/ __webpack_require__.r(ns);
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ return ns;
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = 0);
/******/ })
/************************************************************************/
/******/ ({
/***/ "./src/css/empik.scss":
/*!**********************************!*\
!*** ./src/css/empik.scss ***!
\**********************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
eval("// extracted by mini-css-extract-plugin\n\n//# sourceURL=webpack:///./src/css/empik.scss?");
/***/ }),
/***/ "./src/js/empik.js":
/*!*******************************!*\
!*** ./src/js/empik.js ***!
\*******************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("\n\n//# sourceURL=webpack:///./src/js/empik.js?");
/***/ }),
/***/ 0:
/*!****************************************************************!*\
!*** multi ./src/js/empik.js ./src/css/empik.scss ***!
\****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
eval("__webpack_require__(/*! ./src/js/empik.js */\"./src/js/empik.js\");\nmodule.exports = __webpack_require__(/*! ./src/css/empik.scss */\"./src/css/empik.scss\");\n\n\n//# sourceURL=webpack:///multi_./src/js/empik.js_./src/css/empik.scss?");
/***/ })
/******/ });

View File

@@ -0,0 +1,11 @@
index.php<?php
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');
header('Location: ../');
exit;

View File

@@ -0,0 +1,4 @@
<a href="{$url_export_offers}" class="btn btn-primary js-empik-offers-export">
<i class="icon-send"></i>&nbsp;
{l s='Export offers' mod='empikmarketplace'}
</a>

View File

@@ -0,0 +1,11 @@
<?php
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');
header('Location: ../');
exit;

View File

@@ -0,0 +1,4 @@
<a href="{$url_manage_price}" class="btn btn-primary">
<i class="icon-dollar"></i>&nbsp;
{l s='Manage dedicated EmpikPlace prices' mod='empikmarketplace'}
</a>

View File

@@ -0,0 +1,39 @@
<table class="table table-striped">
<thead>
<tr>
<th>{l s='Empik Marketplace carrier' mod='empikmarketplace'}</th>
<th>{l s='Shop carrier' mod='empikmarketplace'}</th>
<th>{l s='Carrier type' mod='empikmarketplace'}</th>
</tr>
</thead>
<tbody>
{foreach from=$empik_shipping_types item=empik_shipping_type}
<tr>
<td><b>{$empik_shipping_type.label}</b> ({$empik_shipping_type.code})</td>
<td>
<select name="carrier[{$empik_shipping_type.code}][id_carrier]">
{foreach from=$shop_carriers item=shop_carrier}
<option
value="{$shop_carrier.id_carrier}"
{if $map[$empik_shipping_type.code].id_carrier|default == $shop_carrier.id_carrier} selected{/if}>
{$shop_carrier.name}
</option>
{/foreach}
</select>
</td>
<td>
<select name="carrier[{$empik_shipping_type.code}][type]">
{foreach from=$empik_carriers item=empik_carrier}
<option
value="{$empik_carrier.code}"
{if $map[$empik_shipping_type.code].type|default == $empik_carrier.code} selected{/if}
>
{$empik_carrier.label}
</option>
{/foreach}
</select>
</td>
</tr>
{/foreach}
</tbody>
</table>

View File

@@ -0,0 +1,40 @@
<table class="table table-striped">
<thead>
<tr>
<th>{l s='Empik Marketplace carrier' mod='empikmarketplace'}</th>
<th>{l s='Shop carrier' mod='empikmarketplace'}</th>
<th>{l s='Carrier type' mod='empikmarketplace'}</th>
</tr>
</thead>
<tbody>
{foreach from=$empik_shipping_types item=empik_shipping_type}
<tr>
<td><b>{$empik_shipping_type.label}</b> ({$empik_shipping_type.code})</td>
<td>
<select name="carrier[{$empik_shipping_type.code}][id_carrier]">
{foreach from=$shop_carriers item=shop_carrier}
<option
value="{$shop_carrier.id_carrier}"
{if $map[$empik_shipping_type.code].id_carrier|default == $shop_carrier.id_carrier} selected{/if}
>
{$shop_carrier.name}
</option>
{/foreach}
</select>
</td>
<td>
<select name="carrier[{$empik_shipping_type.code}][type]">
{foreach from=$empik_carriers item=empik_carrier}
<option
value="{$empik_carrier.code}"
{if $map[$empik_shipping_type.code].type|default == $empik_carrier.code} selected{/if}
>
{$empik_carrier.label}
</option>
{/foreach}
</select>
</td>
</tr>
{/foreach}
</tbody>
</table>

View File

@@ -0,0 +1,3 @@
<button id="configuration_form_submit_btn" type="submit" href="{$url_test_connection}" class="btn btn-primary">
{l s='Zapisz' mod='empikmarketplace'}
</button>

View File

@@ -0,0 +1,3 @@
<a href="{$url_test_connection}" class="btn btn-primary pull-right">
{l s='Przetestuj połączenie' mod='empikmarketplace'}
</a>

View File

@@ -0,0 +1,87 @@
<div class="panel">
<div class="panel-heading">
<i class="icon-question"></i> {l s='Help' mod='empikmarketplace'}
</div>
<div class="row">
<div class="col-md-6">
<h2>{l s='Funkcje:' mod='empikmarketplace'}</h2>
<hr>
<ul>
<li>{l s='Dwustronne połączenie API PrestaShop - EmpikPlace' mod='empikmarketplace'}</li>
<li>{l s='Wybór środowiska pracy: produkcyjne/testowe' mod='empikmarketplace'}</li>
<li>{l s='Wystawianie produktów' mod='empikmarketplace'}</li>
<li>{l s='Wystawianie ofert' mod='empikmarketplace'}</li>
<li>{l s='Zarządzanie ofertami' mod='empikmarketplace'}</li>
<li>{l s='Synchronizację stanów magazynowych' mod='empikmarketplace'}</li>
<li>{l s='Synchronizację cen i cen promocyjnych' mod='empikmarketplace'}</li>
<li>{l s='Akceptację i pobieranie zamówień' mod='empikmarketplace'}</li>
<li>{l s='Przekazywanie numerów przesyłek' mod='empikmarketplace'}</li>
<li>{l s='Mapowanie statusów zamówień' mod='empikmarketplace'}</li>
<li>{l s='Mapowanie form dostaw' mod='empikmarketplace'}</li>
<li>{l s='Zmianę statusów zamówień' mod='empikmarketplace'}</li>
<li>{l s='Oraz wiele innych funkcjonalności' mod='empikmarketplace'}</li>
</ul>
<h2>{l s='Interwały wymiany informacji:' mod='empikmarketplace'}</h2>
<hr>
<ul>
<li>{l s='Akceptowanie i pobieranie zamówień - zgodnie z ustawieniami CRON' mod='empikmarketplace'}</li>
<li>{l s='Synchronizację stanów i cen magazynowych - zgodnie z ustawieniami CRON' mod='empikmarketplace'}</li>
<li>{l s='Zmiana statusu zamówienia oraz dodanie listu przewozowego - bezzwłocznie po zmianie statusu w PrestaShop' mod='empikmarketplace'}</li>
<li>{l s='Jednorazowe wystawianie produktów / ofert - bezzwłocznie po wykonaniu akcji' mod='empikmarketplace'}</li>
</ul>
</div>
<div class="col-md-6 text-center">
<h2>{l s='Empik Marketplace' mod='empikmarketplace'}</h2>
<hr>
<p class="text-center">
<a href="{$url_docs}" class="btn btn-info">
<i class="icon-file-text"></i>
{l s='Instrukcja modułu' mod='empikmarketplace'}
</a>
</p>
<p class="text-center">
<a href="{$url_help}" class="btn btn-link">
{l s='Kontakt' mod='empikmarketplace'}
</a>
</p>
</div>
</div>
<div class="row">
<div class="col-md-12">
<h2>{l s='Film instruktażowy:' mod='empikmarketplace'}</h2>
<hr>
<div>
<iframe
style="aspect-ratio: 16 / 9; width: 100%; height: auto;"
width="853"
height="505"
src="https://www.youtube.com/embed/PTYK2ur9zL8"
title="YouTube video player"
frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowfullscreen
></iframe>
</div>
</div>
</div>
</div>
<div class="panel">
<div class="panel-heading">
<i class="icon-time"></i> {l s='CRON jobs' mod='empikmarketplace'}
</div>
<div class="mb-2">
<h4>{l s='Update offers' mod='empikmarketplace'}</h4>
<pre>{$cron_jobs.exportOffers}</pre>
</div>
<div class="mb-2">
<h4>{l s='Import orders' mod='empikmarketplace'}</h4>
<pre>{$cron_jobs.importOrders}</pre>
</div>
<div class="mb-2">
<h4>{l s='Export products' mod='empikmarketplace'}</h4>
<pre>{$cron_jobs.exportProducts}</pre>
</div>
</div>

View File

@@ -0,0 +1,17 @@
<div class="panel card">
<div class="panel-heading card-header">
{l s='Empik marketplace' mod='empikmarketplace'}
</div>
<div class="card-body">
<p>{l s='Order reference' mod='empikmarketplace'}: <b>{$empik_order.empik_order_reference}</b></p>
<p>{l s='Empik payment' mod='empikmarketplace'}: <b>{$empik_order.empik_payment}</b></p>
<p>{l s='Empik carrier' mod='empikmarketplace'}: <b>{$empik_order.empik_carrier}</b></p>
{if $empik_order.empik_pickup_point}
<p>{l s='Pickup point' mod='empikmarketplace'}: <b>{$empik_order.empik_pickup_point}</b></p>
{/if}
{if $empik_order.empik_vat_number}
<p>{l s='VAT number' mod='empikmarketplace'}: <b>{$empik_order.empik_vat_number}</b></p>
{/if}
</div>
</div>

View File

@@ -0,0 +1,11 @@
<?php
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');
header('Location: ../');
exit;

View File

@@ -0,0 +1,11 @@
<?php
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');
header('Location: ../');
exit;

View File

@@ -0,0 +1,6 @@
<a class="btn btn-link list-action--download"
href="{$href|escape:'html':'UTF-8'}"
title="{l s='Download' mod='empikmarketplace'}"
>
<i class="icon-download"></i>
</a>

View File

@@ -0,0 +1,27 @@
{if !empty($combinations)}
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#empik-product-price-modal-{$id_product}">
{l s='Attributes' mod='empikmarketplace'}
</button>
<div class="modal fade" id="empik-product-price-modal-{$id_product}" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-body">
{foreach $combinations as $combinationsId => $combination}
<table class="table">
<tr>
<td class="text-left" style="width: 50%">{$combination.attributes_list}</td>
<td class="text-left">
<input type="text" class="js-empik-price-input" data-product-id="{$id_product}" data-product-attribute-id="{$combinationsId}" data-action="savePrice" value="{$combination.offer_price}">
</td>
</tr>
</table>
{/foreach}
</div>
</div>
</div>
</div>
{else}
<div class="empik-edit-price-wrapper">
<input type="text" class="js-empik-price-input" data-product-id="{$id_product}" data-product-attribute-id="0" data-action="savePrice" value="{$value}">
</div>
{/if}

View File

@@ -0,0 +1,27 @@
{if !empty($combinations)}
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#empik-product-price-reduced-modal-{$id_product}">
{l s='Attributes' mod='empikmarketplace'}
</button>
<div class="modal fade" id="empik-product-price-reduced-modal-{$id_product}" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-body">
{foreach $combinations as $combinationsId => $combination}
<table class="table">
<tr>
<td class="text-left" style="width: 50%">{$combination.attributes_list}</td>
<td class="text-left">
<input type="text" class="js-empik-price-input" data-product-id="{$id_product}" data-product-attribute-id="{$combinationsId}" data-action="saveReducedPrice" value="{$combination.offer_price_reduced}">
</td>
</tr>
</table>
{/foreach}
</div>
</div>
</div>
</div>
{else}
<div class="empik-edit-price-wrapper">
<input type="text" class="js-empik-price-input" data-product-id="{$id_product}" data-product-attribute-id="0" data-action="saveReducedPrice" value="{$value}">
</div>
{/if}

View File

@@ -0,0 +1,10 @@
<a class="btn btn-{if !$enabled}warning{else}success{/if} list-action--enable"
href="{$href|escape:'html':'UTF-8'}"
title="{if $enabled}{l s='Enabled' mod='empikmarketplace'}{else}{l s='Disabled' mod='empikmarketplace'}{/if}"
>
{if $enabled}
{l s='Enabled' mod='empikmarketplace'}
{else}
{l s='Disabled' mod='empikmarketplace'}
{/if}
</a>

View File

@@ -0,0 +1,10 @@
<a class="btn btn-{if !$displayOriginal}warning{else}success{/if} list-action--original"
href="{$urlChange|escape:'html':'UTF-8'}"
title="{if $displayOriginal}{l s='Yes' mod='empikmarketplace'}{else}{l s='No' mod='empikmarketplace'}{/if}"
>
{if $displayOriginal}
{l s='Yes' mod='empikmarketplace'}
{else}
{l s='No' mod='empikmarketplace'}
{/if}
</a>

View File

@@ -0,0 +1,19 @@
{$tree}
<script>
$('input[name="category_filter"]').change(function () {
var url = new URL(window.location.href);
url.searchParams.set('id_category', $(this).val());
url.searchParams.set('submitFilterproduct', '0');
window.location.href = url;
});
$('input[name="category_filter"]').click(function () {
if ($(this).is(':checked')) {
var url = new URL(window.location.href);
url.searchParams.set('id_category', '0');
url.searchParams.set('submitFilterproduct', '0');
window.location.href = url;
}
});
</script>

View File

@@ -0,0 +1,50 @@
<div class="panel">
<div class="panel-heading">
<i class="icon-gear"></i> {l s='Actions' mod='empikmarketplace'}
</div>
<div class="row">
<div class="col-md-12">
{if $api_authenticated}
<p class="text-center">
<a href="{$url_export_products}" class="btn btn-info js-empik-products-export">
<i class="icon-send"></i>&nbsp;
{l s='Send single import' mod='empikmarketplace'}
</a>
</p>
<p class="text-center">
<a href="{$url_docs}" class="btn btn-link">
<i class="icon-info"></i>
{l s='See how to select products, wich have to be send to Empik Marketplace' mod='empikmarketplace'}
</a>
</p>
<p class="text-center">
<a href="{$url_docs}" class="btn btn-link">
<i class="icon-info"></i>
{l s='After product import you must use mapping wizard in EmpikPlace.' mod='empikmarketplace'}
<p class="text-center" style="margin-top:-22px;">{l s='You can see how to do in in our instructional video and in module documentation.' mod='empikmarketplace'}</p>
</a>
</p>
<p class="text-center">
<a href="{$url_products_csv}" {if !$url_products_csv}disabled{/if} class="btn btn-info">
<i class="icon-download"></i>
{l s='Download last products file' mod='empikmarketplace'}
</a>
</p>
<p class="text-center">
<a href="{$url_include_all}" class="btn btn-info">
<i class="icon-plus"></i>
{l s='Add all products to Empik Marketplace' mod='empikmarketplace'}
</a>
</p>
<p class="text-center">
<a href="{$url_exclude_all}" class="btn btn-info">
<i class="icon-trash"></i>
{l s='Remove all products from Empik Marketplace' mod='empikmarketplace'}
</a>
</p>
{else}
<div class="alert alert-warning">{l s='Before perform any action, authenticate to Empik Marketplace API in "Connection" tab.' mod='empikmarketplace'}</div>
{/if}
</div>
</div>
</div>

View File

@@ -0,0 +1,11 @@
<?php
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');
header('Location: ../');
exit;