This commit is contained in:
2025-04-01 00:38:54 +02:00
parent d4d4c0c09d
commit 87da06293a
22351 changed files with 5168854 additions and 7538 deletions

View File

@@ -0,0 +1,70 @@
{**
* 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
*}
<div id="admin-end-content-footer">
</div>
<script type="text/javascript">
$(document).ready(function(){
$.ajax({
type: 'POST',
headers: { "cache-control": "no-cache" },
url: '{$admin_module_ajax_url_psmbo}',
async: true,
cache: false,
dataType : "html",
data: {
ajax: '1',
action:'fetchModules',
controller_page: '{$controller_page}',
legacy: '1'
},
beforeSend: function() {
$('#admin-end-content-footer').html('<i class="icon-refresh icon-spin"></i>');
},
success: function(data) {
$('#admin-end-content-footer').html(data);
}
});
$('.controller-quick-view').each(function() {
$(this).fancybox({
type: 'ajax',
autoDimensions: false,
autoSize: false,
width: 600,
height: 'auto',
helpers: {
overlay: {
locked: false
}
},
href: $(this).attr('href') + '&action=GetModuleQuickView&module_name=' + $(this).attr('data-name') + '&ajax=1'
});
});
});
</script>

View File

@@ -0,0 +1,47 @@
{**
* 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
*}
<div class="panel clearfix" id="prestastore-content"></div>
<script type="text/javascript">
$.ajax({
type: 'POST',
headers: { "cache-control": "no-cache" },
url: '{$admin_module_ajax_url_psmbo}',
async: true,
cache: false,
dataType : "html",
data: {
ajax: '1',
action:'getMboAddonsThemes',
},
success: function(htmlData) {
$("#prestastore-content").html("<h3><i class='icon-picture-o'></i> {l s='Live from PrestaShop Addons!'}</h3>"+htmlData);
}
});
// These variable will move the form to another location
var formToMove = "appearance";
var formDestination = "js_theme_form_container";
</script>

View File

@@ -0,0 +1,71 @@
{**
* 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
*}
<div id="admin-end-content-footer" class="container">
</div>
<script type="text/javascript">
$(document).ready(function(){
$.ajax({
type: 'POST',
headers: { "cache-control": "no-cache" },
url: '{$admin_module_ajax_url_psmbo}',
async: true,
cache: false,
dataType : "html",
data: {
ajax: '1',
action:'fetchModules',
controller_page: '{$controller_page}',
legacy: '0'
},
beforeSend: function() {
$('#admin-end-content-footer').html('<i class="icon-refresh icon-spin"></i>');
},
success: function(data) {
$('#admin-end-content-footer').html(data);
}
});
$('.controller-quick-view').each(function() {
$(this).fancybox({
type: 'ajax',
autoDimensions: false,
autoSize: false,
width: 600,
height: 'auto',
helpers: {
overlay: {
locked: false
}
},
href: $(this).attr('href') + '&action=GetModuleQuickView&module_name=' + $(this).attr('data-name') + '&ajax=1'
});
});
});
</script>

View File

