first commit

This commit is contained in:
2026-03-05 13:07:40 +01:00
commit 64ba0721ee
25709 changed files with 4691006 additions and 0 deletions

View File

@@ -0,0 +1,206 @@
h2 a:hover,
h3 a.nav-tab:hover {
text-decoration: none
}
@font-face {
font-family: Raleway;
font-style: normal;
font-weight: 400;
src: local('Raleway'), local('Raleway-Regular'), url(https://fonts.gstatic.com/s/raleway/v11/0dTEPzkLWceF7z0koJaX1A.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000
}
.form-table th { width: 400px; }
.btn-group > .btn.active,
.input-group .form-control {
z-index: auto
}
body {
font-family: "Open Sans", sans-serif;
background-color: #f1f1f1
}
.container_title,
.steps,
h2,
label {
font-family: Raleway
}
.wrap {
float: left;
width: 70%;
margin-right: 3%
}
h2 {
font-weight: 400
}
.btn-icon {
height: 50px
}
.control-label {
text-align: right;
padding: 15px 10px 10px 0;
height: 50px
}
.margin-10 {
margin-top: 10px
}
.icon-style-rect-1 .ndd-icon-main-element {
width: 44px;
height: 44px;
border-radius: 8px;
background: rgba(0, 0, 0, .2)
}
input[type=color] {
padding: 0;
width: 50px
}
.tab-pane {
width: 90%;
padding-top: 10px
}
.input-group {
width: 200px;
margin-top: 5px;
}
.btn-group-no-margin {
margin-left: -15px!important
}
input[type=checkbox] {
margin-top: 0
}
.tooltip-inner {
width: 150px;
background-color: #000;
opacity: .8
}
.tooltip-arrow {
opacity: .8
}
.panel-default {
margin-top: 8px
}
#right_column_metaboxes {
width: 25%;
float: left;
margin-top: 70px
}
.main_container {
background-color: #fff;
margin-bottom: 20px;
border: 1px solid #ddd;
border-radius: 5px;
box-shadow: 0 2px 1px -1px #ccc
}
.container_title {
border-radius: 5px 5px 0 0;
background: #474747
}
h3 {
margin-top: 0!important;
padding: 16px 16px 16px 20px;
text-align: center;
color: #fff;
font-size: 1.3em;
margin: 1em 0
}
.form-horizontal .form-group {
margin-left: 0;
margin-right: 0;
}
h2 {
font-size: 26px!important
}
h2 a {
color: #23282d
}
h2 a:hover {
color: #0073aa
}
h2 img {
margin-bottom: 4px
}
h3 .nav-tab {
font-size: 14px;
line-height: 22px;
padding: 10px 15px;
border-radius: 4px 4px 0 0;
font-weight: 400
}
.form-table th {
font-weight: normal;
text-align: right;
}
a.nav-tab:focus,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:active { outline: none; -webkit-box-shadow: none;box-shadow: none;text-decoration: none;}
#wpbody-content .metabox-holder p,
.steps,
label {
font-size: 15px
}
.form-horizontal {
padding: 20px
}
.form-horizontal .form-group {
margin-left: 0;
margin-right: 0
}
.form-group.disabled label,
.form-group.disabled-short label {
color: grey
}
#demo {
border: 1px solid #ccc
}
.steps {
margin-bottom: 4px
}
.steps .steps_nr {
font-weight: 700;
padding-right: 8px;
color: #EF3D4A
}
.dashicons-yes {
color: green
}
.image_zoom_promo {
background-color: #bc1117;
border: 5px double #fff;
text-align: center;
margin: 5px auto;
width: 96%;
border-radius: 10px;
opacity: 1!important
}
.input-group.input-group-checkbox {
width: 20px
}
.form-horizontal {
float: left;
width: 100%
}
label {
font-weight: 400
}
.tooltip-inner {
width:150px;
}
#alert_messages {
width: 100%;
float: left;
}
.form-group > .col-sm-7 {
padding-left: 0;
}
.form-group .input-group-text {
width: auto;
}
input[type="checkbox"] {
width: 1.4rem;
height: 1.4rem;
border-radius: 0;
line-height: 2rem;
padding-left: 0.1rem !important;
}

View File

@@ -0,0 +1,268 @@
/* prefixed by https://autoprefixer.github.io (PostCSS: v7.0.23, autoprefixer: v9.7.3) */
.wpmc-tabs-wrapper {
width: 100%;
display: block;
margin: 0 auto;
}
.wpmc-tabs-wrapper .wpmc-tabs-list {
background: #f9f9f9;
margin: 0;
padding: 0 !important;
}
.wpmc-tabs-wrapper .wpmc-tab-item {
font-size: 13px !important;
line-height: 13px !important;
text-align: center;
text-transform: uppercase;
position: relative;
display: table-cell;
float: left;
padding-top: 0px;
padding-bottom: 47px;
-webkit-transition: all 0.3s ease 0s;
-o-transition: all 0.3s ease 0s;
transition: all 0.3s ease 0s;
width: 25%;
margin-left: 0;
margin-right: 0;
}
.wpmc-1-tabs .wpmc-tab-item {
width: 100%;
}
.wpmc-tabs-list.wpmc-2-tabs .wpmc-tab-item {
width: 50%;
}
.wpmc-tabs-list.wpmc-3-tabs .wpmc-tab-item {
width: 33%;
}
.wpmc-tabs-list.wpmc-4-tabs .wpmc-tab-item {
width: 25%;
}
.wpmc-tabs-list.wpmc-5-tabs .wpmc-tab-item {
width: 20%;
}
.wpmc-tabs-list.wpmc-6-tabs .wpmc-tab-item {
width: 16.6%;
}
.wpmc-tabs-wrapper .wpmc-tab-item:before {
display: block;
content: "";
border-bottom: 2px solid transparent;
height: 0;
position: absolute;
top: 0px;
left: 0;
right: 0;
-webkit-transition: border-color 0.3s;
-o-transition: border-color 0.3s;
transition: border-color 0.3s;
}
.wpmc-tabs-wrapper .wpmc-tab-item .wpmc-tab-number {
display: inline-block;
line-height: 28px;
text-align: center;
vertical-align: middle;
width: 30px;
min-width: 30px;
min-height: 30px;
height: 30px;
margin-top: -14px;
color: #999;
background: #fff;
border-radius: 50%;
position: relative;
-webkit-transition: color 0.3s, background 0.3s;
-o-transition: color 0.3s, background 0.3s;
transition: color 0.3s, background 0.3s;
font-size: 16px;
font-weight: 400;
font-family: Arial, Helvetica, sans-serif;
}
.wpmc-tabs-wrapper .wpmc-tab-item .number-text {
-webkit-transition: color 0.3s;
-o-transition: color 0.3s;
transition: color 0.3s;
}
.wpmc-tabs-wrapper .wpmc-tab-text {
display: none;
font-size: 13px;
line-height: 1.25;
font-weight: normal;
letter-spacing: 0.3px;
text-transform: capitalize;
padding-top: 8px;
white-space: nowrap;
position: absolute;
top: 15px;
width: 100%;
text-align: center;
}
.wpmc-tab-item:first-child .wpmc-tab-text {
position: absolute;
}
.wpmc-tab-item:last-child .wpmc-tab-text {
position: absolute;
left: auto;
-webkit-transform: translate(0,0);
-ms-transform: translate(0,0);
transform: translate(0,0);
}
@media screen and (min-width: 767px) {
.wpmc-tabs-wrapper .wpmc-tabs-list {
display: block;
}
.wpmc-tabs-wrapper .wpmc-tab-item {
display: block;
vertical-align: top;
padding-bottom: 20px;
}
.wpmc-tabs-wrapper .wpmc-tab-item .wpmc-tab-text {
display: block;
position: relative;
top: auto;
left: auto;
right: auto;
}
.wpmc-tabs-wrapper .wpmc-tab-item .wpmc-tab-number {
margin-top: -14px;
}
}
@media screen and (min-width: 1200px) {
.wpmc-tabs-wrapper .wpmc-tab-text {
font-size: 13px;
}
}
.wpmc-tabs-wrapper .wpmc-nav-text {
color: #555;
}
.wpmc-tabs-wrapper .wpmc-nav-text a {
color: #e23636;
}
.wpmc-tabs-wrapper .wpmc-nav-text,
.wpmc-tabs-wrapper .wpmc-nav-buttons {
border-color: #d9d9d9;
}
.woocommerce-checkout .wpmc-tabs-wrapper form label.error {
color: #e23636 !important;
}
.wpmc-tabs-wrapper .wpmc-tabs-list {
font-weight: 600;
}
.wpmc-tabs-wrapper .wpmc-tab-item {
color: #aaa;
}
.wpmc-tabs-wrapper .wpmc-tab-item .wpmc-tab-number {
color: #000;
background: #fff;
border: 1px solid #ccc;
}
.wpmc-tabs-wrapper .wpmc-tab-item.current {
color: #000;
}
.wpmc-tabs-wrapper .wpmc-tab-item.current .wpmc-tab-number {
color: #000;
background: #fff;
border: 2px solid #ccc;
}
.wpmc-tabs-wrapper .wpmc-tab-item.current .wpmc-tab-text {
display: block;
}
.wpmc-tabs-wrapper .wpmc-tab-item:before {
border-bottom-color: #c9c9c9;
}
.wpmc-tabs-wrapper .wpmc-tab-item.visited:before {
border-bottom-color: #000;
}
.wpmc-tabs-wrapper .wpmc-tab-item .number-text {
top: 1px;
}
.wpmc-tabs-wrapper .tab-completed-icon {
top: 2px;
}
.wpmc-nav-wrapper {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: end;
-ms-flex-pack: end;
justify-content: flex-end;
margin-top: 1em;
width: calc( 100% + 4px );
clear: both;
}
button#wpmc-back-to-cart, .wpmc-no-back-to-cart #wpmc-prev {
margin-right: auto;
}
.wpmc-nav-wrapper button.wpmc-nav-button {
margin-right: 2px !important;
margin-left: 2px !important;
}
.wpmc-nav-wrapper button#wpmc-prev, .wpmc-nav-wrapper button#wpmc-next, .wpmc-nav-wrapper button#wpmc-skip-login {
display: none !important;
}
.wpmc-nav-wrapper button#wpmc-prev.current, .wpmc-nav-wrapper button#wpmc-next.current, .wpmc-nav-wrapper button#wpmc-skip-login.current {
display: inline-block !important;
}
.wpmc-step-item {
display: none !important;
}
.wpmc-step-item.current {
display: block !important;
}
.woocommerce-checkout form.login .wc-social-login {
display: block !important;
}
.wpmc-step-item #order_review,
.wpmc-step-item #order_review_heading {
width: 100% !important;
}
@-moz-document url-prefix() {
.sq-input {
height: 60px !important;
}
}

View File

@@ -0,0 +1 @@
.wpmc-tabs-wrapper{width:100%;display:block;margin:0 auto}.wpmc-tabs-wrapper .wpmc-tabs-list{background:#f9f9f9;margin:0;padding:0 !important}.wpmc-tabs-wrapper .wpmc-tab-item{font-size:13px !important;line-height:13px !important;text-align:center;text-transform:uppercase;position:relative;display:table-cell;float:left;padding-top:0;padding-bottom:47px;-webkit-transition:all .3s ease 0s;-o-transition:all .3s ease 0s;transition:all .3s ease 0s;width:25%;margin-left:0;margin-right:0}.wpmc-1-tabs .wpmc-tab-item{width:100%}.wpmc-tabs-list.wpmc-2-tabs .wpmc-tab-item{width:50%}.wpmc-tabs-list.wpmc-3-tabs .wpmc-tab-item{width:33%}.wpmc-tabs-list.wpmc-4-tabs .wpmc-tab-item{width:25%}.wpmc-tabs-list.wpmc-5-tabs .wpmc-tab-item{width:20%}.wpmc-tabs-list.wpmc-6-tabs .wpmc-tab-item{width:16.6%}.wpmc-tabs-wrapper .wpmc-tab-item:before{display:block;content:"";border-bottom:2px solid transparent;height:0;position:absolute;top:0;left:0;right:0;-webkit-transition:border-color .3s;-o-transition:border-color .3s;transition:border-color .3s}.wpmc-tabs-wrapper .wpmc-tab-item .wpmc-tab-number{display:inline-block;line-height:28px;text-align:center;vertical-align:middle;width:30px;min-width:30px;min-height:30px;height:30px;margin-top:-14px;color:#999;background:#fff;border-radius:50%;position:relative;-webkit-transition:color .3s,background .3s;-o-transition:color .3s,background .3s;transition:color .3s,background .3s;font-size:16px;font-weight:400;font-family:Arial,Helvetica,sans-serif}.wpmc-tabs-wrapper .wpmc-tab-item .number-text{-webkit-transition:color .3s;-o-transition:color .3s;transition:color .3s}.wpmc-tabs-wrapper .wpmc-tab-text{display:none;font-size:13px;line-height:1.25;font-weight:normal;letter-spacing:.3px;text-transform:capitalize;padding-top:8px;white-space:nowrap;position:absolute;top:15px;width:100%;text-align:center}.wpmc-tab-item:first-child .wpmc-tab-text{position:absolute}.wpmc-tab-item:last-child .wpmc-tab-text{position:absolute;left:auto;-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}@media screen and (min-width:767px){.wpmc-tabs-wrapper .wpmc-tabs-list{display:block}.wpmc-tabs-wrapper .wpmc-tab-item{display:block;vertical-align:top;padding-bottom:20px}.wpmc-tabs-wrapper .wpmc-tab-item .wpmc-tab-text{display:block;position:relative;top:auto;left:auto;right:auto}.wpmc-tabs-wrapper .wpmc-tab-item .wpmc-tab-number{margin-top:-14px}}@media screen and (min-width:1200px){.wpmc-tabs-wrapper .wpmc-tab-text{font-size:13px}}.wpmc-tabs-wrapper .wpmc-nav-text{color:#555}.wpmc-tabs-wrapper .wpmc-nav-text a{color:#e23636}.wpmc-tabs-wrapper .wpmc-nav-text,.wpmc-tabs-wrapper .wpmc-nav-buttons{border-color:#d9d9d9}.woocommerce-checkout .wpmc-tabs-wrapper form label.error{color:#e23636 !important}.wpmc-tabs-wrapper .wpmc-tabs-list{font-weight:600}.wpmc-tabs-wrapper .wpmc-tab-item{color:#aaa}.wpmc-tabs-wrapper .wpmc-tab-item .wpmc-tab-number{color:#000;background:#fff;border:1px solid #ccc}.wpmc-tabs-wrapper .wpmc-tab-item.current{color:#000}.wpmc-tabs-wrapper .wpmc-tab-item.current .wpmc-tab-number{color:#000;background:#fff;border:2px solid #ccc}.wpmc-tabs-wrapper .wpmc-tab-item.current .wpmc-tab-text{display:block}.wpmc-tabs-wrapper .wpmc-tab-item:before{border-bottom-color:#c9c9c9}.wpmc-tabs-wrapper .wpmc-tab-item.visited:before{border-bottom-color:#000}.wpmc-tabs-wrapper .wpmc-tab-item .number-text{top:1px}.wpmc-tabs-wrapper .tab-completed-icon{top:2px}.wpmc-nav-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;margin-top:1em;width:calc(100% + 4px);clear:both}button#wpmc-back-to-cart,.wpmc-no-back-to-cart #wpmc-prev{margin-right:auto}.wpmc-nav-wrapper button.wpmc-nav-button{margin-right:2px !important;margin-left:2px !important}.wpmc-nav-wrapper button#wpmc-prev,.wpmc-nav-wrapper button#wpmc-next,.wpmc-nav-wrapper button#wpmc-skip-login{display:none !important}.wpmc-nav-wrapper button#wpmc-prev.current,.wpmc-nav-wrapper button#wpmc-next.current,.wpmc-nav-wrapper button#wpmc-skip-login.current{display:inline-block !important}.wpmc-step-item{display:none !important}.wpmc-step-item.current{display:block !important}.woocommerce-checkout form.login .wc-social-login{display:block !important}.wpmc-step-item #order_review,.wpmc-step-item #order_review_heading{width:100% !important}@-moz-document url-prefix(){.sq-input{height:60px !important}}

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
viewBox="0 0 24 24"
version="1.1"
id="svg1033"
inkscape:version="0.92.3 (2405546, 2018-03-11)"
sodipodi:docname="checkout-cart.svg">
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-273)">
<g
style="fill:#ffffff"
id="g3086"
transform="matrix(0.03767392,0,0,0.03767392,0.46573382,273.46571)">
<g
style="fill:#ffffff"
id="g3088">
<g
style="fill:#ffffff"
id="g3090">
<path
id="path3092"
d="M 187.57,359.458 H 548.465 L 612.321,131.524 H 518.348 L 484.608,27.304 343.9,72.916 l 19.244,58.608 h -6.623 l -34.74,-104.22 -140.709,45.612 19.244,58.608 H 125.088 L 109.468,69.042 C 101.595,37.801 74.353,15.683 42.987,15.683 H 0 V 41.8 h 42.987 c 19.494,0 36.489,12.996 41.738,32.616 l 69.105,270.421 c -14.246,10.247 -23.618,26.992 -23.618,46.112 0,31.241 26.117,57.358 57.358,57.358 H 539.343 V 422.19 H 187.57 c -16.995,0 -31.241,-14.371 -31.241,-31.241 0.001,-17.12 14.371,-31.491 31.241,-31.491 z M 467.739,59.795 491.232,130.15 H 389.637 L 375.266,89.787 Z m -162.828,0 23.493,70.355 H 226.809 L 212.438,89.787 Z m 273.546,96.472 -49.486,177.199 H 177.198 L 131.586,156.268 Z"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
id="path3094"
d="m 424.751,487.171 c -29.991,0 -54.734,24.743 -54.734,54.734 0,29.991 24.743,54.734 54.734,54.734 31.241,0 54.734,-24.743 54.734,-54.734 10e-4,-29.991 -24.742,-54.734 -54.734,-54.734 z m 0,84.725 c -16.995,0 -29.991,-14.371 -29.991,-29.991 0,-16.995 14.371,-29.991 29.991,-29.991 16.995,0 29.991,12.996 29.991,29.991 10e-4,16.995 -14.37,29.991 -29.991,29.991 z"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
id="path3096"
d="m 224.06,487.171 c -29.991,0 -54.734,24.743 -54.734,54.734 0,29.991 24.743,54.734 54.734,54.734 29.991,0 54.734,-24.743 54.734,-54.734 0,-29.991 -24.743,-54.734 -54.734,-54.734 z m 0,84.725 c -16.995,0 -29.991,-14.371 -29.991,-29.991 0,-16.995 14.371,-29.991 29.991,-29.991 15.62,0 29.991,12.996 29.991,29.991 0,16.995 -14.371,29.991 -29.991,29.991 z"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

View File

@@ -0,0 +1,59 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg2"
height="14"
width="14"
version="1.0"
inkscape:version="0.48.3.1 r9886"
sodipodi:docname="question_mark.svg">
<metadata
id="metadata10">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1094"
inkscape:window-height="675"
id="namedview6"
showgrid="false"
inkscape:zoom="19.47"
inkscape:cx="11.241964"
inkscape:cy="1.3867488"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg2" />
<g
id="layer1"
transform="matrix(0.05392912,0,0,0.05598356,1.607088,1.401644)">
<path
id="path2413"
d="M 100,0 C 44.8,0 0,44.8 0,100 0,155.2 44.8,200 100,200 155.2,200 200,155.2 200,100 200,44.8 155.2,0 100,0 z m 0,12.812 c 48.13,0 87.19,39.058 87.19,87.188 0,48.13 -39.06,87.19 -87.19,87.19 C 51.87,187.19 12.812,148.13 12.812,100 12.812,51.87 51.87,12.812 100,12.812 z m 1.47,21.25 c -5.45,0.03 -10.653,0.737 -15.282,2.063 -4.699,1.346 -9.126,3.484 -12.876,6.219 -3.238,2.362 -6.333,5.391 -8.687,8.531 -4.159,5.549 -6.461,11.651 -7.063,18.687 -0.04,0.468 -0.07,0.868 -0.062,0.876 0.016,0.016 21.702,2.687 21.812,2.687 0.053,0 0.113,-0.234 0.282,-0.937 1.941,-8.085 5.486,-13.521 10.968,-16.813 4.32,-2.594 9.808,-3.612 15.778,-2.969 2.74,0.295 5.21,0.96 7.38,2 2.71,1.301 5.18,3.361 6.94,5.813 1.54,2.156 2.46,4.584 2.75,7.312 0.08,0.759 0.05,2.48 -0.03,3.219 -0.23,1.826 -0.7,3.378 -1.5,4.969 -0.81,1.597 -1.48,2.514 -2.76,3.812 -2.03,2.077 -5.18,4.829 -10.78,9.407 -3.6,2.944 -6.04,5.156 -8.12,7.343 -4.943,5.179 -7.191,9.069 -8.564,14.719 -0.905,3.72 -1.256,7.55 -1.156,13.19 0.025,1.4 0.062,2.73 0.062,2.97 v 0.43 h 21.598 l 0.03,-2.4 c 0.03,-3.27 0.21,-5.37 0.56,-7.41 0.57,-3.27 1.43,-5 3.94,-7.81 1.6,-1.8 3.7,-3.76 6.93,-6.47 4.77,-3.991 8.11,-6.99 11.26,-10.125 4.91,-4.907 7.46,-8.26 9.28,-12.187 1.43,-3.092 2.22,-6.166 2.46,-9.532 0.06,-0.816 0.07,-3.03 0,-3.968 -0.45,-7.043 -3.1,-13.253 -8.15,-19.032 -0.8,-0.909 -2.78,-2.887 -3.72,-3.718 -4.96,-4.394 -10.69,-7.353 -17.56,-9.094 -4.19,-1.062 -8.23,-1.6 -13.35,-1.75 -0.78,-0.023 -1.59,-0.036 -2.37,-0.032 z m -10.908,103.6 v 22 h 21.998 v -22 H 90.562 z"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 860 B

View File

@@ -0,0 +1,16 @@
jQuery(document).ready(function( $ ){
$('#wpmc-main_color').wpColorPicker();
$('[data-toggle="tooltip"]').tooltip();
toggle_wpml();
$('#t_wpml').on( 'change', toggle_wpml );
function toggle_wpml() {
var all_text = '#t_login, #t_billing, #t_shipping, #t_order, #t_payment, #t_back_to_cart, #t_skip_login, #t_previous, #t_next';
if ($('#t_wpml').is(':checked') ) {
$(all_text).prop('disabled', true);
} else {
$(all_text).prop('disabled', false);
}
}
});

View File

@@ -0,0 +1,306 @@
jQuery(window).ready(function($){
"use strict";
var wpmc_checkout = {
$tabs : $( '.wpmc-tab-item' ),
$sections : $( '.wpmc-step-item' ),
$buttons : $( '.wpmc-nav-button' ),
$checkout_form : $( 'form.woocommerce-checkout' ),
$coupon_form : $( '#checkout_coupon' ),
$before_form : $( '#woocommerce_before_checkout_form' ),
current_step : $( 'ul.wpmc-tabs-list' ).data( 'current-title' ),
init: function() {
var self = this;
// add the "wpmc_switch_tab" trigger
$( '.woocommerce-checkout' ).on( 'wpmc_switch_tab', function( event, theIndex) {
self.switch_tab( theIndex );
});
$( '.wpmc-step-item:first' ).addClass( 'current' );
// Click on "next" button
$( '#wpmc-next, #wpmc-skip-login').on( 'click', function() {
self.switch_tab( self.current_index() + 1);
});
// Click on "previous" button
$( '#wpmc-prev' ).on( 'click', function() {
self.switch_tab( self.current_index() - 1);
});
// After submit, switch tabs where the invalid fields are
$( document ).on( 'checkout_error', function() {
if ( ! $( '#createaccount' ).is( ':checked') ) {
$( '#account_password_field, #account_username_field' ).removeClass( 'woocommerce-invalid-required-field' );
}
if ( ! $( '#ship-to-different-address-checkbox' ).is( ':checked' ) ) {
$( '.woocommerce-shipping-fields__field-wrapper p' ).removeClass( 'woocommerce-invalid-required-field' );
}
var section_class = $( '.woocommerce-invalid-required-field' ).closest( '.wpmc-step-item' ).attr( 'class' );
$( '.wpmc-step-item' ).each( function( i ) {
if ( $( this ).attr( 'class' ) === section_class ) {
self.switch_tab(i)
}
})
});
// Compatibility with Super Socializer
if ( $( '.the_champ_sharing_container' ).length > 0 ) {
$( '.the_champ_sharing_container' ).insertAfter( $( this ).parent().find( '#checkout_coupon' ) );
}
// Prevent form submission on Enter
$( '.woocommerce-checkout' ).on( 'keydown', function( e ) {
if ( e.which === 13 && ! $('.woocommerce-checkout textarea').is(':focus') ) {
e.preventDefault();
return false;
}
});
// "Back to Cart" button
$( '#wpmc-back-to-cart' ).on( 'click', function() {
window.location.href = $( this ).data( 'href' );
});
// Switch tabs with <- and -> keyboard arrows
if ( WPMC.keyboard_nav === '1' ) {
$( document ).on( 'keydown', function ( e ) {
var key = e.charCode ? e.charCode : e.keyCode ? e.keyCode : 0;
if ( key === 39 ) {
self.switch_tab( self.current_index() + 1 );
}
if ( key === 37 ) {
self.switch_tab( self.current_index() - 1 );
}
});
}
// Change tab if the hash #step-0 is present in the URL
if ( typeof window.location.hash != 'undefined' && window.location.hash ) {
changeTabOnHash( window.location.hash );
}
$( window ).on( 'hashchange', function() {
changeTabOnHash( window.location.hash )
} );
function changeTabOnHash( hash ) {
if ( /step-[0-9]/.test( hash ) ) {
var step = hash.match( /step-([0-9])/ )[1];
self.switch_tab( step );
}
}
// select2
if ( typeof $(this).selectWoo !== 'undefined' ) {
self.wc_country_select_select2();
$( document.body ).on( 'country_to_state_changed', function() {
self.wc_country_select_select2();
});
}
// "Please log in" link.
$( document.body ).on( 'click', 'a.showlogin-wmsc', function(e) {
e.preventDefault();
self.switch_tab( 0 );
});
// customizations
self.customizations();
},
current_index: function() {
return this.$sections.index( this.$sections.filter( '.current' ) );
},
scroll_top: function() {
// scroll to top
if ( $( '.wpmc-tabs-wrapper' ).length === 0 ) {
return;
}
var diff = $( '.wpmc-tabs-wrapper' ).offset().top - $( window ).scrollTop();
var scroll_offset = 70;
if ( typeof WPMC.scroll_top !== 'undefined' ) {
scroll_offset = WPMC.scroll_top;
}
if ( diff < -40 ) {
$( 'html, body' ).animate({
scrollTop: $( '.wpmc-tabs-wrapper' ).offset().top - scroll_offset,
}, 800);
}
},
switch_tab: function( theIndex ) {
var self = this;
$( '.woocommerce-checkout' ).trigger( 'wpmc_before_switching_tab' );
if ( theIndex < 0 || theIndex > this.$sections.length - 1 ) {
return false;
}
this.scroll_top();
$( 'html, body' ).promise().done( function() {
self.$tabs.removeClass( 'previous' ).filter( '.current' ).addClass( 'previous' );
self.$sections.removeClass( 'previous' ).filter( '.current' ).addClass( 'previous' );
$( '.woocommerce-NoticeGroup-checkout:not(wpmc-error)' ).show();
// Change the tab
self.$tabs.removeClass( 'current' );
self.$tabs.eq( theIndex ).addClass( 'current' );
self.current_step = self.$tabs.eq( theIndex ).data( 'step-title' );
$( '.wpmc-tabs-list' ).data( 'current-title', self.current_step );
// Change the section
self.$sections.removeClass( 'current' );
self.$sections.eq( theIndex ).addClass( 'current' );
// Which buttons to show?
self.$buttons.removeClass( 'current' );
self.$coupon_form.hide();
self.$before_form.hide();
// Show "next" button
if ( theIndex < self.$sections.length - 1 ) {
$( '#wpmc-next' ).addClass( 'current' );
}
// Remove errors from previous steps
if ( typeof $( '.woocommerce-NoticeGroup-checkout' ).data( 'for-step' ) !== 'undefined' && $( '.woocommerce-NoticeGroup-checkout' ).data( 'for-step' ) !== self.current_step ) {
$( '.woocommerce-NoticeGroup-checkout' ).remove();
}
// Show "skip login" button
if ( theIndex === 0 && $( '.wpmc-step-login' ).length > 0 ) {
$( '#wpmc-skip-login').addClass( 'current' );
$( '#wpmc-next' ).removeClass( 'current' );
$( '.woocommerce-NoticeGroup-checkout:not(wpmc-error)' ).hide();
}
// Last section
if ( theIndex === self.$sections.length - 1 ) {
$( '#wpmc-prev' ).addClass( 'current' );
$( '#wpmc-submit' ).addClass( 'current' );
self.$checkout_form.removeClass( 'processing' ).unblock();
}
// Show "previous" button
if ( theIndex != 0 ) {
$( '#wpmc-prev' ).addClass( 'current' );
}
if ( $( '.wpmc-step-review.current' ).length > 0 ) {
self.$coupon_form.show();
}
if ( $( '.wpmc-' + self.$before_form.data( 'step' ) + '.current' ).length > 0 ) {
self.$before_form.show();
}
$( '.woocommerce-checkout' ).trigger( 'wpmc_after_switching_tab' );
});
},
wc_country_select_select2: function() {
var self = this;
$( 'select.country_select:not(visible), select.state_select:not(visible)' ).each( function() {
var $this = $( this );
var select2_args = $.extend({
placeholder: $this.attr( 'data-placeholder' ) || $this.attr( 'placeholder' ) || '',
label: $this.attr( 'data-label' ) || null,
width: '100%'
}, self.getEnhancedSelectFormatString() );
$( this )
.on( 'select2:select', function() {
$( this ).trigger( 'focus' ); // Maintain focus after select https://github.com/select2/select2/issues/4384
} )
.selectWoo( select2_args );
});
},
getEnhancedSelectFormatString: function() {
return {
'language': {
errorLoading: function() {
// Workaround for https://github.com/select2/select2/issues/4355 instead of i18n_ajax_error.
return wc_country_select_params.i18n_searching;
},
inputTooLong: function( args ) {
var overChars = args.input.length - args.maximum;
if ( 1 === overChars ) {
return wc_country_select_params.i18n_input_too_long_1;
}
return wc_country_select_params.i18n_input_too_long_n.replace( '%qty%', overChars );
},
inputTooShort: function( args ) {
var remainingChars = args.minimum - args.input.length;
if ( 1 === remainingChars ) {
return wc_country_select_params.i18n_input_too_short_1;
}
return wc_country_select_params.i18n_input_too_short_n.replace( '%qty%', remainingChars );
},
loadingMore: function() {
return wc_country_select_params.i18n_load_more;
},
maximumSelected: function( args ) {
if ( args.maximum === 1 ) {
return wc_country_select_params.i18n_selection_too_long_1;
}
return wc_country_select_params.i18n_selection_too_long_n.replace( '%qty%', args.maximum );
},
noResults: function() {
return wc_country_select_params.i18n_no_matches;
},
searching: function() {
return wc_country_select_params.i18n_searching;
}
}
};
},
customizations: function() {
if ( WPMC.hide_last_prev === '1' ) {
$('.woocommerce-checkout').on('wpmc_after_switching_tab', function() {
$('#wpmc-prev').css('visibility', $('.wpmc-tabs-wrapper li.wpmc-tab-item:last-child').hasClass('current') ? 'hidden' : 'visible');
});
}
if ( WPMC.hide_last_back_to_cart === '1' ) {
$('.woocommerce-checkout').on('wpmc_after_switching_tab', function() {
$('#wpmc-back-to-cart').css('visibility', $('.wpmc-tabs-wrapper li.wpmc-tab-item:last-child').hasClass('current') ? 'hidden' : 'visible');
});
}
if ( WPMC.skip_login_above_form === '1' ) {
if ( $('.wpmc-login.current').length === 1 ) {
$('.wpmc-steps-wrapper').before( $('.wpmc-nav-wrapper'));
}
$('.woocommerce-checkout').on('wpmc_after_switching_tab', function() {
if ( $('.wpmc-login.current').length === 1 ) {
$('.wpmc-steps-wrapper').before( $('.wpmc-nav-wrapper'));
} else {
$('.wpmc-steps-wrapper').after( $('.wpmc-nav-wrapper'));
}
});
}
if ( WPMC.skip_login_next_to_login_button === '1' ) {
$('.woocommerce-form-login__submit').after($('#wpmc-skip-login'));
$('#wpmc-skip-login').css('margin-left', '7px');
}
}
}
wpmc_checkout.init();
});

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,170 @@
<?php
defined( 'ABSPATH' ) || exit;
class WPMultiStepCheckout_Settings {
/**
* Constructor
*/
public function __construct() {
require_once 'settings-array.php';
require_once 'frm/class-form-fields.php';
require_once 'frm/premium-tooltips.php';
require_once 'frm/warnings.php';
add_action( 'admin_menu', array( $this, 'admin_menu' ) );
add_action( 'admin_enqueue_scripts', array($this, 'admin_enqueue_scripts') );
$this->warnings();
}
/**
* Create the menu link
*/
function admin_menu() {
add_submenu_page(
'woocommerce',
'Multi-Step Checkout',
'Multi-Step Checkout',
'manage_options',
'wmsc-settings',
array($this, 'admin_settings_page')
);
}
/**
* Enqueue the scripts and styles
*/
function admin_enqueue_scripts() {
$page = filter_input(INPUT_GET, 'page', FILTER_SANITIZE_URL);
if ( $page != 'wmsc-settings' ) return false;
// Color picker
wp_enqueue_style( 'wp-color-picker' );
wp_enqueue_script('wp-color-picker');
$u = plugins_url('/', WMSC_PLUGIN_FILE) . 'assets/'; // assets url
$f = plugins_url('/', WMSC_PLUGIN_FILE) . 'includes/frm/assets/'; // framework assets url
$v = WMSC_VERSION; // version
$d = array('jquery'); // dependency
$w = true; // where? in the footer?
// Load scripts
wp_enqueue_script( 'wmsc-bootstrap', $f.'bootstrap.min.js', $d, $v, $w);
wp_enqueue_script( 'wmsc-admin-script', $u.'js/admin-script.js', $d, $v, $w);
// Load styles
wp_enqueue_style ( 'wmsc-bootstrap', $f.'bootstrap.min.css', array(), $v);
wp_enqueue_style ( 'wmsc-admin-style', $u.'css/admin-style.css', array(), $v);
}
/**
* Output the admin page
* @access public
*/
public function admin_settings_page() {
// Get the tabs.
$tabs = array(
'general' => __('General Settings', 'wp-multi-step-checkout'),
'design' => __('Design', 'wp-multi-step-checkout'),
'titles' => __('Text on Steps and Buttons', 'wp-multi-step-checkout')
);
$tab_current = (isset($_GET['tab'])) ? $_GET['tab'] : 'general';
if ( ! isset( $tabs[ $tab_current ] ) ) $tab_current = 'general';
// Get the field settings.
$settings_all = get_wmsc_settings();
$values_current = get_option( 'wmsc_options', array() );
$form = new \SilkyPressFrm\Form_Fields( $settings_all );
$form->add_setting( 'tooltip_img', plugins_url('/', WMSC_PLUGIN_FILE) . 'assets/images/question_mark.svg' );
$form->add_setting( 'section', $tab_current );
$form->add_setting( 'label_class', 'col-sm-5' );
$form->set_current_values( $values_current );
// The settings were saved.
if ( ! empty( $_POST ) ) {
check_admin_referer( 'wmsc_' . $tab_current );
if ( current_user_can( 'manage_woocommerce' ) ) {
$values_post_sanitized = $form->validate( $_POST );
$form->set_current_values( $values_post_sanitized );
foreach ( $settings_all as $_key => $_setting ) {
if ( isset( $_setting['pro'] ) && $_setting['pro'] && isset( $_setting['value'] ) ) {
$values_post_sanitized[ $_key ] = $_setting['value'];
}
}
if ( update_option( 'wmsc_options', $values_post_sanitized ) ) {
$form->add_message( 'success', '<b>'. __('Your settings have been saved.') . '</b>' );
}
}
}
// Premium tooltips.
$message = __('Only available in <a href="%1$s" target="_blank">PRO version</a>', 'wp-multi-step-checkout');
$message = wp_kses( $message, array('a' => array('href' => array(), 'target'=> array())));
$message = sprintf( $message, 'https://www.silkypress.com/woocommerce-multi-step-checkout-pro/?utm_source=wordpress&utm_campaign=wmsc_free&utm_medium=banner');
new SilkyPress_PremiumTooltips($message);
// Render the content.
$messages = $form->render_messages();
$content = $form->render();
include_once 'admin-template.php';
include_once 'right_columns.php';
}
/**
* Show admin warnings
*/
function warnings() {
$allowed_actions = array(
'wmsc_dismiss_suki_theme',
'wmsc_dismiss_german_market_hooks',
'wmsc_dismiss_elementor_pro_widget',
);
$w = new SilkyPress_Warnings($allowed_actions);
if ( !$w->is_url('plugins') && !$w->is_url('wmsc-settings') ) {
return;
}
// Warning about the Suki theme
if ( strpos( strtolower(get_template()), 'suki') !== false && $w->is_url('wmsc-settings') ) {
$message = __('The Suki theme adds some HTML elements to the checkout page in order to create the two columns. This additional HTML messes up the steps from the multi-step checkout plugin. Unfortunately the multi-step checkout plugin isn\'t compatibile with the Suki theme.', 'wp-multi-step-checkout');
$w->add_notice( 'wmsc_dismiss_suki_theme', $message);
}
// Warning if the hooks from the German Market plugin are turned on
if ( class_exists('Woocommerce_German_Market') && get_option( 'gm_deactivate_checkout_hooks', 'off' ) != 'off' && $w->is_url('wmsc-settings') ) {
$message = __('The "Deactivate German Market Hooks" option on the <b>WP Admin -> WooCommerce -> German Market -> Ordering</b> page will interfere with the proper working of the <b>Multi-Step Checkout for WooCommerce</b> plugin. Please consider turning the option off.', 'wp-multi-step-checkout');
$w->add_notice( 'wmsc_dismiss_german_market_hooks', $message);
}
// Warning about the Elementor Pro Checkout widget.
if ( defined( 'ELEMENTOR_PRO_VERSION' ) ) {
$message = __('If the Elementor Pro Checkout widget is used on the checkout page, make sure the "Skin" option is set to "Multi-Step Checkout" in the widget\'s "Content -> General" section.', 'wp-multi-step-checkout');
$w->add_notice( 'wmsc_dismiss_elementor_pro_widget', $message);
}
$w->show_warnings();
}
}
new WPMultiStepCheckout_Settings();

