Elementor Essential Addons - Version 4.2.1

Version Description

  • 20/08/2020 =
  • Added: Google reCAPTCHA option in EA Login | Register Form
  • Added: Compatibility with WooCommerce 4.4.1
  • Fixed: User Role not setting correctly in EA Login | Register Form
  • Few minor bugfix and improvements
Download this release

Release Info

Developer re_enter_rupok
Plugin Icon 128x128 Elementor Essential Addons
Version 4.2.1
Comparing to
See all releases

Code changes from version 4.2.0 to 4.2.1

assets/front-end/css/view/login-register.css CHANGED
@@ -224,13 +224,13 @@
224
  }
225
  .eael-lr-form-wrapper .lr-form-header.header-inline .form-logo {
226
  -webkit-box-flex: 0;
227
- -ms-flex: 0 0 30%;
228
- flex: 0 0 30%;
229
  }
230
  .eael-lr-form-wrapper .lr-form-header.header-inline .form-dsc {
231
  -webkit-box-flex: 0;
232
- -ms-flex: 0 0 70%;
233
- flex: 0 0 70%;
234
  padding-left: 15px;
235
  }
236
  .eael-lr-form-wrapper .lr-form-header img {
@@ -283,6 +283,9 @@
283
  margin-left: 5px;
284
  display: inline-block;
285
  }
 
 
 
286
  .eael-lr-form-wrapper .eael-lr-footer {
287
  display: -webkit-box;
288
  display: -ms-flexbox;
224
  }
225
  .eael-lr-form-wrapper .lr-form-header.header-inline .form-logo {
226
  -webkit-box-flex: 0;
227
+ -ms-flex: 0 0 auto;
228
+ flex: 0 0 auto;
229
  }
230
  .eael-lr-form-wrapper .lr-form-header.header-inline .form-dsc {
231
  -webkit-box-flex: 0;
232
+ -ms-flex: 0 0 auto;
233
+ flex: 0 0 auto;
234
  padding-left: 15px;
235
  }
236
  .eael-lr-form-wrapper .lr-form-header img {
283
  margin-left: 5px;
284
  display: inline-block;
285
  }
