first commit

This commit is contained in:
2024-12-17 13:43:22 +01:00
commit 8e6cd8b410
21292 changed files with 3514826 additions and 0 deletions

View File

@@ -0,0 +1,34 @@
<?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,49 @@
img.mail-chimp {
float: none;
vertical-align: middle;
width: 100px;
}
.alert.alert-info.alert-mc {
border-left: 3px solid #2a71bb;
background-color: #c5dbf2;
color: #2a71bb;
}
.alert.alert-info.alert-mc:before {
position: absolute;
top: 6px;
display: block;
height: 25px;
width: 25px;
color: #2a71bb;
left: 7px;
}
.alert.alert-success.alert-mc, .alert.alert-success {
border-left: 3px solid #00C14e !important;
background-color: #e5fff0;
color: #00C14e;
}
.alert.alert-success.alert-mc:before, .alert.alert-success:before {
position: absolute;
top: 6px;
display: block;
height: 25px;
width: 25px;
color: #00C14e !important;
left: 7px;
}
/*.btn.btn-primary.btn-mc:hover, .btn.btn-primary.btn-mc:hover i {*/
/*background: #e6c600;*/
/*border-color: #f2ca59;*/
/*}*/
/*.btn.btn-primary.btn-mc, .btn.btn-primary.btn-mc i {*/
/*color: #241c15;*/
/*background: #FFE01B;*/
/*border-color: #e6c600;*/
/*}*/

View File

@@ -0,0 +1,217 @@
/*!
* SmartWizard v4.3.x
* jQuery Wizard Plugin
* http://www.techlaboratory.net/smartwizard
*
* Created by Dipu Raj
* http://dipuraj.me
*
* Licensed under the terms of MIT License
* https://github.com/techlab/SmartWizard/blob/master/LICENSE
*/
/* SmartWizard Basic CSS */
.sw-main {
position: relative;
display: block;
margin: 0;
padding: 0;
border-radius: .25rem!important;
}
.sw-main .sw-container {
display: block;
margin: 0;
padding: 0;
position: relative;
}
.sw-main .step-content {
display: none;
position: relative;
margin: 0;
}
.sw-main .sw-toolbar {
margin-left: 0;
}
/* SmartWizard Theme: White */
.sw-theme-default {
-webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
}
.sw-theme-default .sw-container {
min-height: 250px;
}
.sw-theme-default .step-content {
padding: 10px;
border: 0 solid #D4D4D4;
background-color: #FFF;
text-align: left;
}
.sw-theme-default .sw-toolbar {
background: #f9f9f9;
border-radius: 0 !important;
padding: 10px;
margin-bottom: 0 !important;
}
.sw-theme-default .sw-toolbar-top {
border-bottom-color: #ddd !important;
}
.sw-theme-default .sw-toolbar-bottom {
border-top-color: #ddd !important;
}
.sw-theme-default > ul.step-anchor > li {
position: relative;
margin-right: 2px;
}
.sw-theme-default > ul.step-anchor > li > a, .sw-theme-default > ul.step-anchor > li > a:hover {
border: none !important;
color: #bbb;
text-decoration: none;
outline-style: none;
background: transparent !important;
cursor: not-allowed;
}
.sw-theme-default > ul.step-anchor > li.clickable > a:hover {
color: #FFE01B !important;
background: transparent !important;
cursor: pointer;
}
.sw-theme-default > ul.step-anchor > li > a::after {
content: "";
background: #FFE01B;
height: 2px;
position: absolute;
width: 100%;
left: 0;
bottom: 0;
-webkit-transition: all 250ms ease 0s;
transition: all 250ms ease 0s;
-webkit-transform: scale(0);
-ms-transform: scale(0);
transform: scale(0);
}
.sw-theme-default > ul.step-anchor > li.active > a {
border: none !important;
color: #241c15 !important;
font-weight: 600;
background: transparent !important;
cursor: pointer;
}
.sw-theme-default > ul.step-anchor > li.active > a::after {
-webkit-transform: scale(1);
-ms-transform: scale(1);
transform: scale(1);
}
.sw-theme-default > ul.step-anchor > li.done > a {
border: none !important;
color: #000 !important;
background: transparent !important;
cursor: pointer;
}
.sw-theme-default > ul.step-anchor > li.done > a::after {
background: #00C14e;
-webkit-transform: scale(1);
-ms-transform: scale(1);
transform: scale(1);
}
.sw-theme-default > ul.step-anchor > li.danger > a {
border: none !important;
color: #d9534f !important;
/* background: #d9534f !important; */
cursor: pointer;
}
.sw-theme-default > ul.step-anchor > li.danger > a::after {
background: #d9534f;
border-left-color: #f8d7da;
-webkit-transform: scale(1);
-ms-transform: scale(1);
transform: scale(1);
}
.sw-theme-default > ul.step-anchor > li.disabled > a, .sw-theme-default > ul.step-anchor > li.disabled > a:hover {
color: #eee !important;
cursor: not-allowed;
}
/* Responsive CSS */
@media screen and (max-width: 768px) {
.sw-theme-default > .nav-tabs > li {
float: none !important;
}
}
/* Common Loader */
.sw-loading::after {
position: absolute;
display: block;
opacity: 1;
content: "";
top: 0;
left: 0;
height: 100%;
width: 100%;
background: rgba(255,255,255,.7);
-webkit-transition: all .2s ease;
transition: all .2s ease;
z-index: 2;
}
.sw-loading::before {
content: '';
display: inline-block;
position: absolute;
top: 50%;
left: 50%;
z-index: 10;
border: 10px solid #f3f3f3;
border-radius: 50%;
border-top: 10px solid #3498db;
width: 80px;
height: 80px;
margin-top: -40px;
margin-left: -40px;
-webkit-animation: spin 1s linear infinite;
/* Safari */
animation: spin 1s linear infinite;
}
/* Safari */
@-webkit-keyframes spin {
0% {
-webkit-transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(360deg);
}
}
@keyframes spin {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg);
}
}

View File