View File

@@ -0,0 +1,49 @@
<?php
/**
* Admin settings page
*/
defined( 'ABSPATH' ) || exit;
?>
<h2>Multi-Step Checkout for WooCommerce by <img src="<?php echo plugins_url('/', WMSC_PLUGIN_FILE); ?>assets/images/silkypress_logo.png" /> <a href="https://www.silkypress.com/" target="_blank">SilkyPress</a></h2>
<div class="wrap">
<h3 class="nav-tab-wrapper woo-nav-tab-wrapper">
<?php foreach ( $tabs as $_key => $_val ) : ?>
<?php $active = ( $_key == $tab_current ) ? ' nav-tab-active' : ''; ?>
<a href="?page=wmsc-settings&tab=<?php echo $_key ?>" class="nav-tab<?php echo $active; ?>"><?php _e($_val); ?></a>
<?php endforeach; ?>
</h3>
<div class="panel panel-default">
<div class="panel-body">
<div class="row">
<div id="alert_messages">
<?php echo $messages; ?>
</div>
<?php if( isset($without_form) && $without_form == true ) : ?>
<div class="form-group">
<?php echo $content; ?>
</div>
<?php else : ?>
<form class="form-horizontal" method="post" action="" id="form_settings">
<div class="form-group">
<?php echo $content; ?>
<div class="form-group">
<div class="col-lg-6">
<button type="submit" class="btn btn-primary"><?php echo __('Save changes'); ?></button>
</div>
</div>
</div>
<?php wp_nonce_field( 'wmsc_' . $tab_current ); ?>
</form>
<?php endif; ?>
</div>
</div>
</div>
</div>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,57 @@
<?php
defined( 'ABSPATH' ) || exit;
use ElementorPro\Plugin;
use ElementorPro\Modules\Woocommerce\Widgets\Checkout;
use Elementor\Widget_Base;
use Elementor\Skin_Base;
use Elementor\Controls_Manager;
class WMSC_Multistep_Checkout_Skin extends Skin_Base {
public function __construct( Widget_Base $parent ) {
$this->parent = $parent;
}
public function get_id() {
return 'multistep-checkout';
}
public function get_title() {
return __( 'Multi-Step Checkout', 'wp-multi-step-checkout' );
}
public function render() {
$is_editor = Plugin::elementor()->editor->is_edit_mode();
if ( $is_editor ) {
$store_current_user = wp_get_current_user()->ID;
wp_set_current_user( 0 );
}
$this->add_render_hooks_multistep();
echo do_shortcode( '[woocommerce_checkout]' );
$this->parent->remove_render_hooks();
if ( $is_editor ) {
wp_set_current_user( $store_current_user );
}
}
public function add_render_hooks_multistep() {
add_filter( 'woocommerce_form_field_args', array( $this->parent, 'modify_form_field' ), 70, 3 );
add_filter( 'woocommerce_get_terms_and_conditions_checkbox_text', array( $this->parent, 'woocommerce_terms_and_conditions_checkbox_text' ), 10, 1 );
add_filter( 'gettext', array( $this->parent, 'filter_gettext' ), 20, 3 );
// add_action( 'woocommerce_checkout_before_order_review_heading', array( $this->parent, 'woocommerce_checkout_before_order_review_heading_1' ), 5 );
// add_action( 'woocommerce_checkout_before_order_review_heading', array( $this->parent, 'woocommerce_checkout_before_order_review_heading_2' ), 95 );
remove_action( 'woocommerce_before_checkout_form', 'woocommerce_checkout_coupon_form' );
remove_action( 'woocommerce_before_checkout_form', 'woocommerce_checkout_login_form' );
}
}

View File

@@ -0,0 +1,33 @@
<?php
/**
* The buttons under the steps
*
* @package WPMultiStepCheckout
*/
defined( 'ABSPATH' ) || exit;
$buttons_class = apply_filters( 'wmsc_buttons_class', 'button alt' );
$wrapper_class = apply_filters( 'wmsc_buttons_wrapper_class', 'wpmc-nav-wrapper' );
$back_to_cart = ( isset( $options['show_back_to_cart_button'] ) && $options['show_back_to_cart_button'] ) ? true : false;
if ( ! $back_to_cart ) {
$wrapper_class .= ' wpmc-no-back-to-cart';
}
?>
<!-- The steps buttons -->
<div class="<?php echo $wrapper_class; // phpcs:ignore ?>">
<?php if ( $back_to_cart ) : ?>
<button data-href="<?php echo wc_get_cart_url(); ?>" id="wpmc-back-to-cart" class="<?php echo $buttons_class; // phpcs:ignore ?>" type="button"><?php echo $options['t_back_to_cart']; // phpcs:ignore ?></button>
<?php endif; ?>
<button id="wpmc-prev" class="<?php echo $buttons_class; // phpcs:ignore ?> button-inactive wpmc-nav-button" type="button"><?php echo $options['t_previous']; // phpcs:ignore ?></button>
<?php if ( $show_login_step ) : ?>
<button id="wpmc-next" class="<?php echo $buttons_class; // phpcs:ignore ?> button-active wpmc-nav-button" type="button"><?php echo $options['t_next']; // phpcs:ignore ?></button>
<button id="wpmc-skip-login" class="<?php echo $buttons_class; // phpcs:ignore ?> button-active current wpmc-nav-button" type="button"><?php echo $options['t_skip_login']; // phpcs:ignore ?></button>
<?php else : ?>
<button id="wpmc-next" class="<?php echo $buttons_class; // phpcs:ignore ?> button-active current wpmc-nav-button" type="button"><?php echo $options['t_next']; // phpcs:ignore ?></button>
<?php endif; ?>
</div>
<div style="clear: both;"></div>

View File

@@ -0,0 +1,168 @@
<?php
/**
* Checkout Form
*
* This is an overridden copy of the woocommerce/templates/checkout/form-checkout.php file.
*
* @package WPMultiStepCheckout
*/
defined( 'ABSPATH' ) || exit;
// check the WooCommerce MultiStep Checkout options
$options = get_option('wmsc_options');
require_once 'settings-array.php';
if ( !is_array($options) || count($options) === 0 ) {
$defaults = get_wmsc_settings();
$options = array();
foreach($defaults as $_key => $_value ) {
$options[$_key] = $_value['value'];
}
}
$options = array_map('stripslashes', $options);
// Use the WPML values instead of the ones from the admin form
if ( isset($options['t_wpml']) && $options['t_wpml'] == 1 ) {
$defaults = get_wmsc_settings();
foreach($options as $_key => $_value ) {
if( substr($_key, 0, 2) == 't_' && $_key != 't_sign') {
$options[$_key] = $defaults[$_key]['value'];
}
}
}
if ( !isset($options['c_sign']) ) $options['c_sign'] = '&';
// Get the steps
$steps = get_wmsc_steps();
// Set the step titles
$steps['billing']['title'] = $options['t_billing'];
$steps['shipping']['title'] = $options['t_shipping'];
$steps['review']['title'] = $options['t_order'];
$steps['payment']['title'] = $options['t_payment'];
// check the WooCommerce options
$is_registration_enabled = version_compare('3.0', WC()->version, '<=') ? $checkout->is_registration_enabled() : get_option( 'woocommerce_enable_signup_and_login_from_checkout' ) == 'yes';
$has_checkout_fields = version_compare('3.0', WC()->version, '<=') ? $checkout->get_checkout_fields() : (is_array($checkout->checkout_fields) && count($checkout->checkout_fields) > 0 );
$show_login_step = ( is_user_logged_in() || 'no' === get_option( 'woocommerce_enable_checkout_login_reminder' ) ) ? false : true;
$stop_at_login = ( ! $is_registration_enabled && $checkout->is_registration_required() && ! is_user_logged_in() ) ? true : false;
$checkout_url = apply_filters( 'woocommerce_get_checkout_url', version_compare( '2.5', WC()->version, '<=' ) ? wc_get_checkout_url() : WC()->cart->get_checkout_url() );
// Both options disabled for "Guest" on the WP Admin -> WooCommerce -> Settings -> Accounts & Privacy page
if ( ! $is_registration_enabled && $checkout->is_registration_required() && ! is_user_logged_in() && ! $show_login_step) {
echo esc_html( apply_filters( 'woocommerce_checkout_must_be_logged_in_message', __( 'You must be logged in to checkout.', 'woocommerce' ) ) );
return;
}
// Swap the Payment and Review steps for german shops
$swap_payment_review = ( class_exists('WooCommerce_Germanized') || class_exists('Woocommerce_German_Market')) ? true : false;
$swap_payment_review = apply_filters('wpmc_swap_payment_review', $swap_payment_review);
if ( $swap_payment_review ) {
$tmp = $steps['payment']['position'];
$steps['payment']['position'] = $steps['review']['position'];
$steps['review']['position'] = $tmp;
}
// Disabled "Show the Shipping step" option on Multi-Step Checkout -> General Settings page
if ( !$options['show_shipping_step'] ) {
unset($steps['shipping']);
$options['unite_billing_shipping'] = false;
$steps['billing']['sections'][] = 'woocommerce_checkout_after_customer_details';
}
// Enabled "Show the Order and the Payment steps together" option on Multi-Step Checkout -> General Settings page
if ( $options['unite_order_payment']) {
$steps['review']['title'] = $options['t_order'] . ' '.esc_html($options['c_sign']).' ' . $options['t_payment'];
$steps['review']['class'] = $steps['review']['class'] . ' ' . $steps['payment']['class'];
$steps['review']['sections'] = array('review', 'payment');
if ( $swap_payment_review ) {
$steps['review']['sections'] = array('payment', 'review');
}
unset($steps['payment']);
}
// Enabled "Show the Order and the Payment steps together" option on Multi-Step Checkout -> General Settings page
if ( $options['unite_billing_shipping'] && $options['show_shipping_step'] ) {
$steps['billing']['title'] = $options['t_billing'] . ' '.esc_html($options['c_sign']).' ' . $options['t_shipping'];
$steps['billing']['class'] = $steps['billing']['class'] . ' ' . $steps['shipping']['class'];
$steps['billing']['sections'] = array('billing', 'shipping');
unset($steps['shipping']);
}
// No checkout fields within the $checkout object
if ( !$has_checkout_fields) {
unset($steps['billing']);
unset($steps['shipping']);
}
// Pass the steps through a filter
$steps = apply_filters('wpmc_modify_steps', $steps);
// Sort the steps
uasort($steps, 'wpmc_sort_by_position');
// show the tabs
include dirname(__FILE__) . '/form-tabs.php';
do_action( 'wpmc_after_step_tabs' );
?>
<div style="clear: both;"></div>
<?php wc_print_notices(); ?>
<div style="clear: both;"></div>
<div class="wpmc-steps-wrapper">
<div id="checkout_coupon" class="woocommerce_checkout_coupon" style="display: none;">
<?php do_action( 'wpmc-woocommerce_checkout_coupon_form', $checkout ); ?>
</div>
<div id="woocommerce_before_checkout_form" class="woocommerce_before_checkout_form" data-step="<?php echo apply_filters('woocommerce_before_checkout_form_step', 'step-review'); ?>" style="display: none;">
<?php do_action( 'woocommerce_before_checkout_form', $checkout ); ?>
</div>
<!-- Step: Login -->
<?php
if ( $show_login_step ) {
wmsc_step_content_login($checkout, $stop_at_login);
}
if ( $stop_at_login ) {
echo '</div>'; // closes the "wpmc-steps-wrapper" div
return false;
}
?>
<form name="checkout" method="post" class="checkout woocommerce-checkout" action="<?php echo esc_url( $checkout_url ); ?>" enctype="multipart/form-data">
<?php $first_step = ( $show_login_step ) ? '' : ' current';
foreach( $steps as $_id => $_step ) {
echo '<!-- Step: '.$_step['title'].' -->';
echo '<div class="wpmc-step-item '.$_step['class']. $first_step . '">';
if ( isset($_step['sections'] ) ) {
foreach ( $_step['sections'] as $_section ) {
if ( strpos($_section, 'woocommerce_') === 0 ) {
do_action( $_section );
} else {
do_action('wmsc_step_content_' . $_section);
}
}
} else {
do_action('wmsc_step_content_' . $_id);
}
echo '</div>';
$first_step = '';
} ?>
</form>
<?php do_action( 'woocommerce_after_checkout_form', $checkout ); ?>
</div>
<?php include dirname(__FILE__) . '/form-buttons.php'; ?>

View File

@@ -0,0 +1,37 @@
<?php
/**
* The steps tabs
*
* @package WPMultiStepCheckout
*/
defined( 'ABSPATH' ) || exit;
$i = 0;
$number_of_steps = ( $show_login_step ) ? count( $steps ) + 1 : count( $steps );
$current_step_title = ( $show_login_step ) ? 'login' : key( array_slice( $steps, 0, 1, true ) );
do_action( 'wpmc_before_tabs' );
?>
<!-- The steps tabs -->
<div class="wpmc-tabs-wrapper">
<ul class="wpmc-tabs-list wpmc-<?php echo $number_of_steps; ?>-tabs" data-current-title="<?php echo $current_step_title; ?>">
<?php if ( $show_login_step ) : ?>
<li class="wpmc-tab-item current wpmc-login" data-step-title="login">
<div class="wpmc-tab-number"><?php echo $i = $i + 1; ?></div>
<div class="wpmc-tab-text"><?php echo $options['t_login']; ?></div>
</li>
<?php endif; ?>
<?php
foreach ( $steps as $_id => $_step ) :
$class = ( ! $show_login_step && $i == 0 ) ? ' current' : '';
?>
<li class="wpmc-tab-item<?php echo $class; ?> wpmc-<?php echo $_id; ?>" data-step-title="<?php echo $_id; ?>">
<div class="wpmc-tab-number"><?php echo $i = $i + 1; ?></div>
<div class="wpmc-tab-text"><?php echo $_step['title']; ?></div>
</li>
<?php endforeach; ?>
</ul>
</div>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,362 @@
<?php
/**
* Form_Fields. Render form fields out of an array.
*
* @class Form_Fields
* @package SilkyPressFrm
*/
namespace SilkyPressFrm;
defined( 'ABSPATH' ) || exit;
if ( ! class_exists( '\SilkyPressFrm\Form_Fields' ) ) {
/**
* Form_Fields class.
*/
class Form_Fields {
/**
* Fields description.
*
* @var array
*/
private $fields = array();
/**
* Current field values.
*
* @var array
*/
private $current_values = array();
/**
* Additional attributes.
*
* @var array
*/
private $atts = array();
/**
* Validation error/info messages.
*
* @var array
*/
private $messages = array();
/**
* Constructor.
*
* @param array $fields The field description array.
*/
public function __construct( $fields = array() ) {
$this->fields = $fields;
// Default attributes.
$this->atts = array(
'tooltip_img' => '',
'section' => '',
'label-class' => '',
'disable_pro' => true,
);
}
/**
* Add settings.
*
* @param string $var Variable.
* @param string $value Value.
*/
public function add_setting( $var = '', $value = '' ) {
$this->atts[ $var ] = $value;
}
/**
* Set the $this->current_values array.
*
* @param array $values Current values.
*/
public function set_current_values( $values = array() ) {
$this->current_values = $values;
}
/**
* Render all the fields.
*
* @param array $fields The fields to be rendered.
*
* @return string The rendered fields.
*/
public function render( $fields = null ) {
$content = '';
$fields = ( null === $fields ) ? $this->fields : array();
if ( count( $fields ) === 0 ) {
return '';
}
foreach ( $fields as $_key => $_field ) {
if ( isset( $this->atts['section'] ) && $_field['section'] !== $this->atts['section'] ) {
continue;
}
$content .= $this->render_field( $_key, $_field );
}
return $content;
}
/**
* Render one field
*
* @param string $_key The field's id.
* @param array $_field The fields' description.
*
* @return string The rendered field.
*/
public function render_field( $_key, $_field ) {
$atts = '';
$description = '';
$label = '';
$input_values = '';
$add_label = true;
$group_wrap = true;
if ( 'header' === $_field['input_form'] || isset( $_field['no_wrap'] ) ) {
$add_label = true;
$group_wrap = false;
}
$_field['value'] = isset( $this->current_values[ $_key ] ) ? $this->current_values[ $_key ] : $_field['value'];
$_field['disabled'] = ( $this->atts['disable_pro'] && isset( $_field['pro'] ) && $_field['pro'] ) ? true : false;
$atts .= ( isset( $_field['disabled'] ) && $_field['disabled'] ) ? ' disabled' : '';
$atts .= ( 'checkbox' === $_field['input_form'] && true === (bool) $_field['value'] && ! $_field['disabled'] ) ? ' checked="checked"' : '';
// Radio templates.
if ( 'radio' === $_field['input_form'] ) {
foreach ( $_field['values'] as $__id => $__value ) {
$_style = isset( $_field['style'] ) && 'inline' === $_field['style'] ? '-inline' : '';
$input_atts = ( $__id === $_field['value'] ) ? $atts . ' checked=""' : $atts;
$input_values .= vsprintf(
'<div class="radio%s"%s><label><input type="radio" name="%s" id="%s" value="%s" %s />%s</label></div>',
array( $_style, $atts, $_key, $__id, $__id, $input_atts, $__value )
);
}
}
// Button templates.
if ( 'buttons' === $_field['input_form'] ) {
foreach ( $_field['values'] as $__id => $__value ) {
$toggle = ( ! empty( $__value[1] ) ) ? ' data-toggle="tooltip" data-placement="top" title="' . $__value[1] . '" data-original-title="' . $__value[1] . '"' : '';
$__atts = ( $__id == $_field['value'] ) ? ' active' : ''; // Keep the loosely == equal operator instead of the strict === identical operator
$__atts .= ( $_field['disabled'] ) ? ' disabled' : '';
$input_values .= vsprintf(
'<label class="btn btn-default %s"><input type="radio" name="%s" id="%s" value="%s" %s /><div class="icon-in-label ndd-spot-icon icon-style-1"%s><div class="ndd-icon-main-element">%s</div></div></label>',
array( $__atts, $_key, $__id, $__id, $__id === $_field['value'] ? 'checked' : '', $toggle, $__value[0] )
);
}
}
// Input templates.
$templates = array(
'text' => array( '%s', array( $_field['value'] ) ),
'radio' => array( '%s', array( $input_values ) ),
'buttons' => array( '<div class="btn-group%s" data-toggle="buttons" id="btn-group-style-circle">%s</div>', array( $atts, $input_values ) ),
'input_color' => array(
'<input type="color" class="form-control" id="%s" name="%s" value="%s"%s /><span class="input-group-addon" id="color-text-color-hex">%s</span>',
array( $_key, $_key, $_field['value'], $atts, $_field['value'] ),
),
'input_text' => array(
'<input type="text" class="form-control" id="%s" name="%s" value="%s"%s />',
array( $_key, $_key, stripslashes( $_field['value'] ), $atts ),
),
'checkbox' => array(
'<input type="checkbox" id="%s" name="%s" value="1"%s />',
array( $_key, $_key, $atts ),
),
'header' => array(
'<h4 class="col-sm-5">%s</h4><div style="clear: both;"></div>',
array( $_field['label'] ),
),
);
// The input.
$input = vsprintf(
$templates[ $_field['input_form'] ][0],
$templates[ $_field['input_form'] ][1]
);
// The input addon.
if ( isset( $_field['post_input'] ) && ! empty( $_field['post_input'] ) ) {
$input .= sprintf( '<span class="input-group-addon">%s</span>', $_field['post_input'] );
}
// The description.
if ( isset( $_field['description'] ) && ! empty( $_field['description'] ) ) {
$description = vsprintf(
' <img src="%s" data-toggle="tooltip" data-placement="top" title="%s" data-original-title="%s" />',
array( $this->atts['tooltip_img'], $_field['description'], $_field['description'] )
);
}
// The label.
$label_class = isset( $this->atts['label_class'] ) ? $this->atts['label_class'] : 'col-sm-6';
$label_class = isset( $_field['label_class'] ) ? $_field['label_class'] : $label_class;
if ( isset( $_field['label'] ) && $add_label ) {
$label = vsprintf(
'<label for="%s" class="%s">%s</label>',
array( $_key, 'control-label ' . $label_class, $_field['label'] . $description )
);
}
// The Bootstrap 4 form-group wrapper.
if ( $group_wrap ) {
$_field['disabled'] = ( $this->atts['disable_pro'] && isset( $_field['pro'] ) && $_field['pro'] ) ? true : false;
$class = ( isset( $_field['disabled'] ) && $_field['disabled'] ) ? ' disabled' : '';
$input = vsprintf(
'<div class="%s"%s>%s<div class="%s">%s</div></div>',
array( 'form-group' . $class, '', $label, 'input-group input-group-' . $_field['input_form'], $input )
);
}
return $input;
}
/**
* Validate the $_POST values.
*
* @param array $post The $_POST values.
*/
public function validate( $post ) {
// Filter the $post array for allowed fields.
$post = array_intersect_key( $post, array_fill_keys( array_keys( $this->fields ), '' ) );
foreach ( $this->fields as $_key => $settings ) {
$reset = array();
// Validate only fields from the current section.
if ( isset( $this->atts['section'] ) && $settings['section'] !== $this->atts['section'] ) {
if ( 'header' !== $settings['input_form'] && 'text' !== $settings['input_form'] && isset( $settings['value'] ) ) {
$post[ $_key ] = isset( $this->current_values[ $_key ] ) ? $this->current_values[ $_key ] : $settings['value'];
}
continue;
}
// Add the unchecked checkboxes.
if ( 'checkbox' === $settings['input_form'] ) {
$post[ $_key ] = isset( $post[ $_key ] ) ? true : false;
}
// Validate colors.
if ( 'input_color' === $settings['input_form'] && isset( $post[ $_key ] ) && ! preg_match( '/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/', $post[ $_key ] ) ) {
$reset = array(
/* translators: 1: field label 2: value */
__( 'Unrecognized %1$s. The value was reset to %2$s' ),
array( '<b>' . $settings['label'] . '</b>', '<b>' . $settings['value'] . '</b>' ),
);
}
// Sanitize text inputs.
if ( 'input_text' === $settings['input_form'] ) {
$post[ $_key ] = isset( $post[ $_key ] ) ? sanitize_text_field( wp_unslash( $post[ $_key ] ) ) : (string) $settings['value'];
}
// Validate button and radio inputs.
if ( in_array( $settings['input_form'], array( 'button', 'radio' ), true ) && isset( $post[ $_key ] ) && ! array_key_exists( $post[ $_key ], $settings['values'] ) ) {
$reset = array(
/* translators: 1: field label 2: value */
__( 'Unrecognized %1$s. The value was reset to %2$s' ),
array( '<b>' . $settings['label'] . '</b>', '<b>' . $settings['value'] . '</b>' ),
);
}
// Validate according to a rule.
if ( isset( $settings['validate'] ) && isset( $post[ $_key ] ) ) {
if ( 'int' === $settings['validate']['type'] ) {
if ( (string) (int) $post[ $_key ] !== $post[ $_key ] ) {
$this->add_message(
'info',
vsprintf(
/* translators: 1: field label 2: value */
__( 'The %1$s field accepts only an integer value. It was set to %2$s' ),
array( '<b>' . $settings['label'] . '</b>', (int) $post[ $_key ] )
)
);
}
$post[ $_key ] = (int) $post[ $_key ];
}
if ( 'float' === $settings['validate']['type'] ) {
if ( (string) (float) $post[ $_key ] !== $post[ $_key ] ) {
$this->add_message(
'info',
vsprintf(
/* translators: 1: field label 2: value */
__( 'The %1$s field accepts only a number. It was set to %2$s' ),
array( '<b>' . $settings['label'] . '</b>', (float) $post[ $_key ] )
)
);
}
$post[ $_key ] = (float) $post[ $_key ];
}
if ( in_array( $settings['validate']['type'], array( 'int', 'float' ), true ) &&
( $post[ $_key ] < $settings['validate']['range'][0] ||
$post[ $_key ] > $settings['validate']['range'][1] ) ) {
$reset = array(
/* translators: 1: field label 2: minimum value 3: maximum value 4: value */
__( '%1$s accepts values between %2$s and %3$s. Your value was reset to %4$s' ),
array( '<b>' . $settings['label'] . '</b>', $settings['validate']['range'][0], $settings['validate']['range'][1], '<b>' . $settings['value'] . '</b>' ),
);
}
}
// Reset the value and add the info message.
if ( count( $reset ) > 0 ) {
$post[ $_key ] = $settings['value'];
$this->add_message( 'info', vsprintf( $reset[0], $reset[1] ) );
}
}
return $post;
}
/**
* Add messages.
*
* @param string $type The message type.
* @param string $message The message.
*/
public function add_message( $type = '', $message = '' ) {
$this->messages[] = array( $type, $message );
}
/**
* Render the messages.
*
* @return string Messages.
*/
public function render_messages() {
if ( 0 === count( $this->messages ) ) {
return;
}
$output = '';
foreach ( $this->messages as $_message ) {
$output .= vsprintf(
'<div class="alert alert-%s"><button type="button" class="close" data-dismiss="alert">&times;</button>%s</div>',
array( $_message[0], $_message[1] )
);
}
$output = sprintf( '<div class="col-lg-12">%s</div>', $output );
return $output;
}
}
}

View File

@@ -0,0 +1,111 @@
<?php
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
}
if ( !class_exists('SilkyPress_PremiumTooltips') ) {
/**
* SilkyPress_PremiumTooltips
*/
class SilkyPress_PremiumTooltips {
/**
* Constructor
*/
public function __construct($message) {
$this->html($message);
$this->css();
$this->javascript();
}
function html($message) {
?>
<div id="skp-premium-tooltip">
<div class="skp-premium-tooltip--arrow">
<div style=""></div>
</div>
<div class="skp-premium-tooltip--msg">
<label><?php echo $message; ?></label>
</div>
</div>
<?php
}
function css() {
?>
<style type="text/css">
#skp-premium-tooltip {
display:none;
width: 230px;
height: 60px;
position: absolute;
margin-left: 354px;
margin-top: 112px;
color: white;
}
#skp-premium-tooltip .skp-premium-tooltip--arrow {
float:left;
width:13px;
}
#skp-premium-tooltip .skp-premium-tooltip--arrow div {
width: 0px;
height: 0px;
border-top: 6px solid transparent;
border-right: 6px solid #333333;
border-bottom: 6px solid transparent;
float: right;
margin-right: 0px;
margin-top: 16px;
}
#skp-premium-tooltip .skp-premium-tooltip--msg {
font-family:sans-serif;
font-size:13px;
text-align: center;
border-radius: 5px;
float: left;
background-color: rgb(51, 51, 51);
color: white;
width: 210px;
padding: 10px 0px;
}
</style>
<?php
}
function javascript() {
?>
<script type="text/javascript">
jQuery(document).ready(function($){
$(".form-group.disabled-short, .form-group.disabled").on('click',function(e){
if(typeof window.tooltip != "undefined"){
clearTimeout(window.tooltip);
}
var inputCon = $(e.currentTarget).find(".input-group");
var left = 30;
$(e.currentTarget).children().each(function(i, child){
left += $(child).width();
});
var offsetTop = $(e.currentTarget).offset().top - 38;
offsetTop -= $('h2').offset().top - 52;
$("#skp-premium-tooltip").css({"margin-left" : left + "px", "margin-top" : offsetTop + "px"});
$("#skp-premium-tooltip").fadeIn( "slow", function() {
window.tooltip = setTimeout(function(){ $("#skp-premium-tooltip").hide(); }, 1000);
});
return;
});
});
</script>
<?php
}
}
}

View File

@@ -0,0 +1,110 @@
<?php
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
}
if ( !class_exists('SilkyPress_Warnings') ) {
/**
* SilkyPress_Warnings
*/
class SilkyPress_Warnings {
var $allowed_actions = array();
var $notices = array();
/**
* Constructor
*/
public function __construct($allowed_actions) {
$this->allowed_actions = $allowed_actions;
add_action( 'wp_ajax_sk_dismiss_warning', array( $this, 'notice_dismiss' ) );
}
/**
* Check if we are on the right page
*/
function is_url( $url_part = '' ) {
if ( !isset( $_SERVER ) || !isset( $_SERVER['REQUEST_URI'] ) ) {
return false;
}
if ( strpos( $_SERVER['REQUEST_URI'], $url_part ) !== false ) {
return true;
}
return false;
}
/**
* Add this message to the $this->notices array
*/
function add_notice($id, $message, $class = '') {
if ( get_option($id) != false ) return false;
$notice = array(
'id' => $id,
'message' => $message,
);
if ( !empty($class) ) $notice['class'] = $class;
$this->notices[] = $notice;
}
function show_warnings() {
add_action( 'admin_notices', array($this, 'show_admin_notice') );
}
/**
* Show the admin notices
* */
function show_admin_notice() {
if ( !is_array($this->notices) || count($this->notices) == 0 ) return;
foreach( $this->notices as $_n ) {
$nonce = wp_create_nonce( $_n['id'] );
if ( !isset($_n['class'])) $_n['class'] = 'notice notice-warning is-dismissible';
$_n['class'] .= ' sk-notice-dismiss';
printf( '<div class="%1$s" id="%2$s" data-nonce="%3$s"><p>%4$s</p></div>', $_n['class'], $_n['id'], $nonce, $_n['message'] );
}
?>
<script type='text/javascript'>
jQuery(function($){
$(document).on( 'click', '.sk-notice-dismiss', function() {
var id = $(this).attr('id');
var data = {
action: 'sk_dismiss_warning',
option: id,
nonce: $(this).data('nonce'),
};
$.post(ajaxurl, data, function(response ) {
$('#'+id).fadeOut('slow');
});
});
});
</script>
<?php
}
/**
* Ajax response for `notice_dismiss` action
*/
function notice_dismiss() {
$option = $_POST['option'];
if ( ! in_array($option, $this->allowed_actions ) ) return;
check_ajax_referer( $option, 'nonce' );
update_option( $option, 1 );
wp_die();
}
}
}

View File

@@ -0,0 +1,111 @@
<?php
/**
* The right column on the admin side
*
* @package WPMultiStepCheckout
*/
defined( 'ABSPATH' ) || exit;
$now = time();
$wmsc_activation_time = get_option( 'wmsc_activation_time', '' );
$wmsc_version = get_option( 'wmsc_version', '' );
if ( empty( $wmsc_activation_time ) || version_compare( $wmsc_version, WMSC_VERSION, '<' ) ) {
$wmsc_activation_time = $now;
update_option( 'wmsc_activation_time', $now );
update_option( 'wmsc_version', WMSC_VERSION);
}
$show_discount = false;
if ( $now - 3*86400 < $wmsc_activation_time ) {
$show_discount = true;
}
$start_date = date('j M', $wmsc_activation_time - 3*86400 );
$end_date = date('j M', $wmsc_activation_time + 2*86400 );
function iz_convert_numbers_letters( $text, $from = 'numbers' ) {
$alphabet = str_split('abcdefghij');
$numbers = str_split('0123456789');
if ( $from == 'numbers' ) {
return str_replace( $numbers, $alphabet, $text );
} else {
return str_replace( $alphabet, $numbers, $text );
}
}
$offer_link = 'https://www.silkypress.com/woocommerce-multi-step-checkout-pro/?a=' . iz_convert_numbers_letters( $wmsc_activation_time ) . '&utm_source=wordpress&utm_campaign=iz_offer&utm_medium=banner';
$images_url = site_url().'/wp-content/plugins/wp-multi-step-checkout/assets/images/';
?>
<style type="text/css">
#right_column_metaboxes a.button {
color: #fff !important;
border: none;
box-shadow: none;
vertical-align: middle;
font-size: 14px;
height: 32px;
line-height: 32px;
padding: 0 18px 1px;
background: #bc1117 !important;
display: block-inline;
text-align: center;
margin: 10px auto;
}
#wpbody-content .metabox-holder.rating {
background: url(<?php echo $images_url; ?>rating.png) 100% 80% no-repeat;
background-size: auto auto;
background-size: 50%;
}
#wpbody-content .metabox-holder.discount {
background: url(<?php echo $images_url; ?>discount.png) 102% 102% no-repeat;
background-size: auto auto;
background-size: 50%;
}
</style>
<div id="right_column_metaboxes">
<?php if ( $show_discount ) : ?>
<div class="panel main_container">
<div class="container_title">
<h3><img src="<?php echo $images_url; ?>checkout-cart.svg" width="24" /> <?php _e('WooCommerce Multi-Step Checkout Pro', 'wp-multi-step-checkout'); ?></h3>
</div>
<div class="metabox-holder discount" style="text-align: center;">
<p>Shhh... Can you keep a secret?</p>
<p>
<span style="color: #bc1117; font-size: 24px;">30% OFF</span><br />
only between <span style="color: #bc1117;"><?php echo $start_date; ?> - <?php echo $end_date; ?></span>.
</p>
<p>Don't tell anyone.</p>
<p style="text-align: center;">
<a href="<?php echo $offer_link; ?>" target="_blank" class="button" rel="noreferrer"><?php _e('Upgrade to PRO', 'wp-multi-step-checkout'); ?></a>
</p>
</div>
</div>
<?php endif; ?>
<div class="panel main_container">
<div class="container_title">
<h3><?php _e('Like this Plugin?', 'wp-multi-step-checkout'); ?></h3>
</div>
<div class="metabox-holder rating" style="text-align: center;">
<p><?php _e('Share your opinion with the world on the WordPress.org Plugin Repository.', 'wp-image-zoooom'); ?></p>
<p><a href="https://wordpress.org/plugins/wp-multi-step-checkout/" target="_blank" class="button"><?php _e('Rate it on WordPress.org', 'wp-image-zoooom'); ?></a></p>
</div>
</div>
</div>
<div style="clear: both"></div>

