WordPress.org

Plugin Directory

Changeset 1678654


Ignore:
Timestamp:
06/14/17 18:53:09 (5 weeks ago)
Author:
jaredatch
Message:

v1.3.8

Location:
wpforms-lite/trunk
Files:
4 added
22 edited

Legend:

Unmodified
Added
Removed
  • wpforms-lite/trunk/assets/css/admin-builder-providers.css

    r1611376 r1678654  
    138138} 
    139139 
    140 #wpforms-panel-providers .wpforms-provider-conditionals-groups table { 
    141     width: 100%; 
    142     border:1px solid #eee; 
    143     padding: 5px 0; 
     140#wpforms-panel-providers .wpforms-conditional-block { 
     141    padding: 10px 20px; 
    144142} 
    145143 
    146 #wpforms-panel-providers .wpforms-provider-conditionals-group:first-of-type tr:first-of-type .wpforms-provider-conditionals-rule-delete { 
    147     display: none; 
     144#wpforms-panel-providers .wpforms-conditional-block.wpforms-conditional-block { 
     145    margin: 0; 
    148146} 
    149147 
    150 #wpforms-panel-providers .wpforms-provider-conditionals-groups input[type=text], 
    151 #wpforms-panel-providers .wpforms-provider-conditionals-groups select { 
    152     width: 100%; 
    153 } 
    154  
    155 #wpforms-panel-providers .wpforms-provider-conditionals-groups .field { 
    156     width: 150px; 
    157 } 
    158  
    159 #wpforms-panel-providers .wpforms-provider-conditionals-groups .operator { 
    160     width: 80px; 
    161 } 
    162  
    163 #wpforms-panel-providers .wpforms-provider-conditionals-groups .actions { 
    164     width: 80px; 
     148#wpforms-panel-providers .wpforms-conditional-block .value input:disabled, 
     149#wpforms-panel-providers .wpforms-conditional-block .value select:disabled { 
     150    background-color: #f1f1f1; 
     151    cursor:not-allowed 
    165152} 
    166153 
  • wpforms-lite/trunk/assets/css/admin-builder.css

    r1672689 r1678654  
    921921-------------------------------------------------------------- */ 
    922922 
    923 .jconfirm.white .jconfirm-bg { 
    924     background-color: rgba(107,107,107,0.7) 
    925 } 
    926  
    927 .jconfirm-box-container { 
    928     width: 100%; 
    929     max-width: 450px; 
    930     margin: 0 auto; 
    931 } 
    932  
    933 .jconfirm-box-container.modal-wide { 
    934     max-width: 700px 
    935 } 
    936  
    937 .jconfirm.white .jconfirm-box { 
     923body div.jconfirm div.jconfirm-box-container div.jconfirm-box { 
    938924    border-radius: 0; 
    939     padding: 30px; 
    940     text-align: center; 
    941 } 
    942  
    943 .jconfirm.white .modal-wide .jconfirm-box { 
    944     padding: 50px; 
    945 } 
    946  
    947 .jconfirm.white .jconfirm-box div.title { 
    948     padding: 0; 
    949     font-size: 26px; 
    950     line-height: normal; 
    951     color: #444; 
    952     margin: 0 0 20px 0; 
    953 } 
    954  
    955 .jconfirm.white .jconfirm-box div.content { 
    956     padding: 0; 
    957     color: #666; 
     925    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2); 
     926} 
     927 
     928body div.jconfirm div.jconfirm-box div.jconfirm-content-pane { 
     929    margin-bottom: 20px; 
     930} 
     931 
     932body div.jconfirm div.jconfirm-box div.jconfirm-content { 
    958933    font-size: 16px; 
    959     margin: 0 0 20px 0; 
    960     line-height: 1.6; 
    961 } 
    962  
    963 .jconfirm.white .modal-wide .jconfirm-box div.content { 
    964     margin: 0 0 40px 0; 
    965 } 
    966  
    967 .jconfirm.white .jconfirm-box .buttons { 
    968     padding: 0; 
    969     float: none; 
    970 } 
    971  
    972 .jconfirm.white .jconfirm-box .buttons button { 
    973     border-radius: 3px; 
    974     padding: 8px 15px; 
    975     font-size: 15px; 
    976     margin: 0 5px; 
    977     cursor: pointer; 
    978 } 
    979  
    980 .jconfirm.white .jconfirm-box .closeIcon { 
    981     font-size: 16px; 
    982 } 
    983  
    984 .jconfirm.white .jconfirm-box .closeIcon .glyphicon-remove:before { 
    985     font-family: 'FontAwesome'; 
    986     content:"\f00d"; 
    987 } 
    988  
    989 .jconfirm.white .jconfirm-box input[type=text] { 
    990     display: block; 
    991     width: 100%; 
     934    color: #555; 
     935    line-height: 1.5; 
     936} 
     937 
     938body div.jconfirm div.jconfirm-box input[type=text] { 
     939    display: block; 
     940    width: 99%; 
    992941    border: 1px solid #d6d6d6; 
    993     padding: 6px 8px; 
     942    padding: 10px; 
    994943    box-shadow: none; 
    995     margin-top: 20px; 
    996 } 
    997  
    998 .jconfirm.white .jconfirm-box #wpforms-embed-shortcode { 
     944    margin: 20px auto 0 auto; 
     945} 
     946 
     947body div.jconfirm div.jconfirm-box #wpforms-embed-shortcode { 
    999948    margin: 20px 0; 
    1000949    text-align: center; 
     
    1003952} 
    1004953 
    1005 .jconfirm.white .jconfirm-box #wpforms-embed-shortcode:disabled { 
     954body div.jconfirm div.jconfirm-box #wpforms-embed-shortcode:disabled { 
    1006955    color: #333; 
    1007956} 
    1008957 
    1009 .jconfirm.white .jconfirm-box .error { 
     958body div.jconfirm div.jconfirm-box button.btn-confirm { 
     959    background-color: #83c11f; 
     960    color: #fff; 
     961    outline: none; 
     962} 
     963 
     964body div.jconfirm div.jconfirm-box button.btn-confirm:hover { 
     965    background-color: #75ac1c; 
     966} 
     967 
     968body div.jconfirm div.jconfirm-box .error { 
    1010969    display: none; 
    1011970    color: red; 
    1012971} 
    1013972 
    1014 .jconfirm.white .jconfirm-box button.cancel { 
    1015     background-color: #aaa; 
    1016 } 
    1017  
    1018 .jconfirm.white .jconfirm-box button.confirm { 
    1019     background-color: #83c11f; 
    1020     outline: none; 
    1021 } 
    1022  
    1023 .jconfirm.white .jconfirm-box button.confirm:hover { 
    1024     background-color: #75ac1c; 
    1025 } 
     973body div.jconfirm div.jconfirm-box .jconfirm-title-c .jconfirm-icon-c { 
     974    -webkit-transition: none !important; 
     975    transition: none !important; 
     976    -webkit-transform: none !important; 
     977    -ms-transform: none !important; 
     978    transform: none !important; 
     979    font-size: 45px !important; 
     980} 
  • wpforms-lite/trunk/assets/css/jquery-confirm.min.css

    r1370890 r1678654  
    11/*! 
    2  * jquery-confirm v2.0.0 (http://craftpip.github.io/jquery-confirm/) 
     2 * jquery-confirm v3.2.3 (http://craftpip.github.io/jquery-confirm/) 
    33 * Author: boniface pereira 
    44 * Website: www.craftpip.com 
    55 * Contact: hey@craftpip.com 
    66 * 
    7  * Copyright 2013-2015 jquery-confirm 
     7 * Copyright 2013-2017 jquery-confirm 
    88 * Licensed under MIT (https://github.com/craftpip/jquery-confirm/blob/master/LICENSE) 
    9  */body.jconfirm-noscroll{overflow:hidden!important}@-webkit-keyframes jconfirm-rotate{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes jconfirm-rotate{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.jconfirm{position:fixed;top:0;left:0;right:0;bottom:0;z-index:99999999;font-family:inherit;overflow:hidden}.jconfirm .jconfirm-bg{position:fixed;top:0;left:0;right:0;bottom:0;opacity:0;-webkit-transition:all .4s;transition:all .4s}.jconfirm .jconfirm-bg.seen{opacity:1}.jconfirm .jconfirm-scrollpane{position:fixed;top:0;left:0;right:0;bottom:0;overflow-y:auto}.jconfirm .jconfirm-box{background:white;border-radius:4px;position:relative;outline:0}.jconfirm .jconfirm-box div.closeIcon{height:20px;width:20px;position:absolute;top:12px;right:12px;cursor:pointer;opacity:.6;text-align:center;display:none}.jconfirm .jconfirm-box div.closeIcon:hover{opacity:1}.jconfirm .jconfirm-box div.title{font-size:24px;font-weight:bold;font-family:inherit;padding:10px 15px 5px}.jconfirm .jconfirm-box div.content{padding-top:10px;padding:10px 15px 10px}.jconfirm .jconfirm-box div.content:empty{height:40px;position:relative;opacity:.6}.jconfirm .jconfirm-box div.content:empty:before{content:'';height:20px;width:20px;border:solid 2px #aaa;position:absolute;left:50%;margin-left:-45px;border-radius:20%;-webkit-animation:jconfirm-rotate 1s infinite;animation:jconfirm-rotate 1s infinite}.jconfirm .jconfirm-box div.content:empty:after{content:'loading..';position:absolute;left:50%;margin-left:-15px}.jconfirm .jconfirm-box .buttons{padding:10px 15px}.jconfirm .jconfirm-box .buttons button+button{margin-left:5px}.jconfirm .jquery-clear{clear:both}.jconfirm.rtl{direction:rtl}.jconfirm.rtl div.closeIcon{left:12px;right:auto}.jconfirm.white .jconfirm-bg{background-color:rgba(0,0,0,0.2)}.jconfirm.white .jconfirm-box{box-shadow:0 2px 6px rgba(0,0,0,0.2);border-radius:5px}.jconfirm.white .jconfirm-box .buttons{float:right}.jconfirm.white .jconfirm-box .buttons button{border:0;background-image:none;text-transform:uppercase;font-size:14px;font-weight:bold;text-shadow:none;-webkit-transition:background .1s;transition:background .1s;color:white}.jconfirm.white .jconfirm-box .buttons button.btn-default{box-shadow:none;color:#333}.jconfirm.white .jconfirm-box .buttons button.btn-default:hover{background:#ddd}.jconfirm.black .jconfirm-bg{background-color:rgba(0,0,0,0.5)}.jconfirm.black .jconfirm-box{box-shadow:0 2px 6px rgba(0,0,0,0.2);background:#444;border-radius:5px;color:white}.jconfirm.black .jconfirm-box .buttons{float:right}.jconfirm.black .jconfirm-box .buttons button{border:0;background-image:none;text-transform:uppercase;font-size:14px;font-weight:bold;text-shadow:none;-webkit-transition:background .1s;transition:background .1s;color:white}.jconfirm.black .jconfirm-box .buttons button.btn-default{box-shadow:none;color:#fff;background:0}.jconfirm.black .jconfirm-box .buttons button.btn-default:hover{background:#666}.jconfirm.hololight .jconfirm-bg{background-color:rgba(0,0,0,0.5)}.jconfirm.hololight .jconfirm-box{box-shadow:0 2px 6px rgba(0,0,0,0.4);border-radius:2px;overflow:hidden}.jconfirm.hololight .jconfirm-box div.title{font-weight:inherit;border-bottom:solid 2px #76cfdf;color:#76cfdf}.jconfirm.hololight .jconfirm-box .buttons{border-top:solid 2px #e7e7e7;width:100%;float:none;padding:0}.jconfirm.hololight .jconfirm-box .buttons button{margin:0;border:0;background:#fff;border-radius:0;width:50%;padding:13px;font-size:16px;font-weight:bold;color:#666}.jconfirm.hololight .jconfirm-box .buttons button+button{border-left:solid 2px #e7e7e7}.jconfirm.holodark .jconfirm-bg{background-color:rgba(0,0,0,0.5)}.jconfirm.holodark .jconfirm-box{box-shadow:0 2px 6px rgba(0,0,0,0.4);border-radius:2px;background:#333;overflow:hidden}.jconfirm.holodark .jconfirm-box div.closeIcon{color:white}.jconfirm.holodark .jconfirm-box div.title{font-weight:inherit;border-bottom:solid 2px #76cfdf;color:#76cfdf}.jconfirm.holodark .jconfirm-box div.content{color:white}.jconfirm.holodark .jconfirm-box .buttons{border-top:solid 2px rgba(255,255,255,0.2);width:100%;float:none;padding:0}.jconfirm.holodark .jconfirm-box .buttons button{margin:0;border:0;background:#333;border-radius:0;width:50%;padding:13px;font-size:16px;font-weight:bold;color:#fff;text-shadow:none}.jconfirm.holodark .jconfirm-box .buttons button+button{border-left:solid 2px rgba(255,255,255,0.2)}.jconfirm .jconfirm-box.hilight{-webkit-animation:hilight .82s cubic-bezier(0.36,0.07,0.19,0.97) both;animation:hilight .82s cubic-bezier(0.36,0.07,0.19,0.97) both;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}@-webkit-keyframes hilight{10%,90%{-webkit-transform:translate3d(-2px,0,0);transform:translate3d(-2px,0,0)}20%,80%{-webkit-transform:translate3d(4px,0,0);transform:translate3d(4px,0,0)}30%,50%,70%{-webkit-transform:translate3d(-8px,0,0);transform:translate3d(-8px,0,0)}40%,60%{-webkit-transform:translate3d(8px,0,0);transform:translate3d(8px,0,0)}}@keyframes hilight{10%,90%{-webkit-transform:translate3d(-2px,0,0);transform:translate3d(-2px,0,0)}20%,80%{-webkit-transform:translate3d(4px,0,0);transform:translate3d(4px,0,0)}30%,50%,70%{-webkit-transform:translate3d(-8px,0,0);transform:translate3d(-8px,0,0)}40%,60%{-webkit-transform:translate3d(8px,0,0);transform:translate3d(8px,0,0)}}.jconfirm{-webkit-perspective:400px;perspective:400px}.jconfirm .jconfirm-box{opacity:1;-webkit-transition-property:-webkit-transform,opacity,box-shadow;transition-property:transform,opacity,box-shadow}.jconfirm .jconfirm-box.anim-top,.jconfirm .jconfirm-box.anim-left,.jconfirm .jconfirm-box.anim-right,.jconfirm .jconfirm-box.anim-bottom,.jconfirm .jconfirm-box.anim-opacity,.jconfirm .jconfirm-box.anim-zoom,.jconfirm .jconfirm-box.anim-scale,.jconfirm .jconfirm-box.anim-none,.jconfirm .jconfirm-box.anim-rotate,.jconfirm .jconfirm-box.anim-rotatex,.jconfirm .jconfirm-box.anim-rotatey,.jconfirm .jconfirm-box.anim-scaley,.jconfirm .jconfirm-box.anim-scalex{opacity:0}.jconfirm .jconfirm-box.anim-rotate{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.jconfirm .jconfirm-box.anim-rotatex{-webkit-transform:rotateX(90deg);transform:rotateX(90deg);-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center}.jconfirm .jconfirm-box.anim-rotatey{-webkit-transform:rotatey(90deg);-ms-transform:rotatey(90deg);transform:rotatey(90deg);-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center}.jconfirm .jconfirm-box.anim-scaley{-webkit-transform:scaley(1.5);-ms-transform:scaley(1.5);transform:scaley(1.5);-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center}.jconfirm .jconfirm-box.anim-scalex{-webkit-transform:scalex(1.5);-ms-transform:scalex(1.5);transform:scalex(1.5);-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center}.jconfirm .jconfirm-box.anim-top{-webkit-transform:translate(0px,-100px);-ms-transform:translate(0px,-100px);transform:translate(0px,-100px)}.jconfirm .jconfirm-box.anim-left{-webkit-transform:translate(-100px,0px);-ms-transform:translate(-100px,0px);transform:translate(-100px,0px)}.jconfirm .jconfirm-box.anim-right{-webkit-transform:translate(100px,0px);-ms-transform:translate(100px,0px);transform:translate(100px,0px)}.jconfirm .jconfirm-box.anim-bottom{-webkit-transform:translate(0px,100px);-ms-transform:translate(0px,100px);transform:translate(0px,100px)}.jconfirm .jconfirm-box.anim-zoom{-webkit-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2)}.jconfirm .jconfirm-box.anim-scale{-webkit-transform:scale(0.5);-ms-transform:scale(0.5);transform:scale(0.5)}.jconfirm .jconfirm-box.anim-none{display:none}.jconfirm.supervan .jconfirm-bg{background-color:rgba(54,70,93,0.95)}.jconfirm.supervan .jconfirm-box{background-color:transparent}.jconfirm.supervan .jconfirm-box div.closeIcon{color:white}.jconfirm.supervan .jconfirm-box div.title{text-align:center;color:white;font-size:28px;font-weight:normal}.jconfirm.supervan .jconfirm-box div.content{text-align:center;color:white}.jconfirm.supervan .jconfirm-box .buttons{text-align:center}.jconfirm.supervan .jconfirm-box .buttons button{font-size:16px;border-radius:2px;background:#303f53;text-shadow:none;border:0;color:white;width:25%;padding:10px} 
     9 */@-webkit-keyframes jconfirm-spin{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes jconfirm-spin{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}body[class*=jconfirm-no-scroll-]{overflow:hidden!important}.jconfirm{position:fixed;top:0;left:0;right:0;bottom:0;z-index:99999999;font-family:inherit;overflow:hidden}.jconfirm .jconfirm-bg{position:fixed;top:0;left:0;right:0;bottom:0;-webkit-transition:opacity .4s;transition:opacity .4s}.jconfirm .jconfirm-bg.jconfirm-bg-h{opacity:0!important}.jconfirm .jconfirm-scrollpane{position:fixed;top:0;left:0;right:0;bottom:0;overflow-y:auto;-webkit-perspective:500px;perspective:500px;-webkit-perspective-origin:center;perspective-origin:center}.jconfirm .jconfirm-box{background:white;border-radius:4px;position:relative;outline:0;padding:15px 15px 0;overflow:hidden;margin-left:auto;margin-right:auto}@-webkit-keyframes type-blue{1%,100%{border-color:#3498db}50%{border-color:#5faee3}}@keyframes type-blue{1%,100%{border-color:#3498db}50%{border-color:#5faee3}}@-webkit-keyframes type-green{1%,100%{border-color:#2ecc71}50%{border-color:#54d98c}}@keyframes type-green{1%,100%{border-color:#2ecc71}50%{border-color:#54d98c}}@-webkit-keyframes type-red{1%,100%{border-color:#e74c3c}50%{border-color:#ed7669}}@keyframes type-red{1%,100%{border-color:#e74c3c}50%{border-color:#ed7669}}@-webkit-keyframes type-orange{1%,100%{border-color:#f1c40f}50%{border-color:#f4d03f}}@keyframes type-orange{1%,100%{border-color:#f1c40f}50%{border-color:#f4d03f}}@-webkit-keyframes type-purple{1%,100%{border-color:#9b59b6}50%{border-color:#b07cc6}}@keyframes type-purple{1%,100%{border-color:#9b59b6}50%{border-color:#b07cc6}}@-webkit-keyframes type-dark{1%,100%{border-color:#34495e}50%{border-color:#46627f}}@keyframes type-dark{1%,100%{border-color:#34495e}50%{border-color:#46627f}}.jconfirm .jconfirm-box.jconfirm-type-animated{-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.jconfirm .jconfirm-box.jconfirm-type-blue{border-top:solid 7px #3498db;-webkit-animation-name:type-blue;animation-name:type-blue}.jconfirm .jconfirm-box.jconfirm-type-green{border-top:solid 7px #2ecc71;-webkit-animation-name:type-green;animation-name:type-green}.jconfirm .jconfirm-box.jconfirm-type-red{border-top:solid 7px #e74c3c;-webkit-animation-name:type-red;animation-name:type-red}.jconfirm .jconfirm-box.jconfirm-type-orange{border-top:solid 7px #f1c40f;-webkit-animation-name:type-orange;animation-name:type-orange}.jconfirm .jconfirm-box.jconfirm-type-purple{border-top:solid 7px #9b59b6;-webkit-animation-name:type-purple;animation-name:type-purple}.jconfirm .jconfirm-box.jconfirm-type-dark{border-top:solid 7px #34495e;-webkit-animation-name:type-dark;animation-name:type-dark}.jconfirm .jconfirm-box.loading{height:120px}.jconfirm .jconfirm-box.loading:before{content:'';position:absolute;left:0;background:white;right:0;top:0;bottom:0;border-radius:10px;z-index:1}.jconfirm .jconfirm-box.loading:after{opacity:.6;content:'';height:30px;width:30px;border:solid 3px transparent;position:absolute;left:50%;margin-left:-15px;border-radius:50%;-webkit-animation:jconfirm-spin 1s infinite linear;animation:jconfirm-spin 1s infinite linear;border-bottom-color:dodgerblue;top:50%;margin-top:-15px;z-index:2}.jconfirm .jconfirm-box div.jconfirm-closeIcon{height:20px;width:20px;position:absolute;top:5px;right:5px;cursor:pointer;opacity:.6;text-align:center;-webkit-transition:opacity .3s ease-in;transition:opacity .3s ease-in;font-size:27px!important;line-height:14px!important;display:none}.jconfirm .jconfirm-box div.jconfirm-closeIcon:empty{display:none}.jconfirm .jconfirm-box div.jconfirm-closeIcon .fa{font-size:16px}.jconfirm .jconfirm-box div.jconfirm-closeIcon .glyphicon{font-size:16px}.jconfirm .jconfirm-box div.jconfirm-closeIcon .zmdi{font-size:16px}.jconfirm .jconfirm-box div.jconfirm-closeIcon:hover{opacity:1}.jconfirm .jconfirm-box div.jconfirm-title-c{display:block;font-size:22px;line-height:20px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.jconfirm .jconfirm-box div.jconfirm-title-c.jconfirm-hand{cursor:move}.jconfirm .jconfirm-box div.jconfirm-title-c .jconfirm-icon-c{font-size:inherit;padding-bottom:15px;display:inline-block;vertical-align:middle}.jconfirm .jconfirm-box div.jconfirm-title-c .jconfirm-icon-c i{vertical-align:middle}.jconfirm .jconfirm-box div.jconfirm-title-c .jconfirm-icon-c:empty{display:none}.jconfirm .jconfirm-box div.jconfirm-title-c .jconfirm-title{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-size:inherit;font-family:inherit;display:inline-block;vertical-align:middle;padding-bottom:15px}.jconfirm .jconfirm-box div.jconfirm-title-c .jconfirm-title:empty{display:none}.jconfirm .jconfirm-box div.jconfirm-content-pane{margin-bottom:15px;height:auto;-webkit-transition:height .4s ease-in;transition:height .4s ease-in;display:inline-block;width:100%;position:relative;overflow:hidden}.jconfirm .jconfirm-box div.jconfirm-content-pane .jconfirm-content img{max-width:100%;height:auto}.jconfirm .jconfirm-box div.jconfirm-content-pane .jconfirm-content:empty{display:none}.jconfirm .jconfirm-box .jconfirm-buttons{padding-bottom:11px}.jconfirm .jconfirm-box .jconfirm-buttons>button{margin-bottom:4px;margin-left:2px;margin-right:2px}.jconfirm .jconfirm-box .jconfirm-buttons button{display:inline-block;padding:6px 12px;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;border-radius:4px;min-height:1em;outline:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:opacity .1s ease,background-color .1s ease,color .1s ease,box-shadow .1s ease,background .1s ease;transition:opacity .1s ease,background-color .1s ease,color .1s ease,box-shadow .1s ease,background .1s ease;-webkit-tap-highlight-color:transparent;border:0;background-image:none}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-blue{background-color:#3498db;color:#FFF;text-shadow:none;-webkit-transition:background .2s;transition:background .2s}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-blue:hover{background-color:#2980b9;color:#FFF}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-green{background-color:#2ecc71;color:#FFF;text-shadow:none;-webkit-transition:background .2s;transition:background .2s}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-green:hover{background-color:#27ae60;color:#FFF}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-red{background-color:#e74c3c;color:#FFF;text-shadow:none;-webkit-transition:background .2s;transition:background .2s}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-red:hover{background-color:#c0392b;color:#FFF}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-orange{background-color:#f1c40f;color:#FFF;text-shadow:none;-webkit-transition:background .2s;transition:background .2s}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-orange:hover{background-color:#f39c12;color:#FFF}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-default{background-color:#ecf0f1;color:#000;text-shadow:none;-webkit-transition:background .2s;transition:background .2s}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-default:hover{background-color:#bdc3c7;color:#000}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-purple{background-color:#9b59b6;color:#FFF;text-shadow:none;-webkit-transition:background .2s;transition:background .2s}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-purple:hover{background-color:#8e44ad;color:#FFF}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-dark{background-color:#34495e;color:#FFF;text-shadow:none;-webkit-transition:background .2s;transition:background .2s}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-dark:hover{background-color:#2c3e50;color:#FFF}.jconfirm .jconfirm-box.jconfirm-type-red .jconfirm-title-c .jconfirm-icon-c{color:#e74c3c!important}.jconfirm .jconfirm-box.jconfirm-type-blue .jconfirm-title-c .jconfirm-icon-c{color:#3498db!important}.jconfirm .jconfirm-box.jconfirm-type-green .jconfirm-title-c .jconfirm-icon-c{color:#2ecc71!important}.jconfirm .jconfirm-box.jconfirm-type-purple .jconfirm-title-c .jconfirm-icon-c{color:#9b59b6!important}.jconfirm .jconfirm-box.jconfirm-type-orange .jconfirm-title-c .jconfirm-icon-c{color:#f1c40f!important}.jconfirm .jconfirm-box.jconfirm-type-dark .jconfirm-title-c .jconfirm-icon-c{color:#34495e!important}.jconfirm .jconfirm-clear{clear:both}.jconfirm.jconfirm-rtl{direction:rtl}.jconfirm.jconfirm-rtl div.jconfirm-closeIcon{left:5px;right:auto}.jconfirm.jconfirm-white .jconfirm-bg,.jconfirm.jconfirm-light .jconfirm-bg{background-color:#444;opacity:.2}.jconfirm.jconfirm-white .jconfirm-box,.jconfirm.jconfirm-light .jconfirm-box{box-shadow:0 2px 6px rgba(0,0,0,0.2);border-radius:5px}.jconfirm.jconfirm-white .jconfirm-box .jconfirm-title-c .jconfirm-icon-c,.jconfirm.jconfirm-light .jconfirm-box .jconfirm-title-c .jconfirm-icon-c{margin-right:8px;margin-left:0}.jconfirm.jconfirm-white .jconfirm-box .jconfirm-buttons,.jconfirm.jconfirm-light .jconfirm-box .jconfirm-buttons{float:right}.jconfirm.jconfirm-white .jconfirm-box .jconfirm-buttons button,.jconfirm.jconfirm-light .jconfirm-box .jconfirm-buttons button{text-transform:uppercase;font-size:14px;font-weight:bold;text-shadow:none}.jconfirm.jconfirm-white .jconfirm-box .jconfirm-buttons button.btn-default,.jconfirm.jconfirm-light .jconfirm-box .jconfirm-buttons button.btn-default{box-shadow:none;color:#333}.jconfirm.jconfirm-white .jconfirm-box .jconfirm-buttons button.btn-default:hover,.jconfirm.jconfirm-light .jconfirm-box .jconfirm-buttons button.btn-default:hover{background:#ddd}.jconfirm.jconfirm-white.jconfirm-rtl .jconfirm-title-c .jconfirm-icon-c,.jconfirm.jconfirm-light.jconfirm-rtl .jconfirm-title-c .jconfirm-icon-c{margin-left:8px;margin-right:0}.jconfirm.jconfirm-black .jconfirm-bg,.jconfirm.jconfirm-dark .jconfirm-bg{background-color:darkslategray;opacity:.4}.jconfirm.jconfirm-black .jconfirm-box,.jconfirm.jconfirm-dark .jconfirm-box{box-shadow:0 2px 6px rgba(0,0,0,0.2);background:#444;border-radius:5px;color:white}.jconfirm.jconfirm-black .jconfirm-box .jconfirm-title-c .jconfirm-icon-c,.jconfirm.jconfirm-dark .jconfirm-box .jconfirm-title-c .jconfirm-icon-c{margin-right:8px;margin-left:0}.jconfirm.jconfirm-black .jconfirm-box .jconfirm-buttons,.jconfirm.jconfirm-dark .jconfirm-box .jconfirm-buttons{float:right}.jconfirm.jconfirm-black .jconfirm-box .jconfirm-buttons button,.jconfirm.jconfirm-dark .jconfirm-box .jconfirm-buttons button{border:0;background-image:none;text-transform:uppercase;font-size:14px;font-weight:bold;text-shadow:none;-webkit-transition:background .1s;transition:background .1s;color:white}.jconfirm.jconfirm-black .jconfirm-box .jconfirm-buttons button.btn-default,.jconfirm.jconfirm-dark .jconfirm-box .jconfirm-buttons button.btn-default{box-shadow:none;color:#fff;background:0}.jconfirm.jconfirm-black .jconfirm-box .jconfirm-buttons button.btn-default:hover,.jconfirm.jconfirm-dark .jconfirm-box .jconfirm-buttons button.btn-default:hover{background:#666}.jconfirm.jconfirm-black.jconfirm-rtl .jconfirm-title-c .jconfirm-icon-c,.jconfirm.jconfirm-dark.jconfirm-rtl .jconfirm-title-c .jconfirm-icon-c{margin-left:8px;margin-right:0}.jconfirm .jconfirm-box.hilight.jconfirm-hilight-shake{-webkit-animation:shake .82s cubic-bezier(0.36,0.07,0.19,0.97) both;animation:shake .82s cubic-bezier(0.36,0.07,0.19,0.97) both;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.jconfirm .jconfirm-box.hilight.jconfirm-hilight-glow{-webkit-animation:glow .82s cubic-bezier(0.36,0.07,0.19,0.97) both;animation:glow .82s cubic-bezier(0.36,0.07,0.19,0.97) both;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}@-webkit-keyframes shake{10%,90%{-webkit-transform:translate3d(-2px,0,0);transform:translate3d(-2px,0,0)}20%,80%{-webkit-transform:translate3d(4px,0,0);transform:translate3d(4px,0,0)}30%,50%,70%{-webkit-transform:translate3d(-8px,0,0);transform:translate3d(-8px,0,0)}40%,60%{-webkit-transform:translate3d(8px,0,0);transform:translate3d(8px,0,0)}}@keyframes shake{10%,90%{-webkit-transform:translate3d(-2px,0,0);transform:translate3d(-2px,0,0)}20%,80%{-webkit-transform:translate3d(4px,0,0);transform:translate3d(4px,0,0)}30%,50%,70%{-webkit-transform:translate3d(-8px,0,0);transform:translate3d(-8px,0,0)}40%,60%{-webkit-transform:translate3d(8px,0,0);transform:translate3d(8px,0,0)}}@-webkit-keyframes glow{0%,100%{box-shadow:0 0 3px red}50%{box-shadow:0 0 30px red}}@keyframes glow{0%,100%{box-shadow:0 0 3px red}50%{box-shadow:0 0 30px red}}.jconfirm{-webkit-perspective:400px;perspective:400px}.jconfirm .jconfirm-box{opacity:1;-webkit-transition-property:all;transition-property:all}.jconfirm .jconfirm-box.jconfirm-animation-top,.jconfirm .jconfirm-box.jconfirm-animation-left,.jconfirm .jconfirm-box.jconfirm-animation-right,.jconfirm .jconfirm-box.jconfirm-animation-bottom,.jconfirm .jconfirm-box.jconfirm-animation-opacity,.jconfirm .jconfirm-box.jconfirm-animation-zoom,.jconfirm .jconfirm-box.jconfirm-animation-scale,.jconfirm .jconfirm-box.jconfirm-animation-none,.jconfirm .jconfirm-box.jconfirm-animation-rotate,.jconfirm .jconfirm-box.jconfirm-animation-rotatex,.jconfirm .jconfirm-box.jconfirm-animation-rotatey,.jconfirm .jconfirm-box.jconfirm-animation-scaley,.jconfirm .jconfirm-box.jconfirm-animation-scalex{opacity:0}.jconfirm .jconfirm-box.jconfirm-animation-rotate{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.jconfirm .jconfirm-box.jconfirm-animation-rotatex{-webkit-transform:rotateX(90deg);transform:rotateX(90deg);-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center}.jconfirm .jconfirm-box.jconfirm-animation-rotatexr{-webkit-transform:rotateX(-90deg);transform:rotateX(-90deg);-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center}.jconfirm .jconfirm-box.jconfirm-animation-rotatey{-webkit-transform:rotatey(90deg);-ms-transform:rotatey(90deg);transform:rotatey(90deg);-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center}.jconfirm .jconfirm-box.jconfirm-animation-rotateyr{-webkit-transform:rotatey(-90deg);-ms-transform:rotatey(-90deg);transform:rotatey(-90deg);-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center}.jconfirm .jconfirm-box.jconfirm-animation-scaley{-webkit-transform:scaley(1.5);-ms-transform:scaley(1.5);transform:scaley(1.5);-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center}.jconfirm .jconfirm-box.jconfirm-animation-scalex{-webkit-transform:scalex(1.5);-ms-transform:scalex(1.5);transform:scalex(1.5);-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center}.jconfirm .jconfirm-box.jconfirm-animation-top{-webkit-transform:translate(0px,-100px);-ms-transform:translate(0px,-100px);transform:translate(0px,-100px)}.jconfirm .jconfirm-box.jconfirm-animation-left{-webkit-transform:translate(-100px,0px);-ms-transform:translate(-100px,0px);transform:translate(-100px,0px)}.jconfirm .jconfirm-box.jconfirm-animation-right{-webkit-transform:translate(100px,0px);-ms-transform:translate(100px,0px);transform:translate(100px,0px)}.jconfirm .jconfirm-box.jconfirm-animation-bottom{-webkit-transform:translate(0px,100px);-ms-transform:translate(0px,100px);transform:translate(0px,100px)}.jconfirm .jconfirm-box.jconfirm-animation-zoom{-webkit-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2)}.jconfirm .jconfirm-box.jconfirm-animation-scale{-webkit-transform:scale(0.5);-ms-transform:scale(0.5);transform:scale(0.5)}.jconfirm .jconfirm-box.jconfirm-animation-none{visibility:hidden}.jconfirm.jconfirm-supervan .jconfirm-bg{background-color:rgba(54,70,93,0.95)}.jconfirm.jconfirm-supervan .jconfirm-box{background-color:transparent}.jconfirm.jconfirm-supervan .jconfirm-box.jconfirm-type-blue{border:0}.jconfirm.jconfirm-supervan .jconfirm-box.jconfirm-type-green{border:0}.jconfirm.jconfirm-supervan .jconfirm-box.jconfirm-type-red{border:0}.jconfirm.jconfirm-supervan .jconfirm-box.jconfirm-type-orange{border:0}.jconfirm.jconfirm-supervan .jconfirm-box.jconfirm-type-purple{border:0}.jconfirm.jconfirm-supervan .jconfirm-box.jconfirm-type-dark{border:0}.jconfirm.jconfirm-supervan .jconfirm-box div.jconfirm-closeIcon{color:white}.jconfirm.jconfirm-supervan .jconfirm-box div.jconfirm-title-c{text-align:center;color:white;font-size:28px;font-weight:normal}.jconfirm.jconfirm-supervan .jconfirm-box div.jconfirm-title-c>*{padding-bottom:25px}.jconfirm.jconfirm-supervan .jconfirm-box div.jconfirm-title-c .jconfirm-icon-c{margin-right:8px;margin-left:0}.jconfirm.jconfirm-supervan .jconfirm-box div.jconfirm-content-pane{margin-bottom:25px}.jconfirm.jconfirm-supervan .jconfirm-box div.jconfirm-content{text-align:center;color:white}.jconfirm.jconfirm-supervan .jconfirm-box .jconfirm-buttons{text-align:center}.jconfirm.jconfirm-supervan .jconfirm-box .jconfirm-buttons button{font-size:16px;border-radius:2px;background:#303f53;text-shadow:none;border:0;color:white;padding:10px;min-width:100px}.jconfirm.jconfirm-supervan.jconfirm-rtl .jconfirm-box div.jconfirm-title-c .jconfirm-icon-c{margin-left:8px;margin-right:0}.jconfirm.jconfirm-material .jconfirm-bg{background-color:rgba(0,0,0,0.67)}.jconfirm.jconfirm-material .jconfirm-box{background-color:white;box-shadow:0 7px 8px -4px rgba(0,0,0,0.2),0 13px 19px 2px rgba(0,0,0,0.14),0 5px 24px 4px rgba(0,0,0,0.12);padding:30px 25px 10px 25px}.jconfirm.jconfirm-material .jconfirm-box .jconfirm-title-c .jconfirm-icon-c{margin-right:8px;margin-left:0}.jconfirm.jconfirm-material .jconfirm-box div.jconfirm-closeIcon{color:rgba(0,0,0,0.87)}.jconfirm.jconfirm-material .jconfirm-box div.jconfirm-title-c{color:rgba(0,0,0,0.87);font-size:22px;font-weight:bold}.jconfirm.jconfirm-material .jconfirm-box div.jconfirm-content{color:rgba(0,0,0,0.87)}.jconfirm.jconfirm-material .jconfirm-box .jconfirm-buttons{text-align:right}.jconfirm.jconfirm-material .jconfirm-box .jconfirm-buttons button{text-transform:uppercase;font-weight:500}.jconfirm.jconfirm-material.jconfirm-rtl .jconfirm-title-c .jconfirm-icon-c{margin-left:8px;margin-right:0}.jconfirm.jconfirm-bootstrap .jconfirm-bg{background-color:rgba(0,0,0,0.21)}.jconfirm.jconfirm-bootstrap .jconfirm-box{background-color:white;box-shadow:0 3px 8px 0 rgba(0,0,0,0.2);border:solid 1px rgba(0,0,0,0.4);padding:15px 0 0}.jconfirm.jconfirm-bootstrap .jconfirm-box .jconfirm-title-c .jconfirm-icon-c{margin-right:8px;margin-left:0}.jconfirm.jconfirm-bootstrap .jconfirm-box div.jconfirm-closeIcon{color:rgba(0,0,0,0.87)}.jconfirm.jconfirm-bootstrap .jconfirm-box div.jconfirm-title-c{color:rgba(0,0,0,0.87);font-size:22px;font-weight:bold;padding-left:15px;padding-right:15px}.jconfirm.jconfirm-bootstrap .jconfirm-box div.jconfirm-content{color:rgba(0,0,0,0.87);padding:0 15px}.jconfirm.jconfirm-bootstrap .jconfirm-box .jconfirm-buttons{text-align:right;padding:10px;margin:-5px 0 0;border-top:solid 1px #ddd;overflow:hidden;border-radius:0 0 4px 4px}.jconfirm.jconfirm-bootstrap .jconfirm-box .jconfirm-buttons button{font-weight:500}.jconfirm.jconfirm-bootstrap.jconfirm-rtl .jconfirm-title-c .jconfirm-icon-c{margin-left:8px;margin-right:0}.jconfirm.jconfirm-modern .jconfirm-bg{background-color:slategray;opacity:.6}.jconfirm.jconfirm-modern .jconfirm-box{background-color:white;box-shadow:0 7px 8px -4px rgba(0,0,0,0.2),0 13px 19px 2px rgba(0,0,0,0.14),0 5px 24px 4px rgba(0,0,0,0.12);padding:30px 30px 15px}.jconfirm.jconfirm-modern .jconfirm-box div.jconfirm-closeIcon{color:rgba(0,0,0,0.87);top:15px;right:15px}.jconfirm.jconfirm-modern .jconfirm-box div.jconfirm-title-c{color:rgba(0,0,0,0.87);font-size:24px;font-weight:bold;text-align:center;margin-bottom:10px}.jconfirm.jconfirm-modern .jconfirm-box div.jconfirm-title-c .jconfirm-icon-c{-webkit-transition:-webkit-transform .5s;transition:transform .5s;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);display:block;margin-right:0;margin-left:0;margin-bottom:10px;font-size:69px;color:#aaa}.jconfirm.jconfirm-modern .jconfirm-box div.jconfirm-content{text-align:center;font-size:15px;color:#777;margin-bottom:25px}.jconfirm.jconfirm-modern .jconfirm-box .jconfirm-buttons{text-align:center}.jconfirm.jconfirm-modern .jconfirm-box .jconfirm-buttons button{font-weight:bold;text-transform:uppercase;-webkit-transition:background .1s;transition:background .1s;padding:10px 20px}.jconfirm.jconfirm-modern .jconfirm-box .jconfirm-buttons button+button{margin-left:4px}.jconfirm.jconfirm-modern.jconfirm-open .jconfirm-box .jconfirm-title-c .jconfirm-icon-c{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)} 
  • wpforms-lite/trunk/assets/css/wpforms-full.css

    r1660094 r1678654  
    107107div.wpforms-container-full .wpforms-form input.wpforms-field-small, 
    108108div.wpforms-container-full .wpforms-form select.wpforms-field-small, 
    109 div.wpforms-container-full .wpforms-form.wpforms-field-row.wpforms-field-small { 
     109div.wpforms-container-full .wpforms-form .wpforms-field-row.wpforms-field-small { 
    110110    max-width: 25%; 
    111111} 
     
    127127 
    128128/* Field container */ 
    129 div.wpforms-container-full .wpforms-form  .wpforms-field { 
     129div.wpforms-container-full .wpforms-form .wpforms-field { 
    130130    padding: 10px 0; 
    131131    clear: both; 
     
    133133 
    134134/* Field Description */ 
    135 div.wpforms-container-full .wpforms-form  .wpforms-field-description { 
     135div.wpforms-container-full .wpforms-form .wpforms-field-description { 
    136136    font-size: 13px; 
    137137    line-height: 1.3; 
     
    139139} 
    140140 
    141 div.wpforms-container-full .wpforms-form  .wpforms-field-description-before { 
     141div.wpforms-container-full .wpforms-form .wpforms-field-description-before { 
    142142    margin: 0 0 8px 0; 
    143143} 
  • wpforms-lite/trunk/assets/js/admin-builder-providers.js

    r1611376 r1678654  
    6565            $(document).on('change', '.wpforms-provider-lists select', function(e) { 
    6666                WPFormsProviders.accountListSelect(this, e); 
    67             }); 
    68  
    69             // Conditional support toggle 
    70             $(document).on('change', '.wpforms-provider-conditionals .toggle', function(e) { 
    71                 WPFormsProviders.conditionalToggle(this, e); 
    72             }); 
    73  
    74             // Conditional logic real updates 
    75             $(document).on('wpformsFieldUpdate', WPFormsProviders.conditionalUpdateOptions); 
    76  
    77             // Conditional process field 
    78             $(document).on('change', '.wpforms-provider-conditionals .field select', function(e) { 
    79                 WPFormsProviders.conditionalField(this, e); 
    80             }); 
    81  
    82             // Conditional add new rule 
    83             $(document).on('click', '.wpforms-provider-conditionals-rule-add', function(e) { 
    84                 WPFormsProviders.conditionalRuleAdd(this, e); 
    85             }); 
    86  
    87             // Conditional delete rule 
    88             $(document).on('click', '.wpforms-provider-conditionals-rule-delete', function(e) { 
    89                 WPFormsProviders.conditionalRuleDelete(this, e); 
    90             }); 
    91  
    92             // Conditional add new group 
    93             $(document).on('click', '.wpforms-provider-conditionals-groups-add', function(e) { 
    94                 WPFormsProviders.conditionalGroupAdd(this, e); 
    9567            }); 
    9668 
     
    11486                backgroundDismiss: false, 
    11587                closeIcon: false, 
    116                 confirm: function(){ 
    117                     $this.closest('.wpforms-provider-connection').remove(); 
    118                 } 
    119             });  
     88                icon: 'fa fa-exclamation-circle', 
     89                type: 'orange', 
     90                buttons: { 
     91                    confirm: { 
     92                        text: wpforms_builder.ok, 
     93                        btnClass: 'btn-confirm', 
     94                        keys: ['enter'], 
     95                        action: function(){ 
     96                            $this.closest('.wpforms-provider-connection').remove(); 
     97                        } 
     98                    }, 
     99                    cancel: { 
     100                        text: wpforms_builder.cancel 
     101                    } 
     102                } 
     103            }); 
    120104        }, 
    121105 
     
    143127                title: false, 
    144128                content: modalContent, 
     129                icon: 'fa fa-info-circle', 
     130                type: 'blue', 
    145131                backgroundDismiss: false, 
    146132                closeIcon: false, 
    147                 confirm: function () { 
    148                     var input = this.$b.find('input#provider-connection-name'); 
    149                     var error = this.$b.find('.error'); 
    150                     if (input.val() == '') { 
    151                         error.show(); 
    152                         return false; 
    153                     } else { 
    154                          
    155                         var name = input.val(); 
    156  
    157                         // Disable button 
    158                         WPFormsProviders.inputToggle($this, 'disable'); 
    159  
    160                         // Fire AJAX 
    161                         var data =  { 
    162                             action  : 'wpforms_provider_ajax_'+provider, 
    163                             provider: provider, 
    164                             task    : 'new_connection', 
    165                             name    : name, 
    166                             id      : s.form.data('id'), 
    167                             nonce   : wpforms_builder.nonce 
     133                buttons: { 
     134                    confirm: { 
     135                        text: wpforms_builder.ok, 
     136                        btnClass: 'btn-confirm', 
     137                        keys: ['enter'], 
     138                        action: function() { 
     139                            var input = this.$content.find('input#provider-connection-name'); 
     140                            var error = this.$content.find('.error'); 
     141                            if (input.val() == '') { 
     142                                error.show(); 
     143                                return false; 
     144                            } else { 
     145 
     146                                var name = input.val(); 
     147 
     148                                // Disable button 
     149                                WPFormsProviders.inputToggle($this, 'disable'); 
     150 
     151                                // Fire AJAX 
     152                                var data =  { 
     153                                    action  : 'wpforms_provider_ajax_'+provider, 
     154                                    provider: provider, 
     155                                    task    : 'new_connection', 
     156                                    name    : name, 
     157                                    id      : s.form.data('id'), 
     158                                    nonce   : wpforms_builder.nonce 
     159                                } 
     160                                WPFormsProviders.fireAJAX($this, data, function(res) { 
     161                                    if (res.success) { 
     162                                        $connections.find('.wpforms-provider-connections').prepend(res.data.html); 
     163                                        // Process and load the accounts if they exist 
     164                                        var $connection = $connections.find('.wpforms-provider-connection:first'); 
     165                                        if ($connection.find( '.wpforms-provider-accounts option:selected')) { 
     166                                            $connection.find( '.wpforms-provider-accounts option:first').prop('selected', true); 
     167                                            $connection.find('.wpforms-provider-accounts select').trigger('change'); 
     168                                        } 
     169                                    } else { 
     170                                        WPFormsProviders.errorDisplay(res.data.error, $container); 
     171                                    } 
     172                                }); 
     173                            } 
    168174                        } 
    169                         WPFormsProviders.fireAJAX($this, data, function(res) { 
    170                             if (res.success) { 
    171                                 $connections.find('.wpforms-provider-connections').prepend(res.data.html); 
    172                                 // Process and load the accounts if they exist 
    173                                 var $connection = $connections.find('.wpforms-provider-connection:first'); 
    174                                 if ($connection.find( '.wpforms-provider-accounts option:selected')) { 
    175                                     $connection.find( '.wpforms-provider-accounts option:first').prop('selected', true); 
    176                                     $connection.find('.wpforms-provider-accounts select').trigger('change'); 
    177                                 } 
    178                             } else { 
    179                                 WPFormsProviders.errorDisplay(res.data.error, $container); 
    180                             } 
    181                         }); 
     175                    }, 
     176                    cancel: { 
     177                        text: wpforms_builder.cancel 
    182178                    } 
    183179                } 
     
    220216                if (res.success) { 
    221217                    $container.nextAll('.wpforms-connection-block').remove(); 
     218                    $container.nextAll('.wpforms-conditional-block').remove(); 
    222219                    $container.after(res.data.html); 
    223220                    $container.slideUp(); 
    224                     $connection.find('.wpforms-provider-accounts select').trigger('change');  
     221                    $connection.find('.wpforms-provider-accounts select').trigger('change'); 
    225222                } else { 
    226223                    WPFormsProviders.errorDisplay(res.data.error, $container); 
     
    247244            // Remove any blocks that might exist as we prep for new account 
    248245            $container.nextAll('.wpforms-connection-block').remove(); 
     246            $container.nextAll('.wpforms-conditional-block').remove(); 
    249247 
    250248            if (!$this.val()) { 
     
    254252                $connection.find('.wpforms-provider-account-add').slideDown(); 
    255253                WPFormsProviders.inputToggle($this, 'enable'); 
    256              
     254 
    257255            } else { 
    258256 
     
    298296            // Remove any blocks that might exist as we prep for new account 
    299297            $container.nextAll('.wpforms-connection-block').remove(); 
     298            $container.nextAll('.wpforms-conditional-block').remove(); 
    300299 
    301300            data = { 
     
    308307                form_id      : s.formID 
    309308            } 
    310             console.log(s.formID); 
     309 
    311310            WPFormsProviders.fireAJAX($this, data, function(res) { 
    312311                if (res.success) { 
     
    319318 
    320319        /** 
    321          * Toggle conditional field support. 
    322          * 
    323          * @since 1.0.0 
    324          */ 
    325         conditionalToggle: function(el, e) { 
    326             e.preventDefault(); 
    327  
    328             var $this = $(el); 
    329             if ($this.is(':checked')) { 
    330                 $this.parent().parent().find('.wpforms-provider-conditionals-groups').slideDown(); 
    331             } else { 
    332                 $this.parent().parent().find('.wpforms-provider-conditionals-groups').slideUp(); 
    333             } 
    334         }, 
    335  
    336         /** 
    337          * Update/refresh the conditional logic fields and associated options. 
    338          * 
    339          * @since 1.0.4 
    340          */ 
    341         conditionalUpdateOptions: function(e, fields) { 
    342  
    343             // @toodo 
    344             return; 
    345             var formFields = $.extend({}, fields); 
    346                 allowed    = ['text', 'textarea', 'select', 'radio', 'checkbox', 'number' ], 
    347                 changed    = false; 
    348  
    349             // Remove field types that are not allowed and whitelested 
    350             for(var key in formFields) { 
    351                 if ($.inArray(formFields[key].type, allowed) == '-1' ){ 
    352                         delete formFields[key]; 
    353                 } 
    354             } 
    355  
    356             // Now go through each conditional rule in the builder 
    357             $('.wpforms-provider-conditionals-group-row').each(function(index, ele) { 
    358          
    359                 var $this          = $(this), 
    360                     fieldID        = $this.data('field-id'), 
    361                     $fields        = $this.find('.wpforms-provider-conditionals-field'), 
    362                     fieldSelected  = $fields.find('option:selected').val(), 
    363                     $value         = $this.find('.wpforms-provider-conditionals-value'), 
    364                     valueSelected  = '', 
    365                     choiceOrder    = []; 
    366      
    367                 // Empty the field select box, re-add placeholder option     
    368                 $fields.empty().append($('<option>', { value: '', text : '-- Select field --' })); 
    369  
    370                 // Add appropriate options for each field. Reference using the 
    371                 // field label (if provided) or fallback to the field ID. 
    372                 for(var key in formFields) { 
    373                     if (formFields[key].label.length) { 
    374                         var label = wpf.sanitizeString(formFields[key].label); 
    375                     } else { 
    376                         var label = 'Field #' + formFields[key].val; 
    377                     } 
    378                     $fields.append($('<option>', { value: fields[key].id, text : label })); 
    379                 } 
    380  
    381                 // Check if previous selected field exists in the new options added 
    382                 if ($fields.find('option[value="'+fieldSelected+'"]').length) { 
    383  
    384                     // Exists, so restore previous selected value 
    385                     $fields.find('option[value="'+fieldSelected+'"]').prop('selected', true); 
    386  
    387                     // Since the field exist and was selected, now we must proceed 
    388                     // to updating the field values. Luckily, we only have to do 
    389                     // this for fields that leverage a select element. 
    390                     if ( $value.length && $value.is('select') ) { 
    391  
    392                         // Define the order of the choices 
    393                         $('#wpforms-field-option-row-'+fieldSelected+'-choices li').each(function(index, ele) { 
    394                             choiceOrder.push($(ele).data('key')); 
    395                         }); 
    396      
    397                         // Grab the currently selected value to restore later 
    398                         valueSelected = $value.find('option:selected').val(); 
    399  
    400                         // Remove all current options 
    401                         $value.empty(); 
    402  
    403                         // Add new options, in the correct order 
    404                         $.each(choiceOrder, function(index, val) { 
    405                             var label = wpf.sanitizeString(fields['field_'+fieldSelected].choices[val].label); 
    406                             $value.append($('<option>', { value: val, text : label })); 
    407                         }); 
    408  
    409                         // Check if previous selected calue exists in the new options added 
    410                         if ($value.find('option[value="'+valueSelected+'"]').length) { 
    411  
    412                             $value.find('option[value="'+valueSelected+'"]').prop('selected', true); 
    413  
    414                         } else { 
    415  
    416                             // Add temporary placeholder value since the old one 
    417                             // doesn't exist 
    418                             $value.prepend($('<option>', { value: '', text : '-- Select Choice --' })); 
    419  
    420                             // Old value does not exist in the new options, likely 
    421                             // deleted. Add the field ID to the charged variable, 
    422                             // which will let the user know the fields conditional 
    423                             // logic has been altered. 
    424                             if (valueSelected.length > 0) { 
    425                                 changed = true; 
    426                             } 
    427                         } 
    428                     } 
    429  
    430                 } else { 
    431  
    432                     // Old field does not exist in the new options, likely deleted. 
    433                     // Add the field ID to the charged variable, which will let  
    434                     // the user know the fields conditional logic has been altered. 
    435                     changed = true; 
    436  
    437                     // Since previously selected field no longer exists, this 
    438                     // means this rule is now invalid. So the rule gets 
    439                     // deleted as long as it isn't the only rule remaining. 
    440                     $group = $this.closest('.wpforms-provider-conditionals-group'); 
    441                     if ($group.find('table >tbody >tr').length === 1) { 
    442                         var $groups = $this.closest('.wpforms-provider-conditionals-groups'); 
    443                         if ($groups.find('.wpforms-provider-conditionals-group').length > 1) { 
    444                             $group.remove(); 
    445                         } else { 
    446                             $this.find('.wpforms-provider-conditionals-value').remove(); 
    447                             $this.find('.value').append('<select>'); 
    448                         } 
    449                     } else { 
    450                         $this.remove(); 
    451                     } 
    452                 } 
    453             }); 
    454  
    455             // If conditional rules have been altered due to form updates then 
    456             // we alert the user. 
    457             if ( changed  ) { 
    458  
    459                 // Build and trigger alert 
    460                 var alert = 'Due to form changes, Marketing Provider conditional logic rules have been removed or updated.'; 
    461                 $.alert({ 
    462                     title: 'Heads Up!', 
    463                     content: alert 
    464                 });  
    465             } 
    466  
    467             //console.log('Conditional logic options updated'); 
    468         }, 
    469  
    470         /** 
    471          * Process conditional field 
    472          * 
    473          * @since 1.0.0 
    474          */ 
    475         conditionalField: function(el, e) { 
    476             e.preventDefault(); 
    477  
    478             var $this    = $(el), 
    479                 $rule    = $this.parent().parent(), 
    480                 data     = WPFormsProviders.conditionalData($this), 
    481                 name     = data.name+'['+data.groupID+']['+data.ruleID+'][value]', 
    482                 element; 
    483  
    484             if ( !data.field ) { 
    485                 // Placeholder has been selected 
    486                 element = $('<select>'); 
    487             } else if (data.field.type == 'text' || data.field.type == 'number' || data.field.type == 'textarea') { 
    488                 var element = $('<input>').attr({ type: 'text', name: name, class: 'wpforms-provider-conditionals-value'  }); 
    489             } else { 
    490                 var element = $('<select>').attr({ name: name, class: 'wpforms-provider-conditionals-value' }); 
    491                 $.each(data.field.choices, function( key, ele) { 
    492                     if (ele) { 
    493                         element.append($('<option>', { value: key, text : wpf.sanitizeString(ele.label) })); 
    494                     } 
    495                 }); 
    496             } 
    497             $rule.find('.value').empty().append(element); 
    498         }, 
    499  
    500         /** 
    501          * Add new conditional rule. 
    502          * 
    503          * @since 1.0.0 
    504          */ 
    505         conditionalRuleAdd: function(el, e) { 
    506             e.preventDefault(); 
    507  
    508             var $this     = $(el), 
    509                 $group    = $this.closest('.wpforms-provider-conditionals-group'), 
    510                 $rule     = $group.find('tr').last(), 
    511                 $newRule  = $rule.clone(), 
    512                 $field    = $newRule.find('.field select'), 
    513                 $operator = $newRule.find('.operator select'), 
    514                 data      = WPFormsProviders.conditionalData($field), 
    515                 ruleID    = Number(data.ruleID)+1, 
    516                 name      = data.name+'['+data.groupID+']['+ruleID+']'; 
    517  
    518             $newRule.find('option:selected').prop('selected', false); 
    519             $newRule.find('.value').empty().append( $('<select>') ); 
    520             $field.attr('name', name+'[field]').attr('data-ruleid', ruleID); 
    521             $operator.attr('name', name+'[operator]'); 
    522             $rule.after($newRule); 
    523         }, 
    524  
    525         /** 
    526          * Delete conditional rule. If the only rule in group then group will 
    527          * also be removed. 
    528          * 
    529          * @since 1.0.0 
    530          */ 
    531         conditionalRuleDelete: function(el, e) { 
    532             e.preventDefault(); 
    533  
    534             var $this = $(el), 
    535                 $group = $this.closest('.wpforms-provider-conditionals-group'); 
    536                 $rows  = $group.find('table >tbody >tr'); 
    537  
    538             if ($rows && $rows.length === 1) { 
    539                 var $groups = $this.closest('.wpforms-provider-conditionals-groups'); 
    540                 if ( $groups.find('.wpforms-provider-conditionals-group').length > 1 ) { 
    541                     $group.remove(); 
    542                 } else { 
    543                     return; 
    544                 } 
    545             } else { 
    546                 $this.parent().parent().remove(); 
    547             } 
    548         }, 
    549  
    550         /** 
    551          * Add new conditional group. 
    552          * 
    553          * @since 1.0.0 
    554          */ 
    555         conditionalGroupAdd: function(el, e) { 
    556             e.preventDefault(); 
    557  
    558             var $this = $(el), 
    559                 $groupLast = $this.parent().find('.wpforms-provider-conditionals-group').last(), 
    560                 $newGroup  = $groupLast.clone(); 
    561                 $newGroup.find('tr').not(':first').remove(); 
    562             var $field     = $newGroup.find('.field select'), 
    563                 $operator  = $newGroup.find('.operator select'), 
    564                 data       = WPFormsProviders.conditionalData($field), 
    565                 groupID    = Number(data.groupID)+1, 
    566                 ruleID     = 0, 
    567                 name       = data.name+'['+groupID+']['+ruleID+']'; 
    568  
    569             $newGroup.find('option:selected').prop('selected', false); 
    570             $newGroup.find('.value').empty().append( $('<select>') ); 
    571             $field.attr('name', name+'[field]').attr('data-ruleid', ruleID).attr('data-groupid', groupID); 
    572             $operator.attr('name', name+'[operator]'); 
    573             $this.before($newGroup); 
    574         }, 
    575  
    576         /** 
    577320         * Confirm form save before loading Provider panel. 
    578321         * If confirmed, save and reload panel. 
     
    584327            wpforms_panel_switch = true; 
    585328            if (targetPanel =='providers') { 
    586                 var currentState = $('#wpforms-builder-form').serializeJSON(); 
    587                 if ( currentState != wpforms_builder.saved_state ) { 
     329                if ( wpf.savedState != wpf.getFormState('#wpforms-builder-form') ) { 
    588330                    wpforms_panel_switch = false; 
    589331                    $.confirm({ 
     
    592334                        backgroundDismiss: false, 
    593335                        closeIcon: false, 
    594                         confirm: function(){ 
    595                             $('#wpforms-save').trigger('click'); 
    596                             $(document).on('wpformsSaved', function() { 
    597                                 window.location.href = wpforms_builder_providers.url; 
    598                             }); 
    599                         }, 
     336                        icon: 'fa fa-info-circle', 
     337                        type: 'blue', 
     338                        buttons: { 
     339                            confirm: { 
     340                                text: wpforms_builder.ok, 
     341                                btnClass: 'btn-confirm', 
     342                                keys: ['enter'], 
     343                                action: function(){ 
     344                                    $('#wpforms-save').trigger('click'); 
     345                                    $(document).on('wpformsSaved', function() { 
     346                                        window.location.href = wpforms_builder_providers.url; 
     347                                    }); 
     348                                } 
     349                            }, 
     350                            cancel: { 
     351                                text: wpforms_builder.cancel 
     352                            } 
     353                        } 
    600354                    }); 
    601355                } 
     
    625379                console.log(xhr.responseText); 
    626380            }); 
    627         }, 
    628  
    629         /** 
    630          * Return various data for the conditional field. 
    631          * 
    632          * @since 1.0.0 
    633          */ 
    634         conditionalData: function(el) { 
    635  
    636             var $this = $(el); 
    637             var data = { 
    638                 formData    : $('#wpforms-builder-form').serializeObject(), 
    639                 fieldID     : $this.find(':selected').val(), 
    640                 ruleID      : $this.attr('data-ruleid'), 
    641                 groupID     : $this.attr('data-groupid'), 
    642                 connectionID: $this.attr('data-connectionid'), 
    643                 provider    : $this.attr('data-provider'), 
    644                 selectedID : $this.find(':selected').val() 
    645             } 
    646             if (data.selectedID.length) { 
    647                 data.field = data.formData.fields[data.selectedID]; 
    648             } else { 
    649                 data.field = false; 
    650             } 
    651             data.name = 'providers['+data.provider+']['+data.connectionID+'][conditionals]'; 
    652             return data; 
    653381        }, 
    654382 
  • wpforms-lite/trunk/assets/js/admin-builder.js

    r1660094 r1678654  
    4545                $.alert({ 
    4646                    title: wpforms_builder.template_modal_title, 
    47                     content: wpforms_builder.template_modal_msg 
     47                    content: wpforms_builder.template_modal_msg, 
     48                    icon: 'fa fa-info-circle', 
     49                    type: 'blue', 
     50                    buttons: { 
     51                        confirm: { 
     52                            text: wpforms_builder.close, 
     53                            btnClass: 'btn-confirm', 
     54                            keys: ['enter'] 
     55                        } 
     56                    } 
    4857                }) 
    4958            } 
     
    6372            } 
    6473 
    65             wpforms_builder.saved_state = $('#wpforms-builder-form').serializeJSON(); 
    66  
    6774            // Setup/cache some vars not available before 
    6875            s.formID          = $('#wpforms-builder-form').data('id'); 
    69             s.formData        = $('#wpforms-builder-form').serializeObject(); 
    7076            s.pagebreakTop    = $('.wpforms-pagebreak-top').length; 
    7177            s.pagebreakBottom = $('.wpforms-pagebreak-bottom').length; 
    72  
    73             // @todo - performance testing 
    74             //wpforms_builder.saved_state = $('#wpforms-builder-form').serializeJSON(); 
    75             //jQuery.parseJSON(json); 
    76             //console.log( $(':input').length); 
    7778 
    7879            // If there is a section configured, display it. Otherwise 
     
    139140            // jquery-confirmd defaults 
    140141            jconfirm.defaults = { 
    141                 confirmButton: wpforms_builder.ok, 
    142                 cancelButton: wpforms_builder.cancel, 
    143                 confirmButtonClass: 'confirm', 
    144                 cancelButtonClass: 'cancel', 
    145                 keyboardEnabled: true, 
    146                 closeIcon: true 
     142                closeIcon: true, 
     143                backgroundDismiss: true, 
     144                escapeKey: true, 
     145                animationBounce: 1, 
     146                useBootstrap: false, 
     147                theme: 'modern', 
     148                boxWidth: '400px' 
    147149            }; 
    148150        }, 
     
    333335 
    334336                $.confirm({ 
    335                     title: false, 
     337                    title: wpforms_builder.heads_up, 
    336338                    content: wpforms_builder.template_confirm, 
    337339                    backgroundDismiss: false, 
    338340                    closeIcon: false, 
    339                     confirm: function(){ 
    340  
    341                         // Ajax update form 
    342                         var data = { 
    343                             title   : $formName.val(), 
    344                             action  : 'wpforms_update_form_template', 
    345                             template: template, 
    346                             form_id : s.formID, 
    347                             nonce   : wpforms_builder.nonce 
     341                    icon: 'fa fa-exclamation-circle', 
     342                    type: 'orange', 
     343                    buttons: { 
     344                        confirm: { 
     345                            text: wpforms_builder.ok, 
     346                            btnClass: 'btn-confirm', 
     347                            action: function(){ 
     348                                // Ajax update form 
     349                                var data = { 
     350                                    title   : $formName.val(), 
     351                                    action  : 'wpforms_update_form_template', 
     352                                    template: template, 
     353                                    form_id : s.formID, 
     354                                    nonce   : wpforms_builder.nonce 
     355                                } 
     356                                $.post(wpforms_builder.ajax_url, data, function(res) { 
     357                                    if (res.success){ 
     358                                        window.location.href = res.data.redirect; 
     359                                    } else { 
     360                                        console.log(res); 
     361                                    } 
     362                                }).fail(function(xhr, textStatus, e) { 
     363                                    console.log(xhr.responseText); 
     364                                }); 
     365                            } 
     366                        }, 
     367                        cancel: { 
     368                            text: wpforms_builder.cancel, 
     369                            action: function(){ 
     370                                $templateBtns.prop('disabled', false); 
     371                                $this.html(labelOriginal); 
     372                            } 
    348373                        } 
    349                         $.post(wpforms_builder.ajax_url, data, function(res) { 
    350                             if (res.success){ 
    351                                 window.location.href = res.data.redirect; 
    352                             } else { 
    353                                 console.log(res); 
    354                             } 
    355                         }).fail(function(xhr, textStatus, e) { 
    356                             console.log(xhr.responseText); 
    357                         }); 
    358                     }, 
    359                     cancel: function(){ 
    360                         $templateBtns.prop('disabled', false); 
    361                         $this.html(labelOriginal); 
    362374                    } 
    363375                }); 
     
    887899                    title: wpforms_builder.field_locked, 
    888900                    content: wpforms_builder.field_locked_msg, 
    889                     confirmButton: wpforms_builder.close 
     901                    icon: 'fa fa-info-circle', 
     902                    type: 'blue', 
     903                    buttons: { 
     904                        confirm: { 
     905                            text: wpforms_builder.close, 
     906                            btnClass: 'btn-confirm', 
     907                            keys: ['enter'] 
     908                        } 
     909                    } 
    890910                }); 
    891911            } else { 
     
    895915                    backgroundDismiss: false, 
    896916                    closeIcon: false, 
    897                     confirm: function(){ 
    898                         $('#wpforms-field-'+id).fadeOut(400, function(){ 
    899                             $(this).remove(); 
    900                             $('#wpforms-field-option-'+id).remove(); 
    901                             $('.wpforms-field, .wpforms-title-desc').removeClass('active'); 
    902                             WPFormsBuilder.fieldTabToggle('add-fields'); 
    903                             $(document).trigger('wpformsFieldDelete', [id, type ]); 
    904                         }); 
     917                    icon: 'fa fa-exclamation-circle', 
     918                    type: 'orange', 
     919                    buttons: { 
     920                        confirm: { 
     921                            text: wpforms_builder.ok, 
     922                            btnClass: 'btn-confirm', 
     923                            keys: ['enter'], 
     924                            action: function(){ 
     925                                $('#wpforms-field-'+id).fadeOut(400, function(){ 
     926                                    $(this).remove(); 
     927                                    $('#wpforms-field-option-'+id).remove(); 
     928                                    $('.wpforms-field, .wpforms-title-desc').removeClass('active'); 
     929                                    WPFormsBuilder.fieldTabToggle('add-fields'); 
     930                                    $(document).trigger('wpformsFieldDelete', [id, type ]); 
     931                                }); 
     932                            } 
     933                        }, 
     934                        cancel: { 
     935                            text: wpforms_builder.cancel 
     936                        } 
    905937                    } 
    906938                }); 
     
    922954                    title: wpforms_builder.field_locked, 
    923955                    content: wpforms_builder.field_locked_msg, 
    924                     confirmButton: wpforms_builder.close 
     956                    icon: 'fa fa-info-circle', 
     957                    type: 'blue', 
     958                    buttons : { 
     959                        confirm : { 
     960                            text: wpforms_builder.close, 
     961                            btnClass: 'btn-confirm', 
     962                            keys: ['enter'], 
     963                        } 
     964                    } 
    925965                }); 
    926966            } else { 
     
    930970                    backgroundDismiss: false, 
    931971                    closeIcon: false, 
    932                     confirm: function(){ 
    933  
    934                         var $newField            = $field.clone(), 
    935                             $fieldOptions        = $('#wpforms-field-option-'+id), 
    936                             newFieldOptions      = $fieldOptions.html(), 
    937                             newFieldID           = $('#wpforms-field-id').val(), 
    938                             newFieldLabel        = $('#wpforms-field-option-'+id+'-label').val()+' '+wpforms_builder.duplicate_copy, 
    939                             nextID               = Number(newFieldID)+1, 
    940                             regex_fieldOptionsID = new RegExp( 'ID #'+id, "g"), 
    941                             regex_fieldID        = new RegExp( 'fields\\['+id+'\\]', "g"), 
    942                             regex_dataFieldID    = new RegExp( 'data-field-id="'+id+'"', "g"), 
    943                             regex_referenceID    = new RegExp( 'data-reference="'+id+'"', "g"), 
    944                             regex_elementID      = new RegExp( '\\b(id|for)="wpforms-(.*?)'+id+'(.*?)"', "ig"); 
    945  
    946                         // Toggle visibility states 
    947                         $field.after($newField); 
    948                         $field.removeClass('active'); 
    949                         $newField.addClass('active').attr({ 
    950                             'id'           : 'wpforms-field-'+newFieldID, 
    951                             'data-field-id': newFieldID 
    952                         }); 
    953  
    954                         // Various regex to adjust the field options to work with 
    955                         // the new field ID 
    956                         function regex_elementID_replace(match, p1, p2, p3, offset, string) { 
    957                             return p1+'="wpforms-'+p2+newFieldID+p3+'"'; 
     972                    icon: 'fa fa-exclamation-circle', 
     973                    type: 'orange', 
     974                    buttons: { 
     975                        confirm: { 
     976                            text: wpforms_builder.ok, 
     977                            btnClass: 'btn-confirm', 
     978                            keys: ['enter'], 
     979                            action: function(){ 
     980                                var $newField            = $field.clone(), 
     981                                    $fieldOptions        = $('#wpforms-field-option-'+id), 
     982                                    newFieldOptions      = $fieldOptions.html(), 
     983                                    newFieldID           = $('#wpforms-field-id').val(), 
     984                                    newFieldLabel        = $('#wpforms-field-option-'+id+'-label').val()+' '+wpforms_builder.duplicate_copy, 
     985                                    nextID               = Number(newFieldID)+1, 
     986                                    regex_fieldOptionsID = new RegExp( 'ID #'+id, "g"), 
     987                                    regex_fieldID        = new RegExp( 'fields\\['+id+'\\]', "g"), 
     988                                    regex_dataFieldID    = new RegExp( 'data-field-id="'+id+'"', "g"), 
     989                                    regex_referenceID    = new RegExp( 'data-reference="'+id+'"', "g"), 
     990                                    regex_elementID      = new RegExp( '\\b(id|for)="wpforms-(.*?)'+id+'(.*?)"', "ig"); 
     991 
     992                                // Toggle visibility states 
     993                                $field.after($newField); 
     994                                $field.removeClass('active'); 
     995                                $newField.addClass('active').attr({ 
     996                                    'id'           : 'wpforms-field-'+newFieldID, 
     997                                    'data-field-id': newFieldID 
     998                                }); 
     999 
     1000                                // Various regex to adjust the field options to work with 
     1001                                // the new field ID 
     1002                                function regex_elementID_replace(match, p1, p2, p3, offset, string) { 
     1003                                    return p1+'="wpforms-'+p2+newFieldID+p3+'"'; 
     1004                                } 
     1005                                newFieldOptions = newFieldOptions.replace(regex_fieldOptionsID, 'ID #'+newFieldID); 
     1006                                newFieldOptions = newFieldOptions.replace(regex_fieldID, 'fields['+newFieldID+']'); 
     1007                                newFieldOptions = newFieldOptions.replace(regex_dataFieldID, 'data-field-id="'+newFieldID+'"'); 
     1008                                newFieldOptions = newFieldOptions.replace(regex_referenceID, 'data-reference="'+newFieldID+'"'); 
     1009                                newFieldOptions = newFieldOptions.replace(regex_elementID, regex_elementID_replace); 
     1010 
     1011                                // Add new field options panel 
     1012                                $fieldOptions.hide().after('<div class="wpforms-field-option wpforms-field-option-'+type+'" id="wpforms-field-option-'+newFieldID+'" data-field-id="'+newFieldID+'">'+newFieldOptions+'</div>'); 
     1013                                var $newFieldOptions = $('#wpforms-field-option-'+newFieldID); 
     1014 
     1015                                // Copy over values 
     1016                                $fieldOptions.find(':input').each(function(index, el) { 
     1017                                    var $this = $(this); 
     1018                                        name    = $this.attr('name'), 
     1019                                        newName = name.replace(regex_fieldID, 'fields['+newFieldID+']'), 
     1020                                        type    = $this.attr('type'); 
     1021 
     1022                                    if ( type === 'checkbox' || type === 'radio' ) { 
     1023                                        if ($this.is(':checked')){ 
     1024                                            $newFieldOptions.find('[name="'+newName+'"]').prop('checked', true).attr('checked','checked'); 
     1025                                        } else { 
     1026                                            $newFieldOptions.find('[name="'+newName+'"]').prop('checked', false).attr('checked',false); 
     1027                                        } 
     1028                                    } else if ($this.is('select')) { 
     1029                                        if ($this.find('option:selected').length) { 
     1030                                            var optionVal = $this.find('option:selected').val(); 
     1031                                            $newFieldOptions.find('[name="'+newName+'"]').find('[value="'+optionVal+'"]').prop('selected',true); 
     1032                                        } 
     1033                                    } else { 
     1034                                        if ($this.val() != '') { 
     1035                                            $newFieldOptions.find('[name="'+newName+'"]').val( $this.val() ); 
     1036                                        } 
     1037                                    } 
     1038                                }); 
     1039 
     1040                                // ID adjustments 
     1041                                $('#wpforms-field-option-'+newFieldID).find('.wpforms-field-option-hidden-id').val(newFieldID); 
     1042                                $('#wpforms-field-id').val(nextID); 
     1043 
     1044                                // Adjust label to indicate this is a copy 
     1045                                $('#wpforms-field-option-'+newFieldID+'-label').val(newFieldLabel); 
     1046                                $newField.find('.label-title .text').text(newFieldLabel); 
     1047 
     1048                                // Fire field add custom event 
     1049                                $(document).trigger('wpformsFieldAdd', [newFieldID, type]); 
     1050 
     1051                                // Lastly, update the next ID stored in database 
     1052                                $.post(wpforms_builder.ajax_url, {form_id : s.formID, nonce : wpforms_builder.nonce, action : 'wpforms_builder_increase_next_field_id'}); 
     1053                            } 
     1054                        }, 
     1055                        cancel: { 
     1056                            text: wpforms_builder.cancel 
    9581057                        } 
    959                         newFieldOptions = newFieldOptions.replace(regex_fieldOptionsID, 'ID #'+newFieldID); 
    960                         newFieldOptions = newFieldOptions.replace(regex_fieldID, 'fields['+newFieldID+']'); 
    961                         newFieldOptions = newFieldOptions.replace(regex_dataFieldID, 'data-field-id="'+newFieldID+'"'); 
    962                         newFieldOptions = newFieldOptions.replace(regex_referenceID, 'data-reference="'+newFieldID+'"'); 
    963                         newFieldOptions = newFieldOptions.replace(regex_elementID, regex_elementID_replace); 
    964  
    965                         // Add new field options panel 
    966                         $fieldOptions.hide().after('<div class="wpforms-field-option wpforms-field-option-'+type+'" id="wpforms-field-option-'+newFieldID+'" data-field-id="'+newFieldID+'">'+newFieldOptions+'</div>'); 
    967                         var $newFieldOptions = $('#wpforms-field-option-'+newFieldID); 
    968  
    969                         // Copy over values 
    970                         $fieldOptions.find(':input').each(function(index, el) { 
    971                             var $this = $(this); 
    972                                 name    = $this.attr('name'), 
    973                                 newName = name.replace(regex_fieldID, 'fields['+newFieldID+']'), 
    974                                 type    = $this.attr('type'); 
    975  
    976                             if ( type === 'checkbox' || type === 'radio' ) { 
    977                                 if ($this.is(':checked')){ 
    978                                     $newFieldOptions.find('[name="'+newName+'"]').prop('checked', true).attr('checked','checked'); 
    979                                 } else { 
    980                                     $newFieldOptions.find('[name="'+newName+'"]').prop('checked', false).attr('checked',false); 
    981                                 } 
    982                             } else if ($this.is('select')) { 
    983                                 if ($this.find('option:selected').length) { 
    984                                     var optionVal = $this.find('option:selected').val(); 
    985                                     $newFieldOptions.find('[name="'+newName+'"]').find('[value="'+optionVal+'"]').prop('selected',true); 
    986                                 } 
    987                             } else { 
    988                                 if ($this.val() != '') { 
    989                                     $newFieldOptions.find('[name="'+newName+'"]').val( $this.val() ); 
    990                                 } 
    991                             } 
    992                         }); 
    993  
    994                         // ID adjustments 
    995                         $('#wpforms-field-option-'+newFieldID).find('.wpforms-field-option-hidden-id').val(newFieldID); 
    996                         $('#wpforms-field-id').val(nextID); 
    997  
    998                         // Adjust label to indicate this is a copy 
    999                         $('#wpforms-field-option-'+newFieldID+'-label').val(newFieldLabel); 
    1000                         $newField.find('.label-title .text').text(newFieldLabel); 
    1001  
    1002                         // Fire field add custom event 
    1003                         $(document).trigger('wpformsFieldAdd', [newFieldID, type]); 
    1004  
    1005                         // Lastly, update the next ID stored in database 
    1006                         $.post(wpforms_builder.ajax_url, {form_id : s.formID, nonce : wpforms_builder.nonce, action : 'wpforms_builder_increase_next_field_id'}); 
    10071058                    } 
    10081059                }); 
     
    20522103        notificationAdd: function() { 
    20532104 
    2054             var nextID       = Number($('.wpforms-notifications-add').attr('data-next-id')); 
     2105            var nextID       = Number($('.wpforms-notifications-add').attr('data-next-id')), 
    20552106                namePrompt   = wpforms_builder.notification_prompt, 
    20562107                nameField    = '<input autofocus="" type="text" id="notification-name" placeholder="'+wpforms_builder.notification_ph+'">', 
     
    20612112                title: false, 
    20622113                content: modalContent, 
    2063                 confirm: function () { 
    2064                     var input = this.$b.find('input#notification-name'), 
    2065                         error = this.$b.find('.error'); 
    2066                     if (input.val() == '') { 
    2067                         error.show(); 
    2068                         return false; 
    2069                     } else { 
    2070                         var $firstNotification = $('.wpforms-notification').first(), 
    2071                             $newNotification   = $firstNotification.clone(), 
    2072                             newNotification    = ''; 
    2073  
    2074                         $newNotification.find('.wpforms-notification-header span').text(input.val()); 
    2075                         $newNotification.find('input, textarea, select').each(function(index, el) { 
    2076                             if ($(this).attr('name')) { 
    2077                                 $(this).val('').attr('name', $(this).attr('name').replace(/\[(\d+)\]/, '['+nextID+']')); 
    2078                                 if ($(this).is('select')) { 
    2079                                     $(this).find('option').prop('selected',false).attr('selected',false); 
    2080                                     $(this).find('option:first').prop('selected',true).attr('selected','selected'); 
    2081                                 } else if ( $(this).attr('type') === 'checkbox') { 
    2082                                     $(this).prop('checked', false).attr('checked', false).val('1'); 
    2083                                 } else { 
    2084                                     $(this).val('').attr('value',''); 
     2114                icon: 'fa fa-info-circle', 
     2115                type: 'blue', 
     2116                buttons: { 
     2117                    confirm: { 
     2118                        text: wpforms_builder.ok, 
     2119                        btnClass: 'btn-confirm', 
     2120                        keys: ['enter'], 
     2121                        action: function() { 
     2122                            var input = this.$content.find('input#notification-name'), 
     2123                                error = this.$content.find('.error'); 
     2124                            if (input.val() == '') { 
     2125                                error.show(); 
     2126                                return false; 
     2127                            } else { 
     2128                                var $firstNotification = $('.wpforms-notification').first(), 
     2129                                    $newNotification   = $firstNotification.clone(), 
     2130                                    newNotification    = ''; 
     2131 
     2132                                $newNotification.find('.wpforms-notification-header span').text(input.val()); 
     2133                                $newNotification.find('input, textarea, select').each(function(index, el) { 
     2134                                    if ($(this).attr('name')) { 
     2135                                        $(this).val('').attr('name', $(this).attr('name').replace(/\[(\d+)\]/, '['+nextID+']')); 
     2136                                        if ($(this).is('select')) { 
     2137                                            $(this).find('option').prop('selected',false).attr('selected',false); 
     2138                                            $(this).find('option:first').prop('selected',true).attr('selected','selected'); 
     2139                                        } else if ( $(this).attr('type') === 'checkbox') { 
     2140                                            $(this).prop('checked', false).attr('checked', false).val('1'); 
     2141                                        } else { 
     2142                                            $(this).val('').attr('value',''); 
     2143                                        } 
     2144                                    } 
     2145                                }); 
     2146                                $newNotification.find('.wpforms-notification-header input').val(input.val()).attr('value',input.val()); 
     2147                                $newNotification.find('.email-msg textarea').val('{all_fields}').attr('value','{all_fields}');; 
     2148                                $newNotification.find('.email-recipient input').val('{admin_email}').attr('value','{admin_email}'); 
     2149                                // Conditional logic, if present 
     2150                                var $conditionalLogic = $newNotification.find('.wpforms-conditional-block'); 
     2151                                if ($conditionalLogic.length) { 
     2152                                    $conditionalLogic.find('.wpforms-conditional-group').not(':first').remove(); 
     2153                                    $conditionalLogic.find('.wpforms-conditional-row').not(':first').remove(); 
     2154                                    $conditionalLogic.find('.wpforms-conditional-row').attr('data-input-name', 'settings[notifications]['+nextID+']'); 
     2155                                    $conditionalLogic.find('.wpforms-conditional-field').attr('data-groupid', '0').attr('data-ruleid', '0'); 
     2156                                    $conditionalLogic.find('.wpforms-conditional-row').find('.value').empty().append('<select>'); 
     2157                                    $conditionalLogic.find('.wpforms-conditional-groups').hide(); 
    20852158                                } 
     2159                                newNotification = $newNotification.wrap('<div>').parent().html(); 
     2160                                newNotification = newNotification.replace( /wpforms-panel-field-notifications-(\d+)/g, 'wpforms-panel-field-notification-'+nextID ); 
     2161                                newNotification = newNotification.replace( /\[conditionals\]\[(\d+)\]\[(\d+)\]/g, '[conditionals][0][0]' ); 
     2162 
     2163                                $firstNotification.before( newNotification ); 
     2164 
     2165                                $('.wpforms-notifications-add').attr('data-next-id', nextID+1); 
    20862166                            } 
    2087                         }); 
    2088                         $newNotification.find('.wpforms-notification-header input').val(input.val()).attr('value',input.val()); 
    2089                         $newNotification.find('.email-msg textarea').val('{all_fields}').attr('value','{all_fields}');; 
    2090                         $newNotification.find('.email-recipient input').val('{admin_email}').attr('value','{admin_email}'); 
    2091                         // Conditional logic, if present 
    2092                         var $conditionalLogic = $newNotification.find('.wpforms-conditional-block'); 
    2093                         if ($conditionalLogic.length) { 
    2094                             $conditionalLogic.find('.wpforms-conditional-group').not(':first').remove(); 
    2095                             $conditionalLogic.find('.wpforms-conditional-row').not(':first').remove(); 
    2096                             $conditionalLogic.find('.wpforms-conditional-row').attr('data-input-name', 'settings[notifications]['+nextID+']'); 
    2097                             $conditionalLogic.find('.wpforms-conditional-field').attr('data-groupid', '0').attr('data-ruleid', '0'); 
    2098                             $conditionalLogic.find('.wpforms-conditional-row').find('.value').empty().append('<select>'); 
    2099                             $conditionalLogic.find('.wpforms-conditional-groups').hide(); 
    21002167                        } 
    2101                         newNotification = $newNotification.wrap('<div>').parent().html(); 
    2102                         newNotification = newNotification.replace( /wpforms-panel-field-notifications-(\d+)/g, 'wpforms-panel-field-notification-'+nextID ); 
    2103                         newNotification = newNotification.replace( /\[conditionals\]\[(\d+)\]\[(\d+)\]/g, '[conditionals][0][0]' ); 
    2104  
    2105                         $firstNotification.before( newNotification ); 
    2106  
    2107                         $('.wpforms-notifications-add').attr('data-next-id', nextID+1); 
     2168                    }, 
     2169                    cancel: { 
     2170                        text: wpforms_builder.cancel 
    21082171                    } 
    21092172                } 
     
    21232186                title: false, 
    21242187                content: wpforms_builder.notification_delete, 
    2125                 confirm: function () { 
    2126                     var notifications = $('.wpforms-notification'); 
    2127                     if ( notifications.length <= 1 ) { 
    2128                         $.alert({ 
    2129                             title: false, 
    2130                             content: wpforms_builder.notification_error2 
    2131                         }); 
    2132                     } else { 
    2133                         $this.closest('.wpforms-notification').remove(); 
     2188                icon: 'fa fa-exclamation-circle', 
     2189                type: 'orange', 
     2190                buttons: { 
     2191                    confirm: { 
     2192                        text: wpforms_builder.ok, 
     2193                        btnClass: 'btn-confirm', 
     2194                        keys: ['enter'], 
     2195                        action: function () { 
     2196                            var notifications = $('.wpforms-notification'); 
     2197                            if ( notifications.length <= 1 ) { 
     2198                                $.alert({ 
     2199                                    title: false, 
     2200                                    content: wpforms_builder.notification_error2, 
     2201                                    icon: 'fa fa-exclamation-circle', 
     2202                                    type: 'orange', 
     2203                                    buttons: { 
     2204                                        cancel: { 
     2205                                            text: wpforms_builder.ok, 
     2206                                            btnClass: 'btn-confirm', 
     2207                                            keys: ['enter'] 
     2208                                        } 
     2209                                    } 
     2210                                }); 
     2211                            } else { 
     2212                                $this.closest('.wpforms-notification').remove(); 
     2213                            } 
     2214                        } 
     2215                    }, 
     2216                    cancel: { 
     2217                        text: wpforms_builder.cancel 
    21342218                    } 
    21352219                } 
     
    21592243                    title: false, 
    21602244                    content: content, 
    2161                     confirmButton: wpforms_builder.close 
     2245                    boxWidth: '600px', 
     2246                    buttons: { 
     2247                        confirm: { 
     2248                            text: wpforms_builder.close, 
     2249                            btnClass: 'btn-confirm', 
     2250                            keys: ['enter'] 
     2251                        } 
     2252                    } 
    21622253                }); 
    21632254            }); 
     
    22052296                    $label.text(text); 
    22062297                    $icon.toggleClass('fa-check fa-cog fa-spin'); 
    2207                     wpforms_builder.saved_state = $('#wpforms-builder-form').serializeJSON(); 
     2298                    wpf.savedState = wpf.getFormState( '#wpforms-builder-form'); 
    22082299                    $(document).trigger('wpformsSaved'); 
    22092300                    if (true === redirect ) { 
     
    22312322                    title: false, 
    22322323                    content: wpforms_builder.exit_confirm, 
    2233                     confirmButton: wpforms_builder.save_exit, 
    2234                     cancelButton: wpforms_builder.exit, 
     2324                    icon: 'fa fa-exclamation-circle', 
     2325                    type: 'orange', 
    22352326                    backgroundDismiss: false, 
    22362327                    closeIcon: false, 
    2237                     confirm: function(){ 
    2238                         WPFormsBuilder.formSave(true); 
    2239                     }, 
    2240                     cancel: function(){ 
    2241                         window.location.href = wpforms_builder.exit_url; 
     2328                    buttons: { 
     2329                        confirm: { 
     2330                            text: wpforms_builder.save_exit, 
     2331                            btnClass: 'btn-confirm', 
     2332                            keys: ['enter'], 
     2333                            action: function(){ 
     2334                                WPFormsBuilder.formSave(true); 
     2335                            } 
     2336                        }, 
     2337                        cancel: { 
     2338                            text: wpforms_builder.exit, 
     2339                            action: function(){ 
     2340                                window.location.href = wpforms_builder.exit_url; 
     2341                            } 
     2342                        } 
    22422343                    } 
    22432344                }); 
     
    22522353        formIsSaved: function() { 
    22532354 
    2254             var currentState = $('#wpforms-builder-form').serializeJSON(); 
    2255  
    2256             if ( wpforms_builder.saved_state == currentState ) { 
     2355            if ( wpf.savedState == wpf.getFormState( '#wpforms-builder-form' ) ) { 
    22572356                return true; 
    22582357            } else { 
     
    23232422                $this.val(formatted); 
    23242423            }); 
     2424 
     2425            // Don't allow users to enable payments if storing entries has 
     2426            // been disabled in the General settings. 
     2427            $(document).on('change', '#wpforms-panel-field-stripe-enable, #wpforms-panel-field-paypal_standard-enable', function(event) { 
     2428                var $this = $(this); 
     2429                if ( $this.prop('checked') ) { 
     2430                    var disabled = $('#wpforms-panel-field-settings-disable_entries').prop('checked'); 
     2431                    if ( disabled ) { 
     2432                        $.confirm({ 
     2433                            title: wpforms_builder.heads_up, 
     2434                            content: wpforms_builder.payments_entries_off, 
     2435                            backgroundDismiss: false, 
     2436                            closeIcon: false, 
     2437                            icon: 'fa fa-exclamation-circle', 
     2438                            type: 'orange', 
     2439                            buttons: { 
     2440                                confirm: { 
     2441                                    text: wpforms_builder.ok, 
     2442                                    btnClass: 'btn-confirm', 
     2443                                } 
     2444                            } 
     2445                        }); 
     2446                        $this.prop('checked',false); 
     2447                    } 
     2448                } 
     2449            }); 
     2450 
    23252451        }, 
    23262452 
     
    23492475                    type    = $this.data('type'); 
    23502476                if ( allowed && allowed.length ) { 
    2351                     var fields = wpf.getFields(allowed.split(',')); 
     2477                    var fields = wpf.getFields(allowed.split(','),true); 
    23522478                } else { 
    2353                     var fields = wpf.getFields(); 
     2479                    var fields = wpf.getFields(false, true); 
    23542480                } 
    23552481 
  • wpforms-lite/trunk/assets/js/admin-utils.js

    r1646716 r1678654  
    22var wpf = { 
    33 
     4    cachedFields: {}, 
     5    savedState: false, 
     6 
    47    // This file contains a collection of utility functions. 
    58 
     
    2225     */ 
    2326    ready: function() { 
     27 
     28        // Load initial form saved state. 
     29        wpf.savedState = wpf.getFormState( '#wpforms-builder-form' ); 
    2430    }, 
    2531 
     
    5056 
    5157        var fields = wpf.getFields(); 
     58 
    5259        jQuery(document).trigger('wpformsFieldUpdate', [fields] ); 
    53         // console.log('Field update detected'); 
     60 
     61        wpf.debug('fieldUpdate triggered'); 
    5462    }, 
    5563 
     
    5967     * @since 1.0.1 
    6068     * @param array allowedFields 
     69     * @param bool useCache 
    6170     * @return object 
    6271     */ 
    63     getFields: function(allowedFields) { 
    64  
    65         var formData       = jQuery('#wpforms-builder-form').serializeObject(), 
    66             fields         = formData.fields, 
    67             fieldOrder     = [], 
    68             fieldsOrdered  = new Array(), 
    69             fieldBlacklist = ['html','divider','pagebreak']; 
    70  
    71         if (!fields) { 
    72             return false; 
    73         } 
    74  
    75         // Find and store the order of forms. The order is lost when javascript 
    76         // serilizes the form. 
    77         jQuery('.wpforms-field-option').each(function(index, ele) { 
    78             fieldOrder.push(jQuery(ele).data('field-id')); 
    79         }); 
    80  
    81         // Remove fields that are not supported and check for white list 
    82         jQuery.each(fields, function(index, ele) { 
    83             if (ele) { 
    84                 if (jQuery.inArray(fields[index].type, fieldBlacklist) == '1' ){ 
    85                     delete fields[index]; 
    86                     wpf.removeArrayItem(fieldOrder, index); 
    87                 } else if (typeof allowedFields !== 'undefined' && allowedFields && allowedFields.constructor === Array) { 
    88                     if (jQuery.inArray(fields[index].type, allowedFields) == '-1' ){ 
     72    getFields: function(allowedFields, useCache ) { 
     73 
     74        useCache = useCache || false; 
     75 
     76        if ( useCache && ! jQuery.isEmptyObject(wpf.cachedFields) ) { 
     77 
     78            // Use cache if told and cache is primed. 
     79            var fieldsOrdered = jQuery.extend({}, wpf.cachedFields); 
     80 
     81            wpf.debug('getFields triggered (cached)'); 
     82 
     83        } else { 
     84 
     85            // Normal processing, get fields from builder and prime cache. 
     86            var formData       = jQuery('#wpforms-builder-form').serializeObject(), 
     87                fields         = formData.fields, 
     88                fieldOrder     = [], 
     89                fieldsOrdered  = new Array(), 
     90                fieldBlacklist = ['html','divider','pagebreak']; 
     91 
     92            if (!fields) { 
     93                return false; 
     94            } 
     95 
     96            // Find and store the order of forms. The order is lost when javascript 
     97            // serilizes the form. 
     98            jQuery('.wpforms-field-option').each(function(index, ele) { 
     99                fieldOrder.push(jQuery(ele).data('field-id')); 
     100            }); 
     101 
     102            // Remove fields that are not supported and check for white list 
     103            jQuery.each(fields, function(index, ele) { 
     104                if (ele) { 
     105                    if (jQuery.inArray(fields[index].type, fieldBlacklist) == '1' ){ 
    89106                        delete fields[index]; 
    90107                        wpf.removeArrayItem(fieldOrder, index); 
    91108                    } 
    92109                } 
    93             } 
    94         }); 
    95  
    96         // Preserve the order of field choices 
    97         for(var key in fields) { 
    98             if (fields[key].choices) { 
    99                 jQuery('#wpforms-field-option-row-'+fields[key].id+'-choices .choices-list li').each(function(index, ele) { 
    100                     var choiceKey = jQuery(ele).data('key'); 
    101                     fields[key].choices['choice_'+choiceKey] = fields[key].choices[choiceKey]; 
    102                     fields[key].choices['choice_'+choiceKey].key = choiceKey; 
    103                     delete fields[key].choices[choiceKey]; 
    104                 }); 
    105             } 
    106         } 
    107  
    108         // Preserve the order of fields 
    109         for(var key in fieldOrder) { 
    110             fieldsOrdered['field_'+fieldOrder[key]] = fields[fieldOrder[key]]; 
     110            }); 
     111 
     112            // Preserve the order of field choices 
     113            for(var key in fields) { 
     114                if (fields[key].choices) { 
     115                    jQuery('#wpforms-field-option-row-'+fields[key].id+'-choices .choices-list li').each(function(index, ele) { 
     116                        var choiceKey = jQuery(ele).data('key'); 
     117                        fields[key].choices['choice_'+choiceKey] = fields[key].choices[choiceKey]; 
     118                        fields[key].choices['choice_'+choiceKey].key = choiceKey; 
     119                        delete fields[key].choices[choiceKey]; 
     120                    }); 
     121                } 
     122            } 
     123 
     124            // Preserve the order of fields 
     125            for(var key in fieldOrder) { 
     126                fieldsOrdered['field_'+fieldOrder[key]] = fields[fieldOrder[key]]; 
     127            } 
     128 
     129            // Cache the all the fields now that they have been ordered and initially 
     130            // processed. 
     131            wpf.cachedFields = fieldsOrdered; 
     132 
     133            wpf.debug('getFields triggered'); 
     134        } 
     135 
     136        // If we should only return specfic field types, remove the others. 
     137        if ( allowedFields && allowedFields.constructor === Array ) { 
     138            for(key in fieldsOrdered) { 
     139                if ( jQuery.inArray(fieldsOrdered[key].type, allowedFields) === -1 ){ 
     140                    delete fieldsOrdered[key]; 
     141                } 
     142            } 
    111143        } 
    112144 
     
    147179    getField: function(id,key) { 
    148180        // @todo 
     181    }, 
     182 
     183    /** 
     184     * Get form state. 
     185     * 
     186     * @since 1.3.8 
     187     * @param object el 
     188     */ 
     189    getFormState: function( el ) { 
     190 
     191        //return JSON.stringify( jQuery( el ).serializeArray() ); 
     192 
     193        // Serialize tested the most performant string we can use for 
     194        // comparisons. 
     195        return jQuery( el ).serialize(); 
    149196    }, 
    150197 
     
    352399 
    353400        return false 
     401    }, 
     402 
     403    /** 
     404     * Debug output helper. 
     405     * 
     406     * @since 1.3.8 
     407     * @param mixed msg 
     408     */ 
     409    debug: function( msg ) { 
     410 
     411        if ( wpf.isDebug() ) { 
     412            if ( typeof msg === 'object' || msg.constructor === Array ) { 
     413                console.log( 'WPForms Debug:' ); 
     414                console.log( msg ) 
     415            } else { 
     416                console.log( 'WPForms Debug: '+msg ); 
     417            } 
     418        } 
     419    }, 
     420 
     421    /** 
     422     * Is debug mode. 
     423     * 
     424     * @since 1.3.8 
     425     */ 
     426    isDebug: function() { 
     427 
     428        return ( ( window.location.hash && '#wpformsdebug' === window.location.hash ) || wpforms_builder.debug ); 
    354429    } 
    355430} 
  • wpforms-lite/trunk/assets/js/jquery.jquery-confirm.min.js

    r1370890 r1678654  
    11/*! 
    2  * jquery-confirm v2.0.0 (http://craftpip.github.io/jquery-confirm/) 
     2 * jquery-confirm v3.2.3 (http://craftpip.github.io/jquery-confirm/) 
    33 * Author: Boniface Pereira 
    44 * Website: www.craftpip.com 
    55 * Contact: hey@craftpip.com 
    66 * 
    7  * Copyright 2013-2015 jquery-confirm 
     7 * Copyright 2013-2017 jquery-confirm 
    88 * Licensed under MIT (https://github.com/craftpip/jquery-confirm/blob/master/LICENSE) 
    99 */ 
    10 if(typeof jQuery==="undefined"){throw new Error("jquery-confirm requires jQuery")}var jconfirm,Jconfirm;(function(b){b.fn.confirm=function(c){if(typeof c==="undefined"){c={}}var d=b(this);d.on("click",function(f){f.preventDefault();if(d.attr("href")){c.confirm=function(){location.href=d.attr("href")}}b.confirm(c)});return d};b.confirm=function(c){return jconfirm(c)};b.alert=function(c){c.cancelButton=false;return jconfirm(c)};b.dialog=function(c){c.cancelButton=false;c.confirmButton=false;c.confirmKeys=[13];return jconfirm(c)};jconfirm=function(c){if(typeof c==="undefined"){c={}}if(jconfirm.defaults){b.extend(jconfirm.pluginDefaults,jconfirm.defaults)}var c=b.extend({},jconfirm.pluginDefaults,c);return new Jconfirm(c)};Jconfirm=function(c){b.extend(this,c);this._init()};Jconfirm.prototype={_init:function(){var c=this;this._rand=Math.round(Math.random()*99999);this._buildHTML();this._bindEvents();setTimeout(function(){c.open()},0)},animations:["anim-scale","anim-top","anim-bottom","anim-left","anim-right","anim-zoom","anim-opacity","anim-none","anim-rotate","anim-rotatex","anim-rotatey","anim-scalex","anim-scaley"],_buildHTML:function(){this.animation="anim-"+this.animation.toLowerCase();this.closeAnimation="anim-"+this.closeAnimation.toLowerCase();this.$el=b(this.template).appendTo(this.container).addClass(this.theme);this.$el.find(".jconfirm-box-container").addClass(this.columnClass);this.CSS={"-webkit-transition-duration":this.animationSpeed/1000+"s","transition-duration":this.animationSpeed/1000+"s","-webkit-transition-timing-function":"cubic-bezier(.38,1.28,.2, "+this.animationBounce+")","transition-timing-function":"cubic-bezier(.38,1.28,.2, "+this.animationBounce+")"};this.$el.find(".jconfirm-bg").css(this.CSS);this.$b=this.$el.find(".jconfirm-box").css(this.CSS).addClass(this.animation);this.$body=this.$b;if(this.rtl){this.$el.addClass("rtl")}this.$title=this.$el.find("div.title");this.setTitle();this.contentDiv=this.$el.find("div.content");this.$content=this.contentDiv;this.$btnc=this.$el.find(".buttons");if(this.confirmButton&&this.confirmButton.trim()!==""){this.$confirmButton=b('<button class="btn">'+this.confirmButton+"</button>").appendTo(this.$btnc).addClass(this.confirmButtonClass)}if(this.cancelButton&&this.cancelButton.trim()!==""){this.$cancelButton=b('<button class="btn">'+this.cancelButton+"</button>").appendTo(this.$btnc).addClass(this.cancelButtonClass)}if(!this.confirmButton&&!this.cancelButton){this.$btnc.remove()}if(!this.confirmButton&&!this.cancelButton&&this.closeIcon===null){this.$closeButton=this.$b.find(".closeIcon").show()}if(this.closeIcon===true){this.$closeButton=this.$b.find(".closeIcon").show()}this.setContent();if(this.autoClose){this._startCountDown()}},setTitle:function(c){this.title=(typeof c!=="undefined")?c:this.title;if(this.title&&this.$title){this.$title.html('<i class="'+this.icon+'"></i> '+this.title)}else{this.$title.remove()}},setContent:function(e){var f=this;this.content=(e)?e:this.content;var c=(e)?true:false;if(typeof this.content==="boolean"){if(!this.content){this.contentDiv.remove()}else{console.error("Invalid option for property content: passed TRUE")}}else{if(typeof this.content==="string"){if(this.content.substr(0,4).toLowerCase()==="url:"){this.contentDiv.html("");this.$btnc.find("button").prop("disabled",true);var d=this.content.substring(4,this.content.length);b.get(d).done(function(h){f.contentDiv.html(h)}).always(function(i,h,j){if(typeof f.contentLoaded==="function"){f.contentLoaded(i,h,j)}f.$btnc.find("button").prop("disabled",false);f.setDialogCenter()})}else{this.contentDiv.html(this.content)}}else{if(typeof this.content==="function"){this.contentDiv.html("");this.$btnc.find("button").attr("disabled","disabled");var g=this.content(this);if(typeof g!=="object"){console.error("The content function must return jquery promise.")}else{if(typeof g.always!=="function"){console.error("The object returned is not a jquery promise.")}else{g.always(function(i,h){f.$btnc.find("button").removeAttr("disabled");f.setDialogCenter()})}}}else{console.error("Invalid option for property content, passed: "+typeof this.content)}}}this.setDialogCenter(c)},_startCountDown:function(){var c=this.autoClose.split("|");if(/cancel/.test(c[0])&&this.type==="alert"){return false}else{if(/confirm|cancel/.test(c[0])){this.$cd=b('<span class="countdown">').appendTo(this["$"+c[0]+"Button"]);var d=this;d.$cd.parent().click();var e=c[1]/1000;this.interval=setInterval(function(){d.$cd.html(" ["+(e-=1)+"]");if(e===0){d.$cd.parent().trigger("click");clearInterval(d.interval)}},1000)}else{console.error("Invalid option "+c[0]+", must be confirm/cancel")}}},_bindEvents:function(){var d=this;var c=false;this.$el.find(".jconfirm-scrollpane").click(function(f){if(!c){if(d.backgroundDismiss){d.cancel();d.close()}else{d.$b.addClass("hilight");setTimeout(function(){d.$b.removeClass("hilight")},400)}}c=false});this.$el.find(".jconfirm-box").click(function(f){c=true});if(this.$confirmButton){this.$confirmButton.click(function(g){g.preventDefault();var f=d.confirm(d.$b);d.onAction("confirm");if(typeof f==="undefined"||f){d.close()}})}if(this.$cancelButton){this.$cancelButton.click(function(g){g.preventDefault();var f=d.cancel(d.$b);d.onAction("cancel");if(typeof f==="undefined"||f){d.close()}})}if(this.$closeButton){this.$closeButton.click(function(f){f.preventDefault();d.cancel();d.onAction("close");d.close()})}if(this.keyboardEnabled){setTimeout(function(){b(window).on("keyup."+this._rand,function(f){d.reactOnKey(f)})},500)}b(window).on("resize."+this._rand,function(){d.setDialogCenter(true)})},reactOnKey:function a(f){var c=b(".jconfirm");if(c.eq(c.length-1)[0]!==this.$el[0]){return false}var d=f.which;if(this.contentDiv.find(":input").is(":focus")&&/13|32/.test(d)){return false}if(b.inArray(d,this.cancelKeys)!==-1){if(!this.backgroundDismiss){this.$el.find(".jconfirm-bg").click();return false}if(this.$cancelButton){this.$cancelButton.click()}else{this.close()}}if(b.inArray(d,this.confirmKeys)!==-1){if(this.$confirmButton){this.$confirmButton.click()}}},setDialogCenter:function(d){var h=b(window).height();var g=this.$b.outerHeight();var c=(h-g)/2;var f=100;if(g>(h-f)){var e={"margin-top":f/2,"margin-bottom":f/2}}else{var e={"margin-top":c}}if(d){this.$b.animate(e,{duration:this.animationSpeed,queue:false})}else{this.$b.css(e)}},close:function(){var c=this;if(this.isClosed()){return false}if(typeof this.onClose==="function"){this.onClose()}b(window).unbind("resize."+this._rand);if(this.keyboardEnabled){b(window).unbind("keyup."+this._rand)}c.$el.find(".jconfirm-bg").removeClass("seen");this.$b.addClass(this.closeAnimation);var d=(this.closeAnimation=="anim-none")?0:this.animationSpeed;setTimeout(function(){c.$el.remove()},d+50);jconfirm.record.closed+=1;jconfirm.record.currentlyOpen-=1;if(jconfirm.record.currentlyOpen<1){b("body").removeClass("jconfirm-noscroll")}return true},open:function(){var d=this;if(this.isClosed()){return false}d.$el.find(".jconfirm-bg").addClass("seen");b("body").addClass("jconfirm-noscroll");this.$b.removeClass(this.animations.join(" "));this.$b.find("input[autofocus]:visible:first").focus();jconfirm.record.opened+=1;jconfirm.record.currentlyOpen+=1;if(typeof this.onOpen==="function"){this.onOpen()}var c="jconfirm-box"+this._rand;this.$b.attr("aria-labelledby",c).attr("tabindex",-1).focus();if(this.$title){this.$title.attr("id",c)}else{if(this.$content){this.$content.attr("id",c)}}return true},isClosed:function(){return this.$el.css("display")===""}};jconfirm.pluginDefaults={template:'<div class="jconfirm"><div class="jconfirm-bg"></div><div class="jconfirm-scrollpane"><div class="container"><div class="row"><div class="jconfirm-box-container span6 offset3"><div class="jconfirm-box" role="dialog" aria-labelledby="labelled" tabindex="-1"><div class="closeIcon"><span class="glyphicon glyphicon-remove"></span></div><div class="title"></div><div class="content"></div><div class="buttons"></div><div class="jquery-clear"></div></div></div></div></div></div></div>',title:"Hello",content:"Are you sure to continue?",contentLoaded:function(){},icon:"",confirmButton:"Okay",cancelButton:"Cancel",confirmButtonClass:"btn-default",cancelButtonClass:"btn-default",theme:"white",animation:"zoom",closeAnimation:"scale",animationSpeed:500,animationBounce:1.2,keyboardEnabled:false,rtl:false,confirmKeys:[13,32],cancelKeys:[27],container:"body",confirm:function(){},cancel:function(){},backgroundDismiss:true,autoClose:false,closeIcon:null,columnClass:"col-md-4 col-md-offset-4",onOpen:function(){},onClose:function(){},onAction:function(){}};jconfirm.record={opened:0,closed:0,currentlyOpen:0}})(jQuery); 
     10if(typeof jQuery==="undefined"){throw new Error("jquery-confirm requires jQuery");}var jconfirm,Jconfirm;(function($,window){$.fn.confirm=function(options,option2){if(typeof options==="undefined"){options={};}if(typeof options==="string"){options={content:options,title:(option2)?option2:false};}$(this).each(function(){var $this=$(this);$this.on("click",function(e){e.preventDefault();var jcOption=$.extend({},options);if($this.attr("data-title")){jcOption.title=$this.attr("data-title");}if($this.attr("data-content")){jcOption.content=$this.attr("data-content");}if(typeof jcOption.buttons=="undefined"){jcOption.buttons={};}jcOption["$target"]=$this;if($this.attr("href")&&Object.keys(jcOption.buttons).length==0){var buttons=$.extend(true,{},jconfirm.pluginDefaults.defaultButtons,(jconfirm.defaults||{}).defaultButtons||{});var firstBtn=Object.keys(buttons)[0];jcOption.buttons=buttons;jcOption.buttons[firstBtn].action=function(){location.href=$this.attr("href");};}jcOption.closeIcon=false;$.confirm(jcOption);});});return $(this);};$.confirm=function(options,option2){if(typeof options==="undefined"){options={};}if(typeof options==="string"){options={content:options,title:(option2)?option2:false};}if(typeof options.buttons!="object"){options.buttons={};}if(Object.keys(options.buttons).length==0){var buttons=$.extend(true,{},jconfirm.pluginDefaults.defaultButtons,(jconfirm.defaults||{}).defaultButtons||{});options.buttons=buttons;}return jconfirm(options);};$.alert=function(options,option2){if(typeof options==="undefined"){options={};}if(typeof options==="string"){options={content:options,title:(option2)?option2:false};}if(typeof options.buttons!="object"){options.buttons={};}if(Object.keys(options.buttons).length==0){var buttons=$.extend(true,{},jconfirm.pluginDefaults.defaultButtons,(jconfirm.defaults||{}).defaultButtons||{});var firstBtn=Object.keys(buttons)[0];options.buttons[firstBtn]=buttons[firstBtn];}return jconfirm(options);};$.dialog=function(options,option2){if(typeof options==="undefined"){options={};}if(typeof options==="string"){options={content:options,title:(option2)?option2:false,closeIcon:function(){}};}options.buttons={};if(typeof options.closeIcon=="undefined"){options.closeIcon=function(){};}options.confirmKeys=[13];return jconfirm(options);};jconfirm=function(options){if(typeof options==="undefined"){options={};}var pluginOptions=$.extend(true,{},jconfirm.pluginDefaults);if(jconfirm.defaults){pluginOptions=$.extend(true,pluginOptions,jconfirm.defaults);}pluginOptions=$.extend(true,{},pluginOptions,options);var instance=new Jconfirm(pluginOptions);jconfirm.instances.push(instance);return instance;};Jconfirm=function(options){$.extend(this,options);this._init();};Jconfirm.prototype={_init:function(){var that=this;if(!jconfirm.instances.length){jconfirm.lastFocused=$("body").find(":focus");}this._id=Math.round(Math.random()*99999);if(!this.lazyOpen){setTimeout(function(){that.open();},0);}},_buildHTML:function(){var that=this;this._parseAnimation(this.animation,"o");this._parseAnimation(this.closeAnimation,"c");this._parseBgDismissAnimation(this.backgroundDismissAnimation);this._parseColumnClass(this.columnClass);this._parseTheme(this.theme);this._parseType(this.type);var template=$(this.template);template.find(".jconfirm-box").addClass(this.animationParsed).addClass(this.backgroundDismissAnimationParsed).addClass(this.typeParsed);if(this.typeAnimated){template.find(".jconfirm-box").addClass("jconfirm-type-animated");}if(this.useBootstrap){template.find(".jc-bs3-row").addClass(this.bootstrapClasses.row);template.find(".jc-bs3-row").addClass("justify-content-md-center justify-content-sm-center justify-content-xs-center justify-content-lg-center");template.find(".jconfirm-box-container").addClass(this.columnClassParsed);if(this.containerFluid){template.find(".jc-bs3-container").addClass(this.bootstrapClasses.containerFluid);}else{template.find(".jc-bs3-container").addClass(this.bootstrapClasses.container);}}else{template.find(".jconfirm-box").css("width",this.boxWidth);}if(this.titleClass){template.find(".jconfirm-title-c").addClass(this.titleClass);}template.addClass(this.themeParsed);var ariaLabel="jconfirm-box"+this._id;template.find(".jconfirm-box").attr("aria-labelledby",ariaLabel).attr("tabindex",-1);template.find(".jconfirm-content").attr("id",ariaLabel);if(this.bgOpacity!=null){template.find(".jconfirm-bg").css("opacity",this.bgOpacity);}if(this.rtl){template.addClass("jconfirm-rtl");}this.$el=template.appendTo(this.container);this.$jconfirmBoxContainer=this.$el.find(".jconfirm-box-container");this.$jconfirmBox=this.$body=this.$el.find(".jconfirm-box");this.$jconfirmBg=this.$el.find(".jconfirm-bg");this.$title=this.$el.find(".jconfirm-title");this.$titleContainer=this.$el.find(".jconfirm-title-c");this.$content=this.$el.find("div.jconfirm-content");this.$contentPane=this.$el.find(".jconfirm-content-pane");this.$icon=this.$el.find(".jconfirm-icon-c");this.$closeIcon=this.$el.find(".jconfirm-closeIcon");this.$btnc=this.$el.find(".jconfirm-buttons");this.$scrollPane=this.$el.find(".jconfirm-scrollpane");this._contentReady=$.Deferred();this._modalReady=$.Deferred();this.setTitle();this.setIcon();this._setButtons();this._parseContent();this.initDraggable();if(this.isAjax){this.showLoading(false);}$.when(this._contentReady,this._modalReady).then(function(){if(that.isAjaxLoading){setTimeout(function(){that.isAjaxLoading=false;that.setContent();that.setTitle();that.setIcon();setTimeout(function(){that.hideLoading(false);},100);if(typeof that.onContentReady=="function"){that.onContentReady();}},50);}else{that.setContent();that.setTitle();that.setIcon();if(typeof that.onContentReady=="function"){that.onContentReady();}}if(that.autoClose){that._startCountDown();}});that._contentHash=this._hash(that.$content.html());that._contentHeight=this.$content.height();this._watchContent();this.setDialogCenter();if(this.animation=="none"){this.animationSpeed=1;this.animationBounce=1;}this.$body.css(this._getCSS(this.animationSpeed,this.animationBounce));this.$contentPane.css(this._getCSS(this.animationSpeed,1));this.$jconfirmBg.css(this._getCSS(this.animationSpeed,1));},_typePrefix:"jconfirm-type-",typeParsed:"",_parseType:function(type){this.typeParsed=this._typePrefix+type;},setType:function(type){var oldClass=this.typeParsed;this._parseType(type);this.$jconfirmBox.removeClass(oldClass).addClass(this.typeParsed);},themeParsed:"",_themePrefix:"jconfirm-",setTheme:function(theme){var previous=this.theme;this.theme=theme||this.theme;this._parseTheme(this.theme);if(previous){this.$el.removeClass(previous);}this.$el.addClass(this.themeParsed);this.theme=theme;},_parseTheme:function(theme){var that=this;theme=theme.split(",");$.each(theme,function(k,a){if(a.indexOf(that._themePrefix)==-1){theme[k]=that._themePrefix+$.trim(a);}});this.themeParsed=theme.join(" ").toLowerCase();},backgroundDismissAnimationParsed:"",_bgDismissPrefix:"jconfirm-hilight-",_parseBgDismissAnimation:function(bgDismissAnimation){var animation=bgDismissAnimation.split(",");var that=this;$.each(animation,function(k,a){if(a.indexOf(that._bgDismissPrefix)==-1){animation[k]=that._bgDismissPrefix+$.trim(a);}});this.backgroundDismissAnimationParsed=animation.join(" ").toLowerCase();},animationParsed:"",closeAnimationParsed:"",_animationPrefix:"jconfirm-animation-",setAnimation:function(animation){this.animation=animation||this.animation;this._parseAnimation(this.animation,"o");},_parseAnimation:function(animation,which){which=which||"o";var animations=animation.split(",");var that=this;$.each(animations,function(k,a){if(a.indexOf(that._animationPrefix)==-1){animations[k]=that._animationPrefix+$.trim(a);}});var a_string=animations.join(" ").toLowerCase();if(which=="o"){this.animationParsed=a_string;}else{this.closeAnimationParsed=a_string;}return a_string;},setCloseAnimation:function(closeAnimation){this.closeAnimation=closeAnimation||this.closeAnimation;this._parseAnimation(this.closeAnimation,"c");},setAnimationSpeed:function(speed){this.animationSpeed=speed||this.animationSpeed;},columnClassParsed:"",setColumnClass:function(colClass){if(!this.useBootstrap){console.warn("cannot set columnClass, useBootstrap is set to false");return;}this.columnClass=colClass||this.columnClass;this._parseColumnClass(this.columnClass);this.$jconfirmBoxContainer.addClass(this.columnClassParsed);},setBoxWidth:function(){if(this.useBootstrap){console.warn("cannot set boxWidth, useBootstrap is set to true");return;}this.$jconfirmBox.css("width",this.boxWidth);},_parseColumnClass:function(colClass){colClass=colClass.toLowerCase();var p;switch(colClass){case"xl":case"xlarge":p="col-md-12";break;case"l":case"large":p="col-md-8 col-md-offset-2";break;case"m":case"medium":p="col-md-6 col-md-offset-3";break;case"s":case"small":p="col-md-4 col-md-offset-4";break;case"xs":case"xsmall":p="col-md-2 col-md-offset-5";break;default:p=colClass;}this.columnClassParsed=p;},initDraggable:function(){var that=this;var $t=this.$titleContainer;this.resetDrag();if(this.draggable){$t.addClass("jconfirm-hand");$t.on("mousedown",function(e){that.mouseX=e.clientX;that.mouseY=e.clientY;that.isDrag=true;});$(window).on("mousemove."+this._id,function(e){if(that.isDrag){that.movingX=e.clientX-that.mouseX+that.initialX;that.movingY=e.clientY-that.mouseY+that.initialY;that.setDrag();}});$(window).on("mouseup."+this._id,function(){if(that.isDrag){that.isDrag=false;that.initialX=that.movingX;that.initialY=that.movingY;}});}},resetDrag:function(){this.isDrag=false;this.initialX=0;this.initialY=0;this.movingX=0;this.movingY=0;this.movingXCurrent=0;this.movingYCurrent=0;this.mouseX=0;this.mouseY=0;this.$jconfirmBoxContainer.css("transform","translate("+0+"px, "+0+"px)");},setDrag:function(){if(!this.draggable){return;}this.alignMiddle=false;this._boxWidth=this.$jconfirmBox.outerWidth();var ww=$(window).width();var that=this;if(that.movingX%2==0||that.movingY%2==0){var tb=that._boxTopMargin-that.dragWindowGap;if(tb+that.movingY<0){that.movingY=-tb;}else{that.movingYCurrent=that.movingY;}var lb=(ww/2)-that._boxWidth/2;var rb=(ww/2)+(that._boxWidth/2)-that._boxWidth;rb-=that.dragWindowGap;lb-=that.dragWindowGap;if(lb+that.movingX<0){that.movingX=-lb;}else{if(rb-that.movingX<0){that.movingX=rb;}else{that.movingXCurrent=that.movingX;}}that.$jconfirmBoxContainer.css("transform","translate("+that.movingX+"px, "+that.movingY+"px)");}},_hash:function(a){var string=a.toString();var h=0;if(string.length==0){return h;}for(var i=0;i<string.length;i++){var c=string.toString().charCodeAt(i);h=((h<<5)-h)+c;h=h&h;}return h;},_watchContent:function(){var that=this;if(this._timer){clearInterval(this._timer);}this._timer=setInterval(function(){var now=that._hash(that.$content.html());var nowHeight=that.$content.height();if(that._contentHash!=now||that._contentHeight!=nowHeight){that._contentHash=now;that._contentHeight=nowHeight;that.setDialogCenter();that._imagesLoaded();}},this.watchInterval);},_hilightAnimating:false,_hiLightModal:function(){var that=this;if(this._hilightAnimating){return;}that.$body.addClass("hilight");var duration=2;this._hilightAnimating=true;setTimeout(function(){that._hilightAnimating=false;that.$body.removeClass("hilight");},duration*1000);},_bindEvents:function(){var that=this;this.boxClicked=false;this.$scrollPane.click(function(e){if(!that.boxClicked){var buttonName=false;var shouldClose=false;var str;if(typeof that.backgroundDismiss=="function"){str=that.backgroundDismiss();}else{str=that.backgroundDismiss;}if(typeof str=="string"&&typeof that.buttons[str]!="undefined"){buttonName=str;shouldClose=false;}else{if(typeof str=="undefined"||!!(str)==true){shouldClose=true;}else{shouldClose=false;}}if(buttonName){var btnResponse=that.buttons[buttonName].action.apply(that);shouldClose=(typeof btnResponse=="undefined")||!!(btnResponse);}if(shouldClose){that.close();}else{that._hiLightModal();}}that.boxClicked=false;});this.$jconfirmBox.click(function(e){that.boxClicked=true;});var isKeyDown=false;$(window).on("jcKeyDown."+that._id,function(e){if(!isKeyDown){isKeyDown=true;}});$(window).on("keyup."+that._id,function(e){if(isKeyDown){that.reactOnKey(e);isKeyDown=false;}});$(window).on("resize."+this._id,function(){that.setDialogCenter(true);setTimeout(function(){that.resetDrag();},100);});},_cubic_bezier:"0.36, 0.55, 0.19",_getCSS:function(speed,bounce){return{"-webkit-transition-duration":speed/1000+"s","transition-duration":speed/1000+"s","-webkit-transition-timing-function":"cubic-bezier("+this._cubic_bezier+", "+bounce+")","transition-timing-function":"cubic-bezier("+this._cubic_bezier+", "+bounce+")"};},_imagesLoaded:function(){var that=this;if(that.imageLoadInterval){clearInterval(that.imageLoadInterval);}$.each(this.$content.find("img:not(.loaded)"),function(i,a){that.imageLoadInterval=setInterval(function(){var h=$(a).css("height");if(h!=="0px"){$(a).addClass("loaded");clearInterval(that.imageLoadInterval);that.setDialogCenter();}},40);});},_setButtons:function(){var that=this;var total_buttons=0;if(typeof this.buttons!=="object"){this.buttons={};}$.each(this.buttons,function(key,button){total_buttons+=1;if(typeof button==="function"){that.buttons[key]=button={action:button};}that.buttons[key].text=button.text||key;that.buttons[key].btnClass=button.btnClass||"btn-default";that.buttons[key].action=button.action||function(){};that.buttons[key].keys=button.keys||[];that.buttons[key].isHidden=button.isHidden||false;that.buttons[key].isDisabled=button.isDisabled||false;$.each(that.buttons[key].keys,function(i,a){that.buttons[key].keys[i]=a.toLowerCase();});var button_element=$('<button type="button" class="btn"></button>').html(that.buttons[key].text).addClass(that.buttons[key].btnClass).prop("disabled",that.buttons[key].isDisabled).css("display",that.buttons[key].isHidden?"none":"").click(function(e){e.preventDefault();var res=that.buttons[key].action.apply(that);that.onAction(key);that._stopCountDown();if(typeof res==="undefined"||res){that.close();}});that.buttons[key].el=button_element;that.buttons[key].setText=function(text){button_element.html(text);};that.buttons[key].addClass=function(className){button_element.addClass(className);};that.buttons[key].removeClass=function(className){button_element.removeClass(className);};that.buttons[key].disable=function(){that.buttons[key].isDisabled=true;button_element.prop("disabled",true);};that.buttons[key].enable=function(){that.buttons[key].isDisabled=false;button_element.prop("disabled",false);};that.buttons[key].show=function(){that.buttons[key].isHidden=false;button_element.css("display","");that.setDialogCenter();};that.buttons[key].hide=function(){that.buttons[key].isHidden=true;button_element.css("display","none");that.setDialogCenter();};that["$_"+key]=that["$$"+key]=button_element;that.$btnc.append(button_element);});if(total_buttons===0){this.$btnc.hide();}if(this.closeIcon===null&&total_buttons===0){this.closeIcon=true;}if(this.closeIcon){if(this.closeIconClass){var closeHtml='<i class="'+this.closeIconClass+'"></i>';this.$closeIcon.html(closeHtml);}this.$closeIcon.click(function(e){e.preventDefault();var buttonName=false;var shouldClose=false;var str;if(typeof that.closeIcon=="function"){str=that.closeIcon();}else{str=that.closeIcon;}if(typeof str=="string"&&typeof that.buttons[str]!="undefined"){buttonName=str;shouldClose=false;}else{if(typeof str=="undefined"||!!(str)==true){shouldClose=true;}else{shouldClose=false;}}if(buttonName){var btnResponse=that.buttons[buttonName].action.apply(that);shouldClose=(typeof btnResponse=="undefined")||!!(btnResponse);}if(shouldClose){that.close();}});this.$closeIcon.show();}else{this.$closeIcon.hide();}},setTitle:function(string,force){force=force||false;if(typeof string!=="undefined"){if(typeof string=="string"){this.title=string;}else{if(typeof string=="function"){if(typeof string.promise=="function"){console.error("Promise was returned from title function, this is not supported.");}var response=string();if(typeof response=="string"){this.title=response;}else{this.title=false;}}else{this.title=false;}}}if(this.isAjaxLoading&&!force){return;}this.$title.html(this.title||"");},setIcon:function(iconClass,force){force=force||false;if(typeof iconClass!=="undefined"){if(typeof iconClass=="string"){this.icon=iconClass;}else{if(typeof iconClass==="function"){var response=iconClass();if(typeof response=="string"){this.icon=response;}else{this.icon=false;}}else{this.icon=false;}}}if(this.isAjaxLoading&&!force){return;}this.$icon.html(this.icon?'<i class="'+this.icon+'"></i>':"");},setContentPrepend:function(string,force){this.contentParsed=string+this.contentParsed;if(this.isAjaxLoading&&!force){return;}this.$content.prepend(string);},setContentAppend:function(string,force){this.contentParsed=this.contentParsed+string;if(this.isAjaxLoading&&!force){return;}this.$content.append(string);},setContent:function(string,force){force=force||false;var that=this;this.contentParsed=(typeof string=="undefined")?this.contentParsed:string;if(this.isAjaxLoading&&!force){return;}this.$content.html(this.contentParsed);this.setDialogCenter();setTimeout(function(){that.$body.find("input[autofocus]:visible:first").focus();},100);},loadingSpinner:false,showLoading:function(disableButtons){this.loadingSpinner=true;this.$jconfirmBox.addClass("loading");if(disableButtons){this.$btnc.find("button").prop("disabled",true);}this.setDialogCenter();},hideLoading:function(enableButtons){this.loadingSpinner=false;this.$jconfirmBox.removeClass("loading");if(enableButtons){this.$btnc.find("button").prop("disabled",false);}this.setDialogCenter();},ajaxResponse:false,contentParsed:"",isAjax:false,isAjaxLoading:false,_parseContent:function(){var that=this;var e="&nbsp;";if(typeof this.content=="function"){var res=this.content.apply(this);if(typeof res=="string"){this.content=res;}else{if(typeof res=="object"&&typeof res.always=="function"){this.isAjax=true;this.isAjaxLoading=true;res.always(function(data,status,xhr){that.ajaxResponse={data:data,status:status,xhr:xhr};that._contentReady.resolve(data,status,xhr);if(typeof that.contentLoaded=="function"){that.contentLoaded(data,status,xhr);}});this.content=e;}else{this.content=e;}}}if(typeof this.content=="string"&&this.content.substr(0,4).toLowerCase()==="url:"){this.isAjax=true;this.isAjaxLoading=true;var u=this.content.substring(4,this.content.length);$.get(u).done(function(html){that.contentParsed=html;}).always(function(data,status,xhr){that.ajaxResponse={data:data,status:status,xhr:xhr};that._contentReady.resolve(data,status,xhr);if(typeof that.contentLoaded=="function"){that.contentLoaded(data,status,xhr);}});}if(!this.content){this.content=e;}if(!this.isAjax){this.contentParsed=this.content;this.setContent(this.contentParsed);that._contentReady.resolve();}},_stopCountDown:function(){clearInterval(this.autoCloseInterval);if(this.$cd){this.$cd.remove();}},_startCountDown:function(){var that=this;var opt=this.autoClose.split("|");if(opt.length!==2){console.error("Invalid option for autoClose. example 'close|10000'");return false;}var button_key=opt[0];var time=parseInt(opt[1]);if(typeof this.buttons[button_key]==="undefined"){console.error("Invalid button key '"+button_key+"' for autoClose");return false;}var seconds=Math.ceil(time/1000);this.$cd=$('<span class="countdown"> ('+seconds+")</span>").appendTo(this["$_"+button_key]);this.autoCloseInterval=setInterval(function(){that.$cd.html(" ("+(seconds-=1)+") ");if(seconds<=0){that["$$"+button_key].trigger("click");that._stopCountDown();}},1000);},_getKey:function(key){switch(key){case 192:return"tilde";case 13:return"enter";case 16:return"shift";case 9:return"tab";case 20:return"capslock";case 17:return"ctrl";case 91:return"win";case 18:return"alt";case 27:return"esc";case 32:return"space";}var initial=String.fromCharCode(key);if(/^[A-z0-9]+$/.test(initial)){return initial.toLowerCase();}else{return false;}},reactOnKey:function(e){var that=this;var a=$(".jconfirm");if(a.eq(a.length-1)[0]!==this.$el[0]){return false;}var key=e.which;if(this.$content.find(":input").is(":focus")&&/13|32/.test(key)){return false;}var keyChar=this._getKey(key);if(keyChar==="esc"&&this.escapeKey){if(this.escapeKey===true){this.$scrollPane.trigger("click");}else{if(typeof this.escapeKey==="string"||typeof this.escapeKey==="function"){var buttonKey;if(typeof this.escapeKey==="function"){buttonKey=this.escapeKey();}else{buttonKey=this.escapeKey;}if(buttonKey){if(typeof this.buttons[buttonKey]==="undefined"){console.warn("Invalid escapeKey, no buttons found with key "+buttonKey);}else{this["$_"+buttonKey].trigger("click");}}}}}$.each(this.buttons,function(key,button){if(button.keys.indexOf(keyChar)!=-1){that["$_"+key].trigger("click");}});},_boxTopMargin:0,_boxBottomMargin:0,_boxWidth:0,setDialogCenter:function(){var contentHeight;var paneHeight;var style;contentHeight=0;paneHeight=0;if(this.$contentPane.css("display")!="none"){contentHeight=this.$content.outerHeight()||0;paneHeight=this.$contentPane.height()||0;}var children=this.$content.children();if(children.length!=0){var marginTopChild=parseInt(children.eq(0).css("margin-top"));if(marginTopChild){contentHeight+=marginTopChild;}}if(paneHeight==0){paneHeight=contentHeight;}var windowHeight=$(window).height();var boxHeight;boxHeight=(this.$body.outerHeight()-paneHeight)+contentHeight;var topMargin=(windowHeight-boxHeight)/2;if(boxHeight>(windowHeight-(this.offsetTop+this.offsetBottom))||!this.alignMiddle){style={"margin-top":this.offsetTop,"margin-bottom":this.offsetBottom};this._boxTopMargin=this.offsetTop;this._boxBottomMargin=this.offsetBottom;$("body").addClass("jconfirm-no-scroll-"+this._id);}else{style={"margin-top":topMargin,"margin-bottom":this.offsetBottom};this._boxTopMargin=topMargin;this._boxBottomMargin=this.offsetBottom;$("body").removeClass("jconfirm-no-scroll-"+this._id);}this.$contentPane.css({height:contentHeight}).scrollTop(0);this.$body.css(style);this.setDrag();},_unwatchContent:function(){clearInterval(this._timer);},close:function(){var that=this;if(typeof this.onClose==="function"){this.onClose();}this._unwatchContent();clearInterval(this.imageLoadInterval);$(window).unbind("resize."+this._id);$(window).unbind("keyup."+this._id);$(window).unbind("jcKeyDown."+this._id);if(this.draggable){$(window).unbind("mousemove."+this._id);$(window).unbind("mouseup."+this._id);this.$titleContainer.unbind("mousedown");}$("body").removeClass("jconfirm-no-scroll-"+this._id);this.$body.addClass(this.closeAnimationParsed);this.$jconfirmBg.addClass("jconfirm-bg-h");var closeTimer=(this.closeAnimation=="none")?1:this.animationSpeed;that.$el.removeClass(that.loadedClass);setTimeout(function(){that.$el.remove();var l=jconfirm.instances;var i=jconfirm.instances.length-1;for(i;i>=0;i--){if(jconfirm.instances[i]._id==that._id){jconfirm.instances.splice(i,1);}}if(!jconfirm.instances.length){if(that.scrollToPreviousElement&&jconfirm.lastFocused&&jconfirm.lastFocused.length&&$.contains(document,jconfirm.lastFocused[0])){var $lf=jconfirm.lastFocused;if(that.scrollToPreviousElementAnimate){var st=$(window).scrollTop();var ot=jconfirm.lastFocused.offset().top;var wh=$(window).height();if(!(ot>st&&ot<(st+wh))){var scrollTo=(ot-Math.round((wh/3)));$("html, body").animate({scrollTop:scrollTo},that.animationSpeed,"swing",function(){$lf.focus();});}else{$lf.focus();}}else{$lf.focus();}jconfirm.lastFocused=false;}}if(typeof that.onDestroy=="function"){that.onDestroy();}},closeTimer*0.4);return true;},open:function(){if(this.isOpen()){return false;}this._buildHTML();this._bindEvents();this._open();return true;},_open:function(){var that=this;if(typeof that.onOpenBefore=="function"){that.onOpenBefore();}this.$body.removeClass(this.animationParsed);this.$jconfirmBg.removeClass("jconfirm-bg-h");this.$body.focus();setTimeout(function(){that.$body.css(that._getCSS(that.animationSpeed,1));that.$body.css({"transition-property":that.$body.css("transition-property")+", margin"});that._modalReady.resolve();if(typeof that.onOpen==="function"){that.onOpen();}that.$el.addClass(that.loadedClass);},this.animationSpeed);},loadedClass:"jconfirm-open",isClosed:function(){return !this.$el||this.$el.css("display")==="";},isOpen:function(){return !this.isClosed();},toggle:function(){if(!this.isOpen()){this.open();}else{this.close();}}};jconfirm.instances=[];jconfirm.lastFocused=false;jconfirm.pluginDefaults={template:'<div class="jconfirm"><div class="jconfirm-bg jconfirm-bg-h"></div><div class="jconfirm-scrollpane"><div class="jc-bs3-container"><div class="jc-bs3-row"><div class="jconfirm-box-container"><div class="jconfirm-box" role="dialog" aria-labelledby="labelled" tabindex="-1"><div class="jconfirm-closeIcon">&times;</div><div class="jconfirm-title-c"><span class="jconfirm-icon-c"></span><span class="jconfirm-title"></span></div><div class="jconfirm-content-pane"><div class="jconfirm-content"></div></div><div class="jconfirm-buttons"></div><div class="jconfirm-clear"></div></div></div></div></div></div></div>',title:"Hello",titleClass:"",type:"default",typeAnimated:true,draggable:false,alignMiddle:true,content:"Are you sure to continue?",buttons:{},defaultButtons:{ok:{action:function(){}},close:{action:function(){}}},contentLoaded:function(){},icon:"",lazyOpen:false,bgOpacity:null,theme:"light",animation:"zoom",closeAnimation:"scale",animationSpeed:400,animationBounce:1.2,escapeKey:true,rtl:false,container:"body",containerFluid:false,backgroundDismiss:false,backgroundDismissAnimation:"shake",autoClose:false,closeIcon:null,closeIconClass:false,watchInterval:100,columnClass:"col-md-4 col-md-offset-4 col-sm-6 col-sm-offset-3 col-xs-10 col-xs-offset-1",boxWidth:"50%",scrollToPreviousElement:true,scrollToPreviousElementAnimate:true,useBootstrap:true,offsetTop:50,offsetBottom:50,dragWindowGap:15,bootstrapClasses:{container:"container",containerFluid:"container-fluid",row:"row"},onContentReady:function(){},onOpenBefore:function(){},onOpen:function(){},onClose:function(){},onDestroy:function(){},onAction:function(){}};var keyDown=false;$(window).on("keydown",function(e){if(!keyDown){var $target=$(e.target);var pass=false;if($target.closest(".jconfirm-box").length){pass=true;}if(pass){$(window).trigger("jcKeyDown");}keyDown=true;}});$(window).on("keyup",function(e){keyDown=false;});})(jQuery,window); 
  • wpforms-lite/trunk/changelog.txt

    r1672689 r1678654  
    11== Changelog == 
    22 
     3= 1.3.8 = 
     4- Changed: Available conditional logic rules/functionality with Providers have been updated 
     5- Changed: Updated form builder modals (jquery-confirm.js) 
     6- Changed: Many Form Builder performance enhancements 
     7- Fixed: Number field validation message not saving 
     8- Fixed: Email confirmation setting not displaying correctly with Small field size 
     9 
    310= 1.3.7.4 = 
    4 - Add: Marketing tab in the form builder shows all possible providers. 
     11- Added: Marketing tab in the form builder shows all possible providers. 
    512 
    613= 1.3.7.3 
     
    2128- Added: Custom field validation messages (see WPForms Settings page) 
    2229- Added: Bulk add choices for Checkbox, Multiple Choice, and Dropdown fields 
    23 - Addded: Filter to allow email notifications to include empty fields, `wpforms_email_display_empty_fields` 
     30- Added: Filter to allow email notifications to include empty fields, `wpforms_email_display_empty_fields` 
    2431- Added: Field CSS layout selector 
    2532- Changed: Leverage `wp_json_encode` instead of native PHP function 
  • wpforms-lite/trunk/includes/admin/builder/class-builder.php

    r1646716 r1678654  
    196196        wp_enqueue_script( 'jquery-ui-sortable' ); 
    197197        wp_enqueue_script( 'jquery-ui-draggable' ); 
     198        wp_enqueue_script( 'wp-util' ); 
    198199 
    199200        wp_enqueue_script( 
     
    270271 
    271272        $strings = array( 
     273            'and'                    => __( 'AND', 'wpforms' ), 
    272274            'ajax_url'               => admin_url( 'admin-ajax.php' ), 
    273275            'bulk_add_button'        => __( 'Add New Choices', 'wpforms '), 
     
    280282            'date_select_day'        => __( 'DD', 'wpforms' ), 
    281283            'date_select_month'      => __( 'MM', 'wpforms' ), 
     284            'debug'                  => wpforms_debug(), 
    282285            'dynamic_choice_limit'   => __( 'The {source} {type} contains over {limit} items ({total}). This may make the field difficult for your vistors to use and/or cause the form to be slow.', 'wpforms' ), 
    283286            'cancel'                 => __( 'Cancel', 'wpforms' ), 
     
    285288            'close'                  => __( 'Close', 'wpforms' ), 
    286289            'conditionals_change'    => __( 'Due to form changes, conditional logic rules have been removed or updated:', 'wpforms' ), 
     290            'conditionals_disable'   => __( 'Are you sure you want to disable conditional logic? This will remove the rules for this field or setting.' ), 
    287291            'field'                  => __( 'Field', 'wpforms' ), 
    288292            'field_locked'           => __( 'Field Locked', 'wpforms' ), 
     
    325329            'off'                    => __( 'Off', 'wpforms' ), 
    326330            'on'                     => __( 'On', 'wpforms' ), 
     331            'or'                     => __( 'or', 'wpforms' ), 
    327332            'other'                  => __( 'Other', 'wpforms' ), 
     333            'operator_is'            => __( 'is', 'wpforms' ), 
     334            'operator_is_not'        => __( 'is not', 'wpforms' ), 
     335            'operator_empty'         => __( 'empty', 'wpforms' ), 
     336            'operator_not_empty'     => __( 'not empty', 'wpforms' ), 
     337            'operator_contains'      => __( 'contains', 'wpforms' ), 
     338            'operator_not_contains'  => __( 'does not contain', 'wpforms' ), 
     339            'operator_starts'        => __( 'starts with', 'wpforms' ), 
     340            'operator_ends'          => __( 'ends with', 'wpforms' ), 
     341            'payments_entries_off'   => __( 'Form entries must be stored to accept payments. Please enable saving form entries in the General settings first.', 'wpforms' ), 
    328342            'previous'               => __( 'Previous', 'wpforms' ), 
     343            'rule_create'            => __( 'Create new rule', 'wpforms' ), 
     344            'rule_create_group'      => __( 'Add new group', 'wpforms' ), 
     345            'rule_delete'            => __( 'Delete rule', 'wpforms' ), 
    329346            'saved_state'            => '', 
    330347            'smart_tags'             => wpforms()->smart_tags->get(), 
     
    386403 
    387404        echo '<script type="text/javascript">wpforms_preset_choices=' . wp_json_encode( $choices ) . '</script>'; 
     405 
     406        do_action( 'wpforms_builder_print_footer_scripts' ); 
    388407    } 
    389408 
  • wpforms-lite/trunk/includes/admin/builder/functions.php

    r1586764 r1678654  
    5757 
    5858    // Check for data attributes 
    59     if ( !empty( $args['data'] ) ) { 
     59    if ( ! empty( $args['data'] ) ) { 
    6060        foreach ( $args['data'] as $key => $val ) { 
    61           $data_attr .= ' data-' . $key . '="' . $val . '"'; 
     61            if ( is_array( $val ) ) { 
     62                $val = wp_json_encode( $val ); 
     63            } 
     64            $data_attr .= ' data-' . $key . '=\'' . $val . '\''; 
    6265        } 
    6366    } 
  • wpforms-lite/trunk/includes/class-frontend.php

    r1660094 r1678654  
    420420        $properties = array( 
    421421            'container' => array( 
    422                 'attr'  => array(), 
     422                'attr'  => array( 
     423                    'style' => $attributes['field_style'], 
     424                ), 
    423425                'class' => $attributes['field_class'], 
    424426                'data'  => array(), 
  • wpforms-lite/trunk/includes/class-process.php

    r1586764 r1678654  
    88 * @license    GPL-2.0+ 
    99 * @copyright  Copyright (c) 2016, WPForms LLC 
    10 */ 
     10 */ 
    1111class WPForms_Process { 
    1212 
     
    5252    public function listen() { 
    5353 
    54         if ( !empty( $_GET['wpforms_return'] ) ) { 
     54        if ( ! empty( $_GET['wpforms_return'] ) ) { 
    5555            $this->entry_confirmation_redirect( '', $_GET['wpforms_return'] ); 
    5656        } 
    5757 
    58         if ( !empty( $_POST['wpforms']['id'] ) ) { 
     58        if ( ! empty( $_POST['wpforms']['id'] ) ) { 
    5959            $this->process( stripslashes_deep( $_POST['wpforms'] ) ); 
    6060        } 
     
    6565     * 
    6666     * @since 1.0.0 
    67      * @param array $form $_POST object 
     67     * @param array $entry $_POST object. 
    6868     */ 
    6969    public function process( $entry ) { 
     
    7676 
    7777        // Validate form is real and active (published) 
    78         if ( !$form || 'publish' != $form->post_status ) { 
    79             $this->errors[$form_id]['header'] = __( 'Invalid form.', 'wpforms' ); 
     78        if ( ! $form || 'publish' !== $form->post_status ) { 
     79            $this->errors[ $form_id ]['header'] = __( 'Invalid form.', 'wpforms' ); 
    8080            return; 
    8181        } 
     
    9696            $field_id     = $field['id']; 
    9797            $field_type   = $field['type']; 
    98             $field_submit = isset( $entry['fields'][$field_id] ) ? $entry['fields'][$field_id] : ''; 
     98            $field_submit = isset( $entry['fields'][ $field_id ] ) ? $entry['fields'][ $field_id ] : ''; 
    9999 
    100100            do_action( "wpforms_process_validate_{$field_type}", $field_id, $field_submit, $form_data ); 
     
    104104        $site_key   = wpforms_setting( 'recaptcha-site-key', '' ); 
    105105        $secret_key = wpforms_setting( 'recaptcha-secret-key', '' ); 
    106         if ( !empty( $site_key ) && !empty( $secret_key ) && isset( $form_data['settings']['recaptcha'] ) && '1' == $form_data['settings']['recaptcha'] ) { 
    107             if ( !empty( $_POST['g-recaptcha-response'] ) ) { 
     106        if ( ! empty( $site_key ) && ! empty( $secret_key ) && isset( $form_data['settings']['recaptcha'] ) && '1' == $form_data['settings']['recaptcha'] ) { 
     107            if ( ! empty( $_POST['g-recaptcha-response'] ) ) { 
    108108                $data  = wp_remote_get( 'https://www.google.com/recaptcha/api/siteverify?secret=' . $secret_key . '&response=' . $_POST['g-recaptcha-response'] ); 
    109109                $data  = json_decode( wp_remote_retrieve_body( $data ) ); 
    110110                if ( empty( $data->success ) ) { 
    111                     $this->errors[$form_id]['recaptcha'] = __( 'Incorrect reCAPTCHA, please try again.', 'wpforms' ); 
     111                    $this->errors[ $form_id ]['recaptcha'] = __( 'Incorrect reCAPTCHA, please try again.', 'wpforms' ); 
    112112                } 
    113113            } else { 
    114                 $this->errors[$form_id]['recaptcha'] = __( 'reCAPTCHA is required.', 'wpforms' ); 
    115             } 
    116         } 
    117  
    118         // One last error check - don't proceed if there are any errors 
    119         if ( !empty( $this->errors[$form_id] ) ) { 
    120             $this->errors[$form_id]['header'] = __( 'Form has not been submitted, please see the errors below.', 'wpforms' ); 
     114                $this->errors[ $form_id ]['recaptcha'] = __( 'reCAPTCHA is required.', 'wpforms' ); 
     115            } 
     116        } 
     117 
     118        // Initial error check. 
     119        // Don't proceed if there are any errors thus far. We provide a filter 
     120        // so that other features, such as conditional logic, have the ability 
     121        // to adjust blocking errors. 
     122        $errors = apply_filters( 'wpforms_process_initial_errors', $this->errors, $form_data ); 
     123 
     124        if ( ! empty( $errors[ $form_id ] ) ) { 
     125            if ( empty( $this->errors[ $form_id ]['header'] ) ) { 
     126                $errors[ $form_id ]['header'] = __( 'Form has not been submitted, please see the errors below.', 'wpforms' ); 
     127            } 
     128            $this->errors = $errors; 
    121129            return; 
    122130        } 
    123131 
    124132        // Validate honeypot 
    125         if ( !empty( $form_data['settings']['honeypot'] ) && '1' == $form_data['settings']['honeypot'] ) { 
    126             if ( isset( $entry['hp'] ) && !empty( $entry['hp'] ) ) { 
     133        if ( ! empty( $form_data['settings']['honeypot'] ) && '1' == $form_data['settings']['honeypot'] ) { 
     134            if ( isset( $entry['hp'] ) && ! empty( $entry['hp'] ) ) { 
    127135                $honeypot = __( 'WPForms honeypot field triggered.', 'wpforms' ); 
    128136            } 
     
    133141        // Only trigger the processing (saving/sending entries, etc) if the entry 
    134142        // is not spam. 
    135         if ( !$honeypot ) { 
     143        if ( ! $honeypot ) { 
    136144 
    137145            // Pass the form created date into the form data 
     
    143151                $field_id     = $field['id']; 
    144152                $field_type   = $field['type']; 
    145                 $field_submit = isset( $entry['fields'][$field_id] ) ? $entry['fields'][$field_id] : ''; 
     153                $field_submit = isset( $entry['fields'][ $field_id ] ) ? $entry['fields'][ $field_id ] : ''; 
    146154 
    147155                do_action( "wpforms_process_format_{$field_type}", $field_id, $field_submit, $form_data ); 
    148156            } 
     157 
     158            // This hook is for internal purposes and should not be leveraged. 
     159            do_action( 'wpforms_process_format_after', $form_data ); 
    149160 
    150161            // Process hooks/filter - this is where most add-ons should hook 
     
    158169            $this->fields = apply_filters( 'wpforms_process_after_filter', $this->fields, $entry, $form_data ); 
    159170 
    160             // One last error check - don't proceed if there are any errors 
    161             if ( ! empty( $this->errors[$form_id] ) ) { 
    162                 if ( empty( $this->errors[$form_id]['header'] ) ) { 
    163                     $this->errors[$form_id]['header'] = __( 'Form has not been submitted, please see the errors below.', 'wpforms' ); 
     171            // One last error check - don't proceed if there are any errors. 
     172            if ( ! empty( $this->errors[ $form_id ] ) ) { 
     173                if ( empty( $this->errors[ $form_id ]['header'] ) ) { 
     174                    $this->errors[ $form_id ]['header'] = __( 'Form has not been submitted, please see the errors below.', 'wpforms' ); 
    164175                } 
    165176                return; 
     
    204215                ) 
    205216            ); 
    206         } 
     217        } // End if(). 
    207218 
    208219        $this->entry_confirmation_redirect( $form_data ); 
     
    222233 
    223234        // Verify hash matches 
    224         if ( $hash != wp_hash( $form_id . ',' . $entry_id ) ) { 
     235        if ( wp_hash( $form_id . ',' . $entry_id ) != $hash ) { 
    225236            return false; 
    226237        } 
     
    228239        // Get lead and verify it is attached to the form we received with it 
    229240        $entry = wpforms()->entry->get( $entry_id ); 
     241 
    230242        if ( $form_id != $entry->form_id ) { 
    231243            return false; 
     
    246258        $url = ''; 
    247259 
    248         if ( !empty( $hash ) ) { 
     260        if ( ! empty( $hash ) ) { 
    249261 
    250262            $form_id = $this->validate_return_hash( $hash ); 
    251263 
    252             if ( !$form_id ) 
     264            if ( ! $form_id ) { 
    253265                return; 
     266            } 
    254267 
    255268            // Get form 
     
    258271 
    259272        // Redirect if needed, to either a page or URL, after form processing 
    260         if ( !empty( $form_data['settings']['confirmation_type'] ) && $form_data['settings']['confirmation_type'] != 'message' ) { 
    261  
    262             if ( $form_data['settings']['confirmation_type'] == 'redirect' ) { 
     273        if ( ! empty( $form_data['settings']['confirmation_type'] ) && 'message' !== $form_data['settings']['confirmation_type'] ) { 
     274 
     275            if ( 'redirect' === $form_data['settings']['confirmation_type'] ) { 
    263276                $url = apply_filters( 'wpforms_process_smart_tags', $form_data['settings']['confirmation_redirect'], $form_data, $this->fields, $this->entry_id ); 
    264277            } 
    265278 
    266             if ( $form_data['settings']['confirmation_type'] == 'page' ) { 
     279            if ( 'page' === $form_data['settings']['confirmation_type'] ) { 
    267280                $url = get_permalink( (int) $form_data['settings']['confirmation_page'] ); 
    268281            } 
    269282        } 
    270283 
    271         if ( !empty( $form_data['id'] ) ) { 
     284        if ( ! empty( $form_data['id'] ) ) { 
    272285            $form_id = $form_data['id']; 
    273286        } else { 
     
    275288        } 
    276289 
    277         if ( !empty( $url ) ) { 
     290        if ( ! empty( $url ) ) { 
    278291            $url = apply_filters( 'wpforms_process_redirect_url', $url, $form_id, $this->fields ); 
    279292            wp_redirect( esc_url_raw( $url ) ); 
     
    292305     * @param array $form_data 
    293306     * @param array $entry_id 
     307     * @param string $context 
    294308     */ 
    295309    public function entry_email( $fields, $entry, $form_data, $entry_id, $context = '' ) { 
     
    321335        } 
    322336 
    323         foreach( $notifications as $notification_id => $notification ) { 
     337        foreach ( $notifications as $notification_id => $notification ) { 
    324338 
    325339            if ( empty( $notification['email'] ) ) { 
     
    338352            $email['address']        = explode( ',', apply_filters( 'wpforms_process_smart_tags', $notification['email'], $form_data, $fields, $this->entry_id ) ); 
    339353            $email['address']        = array_map( 'sanitize_email', $email['address'] ); 
    340             $email['subject']        = !empty( $notification['subject'] ) ? $notification['subject'] : sprintf( __( 'New %s Entry', 'wpforms ' ), $form_data['settings']['form_title'] ); 
    341             $email['sender_address'] = !empty( $notification['sender_address'] ) ? $notification['sender_address'] : get_option( 'admin_email' ); 
    342             $email['sender_name']    = !empty( $notification['sender_name'] ) ? $notification['sender_name'] : get_bloginfo( 'name' ); 
    343             $email['replyto']        = !empty( $notification['replyto'] ) ? $notification['replyto'] : false; 
    344             $email['message']        = !empty( $notification['message'] ) ? $notification['message'] : '{all_fields}'; 
     354            $email['subject']        = ! empty( $notification['subject'] ) ? $notification['subject'] : sprintf( __( 'New %s Entry', 'wpforms ' ), $form_data['settings']['form_title'] ); 
     355            $email['sender_address'] = ! empty( $notification['sender_address'] ) ? $notification['sender_address'] : get_option( 'admin_email' ); 
     356            $email['sender_name']    = ! empty( $notification['sender_name'] ) ? $notification['sender_name'] : get_bloginfo( 'name' ); 
     357            $email['replyto']        = ! empty( $notification['replyto'] ) ? $notification['replyto'] : false; 
     358            $email['message']        = ! empty( $notification['message'] ) ? $notification['message'] : '{all_fields}'; 
    345359            $email                   = apply_filters( 'wpforms_entry_email_atts', $email, $fields, $entry, $form_data, $notification_id ); 
    346360 
     
    355369 
    356370            // Maybe include CC 
    357             if ( !empty( $notification['carboncopy'] ) && wpforms_setting( 'email-carbon-copy', false ) ) { 
     371            if ( ! empty( $notification['carboncopy'] ) && wpforms_setting( 'email-carbon-copy', false ) ) { 
    358372                $emails->__set( 'cc', $notification['carboncopy'] ); 
    359373            } 
    360374 
    361375            // Go 
    362             foreach( $email['address'] as $address ) { 
     376            foreach ( $email['address'] as $address ) { 
    363377                $emails->send( trim( $address ), $email['subject'], $email['message'] ); 
    364378            } 
    365         } 
     379        } // End foreach(). 
    366380    } 
    367381 
     
    372386     * @param array $fields 
    373387     * @param array $entry 
     388     * @param int $form_id 
    374389     * @param array $form_data 
    375390     */ 
  • wpforms-lite/trunk/includes/fields/class-base.php

    r1660094 r1678654  
    191191        if ( ! empty( $args['data'] ) ) { 
    192192            foreach ( $args['data'] as $key => $val ) { 
    193                 $data .= ' data-' . $key . '="' . $val . '"'; 
     193                if ( is_array( $val ) ) { 
     194                    $val = wp_json_encode( $val ); 
     195                } 
     196                $data .= ' data-' . $key . '=\'' . $val . '\''; 
    194197            } 
    195198        } 
     
    492495            case 'size': 
    493496                $value   = ! empty( $field['size'] ) ? esc_attr( $field['size'] ) : 'medium'; 
     497                $class   = ! empty( $args['class'] ) ? esc_html( $args['class'] ) : ''; 
    494498                $tooltip = __( 'Select the default form field size.', 'wpforms' ); 
    495499                $options = array( 
     
    500504                $output  = $this->field_element( 'label',  $field, array( 'slug' => 'size', 'value' => __( 'Field Size', 'wpforms' ), 'tooltip' => $tooltip ), false ); 
    501505                $output .= $this->field_element( 'select', $field, array( 'slug' => 'size', 'value' => $value, 'options' => $options ), false ); 
    502                 $output  = $this->field_element( 'row',    $field, array( 'slug' => 'size', 'content' => $output ), false ); 
     506                $output  = $this->field_element( 'row',    $field, array( 'slug' => 'size', 'content' => $output, 'class' => $class ), false ); 
    503507                break; 
    504508 
  • wpforms-lite/trunk/includes/fields/class-name.php

    r1660094 r1678654  
    9898                    'data'     => array(), 
    9999                    'id'       => "wpforms-{$form_id}-field_{$field_id}-middle", 
     100                    'required' => '', 
    100101                    'sublabel' => array( 
    101102                        'hidden'   => ! empty( $field['sublabel_hide'] ), 
     
    442443                    echo '<div ' . wpforms_html_attributes( false, $middle['block'] ) . '>'; 
    443444                        $this->field_display_sublabel( 'middle', 'before', $field ); 
    444                         printf( '<input type="text" %s>', 
    445                             wpforms_html_attributes( $middle['id'], $middle['class'], $middle['data'], $middle['attr'] ) 
     445                        printf( '<input type="text" %s %s>', 
     446                            wpforms_html_attributes( $middle['id'], $middle['class'], $middle['data'], $middle['attr'] ), 
     447                            $middle['required'] 
    446448                        ); 
    447449                        $this->field_display_sublabel( 'middle', 'after', $field ); 
  • wpforms-lite/trunk/includes/providers/class-base.php

    r1646716 r1678654  
    249249        } 
    250250 
    251         $pass = false; 
    252  
    253         foreach ( $connection['conditionals'] as $group_id => $group ) { 
    254  
    255             $pass_group = true; 
    256  
    257             if ( !empty( $group ) ) { 
    258  
    259                 foreach( $group as $rule_id => $rule ) { 
    260  
    261                     if (  in_array( $fields[$rule['field']]['type'], array( 'text', 'textarea' ) ) ) { 
    262  
    263                         if ( $rule['operator'] == "==" ) { 
    264  
    265                             $pass_rule = ( $fields[$rule['field']]['value'] === $rule['value'] ); 
    266  
    267                         } elseif( $rule['operator'] == "!=" ) { 
    268  
    269                             $pass_rule = ( $fields[$rule['field']]['value'] !== $rule['value'] ); 
    270  
    271                         } 
    272  
    273                     } elseif ( in_array( $fields[$rule['field']]['type'], array( 'checkbox' ) ) ) { 
    274  
    275                         $provided_id = false; 
    276  
    277                         if ( !empty( $fields[$rule['field']]['value'] ) ) { 
    278  
    279                             $provided_id = array(); 
    280                             $values      = explode( "\n", $fields[$rule['field']]['value'] ); 
    281  
    282                             foreach( $form_data['fields'][$rule['field']]['choices'] as $key => $choice ) { 
    283  
    284                                 foreach( $values as $value ) { 
    285  
    286                                     if ( in_array( $value, $choice ) ) { 
    287                                         $provided_id[] = $key; 
    288                                     } 
    289                                 } 
    290                             } 
    291                         } 
    292  
    293                         if ( $rule['operator'] == "==" ) { 
    294  
    295                             $pass_rule = in_array( (int) $rule['value'], (array) $provided_id ); 
    296  
    297                         } elseif( $rule['operator'] == "!=" ) { 
    298  
    299                             $pass_rule = ! in_array( (int) $rule['value'], (array) $provided_id ); 
    300                         } 
    301  
    302                     } else { 
    303  
    304                         $provided_id = false; 
    305  
    306                         if ( !empty( $fields[$rule['field']]['value'] ) ) { 
    307  
    308                             foreach( $form_data['fields'][$rule['field']]['choices'] as $key => $choice ) { 
    309  
    310                                 if ( in_array( $fields[$rule['field']]['value'], $choice ) ) { 
    311  
    312                                     $provided_id = (int) $key; 
    313                                 } 
    314                             } 
    315                         } 
    316  
    317                         if ( $rule['operator'] == "==" ) { 
    318  
    319                             $pass_rule = ( $provided_id === (int) $rule['value'] ); 
    320  
    321                         } elseif( $rule['operator'] == "!=" ) { 
    322  
    323                             $pass_rule = ( $provided_id !== (int) $rule['value'] ); 
    324  
    325                         } 
    326                     } 
    327  
    328                     if ( !$pass_rule ) { 
    329                         $pass_group = false; 
    330                         break; 
    331                     } 
    332                 } 
    333             } 
    334  
    335             if ( $pass_group ) { 
    336                 $pass = true; 
    337             } 
    338         } 
    339  
    340         return $pass; 
     251        $process = wpforms_conditional_logic()->process( $fields, $form_data, $connection['conditionals'] ); 
     252 
     253        if ( ! empty( $connection['conditional_type'] ) && 'stop' === $connection['conditional_type'] ) { 
     254            $process = ! $process; 
     255        } 
     256 
     257        return $process; 
    341258    } 
    342259 
     
    858775     * 
    859776     * @since 1.0.0 
    860      * @return [type] 
     777     * @param string $connection_id 
     778     * @param array $connection 
     779     * @param array $form 
     780     * @return string 
    861781     */ 
    862782    public function output_conditionals( $connection_id = '', $connection = array(), $form = '' ) { 
    863783 
    864         if ( empty( $connection['account_id'] ) ) 
     784        if ( empty( $connection['account_id'] ) ) { 
    865785            return; 
    866  
    867         $form_fields = wpforms_get_form_fields( $form['id'], array( 'text', 'textarea', 'select', 'radio', 'checkbox', 'number' ) ); 
    868  
    869         $output = '<div class="wpforms-provider-conditionals wpforms-connection-block">'; 
    870  
    871             $output .= sprintf( '<h4>%s</h4>', __( 'Conditional Logic', 'wpforms' ) ); 
    872  
    873             $output .= sprintf( 
    874                             '<p><input id="%s_conditional_logic" class="toggle" type="checkbox" value="1" name="providers[%s][%s][conditional_logic]" %s><label for="%s_conditional_logic">%s</label></p>', 
    875                             $connection_id, 
    876                             $this->slug, 
    877                             $connection_id, 
    878                             checked( !empty( $connection['conditional_logic'] ) , true , false ), 
    879                             $connection_id, 
    880                             __( 'Enable conditional logic', 'wpforms' ) 
    881                         ); 
    882  
    883             $style = empty( $connection['conditional_logic'] ) ? 'display:none' : ''; 
    884  
    885             $output .= sprintf( '<div class="wpforms-provider-conditionals-groups" style="%s">', $style ); 
    886  
    887                 $output .= '<h4>' . __( 'Process this form if', 'wpforms' ) . '</h4>'; 
    888  
    889                 if ( empty( $connection['conditionals'] ) ){ 
    890                     $connection['conditionals'][0][0] = array(); 
    891                 } 
    892  
    893                 foreach ( $connection['conditionals'] as $group_id => $group ) : 
    894  
    895                     $output .= '<div class="wpforms-provider-conditionals-group">'; 
    896  
    897                         $output .='<table><tbody>'; 
    898  
    899                             foreach ( $group as $rule_id => $rule ) : 
    900  
    901                                 $output .= '<tr class="wpforms-provider-conditionals-group-row">'; 
    902  
    903                                     // Fields 
    904                                     $output .= '<td class="field">'; 
    905  
    906                                         $output .= sprintf( 
    907                                             '<select name="providers[%s][%s][conditionals][%d][%d][field]" data-provider="%s" data-connectionid="%s" data-groupid="%d" data-ruleid="%d" class="wpforms-provider-conditionals-field">', 
    908                                             $this->slug, 
    909                                             $connection_id, 
    910                                             $group_id, 
    911                                             $rule_id, 
    912                                             $this->slug, 
    913                                             $connection_id, 
    914                                             $group_id, 
    915                                             $rule_id 
    916                                         ); 
    917  
    918                                             $output .= '<option value="">' . __( '-- Select field --', 'wpforms' ) . '</option>'; 
    919  
    920                                             foreach( $form_fields as $form_field ) { 
    921                                                 $selected = !empty( $rule['field'] ) ? $rule['field'] : false; 
    922                                                 $selected = selected( $selected, $form_field['id'], false ); 
    923                                                 $output  .= sprintf( '<option value="%s" %s>%s</option>', absint( $form_field['id'] ), $selected, esc_html( $form_field['label'] ) ); 
    924                                             } 
    925  
    926                                         $output .= '</select>'; 
    927  
    928                                     $output .= '</td>'; 
    929  
    930                                     // Operator 
    931                                     $output .= '<td class="operator">'; 
    932  
    933                                         $output .= sprintf( '<select name="providers[%s][%s][conditionals][%s][%s][operator]" class="wpforms-provider-conditionals-operator">', $this->slug, $connection_id, $group_id, $rule_id ); 
    934                                             $operator = !empty( $rule['operator'] ) ? $rule['operator'] : false; 
    935                                             $output .= sprintf( '<option value="==" %s>%s</option>', selected( $operator, '==', false ), __( 'is', 'wpforms' ) ); 
    936                                             $output .= sprintf( '<option value="!=" %s>%s</option>', selected( $operator, '!=', false ), __( 'is not', 'wpforms' ) ); 
    937                                         $output .= '</select>'; 
    938  
    939                                     $output .= '</td>'; 
    940  
    941                                     // Values 
    942                                     $output .= '<td class="value">'; 
    943  
    944                                         if ( !empty( $rule['field'] ) ) { 
    945  
    946                                             if ( in_array( $form_fields[$rule['field']]['type'], array( 'text', 'textarea') ) ) { 
    947  
    948                                                 $output .= sprintf( '<input type="text" name="providers[%s][%s][conditionals][%s][%s][value]" value="%s" class="wpforms-provider-conditionals-value">', $this->slug, $connection_id, $group_id, $rule_id, esc_attr($rule['value'] ) ); 
    949  
    950                                             } else { 
    951                                                 $output .= sprintf( '<select name="providers[%s][%s][conditionals][%s][%s][value]" class="wpforms-provider-conditionals-value">', $this->slug, $connection_id, $group_id, $rule_id ); 
    952                                                 $output .= '<option value="">' . __( '-- Select Choice --', 'wpforms' ) . '</option>'; 
    953                                                 foreach( $form_fields[$rule['field']]['choices'] as $option_id => $option ) { 
    954                                                     $value    = !empty( $rule['value'] ) ? $rule['value'] : ''; 
    955                                                     $selected = selected( $option_id, $rule['value'], false ); 
    956                                                     $output  .= sprintf( '<option value="%s" %s>%s</option>', $option_id, $selected, esc_html( $option['label'] ) ); 
    957                                                 } 
    958                                                 $output .= '</select>'; 
    959                                             } 
    960  
    961                                         } else { 
    962                                             $output .= '<select></select>'; 
    963                                         } 
    964  
    965                                     $output .= '</td>'; 
    966  
    967                                     // Actions 
    968                                     $output .= '<td class="actions">'; 
    969  
    970                                         $output .= sprintf( '<button class="wpforms-provider-conditionals-rule-add">%s</button>', __( 'AND', 'wpforms') ); 
    971                                         $output .= '<button class="wpforms-provider-conditionals-rule-delete"><i class="fa fa-minus-circle"></i></button>'; 
    972  
    973                                     $output .= '</td>'; 
    974  
    975                                 $output .= '</tr>'; 
    976  
    977                             endforeach; 
    978  
    979                         $output .= '</tbody></table>'; 
    980  
    981                         $output .= '<h5>or</h5>'; 
    982  
    983                     $output .= '</div>'; 
    984  
    985                 endforeach; 
    986  
    987                 $output .= '<button class="wpforms-provider-conditionals-groups-add">' . __( 'Add rule group', 'wpforms' ) . '</button>'; 
    988  
    989             $output .= '</div>'; 
    990  
    991         $output .= '</div>'; 
    992  
    993         return $output; 
     786        } 
     787 
     788        return wpforms_conditional_logic()->builder_block( 
     789            array( 
     790                'form'        => $this->form_data, 
     791                'type'        => 'panel', 
     792                'panel'       => $this->slug, 
     793                'parent'      => 'providers', 
     794                'subsection'  => $connection_id, 
     795                'actions'     => array( 
     796                    'go'    => __( 'Process', 'wpforms' ), 
     797                    'stop'  => __( 'Don\'t process', 'wpforms' ), 
     798                ), 
     799                'action_desc' => __( 'this connection if', 'wpforms' ), 
     800                'reference'   => __( 'Marketing provider connection', 'wpforms' ), 
     801            ), 
     802            false 
     803        ); 
    994804    } 
    995805 
     
    1020830    public function builder_form_data() { 
    1021831 
    1022         if ( !empty( $_GET['form_id'] ) ) { 
     832        if ( ! empty( $_GET['form_id'] ) && empty( $this->form_data ) ) { 
    1023833            $this->form_data  = wpforms()->form->get( absint( $_GET['form_id'] ), array( 'content_only' => true ) ); 
    1024834        } 
  • wpforms-lite/trunk/languages/wpforms.pot

    r1660094 r1678654  
    33msgid "" 
    44msgstr "" 
    5 "Project-Id-Version: WPForms 1.3.7.3\n" 
     5"Project-Id-Version: WPForms 1.3.8\n" 
    66"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/wpforms\n" 
    7 "POT-Creation-Date: 2017-05-12 15:58:52+00:00\n" 
     7"POT-Creation-Date: 2017-06-13 17:28:50+00:00\n" 
    88"MIME-Version: 1.0\n" 
    99"Content-Type: text/plain; charset=UTF-8\n" 
     
    1313"Language-Team: LANGUAGE <LL@li.org>\n" 
    1414 
    15 #: includes/admin/ajax-actions.php:24 includes/fields/class-base.php:727 
     15#: includes/admin/ajax-actions.php:24 includes/fields/class-base.php:731 
    1616msgid "You do no have permission." 
    1717msgstr "" 
     
    4141msgstr "" 
    4242 
    43 #: includes/admin/ajax-actions.php:243 includes/fields/class-base.php:400 
     43#: includes/admin/ajax-actions.php:243 includes/fields/class-base.php:403 
    4444msgid "post type" 
    4545msgstr "" 
    4646 
    47 #: includes/admin/ajax-actions.php:262 includes/fields/class-base.php:407 
     47#: includes/admin/ajax-actions.php:262 includes/fields/class-base.php:410 
    4848msgid "taxonomy" 
    4949msgstr "" 
    5050 
    5151#: includes/admin/builder/class-builder.php:273 
     52#: includes/class-conditional-logic-core.php:441 
     53msgid "AND" 
     54msgstr "" 
     55 
     56#: includes/admin/builder/class-builder.php:275 
    5257msgid "Add New Choices" 
    5358msgstr "" 
    5459 
    55 #: includes/admin/builder/class-builder.php:274 
    56 #: includes/fields/class-base.php:359 
     60#: includes/admin/builder/class-builder.php:276 
     61#: includes/fields/class-base.php:362 
    5762msgid "Bulk Add" 
    5863msgstr "" 
    5964 
    60 #: includes/admin/builder/class-builder.php:275 
     65#: includes/admin/builder/class-builder.php:277 
    6166msgid "Hide Bulk Add" 
    6267msgstr "" 
    6368 
    64 #: includes/admin/builder/class-builder.php:276 
     69#: includes/admin/builder/class-builder.php:278 
    6570msgid "Add Choices (one per line)" 
    6671msgstr "" 
    6772 
    68 #: includes/admin/builder/class-builder.php:277 
     73#: includes/admin/builder/class-builder.php:279 
    6974msgid "" 
    7075"Blue\n" 
     
    7378msgstr "" 
    7479 
    75 #: includes/admin/builder/class-builder.php:278 
     80#: includes/admin/builder/class-builder.php:280 
    7681msgid "Show presets" 
    7782msgstr "" 
    7883 
    79 #: includes/admin/builder/class-builder.php:279 
     84#: includes/admin/builder/class-builder.php:281 
    8085msgid "Hide presets" 
    8186msgstr "" 
    8287 
    83 #: includes/admin/builder/class-builder.php:280 
     88#: includes/admin/builder/class-builder.php:282 
    8489#: pro/includes/fields/class-date-time.php:229 
    8590#: pro/includes/fields/class-date-time.php:231 
     
    8994msgstr "" 
    9095 
    91 #: includes/admin/builder/class-builder.php:281 
     96#: includes/admin/builder/class-builder.php:283 
    9297#: pro/includes/fields/class-date-time.php:228 
    9398#: pro/includes/fields/class-date-time.php:232 
     
    99104msgstr "" 
    100105 
    101 #: includes/admin/builder/class-builder.php:282 
     106#: includes/admin/builder/class-builder.php:285 
    102107msgid "" 
    103108"The {source} {type} contains over {limit} items ({total}). This may make the " 
     
    105110msgstr "" 
    106111 
    107 #: includes/admin/builder/class-builder.php:283 
     112#: includes/admin/builder/class-builder.php:286 
    108113#: includes/admin/class-editor.php:96 
    109114#: pro/includes/admin/entries/class-entries.php:994 
     
    111116msgstr "" 
    112117 
    113 #: includes/admin/builder/class-builder.php:284 
     118#: includes/admin/builder/class-builder.php:287 
    114119msgid "OK" 
    115120msgstr "" 
    116121 
    117 #: includes/admin/builder/class-builder.php:285 
     122#: includes/admin/builder/class-builder.php:288 
    118123#: includes/admin/class-editor.php:70 
    119124msgid "Close" 
    120125msgstr "" 
    121126 
    122 #: includes/admin/builder/class-builder.php:286 
     127#: includes/admin/builder/class-builder.php:289 
    123128msgid "" 
    124129"Due to form changes, conditional logic rules have been removed or updated:" 
    125130msgstr "" 
    126131 
    127 #: includes/admin/builder/class-builder.php:287 
     132#: includes/admin/builder/class-builder.php:290 
     133msgid "" 
     134"Are you sure you want to disable conditional logic? This will remove the " 
     135"rules for this field or setting." 
     136msgstr "" 
     137 
     138#: includes/admin/builder/class-builder.php:291 
    128139#: pro/includes/admin/entries/class-entries-table.php:176 
    129140msgid "Field" 
    130141msgstr "" 
    131142 
    132 #: includes/admin/builder/class-builder.php:288 
     143#: includes/admin/builder/class-builder.php:292 
    133144msgid "Field Locked" 
    134145msgstr "" 
    135146 
    136 #: includes/admin/builder/class-builder.php:289 
     147#: includes/admin/builder/class-builder.php:293 
    137148msgid "This field cannot be deleted or duplicated." 
    138149msgstr "" 
    139150 
    140 #: includes/admin/builder/class-builder.php:290 
     151#: includes/admin/builder/class-builder.php:294 
    141152msgid "Available Fields" 
    142153msgstr "" 
    143154 
    144 #: includes/admin/builder/class-builder.php:291 
     155#: includes/admin/builder/class-builder.php:295 
    145156msgid "No fields available" 
    146157msgstr "" 
    147158 
    148 #: includes/admin/builder/class-builder.php:292 
     159#: includes/admin/builder/class-builder.php:296 
    149160msgid "Heads up!" 
    150161msgstr "" 
    151162 
    152 #: includes/admin/builder/class-builder.php:294 
     163#: includes/admin/builder/class-builder.php:298 
    153164msgid "No email fields" 
    154165msgstr "" 
    155166 
    156 #: includes/admin/builder/class-builder.php:295 
     167#: includes/admin/builder/class-builder.php:299 
    157168msgid "Are you sure you want to delete this notification?" 
    158169msgstr "" 
    159170 
    160 #: includes/admin/builder/class-builder.php:296 
     171#: includes/admin/builder/class-builder.php:300 
    161172msgid "Enter a notification name" 
    162173msgstr "" 
    163174 
    164 #: includes/admin/builder/class-builder.php:297 
     175#: includes/admin/builder/class-builder.php:301 
    165176msgid "Eg: User Confirmation" 
    166177msgstr "" 
    167178 
    168 #: includes/admin/builder/class-builder.php:298 
     179#: includes/admin/builder/class-builder.php:302 
    169180msgid "You must provide a notification name" 
    170181msgstr "" 
    171182 
    172 #: includes/admin/builder/class-builder.php:299 
     183#: includes/admin/builder/class-builder.php:303 
    173184msgid "" 
    174185"Form must contain one notification. To disable all notifications use the " 
     
    176187msgstr "" 
    177188 
    178 #: includes/admin/builder/class-builder.php:300 
     189#: includes/admin/builder/class-builder.php:304 
    179190#: lite/includes/admin/class-settings.php:149 
    180191#: pro/includes/admin/class-settings.php:160 
     
    182193msgstr "" 
    183194 
    184 #: includes/admin/builder/class-builder.php:301 
     195#: includes/admin/builder/class-builder.php:305 
    185196msgid "Saved!" 
    186197msgstr "" 
    187198 
    188 #: includes/admin/builder/class-builder.php:302 
     199#: includes/admin/builder/class-builder.php:306 
    189200msgid "Save and Exit" 
    190201msgstr "" 
    191202 
    192 #: includes/admin/builder/class-builder.php:303 
    193 #: includes/fields/class-base.php:535 
     203#: includes/admin/builder/class-builder.php:307 
     204#: includes/fields/class-base.php:539 
    194205msgid "Show Layouts" 
    195206msgstr "" 
    196207 
    197 #: includes/admin/builder/class-builder.php:304 
     208#: includes/admin/builder/class-builder.php:308 
    198209msgid "Hide Layouts" 
    199210msgstr "" 
    200211 
    201 #: includes/admin/builder/class-builder.php:305 
     212#: includes/admin/builder/class-builder.php:309 
    202213msgid "Select your layout" 
    203214msgstr "" 
    204215 
    205 #: includes/admin/builder/class-builder.php:306 
     216#: includes/admin/builder/class-builder.php:310 
    206217msgid "Select your column" 
    207218msgstr "" 
    208219 
    209 #: includes/admin/builder/class-builder.php:307 
    210 #: includes/admin/builder/class-builder.php:408 
     220#: includes/admin/builder/class-builder.php:311 
     221#: includes/admin/builder/class-builder.php:427 
    211222msgid "Loading" 
    212223msgstr "" 
    213224 
    214 #: includes/admin/builder/class-builder.php:313 
     225#: includes/admin/builder/class-builder.php:317 
    215226msgid "Use Template" 
    216227msgstr "" 
    217228 
    218 #: includes/admin/builder/class-builder.php:314 
     229#: includes/admin/builder/class-builder.php:318 
    219230msgid "" 
    220231"Changing templates on an existing form will DELETE existing form fields. Are " 
     
    222233msgstr "" 
    223234 
    224 #: includes/admin/builder/class-builder.php:315 
     235#: includes/admin/builder/class-builder.php:319 
    225236msgid "" 
    226237"You are almost done. To embed this form on your site, please paste the " 
     
    228239msgstr "" 
    229240 
    230 #: includes/admin/builder/class-builder.php:316 
     241#: includes/admin/builder/class-builder.php:320 
    231242msgid "Or you can follow the instructions in this video." 
    232243msgstr "" 
    233244 
    234 #: includes/admin/builder/class-builder.php:317 
    235 #: includes/admin/builder/class-builder.php:458 
     245#: includes/admin/builder/class-builder.php:321 
     246#: includes/admin/builder/class-builder.php:477 
    236247msgid "Exit" 
    237248msgstr "" 
    238249 
    239 #: includes/admin/builder/class-builder.php:319 
     250#: includes/admin/builder/class-builder.php:323 
    240251msgid "If you exit without saving, your changes will be lost." 
    241252msgstr "" 
    242253 
    243 #: includes/admin/builder/class-builder.php:320 
     254#: includes/admin/builder/class-builder.php:324 
    244255msgid "Are you sure you want to delete this field?" 
    245256msgstr "" 
    246257 
    247 #: includes/admin/builder/class-builder.php:321 
     258#: includes/admin/builder/class-builder.php:325 
    248259msgid "Are you sure you want to duplicate this field?" 
    249260msgstr "" 
    250261 
    251 #: includes/admin/builder/class-builder.php:322 
     262#: includes/admin/builder/class-builder.php:326 
    252263msgid "(copy)" 
    253264msgstr "" 
    254265 
    255 #: includes/admin/builder/class-builder.php:323 
     266#: includes/admin/builder/class-builder.php:327 
    256267msgid "Please enter a form title." 
    257268msgstr "" 
    258269 
    259 #: includes/admin/builder/class-builder.php:324 
     270#: includes/admin/builder/class-builder.php:328 
    260271msgid "This item must contain at least one choice." 
    261272msgstr "" 
    262273 
    263 #: includes/admin/builder/class-builder.php:325 
    264 #: includes/fields/class-base.php:250 includes/fields/class-base.php:583 
    265 #: lite/wpforms-lite.php:78 pro/wpforms-pro.php:262 
     274#: includes/admin/builder/class-builder.php:329 
     275#: includes/fields/class-base.php:253 includes/fields/class-base.php:587 
     276#: lite/wpforms-lite.php:79 pro/wpforms-pro.php:269 
    266277msgid "Off" 
    267278msgstr "" 
    268279 
    269 #: includes/admin/builder/class-builder.php:326 
    270 #: includes/fields/class-base.php:250 lite/wpforms-lite.php:77 
    271 #: pro/wpforms-pro.php:261 
     280#: includes/admin/builder/class-builder.php:330 
     281#: includes/fields/class-base.php:253 lite/wpforms-lite.php:78 
     282#: pro/wpforms-pro.php:268 
    272283msgid "On" 
    273284msgstr "" 
    274285 
    275 #: includes/admin/builder/class-builder.php:327 
     286#: includes/admin/builder/class-builder.php:331 
     287msgid "or" 
     288msgstr "" 
     289 
     290#: includes/admin/builder/class-builder.php:332 
    276291#: includes/templates/class-suggestion.php:59 
    277292msgid "Other" 
    278293msgstr "" 
    279294 
    280 #: includes/admin/builder/class-builder.php:328 
     295#: includes/admin/builder/class-builder.php:333 
     296#: includes/class-conditional-logic-core.php:367 
     297msgid "is" 
     298msgstr "" 
     299 
     300#: includes/admin/builder/class-builder.php:334 
     301#: includes/class-conditional-logic-core.php:368 
     302msgid "is not" 
     303msgstr "" 
     304 
     305#: includes/admin/builder/class-builder.php:335 
     306#: includes/class-conditional-logic-core.php:369 
     307msgid "empty" 
     308msgstr "" 
     309 
     310#: includes/admin/builder/class-builder.php:336 
     311#: includes/class-conditional-logic-core.php:370 
     312msgid "not empty" 
     313msgstr "" 
     314 
     315#: includes/admin/builder/class-builder.php:337 
     316#: includes/class-conditional-logic-core.php:375 
     317msgid "contains" 
     318msgstr "" 
     319 
     320#: includes/admin/builder/class-builder.php:338 
     321#: includes/class-conditional-logic-core.php:376 
     322msgid "does not contain" 
     323msgstr "" 
     324 
     325#: includes/admin/builder/class-builder.php:339 
     326#: includes/class-conditional-logic-core.php:377 
     327msgid "starts with" 
     328msgstr "" 
     329 
     330#: includes/admin/builder/class-builder.php:340 
     331#: includes/class-conditional-logic-core.php:378 
     332msgid "ends with" 
     333msgstr "" 
     334 
     335#: includes/admin/builder/class-builder.php:341 
     336msgid "" 
     337"Form entries must be stored to accept payments. Please enable saving form " 
     338"entries in the General settings first." 
     339msgstr "" 
     340 
     341#: includes/admin/builder/class-builder.php:342 
    281342#: pro/includes/fields/class-page-break.php:186 
    282343#: pro/includes/fields/class-page-break.php:517 
     
    284345msgstr "" 
    285346 
    286 #: includes/admin/builder/class-builder.php:331 
    287 #: includes/admin/builder/functions.php:246 includes/fields/class-base.php:484 
     347#: includes/admin/builder/class-builder.php:343 
     348#: includes/class-conditional-logic-core.php:441 
     349msgid "Create new rule" 
     350msgstr "" 
     351 
     352#: includes/admin/builder/class-builder.php:344 
     353msgid "Add new group" 
     354msgstr "" 
     355 
     356#: includes/admin/builder/class-builder.php:345 
     357#: includes/class-conditional-logic-core.php:442 
     358msgid "Delete rule" 
     359msgstr "" 
     360 
     361#: includes/admin/builder/class-builder.php:348 
     362#: includes/admin/builder/functions.php:249 includes/fields/class-base.php:487 
    288363msgid "Show Smart Tags" 
    289364msgstr "" 
    290365 
    291 #: includes/admin/builder/class-builder.php:332 
     366#: includes/admin/builder/class-builder.php:349 
    292367msgid "Hide Smart Tags" 
    293368msgstr "" 
    294369 
    295 #: includes/admin/builder/class-builder.php:333 
     370#: includes/admin/builder/class-builder.php:350 
     371#: includes/class-conditional-logic-core.php:326 
    296372msgid "-- Select Field --" 
    297373msgstr "" 
    298374 
    299 #: includes/admin/builder/class-builder.php:334 
    300 #: includes/providers/class-base.php:952 
     375#: includes/admin/builder/class-builder.php:351 
     376#: includes/class-conditional-logic-core.php:421 
    301377msgid "-- Select Choice --" 
    302378msgstr "" 
    303379 
    304 #: includes/admin/builder/class-builder.php:361 
     380#: includes/admin/builder/class-builder.php:378 
    305381msgid "Countries" 
    306382msgstr "" 
    307383 
    308 #: includes/admin/builder/class-builder.php:365 
     384#: includes/admin/builder/class-builder.php:382 
    309385msgid "Countries Postal Code" 
    310386msgstr "" 
    311387 
    312 #: includes/admin/builder/class-builder.php:369 
     388#: includes/admin/builder/class-builder.php:386 
    313389msgid "States" 
    314390msgstr "" 
    315391 
    316 #: includes/admin/builder/class-builder.php:373 
     392#: includes/admin/builder/class-builder.php:390 
    317393msgid "States Postal Code" 
    318394msgstr "" 
    319395 
    320 #: includes/admin/builder/class-builder.php:377 
     396#: includes/admin/builder/class-builder.php:394 
    321397msgid "Months" 
    322398msgstr "" 
    323399 
    324 #: includes/admin/builder/class-builder.php:381 
     400#: includes/admin/builder/class-builder.php:398 
    325401msgid "Days" 
    326402msgstr "" 
    327403 
    328 #: includes/admin/builder/class-builder.php:431 
     404#: includes/admin/builder/class-builder.php:450 
    329405msgid "Now editing" 
    330406msgstr "" 
    331407 
    332 #: includes/admin/builder/class-builder.php:441 
     408#: includes/admin/builder/class-builder.php:460 
    333409#: pro/includes/admin/entries/class-entries.php:512 
    334410msgid "Preview Form" 
    335411msgstr "" 
    336412 
    337 #: includes/admin/builder/class-builder.php:443 
     413#: includes/admin/builder/class-builder.php:462 
    338414#: includes/admin/overview/class-overview-table.php:159 
    339415msgid "Preview" 
    340416msgstr "" 
    341417 
    342 #: includes/admin/builder/class-builder.php:446 
     418#: includes/admin/builder/class-builder.php:465 
    343419msgid "Embed Form" 
    344420msgstr "" 
    345421 
    346 #: includes/admin/builder/class-builder.php:448 
     422#: includes/admin/builder/class-builder.php:467 
    347423msgid "Embed" 
    348424msgstr "" 
    349425 
    350 #: includes/admin/builder/class-builder.php:451 
     426#: includes/admin/builder/class-builder.php:470 
    351427msgid "Save Form" 
    352428msgstr "" 
    353429 
    354 #: includes/admin/builder/class-builder.php:453 
    355 #: pro/includes/admin/class-settings.php:603 
     430#: includes/admin/builder/class-builder.php:472 
     431#: pro/includes/admin/class-settings.php:604 
    356432msgid "Save" 
    357433msgstr "" 
    358434 
    359 #: includes/admin/builder/functions.php:186 
     435#: includes/admin/builder/functions.php:189 
    360436msgid "Field #" 
    361437msgstr "" 
     
    405481 
    406482#: includes/admin/builder/panels/class-fields.php:252 
    407 #: includes/fields/class-base.php:766 
     483#: includes/fields/class-base.php:770 
    408484msgid "Duplicate Field" 
    409485msgstr "" 
    410486 
    411487#: includes/admin/builder/panels/class-fields.php:254 
    412 #: includes/fields/class-base.php:767 
     488#: includes/fields/class-base.php:771 
    413489msgid "Delete Field" 
    414490msgstr "" 
    415491 
    416492#: includes/admin/builder/panels/class-fields.php:256 
    417 #: includes/fields/class-base.php:768 
     493#: includes/fields/class-base.php:772 
    418494msgid "Click to edit. Drag to reorder." 
    419495msgstr "" 
     
    478554 
    479555#: includes/admin/builder/panels/class-settings.php:21 
    480 #: includes/admin/class-menu.php:81 lite/includes/admin/class-settings.php:523 
    481 #: pro/includes/admin/class-settings.php:962 
     556#: includes/admin/class-menu.php:81 lite/includes/admin/class-settings.php:524 
     557#: pro/includes/admin/class-settings.php:963 
    482558msgid "Settings" 
    483559msgstr "" 
     
    490566msgstr "" 
    491567 
    492 #: includes/admin/builder/panels/class-settings.php:58 lite/wpforms-lite.php:63 
    493 #: lite/wpforms-lite.php:73 pro/wpforms-pro.php:248 pro/wpforms-pro.php:257 
     568#: includes/admin/builder/panels/class-settings.php:58 lite/wpforms-lite.php:64 
     569#: lite/wpforms-lite.php:74 pro/wpforms-pro.php:255 pro/wpforms-pro.php:264 
    494570msgid "Notifications" 
    495571msgstr "" 
     
    569645 
    570646#: includes/admin/builder/panels/class-settings.php:188 
    571 #: includes/templates/class-suggestion.php:74 lite/wpforms-lite.php:191 
    572 #: pro/wpforms-pro.php:381 
     647#: includes/templates/class-suggestion.php:74 lite/wpforms-lite.php:192 
     648#: pro/wpforms-pro.php:388 
    573649msgid "Message" 
    574650msgstr "" 
     
    667743msgstr "" 
    668744 
    669 #. #-#-#-#-#  wpforms.pot (WPForms 1.3.7.3)  #-#-#-#-# 
     745#. #-#-#-#-#  wpforms.pot (WPForms 1.3.8)  #-#-#-#-# 
    670746#. Plugin Name of the plugin/theme 
    671 #. #-#-#-#-#  wpforms.pot (WPForms 1.3.7.3)  #-#-#-#-# 
     747#. #-#-#-#-#  wpforms.pot (WPForms 1.3.8)  #-#-#-#-# 
    672748#. Author of the plugin/theme 
    673749#: includes/admin/class-menu.php:36 includes/admin/class-menu.php:37 
     
    687763#: includes/admin/class-menu.php:59 
    688764#: includes/admin/overview/class-overview.php:148 
    689 #: includes/providers/class-base.php:1093 
     765#: includes/providers/class-base.php:903 
    690766msgid "Add New" 
    691767msgstr "" 
     
    697773#: includes/admin/class-menu.php:69 
    698774#: includes/admin/overview/class-overview-table.php:152 
    699 #: pro/includes/admin/entries/class-entries.php:411 pro/wpforms-pro.php:201 
     775#: pro/includes/admin/entries/class-entries.php:411 pro/wpforms-pro.php:208 
    700776msgid "Entries" 
    701777msgstr "" 
     
    777853 
    778854#: includes/admin/overview/class-overview-table.php:53 
    779 #: includes/fields/class-name.php:21 includes/fields/class-name.php:275 
     855#: includes/fields/class-name.php:21 includes/fields/class-name.php:276 
    780856#: includes/templates/class-contact.php:32 
    781857#: includes/templates/class-subscribe.php:35 
     
    865941msgstr "" 
    866942 
    867 #: includes/class-frontend.php:967 lite/includes/admin/class-settings.php:372 
    868 #: pro/includes/admin/class-settings.php:447 
     943#: includes/class-conditional-logic-core.php:158 
     944msgid "this field if" 
     945msgstr "" 
     946 
     947#: includes/class-conditional-logic-core.php:165 
     948msgid "Show" 
     949msgstr "" 
     950 
     951#: includes/class-conditional-logic-core.php:166 
     952msgid "Hide" 
     953msgstr "" 
     954 
     955#: includes/class-conditional-logic-core.php:201 
     956#: includes/class-conditional-logic-core.php:258 
     957msgid "Enable conditional logic" 
     958msgstr "" 
     959 
     960#: includes/class-conditional-logic-core.php:202 
     961msgid "Check this option to enable conditional logic on this field." 
     962msgstr "" 
     963 
     964#: includes/class-conditional-logic-core.php:260 
     965msgid "Check this option to enable conditional logic." 
     966msgstr "" 
     967 
     968#: includes/class-conditional-logic-core.php:457 
     969msgid "Add rule group" 
     970msgstr "" 
     971 
     972#: includes/class-frontend.php:969 lite/includes/admin/class-settings.php:373 
     973#: pro/includes/admin/class-settings.php:448 
    869974msgid "This field is required." 
    870975msgstr "" 
    871976 
    872 #: includes/class-frontend.php:968 lite/includes/admin/class-settings.php:380 
    873 #: pro/includes/admin/class-settings.php:455 
     977#: includes/class-frontend.php:970 lite/includes/admin/class-settings.php:381 
     978#: pro/includes/admin/class-settings.php:456 
    874979msgid "Please enter a valid URL." 
    875980msgstr "" 
    876981 
    877 #: includes/class-frontend.php:969 lite/includes/admin/class-settings.php:388 
    878 #: pro/includes/admin/class-settings.php:463 
     982#: includes/class-frontend.php:971 lite/includes/admin/class-settings.php:389 
     983#: pro/includes/admin/class-settings.php:464 
    879984msgid "Please enter a valid email address." 
    880985msgstr "" 
    881986 
    882 #: includes/class-frontend.php:970 includes/fields/class-number.php:157 
    883 #: lite/includes/admin/class-settings.php:396 
    884 #: pro/includes/admin/class-settings.php:471 
     987#: includes/class-frontend.php:972 includes/fields/class-number.php:157 
     988#: lite/includes/admin/class-settings.php:397 
     989#: pro/includes/admin/class-settings.php:472 
    885990msgid "Please enter a valid number." 
    886991msgstr "" 
    887992 
    888 #: includes/class-frontend.php:971 lite/includes/admin/class-settings.php:404 
    889 #: pro/includes/admin/class-settings.php:479 
     993#: includes/class-frontend.php:973 lite/includes/admin/class-settings.php:405 
     994#: pro/includes/admin/class-settings.php:480 
    890995#: pro/includes/fields/class-password.php:394 
    891996msgid "Field values do not match." 
    892997msgstr "" 
    893998 
    894 #: includes/class-frontend.php:972 pro/includes/admin/class-settings.php:487 
    895 #: pro/includes/fields/class-file-upload.php:365 
    896 #: pro/includes/fields/class-file-upload.php:381 
    897 #: pro/includes/fields/class-file-upload.php:398 
     999#: includes/class-frontend.php:974 pro/includes/admin/class-settings.php:488 
     1000#: pro/includes/fields/class-file-upload.php:367 
     1001#: pro/includes/fields/class-file-upload.php:383 
     1002#: pro/includes/fields/class-file-upload.php:400 
    8981003msgid "File type is not allowed." 
    8991004msgstr "" 
    9001005 
    901 #: includes/class-frontend.php:973 pro/includes/admin/class-settings.php:495 
     1006#: includes/class-frontend.php:975 pro/includes/admin/class-settings.php:496 
    9021007msgid "File exceeds max size allowed." 
    9031008msgstr "" 
    9041009 
    905 #: includes/class-frontend.php:974 pro/includes/admin/class-settings.php:503 
     1010#: includes/class-frontend.php:976 pro/includes/admin/class-settings.php:504 
    9061011msgid "Please enter time in 12-hour AM/PM format (eg 8:45 AM)." 
    9071012msgstr "" 
    9081013 
    909 #: includes/class-frontend.php:975 pro/includes/admin/class-settings.php:511 
     1014#: includes/class-frontend.php:977 pro/includes/admin/class-settings.php:512 
    9101015msgid "Please enter time in 24-hour format (eg 22:45)." 
    9111016msgstr "" 
    9121017 
    913 #: includes/class-frontend.php:976 pro/includes/admin/class-settings.php:519 
     1018#: includes/class-frontend.php:978 pro/includes/admin/class-settings.php:520 
    9141019msgid "Payment is required." 
    9151020msgstr "" 
    9161021 
    917 #: includes/class-frontend.php:977 pro/includes/admin/class-settings.php:527 
     1022#: includes/class-frontend.php:979 pro/includes/admin/class-settings.php:528 
    9181023msgid "Please enter a valid credit card number." 
    9191024msgstr "" 
     
    9861091msgstr "" 
    9871092 
    988 #: includes/class-process.php:120 includes/class-process.php:163 
     1093#: includes/class-process.php:126 includes/class-process.php:174 
    9891094msgid "Form has not been submitted, please see the errors below." 
    9901095msgstr "" 
    9911096 
    992 #: includes/class-process.php:127 
     1097#: includes/class-process.php:135 
    9931098msgid "WPForms honeypot field triggered." 
    9941099msgstr "" 
    9951100 
    996 #: includes/class-process.php:340 lite/wpforms-lite.php:55 
    997 #: pro/wpforms-pro.php:241 
     1101#: includes/class-process.php:354 lite/wpforms-lite.php:56 
     1102#: pro/wpforms-pro.php:248 
    9981103msgid "New %s Entry" 
    9991104msgstr "" 
     
    10861191msgstr "" 
    10871192 
    1088 #: includes/class-widget.php:127 pro/includes/admin/class-settings.php:683 
     1193#: includes/class-widget.php:127 pro/includes/admin/class-settings.php:684 
    10891194msgid "No forms" 
    10901195msgstr "" 
     
    11181223msgstr "" 
    11191224 
    1120 #: includes/fields/class-base.php:310 
     1225#: includes/fields/class-base.php:313 
    11211226msgid "" 
    11221227"Enter text for the form field label. Field labels are recommended and can be " 
     
    11241229msgstr "" 
    11251230 
    1126 #: includes/fields/class-base.php:311 
     1231#: includes/fields/class-base.php:314 
    11271232msgid "Label" 
    11281233msgstr "" 
    11291234 
    1130 #: includes/fields/class-base.php:320 
     1235#: includes/fields/class-base.php:323 
    11311236msgid "Enter text for the form field description." 
    11321237msgstr "" 
    11331238 
    1134 #: includes/fields/class-base.php:321 
     1239#: includes/fields/class-base.php:324 
    11351240msgid "Description" 
    11361241msgstr "" 
    11371242 
    1138 #: includes/fields/class-base.php:331 
     1243#: includes/fields/class-base.php:334 
    11391244msgid "" 
    11401245"Check this option to mark the field required. A form will not submit unless " 
     
    11421247msgstr "" 
    11431248 
    1144 #: includes/fields/class-base.php:332 
    1145 #: lite/includes/admin/class-settings.php:369 
    1146 #: pro/includes/admin/class-settings.php:444 
     1249#: includes/fields/class-base.php:335 
     1250#: lite/includes/admin/class-settings.php:370 
     1251#: pro/includes/admin/class-settings.php:445 
    11471252msgid "Required" 
    11481253msgstr "" 
    11491254 
    1150 #: includes/fields/class-base.php:348 
     1255#: includes/fields/class-base.php:351 
    11511256msgid "Enter code for the form field." 
    11521257msgstr "" 
    11531258 
    1154 #: includes/fields/class-base.php:349 
     1259#: includes/fields/class-base.php:352 
    11551260msgid "Code" 
    11561261msgstr "" 
    11571262 
    1158 #: includes/fields/class-base.php:358 includes/fields/class-base.php:432 
     1263#: includes/fields/class-base.php:361 includes/fields/class-base.php:435 
    11591264msgid "Add choices for the form field." 
    11601265msgstr "" 
    11611266 
    1162 #: includes/fields/class-base.php:371 
     1267#: includes/fields/class-base.php:374 
    11631268msgid "Choices" 
    11641269msgstr "" 
    11651270 
    1166 #: includes/fields/class-base.php:414 
     1271#: includes/fields/class-base.php:417 
    11671272msgid "" 
    11681273"Choices are dynamically populated from the <span class=\"dynamic-name\">%s</" 
     
    11701275msgstr "" 
    11711276 
    1172 #: includes/fields/class-base.php:441 
     1277#: includes/fields/class-base.php:444 
    11731278msgid "Items" 
    11741279msgstr "" 
    11751280 
    1176 #: includes/fields/class-base.php:483 
     1281#: includes/fields/class-base.php:486 
    11771282msgid "Enter text for the default form field value." 
    11781283msgstr "" 
    11791284 
    1180 #: includes/fields/class-base.php:485 includes/fields/class-name.php:282 
    1181 #: includes/fields/class-name.php:297 includes/fields/class-name.php:312 
    1182 #: includes/fields/class-name.php:327 pro/includes/fields/class-address.php:117 
     1285#: includes/fields/class-base.php:488 includes/fields/class-name.php:283 
     1286#: includes/fields/class-name.php:298 includes/fields/class-name.php:313 
     1287#: includes/fields/class-name.php:328 pro/includes/fields/class-address.php:117 
    11831288#: pro/includes/fields/class-address.php:133 
    11841289#: pro/includes/fields/class-address.php:151 
     
    11891294msgstr "" 
    11901295 
    1191 #: includes/fields/class-base.php:494 
     1296#: includes/fields/class-base.php:498 
    11921297msgid "Select the default form field size." 
    11931298msgstr "" 
    11941299 
    1195 #: includes/fields/class-base.php:496 
     1300#: includes/fields/class-base.php:500 
    11961301msgid "Small" 
    11971302msgstr "" 
    11981303 
    1199 #: includes/fields/class-base.php:497 
     1304#: includes/fields/class-base.php:501 
    12001305msgid "Medium" 
    12011306msgstr "" 
    12021307 
    1203 #: includes/fields/class-base.php:498 
     1308#: includes/fields/class-base.php:502 
    12041309msgid "Large" 
    12051310msgstr "" 
    12061311 
    1207 #: includes/fields/class-base.php:500 
     1312#: includes/fields/class-base.php:504 
    12081313msgid "Field Size" 
    12091314msgstr "" 
    12101315 
    1211 #: includes/fields/class-base.php:513 
     1316#: includes/fields/class-base.php:517 
    12121317msgid "Advanced Options" 
    12131318msgstr "" 
    12141319 
    1215 #: includes/fields/class-base.php:524 
     1320#: includes/fields/class-base.php:528 
    12161321msgid "Enter text for the form field placeholder." 
    12171322msgstr "" 
    12181323 
    1219 #: includes/fields/class-base.php:525 
     1324#: includes/fields/class-base.php:529 
    12201325msgid "Placeholder Text" 
    12211326msgstr "" 
    12221327 
    1223 #: includes/fields/class-base.php:534 
     1328#: includes/fields/class-base.php:538 
    12241329msgid "" 
    12251330"Enter CSS class names for the form field container. Class names should be " 
     
    12271332msgstr "" 
    12281333 
    1229 #: includes/fields/class-base.php:537 
     1334#: includes/fields/class-base.php:541 
    12301335msgid "CSS Classes" 
    12311336msgstr "" 
    12321337 
    1233 #: includes/fields/class-base.php:546 
     1338#: includes/fields/class-base.php:550 
    12341339msgid "Check this option to hide the form field label." 
    12351340msgstr "" 
    12361341 
    1237 #: includes/fields/class-base.php:548 
     1342#: includes/fields/class-base.php:552 
    12381343msgid "Hide Label" 
    12391344msgstr "" 
    12401345 
    1241 #: includes/fields/class-base.php:556 
     1346#: includes/fields/class-base.php:560 
    12421347msgid "Check this option to hide the form field sub-label." 
    12431348msgstr "" 
    12441349 
    1245 #: includes/fields/class-base.php:558 
     1350#: includes/fields/class-base.php:562 
    12461351msgid "Hide Sub-Labels" 
    12471352msgstr "" 
    12481353 
    1249 #: includes/fields/class-base.php:566 
     1354#: includes/fields/class-base.php:570 
    12501355msgid "Select the layout for displaying field choices." 
    12511356msgstr "" 
    12521357 
    1253 #: includes/fields/class-base.php:568 
     1358#: includes/fields/class-base.php:572 
    12541359msgid "One Column" 
    12551360msgstr "" 
    12561361 
    1257 #: includes/fields/class-base.php:569 
     1362#: includes/fields/class-base.php:573 
    12581363msgid "Two Columns" 
    12591364msgstr "" 
    12601365 
    1261 #: includes/fields/class-base.php:570 
     1366#: includes/fields/class-base.php:574 
    12621367msgid "Three Columns" 
    12631368msgstr "" 
    12641369 
    1265 #: includes/fields/class-base.php:572 
     1370#: includes/fields/class-base.php:576 
    12661371msgid "Choice Layout" 
    12671372msgstr "" 
    12681373 
    1269 #: includes/fields/class-base.php:581 
     1374#: includes/fields/class-base.php:585 
    12701375msgid "Select auto-populate method to use." 
    12711376msgstr "" 
    12721377 
    1273 #: includes/fields/class-base.php:584 includes/fields/class-base.php:603 
     1378#: includes/fields/class-base.php:588 includes/fields/class-base.php:607 
    12741379msgid "Post Type" 
    12751380msgstr "" 
    12761381 
    1277 #: includes/fields/class-base.php:585 includes/fields/class-base.php:609 
     1382#: includes/fields/class-base.php:589 includes/fields/class-base.php:613 
    12781383msgid "Taxonomy" 
    12791384msgstr "" 
    12801385 
    1281 #: includes/fields/class-base.php:587 
     1386#: includes/fields/class-base.php:591 
    12821387msgid "Dynamic Choices" 
    12831388msgstr "" 
    12841389 
    1285 #: includes/fields/class-base.php:614 
     1390#: includes/fields/class-base.php:618 
    12861391msgid "Select %s to use for auto-populating field choices." 
    12871392msgstr "" 
    12881393 
    1289 #: includes/fields/class-base.php:615 
     1394#: includes/fields/class-base.php:619 
    12901395msgid "Dynamic %s Source" 
    12911396msgstr "" 
    12921397 
    1293 #: includes/fields/class-base.php:732 
     1398#: includes/fields/class-base.php:736 
    12941399msgid "No form ID found" 
    12951400msgstr "" 
    12961401 
    1297 #: includes/fields/class-base.php:737 
     1402#: includes/fields/class-base.php:741 
    12981403msgid "No field type found" 
    12991404msgstr "" 
    13001405 
    1301 #: includes/fields/class-base.php:865 includes/fields/class-name.php:483 
     1406#: includes/fields/class-base.php:869 includes/fields/class-name.php:485 
    13021407#: includes/fields/class-number.php:152 
    13031408#: pro/includes/fields/class-address.php:624 
    13041409#: pro/includes/fields/class-date-time.php:532 
    1305 #: pro/includes/fields/class-file-upload.php:330 
     1410#: pro/includes/fields/class-file-upload.php:332 
    13061411#: pro/includes/fields/class-password.php:371 
    13071412#: pro/includes/fields/class-payment-dropdown.php:208 
     
    13491454#: includes/fields/class-email.php:306 
    13501455#: includes/templates/class-subscribe.php:42 
    1351 #: lite/includes/admin/class-settings.php:262 
    1352 #: lite/includes/admin/class-settings.php:385 
    1353 #: pro/includes/admin/class-settings.php:337 
    1354 #: pro/includes/admin/class-settings.php:460 
     1456#: lite/includes/admin/class-settings.php:263 
     1457#: lite/includes/admin/class-settings.php:386 
     1458#: pro/includes/admin/class-settings.php:338 
     1459#: pro/includes/admin/class-settings.php:461 
    13551460#: pro/includes/templates/class-donation.php:42 
    13561461#: pro/includes/templates/class-order.php:42 
     
    13831488msgstr "" 
    13841489 
    1385 #: includes/fields/class-name.php:82 includes/fields/class-name.php:376 
    1386 #: includes/providers/class-base.php:452 
     1490#: includes/fields/class-name.php:82 includes/fields/class-name.php:377 
     1491#: includes/providers/class-base.php:369 
    13871492msgid "First" 
    13881493msgstr "" 
    13891494 
    1390 #: includes/fields/class-name.php:102 includes/fields/class-name.php:381 
    1391 #: includes/providers/class-base.php:464 
     1495#: includes/fields/class-name.php:103 includes/fields/class-name.php:382 
     1496#: includes/providers/class-base.php:381 
    13921497msgid "Middle" 
    13931498msgstr "" 
    13941499 
    1395 #: includes/fields/class-name.php:123 includes/fields/class-name.php:386 
    1396 #: includes/providers/class-base.php:476 
     1500#: includes/fields/class-name.php:124 includes/fields/class-name.php:387 
     1501#: includes/providers/class-base.php:393 
    13971502msgid "Last" 
    13981503msgstr "" 
    13991504 
    1400 #: includes/fields/class-name.php:219 
     1505#: includes/fields/class-name.php:220 
    14011506#: pro/includes/fields/class-date-time.php:56 
    14021507#: pro/includes/fields/class-date-time.php:132 
     
    14061511msgstr "" 
    14071512 
    1408 #: includes/fields/class-name.php:220 
     1513#: includes/fields/class-name.php:221 
    14091514msgid "Select format to use for the name form field" 
    14101515msgstr "" 
    14111516 
    1412 #: includes/fields/class-name.php:231 
     1517#: includes/fields/class-name.php:232 
    14131518msgid "Simple" 
    14141519msgstr "" 
    14151520 
    1416 #: includes/fields/class-name.php:232 
     1521#: includes/fields/class-name.php:233 
    14171522msgid "First Last" 
    14181523msgstr "" 
    14191524 
    1420 #: includes/fields/class-name.php:233 
     1525#: includes/fields/class-name.php:234 
    14211526msgid "First Middle Last" 
    14221527msgstr "" 
    14231528 
    1424 #: includes/fields/class-name.php:275 
     1529#: includes/fields/class-name.php:276 
    14251530msgid "Name field advanced options." 
    14261531msgstr "" 
    14271532 
    1428 #: includes/fields/class-name.php:278 includes/fields/class-name.php:293 
    1429 #: includes/fields/class-name.php:308 includes/fields/class-name.php:323 
     1533#: includes/fields/class-name.php:279 includes/fields/class-name.php:294 
     1534#: includes/fields/class-name.php:309 includes/fields/class-name.php:324 
    14301535#: pro/includes/fields/class-address.php:113 
    14311536#: pro/includes/fields/class-address.php:129 
     
    14391544msgstr "" 
    14401545 
    1441 #: includes/fields/class-name.php:290 
     1546#: includes/fields/class-name.php:291 
    14421547msgid "First Name" 
    14431548msgstr "" 
    14441549 
    1445 #: includes/fields/class-name.php:290 
     1550#: includes/fields/class-name.php:291 
    14461551msgid "First name field advanced options." 
    14471552msgstr "" 
    14481553 
    1449 #: includes/fields/class-name.php:305 
     1554#: includes/fields/class-name.php:306 
    14501555msgid "Middle Name" 
    14511556msgstr "" 
    14521557 
    1453 #: includes/fields/class-name.php:305 
     1558#: includes/fields/class-name.php:306 
    14541559msgid "Middle name field advanced options." 
    14551560msgstr "" 
    14561561 
    1457 #: includes/fields/class-name.php:320 
     1562#: includes/fields/class-name.php:321 
    14581563msgid "Last Name" 
    14591564msgstr "" 
    14601565 
    1461 #: includes/fields/class-name.php:320 
     1566#: includes/fields/class-name.php:321 
    14621567msgid "Last name field advanced options." 
    14631568msgstr "" 
     
    15391644msgstr "" 
    15401645 
    1541 #: includes/providers/class-base.php:149 includes/providers/class-base.php:1156 
    1542 #: includes/providers/class-base.php:1191 
     1646#: includes/providers/class-base.php:149 includes/providers/class-base.php:966 
     1647#: includes/providers/class-base.php:1001 
    15431648msgid "You do not have permission" 
    15441649msgstr "" 
    15451650 
    1546 #: includes/providers/class-base.php:441 
     1651#: includes/providers/class-base.php:358 
    15471652msgid "Full" 
    15481653msgstr "" 
    15491654 
    1550 #: includes/providers/class-base.php:663 
     1655#: includes/providers/class-base.php:580 
    15511656msgid "Select Account" 
    15521657msgstr "" 
    15531658 
    1554 #: includes/providers/class-base.php:675 includes/providers/class-base.php:1284 
     1659#: includes/providers/class-base.php:592 includes/providers/class-base.php:1094 
    15551660#: includes/providers/class-constant-contact.php:476 
    15561661msgid "Add New Account" 
    15571662msgstr "" 
    15581663 
    1559 #: includes/providers/class-base.php:705 
     1664#: includes/providers/class-base.php:622 
    15601665msgid "Select List" 
    15611666msgstr "" 
    15621667 
    1563 #: includes/providers/class-base.php:747 
     1668#: includes/providers/class-base.php:664 
    15641669msgid "Select Groups" 
    15651670msgstr "" 
    15661671 
    1567 #: includes/providers/class-base.php:749 
     1672#: includes/providers/class-base.php:666 
    15681673msgid "" 
    15691674"We also noticed that you have some segments in your list. You can select " 
     
    15711676msgstr "" 
    15721677 
    1573 #: includes/providers/class-base.php:805 includes/providers/class-base.php:810 
     1678#: includes/providers/class-base.php:722 includes/providers/class-base.php:727 
    15741679msgid "List Fields" 
    15751680msgstr "" 
    15761681 
    1577 #: includes/providers/class-base.php:810 
     1682#: includes/providers/class-base.php:727 
    15781683msgid "Available Form Fields" 
    15791684msgstr "" 
    15801685 
    1581 #: includes/providers/class-base.php:871 
    1582 msgid "Conditional Logic" 
    1583 msgstr "" 
    1584  
    1585 #: includes/providers/class-base.php:880 
    1586 msgid "Enable conditional logic" 
    1587 msgstr "" 
    1588  
    1589 #: includes/providers/class-base.php:887 
    1590 msgid "Process this form if" 
    1591 msgstr "" 
    1592  
    1593 #: includes/providers/class-base.php:918 
    1594 msgid "-- Select field --" 
    1595 msgstr "" 
    1596  
    1597 #: includes/providers/class-base.php:935 
    1598 msgid "is" 
    1599 msgstr "" 
    1600  
    1601 #: includes/providers/class-base.php:936 
    1602 msgid "is not" 
    1603 msgstr "" 
    1604  
    1605 #: includes/providers/class-base.php:970 
    1606 msgid "AND" 
    1607 msgstr "" 
    1608  
    1609 #: includes/providers/class-base.php:987 
    1610 msgid "Add rule group" 
    1611 msgstr "" 
    1612  
    1613 #: includes/providers/class-base.php:1160 
    1614 #: includes/providers/class-base.php:1195 
     1686#: includes/providers/class-base.php:796 
     1687msgid "Process" 
     1688msgstr "" 
     1689 
     1690#: includes/providers/class-base.php:797 
     1691msgid "Don't process" 
     1692msgstr "" 
     1693 
     1694#: includes/providers/class-base.php:799 
     1695msgid "this connection if" 
     1696msgstr "" 
     1697 
     1698#: includes/providers/class-base.php:800 
     1699msgid "Marketing provider connection" 
     1700msgstr "" 
     1701 
     1702#: includes/providers/class-base.php:970 includes/providers/class-base.php:1005 
    16151703msgid "Missing data" 
    16161704msgstr "" 
    16171705 
    1618 #: includes/providers/class-base.php:1172 
     1706#: includes/providers/class-base.php:982 
    16191707msgid "Connection missing" 
    16201708msgstr "" 
    16211709 
    1622 #: includes/providers/class-base.php:1212 
    1623 #: includes/providers/class-base.php:1274 
     1710#: includes/providers/class-base.php:1022 
     1711#: includes/providers/class-base.php:1084 
    16241712msgid "Connected on: " 
    16251713msgstr "" 
    16261714 
    1627 #: includes/providers/class-base.php:1213 
    1628 #: includes/providers/class-base.php:1275 
     1715#: includes/providers/class-base.php:1023 
     1716#: includes/providers/class-base.php:1085 
    16291717msgid "Disconnect " 
    16301718msgstr "" 
    16311719 
    1632 #: includes/providers/class-base.php:1259 
     1720#: includes/providers/class-base.php:1069 
    16331721msgid "Integrate %s with WPForms" 
    16341722msgstr "" 
    16351723 
    1636 #: includes/providers/class-base.php:1260 
     1724#: includes/providers/class-base.php:1070 
    16371725msgid "Connected" 
    16381726msgstr "" 
    16391727 
    1640 #: includes/providers/class-base.php:1290 
     1728#: includes/providers/class-base.php:1100 
    16411729msgid "" 
    16421730"Please fill out all of the fields below to add your new provider account." 
    16431731msgstr "" 
    16441732 
    1645 #: includes/providers/class-base.php:1296 
     1733#: includes/providers/class-base.php:1106 
    16461734msgid "Connect to" 
    16471735msgstr "" 
     
    20472135#: lite/includes/admin/class-settings.php:195 
    20482136#: pro/includes/admin/class-settings.php:208 
    2049 #: pro/includes/admin/class-settings.php:555 
     2137#: pro/includes/admin/class-settings.php:556 
    20502138msgid "Settings check failed." 
    20512139msgstr "" 
    20522140 
    2053 #: lite/includes/admin/class-settings.php:222 
    2054 #: pro/includes/admin/class-settings.php:241 
     2141#: lite/includes/admin/class-settings.php:223 
     2142#: pro/includes/admin/class-settings.php:242 
    20552143msgid "General settings updated." 
    20562144msgstr "" 
    20572145 
    2058 #: lite/includes/admin/class-settings.php:239 
    2059 #: pro/includes/admin/class-settings.php:314 
     2146#: lite/includes/admin/class-settings.php:240 
     2147#: pro/includes/admin/class-settings.php:315 
    20602148msgid "Include Form Styling" 
    2061 msgstr "" 
    2062  
    2063 #: lite/includes/admin/class-settings.php:243 
    2064 #: pro/includes/admin/class-settings.php:318 
    2065 msgid "Base and form theme styling" 
    20662149msgstr "" 
    20672150 
    20682151#: lite/includes/admin/class-settings.php:244 
    20692152#: pro/includes/admin/class-settings.php:319 
    2070 msgid "Base styling only" 
     2153msgid "Base and form theme styling" 
    20712154msgstr "" 
    20722155 
    20732156#: lite/includes/admin/class-settings.php:245 
    20742157#: pro/includes/admin/class-settings.php:320 
     2158msgid "Base styling only" 
     2159msgstr "" 
     2160 
     2161#: lite/includes/admin/class-settings.php:246 
     2162#: pro/includes/admin/class-settings.php:321 
    20752163#: pro/includes/fields/class-page-break.php:274 
    20762164msgid "None" 
    20772165msgstr "" 
    20782166 
    2079 #: lite/includes/admin/class-settings.php:247 
    2080 #: pro/includes/admin/class-settings.php:322 
     2167#: lite/includes/admin/class-settings.php:248 
     2168#: pro/includes/admin/class-settings.php:323 
    20812169msgid "Determines which CSS files to load for the site." 
    20822170msgstr "" 
    20832171 
    2084 #: lite/includes/admin/class-settings.php:252 
    2085 #: pro/includes/admin/class-settings.php:327 
     2172#: lite/includes/admin/class-settings.php:253 
     2173#: pro/includes/admin/class-settings.php:328 
    20862174msgid "Load Assets Globally" 
    20872175msgstr "" 
    20882176 
    2089 #: lite/includes/admin/class-settings.php:256 
    2090 #: pro/includes/admin/class-settings.php:331 
     2177#: lite/includes/admin/class-settings.php:257 
     2178#: pro/includes/admin/class-settings.php:332 
    20912179msgid "" 
    20922180"Check this if you would like to load WPForms assets site-wide. Only check if " 
     
    20942182msgstr "" 
    20952183 
    2096 #: lite/includes/admin/class-settings.php:267 
    2097 #: pro/includes/admin/class-settings.php:342 
     2184#: lite/includes/admin/class-settings.php:268 
     2185#: pro/includes/admin/class-settings.php:343 
    20982186msgid "Email Template" 
    2099 msgstr "" 
    2100  
    2101 #: lite/includes/admin/class-settings.php:271 
    2102 #: pro/includes/admin/class-settings.php:346 
    2103 msgid "Default HTML template" 
    21042187msgstr "" 
    21052188 
    21062189#: lite/includes/admin/class-settings.php:272 
    21072190#: pro/includes/admin/class-settings.php:347 
     2191msgid "Default HTML template" 
     2192msgstr "" 
     2193 
     2194#: lite/includes/admin/class-settings.php:273 
     2195#: pro/includes/admin/class-settings.php:348 
    21082196msgid "Plain Text" 
    21092197msgstr "" 
    21102198 
    2111 #: lite/includes/admin/class-settings.php:274 
    2112 #: pro/includes/admin/class-settings.php:349 
     2199#: lite/includes/admin/class-settings.php:275 
     2200#: pro/includes/admin/class-settings.php:350 
    21132201msgid "Determines how email notifications will be formatted." 
    21142202msgstr "" 
    21152203 
    2116 #: lite/includes/admin/class-settings.php:279 
    2117 #: pro/includes/admin/class-settings.php:354 
     2204#: lite/includes/admin/class-settings.php:280 
     2205#: pro/includes/admin/class-settings.php:355 
    21182206msgid "Email Header Image " 
    21192207msgstr "" 
    21202208 
    2121 #: lite/includes/admin/class-settings.php:291 
    2122 #: pro/includes/admin/class-settings.php:366 
     2209#: lite/includes/admin/class-settings.php:292 
     2210#: pro/includes/admin/class-settings.php:367 
    21232211msgid "Upload Image" 
    2124 msgstr "" 
    2125  
    2126 #: lite/includes/admin/class-settings.php:293 
    2127 #: pro/includes/admin/class-settings.php:368 
    2128 msgid "" 
    2129 "Upload or choose a logo to be displayed at the top of email notifications." 
    21302212msgstr "" 
    21312213 
    21322214#: lite/includes/admin/class-settings.php:294 
    21332215#: pro/includes/admin/class-settings.php:369 
     2216msgid "" 
     2217"Upload or choose a logo to be displayed at the top of email notifications." 
     2218msgstr "" 
     2219 
     2220#: lite/includes/admin/class-settings.php:295 
     2221#: pro/includes/admin/class-settings.php:370 
    21342222msgid "Recommended size is 300x100 or smaller for best support on all devices." 
    21352223msgstr "" 
    21362224 
    2137 #: lite/includes/admin/class-settings.php:300 
    2138 #: pro/includes/admin/class-settings.php:375 
     2225#: lite/includes/admin/class-settings.php:301 
     2226#: pro/includes/admin/class-settings.php:376 
    21392227msgid "Email Background Color" 
    21402228msgstr "" 
    21412229 
    2142 #: lite/includes/admin/class-settings.php:304 
    2143 #: pro/includes/admin/class-settings.php:379 
     2230#: lite/includes/admin/class-settings.php:305 
     2231#: pro/includes/admin/class-settings.php:380 
    21442232msgid "Customize the background color of the HTML email template." 
    21452233msgstr "" 
    21462234 
    2147 #: lite/includes/admin/class-settings.php:309 
    2148 #: pro/includes/admin/class-settings.php:384 
     2235#: lite/includes/admin/class-settings.php:310 
     2236#: pro/includes/admin/class-settings.php:385 
    21492237msgid "Email Carbon Copy" 
    21502238msgstr "" 
    21512239 
    2152 #: lite/includes/admin/class-settings.php:313 
    2153 #: pro/includes/admin/class-settings.php:388 
     2240#: lite/includes/admin/class-settings.php:314 
     2241#: pro/includes/admin/class-settings.php:389 
    21542242msgid "" 
    21552243"Check this if you would like to enable the ability to CC: email addresses in " 
     
    21572245msgstr "" 
    21582246 
    2159 #: lite/includes/admin/class-settings.php:319 
    2160 #: pro/includes/admin/class-settings.php:394 
    2161 msgid "reCAPTCHA" 
    2162 msgstr "" 
    2163  
    21642247#: lite/includes/admin/class-settings.php:320 
    21652248#: pro/includes/admin/class-settings.php:395 
     2249msgid "reCAPTCHA" 
     2250msgstr "" 
     2251 
     2252#: lite/includes/admin/class-settings.php:321 
     2253#: pro/includes/admin/class-settings.php:396 
    21662254msgid "" 
    21672255"reCAPTCHA is a free anti-spam service from Google which helps to protect " 
     
    21702258msgstr "" 
    21712259 
    2172 #: lite/includes/admin/class-settings.php:321 
    2173 #: pro/includes/admin/class-settings.php:396 
     2260#: lite/includes/admin/class-settings.php:322 
     2261#: pro/includes/admin/class-settings.php:397 
    21742262msgid "" 
    21752263"Google's original <a href=\"https://www.google.com/recaptcha/intro/\" rel=" 
     
    21802268msgstr "" 
    21812269 
    2182 #: lite/includes/admin/class-settings.php:322 
    2183 #: pro/includes/admin/class-settings.php:397 
     2270#: lite/includes/admin/class-settings.php:323 
     2271#: pro/includes/admin/class-settings.php:398 
    21842272msgid "" 
    21852273"Sites already using v2 reCAPTCHA will need to create new site keys before " 
     
    21872275msgstr "" 
    21882276 
    2189 #: lite/includes/admin/class-settings.php:323 
    2190 #: pro/includes/admin/class-settings.php:398 
     2277#: lite/includes/admin/class-settings.php:324 
     2278#: pro/includes/admin/class-settings.php:399 
    21912279msgid "" 
    21922280"<a href=\"https://wpforms.com/docs/setup-captcha-wpforms/\" rel=\"noopener " 
     
    21952283msgstr "" 
    21962284 
    2197 #: lite/includes/admin/class-settings.php:328 
    2198 #: pro/includes/admin/class-settings.php:403 
     2285#: lite/includes/admin/class-settings.php:329 
     2286#: pro/includes/admin/class-settings.php:404 
    21992287msgid "reCAPTCHA Type" 
    22002288msgstr "" 
    22012289 
    2202 #: lite/includes/admin/class-settings.php:347 
    2203 #: pro/includes/admin/class-settings.php:422 
     2290#: lite/includes/admin/class-settings.php:348 
     2291#: pro/includes/admin/class-settings.php:423 
    22042292msgid "reCAPTCHA Site key" 
    22052293msgstr "" 
    22062294 
    2207 #: lite/includes/admin/class-settings.php:355 
    2208 #: pro/includes/admin/class-settings.php:430 
     2295#: lite/includes/admin/class-settings.php:356 
     2296#: pro/includes/admin/class-settings.php:431 
    22092297msgid "reCAPTCHA Secret key" 
    22102298msgstr "" 
    22112299 
    2212 #: lite/includes/admin/class-settings.php:364 
    2213 #: pro/includes/admin/class-settings.php:439 
     2300#: lite/includes/admin/class-settings.php:365 
     2301#: pro/includes/admin/class-settings.php:440 
    22142302msgid "Validation Messages" 
    22152303msgstr "" 
    22162304 
    2217 #: lite/includes/admin/class-settings.php:377 
    2218 #: pro/includes/admin/class-settings.php:452 
     2305#: lite/includes/admin/class-settings.php:378 
     2306#: pro/includes/admin/class-settings.php:453 
    22192307msgid "Website URL" 
    22202308msgstr "" 
    22212309 
    2222 #: lite/includes/admin/class-settings.php:393 
    2223 #: pro/includes/admin/class-settings.php:468 
     2310#: lite/includes/admin/class-settings.php:394 
     2311#: pro/includes/admin/class-settings.php:469 
    22242312msgid "Number" 
    22252313msgstr "" 
    22262314 
    2227 #: lite/includes/admin/class-settings.php:401 
    2228 #: pro/includes/admin/class-settings.php:476 
     2315#: lite/includes/admin/class-settings.php:402 
     2316#: pro/includes/admin/class-settings.php:477 
    22292317msgid "Confirm Value" 
    22302318msgstr "" 
    22312319 
    2232 #: lite/includes/admin/class-settings.php:410 
    2233 #: pro/includes/admin/class-settings.php:533 
     2320#: lite/includes/admin/class-settings.php:411 
     2321#: pro/includes/admin/class-settings.php:534 
    22342322msgid "Save General Settings" 
    22352323msgstr "" 
    22362324 
    2237 #: lite/includes/admin/class-settings.php:430 
    2238 #: pro/includes/admin/class-settings.php:623 
     2325#: lite/includes/admin/class-settings.php:431 
     2326#: pro/includes/admin/class-settings.php:624 
    22392327msgid "" 
    22402328"You do not have any marketing add-ons activated. You can head over to the <a " 
     
    22432331msgstr "" 
    22442332 
    2245 #: lite/includes/admin/class-settings.php:555 
    2246 #: lite/includes/admin/class-settings.php:559 
    2247 #: pro/includes/admin/class-settings.php:994 
    2248 #: pro/includes/admin/class-settings.php:998 
     2333#: lite/includes/admin/class-settings.php:556 
     2334#: lite/includes/admin/class-settings.php:560 
     2335#: pro/includes/admin/class-settings.php:995 
     2336#: pro/includes/admin/class-settings.php:999 
    22492337#: pro/includes/admin/entries/class-entries.php:1105 
    22502338#: pro/includes/admin/entries/class-entries.php:1427 
     
    22522340msgstr "" 
    22532341 
    2254 #: lite/wpforms-lite.php:86 pro/wpforms-pro.php:269 
     2342#: lite/wpforms-lite.php:87 pro/wpforms-pro.php:276 
    22552343msgid "Default Notification" 
    22562344msgstr "" 
    22572345 
    2258 #: lite/wpforms-lite.php:94 pro/wpforms-pro.php:284 
     2346#: lite/wpforms-lite.php:95 pro/wpforms-pro.php:291 
    22592347msgid "Send To Email Address" 
    22602348msgstr "" 
    22612349 
    2262 #: lite/wpforms-lite.php:97 pro/wpforms-pro.php:287 
     2350#: lite/wpforms-lite.php:98 pro/wpforms-pro.php:294 
    22632351msgid "" 
    22642352"Enter the email address to receive form entry notifications. For multiple " 
     
    22662354msgstr "" 
    22672355 
    2268 #: lite/wpforms-lite.php:113 pro/wpforms-pro.php:303 
     2356#: lite/wpforms-lite.php:114 pro/wpforms-pro.php:310 
    22692357msgid "CC" 
    22702358msgstr "" 
    22712359 
    2272 #: lite/wpforms-lite.php:129 pro/wpforms-pro.php:319 
     2360#: lite/wpforms-lite.php:130 pro/wpforms-pro.php:326 
    22732361msgid "Email Subject" 
    22742362msgstr "" 
    22752363 
    2276 #: lite/wpforms-lite.php:131 pro/wpforms-pro.php:321 
     2364#: lite/wpforms-lite.php:132 pro/wpforms-pro.php:328 
    22772365msgid "New Entry: " 
    22782366msgstr "" 
    22792367 
    2280 #: lite/wpforms-lite.php:144 pro/wpforms-pro.php:334 
     2368#: lite/wpforms-lite.php:145 pro/wpforms-pro.php:341 
    22812369msgid "From Name" 
    22822370msgstr "" 
    22832371 
    2284 #: lite/wpforms-lite.php:160 pro/wpforms-pro.php:350 
     2372#: lite/wpforms-lite.php:161 pro/wpforms-pro.php:357 
    22852373msgid "From Email" 
    22862374msgstr "" 
    22872375 
    2288 #: lite/wpforms-lite.php:176 pro/wpforms-pro.php:366 
     2376#: lite/wpforms-lite.php:177 pro/wpforms-pro.php:373 
    22892377msgid "Reply-To" 
    22902378msgstr "" 
    22912379 
    2292 #: lite/wpforms-lite.php:201 pro/wpforms-pro.php:391 
     2380#: lite/wpforms-lite.php:202 pro/wpforms-pro.php:398 
    22932381msgid "" 
    22942382"To display all form fields, use the <code>{all_fields}</code> Smart Tag." 
    22952383msgstr "" 
    22962384 
    2297 #: lite/wpforms-lite.php:438 
     2385#: lite/wpforms-lite.php:439 
    22982386msgid "is a PRO Feature" 
    22992387msgstr "" 
    23002388 
    2301 #: lite/wpforms-lite.php:439 
     2389#: lite/wpforms-lite.php:440 
    23022390msgid "" 
    23032391"We're sorry, %name% is not available on your plan.<br><br>Please upgrade to " 
     
    23052393msgstr "" 
    23062394 
    2307 #: lite/wpforms-lite.php:440 
     2395#: lite/wpforms-lite.php:441 
    23082396msgid "Upgrade to PRO" 
    23092397msgstr "" 
     
    24822570msgstr "" 
    24832571 
    2484 #: pro/includes/admin/class-settings.php:248 
     2572#: pro/includes/admin/class-settings.php:249 
    24852573msgid "Please enter a license key to verify." 
    24862574msgstr "" 
    24872575 
    2488 #: pro/includes/admin/class-settings.php:277 
     2576#: pro/includes/admin/class-settings.php:278 
    24892577msgid "License" 
    24902578msgstr "" 
    24912579 
    2492 #: pro/includes/admin/class-settings.php:278 
     2580#: pro/includes/admin/class-settings.php:279 
    24932581msgid "Your license key provides access to updates and Add-ons. " 
    24942582msgstr "" 
    24952583 
    2496 #: pro/includes/admin/class-settings.php:283 
     2584#: pro/includes/admin/class-settings.php:284 
    24972585msgid "License Key" 
    24982586msgstr "" 
    24992587 
    2500 #: pro/includes/admin/class-settings.php:287 
     2588#: pro/includes/admin/class-settings.php:288 
    25012589msgid "Verify Key" 
    25022590msgstr "" 
    25032591 
    2504 #: pro/includes/admin/class-settings.php:289 
     2592#: pro/includes/admin/class-settings.php:290 
    25052593msgid "Deactivate Key" 
    25062594msgstr "" 
    25072595 
    2508 #: pro/includes/admin/class-settings.php:297 
     2596#: pro/includes/admin/class-settings.php:298 
    25092597msgid "License Key Type" 
    25102598msgstr "" 
    25112599 
    2512 #: pro/includes/admin/class-settings.php:300 
     2600#: pro/includes/admin/class-settings.php:301 
    25132601msgid "Your license key type for this site is <strong>%s.</strong>" 
    25142602msgstr "" 
    25152603 
    2516 #: pro/includes/admin/class-settings.php:301 
     2604#: pro/includes/admin/class-settings.php:302 
    25172605msgid "Refresh Key" 
    25182606msgstr "" 
    25192607 
    2520 #: pro/includes/admin/class-settings.php:302 
     2608#: pro/includes/admin/class-settings.php:303 
    25212609msgid "" 
    25222610"If your license has been upgraded or is incorrect, you may force a refresh." 
    25232611msgstr "" 
    25242612 
    2525 #: pro/includes/admin/class-settings.php:484 
     2613#: pro/includes/admin/class-settings.php:485 
    25262614msgid "File Extension" 
    25272615msgstr "" 
    25282616 
    2529 #: pro/includes/admin/class-settings.php:492 
     2617#: pro/includes/admin/class-settings.php:493 
    25302618msgid "File Size" 
    25312619msgstr "" 
    25322620 
    2533 #: pro/includes/admin/class-settings.php:500 
    2534 #: pro/includes/admin/class-settings.php:508 
     2621#: pro/includes/admin/class-settings.php:501 
    25352622msgid "Time (12 hour)" 
    25362623msgstr "" 
    25372624 
    2538 #: pro/includes/admin/class-settings.php:516 
     2625#: pro/includes/admin/class-settings.php:509 
     2626msgid "Time (24 hour)" 
     2627msgstr "" 
     2628 
     2629#: pro/includes/admin/class-settings.php:517 
    25392630msgid "Payment Required" 
    25402631msgstr "" 
    25412632 
    2542 #: pro/includes/admin/class-settings.php:524 
     2633#: pro/includes/admin/class-settings.php:525 
    25432634#: pro/includes/fields/class-payment-credit-card.php:21 
    25442635msgid "Credit Card" 
    25452636msgstr "" 
    25462637 
    2547 #: pro/includes/admin/class-settings.php:566 
     2638#: pro/includes/admin/class-settings.php:567 
    25482639msgid "Settings updated." 
    25492640msgstr "" 
    25502641 
    2551 #: pro/includes/admin/class-settings.php:580 
     2642#: pro/includes/admin/class-settings.php:581 
    25522643msgid "Currency" 
    25532644msgstr "" 
    25542645 
    2555 #: pro/includes/admin/class-settings.php:592 
     2646#: pro/includes/admin/class-settings.php:593 
    25562647msgid "Determines which currency to use for payments." 
    25572648msgstr "" 
    25582649 
    2559 #: pro/includes/admin/class-settings.php:642 
     2650#: pro/includes/admin/class-settings.php:643 
    25602651msgid "Form(s) imported" 
    25612652msgstr "" 
    25622653 
    2563 #: pro/includes/admin/class-settings.php:651 
     2654#: pro/includes/admin/class-settings.php:652 
    25642655msgid "Form Import" 
    25652656msgstr "" 
    25662657 
    2567 #: pro/includes/admin/class-settings.php:656 
     2658#: pro/includes/admin/class-settings.php:657 
    25682659msgid "Select an export file." 
    25692660msgstr "" 
    25702661 
    2571 #: pro/includes/admin/class-settings.php:662 
     2662#: pro/includes/admin/class-settings.php:663 
    25722663msgid "Import" 
    25732664msgstr "" 
    25742665 
    2575 #: pro/includes/admin/class-settings.php:669 
     2666#: pro/includes/admin/class-settings.php:670 
    25762667msgid "Form Export" 
    25772668msgstr "" 
    25782669 
    2579 #: pro/includes/admin/class-settings.php:674 
     2670#: pro/includes/admin/class-settings.php:675 
    25802671msgid "" 
    25812672"Select form(s) to download an export file. This can be imported into another " 
     
    25832674msgstr "" 
    25842675 
    2585 #: pro/includes/admin/class-settings.php:689 
     2676#: pro/includes/admin/class-settings.php:690 
    25862677msgid "Export" 
    25872678msgstr "" 
    25882679 
    2589 #: pro/includes/admin/class-settings.php:696 
     2680#: pro/includes/admin/class-settings.php:697 
    25902681msgid "Form Template Export" 
    25912682msgstr "" 
    25922683 
    2593 #: pro/includes/admin/class-settings.php:703 
     2684#: pro/includes/admin/class-settings.php:704 
    25942685msgid "" 
    25952686"The following code can be used to register your custom form template. Copy " 
     
    25982689msgstr "" 
    25992690 
    2600 #: pro/includes/admin/class-settings.php:704 
     2691#: pro/includes/admin/class-settings.php:705 
    26012692msgid "" 
    26022693"For more information <a href=\"%s\" target=\"blank\" rel=\"noopener " 
     
    26042695msgstr "" 
    26052696 
    2606 #: pro/includes/admin/class-settings.php:708 
     2697#: pro/includes/admin/class-settings.php:709 
    26072698msgid "" 
    26082699"Select a form to generate PHP code that can be used to register a custom " 
     
    26102701msgstr "" 
    26112702 
    2612 #: pro/includes/admin/class-settings.php:723 
     2703#: pro/includes/admin/class-settings.php:724 
    26132704msgid "Generate template code" 
    26142705msgstr "" 
    26152706 
    2616 #: pro/includes/admin/class-settings.php:788 
     2707#: pro/includes/admin/class-settings.php:789 
    26172708msgid "Please upload a valid .json form export file." 
    26182709msgstr "" 
    26192710 
    2620 #: pro/includes/admin/class-settings.php:788 
     2711#: pro/includes/admin/class-settings.php:789 
    26212712#: pro/includes/admin/entries/class-entries-export.php:305 
    26222713msgid "Error" 
     
    29803071msgstr "" 
    29813072 
     3073#: pro/includes/class-conditional-logic-fields.php:95 
     3074msgid "Conditionals" 
     3075msgstr "" 
     3076 
     3077#: pro/includes/class-conditional-logic-fields.php:364 
     3078msgid "Entry Notification stopped by conditional logic" 
     3079msgstr "" 
     3080 
    29823081#: pro/includes/fields/class-address.php:21 
    29833082#: pro/includes/templates/class-order.php:57 
     
    29863085 
    29873086#: pro/includes/fields/class-address.php:28 
     3087#: pro/includes/fields/class-phone.php:90 
    29883088msgid "US" 
    29893089msgstr "" 
     
    30183118 
    30193119#: pro/includes/fields/class-address.php:38 
     3120#: pro/includes/fields/class-phone.php:91 
    30203121msgid "International" 
    30213122msgstr "" 
     
    31143215msgstr "" 
    31153216 
    3116 #: pro/includes/fields/class-file-upload.php:149 
     3217#: pro/includes/fields/class-file-upload.php:152 
    31173218msgid "Allowed File Extensions" 
    31183219msgstr "" 
    31193220 
    3120 #: pro/includes/fields/class-file-upload.php:150 
     3221#: pro/includes/fields/class-file-upload.php:153 
    31213222msgid "Enter the extensions you would like to allow, comma separated." 
    31223223msgstr "" 
    31233224 
    3124 #: pro/includes/fields/class-file-upload.php:175 
     3225#: pro/includes/fields/class-file-upload.php:178 
    31253226msgid "Max File Size" 
    31263227msgstr "" 
    31273228 
    3128 #: pro/includes/fields/class-file-upload.php:176 
     3229#: pro/includes/fields/class-file-upload.php:179 
    31293230msgid "" 
    31303231"Enter the max file size, in megabytyes, to allow. If left blank, the value " 
     
    31323233msgstr "" 
    31333234 
    3134 #: pro/includes/fields/class-file-upload.php:224 
     3235#: pro/includes/fields/class-file-upload.php:227 
    31353236msgid "Store file in WordPress Media Library" 
    31363237msgstr "" 
    31373238 
    3138 #: pro/includes/fields/class-file-upload.php:225 
     3239#: pro/includes/fields/class-file-upload.php:228 
    31393240msgid "" 
    31403241"Check this option to store the final uploaded file in the WordPress Media " 
     
    31423243msgstr "" 
    31433244 
    3144 #: pro/includes/fields/class-file-upload.php:312 
     3245#: pro/includes/fields/class-file-upload.php:314 
    31453246msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini." 
    31463247msgstr "" 
    31473248 
    3148 #: pro/includes/fields/class-file-upload.php:313 
     3249#: pro/includes/fields/class-file-upload.php:315 
    31493250msgid "" 
    31503251"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " 
     
    31523253msgstr "" 
    31533254 
    3154 #: pro/includes/fields/class-file-upload.php:314 
     3255#: pro/includes/fields/class-file-upload.php:316 
    31553256msgid "The uploaded file was only partially uploaded." 
    31563257msgstr "" 
    31573258 
    3158 #: pro/includes/fields/class-file-upload.php:315 
     3259#: pro/includes/fields/class-file-upload.php:317 
    31593260msgid "No file was uploaded." 
    31603261msgstr "" 
    31613262 
    3162 #: pro/includes/fields/class-file-upload.php:317 
     3263#: pro/includes/fields/class-file-upload.php:319 
    31633264msgid "Missing a temporary folder." 
    31643265msgstr "" 
    31653266 
    3166 #: pro/includes/fields/class-file-upload.php:318 
     3267#: pro/includes/fields/class-file-upload.php:320 
    31673268msgid "Failed to write file to disk." 
    31683269msgstr "" 
    31693270 
    3170 #: pro/includes/fields/class-file-upload.php:319 
     3271#: pro/includes/fields/class-file-upload.php:321 
    31713272msgid "File upload stopped by extension." 
    31723273msgstr "" 
    31733274 
    3174 #: pro/includes/fields/class-file-upload.php:321 
     3275#: pro/includes/fields/class-file-upload.php:323 
    31753276msgid "File upload error. " 
    31763277msgstr "" 
    31773278 
    3178 #: pro/includes/fields/class-file-upload.php:340 
     3279#: pro/includes/fields/class-file-upload.php:342 
    31793280msgid "File exceeds max size allowed" 
    31803281msgstr "" 
    31813282 
    3182 #: pro/includes/fields/class-file-upload.php:356 
     3283#: pro/includes/fields/class-file-upload.php:358 
    31833284msgid "File must have an extension." 
    31843285msgstr "" 
     
    36123713msgstr "" 
    36133714 
    3614 #: pro/wpforms-pro.php:188 
     3715#: pro/wpforms-pro.php:195 
    36153716msgid "Disable storing entry information in WordPress" 
    36163717msgstr "" 
    36173718 
    3618 #: pro/wpforms-pro.php:249 
     3719#: pro/wpforms-pro.php:256 
    36193720msgid "Add New Notification" 
    36203721msgstr "" 
    36213722 
    3622 #: pro/wpforms-pro.php:404 
     3723#: pro/wpforms-pro.php:411 
    36233724msgid "Send" 
    36243725msgstr "" 
    36253726 
    3626 #: pro/wpforms-pro.php:405 
     3727#: pro/wpforms-pro.php:412 
    36273728msgid "Don't send" 
    36283729msgstr "" 
    36293730 
    3630 #: pro/wpforms-pro.php:407 
     3731#: pro/wpforms-pro.php:414 
    36313732msgid "this notification if" 
    36323733msgstr "" 
    36333734 
    3634 #: pro/wpforms-pro.php:408 
     3735#: pro/wpforms-pro.php:415 
    36353736msgid "Email notifications" 
    36363737msgstr "" 
    36373738 
    3638 #: pro/wpforms-pro.php:411 
     3739#: pro/wpforms-pro.php:418 
    36393740msgid "" 
    36403741"Install the <a href=\"%s\">Conditional Logic add-on</a> to enable " 
     
    36423743msgstr "" 
    36433744 
     3745#: pro/wpforms-pro.php:461 
     3746msgid "" 
     3747"Conditional logic functionality is now included in the core WPForms plugin! " 
     3748"The WPForms Conditional Logic addon can be removed without affecting your " 
     3749"forms. For more details <a href=\"%s\" target=\"_blank\" rel=\"noopener " 
     3750"noreferrer\">read our annoucement</a>." 
     3751msgstr "" 
     3752 
    36443753#: wpforms.php:54 
    36453754msgid "Please deactivate WPForms Lite before activating WPForms" 
    36463755msgstr "" 
    36473756 
    3648 #. #-#-#-#-#  wpforms.pot (WPForms 1.3.7.3)  #-#-#-#-# 
     3757#. #-#-#-#-#  wpforms.pot (WPForms 1.3.8)  #-#-#-#-# 
    36493758#. Plugin URI of the plugin/theme 
    3650 #. #-#-#-#-#  wpforms.pot (WPForms 1.3.7.3)  #-#-#-#-# 
     3759#. #-#-#-#-#  wpforms.pot (WPForms 1.3.8)  #-#-#-#-# 
    36513760#. Author URI of the plugin/theme 
    36523761msgid "https://wpforms.com" 
  • wpforms-lite/trunk/lite/assets/js/admin-builder-lite.js

    r1672689 r1678654  
    8282                icon: 'fa fa-lock', 
    8383                content: message, 
    84                 confirmButton: wpforms_builder_lite.upgrade_button, 
    85                 columnClass: 'modal-wide', 
    86                 confirm: function () { 
    87                     window.open(wpforms_builder_lite.upgrade_url,'_blank'); 
    88                 }, 
     84                buttons: { 
     85                    confirm: { 
     86                        text: wpforms_builder_lite.upgrade_button, 
     87                        btnClass: 'btn-confirm', 
     88                        keys: ['enter'], 
     89                        action: function () { 
     90                            window.open(wpforms_builder_lite.upgrade_url,'_blank'); 
     91                        } 
     92                    }, 
     93                    cancel: { 
     94                        text: wpforms_builder.ok 
     95                    } 
     96                } 
    8997            }); 
    9098        }, 
  • wpforms-lite/trunk/lite/includes/admin/class-settings.php

    r1646716 r1678654  
    213213                    $this->options['validation-url']             = ! empty( $_POST['validation-url'] ) ? sanitize_text_field( $_POST['validation-url'] ) : ''; 
    214214                    $this->options['validation-email']           = ! empty( $_POST['validation-email'] ) ? sanitize_text_field( $_POST['validation-email'] ) : ''; 
     215                    $this->options['validation-number']          = ! empty( $_POST['validation-number'] ) ? sanitize_text_field( $_POST['validation-number'] ) : ''; 
    215216                    $this->options['validation-confirm']         = ! empty( $_POST['validation-confirm'] ) ? sanitize_text_field( $_POST['validation-confirm'] ) : ''; 
    216217 
  • wpforms-lite/trunk/lite/wpforms-lite.php

    r1672689 r1678654  
    448448     * Display other providers available with paid license. 
    449449     * 
    450      * @since 1.3.4 
     450     * @since 1.3.8 
    451451     */ 
    452452    public function builder_provider_sidebar() { 
     
    488488        } 
    489489    } 
     490 
    490491 
    491492    /** 
  • wpforms-lite/trunk/readme.txt

    r1672689 r1678654  
    33Tags: contact form, contact form plugin, forms, form builder, custom form, contact button, contact me, custom contact form, form manager, form, forms builder, forms creator, captcha, recaptcha, Akismet, email form, web form, feedback form, payment form, survey form, donation form, email submit form, message form, mailchimp, mailchimp form, aweber, aweber form, paypal, paypal form, stripe, stripe form, getresponse, getresponse form, email subscription, contact form widget, user registration form, wordpress registration, wordpress login form 
    44Requires at least: 4.5 
    5 Tested up to: 4.7.4 
     5Tested up to: 4.8 
    66Stable tag: trunk 
    77License: GNU General Public License v2.0 or later 
     
    4545Because every other WordPress contact form builder plugin requires you to build your contact form from scratch. The truth is it's often not necessary to create a contact form completely from scratch unless you really want to. 
    4646 
    47 Whether you’re looking to create a simple contact form, request a quote form, donation form, payment order form, or a subscription form, we have a form template for you inside our contact form builder. 
     47Whether you’re looking to create a simple contact form, request a quote form, donation form, payment order form, or a subscription form, we have a form template for you inside our contact form builder. 
    4848 
    4949WPForms comes with <a href="https://wpforms.com/features/form-templates/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">pre-built form templates</a> to help you save time. You can add, remove, or re-arrange fields as necessary. 
     
    210210== Changelog == 
    211211 
     212= 1.3.8 = 
     213- Changed: Available conditional logic rules/functionality with Providers have been updated 
     214- Changed: Updated form builder modals (jquery-confirm.js) 
     215- Changed: Many Form Builder performance enhancements 
     216- Fixed: Number field validation message not saving 
     217- Fixed: Email confirmation setting not displaying correctly with Small field size 
     218 
    212219= 1.3.7.4 = 
    213 - Add: Marketing tab in the form builder shows all possible providers. 
     220- Added: Marketing tab in the form builder shows all possible providers. 
    214221 
    215222= 1.3.7.3 = 
     
    230237- Added: Custom field validation messages (see WPForms Settings page) 
    231238- Added: Bulk add choices for Checkbox, Multiple Choice, and Dropdown fields 
    232 - Addded: Filter to allow email notifications to include empty fields, `wpforms_email_display_empty_fields` 
     239- Added: Filter to allow email notifications to include empty fields, `wpforms_email_display_empty_fields` 
    233240- Added: Field CSS layout selector 
    234241- Changed: Leverage `wp_json_encode` instead of native PHP function 
  • wpforms-lite/trunk/wpforms.php

    r1672689 r1678654  
    66 * Author:      WPForms 
    77 * Author URI:  https://wpforms.com 
    8  * Version:     1.3.7.4 
     8 * Version:     1.3.8 
    99 * Text Domain: wpforms 
    1010 * Domain Path: languages 
     
    8282     * @var sting 
    8383     */ 
    84     public $version = '1.3.7.4'; 
     84    public $version = '1.3.8'; 
    8585 
    8686    /** 
     
    172172            self::$instance->constants(); 
    173173            self::$instance->load_textdomain(); 
     174            self::$instance->conditional_logic_addon_check(); 
    174175            self::$instance->includes(); 
    175176 
     
    184185        } 
    185186        return self::$instance; 
     187    } 
     188 
     189    /** 
     190     * Setup plugin constants. 
     191     * 
     192     * @since 1.0.0 
     193     */ 
     194    private function constants() { 
     195 
     196        // Plugin version 
     197        if ( ! defined( 'WPFORMS_VERSION' ) ) { 
     198            define( 'WPFORMS_VERSION', $this->version ); 
     199        } 
     200 
     201        // Plugin Folder Path 
     202        if ( ! defined( 'WPFORMS_PLUGIN_DIR' ) ) { 
     203            define( 'WPFORMS_PLUGIN_DIR', plugin_dir_path( __FILE__ ) ); 
     204        } 
     205 
     206        // Plugin Folder URL 
     207        if ( ! defined( 'WPFORMS_PLUGIN_URL' ) ) { 
     208            define( 'WPFORMS_PLUGIN_URL', plugin_dir_url( __FILE__ ) ); 
     209        } 
     210 
     211        // Plugin Root File 
     212        if ( ! defined( 'WPFORMS_PLUGIN_FILE' ) ) { 
     213            define( 'WPFORMS_PLUGIN_FILE', __FILE__ ); 
     214        } 
     215    } 
     216 
     217    /** 
     218     * Loads the plugin language files. 
     219     * 
     220     * @since 1.0.0 
     221     */ 
     222    public function load_textdomain() { 
     223 
     224        load_plugin_textdomain( 'wpforms', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' ); 
     225    } 
     226 
     227    /** 
     228     * Check to see if the conditional logic addon is running, if so then 
     229     * deactivate the plugin to prevent conflicts. 
     230     * 
     231     * @since 1.3.8 
     232     */ 
     233    private function conditional_logic_addon_check() { 
     234 
     235        if ( function_exists( 'wpforms_conditional_logic' ) ) { 
     236            require_once( ABSPATH . 'wp-admin/includes/plugin.php' ); 
     237            require_once( ABSPATH . 'wp-includes/pluggable.php' ); 
     238            deactivate_plugins( 'wpforms-conditional-logic/wpforms-conditional-logic.php' ); 
     239            $url = esc_url_raw( remove_query_arg( 'wpforms-test' ) ); 
     240            wp_redirect( $url ); 
     241            exit; 
     242        } 
    186243    } 
    187244 
     
    206263        require_once WPFORMS_PLUGIN_DIR . 'includes/class-widget.php'; 
    207264        require_once WPFORMS_PLUGIN_DIR . 'includes/class-preview.php'; 
     265        require_once WPFORMS_PLUGIN_DIR . 'includes/class-conditional-logic-core.php'; 
    208266        require_once WPFORMS_PLUGIN_DIR . 'includes/emails/class-emails.php'; 
    209267        require_once WPFORMS_PLUGIN_DIR . 'includes/integrations.php'; 
     
    239297        do_action( 'wpforms_loaded' ); 
    240298    } 
    241  
    242     /** 
    243      * Setup plugin constants. 
    244      * 
    245      * @since 1.0.0 
    246      */ 
    247     private function constants() { 
    248  
    249         // Plugin version 
    250         if ( ! defined( 'WPFORMS_VERSION' ) ) { 
    251             define( 'WPFORMS_VERSION', $this->version ); 
    252         } 
    253  
    254         // Plugin Folder Path 
    255         if ( ! defined( 'WPFORMS_PLUGIN_DIR' ) ) { 
    256             define( 'WPFORMS_PLUGIN_DIR', plugin_dir_path( __FILE__ ) ); 
    257         } 
    258  
    259         // Plugin Folder URL 
    260         if ( ! defined( 'WPFORMS_PLUGIN_URL' ) ) { 
    261             define( 'WPFORMS_PLUGIN_URL', plugin_dir_url( __FILE__ ) ); 
    262         } 
    263  
    264         // Plugin Root File 
    265         if ( ! defined( 'WPFORMS_PLUGIN_FILE' ) ) { 
    266             define( 'WPFORMS_PLUGIN_FILE', __FILE__ ); 
    267         } 
    268     } 
    269  
    270     /** 
    271      * Loads the plugin language files. 
    272      * 
    273      * @since 1.0.0 
    274      */ 
    275     public function load_textdomain() { 
    276  
    277         load_plugin_textdomain( 'wpforms', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' ); 
    278     } 
    279299} 
    280300 
Note: See TracChangeset for help on using the changeset viewer.