286
+ .eael-lr-form-wrapper .eael-recaptcha-wrapper {
287
+ margin-bottom: 1rem;
288
+ }
289
  .eael-lr-form-wrapper .eael-lr-footer {
290
  display: -webkit-box;
291
  display: -ms-flexbox;
assets/front-end/css/view/login-register.min.css CHANGED
@@ -1 +1 @@
1
- .eael-w-10{width:10%}.eael-w-20{width:20%}.eael-w-25{width:25%}.eael-w-30{width:30%}.eael-w-33{width:33%}.eael-w-40{width:40%}.eael-w-50{width:50%}.eael-w-60{width:60%}.eael-w-66{width:66%}.eael-w-70{width:70%}.eael-w-75{width:75%}.eael-w-80{width:80%}.eael-w-90{width:90%}.eael-w-100{width:100%}.d-none{display:none}.d-ib{display:inline-block}.mr-auto{margin-right:auto}.ml-auto{margin-left:auto}.fd-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.fd-col{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.eael-lr-form-wrapper{width:370px;margin:0 auto;background-color:#fff;padding:35px;border-radius:10px;-webkit-box-shadow:0 0 37.5px 14px rgba(2,8,53,.06);box-shadow:0 0 37.5px 14px rgba(2,8,53,.06)}.eael-lr-form-wrapper.style-2{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;padding:0;border-radius:0}@media(max-width: 767px){.eael-lr-form-wrapper.style-2{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.eael-lr-form-wrapper.style-2 .lr-form-illustration{width:50%;background-repeat:no-repeat;background-size:cover;background-position:center;position:relative;z-index:1}@media(max-width: 767px){.eael-lr-form-wrapper.style-2 .lr-form-illustration{padding-bottom:200px}}.eael-lr-form-wrapper.style-2 .lr-form-wrapper{padding:35px;width:370px}.eael-lr-form-wrapper .eael-lr-form-group{margin-bottom:1rem}.eael-lr-form-wrapper .eael-lr-form-group label{display:inline-block;margin-bottom:.5rem}.eael-lr-form-wrapper .eael-lr-form-group label.mark-required{position:relative}.eael-lr-form-wrapper .eael-lr-form-group label.mark-required::after{content:" *";color:red;position:absolute;line-height:0;top:17px;right:-10px}.eael-lr-form-wrapper .eael-lr-form-group .eael-lr-form-control{display:block;width:100%;padding:15px;font-size:1rem;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #cfcfe8;border-radius:3px;-webkit-transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;-o-transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;outline:none}.eael-lr-form-wrapper .eael-forever-forget{display:-webkit-box;display:-ms-flexbox;display:flex;font-size:.9em}.eael-lr-form-wrapper .eael-forever-forget .forget-menot{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.eael-lr-form-wrapper .eael-forever-forget .forget-menot label{margin:0 0 0 10px}.eael-lr-form-wrapper .eael-forever-forget .forget-menot,.eael-lr-form-wrapper .eael-forever-forget .forget-pass{-webkit-box-flex:1;-ms-flex:1;flex:1;margin:0}.eael-lr-form-wrapper .eael-forever-forget .forget-pass{text-align:right}.eael-lr-form-wrapper .eael-lr-password-wrapper{position:relative}.eael-lr-form-wrapper .eael-lr-password-wrapper button{position:absolute;top:0;right:0;height:100%;background:transparent;border:none;color:red}.eael-lr-form-wrapper .eael-lr-btn{background-color:#744ffb;color:#fff;position:relative;overflow:hidden;display:inline-block;vertical-align:top;text-decoration:none;border:none;-webkit-transition:all .2s;-o-transition:all .2s;transition:all .2s;padding:15px;width:130px}.eael-lr-form-wrapper .eael-lr-btn.eael-lr-btn-block{display:block}.eael-lr-form-wrapper .eael-lr-btn.eael-lr-btn-inline{display:inline-block}.eael-lr-form-wrapper .eael-lr-link{display:inline-block}.eael-lr-form-wrapper .eael-sign-wrapper{text-align:center;padding:20px 0 0}.eael-lr-form-wrapper .lr-form-header.header-inline{display:-webkit-box;display:-ms-flexbox;display:flex}.eael-lr-form-wrapper .lr-form-header.header-inline .form-logo{-webkit-box-flex:0;-ms-flex:0 0 30%;flex:0 0 30%}.eael-lr-form-wrapper .lr-form-header.header-inline .form-dsc{-webkit-box-flex:0;-ms-flex:0 0 70%;flex:0 0 70%;padding-left:15px}.eael-lr-form-wrapper .lr-form-header img{width:100px}.eael-lr-form-wrapper .lr-form-header h4{font-size:18px;font-weight:500;margin-top:0}.eael-lr-form-wrapper .lr-form-header p{font-size:14px}.eael-lr-form-wrapper .eael-form-msg{display:block;width:100%;margin-top:1rem;font-size:1rem;padding:10px 15px;border-top-right-radius:8px;border-bottom-right-radius:8px}.eael-lr-form-wrapper .eael-form-msg.invalid{color:#721c24;background-color:#f8d7da;border-left:3px solid red}.eael-lr-form-wrapper .eael-form-msg.valid{color:#155724;background-color:#d4edda;border-left:3px solid green}.eael-lr-form-wrapper ul,.eael-lr-form-wrapper ol,.eael-lr-form-wrapper .eael-form-msg ul,.eael-lr-form-wrapper .eael-form-msg ol{margin:0;padding-left:30px}.eael-lr-form-wrapper ul li:not(:last-child),.eael-lr-form-wrapper ol li:not(:last-child),.eael-lr-form-wrapper .eael-form-msg ul li:not(:last-child),.eael-lr-form-wrapper .eael-form-msg ol li:not(:last-child){padding-bottom:10px}.eael-lr-form-wrapper .eael_accept_tnc_wrap{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:1rem;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.eael-lr-form-wrapper .eael_accept_tnc_wrap .eael-lr-tnc-link{margin-left:5px;display:inline-block}.eael-lr-form-wrapper .eael-lr-footer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}@supports(-webkit-appearance: none) or (-moz-appearance: none){.eael-lr-form-wrapper input[type=checkbox]{--active: #275EFE;--active-inner: #fff;--focus: 0;--border: #b7b7b7;--border-hover: var(--active);--background: #fff;--disabled: #F6F8FF;--disabled-inner: #E1E6F9;-webkit-appearance:none;-moz-appearance:none;height:18px;outline:none;display:inline-block;vertical-align:top;position:relative;top:2px;margin:0;cursor:pointer;border:2px solid var(--bc, var(--border));background:var(--b, var(--background));-webkit-transition:background .3s,border-color .3s,-webkit-box-shadow .2s;transition:background .3s,border-color .3s,-webkit-box-shadow .2s;-o-transition:background .3s,border-color .3s,box-shadow .2s;transition:background .3s,border-color .3s,box-shadow .2s;transition:background .3s,border-color .3s,box-shadow .2s,-webkit-box-shadow .2s}.eael-lr-form-wrapper input[type=checkbox]:after{content:"";display:block;left:0;top:0;position:absolute;-webkit-transition:opacity var(--d-o, 0.2s),-webkit-transform var(--d-t, 0.3s) var(--d-t-e, ease);transition:opacity var(--d-o, 0.2s),-webkit-transform var(--d-t, 0.3s) var(--d-t-e, ease);-o-transition:transform var(--d-t, 0.3s) var(--d-t-e, ease),opacity var(--d-o, 0.2s);transition:transform var(--d-t, 0.3s) var(--d-t-e, ease),opacity var(--d-o, 0.2s);transition:transform var(--d-t, 0.3s) var(--d-t-e, ease),opacity var(--d-o, 0.2s),-webkit-transform var(--d-t, 0.3s) var(--d-t-e, ease)}.eael-lr-form-wrapper input[type=checkbox]:before{content:none}.eael-lr-form-wrapper input[type=checkbox]:checked{--b: var(--active);--bc: var(--active);--d-o: .3s;--d-t: .6s;--d-t-e: cubic-bezier(.2, .85, .32, 1.2)}.eael-lr-form-wrapper input[type=checkbox]:checked:before{content:none}.eael-lr-form-wrapper input[type=checkbox]:disabled{--b: var(--disabled);cursor:not-allowed;opacity:.9}.eael-lr-form-wrapper input[type=checkbox]:disabled:checked{--b: var(--disabled-inner);--bc: var(--border)}.eael-lr-form-wrapper input[type=checkbox]:disabled+label{cursor:not-allowed}.eael-lr-form-wrapper input[type=checkbox]:hover:not(:checked):not(:disabled){--bc: var(--border-hover)}.eael-lr-form-wrapper input[type=checkbox]:focus{-webkit-box-shadow:0 0 0 var(--focus);box-shadow:0 0 0 var(--focus)}.eael-lr-form-wrapper input[type=checkbox]:not(#eael_accept_tnc){width:18px}.eael-lr-form-wrapper input[type=checkbox]:not(#eael_accept_tnc):after{opacity:var(--o, 0)}.eael-lr-form-wrapper input[type=checkbox]:not(#eael_accept_tnc):checked{--o: 1}.eael-lr-form-wrapper input[type=checkbox]+label{font-size:14px;line-height:21px;display:inline-block;vertical-align:top;cursor:pointer;margin-left:4px}.eael-lr-form-wrapper input[type=checkbox]:not(#eael_accept_tnc){border-radius:3px}.eael-lr-form-wrapper input[type=checkbox]:not(#eael_accept_tnc):after{width:5px;height:9px;border:2px solid var(--active-inner);border-top:0;border-left:0;left:5px;top:1px;-webkit-transform:rotate(var(--r, 20deg));-ms-transform:rotate(var(--r, 20deg));transform:rotate(var(--r, 20deg))}.eael-lr-form-wrapper input[type=checkbox]:not(#eael_accept_tnc):checked{--r: 43deg}.eael-lr-form-wrapper input[type=checkbox]#eael_accept_tnc{width:31px;border-radius:11px;border-width:1px}.eael-lr-form-wrapper input[type=checkbox]#eael_accept_tnc:after{left:2px;top:2px;border-radius:50%;width:12px;height:12px;background:var(--ab, var(--border));-webkit-transform:translateX(var(--x, 0));-ms-transform:translateX(var(--x, 0));transform:translateX(var(--x, 0))}.eael-lr-form-wrapper input[type=checkbox]#eael_accept_tnc:checked{--ab: var(--active-inner);--x: 13px}.eael-lr-form-wrapper input[type=checkbox]#eael_accept_tnc:disabled:not(:checked):after{opacity:.6}}
1
+ .eael-w-10{width:10%}.eael-w-20{width:20%}.eael-w-25{width:25%}.eael-w-30{width:30%}.eael-w-33{width:33%}.eael-w-40{width:40%}.eael-w-50{width:50%}.eael-w-60{width:60%}.eael-w-66{width:66%}.eael-w-70{width:70%}.eael-w-75{width:75%}.eael-w-80{width:80%}.eael-w-90{width:90%}.eael-w-100{width:100%}.d-none{display:none}.d-ib{display:inline-block}.mr-auto{margin-right:auto}.ml-auto{margin-left:auto}.fd-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.fd-col{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.eael-lr-form-wrapper{width:370px;margin:0 auto;background-color:#fff;padding:35px;border-radius:10px;-webkit-box-shadow:0 0 37.5px 14px rgba(2,8,53,.06);box-shadow:0 0 37.5px 14px rgba(2,8,53,.06)}.eael-lr-form-wrapper.style-2{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;padding:0;border-radius:0}@media(max-width: 767px){.eael-lr-form-wrapper.style-2{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.eael-lr-form-wrapper.style-2 .lr-form-illustration{width:50%;background-repeat:no-repeat;background-size:cover;background-position:center;position:relative;z-index:1}@media(max-width: 767px){.eael-lr-form-wrapper.style-2 .lr-form-illustration{padding-bottom:200px}}.eael-lr-form-wrapper.style-2 .lr-form-wrapper{padding:35px;width:370px}.eael-lr-form-wrapper .eael-lr-form-group{margin-bottom:1rem}.eael-lr-form-wrapper .eael-lr-form-group label{display:inline-block;margin-bottom:.5rem}.eael-lr-form-wrapper .eael-lr-form-group label.mark-required{position:relative}.eael-lr-form-wrapper .eael-lr-form-group label.mark-required::after{content:" *";color:red;position:absolute;line-height:0;top:17px;right:-10px}.eael-lr-form-wrapper .eael-lr-form-group .eael-lr-form-control{display:block;width:100%;padding:15px;font-size:1rem;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #cfcfe8;border-radius:3px;-webkit-transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;-o-transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;outline:none}.eael-lr-form-wrapper .eael-forever-forget{display:-webkit-box;display:-ms-flexbox;display:flex;font-size:.9em}.eael-lr-form-wrapper .eael-forever-forget .forget-menot{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.eael-lr-form-wrapper .eael-forever-forget .forget-menot label{margin:0 0 0 10px}.eael-lr-form-wrapper .eael-forever-forget .forget-menot,.eael-lr-form-wrapper .eael-forever-forget .forget-pass{-webkit-box-flex:1;-ms-flex:1;flex:1;margin:0}.eael-lr-form-wrapper .eael-forever-forget .forget-pass{text-align:right}.eael-lr-form-wrapper .eael-lr-password-wrapper{position:relative}.eael-lr-form-wrapper .eael-lr-password-wrapper button{position:absolute;top:0;right:0;height:100%;background:transparent;border:none;color:red}.eael-lr-form-wrapper .eael-lr-btn{background-color:#744ffb;color:#fff;position:relative;overflow:hidden;display:inline-block;vertical-align:top;text-decoration:none;border:none;-webkit-transition:all .2s;-o-transition:all .2s;transition:all .2s;padding:15px;width:130px}.eael-lr-form-wrapper .eael-lr-btn.eael-lr-btn-block{display:block}.eael-lr-form-wrapper .eael-lr-btn.eael-lr-btn-inline{display:inline-block}.eael-lr-form-wrapper .eael-lr-link{display:inline-block}.eael-lr-form-wrapper .eael-sign-wrapper{text-align:center;padding:20px 0 0}.eael-lr-form-wrapper .lr-form-header.header-inline{display:-webkit-box;display:-ms-flexbox;display:flex}.eael-lr-form-wrapper .lr-form-header.header-inline .form-logo{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.eael-lr-form-wrapper .lr-form-header.header-inline .form-dsc{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;padding-left:15px}.eael-lr-form-wrapper .lr-form-header img{width:100px}.eael-lr-form-wrapper .lr-form-header h4{font-size:18px;font-weight:500;margin-top:0}.eael-lr-form-wrapper .lr-form-header p{font-size:14px}.eael-lr-form-wrapper .eael-form-msg{display:block;width:100%;margin-top:1rem;font-size:1rem;padding:10px 15px;border-top-right-radius:8px;border-bottom-right-radius:8px}.eael-lr-form-wrapper .eael-form-msg.invalid{color:#721c24;background-color:#f8d7da;border-left:3px solid red}.eael-lr-form-wrapper .eael-form-msg.valid{color:#155724;background-color:#d4edda;border-left:3px solid green}.eael-lr-form-wrapper ul,.eael-lr-form-wrapper ol,.eael-lr-form-wrapper .eael-form-msg ul,.eael-lr-form-wrapper .eael-form-msg ol{margin:0;padding-left:30px}.eael-lr-form-wrapper ul li:not(:last-child),.eael-lr-form-wrapper ol li:not(:last-child),.eael-lr-form-wrapper .eael-form-msg ul li:not(:last-child),.eael-lr-form-wrapper .eael-form-msg ol li:not(:last-child){padding-bottom:10px}.eael-lr-form-wrapper .eael_accept_tnc_wrap{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:1rem;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.eael-lr-form-wrapper .eael_accept_tnc_wrap .eael-lr-tnc-link{margin-left:5px;display:inline-block}.eael-lr-form-wrapper .eael-recaptcha-wrapper{margin-bottom:1rem}.eael-lr-form-wrapper .eael-lr-footer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}@supports(-webkit-appearance: none) or (-moz-appearance: none){.eael-lr-form-wrapper input[type=checkbox]{--active: #275EFE;--active-inner: #fff;--focus: 0;--border: #b7b7b7;--border-hover: var(--active);--background: #fff;--disabled: #F6F8FF;--disabled-inner: #E1E6F9;-webkit-appearance:none;-moz-appearance:none;height:18px;outline:none;display:inline-block;vertical-align:top;position:relative;top:2px;margin:0;cursor:pointer;border:2px solid var(--bc, var(--border));background:var(--b, var(--background));-webkit-transition:background .3s,border-color .3s,-webkit-box-shadow .2s;transition:background .3s,border-color .3s,-webkit-box-shadow .2s;-o-transition:background .3s,border-color .3s,box-shadow .2s;transition:background .3s,border-color .3s,box-shadow .2s;transition:background .3s,border-color .3s,box-shadow .2s,-webkit-box-shadow .2s}.eael-lr-form-wrapper input[type=checkbox]:after{content:"";display:block;left:0;top:0;position:absolute;-webkit-transition:opacity var(--d-o, 0.2s),-webkit-transform var(--d-t, 0.3s) var(--d-t-e, ease);transition:opacity var(--d-o, 0.2s),-webkit-transform var(--d-t, 0.3s) var(--d-t-e, ease);-o-transition:transform var(--d-t, 0.3s) var(--d-t-e, ease),opacity var(--d-o, 0.2s);transition:transform var(--d-t, 0.3s) var(--d-t-e, ease),opacity var(--d-o, 0.2s);transition:transform var(--d-t, 0.3s) var(--d-t-e, ease),opacity var(--d-o, 0.2s),-webkit-transform var(--d-t, 0.3s) var(--d-t-e, ease)}.eael-lr-form-wrapper input[type=checkbox]:before{content:none}.eael-lr-form-wrapper input[type=checkbox]:checked{--b: var(--active);--bc: var(--active);--d-o: .3s;--d-t: .6s;--d-t-e: cubic-bezier(.2, .85, .32, 1.2)}.eael-lr-form-wrapper input[type=checkbox]:checked:before{content:none}.eael-lr-form-wrapper input[type=checkbox]:disabled{--b: var(--disabled);cursor:not-allowed;opacity:.9}.eael-lr-form-wrapper input[type=checkbox]:disabled:checked{--b: var(--disabled-inner);--bc: var(--border)}.eael-lr-form-wrapper input[type=checkbox]:disabled+label{cursor:not-allowed}.eael-lr-form-wrapper input[type=checkbox]:hover:not(:checked):not(:disabled){--bc: var(--border-hover)}.eael-lr-form-wrapper input[type=checkbox]:focus{-webkit-box-shadow:0 0 0 var(--focus);box-shadow:0 0 0 var(--focus)}.eael-lr-form-wrapper input[type=checkbox]:not(#eael_accept_tnc){width:18px}.eael-lr-form-wrapper input[type=checkbox]:not(#eael_accept_tnc):after{opacity:var(--o, 0)}.eael-lr-form-wrapper input[type=checkbox]:not(#eael_accept_tnc):checked{--o: 1}.eael-lr-form-wrapper input[type=checkbox]+label{font-size:14px;line-height:21px;display:inline-block;vertical-align:top;cursor:pointer;margin-left:4px}.eael-lr-form-wrapper input[type=checkbox]:not(#eael_accept_tnc){border-radius:3px}.eael-lr-form-wrapper input[type=checkbox]:not(#eael_accept_tnc):after{width:5px;height:9px;border:2px solid var(--active-inner);border-top:0;border-left:0;left:5px;top:1px;-webkit-transform:rotate(var(--r, 20deg));-ms-transform:rotate(var(--r, 20deg));transform:rotate(var(--r, 20deg))}.eael-lr-form-wrapper input[type=checkbox]:not(#eael_accept_tnc):checked{--r: 43deg}.eael-lr-form-wrapper input[type=checkbox]#eael_accept_tnc{width:31px;border-radius:11px;border-width:1px}.eael-lr-form-wrapper input[type=checkbox]#eael_accept_tnc:after{left:2px;top:2px;border-radius:50%;width:12px;height:12px;background:var(--ab, var(--border));-webkit-transform:translateX(var(--x, 0));-ms-transform:translateX(var(--x, 0));transform:translateX(var(--x, 0))}.eael-lr-form-wrapper input[type=checkbox]#eael_accept_tnc:checked{--ab: var(--active-inner);--x: 13px}.eael-lr-form-wrapper input[type=checkbox]#eael_accept_tnc:disabled:not(:checked):after{opacity:.6}}
assets/front-end/js/view/login-register.js CHANGED
@@ -93,7 +93,7 @@
93
  /*! no static exports found */
94
  /***/ (function(module, exports) {
95
 
96
- eval("ea.hooks.addAction(\"init\", \"ea\", function () {\n var EALoginRegister = function EALoginRegister($scope, $) {\n var $loginFormWrapper = $scope.find(\"#eael-login-form-wrapper\");\n var $regFormWrapper = $scope.find(\"#eael-register-form-wrapper\");\n var $regLinkAction = $scope.find('#eael-lr-reg-toggle');\n var $loginLinkAction = $scope.find('#eael-lr-login-toggle');\n var $passField = $loginFormWrapper.find('#eael-user-password');\n\n if ('form' === $regLinkAction.data('action')) {\n $regLinkAction.on('click', function (e) {\n e.preventDefault();\n $loginFormWrapper.hide();\n $regFormWrapper.fadeIn();\n });\n }\n\n if ('form' === $loginLinkAction.data('action')) {\n $loginLinkAction.on('click', function (e) {\n e.preventDefault();\n $regFormWrapper.hide();\n $loginFormWrapper.fadeIn();\n });\n } // Password Visibility Toggle\n\n\n var pass_shown = false;\n $(document).on('click', '#wp-hide-pw', function (e) {\n var $icon = $(this).find('span'); // cache\n\n if (pass_shown) {\n $passField.attr('type', 'password');\n $icon.removeClass('dashicons-hidden').addClass('dashicons-visibility');\n pass_shown = false;\n } else {\n $passField.attr('type', 'text');\n $icon.removeClass('dashicons-visibility').addClass('dashicons-hidden');\n pass_shown = true;\n }\n });\n };\n\n elementorFrontend.hooks.addAction(\"frontend/element_ready/eael-login-register.default\", EALoginRegister);\n});\n\n//# sourceURL=webpack:///./src/js/view/login-register.js?");
97
 
98
  /***/ })
99
 
93
  /*! no static exports found */
94
  /***/ (function(module, exports) {
95
 
96
+ eval("ea.hooks.addAction(\"init\", \"ea\", function () {\n var EALoginRegister = function EALoginRegister($scope, $) {\n var $wrap = $scope.find('.eael-login-registration-wrapper'); // cache wrapper\n //const recaptchaEnabled = $wrap.data('is-recaptcha');\n\n var widgetId = $wrap.data('widget-id');\n var recaptchaSiteKey = $wrap.data('recaptcha-sitekey');\n var $loginFormWrapper = $scope.find(\"#eael-login-form-wrapper\");\n var $regFormWrapper = $scope.find(\"#eael-register-form-wrapper\");\n var $regLinkAction = $scope.find('#eael-lr-reg-toggle');\n var $loginLinkAction = $scope.find('#eael-lr-login-toggle');\n var $passField = $loginFormWrapper.find('#eael-user-password');\n\n if ('form' === $regLinkAction.data('action')) {\n $regLinkAction.on('click', function (e) {\n e.preventDefault();\n $loginFormWrapper.hide();\n $regFormWrapper.fadeIn();\n });\n }\n\n if ('form' === $loginLinkAction.data('action')) {\n $loginLinkAction.on('click', function (e) {\n e.preventDefault();\n $regFormWrapper.hide();\n $loginFormWrapper.fadeIn();\n });\n } // Password Visibility Toggle\n\n\n var pass_shown = false;\n $(document).on('click', '#wp-hide-pw', function (e) {\n var $icon = $(this).find('span'); // cache\n\n if (pass_shown) {\n $passField.attr('type', 'password');\n $icon.removeClass('dashicons-hidden').addClass('dashicons-visibility');\n pass_shown = false;\n } else {\n $passField.attr('type', 'text');\n $icon.removeClass('dashicons-visibility').addClass('dashicons-hidden');\n pass_shown = true;\n }\n }); // Recaptcha\n\n function onloadLRcb() {\n var loginRecaptchaNode = document.getElementById('login-recaptcha-node-' + widgetId);\n var registerRecaptchaNode = document.getElementById('register-recaptcha-node-' + widgetId);\n\n if (loginRecaptchaNode) {\n grecaptcha.render(loginRecaptchaNode, {\n 'sitekey': recaptchaSiteKey\n });\n }\n\n if (registerRecaptchaNode) {\n grecaptcha.render(registerRecaptchaNode, {\n 'sitekey': recaptchaSiteKey\n });\n }\n }\n\n if (grecaptcha && isEditMode) {\n // on elementor editor, window load event already fired, so run recaptcha\n onloadLRcb();\n } else {\n // on frontend, load even is yet to fire, so wait and fire recaptcha\n $(window).load(function () {\n if (grecaptcha) {\n onloadLRcb();\n }\n });\n }\n };\n\n elementorFrontend.hooks.addAction(\"frontend/element_ready/eael-login-register.default\", EALoginRegister);\n});\n\n//# sourceURL=webpack:///./src/js/view/login-register.js?");
97
 
98
  /***/ })
99
 
assets/front-end/js/view/login-register.min.js CHANGED
@@ -1 +1 @@
1
- !function(e){var n={};function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:r})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,n){if(1&n&&(e=t(e)),8&n)return e;if(4&n&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(t.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&n&&"string"!=typeof e)for(var o in e)t.d(r,o,function(n){return e[n]}.bind(null,o));return r},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},t.p="",t(t.s=13)}({13:function(e,n){ea.hooks.addAction("init","ea",(function(){elementorFrontend.hooks.addAction("frontend/element_ready/eael-login-register.default",(function(e,n){var t=e.find("#eael-login-form-wrapper"),r=e.find("#eael-register-form-wrapper"),o=e.find("#eael-lr-reg-toggle"),i=e.find("#eael-lr-login-toggle"),a=t.find("#eael-user-password");"form"===o.data("action")&&o.on("click",(function(e){e.preventDefault(),t.hide(),r.fadeIn()})),"form"===i.data("action")&&i.on("click",(function(e){e.preventDefault(),r.hide(),t.fadeIn()}));var d=!1;n(document).on("click","#wp-hide-pw",(function(e){var t=n(this).find("span");d?(a.attr("type","password"),t.removeClass("dashicons-hidden").addClass("dashicons-visibility"),d=!1):(a.attr("type","text"),t.removeClass("dashicons-visibility").addClass("dashicons-hidden"),d=!0)}))}))}))}});
1
+ !function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=13)}({13:function(e,t){ea.hooks.addAction("init","ea",(function(){elementorFrontend.hooks.addAction("frontend/element_ready/eael-login-register.default",(function(e,t){var n=e.find(".eael-login-registration-wrapper"),r=n.data("widget-id"),o=n.data("recaptcha-sitekey"),i=e.find("#eael-login-form-wrapper"),a=e.find("#eael-register-form-wrapper"),d=e.find("#eael-lr-reg-toggle"),c=e.find("#eael-lr-login-toggle"),l=i.find("#eael-user-password");"form"===d.data("action")&&d.on("click",(function(e){e.preventDefault(),i.hide(),a.fadeIn()})),"form"===c.data("action")&&c.on("click",(function(e){e.preventDefault(),a.hide(),i.fadeIn()}));var f=!1;function u(){var e=document.getElementById("login-recaptcha-node-"+r),t=document.getElementById("register-recaptcha-node-"+r);e&&grecaptcha.render(e,{sitekey:o}),t&&grecaptcha.render(t,{sitekey:o})}t(document).on("click","#wp-hide-pw",(function(e){var n=t(this).find("span");f?(l.attr("type","password"),n.removeClass("dashicons-hidden").addClass("dashicons-visibility"),f=!1):(l.attr("type","text"),n.removeClass("dashicons-visibility").addClass("dashicons-hidden"),f=!0)})),grecaptcha&&isEditMode?u():t(window).load((function(){grecaptcha&&u()}))}))}))}});
essential_adons_elementor.php CHANGED
@@ -4,12 +4,12 @@
4
  * Description: The Essential plugin you install after Elementor! 70+ Premium elements, including WooCommerce, Event Calender, Data Table, Post Grid, Instagram Feed.