View File

@@ -0,0 +1,535 @@
<?php
/**
* Functions
*
* @package WPMultiStepCheckout
*/
defined( 'ABSPATH' ) || exit;
if ( ! function_exists( 'get_wmsc_settings' ) ) {
/**
* The settings array for the admin page.
*/
function get_wmsc_settings() {
$account_url = admin_url( 'admin.php?page=wc-settings&tab=account' );
$no_login_screenshot = 'https://www.silkypress.com/wp-content/uploads/2018/09/multi-step-checkout-no-login.png';
$registration_settings_screenshot = 'https://www.silkypress.com/wp-content/uploads/2019/09/registration-description.png';
$wmsc_settings = array(
/* General Settings */
'label1' => array(
'label' => __( 'Which Steps to show', 'wp-multi-step-checkout' ),
'input_form' => 'header',
'value' => '',
'section' => 'general',
),
'show_shipping_step' => array(
'label' => __( 'Show the <code>Shipping</code> step', 'wp-multi-step-checkout' ),
'input_form' => 'checkbox',
'value' => true,
'section' => 'general',
),
'show_login_step' => array(
'label' => __( 'Show the <code>Login</code> step', 'wp-multi-step-checkout' ),
'input_form' => 'text',
/* translators: 1: Woocommerce Accounts URL 2: Screenshot URL. */
'value' => sprintf( __( ' For removing the login step you need to uncheck the "Allow customers to log into an existing account during checkout" option on the <a href="%1$s">WP Admin -> WooCommerce -> Settings -> Accounts</a> page. See <a href="%2$s" target="_blank">this screenshot</a>.', 'wp-multi-step-checkout' ), esc_url( $account_url ), esc_url( $no_login_screenshot ) ),
'section' => 'general',
),
'unite_billing_shipping' => array(
'label' => __( 'Show the <code>Billing</code> and the <code>Shipping</code> steps together', 'wp-multi-step-checkout' ),
'input_form' => 'checkbox',
'value' => false,
'section' => 'general',
),
'unite_order_payment' => array(
'label' => __( 'Show the <code>Order</code> and the <code>Payment</code> steps together', 'wp-multi-step-checkout' ),
'input_form' => 'checkbox',
'value' => false,
'section' => 'general',
),
'label2' => array(
'label' => __( 'Additional Elements', 'wp-multi-step-checkout' ),
'input_form' => 'header',
'value' => '',
'section' => 'general',
),
'show_back_to_cart_button' => array(
'label' => __( 'Show the <code>Back to Cart</code> button', 'wp-multi-step-checkout' ),
'input_form' => 'checkbox',
'value' => true,
'section' => 'general',
),
'registration_with_login' => array(
'label' => __( 'Show registration form in the <code>Login</code> step', 'wp-multi-step-checkout' ),
'input_form' => 'checkbox',
'value' => true,
'section' => 'general',
'description' => __( 'The registration form will be shown next to the login form, it will not replace it', 'wp-multi-step-checkout' ),
'pro' => true,
),
'registration_desc' => array(
'label' => '',
'input_form' => 'text',
/* translators: 1: Woocommerce Accounts URL 2: Screenshot URL. */
'value' => sprintf( __( 'Use the "Account creation" options on the <a href="%1$s">WP Admin -> WooCommerce -> Settings -> Accounts & Privacy</a> page to modify the Registration form. See <a href="%2$s" target="_blank">this screenshot</a>.', 'wp-multi-step-checkout' ), esc_url( $account_url ), esc_url( $registration_settings_screenshot ) ),
'section' => 'general',
'pro' => true,
),
'review_thumbnails' => array(
'label' => __( 'Add product thumbnails to the <code>Order Review</code> section', 'wp-multi-step-checkout' ),
'input_form' => 'checkbox',
'value' => true,
'section' => 'general',
'pro' => true,
),
'review_address' => array(
'label' => __( 'Add <code>Address Review</code> to the <code>Order</code> section', 'wp-multi-step-checkout' ),
'input_form' => 'checkbox',
'value' => false,
'section' => 'general',
'pro' => true,
),
'label3' => array(
'label' => __( 'Functionality', 'wp-multi-step-checkout' ),
'input_form' => 'header',
'value' => '',
'section' => 'general',
),
'validation_per_step' => array(
'label' => __( 'Validate the fields during each step', 'wp-multi-step-checkout' ),
'description' => __( 'The default WooCommerce validation is done when clicking the Place Order button. With this option the validation is performed when trying to move to the next step', 'wp-multi-step-checkout' ),
'input_form' => 'checkbox',
'value' => true,
'section' => 'general',
'pro' => true,
),
'clickable_steps' => array(
'label' => __( 'Clickable Steps', 'wp-multi-step-checkout' ),
'description' => __( 'The user can click on the steps in order to get to the next one.', 'wp-multi-step-checkout' ),
'input_form' => 'checkbox',
'value' => true,
'section' => 'general',
'pro' => true,
),
'keyboard_nav' => array(
'label' => __( 'Enable the keyboard navigation', 'wp-multi-step-checkout' ),
'description' => __( 'Use the keyboard\'s left and right keys to move between the checkout steps', 'wp-multi-step-checkout' ),
'input_form' => 'checkbox',
'value' => false,
'section' => 'general',
),
'url_hash' => array(
'label' => __( 'Change the URL for each step', 'wp-multi-step-checkout' ),
'description' => __( 'Each step will have a hash added to the URL. For example &quot;#login&quot; or &quot;#billing&quot;. This option, together with some &quot;History Change Trigger&quot; settings in the Google Tag Manager, allows Google Analytics to track each step as different pages.', 'wp-multi-step-checkout' ),
'input_form' => 'checkbox',
'value' => false,
'section' => 'general',
'pro' => true,
),
/* Templates */
'main_color' => array(
'label' => __( 'Main Color', 'wp-multi-step-checkout' ),
'input_form' => 'input_color',
'value' => '#1e85be',
'section' => 'design',
),
'template' => array(
'label' => __( 'Template', 'wp-multi-step-checkout' ),
'input_form' => 'radio',
'value' => 'default',
'values' => array(
'default' => __( 'Default', 'wp-multi-step-checkout' ),
'md' => __( 'Material Design', 'wp-multi-step-checkout' ),
'breadcrumb' => __( 'Breadcrumbs', 'wp-multi-step-checkout' ),
),
'section' => 'design',
'pro' => true,
),
'wpmc_buttons' => array(
'label' => __( 'Use the plugin\'s buttons', 'wp-multi-step-checkout' ),
'input_form' => 'checkbox',
'value' => false,
'description' => __( 'By default the plugin tries to use the theme\'s design for the buttons. If this fails, enable this option in order to use the plugin\'s button style', 'wp-multi-step-checkout' ),
'section' => 'design',
'pro' => true,
),
'wpmc_check_sign' => array(
'label' => __( 'Show a "check" sign for visited steps', 'wp-multi-step-checkout' ),
'input_form' => 'checkbox',
'value' => false,
'section' => 'design',
'pro' => true,
),
'visited_color' => array(
'label' => __( 'Visited steps color', 'wp-multi-step-checkout' ),
'input_form' => 'input_color',
'value' => '#1EBE3A',
'section' => 'design',
'pro' => true,
),
/* Step Titles */
't_login' => array(
'label' => __( 'Login', 'wp-multi-step-checkout' ),
'input_form' => 'input_text',
'value' => __( 'Login', 'wp-multi-step-checkout' ),
'section' => 'titles',
),
't_billing' => array(
'label' => __( 'Billing', 'wp-multi-step-checkout' ),
'input_form' => 'input_text',
'value' => __( 'Billing', 'wp-multi-step-checkout' ),
'section' => 'titles',
),
't_shipping' => array(
'label' => __( 'Shipping', 'wp-multi-step-checkout' ),
'input_form' => 'input_text',
'value' => __( 'Shipping', 'wp-multi-step-checkout' ),
'section' => 'titles',
),
't_order' => array(
'label' => __( 'Order', 'wp-multi-step-checkout' ),
'input_form' => 'input_text',
'value' => __( 'Order', 'wp-multi-step-checkout' ),
'section' => 'titles',
),
't_payment' => array(
'label' => __( 'Payment', 'wp-multi-step-checkout' ),
'input_form' => 'input_text',
'value' => __( 'Payment', 'wp-multi-step-checkout' ),
'section' => 'titles',
),
't_back_to_cart' => array(
'label' => __( 'Back to cart', 'wp-multi-step-checkout' ),
'input_form' => 'input_text',
'value' => _x( 'Back to cart', 'Frontend: button label', 'wp-multi-step-checkout' ),
'section' => 'titles',
),
't_skip_login' => array(
'label' => __( 'Skip Login', 'wp-multi-step-checkout' ),
'input_form' => 'input_text',
'value' => _x( 'Skip Login', 'Frontend: button label', 'wp-multi-step-checkout' ),
'section' => 'titles',
),
't_previous' => array(
'label' => __( 'Previous', 'wp-multi-step-checkout' ),
'input_form' => 'input_text',
'value' => _x( 'Previous', 'Frontend: button label', 'wp-multi-step-checkout' ),
'section' => 'titles',
),
't_next' => array(
'label' => __( 'Next', 'wp-multi-step-checkout' ),
'input_form' => 'input_text',
'value' => _x( 'Next', 'Frontend: button label', 'wp-multi-step-checkout' ),
'section' => 'titles',
),
't_error' => array(
'label' => __( 'Please fix the errors on this step before moving to the next step', 'wp-multi-step-checkout' ),
'input_form' => 'input_text',
'value' => _x( 'Please fix the errors on this step before moving to the next step', 'Frontend: error message', 'wp-multi-step-checkout' ),
'section' => 'titles',
'description' => __( 'This is an error message shown in the frontend', 'wp-multi-step-checkout' ),
'pro' => true,
),
'c_sign' => array(
'label' => __( 'AND sign', 'wp-multi-step-checkout' ),
'input_form' => 'input_text',
'value' => __( '&', 'wp-multi-step-checkout' ),
'section' => 'titles',
'description' => __( 'The sign between two unified steps. For example "Billing & Shipping"' ),
),
't_wpml' => array(
'label' => __( 'Use WPML to translate the text on the Steps and Buttons', 'wp-multi-step-checkout' ),
'input_form' => 'checkbox',
'value' => false,
'section' => 'titles',
'description' => __( 'For a multilingual website the translations from WPML will be used instead of the ones in this form', 'wp-multi-step-checkout' ),
),
);
return apply_filters( 'wmsc_settings_admin', $wmsc_settings );
}
}
if ( ! function_exists( 'get_wmsc_steps' ) ) {
/**
* The steps array.
* Note: The Login is always the first step and is not part of the get_wmsc_steps() array.
*/
function get_wmsc_steps() {
$steps = array(
'billing' => array(
'title' => __( 'Billing', 'wp-multi-step-checkout' ),
'position' => 10,
'class' => 'wpmc-step-billing',
'sections' => array( 'billing' ),
),
'shipping' => array(
'title' => __( 'Shipping', 'wp-multi-step-checkout' ),
'position' => 20,
'class' => 'wpmc-step-shipping',
'sections' => array( 'shipping' ),
),
'review' => array(
'title' => __( 'Order', 'wp-multi-step-checkout' ),
'position' => 30,
'class' => 'wpmc-step-review',
'sections' => array( 'review' ),
),
'payment' => array(
'title' => __( 'Payment', 'wp-multi-step-checkout' ),
'position' => 40,
'class' => 'wpmc-step-payment',
'sections' => array( 'payment' ),
),
);
return $steps;
}
}
if ( ! function_exists( 'wmsc_step_content_login' ) ) {
/**
* The content for the Login step.
*
* @param object $checkout The Checkout object from the WooCommerce plugin.
* @param bool $stop_at_login If the user should be logged in in order to checkout.
*/
function wmsc_step_content_login( $checkout, $stop_at_login ) { ?>
<div class="wpmc-step-item wpmc-step-login">
<div id="checkout_login" class="woocommerce_checkout_login wp-multi-step-checkout-step">
<?php
woocommerce_login_form(
array(
'message' => apply_filters( 'woocommerce_checkout_logged_in_message', __( 'If you have shopped with us before, please enter your details in the boxes below. If you are a new customer, please proceed to the Billing &amp; Shipping section.', 'wp-multi-step-checkout' ) ),
'redirect' => wc_get_page_permalink( 'checkout' ),
'hidden' => false,
)
);
?>
</div>
<?php
if ( $stop_at_login ) {
echo esc_html( apply_filters( 'woocommerce_checkout_must_be_logged_in_message', __( 'You must be logged in to checkout.', 'woocommerce' ) ) );
}
?>
</div>
<?php }
}
if ( ! function_exists( 'wmsc_step_content_billing' ) ) {
/**
* The content of the Billing step.
*/
function wmsc_step_content_billing() {
do_action( 'woocommerce_checkout_before_customer_details' );
do_action( 'woocommerce_checkout_billing' );
}
}
if ( ! function_exists( 'wmsc_step_content_shipping' ) ) {
/**
* The content of the Shipping step.
*/
function wmsc_step_content_shipping() {
do_action( 'woocommerce_checkout_shipping' );
do_action( 'woocommerce_checkout_after_customer_details' );
}
}
if ( ! function_exists( 'wmsc_step_content_payment' ) ) {
/**
* The content of the Order Payment step.
*/
function wmsc_step_content_payment() {
echo '<h3 id="payment_heading">' . esc_html__( 'Payment', 'woocommerce' ) . '</h3>';
do_action( 'wpmc-woocommerce_checkout_payment' );
do_action( 'woocommerce_checkout_after_order_review' );
}
}
if ( ! function_exists( 'wmsc_step_content_review' ) ) {
/**
* The content of the Order Review step.
*/
function wmsc_step_content_review() {
do_action( 'woocommerce_checkout_before_order_review_heading' );
echo '<h3 id="order_review_heading">' . esc_html__( 'Your order', 'woocommerce' ) . '</h3>';
do_action( 'woocommerce_checkout_before_order_review' );
echo '<div id="order_review" class="woocommerce-checkout-review-order">';
do_action( 'woocommerce_checkout_order_review' );
do_action( 'wpmc-woocommerce_order_review' );
echo '</div>';
}
}
if ( ! function_exists( 'wmsc_step_content_payment_germanized' ) ) {
/**
* The content of the Payment step for the "Germanized for WooCommerce" plugin.
*/
function wmsc_step_content_payment_germanized() {
echo '<h3 id="payment_heading">' . esc_html__( 'Choose a Payment Gateway', 'woocommerce-germanized' ) . '</h3>';
do_action( 'wpmc-woocommerce_checkout_payment' );
}
}
if ( ! function_exists( 'wmsc_step_content_review_germanized' ) ) {
/**
* The content of the Order Review step for the "Germanized for WooCommerce" plugin.
*/
function wmsc_step_content_review_germanized() {
do_action( 'woocommerce_checkout_before_order_review_heading' );
echo '<h3 id="order_review_heading">' . esc_html__( 'Your order', 'woocommerce' ) . '</h3>';
do_action( 'woocommerce_checkout_before_order_review' );
echo '<div id="order_review" class="woocommerce-checkout-review-order">';
do_action( 'wpmc-woocommerce_order_review' );
if ( function_exists( 'woocommerce_gzd_template_order_submit' ) ) {
woocommerce_gzd_template_order_submit();
}
echo '</div>';
}
}
if ( ! function_exists( 'wmsc_step_content_review_german_market' ) ) {
/**
* The content of the Order Review step for the "German Market" plugin.
*/
function wmsc_step_content_review_german_market() {
do_action( 'woocommerce_checkout_before_order_review_heading' );
echo '<h3 id="order_review_heading">' . esc_html__( 'Your order', 'woocommerce' ) . '</h3>';
do_action( 'woocommerce_checkout_before_order_review' );
echo '<div id="order_review" class="woocommerce-checkout-review-order">';
do_action( 'wpmc-woocommerce_order_review' );
do_action( 'woocommerce_checkout_order_review' );
echo '</div>';
}
}
if ( ! function_exists( 'wmsc_step_content_payment_german_market' ) ) {
/**
* The content of the Order Payment step for the "German Market" plugin.
*/
function wmsc_step_content_payment_german_market() {
echo '<h3 id="payment_heading">' . esc_html__( 'Payment', 'woocommerce' ) . '</h3>';
do_action( 'wpmc-woocommerce_checkout_payment' );
}
}
if ( ! function_exists( 'wpmc_sort_by_position' ) ) {
/**
* Comparison function for sorting the steps.
*
* @param array $a First array.
* @param array $b Second array.
*/
function wpmc_sort_by_position( $a, $b ) {
return $a['position'] - $b['position'];
}
}
if ( ! function_exists( 'wmsc_delete_step_by_category' ) ) {
/**
* Delete a step if one/all products in a category or not in a category.
*
* Use the `wmsc_delete_step_by_category` filter to set up the settings.
*
* @param array $steps The steps array.
*/
function wmsc_delete_step_by_category( $steps ) {
$settings = apply_filters(
'wmsc_delete_step_by_category',
array(
'remove_step' => 'shipping',
'one_product_in_categories' => array(),
'all_products_in_categories' => array(),
'one_product_in_all_except_categories' => array(),
'all_products_in_all_except_categories' => array(),
)
);
extract( $settings );
$cart = WC()->cart->get_cart_contents();
$products = array();
if ( ! is_array( $cart ) || count( $cart ) === 0 ) {
return $steps;
}
foreach ( $cart as $_product ) {
$this_product_in_category = false;
$_cat = get_the_terms( $_product['product_id'], 'product_cat' );
if ( is_array( $_cat ) && count( $_cat ) > 0 ) {
foreach ( $_cat as $__cat ) {
$products[ $_product['product_id'] ][] = $__cat->slug;
}
}
}
if ( count( $products ) === 0 ) {
return $steps;
}
$products_intersect = $products_union = array_shift( $products );
while ( count( $products ) > 0 ) {
$one_product = array_shift( $products );
$products_intersect = array_intersect( $products_intersect, $one_product );
$products_union = array_merge( $products_union, $one_product );
}
if ( count( $one_product_in_categories ) > 0 ) {
foreach ( $one_product_in_categories as $_cat ) {
if ( array_search( $_cat, $products_union, true ) !== false ) {
unset( $steps[ $remove_step ] );
}
}
}
if ( count( $all_products_in_categories ) > 0 ) {
foreach ( $all_products_in_categories as $_cat ) {
if ( array_search( $_cat, $products_intersect, true ) !== false ) {
unset( $steps[ $remove_step ] );
}
}
}
if ( count( $one_product_in_all_except_categories ) > 0 ) {
if ( count( array_intersect( $one_product_in_all_except_categories, $products_union ) ) === 0 ) {
unset( $steps[ $remove_step ] );
}
}
if ( count( $all_products_in_all_except_categories ) > 0 ) {
if ( count( array_intersect( $all_products_in_all_except_categories, $products_intersect ) ) === 0 ) {
unset( $steps[ $remove_step ] );
}
}
return $steps;
}
}
add_filter( 'wpmc_modify_steps', 'wmsc_delete_step_by_category', 30 );

View File

@@ -0,0 +1,140 @@
# Copyright (C) 2017 Multi-Step Checkout for WooCommerce
# This file is distributed under the same license as the Multi-Step Checkout for WooCommerce package.
msgid ""
msgstr ""
"Project-Id-Version: Multi-Step Checkout for WooCommerce 1.2\n"
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/wp-multi-step-"
"checkout\n"
"POT-Creation-Date: 2017-12-05 16:29:28+00:00\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2017-12-05 21:40+0100\n"
"Last-Translator: Diana Burduja <diana@wootips.com>\n"
"Language-Team: \n"
"X-Generator: Poedit 1.6.10\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"Language: de\n"
#: includes/admin-side.php:18
msgid "Main color"
msgstr "Die Hauptfarbe"
#: includes/admin-side.php:19
msgid "Show the \"Back to Cart\" button"
msgstr "\"Zurück zum Warenkorb\" Button anzeigen"
#: includes/admin-side.php:20
msgid "Show the Shipping step"
msgstr "Den Schritt \"Versand\" anzeigen"
#: includes/admin-side.php:21
msgid "Show the Billing and the Shipping steps together"
msgstr "Die Schritte \"Rechnung\" und \"Versand\" kombiniert anzeigen"
#: includes/admin-side.php:22
msgid "Show the Order and the Payment steps together"
msgstr "Die Schritte \"Bestellung\" und \"Zahlung\" kombiniert anzeigen"
#. Plugin Name of the plugin/theme
#: includes/admin-side.php:94
msgid "Multi-Step Checkout for WooCommerce"
msgstr "Multi-Step Checkout for WooCommerce"
#: includes/form-buttons.php:10
msgctxt "Frontend: button label"
msgid "Back to cart"
msgstr "Zurück zum Warenkorb"
#: includes/form-buttons.php:14
msgctxt "Frontend: button label"
msgid "Previous"
msgstr "Zurück"
#: includes/form-buttons.php:15
msgctxt "Frontend: button label"
msgid "Next"
msgstr "Weiter"
#: includes/form-buttons.php:16
msgctxt "Frontend: button label"
msgid "Skip Login"
msgstr "Login überspringen"
#: includes/form-checkout.php:52
msgid ""
"If you have shopped with us before, please enter your details in the boxes "
"below. If you are a new customer, please proceed to the Billing &amp; "
"Shipping section."
msgstr ""
"Wenn du schon einmal bei uns bestellt hast, gib bitte deinen Benutzernamen "
"bzw. E-Mail und dein Passwort ein. Falls du das erste mal bestellst, fülle "
"bitte die Zahlungs- und Versandangaben unten aus."
#: includes/form-checkout.php:61
msgid "You must be logged in to checkout."
msgstr "Bitte melde dich an, um die Bestellung abzuschließen."
#: includes/form-checkout.php:92
msgid "Your order"
msgstr "Deine Bestellung"
#: includes/form-checkout.php:98 includes/form-tabs.php:26
msgid "Payment"
msgstr "Zahlung"
#: includes/form-tabs.php:10
msgid "Login"
msgstr "Login"
#: includes/form-tabs.php:14
msgid "Billing"
msgstr "Rechnung"
#: includes/form-tabs.php:18
msgid "Shipping"
msgstr "Versand"
#: includes/form-tabs.php:22
msgid "Order"
msgstr "Bestellung"
#: includes/form-tabs.php:34
msgid "Billing & Shipping"
msgstr "Rechnung & Versand"
#: includes/form-tabs.php:38
msgid "Order & Payment"
msgstr "Bestellung & Zahlung"
#: wp-multi-step-checkout.php:56 wp-multi-step-checkout.php:63
msgid "Cheatin&#8217; huh?"
msgstr "Cheatin&#8217; huh?"
#: wp-multi-step-checkout.php:210
msgid ""
"The WP Multi-Step Checkout plugin is enabled, but it requires WooCommerce in "
"order to work."
msgstr ""
"Das WP Multi-Step Checkout Plugin is aktiviert, aber es benötigt WooCommerce "
"um zu funktionieren."
#: wp-multi-step-checkout.php:232
msgid "Settings"
msgstr "Einstellungen"
#. Plugin URI of the plugin/theme
msgid "https://wordpress.org/plugins/wp-multi-step-checkout/"
msgstr "https://wordpress.org/plugins/wp-multi-step-checkout/"
#. Description of the plugin/theme
msgid "Nice multi-step checkout for your WooCommerce store"
msgstr ""
#. Author of the plugin/theme
msgid "SilkyPress"
msgstr "SilkyPress"
#. Author URI of the plugin/theme
msgid "https://www.silkypress.com"
msgstr "https://www.silkypress.com"

View File

@@ -0,0 +1,140 @@
# Copyright (C) 2017 Multi-Step Checkout for WooCommerce
# This file is distributed under the same license as the Multi-Step Checkout for WooCommerce package.
msgid ""
msgstr ""
"Project-Id-Version: Multi-Step Checkout for WooCommerce 1.2\n"
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/wp-multi-step-"
"checkout\n"
"POT-Creation-Date: 2017-12-05 16:29:28+00:00\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2017-12-05 21:40+0100\n"
"Last-Translator: Diana Burduja <diana@wootips.com>\n"
"Language-Team: \n"
"X-Generator: Poedit 1.6.10\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"Language: de\n"
#: includes/admin-side.php:18
msgid "Main color"
msgstr "Die Hauptfarbe"
#: includes/admin-side.php:19
msgid "Show the \"Back to Cart\" button"
msgstr "\"Zurück zum Warenkorb\" Button anzeigen"
#: includes/admin-side.php:20
msgid "Show the Shipping step"
msgstr "Den Schritt \"Versand\" anzeigen"
#: includes/admin-side.php:21
msgid "Show the Billing and the Shipping steps together"
msgstr "Die Schritte \"Rechnung\" und \"Versand\" kombiniert anzeigen"
#: includes/admin-side.php:22
msgid "Show the Order and the Payment steps together"
msgstr "Die Schritte \"Bestellung\" und \"Zahlung\" kombiniert anzeigen"
#. Plugin Name of the plugin/theme
#: includes/admin-side.php:94
msgid "Multi-Step Checkout for WooCommerce"
msgstr "Multi-Step Checkout for WooCommerce"
#: includes/form-buttons.php:10
msgctxt "Frontend: button label"
msgid "Back to cart"
msgstr "Zurück zum Warenkorb"
#: includes/form-buttons.php:14
msgctxt "Frontend: button label"
msgid "Previous"
msgstr "Zurück"
#: includes/form-buttons.php:15
msgctxt "Frontend: button label"
msgid "Next"
msgstr "Weiter"
#: includes/form-buttons.php:16
msgctxt "Frontend: button label"
msgid "Skip Login"
msgstr "Login überspringen"
#: includes/form-checkout.php:52
msgid ""
"If you have shopped with us before, please enter your details in the boxes "
"below. If you are a new customer, please proceed to the Billing &amp; "
"Shipping section."
msgstr ""
"Wenn du schon einmal bei uns bestellt hast, gib bitte deinen Benutzernamen "
"bzw. E-Mail und dein Passwort ein. Falls du das erste mal bestellst, fülle "
"bitte die Zahlungs- und Versandangaben unten aus."
#: includes/form-checkout.php:61
msgid "You must be logged in to checkout."
msgstr "Bitte melde dich an, um die Bestellung abzuschließen."
#: includes/form-checkout.php:92
msgid "Your order"
msgstr "Deine Bestellung"
#: includes/form-checkout.php:98 includes/form-tabs.php:26
msgid "Payment"
msgstr "Zahlung"
#: includes/form-tabs.php:10
msgid "Login"
msgstr "Login"
#: includes/form-tabs.php:14
msgid "Billing"
msgstr "Rechnung"
#: includes/form-tabs.php:18
msgid "Shipping"
msgstr "Versand"
#: includes/form-tabs.php:22
msgid "Order"
msgstr "Bestellung"
#: includes/form-tabs.php:34
msgid "Billing & Shipping"
msgstr "Rechnung & Versand"
#: includes/form-tabs.php:38
msgid "Order & Payment"
msgstr "Bestellung & Zahlung"
#: wp-multi-step-checkout.php:56 wp-multi-step-checkout.php:63
msgid "Cheatin&#8217; huh?"
msgstr "Cheatin&#8217; huh?"
#: wp-multi-step-checkout.php:210
msgid ""
"The WP Multi-Step Checkout plugin is enabled, but it requires WooCommerce in "
"order to work."
msgstr ""
"Das WP Multi-Step Checkout Plugin is aktiviert, aber es benötigt WooCommerce "
"um zu funktionieren."
#: wp-multi-step-checkout.php:232
msgid "Settings"
msgstr "Einstellungen"
#. Plugin URI of the plugin/theme
msgid "https://wordpress.org/plugins/wp-multi-step-checkout/"
msgstr "https://wordpress.org/plugins/wp-multi-step-checkout/"
#. Description of the plugin/theme
msgid "Nice multi-step checkout for your WooCommerce store"
msgstr ""
#. Author of the plugin/theme
msgid "SilkyPress"
msgstr "SilkyPress"
#. Author URI of the plugin/theme
msgid "https://www.silkypress.com"
msgstr "https://www.silkypress.com"

View File

@@ -0,0 +1,127 @@
# Translation of Plugins - Multi-Step Checkout for WooCommerce - Development (trunk) in French (France)
# This file is distributed under the same license as the Plugins - Multi-Step Checkout for WooCommerce - Development (trunk) package.
msgid ""
msgstr ""
"PO-Revision-Date: +0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: GlotPress/2.4.0-alpha\n"
"Language: fr\n"
"Project-Id-Version: Plugins - Multi-Step Checkout for WooCommerce - Development (trunk)\n"
#. Author URI of the plugin/theme
msgid "https://www.silkypress.com"
msgstr "https://www.silkypress.com"
#. Author of the plugin/theme
msgid "SilkyPress"
msgstr "SilkyPress"
#. Description of the plugin/theme
msgid "Nice multi-step checkout for your WooCommerce store"
msgstr "Agréable multi-step checkout pour votre boutique WooCommerce"
#. Plugin URI of the plugin/theme
msgid "https://wordpress.org/plugins/wp-multi-step-checkout/"
msgstr "https://wordpress.org/plugins/wp-multi-step-checkout/"
#: wp-multi-step-checkout.php:240
msgid "Settings"
msgstr "Réglages"
#: wp-multi-step-checkout.php:211
msgid "The WP Multi-Step Checkout plugin is enabled, but it requires WooCommerce in order to work."
msgstr "Le plugin WP Multi-Step Checkout est activé, mais il nécessite WooCommerce pour fonctionner."
#: wp-multi-step-checkout.php:56 wp-multi-step-checkout.php:63
msgid "Cheatin&#8217; huh?"
msgstr "Cheatin&#8217; huh?"
#: includes/form-tabs.php:38
msgid "Order & Payment"
msgstr "Commande & Paiement"
#: includes/form-tabs.php:34
msgid "Billing & Shipping"
msgstr "Facturation & Expédition"
#: includes/form-tabs.php:22
msgid "Order"
msgstr "Commande"
#: includes/form-tabs.php:18
msgid "Shipping"
msgstr "Livraison"
#: includes/form-tabs.php:14
msgid "Billing"
msgstr "Facturation"
#: includes/form-tabs.php:10
msgid "Login"
msgstr "Connexion"
#: includes/form-checkout.php:98 includes/form-tabs.php:26
msgid "Payment"
msgstr "Paiement"
#: includes/form-checkout.php:92
msgid "Your order"
msgstr "Votre commande"
#: includes/form-checkout.php:61
msgid "You must be logged in to checkout."
msgstr "Vous devez être identifié pour commander."
#: includes/form-checkout.php:52
msgid "If you have shopped with us before, please enter your details in the boxes below. If you are a new customer, please proceed to the Billing &amp; Shipping section."
msgstr "Si vous avez déjà commandé avec nous auparavant, veuillez saisir vos coordonnées ci-dessous. Si vous êtes un nouveau client, veuillez renseigner la section facturation et livraison."
#: includes/form-buttons.php:16
msgctxt "Frontend: button label"
msgid "Skip Login"
msgstr "Ignorer l'Identification"
#: includes/form-buttons.php:15
msgctxt "Frontend: button label"
msgid "Next"
msgstr "Suivant"
#: includes/form-buttons.php:14
msgctxt "Frontend: button label"
msgid "Previous"
msgstr "Précédent"
#: includes/form-buttons.php:10
msgctxt "Frontend: button label"
msgid "Back to cart"
msgstr "Retour au panier"
#. #-#-#-#-# wp-multi-step-checkout-code.pot (Multi-Step Checkout for WooCommerce
#. 1.3) #-#-#-#-#
#. Plugin Name of the plugin/theme
#: includes/admin-side.php:94
msgid "Multi-Step Checkout for WooCommerce"
msgstr "Multi-Step Checkout for WooCommerce"
#: includes/admin-side.php:22
msgid "Show the Order and the Payment steps together"
msgstr "Afficher ensemble la Commande et les étapes de Paiement"
#: includes/admin-side.php:21
msgid "Show the Billing and the Shipping steps together"
msgstr "Afficher ensemble les étapes de Facturation et d'Expédition"
#: includes/admin-side.php:20
msgid "Show the Shipping step"
msgstr "Afficher l'étape d'Expédition"
#: includes/admin-side.php:19
msgid "Show the \"Back to Cart\" button"
msgstr "Afficher le bouton \"Retour au panier\""
#: includes/admin-side.php:18
msgid "Main color"
msgstr "Couleur principale"

View File

@@ -0,0 +1,127 @@
# Translation of Plugins - Multi-Step Checkout for WooCommerce - Development (trunk) in French (France)
# This file is distributed under the same license as the Plugins - Multi-Step Checkout for WooCommerce - Development (trunk) package.
msgid ""
msgstr ""
"PO-Revision-Date: +0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: GlotPress/2.4.0-alpha\n"
"Language: fr\n"
"Project-Id-Version: Plugins - Multi-Step Checkout for WooCommerce - Development (trunk)\n"
#. Author URI of the plugin/theme
msgid "https://www.silkypress.com"
msgstr "https://www.silkypress.com"
#. Author of the plugin/theme
msgid "SilkyPress"
msgstr "SilkyPress"
#. Description of the plugin/theme
msgid "Nice multi-step checkout for your WooCommerce store"
msgstr "Agréable multi-step checkout pour votre boutique WooCommerce"
#. Plugin URI of the plugin/theme
msgid "https://wordpress.org/plugins/wp-multi-step-checkout/"
msgstr "https://wordpress.org/plugins/wp-multi-step-checkout/"
#: wp-multi-step-checkout.php:240
msgid "Settings"
msgstr "Réglages"
#: wp-multi-step-checkout.php:211
msgid "The WP Multi-Step Checkout plugin is enabled, but it requires WooCommerce in order to work."
msgstr "Le plugin WP Multi-Step Checkout est activé, mais il nécessite WooCommerce pour fonctionner."
#: wp-multi-step-checkout.php:56 wp-multi-step-checkout.php:63
msgid "Cheatin&#8217; huh?"
msgstr "Cheatin&#8217; huh?"
#: includes/form-tabs.php:38
msgid "Order & Payment"
msgstr "Commande & Paiement"
#: includes/form-tabs.php:34
msgid "Billing & Shipping"
msgstr "Facturation & Expédition"
#: includes/form-tabs.php:22
msgid "Order"
msgstr "Commande"
#: includes/form-tabs.php:18
msgid "Shipping"
msgstr "Livraison"
#: includes/form-tabs.php:14
msgid "Billing"
msgstr "Facturation"
#: includes/form-tabs.php:10
msgid "Login"
msgstr "Connexion"
#: includes/form-checkout.php:98 includes/form-tabs.php:26
msgid "Payment"
msgstr "Paiement"
#: includes/form-checkout.php:92
msgid "Your order"
msgstr "Votre commande"
#: includes/form-checkout.php:61
msgid "You must be logged in to checkout."
msgstr "Vous devez être identifié pour commander."
#: includes/form-checkout.php:52
msgid "If you have shopped with us before, please enter your details in the boxes below. If you are a new customer, please proceed to the Billing &amp; Shipping section."
msgstr "Si vous avez déjà commandé avec nous auparavant, veuillez saisir vos coordonnées ci-dessous. Si vous êtes un nouveau client, veuillez renseigner la section facturation et livraison."
#: includes/form-buttons.php:16
msgctxt "Frontend: button label"
msgid "Skip Login"
msgstr "Ignorer l'Identification"
#: includes/form-buttons.php:15
msgctxt "Frontend: button label"
msgid "Next"
msgstr "Suivant"
#: includes/form-buttons.php:14
msgctxt "Frontend: button label"
msgid "Previous"
msgstr "Précédent"
#: includes/form-buttons.php:10
msgctxt "Frontend: button label"
msgid "Back to cart"
msgstr "Retour au panier"
#. #-#-#-#-# wp-multi-step-checkout-code.pot (Multi-Step Checkout for WooCommerce
#. 1.3) #-#-#-#-#
#. Plugin Name of the plugin/theme
#: includes/admin-side.php:94
msgid "Multi-Step Checkout for WooCommerce"
msgstr "Multi-Step Checkout for WooCommerce"
#: includes/admin-side.php:22
msgid "Show the Order and the Payment steps together"
msgstr "Afficher ensemble la Commande et les étapes de Paiement"
#: includes/admin-side.php:21
msgid "Show the Billing and the Shipping steps together"
msgstr "Afficher ensemble les étapes de Facturation et d'Expédition"
#: includes/admin-side.php:20
msgid "Show the Shipping step"
msgstr "Afficher l'étape d'Expédition"
#: includes/admin-side.php:19
msgid "Show the \"Back to Cart\" button"
msgstr "Afficher le bouton \"Retour au panier\""
#: includes/admin-side.php:18
msgid "Main color"
msgstr "Couleur principale"