@@ -0,0 +1,11 @@
/*!
* SmartWizard v4.3.x
* jQuery Wizard Plugin
* http://www.techlaboratory.net/smartwizard
*
* Created by Dipu Raj
* http://dipuraj.me
*
* Licensed under the terms of MIT License
* https://github.com/techlab/SmartWizard/blob/master/LICENSE
*/.sw-main{position:relative;display:block;margin:0;padding:0;border-radius:.25rem!important}.sw-main .sw-container{display:block;margin:0;padding:0;position:relative}.sw-main .step-content{display:none;position:relative;margin:0}.sw-main .sw-toolbar{margin-left:0}.sw-theme-default{-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3)}.sw-theme-default .sw-container{min-height:250px}.sw-theme-default .step-content{padding:10px;border:0 solid #d4d4d4;background-color:#fff;text-align:left}.sw-theme-default .sw-toolbar{background:#f9f9f9;border-radius:0!important;padding-left:10px;padding-right:10px;padding:10px;margin-bottom:0!important}.sw-theme-default .sw-toolbar-top{border-bottom-color:#ddd!important}.sw-theme-default .sw-toolbar-bottom{border-top-color:#ddd!important}.sw-theme-default>ul.step-anchor>li{position:relative;margin-right:2px}.sw-theme-default>ul.step-anchor>li>a,.sw-theme-default>ul.step-anchor>li>a:hover{border:none!important;color:#bbb;text-decoration:none;outline-style:none;background:0 0!important;border:none!important;cursor:not-allowed}.sw-theme-default>ul.step-anchor>li.clickable>a:hover{color:#4285f4!important;background:0 0!important;cursor:pointer}.sw-theme-default>ul.step-anchor>li>a::after{content:"";background:#4285f4;height:2px;position:absolute;width:100%;left:0;bottom:0;-webkit-transition:all 250ms ease 0s;transition:all 250ms ease 0s;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0)}.sw-theme-default>ul.step-anchor>li.active>a{border:none!important;color:#4285f4!important;background:0 0!important;cursor:pointer}.sw-theme-default>ul.step-anchor>li.active>a::after{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.sw-theme-default>ul.step-anchor>li.done>a{border:none!important;color:#000!important;background:0 0!important;cursor:pointer}.sw-theme-default>ul.step-anchor>li.done>a::after{background:#00C14e;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.sw-theme-default>ul.step-anchor>li.danger>a{border:none!important;color:#d9534f!important;cursor:pointer}.sw-theme-default>ul.step-anchor>li.danger>a::after{background:#d9534f;border-left-color:#f8d7da;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.sw-theme-default>ul.step-anchor>li.disabled>a,.sw-theme-default>ul.step-anchor>li.disabled>a:hover{color:#eee!important;cursor:not-allowed}@media screen and (max-width:768px){.sw-theme-default>.nav-tabs>li{float:none!important}}.sw-loading::after{position:absolute;display:block;opacity:1;content:"";top:0;left:0;height:100%;width:100%;background:rgba(255,255,255,.7);-webkit-transition:all .2s ease;transition:all .2s ease;z-index:2}.sw-loading::before{content:'';display:inline-block;position:absolute;top:50%;left:50%;z-index:10;border:10px solid #f3f3f3;border-radius:50%;border-top:10px solid #3498db;width:80px;height:80px;margin-top:-40px;margin-left:-40px;-webkit-animation:spin 1s linear infinite;animation:spin 1s linear infinite}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0)}100%{-webkit-transform:rotate(360deg)}}@keyframes spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}

View File

@@ -0,0 +1,189 @@
/*!
* SmartWizard v4.3.x
* jQuery Wizard Plugin
* http://www.techlaboratory.net/smartwizard
*
* Created by Dipu Raj
* http://dipuraj.me
*
* Licensed under the terms of MIT License
* https://github.com/techlab/SmartWizard/blob/master/LICENSE
*/
/* SmartWizard Theme: Arrows */
.sw-theme-arrows {
border-radius: 5px;
border: 1px solid #ddd;
}
.sw-theme-arrows > .sw-container {
min-height: 200px;
}
.sw-theme-arrows .step-content {
padding: 0 10px;
border: 0 solid #D4D4D4;
background-color: #FFF;
text-align: left;
}
.sw-theme-arrows .sw-toolbar {
padding: 10px;
margin-bottom: 0 !important;
}
.sw-theme-arrows > .sw-toolbar-top {
}
.sw-theme-arrows > .sw-toolbar-bottom {
}
.sw-theme-arrows > ul.step-anchor {
border: 0;
border-bottom: 1px solid #ddd;
padding: 0;
background: #f5f5f5;
border-radius: 0 5px 0 0;
list-style: none;
overflow: hidden;
}
.sw-theme-arrows > ul.step-anchor li+li:before {
padding: 0;
}
.sw-theme-arrows > ul.step-anchor > li {
}
.sw-theme-arrows > ul.step-anchor > li > a, .sw-theme-arrows > ul.step-anchor > li > a:hover {
color: #bbb;
text-decoration: none;
padding: 10px 0 10px 45px;
position: relative;
display: block;
border: 0 !important;
border-radius: 0;
outline-style: none;
background: #f5f5f5;
}
.sw-theme-arrows > ul.step-anchor > li > a:after {
content: " ";
display: block;
width: 0;
height: 0;
border-top: 50px solid transparent;
border-bottom: 50px solid transparent;
border-left: 30px solid #f5f5f5;
position: absolute;
top: 50%;
margin-top: -50px;
left: 100%;
z-index: 2;
}
.sw-theme-arrows > ul.step-anchor > li > a:before {
content: " ";
display: block;
width: 0;
height: 0;
border-top: 50px solid transparent;
/* Go big on the size, and let overflow hide */
border-bottom: 50px solid transparent;
border-left: 30px solid #ddd;
position: absolute;
top: 50%;
margin-top: -50px;
margin-left: 1px;
left: 100%;
z-index: 1;
}
.sw-theme-arrows > ul.step-anchor > li:first-child > a {
padding-left: 15px;
}
.sw-theme-arrows > ul.step-anchor > li > a:hover {
color: #bbb;
text-decoration: none;
outline-style: none;
background: #f5f5f5;
border-color: #f5f5f5;
}
.sw-theme-arrows > ul.step-anchor > li > a:hover:after {
border-left-color: #f5f5f5;
}
.sw-theme-arrows > ul.step-anchor > li > a small {
}
.sw-theme-arrows > ul.step-anchor > li.clickable > a:hover {
color: #4285F4 !important;
background: #46b8da !important;
}
.sw-theme-arrows > ul.step-anchor > li.active > a {
border-color: #00C14e !important;
color: #fff !important;
background: #00C14e !important;
}
.sw-theme-arrows > ul.step-anchor > li.active > a:after {
border-left: 30px solid #00C14e !important;
}
.sw-theme-arrows > ul.step-anchor > li.done > a {
border-color: #b1dfbb !important;
/* #00C14e */
color: #fff !important;
background: #b1dfbb !important;
}
.sw-theme-arrows > ul.step-anchor > li.done > a:after {
border-left: 30px solid #b1dfbb;
/* c3e6cb */;
}
.sw-theme-arrows > ul.step-anchor > li.danger > a {
border-color: #d9534f !important;
color: #fff !important;
background: #d9534f !important;
}
.sw-theme-arrows > ul.step-anchor > li.danger > a:after {
border-left: 30px solid #d9534f !important;
}
.sw-theme-arrows > ul.step-anchor > li.disabled > a, .sw-theme-arrows > ul.step-anchor > li.disabled > a:hover {
color: #eee !important;
}
/* Responsive CSS */
@media screen and (max-width: 768px) {
.sw-theme-arrows > ul.step-anchor {
border: 0;
background: #ddd !important;
}
.sw-theme-arrows > .nav-tabs > li {
float: none !important;
margin-bottom: 0;
}
.sw-theme-arrows > ul.step-anchor > li > a, .sw-theme-arrows > ul.step-anchor > li > a:hover {
padding-left: 15px;
margin-right: 0;
margin-bottom: 1px;
}
.sw-theme-arrows > ul.step-anchor > li > a:after, .sw-theme-arrows > ul.step-anchor > li > a:before {
display: none;
}
}
/* Loader Custom Style */
.sw-theme-arrows::before {
border: 10px solid #f3f3f3;
border-top: 10px solid #00C14e;
}

View File

@@ -0,0 +1,11 @@
/*!
* SmartWizard v4.3.x
* jQuery Wizard Plugin
* http://www.techlaboratory.net/smartwizard
*
* Created by Dipu Raj
* http://dipuraj.me
*
* Licensed under the terms of MIT License
* https://github.com/techlab/SmartWizard/blob/master/LICENSE
*/.sw-theme-arrows{border-radius:5px;border:1px solid #ddd}.sw-theme-arrows>.sw-container{min-height:200px}.sw-theme-arrows .step-content{padding:0 10px;border:0 solid #d4d4d4;background-color:#fff;text-align:left}.sw-theme-arrows .sw-toolbar{padding:10px;margin-bottom:0!important}.sw-theme-arrows>ul.step-anchor{border:0;border-bottom:1px solid #ddd;padding:0;background:#f5f5f5;border-radius:0;border-top-right-radius:5px;list-style:none;overflow:hidden}.sw-theme-arrows>ul.step-anchor li+li:before{padding:0}.sw-theme-arrows>ul.step-anchor>li>a,.sw-theme-arrows>ul.step-anchor>li>a:hover{color:#bbb;text-decoration:none;padding:10px 0 10px 45px;position:relative;display:block;border:0!important;border-radius:0;outline-style:none;background:#f5f5f5}.sw-theme-arrows>ul.step-anchor>li>a:after{content:" ";display:block;width:0;height:0;border-top:50px solid transparent;border-bottom:50px solid transparent;border-left:30px solid #f5f5f5;position:absolute;top:50%;margin-top:-50px;left:100%;z-index:2}.sw-theme-arrows>ul.step-anchor>li>a:before{content:" ";display:block;width:0;height:0;border-top:50px solid transparent;border-bottom:50px solid transparent;border-left:30px solid #ddd;position:absolute;top:50%;margin-top:-50px;margin-left:1px;left:100%;z-index:1}.sw-theme-arrows>ul.step-anchor>li:first-child>a{padding-left:15px}.sw-theme-arrows>ul.step-anchor>li>a:hover{color:#bbb;text-decoration:none;outline-style:none;background:#f5f5f5;border-color:#f5f5f5}.sw-theme-arrows>ul.step-anchor>li>a:hover:after{border-left-color:#f5f5f5}.sw-theme-arrows>ul.step-anchor>li.clickable>a:hover{color:#4285f4!important;background:#46b8da!important}.sw-theme-arrows>ul.step-anchor>li.active>a{border-color:#00C14e!important;color:#fff!important;background:#00C14e!important}.sw-theme-arrows>ul.step-anchor>li.active>a:after{border-left:30px solid #00C14e!important}.sw-theme-arrows>ul.step-anchor>li.done>a{border-color:#b1dfbb!important;color:#fff!important;background:#b1dfbb!important}.sw-theme-arrows>ul.step-anchor>li.done>a:after{border-left:30px solid #b1dfbb}.sw-theme-arrows>ul.step-anchor>li.danger>a{border-color:#d9534f!important;color:#fff!important;background:#d9534f!important}.sw-theme-arrows>ul.step-anchor>li.danger>a:after{border-left:30px solid #d9534f!important}.sw-theme-arrows>ul.step-anchor>li.disabled>a,.sw-theme-arrows>ul.step-anchor>li.disabled>a:hover{color:#eee!important}@media screen and (max-width:768px){.sw-theme-arrows>ul.step-anchor{border:0;background:#ddd!important}.sw-theme-arrows>.nav-tabs>li{float:none!important;margin-bottom:0}.sw-theme-arrows>ul.step-anchor>li>a,.sw-theme-arrows>ul.step-anchor>li>a:hover{padding-left:15px;margin-right:0;margin-bottom:1px}.sw-theme-arrows>ul.step-anchor>li>a:after,.sw-theme-arrows>ul.step-anchor>li>a:before{display:none}}.sw-theme-arrows::before{border:10px solid #f3f3f3;border-top:10px solid #00C14e}

View File

@@ -0,0 +1,130 @@
/*!
* SmartWizard v4.3.x
* jQuery Wizard Plugin
* http://www.techlaboratory.net/smartwizard
*
* Created by Dipu Raj
* http://dipuraj.me
*
* Licensed under the terms of MIT License
* https://github.com/techlab/SmartWizard/blob/master/LICENSE
*/
/* SmartWizard Theme: Circles */
.sw-theme-circles .sw-container {
min-height: 300px;
}
.sw-theme-circles .step-content {
padding: 10px 0;
background-color: #FFF;
text-align: left;
}
.sw-theme-circles .sw-toolbar {
background: #fff;
padding-left: 10px;
padding-right: 10px;
margin-bottom: 0 !important;
}
.sw-theme-circles .sw-toolbar-top {
}
.sw-theme-circles .sw-toolbar-bottom {
border-top-color: #ddd !important;
border-bottom-color: #ddd !important;
}
.sw-theme-circles > ul.step-anchor {
position: relative;
background: #fff;
border: none;
list-style: none;
margin-bottom: 40px;
}
.sw-theme-circles > ul.step-anchor:before {
content: " ";
position: absolute;
top: 50%;
bottom: 0;
width: 100%;
height: 5px;
background-color: #f5f5f5;
border-radius: 3px;
z-index: 0;
}
.sw-theme-circles > ul.step-anchor > li {
border: none;
margin-left: 40px;
z-index: 98;
}
.sw-theme-circles > ul.step-anchor > li > a {
border: 2px solid #f5f5f5;
background: #f5f5f5;
width: 75px;
height: 75px;
text-align: center;
padding: 25px 0;
border-radius: 50%;
-webkit-box-shadow: inset 0 0 0 3px #fff !important;
box-shadow: inset 0 0 0 3px #fff !important;
text-decoration: none;
outline-style: none;
z-index: 99;
color: #bbb;
line-height: 1;
}
.sw-theme-circles > ul.step-anchor > li > a:hover {
color: #bbb;
background: #f5f5f5;
border-width: 2px;
}
.sw-theme-circles > ul.step-anchor > li > a > small {
position: relative;
bottom: -40px;
color: #ccc;
}
.sw-theme-circles > ul.step-anchor > li.clickable > a:hover {
color: #4285F4 !important;
}
.sw-theme-circles > ul.step-anchor > li.active > a {
border-color: #5bc0de;
color: #fff;
background: #5bc0de;
}
.sw-theme-circles > ul.step-anchor > li.active > a > small {
color: #5bc0de;
}
.sw-theme-circles > ul.step-anchor > li.done > a {
border-color: #00C14e;
color: #fff;
background: #00C14e;
}
.sw-theme-circles > ul.step-anchor > li.done > a > small {
color: #00C14e;
}
.sw-theme-circles > ul.step-anchor > li.danger > a {
border-color: #d9534f;
color: #d9534f;
background: #fff;
}
.sw-theme-circles > ul.step-anchor > li.danger > a > small {
color: #d9534f;
}
.sw-theme-circles > ul.step-anchor > li.disabled > a, .sw-theme-circles > ul.step-anchor > li.disabled > a:hover {
color: #eee !important;
}

View File

@@ -0,0 +1,11 @@
/*!
* SmartWizard v4.3.x
* jQuery Wizard Plugin
* http://www.techlaboratory.net/smartwizard
*
* Created by Dipu Raj
* http://dipuraj.me
*
* Licensed under the terms of MIT License
* https://github.com/techlab/SmartWizard/blob/master/LICENSE
*/.sw-theme-circles .sw-container{min-height:300px}.sw-theme-circles .step-content{padding:10px 0;background-color:#fff;text-align:left}.sw-theme-circles .sw-toolbar{background:#fff;padding-left:10px;padding-right:10px;margin-bottom:0!important}.sw-theme-circles .sw-toolbar-bottom{border-top-color:#ddd!important;border-bottom-color:#ddd!important}.sw-theme-circles>ul.step-anchor{position:relative;background:#fff;border:none;list-style:none;margin-bottom:40px}.sw-theme-circles>ul.step-anchor:before{content:" ";position:absolute;top:50%;bottom:0;width:100%;height:5px;background-color:#f5f5f5;border-radius:3px;z-index:0}.sw-theme-circles>ul.step-anchor>li{border:none;margin-left:40px;z-index:98}.sw-theme-circles>ul.step-anchor>li>a{border:2px solid #f5f5f5;background:#f5f5f5;width:75px;height:75px;text-align:center;padding:25px 0;border-radius:50%;-webkit-box-shadow:inset 0 0 0 3px #fff!important;box-shadow:inset 0 0 0 3px #fff!important;text-decoration:none;outline-style:none;z-index:99;color:#bbb;background:#f5f5f5;line-height:1}.sw-theme-circles>ul.step-anchor>li>a:hover{color:#bbb;background:#f5f5f5;border-width:2px}.sw-theme-circles>ul.step-anchor>li>a>small{position:relative;bottom:-40px;color:#ccc}.sw-theme-circles>ul.step-anchor>li.clickable>a:hover{color:#4285f4!important}.sw-theme-circles>ul.step-anchor>li.active>a{border-color:#5bc0de;color:#fff;background:#5bc0de}.sw-theme-circles>ul.step-anchor>li.active>a>small{color:#5bc0de}.sw-theme-circles>ul.step-anchor>li.done>a{border-color:#00C14e;color:#fff;background:#00C14e}.sw-theme-circles>ul.step-anchor>li.done>a>small{color:#00C14e}.sw-theme-circles>ul.step-anchor>li.danger>a{border-color:#d9534f;color:#d9534f;background:#fff}.sw-theme-circles>ul.step-anchor>li.danger>a>small{color:#d9534f}.sw-theme-circles>ul.step-anchor>li.disabled>a,.sw-theme-circles>ul.step-anchor>li.disabled>a:hover{color:#eee!important}

View File

@@ -0,0 +1,198 @@
/*!
* SmartWizard v4.3.x
* jQuery Wizard Plugin
* http://www.techlaboratory.net/smartwizard
*
* Created by Dipu Raj
* http://dipuraj.me
*
* Licensed under the terms of MIT License
* https://github.com/techlab/SmartWizard/blob/master/LICENSE
*/
/* SmartWizard Theme: Dots */
.sw-theme-dots .sw-container {
min-height: 300px;
}
.sw-theme-dots .step-content {
padding: 10px 0;
border: none;
background-color: #FFF;
text-align: left;
}
.sw-theme-dots .sw-toolbar {
background: #fff;
border-radius: 0 !important;
padding-left: 10px;
padding-right: 10px;
margin-bottom: 0 !important;
}
.sw-theme-dots .sw-toolbar-top {
border-bottom-color: #ddd !important;
}
.sw-theme-dots .sw-toolbar-bottom {
border-top-color: #ddd !important;
border-bottom-color: #ddd !important;
}
.sw-theme-dots > ul.step-anchor {
position: relative;
background: #fff;
border: 0 solid #ccc !important;
list-style: none;
}
.sw-theme-dots > ul.step-anchor:before {
content: " ";
position: absolute;
top: 70px;
bottom: 0;
width: 100%;
height: 5px;
background-color: #f5f5f5;
border-radius: 3px;
z-order: 0;
z-index: 95;
}
.sw-theme-dots > ul.step-anchor > li {
border: none;
}
/* Anchors styles */
.sw-theme-dots > ul.step-anchor > li > a {
position: relative;
text-align: center;
font-weight: bold;
background: transparent;
border: none;
color: #ccc;
text-decoration: none;
outline-style: none;
z-index: 96;
display: block;
}
.sw-theme-dots > ul.step-anchor > li > a:before {
content: ' ';
position: absolute;
bottom: 2px;
left: 40%;
margin-top: 10px;
display: block;
border-radius: 50%;
color: #FFE01B;
background: #f5f5f5;
border: none;
width: 30px;
height: 30px;
text-decoration: none;
z-index: 98;
}
.sw-theme-dots > ul.step-anchor > li > a:after {
content: ' ';
position: relative;
left: 43%;
bottom: 2px;
margin-top: 10px;
display: block;
width: 15px;
height: 15px;
background: #f5f5f5;
border-radius: 50%;
z-index: 99;
}
.sw-theme-dots > ul.step-anchor > li > a:hover {
color: #ccc;
background: transparent;
}
.sw-theme-dots > ul.step-anchor > li > a:focus {
color: #ccc;
border: none;
}
.sw-theme-dots > ul.step-anchor > li.clickable > a:hover {
color: #999;
}
/* Active anchors */
.sw-theme-dots > ul.step-anchor > li.active > a {
color: #5bc0de;
}
.sw-theme-dots > ul.step-anchor > li.active > a:hover {
border: none;
}
.sw-theme-dots > ul.step-anchor > li.active > a:after {
background: #5bc0de;
}
/* Done anchors */
.sw-theme-dots > ul.step-anchor > li.done > a {
color: #00C14e;
}
.sw-theme-dots > ul.step-anchor > li.done > a:after {
background: #00C14e;
}
/* Danger anchors */
.sw-theme-dots > ul.step-anchor > li.danger > a {
color: #d9534f;
}
.sw-theme-dots > ul.step-anchor > li.danger > a:after {
background: #d9534f;
}
.sw-theme-dots > ul.step-anchor > li.disabled > a, .sw-theme-dots > ul.step-anchor > li.disabled > a:hover {
color: #eee !important;
}
.sw-theme-dots > ul.step-anchor > li.disabled > a:after {
background: #eee;
}
/* Responsive CSS */
@media screen and (max-width: 768px) {
.sw-theme-dots > ul.step-anchor:before {
top: 0;
bottom: 0;
left: 10px;
width: 5px;
height: 100%;
background-color: #f5f5f5;
display: block;
margin-right: 10px;
}
.sw-theme-dots > ul.step-anchor > li {
margin-left: 20px;
display: block;
clear: both;
}
.sw-theme-dots > ul.step-anchor > li > a {
text-align: left;
margin-left: 0;
display: block;
}
.sw-theme-dots > ul.step-anchor > li > a:before {
top: 5px;
left: -23px;
margin-right: 10px;
display: block;
}
.sw-theme-dots > ul.step-anchor > li > a:after {
top: -38px;
left: -31px;
margin-right: 10px;
display: block;
}
}

View File

@@ -0,0 +1,195 @@
/*!
* SmartWizard v4.3.x
* jQuery Wizard Plugin
* http://www.techlaboratory.net/smartwizard
*
* Created by Dipu Raj
* http://dipuraj.me
*
* Licensed under the terms of MIT License
* https://github.com/techlab/SmartWizard/blob/master/LICENSE
*/
.sw-theme-dots .sw-container {
min-height: 300px
}
.sw-theme-dots .step-content {
padding: 10px 0;
border: none;
background-color: #fff;
text-align: left
}
.sw-theme-dots .sw-toolbar {
background: #fff;
border-radius: 0 !important;
padding-left: 10px;
padding-right: 10px;
margin-bottom: 0 !important
}
.sw-theme-dots .sw-toolbar-top {
border-bottom-color: #ddd !important
}
.sw-theme-dots .sw-toolbar-bottom {
border-top-color: #ddd !important;
border-bottom-color: #ddd !important
}
.sw-theme-dots > ul.step-anchor {
position: relative;
background: #fff;
border: 0 solid #ccc !important;
list-style: none
}
.sw-theme-dots > ul.step-anchor:before {
content: " ";
position: absolute;
top: 70px;
bottom: 0;
width: 100%;
height: 5px;
background-color: #f5f5f5;
border-radius: 3px;
z-order: 0;
z-index: 95
}
.sw-theme-dots > ul.step-anchor > li {
border: none
}
.sw-theme-dots > ul.step-anchor > li > a {
position: relative;
text-align: center;
font-weight: 700;
background: 0 0;
border: none;
color: #ccc;
text-decoration: none;
outline-style: none;
z-index: 96;
display: block
}
.sw-theme-dots > ul.step-anchor > li > a:before {
content: ' ';
position: absolute;
bottom: 2px;
left: 40%;
margin-top: 10px;
display: block;
border-radius: 50%;
color: #428bca;
background: #f5f5f5;
border: none;
width: 30px;
height: 30px;
text-decoration: none;
z-index: 98
}
.sw-theme-dots > ul.step-anchor > li > a:after {
content: ' ';
position: relative;
left: 43%;
bottom: 2px;
margin-top: 10px;
display: block;
width: 15px;
height: 15px;
background: #f5f5f5;
border-radius: 50%;
z-index: 99
}
.sw-theme-dots > ul.step-anchor > li > a:hover {
color: #ccc;
background: 0 0
}
.sw-theme-dots > ul.step-anchor > li > a:focus {
color: #ccc;
border: none
}
.sw-theme-dots > ul.step-anchor > li.clickable > a:hover {
color: #999
}
.sw-theme-dots > ul.step-anchor > li.active > a {
color: #5bc0de
}
.sw-theme-dots > ul.step-anchor > li.active > a:hover {
border: none
}
.sw-theme-dots > ul.step-anchor > li.active > a:after {
background: #5bc0de
}
.sw-theme-dots > ul.step-anchor > li.done > a {
color: #00C14e
}
.sw-theme-dots > ul.step-anchor > li.done > a:after {
background: #00C14e
}
.sw-theme-dots > ul.step-anchor > li.danger > a {
color: #d9534f
}
.sw-theme-dots > ul.step-anchor > li.danger > a:after {
background: #d9534f
}
.sw-theme-dots > ul.step-anchor > li.disabled > a, .sw-theme-dots > ul.step-anchor > li.disabled > a:hover {
color: #eee !important
}
.sw-theme-dots > ul.step-anchor > li.disabled > a:after {
background: #eee
}
@media screen and (max-width: 768px) {
.sw-theme-dots > ul.step-anchor:before {
top: 0;
bottom: 0;
left: 10px;
width: 5px;
height: 100%;
background-color: #f5f5f5;
display: block;
margin-right: 10px
}
.sw-theme-dots > ul.step-anchor > li {
margin-left: 20px;
display: block;
clear: both
}
.sw-theme-dots > ul.step-anchor > li > a {
text-align: left;
margin-left: 0;
display: block
}
.sw-theme-dots > ul.step-anchor > li > a:before {
top: 5px;
left: -23px;
margin-right: 10px;
display: block
}
.sw-theme-dots > ul.step-anchor > li > a:after {
top: -38px;
left: -31px;
margin-right: 10px;
display: block
}
}

View File

@@ -0,0 +1,41 @@
.spinner {
width: 40px;
height: 40px;
position: relative;
margin: 100px auto;
}
.double-bounce1, .double-bounce2 {
width: 100%;
height: 100%;
border-radius: 50%;
background-color: #FFE01B;
opacity: 0.5;
position: absolute;
top: 0;
left: 0;
-webkit-animation: sk-bounce 2.0s infinite ease-in-out;
animation: sk-bounce 2.0s infinite ease-in-out;
}
.double-bounce2 {
-webkit-animation-delay: -1.0s;
animation-delay: -1.0s;
}
@-webkit-keyframes sk-bounce {
0%, 100% { -webkit-transform: scale(0.0) }
50% { -webkit-transform: scale(1.0) }
}
@keyframes sk-bounce {
0%, 100% {
transform: scale(0.0);
-webkit-transform: scale(0.0);
} 50% {
transform: scale(1.0);
-webkit-transform: scale(1.0);
}
}

View File

@@ -0,0 +1,15 @@
#product-sync .spinner {
display: none;
}
/*#product-sync pre {*/
/*display: block;*/
/*}*/
#product-sync pre {
display: none;
}
#product-sync.sync-is-running .spinner {
display: block;
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,34 @@
<?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;

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

View File

@@ -0,0 +1,34 @@
<?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,173 @@
/**
* PrestaChamps
*
* NOTICE OF LICENSE
*
* This source file is subject to the Commercial License
* you can't distribute, modify or sell this code
*
* DISCLAIMER
*
* Do not edit or add to this file
* If you need help please contact leo@prestachamps.com
*
* @author Mailchimp
* @copyright PrestaChamps
* @license commercial
*/
(function (factory) {
if (typeof define === 'function' && define.amd) {
// AMD. Register as an anonymous module.
define(['jquery'], factory);
} else if (typeof module === 'object' && module.exports) {
// Node/CommonJS
module.exports = factory(require('jquery'));
} else {
// Browser globals
factory(jQuery);
}
}(function ($) {
var queues = {};
var activeReqs = {};
// Register an $.ajaxq function, which follows the $.ajax interface, but allows a queue name which will force only one request per queue to fire.
// opts can be the regular $.ajax settings plainObject, or a callback returning the settings object, to be evaluated just prior to the actual call to $.ajax.
$.ajaxq = function (qname, opts) {
if (typeof opts === "undefined") {
throw ("AjaxQ: queue name is not provided");
}
// Will return a Deferred promise object extended with success/error/callback, so that this function matches the interface of $.ajax
var deferred = $.Deferred(),
promise = deferred.promise();
promise.success = promise.done;
promise.error = promise.fail;
promise.complete = promise.always;
// Check whether options are to be evaluated at call time or not.
var deferredOpts = typeof opts === 'function';
// Create a deep copy of the arguments, and enqueue this request.
var clonedOptions = !deferredOpts ? $.extend(true, {}, opts) : null;
enqueue(function () {
// Send off the ajax request now that the item has been removed from the queue
var jqXHR = $.ajax.apply(window, [deferredOpts ? opts() : clonedOptions]);
// Notify the returned deferred object with the correct context when the jqXHR is done or fails
// Note that 'always' will automatically be fired once one of these are called: http://api.jquery.com/category/deferred-object/.
jqXHR.done(function () {
deferred.resolve.apply(this, arguments);
});
jqXHR.fail(function () {
deferred.reject.apply(this, arguments);
});
jqXHR.always(dequeue); // make sure to dequeue the next request AFTER the done and fail callbacks are fired
return jqXHR;
});
return promise;
// If there is no queue, create an empty one and instantly process this item.
// Otherwise, just add this item onto it for later processing.
function enqueue(cb) {
if (!queues[qname]) {
queues[qname] = [];
var xhr = cb();
activeReqs[qname] = xhr;
}
else {
queues[qname].push(cb);
}
}
// Remove the next callback from the queue and fire it off.
// If the queue was empty (this was the last item), delete it from memory so the next one can be instantly processed.
function dequeue() {
if (!queues[qname]) {
return;
}
var nextCallback = queues[qname].shift();
if (nextCallback) {
var xhr = nextCallback();
activeReqs[qname] = xhr;
}
else {
delete queues[qname];
delete activeReqs[qname];
}
}
};
// Register a $.postq and $.getq method to provide shortcuts for $.get and $.post
// Copied from jQuery source to make sure the functions share the same defaults as $.get and $.post.
$.each(["getq", "postq"], function (i, method) {
$[method] = function (qname, url, data, callback, type) {
if ($.isFunction(data)) {
type = type || callback;
callback = data;
data = undefined;
}
return $.ajaxq(qname, {
type: method === "postq" ? "post" : "get",
url: url,
data: data,
success: callback,
dataType: type
});
};
});
var isQueueRunning = function (qname) {
return (queues.hasOwnProperty(qname) && queues[qname].length > 0);
};
var isAnyQueueRunning = function () {
for (var i in queues) {
if (isQueueRunning(i)) return true;
}
return false;
};
$.ajaxq.isRunning = function (qname) {
if (qname) return isQueueRunning(qname);
else return isAnyQueueRunning();
};
$.ajaxq.getActiveRequest = function (qname) {
if (!qname) throw ("AjaxQ: queue name is required");
return activeReqs[qname];
};
$.ajaxq.abort = function (qname) {
if (!qname) throw ("AjaxQ: queue name is required");
var current = $.ajaxq.getActiveRequest(qname);
delete queues[qname];
delete activeReqs[qname];
if (current) current.abort();
};
$.ajaxq.clear = function (qname) {
if (!qname) {
for (var i in queues) {
if (queues.hasOwnProperty(i)) {
queues[i] = [];
}
}
}
else {
if (queues[qname]) {
queues[qname] = [];
}
}
};
}));

View File

@@ -0,0 +1,29 @@
/**
* PrestaChamps
*
* NOTICE OF LICENSE
*
* This source file is subject to the Commercial License
* you can't distribute, modify or sell this code
*
* DISCLAIMER
*
* Do not edit or add to this file
* If you need help please contact leo@prestachamps.com
*
* @author Mailchimp
* @copyright PrestaChamps
* @license commercial
*
* @param chunk_size
* @returns {Array}
*/
Array.prototype.chunk = function (chunk_size) {
var temp = this.slice(0),
results = [];
while (temp.length) {
results.push(temp.splice(0, chunk_size));
}
return results;
};

View File

@@ -0,0 +1,34 @@
<?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,647 @@
/*!
* SmartWizard v4.3.1
* The awesome jQuery step wizard plugin with Bootstrap support
* http://www.techlaboratory.net/smartwizard
*
* Created by Dipu Raj
* http://dipuraj.me
*
* Licensed under the terms of the MIT License
* https://github.com/techlab/SmartWizard/blob/master/LICENSE
*/
;(function ($, window, document, undefined) {
"use strict";
// Default options
var defaults = {
selected: 0, // Initial selected step, 0 = first step
keyNavigation: true, // Enable/Disable keyboard navigation(left and right keys are used if enabled)
autoAdjustHeight: true, // Automatically adjust content height
cycleSteps: false, // Allows to cycle the navigation of steps
backButtonSupport: true, // Enable the back button support
useURLhash: true, // Enable selection of the step based on url hash
showStepURLhash: true, // Show url hash based on step
lang: { // Language variables for button
next: 'Next',
previous: 'Previous'
},
toolbarSettings: {
toolbarPosition: 'bottom', // none, top, bottom, both
toolbarButtonPosition: 'end', // start, end
showNextButton: true, // show/hide a Next button
showPreviousButton: true, // show/hide a Previous button
toolbarExtraButtons: [] // Extra buttons to show on toolbar, array of jQuery input/buttons elements
},
anchorSettings: {
anchorClickable: true, // Enable/Disable anchor navigation
enableAllAnchors: false, // Activates all anchors clickable all times
markDoneStep: true, // Add done css
markAllPreviousStepsAsDone: true, // When a step selected by url hash, all previous steps are marked done
removeDoneStepOnNavigateBack: false, // While navigate back done step after active step will be cleared
enableAnchorOnDoneStep: true // Enable/Disable the done steps navigation
},
contentURL: null, // content url, Enables Ajax content loading. Can also set as data data-content-url on anchor
contentCache: true, // cache step contents, if false content is fetched always from ajax url
ajaxSettings: {}, // Ajax extra settings
disabledSteps: [], // Array Steps disabled
errorSteps: [], // Highlight step with errors
hiddenSteps: [], // Hidden steps
theme: 'default', // theme for the wizard, related css need to include for other than default theme
transitionEffect: 'none', // Effect on navigation, none/slide/fade
transitionSpeed: '400'
};
// The plugin constructor
function SmartWizard(element, options) {
// Merge user settings with default, recursively
this.options = $.extend(true, {}, defaults, options);
// Main container element
this.main = $(element);
// Navigation bar element
this.nav = this.main.children('ul');
// Step anchor elements
this.steps = $("li > a", this.nav);
// Content container
this.container = this.main.children('div');
// Content pages
this.pages = this.container.children('div');
// Active step index
this.current_index = null;
// Backward compatibility
this.options.toolbarSettings.toolbarButtonPosition = this.options.toolbarSettings.toolbarButtonPosition === 'right' ? 'end' : this.options.toolbarSettings.toolbarButtonPosition;
this.options.toolbarSettings.toolbarButtonPosition = this.options.toolbarSettings.toolbarButtonPosition === 'left' ? 'start' : this.options.toolbarSettings.toolbarButtonPosition;
// Default fix
this.options.theme = this.options.theme === null || this.options.theme === '' ? 'default' : this.options.theme;
// Call initial method
this.init();
}
$.extend(SmartWizard.prototype, {
init: function () {
// Set the elements
this._setElements();
// Add toolbar
this._setToolbar();
// Assign plugin events
this._setEvents();
var idx = this.options.selected;
// Get selected step from the url
if (this.options.useURLhash) {
// Get step number from url hash if available
var hash = window.location.hash;
if (hash && hash.length > 0) {
var elm = $("a[href*='" + hash + "']", this.nav);
if (elm.length > 0) {
var id = this.steps.index(elm);
idx = id >= 0 ? id : idx;
}
}
}
if (idx > 0 && this.options.anchorSettings.markDoneStep && this.options.anchorSettings.markAllPreviousStepsAsDone) {
// Mark previous steps of the active step as done
this.steps.eq(idx).parent('li').prevAll().addClass("done");
}
// Show the initial step
this._showStep(idx);
},
// PRIVATE FUNCTIONS
_setElements: function () {
// Set the main element
this.main.addClass('sw-main sw-theme-' + this.options.theme);
// Set anchor elements
this.nav.addClass('nav nav-tabs step-anchor').children('li').addClass('nav-item').children('a').addClass('nav-link'); // nav-justified nav-pills
// Make the anchor clickable
if (this.options.anchorSettings.enableAllAnchors !== false && this.options.anchorSettings.anchorClickable !== false) {
this.steps.parent('li').addClass('clickable');
}
// Set content container
this.container.addClass('sw-container tab-content');
// Set content pages
this.pages.addClass('tab-pane step-content');
// Disabled steps
var mi = this;
if (this.options.disabledSteps && this.options.disabledSteps.length > 0) {
$.each(this.options.disabledSteps, function (i, n) {
mi.steps.eq(n).parent('li').addClass('disabled');
});
}
// Error steps
if (this.options.errorSteps && this.options.errorSteps.length > 0) {
$.each(this.options.errorSteps, function (i, n) {
mi.steps.eq(n).parent('li').addClass('danger');
});
}
// Hidden steps
if (this.options.hiddenSteps && this.options.hiddenSteps.length > 0) {
$.each(this.options.hiddenSteps, function (i, n) {
mi.steps.eq(n).parent('li').addClass('hidden');
});
}
return true;
},
_setToolbar: function () {
// Skip right away if the toolbar is not enabled
if (this.options.toolbarSettings.toolbarPosition === 'none') {
return true;
}
// Create the toolbar buttons
var btnNext = this.options.toolbarSettings.showNextButton !== false ? $('<button></button>').text(this.options.lang.next).addClass('btn btn-secondary sw-btn-next').attr('type', 'button') : null;
var btnPrevious = this.options.toolbarSettings.showPreviousButton !== false ? $('<button></button>').text(this.options.lang.previous).addClass('btn btn-secondary sw-btn-prev').attr('type', 'button') : null;
var btnGroup = $('<div></div>').addClass('btn-group mr-2 sw-btn-group').attr('role', 'group').append(btnPrevious, btnNext);
// Add extra toolbar buttons
var btnGroupExtra = null;
if (this.options.toolbarSettings.toolbarExtraButtons && this.options.toolbarSettings.toolbarExtraButtons.length > 0) {
btnGroupExtra = $('<div></div>').addClass('btn-group mr-2 sw-btn-group-extra').attr('role', 'group');
$.each(this.options.toolbarSettings.toolbarExtraButtons, function (i, n) {
btnGroupExtra.append(n.clone(true));
});
}
var toolbarTop, toolbarBottom;
// Append toolbar based on the position
switch (this.options.toolbarSettings.toolbarPosition) {
case 'top':
toolbarTop = $('<div></div>').addClass('btn-toolbar sw-toolbar sw-toolbar-top justify-content-' + this.options.toolbarSettings.toolbarButtonPosition);
toolbarTop.append(btnGroup);
if (this.options.toolbarSettings.toolbarButtonPosition === 'start') {
toolbarTop.prepend(btnGroupExtra);
} else {
toolbarTop.append(btnGroupExtra);
}
this.container.before(toolbarTop);
break;
case 'bottom':
toolbarBottom = $('<div></div>').addClass('btn-toolbar sw-toolbar sw-toolbar-bottom justify-content-' + this.options.toolbarSettings.toolbarButtonPosition);
toolbarBottom.append(btnGroup);
if (this.options.toolbarSettings.toolbarButtonPosition === 'start') {
toolbarBottom.prepend(btnGroupExtra);
} else {
toolbarBottom.append(btnGroupExtra);
}
this.container.after(toolbarBottom);
break;
case 'both':
toolbarTop = $('<div></div>').addClass('btn-toolbar sw-toolbar sw-toolbar-top justify-content-' + this.options.toolbarSettings.toolbarButtonPosition);
toolbarTop.append(btnGroup);
if (this.options.toolbarSettings.toolbarButtonPosition === 'start') {
toolbarTop.prepend(btnGroupExtra);
} else {
toolbarTop.append(btnGroupExtra);
}
this.container.before(toolbarTop);
toolbarBottom = $('<div></div>').addClass('btn-toolbar sw-toolbar sw-toolbar-bottom justify-content-' + this.options.toolbarSettings.toolbarButtonPosition);
toolbarBottom.append(btnGroup.clone(true));
if (btnGroupExtra !== null) {
if (this.options.toolbarSettings.toolbarButtonPosition === 'start') {
toolbarBottom.prepend(btnGroupExtra.clone(true));
} else {
toolbarBottom.append(btnGroupExtra.clone(true));
}
}
this.container.after(toolbarBottom);
break;
default:
toolbarBottom = $('<div></div>').addClass('btn-toolbar sw-toolbar sw-toolbar-bottom justify-content-' + this.options.toolbarSettings.toolbarButtonPosition);
toolbarBottom.append(btnGroup);
if (this.options.toolbarSettings.toolbarButtonPosition === 'start') {
toolbarBottom.append(btnGroupExtra);
} else {
toolbarBottom.append(btnGroupExtra);
}
this.container.after(toolbarBottom);
break;
}
return true;
},
_setEvents: function () {
// Anchor click event
var mi = this;
$(this.steps).on("click", function (e) {
e.preventDefault();
if (mi.options.anchorSettings.anchorClickable === false) {
return true;
}
var idx = mi.steps.index(this);
if (mi.options.anchorSettings.enableAnchorOnDoneStep === false && mi.steps.eq(idx).parent('li').hasClass('done')) {
return true;
}
if (idx !== mi.current_index) {
if (mi.options.anchorSettings.enableAllAnchors !== false && mi.options.anchorSettings.anchorClickable !== false) {
mi._showStep(idx);
} else {
if (mi.steps.eq(idx).parent('li').hasClass('done')) {
mi._showStep(idx);
}
}
}
});
// Next button event
$('.sw-btn-next', this.main).on("click", function (e) {
e.preventDefault();
mi._showNext();
});
// Previous button event
$('.sw-btn-prev', this.main).on("click", function (e) {
e.preventDefault();
mi._showPrevious();
});
// Keyboard navigation event
if (this.options.keyNavigation) {
$(document).keyup(function (e) {
mi._keyNav(e);
});
}
// Back/forward browser button event
if (this.options.backButtonSupport) {
$(window).on('hashchange', function (e) {
if (!mi.options.useURLhash) {
return true;
}
if (window.location.hash) {
var elm = $("a[href*='" + window.location.hash + "']", mi.nav);
if (elm && elm.length > 0) {
e.preventDefault();
mi._showStep(mi.steps.index(elm));
}
}
});
}
return true;
},
_showNext: function () {
var si = this.current_index + 1;
// Find the next not disabled step
for (var i = si; i < this.steps.length; i++) {
if (!this.steps.eq(i).parent('li').hasClass('disabled') && !this.steps.eq(i).parent('li').hasClass('hidden')) {
si = i;
break;
}
}
if (this.steps.length <= si) {
if (!this.options.cycleSteps) {
return false;
}
si = 0;
}
this._showStep(si);
return true;
},
_showPrevious: function () {
var si = this.current_index - 1;
// Find the previous not disabled step
for (var i = si; i >= 0; i--) {
if (!this.steps.eq(i).parent('li').hasClass('disabled') && !this.steps.eq(i).parent('li').hasClass('hidden')) {
si = i;
break;
}
}
if (0 > si) {
if (!this.options.cycleSteps) {
return false;
}
si = this.steps.length - 1;
}
this._showStep(si);
return true;
},
_showStep: function (idx) {
// If step not found, skip
if (!this.steps.eq(idx)) {
return false;
}
// If current step is requested again, skip
if (idx == this.current_index) {
return false;
}
// If it is a disabled step, skip
if (this.steps.eq(idx).parent('li').hasClass('disabled') || this.steps.eq(idx).parent('li').hasClass('hidden')) {
return false;
}
// Load step content
this._loadStepContent(idx);
return true;
},
_loadStepContent: function (idx) {
var mi = this;
// Get current step elements
var curTab = this.steps.eq(this.current_index);
// Get the direction of step navigation
var stepDirection = '';
var elm = this.steps.eq(idx);
var contentURL = elm.data('content-url') && elm.data('content-url').length > 0 ? elm.data('content-url') : this.options.contentURL;
if (this.current_index !== null && this.current_index !== idx) {
stepDirection = this.current_index < idx ? "forward" : "backward";
}
// Trigger "leaveStep" event
if (this.current_index !== null && this._triggerEvent("leaveStep", [curTab, this.current_index, stepDirection]) === false) {
return false;
}
if (contentURL && contentURL.length > 0 && (!elm.data('has-content') || !this.options.contentCache)) {
// Get ajax content and then show step
var selPage = elm.length > 0 ? $(elm.attr("href"), this.main) : null;
var ajaxSettings = $.extend(true, {}, {
url: contentURL,
type: "POST",
data: { step_number: idx },
dataType: "text",
beforeSend: function () {
mi._loader('show');
},
error: function (jqXHR, status, message) {
mi._loader('hide');
$.error(message);
},
success: function (res) {
if (res && res.length > 0) {
elm.data('has-content', true);
selPage.html(res);
}
mi._loader('hide');
mi._transitPage(idx);
}
}, this.options.ajaxSettings);
$.ajax(ajaxSettings);
} else {
// Show step
this._transitPage(idx);
}
return true;
},
_transitPage: function (idx) {
var mi = this;
// Get current step elements
var curTab = this.steps.eq(this.current_index);
var curPage = curTab.length > 0 ? $(curTab.attr("href"), this.main) : null;
// Get step to show elements
var selTab = this.steps.eq(idx);
var selPage = selTab.length > 0 ? $(selTab.attr("href"), this.main) : null;
// Get the direction of step navigation
var stepDirection = '';
if (this.current_index !== null && this.current_index !== idx) {
stepDirection = this.current_index < idx ? "forward" : "backward";
}
var stepPosition = 'middle';
if (idx === 0) {
stepPosition = 'first';
} else if (idx === this.steps.length - 1) {
stepPosition = 'final';
}
this.options.transitionEffect = this.options.transitionEffect.toLowerCase();
this.pages.finish();
if (this.options.transitionEffect === 'slide') {
// normal slide
if (curPage && curPage.length > 0) {
curPage.slideUp('fast', this.options.transitionEasing, function () {
selPage.slideDown(mi.options.transitionSpeed, mi.options.transitionEasing);
});
} else {
selPage.slideDown(this.options.transitionSpeed, this.options.transitionEasing);
}
} else if (this.options.transitionEffect === 'fade') {
// normal fade
if (curPage && curPage.length > 0) {
curPage.fadeOut('fast', this.options.transitionEasing, function () {
selPage.fadeIn('fast', mi.options.transitionEasing, function () {
$(this).show();
});
});
} else {
selPage.fadeIn(this.options.transitionSpeed, this.options.transitionEasing, function () {
$(this).show();
});
}
} else {
if (curPage && curPage.length > 0) {
curPage.hide();
}
selPage.show();
}
// Change the url hash to new step
this._setURLHash(selTab.attr("href"));
// Update controls
this._setAnchor(idx);
// Set the buttons based on the step
this._setButtons(idx);
// Fix height with content
this._fixHeight(idx);
// Update the current index
this.current_index = idx;
// Trigger "showStep" event
this._triggerEvent("showStep", [selTab, this.current_index, stepDirection, stepPosition]);
return true;
},
_setAnchor: function (idx) {
// Current step anchor > Remove other classes and add done class
this.steps.eq(this.current_index).parent('li').removeClass("active");
if (this.options.anchorSettings.markDoneStep !== false && this.current_index !== null) {
this.steps.eq(this.current_index).parent('li').addClass("done");
if (this.options.anchorSettings.removeDoneStepOnNavigateBack !== false) {
this.steps.eq(idx).parent('li').nextAll().removeClass("done");
}
}
// Next step anchor > Remove other classes and add active class
this.steps.eq(idx).parent('li').removeClass("done").addClass("active");
return true;
},
_setButtons: function (idx) {
// Previous/Next Button enable/disable based on step
if (!this.options.cycleSteps) {
if (0 >= idx) {
$('.sw-btn-prev', this.main).addClass("disabled");
} else {
$('.sw-btn-prev', this.main).removeClass("disabled");
}
if (this.steps.length - 1 <= idx) {
$('.sw-btn-next', this.main).addClass("disabled");
} else {
$('.sw-btn-next', this.main).removeClass("disabled");
}
}
return true;
},
// HELPER FUNCTIONS
_keyNav: function (e) {
var mi = this;
// Keyboard navigation
switch (e.which) {
case 37:
// left
mi._showPrevious();
e.preventDefault();
break;
case 39:
// right
mi._showNext();
e.preventDefault();
break;
default:
return; // exit this handler for other keys
}
},
_fixHeight: function (idx) {
// Auto adjust height of the container
if (this.options.autoAdjustHeight) {
var selPage = this.steps.eq(idx).length > 0 ? $(this.steps.eq(idx).attr("href"), this.main) : null;
this.container.finish().animate({ minHeight: selPage.outerHeight() }, this.options.transitionSpeed, function () {});
}
return true;
},
_triggerEvent: function (name, params) {
// Trigger an event
var e = $.Event(name);
this.main.trigger(e, params);
if (e.isDefaultPrevented()) {
return false;
}
return e.result;
},
_setURLHash: function (hash) {
if (this.options.showStepURLhash && window.location.hash !== hash) {
window.location.hash = hash;
}
},
_loader: function (action) {
switch (action) {
case 'show':
this.main.addClass('sw-loading');
break;
case 'hide':
this.main.removeClass('sw-loading');
break;
default:
this.main.toggleClass('sw-loading');
}
},
// PUBLIC FUNCTIONS
theme: function (v) {
if (this.options.theme === v) {
return false;
}
this.main.removeClass('sw-theme-' + this.options.theme);
this.options.theme = v;
this.main.addClass('sw-theme-' + this.options.theme);
// Trigger "themeChanged" event
this._triggerEvent("themeChanged", [this.options.theme]);
},
next: function () {
this._showNext();
},
prev: function () {
this._showPrevious();
},
reset: function () {
// Trigger "beginReset" event
if (this._triggerEvent("beginReset") === false) {
return false;
}
// Reset all elements and classes
this.container.stop(true);
this.pages.stop(true);
this.pages.hide();
this.current_index = null;
this._setURLHash(this.steps.eq(this.options.selected).attr("href"));
$(".sw-toolbar", this.main).remove();
this.steps.removeClass();
this.steps.parents('li').removeClass();
this.steps.data('has-content', false);
this.init();
// Trigger "endReset" event
this._triggerEvent("endReset");
},
stepState: function (stepArray, state) {
var mi = this;
stepArray = $.isArray(stepArray) ? stepArray : [stepArray];
var selSteps = $.grep(this.steps, function (n, i) {
return $.inArray(i, stepArray) !== -1; // && i !== mi.current_index
});
if (selSteps && selSteps.length > 0) {
switch (state) {
case 'disable':
$(selSteps).parents('li').addClass('disabled');
break;
case 'enable':
$(selSteps).parents('li').removeClass('disabled');
break;
case 'hide':
$(selSteps).parents('li').addClass('hidden');
break;
case 'show':
$(selSteps).parents('li').removeClass('hidden');
break;
case 'error-on':
$(selSteps).parents('li').addClass('danger');
break;
case 'error-off':
$(selSteps).parents('li').removeClass('danger');
break;
}
}
}
});
// Wrapper for the plugin
$.fn.smartWizard = function (options) {
var args = arguments;
var instance;
if (options === undefined || typeof options === 'object') {
return this.each(function () {
if (!$.data(this, "smartWizard")) {
$.data(this, "smartWizard", new SmartWizard(this, options));
}
});
} else if (typeof options === 'string' && options[0] !== '_' && options !== 'init') {
instance = $.data(this[0], 'smartWizard');
if (options === 'destroy') {
$.data(this, 'smartWizard', null);
}
if (instance instanceof SmartWizard && typeof instance[options] === 'function') {
return instance[options].apply(instance, Array.prototype.slice.call(args, 1));
} else {
return this;
}
}
};
})(jQuery, window, document);

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,25 @@
/**
* PrestaChamps
*
* NOTICE OF LICENSE
*
* This source file is subject to the Commercial License
* you can't distribute, modify or sell this code
*
* DISCLAIMER
*
* Do not edit or add to this file
* If you need help please contact leo@prestachamps.com
*
* @author Mailchimp
* @copyright PrestaChamps
* @license commercial
*/
$(document).ready(function () {
var x = $('#configuration_form_submit_btn').text();
if(x.indexOf('Disconnect') !== -1) {
$('#configuration_form').submit(function() {
return confirm("This will disable your MailChimp store and break any existing automations, are you sure?");
});
}
});

View File

@@ -0,0 +1,484 @@
/**
* PrestaChamps
*
* NOTICE OF LICENSE
*
* This source file is subject to the Commercial License
* you can't distribute, modify or sell this code
*
* DISCLAIMER
*
* Do not edit or add to this file
* If you need help please contact leo@prestachamps.com
*
* @author Mailchimp
* @copyright PrestaChamps
* @license commercial
*
* @var {Object} toastr
*
* @var {String} statePending
*
* @var {String} stateRefundedSelect
*
* @var {String} stateCancelled
*
* @var {String} stateShipped
*
* @var {String} statePaid
*
* @var {String} itemsPerRequest
*
* @var {Array} productIds
*/
var receiveMessage = function (event) {
if (event.origin !== middlewareUrl) {
return false;
}
if (event.data.hasOwnProperty('token') && event.data.hasOwnProperty('user')) {
$("#api-key").val(event.data.token + "-" + event.data.user.dc);
$("#logged-in-as-container").removeClass("hidden").find("b").text(event.data.user.login.login_name);
$("#oauth2-start").addClass("hidden");
toastr.success("Authentication was successful");
}
};
window.addEventListener("message", receiveMessage, true);
$(document).ready(function () {
var wizard = $('#setup-wizard');
var apiKeyInput = $('#api-key');
var listsInput = $('#list-select');
var statePendingSelect = $('#module-mailchimpproconfig-statuses-for-pending');
var stateRefundedSelect = $('#module-mailchimpproconfig-statuses-for-refunded');
var stateCancelledSelect = $('#module-mailchimpproconfig-statuses-for-cancelled');
var stateShippedSelect = $('#module-mailchimpproconfig-statuses-for-shipped');
var statePaidSelect = $('#module-mailchimpproconfig-statuses-for-paid');
wizard.smartWizard({
useURLhash: false,
showStepURLhash: false,
backButtonSupport: false
});
$('#oauth2-start').click(function (event) {
event.preventDefault();
var windowObjectReference;
var strWindowFeatures = "height=500,width=500,left=100,top=100,resizable=yes,scrollbars=yes,toolbar=yes,menubar=no,location=no,directories=no, status=yes";
windowObjectReference = window.open(
middlewareUrl,
"McAuthMiddleware",
strWindowFeatures
);
});
wizard.on("leaveStep", function (e, anchorObject, stepNumber, stepDirection) {
var success = false;
if (stepNumber === 0) {
function storeApiKey() {
var stuff = false;
$.ajax({
url: wizardUrl,
type: 'POST',
data: {
action: 'apiKey',
apiKey: apiKeyInput.val()
},
cache: false,
async: false
}).success(function () {
toastr.success("API key saved");
stuff = true;
}).fail(function (xhr, status, error) {
var response = JSON.parse(xhr.responseText);
toastr.error(response.error);
setTimeout(function () {
}, 5000);
stuff = false;
});
return stuff;
}
if (apiKeyInput.val().length < 3) {
toastr.warning("Please authenticate first");
return false;
}
return storeApiKey();
}
if (stepNumber === 1) {
if (listsInput.val() === null) {
toastr.error('Please select a list');
success = false;
} else {
$.ajax({
url: wizardUrl,
type: 'POST',
data: {
action: 'listSelect',
listId: listsInput.val()
},
async: false
}).success(function () {
toastr.success("List ID saved");
success = true;
}).fail(function (xhr, status, error) {
var response = JSON.parse(xhr.responseText);
toastr.error(response.error);
success = false;
});
}
return success;
}
if (stepNumber === 2) {
if (!statePendingSelect.val()) {
toastr.error("Please select at least one status for pending");
return false;
}
if (!stateRefundedSelect.val()) {
toastr.error("Please select at least one status for refunded");
return false;
}
if (!stateCancelledSelect.val()) {
toastr.error("Please select at least one status for cancelled");
return false;
}
if (!stateShippedSelect.val()) {
toastr.error("Please select at least one status for shipped");
return false;
}
if (!statePaidSelect.val()) {
toastr.error("Please select at least one status for paid");
return false;
}
var statesData = {};
statesData[statePending] = $(statePendingSelect).val();
statesData[stateRefunded] = $(stateRefundedSelect).val();
statesData[stateCancelled] = $(stateCancelledSelect).val();
statesData[stateShipped] = $(stateShippedSelect).val();
statesData[statePaid] = $(statePaidSelect).val();
$.ajax({
url: wizardUrl,
type: 'POST',
data: {
action: 'stateMapping',
states: statesData
},
async: false
}).success(function () {
toastr.success("Order state mapping was saved");
setStates();
success = true;
}).fail(function (xhr, status, error) {
var response = JSON.parse(xhr.responseText);
toastr.error(response.error);
success = false;
});
return success;
}
});
wizard.on("showStep", function (e, anchorObject, stepNumber, stepDirection) {
if (stepNumber === 1) {
loadLists();
}
if (stepNumber === 2) {
loadStateMapping();
}
if (stepNumber === 3) {
syncStores();
}
if (stepNumber === 4) {
syncProducts();
}
if (stepNumber === 5) {
syncCustomers();
}
if (stepNumber === 6) {
syncPromoCodes();
}
if (stepNumber === 7) {
syncOrders();
}
});
function setStates() {
$.ajax({
url: wizardUrl,
type: 'POST',
data: {
action: 'getStates'
},
}).success(function (response) {
success = true;
}).fail(function (xhr, status, error) {
var response = JSON.parse(xhr.responseText);
toastr.error(response.error);
success = false;
});
}
function loadLists() {
$.ajax({
url: wizardUrl,
type: 'POST',
data: {
action: 'getLists'
},
}).success(function (response) {
listsInput
.find('option')
.remove()
.end();
$.each(response.lists, function (i, item) {
listsInput.append(new Option(item.name, item.id, null, (response.selectedList === item.id)));
});
var container = $('.sw-container.tab-content');
var spinner = $('#step-2 .spinner');
spinner.addClass('hidden');
$("#loading-lists-in-progress").addClass('hidden');
$("#step-2 #input-container").removeClass('hidden');
container.css('min-height', container.height() - spinner.height() - 250);
success = false;
}).fail(function (xhr, status, error) {
var response = JSON.parse(xhr.responseText);
toastr.error(response.error);
success = false;
});
}
function syncStores() {
$.ajax({
url: wizardUrl,
type: 'POST',
data: {
action: 'syncStores'
},
}).success(function (response) {
if (response.result !== undefined) {
for (var i = 0; i < response.result.length; i++) {
var item = response.result[i];
if (item.headers.http_code === 200) {
var bodyJson = JSON.parse(item.body);
toastr.success("Shop synced: " + bodyJson.name);
} else {
toastr.error("Oups! Something happened");
console.log(item);
}
}
}
var container = $('.sw-container.tab-content');
var spinner = $('#step-4 .spinner');
container.css('min-height', container.height() - spinner.height() - 200);
$("#shop-sync-in-progress").addClass('hidden');
$("#shop-sync-completed").removeClass('hidden');
$("#shop-sync-error").addClass('hidden');
spinner.addClass('hidden');
success = true;
}).fail(function (xhr, status, error) {
var response = JSON.parse(xhr.responseText);
console.log(response);
if (response.result !== undefined) {
for (var i = 0; i < response.result.length; i++) {
console.log(response.result[i]);
}
}
toastr.error(response.error);
success = false;
});
}
function syncProducts() {
$("#step-4 .progress .progress-bar").css("width", "0%");
var productBatch = productIds.chunk(itemsPerRequest);
for (var i = 0; i < productBatch.length; i++) {
let current = i;
$.ajaxq("productSync", {
url: wizardUrl,
type: 'POST',
data: {
action: 'syncProducts',
items: productBatch[i]
},
}).success(function (response) {
$("#step-5 #result").html(JSON.stringify(response, null, 2));
var currentSuccess = parseInt(current + 1) * parseInt(itemsPerRequest);
currentSuccess = (currentSuccess >= productIds.length) ? productIds.length : currentSuccess;
toastr.success(currentSuccess + " / " + productIds.length + " completed");
success = true;
}).fail(function (xhr, status, error) {
console.log(xhr);
toastr.error("Error while launching product sync batch");
success = false;
}).done(function () {
$("#step-5 .progress .progress-bar").css("width", (((current + 1) * parseInt(itemsPerRequest) * 100) / productIds.length) + "%");
if (!$.ajaxq.isRunning("productSync")) {
$("#product-sync-in-progress").hide();
$("#product-sync-completed").removeClass('hidden');
}
});
}
}
function syncPromoCodes() {
$("#step-7 .progress .progress-bar").css("width", "0%");
var promoCodeBatch = promoCodeIds.chunk(itemsPerRequest);
if (promoCodeBatch.length < 1) {
$("#promo-code-sync-in-progress").hide();
$("#promo-code-sync-completed").removeClass('hidden');
}
for (var i = 0; i < promoCodeBatch.length; i++) {
let current = i;
$.ajaxq("promoCodesSync", {
url: wizardUrl,
type: 'POST',
data: {
action: 'syncPromoCodes',
items: promoCodeBatch[i]
},
}).success(function (response) {
$("#step-7 #result").html(JSON.stringify(response, null, 2));
var currentSuccess = parseInt(current + 1) * parseInt(itemsPerRequest);
currentSuccess = (currentSuccess >= promoCodeIds.length) ? promoCodeIds.length : currentSuccess;
toastr.success(currentSuccess + " / " + promoCodeIds.length + " completed");
success = true;
}).fail(function (xhr, status, error) {
console.log(xhr);
toastr.error("Error while launching customer sync batch");
success = false;
}).done(function () {
$("#step-7 .progress .progress-bar").css("width", (((current + 1) * parseInt(itemsPerRequest) * 100) / promoCodeIds.length) + "%");
if (!$.ajaxq.isRunning("promoCodesSync")) {
$("#promo-code-sync-in-progress").hide();
$("#promo-code-sync-completed").removeClass('hidden');
}
});
}
}
function syncCustomers() {
$("#step-6 .progress .progress-bar").css("width", "0%");
var customerBatch = customerIds.chunk(itemsPerRequest);
for (var i = 0; i < customerBatch.length; i++) {
let current = i;
$.ajaxq("customerSync", {
url: wizardUrl,
type: 'POST',
data: {
action: 'syncCustomers',
items: customerBatch[i]
},
}).success(function (response) {
$("#step-6 #result").html(JSON.stringify(response, null, 2));
var currentSuccess = parseInt(current + 1) * parseInt(itemsPerRequest);
currentSuccess = (currentSuccess >= customerIds.length) ? customerIds.length : currentSuccess;
toastr.success(currentSuccess + " / " + customerIds.length + " completed");
success = true;
}).fail(function (xhr, status, error) {
console.log(xhr);
toastr.error("Error while launching customer sync batch");
success = false;
}).done(function () {
$("#step-6 .progress .progress-bar").css("width", (((current + 1) * parseInt(itemsPerRequest) * 100) / customerIds.length) + "%");
if (!$.ajaxq.isRunning("customerSync")) {
$("#customer-sync-in-progress").hide();
$("#customer-sync-completed").removeClass('hidden');
}
});
}
}
function syncOrders() {
$("#step-8 .progress .progress-bar").css("width", "0%");
var ordersBatch = orderIds.chunk(itemsPerRequest);
if (ordersBatch.length < 1) {
$("#order-sync-in-progress").hide();
$("#order-sync-completed").removeClass('hidden');
}
for (var i = 0; i < ordersBatch.length; i++) {
let current = i;
$.ajaxq("orderSync", {
url: wizardUrl,
type: 'POST',
data: {
action: 'syncOrders',
items: ordersBatch[i]
},
}).success(function (response) {
$("#step-8 #result").html(JSON.stringify(response, null, 2));
var currentSuccess = parseInt(current + 1) * parseInt(itemsPerRequest);
currentSuccess = (currentSuccess >= orderIds.length) ? orderIds.length : currentSuccess;
toastr.success(currentSuccess + " / " + orderIds.length + " completed");
success = true;
}).fail(function (xhr, status, error) {
console.log(xhr);
toastr.error("Error while launching order sync batch");
success = false;
}).done(function () {
$("#step-8 .progress .progress-bar").css("width", (((current + 1) * parseInt(itemsPerRequest) * 100) / orderIds.length) + "%");
if (!$.ajaxq.isRunning("orderSync")) {
$("#order-sync-in-progress").hide();
$("#order-sync-completed").removeClass('hidden');
}
});
}
}
function loadStateMapping() {
$.ajax({
url: wizardUrl,
type: 'POST',
data: {
action: 'getStates'
},
}).success(function (response) {
var pending = JSON.parse(response.mapping[statePending]);
var refunded = JSON.parse(response.mapping[stateRefunded]);
var cancelled = JSON.parse(response.mapping[stateCancelled]);
var shipped = JSON.parse(response.mapping[stateShipped]);
var paid = JSON.parse(response.mapping[statePaid]);
if (!pending) {pending = [];}
if (!refunded) {refunded = [];}
if (!cancelled) {cancelled = [];}
if (!shipped) {shipped = [];}
if (!paid) {paid = [];}
$.each(response.states, function (i, item) {
statePendingSelect.append(new Option(item.name, item.id_order_state, null, pending.includes(item.id_order_state)));
stateRefundedSelect.append(new Option(item.name, item.id_order_state, null, refunded.includes(item.id_order_state)));
stateCancelledSelect.append(new Option(item.name, item.id_order_state, null, cancelled.includes(item.id_order_state)));
stateShippedSelect.append(new Option(item.name, item.id_order_state, null, shipped.includes(item.id_order_state)));
statePaidSelect.append(new Option(item.name, item.id_order_state, null, paid.includes(item.id_order_state)));
});
statePendingSelect.attr('size', response.states.length);
stateRefundedSelect.attr('size', response.states.length);
stateCancelledSelect.attr('size', response.states.length);
stateShippedSelect.attr('size', response.states.length);
statePaidSelect.attr('size', response.states.length);
var container = $('.sw-container.tab-content');
var spinner = $('#step-3 .spinner');
spinner.addClass('hidden');
$("#loading-states-in-progress").addClass('hidden');
$("#step-3 #status-inputs-container").removeClass('hidden');
container.css('min-height', container.height() - spinner.height() - 250);
success = true;
}).fail(function (xhr, status, error) {
var response = JSON.parse(xhr.responseText);
toastr.error(response.error);
success = false;
});
}
});

View File

@@ -0,0 +1,34 @@
<?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,47 @@
/**
* PrestaChamps
*
* NOTICE OF LICENSE
*
* This source file is subject to the Commercial License
* you can't distribute, modify or sell this code
*
* DISCLAIMER
*
* Do not edit or add to this file
* If you need help please contact leo@prestachamps.com
*
* @author Mailchimp
* @copyright PrestaChamps
* @license commercial
*/
$(document).ready(function () {
$("#product-sync .submit").click(function () {
$("#product-sync").addClass("sync-is-running");
$("#product-sync .progress").removeClass("hidden");
$("#product-sync .progress .progress-bar").css("width", "0%");
var productBatch = productIds.chunk(itemsPerRequest);
for (var i = 0; i < productBatch.length; i++) {
let current = i;
$.ajaxq("productSync", {
url: syncUrl,
type: 'POST',
data: {
action: 'productSync',
method: $('#product-sync input[name=method]:checked').val(),
syncMode: $('#product-sync input[name=syncMode]:checked').val(),
items: productBatch[i]
},
}).success(function (response) {
$("#product-sync #result").html(JSON.stringify(response, null, 2));
toastr.success(parseInt(current + 1) * parseInt(itemsPerRequest) + " / " + productIds.length + " completed");
}).fail(function (xhr, status, error) {
console.log(xhr);
toastr.error("Error while launching product sync batch");
}).done(function () {
$("#product-sync .progress .progress-bar").css("width", (((current + 1) * parseInt(itemsPerRequest) * 100) / productIds.length) + "%");
});
}
$("#product-sync").removeClass("sync-is-running");
});
});

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,60 @@
{*
* PrestaChamps
*
* NOTICE OF LICENSE
*
* This source file is subject to the Commercial License
* you can't distribute, modify or sell this code
*
* DISCLAIMER
*
* Do not edit or add to this file
* If you need help please contact leo@prestachamps.com
*
* @author Mailchimp
* @copyright PrestaChamps
* @license commercial
*}
<div class="panel table-responsive">
<div class="panel-heading">
{l s='Account info' mod='mailchimppro'}
</div>
<div class="panel-body">
<table class="table">
<tbody>
<tr>
<td>{l s='Account name' mod='mailchimppro'}</td>
<td>{$info.account_name|escape:'htmlall':'UTF-8'}</td>
</tr>
<tr>
<td>{l s='E-mail' mod='mailchimppro'}</td>
<td>{$info.email|escape:'htmlall':'UTF-8'}</td>
</tr>
<tr>
<td>{l s='Name' mod='mailchimppro'}</td>
<td>{$info.first_name|escape:'htmlall':'UTF-8'} {$info.last_name|escape:'htmlall':'UTF-8'}</td>
</tr>
<tr>
<td>{l s='Pricing plan' mod='mailchimppro'}</td>
<td>{$info.pricing_plan_type|escape:'htmlall':'UTF-8'}</td>
</tr>
<tr>
<td>{l s='Timezone' mod='mailchimppro'}</td>
<td>{$info.account_timezone|escape:'htmlall':'UTF-8'}</td>
</tr>
<tr>
<td>{l s='Industry' mod='mailchimppro'}</td>
<td>{$info.account_industry|escape:'htmlall':'UTF-8'}</td>
</tr>
<tr>
<td>{l s='Pro enabled' mod='mailchimppro'}</td>
<td>{$info.pro_enabled|escape:'htmlall':'UTF-8'}</td>
</tr>
<tr>
<td>{l s='Total subscribers' mod='mailchimppro'}</td>
<td>{$info.total_subscribers|escape:'htmlall':'UTF-8'}</td>
</tr>
</tbody>
</table>
</div>
</div>

View File

@@ -0,0 +1,39 @@
{*
* PrestaChamps
*
* NOTICE OF LICENSE
*
* This source file is subject to the Commercial License
* you can't distribute, modify or sell this code
*
* DISCLAIMER
*
* Do not edit or add to this file
* If you need help please contact leo@prestachamps.com
*
* @author Mailchimp
* @copyright PrestaChamps
* @license commercial
*}
<div class="panel table-responsive">
<div class="panel-heading">
{l s='Delete e-commerce data' mod='mailchimppro'}
</div>
<div class="panel-body">
<div class="alert alert-danger">
<p>
{l s='Delete all e-commerce data from your Mailchimp account' mod='mailchimppro'}
</p>
<p>
{l s='Once you delete a these datas, there is no going back. Please be certain.' mod='mailchimppro'}
</p>
</div>
<div class="row text-center">
<a class="btn btn-danger"
onclick="return confirm('Are you sure?')"
href="{LinkHelper::getAdminLink('AdminMailchimpProConfig', true, [], ['action' => 'deleteEcommerceData'])|escape:'htmlall':'UTF-8'}">
{l s='Delete e-commerce' mod='mailchimppro'}
</a>
</div>
</div>
</div>

View File

@@ -0,0 +1,34 @@
<?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,98 @@
{*
* PrestaChamps
*
* NOTICE OF LICENSE
*
* This source file is subject to the Commercial License
* you can't distribute, modify or sell this code
*
* DISCLAIMER
*
* Do not edit or add to this file
* If you need help please contact leo@prestachamps.com
*
* @author Mailchimp
* @copyright PrestaChamps
* @license commercial
*}
<div class="row">
<div class="col-sm-6 hidden-xs">
<img class="img-responsive" src="../modules/mailchimppro/views/img/logo-horizontal.png" height="326" width="1200" style="max-height: 32px; width: auto">
</div>
<div class="col-sm-6">
<div class="btn-group pull-right" role="group" style="height:100%; vertical-align:center;line-height : 100%;">
<a class="btn btn-default" href="{LinkHelper::getAdminLink('AdminMailchimpProWizard')|escape:'htmlall':'UTF-8'}">
<i class="icon icon-floppy-o" aria-hidden="true"></i>
{l s='Setup wizard' mod='mailchimppro'}
</a>
<a class="btn btn-default hidden" href="{LinkHelper::getAdminLink('AdminMailchimpProSync')|escape:'htmlall':'UTF-8'}">
<i class="icon icon-retweet" aria-hidden="true"></i>
{l s='Sync' mod='mailchimppro'}
</a>
<div class="btn-group" role="group">
<button type="button" class="btn btn-primary btn-mc dropdown-toggle" data-toggle="dropdown" aria-haspopup="true"
aria-expanded="false">
<i class="icon icon-folder-open-o" aria-hidden="true"></i>
{l s='Mailchimp Objects' mod='mailchimppro'}
<span class="caret"></span>
</button>
<ul class="dropdown-menu">
<li>
<a href="{LinkHelper::getAdminLink('AdminMailchimpProBatches')|escape:'htmlall':'UTF-8'}">
{l s='Batches' mod='mailchimppro'}
</a>
</li>
<li>
<a href="{LinkHelper::getAdminLink('AdminMailchimpProCarts')|escape:'htmlall':'UTF-8'}">
{l s='Carts' mod='mailchimppro'}
</a>
</li>
<li>
<a href="{LinkHelper::getAdminLink('AdminMailchimpProCustomers')|escape:'htmlall':'UTF-8'}">
{l s='Customers' mod='mailchimppro'}
</a>
</li>
<li>
<a href="{LinkHelper::getAdminLink('AdminMailchimpProLists')|escape:'htmlall':'UTF-8'}">
{l s='Lists' mod='mailchimppro'}
</a>
</li>
<li>
<a href="{LinkHelper::getAdminLink('AdminMailchimpProOrders')|escape:'htmlall':'UTF-8'}">
{l s='Orders' mod='mailchimppro'}
</a>
</li>
<li>
<a href="{LinkHelper::getAdminLink('AdminMailchimpProProducts')|escape:'htmlall':'UTF-8'}">
{l s='Products' mod='mailchimppro'}
</a>
</li>
<li>
<a href="{LinkHelper::getAdminLink('AdminMailchimpProStores')|escape:'htmlall':'UTF-8'}">
{l s='Stores' mod='mailchimppro'}
</a>
</li>
<li>
<a href="{LinkHelper::getAdminLink('AdminMailchimpProSites')|escape:'htmlall':'UTF-8'}">
{l s='Sites' mod='mailchimppro'}
</a>
</li>
<li>
<a href="{LinkHelper::getAdminLink('AdminMailchimpProAutomations')|escape:'htmlall':'UTF-8'}">
{l s='Automations' mod='mailchimppro'}
</a>
</li>
<li>
<a href="{LinkHelper::getAdminLink('AdminMailchimpProPromoRules')|escape:'htmlall':'UTF-8'}">
{l s='Promo rules' mod='mailchimppro'}
</a>
</li>
</ul>
</div>
</div>
<div class="clearfix"></div>
</div>
</div>
<hr>

View File

@@ -0,0 +1,96 @@
{*
* PrestaChamps
*
* NOTICE OF LICENSE
*
* This source file is subject to the Commercial License
* you can't distribute, modify or sell this code
*
* DISCLAIMER
*
* Do not edit or add to this file
* If you need help please contact leo@prestachamps.com
*
* @author Mailchimp
* @copyright PrestaChamps
* @license commercial
*}
{$JSON_PRETTY_PRINT = 128}
{*<div class="well">*}
{*<p><b>{$name}</b></p>*}
{*<pre>{json_encode($automation, $JSON_PRETTY_PRINT)}</pre>*}
{*</div>*}
<div class="table-responsive">
<table class="table table-bordered">
<thead>
<tr>
<th>{l s='ID' mod='mailchimppro'}</th>
<th>{l s='Created at' mod='mailchimppro'}</th>
<th>{l s='Started at' mod='mailchimppro'}</th>
<th>{l s='Status' mod='mailchimppro'}</th>
<th>{l s='Emails sent' mod='mailchimppro'}</th>
<th>{l s='Recipients' mod='mailchimppro'}</th>
<th>{l s='Settings' mod='mailchimppro'}</th>
<th>{l s='Tracking' mod='mailchimppro'}</th>
<th>{l s='Trigger settings' mod='mailchimppro'}</th>
<th>{l s='Report summary' mod='mailchimppro'}</th>
<th>{l s='' mod='mailchimppro'}</th>
<th>{l s='' mod='mailchimppro'}</th>
<th>#</th>
</tr>
</thead>
<tbody>
{foreach $automations as $automation}
<tr>
<td>
{$automation.id|escape:'htmlall':'UTF-8'}
</td>
<td>
{$automation.create_time|escape:'htmlall':'UTF-8'}
</td>
<td>
{$automation.start_time|escape:'htmlall':'UTF-8'}
</td>
<td>
{$automation.status|escape:'htmlall':'UTF-8'}
</td>
<td>
{$automation.emails_sent|escape:'htmlall':'UTF-8'}
</td>
<td>
<div class="well">
{* HTML code, no need for escape *}
<pre>{json_encode($automation.recipients, $JSON_PRETTY_PRINT)}</pre>
</div>
</td>
<td>
<div class="well">
{* HTML code, no need for escape *}
<pre>{json_encode($automation.settings, $JSON_PRETTY_PRINT)}</pre>
</div>
</td>
<td>
<div class="well">
{* HTML code, no need for escape *}
<pre>{json_encode($automation.tracking, $JSON_PRETTY_PRINT)}</pre>
</div>
</td>
<td>
<div class="well">
{* HTML code, no need for escape *}
<pre>{json_encode($automation.trigger_settings, $JSON_PRETTY_PRINT)}</pre>
</div>
</td>
<td>
<div class="well">
{if isset($automation.report_summary)}
{* HTML code, no need for escape *}
<pre>{json_encode($automation.report_summary, $JSON_PRETTY_PRINT)}</pre>
{/if}
</div>
</td>
</tr>
{/foreach}
</tbody>
</table>
</div>

View File

@@ -0,0 +1,55 @@
{*
* PrestaChamps
*
* NOTICE OF LICENSE
*
* This source file is subject to the Commercial License
* you can't distribute, modify or sell this code
*
* DISCLAIMER
*
* Do not edit or add to this file
* If you need help please contact leo@prestachamps.com
*
* @author Mailchimp
* @copyright PrestaChamps
* @license commercial
*}
<div class="table-responsive">
<table class="table table-bordered">
<thead>
<tr>
<th>{l s='ID' mod='mailchimppro'}</th>
<th>{l s='Status' mod='mailchimppro'}</th>
<th>{l s='Total operations' mod='mailchimppro'}</th>
<th>{l s='Finished operations' mod='mailchimppro'}</th>
<th>{l s='Failed operations' mod='mailchimppro'}</th>
<th>{l s='Submitted at' mod='mailchimppro'}</th>
<th>{l s='Completed at' mod='mailchimppro'}</th>
<th>#</th>
</tr>
</thead>
<tbody>
{foreach $batches as $batch}
<tr>
<td>
<a href="{LinkHelper::getAdminLink('AdminMailchimpProBatches', true, [], ['action' => 'single', 'entity_id' => $batch.id])|escape:'htmlall':'UTF-8'}">
{$batch.id|escape:'htmlall':'UTF-8'}
</a>
</td>
<td>{$batch.status|escape:'htmlall':'UTF-8'}</td>
<td>{$batch.total_operations|escape:'htmlall':'UTF-8'}</td>
<td>{$batch.finished_operations|escape:'htmlall':'UTF-8'}</td>
<td>{$batch.errored_operations|escape:'htmlall':'UTF-8'}</td>
<td>{$batch.submitted_at|escape:'htmlall':'UTF-8'}</td>
<td>{$batch.completed_at|escape:'htmlall':'UTF-8'}</td>
<td>
<a href="{LinkHelper::getAdminLink('AdminMailchimpProBatches', true, [], ['action' => 'entitydelete', 'entity_id' => $batch.id])|escape:'htmlall':'UTF-8'}">
Delete
</a>
</td>
</tr>
{/foreach}
</tbody>
</table>
</div>

View File

@@ -0,0 +1,34 @@
<?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,25 @@
{*
* PrestaChamps
*
* NOTICE OF LICENSE
*
* This source file is subject to the Commercial License
* you can't distribute, modify or sell this code
*
* DISCLAIMER
*
* Do not edit or add to this file
* If you need help please contact leo@prestachamps.com
*
* @author Mailchimp
* @copyright PrestaChamps
* @license commercial
*}
{foreach $lines as $product}
<p>
<b>{$product.product_variant_title|escape:'htmlall':'UTF-8'}</b>
<small style="color: red">PID: {$product.product_id|escape:'htmlall':'UTF-8'}, CID: {$product.product_variant_id|escape:'htmlall':'UTF-8'}</small>
<small style="color: blue">QTY: {$product.quantity|escape:'htmlall':'UTF-8'}</small>
<small style="color: green">{$product.price|escape:'htmlall':'UTF-8'} {$currency_code|escape:'htmlall':'UTF-8'}</small>
</p>
{/foreach}

View File

@@ -0,0 +1,51 @@
{*
* PrestaChamps
*
* NOTICE OF LICENSE
*
* This source file is subject to the Commercial License
* you can't distribute, modify or sell this code
*
* DISCLAIMER
*
* Do not edit or add to this file
* If you need help please contact leo@prestachamps.com
*
* @author Mailchimp
* @copyright PrestaChamps
* @license commercial
*}
<div class="table-responsive">
<table class="table table-bordered">
<thead>
<tr>
<th>{l s='ID' mod='mailchimppro'}</th>
<th>{l s='Customer' mod='mailchimppro'}</th>
<th>{l s='Order total' mod='mailchimppro'}</th>
<th>{l s='Products' mod='mailchimppro'}</th>
<th>{l s='Created at' mod='mailchimppro'}</th>
<th>{l s='Updated at' mod='mailchimppro'}</th>
<th>#</th>
</tr>
</thead>
<tbody>
{foreach $carts as $cart}
<tr>
<td>{$cart.id|escape:'htmlall':'UTF-8'}</td>
<td>{$cart.customer.email_address|escape:'htmlall':'UTF-8'}</td>
<td>{$cart.order_total|escape:'htmlall':'UTF-8'} {$cart.currency_code|escape:'htmlall':'UTF-8'}</td>
<td>
{include file='./cart/line.tpl' lines=$cart.lines currency_code=$cart.currency_code}
</td>
<td>{$cart.created_at|escape:'htmlall':'UTF-8'}</td>
<td>{$cart.updated_at|escape:'htmlall':'UTF-8'}</td>
<td>
<a href="{LinkHelper::getAdminLink('AdminMailchimpProCarts', true, [], ['action' => 'entitydelete', 'entity_id' => $cart.id])|escape:'htmlall':'UTF-8'}">
Delete
</a>
</td>
</tr>
{/foreach}
</tbody>
</table>
</div>

View File

@@ -0,0 +1,49 @@
{*
* PrestaChamps
*
* NOTICE OF LICENSE
*
* This source file is subject to the Commercial License
* you can't distribute, modify or sell this code
*
* DISCLAIMER
*
* Do not edit or add to this file
* If you need help please contact leo@prestachamps.com
*
* @author Mailchimp
* @copyright PrestaChamps
* @license commercial
*}
<div class="table-responsive">
<table class="table table-bordered">
<thead>
<tr>
<th>{l s='ID' mod='mailchimppro'}</th>
<th>{l s='Email' mod='mailchimppro'}</th>
<th>{l s='Name' mod='mailchimppro'}</th>
<th>{l s='Orders' mod='mailchimppro'}</th>
<th>{l s='Opt in status' mod='mailchimppro'}</th>
<th>{l s='Total orders' mod='mailchimppro'}</th>
<th>#</th>
</tr>
</thead>
<tbody>
{foreach $customers as $customer}
<tr>
<td>{$customer.id|escape:'htmlall':'UTF-8'}</td>
<td>{$customer.email_address|escape:'htmlall':'UTF-8'}</td>
<td>{$customer.first_name|escape:'htmlall':'UTF-8'} {$customer.last_name|escape:'htmlall':'UTF-8'}</td>
<td>{$customer.orders_count|escape:'htmlall':'UTF-8'}</td>
<td>{$customer.opt_in_status|var_export:true|escape:'htmlall':'UTF-8'}</td>
<td>{$customer.total_spent|escape:'htmlall':'UTF-8'}</td>
<td>
<a href="{LinkHelper::getAdminLink('AdminMailchimpProCustomers', true, [], ['action' => 'entitydelete', 'entity_id' => $customer.id])|escape:'htmlall':'UTF-8'}">
Delete
</a>
</td>
</tr>
{/foreach}
</tbody>
</table>
</div>

View File

@@ -0,0 +1,34 @@
<?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,92 @@
{*
* PrestaChamps
*
* NOTICE OF LICENSE
*
* This source file is subject to the Commercial License
* you can't distribute, modify or sell this code
*
* DISCLAIMER
*
* Do not edit or add to this file
* If you need help please contact leo@prestachamps.com
*
* @author Mailchimp
* @copyright PrestaChamps
* @license commercial
*}
<div class="table-responsive">
<table class="table table-bordered">
<thead>
<tr>
<th>{l s='ID' mod='mailchimppro'}</th>
<th>{l s='Web ID' mod='mailchimppro'}</th>
<th>{l s='Name' mod='mailchimppro'}
<th>#</th>
</tr>
</thead>
<tbody>
{foreach $lists as $list}
<tr>
<td>{$list.id|escape:'htmlall':'UTF-8'}</td>
<td>{$list.web_id|escape:'htmlall':'UTF-8'}</td>
<td>{$list.name|escape:'htmlall':'UTF-8'}</td>
<td>
<div class="btn-group btn-group-xs" role="group" aria-label="...">
<a class="btn btn-default"
href="{LinkHelper::getAdminLink('AdminMailchimpProLists', true, [], ['action' => 'entitydelete', 'entity_id' => $list.id])|escape:'htmlall':'UTF-8'}">
Delete
</a>
<a class="btn btn-default"
href="{LinkHelper::getAdminLink('AdminMailchimpProListMembers', true, [], ['list_id' => $list.id])|escape:'htmlall':'UTF-8'}">
{l s='Members' mod='mailchimppro'}
</a>
</div>
</td>
</tr>
{/foreach}
</tbody>
</table>
</div>
<button type="button" class="btn btn-success" data-toggle="modal" data-target="#new-list-modal" style="display: none">
{l s='Add new list' mod='mailchimppro'}
</button>
<div class="modal fade" id="new-list-modal" tabindex="-1" role="dialog" aria-labelledby="new-list-modal-label">
<div class="modal-dialog" role="document">
<div class="modal-content">
<form class="form-horizontal" role="form"
action="{LinkHelper::getAdminLink ('AdminMailchimpProLists', false, [], ['action' => 'new'])|escape:'htmlall':'UTF-8'}"
method="post">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
<h4 class="modal-title" id="new-list-modal-label">
{l s='Add new list' mod='mailchimppro'}
</h4>
</div>
<div class="modal-body">
<input type="hidden" value="{getAdminToken tab='AdminMailchimpProLists'}" name="token">
<div class="form-group">
<label class="col-sm-2 control-label" for="list-name-input">
{l s='List name' mod='mailchimppro'}
</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="list-name-input"
placeholder="{l s='List name' mod='mailchimppro'}" name="list_name"/>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">
{l s='Cancel' mod='mailchimppro'}
</button>
<button type="submit" class="btn btn-primary">{l s='Save' mod='mailchimppro'}</button>
</div>
</form>
</div>
</div>
</div>

View File

@@ -0,0 +1,50 @@
{*
* PrestaChamps
*
* NOTICE OF LICENSE
*
* This source file is subject to the Commercial License
* you can't distribute, modify or sell this code
*
* DISCLAIMER
*
* Do not edit or add to this file
* If you need help please contact leo@prestachamps.com
*
* @author Mailchimp
* @copyright PrestaChamps
* @license commercial
*}
<div class="table-responsive">
<table class="table table-bordered">
<thead>
<tr>
<th>{l s='ID' mod='mailchimppro'}</th>
<th>{l s='Email' mod='mailchimppro'}</th>
<th>{l s='Email type' mod='mailchimppro'}</th>
<th>{l s='Status' mod='mailchimppro'}</th>
<th>{l s='IP signup' mod='mailchimppro'}</th>
<th>{l s='Signup time' mod='mailchimppro'}</th>
<th>{l s='IP Opt-in' mod='mailchimppro'}</th>
<th>{l s='Language' mod='mailchimppro'}</th>
<th>{l s='VIP' mod='mailchimppro'}</th>
</tr>
</thead>
<tbody>
{foreach $members as $member}
<tr>
<td>{$member.id|escape:'htmlall':'UTF-8'}</td>
<td>{$member.email_address|escape:'htmlall':'UTF-8'}</td>
<td>{$member.email_type|escape:'htmlall':'UTF-8'}</td>
<td>{$member.status|escape:'htmlall':'UTF-8'}</td>
<td>{$member.ip_signup|escape:'htmlall':'UTF-8'}</td>
<td>{$member.timestamp_signup|escape:'htmlall':'UTF-8'}</td>
<td>{$member.ip_opt|escape:'htmlall':'UTF-8'}</td>
<td>{$member.language|escape:'htmlall':'UTF-8'}</td>
<td>{$member.vip|escape:'htmlall':'UTF-8'}</td>
</tr>
{/foreach}
</tbody>
</table>
</div>

View File

@@ -0,0 +1,34 @@
<?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,61 @@
{*
* PrestaChamps
*
* NOTICE OF LICENSE
*
* This source file is subject to the Commercial License
* you can't distribute, modify or sell this code
*
* DISCLAIMER
*
* Do not edit or add to this file
* If you need help please contact leo@prestachamps.com
*
* @author Mailchimp
* @copyright PrestaChamps
* @license commercial
*}
<tr>
<td>{$order.id|escape:'htmlall':'UTF-8'}</td>
<td>
{if isset($order.customer)}
<b>{$order.customer.email_address|escape:'htmlall':'UTF-8'}</b>
<small>ID: {$order.customer.id|escape:'htmlall':'UTF-8'}</small>
{else}
<span class="text-danger">{l s='No customer' mod='mailchimppro'}</span>
{/if}
</td>
<td>
{$order.store_id|escape:'htmlall':'UTF-8'}
</td>
<td>
{$order.financial_status|escape:'htmlall':'UTF-8'}
</td>
<td>
{$order.fulfillment_status|escape:'htmlall':'UTF-8'}
</td>
<td>
{$order.order_total|escape:'htmlall':'UTF-8'} {$order.currency_code|escape:'htmlall':'UTF-8'}
</td>
<td>
{$order.discount_total|escape:'htmlall':'UTF-8'} {$order.currency_code|escape:'htmlall':'UTF-8'}
</td>
<td>
{$order.tax_total|escape:'htmlall':'UTF-8'} {$order.currency_code|escape:'htmlall':'UTF-8'}
</td>
<td>
{$order.shipping_total|escape:'htmlall':'UTF-8'} {$order.currency_code|escape:'htmlall':'UTF-8'}
</td>
<td>
{$order.processed_at_foreign|escape:'htmlall':'UTF-8'}
</td>
<td>
{include file='./../cart/line.tpl' lines=$order.lines currency_code=$order.currency_code}
</td>
<td>
<a href="{$link->getAdminLink('AdminMailchimpProOrders', true, [], ['action' => 'entitydelete', 'entity_id' => $order.id])|escape:'htmlall':'UTF-8'}">
Delete
</a>
</td>
</tr>

View File

@@ -0,0 +1,42 @@
{*
* PrestaChamps
*
* NOTICE OF LICENSE
*
* This source file is subject to the Commercial License
* you can't distribute, modify or sell this code
*
* DISCLAIMER
*
* Do not edit or add to this file
* If you need help please contact leo@prestachamps.com
*
* @author Mailchimp
* @copyright PrestaChamps
* @license commercial
*}
<div class="table-responsive">
<table class="table table-bordered">
<thead>
<tr>
<th>{l s='ID' mod='mailchimppro'}</th>
<th>{l s='Customer' mod='mailchimppro'}</th>
<th>{l s='Store ID' mod='mailchimppro'}</th>
<th>{l s='Financial status' mod='mailchimppro'}</th>
<th>{l s='Fulfillment status' mod='mailchimppro'}</th>
<th>{l s='Total' mod='mailchimppro'}</th>
<th>{l s='Discount' mod='mailchimppro'}</th>
<th>{l s='Tax' mod='mailchimppro'}</th>
<th>{l s='Shipping' mod='mailchimppro'}</th>
<th>{l s='Processed at' mod='mailchimppro'}</th>
<th>{l s='Products' mod='mailchimppro'}</th>
<th>#</th>
</tr>
</thead>
<tbody>
{foreach $orders as $order}
{include file='./order/line.tpl' order=$order currency_code=$order.currency_code}
{/foreach}
</tbody>
</table>
</div>

View File

@@ -0,0 +1,34 @@
<?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,28 @@
{*
* PrestaChamps
*
* NOTICE OF LICENSE
*
* This source file is subject to the Commercial License
* you can't distribute, modify or sell this code
*
* DISCLAIMER
*
* Do not edit or add to this file
* If you need help please contact leo@prestachamps.com
*
* @author Mailchimp
* @copyright PrestaChamps
* @license commercial
*}
{foreach $variants as $name => $variant}
<p class="well">
<b>
<a href="{$variant.url|escape:'htmlall':'UTF-8'}" target="_blank" rel="nofollow">
{$variant.title|escape:'htmlall':'UTF-8'}
</a>
</b>
<small style="color: red">SKU: {$variant.sku|escape:'htmlall':'UTF-8'}</small>
<small style="color: rebeccapurple">PRICE: {$variant.price|escape:'htmlall':'UTF-8'}</small>
</p>
{/foreach}

View File

@@ -0,0 +1,59 @@
{*
* PrestaChamps
*
* NOTICE OF LICENSE
*
* This source file is subject to the Commercial License
* you can't distribute, modify or sell this code
*
* DISCLAIMER
*
* Do not edit or add to this file
* If you need help please contact leo@prestachamps.com
*
* @author Mailchimp
* @copyright PrestaChamps
* @license commercial
*}
<div class="table-responsive">
<table class="table table-bordered">
<thead>
<tr>
<th>{l s='ID' mod='mailchimppro'}</th>
<th></th>
<th>{l s='Name' mod='mailchimppro'}</th>
<th>{l s='Description' mod='mailchimppro'}</th>
<th>{l s='Type' mod='mailchimppro'}</th>
<th>{l s='Vendor' mod='mailchimppro'}</th>
<th>{l s='Variants' mod='mailchimppro'}</th>
<th>#</th>
</tr>
</thead>
<tbody>
{foreach $products as $product}
<tr>
<td>{$product.id|escape:'htmlall':'UTF-8'}</td>
<td>
<img src="{$product.image_url|escape:'htmlall':'UTF-8'}" class="img-responsive" style="max-width: 75px">
</td>
<td>
<a href="{$product.url|escape:'htmlall':'UTF-8'}">
{$product.title|escape:'htmlall':'UTF-8'}
</a>
</td>
<td>{$product.description|escape:'htmlall':'UTF-8'}</td>
<td>{$product.type|escape:'htmlall':'UTF-8'}</td>
<td>{$product.vendor|escape:'htmlall':'UTF-8'}</td>
<td>
{include file='./product/variants.tpl' variants=$product.variants}
</td>
<td>
<a href="{LinkHelper::getAdminLink('AdminMailchimpProProducts', true, [], ['action' => 'entitydelete', 'entity_id' => $product.id])|escape:'htmlall':'UTF-8'}">
Delete
</a>
</td>
</tr>
{/foreach}
</tbody>
</table>
</div>

View File

@@ -0,0 +1,45 @@
{*
* PrestaChamps
*
* NOTICE OF LICENSE
*
* This source file is subject to the Commercial License
* you can't distribute, modify or sell this code
*
* DISCLAIMER
*
* Do not edit or add to this file
* If you need help please contact leo@prestachamps.com
*
* @author Mailchimp
* @copyright PrestaChamps
* @license commercial
*}
<div class="table-responsive">
<table class="table table-bordered">
<thead>
<tr>
<th>{l s='ID' mod='mailchimppro'}</th>
<th>{l s='Code' mod='mailchimppro'}</th>
<th>{l s='Redemption url' mod='mailchimppro'}
<th>{l s='Usage count' mod='mailchimppro'}
<th>{l s='Enabled' mod='mailchimppro'}
<th>#</th>
</tr>
</thead>
<tbody>
{foreach $promo_codes as $promo_code}
<tr>
<td>{$promo_code.id|escape:'htmlall':'UTF-8'}</td>
<td>{$promo_code.code|escape:'htmlall':'UTF-8'}</td>
<td>{$promo_code.redemption_url|escape:'htmlall':'UTF-8'}</td>
<td>{$promo_code.usage_count|escape:'htmlall':'UTF-8'}</td>
<td>{$promo_code.enabled|escape:'htmlall':'UTF-8'}</td>
<td>
#
</td>
</tr>
{/foreach}
</tbody>
</table>
</div>

View File

@@ -0,0 +1,62 @@
{*
* PrestaChamps
*
* NOTICE OF LICENSE
*
* This source file is subject to the Commercial License
* you can't distribute, modify or sell this code
*
* DISCLAIMER
*
* Do not edit or add to this file
* If you need help please contact leo@prestachamps.com
*
* @author Mailchimp
* @copyright PrestaChamps
* @license commercial
*}
<div class="table-responsive">
<table class="table table-bordered">
<thead>
<tr>
<th>{l s='ID' mod='mailchimppro'}</th>
<th>{l s='Title' mod='mailchimppro'}</th>
<th>{l s='Starts at' mod='mailchimppro'}
<th>{l s='Ends at' mod='mailchimppro'}
<th>{l s='Amount' mod='mailchimppro'}
<th>{l s='type' mod='mailchimppro'}
<th>{l s='target' mod='mailchimppro'}
<th>{l s='enabled' mod='mailchimppro'}
<th>#</th>
</tr>
</thead>
<tbody>
{foreach $promo_rules as $promo_rule}
<tr>
<td>{$promo_rule.id|escape:'htmlall':'UTF-8'}</td>
<td>{$promo_rule.title|escape:'htmlall':'UTF-8'}</td>
<td>{$promo_rule.starts_at|escape:'htmlall':'UTF-8'}</td>
<td>{$promo_rule.ends_at|escape:'htmlall':'UTF-8'}</td>
<td>{$promo_rule.amount|escape:'htmlall':'UTF-8'}</td>
<td>{$promo_rule.type|escape:'htmlall':'UTF-8'}</td>
<td>{$promo_rule.target|escape:'htmlall':'UTF-8'}</td>
<td>{$promo_rule.enabled|escape:'htmlall':'UTF-8'}</td>
<td>
<div class="btn-group btn-group-xs" role="group" aria-label="...">
<a class="btn btn-default"
href="{LinkHelper::getAdminLink('AdminMailchimpProPromoCodes', true, [], ['action' => 'entitydelete', 'entity_id' => $promo_rule.id])|escape:'htmlall':'UTF-8'}">
Delete
</a>
<a class="btn btn-default"
href="{LinkHelper::getAdminLink('AdminMailchimpProPromoCodes', true, [], ['rule_id' => $promo_rule.id])|escape:'htmlall':'UTF-8'}">
{l s='Promo codes' mod='mailchimppro'}
</a>
</div>
</td>
</tr>
{/foreach}
</tbody>
</table>
</div>

View File

@@ -0,0 +1,47 @@
{*
* PrestaChamps
*
* NOTICE OF LICENSE
*
* This source file is subject to the Commercial License
* you can't distribute, modify or sell this code
*
* DISCLAIMER
*
* Do not edit or add to this file
* If you need help please contact leo@prestachamps.com
*
* @author Mailchimp
* @copyright PrestaChamps
* @license commercial
*}
<div class="table-responsive">
<table class="table table-bordered">
<thead>
<tr>
<th>{l s='Foreign ID' mod='mailchimppro'}</th>
<th>{l s='Store ID' mod='mailchimppro'}</th>
<th>{l s='Platform' mod='mailchimppro'}</th>
<th>{l s='Domain' mod='mailchimppro'}</th>
<th>{l s='Site script' mod='mailchimppro'}</th>
<th>#</th>
</tr>
</thead>
<tbody>
{foreach $sites as $site}
<tr>
<td>{$site.foreign_id|escape:'htmlall':'UTF-8'}</td>
<td>{$site.store_id|escape:'htmlall':'UTF-8'}</td>
<td>{$site.platform|escape:'htmlall':'UTF-8'}</td>
<td>{$site.domain|escape:'htmlall':'UTF-8'}</td>
<td>{$site.site_script.url|escape:'htmlall':'UTF-8'}</td>
<td>
<a href="{LinkHelper::getAdminLink('AdminMailchimpProSites', true, [], ['action' => 'entitydelete', 'entity_id' => $site.foreign_id])|escape:'htmlall':'UTF-8'}">
Delete
</a>
</td>
</tr>
{/foreach}
</tbody>
</table>
</div>

View File

@@ -0,0 +1,82 @@
{*
* PrestaChamps
*
* NOTICE OF LICENSE
*
* This source file is subject to the Commercial License
* you can't distribute, modify or sell this code
*
* DISCLAIMER
*
* Do not edit or add to this file
* If you need help please contact leo@prestachamps.com
*
* @author Mailchimp
* @copyright PrestaChamps
* @license commercial
*}
<div class="table-responsive">
<table class="table table-bordered">
<thead>
<tr>
<th>{l s='ID' mod='mailchimppro'}</th>
<th>{l s='List ID' mod='mailchimppro'}</th>
<th>{l s='Name' mod='mailchimppro'}</th>
<th>{l s='Platform' mod='mailchimppro'}</th>
<th>{l s='Domain' mod='mailchimppro'}</th>
<th>{l s='Is syncing' mod='mailchimppro'}</th>
<th>{l s='Is active' mod='mailchimppro'}</th>
<th>{l s='Email address' mod='mailchimppro'}</th>
<th>{l s='Currency code' mod='mailchimppro'}</th>
<th>{l s='Money format' mod='mailchimppro'}</th>
<th>{l s='Primary locale' mod='mailchimppro'}</th>
<th>{l s='Timezone' mod='mailchimppro'}</th>
<th>{l s='Phone' mod='mailchimppro'}</th>
<th>{l s='Address' mod='mailchimppro'}</th>
<th>{l s='Automations' mod='mailchimppro'}</th>
<th>{l s='List is active' mod='mailchimppro'}</th>
<th>{l s='Created at' mod='mailchimppro'}</th>
<th>{l s='Updated at' mod='mailchimppro'}</th>
<th></th>
</tr>
</thead>
<tbody>
{foreach $stores as $store}
<tr>
<td>{$store.id|escape:'htmlall':'UTF-8'}</td>
<td>{$store.list_id|escape:'htmlall':'UTF-8'}</td>
<td>{$store.name|escape:'htmlall':'UTF-8'}</td>
<td>{$store.platform|escape:'htmlall':'UTF-8'}</td>
<td>{$store.domain|escape:'htmlall':'UTF-8'}</td>
<td>{$store.is_syncing|escape:'htmlall':'UTF-8'}</td>
<td>{$store.list_is_active|escape:'htmlall':'UTF-8'}</td>
<td>{$store.email_address|escape:'htmlall':'UTF-8'}</td>
<td>{$store.currency_code|escape:'htmlall':'UTF-8'}</td>
<td>{$store.money_format|escape:'htmlall':'UTF-8'}</td>
<td>{$store.primary_locale|escape:'htmlall':'UTF-8'}</td>
<td>{$store.timezone|escape:'htmlall':'UTF-8'}</td>
<td>{$store.phone|escape:'htmlall':'UTF-8'}</td>
<td>{', '|implode:$store.address|escape:'htmlall':'UTF-8'}</td>
<td>
{$JSON_PRETTY_PRINT = 128}
{foreach $store.automations as $name => $automation}
<div class="well">
<p><b>{$name|escape:'htmlall':'UTF-8'}</b></p>
{* HTML code, no need for escape *}
<pre>{json_encode($automation, $JSON_PRETTY_PRINT)}</pre>
</div>
{/foreach}
</td>
<td>{$store.list_is_active|escape:'htmlall':'UTF-8'}</td>
<td>{$store.created_at|escape:'htmlall':'UTF-8'}</td>
<td>{$store.updated_at|escape:'htmlall':'UTF-8'}</td>
<td>
<a href="{LinkHelper::getAdminLink('AdminMailchimpProStores', true, [], ['action' => 'entitydelete', 'entity_id' => $store.id])|escape:'htmlall':'UTF-8'}">
Delete
</a>
</td>
</tr>
{/foreach}
</tbody>
</table>
</div>

View File

@@ -0,0 +1,32 @@
{*
* PrestaChamps
*
* NOTICE OF LICENSE
*
* This source file is subject to the Commercial License
* you can't distribute, modify or sell this code
*
* DISCLAIMER
*
* Do not edit or add to this file
* If you need help please contact leo@prestachamps.com
*
* @author Mailchimp
* @copyright PrestaChamps
* @license commercial
*}
{foreach $responses as $key => $response}
<div class="panel {if $response->status_code == 200}panel-success{else}panel-warning{/if}" id="panel-{$key|escape:'htmlall':'UTF-8'}">
<div class="panel-heading">
<a data-toggle="collapse" data-target="#collapse-{$key|escape:'htmlall':'UTF-8'}" href="#collapse-{$key|escape:'htmlall':'UTF-8'}">
{$response->operation_id|escape:'htmlall':'UTF-8'}
</a>
</div>
<div id="collapse-{$key|escape:'htmlall':'UTF-8'}" class="panel-collapse collapse">
<div class="panel-body">
{* HTML, no need for escape*}
<pre>{var_export($response->response)}</pre>
</div>
</div>
</div>
{/foreach}

View File

@@ -0,0 +1,61 @@
{*
* PrestaChamps
*
* NOTICE OF LICENSE
*
* This source file is subject to the Commercial License
* you can't distribute, modify or sell this code
*
* DISCLAIMER
*
* Do not edit or add to this file
* If you need help please contact leo@prestachamps.com
*
* @author Mailchimp
* @copyright PrestaChamps
* @license commercial
*}
<div class="panel">
<div class="panel-heading">
{l s='Batch operation' mod='mailchimppro'} #{$entity.id|escape:'htmlall':'UTF-8'}
</div>
<div class="panel-body">
<table class="table table-striped table-bordered">
<thead>
<tbody>
<tr>
<td>{l s='ID' mod='mailchimppro'}</td>
<td>{$entity.id|escape:'htmlall':'UTF-8'}</td>
</tr>
<tr>
<td>{l s='Status' mod='mailchimppro'}</td>
<td>{$entity.status|escape:'htmlall':'UTF-8'}</td>
</tr>
<tr>
<td>{l s='Total operations' mod='mailchimppro'}</td>
<td>{$entity.total_operations|escape:'htmlall':'UTF-8'}</td>
</tr>
<tr>
<td>{l s='Finished operations' mod='mailchimppro'}</td>
<td>{$entity.finished_operations|escape:'htmlall':'UTF-8'}</td>
</tr>
<tr>
<td>{l s='Errored operations' mod='mailchimppro'}</td>
<td>{$entity.errored_operations|escape:'htmlall':'UTF-8'}</td>
</tr>
<tr>
<td>{l s='Submitted at' mod='mailchimppro'}</td>
<td>{$entity.submitted_at|escape:'htmlall':'UTF-8'}</td>
</tr>
<tr>
<td>{l s='Completed at' mod='mailchimppro'}</td>
<td>{$entity.completed_at|escape:'htmlall':'UTF-8'}</td>
</tr>
<tr>
<td>{l s='Response body url' mod='mailchimppro'}</td>
<td>{$entity.response_body_url|escape:'htmlall':'UTF-8'}</td>
</tr>
</tbody>
</table>
</div>
</div>

View File

@@ -0,0 +1,34 @@
<?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,34 @@
<?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,44 @@
{*
* PrestaChamps
*
* NOTICE OF LICENSE
*
* This source file is subject to the Commercial License
* you can't distribute, modify or sell this code
*
* DISCLAIMER
*
* Do not edit or add to this file
* If you need help please contact leo@prestachamps.com
*
* @author Mailchimp
* @copyright PrestaChamps
* @license commercial
*}
<div class="panel">
<h3>MailChimp Cart info</h3>
<table class="table table-bordered">
<thead>
<tr>
<th>{l s='ID' mod='mailchimppro'}</th>
<th>{l s='Customer' mod='mailchimppro'}</th>
<th>{l s='Order total' mod='mailchimppro'}</th>
<th>{l s='Products' mod='mailchimppro'}</th>
<th>{l s='Created at' mod='mailchimppro'}</th>
<th>{l s='Updated at' mod='mailchimppro'}</th>
</tr>
</thead>
<tbody>
<tr>
<td>{$cart.id|escape:'htmlall':'UTF-8'}</td>
<td>{$cart.customer.email_address|escape:'htmlall':'UTF-8'}</td>
<td>{$cart.order_total|escape:'htmlall':'UTF-8'} {$cart.currency_code|escape:'htmlall':'UTF-8'}</td>
<td>
{include file='./entity_list/cart/line.tpl' lines=$cart.lines currency_code=$cart.currency_code}
</td>
<td>{$cart.created_at|escape:'htmlall':'UTF-8'}</td>
<td>{$cart.updated_at|escape:'htmlall':'UTF-8'}</td>
</tr>
</tbody>
</table>
</div>

View File

@@ -0,0 +1,25 @@
{*
* PrestaChamps
*
* NOTICE OF LICENSE
*
* This source file is subject to the Commercial License
* you can't distribute, modify or sell this code
*
* DISCLAIMER
*
* Do not edit or add to this file
* If you need help please contact leo@prestachamps.com
*
* @author Mailchimp
* @copyright PrestaChamps
* @license commercial
*}
<div class="tab-pane" id="mailchimp-order-detail">
<h4 class="visible-print">{l s='MailChimp detail' mod='mailchimppro'}</h4>
<div class="table-responsive">
<div class="alert alert-info">
{l s='There is no Mailchimp order associated to this order' mod='mailchimppro'}
</div>
</div>
</div>

View File

@@ -0,0 +1,43 @@
{*
* PrestaChamps
*
* NOTICE OF LICENSE
*
* This source file is subject to the Commercial License
* you can't distribute, modify or sell this code
*
* DISCLAIMER
*
* Do not edit or add to this file
* If you need help please contact leo@prestachamps.com
*
* @author Mailchimp
* @copyright PrestaChamps
* @license commercial
*}
<div class="tab-pane" id="mailchimp-order-detail">
<h4 class="visible-print">{l s='MailChimp detail' mod='mailchimppro'}</h4>
<div class="table-responsive">
<table class="table table-bordered">
<thead>
<tr>
<th>{l s='ID' mod='mailchimppro'}</th>
<th>{l s='Customer' mod='mailchimppro'}</th>
<th>{l s='Store ID' mod='mailchimppro'}</th>
<th>{l s='Financial status' mod='mailchimppro'}</th>
<th>{l s='Fulfillment status' mod='mailchimppro'}</th>
<th>{l s='Total' mod='mailchimppro'}</th>
<th>{l s='Discount' mod='mailchimppro'}</th>
<th>{l s='Tax' mod='mailchimppro'}</th>
<th>{l s='Shipping' mod='mailchimppro'}</th>
<th>{l s='Processed at' mod='mailchimppro'}</th>
<th>{l s='Products' mod='mailchimppro'}</th>
<th>#</th>
</tr>
</thead>
<tbody>
{include file='./entity_list/order/line.tpl' order=$order currency_code=$order.currency_code}
</tbody>
</table>
</div>
</div>

View File

@@ -0,0 +1,24 @@
{*
* PrestaChamps
*
* NOTICE OF LICENSE
*
* This source file is subject to the Commercial License
* you can't distribute, modify or sell this code
*
* DISCLAIMER
*
* Do not edit or add to this file
* If you need help please contact leo@prestachamps.com
*
* @author Mailchimp
* @copyright PrestaChamps
* @license commercial
*}
<li class="">
<!--suppress HtmlUnknownAnchorTarget -->
<a href="#mailchimp-order-detail">
<i class="icon-time"></i>
{l s='MailChimp detail' mod='mailchimppro'} <span class="badge" style="opacity: 0">1</span>
</a>
</li>

View File

@@ -0,0 +1,58 @@
{*
* PrestaChamps
*
* NOTICE OF LICENSE
*
* This source file is subject to the Commercial License
* you can't distribute, modify or sell this code
*
* DISCLAIMER
*
* Do not edit or add to this file
* If you need help please contact leo@prestachamps.com
*
* @author Mailchimp
* @copyright PrestaChamps
* @license commercial
*}
<div class="panel" id="customer-sync">
<div class="panel-heading">
{l s='Customer sync' mod='mailchimppro'}
</div>
<div class="panel-body">
<form>
<h4>
{l s='Add Customers to your Store to track their orders and to view E-Commerce Data for your Mailchimp lists and campaigns. Each Customer is connected to a Mailchimp list member, so adding a Customer can also add or update a list member.' mod='mailchimppro'}
</h4>
<br>
{include file="./_radio-btns.tpl"}
<pre id="result"></pre>
</form>
</div>
<div class="panel-footer">
<a class="btn btn-primary pull-right submit">
<i class="process-icon-export"></i>
{l s='Customer sync' mod='mailchimppro'}
</a>
</div>
</div>
<script type="text/javascript">
$(document).ready(function () {
$("#customer-sync .submit").click(function () {
$.ajax({
url: syncUrl,
type: 'POST',
data: {
action: 'customerSync',
method: $('#customer-sync input[name=method]:checked').val()
},
}).success(function (response) {
$("#customer-sync #result").html(JSON.stringify(response, null, 2));
toastr.success("Customer sync batch started");
}).fail(function (xhr, status, error) {
console.log(xhr);
toastr.error("Error while launching customer sync batch");
});
});
});
</script>

View File

@@ -0,0 +1,58 @@
{*
* PrestaChamps
*
* NOTICE OF LICENSE
*
* This source file is subject to the Commercial License
* you can't distribute, modify or sell this code
*
* DISCLAIMER
*
* Do not edit or add to this file
* If you need help please contact leo@prestachamps.com
*
* @author Mailchimp
* @copyright PrestaChamps
* @license commercial
*}
<div class="panel" id="order-sync">
<div class="panel-heading">
{l s='Order sync' mod='mailchimppro'}
</div>
<div class="panel-body">
<form>
<h4>
{l s='Orders represent successful e-commerce transactions, and this data can be used to provide more detailed campaign reports, track sales, and personalize emails to your targeted consumers, and view other e-commerce data in your Mailchimp account.' mod='mailchimppro'}
</h4>
<br>
{include file="./_radio-btns.tpl"}
<pre id="result"></pre>
</form>
</div>
<div class="panel-footer">
<a class="btn btn-primary pull-right submit">
<i class="process-icon-export"></i>
{l s='Order sync' mod='mailchimppro'}
</a>
</div>
</div>
<script type="text/javascript">
$(document).ready(function () {
$("#order-sync .submit").click(function () {
$.ajax({
url: syncUrl,
type: 'POST',
data: {
action: 'orderSync',
method: $('#order-sync input[name=method]:checked').val()
},
}).success(function (response) {
$("#order-sync #result").html(JSON.stringify(response, null, 2));
toastr.success("Order sync batch started");
}).fail(function (xhr, status, error) {
console.log(xhr);
toastr.error("Error while launching order sync batch");
});
});
});
</script>

View File

@@ -0,0 +1,47 @@
{*
* MailChimp
*
* NOTICE OF LICENSE
*
* This source file is subject to the Commercial License
* you can't distribute, modify or sell this code
*
* DISCLAIMER
*
* Do not edit or add to this file
* If you need help please contact leo@prestachamps.com
*
* @author Mailchimp
* @copyright Mailchimp
* @license commercial
*}
<div class="panel" id="product-sync">
<div class="panel-heading">
{l s='Product sync' mod='mailchimppro'}
</div>
<div class="panel-body">
<h4>
{l s='E-commerce items for sale in your store need to be created as Products so you can add the items to a Cart or an Order.' mod='mailchimppro'}
</h4>
<br>
<form>
{include file="./_radio-btns.tpl"}
<pre id="result">
</pre>
<div class="spinner">
<div class="double-bounce1"></div>
<div class="double-bounce2"></div>
</div>
<div class="progress hidden">
<div class="progress-bar" style="width:0"></div>
</div>
</form>
</div>
<div class="panel-footer">
<a class="btn btn-primary pull-right submit">
<i class="process-icon-export"></i>
{l s='Product sync' mod='mailchimppro'}
</a>
</div>
</div>

View File

@@ -0,0 +1,59 @@
{*
* PrestaChamps
*
* NOTICE OF LICENSE
*
* This source file is subject to the Commercial License
* you can't distribute, modify or sell this code
*
* DISCLAIMER
*
* Do not edit or add to this file
* If you need help please contact leo@prestachamps.com
*
* @author Mailchimp
* @copyright PrestaChamps
* @license commercial
*}
<div class="panel" id="promo-code-sync">
<div class="panel-heading">
{l s='Promo code sync' mod='mailchimppro'}
</div>
<div class="panel-body">
<form>
<h4>
{l s='Connect your Prestashop to Mailchimp to take advantage of powerful reporting and personalization features and to learn more about your customers.' mod='mailchimppro'}
</h4>
<br>
{include file="./_radio-btns.tpl"}
<pre id="result">
</pre>
</form>
</div>
<div class="panel-footer">
<a class="btn btn-primary pull-right submit">
<i class="process-icon-export"></i>
{l s='Promo code sync' mod='mailchimppro'}
</a>
</div>
</div>
<script type="text/javascript">
$(document).ready(function () {
$("#promo-code-sync .submit").click(function () {
$.ajax({
url: syncUrl,
type: 'POST',
data: {
action: 'promoCodeSync',
method: $('#promo-code-sync input[name=method]:checked').val()
},
}).success(function (response) {
$("#promo-code-sync #result").html(JSON.stringify(response, null, 2));
toastr.success("Store sync batch started");
}).fail(function (xhr, status, error) {
console.log(xhr);
toastr.error("Error while launching promo code sync batch");
});
});
});
</script>

View File

@@ -0,0 +1,64 @@
{*
* MailChimp
*
* NOTICE OF LICENSE
*
* This source file is subject to the Commercial License
* you can't distribute, modify or sell this code
*
* DISCLAIMER
*
* Do not edit or add to this file
* If you need help please contact leo@prestachamps.com
*
* @author Mailchimp
* @copyright Mailchimp
* @license commercial
*}
<h4>{l s='Sync method' mod='mailchimppro'}</h4>
<div class="radio">
<label>
<input type="radio" name="method" value="post" checked="checked">
POST
<small class="text-muted">
{l s='New items willl be added. Existing items will remain unaffected. Upon encountering an existing item an error message will appear but this can be ignored and the sync will continue.' mod='mailchimppro'}
</small>
</label>
</div>
<div class="radio">
<label>
<input type="radio" name="method" value="patch">
PATCH
<small class="text-muted">
{l s='Existing items will be updated. New items will not be added. In case there are new items which have not yet been added, an error message will appear but this can be ignored and the sync will continue.' mod='mailchimppro'}
</small>
</label>
</div>
<div class="radio control-label">
<label>
<input type="radio" name="method" value="delete">
DELETE
<small class="text-muted">
{l s='All items of this type will be deleted from Mailchimp' mod='mailchimppro'}
</small>
</label>
</div>
<h4>{l s='Sync mode' mod='mailchimppro'}</h4>
<div class="radio">
<label>
<input type="radio" name="syncMode" value="batch" checked="checked">
Batch
<small class="text-muted">
{l s='Faster process where large batches of items are sent to Mailchimp. Progress will be displayed only when an entire batch has been processed.' mod='mailchimppro'}
</small>
</label>
</div>
<div class="radio">
<label>
<input type="radio" name="syncMode" value="regular">
Regular
<small class="text-muted">
{l s='Slower process where items are updated one by one. Progress can be monitored in real time.' mod='mailchimppro'}
</small>
</label>
</div>

View File

@@ -0,0 +1,59 @@
{*
* PrestaChamps
*
* NOTICE OF LICENSE
*
* This source file is subject to the Commercial License
* you can't distribute, modify or sell this code
*
* DISCLAIMER
*
* Do not edit or add to this file
* If you need help please contact leo@prestachamps.com
*
* @author Mailchimp
* @copyright PrestaChamps
* @license commercial
*}
<div class="panel" id="store-sync">
<div class="panel-heading">
{l s='store sync' mod='mailchimppro'}
</div>
<div class="panel-body">
<form>
<h4>
{l s='Connect your Prestashop to Mailchimp to take advantage of powerful reporting and personalization features and to learn more about your customers.' mod='mailchimppro'}
</h4>
<br>
{include file="./_radio-btns.tpl"}
<pre id="result">
</pre>
</form>
</div>
<div class="panel-footer">
<a class="btn btn-primary pull-right submit">
<i class="process-icon-export"></i>
{l s='Store sync' mod='mailchimppro'}
</a>
</div>
</div>
<script type="text/javascript">
$(document).ready(function () {
$("#store-sync .submit").click(function () {
$.ajax({
url: syncUrl,
type: 'POST',
data: {
action: 'storeSync',
method: $('#store-sync input[name=method]:checked').val()
},
}).success(function (response) {
$("#store-sync #result").html(JSON.stringify(response, null, 2));
toastr.success("Store sync batch started");
}).fail(function (xhr, status, error) {
console.log(xhr);
toastr.error("Error while launching store sync batch");
});
});
});
</script>

View File

@@ -0,0 +1,34 @@
<?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,25 @@
{*
* MailChimp
*
* NOTICE OF LICENSE
*
* This source file is subject to the Commercial License
* you can't distribute, modify or sell this code
*
* DISCLAIMER
*
* Do not edit or add to this file
* If you need help please contact leo@prestachamps.com
*
* @author Mailchimp
* @copyright Mailchimp
* @license commercial
*}
<div class="alert alert-info" role="alert">
{l s='In this area you will be able to sync information from your store with Mailchimp (products, custmers, etc.). If you have multistore enabled, please make sure you have selected the correct store you want to synchronize.' mod='mailchimppro'}
</div>
{include file="./_product.tpl"}
{include file="./_store.tpl"}
{include file="./_customer.tpl"}
{include file="./_order.tpl"}
{include file="./_promo-code.tpl"}

View File

@@ -0,0 +1,84 @@
{*
* PrestaChamps
*
* NOTICE OF LICENSE
*
* This source file is subject to the Commercial License
* you can't distribute, modify or sell this code
*
* DISCLAIMER
*
* Do not edit or add to this file
* If you need help please contact leo@prestachamps.com
*
* @author Mailchimp
* @copyright PrestaChamps
* @license commercial
*}
<div id="setup-wizard">
<ul>
<li>
<a href="#step-1">{l s='Log-in to Mailchimp' mod='mailchimppro'}</a>
</li>
<li>
<a href="#step-2">{l s='Select list' mod='mailchimppro'}</a>
</li>
<li>
<a href="#step-3">
{l s='Order status mapping' mod='mailchimppro'}
</a>
</li>
<li>
<a href="#step-4">
{l s='Shop sync' mod='mailchimppro'}
</a>
</li>
<li>
<a href="#step-5">
{l s='Product sync' mod='mailchimppro'}
</a>
</li>
<li>
<a href="#step-6">
{l s='Customer sync' mod='mailchimppro'}
</a>
</li>
<li>
<a href="#step-7">
{l s='promo-code sync' mod='mailchimppro'}
</a>
</li>
<li>
<a href="#step-8">
{l s='Order sync' mod='mailchimppro'}
</a>
</li>
</ul>
<div>
<div id="step-1">
{include file="./wizard/step-1.tpl"}
</div>
<div id="step-2">
{include file="./wizard/step-2.tpl"}
</div>
<div id="step-3">
{include file="./wizard/step-3.tpl"}
</div>
<div id="step-4" class="text-center">
{include file="./wizard/step-4.tpl"}
</div>
<div id="step-5" class="text-center">
{include file="./wizard/step-5.tpl"}
</div>
<div id="step-6" class="text-center">
{include file="./wizard/step-6.tpl"}
</div>
<div id="step-7" class="text-center">
{include file="./wizard/step-7.tpl"}
</div>
<div id="step-8" class="text-center">
{include file="./wizard/step-8.tpl"}
</div>
</div>
</div>

View File

@@ -0,0 +1,34 @@
<?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,32 @@
{*
* PrestaChamps
*
* NOTICE OF LICENSE
*
* This source file is subject to the Commercial License
* you can't distribute, modify or sell this code
*
* DISCLAIMER
*
* Do not edit or add to this file
* If you need help please contact leo@prestachamps.com
*
* @author Mailchimp
* @copyright PrestaChamps
* @license commercial
*}
<div class="form-group">
<label for="api-key" class="hidden">{l s='API key' mod='mailchimppro'}</label>
<p id="logged-in-as-container" {if empty($apiKey) && empty($mcEmail)}class="hidden"{/if}>
{l s='Logged in as:' mod='mailchimppro'} <b id="logged-in-as">{$mcEmail}</b>
</p>
<input type="hidden" class="form-control" name="api-key" id="api-key"
placeholder="{l s='API key' mod='mailchimppro'}" required="" value="{$apiKey}">
<a class="btn btn-default" id="oauth2-start">
{if empty($apiKey) && empty($mcEmail)}
Log in to Mailchimp
{else}
Log in as somebody else
{/if}
</a>
</div>

View File

@@ -0,0 +1,31 @@
{*
* PrestaChamps
*
* NOTICE OF LICENSE
*
* This source file is subject to the Commercial License
* you can't distribute, modify or sell this code
*
* DISCLAIMER
*
* Do not edit or add to this file
* If you need help please contact leo@prestachamps.com
*
* @author Mailchimp
* @copyright PrestaChamps
* @license commercial
*}
<div class="form-group">
<div class="alert alert-info alert-mc" id="loading-lists-in-progress">
{l s='Loading lists, please wait' mod='mailchimppro'}
</div>
<div id="input-container" class="hidden">
<label for="list-select">{l s='Select list' mod='mailchimppro'}</label>
<select class="form-control" id="list-select">
</select>
</div>
<div class="spinner">
<div class="double-bounce1"></div>
<div class="double-bounce2"></div>
</div>
</div>

View File

@@ -0,0 +1,87 @@
{*
* PrestaChamps
*
* NOTICE OF LICENSE
*
* This source file is subject to the Commercial License
* you can't distribute, modify or sell this code
*
* DISCLAIMER
*
* Do not edit or add to this file
* If you need help please contact leo@prestachamps.com
*
* @author Mailchimp
* @copyright PrestaChamps
* @license commercial
*}
<div class="alert alert-info alert-mc" id="loading-states-in-progress">
{l s='Loading statuses, please wait' mod='mailchimppro'}
</div>
<div id="status-inputs-container" class="hidden">
<div class="form-group">
<label class="control-label col-lg-3" for="module-mailchimpproconfig-statuses-for-pending">
{l s='Status for pending' mod='mailchimppro'}
</label>
<div class="col-lg-9">
<select name="module-mailchimpproconfig-statuses-for-pending[]"
id="module-mailchimpproconfig-statuses-for-pending" multiple="multiple">
</select>
</div>
</div>
<div class="clearfix"></div>
<hr>
<div class="form-group">
<label class="control-label col-lg-3" for="module-mailchimpproconfig-statuses-for-refunded">
{l s='Status for refunded' mod='mailchimppro'}
</label>
<div class="col-lg-9">
<select name="module-mailchimpproconfig-statuses-for-refunded[]"
id="module-mailchimpproconfig-statuses-for-refunded" multiple="multiple">
</select>
</div>
</div>
<div class="clearfix"></div>
<hr>
<div class="form-group">
<label class="control-label col-lg-3" for="module-mailchimpproconfig-statuses-for-cancelled">
{l s='Status for cancelled' mod='mailchimppro'}
</label>
<div class="col-lg-9">
<select name="module-mailchimpproconfig-statuses-for-cancelled[]"
id="module-mailchimpproconfig-statuses-for-cancelled" multiple="multiple">
</select>
</div>
</div>
<div class="clearfix"></div>
<hr>
<div class="form-group">
<label class="control-label col-lg-3" for="module-mailchimpproconfig-statuses-for-shipped">
{l s='Status for shipped' mod='mailchimppro'}
</label>
<div class="col-lg-9">
<select name="module-mailchimpproconfig-statuses-for-shipped[]"
id="module-mailchimpproconfig-statuses-for-shipped" multiple="multiple">
</select>
</div>
</div>
<div class="clearfix"></div>
<hr>
<div class="form-group">
<label class="control-label col-lg-3" for="module-mailchimpproconfig-statuses-for-paid">
{l s='Status for paid' mod='mailchimppro'}
</label>
<div class="col-lg-9">
<select name="module-mailchimpproconfig-statuses-for-paid[]"
id="module-mailchimpproconfig-statuses-for-paid" multiple="multiple">
</select>
</div>
</div>
<div class="clearfix"></div>
<hr>
</div>
<div class="spinner">
<div class="double-bounce1"></div>
<div class="double-bounce2"></div>
</div>

View File

@@ -0,0 +1,33 @@
{*
* PrestaChamps
*
* NOTICE OF LICENSE
*
* This source file is subject to the Commercial License
* you can't distribute, modify or sell this code
*
* DISCLAIMER
*
* Do not edit or add to this file
* If you need help please contact leo@prestachamps.com
*
* @author Mailchimp
* @copyright PrestaChamps
* @license commercial
*}
<div class="text-center">
<div class="alert alert-info alert-mc" id="shop-sync-in-progress">
{l s='Syncing shops, please wait' mod='mailchimppro'}
</div>
<div class="alert alert-success alert-mc hidden" id="shop-sync-completed">
{l s='Syncing shops completed' mod='mailchimppro'}
</div>
<div class="alert alert-error hidden" id="shop-sync-error">
{l s='Error during shop sync error' mod='mailchimppro'}
</div>
<div class="spinner">
<div class="double-bounce1"></div>
<div class="double-bounce2"></div>
</div>
</div>

View File

@@ -0,0 +1,31 @@
{*
* PrestaChamps
*
* NOTICE OF LICENSE
*
* This source file is subject to the Commercial License
* you can't distribute, modify or sell this code
*
* DISCLAIMER
*
* Do not edit or add to this file
* If you need help please contact leo@prestachamps.com
*
* @author Mailchimp
* @copyright PrestaChamps
* @license commercial
*}
<div class="text-center">
<div class="alert alert-info alert-mc" id="product-sync-in-progress">
{l s='Syncing products, please wait' mod='mailchimppro'}
</div>
<div class="alert alert-success alert-mc hidden" id="product-sync-completed">
{l s='The batch operation of syncing the products has been sent to the Mailchimp servers.' mod='mailchimppro'}
</div>
<div class="alert alert-error hidden" id="product-sync-error">
{l s='Error during product sync error' mod='mailchimppro'}
</div>
<div class="progress hidden">
<div class="progress-bar" style="width:0"></div>
</div>
</div>

View File

@@ -0,0 +1,31 @@
{*
* PrestaChamps
*
* NOTICE OF LICENSE
*
* This source file is subject to the Commercial License
* you can't distribute, modify or sell this code
*
* DISCLAIMER
*
* Do not edit or add to this file
* If you need help please contact leo@prestachamps.com
*
* @author Mailchimp
* @copyright PrestaChamps
* @license commercial
*}
<div class="text-center">
<div class="alert alert-info alert-mc" id="customer-sync-in-progress">
{l s='Syncing customers, please wait' mod='mailchimppro'}
</div>
<div class="alert alert-success alert-mc hidden" id="customer-sync-completed">
{l s='The batch operation of syncing the customers has been sent to the Mailchimp servers.' mod='mailchimppro'}
</div>
<div class="alert alert-error hidden" id="customer-sync-error">
{l s='Error during customer sync' mod='mailchimppro'}
</div>
<div class="progress hidden">
<div class="progress-bar" style="width:0"></div>
</div>
</div>

View File

@@ -0,0 +1,31 @@
{*
* PrestaChamps
*
* NOTICE OF LICENSE
*
* This source file is subject to the Commercial License
* you can't distribute, modify or sell this code
*
* DISCLAIMER
*
* Do not edit or add to this file
* If you need help please contact leo@prestachamps.com
*
* @author Mailchimp
* @copyright PrestaChamps
* @license commercial
*}
<div class="text-center">
<div class="alert alert-info alert-mc" id="promo-code-sync-in-progress">
{l s='Syncing promo-codes, please wait' mod='mailchimppro'}
</div>
<div class="alert alert-success alert-mc hidden" id="promo-code-sync-completed">
{l s='The batch operation of syncing the promo-codes has been sent to the Mailchimp servers.' mod='mailchimppro'}
</div>
<div class="alert alert-error hidden" id="promo-code-sync-error">
{l s='Error during promo-code sync' mod='mailchimppro'}
</div>
<div class="progress hidden">
<div class="progress-bar" style="width:0"></div>
</div>
</div>

View File

@@ -0,0 +1,31 @@
{*
* PrestaChamps
*
* NOTICE OF LICENSE
*
* This source file is subject to the Commercial License
* you can't distribute, modify or sell this code
*
* DISCLAIMER
*
* Do not edit or add to this file
* If you need help please contact leo@prestachamps.com
*
* @author Mailchimp
* @copyright PrestaChamps
* @license commercial
*}
<div class="text-center">
<div class="alert alert-info alert-mc" id="order-sync-in-progress">
{l s='Syncing orders, please wait' mod='mailchimppro'}
</div>
<div class="alert alert-success alert-mc hidden" id="order-sync-completed">
{l s='The batch operation of syncing the orders has been sent to the Mailchimp servers. The setup is now complete' mod='mailchimppro'}
</div>
<div class="alert alert-error hidden" id="order-sync-error">
{l s='Error during orders sync' mod='mailchimppro'}
</div>
<div class="progress hidden">
<div class="progress-bar" style="width:0"></div>
</div>
</div>

View File

@@ -0,0 +1,34 @@
<?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;