5
  * Plugin URI: https://essential-addons.com/elementor/
6
  * Author: WPDeveloper
7
- * Version: 4.2.0
8
  * Author URI: https://wpdeveloper.net/
9
  * Text Domain: essential-addons-for-elementor-lite
10
  * Domain Path: /languages
11
  *
12
- * WC tested up to: 4.3.1
13
  */
14
 
15
  if (!defined('ABSPATH')) {
@@ -26,7 +26,7 @@ define('EAEL_PLUGIN_FILE', __FILE__);
26
  define('EAEL_PLUGIN_BASENAME', plugin_basename(__FILE__));
27
  define('EAEL_PLUGIN_PATH', trailingslashit(plugin_dir_path(__FILE__)));
28
  define('EAEL_PLUGIN_URL', trailingslashit(plugins_url('/', __FILE__)));
29
- define('EAEL_PLUGIN_VERSION', '4.2.0');
30
  define('EAEL_ASSET_PATH', wp_upload_dir()['basedir'] . '/essential-addons-elementor');
31
  define('EAEL_ASSET_URL', wp_upload_dir()['baseurl'] . '/essential-addons-elementor');
32
  define('EAEL_TEXTDOMAIN', 'essential-addons-for-elementor-lite');
4
  * Description: The Essential plugin you install after Elementor! 70+ Premium elements, including WooCommerce, Event Calender, Data Table, Post Grid, Instagram Feed.
5
  * Plugin URI: https://essential-addons.com/elementor/
6
  * Author: WPDeveloper
7
+ * Version: 4.2.1
8
  * Author URI: https://wpdeveloper.net/
9
  * Text Domain: essential-addons-for-elementor-lite
10
  * Domain Path: /languages
11
  *
12
+ * WC tested up to: 4.4.1
13
  */
14
 
15
  if (!defined('ABSPATH')) {
26
  define('EAEL_PLUGIN_BASENAME', plugin_basename(__FILE__));
27
  define('EAEL_PLUGIN_PATH', trailingslashit(plugin_dir_path(__FILE__)));
28
  define('EAEL_PLUGIN_URL', trailingslashit(plugins_url('/', __FILE__)));
29
+ define('EAEL_PLUGIN_VERSION', '4.2.1');
30
  define('EAEL_ASSET_PATH', wp_upload_dir()['basedir'] . '/essential-addons-elementor');
31
  define('EAEL_ASSET_URL', wp_upload_dir()['baseurl'] . '/essential-addons-elementor');
32
  define('EAEL_TEXTDOMAIN', 'essential-addons-for-elementor-lite');
includes/Classes/Bootstrap.php CHANGED
@@ -113,6 +113,8 @@ class Bootstrap
113
 
114
  // Enqueue
115
  add_action('eael/before_enqueue_styles', array($this, 'before_enqueue_styles'));
 
 
116
  add_action('wp_enqueue_scripts', array($this, 'enqueue_scripts'));
117
  add_action('elementor/css-file/post/enqueue', [$this, 'enqueue_template_scripts']);
118
  add_action('elementor/editor/before_enqueue_scripts', array($this, 'editor_enqueue_scripts'));
@@ -141,10 +143,10 @@ class Bootstrap
141
  add_filter('eael/event-calendar/source', [$this, 'eael_event_calendar_source']);
142
  add_action('eael/advanced-data-table/source/control', [$this, 'advanced_data_table_source_control']);
143
  add_filter('eael/advanced-data-table/table_html/integration/ninja', [$this, 'advanced_data_table_ninja_integration'], 10, 1);
144
- add_action( 'init', [ $this, 'login_or_register_user'] ); //@TODO; add AJAX later
 
145
  add_filter( 'wp_new_user_notification_email', array( $this, 'new_user_notification_email' ), 10, 3 );
146
  add_filter( 'wp_new_user_notification_email_admin', array( $this, 'new_user_notification_email_admin' ), 10, 3 );
147
-
148
  //rank math support
149
  add_filter('rank_math/researches/toc_plugins', [$this, 'eael_toc_rank_math_support']);
150
 
113
 
114
  // Enqueue
115
  add_action('eael/before_enqueue_styles', array($this, 'before_enqueue_styles'));
116
+ add_action('elementor/editor/before_enqueue_scripts', array($this, 'lr_enqueue_scripts'));
117
+ add_action('wp_enqueue_scripts', array($this, 'lr_enqueue_scripts'));
118
  add_action('wp_enqueue_scripts', array($this, 'enqueue_scripts'));
119
  add_action('elementor/css-file/post/enqueue', [$this, 'enqueue_template_scripts']);
120
  add_action('elementor/editor/before_enqueue_scripts', array($this, 'editor_enqueue_scripts'));
143
  add_filter('eael/event-calendar/source', [$this, 'eael_event_calendar_source']);
144
  add_action('eael/advanced-data-table/source/control', [$this, 'advanced_data_table_source_control']);
145
  add_filter('eael/advanced-data-table/table_html/integration/ninja', [$this, 'advanced_data_table_ninja_integration'], 10, 1);
146
+ // Login | Register
147
+ add_action( 'init', [ $this, 'login_or_register_user'] );
148
  add_filter( 'wp_new_user_notification_email', array( $this, 'new_user_notification_email' ), 10, 3 );
149
  add_filter( 'wp_new_user_notification_email_admin', array( $this, 'new_user_notification_email_admin' ), 10, 3 );
 
150
  //rank math support
151
  add_filter('rank_math/researches/toc_plugins', [$this, 'eael_toc_rank_math_support']);
152
 
includes/Elements/Login_Register.php CHANGED
@@ -83,6 +83,11 @@ class Login_Register extends Widget_Base {
83
  * @var mixed|string
84
  */
85
  protected $form_logo_pos;
 
 
 
 
 
86
 
87
  /**
88
  * Login_Register constructor.
@@ -92,9 +97,18 @@ class Login_Register extends Widget_Base {
92
  public function __construct( $data = [], $args = null ) {
93
  parent::__construct( $data, $args );
94
  $this->user_can_register = get_option( 'users_can_register' );
 
95
  $this->in_editor = Plugin::instance()->editor->is_edit_mode();
 
96
  }
97
 
 
 
 
 
 
 
 
98
  /**
99
  * @inheritDoc
100
  */
@@ -142,8 +156,8 @@ class Login_Register extends Widget_Base {
142
  ];
143
  }
144
 
145
- public function get_custom_help_url()
146
- {
147
  return 'https://essential-addons.com/elementor/docs/login-register-form/';
148
  }
149
 
@@ -181,6 +195,7 @@ class Login_Register extends Widget_Base {
181
  // Login Form Related---
182
  $this->init_content_login_fields_controls();
183
  $this->init_content_login_options_controls();
 
184
  // Registration For Related---
185
  $this->init_content_register_fields_controls();
186
  $this->init_content_register_options_controls();
@@ -361,6 +376,24 @@ class Login_Register extends Widget_Base {
361
  'separator' => 'before',
362
  ] );
363
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
364
  $this->end_popover();
365
 
366
 
@@ -421,7 +454,26 @@ class Login_Register extends Widget_Base {
421
  'show_login_link' => 'yes',
422
  ],
423
  ] );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
424
  $this->end_popover();
 