View File

@@ -0,0 +1,127 @@
# Translation of Plugins - Multi-Step Checkout for WooCommerce - Development (trunk) in French (France)
# This file is distributed under the same license as the Plugins - Multi-Step Checkout for WooCommerce - Development (trunk) package.
msgid ""
msgstr ""
"PO-Revision-Date: +0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: GlotPress/2.4.0-alpha\n"
"Language: fr\n"
"Project-Id-Version: Plugins - Multi-Step Checkout for WooCommerce - Development (trunk)\n"
#. Author URI of the plugin/theme
msgid "https://www.silkypress.com"
msgstr "https://www.silkypress.com"
#. Author of the plugin/theme
msgid "SilkyPress"
msgstr "SilkyPress"
#. Description of the plugin/theme
msgid "Nice multi-step checkout for your WooCommerce store"
msgstr "Agréable multi-step checkout pour votre boutique WooCommerce"
#. Plugin URI of the plugin/theme
msgid "https://wordpress.org/plugins/wp-multi-step-checkout/"
msgstr "https://wordpress.org/plugins/wp-multi-step-checkout/"
#: wp-multi-step-checkout.php:240
msgid "Settings"
msgstr "Réglages"
#: wp-multi-step-checkout.php:211
msgid "The WP Multi-Step Checkout plugin is enabled, but it requires WooCommerce in order to work."
msgstr "Le plugin WP Multi-Step Checkout est activé, mais il nécessite WooCommerce pour fonctionner."
#: wp-multi-step-checkout.php:56 wp-multi-step-checkout.php:63
msgid "Cheatin&#8217; huh?"
msgstr "Cheatin&#8217; huh?"
#: includes/form-tabs.php:38
msgid "Order & Payment"
msgstr "Commande & Paiement"
#: includes/form-tabs.php:34
msgid "Billing & Shipping"
msgstr "Facturation & Expédition"
#: includes/form-tabs.php:22
msgid "Order"
msgstr "Commande"
#: includes/form-tabs.php:18
msgid "Shipping"
msgstr "Livraison"
#: includes/form-tabs.php:14
msgid "Billing"
msgstr "Facturation"
#: includes/form-tabs.php:10
msgid "Login"
msgstr "Connexion"
#: includes/form-checkout.php:98 includes/form-tabs.php:26
msgid "Payment"
msgstr "Paiement"
#: includes/form-checkout.php:92
msgid "Your order"
msgstr "Votre commande"
#: includes/form-checkout.php:61
msgid "You must be logged in to checkout."
msgstr "Vous devez être identifié pour commander."
#: includes/form-checkout.php:52
msgid "If you have shopped with us before, please enter your details in the boxes below. If you are a new customer, please proceed to the Billing &amp; Shipping section."
msgstr "Si vous avez déjà commandé avec nous auparavant, veuillez saisir vos coordonnées ci-dessous. Si vous êtes un nouveau client, veuillez renseigner la section facturation et livraison."
#: includes/form-buttons.php:16
msgctxt "Frontend: button label"
msgid "Skip Login"
msgstr "Ignorer l'Identification"
#: includes/form-buttons.php:15
msgctxt "Frontend: button label"
msgid "Next"
msgstr "Suivant"
#: includes/form-buttons.php:14
msgctxt "Frontend: button label"
msgid "Previous"
msgstr "Précédent"
#: includes/form-buttons.php:10
msgctxt "Frontend: button label"
msgid "Back to cart"
msgstr "Retour au panier"
#. #-#-#-#-# wp-multi-step-checkout-code.pot (Multi-Step Checkout for WooCommerce
#. 1.3) #-#-#-#-#
#. Plugin Name of the plugin/theme
#: includes/admin-side.php:94
msgid "Multi-Step Checkout for WooCommerce"
msgstr "Multi-Step Checkout for WooCommerce"
#: includes/admin-side.php:22
msgid "Show the Order and the Payment steps together"
msgstr "Afficher ensemble la Commande et les étapes de Paiement"
#: includes/admin-side.php:21
msgid "Show the Billing and the Shipping steps together"
msgstr "Afficher ensemble les étapes de Facturation et d'Expédition"
#: includes/admin-side.php:20
msgid "Show the Shipping step"
msgstr "Afficher l'étape d'Expédition"
#: includes/admin-side.php:19
msgid "Show the \"Back to Cart\" button"
msgstr "Afficher le bouton \"Retour au panier\""
#: includes/admin-side.php:18
msgid "Main color"
msgstr "Couleur principale"

View File

@@ -0,0 +1,141 @@
# Copyright (C) 2017 Multi-Step Checkout for WooCommerce
# This file is distributed under the same license as the Multi-Step Checkout for WooCommerce package.
msgid ""
msgstr ""
"Project-Id-Version: Multi-Step Checkout for WooCommerce 1.2\n"
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/wp-multi-step-"
"checkout\n"
"POT-Creation-Date: 2017-12-05 16:29:28+00:00\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2019-01-24 15:00+0100\n"
"Last-Translator: Webmaster Theatergroep Maarssen'32 <webmaster@maarssen32."
"nl>\n"
"Language-Team: Nederlands\n"
"Language: nl_NL\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Poedit 2.2.1\n"
"X-Loco-Version: 2.2.0; wp-5.0.1\n"
#: includes/admin-side.php:18
msgid "Main color"
msgstr "Basis kleur"
#: includes/admin-side.php:19
msgid "Show the \"Back to Cart\" button"
msgstr "Toon de \"terug naar winkelwagententje\" button"
#: includes/admin-side.php:20
msgid "Show the Shipping step"
msgstr "Toon de verzendings stap"
#: includes/admin-side.php:21
msgid "Show the Billing and the Shipping steps together"
msgstr "Toon de Facturatie en Versturen steppen tegelijk"
#: includes/admin-side.php:22
msgid "Show the Order and the Payment steps together"
msgstr "Toon de Bestelling en Betaling stappen tegelijk"
#. Plugin Name of the plugin/theme
#: includes/admin-side.php:94
msgid "Multi-Step Checkout for WooCommerce"
msgstr "Multi-Step Checkout for WooCommerce"
#: includes/form-buttons.php:10
msgctxt "Frontend: button label"
msgid "Back to cart"
msgstr "Terug naar winkelwagen"
#: includes/form-buttons.php:14
msgctxt "Frontend: button label"
msgid "Previous"
msgstr "Vorige"
#: includes/form-buttons.php:15
msgctxt "Frontend: button label"
msgid "Next"
msgstr "Volgende"
#: includes/form-buttons.php:16
msgctxt "Frontend: button label"
msgid "Skip Login"
msgstr "Inloggen overslaan"
#: includes/form-checkout.php:52
msgid ""
"If you have shopped with us before, please enter your details in the boxes "
"below. If you are a new customer, please proceed to the Billing &amp; "
"Shipping section."
msgstr ""
"Als je eerder bij ons hebt gewinkeld, vul dan hieronder je gegevens in. "
"Als je een nieuwe klant bent, ga dan door naar facturering en verzending."
#: includes/form-checkout.php:61
msgid "You must be logged in to checkout."
msgstr "U moet inloggen in de kassa."
#: includes/form-checkout.php:92
msgid "Your order"
msgstr "Uw bestelling"
#: includes/form-checkout.php:98 includes/form-tabs.php:26
msgid "Payment"
msgstr "Betaling"
#: includes/form-tabs.php:10
msgid "Login"
msgstr "Inloggen"
#: includes/form-tabs.php:14
msgid "Billing"
msgstr "Facturering"
#: includes/form-tabs.php:18
msgid "Shipping"
msgstr "Verzending"
#: includes/form-tabs.php:22
msgid "Order"
msgstr "Bestelling"
#: includes/form-tabs.php:34
msgid "Billing & Shipping"
msgstr "Facturering & Versturen"
#: includes/form-tabs.php:38
msgid "Order & Payment"
msgstr "Bestelling & Betaling"
#: wp-multi-step-checkout.php:56 wp-multi-step-checkout.php:63
msgid "Cheatin&#8217; huh?"
msgstr "Valsspelen huh?"
#: wp-multi-step-checkout.php:210
msgid ""
"The WP Multi-Step Checkout plugin is enabled, but it requires WooCommerce in "
"order to work."
msgstr ""
"De WP Multi-Step Checkout-plug-in is ingeschakeld, maar hiervoor is "
"WooCommerce vereist om de plugin te gebruiken"
#: wp-multi-step-checkout.php:232
msgid "Settings"
msgstr "Instellingen"
#. Plugin URI of the plugin/theme
msgid "https://wordpress.org/plugins/wp-multi-step-checkout/"
msgstr "https://wordpress.org/plugins/wp-multi-step-checkout/"
#. Description of the plugin/theme
msgid "Nice multi-step checkout for your WooCommerce store"
msgstr "Leuke Mult-step Kassa voor u WooCommerce winkel"
#. Author of the plugin/theme
msgid "SilkyPress"
msgstr "SilkyPress"
#. Author URI of the plugin/theme
msgid "https://www.silkypress.com"
msgstr "https://wordpress.org/plugins/wp-multi-step-checkout/"

View File

@@ -0,0 +1,133 @@
# Copyright (C) 2017 Multi-Step Checkout for WooCommerce
# This file is distributed under the same license as the Multi-Step Checkout for WooCommerce package.
msgid ""
msgstr ""
"Project-Id-Version: Multi-Step Checkout for WooCommerce 1.2\n"
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/wp-multi-step-"
"checkout\n"
"POT-Creation-Date: 2017-12-05 16:29:28+00:00\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2017-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
#: includes/admin-side.php:18
msgid "Main color"
msgstr ""
#: includes/admin-side.php:19
msgid "Show the \"Back to Cart\" button"
msgstr ""
#: includes/admin-side.php:20
msgid "Show the Shipping step"
msgstr ""
#: includes/admin-side.php:21
msgid "Show the Billing and the Shipping steps together"
msgstr ""
#: includes/admin-side.php:22
msgid "Show the Order and the Payment steps together"
msgstr ""
#. #-#-#-#-# wp-multi-step-checkout.pot (Multi-Step Checkout for WooCommerce 1.2) #-#-#-#-#
#. Plugin Name of the plugin/theme
#: includes/admin-side.php:94
msgid "Multi-Step Checkout for WooCommerce"
msgstr ""
#: includes/form-buttons.php:10
msgctxt "Frontend: button label"
msgid "Back to cart"
msgstr ""
#: includes/form-buttons.php:14
msgctxt "Frontend: button label"
msgid "Previous"
msgstr ""
#: includes/form-buttons.php:15
msgctxt "Frontend: button label"
msgid "Next"
msgstr ""
#: includes/form-buttons.php:16
msgctxt "Frontend: button label"
msgid "Skip Login"
msgstr ""
#: includes/form-checkout.php:52
msgid ""
"If you have shopped with us before, please enter your details in the boxes "
"below. If you are a new customer, please proceed to the Billing &amp; "
"Shipping section."
msgstr ""
#: includes/form-checkout.php:61
msgid "You must be logged in to checkout."
msgstr ""
#: includes/form-checkout.php:92
msgid "Your order"
msgstr ""
#: includes/form-checkout.php:98 includes/form-tabs.php:26
msgid "Payment"
msgstr ""
#: includes/form-tabs.php:10
msgid "Login"
msgstr ""
#: includes/form-tabs.php:14
msgid "Billing"
msgstr ""
#: includes/form-tabs.php:18
msgid "Shipping"
msgstr ""
#: includes/form-tabs.php:22
msgid "Order"
msgstr ""
#: includes/form-tabs.php:34
msgid "Billing & Shipping"
msgstr ""
#: includes/form-tabs.php:38
msgid "Order & Payment"
msgstr ""
#: wp-multi-step-checkout.php:56 wp-multi-step-checkout.php:63
msgid "Cheatin&#8217; huh?"
msgstr ""
#: wp-multi-step-checkout.php:210
msgid ""
"The WP Multi-Step Checkout plugin is enabled, but it requires WooCommerce in "
"order to work."
msgstr ""
#: wp-multi-step-checkout.php:232
msgid "Settings"
msgstr ""
#. Plugin URI of the plugin/theme
msgid "https://wordpress.org/plugins/wp-multi-step-checkout/"
msgstr ""
#. Description of the plugin/theme
msgid "Nice multi-step checkout for your WooCommerce store"
msgstr ""
#. Author of the plugin/theme
msgid "SilkyPress"
msgstr ""
#. Author URI of the plugin/theme
msgid "https://www.silkypress.com"
msgstr ""

View File

@@ -0,0 +1,377 @@
=== Multi-Step Checkout for WooCommerce ===
Created: 30/10/2017
Contributors: diana_burduja
Email: diana@burduja.eu
Tags: multistep checkout, multi-step-checkout, woocommerce, checkout, shop checkout, checkout steps, checkout wizard, checkout style, checkout page
Requires at least: 3.0.1
Tested up to: 6.4
Stable tag: 2.26
License: GPLv3
License URI: http://www.gnu.org/licenses/gpl-3.0.html
Requires PHP: 5.2.4
Change your WooCommerce checkout page with a multi-step checkout page. This will let your customers have a faster and easier checkout process, therefore a better conversion rate for you.
== Description ==
Create a better user experience by splitting the checkout process in several steps. This will also improve your conversion rate.
The plugin was made with the use of the WooCommerce standard templates. This ensure that it should work with most the themes out there. Nevertheless, if you find that something isn't properly working, let us know in the Support forum.
= Features =
* Sleak design
* Mobile friendly
* Responsive layout
* Adjust the main color to your theme
* Inherit the form and buttons design from your theme
* Keyboard navigation
= Available translations =
* German
* French
Tags: multistep checkout, multi-step-checkout, woocommerce, checkout, shop checkout, checkout steps, checkout wizard, checkout style, checkout page
== Installation ==
* From the WP admin panel, click "Plugins" -> "Add new".
* In the browser input box, type "Multi-Step Checkout for WooCommerce".
* Select the "Multi-Step Checkout for WooCommerce" plugin and click "Install".
* Activate the plugin.
OR...
* Download the plugin from this page.
* Save the .zip file to a location on your computer.
* Open the WP admin panel, and click "Plugins" -> "Add new".
* Click "upload".. then browse to the .zip file downloaded from this page.
* Click "Install".. and then "Activate plugin".
OR...
* Download the plugin from this page.
* Extract the .zip file to a location on your computer.
* Use either FTP or your hosts cPanel to gain access to your website file directories.
* Browse to the `wp-content/plugins` directory.
* Upload the extracted `wp-multi-step-checkout` folder to this directory location.
* Open the WP admin panel.. click the "Plugins" page.. and click "Activate" under the newly added "Multi-Step Checkout for WooCommerce" plugin.
== Frequently Asked Questions ==
= Why is the login form missing on the checkout page? =
Make sure to enable the `Display returning customer login reminder on the "Checkout" page` option on the `WP Admin -> WooCommerce -> Settings -> Accounts` page
= Is the plugin GDPR compatible? =
The plugin doesn't add any cookies and it doesn't modify/add/delete any of the form fields. It simply reorganizes the checkout form into steps.
= My checkout page still isn't multi-step, though the plugin is activated =
Make sure to purge the cache from any of the caching plugins, or of reverse proxy services (for example CloudFlare) you're using.
Another possible cause could be that the checkout page isn't using the default [woocommerce_checkout] shortcode. For example, the Elementor Pro checkout element replaces the default [woocommerce_checkout] shortcode with its HTML counterpart. Go to the "WP Admin -> Pages" page, open the checkout page for editing and make sure the [woocommerce_checkout] is present there.
== Screenshots ==
1. Login form
2. Billing
3. Review Order
4. Choose Payment
5. Settings page
6. On mobile devices
== Changelog ==
= 2.26 =
* 10/16/2023
* Fix: Open the Login step when clicking the "Please log in" link in the "Account already registered" message
* Feature: option to place the input fields from the Delivery & Pickup Time Date plugin in a separate step
= 2.25 =
* 06/24/2023
* Compatibility with the Mollie Payments plugin
= 2.24 =
* 05/19/2023
* Fix: missing "next/previous" button with the Elementor Pro checkout widget
* Fix: the Payment section was missing on the Blocksy theme, when the payment is in a separate step
* Fix: use the "default" checkout layout type from the Astra Addon Pro plugin
* Compatibility with the WooCommerce "Custom Order Tables" feature
= 2.23 =
* 02/03/2023
* Fix: add the "woocommerce_checkout_before_order_review" action hook
* Compatibility with the Fastland theme.
= 2.22 =
* 10/05/2022
* Fix: add a "clear: both" element between the step tabs and the validation error messages, so they don't optically overlap
* Fix: the Shipping section was missing on the Blocksy theme
* Feature: option to place the minimum age fields from the Minimum Age for WooCommerce plugin in a separate step
= 2.21 =
* 07/07/2022
* Compatibility with the Botiga theme.
* Feature: add the "wmsc_delete_step_by_category" filter
* Tweak: place the login validation error messages under the step tabs
= 2.20 =
* 04/19/2022
* Fix: no new line was added when the Enter key was hit inside the "Order notes" field.
* Feature: add common customizations to the assets/js/script.js file
= 2.19 =
* 01/04/2022
* Feature: add the "data-current-title" attribute to the steps
* Fix: the Shipping section was missing on the Neve theme
* Fix: the Order section was missing when the Elementor Pro Checkout widget was used on the checkout page
= 2.18 =
* 10/16/2021
* Fix: compatibility with the OceanWP theme
* Fix: the multi-steps weren't loading if the "Fallback Modus" option from the Germanized plugin is enabled.
* Fix: compatibility with the Local Pickup Plus plugin by SkyVerge
= 2.17 =
* 07/29/2021
* Compatibility with the themes by `fuelthemes`
* Fix: move the "woocommerce-notices-wrapper" before the step tabs
* Fix: move the script.min.js file in the footer. This avoids a JS error when the jQuery library is loaded twice. See the support topic: https://wordpress.org/support/topic/javascript-error-197/
* Fix: the select2 was not initialized on the shipping country and shipping state fields
= 2.16 =
* 04/27/2021
* Fix: check if window.location.hash is defined before using it
* Fix: missing steps content when the Avada Builder plugin is active
= 2.15 =
* 03/10/2021
* Tweak: add "wpmc-no-back-to-cart" CSS class
* Fix: correct the "Show the Login step" message
* Fix: increase the priority for the "woocommerce_locate_template" filter
* Tweak: add "btn-color-primary" CSS class to the buttons under the WoodMart theme
= 2.14 =
* 01/14/2021
* Modify the plugin's name from WooCommerce Multi-Step Checkout to Multi-Step Checkout for WooCommerce
= 2.13 =
* 12/07/2020
* Add the "woocommerce_checkout_logged_in_message" filter
* Fix: the Login section was misplaced in the Neve theme
* Fix: replace the $text_domain with a string
* Test with PHP 8.0, WordPress 5.6, WooCommerce 4.8, jQuery 3.5.1
= 2.12 =
* 10/12/2020
* Fix: use "flex-end" instead of "right" for the navigation buttons
* Test with WooCommerce 4.5
= 2.11 =
* 08/16/2020
* Fix: "Your Order" section under the Electro theme
* Test with WooCommerce 4.4
= 2.10 =
* 07/08/2020
* Fix: sale badges were missing on the Astra theme
* Fix: the "prev" and "next" buttons were present on the first and the last step if the theme was declaring a "display: inline-block !important" rule on the buttons
* Fix: add function to load the default WooCommerce template files. Useful for conflicts with some themes.
* Compatibility with the Porto theme
= 2.9.1 =
* 05/05/2020
* Declare compatibility WooCommerce 4.1
= 2.9 =
* 03/12/2020
* Declare compatibility WooCommerce 4.0
* Declare compatibility WordPress 5.4
* Tweak: add `wmsc_buttons_class` filter for the buttons class
= 2.8 =
* 01/30/2020
* Declare compatibility WooCommerce 3.9
* Fix: "prev" or "next" button wouldn't hide when necessary on theRetailer theme
= 2.7 =
* 12/31/2019
* Tweak: write navigation buttons with "flex" for a better responsible design
= 2.6 =
* 12/11/2019
* Fix: add CSS rule for a one-step checkout wizard
* Fix: use "self" instead of "this" in the "wpmc_switch_tab" JS hook
* Fix: the coupon was showing on the Payment step instead of the Order step on the Bridge theme
= 2.5.1 =
* 11/05/2019
* Fix: product titles disappeared from the product category pages on the Astra theme
= 2.5 =
* 10/31/2019
* Fix: the "Your Order" section on Avada theme was hidden
* Fix: the "Shipping" section on the Astra theme was missing
* Fix: The "Your Order" section on the Shopper theme was not full width
* Tweak: add an element with "clear:both" after the buttons, so they don't get covered with the next element
* Fix: the steps don't scroll up to the top on the Flatsome theme because of the sticky menu
= 2.4 =
* 10/01/2019
* Feature: when opening the /checkout/ page, open a specific tab with the #step-1 URL hash
* Fix: if "Ship to a different address?" not selected, don't switch tab to Shipping when an error is found
* Fix: don't show server-side errors on the login step
= 2.3 =
* 07/14/2019
* Change steps order for RTL language websites
* Fix: compatibility with the SendCloud plugin
* Fix: add the `woocommerce_checkout_after_customer_details` hook also when the Shipping step is removed
= 2.2 =
* 06/06/2019
* Fix: the legal terms were showing twice with WooCommerce Germanized
= 2.1 =
* 05/30/2019
* Fix: the coupon form was not showing up
* Show warning about an option in the German Market plugin
= 2.0 =
* 05/24/2019
* Warning: plugin incompatible with the Suki theme
* Code refactory so to allow programatically to add/remove/modify steps
= 1.20 =
* 05/08/2019
* Fix small issues with the WooCommerce Germanized plugin
* Declare compatibility with WordPress 5.2
= 1.19 =
* 04/27/2019
* Feature: compatibility with the WooCommerce Points and Rewards plugin
* Declare compatibility with WooCommerce 3.6
* Tweak: update the Bootstrap library used in the admin side to 3.4.1 version
= 1.18 =
* 04/12/2019
* Fix: the "Your Order" section is squished in half a column on the Storefront theme
* Fix: don't toggle the coupon form on the Avada theme
* Fix: remove constantly loading icon from the Zass theme
= 1.17 =
* 02/24/2019
* Feature: add the "wpmc_before_switching_tab" and "wpmc_after_switching_tab" JavaScript triggers to the ".woocommerce-checkout" element
* Fix: design error with WooCommerce Germanized and "Order & Payment" steps together
* Fix: small design fixes for the Avada theme
* Admin notice for "WooCommerce One Page Checkout" option for Avada theme
= 1.16.2 =
* 02/18/2019
* Fix: PHP warnings when WooCommerce Germanized isn't installed
= 1.16.1 =
* 02/17/2019
* Fix: use the available strings from WooCommerce Germanized so the translation doesn't break
= 1.16 =
* 02/14/2019
* Fix: input fields for the Square payment gateway were too small
* Fix: "load_text_domain" is loaded now in the "init" hook
* Fix: the steps were shown over the header if the header was transparent
* Fix: adjust the checkout form template for the Avada theme
* Fix: with Visual Composer the "next" and "previous" buttons weren't clickable on iPhone
* Fix: spelling errors in the nl_NL translation
* Compatibility with the WooCommerce Germanized plugin
= 1.15 =
* 12/27/2018
* Tweak: show a warning about the "Multi-Step Checkout" option for the OceanWP theme
* Compatibility with the WooCommerce Social Login plugin from SkyVerge
* Add nl_NL, nl_BE, fr_CA, fr_BE, de_CH languages
* Feature: option for the sign between two united steps. For example "Billing & Shipping"
= 1.14 =
* 12/04/2018
* Fix: set "padding:0" to the steps in order to normalize to all the themes
* Fix: the "WooCommerce not installed" message was showing up even if WooCommerce was installed
* Fix: small design changes for the Flatsome, Enfold and Bridge themes
* Fix: load the CSS and JS assets only on the checkout page
= 1.13 =
* 10/03/2018
* remove PHP notice when WPML option isn't enabled
= 1.12 =
* 09/06/2018
* New: the plugin is multi-language ready
= 1.11 =
* 07/28/2018
* Fix: warning for sizeof() in PHP >= 7.2
* Fix: rename the CSS enqueue identifier
* Tweak: rename the "Cheating huh?" error message
= 1.10 =
* 06/25/2018
* Fix: PHP notice for WooCommerce older than 3.0
* Fix: message in login form wasn't translated
= 1.9 =
* 05/21/2018
* Change: add instructions on how to remove the login form
* Fix: add the `woocommerce_before_checkout_form` filter even when the login form is missing
* Compatibility with the Avada theme
* Tweak: for Divi theme add the left arrow for the "Back to cart" and "Previous" button
= 1.8 =
* 03/31/2018
* Tweak: add minified versions for CSS and JS files
* Fix: unblock the form after removing the .processing CSS class
* Fix: hide the next/previous buttons on the Retailer theme
= 1.7 =
* 02/07/2018
* Fix: keyboard navigation on Safari/Chrome
* Fix: correct Settings link on the Plugins page
* Fix: option for enabling the keyboard navigation
= 1.6 =
* 01/19/2018
* Fix: center the tabs for wider screens
* Fix: show the "Have a coupon?" form from WooCommerce
= 1.5 =
* 01/18/2018
* Fix: for logged in users show the "Next" button and not the "Skip Login" button
= 1.4 =
* 12/18/2017
* Feature: allow to change the text on Steps and Buttons
* Tweak: change the settings page appearance
* Fix: change the "Back to Cart" tag from <a> to <button> in order to keep the theme's styling
* Add French translation
= 1.3 =
* 12/05/2017
* Add "language" folder and prepare the plugin for internationalization
* Add German translation
= 1.2 =
* 11/20/2017
* Fix: the steps were collapsing on mobile
* Fix: arrange the buttons in a row on mobile
= 1.1 =
* 11/09/2017
* Add a Settings page and screenshots
* Feature: scroll the page up when moving to another step and the tabs are out of the viewport
= 1.0 =
* 10/30/2017
* Initial commit
== Upgrade Notice ==
Nothing at the moment

View File

@@ -0,0 +1,206 @@
h2 a:hover,
h3 a.nav-tab:hover {
text-decoration: none
}
@font-face {
font-family: Raleway;
font-style: normal;
font-weight: 400;
src: local('Raleway'), local('Raleway-Regular'), url(https://fonts.gstatic.com/s/raleway/v11/0dTEPzkLWceF7z0koJaX1A.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000
}
.form-table th { width: 400px; }
.btn-group > .btn.active,
.input-group .form-control {
z-index: auto
}
body {
font-family: "Open Sans", sans-serif;
background-color: #f1f1f1
}
.container_title,
.steps,
h2,
label {
font-family: Raleway
}
.wrap {
float: left;
width: 70%;
margin-right: 3%
}
h2 {
font-weight: 400
}
.btn-icon {
height: 50px
}
.control-label {
text-align: right;
padding: 15px 10px 10px 0;
height: 50px
}
.margin-10 {
margin-top: 10px
}
.icon-style-rect-1 .ndd-icon-main-element {
width: 44px;
height: 44px;
border-radius: 8px;
background: rgba(0, 0, 0, .2)
}
input[type=color] {
padding: 0;
width: 50px
}
.tab-pane {
width: 90%;
padding-top: 10px
}
.input-group {
width: 200px;
margin-top: 5px;
}
.btn-group-no-margin {
margin-left: -15px!important
}
input[type=checkbox] {
margin-top: 0
}
.tooltip-inner {
width: 150px;
background-color: #000;
opacity: .8
}
.tooltip-arrow {
opacity: .8
}
.panel-default {
margin-top: 8px
}
#right_column_metaboxes {
width: 25%;
float: left;
margin-top: 70px
}
.main_container {
background-color: #fff;
margin-bottom: 20px;
border: 1px solid #ddd;
border-radius: 5px;
box-shadow: 0 2px 1px -1px #ccc
}
.container_title {
border-radius: 5px 5px 0 0;
background: #474747
}
h3 {
margin-top: 0!important;
padding: 16px 16px 16px 20px;
text-align: center;
color: #fff;
font-size: 1.3em;
margin: 1em 0
}
.form-horizontal .form-group {
margin-left: 0;
margin-right: 0;
}
h2 {
font-size: 26px!important
}
h2 a {
color: #23282d
}
h2 a:hover {
color: #0073aa
}
h2 img {
margin-bottom: 4px
}
h3 .nav-tab {
font-size: 14px;
line-height: 22px;
padding: 10px 15px;
border-radius: 4px 4px 0 0;
font-weight: 400
}
.form-table th {
font-weight: normal;
text-align: right;
}
a.nav-tab:focus,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:active { outline: none; -webkit-box-shadow: none;box-shadow: none;text-decoration: none;}
#wpbody-content .metabox-holder p,
.steps,
label {
font-size: 15px
}
.form-horizontal {
padding: 20px
}
.form-horizontal .form-group {
margin-left: 0;
margin-right: 0
}
.form-group.disabled label,
.form-group.disabled-short label {
color: grey
}
#demo {
border: 1px solid #ccc
}
.steps {
margin-bottom: 4px
}
.steps .steps_nr {
font-weight: 700;
padding-right: 8px;
color: #EF3D4A
}
.dashicons-yes {
color: green
}
.image_zoom_promo {
background-color: #bc1117;
border: 5px double #fff;
text-align: center;
margin: 5px auto;
width: 96%;
border-radius: 10px;
opacity: 1!important
}
.input-group.input-group-checkbox {
width: 20px
}
.form-horizontal {
float: left;
width: 100%
}
label {
font-weight: 400
}
.tooltip-inner {
width:150px;
}
#alert_messages {
width: 100%;
float: left;
}
.form-group > .col-sm-7 {
padding-left: 0;
}
.form-group .input-group-text {
width: auto;
}
input[type="checkbox"] {
width: 1.4rem;
height: 1.4rem;
border-radius: 0;
line-height: 2rem;
padding-left: 0.1rem !important;
}

View File

@@ -0,0 +1,268 @@
/* prefixed by https://autoprefixer.github.io (PostCSS: v7.0.23, autoprefixer: v9.7.3) */
.wpmc-tabs-wrapper {
width: 100%;
display: block;
margin: 0 auto;
}
.wpmc-tabs-wrapper .wpmc-tabs-list {
background: #f9f9f9;
margin: 0;
padding: 0 !important;
}
.wpmc-tabs-wrapper .wpmc-tab-item {
font-size: 13px !important;
line-height: 13px !important;
text-align: center;
text-transform: uppercase;
position: relative;
display: table-cell;
float: left;
padding-top: 0px;
padding-bottom: 47px;
-webkit-transition: all 0.3s ease 0s;
-o-transition: all 0.3s ease 0s;
transition: all 0.3s ease 0s;
width: 25%;
margin-left: 0;
margin-right: 0;
}
.wpmc-1-tabs .wpmc-tab-item {
width: 100%;
}
.wpmc-tabs-list.wpmc-2-tabs .wpmc-tab-item {
width: 50%;
}
.wpmc-tabs-list.wpmc-3-tabs .wpmc-tab-item {
width: 33%;
}
.wpmc-tabs-list.wpmc-4-tabs .wpmc-tab-item {
width: 25%;
}
.wpmc-tabs-list.wpmc-5-tabs .wpmc-tab-item {
width: 20%;
}
.wpmc-tabs-list.wpmc-6-tabs .wpmc-tab-item {
width: 16.6%;
}
.wpmc-tabs-wrapper .wpmc-tab-item:before {
display: block;
content: "";
border-bottom: 2px solid transparent;
height: 0;
position: absolute;
top: 0px;
left: 0;
right: 0;
-webkit-transition: border-color 0.3s;
-o-transition: border-color 0.3s;
transition: border-color 0.3s;
}
.wpmc-tabs-wrapper .wpmc-tab-item .wpmc-tab-number {
display: inline-block;
line-height: 28px;
text-align: center;
vertical-align: middle;
width: 30px;
min-width: 30px;
min-height: 30px;
height: 30px;
margin-top: -14px;
color: #999;
background: #fff;
border-radius: 50%;
position: relative;
-webkit-transition: color 0.3s, background 0.3s;
-o-transition: color 0.3s, background 0.3s;
transition: color 0.3s, background 0.3s;
font-size: 16px;
font-weight: 400;
font-family: Arial, Helvetica, sans-serif;
}
.wpmc-tabs-wrapper .wpmc-tab-item .number-text {
-webkit-transition: color 0.3s;
-o-transition: color 0.3s;
transition: color 0.3s;
}
.wpmc-tabs-wrapper .wpmc-tab-text {
display: none;
font-size: 13px;
line-height: 1.25;
font-weight: normal;
letter-spacing: 0.3px;
text-transform: capitalize;
padding-top: 8px;
white-space: nowrap;
position: absolute;
top: 15px;
width: 100%;
text-align: center;
}
.wpmc-tab-item:first-child .wpmc-tab-text {
position: absolute;
}
.wpmc-tab-item:last-child .wpmc-tab-text {
position: absolute;
left: auto;
-webkit-transform: translate(0,0);
-ms-transform: translate(0,0);
transform: translate(0,0);
}
@media screen and (min-width: 767px) {
.wpmc-tabs-wrapper .wpmc-tabs-list {
display: block;
}
.wpmc-tabs-wrapper .wpmc-tab-item {
display: block;
vertical-align: top;
padding-bottom: 20px;
}
.wpmc-tabs-wrapper .wpmc-tab-item .wpmc-tab-text {
display: block;
position: relative;
top: auto;
left: auto;
right: auto;
}
.wpmc-tabs-wrapper .wpmc-tab-item .wpmc-tab-number {
margin-top: -14px;
}
}
@media screen and (min-width: 1200px) {
.wpmc-tabs-wrapper .wpmc-tab-text {
font-size: 13px;
}
}
.wpmc-tabs-wrapper .wpmc-nav-text {
color: #555;
}
.wpmc-tabs-wrapper .wpmc-nav-text a {
color: #e23636;
}
.wpmc-tabs-wrapper .wpmc-nav-text,
.wpmc-tabs-wrapper .wpmc-nav-buttons {
border-color: #d9d9d9;
}
.woocommerce-checkout .wpmc-tabs-wrapper form label.error {
color: #e23636 !important;
}
.wpmc-tabs-wrapper .wpmc-tabs-list {
font-weight: 600;
}
.wpmc-tabs-wrapper .wpmc-tab-item {
color: #aaa;
}
.wpmc-tabs-wrapper .wpmc-tab-item .wpmc-tab-number {
color: #000;
background: #fff;
border: 1px solid #ccc;
}
.wpmc-tabs-wrapper .wpmc-tab-item.current {
color: #000;
}
.wpmc-tabs-wrapper .wpmc-tab-item.current .wpmc-tab-number {
color: #000;
background: #fff;
border: 2px solid #ccc;
}
.wpmc-tabs-wrapper .wpmc-tab-item.current .wpmc-tab-text {
display: block;
}
.wpmc-tabs-wrapper .wpmc-tab-item:before {
border-bottom-color: #c9c9c9;
}
.wpmc-tabs-wrapper .wpmc-tab-item.visited:before {
border-bottom-color: #000;
}
.wpmc-tabs-wrapper .wpmc-tab-item .number-text {
top: 1px;
}
.wpmc-tabs-wrapper .tab-completed-icon {
top: 2px;
}
.wpmc-nav-wrapper {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: end;
-ms-flex-pack: end;
justify-content: flex-end;
margin-top: 1em;
width: calc( 100% + 4px );
clear: both;
}
button#wpmc-back-to-cart, .wpmc-no-back-to-cart #wpmc-prev {
margin-right: auto;
}
.wpmc-nav-wrapper button.wpmc-nav-button {
margin-right: 2px !important;
margin-left: 2px !important;
}
.wpmc-nav-wrapper button#wpmc-prev, .wpmc-nav-wrapper button#wpmc-next, .wpmc-nav-wrapper button#wpmc-skip-login {
display: none !important;
}
.wpmc-nav-wrapper button#wpmc-prev.current, .wpmc-nav-wrapper button#wpmc-next.current, .wpmc-nav-wrapper button#wpmc-skip-login.current {
display: inline-block !important;
}
.wpmc-step-item {
display: none !important;
}
.wpmc-step-item.current {
display: block !important;
}
.woocommerce-checkout form.login .wc-social-login {
display: block !important;
}
.wpmc-step-item #order_review,
.wpmc-step-item #order_review_heading {
width: 100% !important;
}
@-moz-document url-prefix() {
.sq-input {
height: 60px !important;
}
}