@@ -0,0 +1,28 @@
<?php
/**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License version 3.0
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0
*/
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 @@
{#**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License version 3.0
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0
*#}
{% set displayAction = action|title|replace({'_': " "})|trans({}, transDomain) %}
{% if (action == 'configure') %}
<a class="{{ classes }}" href="{{ url }}">
{{ displayAction }}
</a>
{% else %}
<form class='{{classes_form|default() }}' method="post" action="{{ url }}">
<button type="submit" class="{{ classes }} module_action_menu_{{ action }}" data-confirm_modal="module-modal-confirm-{{ name }}-{{ action }}">
{{ displayAction }}
</button>
</form>
{% endif %}

View File

@@ -0,0 +1,65 @@
{#**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License version 3.0
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0
*#}
{% set url, priceRaw, priceDisplay, url_active, urls, name, transDomains =
module.attributes.url,
module.attributes.price.raw,
module.attributes.price.displayPrice,
module.attributes.url_active,
module.attributes.urls,
module.attributes.name,
'AdminActions'
%}
<div class="btn-group module-actions">
{% if url_active == 'buy' %}
<a class="btn btn-secondary-reverse btn-block btn-outlined-secondary btn-outline-secondary module_action_menu_go_to_addons" href="{{ url }}" target="_blank">
<i class="material-icons">launch</i> <p class="spacing-icone-p"> {{ 'Discover'|trans({}, 'Admin.Modules.Feature') }}</p>
</a>
{% elseif urls|length %}
{% include '@Modules/ps_mbo/views/templates/admin/controllers/module_catalog/Includes/action_button.html.twig' with {
'name': name,
'classes_form': 'btn-group form-action-button',
'classes' : 'btn btn-secondary',
'url': urls[url_active],
'action': url_active,
'transDomain': transDomains}
%}
{% if (urls|length > 1) %}
<input type="hidden" class="btn" />
<button type="button" class="btn btn-outline-secondary dropdown-toggle dropdown-toggle-split" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<span class="caret"></span>
</button>
<span class="sr-only">{{ 'Toggle Dropdown'|trans({}, 'Admin.Modules.Feature') }}</span>
<div class="dropdown-menu">
{% for module_action, module_url in urls %}
{% if module_action != url_active %}
<li>
{% include '@Modules/ps_mbo/views/templates/admin/controllers/module_catalog/Includes/action_button.html.twig' with {
'name': name,
'classes' : 'dropdown-item',
'url': module_url,
'action': module_action,
'transDomain': transDomains}
%}
</li>
{% endif %}
{% endfor %}
</div>
{% endif %}
{% endif %}
</div>

View File

@@ -0,0 +1,97 @@
{#**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License version 3.0
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0
*#}
{% set isModuleActive = module.database.active %}
<div class="mbo-module-grid__item col-sm-12 col-md-6 col-lg-4 col-xl-3 module-item module-item-grid" data-id="{{ module.attributes.id }}" data-name="{{ module.attributes.displayName }}" data-scoring="{{ module.attributes.avgRate }}" data-logo="{{ module.attributes.img }}" data-author="{{ module.attributes.author }}" data-version="{{ module.attributes.version }}" data-description="{{ module.attributes.description }}" data-tech-name="{{ module.attributes.name }}" data-child-categories="{{ module.attributes.categoryName }}" data-categories="{{ category }}" data-type="{{ module.attributes.productType }}" data-price="{{ module.attributes.price.raw }}" data-active="{{ isModuleActive }}">
<div class="mbo-module-card">
<div class="mbo-module-card__top">
<div class="mbo-module-card__header">
<div class="mbo-module-card__img-container">
<img class="mbo-module-card__img" src="{{ module.attributes.img }}" alt="{{ module.attributes.displayName }}"/>
</div>
<div class="mbo-module-card__title-container">
<h3 class="mbo-module-card__title" data-toggle="pstooltip" data-placement="top" title="{{ module.attributes.displayName|raw }}">
{% if module.attributes.displayName %}
{{ module.attributes.displayName|raw }}
{% else %}
{{ module.attributes.name }}
{% endif %}
{% for pico in module.attributes.picos %}
<img src="{{pico.img}}" alt="{{pico.label}}"/>
{% endfor %}
</h3>
<p class="mbo-module-card__subtitle">
{{ 'by %author%'|trans({'%author%': module.attributes.author}) }}
</p>
</div>
</div>
</div>
<div class="mbo-module-card__infos">
<div class="mbo-module-card__tags-container">
{% if module.attributes.categoryName %}
<div class="mbo-module-card__tag" title="{{ module.attributes.categoryName }}">
{{ module.attributes.categoryName }}
</div>
{% endif %}
{% set badges = module.attributes.badges %}
{% if badges %}
{% set badge = badges|first %}
<div class="mbo-module-card__tag" title="{{ badge.label }}">
{{ badge.label }}
</div>
{% endif %}
</div>
{% if module.attributes.nbRates > 0 %}
<div class="mbo-module-card__rate-container">
<i class="material-icons">star</i>
<span class="mbo-module-card__rate">{{ module.attributes.avgRate }}</span>
<span class="mbo-module-card__nb-rate">({{ module.attributes.nbRates }})</span>
</div>
{% endif %}
</div>
<p class="mbo-module-card__description">
{{ module.attributes.description }}
</p>
<a class="module-read-more-grid-btn mbo-module-card__read-more" href="{{ path('admin_module_cart', {"moduleId": module.attributes.id }) }}" data-target="#module-modal-read-more-{{module.attributes.name }}{{ additionalModalSuffix|default('') }}">
{{ 'Show details'|trans({}, 'Modules.Mbo.Modulescatalog') }}
</a>
<div class="mbo-module-card__bottom">
<p class="bo-module-card__price">
{% if module.attributes.url_active == 'buy' and module.attributes.price.raw != '0.00' %}
{{ module.attributes.price.displayPrice }}
{% elseif module.attributes.url_active != 'buy' %}
{{ 'Free'|trans({}, 'Modules.Mbo.Modulescatalog') }}
{% endif %}
</p>
{% include '@Modules/ps_mbo/views/templates/admin/controllers/module_catalog/Includes/module_actions_buttons.html.twig' with { 'module': module, 'level' : level } %}
</div>
</div>
{% include '@PrestaShop/Admin/Module/Includes/modal_read_more.html.twig' with { 'module': module, 'additionalModalSuffix': additionalModalSuffix|default(''), 'level' : level } %}
{% include '@PrestaShop/Admin/Module/Includes/modal_confirm.html.twig' with { 'module': module } %}
</div>

View File

@@ -0,0 +1,38 @@
{#**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License version 3.0
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0
*#}
<div class="ps-dropdown dropdown btn-group bordered mb-1 module-bulk-actions disabled">
<div id="bulk-actions-dropdown" class="dropdown-label" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" data-flip="false">
<span class="js-selected-item selected-item module-bulk-actions-selector-label">
{{ 'Uninstall'|trans({}, 'Admin.Actions') }}
</span>
<i class="material-icons arrow-down float-right">keyboard_arrow_down</i>
</div>
<div class="ps-dropdown-menu dropdown-menu module-category-selector items-list js-items-list">
{% for key, name in bulkActions %}
<a
class="dropdown-item module-bulk-menu"
data-ref="{{key}}"
data-display-name="{{name}}"
>
{{ name }}
</a>
{% endfor %}
</div>
</div>

View File

@@ -0,0 +1,28 @@
<?php
/**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License version 3.0
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0
*/
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,74 @@
{#**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License version 3.0
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0
*#}
<div class="module-top-menu">
<div class="row">
<div class="col-md-12" style="margin-bottom: 8px;">
<h1>{{ 'Find modules to grow your business' | trans({}, 'Modules.Mbo.Modulescatalog') }}</h1>
<p>
{{ 'Explore the Marketplace in your back office to find free and paid partner modules to grow your business. Increase traffic, improve conversions, or build customer loyalty... theres a module for every need.' | trans({}, 'Modules.Mbo.Modulescatalog') }}
</p>
<p>
{{ 'And if you want to give your store a new look, {link}check the theme catalog{/link}.'| trans({'{link}' : '<a href="'~path('admin_mbo_catalog_theme')~'">', '{/link}' : '</a>',}, 'Modules.Mbo.Modulescatalog') | raw }}
</p>
</div>
</div>
<div class="row">
<div class="col-md-8">
<div class="input-group" id="search-input-group">
<input type="text" id="module-search-bar" class="form-control">
<div class="input-group-append">
<button class="btn btn-primary float-right search-button" id="module-search-button">
<i class="material-icons">search</i>
</button>
</div>
</div>
</div>
<div class="col-md-4 module-menu-item"></div>
</div>
<div class="row">
{% if topMenuData is defined %}
<div class="col-md-4 module-top-menu-item">
<h3>{{ 'Category' | trans({}, 'Admin.Catalog.Feature') }}</h3>
{% include '@PrestaShop/Admin/Module/Includes/dropdown_categories.html.twig' with { 'topMenuData': topMenuData } %}
</div>
{% endif %}
{% if requireFilterStatus is defined and requireFilterStatus == true %}
<div class="col-md-4 module-top-menu-item">
<h3>{{ 'Status' | trans({}, 'Admin.Global') }}</h3>
{% include '@PrestaShop/Admin/Module/Includes/dropdown_status.html.twig' %}
</div>
{% endif %}
{% if level > constant('PrestaShopBundle\\Security\\Voter\\PageVoter::LEVEL_UPDATE') and bulkActions is defined %}
<div class="col-md-4 module-top-menu-item disabled">
<h3>{{ 'Bulk Actions'|trans({}, 'Admin.Global') }}</h3>
{% include '@PrestaShop/Admin/Module/Includes/dropdown_bulk.html.twig' %}
</div>
{% endif %}
</div>
</div>
{% set js_translatable = {
"Search - placeholder": "Search modules: keyword, name, author..."|trans({}, 'Admin.Modules.Help'),
}|merge(js_translatable) %}

View File

@@ -0,0 +1,84 @@
{#**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License version 3.0
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0
*#}
<div id="module-modal-import" class="modal modal-vcenter fade" role="dialog" data-backdrop="static" data-keyboard="false">
<div class="modal-dialog">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title module-modal-title">{{ 'Upload a module'|trans({}, 'Modules.Mbo.Modulescatalog') }}</h4>
<button id="module-modal-import-closing-cross" type="button" class="close">&times;</button>
</div>
<div class="modal-body">
{% if level <= constant('PrestaShopBundle\\Security\\Voter\\PageVoter::LEVEL_UPDATE') %}
<div class="row">
<div class="col-md-12">
<div class="alert alert-danger" role="alert">
<p class="alert-text">
{{ errorMessage }}
</p>
</div>
</div>
</div>
{% else %}
<div class="row">
<div class="col-md-12">
<form action="#" class="dropzone" id="importDropzone">
<div class="module-import-start">
<i class="module-import-start-icon material-icons">cloud_upload</i><br/>
<p class=module-import-start-main-text>
{{ 'Drop your module archive here or [1]select file[/1]'|trans({}, 'Modules.Mbo.Modulescatalog')|replace({'[1]' : '<a href="#" class="module-import-start-select-manual">', '[/1]' : '</a>'})|raw }}
</p>
<p class=module-import-start-footer-text>
{{ 'Please upload one file at a time, .zip or tarball format (.tar, .tar.gz or .tgz).'|trans({}, 'Modules.Mbo.Modulescatalog') }}
{{ 'Your module will be installed right after that.'|trans({}, 'Modules.Mbo.Modulescatalog') }}
</p>
</div>
<div class='module-import-processing'>
<!-- Loader -->
<div class="spinner"></div>
<p class=module-import-processing-main-text>{{ 'Installing module...'|trans({}, 'Modules.Mbo.Modulescatalog') }}</p>
<p class=module-import-processing-footer-text>
{{ "It will close as soon as the module is installed. It won't be long!"|trans({}, 'Modules.Mbo.Modulescatalog') }}
</p>
</div>
<div class='module-import-success'>
<i class="module-import-success-icon material-icons">done</i><br/>
<p class='module-import-success-msg'>{{ 'Module installed!'|trans({}, 'Modules.Mbo.Modulescatalog') }}</p>
<p class="module-import-success-details"></p>
<a class="module-import-success-configure btn btn-primary-reverse btn-outline-primary light-button" href='#'>{{ 'Configure'|trans({}, 'Admin.Actions') }}</a>
</div>
<div class='module-import-failure'>
<i class="module-import-failure-icon material-icons">error</i><br/>
<p class='module-import-failure-msg'>{{ 'Oops... Upload failed.'|trans({}, 'Modules.Mbo.Modulescatalog') }}</p>
<a href="#" class="module-import-failure-details-action">{{ 'What happened?'|trans({}, 'Modules.Mbo.Modulescatalog') }}</a>
<div class='module-import-failure-details'></div>
<a class="module-import-failure-retry btn btn-tertiary" href='#'>{{ 'Try again'|trans({}, 'Admin.Actions') }}</a>
</div>
<div class='module-import-confirm'>
</div>
</form>
</div>
</div>
{% endif %}
</div>
<div class="modal-footer">
</div>
</div>
</div>
</div>

View File

@@ -0,0 +1,69 @@
{#**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License version 3.0
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0
*#}
{% set url, priceRaw, priceDisplay, url_active, urls, name, transDomains =
module.attributes.url,
module.attributes.price.raw,
module.attributes.price.displayPrice,
module.attributes.url_active,
module.attributes.urls,
module.attributes.name,
'AdminActions'
%}
<div class="mbo-module-card__actions btn-group module-actions">
{% if url_active == 'buy' %}
<a class="btn btn-secondary btn-block btn-outline-secondary" href="{{ url }}" target="_blank">
<i class="material-icons" style="font-size: 18px;">launch</i>
{{ 'Discover'|trans({}, 'Modules.Mbo.Modulescatalog') }}
</a>
{% elseif urls|length %}
{% include '@Modules/ps_mbo/views/templates/admin/controllers/module_catalog/Includes/action_button.html.twig' with {
'name': name,
'classes_form': 'btn-block',
'classes' : 'btn btn-secondary btn-block',
'url': urls[url_active],
'action': url_active,
'transDomain': transDomains}
%}
{% if (urls|length > 1) %}
<input type="hidden" class="btn"/>
<button type="button" class="btn btn-outline-secondary dropdown-toggle dropdown-toggle-split" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<span class="caret"></span>
</button>
<span class="sr-only">{{ 'Toggle Dropdown'|trans({}, 'Admin.Modules.Feature') }}</span>
<div class="dropdown-menu">
{% for module_action, module_url in urls %}
{% if module_action != url_active %}
<li>
{% include '@Modules/ps_mbo/views/templates/admin/controllers/module_catalog/Includes/action_button.html.twig' with {
'name': name,
'classes' : 'dropdown-item',
'url': module_url,
'action': module_action,
'transDomain': transDomains}
%}
</li>
{% endif %}
{% endfor %}
</div>
{% endif %}
{% endif %}
</div>

View File

@@ -0,0 +1,50 @@
{#**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License version 3.0
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0
*#}
<div class="module-sorting-menu">
<div class="row">
<div class="col-lg-6">
<div class="module-sorting-search-wording">
<span id="selected_modules" class="module-search-result-title module-search-result-wording">{{ '%nbModules% partner modules compatible with your store'|trans({'%nbModules%' : totalModules}, 'Modules.Mbo.Modulescatalog') }}</span>
<div class="module-sorting-search-wording__tooltip-container">
{% if constant('_PS_VERSION_') > '1.7.7.8' %}
{% include '@Common/HelpBox/helpbox.html.twig' with { 'content' : "In the back office, we only show you the modules developed by PrestaShop or our partners that are compatible with your store. "|trans({}, 'Modules.Mbo.Modulescatalog') } %}
{% else %}
<span
class="help-box" data-toggle="popover"
data-content="{{ "In the back office, we only show you the modules developed by PrestaShop or our partners that are compatible with your store. "|trans({}, 'Modules.Mbo.Modulescatalog') }}"
>
</span>
{% endif %}
</div>
</div>
</div>
<div class="col-lg-6">
<div class="module-sorting module-sorting-author float-right">
<select id="sort_module" class="custom-select sort-component">
<option value="" disabled selected>- {{ 'Sort by'|trans({}, 'Admin.Actions') }} -</option>
<option value="name">{{ 'Name'|trans({}, 'Admin.Global') }}</option>
<option value="price">{{ 'Increasing Price'|trans({}, 'Admin.Modules.Feature') }}</option>
<option value="price-desc">{{ 'Decreasing Price'|trans({}, 'Admin.Modules.Feature') }}</option>
<option value="scoring-desc">{{ 'Popularity'|trans({}, 'Admin.Modules.Feature') }}</option>
</select>
</div>
</div>
</div>
</div>

View File

@@ -0,0 +1,68 @@
{#**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License version 3.0
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0
*#}
{%
set moduleImage = module.attributes.img is null ?
constant('_MODULE_DIR_') ~ module.attributes.name ~ '/' ~ module.attributes.logo :
module.attributes.img
%}
<tr>
<td class="fixed-with-sm center">
<img
class="img-thumbnail"
alt="{{ module.attributes.name }}"
src="{{ moduleImage }}"
/>
</td>
<td>
<div id="anchor{{ module.attributes.name|capitalize }}" title="{{ module.attributes.displayName }}">
<div class="module_name">
<span style="display:none">{{ module.attributes.name }}</span>
{{ module.attributes.displayName }}
<small class="text-muted">v{{ module.attributes.version }} - by {{ module.attributes.author }}</small>
{% if module.attributes.type is not empty and module.attributes.type == 'addonsBought' %}
- <span class="module-badge-bought help-tooltip text-warning" data-title="{{ 'You bought this module on PrestaShop Addons. Thank You.'|trans({}, 'Admin.Modules.Help') }}"><i class="icon-pushpin"></i> <small>{{ 'Bought'|trans({}, 'Admin.Modules.Help') }}</small></span>
{% elseif module.attributes.type is not empty and module.attributes.type == 'addonsMustHave' %}
- <span class="module-badge-popular help-tooltip text-primary" data-title="{{ 'This module is available on PrestaShop Addons.'|trans({}, 'Admin.Modules.Help') }}"><i class="icon-group"></i> <small>{{ 'Popular'|trans({}, 'Admin.Modules.Help') }}</small></span>
{% elseif module.attributes.type is not empty and module.attributes.type == 'addonsPartner' %}
- <span class="module-badge-partner help-tooltip text-warning" data-title="{{ 'This module is available for free thanks to our partner.'|trans({}, 'Admin.Modules.Help') }}"><i class="icon-pushpin"></i> <small>{{ 'Official'|trans({}, 'Admin.Modules.Help') }}</small></span>
{% elseif module.attributes.id is defined and module.attributes.id >= 0 %}
{% if module.attributes.version_addons is defined and module.attributes.version_addons %}
<span class="label label-warning">{{ 'Need update'|trans({}, 'Admin.Modules.Help') }}</span>
{% endif %}
{% endif %}
</div>
<p class="module_description">
{% if module.attributes.description is defined and module.attributes.description is not empty %}
{{ module.attributes.description }}
{% endif %}
</p>
{% if (module.attributes.message is defined and module.attributes.name is not empty) and (module.attributes.type is not defined or module.attributes.type != 'addonsMustHave' or module.attributes.type != 'addonsNative') %}
<div class="alert alert-success" role="alert">
<button type="button" class="close" data-dismiss="alert">&times;</button>
<p class="alert-text">
{{ module.attributes.message }}
</p>
</div>
{% endif %}
</div>
</td>
<td class="module-container module-quick-action-list clearfix">
{{ include('@Modules/ps_mbo/views/templates/admin/controllers/module_catalog/Includes/action_menu.html.twig', {'module': module}) }}
</td>
</tr>

View File

@@ -0,0 +1,71 @@
{#**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License version 3.0
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0
*#}
{% set modulesListShouldBeDisplayed = (modulesList is defined and modulesList is not empty) %}
{% if modulesListShouldBeDisplayed == true %}
<div class="row row-margin-bottom">
<div class="col-lg-12">
<ul class="nav nav-pills">
{% if modulesList.notInstalled|length > 0 %}
<li class="active">
<a href="#tab_modules_list_not_installed" data-toggle="tab">
{{ 'Not Installed'|trans({}) }}
</a>
</li>
{% endif %}
{% if modulesList.installed|length > 0 %}
<li {% if modulesList.notInstalled|length == 0 %}class="active"{% endif %}>
<a href="#tab_modules_list_installed" data-toggle="tab">
{{ 'Installed'|trans({}) }}
</a>
</li>
{% endif %}
</ul>
</div>
</div>
<div id="modules_list_container_content" class="tab-content modal-content-overflow">
{% if modulesList.notInstalled is defined and modulesList.notInstalled is not empty %}
<div class="tab-pane active" id="tab_modules_list_not_installed">
<table id="tab_modules_list_not_installed" class="table">
{% for module in modulesList.notInstalled %}
{{ include('@Modules/ps_mbo/views/templates/admin/controllers/module_catalog/Includes/tab-module-line.html.twig',{'module': module}) }}
{% endfor %}
</table>
</div>
{% endif %}
{% if modulesList.installed|length > 0 %}
<div class="tab-pane {% if modulesList.notInstalled|length == 0 %}active{% endif %}" id="tab_modules_list_installed">
<table id="tab_modules_list_installed" class="table">
{% for module in modulesList.installed %}
{{ include('@Modules/ps_mbo/views/templates/admin/controllers/module_catalog/Includes/tab-module-line.html.twig',{'module': module}) }}
{% endfor %}
</table>
</div>
{% endif %}
</div>
{% endif %}
<div class="alert alert-addons row-margin-top" role="alert">
<p class="alert-text">
<a href="https://addons.prestashop.com/?utm_source=back-office&amp;utm_medium=dispatch&amp;utm_campaign=back-office-{{ app.request.locale }}&amp;utm_content=download{% if adminListFromSource is defined %}&amp;utm_term={{ adminListFromSource }}{% endif %}" onclick="return !window.open(this.href);">{{ 'More modules on addons.prestashop.com'|trans({}) }}</a>
</p>
</div>
{% if modulesListShouldBeDisplayed == true %}
<script src="{{ asset('themes/new-theme/public/module_card.bundle.js') }}"></script>
{% endif %}

View File

@@ -0,0 +1,24 @@
{#**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License version 3.0
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0
*#}
{% extends '@PrestaShop/Admin/layout.html.twig' %}
{% block content %}
{{ pageContent|raw }}
{% endblock %}

View File

@@ -0,0 +1,91 @@
{#**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License version 3.0
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0
*#}
{% extends '@PrestaShop/Admin/Module/common.html.twig' %}
{% block javascripts %}
{{ parent() }}
<script type="application/javascript" src="{{ cdc_error_templating_url }}"></script>
{% if cdc_script_not_found is defined and cdc_script_not_found is same as(true) %}
<script type="application/javascript" src="{{ cdc_error_url }}"></script>
{% endif %}
{% if urlAccountsCdn is defined and urlAccountsCdn is not empty %}
{# PrestaShop Account #}
<script src="{{ urlAccountsCdn }}" rel=preload></script>
<script>
if (window?.psaccountsVue) {
window?.psaccountsVue?.init();
{% set shop_context = shop_context|merge({'accounts_component_loaded': true}) %}
}
</script>
{% endif %}
<script>
function addOrUpdateUrlParam(name, value)
{
var href = window.location.href;
var regex = new RegExp("[&\\?]" + name + "=");
if(regex.test(href))
{
regex = new RegExp("([&\\?])" + name + "=\\d+");
window.location.href = href.replace(regex, "$1" + name + "=" + value);
}
else
{
if(href.indexOf("?") > -1)
window.location.href = href + "&" + name + "=" + value;
else
window.location.href = href + "?" + name + "=" + value;
}
}
if (typeof window.mboCdc == undefined || typeof window.mboCdc == "undefined") {
if (typeof renderCdcError === 'function') {
window.$(document).ready(function() {
renderCdcError($('#cdc-container'));
});
}
} else {
const currentUrl = new URL(window.location.href)
if (currentUrl.searchParams.has('filterCategoryRef') && !currentUrl.searchParams.has('mbo_cdc_path')) {
addOrUpdateUrlParam('mbo_cdc_path', encodeURIComponent('/#/modules'));
} else {
const renderModules = window.mboCdc.renderModules
const context = {{ shop_context|json_encode()|raw }};
renderModules(context, '#cdc-container')
}
}
</script>
{% endblock %}
{% block stylesheets %}
{{ parent() }}
<link rel="stylesheet" href="{{ cdc_error_templating_css }}" type="text/css" media="all">
{% endblock %}
{% block content %}
<prestashop-accounts style="display: none;"></prestashop-accounts>
<div class="mbo-catalog-wrapper cdc-container" id="cdc-container" data-error-path="{{ path('admin_mbo_module_cdc_error') }}"></div>
{% include '@Modules/ps_mbo/views/templates/admin/controllers/module_catalog/Includes/modal_import.html.twig' with { 'level' : level, 'errorMessage' : errorMessage } %}
{% endblock %}

View File

@@ -0,0 +1,109 @@
{#**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License version 3.0
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0
*#}
{% block javascripts %}
<script>
$('body').on(
'moduleCatalogLoaded',
function() {
var refCategory = null;
$('body').on('click', '.module-category-menu', function (event) {
refCategory = $(this).attr('data-category-ref');
});
function applyChangeToUpdateLink() {
var searchtext = encodeURIComponent($('.pstaggerAddTagInput').val());
var nbModules = $('.modules-list').find('.module-item').length;
var locale = "{{ locale }}";
if(nbModules > 0) {
$('.module-sorting-menu').show();
$('.mbo-modules-catalog-no-result').hide();
}
else {
$('.module-sorting-menu').hide();
$('.mbo-modules-catalog-no-result').show();
}
var urlParams = 'utm_source=back-office&utm_medium=search-no-result-mbo&utm_campaign=back-office-{{ locale }}&utm_content=download17&compatibility={{ psVersion }}&search_query=' + searchtext;
if(refCategory) urlParams += "&id_category=" + refCategory
if(locale == "en")
$('#link-addons-no-result').attr('href', 'https://addons.prestashop.com/en/search?' + urlParams);
else if(locale == "fr")
$('#link-addons-no-result').attr('href', 'https://addons.prestashop.com/fr/recherche?' + urlParams);
else if(locale == "es")
$('#link-addons-no-result').attr('href', 'https://addons.prestashop.com/es/buscar?' + urlParams);
else
$('#link-addons-no-result').attr('href', 'https://addons.prestashop.com/'+ locale +'/search.php?' + urlParams);
};
function observe(selector, callback) {
// Call it once to get all the elements already on the page
var elements = document.querySelectorAll(selector);
elements.forEach(element => {
console.log(element);
var observer = new MutationObserver(() => {
callback(element);
});
observer.observe(element, {
childList: true,
attributes: true,
characterData: true,
subtree: true,
});
});
}
observe('.pstaggerWrapper, .module-menu-item', element => {
applyChangeToUpdateLink()
});
$(".pstaggerAddTagInput").change(function() {
applyChangeToUpdateLink()
});
applyChangeToUpdateLink();
}
);
</script>
{% endblock %}
<div class="mbo-modules-catalog row mbo-modules-catalog__grid modules-list" data-name="all">
{% for category in categories.subMenu %}
{% for module in category.modules %}
{% include '@Modules/ps_mbo/views/templates/admin/controllers/module_catalog/Includes/catalog_card.html.twig' with { 'module': module, 'origin': origin|default('none'), 'level' : level, 'category': category.refMenu } %}
{% endfor %}
{% endfor %}
<div class="mbo-modules-catalog-no-result">
<h1>
{{ 'No partner module matches your search'|trans({}, 'Modules.Mbo.Modulescatalog') }}
</h1>
<p>
{{ 'Try different keywords and filters, or'|trans({}, 'Modules.Mbo.Modulescatalog') }}
<a id="link-addons-no-result" target="_blank">{{ 'search the PrestaShop Marketplace.'|trans({}, 'Modules.Mbo.Modulescatalog') }}</a>
</p>
<img src="{{ asset('../modules/ps_mbo/views/img/no_result.svg') }}">
</div>
</div>

View File

@@ -0,0 +1,35 @@
{#**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License version 3.0
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0
*#}
<div class="cdc-error-container">
<div class="cdc-error-content">
<div class="cdc-error-content-wrapper">
<h1 class="cdc-error-title">
{{ 'Oh no.. something went wrong'|trans({}, 'Modules.Mbo.Global') }}
</h1>
<p class="cdc-error-message">
{{ 'There has been a problem on our side. Refresh your page and if the problem persists, try again later.'|trans({}, 'Modules.Mbo.Global') }}
</p>
</div>
<div class="cdc-error-button-container">
<button class="cdc-error-button" onclick="javascript:window.location.reload();">
{{ 'Refresh page'|trans({}, 'Modules.Mbo.Global') }}
</button>
</div>
</div>
</div>

View File

@@ -0,0 +1,28 @@
<?php
/**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License version 3.0
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0
*/
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,70 @@
{#**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License version 3.0
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0
*#}
{% extends app.request.isxmlhttprequest ? '@Modules/ps_mbo/views/templates/admin/layout-ajax.html.twig' : '@PrestaShop/Admin/layout.html.twig' %}
{% block content %}
{% if recommendedModulesNotInstalled is not empty or recommendedModulesInstalled is not empty %}
<ul class="nav nav-tabs" role="tablist">
{% if recommendedModulesNotInstalled is not empty %}
<li class="nav-item active">
<a class="nav-link active" data-toggle="tab" href="#tab_modules_list_not_installed" role="tab">
{{ 'Not Installed'|trans({}, 'Modules.Mbo.Recommendedmodulesandservices') }}
</a>
</li>
{% endif %}
{% if recommendedModulesInstalled is not empty %}
<li class="nav-item{% if recommendedModulesNotInstalled is empty %} active{% endif %}">
<a class="nav-link{% if recommendedModulesNotInstalled is empty %} active{% endif %}" data-toggle="tab" href="#tab_modules_list_installed" role="tab">
{{ 'Installed'|trans({}, 'Modules.Mbo.Recommendedmodulesandservices') }}
</a>
</li>
{% endif %}
</ul>
<div id="modules_list_container_content" class="tab-content">
{% if recommendedModulesNotInstalled is not empty %}
<div class="tab-pane active" id="tab_modules_list_not_installed" role="tabpanel">
<table class="table">
{% for recommendedModuleNotInstalled in recommendedModulesNotInstalled %}
{{ include('@Modules/ps_mbo/views/templates/admin/controllers/module_catalog/Includes/tab-module-line.html.twig',{'module': recommendedModuleNotInstalled}) }}
{% endfor %}
</table>
</div>
{% endif %}
{% if recommendedModulesInstalled is not empty %}
<div class="tab-pane {% if recommendedModulesNotInstalled is empty %}active{% endif %}" id="tab_modules_list_installed" role="tabpanel">
<table class="table">
{% for recommendedModuleInstalled in recommendedModulesInstalled %}
{{ include('@Modules/ps_mbo/views/templates/admin/controllers/module_catalog/Includes/tab-module-line.html.twig',{'module': recommendedModuleInstalled}) }}
{% endfor %}
</table>
</div>
{% endif %}
</div>
{% endif %}
<div class="alert alert-addons row-margin-top" role="alert">
<p class="alert-text">
<a href="{{recommendedModulesLinkToAddons}}" onclick="return !window.open(this.href);">
{{ 'More similar modules on Prestashop Marketplace'|trans({}, 'Modules.Mbo.Recommendedmodulesandservices') }}
</a>
<i class="material-icons">open_in_new</i>
</p>
</div>
{% endblock %}

View File

@@ -0,0 +1,45 @@
{#**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License version 3.0
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0
*#}
{% extends '@PrestaShop/Admin/Module/common.html.twig' %}
{% block content %}
<div class="row justify-content-center">
<div class="col-lg-10">
{% block catalog_categories_listing %}
<div class="module-short-list">
{% if modules is empty %}
<div class="modules-list module-list-empty">
<p>
{{ 'You do not have any uninstalled module.' | trans({}, 'Modules.Mbo.Modulescatalog') }}
</p>
</div>
{% else %}
{% include '@PrestaShop/Admin/Module/Includes/grid_manage_installed.html.twig' with { 'modules': modules, 'display_type': 'list', 'origin': 'manage', 'id': 'all' } %}
{% block addon_card_see_more %}
{% if (modules | length) > maxModulesDisplayed %}
{% include '@PrestaShop/Admin/Module/Includes/see_more.html.twig' with { 'id': 'all' } %}
{% endif %}
{% endblock %}
{% endif %}
</div>
{% endblock %}
</div>
</div>
{% endblock %}

View File

@@ -0,0 +1,24 @@
{#**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License version 3.0
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0
*#}
{% extends app.request.isxmlhttprequest ? '@Modules/ps_mbo/views/templates/admin/layout-ajax.html.twig' : '@PrestaShop/Admin/layout.html.twig' %}
{% block content %}
{{ pageContent|raw }}
{% endblock %}

View File

@@ -0,0 +1,28 @@
<?php
/**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License version 3.0
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0
*/
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,38 @@
{#**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License version 3.0
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0
*#}
{% extends app.request.isxmlhttprequest ? '@Modules/ps_mbo/views/templates/admin/layout-ajax.html.twig' : '@PrestaShop/Admin/layout.html.twig' %}
{% block content %}
<div class="row">
<div class="col">
<div class="card">
<div class="card-body text-center">
<img class="img-responsive"
src="{{ asset('../modules/ps_mbo/views/img/error.svg') }}"
alt="{{ 'It looks like we have trouble connecting to Addons. Please refresh the page or check your firewall configuration.'|trans({}, 'Admin.Notifications.Error') }}"
>
<p class="mt-3 error-header">
{{ 'It looks like we have trouble connecting to Addons. Please refresh the page or check your firewall configuration.'|trans({}, 'Admin.Notifications.Error') }}
</p>
</div>
</div>
</div>
</div>
{% endblock %}

View File

@@ -0,0 +1,37 @@
{**
* 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
*}
<div v-if="module.attributes.url_active == 'buy'" class="form-action-button-container">
<a class="btn btn-primary btn-primary-reverse btn-block btn-outline-primary light-button module_action_menu_go_to_addons" v-bind:href="module.attributes.url" target="_blank">
{l s='Discover' d='Admin.Modules.Feature'}
</a>
</div>
<div v-else class="btn-group form-action-button-container">
<form class="btn-group form-action-button" method="post" v-bind:action="module.attributes.urls.install">
<button type="submit" class="btn btn-primary-reverse btn-outline-primary light-button module_action_menu_install" >
{l s='Install' d='Admin.Modules.Feature'}
</button>
</form>
</div>

View File

@@ -0,0 +1,53 @@
{if isset($from) && $from == 'footer'}
<div class="panel" {if isset($panel_id)}id="{$panel_id}"{/if}>
<h3>
<i class="icon-list-ul"></i>
{if isset($panel_title)}{$panel_title|escape:'html':'UTF-8'}{else}{l s='Modules list'}{/if}
</h3>
{/if}
<div class="modules_list_container_tab row">
<div class="col-lg-12">
{if count($modules_list)}
<table class="table">
{counter start=1 assign="count"}
{foreach from=$modules_list item=module}
{include file='./tab_module_line-legacy.tpl' class_row={cycle values=",row alt"}}
{counter}
{/foreach}
</table>
{if $controller_name == 'AdminPayment' && isset($view_all)}
<div class="panel-footer">
<div class="col-lg-4 col-lg-offset-4">
<a class="btn btn-default btn-block" href="{$link->getAdminLink('AdminPsMboModule', true, [], ['filterCategoryTab' => 'payments_gateways'])|escape:'html':'UTF-8'}">
<i class="process-icon-payment"></i>
{l s='View all available payments solutions'}
</a>
</div>
</div>
{/if}
{else}
<table class="table">
<tr>
<td>
<div class="alert alert-warning">
{if $controller_name == 'AdminPayment'}
{l s='It seems there are no recommended payment solutions for your country.'}<br />
<a class="_blank" href="https://www.prestashop.com/en/contact-us">{l s='Do you think there should be one? Let us know!'}</a>
{else}{l s='No modules available in this section.'}{/if}</div>
</td>
</tr>
</table>
{/if}
</div>
</div>
{if isset($from) && $from == 'footer'}
</div>
{/if}
{if isset($from) && $from == 'tab'}
<div class="alert alert-addons row-margin-top" role="alert">
<p class="alert-text">
<a href="http://addons.prestashop.com/?utm_source=back-office&amp;utm_medium=dispatch&amp;utm_campaign=back-office-en-US&amp;utm_content=download" onclick="return !window.open(this.href);">{l s='More modules on addons.prestashop.com'}</a>
</p>
</div>
{/if}

View File

@@ -0,0 +1,55 @@
{if isset($from) && $from == 'footer'}
<div class="row" {if isset($panel_id)}id="{$panel_id}"{/if}>
<div class="col">
<div class="card">
<h3 class="card-header">
<i class="icon-list-ul"></i>
{if isset($panel_title)}{$panel_title|escape:'html':'UTF-8'}{else}{l s='Modules list'}{/if}
</h3>
{/if}
<div class="card-block">
<div class="module-item-list">
{if count($modules_list)}
{counter start=1 assign="count"}
{foreach from=$modules_list item=module}
{include file='./tab_module_line.tpl' class_row={cycle values=",row alt"}}
{counter}
{/foreach}
{if $controller_name == 'AdminPayment' && isset($view_all)}
<div class="panel-footer">
<div class="col-lg-4 col-lg-offset-4">
<a class="btn btn-default btn-block" href="{$link->getAdminLink('AdminPsMboModule', true, [], ['filterCategoryTab' => 'payments_gateways'])|escape:'html':'UTF-8'}">
<i class="process-icon-payment"></i>
{l s='View all available payments solutions'}
</a>
</div>
</div>
{/if}
{else}
<table class="table">
<tr>
<td>
<div class="alert alert-warning">
{if $controller_name == 'AdminPayment'}
{l s='It seems there are no recommended payment solutions for your country.'}<br />
<a class="_blank" href="https://www.prestashop.com/en/contact-us">{l s='Do you think there should be one? Let us know!'}</a>
{else}{l s='No modules available in this section.'}{/if}</div>
</td>
</tr>
</table>
{/if}
</div>
</div>
{if isset($from) && $from == 'footer'}
</div>
</div>
</div>
{/if}
{if isset($from) && $from == 'tab'}
<div class="alert alert-addons row-margin-top" role="alert">
<p class="alert-text">
<a href="http://addons.prestashop.com/?utm_source=back-office&amp;utm_medium=dispatch&amp;utm_campaign=back-office-en-US&amp;utm_content=download" onclick="return !window.open(this.href);">{l s='More modules on addons.prestashop.com'}</a>
</p>
</div>
{/if}

View File

@@ -0,0 +1,53 @@
{**
* 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
*}
<div class="ps-dropdown dropdown btn-group bordered mb-1">
<div id="catDropdown" class="dropdown-label" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<span class="js-selected-item selected-item module-category-selector-label">
{l s='Categories'}
</span>
<i class="material-icons arrow-down float-right">keyboard_arrow_down</i>
</div>
<div class="ps-dropdown-menu dropdown-menu module-category-selector" aria-labelledby="catDropdown">
<ul class="items-list js-items-list">
<li class="module-category-reset">
<a class="dropdown-item" href="#">
{l s='All Categories' d='Admin.Modules.Feature'}
</a>
</li>
<li class="module-category-menu"
v-for="category in categories.subMenu"
v-bind:data-category-tab="category.tab"
v-bind:data-category-id="category.id_category"
v-bind:data-category-display-ref="category.name"
v-bind:data-category-display-name="category.name"
v-bind:data-category-display-ref-menu="category.refMenu"
>
<a class="dropdown-item" href="#">
[[ category.name ]]<span class="float-right">[[ category.modules.length ]]</span>
</a>
</li>
</ul>
</div>
</div>

View File

@@ -0,0 +1,35 @@
<?php
/**
* 2007-2018 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-2018 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,71 @@
{**
* 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
*}
<div class="module-top-menu">
<div class="row">
<div class="col-md-8">
<div class="input-group" id="search-input-group">
<input type="text" id="module-search-bar" class="form-control" style="display: none;">
{* <div class="pstaggerWrapper "><div class="pstaggerTagsWrapper "></div><div class="pstaggerAddTagWrapper "><input class="pstaggerAddTagInput "></div></div>*}
<div class="input-group-btn">
<button class="btn btn-primary float-right search-button" id="module-search-button">
<i class="material-icons">search</i>
{l s='Search' d='Admin.Actions'}
</button>
</div>
</div>
</div>
<div class="col-md-4 module-menu-item">
{include file="./dropdown_categories.tpl"}
</div>
</div>
</div>
<hr class="top-menu-separator"/>
<div class="module-sorting-menu">
<div class="row">
<div class="col-lg-6">
<div class="module-sorting-search-wording">
<span id="selected_modules" class="module-search-result-wording"><span v-html="visibleModules()"></span> {l s='%nbModules% modules and services selected for you' d='Admin.Modules.Feature' sprintf=['%nbModules%' => '']}</span>
<span class="help-box" data-toggle="popover"
data-title="{l s='Selection' d='Admin.Modules.Feature'}"
data-content="{l s='Customize your store with this selection of modules recommended for your shop, based on your country, language and version of PrestaShop. It includes the most popular modules from our Addons marketplace, and free partner modules.' d='Admin.Modules.Help'}">
</span>
</div>
</div>
<div class="col-lg-6">
<div class="module-sorting module-sorting-author float-right">
<select id="sort_module" class="custom-select sort-component">
<option value="" disabled selected>- {l s='Sort by' d='Admin.Actions'} -</option>
<option value="displayName">{l s='Name' d='Admin.Global'}</option>
<option value="price">{l s='Increasing Price' d='Admin.Modules.Feature'}</option>
<option value="price-desc">{l s='Decreasing Price' d='Admin.Modules.Feature'}</option>
<option value="scoring-desc">{l s='Popularity' d='Admin.Modules.Feature'}</option>
</select>
</div>
</div>
</div>
</div>

View File

@@ -0,0 +1,107 @@
{**
* 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
*}
{if $addons_connect['connected'] === false}
<div id="module-modal-addons-connect" class="modal modal-vcenter fade" role="dialog">
<div class="modal-dialog">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title module-modal-title">{l s='Connect to Addons marketplace' d='Admin.Modules.Feature'}</h4>
<button type="button" class="close" data-dismiss="modal">&times;</button>
</div>
<div class="modal-body">
{* {% if level <= constant('PrestaShopBundle\\Security\\Voter\\PageVoter::LEVEL_UPDATE') %}
<div class="row">
<div class="col-md-12">
<div class="alert alert-danger" role="alert">
<p class="alert-text">
{{ errorMessage }}
</p>
</div>
</div>
</div>
{% else %}*}
<div class="row">
<div class="col-md-12">
<p>
{l s='Link your shop to your Addons account to automatically receive important updates for the modules you purchased. Don\'t have an account yet?' d='Admin.Modules.Feature'}
<a href="https://addons.prestashop.com/authentication.php" target="_blank">{l s='Sign up now' d='Admin.Modules.Feature'}</a>
</p>
{* /prestashop17/admin-dev/index.php/addons/login?_token=4xDZLkW-GyILZheADOFUaFc64RW5FrgiYbJLIpPlWXQ *}
<form id="addons-connect-form" action="{$addons_connect['login_url']}" method="POST">
<div class="form-group">
<label for="module-addons-connect-email">{l s='Email address' d='Admin.Global'}</label>
<input name="username_addons" type="email" class="form-control" id="module-addons-connect-email" placeholder="Email">
</div>
<div class="form-group">
<label for="module-addons-connect-password">{l s='Password' d='Admin.Global'}</label>
<input name="password_addons" type="password" class="form-control" id="module-addons-connect-password" placeholder="Password">
</div>
<div class="checkbox">
<label>
<input name="addons_remember_me" type="checkbox"> {l s='Remember me' d='Admin.Global'}
</label>
</div>
<button type="submit" class="btn btn-primary">{l s='Let\'s go!' d='Admin.Actions'}</button>
<div id="addons_login_btn" class="spinner" style="display:none;"></div>
</form>
<p>
<a href="https://addons.prestashop.com/password.php" target="_blank">{l s='Forgot your password?' d='Admin.Global'}</a>
</p>
</div>
</div>
{* {% endif %}*}
</div>
</div>
</div>
</div>
{else}
<div id="module-modal-addons-logout" class="modal modal-vcenter fade" role="dialog">
<div class="modal-dialog">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">&times;</button>
<h4 class="modal-title module-modal-title">{l s='Confirm logout' d='Admin.Modules.Feature'}</h4>
</div>
<div class="modal-body">
<div class="row">
<div class="col-md-12">
<p>
{l s='You are about to log out your Addons account. You might miss important updates of Addons you\'ve bought.' d='Admin.Modules.Notification'}
</p>
</div>
</div>
</div>
<div class="modal-footer">
<input type="button" class="btn btn-default uppercase" data-dismiss="modal" value="{l s='Cancel' d='Admin.Actions'}">
{* path('admin_addons_logout') *}
<a class="btn btn-primary uppercase" href="{$addons_connect['logout_url']}" id="module-modal-addons-logout-ack">{l s='Yes, log out' d='Admin.Modules.Feature'}</a>
</div>
</div>
</div>
</div>
{/if}

View File

@@ -0,0 +1,48 @@
<div id="modal-prestatrust" class="modal">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">{l s='Module verification' d='Admin.Modules.Feature'}</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="row">
<div class="col-md-2 text-sm-center">
<img id="pstrust-img" src="" alt=""/>
</div>
<div class="col-md-10">
<dl class="row">
<dt class="col-sm-3">{l s='Module' d='Admin.Global'}</dt>
<dd class="col-sm-9">
<strong id="pstrust-name"></strong>
</dd>
<dt class="col-sm-3">{l s='Author' d='Admin.Modules.Feature'}</dt>
<dd class="col-sm-9" id="pstrust-author"></dd>
<dt class="col-sm-3">{l s='Status' d='Admin.Global'}</dt>
<dd class="col-sm-9"><strong><span class="text-info" id="pstrust-label"></span></strong></dd>
</dl>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div class="alert alert-info" id="pstrust-message" role="alert">
<p class="alert-text"></p>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<div id="pstrust-btn-property-ok">
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">{l s='Back to modules list' d='Admin.Modules.Feature'}</button>
<button type="submit" class="btn btn-primary pstrust-install">{l s='Proceed with the installation' d='Admin.Modules.Feature'}</button>
</div>
<div id="pstrust-btn-property-nok">
<button type="submit" class="btn btn-outline-secondary pstrust-install">{l s='Proceed with the installation' d='Admin.Modules.Feature'}</button>
<a href="" class="btn btn-primary" id="pstrust-buy" target="_blank">{l s='Buy module' d='Admin.Modules.Feature'}</a>
</div>
</div>
</div>
</div>
</div>

View File

@@ -0,0 +1,94 @@
{**
* 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
*}
<div id="module-modal-import" class="modal modal-vcenter fade" role="dialog" data-backdrop="static" data-keyboard="false">
<div class="modal-dialog">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title module-modal-title">{l s='Upload a module' d='Admin.Modules.Feature'}</h4>
<button id="module-modal-import-closing-cross" type="button" class="close">&times;</button>
</div>
<div class="modal-body">
{* {% if level <= constant('PrestaShopBundle\\Security\\Voter\\PageVoter::LEVEL_UPDATE') %}
<div class="row">
<div class="col-md-12">
<div class="alert alert-danger" role="alert">
<p class="alert-text">
{{ errorMessage }}
</p>
</div>
</div>
</div>
{% else %}*}
<div class="row">
<div class="col-md-12">
<form action="#" class="dropzone" id="importDropzone">
<div class="module-import-start">
<i class="module-import-start-icon material-icons">cloud_upload</i><br/>
<p class=module-import-start-main-text>
{l s='Drop your module archive here or' d='Admin.Modules.Feature'}
<a href="#" class="module-import-start-select-manual">{l s='select file' d='Admin.Modules.Feature'}</a>
</p>
<p class=module-import-start-footer-text>
{l s='Please upload one file at a time, .zip or tarball format (.tar, .tar.gz or .tgz).' d='Admin.Modules.Help'}
{l s='Your module will be installed right after that.' d='Admin.Modules.Help'}
</p>
</div>
<div class='module-import-processing'>
<!-- Loader -->
<div class="spinner"></div>
<p class=module-import-processing-main-text>
{l s='Installing module...' d='Admin.Modules.Notification'}
</p>
<p class=module-import-processing-footer-text>
{l s='It will close as soon as the module is installed. It won\'t be long!' d='Admin.Modules.Notification'}
</p>
</div>
<div class='module-import-success'>
<i class="module-import-success-icon material-icons">done</i><br/>
<p class='module-import-success-msg'>{l s='Module installed!' d='Admin.Modules.Notification'}</p>
<p class="module-import-success-details"></p>
<a class="module-import-success-configure btn btn-primary-reverse btn-outline-primary light-button" href='#'>{l s='Configure' d='Admin.Actions'}</a>
</div>
<div class='module-import-failure'>
<i class="module-import-failure-icon material-icons">error</i><br/>
<p class='module-import-failure-msg'>{l s='Oops... Upload failed.' d='Admin.Modules.Notification'}</p>
<a href="#" class="module-import-failure-details-action">{l s='What happened?' d='Admin.Modules.Help'}</a>
<div class='module-import-failure-details'></div>
<a class="module-import-failure-retry btn btn-tertiary" href='#'>{l s='Try again' d='Admin.Actions'}</a>
</div>
<div class='module-import-confirm'>
</div>
<input type="file" multiple="multiple" class="dz-hidden-input" accept=".zip, .tar" style="visibility: hidden; position: absolute; top: 0px; left: 0px; height: 0px; width: 0px;">
</form>
</div>
</div>
{* {% endif %}*}
</div>
<div class="modal-footer">
</div>
</div>
</div>
</div>

View File

@@ -0,0 +1,111 @@
{**
* 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
*}
<tr>
<td class="fixed-width-sm center">
<img class="img-thumbnail" alt="{$module->name}" src="{if isset($module->image)}{$module->image}{else}{$smarty.const._MODULE_DIR_}{$module->name}/{$module->logo}{/if}" />
</td>
<td>
<div id="anchor{$module->name|ucfirst}" title="{$module->displayName}">
<div class="module_name">
<span style="display:none">{$module->name}</span>
{$module->displayName}
<small class="text-muted">v{$module->version} - by {$module->author}</small>
{if isset($module->type) && $module->type == 'addonsBought'}
- <span class="module-badge-bought help-tooltip text-warning" data-title="{l s="You bought this module on PrestaShop Addons. Thank You."}"><i class="icon-pushpin"></i> <small>{l s="Bought"}</small></span>
{elseif isset($module->type) && $module->type == 'addonsMustHave'}
- <span class="module-badge-popular help-tooltip text-primary" data-title="{l s="This module is available on PrestaShop Addons"}"><i class="icon-group"></i> <small>{l s="Popular"}</small></span>
{elseif isset($module->type) && $module->type == 'addonsPartner'}
- <span class="module-badge-partner help-tooltip text-warning" data-title="{l s="This module is available for free thanks to our partner."}"><i class="icon-pushpin"></i> <small>{l s="Official"}</small></span>
{elseif isset($module->id) && $module->id gt 0}
{if isset($module->version_addons) && $module->version_addons}
<span class="label label-warning">{l s='Need update'}</span>
{/if}
{/if}
</div>
<p class="module_description">
{if isset($module->description) && $module->description ne ''}
{$module->description}
{/if}
{if isset($module->show_quick_view) && $module->show_quick_view}
<br><a href="{if isset($admin_module_ajax_url_psmbo)}{$admin_module_ajax_url_psmbo}{/if}" class="controller-quick-view" data-name="{$module->name|escape:'html':'UTF-8'}"><i class="icon-search"></i> {l s='Read more'}</a>
{/if}
</p>
{if isset($module->message) && (empty($module->name) !== false) && (!isset($module->type) || ($module->type != 'addonsMustHave' || $module->type !== 'addonsNative'))}<div class="alert alert-success"><button type="button" class="close" data-dismiss="alert">&times;</button>{$module->message}</div>{/if}
</div>
</td>
{if isset($module->type) && $module->type == 'addonsMustHave'}
<td>&nbsp;</td>
<td style="text-align: right;">
<p>
<a href="{$module->addons_buy_url|replace:' ':'+'|escape:'html':'UTF-8'}" target="_blank" class="button updated _blank">
<span class="btn btn-default">
<i class="icon-shopping-cart"></i>{if isset($module->price)}{if $module->price|floatval == 0}{l s='Free'}{elseif isset($module->id_currency)} &nbsp;&nbsp;{displayPrice price=$module->price currency=$module->id_currency}{/if}{/if}
</span>
</a>
</p>
</td>
{elseif !isset($module->not_on_disk)}
<td>&nbsp;</td>
<td class="actions">
<div class="btn-group-action">
{if $module->optionsHtml|count > 0}
<div class="btn-group">
{assign var=option value=$module->optionsHtml[0]}
{$option}
{if $module->optionsHtml|count > 1}
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" >
<span class="caret">&nbsp;</span>
</button>
<ul class="dropdown-menu pull-right">
{foreach $module->optionsHtml key=key item=option}
{if $key != 0}
{if strpos($option, 'title="divider"') !== false}
<li class="divider"></li>
{else}
<li>{$option}</li>
{/if}
{/if}
{/foreach}
</ul>
{/if}
</div>
{/if}
</div>
</td>
{else}
<td>&nbsp;</td>
<td style="text-align: right;">
<p>
<form method="POST" action="{$module->options.install_url|escape:'html':'UTF-8'}">
<a href="{$module->options.install_url|escape:'html':'UTF-8'}" class="btn btn-success">
<i class="icon-plus-sign-alt"></i>
{l s='Install'}
</a>
</form>
</p>
</td>
{/if}
</tr>

View File

@@ -0,0 +1,108 @@
{**
* 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
*}
<div class="row module-item-wrapper-list border-bottom mb-sm-3">
<div class="col-12 col-sm-2 col-md-1 col-lg-1">
<div class="module-logo-thumb-list text-center">
<img alt="{$module->name}" src="{if isset($module->image)}../../../{$module->image}{else}{$smarty.const._MODULE_DIR_}{$module->name}/{$module->logo}{/if}" />
</div>
</div>
<div class="col-12 col-sm-6 col-md-8 col-lg-9 pl-0">
<p class="mb-0">
<span style="display:none">{$module->name}</span>
{$module->displayName}
<span class="text-muted">v{$module->version} - by {$module->author}</span>
{if isset($module->type) && $module->type == 'addonsBought'}
- <span class="module-badge-bought help-tooltip text-warning" data-title="{l s="You bought this module on PrestaShop Addons. Thank You."}"><i class="icon-pushpin"></i> <small>{l s="Bought"}</small></span>
{elseif isset($module->type) && $module->type == 'addonsMustHave'}
- <span class="module-badge-popular help-tooltip text-primary" data-title="{l s="This module is available on PrestaShop Addons"}"><i class="icon-group"></i> <small>{l s="Popular"}</small></span>
{elseif isset($module->type) && $module->type == 'addonsPartner'}
- <span class="module-badge-partner help-tooltip text-warning" data-title="{l s="This module is available for free thanks to our partner."}"><i class="icon-pushpin"></i> <small>{l s="Official"}</small></span>
{elseif isset($module->id) && $module->id gt 0}
{if isset($module->version_addons) && $module->version_addons}
<span class="label label-warning">{l s='Need update'}</span>
{/if}
{/if}
</p>
<p class="text-muted">
{if isset($module->description) && $module->description ne ''}
{$module->description}
{/if}
{if isset($module->show_quick_view) && $module->show_quick_view}
<br><a href="{if isset($admin_module_ajax_url_psmbo)}{$admin_module_ajax_url_psmbo}{/if}" class="controller-quick-view" data-name="{$module->name|escape:'html':'UTF-8'}"><i class="icon-search"></i> {l s='Read more'}</a>
{/if}
</p>
{if isset($module->message) && (empty($module->name) !== false) && (!isset($module->type) || ($module->type != 'addonsMustHave' || $module->type !== 'addonsNative'))}<div class="alert alert-success"><button type="button" class="close" data-dismiss="alert">&times;</button>{$module->message}</div>{/if}
</div>
{if isset($module->type) && $module->type == 'addonsMustHave'}
<div class="col-12 col-sm-4 col-md-3 col-lg-2 mb-3">
<div class="text-center">
<a href="{$module->addons_buy_url|replace:' ':'+'|escape:'html':'UTF-8'}" onclick="return !window.open(this.href, '_blank');" class="btn btn-primary-reverse btn-outline-primary light-button _blank">
<span>
<i class="icon-shopping-cart"></i>{if isset($module->price)}{if $module->price|floatval == 0}{l s='Free'}{elseif isset($module->id_currency)} &nbsp;&nbsp;{displayPrice price=$module->price currency=$module->id_currency}{/if}{/if}
</span>
</a>
</div>
</div>
{elseif !isset($module->not_on_disk)}
<div class="col-12 col-sm-4 col-md-3 col-lg-2 mb-3">
<div class="text-center">
{if $module->optionsHtml|count > 0}
<div class="btn-group">
{assign var=option value=$module->optionsHtml[0]}
{$option}
{if $module->optionsHtml|count > 1}
<button type="button" class="btn btn-primary-reverse btn-outline-primary light-button dropdown-toggle" data-toggle="dropdown" >
<span class="caret">&nbsp;</span>
</button>
<ul class="dropdown-menu pull-right">
{foreach $module->optionsHtml key=key item=option}
{if $key != 0}
{if strpos($option, 'title="divider"') !== false}
<li class="divider">BB</li>
{else}
<li>AAA{$option}</li>
{/if}
{/if}
{/foreach}
</ul>
{/if}
</div>
{/if}
</div>
</div>
{else}
<div class="col-12 col-sm-4 col-md-3 col-lg-2 mb-3">
<div class="text-center">
<form method="POST" action="{$module->options.install_url|escape:'html':'UTF-8'}">
<a href="{$module->options.install_url|escape:'html':'UTF-8'}" class="btn btn-primary-reverse btn-outline-primary light-button ">
<i class="icon-plus-sign-alt"></i>
{l s='Install'}
</a>
</form>
</div>
</div>
{/if}
</div>

View File

@@ -0,0 +1,28 @@
<?php
/**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License version 3.0
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0
*/
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,19 @@
{#**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License version 3.0
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0
*#}
{% block content %}{% endblock %}

View File

@@ -0,0 +1,39 @@
{**
* 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
*}
<div class="modal fade" id="modules_list_container">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
<h3 class="modal-title">{l s='Recommended Modules and Services'}</h3>
</div>
<div class="modal-body">
<div id="modules_list_container_tab_modal" style="display:none;"></div>
<div id="modules_list_loader"><i class="icon-refresh icon-spin"></i></div>
</div>
</div>
</div>
</div>

View File

@@ -0,0 +1,26 @@
<div class="toolbar-icons">
<div class="wrapper">
<a class="btn btn-primary pointer" id="page-header-desc-configuration-add_module" href="#" title="" data-toggle="modal" data-placement="bottom" data-original-title="Installer un module" data-target="#module-modal-import">
<i class="material-icons">cloud_upload</i>
{l s='Install a module'}
</a>
{if isset($addons_connect)}
{if $addons_connect['connected'] === true}
<a class="btn btn-primary pointer" id="page-header-desc-configuration-addons_logout" href="#" title="" data-toggle="modal" data-placement="bottom" data-original-title="{l s='Synchronized with Addons marketplace' d='Admin.Modules.Notification'}" data-target="#module-modal-addons-logout">
<i class="material-icons">exit_to_app</i>
{$addons_connect['email']}
</a>
{else}
<a class="btn btn-primary pointer" id="page-header-desc-configuration-addons_connect" href="#" title="" data-toggle="modal" data-placement="bottom" data-original-title="{l s='Connect to Addons marketplace' d='Admin.Modules.Feature'}" data-target="#module-modal-addons-connect">
<i class="material-icons">vpn_key</i>
{l s='Connect to Addons marketplace' d='Admin.Modules.Feature'}
</a>
{/if}
{/if}
<a class="btn btn-outline-secondary btn-help btn-sidebar" href="" title="{l s='Help'}" data-toggle="sidebar" data-target="#right-sidebar" data-url="" id="product_form_open_help">
{l s='Help'}
</a>
</div>
</div>

View File

@@ -0,0 +1,171 @@
{**
* 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
*}
<script>
var admin_module_ajax_url_psmbo = '{$admin_module_ajax_url_psmbo}';
$('#product_form_open_help').attr('href', $('#toolbar-nav li a.btn-help').attr('href'));
$('#toolbar-nav li a.btn-help').hide();
</script>
{if isset($filterCategoryTab)}
<script>
var filterCategoryTab = '{$filterCategoryTab}';
</script>
{/if}
{if isset($javascript_urls)}
<script>
var mboJavascriptUrls = {$javascript_urls};
</script>
{/if}
<div id="psmbo" class="row justify-content-center">
<div class="col-lg-10 module-catalog-page">
{include file="./include/menu_top.tpl"}
<div id="modules-list-container-all" class="row modules-list">
<div class="col-sm-12 text-center">
<button class="btn-primary-reverse onclick unbind spinner hide"></button>
</div>
<div
v-for="module in modules"
v-show="module.attributes.visible"
class="module-item module-item-grid col-md-12 col-lg-6 col-xl-3"
v-bind:data-id="module.attributes.id"
v-bind:data-name="module.attributes.displayName"
v-bind:data-scoring="module.attributes.avgRate"
v-bind:data-logo="module.attributes.img"
v-bind:data-author="module.attributes.author"
v-bind:data-version="module.attributes.version"
v-bind:data-description="module.attributes.description"
v-bind:data-tech-name="module.attributes.name"
v-bind:data-child-categories="module.attributes.categoryName"
v-bind:data-categories="module.attributes.categoryParentId"
v-bind:data-type="module.attributes.product_type"
>
<div class="module-item-wrapper-grid">
<div class="module-item-heading-grid">
<div class="module-logo-thumb-grid">
<img v-bind:src="module.attributes.img" v-bind:alt="module.attributes.displayName"/>
</div>
<h3
class="text-ellipsis module-name-grid"
data-toggle="pstooltip"
data-placement="top"
v-bind:title="module.attributes.displayName"
>
<span v-if="module.attributes.displayName">
[[ module.attributes.displayName ]]
</span>
<span v-else> [[ module.attributes.name ]]</span>
<span v-if="module.attributes.prestatrust">
<img v-bind:src="module.attributes.prestatrust.pico">
</span>
</h3>
<div v-if="module.attributes.product_type === 'service'" class="text-ellipsis small-text module-version-author-grid">
{l s='Service by'} <b>[[ module.attributes.author ]]</b>
</div>
<div v-else class="text-ellipsis small-text module-version-author-grid">
v[[ module.attributes.version ]] - {l s='by'} <b>[[ module.attributes.author ]]</b>
</div>
</div>
<div class="module-quick-description-grid small no-padding mb-0">
<div class="module-quick-description-text">
[[ module.attributes.description ]]
<span v-if="module.attributes.description.length > 0 && module.attributes.description.length < module.attributes.fullDescription.length">
...
</span>
</div>
<div class="module-read-more-grid">
<a v-if="module.attributes.id != '0'" v-bind:href="getHref(module.attributes.name)" class="fancybox-quick-view url" v-bind:data-module-name="module.attributes.name">
{l s='Read More' d='Admin.Modules.Feature'}
</a>
</div>
</div>
<div class="module-container module-quick-action-grid clearfix">
<div class="badges-container">
<div v-for="badge in module.attributes.badges">
<img v-bind:src="badge.img" v-bind:alt="badge.label"/>
<span>[[ badge.label ]]</span>
</div>
</div>
<hr v-if="module.attributes.badges" />
<div v-if="module.attributes.nbRates > 0" class="float-left" v-bind:class="getAvgRateClass(module.attributes.avgRate)">
([[ module.attributes.nbRates ]])
</div>
<div class="float-right module-price">
<span v-if="module.attributes.price === 0" class="pt-2" >
{l s='Free'}
</span>
<span v-else>
[[ module.attributes.price ]] {$currency_symbol}
</span>
</div>
{if isset($requireBulkActions) && $requireBulkActions == true}
<div class="float-right module-checkbox-bulk-grid">
<input type="checkbox" v-bind:data-name="module.attributes.displayName" v-bind:data-tech-name="module.attributes.name" />
</div>
{/if}
{include file="./include/action_menu.tpl"}
</div>
</div>
</div>
<div id="see-results-addons" class="module-item module-item-grid col-md-12 col-lg-6 col-xl-3 hidden">
<div class="module-item-wrapper-grid">
<div class="module-item-heading-grid" style="height: 350px;">
<div style="line-height: 220px;">
<img src="{$bo_img}preston.png?1.7.0" alt="{l s='Exit to PrestaShop Addons Marketplace'}">
</div>
{l s='See all results for your search on'}<br>
<a class="url" href="#" target="_blank">{l s='PrestaShop Addons Marketplace'}</a>
</div>
</div>
</div>
</div>
</div>
<input type="hidden" id="install_url" value="{(isset($install_url)) ? $install_url : ''}" >
<input type="hidden" id="module_controller_token" value="{(isset($module_controller_token)) ? $module_controller_token : ''}" >
<input type="hidden" id="notification_count_url" value="{(isset($notification_count_url)) ? $notification_count_url : ''}" >
{include file="./include/modal_import.tpl"}
{include file="./include/modal_confirm_prestatrust.tpl"}
</div>
<div id="fancyBox">
</div>

View File

@@ -0,0 +1,104 @@
{**
* 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
*}
<div class="bootstrap">
<div class="col-lg-2">
<img src="{$image}" alt="{$displayName}" class="img-thumbnail" />
{if isset($badges)}
{foreach $badges as $badge}
{if is_array($badge)}
{foreach $badge as $_badge}
<img src="{$_badge}" alt="" class="clearfix quickview-badge" />
{/foreach}
{else}
<img src="{$badge}" alt="" class="clearfix quickview-badge" />
{/if}
{/foreach}
{/if}
</div>
<div class="col-lg-10">
<h1>{$displayName}</h1>
<div class="row">
<div class="col-sm-6">
{if (int)$nb_rates > 0}
<span class="rating">
<span class="star{if $avg_rate == 5} active{/if}"></span>
<span class="star{if $avg_rate == 4} active{/if}"></span>
<span class="star{if $avg_rate == 3} active{/if}"></span>
<span class="star{if $avg_rate == 2} active{/if}"></span>
<span class="star{if $avg_rate == 1} active{/if}"></span>
</span>
<p class="small">{if (int)$nb_rates > 1}{l s="(%s votes)" sprintf=[$nb_rates]}{else}{l s="(%s vote)" sprintf=[$nb_rates]}{/if}</p>
{/if}
</div>
<div class="col-sm-6">
{if (int)$price}
<div class="quickview-price">
{displayPrice price=$price currency=$id_currency}
</div>
{/if}
</div>
</div>
<hr />
<h3>{l s="Description"}</h3>
<p class="text-justify">{$description_full}</p>
{if isset($additional_description) && trim($additional_description) != ''}
<hr />
<h3>{l s="Merchant benefits"}</h3>
<p class="text-justify">{$additional_description}</p>
{/if}
<hr />
{if isset($installed) && $installed}
<div class="btn-group-action pull-right">
{if $options|count > 0}
<div class="btn-group">
{assign var=option value=$options[0]}
{$option}
{if $options|count > 1}
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" >
<span class="caret">&nbsp;</span>
</button>
<ul class="dropdown-menu pull-right">
{foreach $options key=key item=option}
{if $key != 0}
{if strpos($option, 'title="divider"') !== false}
<li class="divider"></li>
{else}
<li>{$option}</li>
{/if}
{/if}
{/foreach}
</ul>
{/if}
</div>
{/if}
</div>
{elseif isset($is_addons_partner) && $is_addons_partner}
<a class="btn btn-success btn-lg pull-right" href="{$url}">{l s='Install module'}</a>
{else}
<a class="btn btn-success btn-lg pull-right" href="{$url}" onclick="return !window.open(this.href, '_blank');">{l s='View on PrestaShop Addons'}</a>
{/if}
</div>
</div>

View File

@@ -0,0 +1,29 @@
{**
* 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
*}
{if $display_addons_content}
{$addons_content}
{else}
<iframe class="clearfix" style="margin:0px;padding:0px;width:100%;height:920px;overflow:hidden;border:none" src="//addons.prestashop.com/iframe/search.php?isoLang={$iso_lang}&amp;isoCurrency={$iso_currency}&amp;isoCountry={$iso_country}&amp;parentUrl={$parent_domain}"></iframe>
{/if}

View File

@@ -0,0 +1,98 @@
{**
* 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
*}
{if !$isSymfonyContext}
<li style="display:none;">
<a id="page-header-desc-carrier-new_carrier" class="toolbar_btn pointer" href="" title="{l s='Recommended Modules and Services'}">
<i class="process-icon-modules-list"></i>
<div>{l s='Recommended Modules and Services'}</div>
</a>
</li>
{/if}
<script>
var isSymfonyContext = {if $isSymfonyContext}true{else}false{/if};
var admin_module_ajax_url_psmbo = '{$admin_module_ajax_url_psmbo}';
var controller = '{$controller}';
if (isSymfonyContext === false) {
$(document).ready(function() {
$('.process-icon-modules-list').parent('a').prop('href', admin_module_ajax_url_psmbo);
$('.fancybox-quick-view').fancybox({
type: 'ajax',
autoDimensions: false,
autoSize: false,
width: 600,
height: 'auto',
helpers: {
overlay: {
locked: false
}
}
});
});
}
$(document).on('click', '#page-header-desc-configuration-modules-list', function(event) {
event.preventDefault();
openModalOrRedirect(isSymfonyContext);
});
$('.process-icon-modules-list').parent('a').unbind().bind('click', function (event) {
event.preventDefault();
openModalOrRedirect(isSymfonyContext);
});
function openModalOrRedirect(isSymfonyContext) {
if (isSymfonyContext === false) {
$('#modules_list_container').modal('show');
openModulesList();
} else {
window.location.href = admin_module_ajax_url_psmbo;
}
}
function openModulesList() {
$.ajax({
type: 'POST',
url: admin_module_ajax_url_psmbo,
data: {
ajax : true,
action : 'GetTabModulesList',
controllerName: controller
},
success : function(data) {
$('#modules_list_container_tab_modal').html(data).slideDown();
$('#modules_list_loader').hide();
},
});
}
</script>

View File

@@ -0,0 +1,28 @@
<?php
/**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License version 3.0
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0
*/
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,57 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License version 3.0
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0
*}
<script>
if (undefined !== mbo) {
mbo.initialize({
translations: {
'Recommended Modules and Services': '{$recommendedModulesTitleTranslated|escape:'javascript'}',
'description': "{$recommendedModulesDescriptionTranslated|escape:'javascript'}",
'Close': '{$recommendedModulesCloseTranslated|escape:'javascript'}',
},
recommendedModulesUrl: '{$recommendedModulesUrl|escape:'javascript'}',
shouldAttachRecommendedModulesAfterContent: {$shouldAttachRecommendedModulesAfterContent|intval},
shouldAttachRecommendedModulesButton: {$shouldAttachRecommendedModulesButton|intval},
shouldUseLegacyTheme: {$shouldUseLegacyTheme|intval},
});
}
</script>
{if $shouldDisplayModuleManagerMessage}
<script>
$(document).ready( function () {
if (typeof window.mboCdc !== undefined && typeof window.mboCdc !== "undefined") {
const targetDiv = $('#main-div .content-div').first()
const divModuleManagerMessage = document.createElement("div");
divModuleManagerMessage.setAttribute("id", "module-manager-message-cdc-container");
divModuleManagerMessage.classList.add('module-manager-message-wrapper');
divModuleManagerMessage.classList.add('cdc-container');
targetDiv.prepend(divModuleManagerMessage)
const renderModulesManagerMessage = window.mboCdc.renderModulesManagerMessage
const context = {$shopContext};
renderModulesManagerMessage(context, '#module-manager-message-cdc-container')
}
})
</script>
{/if}

View File

@@ -0,0 +1,28 @@
<?php
/**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License version 3.0
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0
*/
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;