425
  } else {
426
  $this->add_control( 'show_login_link', [
427
  'label' => __( 'Show Login Link', EAEL_TEXTDOMAIN ),
@@ -982,7 +1034,7 @@ class Login_Register extends Widget_Base {
982
  $this->add_control( 'register_user_role', [
983
  'label' => __( 'New User Role', EAEL_TEXTDOMAIN ),
984
  'type' => Controls_Manager::SELECT,
985
- 'default' => 'default',
986
  'options' => $this->get_user_roles(),
987
  'separator' => 'before',
988
  ] );
@@ -1219,6 +1271,7 @@ class Login_Register extends Widget_Base {
1219
  $this->end_controls_section();
1220
  }
1221
 
 
1222
  /**
1223
  * It prints controls for managing general style of both login and registration form
1224
  */
@@ -1280,7 +1333,7 @@ class Login_Register extends Widget_Base {
1280
  ],
1281
  ] );
1282
 
1283
- $this->add_control( "eael_form_wrap_margin", [
1284
  'label' => __( 'Margin', EAEL_TEXTDOMAIN ),
1285
  'type' => Controls_Manager::DIMENSIONS,
1286
  'size_units' => [
@@ -1295,7 +1348,7 @@ class Login_Register extends Widget_Base {
1295
  'form_form_wrap_po_toggle' => 'yes',
1296
  ],
1297
  ] );
1298
- $this->add_control( "eael_form_wrap_padding", [
1299
  'label' => __( 'Padding', EAEL_TEXTDOMAIN ),
1300
  'type' => Controls_Manager::DIMENSIONS,
1301
  'size_units' => [
@@ -1350,7 +1403,7 @@ class Login_Register extends Widget_Base {
1350
  ],
1351
  ] );
1352
 
1353
- //----Form-----
1354
  $this->add_control( 'form_form_po_toggle', [
1355
  'label' => __( 'Form', EAEL_TEXTDOMAIN ),
1356
  'type' => Controls_Manager::POPOVER_TOGGLE,
@@ -1360,8 +1413,14 @@ class Login_Register extends Widget_Base {
1360
  'separator' => 'before',
1361
  ] );
1362
  $this->start_popover();
 
 
 
 
 
 
1363
  $this->add_responsive_control( "eael_form_width", [
1364
- 'label' => esc_html__( 'width', EAEL_TEXTDOMAIN ),
1365
  'type' => Controls_Manager::SLIDER,
1366
  'size_units' => [
1367
  'px',
@@ -1404,8 +1463,8 @@ class Login_Register extends Widget_Base {
1404
  ],
1405
  ] );
1406
 
1407
- $this->add_control( "eael_form_margin", [
1408
- 'label' => __( 'Form Margin', EAEL_TEXTDOMAIN ),
1409
  'type' => Controls_Manager::DIMENSIONS,
1410
  'size_units' => [
1411
  'px',
@@ -1419,8 +1478,8 @@ class Login_Register extends Widget_Base {
1419
  'form_form_po_toggle' => 'yes',
1420
  ],
1421
  ] );
1422
- $this->add_control( "eael_form_padding", [
1423
- 'label' => __( 'Form Padding', EAEL_TEXTDOMAIN ),
1424
  'type' => Controls_Manager::DIMENSIONS,
1425
  'size_units' => [
1426
  'px',
@@ -1442,7 +1501,7 @@ class Login_Register extends Widget_Base {
1442
  ],
1443
  ] );
1444
  $this->add_control( "eael_form_border_radius", [
1445
- 'label' => __( 'Border Radius', EAEL_TEXTDOMAIN ),
1446
  'type' => Controls_Manager::DIMENSIONS,
1447
  'size_units' => [
1448
  'px',
@@ -1464,21 +1523,134 @@ class Login_Register extends Widget_Base {
1464
  ],
1465
  'selector' => "{{WRAPPER}} .lr-form-wrapper",
1466
  ] );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1467
  $this->end_popover();
 
1468
  $this->add_group_control( Group_Control_Box_Shadow::get_type(), [
1469
- 'label' => __( 'Form Shadow', EAEL_TEXTDOMAIN ),
1470
  'name' => 'eael_form_shadow',
1471
  'selector' => "{{WRAPPER}} .lr-form-wrapper",
1472
  'exclude' => [
1473
  'box_shadow_position',
1474
  ],
1475
  ] );
 
 
 
 
 
 
 
 
 
 
1476
  $this->end_controls_section();
1477
  }
1478
 
1479
  protected function init_style_header_content_controls( $form_type = 'login' ) {
1480
  $this->start_controls_section( "section_style_{$form_type}_header_content", [
1481
- 'label' => sprintf( __( '%s Form Header', EAEL_TEXTDOMAIN ), ucfirst( $form_type ) ),
1482
  'tab' => Controls_Manager::TAB_STYLE,
1483
  'conditions' => $this->get_form_controls_display_condition( $form_type ),
1484
  ] );
@@ -1488,6 +1660,152 @@ class Login_Register extends Widget_Base {
1488
  $logo_selector = "{{WRAPPER}} .eael-{$form_type}-form-wrapper .lr-form-header img";
1489
  $title_selector = "{{WRAPPER}} .eael-{$form_type}-form-wrapper .lr-form-header .form-dsc h4";
1490
  $subtitle_selector = "{{WRAPPER}} .eael-{$form_type}-form-wrapper .lr-form-header .form-dsc p";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1491
 
1492
  $this->add_control( "{$form_type}_form_img_po_toggle", [
1493
  'label' => __( 'Form Illustration', EAEL_TEXTDOMAIN ),
@@ -1495,6 +1813,7 @@ class Login_Register extends Widget_Base {
1495
  'label_off' => __( 'Default', EAEL_TEXTDOMAIN ),
1496
  'label_on' => __( 'Custom', EAEL_TEXTDOMAIN ),
1497
  'return_value' => 'yes',
 
1498
  ] );
1499
  $this->start_popover();
1500
  $this->add_responsive_control( "{$form_type}_form_img_width", [
@@ -1647,7 +1966,77 @@ class Login_Register extends Widget_Base {
1647
  'separator' => 'before',
1648
  ] );
1649
  $this->start_popover();
1650
- $this->add_control( "{$form_type}_form_logo_margin", [
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1651
  'label' => __( 'Margin', EAEL_TEXTDOMAIN ),
1652
  'type' => Controls_Manager::DIMENSIONS,
1653
  'size_units' => [
@@ -1662,7 +2051,7 @@ class Login_Register extends Widget_Base {
1662
  "{$form_type}_form_logo_po_toggle" => 'yes',
1663
  ],
1664
  ] );
1665
- $this->add_control( "{$form_type}_form_logo_padding", [
1666
  'label' => __( 'Padding', EAEL_TEXTDOMAIN ),
1667
  'type' => Controls_Manager::DIMENSIONS,
1668
  'size_units' => [
@@ -1677,6 +2066,7 @@ class Login_Register extends Widget_Base {
1677
  "{$form_type}_form_logo_po_toggle" => 'yes',
1678
  ],
1679
  ] );
 
1680
  $this->add_group_control( Group_Control_Border::get_type(), [
1681
  'name' => "{$form_type}_form_logo_border",
1682
  'selector' => $logo_selector,
@@ -1708,15 +2098,6 @@ class Login_Register extends Widget_Base {
1708
  ],
1709
  ] );
1710
 
1711
- $this->add_group_control( Group_Control_Background::get_type(), [
1712
- 'name' => "{$form_type}_form_header_bg",
1713
- 'label' => __( 'Background Color', EAEL_TEXTDOMAIN ),
1714
- 'types' => [
1715
- 'classic',
1716
- 'gradient',
1717
- ],
1718
- 'selector' => $header_selector,
1719
- ] );
1720
 
1721
 
1722
  /*-- Title Typography --*/
@@ -1729,7 +2110,7 @@ class Login_Register extends Widget_Base {
1729
  'separator' => 'before',
1730
  ] );
1731
  $this->start_popover();
1732
- $this->add_control( "{$form_type}_form_title_margin", [
1733
  'label' => __( 'Margin', EAEL_TEXTDOMAIN ),
1734
  'type' => Controls_Manager::DIMENSIONS,
1735
  'size_units' => [
@@ -1744,7 +2125,7 @@ class Login_Register extends Widget_Base {
1744
  "{$form_type}_form_title_po_toggle" => 'yes',
1745
  ],
1746
  ] );
1747
- $this->add_control( "{$form_type}_form_title_padding", [
1748
  'label' => __( 'Padding', EAEL_TEXTDOMAIN ),
1749
  'type' => Controls_Manager::DIMENSIONS,
1750
  'size_units' => [
@@ -1918,7 +2299,7 @@ class Login_Register extends Widget_Base {
1918
  ] );
1919
 
1920
  $this->start_popover();
1921
- $this->add_control( "eael_form_field_margin", [
1922
  'label' => __( 'Margin', EAEL_TEXTDOMAIN ),
1923
  'type' => Controls_Manager::DIMENSIONS,
1924
  'size_units' => [
@@ -1927,14 +2308,14 @@ class Login_Register extends Widget_Base {
1927
  '%',
1928
  ],
1929
  'selectors' => [
1930
- "{{WRAPPER}} .lr-form-wrapper .eael-lr-form-control" => $this->apply_dim( 'margin' ),
1931
  ],
1932
  'condition' => [
1933
  'eael_form_field_po_toggle' => 'yes',
1934
  ],
1935
  ] );
1936
 
1937
- $this->add_control( "eael_form_field_padding", [
1938
  'label' => __( 'Padding', EAEL_TEXTDOMAIN ),
1939
  'type' => Controls_Manager::DIMENSIONS,
1940
  'size_units' => [
@@ -1954,6 +2335,28 @@ class Login_Register extends Widget_Base {
1954
  'name' => "eael_fields_typography",
1955
  'selector' => "{{WRAPPER}} .lr-form-wrapper .eael-lr-form-control",
1956
  ] );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1957
  $this->add_control( 'eael_form_label_colors_heading', [
1958
  'type' => Controls_Manager::HEADING,
1959
  'label' => __( 'Colors & Border', EAEL_TEXTDOMAIN ),
@@ -2059,7 +2462,7 @@ class Login_Register extends Widget_Base {
2059
  ] );
2060
 
2061
  $this->start_popover();
2062
- $this->add_control( "eael_form_label_margin", [
2063
  'label' => __( 'Margin', EAEL_TEXTDOMAIN ),
2064
  'type' => Controls_Manager::DIMENSIONS,
2065
  'size_units' => [
@@ -2074,7 +2477,7 @@ class Login_Register extends Widget_Base {
2074
  'eael_form_label_po_toggle' => 'yes',
2075
  ],
2076
  ] );
2077
- $this->add_control( "eael_form_label_padding", [
2078
  'label' => __( 'Padding', EAEL_TEXTDOMAIN ),
2079
  'type' => Controls_Manager::DIMENSIONS,
2080
  'size_units' => [
@@ -2214,7 +2617,7 @@ class Login_Register extends Widget_Base {
2214
  ],
2215
  ] );
2216
 
2217
- $this->add_control( "rmark_valign", [
2218
  'label' => esc_html__( 'Vertical Alignment', EAEL_TEXTDOMAIN ),
2219
  'type' => Controls_Manager::SLIDER,
2220
  'range' => [
@@ -2235,7 +2638,7 @@ class Login_Register extends Widget_Base {
2235
  'rmark_po_toggle' => 'yes',
2236
  ],
2237
  ] );
2238
- $this->add_control( "rmark_halign", [
2239
  'label' => esc_html__( 'Horizontal Alignment', EAEL_TEXTDOMAIN ),
2240
  'type' => Controls_Manager::SLIDER,
2241
  'range' => [
@@ -2267,7 +2670,7 @@ class Login_Register extends Widget_Base {
2267
  ] );
2268
  $this->start_popover();
2269
 
2270
- $this->add_control( "lpv_size", [
2271
  'label' => esc_html__( 'Icon Size', EAEL_TEXTDOMAIN ),
2272
  'type' => Controls_Manager::SLIDER,
2273
  'size_units' => [
@@ -2310,7 +2713,7 @@ class Login_Register extends Widget_Base {
2310
  ],
2311
  ] );
2312
 
2313
- $this->add_control( "lpv_valign", [
2314
  'label' => esc_html__( 'Vertical Alignment', EAEL_TEXTDOMAIN ),
2315
  'type' => Controls_Manager::SLIDER,
2316
  'range' => [
@@ -2331,7 +2734,7 @@ class Login_Register extends Widget_Base {
2331
  'lpv_po_toggle' => 'yes',
2332
  ],
2333
  ] );
2334
- $this->add_control( "lpv_halign", [
2335
  'label' => esc_html__( 'Horizontal Alignment', EAEL_TEXTDOMAIN ),
2336
  'type' => Controls_Manager::SLIDER,
2337
  'range' => [
@@ -2393,7 +2796,7 @@ class Login_Register extends Widget_Base {
2393
  'return_value' => 'yes',
2394
  ] );
2395
  $this->start_popover();
2396
- $this->add_control( "{$button_type}_btn_margin", [
2397
  'label' => __( 'Margin', EAEL_TEXTDOMAIN ),
2398
  'type' => Controls_Manager::DIMENSIONS,
2399
  'size_units' => [
@@ -2408,7 +2811,7 @@ class Login_Register extends Widget_Base {
2408
  "{$button_type}_btn_pot" => 'yes',
2409
  ],
2410
  ] );
2411
- $this->add_control( "{$button_type}_btn_padding", [
2412
  'label' => __( 'Padding', EAEL_TEXTDOMAIN ),
2413
  'type' => Controls_Manager::DIMENSIONS,
2414
  'size_units' => [
@@ -2428,7 +2831,7 @@ class Login_Register extends Widget_Base {
2428
  'name' => "{$button_type}_btn_typography",
2429
  'selector' => "{{WRAPPER}} .eael-{$button_type}-form .eael-lr-btn",
2430
  ] );
2431
- $this->add_control( "{$button_type}_btn_d_type", [
2432
  'label' => __( 'Display as', EAEL_TEXTDOMAIN ),
2433
  'type' => Controls_Manager::SELECT,
2434
  'options' => [
@@ -2462,7 +2865,7 @@ class Login_Register extends Widget_Base {
2462
  "{{WRAPPER}} .eael-{$button_type}-form .eael-lr-footer" => 'justify-content: {{VALUE}};',
2463
  ],
2464
  ] );
2465
- $this->add_control( "{$button_type}_btn_align", [
2466
  'label' => __( 'Alignment', EAEL_TEXTDOMAIN ),
2467
  'type' => Controls_Manager::CHOOSE,
2468
  'options' => [
@@ -2642,7 +3045,7 @@ class Login_Register extends Widget_Base {
2642
  'return_value' => 'yes',
2643
  ] );
2644
  $this->start_popover();
2645
- $this->add_control( "{$form_type}_link_margin", [
2646
  'label' => __( 'Margin', EAEL_TEXTDOMAIN ),
2647
  'type' => Controls_Manager::DIMENSIONS,
2648
  'size_units' => [
@@ -2657,7 +3060,7 @@ class Login_Register extends Widget_Base {
2657
  "{$form_type}_link_pot" => 'yes',
2658
  ],
2659
  ] );
2660
- $this->add_control( "{$form_type}_link_padding", [
2661
  'label' => __( 'Padding', EAEL_TEXTDOMAIN ),
2662
  'type' => Controls_Manager::DIMENSIONS,
2663
  'size_units' => [
@@ -2678,7 +3081,7 @@ class Login_Register extends Widget_Base {
2678
  'selector' => "{{WRAPPER}} .eael-{$form_type}-form .eael-lr-link",
2679
  ] );
2680
 
2681
- $this->add_control( "{$form_type}_link_d_type", [
2682
  'label' => __( 'Display as', EAEL_TEXTDOMAIN ),
2683
  'type' => Controls_Manager::SELECT,
2684
  'options' => [
@@ -2732,7 +3135,7 @@ class Login_Register extends Widget_Base {
2732
  ],
2733
  ] );
2734
 
2735
- $this->add_control( "{$form_type}_link_align", [
2736
  'label' => __( 'Alignment', EAEL_TEXTDOMAIN ),
2737
  'type' => Controls_Manager::CHOOSE,
2738
  'options' => [
@@ -2916,7 +3319,7 @@ class Login_Register extends Widget_Base {
2916
  *
2917
  * @return array
2918
  */
2919
- protected function get_form_controls_display_condition( $type = 'login' ) {
2920
  $form_type = in_array( $type, [
2921
  'login',
2922
  'register',
@@ -2963,13 +3366,15 @@ class Login_Register extends Widget_Base {
2963
  $this->form_logo = Group_Control_Image_Size::get_attachment_image_src( $form_logo_id, 'lr_form_logo', $this->ds );
2964
  $this->form_logo_pos = ! empty( $this->ds['lr_form_logo_position'] ) ? $this->ds['lr_form_logo_position'] : 'inline';
2965
  ?>
2966
- <div class="eael-login-registration-wrapper" data-is-ajax="<?php echo esc_attr($this->get_settings_for_display('enable_ajax')); ?>" >
2967
  <?php
2968
  $this->print_login_form();
2969
  $this->print_register_form();
2970
  ?>
2971
  </div>
 
2972
  <?php
 
2973
  }
2974
 
2975
  protected function print_login_form() {
@@ -3092,8 +3497,17 @@ class Login_Register extends Widget_Base {
3092
  } ?>
3093
 
3094
  </div>
 
 
 
 
 
 
 
 
 
3095
  <div class="eael-lr-footer">
3096
- <input type="submit" name="eael-login-submit" id="eael-login-submit" class="eael-lr-btn eael-lr-btn-block <?php echo esc_attr( $btn_align ); ?>" value="<?php echo esc_attr( $btn_text ); ?>"/>
3097
  <?php if ( $show_reg_link ) { ?>
3098
  <div class="eael-sign-wrapper <?php echo esc_attr( $link_align ); ?>">
3099
  <?php echo $reg_link; // XSS ok. already escaped ?>
@@ -3101,8 +3515,10 @@ class Login_Register extends Widget_Base {
3101
  <?php } ?>
3102
 
3103
  </div>
 
 
3104
  <div class="eael-form-validation-container">
3105
- <?php $this->print_login_validation_errors(); ?>
3106
  </div>
3107
  <?php
3108
  $this->print_necessary_hidden_fields( 'login' );
@@ -3121,6 +3537,7 @@ class Login_Register extends Widget_Base {
3121
  }
3122
  ?>
3123
  </div>
 
3124
  </section>
3125
  <?php
3126
  }
@@ -3191,7 +3608,7 @@ class Login_Register extends Widget_Base {
3191
  do_action( 'eael/login-register/before-register-form', $this );
3192
  ?>
3193
  <form class="eael-register-form eael-lr-form" id="eael-register-form" method="post">
3194
- <?php do_action( 'eael/login-register/after-register-form-open', $this); ?>
3195
  <?php // Print all dynamic fields
3196
  foreach ( $this->ds['register_fields'] as $f_index => $field ) :
3197
  $field_type = $field['field_type'];
@@ -3297,7 +3714,9 @@ class Login_Register extends Widget_Base {
3297
  endforeach;
3298
  $this->print_necessary_hidden_fields( 'register' );
3299
  $this->print_terms_condition_notice();
 
3300
  ?>
 
3301
  <div class="eael-lr-footer">
3302
  <input type="submit" name="eael-register-submit" id="eael-register-submit" class="eael-lr-btn eael-lr-btn-block<?php echo esc_attr( $btn_align ); ?>" value="<?php echo esc_attr( $btn_text ); ?>"/>
3303
  <?php if ( $show_lgn_link ) { ?>
@@ -3308,14 +3727,14 @@ class Login_Register extends Widget_Base {
3308
  </div>
3309
 
3310
  <div class="eael-form-validation-container">
3311
- <?php $this->print_validation_message(); ?>
3312
  </div>
3313
  <?php
3314
 
3315
- do_action( 'eael/login-register/before-register-form-close', $this);
3316
- ?>
3317
  </form>
3318
- <?php do_action( 'eael/login-register/after-register-form', $this); ?>
3319
  </div>
3320
  <?php if ( 'right' === $this->form_illustration_pos ) {
3321
  $this->print_form_illustration();
@@ -3323,7 +3742,7 @@ class Login_Register extends Widget_Base {
3323
  </div>
3324
  </section>
3325
  <?php
3326
- $form_markup = apply_filters('eael/login-register/register-form-markup', ob_get_clean());
3327
  // if we are in the editor then show error related to different input field.
3328
  if ( $this->in_editor ) {
3329
  $repeated = $this->print_error_for_repeated_fields( $repeated_f_labels );
@@ -3451,6 +3870,37 @@ class Login_Register extends Widget_Base {
3451
  }
3452
  }
3453
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3454
  protected function print_error_for_repeated_fields( $repeated_fields ) {
3455
  if ( ! empty( $repeated_fields ) ) {
3456
  $error_fields = '<strong>' . implode( "</strong>, <strong>", $repeated_fields ) . '</strong>';
@@ -3514,11 +3964,11 @@ class Login_Register extends Widget_Base {
3514
  if ( empty( $errors ) && empty( $success ) ) {
3515
  return;
3516
  }
3517
- if ( ! empty( $errors ) && is_array( $errors ) ) {
3518
- $this->print_registration_errors_message( $errors );
3519
- } else {
3520
- $this->print_registration_success_message( $success );
3521
- }
3522
  }
3523
 
3524
  protected function print_registration_errors_message( $errors ) {
@@ -3566,4 +4016,4 @@ class Login_Register extends Widget_Base {
3566
  return "{$css_property}: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};";
3567
  }
3568
 
3569
- }
83
  * @var mixed|string
84
  */
85
  protected $form_logo_pos;
86
+ /**
87
+ * Google Recaptcha Site key
88
+ * @var string|false
89
+ */
90
+ protected $recaptcha_sitekey;
91
 
92
  /**
93
  * Login_Register constructor.
97
  public function __construct( $data = [], $args = null ) {
98
  parent::__construct( $data, $args );
99
  $this->user_can_register = get_option( 'users_can_register' );
100
+ $this->recaptcha_sitekey = get_option( 'eael_recaptcha_sitekey' );
101
  $this->in_editor = Plugin::instance()->editor->is_edit_mode();
102
+
103
  }
104
 
105
+ public function get_script_depends() {
106
+ $scripts = parent::get_script_depends();
107
+ $scripts[] = 'eael-recaptcha'; //@TODO; debug later why this does not let recaptcha work on editor.
108
+ return $scripts;
109
+ }
110
+
111
+
112
  /**
113
  * @inheritDoc
114
  */
156
  ];
157
  }
158
 
159
+
160
+ public function get_custom_help_url() {
161
  return 'https://essential-addons.com/elementor/docs/login-register-form/';
162
  }
163
 
195
  // Login Form Related---
196
  $this->init_content_login_fields_controls();
197
  $this->init_content_login_options_controls();
198
+ do_action( 'eael/login-register/after-login-controls-section', $this);
199
  // Registration For Related---
200
  $this->init_content_register_fields_controls();
201
  $this->init_content_register_options_controls();
376
  'separator' => 'before',
377
  ] );
378
  }
379
+ $this->add_control( 'enable_login_recaptcha', [
380
+ 'label' => __( 'Enable Google reCAPTCHA', EAEL_TEXTDOMAIN ),
381
+ 'description' => __( 'reCAPTCHA will prevent spam login from bots.', EAEL_TEXTDOMAIN ),
382
+ 'type' => Controls_Manager::SWITCHER,
383
+ 'label_on' => __( 'Yes', EAEL_TEXTDOMAIN ),
384
+ 'label_off' => __( 'No', EAEL_TEXTDOMAIN ),
385
+ 'return_value' => 'yes',
386
+ ] );
387
+ if ( empty( $this->recaptcha_sitekey ) ) {
388
+ $this->add_control( 'eael_login_recaptcha_keys_missing', [
389
+ 'type' => Controls_Manager::RAW_HTML,
390
+ 'raw' => sprintf( __( 'reCAPTCHA API keys are missing. Please add them from %sDashboard >> Essential Addons >> Elements >> Login | Register Form %sSettings', EAEL_TEXTDOMAIN ), '<strong>', '</strong>' ),
391
+ 'content_classes' => 'eael-warning',
392
+ 'condition' => [
393
+ 'enable_login_recaptcha' => 'yes',
394
+ ],
395
+ ] );
396
+ }
397
  $this->end_popover();
398
 
399
 
454
  'show_login_link' => 'yes',
455
  ],
456
  ] );
457
+ $this->add_control( 'enable_register_recaptcha', [
458
+ 'label' => __( 'Enable Google reCAPTCHA', EAEL_TEXTDOMAIN ),
459
+ 'description' => __( 'reCAPTCHA will prevent spam registration from bots.', EAEL_TEXTDOMAIN ),
460
+ 'type' => Controls_Manager::SWITCHER,
461
+ 'label_on' => __( 'Yes', EAEL_TEXTDOMAIN ),
462
+ 'label_off' => __( 'No', EAEL_TEXTDOMAIN ),
463
+ 'return_value' => 'yes',
464
+ ] );
465
+ if ( empty( $this->recaptcha_sitekey ) ) {
466
+ $this->add_control( 'eael_recaptcha_keys_missing', [
467
+ 'type' => Controls_Manager::RAW_HTML,
468
+ 'raw' => sprintf( __( 'Recaptcha API keys are missing. Please add them from %sDashboard >> Essential Addons >> Elements >> Login | Register Form %sSettings', EAEL_TEXTDOMAIN ), '<strong>', '</strong>' ),
469
+ 'content_classes' => 'eael-warning',
470
+ 'condition' => [
471
+ 'enable_register_recaptcha' => 'yes',
472
+ ],
473
+ ] );
474
+ }
475
  $this->end_popover();
476
+
477
  } else {
478
  $this->add_control( 'show_login_link', [
479
  'label' => __( 'Show Login Link', EAEL_TEXTDOMAIN ),
1034
  $this->add_control( 'register_user_role', [
1035
  'label' => __( 'New User Role', EAEL_TEXTDOMAIN ),
1036
  'type' => Controls_Manager::SELECT,
1037
+ 'default' => '',
1038
  'options' => $this->get_user_roles(),
1039
  'separator' => 'before',
1040
  ] );
1271
  $this->end_controls_section();
1272
  }
1273
 
1274
+
1275
  /**
1276
  * It prints controls for managing general style of both login and registration form
1277
  */
1333
  ],
1334
  ] );
1335
 
1336
+ $this->add_responsive_control( "eael_form_wrap_margin", [
1337
  'label' => __( 'Margin', EAEL_TEXTDOMAIN ),
1338
  'type' => Controls_Manager::DIMENSIONS,
1339
  'size_units' => [
1348
  'form_form_wrap_po_toggle' => 'yes',
1349
  ],
1350
  ] );
1351
+ $this->add_responsive_control( "eael_form_wrap_padding", [
1352
  'label' => __( 'Padding', EAEL_TEXTDOMAIN ),
1353
  'type' => Controls_Manager::DIMENSIONS,
1354
  'size_units' => [
1403
  ],
1404
  ] );
1405
 
1406
+ //----Form Wrapper-----
1407
  $this->add_control( 'form_form_po_toggle', [
1408
  'label' => __( 'Form', EAEL_TEXTDOMAIN ),
1409
  'type' => Controls_Manager::POPOVER_TOGGLE,
1413
  'separator' => 'before',
1414
  ] );
1415
  $this->start_popover();
1416
+ $this->add_control( 'eael_form_wrapper_heading', [
1417
+ 'type' => Controls_Manager::HEADING,
1418
+ 'label' => __( '---Form Wrapper---', EAEL_TEXTDOMAIN ),
1419
+ 'separator' => 'before',
1420
+ ] );
1421
+
1422
  $this->add_responsive_control( "eael_form_width", [
1423
+ 'label' => esc_html__( 'Wrapper width', EAEL_TEXTDOMAIN ),
1424
  'type' => Controls_Manager::SLIDER,
1425
  'size_units' => [
1426
  'px',
1463
  ],
1464
  ] );
1465
 
1466
+ $this->add_responsive_control( "eael_form_margin", [
1467
+ 'label' => __( 'Wrapper Margin', EAEL_TEXTDOMAIN ),
1468
  'type' => Controls_Manager::DIMENSIONS,
1469
  'size_units' => [
1470
  'px',
1478
  'form_form_po_toggle' => 'yes',
1479
  ],
1480
  ] );
1481
+ $this->add_responsive_control( "eael_form_padding", [
1482
+ 'label' => __( 'Wrapper Padding', EAEL_TEXTDOMAIN ),
1483
  'type' => Controls_Manager::DIMENSIONS,
1484
  'size_units' => [
1485
  'px',
1501
  ],
1502
  ] );
1503
  $this->add_control( "eael_form_border_radius", [
1504
+ 'label' => __( 'Wrapper Border Radius', EAEL_TEXTDOMAIN ),
1505
  'type' => Controls_Manager::DIMENSIONS,
1506
  'size_units' => [
1507
  'px',
1523
  ],
1524
  'selector' => "{{WRAPPER}} .lr-form-wrapper",
1525
  ] );
1526
+
1527
+ $this->add_control( 'eael_form_input_container', [
1528
+ 'type' => Controls_Manager::HEADING,
1529
+ 'label' => __( '---Form Style---', EAEL_TEXTDOMAIN ),
1530
+ 'separator' => 'before',
1531
+ ] );
1532
+ $this->add_responsive_control( "eael_form_ic_width", [
1533
+ 'label' => esc_html__( 'Form width', EAEL_TEXTDOMAIN ),
1534
+ 'type' => Controls_Manager::SLIDER,
1535
+ 'size_units' => [
1536
+ 'px',
1537
+ 'rem',
1538
+ '%',
1539
+ ],
1540
+ 'range' => [
1541
+ 'px' => [
1542
+ 'min' => 0,
1543
+ 'max' => 1000,
1544
+ 'step' => 5,
1545
+ ],
1546
+ 'rem' => [
1547
+ 'min' => 0,
1548
+ 'max' => 10,
1549
+ 'step' => .5,
1550
+ ],
1551
+ '%' => [
1552
+ 'min' => 0,
1553
+ 'max' => 100,
1554
+ ],
1555
+ ],
1556
+ 'default' => [
1557
+ 'unit' => '%',
1558
+ 'size' => 100,
1559
+ ],
1560
+ 'selectors' => [
1561
+ "{{WRAPPER}} .lr-form-wrapper form" => 'width: {{SIZE}}{{UNIT}};',
1562
+ ],
1563
+ 'condition' => [
1564
+ 'form_form_po_toggle' => 'yes',
1565
+ ],
1566
+ ] );
1567
+
1568
+ $this->add_responsive_control( "eael_form_ic_margin", [
1569
+ 'label' => __( 'Form Margin', EAEL_TEXTDOMAIN ),
1570
+ 'type' => Controls_Manager::DIMENSIONS,
1571
+ 'size_units' => [
1572
+ 'px',
1573
+ 'em',
1574
+ '%',
1575
+ ],
1576
+ 'selectors' => [
1577
+ "{{WRAPPER}} .lr-form-wrapper form" => $this->apply_dim( 'margin' ),
1578
+ ],
1579
+ 'condition' => [
1580
+ 'form_form_po_toggle' => 'yes',
1581
+ ],
1582
+ ] );
1583
+ $this->add_responsive_control( "eael_form_ic_padding", [
1584
+ 'label' => __( 'Form Padding', EAEL_TEXTDOMAIN ),
1585
+ 'type' => Controls_Manager::DIMENSIONS,
1586
+ 'size_units' => [
1587
+ 'px',
1588
+ 'em',
1589
+ '%',
1590
+ ],
1591
+ 'selectors' => [
1592
+ "{{WRAPPER}} .lr-form-wrapper form" => $this->apply_dim( 'padding' ),
1593
+ ],
1594
+ 'condition' => [
1595
+ 'form_form_po_toggle' => 'yes',
1596
+ ],
1597
+ ] );
1598
+ $this->add_group_control( Group_Control_Border::get_type(), [
1599
+ 'name' => "eael_form_ic_border",
1600
+ 'selector' => "{{WRAPPER}} .lr-form-wrapper form",
1601
+ 'condition' => [
1602
+ 'form_form_po_toggle' => 'yes',
1603
+ ],
1604
+ ] );
1605
+ $this->add_control( "eael_form_ic_border_radius", [
1606
+ 'label' => __( 'Border Radius', EAEL_TEXTDOMAIN ),
1607
+ 'type' => Controls_Manager::DIMENSIONS,
1608
+ 'size_units' => [
1609
+ 'px',
1610
+ '%',
1611
+ ],
1612
+ 'selectors' => [
1613
+ "{{WRAPPER}} .lr-form-wrapper form" => $this->apply_dim( 'border-radius' ),
1614
+ ],
1615
+ 'condition' => [
1616
+ 'form_form_po_toggle' => 'yes',
1617
+ ],
1618
+ ] );
1619
+ $this->add_group_control( Group_Control_Background::get_type(), [
1620
+ 'name' => "eael_form_ic_bg_color",
1621
+ 'label' => __( 'Background Color', EAEL_TEXTDOMAIN ),
1622
+ 'types' => [
1623
+ 'classic',
1624
+ 'gradient',
1625
+ ],
1626
+ 'selector' => "{{WRAPPER}} .lr-form-wrapper form",
1627
+ ] );
1628
  $this->end_popover();
1629
+
1630
  $this->add_group_control( Group_Control_Box_Shadow::get_type(), [
1631
+ 'label' => __( 'Form Wrapper Shadow', EAEL_TEXTDOMAIN ),
1632
  'name' => 'eael_form_shadow',
1633
  'selector' => "{{WRAPPER}} .lr-form-wrapper",
1634
  'exclude' => [
1635
  'box_shadow_position',
1636
  ],
1637
  ] );
1638
+
1639
+ $this->add_group_control( Group_Control_Box_Shadow::get_type(), [
1640
+ 'label' => __( 'Form Shadow', EAEL_TEXTDOMAIN ),
1641
+ 'name' => 'eael_form_ic_shadow',
1642
+ 'selector' => "{{WRAPPER}} .lr-form-wrapper form",
1643
+ 'exclude' => [
1644
+ 'box_shadow_position',
1645
+ ],
1646
+ ] );
1647
+ //@TODO; add only input wrapper shadow
1648
  $this->end_controls_section();
1649
  }
1650
 
1651
  protected function init_style_header_content_controls( $form_type = 'login' ) {
1652
  $this->start_controls_section( "section_style_{$form_type}_header_content", [
1653
+ 'label' => sprintf( __( '%s Form Header', EAEL_TEXTDOMAIN ), ucfirst( $form_type ) ), // Login Form Header | Register Form Header
1654
  'tab' => Controls_Manager::TAB_STYLE,
1655
  'conditions' => $this->get_form_controls_display_condition( $form_type ),
1656
  ] );
1660
  $logo_selector = "{{WRAPPER}} .eael-{$form_type}-form-wrapper .lr-form-header img";
1661
  $title_selector = "{{WRAPPER}} .eael-{$form_type}-form-wrapper .lr-form-header .form-dsc h4";
1662
  $subtitle_selector = "{{WRAPPER}} .eael-{$form_type}-form-wrapper .lr-form-header .form-dsc p";
1663
+ $this->add_control( "{$form_type}_fhc_po_toggle", [
1664
+ 'label' => __( 'Header Content', EAEL_TEXTDOMAIN ),
1665
+ 'type' => Controls_Manager::POPOVER_TOGGLE,
1666
+ 'label_off' => __( 'Default', EAEL_TEXTDOMAIN ),
1667
+ 'label_on' => __( 'Custom', EAEL_TEXTDOMAIN ),
1668
+ 'return_value' => 'yes',
1669
+ ] );
1670
+
1671
+ $this->start_popover();
1672
+
1673
+ $this->add_responsive_control( "{$form_type}_fhc_width", [
1674
+ 'label' => esc_html__( 'Header width', EAEL_TEXTDOMAIN ),
1675
+ 'type' => Controls_Manager::SLIDER,
1676
+ 'size_units' => [
1677
+ 'px',
1678
+ 'rem',
1679
+ '%',
1680
+ ],
1681
+ 'range' => [
1682
+ 'px' => [
1683
+ 'min' => 0,
1684
+ 'max' => 1000,
1685
+ 'step' => 5,
1686
+ ],
1687
+ 'rem' => [
1688
+ 'min' => 0,
1689
+ 'max' => 10,
1690
+ 'step' => .5,
1691
+ ],
1692
+ '%' => [
1693
+ 'min' => 0,
1694
+ 'max' => 100,
1695
+ ],
1696
+ ],
1697
+ 'default' => [
1698
+ 'unit' => '%',
1699
+ 'size' => 100,
1700
+ ],
1701
+ 'selectors' => [
1702
+ $header_selector => 'width: {{SIZE}}{{UNIT}};',
1703
+ ],
1704
+ 'condition' => [
1705
+ "{$form_type}_fhc_po_toggle" => 'yes',
1706
+ ],
1707
+ ] );
1708
+ $this->add_responsive_control( "{$form_type}_fhc_height", [
1709
+ 'label' => esc_html__( 'Header height', EAEL_TEXTDOMAIN ),
1710
+ 'type' => Controls_Manager::SLIDER,
1711
+ 'size_units' => [
1712
+ 'px',
1713
+ 'rem',
1714
+ '%',
1715
+ ],
1716
+ 'range' => [
1717
+ 'px' => [
1718
+ 'min' => 0,
1719
+ 'max' => 1000,
1720
+ 'step' => 5,
1721
+ ],
1722
+ 'rem' => [
1723
+ 'min' => 0,
1724
+ 'max' => 10,
1725
+ 'step' => .5,
1726
+ ],
1727
+ '%' => [
1728
+ 'min' => 0,
1729
+ 'max' => 100,
1730
+ ],
1731
+ ],
1732
+ 'selectors' => [
1733
+ $header_selector => 'height: {{SIZE}}{{UNIT}};',
1734
+ ],
1735
+ 'condition' => [
1736
+ "{$form_type}_fhc_po_toggle" => 'yes',
1737
+ ],
1738
+ ] );
1739
+ $this->add_responsive_control( "{$form_type}_fhc_margin", [
1740
+ 'label' => __( 'Header Margin', EAEL_TEXTDOMAIN ),
1741
+ 'type' => Controls_Manager::DIMENSIONS,
1742
+ 'size_units' => [
1743
+ 'px',
1744
+ 'em',
1745
+ '%',
1746
+ ],
1747
+ 'selectors' => [
1748
+ $header_selector => $this->apply_dim( 'margin' ),
1749
+ ],
1750
+ 'condition' => [
1751
+ "{$form_type}_fhc_po_toggle" => 'yes',
1752
+ ],
1753
+ ] );
1754
+ $this->add_responsive_control( "{$form_type}_fhc_padding", [
1755
+ 'label' => __( 'Header Padding', EAEL_TEXTDOMAIN ),
1756
+ 'type' => Controls_Manager::DIMENSIONS,
1757
+ 'size_units' => [
1758
+ 'px',
1759
+ 'em',
1760
+ '%',
1761
+ ],
1762
+ 'selectors' => [
1763
+ $header_selector => $this->apply_dim( 'padding' ),
1764
+ ],
1765
+ 'condition' => [
1766
+ "{$form_type}_fhc_po_toggle" => 'yes',
1767
+ ],
1768
+ ] );
1769
+
1770
+
1771
+ $this->add_group_control( Group_Control_Border::get_type(), [
1772
+ 'name' => "{$form_type}_fhc_border",
1773
+ 'selector' => $header_selector,
1774
+ 'condition' => [
1775
+ "{$form_type}_fhc_po_toggle" => 'yes',
1776
+ ],
1777
+ ] );
1778
+ $this->add_control( "{$form_type}_fhc_border_radius", [
1779
+ 'label' => __( 'Border Radius', EAEL_TEXTDOMAIN ),
1780
+ 'type' => Controls_Manager::DIMENSIONS,
1781
+ 'size_units' => [
1782
+ 'px',
1783
+ '%',
1784
+ ],
1785
+ 'selectors' => [
1786
+ $header_selector => $this->apply_dim( 'border-radius' ),
1787
+ ],
1788
+ 'condition' => [
1789
+ "{$form_type}_fhc_po_toggle" => 'yes',
1790
+ ],
1791
+ ] );
1792
+ $this->add_group_control( Group_Control_Background::get_type(), [
1793
+ 'name' => "{$form_type}_form_header_bg",
1794
+ 'label' => __( 'Background Color', EAEL_TEXTDOMAIN ),
1795
+ 'types' => [
1796
+ 'classic',
1797
+ 'gradient',
1798
+ ],
1799
+ 'selector' => $header_selector,
1800
+ 'condition' => [
1801
+ "{$form_type}_fhc_po_toggle" => 'yes',
1802
+ ],
1803
+ ] );
1804
+ $this->end_popover();
1805
+
1806
+
1807
+
1808
+
1809
 
1810
  $this->add_control( "{$form_type}_form_img_po_toggle", [
1811
  'label' => __( 'Form Illustration', EAEL_TEXTDOMAIN ),
1813
  'label_off' => __( 'Default', EAEL_TEXTDOMAIN ),
1814
  'label_on' => __( 'Custom', EAEL_TEXTDOMAIN ),
1815
  'return_value' => 'yes',
1816
+ 'separator' => 'before',
1817
  ] );
1818
  $this->start_popover();
1819
  $this->add_responsive_control( "{$form_type}_form_img_width", [
1966
  'separator' => 'before',
1967
  ] );
1968
  $this->start_popover();
1969
+ $this->add_responsive_control( "{$form_type}_form_logo_width", [
1970
+ 'label' => esc_html__( 'width', EAEL_TEXTDOMAIN ),
1971
+ 'type' => Controls_Manager::SLIDER,
1972
+ 'size_units' => [
1973
+ 'px',
1974
+ 'rem',
1975
+ '%',
1976
+ ],
1977
+ 'range' => [
1978
+ 'px' => [
1979
+ 'min' => 0,
1980
+ 'max' => 1000,
1981
+ 'step' => 5,
1982
+ ],
1983
+ 'rem' => [
1984
+ 'min' => 0,
1985
+ 'max' => 10,
1986
+ 'step' => .5,
1987
+ ],
1988
+ '%' => [
1989
+ 'min' => 0,
1990
+ 'max' => 100,
1991
+ ],
1992
+ ],
1993
+ 'default' => [
1994
+ 'unit' => 'px',
1995
+ 'size' => 100,
1996
+ ],
1997
+ 'selectors' => [
1998
+ $logo_selector => 'width: {{SIZE}}{{UNIT}};',
1999
+ ],
2000
+ 'condition' => [
2001
+ "{$form_type}_form_logo_po_toggle" => 'yes',
2002
+ ],
2003
+ ] );
2004
+ $this->add_responsive_control( "{$form_type}_form_logo_height", [
2005
+ 'label' => esc_html__( 'height', EAEL_TEXTDOMAIN ),
2006
+ 'type' => Controls_Manager::SLIDER,
2007
+ 'size_units' => [
2008
+ 'px',
2009
+ 'rem',
2010
+ '%',
2011
+ ],
2012
+ 'range' => [
2013
+ 'px' => [
2014
+ 'min' => 0,
2015
+ 'max' => 1000,
2016
+ 'step' => 5,
2017
+ ],
2018
+ 'rem' => [
2019
+ 'min' => 0,
2020
+ 'max' => 10,
2021
+ 'step' => .5,
2022
+ ],
2023
+ '%' => [
2024
+ 'min' => 0,
2025
+ 'max' => 100,
2026
+ ],
2027
+ ],
2028
+ 'default' => [
2029
+ 'unit' => 'px',
2030
+ 'size' => 100,
2031
+ ],
2032
+ 'selectors' => [
2033
+ $logo_selector => 'height: {{SIZE}}{{UNIT}};',
2034
+ ],
2035
+ 'condition' => [
2036
+ "{$form_type}_form_logo_po_toggle" => 'yes',
2037
+ ],
2038
+ ] );
2039
+ $this->add_responsive_control( "{$form_type}_form_logo_margin", [
2040
  'label' => __( 'Margin', EAEL_TEXTDOMAIN ),
2041
  'type' => Controls_Manager::DIMENSIONS,
2042
  'size_units' => [
2051
  "{$form_type}_form_logo_po_toggle" => 'yes',
2052
  ],
2053
  ] );
2054
+ $this->add_responsive_control( "{$form_type}_form_logo_padding", [
2055
  'label' => __( 'Padding', EAEL_TEXTDOMAIN ),
2056
  'type' => Controls_Manager::DIMENSIONS,
2057
  'size_units' => [
2066
  "{$form_type}_form_logo_po_toggle" => 'yes',
2067
  ],
2068
  ] );
2069
+
2070
  $this->add_group_control( Group_Control_Border::get_type(), [
2071
  'name' => "{$form_type}_form_logo_border",
2072
  'selector' => $logo_selector,
2098
  ],
2099
  ] );
2100
 
 
 
 
 
 
 
 
 
 
2101
 
2102
 
2103
  /*-- Title Typography --*/
2110
  'separator' => 'before',
2111
  ] );
2112
  $this->start_popover();
2113
+ $this->add_responsive_control( "{$form_type}_form_title_margin", [
2114
  'label' => __( 'Margin', EAEL_TEXTDOMAIN ),
2115
  'type' => Controls_Manager::DIMENSIONS,
2116
  'size_units' => [
2125
  "{$form_type}_form_title_po_toggle" => 'yes',
2126
  ],
2127
  ] );
2128
+ $this->add_responsive_control( "{$form_type}_form_title_padding", [
2129
  'label' => __( 'Padding', EAEL_TEXTDOMAIN ),
2130
  'type' => Controls_Manager::DIMENSIONS,
2131
  'size_units' => [
2299
  ] );
2300
 
2301
  $this->start_popover();
2302
+ $this->add_responsive_control( "eael_form_field_margin", [
2303
  'label' => __( 'Margin', EAEL_TEXTDOMAIN ),
2304
  'type' => Controls_Manager::DIMENSIONS,
2305
  'size_units' => [
2308
  '%',
2309
  ],
2310
  'selectors' => [
2311
+ "{{WRAPPER}} .lr-form-wrapper .eael-lr-form-group" => $this->apply_dim( 'margin' ),
2312
  ],
2313
  'condition' => [
2314
  'eael_form_field_po_toggle' => 'yes',
2315
  ],
2316
  ] );
2317
 
2318
+ $this->add_responsive_control( "eael_form_field_padding", [
2319
  'label' => __( 'Padding', EAEL_TEXTDOMAIN ),
2320
  'type' => Controls_Manager::DIMENSIONS,
2321
  'size_units' => [
2335
  'name' => "eael_fields_typography",
2336
  'selector' => "{{WRAPPER}} .lr-form-wrapper .eael-lr-form-control",
2337
  ] );
2338
+ $this->add_responsive_control( "ph_align", [
2339
+ 'label' => __( 'Text Alignment', EAEL_TEXTDOMAIN ),
2340
+ 'type' => Controls_Manager::CHOOSE,
2341
+ 'options' => [
2342
+ 'left' => [
2343
+ 'title' => __( 'Left', EAEL_TEXTDOMAIN ),
2344
+ 'icon' => 'eicon-h-align-left',
2345
+ ],
2346
+ 'center' => [
2347
+ 'title' => __( 'Center', EAEL_TEXTDOMAIN ),
2348
+ 'icon' => 'eicon-h-align-center',
2349
+ ],
2350
+ 'right' => [
2351
+ 'title' => __( 'Right', EAEL_TEXTDOMAIN ),
2352
+ 'icon' => 'eicon-h-align-right',
2353
+ ],
2354
+ ],
2355
+ 'default' => 'left',
2356
+ 'selectors' => [
2357
+ "{{WRAPPER}} .lr-form-wrapper .eael-lr-form-control" => 'text-align: {{VALUE}};',
2358
+ ],
2359
+ ] );
2360
  $this->add_control( 'eael_form_label_colors_heading', [
2361
  'type' => Controls_Manager::HEADING,
2362
  'label' => __( 'Colors & Border', EAEL_TEXTDOMAIN ),
2462
  ] );
2463
 
2464
  $this->start_popover();
2465
+ $this->add_responsive_control( "eael_form_label_margin", [
2466
  'label' => __( 'Margin', EAEL_TEXTDOMAIN ),
2467
  'type' => Controls_Manager::DIMENSIONS,
2468
  'size_units' => [
2477
  'eael_form_label_po_toggle' => 'yes',
2478
  ],
2479
  ] );
2480
+ $this->add_responsive_control( "eael_form_label_padding", [
2481
  'label' => __( 'Padding', EAEL_TEXTDOMAIN ),
2482
  'type' => Controls_Manager::DIMENSIONS,
2483
  'size_units' => [
2617
  ],
2618
  ] );
2619
 
2620
+ $this->add_responsive_control( "rmark_valign", [
2621
  'label' => esc_html__( 'Vertical Alignment', EAEL_TEXTDOMAIN ),
2622
  'type' => Controls_Manager::SLIDER,
2623
  'range' => [
2638
  'rmark_po_toggle' => 'yes',
2639
  ],
2640
  ] );
2641
+ $this->add_responsive_control( "rmark_halign", [
2642
  'label' => esc_html__( 'Horizontal Alignment', EAEL_TEXTDOMAIN ),
2643
  'type' => Controls_Manager::SLIDER,
2644
  'range' => [
2670
  ] );
2671
  $this->start_popover();
2672
 
2673
+ $this->add_responsive_control( "lpv_size", [
2674
  'label' => esc_html__( 'Icon Size', EAEL_TEXTDOMAIN ),
2675
  'type' => Controls_Manager::SLIDER,
2676
  'size_units' => [
2713
  ],
2714
  ] );
2715
 
2716
+ $this->add_responsive_control( "lpv_valign", [
2717
  'label' => esc_html__( 'Vertical Alignment', EAEL_TEXTDOMAIN ),
2718
  'type' => Controls_Manager::SLIDER,
2719
  'range' => [
2734
  'lpv_po_toggle' => 'yes',
2735
  ],
2736
  ] );
2737
+ $this->add_responsive_control( "lpv_halign", [
2738
  'label' => esc_html__( 'Horizontal Alignment', EAEL_TEXTDOMAIN ),
2739
  'type' => Controls_Manager::SLIDER,
2740
  'range' => [
2796
  'return_value' => 'yes',
2797
  ] );
2798
  $this->start_popover();
2799
+ $this->add_responsive_control( "{$button_type}_btn_margin", [
2800
  'label' => __( 'Margin', EAEL_TEXTDOMAIN ),
2801
  'type' => Controls_Manager::DIMENSIONS,
2802
  'size_units' => [
2811
  "{$button_type}_btn_pot" => 'yes',
2812
  ],
2813
  ] );
2814
+ $this->add_responsive_control( "{$button_type}_btn_padding", [
2815
  'label' => __( 'Padding', EAEL_TEXTDOMAIN ),
2816
  'type' => Controls_Manager::DIMENSIONS,
2817
  'size_units' => [
2831
  'name' => "{$button_type}_btn_typography",
2832
  'selector' => "{{WRAPPER}} .eael-{$button_type}-form .eael-lr-btn",
2833
  ] );
2834
+ $this->add_responsive_control( "{$button_type}_btn_d_type", [
2835
  'label' => __( 'Display as', EAEL_TEXTDOMAIN ),
2836
  'type' => Controls_Manager::SELECT,
2837
  'options' => [
2865
  "{{WRAPPER}} .eael-{$button_type}-form .eael-lr-footer" => 'justify-content: {{VALUE}};',
2866
  ],
2867
  ] );
2868
+ $this->add_responsive_control( "{$button_type}_btn_align", [
2869
  'label' => __( 'Alignment', EAEL_TEXTDOMAIN ),
2870
  'type' => Controls_Manager::CHOOSE,
2871
  'options' => [
3045
  'return_value' => 'yes',
3046
  ] );
3047
  $this->start_popover();
3048
+ $this->add_responsive_control( "{$form_type}_link_margin", [
3049
  'label' => __( 'Margin', EAEL_TEXTDOMAIN ),
3050
  'type' => Controls_Manager::DIMENSIONS,
3051
  'size_units' => [
3060
  "{$form_type}_link_pot" => 'yes',
3061
  ],
3062
  ] );
3063
+ $this->add_responsive_control( "{$form_type}_link_padding", [
3064
  'label' => __( 'Padding', EAEL_TEXTDOMAIN ),
3065
  'type' => Controls_Manager::DIMENSIONS,
3066
  'size_units' => [
3081
  'selector' => "{{WRAPPER}} .eael-{$form_type}-form .eael-lr-link",
3082
  ] );
3083
 
3084
+ $this->add_responsive_control( "{$form_type}_link_d_type", [
3085
  'label' => __( 'Display as', EAEL_TEXTDOMAIN ),
3086
  'type' => Controls_Manager::SELECT,
3087
  'options' => [
3135
  ],
3136
  ] );
3137
 
3138
+ $this->add_responsive_control( "{$form_type}_link_align", [
3139
  'label' => __( 'Alignment', EAEL_TEXTDOMAIN ),
3140
  'type' => Controls_Manager::CHOOSE,
3141
  'options' => [
3319
  *
3320
  * @return array
3321
  */
3322
+ public function get_form_controls_display_condition( $type = 'login' ) {
3323
  $form_type = in_array( $type, [
3324
  'login',
3325
  'register',
3366
  $this->form_logo = Group_Control_Image_Size::get_attachment_image_src( $form_logo_id, 'lr_form_logo', $this->ds );
3367
  $this->form_logo_pos = ! empty( $this->ds['lr_form_logo_position'] ) ? $this->ds['lr_form_logo_position'] : 'inline';
3368
  ?>
3369
+ <div class="eael-login-registration-wrapper" data-is-ajax="<?php echo esc_attr( $this->get_settings_for_display( 'enable_ajax' ) ); ?>" data-widget-id="<?php echo esc_attr( $this->get_id() ); ?>" data-recaptcha-sitekey="<?php echo esc_attr(get_option('eael_recaptcha_sitekey')); ?>">
3370
  <?php
3371
  $this->print_login_form();
3372
  $this->print_register_form();
3373
  ?>
3374
  </div>
3375
+
3376
  <?php
3377
+ $this->print_recaptcha_script();
3378
  }
3379
 
3380
  protected function print_login_form() {
3497
  } ?>
3498
 
3499
  </div>
3500
+
3501
+ <?php
3502
+ do_action( 'eael/login-register/before-recaptcha', $this );
3503
+ $this->print_recaptcha_node( 'login' );
3504
+ do_action( 'eael/login-register/after-recaptcha', $this );
3505
+ do_action( 'eael/login-register/before-login-footer', $this );
3506
+ ?>
3507
+
3508
+
3509
  <div class="eael-lr-footer">
3510
+ <input type="submit" name="eael-login-submit" id="eael-login-submit" class="g-recaptcha eael-lr-btn eael-lr-btn-block <?php echo esc_attr( $btn_align ); ?>" value="<?php echo esc_attr( $btn_text ); ?>"/>
3511
  <?php if ( $show_reg_link ) { ?>
3512
  <div class="eael-sign-wrapper <?php echo esc_attr( $link_align ); ?>">
3513
  <?php echo $reg_link; // XSS ok. already escaped ?>
3515
  <?php } ?>
3516
 
3517
  </div>
3518
+ <?php do_action( 'eael/login-register/after-login-footer', $this );
3519
+ ?>
3520
  <div class="eael-form-validation-container">
3521
+ <?php $this->print_login_validation_errors(); ?>
3522
  </div>
3523
  <?php
3524
  $this->print_necessary_hidden_fields( 'login' );
3537
  }
3538
  ?>
3539
  </div>
3540
+
3541
  </section>
3542
  <?php
3543
  }
3608
  do_action( 'eael/login-register/before-register-form', $this );
3609
  ?>
3610
  <form class="eael-register-form eael-lr-form" id="eael-register-form" method="post">
3611
+ <?php do_action( 'eael/login-register/after-register-form-open', $this ); ?>
3612
  <?php // Print all dynamic fields
3613
  foreach ( $this->ds['register_fields'] as $f_index => $field ) :
3614
  $field_type = $field['field_type'];
3714
  endforeach;
3715
  $this->print_necessary_hidden_fields( 'register' );
3716
  $this->print_terms_condition_notice();
3717
+ $this->print_recaptcha_node( 'register' );
3718
  ?>
3719
+
3720
  <div class="eael-lr-footer">
3721
  <input type="submit" name="eael-register-submit" id="eael-register-submit" class="eael-lr-btn eael-lr-btn-block<?php echo esc_attr( $btn_align ); ?>" value="<?php echo esc_attr( $btn_text ); ?>"/>
3722
  <?php if ( $show_lgn_link ) { ?>
3727
  </div>
3728
 
3729
  <div class="eael-form-validation-container">
3730
+ <?php $this->print_validation_message(); ?>
3731
  </div>
3732
  <?php
3733
 
3734
+ do_action( 'eael/login-register/before-register-form-close', $this );
3735
+ ?>
3736
  </form>
3737
+ <?php do_action( 'eael/login-register/after-register-form', $this ); ?>
3738
  </div>
3739
  <?php if ( 'right' === $this->form_illustration_pos ) {
3740
  $this->print_form_illustration();
3742
  </div>
3743
  </section>
3744
  <?php
3745
+ $form_markup = apply_filters( 'eael/login-register/register-form-markup', ob_get_clean() );
3746
  // if we are in the editor then show error related to different input field.
3747
  if ( $this->in_editor ) {
3748
  $repeated = $this->print_error_for_repeated_fields( $repeated_f_labels );
3870
  }
3871
  }
3872
 
3873
+ protected function print_recaptcha_script() {
3874
+ return;
3875
+ if ( ! empty( $this->recaptcha_sitekey ) ) { ?>
3876
+ <script type="text/javascript">
3877
+ function onloadLRcb() {
3878
+ var loginRecaptchaNode = document.getElementById('login-recaptcha-node-<?php echo $this->get_id(); ?>');
3879
+ var registerRecaptchaNode = document.getElementById('register-recaptcha-node-<?php echo $this->get_id(); ?>');
3880
+
3881
+ if (loginRecaptchaNode) {
3882
+ grecaptcha.render(loginRecaptchaNode, {
3883
+ 'sitekey': '<?php echo esc_js( $this->recaptcha_sitekey ); ?>',
3884
+ });
3885
+ }
3886
+ if (registerRecaptchaNode) {
3887
+ grecaptcha.render(registerRecaptchaNode, {
3888
+ 'sitekey': '<?php echo esc_js( $this->recaptcha_sitekey ); ?>',
3889
+ });
3890
+ }
3891
+ }
3892
+ </script>
3893
+ <?php
3894
+ }
3895
+ }
3896
+
3897
+ protected function print_recaptcha_node( $form_type = 'login' ) {
3898
+ if ( 'yes' === $this->get_settings_for_display( "enable_{$form_type}_recaptcha" ) ) {
3899
+ $id = "{$form_type}-recaptcha-node-" . $this->get_id();
3900
+ echo "<input type='hidden' name='g-recaptcha-enabled' value='1'/><div id='{$id}' class='eael-recaptcha-wrapper'></div>";
3901
+ }
3902
+ }
3903
+
3904
  protected function print_error_for_repeated_fields( $repeated_fields ) {
3905
  if ( ! empty( $repeated_fields ) ) {
3906
  $error_fields = '<strong>' . implode( "</strong>, <strong>", $repeated_fields ) . '</strong>';
3964
  if ( empty( $errors ) && empty( $success ) ) {
3965
  return;
3966
  }
3967
+ if ( ! empty( $errors ) && is_array( $errors ) ) {
3968
+ $this->print_registration_errors_message( $errors );
3969
+ } else {
3970
+ $this->print_registration_success_message( $success );
3971
+ }
3972
  }
3973
 
3974
  protected function print_registration_errors_message( $errors ) {
4016
  return "{$css_property}: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};";
4017
  }
4018
 
4019
+ }
includes/Traits/Admin.php CHANGED
@@ -212,6 +212,13 @@ include_once EAEL_PLUGIN_PATH . DIRECTORY_SEPARATOR . 'includes/templates/admin/
212
  }
213
 
214
  parse_str($_POST['fields'], $settings);
 
 
 
 
 
 
 
215
 
216
  // Saving Google Map Api Key
217
  update_option('eael_save_google_map_api', @$settings['google-map-api']);
212
  }
213
 
214
  parse_str($_POST['fields'], $settings);
215
+ // Recaptcha Related stuff
216
+ $r_keys = !empty( $settings['eael_recaptcha_keys']) ? explode( ':', sanitize_text_field( $settings['eael_recaptcha_keys'])): [];
217
+ $eael_recaptcha_site_key = !empty( $r_keys[0]) ? sanitize_text_field( $r_keys[0]): '';
218
+ $eael_recaptcha_secret = !empty( $r_keys[1]) ? sanitize_text_field( $r_keys[1]): '';
219
+ // Saving recaptcha keys
220
+ update_option( 'eael_recaptcha_sitekey', $eael_recaptcha_site_key);
221
+ update_option( 'eael_recaptcha_secret', $eael_recaptcha_secret);
222
 
223
  // Saving Google Map Api Key
224
  update_option('eael_save_google_map_api', @$settings['google-map-api']);
includes/Traits/Enqueue.php CHANGED
@@ -56,6 +56,7 @@ trait Enqueue
56
  wp_add_inline_script('nf-front-end', 'var nfForms = nfForms || [];');
57
  });
58
  }
 
59
  }
60
 
61
  public function enqueue_template_scripts($css_file)
56
  wp_add_inline_script('nf-front-end', 'var nfForms = nfForms || [];');
57
  });
58
  }
59
+
60
  }
61
 
62
  public function enqueue_template_scripts($css_file)
includes/Traits/Login_Registration.php CHANGED
@@ -31,13 +31,15 @@ trait Login_Registration {
31
  public static $email_options = [];
32
 
33
  public function login_or_register_user() {
34
-
35
  // login or register form?
36
  if ( isset( $_POST['eael-login-submit'] ) ) {
37
  $this->log_user_in();
38
  } elseif ( isset( $_POST['eael-register-submit'] ) ) {
39
  $this->register_user();
40
  }
 
 
41
  }
42
 
43
  /**
@@ -50,24 +52,36 @@ trait Login_Registration {
50
  if ( $ajax ) {
51
  wp_send_json_error( __( 'Insecure form submitted without security token', EAEL_TEXTDOMAIN ) );
52
  }
 
53
  return false;
54
  }
55
  if ( ! wp_verify_nonce( $_POST['eael-login-nonce'], 'eael-login-action' ) ) {
56
  if ( $ajax ) {
57
  wp_send_json_error( __( 'Security token did not match', EAEL_TEXTDOMAIN ) );
58
  }
 
59
  return false;
60
  }
61
  if ( is_user_logged_in() ) {
62
  if ( $ajax ) {
63
  wp_send_json_error( __( 'You are already logged in', EAEL_TEXTDOMAIN ) );
64
  }
 
65
  return false;
66
  }
67
 
68
  do_action( 'eael/login-register/before-login' );
69
 
70
  $widget_id = ! empty( $_POST['widget_id'] ) ? sanitize_text_field( $_POST['widget_id'] ) : '';
 
 
 
 
 
 
 
 
 
71
 
72
  $user_login = ! empty( $_POST['eael-user-login'] ) ? sanitize_text_field( $_POST['eael-user-login'] ) : '';
73
  if ( is_email( $user_login ) ) {
@@ -111,12 +125,12 @@ trait Login_Registration {
111
  do_action( 'eael/login-register/after-login', $user_data->user_login, $user_data );
112
  if ( $ajax ) {
113
  $data = [
114
- 'message' => __('You are logged in successfully', EAEL_TEXTDOMAIN)
115
  ];
116
  if ( ! empty( $_POST['redirect_to'] ) ) {
117
  $data['redirect_to'] = esc_url( $_POST['redirect_to'] );
118
  }
119
- wp_send_json_success($data);
120
  }
121
 
122
  if ( ! empty( $_POST['redirect_to'] ) ) {
@@ -137,12 +151,14 @@ trait Login_Registration {
137
  if ( $ajax ) {
138
  wp_send_json_error( __( 'Insecure form submitted without security token', EAEL_TEXTDOMAIN ) );
139
  }
 
140
  return false;
141
  }
142
  if ( ! wp_verify_nonce( $_POST['eael-register-nonce'], 'eael-register-action' ) ) {
143
  if ( $ajax ) {
144
  wp_send_json_error( __( 'Security token did not match', EAEL_TEXTDOMAIN ) );
145
  }
 
146
  return false;
147
  }
148
 
@@ -150,6 +166,7 @@ trait Login_Registration {
150
  if ( $ajax ) {
151
  wp_send_json_error( __( 'You are already logged in. Logged out to register a new account', EAEL_TEXTDOMAIN ) );
152
  }
 
153
  return false;
154
  }
155
 
@@ -188,6 +205,9 @@ trait Login_Registration {
188
  if ( isset( $_POST['eael_tnc_active'] ) && empty( $_POST['eael_accept_tnc'] ) ) {
189
  $errors['terms_conditions'] = __( 'You did not accept the Terms and Conditions. Please accept it and try again.', EAEL_TEXTDOMAIN );
190
  }
 
 
 
191
 
192
  if ( ! empty( $_POST['email'] ) && is_email( $_POST['email'] ) ) {
193
  $email = sanitize_email( $_POST['email'] );
@@ -233,9 +253,9 @@ trait Login_Registration {
233
  if ( $ajax ) {
234
  $err_msg = '<ol>';
235
  foreach ( $errors as $error ) {
236
- $err_msg .="<li>{$error}</li>";
237
  }
238
- $err_msg .='</ol>';
239
  wp_send_json_error( $err_msg );
240
  }
241
  $this->set_transient( 'eael_register_errors_' . $widget_id, $errors );
@@ -357,7 +377,7 @@ trait Login_Registration {
357
  wp_new_user_notification( $user_id, null, $admin_or_both );
358
 
359
  // success & handle after registration action as defined by user in the widget
360
- if (!$ajax){
361
  $this->set_transient( 'eael_register_success_' . $widget_id, 1 );
362
  }
363
 
@@ -375,13 +395,13 @@ trait Login_Registration {
375
 
376
  if ( $ajax ) {
377
  $data = [
378
- 'message' => __('Your registration completed successfully.', EAEL_TEXTDOMAIN)
379
  ];
380
 
381
  if ( in_array( 'redirect', $register_actions ) ) {
382
  $data['redirect_to'] = $custom_redirect_url;
383
  }
384
- wp_send_json_success($data);
385
  }
386
 
387
  // if custom redirect not available then refresh the current page to show admin bar
@@ -394,13 +414,13 @@ trait Login_Registration {
394
  // custom redirect?
395
  if ( $ajax ) {
396
  $data = [
397
- 'message' => __('Your registration completed successfully.', EAEL_TEXTDOMAIN)
398
  ];
399
 
400
  if ( in_array( 'redirect', $register_actions ) ) {
401
  $data['redirect_to'] = $custom_redirect_url;
402
  }
403
- wp_send_json_success($data);
404
  }
405
 
406
  if ( in_array( 'redirect', $register_actions ) ) {
@@ -476,7 +496,7 @@ trait Login_Registration {
476
  }
477
 
478
  public function get_user_roles() {
479
- $user_roles['default'] = __( 'Default', EAEL_TEXTDOMAIN );
480
  if ( function_exists( 'get_editable_roles' ) ) {
481
  $wp_roles = get_editable_roles();
482
  $roles = $wp_roles ? $wp_roles : [];
@@ -609,4 +629,31 @@ trait Login_Registration {
609
 
610
  return preg_replace( $placeholders, $replacement, $message );
611
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
612
  }
31
  public static $email_options = [];
32
 
33
  public function login_or_register_user() {
34
+ do_action( 'eael/login-register/before-processing-login-register', $_POST );
35
  // login or register form?
36
  if ( isset( $_POST['eael-login-submit'] ) ) {
37
  $this->log_user_in();
38
  } elseif ( isset( $_POST['eael-register-submit'] ) ) {
39
  $this->register_user();
40
  }
41
+ do_action( 'eael/login-register/after-processing-login-register', $_POST );
42
+
43
  }
44
 
45
  /**
52
  if ( $ajax ) {
53
  wp_send_json_error( __( 'Insecure form submitted without security token', EAEL_TEXTDOMAIN ) );
54
  }
55
+
56
  return false;
57
  }
58
  if ( ! wp_verify_nonce( $_POST['eael-login-nonce'], 'eael-login-action' ) ) {
59
  if ( $ajax ) {
60
  wp_send_json_error( __( 'Security token did not match', EAEL_TEXTDOMAIN ) );
61
  }
62
+
63
  return false;
64
  }
65
  if ( is_user_logged_in() ) {
66
  if ( $ajax ) {
67
  wp_send_json_error( __( 'You are already logged in', EAEL_TEXTDOMAIN ) );
68
  }
69
+
70
  return false;
71
  }
72
 
73
  do_action( 'eael/login-register/before-login' );
74
 
75
  $widget_id = ! empty( $_POST['widget_id'] ) ? sanitize_text_field( $_POST['widget_id'] ) : '';
76
+ if ( isset( $_POST['g-recaptcha-enabled'] ) && ! $this->lr_validate_recaptcha() ) {
77
+ $err_msg = __( 'You did not pass recaptcha challenge.', EAEL_TEXTDOMAIN );
78
+ if ( $ajax ) {
79
+ wp_send_json_error( $err_msg );
80
+ }
81
+ $this->set_transient( 'eael_login_error_' . $widget_id, $err_msg );
82
+
83
+ return false; // vail early if recaptcha failed
84
+ }
85
 
86
  $user_login = ! empty( $_POST['eael-user-login'] ) ? sanitize_text_field( $_POST['eael-user-login'] ) : '';
87
  if ( is_email( $user_login ) ) {
125
  do_action( 'eael/login-register/after-login', $user_data->user_login, $user_data );
126
  if ( $ajax ) {
127
  $data = [
128
+ 'message' => __( 'You are logged in successfully', EAEL_TEXTDOMAIN ),
129
  ];
130
  if ( ! empty( $_POST['redirect_to'] ) ) {
131
  $data['redirect_to'] = esc_url( $_POST['redirect_to'] );
132
  }
133
+ wp_send_json_success( $data );
134
  }
135
 
136
  if ( ! empty( $_POST['redirect_to'] ) ) {
151
  if ( $ajax ) {
152
  wp_send_json_error( __( 'Insecure form submitted without security token', EAEL_TEXTDOMAIN ) );
153
  }
154
+
155
  return false;
156
  }
157
  if ( ! wp_verify_nonce( $_POST['eael-register-nonce'], 'eael-register-action' ) ) {
158
  if ( $ajax ) {
159
  wp_send_json_error( __( 'Security token did not match', EAEL_TEXTDOMAIN ) );
160
  }
161
+
162
  return false;
163
  }
164
 
166
  if ( $ajax ) {
167
  wp_send_json_error( __( 'You are already logged in. Logged out to register a new account', EAEL_TEXTDOMAIN ) );
168
  }
169
+
170
  return false;
171
  }
172
 
205
  if ( isset( $_POST['eael_tnc_active'] ) && empty( $_POST['eael_accept_tnc'] ) ) {
206
  $errors['terms_conditions'] = __( 'You did not accept the Terms and Conditions. Please accept it and try again.', EAEL_TEXTDOMAIN );
207
  }
208
+ if ( isset( $_POST['g-recaptcha-enabled'] ) && ! $this->lr_validate_recaptcha() ) {
209
+ $errors['recaptcha'] = __( 'You did not pass recaptcha challenge.', EAEL_TEXTDOMAIN );
210
+ }
211
 
212
  if ( ! empty( $_POST['email'] ) && is_email( $_POST['email'] ) ) {
213
  $email = sanitize_email( $_POST['email'] );
253
  if ( $ajax ) {
254
  $err_msg = '<ol>';
255
  foreach ( $errors as $error ) {
256
+ $err_msg .= "<li>{$error}</li>";
257
  }
258
+ $err_msg .= '</ol>';
259
  wp_send_json_error( $err_msg );
260
  }
261
  $this->set_transient( 'eael_register_errors_' . $widget_id, $errors );
377
  wp_new_user_notification( $user_id, null, $admin_or_both );
378
 
379
  // success & handle after registration action as defined by user in the widget
380
+ if ( ! $ajax ) {
381
  $this->set_transient( 'eael_register_success_' . $widget_id, 1 );
382
  }
383
 
395
 
396
  if ( $ajax ) {
397
  $data = [
398
+ 'message' => __( 'Your registration completed successfully.', EAEL_TEXTDOMAIN ),
399
  ];
400
 
401
  if ( in_array( 'redirect', $register_actions ) ) {
402
  $data['redirect_to'] = $custom_redirect_url;
403
  }
404
+ wp_send_json_success( $data );
405
  }
406
 
407
  // if custom redirect not available then refresh the current page to show admin bar
414
  // custom redirect?
415
  if ( $ajax ) {
416
  $data = [
417
+ 'message' => __( 'Your registration completed successfully.', EAEL_TEXTDOMAIN ),
418
  ];
419
 
420
  if ( in_array( 'redirect', $register_actions ) ) {
421
  $data['redirect_to'] = $custom_redirect_url;
422
  }
423
+ wp_send_json_success( $data );
424
  }
425
 
426
  if ( in_array( 'redirect', $register_actions ) ) {
496
  }
497
 
498
  public function get_user_roles() {
499
+ $user_roles[''] = __( 'Default', EAEL_TEXTDOMAIN );
500
  if ( function_exists( 'get_editable_roles' ) ) {
501
  $wp_roles = get_editable_roles();
502
  $roles = $wp_roles ? $wp_roles : [];
629
 
630
  return preg_replace( $placeholders, $replacement, $message );
631
  }
632
+
633
+ public function lr_validate_recaptcha() {
634
+ if ( ! isset( $_REQUEST['g-recaptcha-response'] ) ) {
635
+ return false;
636
+ }
637
+ $endpoint = 'https://www.google.com/recaptcha/api/siteverify';
638
+ $data = [
639
+ 'secret' => get_option( 'eael_recaptcha_secret' ),
640
+ 'response' => $_REQUEST['g-recaptcha-response'],
641
+ 'ip' => $_SERVER['REMOTE_ADDR'],
642
+ ];
643
+
644
+ $res = json_decode( wp_remote_retrieve_body( wp_remote_post( $endpoint, [ 'body' => $data ] ) ), 1 );
645
+ if ( isset( $res['success'] ) ) {
646
+ return $res['success'];
647
+ }
648
+
649
+ return false;
650
+ }
651
+
652
+ public function lr_enqueue_scripts( ) {
653
+ $version = defined( 'WP_DEBUG' ) ? time() : EAEL_PLUGIN_VERSION; // stop cache on debug mode
654
+ if ( $site_key = get_option( 'eael_recaptcha_sitekey' ) ) {
655
+ wp_register_script( 'eael-recaptcha', "https://www.google.com/recaptcha/api.js?render=explicit", false,
656
+ $version, false );
657
+ }
658
+ }
659
  }
includes/templates/admin/elements.php CHANGED
@@ -550,8 +550,14 @@ $elements = apply_filters( 'add_eael_elementor_addons', $elements );
550
  echo '<span style="font-size: 12px; font-style:italic;">
551
  '.sprintf("<a id='eael-typeform-get-access' data-link='%s' href='#'>Get Access</a>", esc_url($url)).'
552
  </span>';
 
 
 
 
 
 
 
553
  }
554
-
555
  ?>
556
  </p>
557
  <?php if (!empty( $item['demo_link'])) { ?>
@@ -583,4 +589,4 @@ $elements = apply_filters( 'add_eael_elementor_addons', $elements );
583
  </div>
584
  </div>
585
  </div>
586
- </div>
550
  echo '<span style="font-size: 12px; font-style:italic;">
551
  '.sprintf("<a id='eael-typeform-get-access' data-link='%s' href='#'>Get Access</a>", esc_url($url)).'
552
  </span>';
553
+ } elseif ($item['key'] === 'login-register') {
554
+ $r_key = get_option('eael_recaptcha_sitekey');
555
+ $secret = get_option('eael_recaptcha_secret');
556
+ $r_old_val = !empty( $r_key) && !empty( $secret)? "{$r_key}:{$secret}" : '';
557
+ echo '<span style="font-size: 12px; font-style:italic;"><a href="#" class="eael-admin-settings-popup" data-title="Google reCAPTCHA API Keys" data-placeholder="Insert like Site Key:Secret Key" data-doc="#google-recaptcha-doc" data-target="#eael_recaptcha_keys">'.__('Settings', 'essential-addons-for-elementor-lite').'</a></span>
558
+ <a style="display: none" id="google-recaptcha-doc" target="_blank" href="https://www.google.com/recaptcha/admin/create">'.__('To retrieve your API Keys, click here', 'essential-addons-for-elementor-lite').'</a>
559
+ <input type="hidden" name="eael_recaptcha_keys" id="eael_recaptcha_keys" class="eael_recaptcha_keys" value="' . esc_attr( $r_old_val) . '">';
560
  }
 
561
  ?>
562
  </p>
563
  <?php if (!empty( $item['demo_link'])) { ?>
589
  </div>
590
  </div>
591
  </div>
592
+ </div>
readme.txt CHANGED
@@ -4,7 +4,7 @@ Tags: elementor, elements, addons, elementor addon, elementor widget, elementor
4
  Requires at least: 4.0
5
  Tested up to: 5.5
6
  Requires PHP: 5.4
7
- Stable tag: 4.2.0
8
  License: GPLv3
9
  License URI: https://opensource.org/licenses/GPL-3.0
10
 
@@ -224,6 +224,12 @@ Your existing elements/content will work with premium version. So you won't lose
224
 
225
  == Changelog ==
226
 
 
 
 
 
 
 
227
  = 4.2.0 - 06/08/2020 =
228
  - Added: EA Login | Register Widget
229
  - Removed: Upsell Notices
4
  Requires at least: 4.0
5
  Tested up to: 5.5
6
  Requires PHP: 5.4
7
+ Stable tag: 4.2.1
8
  License: GPLv3
9
  License URI: https://opensource.org/licenses/GPL-3.0
10
 
224
 
225
  == Changelog ==
226
 
227
+ = 4.2.1 - 20/08/2020 =
228
+ - Added: Google reCAPTCHA option in EA Login | Register Form
229
+ - Added: Compatibility with WooCommerce 4.4.1
230
+ - Fixed: User Role not setting correctly in EA Login | Register Form
231
+ - Few minor bugfix and improvements
232
+
233
  = 4.2.0 - 06/08/2020 =
234
  - Added: EA Login | Register Widget
235
  - Removed: Upsell Notices