View File

@@ -0,0 +1 @@
.wpmc-tabs-wrapper{width:100%;display:block;margin:0 auto}.wpmc-tabs-wrapper .wpmc-tabs-list{background:#f9f9f9;margin:0;padding:0 !important}.wpmc-tabs-wrapper .wpmc-tab-item{font-size:13px !important;line-height:13px !important;text-align:center;text-transform:uppercase;position:relative;display:table-cell;float:left;padding-top:0;padding-bottom:47px;-webkit-transition:all .3s ease 0s;-o-transition:all .3s ease 0s;transition:all .3s ease 0s;width:25%;margin-left:0;margin-right:0}.wpmc-1-tabs .wpmc-tab-item{width:100%}.wpmc-tabs-list.wpmc-2-tabs .wpmc-tab-item{width:50%}.wpmc-tabs-list.wpmc-3-tabs .wpmc-tab-item{width:33%}.wpmc-tabs-list.wpmc-4-tabs .wpmc-tab-item{width:25%}.wpmc-tabs-list.wpmc-5-tabs .wpmc-tab-item{width:20%}.wpmc-tabs-list.wpmc-6-tabs .wpmc-tab-item{width:16.6%}.wpmc-tabs-wrapper .wpmc-tab-item:before{display:block;content:"";border-bottom:2px solid transparent;height:0;position:absolute;top:0;left:0;right:0;-webkit-transition:border-color .3s;-o-transition:border-color .3s;transition:border-color .3s}.wpmc-tabs-wrapper .wpmc-tab-item .wpmc-tab-number{display:inline-block;line-height:28px;text-align:center;vertical-align:middle;width:30px;min-width:30px;min-height:30px;height:30px;margin-top:-14px;color:#999;background:#fff;border-radius:50%;position:relative;-webkit-transition:color .3s,background .3s;-o-transition:color .3s,background .3s;transition:color .3s,background .3s;font-size:16px;font-weight:400;font-family:Arial,Helvetica,sans-serif}.wpmc-tabs-wrapper .wpmc-tab-item .number-text{-webkit-transition:color .3s;-o-transition:color .3s;transition:color .3s}.wpmc-tabs-wrapper .wpmc-tab-text{display:none;font-size:13px;line-height:1.25;font-weight:normal;letter-spacing:.3px;text-transform:capitalize;padding-top:8px;white-space:nowrap;position:absolute;top:15px;width:100%;text-align:center}.wpmc-tab-item:first-child .wpmc-tab-text{position:absolute}.wpmc-tab-item:last-child .wpmc-tab-text{position:absolute;left:auto;-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}@media screen and (min-width:767px){.wpmc-tabs-wrapper .wpmc-tabs-list{display:block}.wpmc-tabs-wrapper .wpmc-tab-item{display:block;vertical-align:top;padding-bottom:20px}.wpmc-tabs-wrapper .wpmc-tab-item .wpmc-tab-text{display:block;position:relative;top:auto;left:auto;right:auto}.wpmc-tabs-wrapper .wpmc-tab-item .wpmc-tab-number{margin-top:-14px}}@media screen and (min-width:1200px){.wpmc-tabs-wrapper .wpmc-tab-text{font-size:13px}}.wpmc-tabs-wrapper .wpmc-nav-text{color:#555}.wpmc-tabs-wrapper .wpmc-nav-text a{color:#e23636}.wpmc-tabs-wrapper .wpmc-nav-text,.wpmc-tabs-wrapper .wpmc-nav-buttons{border-color:#d9d9d9}.woocommerce-checkout .wpmc-tabs-wrapper form label.error{color:#e23636 !important}.wpmc-tabs-wrapper .wpmc-tabs-list{font-weight:600}.wpmc-tabs-wrapper .wpmc-tab-item{color:#aaa}.wpmc-tabs-wrapper .wpmc-tab-item .wpmc-tab-number{color:#000;background:#fff;border:1px solid #ccc}.wpmc-tabs-wrapper .wpmc-tab-item.current{color:#000}.wpmc-tabs-wrapper .wpmc-tab-item.current .wpmc-tab-number{color:#000;background:#fff;border:2px solid #ccc}.wpmc-tabs-wrapper .wpmc-tab-item.current .wpmc-tab-text{display:block}.wpmc-tabs-wrapper .wpmc-tab-item:before{border-bottom-color:#c9c9c9}.wpmc-tabs-wrapper .wpmc-tab-item.visited:before{border-bottom-color:#000}.wpmc-tabs-wrapper .wpmc-tab-item .number-text{top:1px}.wpmc-tabs-wrapper .tab-completed-icon{top:2px}.wpmc-nav-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;margin-top:1em;width:calc(100% + 4px);clear:both}button#wpmc-back-to-cart,.wpmc-no-back-to-cart #wpmc-prev{margin-right:auto}.wpmc-nav-wrapper button.wpmc-nav-button{margin-right:2px !important;margin-left:2px !important}.wpmc-nav-wrapper button#wpmc-prev,.wpmc-nav-wrapper button#wpmc-next,.wpmc-nav-wrapper button#wpmc-skip-login{display:none !important}.wpmc-nav-wrapper button#wpmc-prev.current,.wpmc-nav-wrapper button#wpmc-next.current,.wpmc-nav-wrapper button#wpmc-skip-login.current{display:inline-block !important}.wpmc-step-item{display:none !important}.wpmc-step-item.current{display:block !important}.woocommerce-checkout form.login .wc-social-login{display:block !important}.wpmc-step-item #order_review,.wpmc-step-item #order_review_heading{width:100% !important}@-moz-document url-prefix(){.sq-input{height:60px !important}}

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
viewBox="0 0 24 24"
version="1.1"
id="svg1033"
inkscape:version="0.92.3 (2405546, 2018-03-11)"
sodipodi:docname="checkout-cart.svg">
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-273)">
<g
style="fill:#ffffff"
id="g3086"
transform="matrix(0.03767392,0,0,0.03767392,0.46573382,273.46571)">
<g
style="fill:#ffffff"
id="g3088">
<g
style="fill:#ffffff"
id="g3090">
<path
id="path3092"
d="M 187.57,359.458 H 548.465 L 612.321,131.524 H 518.348 L 484.608,27.304 343.9,72.916 l 19.244,58.608 h -6.623 l -34.74,-104.22 -140.709,45.612 19.244,58.608 H 125.088 L 109.468,69.042 C 101.595,37.801 74.353,15.683 42.987,15.683 H 0 V 41.8 h 42.987 c 19.494,0 36.489,12.996 41.738,32.616 l 69.105,270.421 c -14.246,10.247 -23.618,26.992 -23.618,46.112 0,31.241 26.117,57.358 57.358,57.358 H 539.343 V 422.19 H 187.57 c -16.995,0 -31.241,-14.371 -31.241,-31.241 0.001,-17.12 14.371,-31.491 31.241,-31.491 z M 467.739,59.795 491.232,130.15 H 389.637 L 375.266,89.787 Z m -162.828,0 23.493,70.355 H 226.809 L 212.438,89.787 Z m 273.546,96.472 -49.486,177.199 H 177.198 L 131.586,156.268 Z"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
id="path3094"
d="m 424.751,487.171 c -29.991,0 -54.734,24.743 -54.734,54.734 0,29.991 24.743,54.734 54.734,54.734 31.241,0 54.734,-24.743 54.734,-54.734 10e-4,-29.991 -24.742,-54.734 -54.734,-54.734 z m 0,84.725 c -16.995,0 -29.991,-14.371 -29.991,-29.991 0,-16.995 14.371,-29.991 29.991,-29.991 16.995,0 29.991,12.996 29.991,29.991 10e-4,16.995 -14.37,29.991 -29.991,29.991 z"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
id="path3096"
d="m 224.06,487.171 c -29.991,0 -54.734,24.743 -54.734,54.734 0,29.991 24.743,54.734 54.734,54.734 29.991,0 54.734,-24.743 54.734,-54.734 0,-29.991 -24.743,-54.734 -54.734,-54.734 z m 0,84.725 c -16.995,0 -29.991,-14.371 -29.991,-29.991 0,-16.995 14.371,-29.991 29.991,-29.991 15.62,0 29.991,12.996 29.991,29.991 0,16.995 -14.371,29.991 -29.991,29.991 z"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

View File

@@ -0,0 +1,59 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg2"
height="14"
width="14"
version="1.0"
inkscape:version="0.48.3.1 r9886"
sodipodi:docname="question_mark.svg">
<metadata
id="metadata10">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1094"
inkscape:window-height="675"
id="namedview6"
showgrid="false"
inkscape:zoom="19.47"
inkscape:cx="11.241964"
inkscape:cy="1.3867488"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg2" />
<g
id="layer1"
transform="matrix(0.05392912,0,0,0.05598356,1.607088,1.401644)">
<path
id="path2413"
d="M 100,0 C 44.8,0 0,44.8 0,100 0,155.2 44.8,200 100,200 155.2,200 200,155.2 200,100 200,44.8 155.2,0 100,0 z m 0,12.812 c 48.13,0 87.19,39.058 87.19,87.188 0,48.13 -39.06,87.19 -87.19,87.19 C 51.87,187.19 12.812,148.13 12.812,100 12.812,51.87 51.87,12.812 100,12.812 z m 1.47,21.25 c -5.45,0.03 -10.653,0.737 -15.282,2.063 -4.699,1.346 -9.126,3.484 -12.876,6.219 -3.238,2.362 -6.333,5.391 -8.687,8.531 -4.159,5.549 -6.461,11.651 -7.063,18.687 -0.04,0.468 -0.07,0.868 -0.062,0.876 0.016,0.016 21.702,2.687 21.812,2.687 0.053,0 0.113,-0.234 0.282,-0.937 1.941,-8.085 5.486,-13.521 10.968,-16.813 4.32,-2.594 9.808,-3.612 15.778,-2.969 2.74,0.295 5.21,0.96 7.38,2 2.71,1.301 5.18,3.361 6.94,5.813 1.54,2.156 2.46,4.584 2.75,7.312 0.08,0.759 0.05,2.48 -0.03,3.219 -0.23,1.826 -0.7,3.378 -1.5,4.969 -0.81,1.597 -1.48,2.514 -2.76,3.812 -2.03,2.077 -5.18,4.829 -10.78,9.407 -3.6,2.944 -6.04,5.156 -8.12,7.343 -4.943,5.179 -7.191,9.069 -8.564,14.719 -0.905,3.72 -1.256,7.55 -1.156,13.19 0.025,1.4 0.062,2.73 0.062,2.97 v 0.43 h 21.598 l 0.03,-2.4 c 0.03,-3.27 0.21,-5.37 0.56,-7.41 0.57,-3.27 1.43,-5 3.94,-7.81 1.6,-1.8 3.7,-3.76 6.93,-6.47 4.77,-3.991 8.11,-6.99 11.26,-10.125 4.91,-4.907 7.46,-8.26 9.28,-12.187 1.43,-3.092 2.22,-6.166 2.46,-9.532 0.06,-0.816 0.07,-3.03 0,-3.968 -0.45,-7.043 -3.1,-13.253 -8.15,-19.032 -0.8,-0.909 -2.78,-2.887 -3.72,-3.718 -4.96,-4.394 -10.69,-7.353 -17.56,-9.094 -4.19,-1.062 -8.23,-1.6 -13.35,-1.75 -0.78,-0.023 -1.59,-0.036 -2.37,-0.032 z m -10.908,103.6 v 22 h 21.998 v -22 H 90.562 z"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 860 B

View File

@@ -0,0 +1,16 @@
jQuery(document).ready(function( $ ){
$('#wpmc-main_color').wpColorPicker();
$('[data-toggle="tooltip"]').tooltip();
toggle_wpml();
$('#t_wpml').on( 'change', toggle_wpml );
function toggle_wpml() {
var all_text = '#t_login, #t_billing, #t_shipping, #t_order, #t_payment, #t_back_to_cart, #t_skip_login, #t_previous, #t_next';
if ($('#t_wpml').is(':checked') ) {
$(all_text).prop('disabled', true);
} else {
$(all_text).prop('disabled', false);
}
}
});

View File

@@ -0,0 +1,306 @@
jQuery(window).ready(function($){
"use strict";
var wpmc_checkout = {
$tabs : $( '.wpmc-tab-item' ),
$sections : $( '.wpmc-step-item' ),
$buttons : $( '.wpmc-nav-button' ),
$checkout_form : $( 'form.woocommerce-checkout' ),
$coupon_form : $( '#checkout_coupon' ),
$before_form : $( '#woocommerce_before_checkout_form' ),
current_step : $( 'ul.wpmc-tabs-list' ).data( 'current-title' ),
init: function() {
var self = this;
// add the "wpmc_switch_tab" trigger
$( '.woocommerce-checkout' ).on( 'wpmc_switch_tab', function( event, theIndex) {
self.switch_tab( theIndex );
});
$( '.wpmc-step-item:first' ).addClass( 'current' );
// Click on "next" button
$( '#wpmc-next, #wpmc-skip-login').on( 'click', function() {
self.switch_tab( self.current_index() + 1);
});
// Click on "previous" button
$( '#wpmc-prev' ).on( 'click', function() {
self.switch_tab( self.current_index() - 1);
});
// After submit, switch tabs where the invalid fields are
$( document ).on( 'checkout_error', function() {
if ( ! $( '#createaccount' ).is( ':checked') ) {
$( '#account_password_field, #account_username_field' ).removeClass( 'woocommerce-invalid-required-field' );
}
if ( ! $( '#ship-to-different-address-checkbox' ).is( ':checked' ) ) {
$( '.woocommerce-shipping-fields__field-wrapper p' ).removeClass( 'woocommerce-invalid-required-field' );
}
var section_class = $( '.woocommerce-invalid-required-field' ).closest( '.wpmc-step-item' ).attr( 'class' );
$( '.wpmc-step-item' ).each( function( i ) {
if ( $( this ).attr( 'class' ) === section_class ) {
self.switch_tab(i)
}
})
});
// Compatibility with Super Socializer
if ( $( '.the_champ_sharing_container' ).length > 0 ) {
$( '.the_champ_sharing_container' ).insertAfter( $( this ).parent().find( '#checkout_coupon' ) );
}
// Prevent form submission on Enter
$( '.woocommerce-checkout' ).on( 'keydown', function( e ) {
if ( e.which === 13 && ! $('.woocommerce-checkout textarea').is(':focus') ) {
e.preventDefault();
return false;
}
});
// "Back to Cart" button
$( '#wpmc-back-to-cart' ).on( 'click', function() {
window.location.href = $( this ).data( 'href' );
});
// Switch tabs with <- and -> keyboard arrows
if ( WPMC.keyboard_nav === '1' ) {
$( document ).on( 'keydown', function ( e ) {
var key = e.charCode ? e.charCode : e.keyCode ? e.keyCode : 0;
if ( key === 39 ) {
self.switch_tab( self.current_index() + 1 );
}
if ( key === 37 ) {
self.switch_tab( self.current_index() - 1 );
}
});
}
// Change tab if the hash #step-0 is present in the URL
if ( typeof window.location.hash != 'undefined' && window.location.hash ) {
changeTabOnHash( window.location.hash );
}
$( window ).on( 'hashchange', function() {
changeTabOnHash( window.location.hash )
} );
function changeTabOnHash( hash ) {
if ( /step-[0-9]/.test( hash ) ) {
var step = hash.match( /step-([0-9])/ )[1];
self.switch_tab( step );
}
}
// select2
if ( typeof $(this).selectWoo !== 'undefined' ) {
self.wc_country_select_select2();
$( document.body ).on( 'country_to_state_changed', function() {
self.wc_country_select_select2();
});
}
// "Please log in" link.
$( document.body ).on( 'click', 'a.showlogin-wmsc', function(e) {
e.preventDefault();
self.switch_tab( 0 );
});
// customizations
self.customizations();
},
current_index: function() {
return this.$sections.index( this.$sections.filter( '.current' ) );
},
scroll_top: function() {
// scroll to top
if ( $( '.wpmc-tabs-wrapper' ).length === 0 ) {
return;
}
var diff = $( '.wpmc-tabs-wrapper' ).offset().top - $( window ).scrollTop();
var scroll_offset = 70;
if ( typeof WPMC.scroll_top !== 'undefined' ) {
scroll_offset = WPMC.scroll_top;
}
if ( diff < -40 ) {
$( 'html, body' ).animate({
scrollTop: $( '.wpmc-tabs-wrapper' ).offset().top - scroll_offset,
}, 800);
}
},
switch_tab: function( theIndex ) {
var self = this;
$( '.woocommerce-checkout' ).trigger( 'wpmc_before_switching_tab' );
if ( theIndex < 0 || theIndex > this.$sections.length - 1 ) {
return false;
}
this.scroll_top();
$( 'html, body' ).promise().done( function() {
self.$tabs.removeClass( 'previous' ).filter( '.current' ).addClass( 'previous' );
self.$sections.removeClass( 'previous' ).filter( '.current' ).addClass( 'previous' );
$( '.woocommerce-NoticeGroup-checkout:not(wpmc-error)' ).show();
// Change the tab
self.$tabs.removeClass( 'current' );
self.$tabs.eq( theIndex ).addClass( 'current' );
self.current_step = self.$tabs.eq( theIndex ).data( 'step-title' );
$( '.wpmc-tabs-list' ).data( 'current-title', self.current_step );
// Change the section
self.$sections.removeClass( 'current' );
self.$sections.eq( theIndex ).addClass( 'current' );
// Which buttons to show?
self.$buttons.removeClass( 'current' );
self.$coupon_form.hide();
self.$before_form.hide();
// Show "next" button
if ( theIndex < self.$sections.length - 1 ) {
$( '#wpmc-next' ).addClass( 'current' );
}
// Remove errors from previous steps
if ( typeof $( '.woocommerce-NoticeGroup-checkout' ).data( 'for-step' ) !== 'undefined' && $( '.woocommerce-NoticeGroup-checkout' ).data( 'for-step' ) !== self.current_step ) {
$( '.woocommerce-NoticeGroup-checkout' ).remove();
}
// Show "skip login" button
if ( theIndex === 0 && $( '.wpmc-step-login' ).length > 0 ) {
$( '#wpmc-skip-login').addClass( 'current' );
$( '#wpmc-next' ).removeClass( 'current' );
$( '.woocommerce-NoticeGroup-checkout:not(wpmc-error)' ).hide();
}
// Last section
if ( theIndex === self.$sections.length - 1 ) {
$( '#wpmc-prev' ).addClass( 'current' );
$( '#wpmc-submit' ).addClass( 'current' );
self.$checkout_form.removeClass( 'processing' ).unblock();
}
// Show "previous" button
if ( theIndex != 0 ) {
$( '#wpmc-prev' ).addClass( 'current' );
}
if ( $( '.wpmc-step-review.current' ).length > 0 ) {
self.$coupon_form.show();
}
if ( $( '.wpmc-' + self.$before_form.data( 'step' ) + '.current' ).length > 0 ) {
self.$before_form.show();
}
$( '.woocommerce-checkout' ).trigger( 'wpmc_after_switching_tab' );
});
},
wc_country_select_select2: function() {
var self = this;
$( 'select.country_select:not(visible), select.state_select:not(visible)' ).each( function() {
var $this = $( this );
var select2_args = $.extend({
placeholder: $this.attr( 'data-placeholder' ) || $this.attr( 'placeholder' ) || '',
label: $this.attr( 'data-label' ) || null,
width: '100%'
}, self.getEnhancedSelectFormatString() );
$( this )
.on( 'select2:select', function() {
$( this ).trigger( 'focus' ); // Maintain focus after select https://github.com/select2/select2/issues/4384
} )
.selectWoo( select2_args );
});
},
getEnhancedSelectFormatString: function() {
return {
'language': {
errorLoading: function() {
// Workaround for https://github.com/select2/select2/issues/4355 instead of i18n_ajax_error.
return wc_country_select_params.i18n_searching;
},
inputTooLong: function( args ) {
var overChars = args.input.length - args.maximum;
if ( 1 === overChars ) {
return wc_country_select_params.i18n_input_too_long_1;
}
return wc_country_select_params.i18n_input_too_long_n.replace( '%qty%', overChars );
},
inputTooShort: function( args ) {
var remainingChars = args.minimum - args.input.length;
if ( 1 === remainingChars ) {
return wc_country_select_params.i18n_input_too_short_1;
}
return wc_country_select_params.i18n_input_too_short_n.replace( '%qty%', remainingChars );
},
loadingMore: function() {
return wc_country_select_params.i18n_load_more;
},
maximumSelected: function( args ) {
if ( args.maximum === 1 ) {
return wc_country_select_params.i18n_selection_too_long_1;
}
return wc_country_select_params.i18n_selection_too_long_n.replace( '%qty%', args.maximum );
},
noResults: function() {
return wc_country_select_params.i18n_no_matches;
},
searching: function() {
return wc_country_select_params.i18n_searching;
}
}
};
},
customizations: function() {
if ( WPMC.hide_last_prev === '1' ) {
$('.woocommerce-checkout').on('wpmc_after_switching_tab', function() {
$('#wpmc-prev').css('visibility', $('.wpmc-tabs-wrapper li.wpmc-tab-item:last-child').hasClass('current') ? 'hidden' : 'visible');
});
}
if ( WPMC.hide_last_back_to_cart === '1' ) {
$('.woocommerce-checkout').on('wpmc_after_switching_tab', function() {
$('#wpmc-back-to-cart').css('visibility', $('.wpmc-tabs-wrapper li.wpmc-tab-item:last-child').hasClass('current') ? 'hidden' : 'visible');
});
}
if ( WPMC.skip_login_above_form === '1' ) {
if ( $('.wpmc-login.current').length === 1 ) {
$('.wpmc-steps-wrapper').before( $('.wpmc-nav-wrapper'));
}
$('.woocommerce-checkout').on('wpmc_after_switching_tab', function() {
if ( $('.wpmc-login.current').length === 1 ) {
$('.wpmc-steps-wrapper').before( $('.wpmc-nav-wrapper'));
} else {
$('.wpmc-steps-wrapper').after( $('.wpmc-nav-wrapper'));
}
});
}
if ( WPMC.skip_login_next_to_login_button === '1' ) {
$('.woocommerce-form-login__submit').after($('#wpmc-skip-login'));
$('#wpmc-skip-login').css('margin-left', '7px');
}
}
}
wpmc_checkout.init();
});

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,170 @@
<?php
defined( 'ABSPATH' ) || exit;
class WPMultiStepCheckout_Settings {
/**
* Constructor
*/
public function __construct() {
require_once 'settings-array.php';
require_once 'frm/class-form-fields.php';
require_once 'frm/premium-tooltips.php';
require_once 'frm/warnings.php';
add_action( 'admin_menu', array( $this, 'admin_menu' ) );
add_action( 'admin_enqueue_scripts', array($this, 'admin_enqueue_scripts') );
$this->warnings();
}
/**
* Create the menu link
*/
function admin_menu() {
add_submenu_page(
'woocommerce',
'Multi-Step Checkout',
'Multi-Step Checkout',
'manage_options',
'wmsc-settings',
array($this, 'admin_settings_page')
);
}
/**
* Enqueue the scripts and styles
*/
function admin_enqueue_scripts() {
$page = filter_input(INPUT_GET, 'page', FILTER_SANITIZE_URL);
if ( $page != 'wmsc-settings' ) return false;
// Color picker
wp_enqueue_style( 'wp-color-picker' );
wp_enqueue_script('wp-color-picker');
$u = plugins_url('/', WMSC_PLUGIN_FILE) . 'assets/'; // assets url
$f = plugins_url('/', WMSC_PLUGIN_FILE) . 'includes/frm/assets/'; // framework assets url
$v = WMSC_VERSION; // version
$d = array('jquery'); // dependency
$w = true; // where? in the footer?
// Load scripts
wp_enqueue_script( 'wmsc-bootstrap', $f.'bootstrap.min.js', $d, $v, $w);
wp_enqueue_script( 'wmsc-admin-script', $u.'js/admin-script.js', $d, $v, $w);
// Load styles
wp_enqueue_style ( 'wmsc-bootstrap', $f.'bootstrap.min.css', array(), $v);
wp_enqueue_style ( 'wmsc-admin-style', $u.'css/admin-style.css', array(), $v);
}
/**
* Output the admin page
* @access public
*/
public function admin_settings_page() {
// Get the tabs.
$tabs = array(
'general' => __('General Settings', 'wp-multi-step-checkout'),
'design' => __('Design', 'wp-multi-step-checkout'),
'titles' => __('Text on Steps and Buttons', 'wp-multi-step-checkout')
);
$tab_current = (isset($_GET['tab'])) ? $_GET['tab'] : 'general';
if ( ! isset( $tabs[ $tab_current ] ) ) $tab_current = 'general';
// Get the field settings.
$settings_all = get_wmsc_settings();
$values_current = get_option( 'wmsc_options', array() );
$form = new \SilkyPressFrm\Form_Fields( $settings_all );
$form->add_setting( 'tooltip_img', plugins_url('/', WMSC_PLUGIN_FILE) . 'assets/images/question_mark.svg' );
$form->add_setting( 'section', $tab_current );
$form->add_setting( 'label_class', 'col-sm-5' );
$form->set_current_values( $values_current );
// The settings were saved.
if ( ! empty( $_POST ) ) {
check_admin_referer( 'wmsc_' . $tab_current );
if ( current_user_can( 'manage_woocommerce' ) ) {
$values_post_sanitized = $form->validate( $_POST );
$form->set_current_values( $values_post_sanitized );
foreach ( $settings_all as $_key => $_setting ) {
if ( isset( $_setting['pro'] ) && $_setting['pro'] && isset( $_setting['value'] ) ) {
$values_post_sanitized[ $_key ] = $_setting['value'];
}
}
if ( update_option( 'wmsc_options', $values_post_sanitized ) ) {
$form->add_message( 'success', '<b>'. __('Your settings have been saved.') . '</b>' );
}
}
}
// Premium tooltips.
$message = __('Only available in <a href="%1$s" target="_blank">PRO version</a>', 'wp-multi-step-checkout');
$message = wp_kses( $message, array('a' => array('href' => array(), 'target'=> array())));
$message = sprintf( $message, 'https://www.silkypress.com/woocommerce-multi-step-checkout-pro/?utm_source=wordpress&utm_campaign=wmsc_free&utm_medium=banner');
new SilkyPress_PremiumTooltips($message);
// Render the content.
$messages = $form->render_messages();
$content = $form->render();
include_once 'admin-template.php';
include_once 'right_columns.php';
}
/**
* Show admin warnings
*/
function warnings() {
$allowed_actions = array(
'wmsc_dismiss_suki_theme',
'wmsc_dismiss_german_market_hooks',
'wmsc_dismiss_elementor_pro_widget',
);
$w = new SilkyPress_Warnings($allowed_actions);
if ( !$w->is_url('plugins') && !$w->is_url('wmsc-settings') ) {
return;
}
// Warning about the Suki theme
if ( strpos( strtolower(get_template()), 'suki') !== false && $w->is_url('wmsc-settings') ) {
$message = __('The Suki theme adds some HTML elements to the checkout page in order to create the two columns. This additional HTML messes up the steps from the multi-step checkout plugin. Unfortunately the multi-step checkout plugin isn\'t compatibile with the Suki theme.', 'wp-multi-step-checkout');
$w->add_notice( 'wmsc_dismiss_suki_theme', $message);
}
// Warning if the hooks from the German Market plugin are turned on
if ( class_exists('Woocommerce_German_Market') && get_option( 'gm_deactivate_checkout_hooks', 'off' ) != 'off' && $w->is_url('wmsc-settings') ) {
$message = __('The "Deactivate German Market Hooks" option on the <b>WP Admin -> WooCommerce -> German Market -> Ordering</b> page will interfere with the proper working of the <b>Multi-Step Checkout for WooCommerce</b> plugin. Please consider turning the option off.', 'wp-multi-step-checkout');
$w->add_notice( 'wmsc_dismiss_german_market_hooks', $message);
}
// Warning about the Elementor Pro Checkout widget.
if ( defined( 'ELEMENTOR_PRO_VERSION' ) ) {
$message = __('If the Elementor Pro Checkout widget is used on the checkout page, make sure the "Skin" option is set to "Multi-Step Checkout" in the widget\'s "Content -> General" section.', 'wp-multi-step-checkout');
$w->add_notice( 'wmsc_dismiss_elementor_pro_widget', $message);
}
$w->show_warnings();
}
}
new WPMultiStepCheckout_Settings();

View File

@@ -0,0 +1,49 @@
<?php
/**
* Admin settings page
*/
defined( 'ABSPATH' ) || exit;
?>
<h2>Multi-Step Checkout for WooCommerce by <img src="<?php echo plugins_url('/', WMSC_PLUGIN_FILE); ?>assets/images/silkypress_logo.png" /> <a href="https://www.silkypress.com/" target="_blank">SilkyPress</a></h2>
<div class="wrap">
<h3 class="nav-tab-wrapper woo-nav-tab-wrapper">
<?php foreach ( $tabs as $_key => $_val ) : ?>
<?php $active = ( $_key == $tab_current ) ? ' nav-tab-active' : ''; ?>
<a href="?page=wmsc-settings&tab=<?php echo $_key ?>" class="nav-tab<?php echo $active; ?>"><?php _e($_val); ?></a>
<?php endforeach; ?>
</h3>
<div class="panel panel-default">
<div class="panel-body">
<div class="row">
<div id="alert_messages">
<?php echo $messages; ?>
</div>
<?php if( isset($without_form) && $without_form == true ) : ?>
<div class="form-group">
<?php echo $content; ?>
</div>
<?php else : ?>
<form class="form-horizontal" method="post" action="" id="form_settings">
<div class="form-group">
<?php echo $content; ?>
<div class="form-group">
<div class="col-lg-6">
<button type="submit" class="btn btn-primary"><?php echo __('Save changes'); ?></button>
</div>
</div>
</div>
<?php wp_nonce_field( 'wmsc_' . $tab_current ); ?>
</form>
<?php endif; ?>
</div>
</div>
</div>
</div>

View File

@@ -0,0 +1,57 @@
<?php
defined( 'ABSPATH' ) || exit;
use ElementorPro\Plugin;
use ElementorPro\Modules\Woocommerce\Widgets\Checkout;
use Elementor\Widget_Base;
use Elementor\Skin_Base;
use Elementor\Controls_Manager;
class WMSC_Multistep_Checkout_Skin extends Skin_Base {
public function __construct( Widget_Base $parent ) {
$this->parent = $parent;
}
public function get_id() {
return 'multistep-checkout';
}
public function get_title() {
return __( 'Multi-Step Checkout', 'wp-multi-step-checkout' );
}
public function render() {
$is_editor = Plugin::elementor()->editor->is_edit_mode();
if ( $is_editor ) {
$store_current_user = wp_get_current_user()->ID;
wp_set_current_user( 0 );
}
$this->add_render_hooks_multistep();
echo do_shortcode( '[woocommerce_checkout]' );
$this->parent->remove_render_hooks();
if ( $is_editor ) {
wp_set_current_user( $store_current_user );
}
}
public function add_render_hooks_multistep() {
add_filter( 'woocommerce_form_field_args', array( $this->parent, 'modify_form_field' ), 70, 3 );
add_filter( 'woocommerce_get_terms_and_conditions_checkbox_text', array( $this->parent, 'woocommerce_terms_and_conditions_checkbox_text' ), 10, 1 );
add_filter( 'gettext', array( $this->parent, 'filter_gettext' ), 20, 3 );
// add_action( 'woocommerce_checkout_before_order_review_heading', array( $this->parent, 'woocommerce_checkout_before_order_review_heading_1' ), 5 );
// add_action( 'woocommerce_checkout_before_order_review_heading', array( $this->parent, 'woocommerce_checkout_before_order_review_heading_2' ), 95 );
remove_action( 'woocommerce_before_checkout_form', 'woocommerce_checkout_coupon_form' );
remove_action( 'woocommerce_before_checkout_form', 'woocommerce_checkout_login_form' );
}
}

View File

@@ -0,0 +1,33 @@
<?php
/**
* The buttons under the steps
*
* @package WPMultiStepCheckout
*/
defined( 'ABSPATH' ) || exit;
$buttons_class = apply_filters( 'wmsc_buttons_class', 'button alt' );
$wrapper_class = apply_filters( 'wmsc_buttons_wrapper_class', 'wpmc-nav-wrapper' );
$back_to_cart = ( isset( $options['show_back_to_cart_button'] ) && $options['show_back_to_cart_button'] ) ? true : false;
if ( ! $back_to_cart ) {
$wrapper_class .= ' wpmc-no-back-to-cart';
}
?>
<!-- The steps buttons -->
<div class="<?php echo $wrapper_class; // phpcs:ignore ?>">
<?php if ( $back_to_cart ) : ?>
<button data-href="<?php echo wc_get_cart_url(); ?>" id="wpmc-back-to-cart" class="<?php echo $buttons_class; // phpcs:ignore ?>" type="button"><?php echo $options['t_back_to_cart']; // phpcs:ignore ?></button>
<?php endif; ?>
<button id="wpmc-prev" class="<?php echo $buttons_class; // phpcs:ignore ?> button-inactive wpmc-nav-button" type="button"><?php echo $options['t_previous']; // phpcs:ignore ?></button>
<?php if ( $show_login_step ) : ?>
<button id="wpmc-next" class="<?php echo $buttons_class; // phpcs:ignore ?> button-active wpmc-nav-button" type="button"><?php echo $options['t_next']; // phpcs:ignore ?></button>
<button id="wpmc-skip-login" class="<?php echo $buttons_class; // phpcs:ignore ?> button-active current wpmc-nav-button" type="button"><?php echo $options['t_skip_login']; // phpcs:ignore ?></button>
<?php else : ?>
<button id="wpmc-next" class="<?php echo $buttons_class; // phpcs:ignore ?> button-active current wpmc-nav-button" type="button"><?php echo $options['t_next']; // phpcs:ignore ?></button>
<?php endif; ?>
</div>
<div style="clear: both;"></div>

View File

@@ -0,0 +1,168 @@
<?php
/**
* Checkout Form
*
* This is an overridden copy of the woocommerce/templates/checkout/form-checkout.php file.
*
* @package WPMultiStepCheckout
*/
defined( 'ABSPATH' ) || exit;
// check the WooCommerce MultiStep Checkout options
$options = get_option('wmsc_options');
require_once 'settings-array.php';
if ( !is_array($options) || count($options) === 0 ) {
$defaults = get_wmsc_settings();
$options = array();
foreach($defaults as $_key => $_value ) {
$options[$_key] = $_value['value'];
}
}
$options = array_map('stripslashes', $options);
// Use the WPML values instead of the ones from the admin form
if ( isset($options['t_wpml']) && $options['t_wpml'] == 1 ) {
$defaults = get_wmsc_settings();
foreach($options as $_key => $_value ) {
if( substr($_key, 0, 2) == 't_' && $_key != 't_sign') {
$options[$_key] = $defaults[$_key]['value'];
}
}
}
if ( !isset($options['c_sign']) ) $options['c_sign'] = '&';
// Get the steps
$steps = get_wmsc_steps();
// Set the step titles
$steps['billing']['title'] = $options['t_billing'];
$steps['shipping']['title'] = $options['t_shipping'];
$steps['review']['title'] = $options['t_order'];
$steps['payment']['title'] = $options['t_payment'];
// check the WooCommerce options
$is_registration_enabled = version_compare('3.0', WC()->version, '<=') ? $checkout->is_registration_enabled() : get_option( 'woocommerce_enable_signup_and_login_from_checkout' ) == 'yes';
$has_checkout_fields = version_compare('3.0', WC()->version, '<=') ? $checkout->get_checkout_fields() : (is_array($checkout->checkout_fields) && count($checkout->checkout_fields) > 0 );
$show_login_step = ( is_user_logged_in() || 'no' === get_option( 'woocommerce_enable_checkout_login_reminder' ) ) ? false : true;
$stop_at_login = ( ! $is_registration_enabled && $checkout->is_registration_required() && ! is_user_logged_in() ) ? true : false;
$checkout_url = apply_filters( 'woocommerce_get_checkout_url', version_compare( '2.5', WC()->version, '<=' ) ? wc_get_checkout_url() : WC()->cart->get_checkout_url() );
// Both options disabled for "Guest" on the WP Admin -> WooCommerce -> Settings -> Accounts & Privacy page
if ( ! $is_registration_enabled && $checkout->is_registration_required() && ! is_user_logged_in() && ! $show_login_step) {
echo esc_html( apply_filters( 'woocommerce_checkout_must_be_logged_in_message', __( 'You must be logged in to checkout.', 'woocommerce' ) ) );
return;
}
// Swap the Payment and Review steps for german shops
$swap_payment_review = ( class_exists('WooCommerce_Germanized') || class_exists('Woocommerce_German_Market')) ? true : false;
$swap_payment_review = apply_filters('wpmc_swap_payment_review', $swap_payment_review);
if ( $swap_payment_review ) {
$tmp = $steps['payment']['position'];
$steps['payment']['position'] = $steps['review']['position'];
$steps['review']['position'] = $tmp;
}
// Disabled "Show the Shipping step" option on Multi-Step Checkout -> General Settings page
if ( !$options['show_shipping_step'] ) {
unset($steps['shipping']);
$options['unite_billing_shipping'] = false;
$steps['billing']['sections'][] = 'woocommerce_checkout_after_customer_details';
}
// Enabled "Show the Order and the Payment steps together" option on Multi-Step Checkout -> General Settings page
if ( $options['unite_order_payment']) {
$steps['review']['title'] = $options['t_order'] . ' '.esc_html($options['c_sign']).' ' . $options['t_payment'];
$steps['review']['class'] = $steps['review']['class'] . ' ' . $steps['payment']['class'];
$steps['review']['sections'] = array('review', 'payment');
if ( $swap_payment_review ) {
$steps['review']['sections'] = array('payment', 'review');
}
unset($steps['payment']);
}
// Enabled "Show the Order and the Payment steps together" option on Multi-Step Checkout -> General Settings page
if ( $options['unite_billing_shipping'] && $options['show_shipping_step'] ) {
$steps['billing']['title'] = $options['t_billing'] . ' '.esc_html($options['c_sign']).' ' . $options['t_shipping'];
$steps['billing']['class'] = $steps['billing']['class'] . ' ' . $steps['shipping']['class'];
$steps['billing']['sections'] = array('billing', 'shipping');
unset($steps['shipping']);
}
// No checkout fields within the $checkout object
if ( !$has_checkout_fields) {
unset($steps['billing']);
unset($steps['shipping']);
}
// Pass the steps through a filter
$steps = apply_filters('wpmc_modify_steps', $steps);
// Sort the steps
uasort($steps, 'wpmc_sort_by_position');
// show the tabs
include dirname(__FILE__) . '/form-tabs.php';
do_action( 'wpmc_after_step_tabs' );
?>
<div style="clear: both;"></div>
<?php wc_print_notices(); ?>
<div style="clear: both;"></div>
<div class="wpmc-steps-wrapper">
<div id="checkout_coupon" class="woocommerce_checkout_coupon" style="display: none;">
<?php do_action( 'wpmc-woocommerce_checkout_coupon_form', $checkout ); ?>
</div>
<div id="woocommerce_before_checkout_form" class="woocommerce_before_checkout_form" data-step="<?php echo apply_filters('woocommerce_before_checkout_form_step', 'step-review'); ?>" style="display: none;">
<?php do_action( 'woocommerce_before_checkout_form', $checkout ); ?>
</div>
<!-- Step: Login -->
<?php
if ( $show_login_step ) {
wmsc_step_content_login($checkout, $stop_at_login);
}
if ( $stop_at_login ) {
echo '</div>'; // closes the "wpmc-steps-wrapper" div
return false;
}
?>
<form name="checkout" method="post" class="checkout woocommerce-checkout" action="<?php echo esc_url( $checkout_url ); ?>" enctype="multipart/form-data">
<?php $first_step = ( $show_login_step ) ? '' : ' current';
foreach( $steps as $_id => $_step ) {
echo '<!-- Step: '.$_step['title'].' -->';
echo '<div class="wpmc-step-item '.$_step['class']. $first_step . '">';
if ( isset($_step['sections'] ) ) {
foreach ( $_step['sections'] as $_section ) {
if ( strpos($_section, 'woocommerce_') === 0 ) {
do_action( $_section );
} else {
do_action('wmsc_step_content_' . $_section);
}
}
} else {
do_action('wmsc_step_content_' . $_id);
}
echo '</div>';
$first_step = '';
} ?>
</form>
<?php do_action( 'woocommerce_after_checkout_form', $checkout ); ?>
</div>
<?php include dirname(__FILE__) . '/form-buttons.php'; ?>

View File

@@ -0,0 +1,37 @@
<?php
/**
* The steps tabs
*
* @package WPMultiStepCheckout
*/
defined( 'ABSPATH' ) || exit;
$i = 0;
$number_of_steps = ( $show_login_step ) ? count( $steps ) + 1 : count( $steps );
$current_step_title = ( $show_login_step ) ? 'login' : key( array_slice( $steps, 0, 1, true ) );
do_action( 'wpmc_before_tabs' );
?>
<!-- The steps tabs -->
<div class="wpmc-tabs-wrapper">
<ul class="wpmc-tabs-list wpmc-<?php echo $number_of_steps; ?>-tabs" data-current-title="<?php echo $current_step_title; ?>">
<?php if ( $show_login_step ) : ?>
<li class="wpmc-tab-item current wpmc-login" data-step-title="login">
<div class="wpmc-tab-number"><?php echo $i = $i + 1; ?></div>
<div class="wpmc-tab-text"><?php echo $options['t_login']; ?></div>
</li>
<?php endif; ?>
<?php
foreach ( $steps as $_id => $_step ) :
$class = ( ! $show_login_step && $i == 0 ) ? ' current' : '';
?>
<li class="wpmc-tab-item<?php echo $class; ?> wpmc-<?php echo $_id; ?>" data-step-title="<?php echo $_id; ?>">
<div class="wpmc-tab-number"><?php echo $i = $i + 1; ?></div>
<div class="wpmc-tab-text"><?php echo $_step['title']; ?></div>
</li>
<?php endforeach; ?>
</ul>
</div>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,362 @@
<?php
/**
* Form_Fields. Render form fields out of an array.
*
* @class Form_Fields
* @package SilkyPressFrm
*/
namespace SilkyPressFrm;
defined( 'ABSPATH' ) || exit;
if ( ! class_exists( '\SilkyPressFrm\Form_Fields' ) ) {
/**
* Form_Fields class.
*/
class Form_Fields {
/**
* Fields description.
*
* @var array
*/
private $fields = array();
/**
* Current field values.
*
* @var array
*/
private $current_values = array();
/**
* Additional attributes.
*
* @var array
*/
private $atts = array();
/**
* Validation error/info messages.
*
* @var array
*/
private $messages = array();
/**
* Constructor.
*
* @param array $fields The field description array.
*/
public function __construct( $fields = array() ) {
$this->fields = $fields;
// Default attributes.
$this->atts = array(
'tooltip_img' => '',
'section' => '',
'label-class' => '',
'disable_pro' => true,
);
}
/**
* Add settings.
*
* @param string $var Variable.
* @param string $value Value.
*/
public function add_setting( $var = '', $value = '' ) {
$this->atts[ $var ] = $value;
}
/**
* Set the $this->current_values array.
*
* @param array $values Current values.
*/
public function set_current_values( $values = array() ) {
$this->current_values = $values;
}
/**
* Render all the fields.
*
* @param array $fields The fields to be rendered.
*
* @return string The rendered fields.
*/
public function render( $fields = null ) {
$content = '';
$fields = ( null === $fields ) ? $this->fields : array();
if ( count( $fields ) === 0 ) {
return '';
}
foreach ( $fields as $_key => $_field ) {
if ( isset( $this->atts['section'] ) && $_field['section'] !== $this->atts['section'] ) {
continue;
}
$content .= $this->render_field( $_key, $_field );
}
return $content;
}
/**
* Render one field
*
* @param string $_key The field's id.
* @param array $_field The fields' description.
*
* @return string The rendered field.
*/
public function render_field( $_key, $_field ) {
$atts = '';
$description = '';
$label = '';
$input_values = '';
$add_label = true;
$group_wrap = true;
if ( 'header' === $_field['input_form'] || isset( $_field['no_wrap'] ) ) {
$add_label = true;
$group_wrap = false;
}
$_field['value'] = isset( $this->current_values[ $_key ] ) ? $this->current_values[ $_key ] : $_field['value'];
$_field['disabled'] = ( $this->atts['disable_pro'] && isset( $_field['pro'] ) && $_field['pro'] ) ? true : false;
$atts .= ( isset( $_field['disabled'] ) && $_field['disabled'] ) ? ' disabled' : '';
$atts .= ( 'checkbox' === $_field['input_form'] && true === (bool) $_field['value'] && ! $_field['disabled'] ) ? ' checked="checked"' : '';
// Radio templates.
if ( 'radio' === $_field['input_form'] ) {
foreach ( $_field['values'] as $__id => $__value ) {
$_style = isset( $_field['style'] ) && 'inline' === $_field['style'] ? '-inline' : '';
$input_atts = ( $__id === $_field['value'] ) ? $atts . ' checked=""' : $atts;
$input_values .= vsprintf(
'<div class="radio%s"%s><label><input type="radio" name="%s" id="%s" value="%s" %s />%s</label></div>',
array( $_style, $atts, $_key, $__id, $__id, $input_atts, $__value )
);
}
}
// Button templates.
if ( 'buttons' === $_field['input_form'] ) {
foreach ( $_field['values'] as $__id => $__value ) {
$toggle = ( ! empty( $__value[1] ) ) ? ' data-toggle="tooltip" data-placement="top" title="' . $__value[1] . '" data-original-title="' . $__value[1] . '"' : '';
$__atts = ( $__id == $_field['value'] ) ? ' active' : ''; // Keep the loosely == equal operator instead of the strict === identical operator
$__atts .= ( $_field['disabled'] ) ? ' disabled' : '';
$input_values .= vsprintf(
'<label class="btn btn-default %s"><input type="radio" name="%s" id="%s" value="%s" %s /><div class="icon-in-label ndd-spot-icon icon-style-1"%s><div class="ndd-icon-main-element">%s</div></div></label>',
array( $__atts, $_key, $__id, $__id, $__id === $_field['value'] ? 'checked' : '', $toggle, $__value[0] )
);
}
}
// Input templates.
$templates = array(
'text' => array( '%s', array( $_field['value'] ) ),
'radio' => array( '%s', array( $input_values ) ),
'buttons' => array( '<div class="btn-group%s" data-toggle="buttons" id="btn-group-style-circle">%s</div>', array( $atts, $input_values ) ),
'input_color' => array(
'<input type="color" class="form-control" id="%s" name="%s" value="%s"%s /><span class="input-group-addon" id="color-text-color-hex">%s</span>',
array( $_key, $_key, $_field['value'], $atts, $_field['value'] ),
),
'input_text' => array(
'<input type="text" class="form-control" id="%s" name="%s" value="%s"%s />',
array( $_key, $_key, stripslashes( $_field['value'] ), $atts ),
),
'checkbox' => array(
'<input type="checkbox" id="%s" name="%s" value="1"%s />',
array( $_key, $_key, $atts ),
),
'header' => array(
'<h4 class="col-sm-5">%s</h4><div style="clear: both;"></div>',
array( $_field['label'] ),
),
);
// The input.
$input = vsprintf(
$templates[ $_field['input_form'] ][0],
$templates[ $_field['input_form'] ][1]
);
// The input addon.
if ( isset( $_field['post_input'] ) && ! empty( $_field['post_input'] ) ) {
$input .= sprintf( '<span class="input-group-addon">%s</span>', $_field['post_input'] );
}
// The description.
if ( isset( $_field['description'] ) && ! empty( $_field['description'] ) ) {
$description = vsprintf(
' <img src="%s" data-toggle="tooltip" data-placement="top" title="%s" data-original-title="%s" />',
array( $this->atts['tooltip_img'], $_field['description'], $_field['description'] )
);
}
// The label.
$label_class = isset( $this->atts['label_class'] ) ? $this->atts['label_class'] : 'col-sm-6';
$label_class = isset( $_field['label_class'] ) ? $_field['label_class'] : $label_class;
if ( isset( $_field['label'] ) && $add_label ) {
$label = vsprintf(
'<label for="%s" class="%s">%s</label>',
array( $_key, 'control-label ' . $label_class, $_field['label'] . $description )
);
}
// The Bootstrap 4 form-group wrapper.
if ( $group_wrap ) {
$_field['disabled'] = ( $this->atts['disable_pro'] && isset( $_field['pro'] ) && $_field['pro'] ) ? true : false;
$class = ( isset( $_field['disabled'] ) && $_field['disabled'] ) ? ' disabled' : '';
$input = vsprintf(
'<div class="%s"%s>%s<div class="%s">%s</div></div>',
array( 'form-group' . $class, '', $label, 'input-group input-group-' . $_field['input_form'], $input )
);
}
return $input;
}
/**
* Validate the $_POST values.
*
* @param array $post The $_POST values.
*/
public function validate( $post ) {
// Filter the $post array for allowed fields.
$post = array_intersect_key( $post, array_fill_keys( array_keys( $this->fields ), '' ) );
foreach ( $this->fields as $_key => $settings ) {
$reset = array();
// Validate only fields from the current section.
if ( isset( $this->atts['section'] ) && $settings['section'] !== $this->atts['section'] ) {
if ( 'header' !== $settings['input_form'] && 'text' !== $settings['input_form'] && isset( $settings['value'] ) ) {
$post[ $_key ] = isset( $this->current_values[ $_key ] ) ? $this->current_values[ $_key ] : $settings['value'];
}
continue;
}
// Add the unchecked checkboxes.
if ( 'checkbox' === $settings['input_form'] ) {
$post[ $_key ] = isset( $post[ $_key ] ) ? true : false;
}
// Validate colors.
if ( 'input_color' === $settings['input_form'] && isset( $post[ $_key ] ) && ! preg_match( '/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/', $post[ $_key ] ) ) {
$reset = array(
/* translators: 1: field label 2: value */
__( 'Unrecognized %1$s. The value was reset to %2$s' ),
array( '<b>' . $settings['label'] . '</b>', '<b>' . $settings['value'] . '</b>' ),
);
}
// Sanitize text inputs.
if ( 'input_text' === $settings['input_form'] ) {
$post[ $_key ] = isset( $post[ $_key ] ) ? sanitize_text_field( wp_unslash( $post[ $_key ] ) ) : (string) $settings['value'];
}
// Validate button and radio inputs.
if ( in_array( $settings['input_form'], array( 'button', 'radio' ), true ) && isset( $post[ $_key ] ) && ! array_key_exists( $post[ $_key ], $settings['values'] ) ) {
$reset = array(
/* translators: 1: field label 2: value */
__( 'Unrecognized %1$s. The value was reset to %2$s' ),
array( '<b>' . $settings['label'] . '</b>', '<b>' . $settings['value'] . '</b>' ),
);
}
// Validate according to a rule.
if ( isset( $settings['validate'] ) && isset( $post[ $_key ] ) ) {
if ( 'int' === $settings['validate']['type'] ) {
if ( (string) (int) $post[ $_key ] !== $post[ $_key ] ) {
$this->add_message(
'info',
vsprintf(
/* translators: 1: field label 2: value */
__( 'The %1$s field accepts only an integer value. It was set to %2$s' ),
array( '<b>' . $settings['label'] . '</b>', (int) $post[ $_key ] )
)
);
}
$post[ $_key ] = (int) $post[ $_key ];
}
if ( 'float' === $settings['validate']['type'] ) {
if ( (string) (float) $post[ $_key ] !== $post[ $_key ] ) {
$this->add_message(
'info',
vsprintf(
/* translators: 1: field label 2: value */
__( 'The %1$s field accepts only a number. It was set to %2$s' ),
array( '<b>' . $settings['label'] . '</b>', (float) $post[ $_key ] )
)
);
}
$post[ $_key ] = (float) $post[ $_key ];
}
if ( in_array( $settings['validate']['type'], array( 'int', 'float' ), true ) &&
( $post[ $_key ] < $settings['validate']['range'][0] ||
$post[ $_key ] > $settings['validate']['range'][1] ) ) {
$reset = array(
/* translators: 1: field label 2: minimum value 3: maximum value 4: value */
__( '%1$s accepts values between %2$s and %3$s. Your value was reset to %4$s' ),
array( '<b>' . $settings['label'] . '</b>', $settings['validate']['range'][0], $settings['validate']['range'][1], '<b>' . $settings['value'] . '</b>' ),
);
}
}
// Reset the value and add the info message.
if ( count( $reset ) > 0 ) {
$post[ $_key ] = $settings['value'];
$this->add_message( 'info', vsprintf( $reset[0], $reset[1] ) );
}
}
return $post;
}
/**
* Add messages.
*
* @param string $type The message type.
* @param string $message The message.
*/
public function add_message( $type = '', $message = '' ) {
$this->messages[] = array( $type, $message );
}
/**
* Render the messages.
*
* @return string Messages.
*/
public function render_messages() {
if ( 0 === count( $this->messages ) ) {
return;
}
$output = '';
foreach ( $this->messages as $_message ) {
$output .= vsprintf(
'<div class="alert alert-%s"><button type="button" class="close" data-dismiss="alert">&times;</button>%s</div>',
array( $_message[0], $_message[1] )
);
}
$output = sprintf( '<div class="col-lg-12">%s</div>', $output );
return $output;
}
}
}

View File

@@ -0,0 +1,111 @@
<?php
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
}
if ( !class_exists('SilkyPress_PremiumTooltips') ) {
/**
* SilkyPress_PremiumTooltips
*/
class SilkyPress_PremiumTooltips {
/**
* Constructor
*/
public function __construct($message) {
$this->html($message);
$this->css();
$this->javascript();
}
function html($message) {
?>
<div id="skp-premium-tooltip">
<div class="skp-premium-tooltip--arrow">
<div style=""></div>
</div>
<div class="skp-premium-tooltip--msg">
<label><?php echo $message; ?></label>
</div>
</div>
<?php
}
function css() {
?>
<style type="text/css">
#skp-premium-tooltip {
display:none;
width: 230px;
height: 60px;
position: absolute;
margin-left: 354px;
margin-top: 112px;
color: white;
}
#skp-premium-tooltip .skp-premium-tooltip--arrow {
float:left;
width:13px;
}
#skp-premium-tooltip .skp-premium-tooltip--arrow div {
width: 0px;
height: 0px;
border-top: 6px solid transparent;
border-right: 6px solid #333333;
border-bottom: 6px solid transparent;
float: right;
margin-right: 0px;
margin-top: 16px;
}
#skp-premium-tooltip .skp-premium-tooltip--msg {
font-family:sans-serif;
font-size:13px;
text-align: center;
border-radius: 5px;
float: left;
background-color: rgb(51, 51, 51);
color: white;
width: 210px;
padding: 10px 0px;
}
</style>
<?php
}
function javascript() {
?>
<script type="text/javascript">
jQuery(document).ready(function($){
$(".form-group.disabled-short, .form-group.disabled").on('click',function(e){
if(typeof window.tooltip != "undefined"){
clearTimeout(window.tooltip);
}
var inputCon = $(e.currentTarget).find(".input-group");
var left = 30;
$(e.currentTarget).children().each(function(i, child){
left += $(child).width();
});
var offsetTop = $(e.currentTarget).offset().top - 38;
offsetTop -= $('h2').offset().top - 52;
$("#skp-premium-tooltip").css({"margin-left" : left + "px", "margin-top" : offsetTop + "px"});
$("#skp-premium-tooltip").fadeIn( "slow", function() {
window.tooltip = setTimeout(function(){ $("#skp-premium-tooltip").hide(); }, 1000);
});
return;
});
});
</script>
<?php
}
}
}

View File

@@ -0,0 +1,110 @@
<?php
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
}
if ( !class_exists('SilkyPress_Warnings') ) {
/**
* SilkyPress_Warnings
*/
class SilkyPress_Warnings {
var $allowed_actions = array();
var $notices = array();
/**
* Constructor
*/
public function __construct($allowed_actions) {
$this->allowed_actions = $allowed_actions;
add_action( 'wp_ajax_sk_dismiss_warning', array( $this, 'notice_dismiss' ) );
}
/**
* Check if we are on the right page
*/
function is_url( $url_part = '' ) {
if ( !isset( $_SERVER ) || !isset( $_SERVER['REQUEST_URI'] ) ) {
return false;
}
if ( strpos( $_SERVER['REQUEST_URI'], $url_part ) !== false ) {
return true;
}
return false;
}
/**
* Add this message to the $this->notices array
*/
function add_notice($id, $message, $class = '') {
if ( get_option($id) != false ) return false;
$notice = array(
'id' => $id,
'message' => $message,
);
if ( !empty($class) ) $notice['class'] = $class;
$this->notices[] = $notice;
}
function show_warnings() {
add_action( 'admin_notices', array($this, 'show_admin_notice') );
}
/**
* Show the admin notices
* */
function show_admin_notice() {
if ( !is_array($this->notices) || count($this->notices) == 0 ) return;
foreach( $this->notices as $_n ) {
$nonce = wp_create_nonce( $_n['id'] );
if ( !isset($_n['class'])) $_n['class'] = 'notice notice-warning is-dismissible';
$_n['class'] .= ' sk-notice-dismiss';
printf( '<div class="%1$s" id="%2$s" data-nonce="%3$s"><p>%4$s</p></div>', $_n['class'], $_n['id'], $nonce, $_n['message'] );
}
?>
<script type='text/javascript'>
jQuery(function($){
$(document).on( 'click', '.sk-notice-dismiss', function() {
var id = $(this).attr('id');
var data = {
action: 'sk_dismiss_warning',
option: id,
nonce: $(this).data('nonce'),
};
$.post(ajaxurl, data, function(response ) {
$('#'+id).fadeOut('slow');
});
});
});
</script>
<?php
}
/**
* Ajax response for `notice_dismiss` action
*/
function notice_dismiss() {
$option = $_POST['option'];
if ( ! in_array($option, $this->allowed_actions ) ) return;
check_ajax_referer( $option, 'nonce' );
update_option( $option, 1 );
wp_die();
}
}
}

View File

@@ -0,0 +1,111 @@
<?php
/**
* The right column on the admin side
*
* @package WPMultiStepCheckout
*/
defined( 'ABSPATH' ) || exit;
$now = time();
$wmsc_activation_time = get_option( 'wmsc_activation_time', '' );
$wmsc_version = get_option( 'wmsc_version', '' );
if ( empty( $wmsc_activation_time ) || version_compare( $wmsc_version, WMSC_VERSION, '<' ) ) {
$wmsc_activation_time = $now;
update_option( 'wmsc_activation_time', $now );
update_option( 'wmsc_version', WMSC_VERSION);
}
$show_discount = false;
if ( $now - 3*86400 < $wmsc_activation_time ) {
$show_discount = true;
}
$start_date = date('j M', $wmsc_activation_time - 3*86400 );
$end_date = date('j M', $wmsc_activation_time + 2*86400 );
function iz_convert_numbers_letters( $text, $from = 'numbers' ) {
$alphabet = str_split('abcdefghij');
$numbers = str_split('0123456789');
if ( $from == 'numbers' ) {
return str_replace( $numbers, $alphabet, $text );
} else {
return str_replace( $alphabet, $numbers, $text );
}
}
$offer_link = 'https://www.silkypress.com/woocommerce-multi-step-checkout-pro/?a=' . iz_convert_numbers_letters( $wmsc_activation_time ) . '&utm_source=wordpress&utm_campaign=iz_offer&utm_medium=banner';
$images_url = site_url().'/wp-content/plugins/wp-multi-step-checkout/assets/images/';
?>
<style type="text/css">
#right_column_metaboxes a.button {
color: #fff !important;
border: none;
box-shadow: none;
vertical-align: middle;
font-size: 14px;
height: 32px;
line-height: 32px;
padding: 0 18px 1px;
background: #bc1117 !important;
display: block-inline;
text-align: center;
margin: 10px auto;
}
#wpbody-content .metabox-holder.rating {
background: url(<?php echo $images_url; ?>rating.png) 100% 80% no-repeat;
background-size: auto auto;
background-size: 50%;
}
#wpbody-content .metabox-holder.discount {
background: url(<?php echo $images_url; ?>discount.png) 102% 102% no-repeat;
background-size: auto auto;
background-size: 50%;
}
</style>
<div id="right_column_metaboxes">
<?php if ( $show_discount ) : ?>
<div class="panel main_container">
<div class="container_title">
<h3><img src="<?php echo $images_url; ?>checkout-cart.svg" width="24" /> <?php _e('WooCommerce Multi-Step Checkout Pro', 'wp-multi-step-checkout'); ?></h3>
</div>
<div class="metabox-holder discount" style="text-align: center;">
<p>Shhh... Can you keep a secret?</p>
<p>
<span style="color: #bc1117; font-size: 24px;">30% OFF</span><br />
only between <span style="color: #bc1117;"><?php echo $start_date; ?> - <?php echo $end_date; ?></span>.
</p>
<p>Don't tell anyone.</p>
<p style="text-align: center;">
<a href="<?php echo $offer_link; ?>" target="_blank" class="button" rel="noreferrer"><?php _e('Upgrade to PRO', 'wp-multi-step-checkout'); ?></a>
</p>
</div>
</div>
<?php endif; ?>
<div class="panel main_container">
<div class="container_title">
<h3><?php _e('Like this Plugin?', 'wp-multi-step-checkout'); ?></h3>
</div>
<div class="metabox-holder rating" style="text-align: center;">
<p><?php _e('Share your opinion with the world on the WordPress.org Plugin Repository.', 'wp-image-zoooom'); ?></p>
<p><a href="https://wordpress.org/plugins/wp-multi-step-checkout/" target="_blank" class="button"><?php _e('Rate it on WordPress.org', 'wp-image-zoooom'); ?></a></p>
</div>
</div>
</div>
<div style="clear: both"></div>

View File

@@ -0,0 +1,535 @@
<?php
/**
* Functions
*
* @package WPMultiStepCheckout
*/
defined( 'ABSPATH' ) || exit;
if ( ! function_exists( 'get_wmsc_settings' ) ) {
/**
* The settings array for the admin page.
*/
function get_wmsc_settings() {
$account_url = admin_url( 'admin.php?page=wc-settings&tab=account' );
$no_login_screenshot = 'https://www.silkypress.com/wp-content/uploads/2018/09/multi-step-checkout-no-login.png';
$registration_settings_screenshot = 'https://www.silkypress.com/wp-content/uploads/2019/09/registration-description.png';
$wmsc_settings = array(
/* General Settings */
'label1' => array(
'label' => __( 'Which Steps to show', 'wp-multi-step-checkout' ),
'input_form' => 'header',
'value' => '',
'section' => 'general',
),
'show_shipping_step' => array(
'label' => __( 'Show the <code>Shipping</code> step', 'wp-multi-step-checkout' ),
'input_form' => 'checkbox',
'value' => true,
'section' => 'general',
),
'show_login_step' => array(
'label' => __( 'Show the <code>Login</code> step', 'wp-multi-step-checkout' ),
'input_form' => 'text',
/* translators: 1: Woocommerce Accounts URL 2: Screenshot URL. */
'value' => sprintf( __( ' For removing the login step you need to uncheck the "Allow customers to log into an existing account during checkout" option on the <a href="%1$s">WP Admin -> WooCommerce -> Settings -> Accounts</a> page. See <a href="%2$s" target="_blank">this screenshot</a>.', 'wp-multi-step-checkout' ), esc_url( $account_url ), esc_url( $no_login_screenshot ) ),
'section' => 'general',
),
'unite_billing_shipping' => array(
'label' => __( 'Show the <code>Billing</code> and the <code>Shipping</code> steps together', 'wp-multi-step-checkout' ),
'input_form' => 'checkbox',
'value' => false,
'section' => 'general',
),
'unite_order_payment' => array(
'label' => __( 'Show the <code>Order</code> and the <code>Payment</code> steps together', 'wp-multi-step-checkout' ),
'input_form' => 'checkbox',
'value' => false,
'section' => 'general',
),
'label2' => array(
'label' => __( 'Additional Elements', 'wp-multi-step-checkout' ),
'input_form' => 'header',
'value' => '',
'section' => 'general',
),
'show_back_to_cart_button' => array(
'label' => __( 'Show the <code>Back to Cart</code> button', 'wp-multi-step-checkout' ),
'input_form' => 'checkbox',
'value' => true,
'section' => 'general',
),
'registration_with_login' => array(
'label' => __( 'Show registration form in the <code>Login</code> step', 'wp-multi-step-checkout' ),
'input_form' => 'checkbox',
'value' => true,
'section' => 'general',
'description' => __( 'The registration form will be shown next to the login form, it will not replace it', 'wp-multi-step-checkout' ),
'pro' => true,
),
'registration_desc' => array(
'label' => '',
'input_form' => 'text',
/* translators: 1: Woocommerce Accounts URL 2: Screenshot URL. */
'value' => sprintf( __( 'Use the "Account creation" options on the <a href="%1$s">WP Admin -> WooCommerce -> Settings -> Accounts & Privacy</a> page to modify the Registration form. See <a href="%2$s" target="_blank">this screenshot</a>.', 'wp-multi-step-checkout' ), esc_url( $account_url ), esc_url( $registration_settings_screenshot ) ),
'section' => 'general',
'pro' => true,
),
'review_thumbnails' => array(
'label' => __( 'Add product thumbnails to the <code>Order Review</code> section', 'wp-multi-step-checkout' ),
'input_form' => 'checkbox',
'value' => true,
'section' => 'general',
'pro' => true,
),
'review_address' => array(
'label' => __( 'Add <code>Address Review</code> to the <code>Order</code> section', 'wp-multi-step-checkout' ),
'input_form' => 'checkbox',
'value' => false,
'section' => 'general',
'pro' => true,
),
'label3' => array(
'label' => __( 'Functionality', 'wp-multi-step-checkout' ),
'input_form' => 'header',
'value' => '',
'section' => 'general',
),
'validation_per_step' => array(
'label' => __( 'Validate the fields during each step', 'wp-multi-step-checkout' ),
'description' => __( 'The default WooCommerce validation is done when clicking the Place Order button. With this option the validation is performed when trying to move to the next step', 'wp-multi-step-checkout' ),
'input_form' => 'checkbox',
'value' => true,
'section' => 'general',
'pro' => true,
),
'clickable_steps' => array(
'label' => __( 'Clickable Steps', 'wp-multi-step-checkout' ),
'description' => __( 'The user can click on the steps in order to get to the next one.', 'wp-multi-step-checkout' ),
'input_form' => 'checkbox',
'value' => true,
'section' => 'general',
'pro' => true,
),
'keyboard_nav' => array(
'label' => __( 'Enable the keyboard navigation', 'wp-multi-step-checkout' ),
'description' => __( 'Use the keyboard\'s left and right keys to move between the checkout steps', 'wp-multi-step-checkout' ),
'input_form' => 'checkbox',
'value' => false,
'section' => 'general',
),
'url_hash' => array(
'label' => __( 'Change the URL for each step', 'wp-multi-step-checkout' ),
'description' => __( 'Each step will have a hash added to the URL. For example &quot;#login&quot; or &quot;#billing&quot;. This option, together with some &quot;History Change Trigger&quot; settings in the Google Tag Manager, allows Google Analytics to track each step as different pages.', 'wp-multi-step-checkout' ),
'input_form' => 'checkbox',
'value' => false,
'section' => 'general',
'pro' => true,
),
/* Templates */
'main_color' => array(
'label' => __( 'Main Color', 'wp-multi-step-checkout' ),
'input_form' => 'input_color',
'value' => '#1e85be',
'section' => 'design',
),
'template' => array(
'label' => __( 'Template', 'wp-multi-step-checkout' ),
'input_form' => 'radio',
'value' => 'default',
'values' => array(
'default' => __( 'Default', 'wp-multi-step-checkout' ),
'md' => __( 'Material Design', 'wp-multi-step-checkout' ),
'breadcrumb' => __( 'Breadcrumbs', 'wp-multi-step-checkout' ),
),
'section' => 'design',
'pro' => true,
),
'wpmc_buttons' => array(
'label' => __( 'Use the plugin\'s buttons', 'wp-multi-step-checkout' ),
'input_form' => 'checkbox',
'value' => false,
'description' => __( 'By default the plugin tries to use the theme\'s design for the buttons. If this fails, enable this option in order to use the plugin\'s button style', 'wp-multi-step-checkout' ),
'section' => 'design',
'pro' => true,
),
'wpmc_check_sign' => array(
'label' => __( 'Show a "check" sign for visited steps', 'wp-multi-step-checkout' ),
'input_form' => 'checkbox',
'value' => false,
'section' => 'design',
'pro' => true,
),
'visited_color' => array(
'label' => __( 'Visited steps color', 'wp-multi-step-checkout' ),
'input_form' => 'input_color',
'value' => '#1EBE3A',
'section' => 'design',
'pro' => true,
),
/* Step Titles */
't_login' => array(
'label' => __( 'Login', 'wp-multi-step-checkout' ),
'input_form' => 'input_text',
'value' => __( 'Login', 'wp-multi-step-checkout' ),
'section' => 'titles',
),
't_billing' => array(
'label' => __( 'Billing', 'wp-multi-step-checkout' ),
'input_form' => 'input_text',
'value' => __( 'Billing', 'wp-multi-step-checkout' ),
'section' => 'titles',
),
't_shipping' => array(
'label' => __( 'Shipping', 'wp-multi-step-checkout' ),
'input_form' => 'input_text',
'value' => __( 'Shipping', 'wp-multi-step-checkout' ),
'section' => 'titles',
),
't_order' => array(
'label' => __( 'Order', 'wp-multi-step-checkout' ),
'input_form' => 'input_text',
'value' => __( 'Order', 'wp-multi-step-checkout' ),
'section' => 'titles',
),
't_payment' => array(
'label' => __( 'Payment', 'wp-multi-step-checkout' ),
'input_form' => 'input_text',
'value' => __( 'Payment', 'wp-multi-step-checkout' ),
'section' => 'titles',
),
't_back_to_cart' => array(
'label' => __( 'Back to cart', 'wp-multi-step-checkout' ),
'input_form' => 'input_text',
'value' => _x( 'Back to cart', 'Frontend: button label', 'wp-multi-step-checkout' ),
'section' => 'titles',
),
't_skip_login' => array(
'label' => __( 'Skip Login', 'wp-multi-step-checkout' ),
'input_form' => 'input_text',
'value' => _x( 'Skip Login', 'Frontend: button label', 'wp-multi-step-checkout' ),
'section' => 'titles',
),
't_previous' => array(
'label' => __( 'Previous', 'wp-multi-step-checkout' ),
'input_form' => 'input_text',
'value' => _x( 'Previous', 'Frontend: button label', 'wp-multi-step-checkout' ),
'section' => 'titles',
),
't_next' => array(
'label' => __( 'Next', 'wp-multi-step-checkout' ),
'input_form' => 'input_text',
'value' => _x( 'Next', 'Frontend: button label', 'wp-multi-step-checkout' ),
'section' => 'titles',
),
't_error' => array(
'label' => __( 'Please fix the errors on this step before moving to the next step', 'wp-multi-step-checkout' ),
'input_form' => 'input_text',
'value' => _x( 'Please fix the errors on this step before moving to the next step', 'Frontend: error message', 'wp-multi-step-checkout' ),
'section' => 'titles',
'description' => __( 'This is an error message shown in the frontend', 'wp-multi-step-checkout' ),
'pro' => true,
),
'c_sign' => array(
'label' => __( 'AND sign', 'wp-multi-step-checkout' ),
'input_form' => 'input_text',
'value' => __( '&', 'wp-multi-step-checkout' ),
'section' => 'titles',
'description' => __( 'The sign between two unified steps. For example "Billing & Shipping"' ),
),
't_wpml' => array(
'label' => __( 'Use WPML to translate the text on the Steps and Buttons', 'wp-multi-step-checkout' ),
'input_form' => 'checkbox',
'value' => false,
'section' => 'titles',
'description' => __( 'For a multilingual website the translations from WPML will be used instead of the ones in this form', 'wp-multi-step-checkout' ),
),
);
return apply_filters( 'wmsc_settings_admin', $wmsc_settings );
}
}
if ( ! function_exists( 'get_wmsc_steps' ) ) {
/**
* The steps array.
* Note: The Login is always the first step and is not part of the get_wmsc_steps() array.
*/
function get_wmsc_steps() {
$steps = array(
'billing' => array(
'title' => __( 'Billing', 'wp-multi-step-checkout' ),
'position' => 10,
'class' => 'wpmc-step-billing',
'sections' => array( 'billing' ),
),
'shipping' => array(
'title' => __( 'Shipping', 'wp-multi-step-checkout' ),
'position' => 20,
'class' => 'wpmc-step-shipping',
'sections' => array( 'shipping' ),
),
'review' => array(
'title' => __( 'Order', 'wp-multi-step-checkout' ),
'position' => 30,
'class' => 'wpmc-step-review',
'sections' => array( 'review' ),
),
'payment' => array(
'title' => __( 'Payment', 'wp-multi-step-checkout' ),
'position' => 40,
'class' => 'wpmc-step-payment',
'sections' => array( 'payment' ),
),
);
return $steps;
}
}
if ( ! function_exists( 'wmsc_step_content_login' ) ) {
/**
* The content for the Login step.
*
* @param object $checkout The Checkout object from the WooCommerce plugin.
* @param bool $stop_at_login If the user should be logged in in order to checkout.
*/
function wmsc_step_content_login( $checkout, $stop_at_login ) { ?>
<div class="wpmc-step-item wpmc-step-login">
<div id="checkout_login" class="woocommerce_checkout_login wp-multi-step-checkout-step">
<?php
woocommerce_login_form(
array(
'message' => apply_filters( 'woocommerce_checkout_logged_in_message', __( 'If you have shopped with us before, please enter your details in the boxes below. If you are a new customer, please proceed to the Billing &amp; Shipping section.', 'wp-multi-step-checkout' ) ),
'redirect' => wc_get_page_permalink( 'checkout' ),
'hidden' => false,
)
);
?>
</div>
<?php
if ( $stop_at_login ) {
echo esc_html( apply_filters( 'woocommerce_checkout_must_be_logged_in_message', __( 'You must be logged in to checkout.', 'woocommerce' ) ) );
}
?>
</div>
<?php }
}
if ( ! function_exists( 'wmsc_step_content_billing' ) ) {
/**
* The content of the Billing step.
*/
function wmsc_step_content_billing() {
do_action( 'woocommerce_checkout_before_customer_details' );
do_action( 'woocommerce_checkout_billing' );
}
}
if ( ! function_exists( 'wmsc_step_content_shipping' ) ) {
/**
* The content of the Shipping step.
*/
function wmsc_step_content_shipping() {
do_action( 'woocommerce_checkout_shipping' );
do_action( 'woocommerce_checkout_after_customer_details' );
}
}
if ( ! function_exists( 'wmsc_step_content_payment' ) ) {
/**
* The content of the Order Payment step.
*/
function wmsc_step_content_payment() {
echo '<h3 id="payment_heading">' . esc_html__( 'Payment', 'woocommerce' ) . '</h3>';
do_action( 'wpmc-woocommerce_checkout_payment' );
do_action( 'woocommerce_checkout_after_order_review' );
}
}
if ( ! function_exists( 'wmsc_step_content_review' ) ) {
/**
* The content of the Order Review step.
*/
function wmsc_step_content_review() {
do_action( 'woocommerce_checkout_before_order_review_heading' );
echo '<h3 id="order_review_heading">' . esc_html__( 'Your order', 'woocommerce' ) . '</h3>';
do_action( 'woocommerce_checkout_before_order_review' );
echo '<div id="order_review" class="woocommerce-checkout-review-order">';
do_action( 'woocommerce_checkout_order_review' );
do_action( 'wpmc-woocommerce_order_review' );
echo '</div>';
}
}
if ( ! function_exists( 'wmsc_step_content_payment_germanized' ) ) {
/**
* The content of the Payment step for the "Germanized for WooCommerce" plugin.
*/
function wmsc_step_content_payment_germanized() {
echo '<h3 id="payment_heading">' . esc_html__( 'Choose a Payment Gateway', 'woocommerce-germanized' ) . '</h3>';
do_action( 'wpmc-woocommerce_checkout_payment' );
}
}
if ( ! function_exists( 'wmsc_step_content_review_germanized' ) ) {
/**
* The content of the Order Review step for the "Germanized for WooCommerce" plugin.
*/
function wmsc_step_content_review_germanized() {
do_action( 'woocommerce_checkout_before_order_review_heading' );
echo '<h3 id="order_review_heading">' . esc_html__( 'Your order', 'woocommerce' ) . '</h3>';
do_action( 'woocommerce_checkout_before_order_review' );
echo '<div id="order_review" class="woocommerce-checkout-review-order">';
do_action( 'wpmc-woocommerce_order_review' );
if ( function_exists( 'woocommerce_gzd_template_order_submit' ) ) {
woocommerce_gzd_template_order_submit();
}
echo '</div>';
}
}
if ( ! function_exists( 'wmsc_step_content_review_german_market' ) ) {
/**
* The content of the Order Review step for the "German Market" plugin.
*/
function wmsc_step_content_review_german_market() {
do_action( 'woocommerce_checkout_before_order_review_heading' );
echo '<h3 id="order_review_heading">' . esc_html__( 'Your order', 'woocommerce' ) . '</h3>';
do_action( 'woocommerce_checkout_before_order_review' );
echo '<div id="order_review" class="woocommerce-checkout-review-order">';
do_action( 'wpmc-woocommerce_order_review' );
do_action( 'woocommerce_checkout_order_review' );
echo '</div>';
}
}
if ( ! function_exists( 'wmsc_step_content_payment_german_market' ) ) {
/**
* The content of the Order Payment step for the "German Market" plugin.
*/
function wmsc_step_content_payment_german_market() {
echo '<h3 id="payment_heading">' . esc_html__( 'Payment', 'woocommerce' ) . '</h3>';
do_action( 'wpmc-woocommerce_checkout_payment' );
}
}
if ( ! function_exists( 'wpmc_sort_by_position' ) ) {
/**
* Comparison function for sorting the steps.
*
* @param array $a First array.
* @param array $b Second array.
*/
function wpmc_sort_by_position( $a, $b ) {
return $a['position'] - $b['position'];
}
}
if ( ! function_exists( 'wmsc_delete_step_by_category' ) ) {
/**
* Delete a step if one/all products in a category or not in a category.
*
* Use the `wmsc_delete_step_by_category` filter to set up the settings.
*
* @param array $steps The steps array.
*/
function wmsc_delete_step_by_category( $steps ) {
$settings = apply_filters(
'wmsc_delete_step_by_category',
array(
'remove_step' => 'shipping',
'one_product_in_categories' => array(),
'all_products_in_categories' => array(),
'one_product_in_all_except_categories' => array(),
'all_products_in_all_except_categories' => array(),
)
);
extract( $settings );
$cart = WC()->cart->get_cart_contents();
$products = array();
if ( ! is_array( $cart ) || count( $cart ) === 0 ) {
return $steps;
}
foreach ( $cart as $_product ) {
$this_product_in_category = false;
$_cat = get_the_terms( $_product['product_id'], 'product_cat' );
if ( is_array( $_cat ) && count( $_cat ) > 0 ) {
foreach ( $_cat as $__cat ) {
$products[ $_product['product_id'] ][] = $__cat->slug;
}
}
}
if ( count( $products ) === 0 ) {
return $steps;
}
$products_intersect = $products_union = array_shift( $products );
while ( count( $products ) > 0 ) {
$one_product = array_shift( $products );
$products_intersect = array_intersect( $products_intersect, $one_product );
$products_union = array_merge( $products_union, $one_product );
}
if ( count( $one_product_in_categories ) > 0 ) {
foreach ( $one_product_in_categories as $_cat ) {
if ( array_search( $_cat, $products_union, true ) !== false ) {
unset( $steps[ $remove_step ] );
}
}
}
if ( count( $all_products_in_categories ) > 0 ) {
foreach ( $all_products_in_categories as $_cat ) {
if ( array_search( $_cat, $products_intersect, true ) !== false ) {
unset( $steps[ $remove_step ] );
}
}
}
if ( count( $one_product_in_all_except_categories ) > 0 ) {
if ( count( array_intersect( $one_product_in_all_except_categories, $products_union ) ) === 0 ) {
unset( $steps[ $remove_step ] );
}
}
if ( count( $all_products_in_all_except_categories ) > 0 ) {
if ( count( array_intersect( $all_products_in_all_except_categories, $products_intersect ) ) === 0 ) {
unset( $steps[ $remove_step ] );
}
}
return $steps;
}
}
add_filter( 'wpmc_modify_steps', 'wmsc_delete_step_by_category', 30 );

View File

@@ -0,0 +1,140 @@
# Copyright (C) 2017 Multi-Step Checkout for WooCommerce
# This file is distributed under the same license as the Multi-Step Checkout for WooCommerce package.
msgid ""
msgstr ""
"Project-Id-Version: Multi-Step Checkout for WooCommerce 1.2\n"
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/wp-multi-step-"
"checkout\n"
"POT-Creation-Date: 2017-12-05 16:29:28+00:00\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2017-12-05 21:40+0100\n"
"Last-Translator: Diana Burduja <diana@wootips.com>\n"
"Language-Team: \n"
"X-Generator: Poedit 1.6.10\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"Language: de\n"
#: includes/admin-side.php:18
msgid "Main color"
msgstr "Die Hauptfarbe"
#: includes/admin-side.php:19
msgid "Show the \"Back to Cart\" button"
msgstr "\"Zurück zum Warenkorb\" Button anzeigen"
#: includes/admin-side.php:20
msgid "Show the Shipping step"
msgstr "Den Schritt \"Versand\" anzeigen"
#: includes/admin-side.php:21
msgid "Show the Billing and the Shipping steps together"
msgstr "Die Schritte \"Rechnung\" und \"Versand\" kombiniert anzeigen"
#: includes/admin-side.php:22
msgid "Show the Order and the Payment steps together"
msgstr "Die Schritte \"Bestellung\" und \"Zahlung\" kombiniert anzeigen"
#. Plugin Name of the plugin/theme
#: includes/admin-side.php:94
msgid "Multi-Step Checkout for WooCommerce"
msgstr "Multi-Step Checkout for WooCommerce"
#: includes/form-buttons.php:10
msgctxt "Frontend: button label"
msgid "Back to cart"
msgstr "Zurück zum Warenkorb"
#: includes/form-buttons.php:14
msgctxt "Frontend: button label"
msgid "Previous"
msgstr "Zurück"
#: includes/form-buttons.php:15
msgctxt "Frontend: button label"
msgid "Next"
msgstr "Weiter"
#: includes/form-buttons.php:16
msgctxt "Frontend: button label"
msgid "Skip Login"
msgstr "Login überspringen"
#: includes/form-checkout.php:52
msgid ""
"If you have shopped with us before, please enter your details in the boxes "
"below. If you are a new customer, please proceed to the Billing &amp; "
"Shipping section."
msgstr ""
"Wenn du schon einmal bei uns bestellt hast, gib bitte deinen Benutzernamen "
"bzw. E-Mail und dein Passwort ein. Falls du das erste mal bestellst, fülle "
"bitte die Zahlungs- und Versandangaben unten aus."
#: includes/form-checkout.php:61
msgid "You must be logged in to checkout."
msgstr "Bitte melde dich an, um die Bestellung abzuschließen."
#: includes/form-checkout.php:92
msgid "Your order"
msgstr "Deine Bestellung"
#: includes/form-checkout.php:98 includes/form-tabs.php:26
msgid "Payment"
msgstr "Zahlung"
#: includes/form-tabs.php:10
msgid "Login"
msgstr "Login"
#: includes/form-tabs.php:14
msgid "Billing"
msgstr "Rechnung"
#: includes/form-tabs.php:18
msgid "Shipping"
msgstr "Versand"
#: includes/form-tabs.php:22
msgid "Order"
msgstr "Bestellung"
#: includes/form-tabs.php:34
msgid "Billing & Shipping"
msgstr "Rechnung & Versand"
#: includes/form-tabs.php:38
msgid "Order & Payment"
msgstr "Bestellung & Zahlung"
#: wp-multi-step-checkout.php:56 wp-multi-step-checkout.php:63
msgid "Cheatin&#8217; huh?"
msgstr "Cheatin&#8217; huh?"
#: wp-multi-step-checkout.php:210
msgid ""
"The WP Multi-Step Checkout plugin is enabled, but it requires WooCommerce in "
"order to work."
msgstr ""
"Das WP Multi-Step Checkout Plugin is aktiviert, aber es benötigt WooCommerce "
"um zu funktionieren."
#: wp-multi-step-checkout.php:232
msgid "Settings"
msgstr "Einstellungen"
#. Plugin URI of the plugin/theme
msgid "https://wordpress.org/plugins/wp-multi-step-checkout/"
msgstr "https://wordpress.org/plugins/wp-multi-step-checkout/"
#. Description of the plugin/theme
msgid "Nice multi-step checkout for your WooCommerce store"
msgstr ""
#. Author of the plugin/theme
msgid "SilkyPress"
msgstr "SilkyPress"
#. Author URI of the plugin/theme
msgid "https://www.silkypress.com"
msgstr "https://www.silkypress.com"

View File

@@ -0,0 +1,140 @@
# Copyright (C) 2017 Multi-Step Checkout for WooCommerce
# This file is distributed under the same license as the Multi-Step Checkout for WooCommerce package.
msgid ""
msgstr ""
"Project-Id-Version: Multi-Step Checkout for WooCommerce 1.2\n"
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/wp-multi-step-"
"checkout\n"
"POT-Creation-Date: 2017-12-05 16:29:28+00:00\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2017-12-05 21:40+0100\n"
"Last-Translator: Diana Burduja <diana@wootips.com>\n"
"Language-Team: \n"
"X-Generator: Poedit 1.6.10\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"Language: de\n"
#: includes/admin-side.php:18
msgid "Main color"
msgstr "Die Hauptfarbe"
#: includes/admin-side.php:19
msgid "Show the \"Back to Cart\" button"
msgstr "\"Zurück zum Warenkorb\" Button anzeigen"
#: includes/admin-side.php:20
msgid "Show the Shipping step"
msgstr "Den Schritt \"Versand\" anzeigen"
#: includes/admin-side.php:21
msgid "Show the Billing and the Shipping steps together"
msgstr "Die Schritte \"Rechnung\" und \"Versand\" kombiniert anzeigen"
#: includes/admin-side.php:22
msgid "Show the Order and the Payment steps together"
msgstr "Die Schritte \"Bestellung\" und \"Zahlung\" kombiniert anzeigen"
#. Plugin Name of the plugin/theme
#: includes/admin-side.php:94
msgid "Multi-Step Checkout for WooCommerce"
msgstr "Multi-Step Checkout for WooCommerce"
#: includes/form-buttons.php:10
msgctxt "Frontend: button label"
msgid "Back to cart"
msgstr "Zurück zum Warenkorb"
#: includes/form-buttons.php:14
msgctxt "Frontend: button label"
msgid "Previous"
msgstr "Zurück"
#: includes/form-buttons.php:15
msgctxt "Frontend: button label"
msgid "Next"
msgstr "Weiter"
#: includes/form-buttons.php:16
msgctxt "Frontend: button label"
msgid "Skip Login"
msgstr "Login überspringen"
#: includes/form-checkout.php:52
msgid ""
"If you have shopped with us before, please enter your details in the boxes "
"below. If you are a new customer, please proceed to the Billing &amp; "
"Shipping section."
msgstr ""
"Wenn du schon einmal bei uns bestellt hast, gib bitte deinen Benutzernamen "
"bzw. E-Mail und dein Passwort ein. Falls du das erste mal bestellst, fülle "
"bitte die Zahlungs- und Versandangaben unten aus."
#: includes/form-checkout.php:61
msgid "You must be logged in to checkout."
msgstr "Bitte melde dich an, um die Bestellung abzuschließen."
#: includes/form-checkout.php:92
msgid "Your order"
msgstr "Deine Bestellung"
#: includes/form-checkout.php:98 includes/form-tabs.php:26
msgid "Payment"
msgstr "Zahlung"
#: includes/form-tabs.php:10
msgid "Login"
msgstr "Login"
#: includes/form-tabs.php:14
msgid "Billing"
msgstr "Rechnung"
#: includes/form-tabs.php:18
msgid "Shipping"
msgstr "Versand"
#: includes/form-tabs.php:22
msgid "Order"
msgstr "Bestellung"
#: includes/form-tabs.php:34
msgid "Billing & Shipping"
msgstr "Rechnung & Versand"
#: includes/form-tabs.php:38
msgid "Order & Payment"
msgstr "Bestellung & Zahlung"
#: wp-multi-step-checkout.php:56 wp-multi-step-checkout.php:63
msgid "Cheatin&#8217; huh?"
msgstr "Cheatin&#8217; huh?"
#: wp-multi-step-checkout.php:210
msgid ""
"The WP Multi-Step Checkout plugin is enabled, but it requires WooCommerce in "
"order to work."
msgstr ""
"Das WP Multi-Step Checkout Plugin is aktiviert, aber es benötigt WooCommerce "
"um zu funktionieren."
#: wp-multi-step-checkout.php:232
msgid "Settings"
msgstr "Einstellungen"
#. Plugin URI of the plugin/theme
msgid "https://wordpress.org/plugins/wp-multi-step-checkout/"
msgstr "https://wordpress.org/plugins/wp-multi-step-checkout/"
#. Description of the plugin/theme
msgid "Nice multi-step checkout for your WooCommerce store"
msgstr ""
#. Author of the plugin/theme
msgid "SilkyPress"
msgstr "SilkyPress"
#. Author URI of the plugin/theme
msgid "https://www.silkypress.com"
msgstr "https://www.silkypress.com"

View File

@@ -0,0 +1,127 @@
# Translation of Plugins - Multi-Step Checkout for WooCommerce - Development (trunk) in French (France)
# This file is distributed under the same license as the Plugins - Multi-Step Checkout for WooCommerce - Development (trunk) package.
msgid ""
msgstr ""
"PO-Revision-Date: +0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: GlotPress/2.4.0-alpha\n"
"Language: fr\n"
"Project-Id-Version: Plugins - Multi-Step Checkout for WooCommerce - Development (trunk)\n"
#. Author URI of the plugin/theme
msgid "https://www.silkypress.com"
msgstr "https://www.silkypress.com"
#. Author of the plugin/theme
msgid "SilkyPress"
msgstr "SilkyPress"
#. Description of the plugin/theme
msgid "Nice multi-step checkout for your WooCommerce store"
msgstr "Agréable multi-step checkout pour votre boutique WooCommerce"
#. Plugin URI of the plugin/theme
msgid "https://wordpress.org/plugins/wp-multi-step-checkout/"
msgstr "https://wordpress.org/plugins/wp-multi-step-checkout/"
#: wp-multi-step-checkout.php:240
msgid "Settings"
msgstr "Réglages"
#: wp-multi-step-checkout.php:211
msgid "The WP Multi-Step Checkout plugin is enabled, but it requires WooCommerce in order to work."
msgstr "Le plugin WP Multi-Step Checkout est activé, mais il nécessite WooCommerce pour fonctionner."
#: wp-multi-step-checkout.php:56 wp-multi-step-checkout.php:63
msgid "Cheatin&#8217; huh?"
msgstr "Cheatin&#8217; huh?"
#: includes/form-tabs.php:38
msgid "Order & Payment"
msgstr "Commande & Paiement"
#: includes/form-tabs.php:34
msgid "Billing & Shipping"
msgstr "Facturation & Expédition"
#: includes/form-tabs.php:22
msgid "Order"
msgstr "Commande"
#: includes/form-tabs.php:18
msgid "Shipping"
msgstr "Livraison"
#: includes/form-tabs.php:14
msgid "Billing"
msgstr "Facturation"
#: includes/form-tabs.php:10
msgid "Login"
msgstr "Connexion"
#: includes/form-checkout.php:98 includes/form-tabs.php:26
msgid "Payment"
msgstr "Paiement"
#: includes/form-checkout.php:92
msgid "Your order"
msgstr "Votre commande"
#: includes/form-checkout.php:61
msgid "You must be logged in to checkout."
msgstr "Vous devez être identifié pour commander."
#: includes/form-checkout.php:52
msgid "If you have shopped with us before, please enter your details in the boxes below. If you are a new customer, please proceed to the Billing &amp; Shipping section."
msgstr "Si vous avez déjà commandé avec nous auparavant, veuillez saisir vos coordonnées ci-dessous. Si vous êtes un nouveau client, veuillez renseigner la section facturation et livraison."
#: includes/form-buttons.php:16
msgctxt "Frontend: button label"
msgid "Skip Login"
msgstr "Ignorer l'Identification"
#: includes/form-buttons.php:15
msgctxt "Frontend: button label"
msgid "Next"
msgstr "Suivant"
#: includes/form-buttons.php:14
msgctxt "Frontend: button label"
msgid "Previous"
msgstr "Précédent"
#: includes/form-buttons.php:10
msgctxt "Frontend: button label"
msgid "Back to cart"
msgstr "Retour au panier"
#. #-#-#-#-# wp-multi-step-checkout-code.pot (Multi-Step Checkout for WooCommerce
#. 1.3) #-#-#-#-#
#. Plugin Name of the plugin/theme
#: includes/admin-side.php:94
msgid "Multi-Step Checkout for WooCommerce"
msgstr "Multi-Step Checkout for WooCommerce"
#: includes/admin-side.php:22
msgid "Show the Order and the Payment steps together"
msgstr "Afficher ensemble la Commande et les étapes de Paiement"
#: includes/admin-side.php:21
msgid "Show the Billing and the Shipping steps together"
msgstr "Afficher ensemble les étapes de Facturation et d'Expédition"
#: includes/admin-side.php:20
msgid "Show the Shipping step"
msgstr "Afficher l'étape d'Expédition"
#: includes/admin-side.php:19
msgid "Show the \"Back to Cart\" button"
msgstr "Afficher le bouton \"Retour au panier\""
#: includes/admin-side.php:18
msgid "Main color"
msgstr "Couleur principale"

View File

@@ -0,0 +1,127 @@
# Translation of Plugins - Multi-Step Checkout for WooCommerce - Development (trunk) in French (France)
# This file is distributed under the same license as the Plugins - Multi-Step Checkout for WooCommerce - Development (trunk) package.
msgid ""
msgstr ""
"PO-Revision-Date: +0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: GlotPress/2.4.0-alpha\n"
"Language: fr\n"
"Project-Id-Version: Plugins - Multi-Step Checkout for WooCommerce - Development (trunk)\n"
#. Author URI of the plugin/theme
msgid "https://www.silkypress.com"
msgstr "https://www.silkypress.com"
#. Author of the plugin/theme
msgid "SilkyPress"
msgstr "SilkyPress"
#. Description of the plugin/theme
msgid "Nice multi-step checkout for your WooCommerce store"
msgstr "Agréable multi-step checkout pour votre boutique WooCommerce"
#. Plugin URI of the plugin/theme
msgid "https://wordpress.org/plugins/wp-multi-step-checkout/"
msgstr "https://wordpress.org/plugins/wp-multi-step-checkout/"
#: wp-multi-step-checkout.php:240
msgid "Settings"
msgstr "Réglages"
#: wp-multi-step-checkout.php:211
msgid "The WP Multi-Step Checkout plugin is enabled, but it requires WooCommerce in order to work."
msgstr "Le plugin WP Multi-Step Checkout est activé, mais il nécessite WooCommerce pour fonctionner."
#: wp-multi-step-checkout.php:56 wp-multi-step-checkout.php:63
msgid "Cheatin&#8217; huh?"
msgstr "Cheatin&#8217; huh?"
#: includes/form-tabs.php:38
msgid "Order & Payment"
msgstr "Commande & Paiement"
#: includes/form-tabs.php:34
msgid "Billing & Shipping"
msgstr "Facturation & Expédition"
#: includes/form-tabs.php:22
msgid "Order"
msgstr "Commande"
#: includes/form-tabs.php:18
msgid "Shipping"
msgstr "Livraison"
#: includes/form-tabs.php:14
msgid "Billing"
msgstr "Facturation"
#: includes/form-tabs.php:10
msgid "Login"
msgstr "Connexion"
#: includes/form-checkout.php:98 includes/form-tabs.php:26
msgid "Payment"
msgstr "Paiement"
#: includes/form-checkout.php:92
msgid "Your order"
msgstr "Votre commande"
#: includes/form-checkout.php:61
msgid "You must be logged in to checkout."
msgstr "Vous devez être identifié pour commander."
#: includes/form-checkout.php:52
msgid "If you have shopped with us before, please enter your details in the boxes below. If you are a new customer, please proceed to the Billing &amp; Shipping section."
msgstr "Si vous avez déjà commandé avec nous auparavant, veuillez saisir vos coordonnées ci-dessous. Si vous êtes un nouveau client, veuillez renseigner la section facturation et livraison."
#: includes/form-buttons.php:16
msgctxt "Frontend: button label"
msgid "Skip Login"
msgstr "Ignorer l'Identification"
#: includes/form-buttons.php:15
msgctxt "Frontend: button label"
msgid "Next"
msgstr "Suivant"
#: includes/form-buttons.php:14
msgctxt "Frontend: button label"
msgid "Previous"
msgstr "Précédent"
#: includes/form-buttons.php:10
msgctxt "Frontend: button label"
msgid "Back to cart"
msgstr "Retour au panier"
#. #-#-#-#-# wp-multi-step-checkout-code.pot (Multi-Step Checkout for WooCommerce
#. 1.3) #-#-#-#-#
#. Plugin Name of the plugin/theme
#: includes/admin-side.php:94
msgid "Multi-Step Checkout for WooCommerce"
msgstr "Multi-Step Checkout for WooCommerce"
#: includes/admin-side.php:22
msgid "Show the Order and the Payment steps together"
msgstr "Afficher ensemble la Commande et les étapes de Paiement"
#: includes/admin-side.php:21
msgid "Show the Billing and the Shipping steps together"
msgstr "Afficher ensemble les étapes de Facturation et d'Expédition"
#: includes/admin-side.php:20
msgid "Show the Shipping step"
msgstr "Afficher l'étape d'Expédition"
#: includes/admin-side.php:19
msgid "Show the \"Back to Cart\" button"
msgstr "Afficher le bouton \"Retour au panier\""
#: includes/admin-side.php:18
msgid "Main color"
msgstr "Couleur principale"

View File

@@ -0,0 +1,127 @@
# Translation of Plugins - Multi-Step Checkout for WooCommerce - Development (trunk) in French (France)
# This file is distributed under the same license as the Plugins - Multi-Step Checkout for WooCommerce - Development (trunk) package.
msgid ""
msgstr ""
"PO-Revision-Date: +0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: GlotPress/2.4.0-alpha\n"
"Language: fr\n"
"Project-Id-Version: Plugins - Multi-Step Checkout for WooCommerce - Development (trunk)\n"
#. Author URI of the plugin/theme
msgid "https://www.silkypress.com"
msgstr "https://www.silkypress.com"
#. Author of the plugin/theme
msgid "SilkyPress"
msgstr "SilkyPress"
#. Description of the plugin/theme
msgid "Nice multi-step checkout for your WooCommerce store"
msgstr "Agréable multi-step checkout pour votre boutique WooCommerce"
#. Plugin URI of the plugin/theme
msgid "https://wordpress.org/plugins/wp-multi-step-checkout/"
msgstr "https://wordpress.org/plugins/wp-multi-step-checkout/"
#: wp-multi-step-checkout.php:240
msgid "Settings"
msgstr "Réglages"
#: wp-multi-step-checkout.php:211
msgid "The WP Multi-Step Checkout plugin is enabled, but it requires WooCommerce in order to work."
msgstr "Le plugin WP Multi-Step Checkout est activé, mais il nécessite WooCommerce pour fonctionner."
#: wp-multi-step-checkout.php:56 wp-multi-step-checkout.php:63
msgid "Cheatin&#8217; huh?"
msgstr "Cheatin&#8217; huh?"
#: includes/form-tabs.php:38
msgid "Order & Payment"
msgstr "Commande & Paiement"
#: includes/form-tabs.php:34
msgid "Billing & Shipping"
msgstr "Facturation & Expédition"
#: includes/form-tabs.php:22
msgid "Order"
msgstr "Commande"
#: includes/form-tabs.php:18
msgid "Shipping"
msgstr "Livraison"
#: includes/form-tabs.php:14
msgid "Billing"
msgstr "Facturation"
#: includes/form-tabs.php:10
msgid "Login"
msgstr "Connexion"
#: includes/form-checkout.php:98 includes/form-tabs.php:26
msgid "Payment"
msgstr "Paiement"
#: includes/form-checkout.php:92
msgid "Your order"
msgstr "Votre commande"
#: includes/form-checkout.php:61
msgid "You must be logged in to checkout."
msgstr "Vous devez être identifié pour commander."
#: includes/form-checkout.php:52
msgid "If you have shopped with us before, please enter your details in the boxes below. If you are a new customer, please proceed to the Billing &amp; Shipping section."
msgstr "Si vous avez déjà commandé avec nous auparavant, veuillez saisir vos coordonnées ci-dessous. Si vous êtes un nouveau client, veuillez renseigner la section facturation et livraison."
#: includes/form-buttons.php:16
msgctxt "Frontend: button label"
msgid "Skip Login"
msgstr "Ignorer l'Identification"
#: includes/form-buttons.php:15
msgctxt "Frontend: button label"
msgid "Next"
msgstr "Suivant"
#: includes/form-buttons.php:14
msgctxt "Frontend: button label"
msgid "Previous"
msgstr "Précédent"
#: includes/form-buttons.php:10
msgctxt "Frontend: button label"
msgid "Back to cart"
msgstr "Retour au panier"
#. #-#-#-#-# wp-multi-step-checkout-code.pot (Multi-Step Checkout for WooCommerce
#. 1.3) #-#-#-#-#
#. Plugin Name of the plugin/theme
#: includes/admin-side.php:94
msgid "Multi-Step Checkout for WooCommerce"
msgstr "Multi-Step Checkout for WooCommerce"
#: includes/admin-side.php:22
msgid "Show the Order and the Payment steps together"
msgstr "Afficher ensemble la Commande et les étapes de Paiement"
#: includes/admin-side.php:21
msgid "Show the Billing and the Shipping steps together"
msgstr "Afficher ensemble les étapes de Facturation et d'Expédition"
#: includes/admin-side.php:20
msgid "Show the Shipping step"
msgstr "Afficher l'étape d'Expédition"
#: includes/admin-side.php:19
msgid "Show the \"Back to Cart\" button"
msgstr "Afficher le bouton \"Retour au panier\""
#: includes/admin-side.php:18
msgid "Main color"
msgstr "Couleur principale"

View File

@@ -0,0 +1,141 @@
# Copyright (C) 2017 Multi-Step Checkout for WooCommerce
# This file is distributed under the same license as the Multi-Step Checkout for WooCommerce package.
msgid ""
msgstr ""
"Project-Id-Version: Multi-Step Checkout for WooCommerce 1.2\n"
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/wp-multi-step-"
"checkout\n"
"POT-Creation-Date: 2017-12-05 16:29:28+00:00\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2019-01-24 15:00+0100\n"
"Last-Translator: Webmaster Theatergroep Maarssen'32 <webmaster@maarssen32."
"nl>\n"
"Language-Team: Nederlands\n"
"Language: nl_NL\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Poedit 2.2.1\n"
"X-Loco-Version: 2.2.0; wp-5.0.1\n"
#: includes/admin-side.php:18
msgid "Main color"
msgstr "Basis kleur"
#: includes/admin-side.php:19
msgid "Show the \"Back to Cart\" button"
msgstr "Toon de \"terug naar winkelwagententje\" button"
#: includes/admin-side.php:20
msgid "Show the Shipping step"
msgstr "Toon de verzendings stap"
#: includes/admin-side.php:21
msgid "Show the Billing and the Shipping steps together"
msgstr "Toon de Facturatie en Versturen steppen tegelijk"
#: includes/admin-side.php:22
msgid "Show the Order and the Payment steps together"
msgstr "Toon de Bestelling en Betaling stappen tegelijk"
#. Plugin Name of the plugin/theme
#: includes/admin-side.php:94
msgid "Multi-Step Checkout for WooCommerce"
msgstr "Multi-Step Checkout for WooCommerce"
#: includes/form-buttons.php:10
msgctxt "Frontend: button label"
msgid "Back to cart"
msgstr "Terug naar winkelwagen"
#: includes/form-buttons.php:14
msgctxt "Frontend: button label"
msgid "Previous"
msgstr "Vorige"
#: includes/form-buttons.php:15
msgctxt "Frontend: button label"
msgid "Next"
msgstr "Volgende"
#: includes/form-buttons.php:16
msgctxt "Frontend: button label"
msgid "Skip Login"
msgstr "Inloggen overslaan"
#: includes/form-checkout.php:52
msgid ""
"If you have shopped with us before, please enter your details in the boxes "
"below. If you are a new customer, please proceed to the Billing &amp; "
"Shipping section."
msgstr ""
"Als je eerder bij ons hebt gewinkeld, vul dan hieronder je gegevens in. "
"Als je een nieuwe klant bent, ga dan door naar facturering en verzending."
#: includes/form-checkout.php:61
msgid "You must be logged in to checkout."
msgstr "U moet inloggen in de kassa."
#: includes/form-checkout.php:92
msgid "Your order"
msgstr "Uw bestelling"
#: includes/form-checkout.php:98 includes/form-tabs.php:26
msgid "Payment"
msgstr "Betaling"
#: includes/form-tabs.php:10
msgid "Login"
msgstr "Inloggen"
#: includes/form-tabs.php:14
msgid "Billing"
msgstr "Facturering"
#: includes/form-tabs.php:18
msgid "Shipping"
msgstr "Verzending"
#: includes/form-tabs.php:22
msgid "Order"
msgstr "Bestelling"
#: includes/form-tabs.php:34
msgid "Billing & Shipping"
msgstr "Facturering & Versturen"
#: includes/form-tabs.php:38
msgid "Order & Payment"
msgstr "Bestelling & Betaling"
#: wp-multi-step-checkout.php:56 wp-multi-step-checkout.php:63
msgid "Cheatin&#8217; huh?"
msgstr "Valsspelen huh?"
#: wp-multi-step-checkout.php:210
msgid ""
"The WP Multi-Step Checkout plugin is enabled, but it requires WooCommerce in "
"order to work."
msgstr ""
"De WP Multi-Step Checkout-plug-in is ingeschakeld, maar hiervoor is "
"WooCommerce vereist om de plugin te gebruiken"
#: wp-multi-step-checkout.php:232
msgid "Settings"
msgstr "Instellingen"
#. Plugin URI of the plugin/theme
msgid "https://wordpress.org/plugins/wp-multi-step-checkout/"
msgstr "https://wordpress.org/plugins/wp-multi-step-checkout/"
#. Description of the plugin/theme
msgid "Nice multi-step checkout for your WooCommerce store"
msgstr "Leuke Mult-step Kassa voor u WooCommerce winkel"
#. Author of the plugin/theme
msgid "SilkyPress"
msgstr "SilkyPress"
#. Author URI of the plugin/theme
msgid "https://www.silkypress.com"
msgstr "https://wordpress.org/plugins/wp-multi-step-checkout/"

View File

@@ -0,0 +1,133 @@
# Copyright (C) 2017 Multi-Step Checkout for WooCommerce
# This file is distributed under the same license as the Multi-Step Checkout for WooCommerce package.
msgid ""
msgstr ""
"Project-Id-Version: Multi-Step Checkout for WooCommerce 1.2\n"
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/wp-multi-step-"
"checkout\n"
"POT-Creation-Date: 2017-12-05 16:29:28+00:00\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2017-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
#: includes/admin-side.php:18
msgid "Main color"
msgstr ""
#: includes/admin-side.php:19
msgid "Show the \"Back to Cart\" button"
msgstr ""
#: includes/admin-side.php:20
msgid "Show the Shipping step"
msgstr ""
#: includes/admin-side.php:21
msgid "Show the Billing and the Shipping steps together"
msgstr ""
#: includes/admin-side.php:22
msgid "Show the Order and the Payment steps together"
msgstr ""
#. #-#-#-#-# wp-multi-step-checkout.pot (Multi-Step Checkout for WooCommerce 1.2) #-#-#-#-#
#. Plugin Name of the plugin/theme
#: includes/admin-side.php:94
msgid "Multi-Step Checkout for WooCommerce"
msgstr ""
#: includes/form-buttons.php:10
msgctxt "Frontend: button label"
msgid "Back to cart"
msgstr ""
#: includes/form-buttons.php:14
msgctxt "Frontend: button label"
msgid "Previous"
msgstr ""
#: includes/form-buttons.php:15
msgctxt "Frontend: button label"
msgid "Next"
msgstr ""
#: includes/form-buttons.php:16
msgctxt "Frontend: button label"
msgid "Skip Login"
msgstr ""
#: includes/form-checkout.php:52
msgid ""
"If you have shopped with us before, please enter your details in the boxes "
"below. If you are a new customer, please proceed to the Billing &amp; "
"Shipping section."
msgstr ""
#: includes/form-checkout.php:61
msgid "You must be logged in to checkout."
msgstr ""
#: includes/form-checkout.php:92
msgid "Your order"
msgstr ""
#: includes/form-checkout.php:98 includes/form-tabs.php:26
msgid "Payment"
msgstr ""
#: includes/form-tabs.php:10
msgid "Login"
msgstr ""
#: includes/form-tabs.php:14
msgid "Billing"
msgstr ""
#: includes/form-tabs.php:18
msgid "Shipping"
msgstr ""
#: includes/form-tabs.php:22
msgid "Order"
msgstr ""
#: includes/form-tabs.php:34
msgid "Billing & Shipping"
msgstr ""
#: includes/form-tabs.php:38
msgid "Order & Payment"
msgstr ""
#: wp-multi-step-checkout.php:56 wp-multi-step-checkout.php:63
msgid "Cheatin&#8217; huh?"
msgstr ""
#: wp-multi-step-checkout.php:210
msgid ""
"The WP Multi-Step Checkout plugin is enabled, but it requires WooCommerce in "
"order to work."
msgstr ""
#: wp-multi-step-checkout.php:232
msgid "Settings"
msgstr ""
#. Plugin URI of the plugin/theme
msgid "https://wordpress.org/plugins/wp-multi-step-checkout/"
msgstr ""
#. Description of the plugin/theme
msgid "Nice multi-step checkout for your WooCommerce store"
msgstr ""
#. Author of the plugin/theme
msgid "SilkyPress"
msgstr ""
#. Author URI of the plugin/theme
msgid "https://www.silkypress.com"
msgstr ""

View File

@@ -0,0 +1,377 @@
=== Multi-Step Checkout for WooCommerce ===
Created: 30/10/2017
Contributors: diana_burduja
Email: diana@burduja.eu
Tags: multistep checkout, multi-step-checkout, woocommerce, checkout, shop checkout, checkout steps, checkout wizard, checkout style, checkout page
Requires at least: 3.0.1
Tested up to: 6.4
Stable tag: 2.26
License: GPLv3
License URI: http://www.gnu.org/licenses/gpl-3.0.html
Requires PHP: 5.2.4
Change your WooCommerce checkout page with a multi-step checkout page. This will let your customers have a faster and easier checkout process, therefore a better conversion rate for you.
== Description ==
Create a better user experience by splitting the checkout process in several steps. This will also improve your conversion rate.
The plugin was made with the use of the WooCommerce standard templates. This ensure that it should work with most the themes out there. Nevertheless, if you find that something isn't properly working, let us know in the Support forum.
= Features =
* Sleak design
* Mobile friendly
* Responsive layout
* Adjust the main color to your theme
* Inherit the form and buttons design from your theme
* Keyboard navigation
= Available translations =
* German
* French
Tags: multistep checkout, multi-step-checkout, woocommerce, checkout, shop checkout, checkout steps, checkout wizard, checkout style, checkout page
== Installation ==
* From the WP admin panel, click "Plugins" -> "Add new".
* In the browser input box, type "Multi-Step Checkout for WooCommerce".
* Select the "Multi-Step Checkout for WooCommerce" plugin and click "Install".
* Activate the plugin.
OR...
* Download the plugin from this page.
* Save the .zip file to a location on your computer.
* Open the WP admin panel, and click "Plugins" -> "Add new".
* Click "upload".. then browse to the .zip file downloaded from this page.
* Click "Install".. and then "Activate plugin".
OR...
* Download the plugin from this page.
* Extract the .zip file to a location on your computer.
* Use either FTP or your hosts cPanel to gain access to your website file directories.
* Browse to the `wp-content/plugins` directory.
* Upload the extracted `wp-multi-step-checkout` folder to this directory location.
* Open the WP admin panel.. click the "Plugins" page.. and click "Activate" under the newly added "Multi-Step Checkout for WooCommerce" plugin.
== Frequently Asked Questions ==
= Why is the login form missing on the checkout page? =
Make sure to enable the `Display returning customer login reminder on the "Checkout" page` option on the `WP Admin -> WooCommerce -> Settings -> Accounts` page
= Is the plugin GDPR compatible? =
The plugin doesn't add any cookies and it doesn't modify/add/delete any of the form fields. It simply reorganizes the checkout form into steps.
= My checkout page still isn't multi-step, though the plugin is activated =
Make sure to purge the cache from any of the caching plugins, or of reverse proxy services (for example CloudFlare) you're using.
Another possible cause could be that the checkout page isn't using the default [woocommerce_checkout] shortcode. For example, the Elementor Pro checkout element replaces the default [woocommerce_checkout] shortcode with its HTML counterpart. Go to the "WP Admin -> Pages" page, open the checkout page for editing and make sure the [woocommerce_checkout] is present there.
== Screenshots ==
1. Login form
2. Billing
3. Review Order
4. Choose Payment
5. Settings page
6. On mobile devices
== Changelog ==
= 2.26 =
* 10/16/2023
* Fix: open the Login step when clicking the "Please log in" link in the "Account already registered" message
* Feature: option to place the input fields from the Delivery & Pickup Time Date plugin in a separate step
= 2.25 =
* 06/24/2023
* Compatibility with the Mollie Payments plugin
= 2.24 =
* 05/19/2023
* Fix: missing "next/previous" button with the Elementor Pro checkout widget
* Fix: the Payment section was missing on the Blocksy theme, when the payment is in a separate step
* Fix: use the "default" checkout layout type from the Astra Addon Pro plugin
* Compatibility with the WooCommerce "Custom Order Tables" feature
= 2.23 =
* 02/03/2023
* Fix: add the "woocommerce_checkout_before_order_review" action hook
* Compatibility with the Fastland theme.
= 2.22 =
* 10/05/2022
* Fix: add a "clear: both" element between the step tabs and the validation error messages, so they don't optically overlap
* Fix: the Shipping section was missing on the Blocksy theme
* Feature: option to place the minimum age fields from the Minimum Age for WooCommerce plugin in a separate step
= 2.21 =
* 07/07/2022
* Compatibility with the Botiga theme.
* Feature: add the "wmsc_delete_step_by_category" filter
* Tweak: place the login validation error messages under the step tabs
= 2.20 =
* 04/19/2022
* Fix: no new line was added when the Enter key was hit inside the "Order notes" field.
* Feature: add common customizations to the assets/js/script.js file
= 2.19 =
* 01/04/2022
* Feature: add the "data-current-title" attribute to the steps
* Fix: the Shipping section was missing on the Neve theme
* Fix: the Order section was missing when the Elementor Pro Checkout widget was used on the checkout page
= 2.18 =
* 10/16/2021
* Fix: compatibility with the OceanWP theme
* Fix: the multi-steps weren't loading if the "Fallback Modus" option from the Germanized plugin is enabled.
* Fix: compatibility with the Local Pickup Plus plugin by SkyVerge
= 2.17 =
* 07/29/2021
* Compatibility with the themes by `fuelthemes`
* Fix: move the "woocommerce-notices-wrapper" before the step tabs
* Fix: move the script.min.js file in the footer. This avoids a JS error when the jQuery library is loaded twice. See the support topic: https://wordpress.org/support/topic/javascript-error-197/
* Fix: the select2 was not initialized on the shipping country and shipping state fields
= 2.16 =
* 04/27/2021
* Fix: check if window.location.hash is defined before using it
* Fix: missing steps content when the Avada Builder plugin is active
= 2.15 =
* 03/10/2021
* Tweak: add "wpmc-no-back-to-cart" CSS class
* Fix: correct the "Show the Login step" message
* Fix: increase the priority for the "woocommerce_locate_template" filter
* Tweak: add "btn-color-primary" CSS class to the buttons under the WoodMart theme
= 2.14 =
* 01/14/2021
* Modify the plugin's name from WooCommerce Multi-Step Checkout to Multi-Step Checkout for WooCommerce
= 2.13 =
* 12/07/2020
* Add the "woocommerce_checkout_logged_in_message" filter
* Fix: the Login section was misplaced in the Neve theme
* Fix: replace the $text_domain with a string
* Test with PHP 8.0, WordPress 5.6, WooCommerce 4.8, jQuery 3.5.1
= 2.12 =
* 10/12/2020
* Fix: use "flex-end" instead of "right" for the navigation buttons
* Test with WooCommerce 4.5
= 2.11 =
* 08/16/2020
* Fix: "Your Order" section under the Electro theme
* Test with WooCommerce 4.4
= 2.10 =
* 07/08/2020
* Fix: sale badges were missing on the Astra theme
* Fix: the "prev" and "next" buttons were present on the first and the last step if the theme was declaring a "display: inline-block !important" rule on the buttons
* Fix: add function to load the default WooCommerce template files. Useful for conflicts with some themes.
* Compatibility with the Porto theme
= 2.9.1 =
* 05/05/2020
* Declare compatibility WooCommerce 4.1
= 2.9 =
* 03/12/2020
* Declare compatibility WooCommerce 4.0
* Declare compatibility WordPress 5.4
* Tweak: add `wmsc_buttons_class` filter for the buttons class
= 2.8 =
* 01/30/2020
* Declare compatibility WooCommerce 3.9
* Fix: "prev" or "next" button wouldn't hide when necessary on theRetailer theme
= 2.7 =
* 12/31/2019
* Tweak: write navigation buttons with "flex" for a better responsible design
= 2.6 =
* 12/11/2019
* Fix: add CSS rule for a one-step checkout wizard
* Fix: use "self" instead of "this" in the "wpmc_switch_tab" JS hook
* Fix: the coupon was showing on the Payment step instead of the Order step on the Bridge theme
= 2.5.1 =
* 11/05/2019
* Fix: product titles disappeared from the product category pages on the Astra theme
= 2.5 =
* 10/31/2019
* Fix: the "Your Order" section on Avada theme was hidden
* Fix: the "Shipping" section on the Astra theme was missing
* Fix: The "Your Order" section on the Shopper theme was not full width
* Tweak: add an element with "clear:both" after the buttons, so they don't get covered with the next element
* Fix: the steps don't scroll up to the top on the Flatsome theme because of the sticky menu
= 2.4 =
* 10/01/2019
* Feature: when opening the /checkout/ page, open a specific tab with the #step-1 URL hash
* Fix: if "Ship to a different address?" not selected, don't switch tab to Shipping when an error is found
* Fix: don't show server-side errors on the login step
= 2.3 =
* 07/14/2019
* Change steps order for RTL language websites
* Fix: compatibility with the SendCloud plugin
* Fix: add the `woocommerce_checkout_after_customer_details` hook also when the Shipping step is removed
= 2.2 =
* 06/06/2019
* Fix: the legal terms were showing twice with WooCommerce Germanized
= 2.1 =
* 05/30/2019
* Fix: the coupon form was not showing up
* Show warning about an option in the German Market plugin
= 2.0 =
* 05/24/2019
* Warning: plugin incompatible with the Suki theme
* Code refactory so to allow programatically to add/remove/modify steps
= 1.20 =
* 05/08/2019
* Fix small issues with the WooCommerce Germanized plugin
* Declare compatibility with WordPress 5.2
= 1.19 =
* 04/27/2019
* Feature: compatibility with the WooCommerce Points and Rewards plugin
* Declare compatibility with WooCommerce 3.6
* Tweak: update the Bootstrap library used in the admin side to 3.4.1 version
= 1.18 =
* 04/12/2019
* Fix: the "Your Order" section is squished in half a column on the Storefront theme
* Fix: don't toggle the coupon form on the Avada theme
* Fix: remove constantly loading icon from the Zass theme
= 1.17 =
* 02/24/2019
* Feature: add the "wpmc_before_switching_tab" and "wpmc_after_switching_tab" JavaScript triggers to the ".woocommerce-checkout" element
* Fix: design error with WooCommerce Germanized and "Order & Payment" steps together
* Fix: small design fixes for the Avada theme
* Admin notice for "WooCommerce One Page Checkout" option for Avada theme
= 1.16.2 =
* 02/18/2019
* Fix: PHP warnings when WooCommerce Germanized isn't installed
= 1.16.1 =
* 02/17/2019
* Fix: use the available strings from WooCommerce Germanized so the translation doesn't break
= 1.16 =
* 02/14/2019
* Fix: input fields for the Square payment gateway were too small
* Fix: "load_text_domain" is loaded now in the "init" hook
* Fix: the steps were shown over the header if the header was transparent
* Fix: adjust the checkout form template for the Avada theme
* Fix: with Visual Composer the "next" and "previous" buttons weren't clickable on iPhone
* Fix: spelling errors in the nl_NL translation
* Compatibility with the WooCommerce Germanized plugin
= 1.15 =
* 12/27/2018
* Tweak: show a warning about the "Multi-Step Checkout" option for the OceanWP theme
* Compatibility with the WooCommerce Social Login plugin from SkyVerge
* Add nl_NL, nl_BE, fr_CA, fr_BE, de_CH languages
* Feature: option for the sign between two united steps. For example "Billing & Shipping"
= 1.14 =
* 12/04/2018
* Fix: set "padding:0" to the steps in order to normalize to all the themes
* Fix: the "WooCommerce not installed" message was showing up even if WooCommerce was installed
* Fix: small design changes for the Flatsome, Enfold and Bridge themes
* Fix: load the CSS and JS assets only on the checkout page
= 1.13 =
* 10/03/2018
* remove PHP notice when WPML option isn't enabled
= 1.12 =
* 09/06/2018
* New: the plugin is multi-language ready
= 1.11 =
* 07/28/2018
* Fix: warning for sizeof() in PHP >= 7.2
* Fix: rename the CSS enqueue identifier
* Tweak: rename the "Cheating huh?" error message
= 1.10 =
* 06/25/2018
* Fix: PHP notice for WooCommerce older than 3.0
* Fix: message in login form wasn't translated
= 1.9 =
* 05/21/2018
* Change: add instructions on how to remove the login form
* Fix: add the `woocommerce_before_checkout_form` filter even when the login form is missing
* Compatibility with the Avada theme
* Tweak: for Divi theme add the left arrow for the "Back to cart" and "Previous" button
= 1.8 =
* 03/31/2018
* Tweak: add minified versions for CSS and JS files
* Fix: unblock the form after removing the .processing CSS class
* Fix: hide the next/previous buttons on the Retailer theme
= 1.7 =
* 02/07/2018
* Fix: keyboard navigation on Safari/Chrome
* Fix: correct Settings link on the Plugins page
* Fix: option for enabling the keyboard navigation
= 1.6 =
* 01/19/2018
* Fix: center the tabs for wider screens
* Fix: show the "Have a coupon?" form from WooCommerce
= 1.5 =
* 01/18/2018
* Fix: for logged in users show the "Next" button and not the "Skip Login" button
= 1.4 =
* 12/18/2017
* Feature: allow to change the text on Steps and Buttons
* Tweak: change the settings page appearance
* Fix: change the "Back to Cart" tag from <a> to <button> in order to keep the theme's styling
* Add French translation
= 1.3 =
* 12/05/2017
* Add "language" folder and prepare the plugin for internationalization
* Add German translation
= 1.2 =
* 11/20/2017
* Fix: the steps were collapsing on mobile
* Fix: arrange the buttons in a row on mobile
= 1.1 =
* 11/09/2017
* Add a Settings page and screenshots
* Feature: scroll the page up when moving to another step and the tabs are out of the viewport
= 1.0 =
* 10/30/2017
* Initial commit
== Upgrade Notice ==
Nothing at the moment

View File

@@ -0,0 +1,270 @@
<?php
/**
* Plugin Name: Multi-Step Checkout for WooCommerce
* Plugin URI: https://wordpress.org/plugins/wp-multi-step-checkout/
* Description: Nice multi-step checkout for your WooCommerce store
* Version: 2.26
* Author: SilkyPress
* Author URI: https://www.silkypress.com
* License: GPL2
*
* Text Domain: wp-multi-step-checkout
* Domain Path: /languages/
*
* WC requires at least: 3.0.0
* WC tested up to: 8.6
* Requires PHP: 5.2.4
*
* @package WPMultiStepCheckout
*/
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly.
}
if ( ! class_exists( 'WPMultiStepCheckout' ) ) :
/**
* Main WPMultiStepCheckout Class
*
* @class WPMultiStepCheckout
*/
final class WPMultiStepCheckout {
/**
* Plugin's version.
*
* @var string
*/
public $version = '2.26';
/**
* Plugin's options.
*
* @var array
*/
public $options = array();
/**
* The instance of the class.
*
* @var WPMultiStepCheckout
*/
protected static $_instance = null;
/**
* Main WPMultiStepCheckout Instance
*
* Ensures only one instance of WPMultiStepCheckout is loaded or can be loaded
*
* @static
* @return WPMultiStepCheckout - Main instance
*/
public static function instance() {
if ( is_null( self::$_instance ) ) {
self::$_instance = new self();
}
return self::$_instance;
}
/**
* Cloning is forbidden.
*/
public function __clone() {
_doing_it_wrong( __FUNCTION__, __( 'An error has occurred. Please reload the page and try again.' ), '1.0' );
}
/**
* Unserializing instances of this class is forbidden.
*/
public function __wakeup() {
_doing_it_wrong( __FUNCTION__, __( 'An error has occurred. Please reload the page and try again.' ), '1.0' );
}
/**
* WPMultiStepCheckout Constructor
*/
public function __construct() {
define( 'WMSC_PLUGIN_FILE', __FILE__ );
define( 'WMSC_PLUGIN_URL', plugins_url( '/', __FILE__ ) );
define( 'WMSC_PLUGIN_PATH', plugin_dir_url( '/', __FILE__ ) );
define( 'WMSC_VERSION', $this->version );
if ( ! class_exists( 'woocommerce' ) ) {
add_action( 'admin_notices', array( $this, 'install_woocommerce_admin_notice' ) );
return false;
}
if ( is_admin() ) {
include_once 'includes/admin-side.php';
}
$this->update_14_version();
add_filter( 'woocommerce_locate_template', array( $this, 'woocommerce_locate_template' ), 30, 3 );
$this->adjust_hooks();
add_action( 'wp_enqueue_scripts', array( $this, 'wp_enqueue_scripts' ) );
add_action( 'init', array( $this, 'load_plugin_textdomain' ) );
include_once 'includes/class-wmsc-compatibilities.php';
}
/**
* Modify the default WooCommerce hooks
*/
public function adjust_hooks() {
// Remove login messages.
remove_action( 'woocommerce_before_checkout_form', 'woocommerce_checkout_login_form', 10 );
remove_action( 'woocommerce_before_checkout_form', 'woocommerce_checkout_coupon_form', 10 );
// Split the `Order` and the `Payment` tabs.
remove_action( 'woocommerce_checkout_order_review', 'woocommerce_order_review', 10 );
remove_action( 'woocommerce_checkout_order_review', 'woocommerce_checkout_payment', 20 );
add_action( 'wpmc-woocommerce_order_review', 'woocommerce_order_review', 20 );
add_action( 'wpmc-woocommerce_checkout_payment', 'woocommerce_checkout_payment', 10 );
// Split the `woocommerce_before_checkout_form`.
remove_action( 'woocommerce_before_checkout_form', 'woocommerce_checkout_login_form', 10 );
remove_action( 'woocommerce_before_checkout_form', 'woocommerce_checkout_coupon_form', 10 );
add_action( 'wpmc-woocommerce_checkout_login_form', 'woocommerce_checkout_login_form', 10 );
add_action( 'wpmc-woocommerce_checkout_coupon_form', 'woocommerce_checkout_coupon_form', 10 );
// Add the content functions to the steps.
add_action( 'wmsc_step_content_login', 'wmsc_step_content_login', 10 );
add_action( 'wmsc_step_content_shipping', 'wmsc_step_content_shipping', 10 );
add_action( 'wmsc_step_content_billing', 'wmsc_step_content_billing', 10 );
}
/**
* Load the form-checkout.php template from this plugin.
*
* @param string $template Template name.
* @param string $template_name Template name.
* @param string $template_path Template path. (default: '').
* @return string
*/
public function woocommerce_locate_template( $template, $template_name, $template_path ) {
if ( 'checkout/form-checkout.php' !== $template_name ) {
return $template;
}
$template = plugin_dir_path( __FILE__ ) . 'includes/form-checkout.php';
return $template;
}
/**
* Enqueue the JS and CSS assets
*/
public function wp_enqueue_scripts() {
if ( ! is_checkout() ) {
return;
}
$options = get_option( 'wmsc_options' );
$keyboard_nav = ( isset( $options['keyboard_nav'] ) && $options['keyboard_nav'] ) ? true : false;
$color = ( isset( $options['main_color'] ) ) ? wp_strip_all_tags( $options['main_color'] ) : '#1e85be';
$url = plugins_url( '/', __FILE__ ) . 'assets/';
$prefix = ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ? '' : '.min';
// JS variables.
$vars = array( 'keyboard_nav' => $keyboard_nav );
$vars_filters = array( 'hide_last_prev', 'hide_last_back_to_cart', 'skip_login_above_form', 'skip_login_next_to_login_button' );
foreach ( $vars_filters as $_filter ) {
if ( apply_filters( 'wpmc_' . $_filter, false ) ) {
$vars[ $_filter ] = true;
}
}
// Load scripts.
wp_register_script( 'wpmc', $url . 'js/script' . $prefix . '.js', array( 'jquery' ), $this->version, true );
wp_localize_script( 'wpmc', 'WPMC', apply_filters( 'wmsc_js_variables', $vars ) );
wp_register_style( 'wpmc', $url . 'css/style-progress' . $prefix . '.css', array(), $this->version );
wp_enqueue_script( 'wpmc' );
wp_enqueue_style( 'wpmc' );
// Load the inline styles.
$style = '.wpmc-tabs-wrapper .wpmc-tab-item.current::before { border-bottom-color:' . $color . '; }';
$style .= '.wpmc-tabs-wrapper .wpmc-tab-item.current .wpmc-tab-number { border-color: ' . $color . '; }';
if ( is_rtl() ) {
$style .= '.wpmc-tabs-list .wpmc-tab-item { float: right; }';
}
wp_add_inline_style( 'wpmc', $style );
}
/**
* Admin notice that WooCommerce is not activated
*/
public function install_woocommerce_admin_notice() {
?>
<div class="error">
<p><?php _x( 'The <b>Multi-Step Checkout for WooCommerce</b> plugin is enabled, but it requires WooCommerce in order to work.', 'Alert Message: WooCommerce require', 'wp-multi-step-checkout' ); ?></p>
</div>
<?php
}
/**
* Load the textdomain
*/
public function load_plugin_textdomain() {
load_plugin_textdomain( 'wp-multi-step-checkout', false, plugin_basename( dirname( __FILE__ ) ) . '/languages' );
}
/**
* Update options array for the 1.4 version
*/
public function update_14_version() {
if ( ! $old_options = get_option( 'wpmc-settings' ) ) {
return;
}
require_once 'includes/settings-array.php';
$defaults = get_wmsc_settings();
$new_options = array();
foreach ( $defaults as $_key => $_value ) {
if ( isset( $old_options[ $_key ] ) ) {
$new_options[ $_key ] = $old_options[ $_key ][2];
} else {
$new_options[ $_key ] = $_value['value'];
}
}
update_option( 'wmsc_options', $new_options );
delete_option( 'wpmc-settings' );
}
}
endif;
/**
* Returns the main instance of WPMultiStepCheckout
*
* @return WPMultiStepCheckout
*/
function WPMultiStepCheckout() {
return WPMultiStepCheckout::instance();
}
WPMultiStepCheckout();
/**
* Add Settings link on the Plugins page.
*
* @param array $links Currently available links.
*/
function wpmc_plugin_settings_link( $links ) {
$action_links = array(
'settings' => '<a href="' . admin_url( 'admin.php?page=wmsc-settings' ) . '" aria-label="' . esc_attr__( 'View plugin\'s settings', 'wp-multi-step-checkout' ) . '">' . esc_html__( 'Settings', 'wp-multi-step-checkout' ) . '</a>',
);
return array_merge( $action_links, $links );
}
add_filter( 'plugin_action_links_' . plugin_basename( __FILE__ ), 'wpmc_plugin_settings_link' );

View File

@@ -0,0 +1,270 @@
<?php
/**
* Plugin Name: Multi-Step Checkout for WooCommerce
* Plugin URI: https://wordpress.org/plugins/wp-multi-step-checkout/
* Description: Nice multi-step checkout for your WooCommerce store
* Version: 2.26
* Author: SilkyPress
* Author URI: https://www.silkypress.com
* License: GPL2
*
* Text Domain: wp-multi-step-checkout
* Domain Path: /languages/
*
* WC requires at least: 3.0.0
* WC tested up to: 8.6
* Requires PHP: 5.2.4
*
* @package WPMultiStepCheckout
*/
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly.
}
if ( ! class_exists( 'WPMultiStepCheckout' ) ) :
/**
* Main WPMultiStepCheckout Class
*
* @class WPMultiStepCheckout
*/
final class WPMultiStepCheckout {
/**
* Plugin's version.
*
* @var string
*/
public $version = '2.26';
/**
* Plugin's options.
*
* @var array
*/
public $options = array();
/**
* The instance of the class.
*
* @var WPMultiStepCheckout
*/
protected static $_instance = null;
/**
* Main WPMultiStepCheckout Instance
*
* Ensures only one instance of WPMultiStepCheckout is loaded or can be loaded
*
* @static
* @return WPMultiStepCheckout - Main instance
*/
public static function instance() {
if ( is_null( self::$_instance ) ) {
self::$_instance = new self();
}
return self::$_instance;
}
/**
* Cloning is forbidden.
*/
public function __clone() {
_doing_it_wrong( __FUNCTION__, __( 'An error has occurred. Please reload the page and try again.' ), '1.0' );
}
/**
* Unserializing instances of this class is forbidden.
*/
public function __wakeup() {
_doing_it_wrong( __FUNCTION__, __( 'An error has occurred. Please reload the page and try again.' ), '1.0' );
}
/**
* WPMultiStepCheckout Constructor
*/
public function __construct() {
define( 'WMSC_PLUGIN_FILE', __FILE__ );
define( 'WMSC_PLUGIN_URL', plugins_url( '/', __FILE__ ) );
define( 'WMSC_PLUGIN_PATH', plugin_dir_url( '/', __FILE__ ) );
define( 'WMSC_VERSION', $this->version );
if ( ! class_exists( 'woocommerce' ) ) {
add_action( 'admin_notices', array( $this, 'install_woocommerce_admin_notice' ) );
return false;
}
if ( is_admin() ) {
include_once 'includes/admin-side.php';
}
$this->update_14_version();
add_filter( 'woocommerce_locate_template', array( $this, 'woocommerce_locate_template' ), 30, 3 );
$this->adjust_hooks();
add_action( 'wp_enqueue_scripts', array( $this, 'wp_enqueue_scripts' ) );
add_action( 'init', array( $this, 'load_plugin_textdomain' ) );
include_once 'includes/class-wmsc-compatibilities.php';
}
/**
* Modify the default WooCommerce hooks
*/
public function adjust_hooks() {
// Remove login messages.
remove_action( 'woocommerce_before_checkout_form', 'woocommerce_checkout_login_form', 10 );
remove_action( 'woocommerce_before_checkout_form', 'woocommerce_checkout_coupon_form', 10 );
// Split the `Order` and the `Payment` tabs.
remove_action( 'woocommerce_checkout_order_review', 'woocommerce_order_review', 10 );
remove_action( 'woocommerce_checkout_order_review', 'woocommerce_checkout_payment', 20 );
add_action( 'wpmc-woocommerce_order_review', 'woocommerce_order_review', 20 );
add_action( 'wpmc-woocommerce_checkout_payment', 'woocommerce_checkout_payment', 10 );
// Split the `woocommerce_before_checkout_form`.
remove_action( 'woocommerce_before_checkout_form', 'woocommerce_checkout_login_form', 10 );
remove_action( 'woocommerce_before_checkout_form', 'woocommerce_checkout_coupon_form', 10 );
add_action( 'wpmc-woocommerce_checkout_login_form', 'woocommerce_checkout_login_form', 10 );
add_action( 'wpmc-woocommerce_checkout_coupon_form', 'woocommerce_checkout_coupon_form', 10 );
// Add the content functions to the steps.
add_action( 'wmsc_step_content_login', 'wmsc_step_content_login', 10 );
add_action( 'wmsc_step_content_shipping', 'wmsc_step_content_shipping', 10 );
add_action( 'wmsc_step_content_billing', 'wmsc_step_content_billing', 10 );
}
/**
* Load the form-checkout.php template from this plugin.
*
* @param string $template Template name.
* @param string $template_name Template name.
* @param string $template_path Template path. (default: '').
* @return string
*/
public function woocommerce_locate_template( $template, $template_name, $template_path ) {
if ( 'checkout/form-checkout.php' !== $template_name ) {
return $template;
}
$template = plugin_dir_path( __FILE__ ) . 'includes/form-checkout.php';
return $template;
}
/**
* Enqueue the JS and CSS assets
*/
public function wp_enqueue_scripts() {
if ( ! is_checkout() ) {
return;
}
$options = get_option( 'wmsc_options' );
$keyboard_nav = ( isset( $options['keyboard_nav'] ) && $options['keyboard_nav'] ) ? true : false;
$color = ( isset( $options['main_color'] ) ) ? wp_strip_all_tags( $options['main_color'] ) : '#1e85be';
$url = plugins_url( '/', __FILE__ ) . 'assets/';
$prefix = ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ? '' : '.min';
// JS variables.
$vars = array( 'keyboard_nav' => $keyboard_nav );
$vars_filters = array( 'hide_last_prev', 'hide_last_back_to_cart', 'skip_login_above_form', 'skip_login_next_to_login_button' );
foreach ( $vars_filters as $_filter ) {
if ( apply_filters( 'wpmc_' . $_filter, false ) ) {
$vars[ $_filter ] = true;
}
}
// Load scripts.
wp_register_script( 'wpmc', $url . 'js/script' . $prefix . '.js', array( 'jquery' ), $this->version, true );
wp_localize_script( 'wpmc', 'WPMC', apply_filters( 'wmsc_js_variables', $vars ) );
wp_register_style( 'wpmc', $url . 'css/style-progress' . $prefix . '.css', array(), $this->version );
wp_enqueue_script( 'wpmc' );
wp_enqueue_style( 'wpmc' );
// Load the inline styles.
$style = '.wpmc-tabs-wrapper .wpmc-tab-item.current::before { border-bottom-color:' . $color . '; }';
$style .= '.wpmc-tabs-wrapper .wpmc-tab-item.current .wpmc-tab-number { border-color: ' . $color . '; }';
if ( is_rtl() ) {
$style .= '.wpmc-tabs-list .wpmc-tab-item { float: right; }';
}
wp_add_inline_style( 'wpmc', $style );
}
/**
* Admin notice that WooCommerce is not activated
*/
public function install_woocommerce_admin_notice() {
?>
<div class="error">
<p><?php _x( 'The <b>Multi-Step Checkout for WooCommerce</b> plugin is enabled, but it requires WooCommerce in order to work.', 'Alert Message: WooCommerce require', 'wp-multi-step-checkout' ); ?></p>
</div>
<?php
}
/**
* Load the textdomain
*/
public function load_plugin_textdomain() {
load_plugin_textdomain( 'wp-multi-step-checkout', false, plugin_basename( dirname( __FILE__ ) ) . '/languages' );
}
/**
* Update options array for the 1.4 version
*/
public function update_14_version() {
if ( ! $old_options = get_option( 'wpmc-settings' ) ) {
return;
}
require_once 'includes/settings-array.php';
$defaults = get_wmsc_settings();
$new_options = array();
foreach ( $defaults as $_key => $_value ) {
if ( isset( $old_options[ $_key ] ) ) {
$new_options[ $_key ] = $old_options[ $_key ][2];
} else {
$new_options[ $_key ] = $_value['value'];
}
}
update_option( 'wmsc_options', $new_options );
delete_option( 'wpmc-settings' );
}
}
endif;
/**
* Returns the main instance of WPMultiStepCheckout
*
* @return WPMultiStepCheckout
*/
function WPMultiStepCheckout() {
return WPMultiStepCheckout::instance();
}
WPMultiStepCheckout();
/**
* Add Settings link on the Plugins page.
*
* @param array $links Currently available links.
*/
function wpmc_plugin_settings_link( $links ) {
$action_links = array(
'settings' => '<a href="' . admin_url( 'admin.php?page=wmsc-settings' ) . '" aria-label="' . esc_attr__( 'View plugin\'s settings', 'wp-multi-step-checkout' ) . '">' . esc_html__( 'Settings', 'wp-multi-step-checkout' ) . '</a>',
);
return array_merge( $action_links, $links );
}
add_filter( 'plugin_action_links_' . plugin_basename( __FILE__ ), 'wpmc_plugin_settings_link' );