Changeset 3049139
- Timestamp:
- 03/11/2024 12:41:27 PM (2 years ago)
- Location:
- contact-form-ready
- Files:
-
- 144 added
- 24 edited
-
tags/2.0.11 (added)
-
tags/2.0.11/assets (added)
-
tags/2.0.11/assets/codemirror (added)
-
tags/2.0.11/assets/codemirror/codemirror.css (added)
-
tags/2.0.11/assets/codemirror/codemirror.js (added)
-
tags/2.0.11/assets/codemirror/htmlmixed.js (added)
-
tags/2.0.11/assets/codemirror/monokai.css (added)
-
tags/2.0.11/assets/codemirror/xml.js (added)
-
tags/2.0.11/assets/formbuilder (added)
-
tags/2.0.11/assets/formbuilder/css (added)
-
tags/2.0.11/assets/formbuilder/css/form-builder.css (added)
-
tags/2.0.11/assets/formbuilder/css/form-builder.min.css (added)
-
tags/2.0.11/assets/formbuilder/css/form-render.min.css (added)
-
tags/2.0.11/assets/formbuilder/fonts (added)
-
tags/2.0.11/assets/formbuilder/fonts/fontello (added)
-
tags/2.0.11/assets/formbuilder/fonts/fontello/LICENSE.txt (added)
-
tags/2.0.11/assets/formbuilder/fonts/fontello/README.txt (added)
-
tags/2.0.11/assets/formbuilder/fonts/fontello/config.json (added)
-
tags/2.0.11/assets/formbuilder/fonts/fontello/css (added)
-
tags/2.0.11/assets/formbuilder/fonts/fontello/css/animation.css (added)
-
tags/2.0.11/assets/formbuilder/fonts/fontello/css/form-builder-font-codes.css (added)
-
tags/2.0.11/assets/formbuilder/fonts/fontello/css/form-builder-font-embedded.css (added)
-
tags/2.0.11/assets/formbuilder/fonts/fontello/css/form-builder-font-ie7-codes.css (added)
-
tags/2.0.11/assets/formbuilder/fonts/fontello/css/form-builder-font-ie7.css (added)
-
tags/2.0.11/assets/formbuilder/fonts/fontello/css/form-builder-font.css (added)
-
tags/2.0.11/assets/formbuilder/fonts/fontello/demo.html (added)
-
tags/2.0.11/assets/formbuilder/fonts/fontello/font (added)
-
tags/2.0.11/assets/formbuilder/fonts/fontello/font/form-builder-font.eot (added)
-
tags/2.0.11/assets/formbuilder/fonts/fontello/font/form-builder-font.svg (added)
-
tags/2.0.11/assets/formbuilder/fonts/fontello/font/form-builder-font.ttf (added)
-
tags/2.0.11/assets/formbuilder/fonts/fontello/font/form-builder-font.woff (added)
-
tags/2.0.11/assets/formbuilder/fonts/fontello/font/form-builder-font.woff2 (added)
-
tags/2.0.11/assets/formbuilder/js (added)
-
tags/2.0.11/assets/formbuilder/js/README.md (added)
-
tags/2.0.11/assets/formbuilder/js/control (added)
-
tags/2.0.11/assets/formbuilder/js/control/README.md (added)
-
tags/2.0.11/assets/formbuilder/js/control/autocomplete.js (added)
-
tags/2.0.11/assets/formbuilder/js/control/button.js (added)
-
tags/2.0.11/assets/formbuilder/js/control/custom.js (added)
-
tags/2.0.11/assets/formbuilder/js/control/file.fineuploader.js (added)
-
tags/2.0.11/assets/formbuilder/js/control/hidden.js (added)
-
tags/2.0.11/assets/formbuilder/js/control/index.js (added)
-
tags/2.0.11/assets/formbuilder/js/control/paragraph.js (added)
-
tags/2.0.11/assets/formbuilder/js/control/select.js (added)
-
tags/2.0.11/assets/formbuilder/js/control/text.js (added)
-
tags/2.0.11/assets/formbuilder/js/control/textarea.js (added)
-
tags/2.0.11/assets/formbuilder/js/control/textarea.quill.js (added)
-
tags/2.0.11/assets/formbuilder/js/control/textarea.tinymce.js (added)
-
tags/2.0.11/assets/formbuilder/js/control_plugins (added)
-
tags/2.0.11/assets/formbuilder/js/control_plugins/README.md (added)
-
tags/2.0.11/assets/formbuilder/js/control_plugins/starRating.js (added)
-
tags/2.0.11/assets/formbuilder/js/control_plugins/textarea.trumbowyg.js (added)
-
tags/2.0.11/assets/formbuilder/js/events.js (added)
-
tags/2.0.11/assets/formbuilder/js/form-builder.js (added)
-
tags/2.0.11/assets/formbuilder/js/form-builder.min.js (added)
-
tags/2.0.11/assets/formbuilder/js/form-render.js (added)
-
tags/2.0.11/assets/formbuilder/js/form-render.min.js (added)
-
tags/2.0.11/assets/formbuilder/js/helpers.js (added)
-
tags/2.0.11/assets/formbuilder/js/layout.js (added)
-
tags/2.0.11/assets/formbuilder/js/site.js (added)
-
tags/2.0.11/assets/formbuilder/js/utils.js (added)
-
tags/2.0.11/assets/formbuilder/sass (added)
-
tags/2.0.11/assets/formbuilder/sass/_controls.scss (added)
-
tags/2.0.11/assets/formbuilder/sass/_kc-toggle.scss (added)
-
tags/2.0.11/assets/formbuilder/sass/_stage.scss (added)
-
tags/2.0.11/assets/formbuilder/sass/base (added)
-
tags/2.0.11/assets/formbuilder/sass/base/_animation.scss (added)
-
tags/2.0.11/assets/formbuilder/sass/base/_bs.scss (added)
-
tags/2.0.11/assets/formbuilder/sass/base/_font.scss (added)
-
tags/2.0.11/assets/formbuilder/sass/base/_mixins.scss (added)
-
tags/2.0.11/assets/formbuilder/sass/base/_variables.scss (added)
-
tags/2.0.11/assets/formbuilder/sass/form-builder.scss (added)
-
tags/2.0.11/assets/formbuilder/sass/form-render.scss (added)
-
tags/2.0.11/assets/recaptcha (added)
-
tags/2.0.11/assets/recaptcha/recaptchalib.php (added)
-
tags/2.0.11/contact-form-ready.php (added)
-
tags/2.0.11/css (added)
-
tags/2.0.11/css/admin.css (added)
-
tags/2.0.11/css/front-end.css (added)
-
tags/2.0.11/css/wpcf-tabs-style.css (added)
-
tags/2.0.11/gutenberg (added)
-
tags/2.0.11/gutenberg/block.js (added)
-
tags/2.0.11/gutenberg/style.css (added)
-
tags/2.0.11/images (added)
-
tags/2.0.11/images/BulkSMS.png (added)
-
tags/2.0.11/images/ClickSend.png (added)
-
tags/2.0.11/images/ClickaTell.png (added)
-
tags/2.0.11/images/MailChimp.png (added)
-
tags/2.0.11/images/Slack.png (added)
-
tags/2.0.11/images/Storedsub2.png (added)
-
tags/2.0.11/images/Zendesk.png (added)
-
tags/2.0.11/images/ajax-loader.gif (added)
-
tags/2.0.11/images/cfr-themes.jpg (added)
-
tags/2.0.11/images/icon-256x256.jpeg (added)
-
tags/2.0.11/images/niftyd.png (added)
-
tags/2.0.11/images/pdf.png (added)
-
tags/2.0.11/images/storedsubm.png (added)
-
tags/2.0.11/images/themes (added)
-
tags/2.0.11/images/themes/default.png (added)
-
tags/2.0.11/images/themes/modern.png (added)
-
tags/2.0.11/images/themes/round.png (added)
-
tags/2.0.11/images/themes/slick.png (added)
-
tags/2.0.11/includes (added)
-
tags/2.0.11/includes/class.document.php (added)
-
tags/2.0.11/includes/class.element.php (added)
-
tags/2.0.11/includes/class.html-to-plaintext.php (added)
-
tags/2.0.11/includes/class.selector-to-xpath.php (added)
-
tags/2.0.11/includes/integration_wp_live_chat_support.php (added)
-
tags/2.0.11/includes/module_customizer.php (added)
-
tags/2.0.11/includes/module_integrations.php (added)
-
tags/2.0.11/includes/module_recaptcha.php (added)
-
tags/2.0.11/includes/module_subscribe.php (added)
-
tags/2.0.11/includes/module_template_editor.php (added)
-
tags/2.0.11/js (added)
-
tags/2.0.11/js/admin.js (added)
-
tags/2.0.11/js/admin_settings.js (added)
-
tags/2.0.11/js/admin_styling.js (added)
-
tags/2.0.11/js/cfr_plugin_row.js (added)
-
tags/2.0.11/js/form-builder.js (added)
-
tags/2.0.11/js/shortcode.js (added)
-
tags/2.0.11/js/user.js (added)
-
tags/2.0.11/js/wpcf_tabs.js (added)
-
tags/2.0.11/languages (added)
-
tags/2.0.11/languages/wpcf_nd-en_EN.mo (added)
-
tags/2.0.11/languages/wpcf_nd-en_EN.po (added)
-
tags/2.0.11/languages/wpcf_nd-pl_PL.mo (added)
-
tags/2.0.11/languages/wpcf_nd-pl_PL.po (added)
-
tags/2.0.11/lib (added)
-
tags/2.0.11/lib/codecabin (added)
-
tags/2.0.11/lib/codecabin/plugin-deactivation-survey (added)
-
tags/2.0.11/lib/codecabin/plugin-deactivation-survey/README.md (added)
-
tags/2.0.11/lib/codecabin/plugin-deactivation-survey/deactivate-feedback-form.css (added)
-
tags/2.0.11/lib/codecabin/plugin-deactivation-survey/deactivate-feedback-form.js (added)
-
tags/2.0.11/lib/codecabin/plugin-deactivation-survey/deactivate-feedback-form.php (added)
-
tags/2.0.11/lib/codecabin/plugin-deactivation-survey/remodal-default-theme.css (added)
-
tags/2.0.11/lib/codecabin/plugin-deactivation-survey/remodal.css (added)
-
tags/2.0.11/lib/codecabin/plugin-deactivation-survey/remodal.min.js (added)
-
tags/2.0.11/readme.txt (added)
-
tags/2.0.11/templates (added)
-
tags/2.0.11/templates/mail_template.html (added)
-
tags/2.0.11/templates/welcome.php (added)
-
trunk/assets/codemirror/codemirror.css (modified) (5 diffs)
-
trunk/assets/formbuilder/css/form-builder.css (modified) (1 diff)
-
trunk/assets/formbuilder/js/form-builder.min.js (modified) (1 diff)
-
trunk/assets/formbuilder/js/form-render.min.js (modified) (1 diff)
-
trunk/assets/formbuilder/js/site.js (modified) (2 diffs)
-
trunk/assets/formbuilder/js/utils.js (modified) (1 diff)
-
trunk/contact-form-ready.php (modified) (94 diffs)
-
trunk/css/admin.css (modified) (14 diffs)
-
trunk/css/wpcf-tabs-style.css (modified) (9 diffs)
-
trunk/gutenberg/block.js (modified) (1 diff)
-
trunk/gutenberg/block.json (added)
-
trunk/images/Zapier.png (added)
-
trunk/images/trello.PNG (added)
-
trunk/includes/class.document.php (modified) (10 diffs)
-
trunk/includes/class.element.php (modified) (16 diffs)
-
trunk/includes/module_recaptcha.php (modified) (3 diffs)
-
trunk/includes/module_subscribe.php (modified) (2 diffs)
-
trunk/includes/module_template_editor.php (modified) (1 diff)
-
trunk/js/admin.js (modified) (1 diff)
-
trunk/js/admin_settings.js (modified) (2 diffs)
-
trunk/js/admin_styling.js (modified) (2 diffs)
-
trunk/js/cfr_plugin_row.js (modified) (1 diff)
-
trunk/js/form-builder.js (modified) (1 diff)
-
trunk/js/user.js (modified) (19 diffs)
-
trunk/js/wpcf_tabs.js (modified) (1 diff)
-
trunk/readme.txt (modified) (2 diffs)
-
trunk/templates/mail_template.html (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
contact-form-ready/trunk/assets/codemirror/codemirror.css
r1882463 r3049139 4 4 /* Set height, width, borders, and global font properties here */ 5 5 font-family: monospace; 6 height: 300px;6 height: 100%; 7 7 color: black; 8 8 direction: ltr; 9 10 9 11 } 10 12 … … 12 14 13 15 .CodeMirror-lines { 14 padding: 4px 0; /* Vertical padding around content */ 15 } 16 padding: 0 30px; /* Vertical padding around content */ 17 } 18 16 19 .CodeMirror pre { 17 padding: 0 4px; /* Horizontal padding of content */ 18 } 19 20 padding: 0 26px; /* Horizontal padding of content */ 21 } 20 22 .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler { 21 23 background-color: white; /* The little square between H and V scrollbars */ 24 22 25 } 23 26 … … 29 32 white-space: nowrap; 30 33 } 31 .CodeMirror-linenumbers {} 34 35 .CodeMirror-linenumbers { 36 color: white; 37 } 32 38 .CodeMirror-linenumber { 33 39 padding: 0 3px 0 5px; … … 288 294 .CodeMirror-gutters, 289 295 .CodeMirror-linenumber { 290 -moz-box-sizing: content-box;291 box-sizing: content-box;296 /*-moz-box-sizing: content-box;*/ 297 box-sizing:inherit; 292 298 } 293 299 … … 304 310 pointer-events: none; 305 311 } 306 .CodeMirror-measure pre { position: static; }312 .CodeMirror-measure pre { position: relative; } 307 313 308 314 div.CodeMirror-cursors { -
contact-form-ready/trunk/assets/formbuilder/css/form-builder.css
r1882463 r3049139 162 162 .btn-primary { 163 163 background-color: #337ab7; 164 border-color: # 2e6da4; }164 border-color: #f3f5f6; } 165 165 .btn-primary:hover, .btn-primary:active, .btn-primary.active, .btn-primary.btn-active { 166 166 background-color: #286090; 167 167 border-color: #204d74; } 168 168 169 169 170 .btn-danger { -
contact-form-ready/trunk/assets/formbuilder/js/form-builder.min.js
r2190532 r3049139 4 4 * Author: Kevin Chappell <[email protected]> 5 5 */ 6 !function(e){"use strict";!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=33)}([function(t,r,n){function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){i(e,t,r[t])})}return e}function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){if(null==e)return{};var r,n,o={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}n.d(r,"y",function(){return l}),n.d(r,"A",function(){return u}),n.d(r,"b",function(){return f}),n.d(r,"h",function(){return d}),n.d(r,"m",function(){return m}),n.d(r,"c",function(){return b}),n.d(r,"r",function(){return h}),n.d(r,"p",function(){return v}),n.d(r,"s",function(){return x}),n.d(r,"t",function(){return A}),n.d(r,"g",function(){return O}),n.d(r,"i",function(){return j}),n.d(r,"z",function(){return q}),n.d(r,"u",function(){return C}),n.d(r,"k",function(){return E}),n.d(r,"o",function(){return L}),n.d(r,"l",function(){return N}),n.d(r,"d",function(){return S}),n.d(r,"a",function(){return T}),n.d(r,"e",function(){return D}),n.d(r,"q",function(){return B}),n.d(r,"w",function(){return R}),n.d(r,"j",function(){return F}),n.d(r,"x",function(){return M}),n.d(r,"n",function(){return I}),n.d(r,"v",function(){return z}),window.fbLoaded={js:[],css:[]},window.fbEditors={quill:{},tinymce:{}};var l=function(e){var t=[null,void 0,"",!1,"false"];for(var r in e)t.includes(e[r])?delete e[r]:Array.isArray(e[r])&&(e[r].length||delete e[r]);return e},s=function(e){return!["values","enableOther","other","label","subtype"].includes(e)},u=function(e){return Object.entries(e).map(function(e){var t=e[0],r=e[1];return m(t)+'="'+r+'"'}).join(" ")},f=function(e){return Object.entries(e).map(function(e){var t=e[0],r=e[1];return s(t)&&Object.values(c(t,r)).join("")}).filter(Boolean).join(" ")},c=function(e,t){var r;return e=p(e),t&&(Array.isArray(t)?r=k(t.join(" ")):("boolean"==typeof t&&(t=t.toString()),r=k(t.trim()))),{name:e,value:t=t?'="'+r+'"':""}},d=function e(t){return t.reduce(function(t,r){return t.concat(Array.isArray(r)?e(r):r)},[])},p=function(e){return{className:"class"}[e]||m(e)},m=function(e){return(e=(e=e.replace(/[^\w\s\-]/gi,"")).replace(/([A-Z])/g,function(e){return"-"+e.toLowerCase()})).replace(/\s/g,"-").replace(/^-+/g,"")},b=function(e){return e.replace(/-([a-z])/g,function(e,t){return t.toUpperCase()})},h=function(e){var t=(new Date).getTime();return(e.type||m(e.label))+"-"+t},g=function(e){return void 0===e?e:[["array",function(e){return Array.isArray(e)}],["node",function(e){return e instanceof window.Node||e instanceof window.HTMLElement}],["component",function(){return e&&e.dom}],[typeof e,function(){return!0}]].find(function(t){return t[1](e)})[0]},v=function e(t,r,n){void 0===r&&(r=""),void 0===n&&(n={});var o=g(r),i=n,l=i.events,s=a(i,["events"]),u=document.createElement(t),f={string:function(e){u.innerHTML+=e},object:function(t){var r=t.tag,n=t.content,o=a(t,["tag","content"]);return u.appendChild(e(r,n,o))},node:function(e){return u.appendChild(e)},array:function(e){for(var t=0;t<e.length;t++)o=g(e[t]),f[o](e[t])},function:function(e){e=e(),o=g(e),f[o](e)},undefined:function(){}};for(var c in s)if(s.hasOwnProperty(c)){var d=p(c),m=Array.isArray(s[c])?q(s[c].join(" ").split(" ")).join(" "):s[c];u.setAttribute(d,m)}return r&&f[o](r),function(e,t){if(t){var r=function(r){t.hasOwnProperty(r)&&e.addEventListener(r,function(e){return t[r](e)})};for(var n in t)r(n)}}(u,l),u},y=function(e){var t=e.attributes,r={};return j(t,function(e){var n=t[e].value||"";n.match(/false|true/g)?n="true"===n:n.match(/undefined/g)&&(n=void 0),n&&(r[b(t[e].name)]=n)}),r},w=function(e){for(var t=[],r=0;r<e.length;r++){var n=o({},y(e[r]),{label:e[r].textContent});t.push(n)}return t},x=function(e){var t=(new window.DOMParser).parseFromString(e,"text/xml"),r=[];if(t)for(var n=t.getElementsByTagName("field"),o=0;o<n.length;o++){var i=y(n[o]),a=n[o].getElementsByTagName("option");a&&a.length&&(i.values=w(a)),r.push(i)}return r},A=function(e){var t=document.createElement("textarea");return t.innerHTML=e,t.textContent},O=function(e){var t=document.createElement("textarea");return t.textContent=e,t.innerHTML},k=function(e){var t={'"':""","&":"&","<":"<",">":">"};return"string"==typeof e?e.replace(/["&<>]/g,function(e){return t[e]||e}):e},j=function(e,t,r){for(var n=0;n<e.length;n++)t.call(r,n,e[n])},q=function(e){return e.filter(function(e,t,r){return r.indexOf(e)===t})},C=function(e,t){var r=t.indexOf(e);r>-1&&t.splice(r,1)},E=function(e,t){var r,n=jQuery,o=[];return Array.isArray(e)||(e=[e]),L(e)||(o=jQuery.map(e,function(e){var r={dataType:"script",cache:!0,url:(t||"")+e};return jQuery.ajax(r).done(function(){return window.fbLoaded.js.push(e)})})),o.push(jQuery.Deferred(function(e){return n(e.resolve)})),(r=jQuery).when.apply(r,o)},L=function(e,t){void 0===t&&(t="js");var r=!1,n=window.fbLoaded[t];return r=Array.isArray(e)?e.every(function(e){return n.includes(e)}):n.includes(e),r},N=function(t,r){Array.isArray(t)||(t=[t]),t.forEach(function(t){var n="href",o=t,i="";if("object"==typeof t&&(n=t.type||(t.style?"inline":"href"),i=t.id,t="inline"==n?t.style:t.href,o=i||t.href||t.style),!L(o,"css")){if("href"==n){var a=document.createElement("link");a.type="text/css",a.rel="stylesheet",a.href=(r||"")+t,document.head.appendChild(a)}else e('<style type="text/css">'+t+"</style>").attr("id",i).appendTo(e(document.head));window.fbLoaded.css.push(o)}})},S=function(e){return e.replace(/\b\w/g,function(e){return e.toUpperCase()})},T=function(e,t,r){return t.split(" ").forEach(function(t){return e.addEventListener(t,r,!1)})},D=function(e,t){for(var r=t.replace(".","");(e=e.parentElement)&&!e.classList.contains(r););return e},B=function(){var e,t="";return e=navigator.userAgent||navigator.vendor||window.opera,/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)| iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(e)&&(t="fb-mobile"),t},R=function(e){return e.replace(/\s/g,"-").replace(/[^a-zA-Z0-9[\]_-]/g,"")},F=function(e){return e.replace(/[^0-9]/g,"")},M=function(e,t){return t.filter(function(e){return!~this.indexOf(e)},e)},I=function(e){var t=(e=Array.isArray(e)?e:[e]).map(function(e){var t=e.src,r=e.id;return new Promise(function(e,n){if(window.fbLoaded.css.includes(t))return e(t);var o=v("link",null,{href:t,rel:"stylesheet",id:r});document.head.insertBefore(o,document.head.firstChild)})});return Promise.all(t)},z=function(e){var t=document.getElementById(e);return t.parentElement.removeChild(t)},P={addEventListeners:T,attrString:f,camelCase:b,capitalize:S,closest:D,getContentType:g,escapeAttr:k,escapeAttrs:function(e){for(var t in e)e.hasOwnProperty(t)&&(e[t]=k(e[t]));return e},escapeHtml:O,forceNumber:F,forEach:j,getScripts:E,getStyles:N,hyphenCase:m,isCached:L,markup:v,merge:function e(t,r){var n=Object.assign({},t,r);for(var o in r)n.hasOwnProperty(o)&&(Array.isArray(r[o])?n[o]=Array.isArray(t[o])?q(t[o].concat(r[o])):r[o]:"object"==typeof r[o]?n[o]=e(t[o],r[o]):n[o]=r[o]);return n},mobileClass:B,nameAttr:h,parseAttrs:y,parsedHtml:A,parseOptions:w,parseXML:x,removeFromArray:C,safeAttr:c,safeAttrName:p,safename:R,subtract:M,trimObj:l,unique:q,validAttr:s,splitObject:function(e,t){var r=function(e){return function(t,r){return t[r]=e[r],t}};return[Object.keys(e).filter(function(e){return t.includes(e)}).reduce(r(e),{}),Object.keys(e).filter(function(e){return!t.includes(e)}).reduce(r(e),{})]}};r.f=P},function(e,t,r){r.d(t,"a",function(){return l});var n=r(0),o=r(2),i=r.n(o);function a(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}var l=function(){function e(t,r){this.rawConfig=jQuery.extend({},t),t=jQuery.extend({},t),this.preview=r,delete t.isPreview,this.preview&&delete t.required;for(var n=0,o=["label","description","subtype","required","disabled"];n<o.length;n++){var i=o[n];this[i]=t[i],delete t[i]}t.id||(t.name?t.id=t.name:t.id="control-"+Math.floor(1e7*Math.random()+1)),this.id=t.id,this.type=t.type,this.description&&(t.title=this.description),e.controlConfig||(e.controlConfig={});var a=this.subtype?this.type+"."+this.subtype:this.type;this.classConfig=jQuery.extend({},e.controlConfig[a]||{}),this.subtype&&(t.type=this.subtype),this.required&&(t.required="required",t["aria-required"]="true"),this.disabled&&(t.disabled="disabled"),this.config=t,this.configure()}e.register=function(t,r,n){var o=n?n+".":"";e.classRegister||(e.classRegister={}),Array.isArray(t)||(t=[t]);var i=t,a=Array.isArray(i),l=0;for(i=a?i:i[Symbol.iterator]();;){var s;if(a){if(l>=i.length)break;s=i[l++]}else{if((l=i.next()).done)break;s=l.value}var u=s;-1===u.indexOf(".")?e.classRegister[o+u]=r:e.error("Ignoring type "+u+". Cannot use the character '.' in a type name.")}},e.getRegistered=function(t){void 0===t&&(t=!1);var r=Object.keys(e.classRegister);return r.length?r.filter(function(e){return t?e.indexOf(t+".")>-1:-1==e.indexOf(".")}):r},e.getRegisteredSubtypes=function(){var t={};for(var r in e.classRegister)if(e.classRegister.hasOwnProperty(r)){var n=r.split("."),o=n[0],i=n[1];if(!i)continue;t[o]||(t[o]=[]),t[o].push(i)}return t},e.getClass=function(t,r){var n=r?t+"."+r:t,o=e.classRegister[n]||e.classRegister[t];return o||e.error("Invalid control type. (Type: "+t+", Subtype: "+r+"). Please ensure you have registered it, and imported it correctly.")},e.loadCustom=function(t){var r=[];if(t&&(r=r.concat(t)),window.fbControls&&(r=r.concat(window.fbControls)),!this.fbControlsLoaded){var n=r,o=Array.isArray(n),i=0;for(n=o?n:n[Symbol.iterator]();;){var a;if(o){if(i>=n.length)break;a=n[i++]}else{if((i=n.next()).done)break;a=i.value}a(e,e.classRegister)}this.fbControlsLoaded=!0}},e.mi18n=function(e,t){var r=this.definition,n=r.i18n||{};n=n[i.a.locale]||n.default||n;var o=this.camelCase(e),a="object"==typeof n?n[o]||n[e]:n;if(a)return a;var l=r.mi18n;return"object"==typeof l&&(l=l[o]||l[e]),l||(l=o),i.a.get(l,t)},e.active=function(e){return!Array.isArray(this.definition.inactive)||-1==this.definition.inactive.indexOf(e)},e.label=function(e){return this.mi18n(e)},e.icon=function(e){var t=this.definition;return t&&"object"==typeof t.icon?t.icon[e]:t.icon};var t,r,o,l=e.prototype;return l.configure=function(){},l.build=function(){var e=this.config,t=e.label,r=e.type,o=function(e,t){if(null==e)return{};var r,n,o={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,["label","type"]);return this.markup(r,Object(n.t)(t),o)},l.on=function(e){var t=this,r={prerender:function(e){},render:function(e){var r=function(){t.onRender&&t.onRender()};t.css&&Object(n.l)(t.css),t.js&&!Object(n.o)(t.js)?Object(n.k)(t.js).done(r):r()}};return e?r[e]:r},e.error=function(e){throw new Error(e)},l.markup=function(e,t,r){return void 0===t&&(t=""),void 0===r&&(r={}),this.element=Object(n.p)(e,t,r),this.element},l.parsedHtml=function(e){return Object(n.t)(e)},e.camelCase=function(e){return Object(n.c)(e)},t=e,o=[{key:"definition",get:function(){return{}}}],(r=null)&&a(t.prototype,r),o&&a(t,o),e}()},function(e,t){6 !function(e){"use strict";!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=33)}([function(t,r,n){function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){i(e,t,r[t])})}return e}function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){if(null==e)return{};var r,n,o={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}n.d(r,"y",function(){return l}),n.d(r,"A",function(){return u}),n.d(r,"b",function(){return f}),n.d(r,"h",function(){return d}),n.d(r,"m",function(){return m}),n.d(r,"c",function(){return b}),n.d(r,"r",function(){return h}),n.d(r,"p",function(){return v}),n.d(r,"s",function(){return x}),n.d(r,"t",function(){return A}),n.d(r,"g",function(){return O}),n.d(r,"i",function(){return j}),n.d(r,"z",function(){return q}),n.d(r,"u",function(){return C}),n.d(r,"k",function(){return E}),n.d(r,"o",function(){return L}),n.d(r,"l",function(){return N}),n.d(r,"d",function(){return S}),n.d(r,"a",function(){return T}),n.d(r,"e",function(){return D}),n.d(r,"q",function(){return B}),n.d(r,"w",function(){return R}),n.d(r,"j",function(){return F}),n.d(r,"x",function(){return M}),n.d(r,"n",function(){return I}),n.d(r,"v",function(){return z}),window.fbLoaded={js:[],css:[]},window.fbEditors={quill:{},tinymce:{}};var l=function(e){var t=[null,void 0,"",!1,"false"];for(var r in e)t.includes(e[r])?delete e[r]:Array.isArray(e[r])&&(e[r].length||delete e[r]);return e},s=function(e){return!["values","enableOther","other","label","subtype"].includes(e)},u=function(e){return Object.entries(e).map(function(e){var t=e[0],r=e[1];return m(t)+'="'+r+'"'}).join(" ")},f=function(e){return Object.entries(e).map(function(e){var t=e[0],r=e[1];return s(t)&&Object.values(c(t,r)).join("")}).filter(Boolean).join(" ")},c=function(e,t){var r;return e=p(e),t&&(Array.isArray(t)?r=k(t.join(" ")):("boolean"==typeof t&&(t=t.toString()),r=k(t.trim()))),{name:e,value:t=t?'="'+r+'"':""}},d=function e(t){return t.reduce(function(t,r){return t.concat(Array.isArray(r)?e(r):r)},[])},p=function(e){return{className:"class"}[e]||m(e)},m=function(e){return(e=(e=e.replace(/[^\w\s\-]/gi,"")).replace(/([A-Z])/g,function(e){return"-"+e.toLowerCase()})).replace(/\s/g,"-").replace(/^-+/g,"")},b=function(e){return e.replace(/-([a-z])/g,function(e,t){return t.toUpperCase()})},h=function(e){var t=(new Date).getTime();return(e.type||m(e.label))+"-"+t},g=function(e){return void 0===e?e:[["array",function(e){return Array.isArray(e)}],["node",function(e){return e instanceof window.Node||e instanceof window.HTMLElement}],["component",function(){return e&&e.dom}],[typeof e,function(){return!0}]].find(function(t){return t[1](e)})[0]},v=function e(t,r,n){void 0===r&&(r=""),void 0===n&&(n={});var o=g(r),i=n,l=i.events,s=a(i,["events"]),u=document.createElement(t),f={string:function(e){u.innerHTML+=e},object:function(t){var r=t.tag,n=t.content,o=a(t,["tag","content"]);return u.appendChild(e(r,n,o))},node:function(e){return u.appendChild(e)},array:function(e){for(var t=0;t<e.length;t++)o=g(e[t]),f[o](e[t])},function:function(e){e=e(),o=g(e),f[o](e)},undefined:function(){}};for(var c in s)if(s.hasOwnProperty(c)){var d=p(c),m=Array.isArray(s[c])?q(s[c].join(" ").split(" ")).join(" "):s[c];u.setAttribute(d,m)}return r&&f[o](r),function(e,t){if(t){var r=function(r){t.hasOwnProperty(r)&&e.addEventListener(r,function(e){return t[r](e)})};for(var n in t)r(n)}}(u,l),u},y=function(e){var t=e.attributes,r={};return j(t,function(e){var n=t[e].value||"";n.match(/false|true/g)?n="true"===n:n.match(/undefined/g)&&(n=void 0),n&&(r[b(t[e].name)]=n)}),r},w=function(e){for(var t=[],r=0;r<e.length;r++){var n=o({},y(e[r]),{label:e[r].textContent});t.push(n)}return t},x=function(e){var t=(new window.DOMParser).parseFromString(e,"text/xml"),r=[];if(t)for(var n=t.getElementsByTagName("field"),o=0;o<n.length;o++){var i=y(n[o]),a=n[o].getElementsByTagName("option");a&&a.length&&(i.values=w(a)),r.push(i)}return r},A=function(e){var t=document.createElement("textarea");return t.innerHTML=e,t.textContent},O=function(e){var t=document.createElement("textarea");return t.textContent=e,t.innerHTML},k=function(e){var t={'"':""","&":"&","<":"<",">":">"};return"string"==typeof e?e.replace(/["&<>]/g,function(e){return t[e]||e}):e},j=function(e,t,r){for(var n=0;n<e.length;n++)t.call(r,n,e[n])},q=function(e){return e.filter(function(e,t,r){return r.indexOf(e)===t})},C=function(e,t){var r=t.indexOf(e);r>-1&&t.splice(r,1)},E=function(e,t){var r,n=jQuery,o=[];return Array.isArray(e)||(e=[e]),L(e)||(o=jQuery.map(e,function(e){var r={dataType:"script",cache:!0,url:(t||"")+e};return jQuery.ajax(r).done(function(){return window.fbLoaded.js.push(e)})})),o.push(jQuery.Deferred(function(e){return n(e.resolve)})),(r=jQuery).when.apply(r,o)},L=function(e,t){void 0===t&&(t="js");var r=!1,n=window.fbLoaded[t];return r=Array.isArray(e)?e.every(function(e){return n.includes(e)}):n.includes(e),r},N=function(t,r){Array.isArray(t)||(t=[t]),t.forEach(function(t){var n="href",o=t,i="";if("object"==typeof t&&(n=t.type||(t.style?"inline":"href"),i=t.id,t="inline"==n?t.style:t.href,o=i||t.href||t.style),!L(o,"css")){if("href"==n){var a=document.createElement("link");a.type="text/css",a.rel="stylesheet",a.href=(r||"")+t,document.head.appendChild(a)}else e('<style type="text/css">'+t+"</style>").attr("id",i).appendTo(e(document.head));window.fbLoaded.css.push(o)}})},S=function(e){return e.replace(/\b\w/g,function(e){return e.toUpperCase()})},T=function(e,t,r){return t.split(" ").forEach(function(t){return e.addEventListener(t,r,!1)})},D=function(e,t){for(var r=t.replace(".","");(e=e.parentElement)&&!e.classList.contains(r););return e},B=function(){var e,t="";return e=navigator.userAgent||navigator.vendor||window.opera,/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(e)&&(t="fb-mobile"),t},R=function(e){return e.replace(/\s/g,"-").replace(/[^a-zA-Z0-9[\]_-]/g,"")},F=function(e){return e.replace(/[^0-9]/g,"")},M=function(e,t){return t.filter(function(e){return!~this.indexOf(e)},e)},I=function(e){var t=(e=Array.isArray(e)?e:[e]).map(function(e){var t=e.src,r=e.id;return new Promise(function(e,n){if(window.fbLoaded.css.includes(t))return e(t);var o=v("link",null,{href:t,rel:"stylesheet",id:r});document.head.insertBefore(o,document.head.firstChild)})});return Promise.all(t)},z=function(e){var t=document.getElementById(e);return t.parentElement.removeChild(t)},P={addEventListeners:T,attrString:f,camelCase:b,capitalize:S,closest:D,getContentType:g,escapeAttr:k,escapeAttrs:function(e){for(var t in e)e.hasOwnProperty(t)&&(e[t]=k(e[t]));return e},escapeHtml:O,forceNumber:F,forEach:j,getScripts:E,getStyles:N,hyphenCase:m,isCached:L,markup:v,merge:function e(t,r){var n=Object.assign({},t,r);for(var o in r)n.hasOwnProperty(o)&&(Array.isArray(r[o])?n[o]=Array.isArray(t[o])?q(t[o].concat(r[o])):r[o]:"object"==typeof r[o]?n[o]=e(t[o],r[o]):n[o]=r[o]);return n},mobileClass:B,nameAttr:h,parseAttrs:y,parsedHtml:A,parseOptions:w,parseXML:x,removeFromArray:C,safeAttr:c,safeAttrName:p,safename:R,subtract:M,trimObj:l,unique:q,validAttr:s,splitObject:function(e,t){var r=function(e){return function(t,r){return t[r]=e[r],t}};return[Object.keys(e).filter(function(e){return t.includes(e)}).reduce(r(e),{}),Object.keys(e).filter(function(e){return!t.includes(e)}).reduce(r(e),{})]}};r.f=P},function(e,t,r){r.d(t,"a",function(){return l});var n=r(0),o=r(2),i=r.n(o);function a(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}var l=function(){function e(t,r){this.rawConfig=jQuery.extend({},t),t=jQuery.extend({},t),this.preview=r,delete t.isPreview,this.preview&&delete t.required;for(var n=0,o=["label","description","subtype","required","disabled"];n<o.length;n++){var i=o[n];this[i]=t[i],delete t[i]}t.id||(t.name?t.id=t.name:t.id="control-"+Math.floor(1e7*Math.random()+1)),this.id=t.id,this.type=t.type,this.description&&(t.title=this.description),e.controlConfig||(e.controlConfig={});var a=this.subtype?this.type+"."+this.subtype:this.type;this.classConfig=jQuery.extend({},e.controlConfig[a]||{}),this.subtype&&(t.type=this.subtype),this.required&&(t.required="required",t["aria-required"]="true"),this.disabled&&(t.disabled="disabled"),this.config=t,this.configure()}e.register=function(t,r,n){var o=n?n+".":"";e.classRegister||(e.classRegister={}),Array.isArray(t)||(t=[t]);var i=t,a=Array.isArray(i),l=0;for(i=a?i:i[Symbol.iterator]();;){var s;if(a){if(l>=i.length)break;s=i[l++]}else{if((l=i.next()).done)break;s=l.value}var u=s;-1===u.indexOf(".")?e.classRegister[o+u]=r:e.error("Ignoring type "+u+". Cannot use the character '.' in a type name.")}},e.getRegistered=function(t){void 0===t&&(t=!1);var r=Object.keys(e.classRegister);return r.length?r.filter(function(e){return t?e.indexOf(t+".")>-1:-1==e.indexOf(".")}):r},e.getRegisteredSubtypes=function(){var t={};for(var r in e.classRegister)if(e.classRegister.hasOwnProperty(r)){var n=r.split("."),o=n[0],i=n[1];if(!i)continue;t[o]||(t[o]=[]),t[o].push(i)}return t},e.getClass=function(t,r){var n=r?t+"."+r:t,o=e.classRegister[n]||e.classRegister[t];return o||e.error("Invalid control type. (Type: "+t+", Subtype: "+r+"). Please ensure you have registered it, and imported it correctly.")},e.loadCustom=function(t){var r=[];if(t&&(r=r.concat(t)),window.fbControls&&(r=r.concat(window.fbControls)),!this.fbControlsLoaded){var n=r,o=Array.isArray(n),i=0;for(n=o?n:n[Symbol.iterator]();;){var a;if(o){if(i>=n.length)break;a=n[i++]}else{if((i=n.next()).done)break;a=i.value}a(e,e.classRegister)}this.fbControlsLoaded=!0}},e.mi18n=function(e,t){var r=this.definition,n=r.i18n||{};n=n[i.a.locale]||n.default||n;var o=this.camelCase(e),a="object"==typeof n?n[o]||n[e]:n;if(a)return a;var l=r.mi18n;return"object"==typeof l&&(l=l[o]||l[e]),l||(l=o),i.a.get(l,t)},e.active=function(e){return!Array.isArray(this.definition.inactive)||-1==this.definition.inactive.indexOf(e)},e.label=function(e){return this.mi18n(e)},e.icon=function(e){var t=this.definition;return t&&"object"==typeof t.icon?t.icon[e]:t.icon};var t,r,o,l=e.prototype;return l.configure=function(){},l.build=function(){var e=this.config,t=e.label,r=e.type,o=function(e,t){if(null==e)return{};var r,n,o={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,["label","type"]);return this.markup(r,Object(n.t)(t),o)},l.on=function(e){var t=this,r={prerender:function(e){},render:function(e){var r=function(){t.onRender&&t.onRender()};t.css&&Object(n.l)(t.css),t.js&&!Object(n.o)(t.js)?Object(n.k)(t.js).done(r):r()}};return e?r[e]:r},e.error=function(e){throw new Error(e)},l.markup=function(e,t,r){return void 0===t&&(t=""),void 0===r&&(r={}),this.element=Object(n.p)(e,t,r),this.element},l.parsedHtml=function(e){return Object(n.t)(e)},e.camelCase=function(e){return Object(n.c)(e)},t=e,o=[{key:"definition",get:function(){return{}}}],(r=null)&&a(t.prototype,r),o&&a(t,o),e}()},function(e,t){ 7 7 /*! 8 8 * mi18n - https://github.com/Draggable/mi18n -
contact-form-ready/trunk/assets/formbuilder/js/form-render.min.js
r2190532 r3049139 4 4 * Author: Kevin Chappell <[email protected]> 5 5 */ 6 !function(e){"use strict";!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=28)}([function(t,n,r){function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){i(e,t,n[t])})}return e}function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}r.d(n,"y",function(){return s}),r.d(n,"A",function(){return u}),r.d(n,"b",function(){return c}),r.d(n,"h",function(){return f}),r.d(n,"m",function(){return h}),r.d(n,"c",function(){return m}),r.d(n,"r",function(){return g}),r.d(n,"p",function(){return v}),r.d(n,"s",function(){return w}),r.d(n,"t",function(){return q}),r.d(n,"g",function(){return j}),r.d(n,"i",function(){return k}),r.d(n,"z",function(){return C}),r.d(n,"u",function(){return A}),r.d(n,"k",function(){return E}),r.d(n,"o",function(){return S}),r.d(n,"l",function(){return R}),r.d(n,"d",function(){return T}),r.d(n,"a",function(){return L}),r.d(n,"e",function(){return N}),r.d(n,"q",function(){return D}),r.d(n,"w",function(){return F}),r.d(n,"j",function(){return _}),r.d(n,"x",function(){return P}),r.d(n,"n",function(){return U}),r.d(n,"v",function(){return M}),window.fbLoaded={js:[],css:[]},window.fbEditors={quill:{},tinymce:{}};var s=function(e){var t=[null,void 0,"",!1,"false"];for(var n in e)t.includes(e[n])?delete e[n]:Array.isArray(e[n])&&(e[n].length||delete e[n]);return e},l=function(e){return!["values","enableOther","other","label","subtype"].includes(e)},u=function(e){return Object.entries(e).map(function(e){var t=e[0],n=e[1];return h(t)+'="'+n+'"'}).join(" ")},c=function(e){return Object.entries(e).map(function(e){var t=e[0],n=e[1];return l(t)&&Object.values(d(t,n)).join("")}).filter(Boolean).join(" ")},d=function(e,t){var n;return e=p(e),t&&(Array.isArray(t)?n=O(t.join(" ")):("boolean"==typeof t&&(t=t.toString()),n=O(t.trim()))),{name:e,value:t=t?'="'+n+'"':""}},f=function e(t){return t.reduce(function(t,n){return t.concat(Array.isArray(n)?e(n):n)},[])},p=function(e){return{className:"class"}[e]||h(e)},h=function(e){return(e=(e=e.replace(/[^\w\s\-]/gi,"")).replace(/([A-Z])/g,function(e){return"-"+e.toLowerCase()})).replace(/\s/g,"-").replace(/^-+/g,"")},m=function(e){return e.replace(/-([a-z])/g,function(e,t){return t.toUpperCase()})},g=function(e){var t=(new Date).getTime();return(e.type||h(e.label))+"-"+t},b=function(e){return void 0===e?e:[["array",function(e){return Array.isArray(e)}],["node",function(e){return e instanceof window.Node||e instanceof window.HTMLElement}],["component",function(){return e&&e.dom}],[typeof e,function(){return!0}]].find(function(t){return t[1](e)})[0]},v=function e(t,n,r){void 0===n&&(n=""),void 0===r&&(r={});var o=b(n),i=r,s=i.events,l=a(i,["events"]),u=document.createElement(t),c={string:function(e){u.innerHTML+=e},object:function(t){var n=t.tag,r=t.content,o=a(t,["tag","content"]);return u.appendChild(e(n,r,o))},node:function(e){return u.appendChild(e)},array:function(e){for(var t=0;t<e.length;t++)o=b(e[t]),c[o](e[t])},function:function(e){e=e(),o=b(e),c[o](e)},undefined:function(){}};for(var d in l)if(l.hasOwnProperty(d)){var f=p(d),h=Array.isArray(l[d])?C(l[d].join(" ").split(" ")).join(" "):l[d];u.setAttribute(f,h)}return n&&c[o](n),function(e,t){if(t){var n=function(n){t.hasOwnProperty(n)&&e.addEventListener(n,function(e){return t[n](e)})};for(var r in t)n(r)}}(u,s),u},y=function(e){var t=e.attributes,n={};return k(t,function(e){var r=t[e].value||"";r.match(/false|true/g)?r="true"===r:r.match(/undefined/g)&&(r=void 0),r&&(n[m(t[e].name)]=r)}),n},x=function(e){for(var t=[],n=0;n<e.length;n++){var r=o({},y(e[n]),{label:e[n].textContent});t.push(r)}return t},w=function(e){var t=(new window.DOMParser).parseFromString(e,"text/xml"),n=[];if(t)for(var r=t.getElementsByTagName("field"),o=0;o<r.length;o++){var i=y(r[o]),a=r[o].getElementsByTagName("option");a&&a.length&&(i.values=x(a)),n.push(i)}return n},q=function(e){var t=document.createElement("textarea");return t.innerHTML=e,t.textContent},j=function(e){var t=document.createElement("textarea");return t.textContent=e,t.innerHTML},O=function(e){var t={'"':""","&":"&","<":"<",">":">"};return"string"==typeof e?e.replace(/["&<>]/g,function(e){return t[e]||e}):e},k=function(e,t,n){for(var r=0;r<e.length;r++)t.call(n,r,e[r])},C=function(e){return e.filter(function(e,t,n){return n.indexOf(e)===t})},A=function(e,t){var n=t.indexOf(e);n>-1&&t.splice(n,1)},E=function(e,t){var n,r=jQuery,o=[];return Array.isArray(e)||(e=[e]),S(e)||(o=jQuery.map(e,function(e){var n={dataType:"script",cache:!0,url:(t||"")+e};return jQuery.ajax(n).done(function(){return window.fbLoaded.js.push(e)})})),o.push(jQuery.Deferred(function(e){return r(e.resolve)})),(n=jQuery).when.apply(n,o)},S=function(e,t){void 0===t&&(t="js");var n=!1,r=window.fbLoaded[t];return n=Array.isArray(e)?e.every(function(e){return r.includes(e)}):r.includes(e),n},R=function(t,n){Array.isArray(t)||(t=[t]),t.forEach(function(t){var r="href",o=t,i="";if("object"==typeof t&&(r=t.type||(t.style?"inline":"href"),i=t.id,t="inline"==r?t.style:t.href,o=i||t.href||t.style),!S(o,"css")){if("href"==r){var a=document.createElement("link");a.type="text/css",a.rel="stylesheet",a.href=(n||"")+t,document.head.appendChild(a)}else e('<style type="text/css">'+t+"</style>").attr("id",i).appendTo(e(document.head));window.fbLoaded.css.push(o)}})},T=function(e){return e.replace(/\b\w/g,function(e){return e.toUpperCase()})},L=function(e,t,n){return t.split(" ").forEach(function(t){return e.addEventListener(t,n,!1)})},N=function(e,t){for(var n=t.replace(".","");(e=e.parentElement)&&!e.classList.contains(n););return e},D=function(){var e,t="";return e=navigator.userAgent||navigator.vendor||window.opera,/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)| iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(e)&&(t="fb-mobile"),t},F=function(e){return e.replace(/\s/g,"-").replace(/[^a-zA-Z0-9[\]_-]/g,"")},_=function(e){return e.replace(/[^0-9]/g,"")},P=function(e,t){return t.filter(function(e){return!~this.indexOf(e)},e)},U=function(e){var t=(e=Array.isArray(e)?e:[e]).map(function(e){var t=e.src,n=e.id;return new Promise(function(e,r){if(window.fbLoaded.css.includes(t))return e(t);var o=v("link",null,{href:t,rel:"stylesheet",id:n});document.head.insertBefore(o,document.head.firstChild)})});return Promise.all(t)},M=function(e){var t=document.getElementById(e);return t.parentElement.removeChild(t)},B={addEventListeners:L,attrString:c,camelCase:m,capitalize:T,closest:N,getContentType:b,escapeAttr:O,escapeAttrs:function(e){for(var t in e)e.hasOwnProperty(t)&&(e[t]=O(e[t]));return e},escapeHtml:j,forceNumber:_,forEach:k,getScripts:E,getStyles:R,hyphenCase:h,isCached:S,markup:v,merge:function e(t,n){var r=Object.assign({},t,n);for(var o in n)r.hasOwnProperty(o)&&(Array.isArray(n[o])?r[o]=Array.isArray(t[o])?C(t[o].concat(n[o])):n[o]:"object"==typeof n[o]?r[o]=e(t[o],n[o]):r[o]=n[o]);return r},mobileClass:D,nameAttr:g,parseAttrs:y,parsedHtml:q,parseOptions:x,parseXML:w,removeFromArray:A,safeAttr:d,safeAttrName:p,safename:F,subtract:P,trimObj:s,unique:C,validAttr:l,splitObject:function(e,t){var n=function(e){return function(t,n){return t[n]=e[n],t}};return[Object.keys(e).filter(function(e){return t.includes(e)}).reduce(n(e),{}),Object.keys(e).filter(function(e){return!t.includes(e)}).reduce(n(e),{})]}};n.f=B},function(e,t,n){n.d(t,"a",function(){return s});var r=n(0),o=n(2),i=n.n(o);function a(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}var s=function(){function e(t,n){this.rawConfig=jQuery.extend({},t),t=jQuery.extend({},t),this.preview=n,delete t.isPreview,this.preview&&delete t.required;for(var r=0,o=["label","description","subtype","required","disabled"];r<o.length;r++){var i=o[r];this[i]=t[i],delete t[i]}t.id||(t.name?t.id=t.name:t.id="control-"+Math.floor(1e7*Math.random()+1)),this.id=t.id,this.type=t.type,this.description&&(t.title=this.description),e.controlConfig||(e.controlConfig={});var a=this.subtype?this.type+"."+this.subtype:this.type;this.classConfig=jQuery.extend({},e.controlConfig[a]||{}),this.subtype&&(t.type=this.subtype),this.required&&(t.required="required",t["aria-required"]="true"),this.disabled&&(t.disabled="disabled"),this.config=t,this.configure()}e.register=function(t,n,r){var o=r?r+".":"";e.classRegister||(e.classRegister={}),Array.isArray(t)||(t=[t]);var i=t,a=Array.isArray(i),s=0;for(i=a?i:i[Symbol.iterator]();;){var l;if(a){if(s>=i.length)break;l=i[s++]}else{if((s=i.next()).done)break;l=s.value}var u=l;-1===u.indexOf(".")?e.classRegister[o+u]=n:e.error("Ignoring type "+u+". Cannot use the character '.' in a type name.")}},e.getRegistered=function(t){void 0===t&&(t=!1);var n=Object.keys(e.classRegister);return n.length?n.filter(function(e){return t?e.indexOf(t+".")>-1:-1==e.indexOf(".")}):n},e.getRegisteredSubtypes=function(){var t={};for(var n in e.classRegister)if(e.classRegister.hasOwnProperty(n)){var r=n.split("."),o=r[0],i=r[1];if(!i)continue;t[o]||(t[o]=[]),t[o].push(i)}return t},e.getClass=function(t,n){var r=n?t+"."+n:t,o=e.classRegister[r]||e.classRegister[t];return o||e.error("Invalid control type. (Type: "+t+", Subtype: "+n+"). Please ensure you have registered it, and imported it correctly.")},e.loadCustom=function(t){var n=[];if(t&&(n=n.concat(t)),window.fbControls&&(n=n.concat(window.fbControls)),!this.fbControlsLoaded){var r=n,o=Array.isArray(r),i=0;for(r=o?r:r[Symbol.iterator]();;){var a;if(o){if(i>=r.length)break;a=r[i++]}else{if((i=r.next()).done)break;a=i.value}a(e,e.classRegister)}this.fbControlsLoaded=!0}},e.mi18n=function(e,t){var n=this.definition,r=n.i18n||{};r=r[i.a.locale]||r.default||r;var o=this.camelCase(e),a="object"==typeof r?r[o]||r[e]:r;if(a)return a;var s=n.mi18n;return"object"==typeof s&&(s=s[o]||s[e]),s||(s=o),i.a.get(s,t)},e.active=function(e){return!Array.isArray(this.definition.inactive)||-1==this.definition.inactive.indexOf(e)},e.label=function(e){return this.mi18n(e)},e.icon=function(e){var t=this.definition;return t&&"object"==typeof t.icon?t.icon[e]:t.icon};var t,n,o,s=e.prototype;return s.configure=function(){},s.build=function(){var e=this.config,t=e.label,n=e.type,o=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,["label","type"]);return this.markup(n,Object(r.t)(t),o)},s.on=function(e){var t=this,n={prerender:function(e){},render:function(e){var n=function(){t.onRender&&t.onRender()};t.css&&Object(r.l)(t.css),t.js&&!Object(r.o)(t.js)?Object(r.k)(t.js).done(n):n()}};return e?n[e]:n},e.error=function(e){throw new Error(e)},s.markup=function(e,t,n){return void 0===t&&(t=""),void 0===n&&(n={}),this.element=Object(r.p)(e,t,n),this.element},s.parsedHtml=function(e){return Object(r.t)(e)},e.camelCase=function(e){return Object(r.c)(e)},t=e,o=[{key:"definition",get:function(){return{}}}],(n=null)&&a(t.prototype,n),o&&a(t,o),e}()},function(e,t){6 !function(e){"use strict";!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=28)}([function(t,n,r){function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){i(e,t,n[t])})}return e}function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}r.d(n,"y",function(){return s}),r.d(n,"A",function(){return u}),r.d(n,"b",function(){return c}),r.d(n,"h",function(){return f}),r.d(n,"m",function(){return h}),r.d(n,"c",function(){return m}),r.d(n,"r",function(){return g}),r.d(n,"p",function(){return v}),r.d(n,"s",function(){return w}),r.d(n,"t",function(){return q}),r.d(n,"g",function(){return j}),r.d(n,"i",function(){return k}),r.d(n,"z",function(){return C}),r.d(n,"u",function(){return A}),r.d(n,"k",function(){return E}),r.d(n,"o",function(){return S}),r.d(n,"l",function(){return R}),r.d(n,"d",function(){return T}),r.d(n,"a",function(){return L}),r.d(n,"e",function(){return N}),r.d(n,"q",function(){return D}),r.d(n,"w",function(){return F}),r.d(n,"j",function(){return _}),r.d(n,"x",function(){return P}),r.d(n,"n",function(){return U}),r.d(n,"v",function(){return M}),window.fbLoaded={js:[],css:[]},window.fbEditors={quill:{},tinymce:{}};var s=function(e){var t=[null,void 0,"",!1,"false"];for(var n in e)t.includes(e[n])?delete e[n]:Array.isArray(e[n])&&(e[n].length||delete e[n]);return e},l=function(e){return!["values","enableOther","other","label","subtype"].includes(e)},u=function(e){return Object.entries(e).map(function(e){var t=e[0],n=e[1];return h(t)+'="'+n+'"'}).join(" ")},c=function(e){return Object.entries(e).map(function(e){var t=e[0],n=e[1];return l(t)&&Object.values(d(t,n)).join("")}).filter(Boolean).join(" ")},d=function(e,t){var n;return e=p(e),t&&(Array.isArray(t)?n=O(t.join(" ")):("boolean"==typeof t&&(t=t.toString()),n=O(t.trim()))),{name:e,value:t=t?'="'+n+'"':""}},f=function e(t){return t.reduce(function(t,n){return t.concat(Array.isArray(n)?e(n):n)},[])},p=function(e){return{className:"class"}[e]||h(e)},h=function(e){return(e=(e=e.replace(/[^\w\s\-]/gi,"")).replace(/([A-Z])/g,function(e){return"-"+e.toLowerCase()})).replace(/\s/g,"-").replace(/^-+/g,"")},m=function(e){return e.replace(/-([a-z])/g,function(e,t){return t.toUpperCase()})},g=function(e){var t=(new Date).getTime();return(e.type||h(e.label))+"-"+t},b=function(e){return void 0===e?e:[["array",function(e){return Array.isArray(e)}],["node",function(e){return e instanceof window.Node||e instanceof window.HTMLElement}],["component",function(){return e&&e.dom}],[typeof e,function(){return!0}]].find(function(t){return t[1](e)})[0]},v=function e(t,n,r){void 0===n&&(n=""),void 0===r&&(r={});var o=b(n),i=r,s=i.events,l=a(i,["events"]),u=document.createElement(t),c={string:function(e){u.innerHTML+=e},object:function(t){var n=t.tag,r=t.content,o=a(t,["tag","content"]);return u.appendChild(e(n,r,o))},node:function(e){return u.appendChild(e)},array:function(e){for(var t=0;t<e.length;t++)o=b(e[t]),c[o](e[t])},function:function(e){e=e(),o=b(e),c[o](e)},undefined:function(){}};for(var d in l)if(l.hasOwnProperty(d)){var f=p(d),h=Array.isArray(l[d])?C(l[d].join(" ").split(" ")).join(" "):l[d];u.setAttribute(f,h)}return n&&c[o](n),function(e,t){if(t){var n=function(n){t.hasOwnProperty(n)&&e.addEventListener(n,function(e){return t[n](e)})};for(var r in t)n(r)}}(u,s),u},y=function(e){var t=e.attributes,n={};return k(t,function(e){var r=t[e].value||"";r.match(/false|true/g)?r="true"===r:r.match(/undefined/g)&&(r=void 0),r&&(n[m(t[e].name)]=r)}),n},x=function(e){for(var t=[],n=0;n<e.length;n++){var r=o({},y(e[n]),{label:e[n].textContent});t.push(r)}return t},w=function(e){var t=(new window.DOMParser).parseFromString(e,"text/xml"),n=[];if(t)for(var r=t.getElementsByTagName("field"),o=0;o<r.length;o++){var i=y(r[o]),a=r[o].getElementsByTagName("option");a&&a.length&&(i.values=x(a)),n.push(i)}return n},q=function(e){var t=document.createElement("textarea");return t.innerHTML=e,t.textContent},j=function(e){var t=document.createElement("textarea");return t.textContent=e,t.innerHTML},O=function(e){var t={'"':""","&":"&","<":"<",">":">"};return"string"==typeof e?e.replace(/["&<>]/g,function(e){return t[e]||e}):e},k=function(e,t,n){for(var r=0;r<e.length;r++)t.call(n,r,e[r])},C=function(e){return e.filter(function(e,t,n){return n.indexOf(e)===t})},A=function(e,t){var n=t.indexOf(e);n>-1&&t.splice(n,1)},E=function(e,t){var n,r=jQuery,o=[];return Array.isArray(e)||(e=[e]),S(e)||(o=jQuery.map(e,function(e){var n={dataType:"script",cache:!0,url:(t||"")+e};return jQuery.ajax(n).done(function(){return window.fbLoaded.js.push(e)})})),o.push(jQuery.Deferred(function(e){return r(e.resolve)})),(n=jQuery).when.apply(n,o)},S=function(e,t){void 0===t&&(t="js");var n=!1,r=window.fbLoaded[t];return n=Array.isArray(e)?e.every(function(e){return r.includes(e)}):r.includes(e),n},R=function(t,n){Array.isArray(t)||(t=[t]),t.forEach(function(t){var r="href",o=t,i="";if("object"==typeof t&&(r=t.type||(t.style?"inline":"href"),i=t.id,t="inline"==r?t.style:t.href,o=i||t.href||t.style),!S(o,"css")){if("href"==r){var a=document.createElement("link");a.type="text/css",a.rel="stylesheet",a.href=(n||"")+t,document.head.appendChild(a)}else e('<style type="text/css">'+t+"</style>").attr("id",i).appendTo(e(document.head));window.fbLoaded.css.push(o)}})},T=function(e){return e.replace(/\b\w/g,function(e){return e.toUpperCase()})},L=function(e,t,n){return t.split(" ").forEach(function(t){return e.addEventListener(t,n,!1)})},N=function(e,t){for(var n=t.replace(".","");(e=e.parentElement)&&!e.classList.contains(n););return e},D=function(){var e,t="";return e=navigator.userAgent||navigator.vendor||window.opera,/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(e)&&(t="fb-mobile"),t},F=function(e){return e.replace(/\s/g,"-").replace(/[^a-zA-Z0-9[\]_-]/g,"")},_=function(e){return e.replace(/[^0-9]/g,"")},P=function(e,t){return t.filter(function(e){return!~this.indexOf(e)},e)},U=function(e){var t=(e=Array.isArray(e)?e:[e]).map(function(e){var t=e.src,n=e.id;return new Promise(function(e,r){if(window.fbLoaded.css.includes(t))return e(t);var o=v("link",null,{href:t,rel:"stylesheet",id:n});document.head.insertBefore(o,document.head.firstChild)})});return Promise.all(t)},M=function(e){var t=document.getElementById(e);return t.parentElement.removeChild(t)},B={addEventListeners:L,attrString:c,camelCase:m,capitalize:T,closest:N,getContentType:b,escapeAttr:O,escapeAttrs:function(e){for(var t in e)e.hasOwnProperty(t)&&(e[t]=O(e[t]));return e},escapeHtml:j,forceNumber:_,forEach:k,getScripts:E,getStyles:R,hyphenCase:h,isCached:S,markup:v,merge:function e(t,n){var r=Object.assign({},t,n);for(var o in n)r.hasOwnProperty(o)&&(Array.isArray(n[o])?r[o]=Array.isArray(t[o])?C(t[o].concat(n[o])):n[o]:"object"==typeof n[o]?r[o]=e(t[o],n[o]):r[o]=n[o]);return r},mobileClass:D,nameAttr:g,parseAttrs:y,parsedHtml:q,parseOptions:x,parseXML:w,removeFromArray:A,safeAttr:d,safeAttrName:p,safename:F,subtract:P,trimObj:s,unique:C,validAttr:l,splitObject:function(e,t){var n=function(e){return function(t,n){return t[n]=e[n],t}};return[Object.keys(e).filter(function(e){return t.includes(e)}).reduce(n(e),{}),Object.keys(e).filter(function(e){return!t.includes(e)}).reduce(n(e),{})]}};n.f=B},function(e,t,n){n.d(t,"a",function(){return s});var r=n(0),o=n(2),i=n.n(o);function a(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}var s=function(){function e(t,n){this.rawConfig=jQuery.extend({},t),t=jQuery.extend({},t),this.preview=n,delete t.isPreview,this.preview&&delete t.required;for(var r=0,o=["label","description","subtype","required","disabled"];r<o.length;r++){var i=o[r];this[i]=t[i],delete t[i]}t.id||(t.name?t.id=t.name:t.id="control-"+Math.floor(1e7*Math.random()+1)),this.id=t.id,this.type=t.type,this.description&&(t.title=this.description),e.controlConfig||(e.controlConfig={});var a=this.subtype?this.type+"."+this.subtype:this.type;this.classConfig=jQuery.extend({},e.controlConfig[a]||{}),this.subtype&&(t.type=this.subtype),this.required&&(t.required="required",t["aria-required"]="true"),this.disabled&&(t.disabled="disabled"),this.config=t,this.configure()}e.register=function(t,n,r){var o=r?r+".":"";e.classRegister||(e.classRegister={}),Array.isArray(t)||(t=[t]);var i=t,a=Array.isArray(i),s=0;for(i=a?i:i[Symbol.iterator]();;){var l;if(a){if(s>=i.length)break;l=i[s++]}else{if((s=i.next()).done)break;l=s.value}var u=l;-1===u.indexOf(".")?e.classRegister[o+u]=n:e.error("Ignoring type "+u+". Cannot use the character '.' in a type name.")}},e.getRegistered=function(t){void 0===t&&(t=!1);var n=Object.keys(e.classRegister);return n.length?n.filter(function(e){return t?e.indexOf(t+".")>-1:-1==e.indexOf(".")}):n},e.getRegisteredSubtypes=function(){var t={};for(var n in e.classRegister)if(e.classRegister.hasOwnProperty(n)){var r=n.split("."),o=r[0],i=r[1];if(!i)continue;t[o]||(t[o]=[]),t[o].push(i)}return t},e.getClass=function(t,n){var r=n?t+"."+n:t,o=e.classRegister[r]||e.classRegister[t];return o||e.error("Invalid control type. (Type: "+t+", Subtype: "+n+"). Please ensure you have registered it, and imported it correctly.")},e.loadCustom=function(t){var n=[];if(t&&(n=n.concat(t)),window.fbControls&&(n=n.concat(window.fbControls)),!this.fbControlsLoaded){var r=n,o=Array.isArray(r),i=0;for(r=o?r:r[Symbol.iterator]();;){var a;if(o){if(i>=r.length)break;a=r[i++]}else{if((i=r.next()).done)break;a=i.value}a(e,e.classRegister)}this.fbControlsLoaded=!0}},e.mi18n=function(e,t){var n=this.definition,r=n.i18n||{};r=r[i.a.locale]||r.default||r;var o=this.camelCase(e),a="object"==typeof r?r[o]||r[e]:r;if(a)return a;var s=n.mi18n;return"object"==typeof s&&(s=s[o]||s[e]),s||(s=o),i.a.get(s,t)},e.active=function(e){return!Array.isArray(this.definition.inactive)||-1==this.definition.inactive.indexOf(e)},e.label=function(e){return this.mi18n(e)},e.icon=function(e){var t=this.definition;return t&&"object"==typeof t.icon?t.icon[e]:t.icon};var t,n,o,s=e.prototype;return s.configure=function(){},s.build=function(){var e=this.config,t=e.label,n=e.type,o=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,["label","type"]);return this.markup(n,Object(r.t)(t),o)},s.on=function(e){var t=this,n={prerender:function(e){},render:function(e){var n=function(){t.onRender&&t.onRender()};t.css&&Object(r.l)(t.css),t.js&&!Object(r.o)(t.js)?Object(r.k)(t.js).done(n):n()}};return e?n[e]:n},e.error=function(e){throw new Error(e)},s.markup=function(e,t,n){return void 0===t&&(t=""),void 0===n&&(n={}),this.element=Object(r.p)(e,t,n),this.element},s.parsedHtml=function(e){return Object(r.t)(e)},e.camelCase=function(e){return Object(r.c)(e)},t=e,o=[{key:"definition",get:function(){return{}}}],(n=null)&&a(t.prototype,n),o&&a(t,o),e}()},function(e,t){ 7 7 /*! 8 8 * mi18n - https://github.com/Draggable/mi18n -
contact-form-ready/trunk/assets/formbuilder/js/site.js
r2190532 r3049139 13 13 editOnAdd: true, 14 14 dataType: 'xml', 15 formData: tmpformData ,15 formData: tmpformData.json, 16 16 disableHTMLLabels: true, 17 17 onAddField: function(formData) { … … 26 26 27 27 }; 28 28 29 var isJson = false; 29 30 try { 30 var json = jQuery.parseJSON(tmpformData);31 var json = JSON.parse(tmpformData.json); 31 32 isJson = true; 32 33 } catch(err) { 33 34 isJson = false; 34 35 } 35 if (isJson) { 36 fbOptions.formData = tmpformData; 36 37 if (isJson) { 38 fbOptions.formData = tmpformData.json; 37 39 fbOptions.dataType = 'json'; 38 } 40 } 41 42 39 43 formBuilder = jQuery(buildWrap).formBuilder(fbOptions); 40 44 -
contact-form-ready/trunk/assets/formbuilder/js/utils.js
r1882463 r3049139 551 551 // eslint-disable-next-line 552 552 if ( 553 /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)| iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(553 /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test( 554 554 a 555 555 ) || 556 /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq| iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(556 /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test( 557 557 a.substr(0, 4) 558 558 ) -
contact-form-ready/trunk/contact-form-ready.php
r2230921 r3049139 4 4 Plugin URI: http://contactformready.com 5 5 Description: The easiest to use Contact Form plugin for WordPress with a drag and drop interface. 6 Version: 2.0.1 06 Version: 2.0.12 7 7 Author: NickDuncan 8 8 Author URI: http://nickduncan.co.za … … 11 11 12 12 /** 13 * 2.0.12 - 2024-03-12 14 * Enhancement: Rebuilt gutenberg block modules to bring up to specification with latest WordPress guidelines 15 * Enhancement: PHP8+ compatibility added, first phase of updates 16 * Bug Fix: Fixed security issue with styling page due to missing nonce checks. Thanks Nguyen Xuan Chien (Patchstack) 17 * Bug Fix: Fixed security issue with settings page due to missing nonce checks. Thanks Nguyen Xuan Chien (Patchstack) 18 * Bug Fix: Improved settings/styling storage security by enforcing a user access check 19 * Bug Fix: Fixed issue with wp_localize_script usage for reset string localization 20 * Bug Fix: Fixed issue with wp_localize_script usage for demo form structure localization 21 * Bug Fix: Fixed issues with accessing arrays that may not be defined/stored 22 * Bug Fix: Fixed issues with REST API registration calls not being up to specification, missing permission callback 23 * Bug Fix: Standardized localizers to group common strings within an object, instead of making multiple localization calls 24 * Bug Fix: Fixed issue where form structures were not storing correctly 25 * Bug Fix: Improved sanitization and escaping workflows throughout the plugin core code 26 * Bug Fix: Fixed JSON parser issues in user.js 27 * Bug Fix: Disabled welcome notice, and subsequently feature vote system. No longer active, and caused issues 28 * General: Tested on WordPress 6.5 29 * General: Readme brought up to specification 30 * 31 * 2.0.11 - 2020-11-30 32 * Tested on WordPress 5.5.3 33 * Modernized admin areas 34 * Added custom secure REST endpoint – ‘get_forms’ 35 * Added REST API tab in Settings 36 * Added Live Preview on Styling tab 37 * Added Dark Mode feature for Live Preview on Styling tab 38 * Added Custom CSS feature 39 * Bug Fix: Fixed a bug that prevented extension settings from displaying 40 * Bug Fix: Fixed GDPR warning buttons and links 41 * Bug Fix: Fixed a bug that prevented custom stylings on front end 42 * Bug Fix: Fixed various styling issues 43 * Bug Fix: Fixed various bugs 44 * 13 45 * 2.0.10 - 2020-01-21 14 46 * Bug Fix: Fixed jQuery() .tabs is not a function … … 175 207 class WP_Contact_Form_ND{ 176 208 177 var $current_version; 209 public $current_version; 210 public $upload_dir; 211 public $upload_url; 178 212 179 213 public function __construct(){ 180 214 181 $this->current_version = "2.0.1 0";215 $this->current_version = "2.0.11"; 182 216 183 217 $this->upload_dir =(defined('WP_CONTENT_DIR')) ? WP_CONTENT_DIR . '/uploads' : ABSPATH . 'wp-content' . $this->DS() . 'uploads'; … … 196 230 add_action( "init", array($this, "check_versions") ); 197 231 add_action( "init", array($this, "create_post_type") ); 232 add_action( "init", array($this, "wpcf_nd_create_token") ); 198 233 add_action( "plugins_loaded", array($this, "load_plugin_textdomain") ); 199 234 add_filter( "wpcf_nd_html_control", array( $this, "wpcf_nd_filter_control_html_control" ), 10, 2 ); … … 228 263 // add_action('wpcf_gdpr_reg_cron_hook', array( $this, 'wpcf_gdpr_register_cron') ); 229 264 230 add_filter( 'views_edit-contact-forms-nd', array( $this, 'wpcf_nd_view_message_welcome' ), 10, 1 );265 //add_filter( 'views_edit-contact-forms-nd', array( $this, 'wpcf_nd_view_message_welcome' ), 10, 1 ); 231 266 232 267 add_filter( 'wp_mail_from', array( $this, 'wpcf_nd_filter_control_from_mail_headers_from_address' ), 10, 1 ); … … 234 269 235 270 add_filter( 'codecabin_deactivate_feedback_form_plugins', array( $this, 'wpcf_nd_filter_deactivate_feedback_form' ), 10, 1 ); 271 272 add_action( 'rest_api_init', array( $this, 'wpcf_rest_routes_init' )); 273 274 } 275 276 function wpcf_rest_routes_init(){ 277 register_rest_route('contact-form-ready/v1', '/get_forms', 278 array( 279 'methods' => 'GET, POST', 280 'callback' => array( $this , 'wpcf_nd_get_forms_rest'), 281 'permission_callback' => '__return_true' 282 )); 283 } 284 285 function wpcf_nd_get_forms_rest( WP_REST_Request $data ){ 286 287 $return_array = array(); 288 289 if( isset( $data ) ){ 290 if( isset( $data['token'] ) ){ 291 if( $data['token'] == get_option('wpcf_nd_token') ){ 292 $args = array( 293 'post_type' => 'contact-forms-nd', 294 'posts_per_page' => -1 295 ); 296 297 $the_query = new WP_Query( $args ); 298 $forms_array = array(); 299 if ( $the_query->have_posts() ) { 300 while ( $the_query->have_posts() ) { 301 $the_query->the_post(); 302 $forms_array[] = array( 303 'title' => get_the_title(), 304 ); 305 } 306 wp_reset_postdata(); 307 } 308 309 $return_array['response'] = "Forms returned successfully"; 310 $return_array['code'] = "200"; 311 $return_array['data'] = array( $forms_array ); 312 } else { 313 $return_array['response'] = "Secret token is invalid"; 314 $return_array['code'] = "401"; 315 } 316 } else { 317 $return_array['response'] = "No 'security' found"; 318 $return_array['code'] = "401"; 319 } 320 } else{ 321 $return_array['response'] = "No request data found"; 322 $return_array['code'] = "400"; 323 } 324 return $return_array; 236 325 } 237 326 … … 259 348 } 260 349 261 262 350 function wpcf_nd_ajax_callback() { 263 264 351 /* encoding error fixed 3 march 2015 - albert */ 265 352 /* url_decode() shouldn't be used */ 266 267 268 269 353 global $wpdb; 270 354 $check = check_ajax_referer('wpcf_close_welcome', 'security'); 271 272 355 if ($check == 1) { 273 274 356 if ($_POST['action'] == "wpcf_close_welcome") { 275 276 357 update_user_meta( get_current_user_id(), 'wpcf_nd_hide_welcome_block', true ); 277 358 wp_die(); 278 359 } 279 280 360 } 281 282 283 } 284 361 } 285 362 286 363 function redirect_on_activate( $plugin ) { … … 292 369 @ob_end_clean(); 293 370 exit( wp_redirect( admin_url( 'admin.php?page=wpcf-settings&action=wpcf_nd_welcome' ) ) ); 294 295 371 } 296 372 } … … 299 375 function wpcf_nd_control_post() { 300 376 if ( isset( $_POST['wpcf_nd_submit'] ) ) { 301 302 377 if ( ! isset( $_POST['wpcf_nonce_field'] ) || ! wp_verify_nonce( $_POST['wpcf_nonce_field'], 'wpcf_nd' ) ) { 303 378 // invalid nonce 304 379 } else { 305 306 380 do_action( "wpcf_nd_main_post_control" ); 307 308 381 } 309 310 } 311 382 } 312 383 } 313 384 … … 341 412 $tmpbody .= " <td width='50%' align='left' valign='top'><strong>". esc_attr( $k ). "</strong></td><td align='left'>: ". esc_attr( $v ) ."</td>"; 342 413 $tmpbody .= "</tr>"; 343 $txt_only_sub .= esc_attr( $k ). " : ". esc_attr( $v )." \r\n";414 $txt_only_sub .= esc_attr( $k ). " : ". esc_attr( $v )." \r\n "; 344 415 } 345 416 $tmpbody .= "</table>"; … … 347 418 $body .= " <td width='50%' align='right' valign='top'><strong>". esc_attr( $key ). "</strong></td><td align='left'>" . $tmpbody ."</td>"; 348 419 $body .= "</tr>"; 349 $txt_only .= esc_attr( $key ). " : ". $txt_only_sub." \r\n";420 $txt_only .= esc_attr( $key ). " : ". $txt_only_sub." \r\n "; 350 421 351 422 } else { … … 368 439 $body .= "<td width='50%' align='right' valign='top'><strong>". esc_attr( $key ). "</strong></td><td align='left'>: ". $user_email . "</td>"; 369 440 $body .= "</tr>"; 370 $txt_only .= esc_attr( $key ) . " : " . $user_email . " \r\n";441 $txt_only .= esc_attr( $key ) . " : " . $user_email . " \r\n "; 371 442 } else { 372 443 … … 377 448 $body .= "<td width='50%' align='right' valign='top'><strong>". esc_attr( $key ). "</strong></td><td align='left'>: ". nl2br( esc_attr( $val ) ). "</td>"; 378 449 $body .= "</tr>"; 379 $txt_only .= esc_attr( $key ) . " : " . esc_attr( $val ) . " \r\n";450 $txt_only .= esc_attr( $key ) . " : " . esc_attr( $val ) . " \r\n "; 380 451 381 452 } … … 387 458 $cfr_enable_gdpr_delete_button = ( isset($wpcf_nd_settings['wpcf_nd_enable_gdpr_delete_button']) && $wpcf_nd_settings['wpcf_nd_enable_gdpr_delete_button'] == 1 ); 388 459 $cfr_enable_gdpr_download_button = ( isset($wpcf_nd_settings['wpcf_nd_enable_gdpr_download_button']) && $wpcf_nd_settings['wpcf_nd_enable_gdpr_download_button'] == 1 ); 460 389 461 if ( $cfr_enable_gdpr && isset( $_POST['gdpr_agree'] ) ) { 390 462 $value = ( 'on' === $_POST['gdpr_agree'] ) ? __("YES", "wpcf_nd") : __("NO", "wpcf_nd"); … … 393 465 $body .= "</tr>"; 394 466 } 467 395 468 if ( $cfr_enable_gdpr_download_button && isset( $_POST['gdpr_send_data'] ) ) { 396 469 $value = ( 'on' === $_POST['gdpr_send_data'] ) ? __("YES", "wpcf_nd") : __("NO", "wpcf_nd"); … … 399 472 $body .= "</tr>"; 400 473 } 474 401 475 if ( $cfr_enable_gdpr_delete_button && isset( $_POST['gdpr_delete_data'] ) ) { 402 476 $value = ( 'on' === $_POST['gdpr_delete_data'] ) ? __("YES", "wpcf_nd") : __("NO", "wpcf_nd"); … … 408 482 409 483 $this->increase_submissions( $cfid ); 410 411 484 412 485 $data = array( … … 417 490 'post_data' => $_POST, 418 491 ); 492 419 493 $data = apply_filters( 'wpcf_nd_filter_main_post_data', $data, 1, 10 ); 420 494 … … 427 501 exit(); 428 502 } 503 429 504 global $wpcf_thank_you; 430 431 505 432 506 $wpcf_nd_settings = get_option( "wpcf_nd_settings" ); … … 442 516 function wpcf_nd_api_post() { 443 517 444 445 518 $this->create_contact_form_types(); 446 447 448 519 449 520 if (isset($_POST['action']) && $_POST['action'] == 'wpcf_nd_submit_find_us') { … … 478 549 update_post_meta(intval($cfid), 'cform_submissions', $submissions); 479 550 } 551 480 552 function increase_views($cfid) { 481 553 $views = intval(get_post_meta( $cfid , 'cform_views' , true )); … … 488 560 } 489 561 490 491 492 562 function wpcf_nd_filter_control_from_mail_headers_from_address( $email ) { 493 563 $wpcf_nd_settings = get_option( "wpcf_nd_settings" ); … … 500 570 } 501 571 502 503 572 function wpcf_nd_filter_control_from_mail_headers_from_name( $email ) { 504 573 $wpcf_nd_settings = get_option( "wpcf_nd_settings" ); … … 510 579 511 580 } 512 513 581 514 582 function wpcf_send_email($cfid,$body,$sent_data) { … … 516 584 517 585 $wpcf_nd_settings = get_option( "wpcf_nd_settings" ); 518 519 586 $sendto = get_post_meta( $cfid, 'wpcf_nd_send_to', true ); 520 521 587 if (!$sendto) { 522 588 //set admin email as defaul email address if nothing was set 523 589 $sendto = get_option( 'admin_email' ); 524 525 590 } else { 526 591 if (is_array($sendto)) { … … 531 596 532 597 $header = sprintf("<a href='%s'>%s</a>",get_option('siteurl'),get_option('blogname')); 533 534 598 $orig_body = $body; 535 599 536 600 // SEND TO ADMIN 537 601 $wpcf_nd_settings = get_post_meta( $cfid, 'wpcf_nd_email_sending_settings', true ); 538 539 602 if( $wpcf_nd_settings == '' ){ 540 541 603 /** 542 604 * Either new user, or updated to the latest version 543 605 */ 544 545 606 $wpcf_nd_settings = get_option("wpcf_nd_settings"); 546 607 $subject_admin = isset( $wpcf_nd_settings['wpcf_nd_subject_admin'] ) ? $wpcf_nd_settings['wpcf_nd_subject_admin'] : $wpcf_nd_settings['wpcf_nd_subject_admin'] = __("New Contact Form Submission","wpcf_nd"); … … 550 611 $cfr_email_subject_user = isset( $wpcf_nd_settings['wpcf_nd_subject_user'] ) ? $wpcf_nd_settings['wpcf_nd_subject_user'] : __("Contact Form Submission Received","wpcf_nd"); 551 612 $cfr_email_body_user = isset( $wpcf_nd_settings['wpcf_nd_message_user'] ) ? $wpcf_nd_settings['wpcf_nd_message_user'] : __( "Thank you for your message. We will respond to you as soon as possible." , "wpcf_nd" );; 552 553 613 } else { 554 555 614 $subject_admin = isset( $wpcf_nd_settings['wpcf_nd_subject_admin'] ) ? $wpcf_nd_settings['wpcf_nd_subject_admin'] : $wpcf_nd_settings['wpcf_nd_subject_admin'] = __("New Contact Form Submission","wpcf_nd"); 556 615 $message_admin = isset( $wpcf_nd_settings['wpcf_nd_message_admin'] ) ? $wpcf_nd_settings['wpcf_nd_message_admin'] : $wpcf_nd_settings['wpcf_nd_message_admin'] = __("A new message has been received.","wpcf_nd"); … … 559 618 $cfr_email_subject_user = isset( $wpcf_nd_settings['wpcf_nd_subject_user'] ) ? $wpcf_nd_settings['wpcf_nd_subject_user'] : __("Contact Form Submission Received","wpcf_nd"); 560 619 $cfr_email_body_user = isset( $wpcf_nd_settings['wpcf_nd_message_user'] ) ? $wpcf_nd_settings['wpcf_nd_message_user'] : __( "Thank you for your message. We will respond to you as soon as possible." , "wpcf_nd" );; 561 562 620 } 563 621 … … 568 626 'header' => stripslashes( esc_html( $message_admin ) ) 569 627 ); 628 570 629 $body = apply_filters( "wpcf_nd_email_wrapper" , $data ); 571 572 630 573 631 if ( isset( $sent_data['user_email'] ) && isset( $wpcf_nd_settings['wpcf_nd_send_as_user'] ) && $wpcf_nd_settings['wpcf_nd_send_as_user'] == 1 ) { … … 592 650 593 651 @wp_mail( $sendto , stripslashes( $subject_admin ) , $plaintext , $headers , $attachments ); 594 595 652 596 653 // SEND TO USER? 597 654 if ( $send_to_user !== '' && $send_to_user == '1' && $sent_data['user_email'] != false) { 598 599 655 $data = array( 600 656 'message' => $orig_body, … … 603 659 'header' => stripslashes( esc_html( $cfr_email_body_user ) ) 604 660 ); 661 605 662 $body = apply_filters( "wpcf_nd_email_wrapper" , $data ); 606 663 … … 614 671 @wp_mail( $sent_data['user_email'] , stripslashes( $cfr_email_subject_user ) , $plaintext , $headers , $attachments ); 615 672 } 616 617 618 619 673 } 620 674 … … 622 676 add_meta_box('wpcf_nd_main', __('Contact Form Data','wpcf_nd'), array( $this, 'wpcf_main_content' ), 'contact-forms-nd', 'normal', 'default'); 623 677 } 624 625 678 626 679 function wpcf_nd_add_cf_control_metabox( $post ) { … … 632 685 add_meta_box('wpcf_nd_main_support', __('Need help?','wpcf_nd'), array( $this, 'wpcf_main_support' ), 'contact-forms-nd', 'side', 'default'); 633 686 } 687 634 688 function wpcf_main_support( $post ) { 635 689 echo "<p>".sprintf(__( "Browse the <a href='%s' target='_BLANK'>documentation</a>.", "wpcf_nd" ),'http://www.contactformready.com/documentation/')."</p>"; 636 690 echo "<p>".sprintf(__( "Or get in touch with <a href='%s'>[email protected]</a>", "wpcf_nd" ), 'mailto:[email protected]'). "</p>"; 637 638 } 639 691 } 640 692 641 693 function wpcf_main_ext_metabox( $post ) { … … 644 696 645 697 } 646 647 648 698 649 699 function wpcf_main_control( $post ) { … … 660 710 } 661 711 } 712 662 713 $wpcf_nd_redirect_uri = get_post_meta( $post->ID, 'wpcf_nd_redirect_uri', true ); 663 714 $submit_string = get_post_meta( $post->ID, 'wpcf_nd_submit_string' , true ); … … 666 717 $submit_string = __("Send","wpcf_nd"); 667 718 } 719 668 720 if (!$form_type || $form_type === null) { 669 721 $form_type = '0'; 670 722 } 723 671 724 $wpcf_nd_settings = get_option( "wpcf_nd_settings" ); 672 725 $wpcf_nd_basic_settings = get_option( "wpcf_nd_basic_settings" ); 673 $modal_el_attr = $wpcf_nd_basic_settings['wpcf_nd_modal_el_attr']; 674 $modal_el = $wpcf_nd_basic_settings['wpcf_nd_modal_el']; 675 $modal_bg = $wpcf_nd_basic_settings['wpcf_nd_modal_bg']; 676 $modal_opacity = $wpcf_nd_basic_settings['wpcf_nd_modal_opacity']; 677 $modal_inner_bg = $wpcf_nd_basic_settings['wpcf_nd_modal_inner_bg']; 726 727 $modal_el_attr = !empty($wpcf_nd_basic_settings['wpcf_nd_modal_el_attr']) ? $wpcf_nd_basic_settings['wpcf_nd_modal_el_attr'] : ''; 728 $modal_el = !empty($wpcf_nd_basic_settings['wpcf_nd_modal_el']) ? $wpcf_nd_basic_settings['wpcf_nd_modal_el'] : ''; 729 $modal_bg = !empty($wpcf_nd_basic_settings['wpcf_nd_modal_bg']) ? $wpcf_nd_basic_settings['wpcf_nd_modal_bg'] : ''; 730 $modal_opacity = !empty($wpcf_nd_basic_settings['wpcf_nd_modal_opacity']) ? $wpcf_nd_basic_settings['wpcf_nd_modal_opacity'] : ''; 731 $modal_inner_bg = !empty($wpcf_nd_basic_settings['wpcf_nd_modal_inner_bg']) ? $wpcf_nd_basic_settings['wpcf_nd_modal_inner_bg'] : ''; 732 678 733 if ('' === trim($modal_bg)) { 679 734 $modal_bg = '#222222'; 680 735 } 736 681 737 if ('' === trim($modal_opacity)) { 682 738 $modal_opacity = '0.8'; 683 739 } 740 684 741 if ('' === trim($modal_inner_bg)) { 685 742 $modal_inner_bg = '#ffffff'; 686 743 } 687 688 744 689 745 $tabs_array = array( … … 721 777 <td width='250'><label for='wpcf_nd_shortcode'><?php _e("Shortcode","wpcf_nd"); ?></label></td> 722 778 <td> 723 <input id="wpcf-shortcode-input" type='text' readonly value='[cform-nd id="<?php echo $post->ID; ?>"]' />779 <input id="wpcf-shortcode-input" class="wpcf_shortcode_copy" type='text' readonly value='[cform-nd id="<?php echo intval($post->ID); ?>"]' /> 724 780 <span class="wpcf-shortcode-copy-text"><?php _e( 'Copied to clipboard', 'wpcf_nd' ) ?></span> 725 781 <p class='description'><?php _e("Copy this to your post or page to show the contact form","wpcf_nd"); ?></p> … … 730 786 <td valign='top'><label for='wpcf_nd_send_to'><?php _e("Send emails to","wpcf_nd"); ?></label></td> 731 787 <td> 732 <input type='text' value='<?php echo $sendto; ?>' id='wpcf_nd_send_to' name='wpcf_nd_send_to' class='regular-text' />788 <input type='text' value='<?php echo esc_attr($sendto); ?>' id='wpcf_nd_send_to' name='wpcf_nd_send_to' class='regular-text' /> 733 789 <p class='description'><?php _e("Multiple emails separated by commas","wpcf_nd"); ?></p> 734 790 … … 738 794 <td valign='top'><label for='wpcf_nd_redirect_uri'><?php _e("Redirect to URL after submit","wpcf_nd"); ?></label></td> 739 795 <td> 740 <input type='text' value='<?php echo $wpcf_nd_redirect_uri; ?>' id='wpcf_nd_redirect_uri' name='wpcf_nd_redirect_uri' class='regular-text code' />796 <input type='text' value='<?php echo esc_attr($wpcf_nd_redirect_uri); ?>' id='wpcf_nd_redirect_uri' name='wpcf_nd_redirect_uri' class='regular-text code' /> 741 797 <p class='description'><?php _e("Example: /thank-you <br>Leave blank for no redirect","wpcf_nd"); ?></p> 742 798 </td> … … 744 800 <tr> 745 801 <td><label for='wpcf_nd_submit_string'><?php _e( "Submit button value", "wpcf_nd" ); ?></label></td> 746 <td><input type='text' value='<?php echo $submit_string; ?>' id='wpcf_nd_submit_string' name='wpcf_nd_submit_string' /></td>802 <td><input type='text' value='<?php echo esc_attr($submit_string); ?>' id='wpcf_nd_submit_string' name='wpcf_nd_submit_string' /></td> 747 803 </tr> 748 804 <tr> … … 762 818 <option value="id" <?php selected( $modal_el_attr, 'id' ) ?>><?php _e( "id", "wpcf_nd" ); ?></option> 763 819 </select> 764 <input type='text' value='<?php echo $modal_el; ?>' id='wpcf_nd_modal_el' name='wpcf_nd_modal_el' />820 <input type='text' value='<?php echo esc_attr($modal_el); ?>' id='wpcf_nd_modal_el' name='wpcf_nd_modal_el' /> 765 821 <p class='description'><?php _e("Leave this field empty if you don't want modal window","wpcf_nd"); ?></p> 766 822 </td> … … 768 824 <tr class="wpcf-modal-customization is-active"> 769 825 <td><label for='wpcf_nd_modal_bg'><?php _e( "Modal wrapper background color", "wpcf_nd" ); ?></label></td> 770 <td><input type=' text' value='<?php echo $modal_bg; ?>' id='wpcf_nd_modal_bg' class='wpcf-color-input' name='wpcf_nd_modal_bg' /></td>826 <td><input type='color' value='<?php echo esc_attr($modal_bg); ?>' id='wpcf_nd_modal_bg' class='wpcf-color-input' name='wpcf_nd_modal_bg' /></td> 771 827 </tr> 772 828 <tr class="wpcf-modal-customization is-active"> 773 829 <td><label for='wpcf_nd_modal_opacity'><?php _e( "Modal wrapper opacity", "wpcf_nd" ); ?></label></td> 774 830 <td> 775 <input type='text' value='<?php echo $modal_opacity; ?>' id='wpcf_nd_modal_opacity' name='wpcf_nd_modal_opacity' />831 <input type='text' value='<?php echo floatval($modal_opacity); ?>' id='wpcf_nd_modal_opacity' name='wpcf_nd_modal_opacity' /> 776 832 <p class='description'><?php _e("Please type value between 0 and 1 (default 0.8)","wpcf_nd"); ?></p> 777 833 </td> … … 779 835 <tr class="wpcf-modal-customization is-active"> 780 836 <td><label for='wpcf_nd_modal_inner_bg'><?php _e( "Modal inner background", "wpcf_nd" ); ?></label></td> 781 <td><input type=' text' value='<?php echo $modal_inner_bg; ?>' id='wpcf_nd_modal_inner_bg' class='wpcf-color-input' name='wpcf_nd_modal_inner_bg' /></td>837 <td><input type='color' value='<?php echo esc_attr($modal_inner_bg); ?>' id='wpcf_nd_modal_inner_bg' class='wpcf-color-input' name='wpcf_nd_modal_inner_bg' /></td> 782 838 </tr> 783 839 <?php do_action( "wpcf_hook_form_builder_table_bottom", $post, $wpcf_nd_settings ); ?> … … 809 865 $cfr_email_body_user = ( isset($wpcf_nd_settings['wpcf_nd_message_user'] ) ) ? $wpcf_nd_settings['wpcf_nd_message_user'] : ""; 810 866 867 868 869 811 870 } else { 812 871 … … 829 888 <tr> 830 889 <td width='250'><?php _e("Email subject (admin)","wpcf_nd"); ?></td> 831 <td><input type='text' name='wpcf_nd_subject_admin' class='regular-text' id='wpcf_nd_subject_admin' value='<?php echo $cfr_email_subject_admin?>' /></td>890 <td><input type='text' name='wpcf_nd_subject_admin' class='regular-text' id='wpcf_nd_subject_admin' value='<?php echo esc_attr($cfr_email_subject_admin) ?>' /></td> 832 891 </tr> 833 892 <tr> 834 893 <td><?php _e("Email body (admin)","wpcf_nd"); ?></td> 835 <td><input type='text' name='wpcf_nd_message_admin' class='regular-text' id='wpcf_nd_message_admin' value='<?php echo $cfr_email_body_admin?>' /></td>894 <td><input type='text' name='wpcf_nd_message_admin' class='regular-text' id='wpcf_nd_message_admin' value='<?php echo esc_attr($cfr_email_body_admin) ?>' /></td> 836 895 </tr> 837 896 … … 853 912 <tr> 854 913 <td><?php _e("Email subject (user)","wpcf_nd"); ?></td> 855 <td><input type='text' name='wpcf_nd_subject_user' class='regular-text' id='wpcf_nd_subject_user' value='<?php echo $cfr_email_subject_user; ?>' /></td>914 <td><input type='text' name='wpcf_nd_subject_user' class='regular-text' id='wpcf_nd_subject_user' value='<?php echo esc_attr($cfr_email_subject_user); ?>' /></td> 856 915 </tr> 857 916 <tr> 858 917 <td><?php _e("Email body (user)","wpcf_nd"); ?></td> 859 <td><input type='text' name='wpcf_nd_message_user' class='regular-text' id='wpcf_nd_message_user' value='<?php echo $cfr_email_body_user; ?>' /></td>918 <td><input type='text' name='wpcf_nd_message_user' class='regular-text' id='wpcf_nd_message_user' value='<?php echo esc_attr($cfr_email_body_user); ?>' /></td> 860 919 </tr> 861 920 … … 902 961 <h2 id="cfr-nd-privacy"><?php _e("Privacy","wpcf_nd"); ?></h2> 903 962 904 <table class='wp-list-table widefat stripedfixed'>963 <table class='wp-list-table fixed'> 905 964 <tr> 906 965 <td width='250'><label for='wpcf_nd_enable_gdpr'><?php _e("Enable GDPR Compliance","wpcf_nd"); ?></label></td> 907 966 <td> 908 <input type='checkbox' name='wpcf_nd_enable_gdpr' id='wpcf_nd_enable_gdpr' value='1' <?php echo $cfr_enable_gdpr; ?> /> <span class='description'><?php echo sprintf(__("<a href='%s' target='_BLANK'>Importance of GDPR Compliance</a>","wpcf_nd"),"https:// www.eugdpr.org/"); ?></span>967 <input type='checkbox' name='wpcf_nd_enable_gdpr' id='wpcf_nd_enable_gdpr' value='1' <?php echo $cfr_enable_gdpr; ?> /> <span class='description'><?php echo sprintf(__("<a href='%s' target='_BLANK'>Importance of GDPR Compliance</a>","wpcf_nd"),"https://gdpr.eu/"); ?></span> 909 968 </td> 910 969 </tr> 911 970 <tr> 912 <td width='250'>< ?php _e("Company Name","wpcf_nd"); ?></td>913 <td><input type='text' name='wpcf_nd_gdpr_company_name' class='regular-text' id='wpcf_nd_gdpr_company_name' value='<?php echo $cfr_gdpr_company_name; ?>' /></td>971 <td width='250'><label for="wpcf_nd_gdpr_company_name"><?php _e("Company Name","wpcf_nd"); ?></label></td> 972 <td><input type='text' name='wpcf_nd_gdpr_company_name' class='regular-text' id='wpcf_nd_gdpr_company_name' value='<?php echo esc_attr($cfr_gdpr_company_name); ?>' /></td> 914 973 </tr> 915 974 <tr> 916 <td width='250'>< ?php _e("Retention Purpose","wpcf_nd"); ?></td>917 <td><input type='text' name='wpcf_nd_gdpr_retention_purpose' class='regular-text' id='wpcf_nd_gdpr_retention_purpose' value='<?php echo $cfr_gdpr_retention_purpose; ?>' /></td>975 <td width='250'><label for="wpcf_nd_gdpr_retention_purpose"><?php _e("Retention Purpose","wpcf_nd"); ?></label></td> 976 <td><input type='text' name='wpcf_nd_gdpr_retention_purpose' class='regular-text' id='wpcf_nd_gdpr_retention_purpose' value='<?php echo esc_attr($cfr_gdpr_retention_purpose); ?>' /></td> 918 977 </tr> 919 978 <tr> 920 979 <td width='250'><label for='wpcf_nd_gdpr_retention_period'><?php _e("Retention Period","wpcf_nd"); ?></label></td> 921 <td><input type='text' name='wpcf_nd_gdpr_retention_period' id='wpcf_nd_gdpr_retention_period' value='<?php echo $cfr_gdpr_retention_period; ?>' /> <span class='description'><?php echo __("days","wpcf_nd"); ?></span></td>980 <td><input type='text' name='wpcf_nd_gdpr_retention_period' id='wpcf_nd_gdpr_retention_period' value='<?php echo intval($cfr_gdpr_retention_period); ?>' /> <span class='description'><?php echo __("days","wpcf_nd"); ?></span></td> 922 981 </tr> 923 982 <tr> 924 <td width='250'>< ?php _e("GDPR Notice","wpcf_nd"); ?></td>925 <td><textarea name='wpcf_nd_gdpr_notice' class='regular-text' id='wpcf_nd_gdpr_notice' rows="6"><?php echo $cfr_gdpr_notice; ?></textarea></td>983 <td width='250'><label for="wpcf_nd_gdpr_notice"><?php _e("GDPR Notice","wpcf_nd"); ?></label></td> 984 <td><textarea name='wpcf_nd_gdpr_notice' class='regular-text' id='wpcf_nd_gdpr_notice' rows="6"><?php echo esc_attr($cfr_gdpr_notice); ?></textarea></td> 926 985 </tr> 927 986 <tr> … … 952 1011 } 953 1012 if ( ! $cfr_enable_gdpr ) { ?> 954 <div class="update-nag notice notice-error is-dismissible " style="border-color: #dd0000; max-width: 600px;margin-left: 0;">1013 <div class="update-nag notice notice-error is-dismissible wpcf_gdpr_notice" style="border-color: #dd0000; max-width: 600px;margin-left: 0; display:block;"> 955 1014 <p><strong><?php _e( 'Warning - GDPR Compliance Disabled - Action Required', 'wpcf_nd' ); ?></strong></p> 956 <p><?php _e( 'GDPR compliance has been disabled, read more about the implications of this here:', 'wpcf_nd' ); ?> <a href=" #">EU GDPR</a> </p>957 <p><?php _e( 'Additionally please take a look at Contact Form Ready', 'wpcf_nd' ); ?> <a href=" #">Privacy Policy</a> </p>1015 <p><?php _e( 'GDPR compliance has been disabled, read more about the implications of this here:', 'wpcf_nd' ); ?> <a href="https://gdpr.eu/">EU GDPR</a> </p> 1016 <p><?php _e( 'Additionally please take a look at Contact Form Ready', 'wpcf_nd' ); ?> <a href="https://www.contactformready.com/documentation/privacy-policy/">Privacy Policy</a> </p> 958 1017 <p><?php _e( 'It is highly recommended that you enable GDPR compliance to ensure your user data is regulated.', 'wpcf_nd' ); ?></p> 959 <p><a href="?post_type=contact-forms-nd&page=wpcf-settings#cfr-nd-privacy" class="button"><?php _e( 'Privacy Settings', 'wpcf_nd' ) ?></a></p>1018 <p><a id="GDPR_privacy_settings_button" href="edit.php?post_type=contact-forms-nd&page=wpcf-settings#cfr-nd-privacy" class="button"><?php _e( 'Privacy Settings', 'wpcf_nd' ) ?></a></p> 960 1019 </div> 961 1020 <?php … … 977 1036 978 1037 $htmls = get_post_meta( $post->ID, 'wpcf_nd_html_data', true ); 1038 979 1039 $formdata = get_post_meta( $post->ID, 'wpcf_nd_form_data', true ); 980 1040 $formdata = preg_replace('/>\s+</', "><", $formdata); … … 982 1042 $contact_form_types = get_option("wpcf_nd_contact_forms"); 983 1043 984 985 986 987 1044 ?> 988 <script> 989 //var tmpdata = '<?php echo trim($formdata); ?>'; 990 //var tmpformData = JSON.stringify(tmpdata); 991 992 </script> 993 994 <form action='' method='POST' novalidate> 995 996 997 <!-- Building Form. --> 998 <div class="col-sm-12"> 999 <h3 class="tagline"><?php _e("Select from a predefined list","wpcf_nd"); ?></h3> 1000 <select name='wpcf_nd_predfined' id='wpcf_nd_predfined'> 1001 <option value='x'><?php _e("Please select","wpcf_nd"); ?></option> 1002 <?php 1003 1004 foreach ($contact_form_types as $key => $data) { 1005 echo "\t<option value='".$key."'>".$data['title']."</option>".PHP_EOL; 1006 } 1007 ?> 1008 </select> 1009 </div> 1010 <p> </p> 1011 1012 <hr /> 1013 1014 <p> </p> 1015 1016 1045 <!-- Building Form. --> 1046 <div class="col-sm-12"> 1047 <h3 class="tagline"><?php _e("Select from a predefined list","wpcf_nd"); ?></h3> 1048 <select name='wpcf_nd_predfined' id='wpcf_nd_predfined'> 1049 <option value='x'><?php _e("Please select","wpcf_nd"); ?></option> 1050 <?php 1051 1052 foreach ($contact_form_types as $key => $data) { 1053 echo "\t<option value='".$key."'>".$data['title']."</option>".PHP_EOL; 1054 } 1055 ?> 1056 </select> 1057 </div> 1058 1059 <p> </p> 1060 <hr /> 1061 <p> </p> 1017 1062 1018 <!-- YES-->1019 <!-- Building Form. -->1020 <div class="col-sm-12">1021 <h3 class="tagline"><?php _e("Drag and drop the elements to create your contact form.","wpcf_nd"); ?></h3>1022 <section id="main_content" class="inner">1023 <div class="build-wrap"></div>1024 <div class="render-wrap"></div>1025 </section>1026 </div> 1027 1028 1029 <textarea id="fb-temp-formdata" name="fb-temp-formdata" style='width:100%; display:none;'><?php echo $formdata; ?></textarea>1030 <textarea id="fb-temp-htmldata" name="fb-temp-htmldata" style='width:100%; display:none;'><?php echo htmlentities($htmls); ?></textarea>1031 1032 <!-- / Components -->1063 <!-- Building Form. --> 1064 <div class="col-sm-12"> 1065 <h3 class="tagline"><?php _e("Drag and drop the elements to create your contact form.","wpcf_nd"); ?></h3> 1066 <section id="main_content" class="inner"> 1067 <div class="build-wrap"></div> 1068 <div class="render-wrap"></div> 1069 </section> 1070 </div> 1071 1072 1073 1074 <textarea id="fb-temp-formdata" name="fb-temp-formdata" style='width:100%; display:none;'><?php echo $formdata; ?></textarea> 1075 <textarea id="fb-temp-htmldata" name="fb-temp-htmldata" style='width:100%; display:none;'><?php echo htmlentities($htmls); ?></textarea> 1076 1077 <!-- / Components --> 1033 1078 1034 1079 </form> … … 1046 1091 // Bail if we're doing an auto save 1047 1092 if( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return; 1048 1093 1049 1094 // if our nonce isn't there, or we can't verify it, bail 1050 1095 if( !isset( $_POST['wpcf_nd_nonce'] ) || !wp_verify_nonce( $_POST['wpcf_nd_nonce'], 'wpcf_nd_add_events_metaboxes' ) ) { 1051 1096 return; 1052 1097 } 1098 1053 1099 1054 1100 // if our current user can't edit this post, bail 1055 if( !@current_user_can( 'edit_post' )) return;1101 if(!@current_user_can('edit_post', $post_id)) return; 1056 1102 1057 1103 … … 1167 1213 $post_html_data = $_POST['fb-temp-htmldata']; 1168 1214 $post_html_data = str_replace(array("\r", "\n"), '', $post_html_data); 1215 1169 1216 update_post_meta( $post_id, 'wpcf_nd_html_data', wp_kses( $post_html_data , $allowed_html ) ); 1170 1217 } … … 1273 1320 update_option( 'wpcf_nd_basic_settings', $wpcf_nd_basic_settings ); 1274 1321 1275 do_action ( "wpcf_nd_hook_save_meta_box_control", $post_id, $_POST ); 1276 1277 } 1278 1279 1322 do_action ( "wpcf_nd_hook_save_meta_box_control", $post_id, $_POST ); 1323 1324 } 1280 1325 1281 1326 function check_versions() { 1282 1283 1327 $current_option = get_option("wpcf_nd_version"); 1284 1285 1286 1328 if ($current_option !== $this->current_version) { 1287 1329 $this->handle_defaults(); … … 1290 1332 } 1291 1333 } 1334 1292 1335 function create_post_type() { 1293 1294 1336 $labels = array( 1295 1337 'name' => __('Contact Forms', 'wpcf_nd'), … … 1306 1348 'menu_name' => __('Contact Forms', 'wpcf_nd') 1307 1349 ); 1350 1308 1351 $args = array( 1309 1352 'labels' => $labels, … … 1321 1364 'menu_icon' => 'dashicons-email-alt' 1322 1365 ); 1366 1323 1367 if (post_type_exists('contact-forms-nd')) { 1324 1368 … … 1328 1372 1329 1373 } 1330 1331 1374 } 1332 1375 … … 1336 1379 } 1337 1380 1381 function wpcf_nd_create_token(){ 1382 $wpcf_nd_token = get_option('wpcf_nd_token'); 1383 if( !$wpcf_nd_token || $wpcf_nd_token == "" ){ 1384 $wpcf_nd_new_token = md5( time()."wpcf_nd_token" ); 1385 update_option( 'wpcf_nd_token', $wpcf_nd_new_token ); 1386 } 1387 } 1388 1338 1389 function create_contact_form_types($force = false) { 1339 1390 /* contact form types */ … … 1374 1425 $wpcf_nd_settings = get_option("wpcf_nd_settings"); 1375 1426 $wpcf_nd_styling = get_option("wpcf_nd_styling"); 1427 1376 1428 /** 1377 1429 * defaults here 1378 1430 */ 1379 1380 1431 if (!isset($wpcf_nd_settings['wpcf_nd_email_from_address'])) 1381 1432 $wpcf_nd_settings['wpcf_nd_email_from_address'] = get_option( 'admin_email' ); … … 1465 1516 } 1466 1517 1467 1468 1469 1470 1518 private function admin_scripts() { 1471 1519 add_action('admin_print_scripts', array($this, 'load_admin_scripts')); 1472 1520 add_action('admin_print_styles', array($this, 'load_admin_styles')); 1473 1521 } 1522 1474 1523 private function user_scripts() { 1475 1524 add_action('wp_head', array($this, 'load_user_scripts')); 1525 } 1526 1527 function load_user_scripts() { 1528 $wpcf_nonce = wp_create_nonce("wpcf_nd_front"); 1529 $wpcf_ajaxurl = admin_url('admin-ajax.php'); 1530 1531 $wpcf_nd_settings = get_option("wpcf_nd_settings"); 1532 1533 wp_enqueue_script( 'jquery' ); 1534 wp_enqueue_script( 'jquery-ui-core' ); 1535 wp_enqueue_script( 'jquery-ui-tooltip' ); 1536 1537 wp_enqueue_style( 'cfr-jquery-ui', '//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css"' ); 1538 1539 wp_register_script( 'contact-form-ready', plugins_url(plugin_basename(dirname(__FILE__)))."/js/user.js", true, $this->current_version ); 1540 //localize invisible recaptcha settings 1541 $wpcf_nd_settings = get_option( "wpcf_nd_settings" ); 1542 1543 $invisible_recaptcha_localize_options = array( 1544 'invisible_recaptcha_enabled' => !empty($wpcf_nd_settings['wpcf_nd_enable_invisible_recaptcha']) ? $wpcf_nd_settings['wpcf_nd_enable_invisible_recaptcha'] == '1' : "", 1545 'wpcf_invisible_recaptcha_api' => !empty($wpcf_nd_settings['wpcf_nd_invisible_recaptcha_site_key']) ? $wpcf_nd_settings['wpcf_nd_invisible_recaptcha_site_key'] : "" 1546 ); 1547 1548 if (!isset($wpcf_nd_settings['wpcf_nd_message_user'])){ 1549 $wpcf_nd_settings['wpcf_nd_message_user'] = __("Thank you for your message. We will respond to you as soon as possible.","wpcf_nd"); 1550 } 1551 1552 $localizedData = array(); 1476 1553 1477 } 1478 1479 function load_user_scripts() { 1480 $wpcf_nonce = wp_create_nonce("wpcf_nd_front"); 1481 $wpcf_ajaxurl = admin_url('admin-ajax.php'); 1482 1483 $wpcf_nd_settings = get_option("wpcf_nd_settings"); 1484 1485 wp_enqueue_script( 'jquery' ); 1486 wp_enqueue_script( 'jquery-ui-core' ); 1487 wp_enqueue_script( 'jquery-ui-tooltip' ); 1488 1489 wp_enqueue_style( 'cfr-jquery-ui', '//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css"' ); 1490 1491 wp_register_script( 'contact-form-ready', plugins_url(plugin_basename(dirname(__FILE__)))."/js/user.js", true, $this->current_version ); 1492 //localize invisible recaptcha settings 1493 $wpcf_nd_settings = get_option( "wpcf_nd_settings" ); 1494 1495 $invisible_recaptcha_localize_options = array( 1496 'invisible_recaptcha_enabled' => $wpcf_nd_settings['wpcf_nd_enable_invisible_recaptcha'] == '1', 1497 'wpcf_invisible_recaptcha_api' => $wpcf_nd_settings['wpcf_nd_invisible_recaptcha_site_key'] 1498 ); 1499 1500 wp_localize_script( 'contact-form-ready', 'invisible_recaptcha_options', $invisible_recaptcha_localize_options); 1501 wp_enqueue_script( 'contact-form-ready' ); 1502 wp_localize_script( 'contact-form-ready', 'wpcf_nd_nonce', $wpcf_nonce ); 1503 wp_localize_script( 'contact-form-ready', 'wpcf_nd_ajaxurl', $wpcf_ajaxurl ); 1504 1505 if (!isset($wpcf_nd_settings['wpcf_nd_message_user'])) 1506 $wpcf_nd_settings['wpcf_nd_message_user'] = __("Thank you for your message. We will respond to you as soon as possible.","wpcf_nd"); 1507 1508 wp_localize_script( 'contact-form-ready', 'wpcf_nd_ajax_thank_you', stripslashes( esc_html( $wpcf_nd_settings['wpcf_nd_message_user'] ) ) ); 1509 wp_localize_script( 'contact-form-ready', 'wpcf_nd_ajax_sending', __("Sending...","wpcf_nd") ); 1510 1511 do_action( "wpcf_user_js" ); 1512 1513 1554 wp_enqueue_script( 'contact-form-ready' ); 1555 1556 $localizedData['invisible_recaptcha_options'] = $invisible_recaptcha_localize_options; 1557 $localizedData['wpcf_nd_nonce'] = $wpcf_nonce; 1558 $localizedData['wpcf_nd_ajaxurl'] = $wpcf_ajaxurl; 1559 1560 $localizedData['wpcf_nd_ajax_thank_you'] = stripslashes( esc_html( $wpcf_nd_settings['wpcf_nd_message_user'] ) ) ; 1561 $localizedData['wpcf_nd_ajax_sending'] = __("Sending...","wpcf_nd"); 1562 1563 wp_localize_script( 'contact-form-ready', 'wpcf_localized_client', $localizedData ); 1564 1565 do_action( "wpcf_user_js" ); 1514 1566 } 1515 1567 … … 1518 1570 global $post_type; 1519 1571 global $post; 1572 1520 1573 if( "contact-forms-nd" == $post_type ) { 1521 1522 1574 wp_enqueue_script( 'jquery' ); 1523 1575 wp_enqueue_script( 'jquery-ui-core' ); … … 1539 1591 1540 1592 wp_localize_script( 'wpcf-admin', 'wpcf_nd_types', $contact_form_types ); 1541 1542 1593 if ( is_object( $post ) ) { 1543 1594 $formdata = get_post_meta( $post->ID, 'wpcf_nd_form_data', true ); 1544 1595 $formdata = preg_replace('/>\s+</', "><", $formdata); 1545 1596 if(empty($formdata)){ 1546 $formdata = 'false';1597 $formdata = false; 1547 1598 } 1548 wp_localize_script( 'wpcf-admin', 'tmpformData', $formdata);1599 wp_localize_script( 'wpcf-admin', 'tmpformData', array('json' => $formdata) ); 1549 1600 } else { 1550 wp_localize_script( 'wpcf-admin', 'tmpformData', 'false');1601 wp_localize_script( 'wpcf-admin', 'tmpformData', false ); 1551 1602 } 1552 1553 wp_enqueue_style( 'wp-color-picker' ); 1554 wp_enqueue_script( 'iris', admin_url( 'js/iris.min.js' ), array( 1555 'jquery-ui-draggable', 1556 'jquery-ui-slider', 1557 'jquery-touch-punch' 1558 ), false, 1 ); 1559 1560 } 1561 1562 1563 if ( isset( $_GET['page'] ) && $_GET['page'] == 'wpcf-styling') { 1564 wp_enqueue_style( 'wp-color-picker' ); 1565 wp_enqueue_script( 'iris', admin_url( 'js/iris.min.js' ), array( 1566 'jquery-ui-draggable', 1567 'jquery-ui-slider', 1568 'jquery-touch-punch' 1569 ), false, 1 ); 1570 } 1603 1604 } 1605 1571 1606 if ( isset( $_GET['page'] ) && $_GET['page'] == 'wpcf-settings') { 1572 1607 wp_register_script( 'wpcf-admin-settings', plugins_url(plugin_basename(dirname(__FILE__)))."/js/admin_settings.js", true ); … … 1581 1616 wp_register_style( 'wpcf-codemirror-theme', plugins_url(plugin_basename(dirname(__FILE__)))."/assets/codemirror/monokai.css", true ); 1582 1617 wp_enqueue_style( 'wpcf-codemirror-theme' ); 1583 wp_localize_script( 'wpcf-admin-settings', 'wpcf_nd_confirm_restore_template_string', __( 'Are you sure you want to restore the default newsletter template?', 'wpcf_nd') );1618 wp_localize_script( 'wpcf-admin-settings', 'wpcf_nd_confirm_restore_template_string', array('label' => __( 'Are you sure you want to restore the default newsletter template?', 'wpcf_nd' )) ); 1584 1619 wp_register_script( 'wpcf-codemirror-script', plugins_url(plugin_basename(dirname(__FILE__)))."/assets/codemirror/codemirror.js", true ); 1585 1620 wp_enqueue_script( 'wpcf-codemirror-script' ); … … 1595 1630 } 1596 1631 } 1632 1597 1633 function load_admin_styles() { 1598 1634 global $post_type; … … 1604 1640 1605 1641 wp_enqueue_style( 'contact-form-ready-jquery-ui', '//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css' ); 1606 1607 } 1608 } 1609 1642 } 1643 } 1610 1644 1611 1645 private function DS() { … … 1614 1648 } else { 1615 1649 return '/'; 1616 1617 1650 } 1618 1651 } … … 1626 1659 function wpcf_nd_save_settings() { 1627 1660 $this->wpcf_gdpr_check_for_cron(); 1661 } 1662 1663 function wpcf_can_save_settings(){ 1664 if(current_user_can('manage_options')){ 1665 $nonce = !empty($_POST['wpcf_save_settings']) ? $_POST['wpcf_save_settings'] : false; 1666 if(!empty($nonce) && wp_verify_nonce($nonce, 'wpcf_save_settings')){ 1667 return true; 1668 } 1669 } 1670 return false; 1628 1671 } 1629 1672 … … 1761 1804 </div> 1762 1805 1763 1806 <div class="wpcf-extension"> 1807 <h3 class="wpcf-extension-title">Zapier</h3> 1808 <a href="" title="Zapier Extension" target="_BLANK"> 1809 <img width="256" height="256" src="<?php echo plugins_url(plugin_basename(dirname(__FILE__)))."/images/Zapier.png" ?>" class="attachment-showcase wp-post-image" alt="Zapier Extension" title="Zapier Extension"> 1810 </a> 1811 <p></p> 1812 <p></p> 1813 <div class="wpcf-extension-label-box"></div> 1814 <p>Price: <em>$4.99 once off</em></p> 1815 <p>Integrate your forms with many different Zapier apps</p> 1816 <a href="https://www.contactformready.com/extensions/zapier/?utm_source=plugin&utm_medium=link&utm_campaign=zapier" title="Zapier Extension" class="button-secondary" target="_BLANK">Get this add-on</a> 1817 </div> 1818 1764 1819 <?php 1765 1820 } … … 1814 1869 1815 1870 if (isset($_POST['wpcf_submit_save_styling'])) { 1816 1817 if ( isset( $_POST['wpcf_nd_enable_style'] ) ){ 1818 $wpcf_nd_styling['wpcf_nd_enable_style'] = 1; 1819 } else { 1820 $wpcf_nd_styling['wpcf_nd_enable_style'] = 0; 1871 if($this->wpcf_can_save_settings()){ 1872 1873 if ( isset( $_POST['wpcf_nd_enable_style'] ) ){ 1874 $wpcf_nd_styling['wpcf_nd_enable_style'] = 1; 1875 } else { 1876 $wpcf_nd_styling['wpcf_nd_enable_style'] = 0; 1877 } 1878 1879 if ( isset( $_POST['wpcf_nd_label_font_size'] ) ){ 1880 $wpcf_nd_styling['wpcf_nd_label_font_size'] = sanitize_text_field( $_POST['wpcf_nd_label_font_size'] ); 1881 } else { 1882 $wpcf_nd_styling['wpcf_nd_label_font_size'] = ''; 1883 } 1884 1885 if ( isset( $_POST['wpcf_nd_label_font_weight'] ) ){ 1886 $wpcf_nd_styling['wpcf_nd_label_font_weight'] = sanitize_text_field( $_POST['wpcf_nd_label_font_weight'] ); 1887 } else { 1888 $wpcf_nd_styling['wpcf_nd_label_font_weight'] = ''; 1889 } 1890 1891 if ( isset( $_POST['wpcf_nd_label_color'] ) ){ 1892 $wpcf_nd_styling['wpcf_nd_label_color'] = sanitize_text_field( $_POST['wpcf_nd_label_color'] ); 1893 } else { 1894 $wpcf_nd_styling['wpcf_nd_label_color'] = ''; 1895 } 1896 1897 if ( isset( $_POST['wpcf_nd_input_bg_color'] ) ){ 1898 $wpcf_nd_styling['wpcf_nd_input_bg_color'] = sanitize_text_field( $_POST['wpcf_nd_input_bg_color'] ); 1899 } else { 1900 $wpcf_nd_styling['wpcf_nd_input_bg_color'] = ''; 1901 } 1902 1903 if ( isset( $_POST['wpcf_nd_input_border_color'] ) ){ 1904 $wpcf_nd_styling['wpcf_nd_input_border_color'] = sanitize_text_field( $_POST['wpcf_nd_input_border_color'] ); 1905 } else { 1906 $wpcf_nd_styling['wpcf_nd_input_border_color'] = ''; 1907 } 1908 1909 if ( isset( $_POST['wpcf_nd_input_border_focus_color'] ) ){ 1910 $wpcf_nd_styling['wpcf_nd_input_border_focus_color'] = sanitize_text_field( $_POST['wpcf_nd_input_border_focus_color'] ); 1911 } else { 1912 $wpcf_nd_styling['wpcf_nd_input_border_focus_color'] = ''; 1913 } 1914 1915 if ( isset( $_POST['wpcf_nd_input_font_size'] ) ){ 1916 $wpcf_nd_styling['wpcf_nd_input_font_size'] = sanitize_text_field( $_POST['wpcf_nd_input_font_size'] ); 1917 } else { 1918 $wpcf_nd_styling['wpcf_nd_input_font_size'] = ''; 1919 } 1920 1921 if ( isset( $_POST['wpcf_nd_input_font_color'] ) ){ 1922 $wpcf_nd_styling['wpcf_nd_input_font_color'] = sanitize_text_field( $_POST['wpcf_nd_input_font_color'] ); 1923 } else { 1924 $wpcf_nd_styling['wpcf_nd_input_font_color'] = ''; 1925 } 1926 1927 if ( isset( $_POST['wpcf_nd_submit_bg_color'] ) ){ 1928 $wpcf_nd_styling['wpcf_nd_submit_bg_color'] = sanitize_text_field( $_POST['wpcf_nd_submit_bg_color'] ); 1929 } else { 1930 $wpcf_nd_styling['wpcf_nd_submit_bg_color'] = ''; 1931 } 1932 1933 if ( isset( $_POST['wpcf_nd_submit_bg_hover_color'] ) ){ 1934 $wpcf_nd_styling['wpcf_nd_submit_bg_hover_color'] = sanitize_text_field( $_POST['wpcf_nd_submit_bg_hover_color'] ); 1935 } else { 1936 $wpcf_nd_styling['wpcf_nd_submit_bg_hover_color'] = ''; 1937 } 1938 1939 if ( isset( $_POST['wpcf_nd_submit_font_size'] ) ){ 1940 $wpcf_nd_styling['wpcf_nd_submit_font_size'] = sanitize_text_field( $_POST['wpcf_nd_submit_font_size'] ); 1941 } else { 1942 $wpcf_nd_styling['wpcf_nd_submit_font_size'] = ''; 1943 } 1944 1945 if ( isset( $_POST['wpcf_nd_submit_font_color'] ) ){ 1946 $wpcf_nd_styling['wpcf_nd_submit_font_color'] = sanitize_text_field( $_POST['wpcf_nd_submit_font_color'] ); 1947 } else { 1948 $wpcf_nd_styling['wpcf_nd_submit_font_color'] = ''; 1949 } 1950 1951 if ( isset( $_POST['wpcf_nd_submit_font_weight'] ) ){ 1952 $wpcf_nd_styling['wpcf_nd_submit_font_weight'] = sanitize_text_field( $_POST['wpcf_nd_submit_font_weight'] ); 1953 } else { 1954 $wpcf_nd_styling['wpcf_nd_submit_font_weight'] = ''; 1955 } 1956 1957 if ( isset( $_POST['wpcf_nd_submit_text_transform'] ) ){ 1958 $wpcf_nd_styling['wpcf_nd_submit_text_transform'] = sanitize_text_field( $_POST['wpcf_nd_submit_text_transform'] ); 1959 } else { 1960 $wpcf_nd_styling['wpcf_nd_submit_text_transform'] = ''; 1961 } 1962 1963 $wpcf_nd_styling = apply_filters("wpcf_filter_save_styling", $wpcf_nd_styling, $_POST); 1964 $updated_wpcf_nd_style_settings = update_option( "wpcf_nd_styling" , $wpcf_nd_styling ); 1965 if($updated_wpcf_nd_style_settings){ 1966 echo " 1967 <div class=\"updated\"> 1968 <p>".__('Style Settings Saved', 'wpcf_nd')."</p> 1969 </div> 1970 "; 1971 } else { 1972 echo " 1973 <div class=\"error\"> 1974 <p>".__('No changes were made', 'wpcf_nd')."</p> 1975 </div> 1976 "; 1977 } 1978 } else { 1979 echo " 1980 <div class=\"error\"> 1981 <p>".__('No changes were made', 'wpcf_nd')."</p> 1982 </div> 1983 "; 1821 1984 } 1822 1823 if ( isset( $_POST['wpcf_nd_label_font_size'] ) ){1824 $wpcf_nd_styling['wpcf_nd_label_font_size'] = sanitize_text_field( $_POST['wpcf_nd_label_font_size'] );1825 } else {1826 $wpcf_nd_styling['wpcf_nd_label_font_size'] = '';1827 }1828 1829 if ( isset( $_POST['wpcf_nd_label_font_weight'] ) ){1830 $wpcf_nd_styling['wpcf_nd_label_font_weight'] = sanitize_text_field( $_POST['wpcf_nd_label_font_weight'] );1831 } else {1832 $wpcf_nd_styling['wpcf_nd_label_font_weight'] = '';1833 }1834 1835 if ( isset( $_POST['wpcf_nd_label_color'] ) ){1836 $wpcf_nd_styling['wpcf_nd_label_color'] = sanitize_text_field( $_POST['wpcf_nd_label_color'] );1837 } else {1838 $wpcf_nd_styling['wpcf_nd_label_color'] = '';1839 }1840 1841 if ( isset( $_POST['wpcf_nd_input_bg_color'] ) ){1842 $wpcf_nd_styling['wpcf_nd_input_bg_color'] = sanitize_text_field( $_POST['wpcf_nd_input_bg_color'] );1843 } else {1844 $wpcf_nd_styling['wpcf_nd_input_bg_color'] = '';1845 }1846 1847 if ( isset( $_POST['wpcf_nd_input_border_color'] ) ){1848 $wpcf_nd_styling['wpcf_nd_input_border_color'] = sanitize_text_field( $_POST['wpcf_nd_input_border_color'] );1849 } else {1850 $wpcf_nd_styling['wpcf_nd_input_border_color'] = '';1851 }1852 1853 if ( isset( $_POST['wpcf_nd_input_border_focus_color'] ) ){1854 $wpcf_nd_styling['wpcf_nd_input_border_focus_color'] = sanitize_text_field( $_POST['wpcf_nd_input_border_focus_color'] );1855 } else {1856 $wpcf_nd_styling['wpcf_nd_input_border_focus_color'] = '';1857 }1858 1859 if ( isset( $_POST['wpcf_nd_input_font_size'] ) ){1860 $wpcf_nd_styling['wpcf_nd_input_font_size'] = sanitize_text_field( $_POST['wpcf_nd_input_font_size'] );1861 } else {1862 $wpcf_nd_styling['wpcf_nd_input_font_size'] = '';1863 }1864 1865 if ( isset( $_POST['wpcf_nd_input_font_color'] ) ){1866 $wpcf_nd_styling['wpcf_nd_input_font_color'] = sanitize_text_field( $_POST['wpcf_nd_input_font_color'] );1867 } else {1868 $wpcf_nd_styling['wpcf_nd_input_font_color'] = '';1869 }1870 1871 if ( isset( $_POST['wpcf_nd_submit_bg_color'] ) ){1872 $wpcf_nd_styling['wpcf_nd_submit_bg_color'] = sanitize_text_field( $_POST['wpcf_nd_submit_bg_color'] );1873 } else {1874 $wpcf_nd_styling['wpcf_nd_submit_bg_color'] = '';1875 }1876 1877 if ( isset( $_POST['wpcf_nd_submit_bg_hover_color'] ) ){1878 $wpcf_nd_styling['wpcf_nd_submit_bg_hover_color'] = sanitize_text_field( $_POST['wpcf_nd_submit_bg_hover_color'] );1879 } else {1880 $wpcf_nd_styling['wpcf_nd_submit_bg_hover_color'] = '';1881 }1882 1883 if ( isset( $_POST['wpcf_nd_submit_font_size'] ) ){1884 $wpcf_nd_styling['wpcf_nd_submit_font_size'] = sanitize_text_field( $_POST['wpcf_nd_submit_font_size'] );1885 } else {1886 $wpcf_nd_styling['wpcf_nd_submit_font_size'] = '';1887 }1888 1889 if ( isset( $_POST['wpcf_nd_submit_font_color'] ) ){1890 $wpcf_nd_styling['wpcf_nd_submit_font_color'] = sanitize_text_field( $_POST['wpcf_nd_submit_font_color'] );1891 } else {1892 $wpcf_nd_styling['wpcf_nd_submit_font_color'] = '';1893 }1894 1895 if ( isset( $_POST['wpcf_nd_submit_font_weight'] ) ){1896 $wpcf_nd_styling['wpcf_nd_submit_font_weight'] = sanitize_text_field( $_POST['wpcf_nd_submit_font_weight'] );1897 } else {1898 $wpcf_nd_styling['wpcf_nd_submit_font_weight'] = '';1899 }1900 1901 if ( isset( $_POST['wpcf_nd_submit_text_transform'] ) ){1902 $wpcf_nd_styling['wpcf_nd_submit_text_transform'] = sanitize_text_field( $_POST['wpcf_nd_submit_text_transform'] );1903 } else {1904 $wpcf_nd_styling['wpcf_nd_submit_text_transform'] = '';1905 }1906 1907 $wpcf_nd_styling = apply_filters("wpcf_filter_save_styling", $wpcf_nd_styling, $_POST);1908 1909 update_option( "wpcf_nd_styling" , $wpcf_nd_styling );1910 echo "<span class='update-nag below-h1'>Styling saved</span>";1911 1985 1912 1986 } … … 1931 2005 1932 2006 <div id="tabs-1"> 1933 <table class='wp-list-table stripedfixed wpcf-admin-table'>2007 <table class='wp-list-table fixed wpcf-admin-table'> 1934 2008 <tbody> 1935 2009 <tr> 1936 2010 <td width='250'><?php _e("Font size","wpcf_nd"); ?></td> 1937 <td><input type='number' name='wpcf_nd_label_font_size' class='regular-text wpcf-nd-small-input' id='wpcf_nd_label_font_size' value='<?php echo $wpcf_nd_styling['wpcf_nd_label_font_size']; ?>' min="10" max="62" /></td>2011 <td><input type='number' name='wpcf_nd_label_font_size' class='regular-text wpcf-nd-small-input' id='wpcf_nd_label_font_size' value='<?php echo intval($wpcf_nd_styling['wpcf_nd_label_font_size']); ?>' min="10" max="62" /></td> 1938 2012 </tr> 1939 2013 <tr> … … 1950 2024 <tr> 1951 2025 <td width='250'><?php _e("Font color","wpcf_nd"); ?></td> 1952 <td><input type=' text' name='wpcf_nd_label_color' class='regular-text wpcf-nd-small-input wpcf-color-input' id='wpcf_nd_label_color' value='<?php echo stripslashes(esc_html($wpcf_nd_styling['wpcf_nd_label_color'])); ?>' /></td>2026 <td><input type='color' name='wpcf_nd_label_color' class='regular-text wpcf-nd-small-input wpcf-color-input' id='wpcf_nd_label_color' value='<?php echo stripslashes(esc_attr($wpcf_nd_styling['wpcf_nd_label_color'])); ?>' /></td> 1953 2027 </tr> 1954 2028 </tbody> … … 1957 2031 1958 2032 <div id="tabs-2"> 1959 <table class='wp-list-table stripedfixed wpcf-admin-table'>2033 <table class='wp-list-table fixed wpcf-admin-table'> 1960 2034 <tbody> 1961 2035 <tr> 1962 2036 <td width='250'><?php _e("Background color","wpcf_nd"); ?></td> 1963 <td><input type=' text' name='wpcf_nd_input_bg_color' class='regular-text wpcf-nd-small-input wpcf-color-input' id='wpcf_nd_input_bg_color' value='<?php echo stripslashes(esc_html($wpcf_nd_styling['wpcf_nd_input_bg_color'])); ?>' /></td>2037 <td><input type='color' name='wpcf_nd_input_bg_color' class='regular-text wpcf-nd-small-input wpcf-color-input' id='wpcf_nd_input_bg_color' value='<?php echo stripslashes(esc_attr($wpcf_nd_styling['wpcf_nd_input_bg_color'])); ?>' /></td> 1964 2038 </tr> 1965 2039 <tr> 1966 2040 <td width='250'><?php _e("Border color","wpcf_nd"); ?></td> 1967 <td><input type=' text' name='wpcf_nd_input_border_color' class='regular-text wpcf-nd-small-input wpcf-color-input' id='wpcf_nd_input_border_color' value='<?php echo stripslashes(esc_html($wpcf_nd_styling['wpcf_nd_input_border_color'])); ?>' /></td>2041 <td><input type='color' name='wpcf_nd_input_border_color' class='regular-text wpcf-nd-small-input wpcf-color-input' id='wpcf_nd_input_border_color' value='<?php echo stripslashes(esc_attr($wpcf_nd_styling['wpcf_nd_input_border_color'])); ?>' /></td> 1968 2042 </tr> 1969 2043 <tr> 1970 2044 <td width='250'><?php _e("Border hover color","wpcf_nd"); ?></td> 1971 <td><input type=' text' name='wpcf_nd_input_border_focus_color' class='regular-text wpcf-nd-small-input wpcf-color-input' id='wpcf_nd_input_border_focus_color' value='<?php echo stripslashes(esc_html($wpcf_nd_styling['wpcf_nd_input_border_focus_color'])); ?>' /></td>2045 <td><input type='color' name='wpcf_nd_input_border_focus_color' class='regular-text wpcf-nd-small-input wpcf-color-input' id='wpcf_nd_input_border_focus_color' value='<?php echo stripslashes(esc_attr($wpcf_nd_styling['wpcf_nd_input_border_focus_color'])); ?>' /></td> 1972 2046 </tr> 1973 2047 <tr> 1974 2048 <td width='250'><?php _e("Font size","wpcf_nd"); ?></td> 1975 <td><input type='number' name='wpcf_nd_input_font_size' class='regular-text wpcf-nd-small-input' id='wpcf_nd_input_font_size' value='<?php echo stripslashes(esc_ html($wpcf_nd_styling['wpcf_nd_input_font_size'])); ?>' min="10" max="62" /></td>2049 <td><input type='number' name='wpcf_nd_input_font_size' class='regular-text wpcf-nd-small-input' id='wpcf_nd_input_font_size' value='<?php echo stripslashes(esc_attr($wpcf_nd_styling['wpcf_nd_input_font_size'])); ?>' min="10" max="62" /></td> 1976 2050 </tr> 1977 2051 <tr> 1978 2052 <td width='250'><?php _e("Font color","wpcf_nd"); ?></td> 1979 <td><input type=' text' name='wpcf_nd_input_font_color' class='regular-text wpcf-nd-small-input wpcf-color-input' id='wpcf_nd_input_font_color' value='<?php echo stripslashes(esc_html($wpcf_nd_styling['wpcf_nd_input_font_color'])); ?>' /></td>2053 <td><input type='color' name='wpcf_nd_input_font_color' class='regular-text wpcf-nd-small-input wpcf-color-input' id='wpcf_nd_input_font_color' value='<?php echo (esc_attr($wpcf_nd_styling['wpcf_nd_input_font_color'])); ?>' /></td> 1980 2054 </tr> 1981 2055 </tbody> … … 1984 2058 1985 2059 <div id="tabs-3"> 1986 <table class='wp-list-table stripedfixed wpcf-admin-table'>2060 <table class='wp-list-table fixed wpcf-admin-table'> 1987 2061 <tbody> 1988 2062 <tr> 1989 2063 <td width='250'><?php _e("Background color","wpcf_nd"); ?></td> 1990 <td><input type=' text' name='wpcf_nd_submit_bg_color' class='regular-text wpcf-nd-small-input wpcf-color-input' id='wpcf_nd_submit_bg_color' value='<?php echo stripslashes(esc_html($wpcf_nd_styling['wpcf_nd_submit_bg_color'])); ?>' /></td>2064 <td><input type='color' name='wpcf_nd_submit_bg_color' class='regular-text wpcf-nd-small-input wpcf-color-input' id='wpcf_nd_submit_bg_color' value='<?php echo (esc_attr($wpcf_nd_styling['wpcf_nd_submit_bg_color'])); ?>' /></td> 1991 2065 </tr> 1992 2066 <tr> 1993 2067 <td width='250'><?php _e("Background hover color","wpcf_nd"); ?></td> 1994 <td><input type=' text' name='wpcf_nd_submit_bg_hover_color' class='regular-text wpcf-nd-small-input wpcf-color-input' id='wpcf_nd_submit_bg_hover_color' value='<?php echo stripslashes(esc_html($wpcf_nd_styling['wpcf_nd_submit_bg_hover_color'])); ?>' /></td>2068 <td><input type='color' name='wpcf_nd_submit_bg_hover_color' class='regular-text wpcf-nd-small-input wpcf-color-input' id='wpcf_nd_submit_bg_hover_color' value='<?php echo (esc_attr($wpcf_nd_styling['wpcf_nd_submit_bg_hover_color'])); ?>' /></td> 1995 2069 </tr> 1996 2070 <tr> 1997 2071 <td width='250'><?php _e("Font size","wpcf_nd"); ?></td> 1998 <td><input type='number' name='wpcf_nd_submit_font_size' class='regular-text wpcf-nd-small-input' id='wpcf_nd_submit_font_size' value='<?php echo stripslashes(esc_html($wpcf_nd_styling['wpcf_nd_submit_font_size'])); ?>' min="10" max="62" /></td>2072 <td><input type='number' name='wpcf_nd_submit_font_size' class='regular-text wpcf-nd-small-input' id='wpcf_nd_submit_font_size' value='<?php echo (intval($wpcf_nd_styling['wpcf_nd_submit_font_size'])); ?>' min="10" max="62" /></td> 1999 2073 </tr> 2000 2074 <tr> 2001 2075 <td width='250'><?php _e("Font color","wpcf_nd"); ?></td> 2002 <td><input type=' text' name='wpcf_nd_submit_font_color' class='regular-text wpcf-nd-small-input wpcf-color-input' id='wpcf_nd_submit_font_color' value='<?php echo stripslashes(esc_html($wpcf_nd_styling['wpcf_nd_submit_font_color'])); ?>' /></td>2076 <td><input type='color' name='wpcf_nd_submit_font_color' class='regular-text wpcf-nd-small-input wpcf-color-input' id='wpcf_nd_submit_font_color' value='<?php echo (esc_attr($wpcf_nd_styling['wpcf_nd_submit_font_color'])); ?>' /></td> 2003 2077 </tr> 2004 2078 <tr> … … 2029 2103 2030 2104 <div class="wpcf-admin-preview-form wpcf_nd" id="wpcf-nd"> 2031 <label class="wpcf-admin-preview-label" for="wpcf-admin-preview-text"><?php _e("Text field","wpcf_nd"); ?></label> 2105 <label id="wpcf-admin-preview-darkmode-label" for="wpcf-admin-preview-darkmode-checkbox">Dark Mode</label> 2106 <input id="wpcf-admin-preview-darkmode-checkbox" type="checkbox" name="wpcf-admin-preview-darkmode-label"> 2107 <br><span id="wpcf-admin-preview-darkmode-note">Note: The dark mode setting is purely for preview purposes only.</span> 2108 <label class="wpcf-admin-preview-label" for="wpcf-admin-preview-text"><?php _e("Text Field","wpcf_nd"); ?></label> 2032 2109 <input class="wpcf-admin-preview-input" id="wpcf-admin-preview-text" type="text"/> 2033 <label class="wpcf-admin-preview-label" for="wpcf-admin-preview-email"><?php _e("Email field","wpcf_nd"); ?></label>2110 <label class="wpcf-admin-preview-label" for="wpcf-admin-preview-email"><?php _e("Email Field","wpcf_nd"); ?></label> 2034 2111 <input class="wpcf-admin-preview-input" id="wpcf-admin-preview-email" type="email"/> 2035 2112 <label class="wpcf-admin-preview-label" for="wpcf-admin-preview-textarea"><?php _e("Text Area","wpcf_nd"); ?></label> … … 2043 2120 2044 2121 <?php do_action( "wpcf_hook_styling_page_bottom", $wpcf_nd_styling ); ?> 2122 2123 <?php wp_nonce_field('wpcf_save_settings', 'wpcf_save_settings'); ?> 2045 2124 2046 2125 <input class="wpcf-submit-save-styling button-primary" type='submit' value='Save styling' name='wpcf_submit_save_styling' /> … … 2088 2167 } 2089 2168 if ( '' !== $wpcf_nd_styling['wpcf_nd_submit_font_weight'] ) { 2090 echo 'font-weight:' . $wpcf_nd_styling['wpcf_nd_submit_font_weight'] . ' px;';2169 echo 'font-weight:' . $wpcf_nd_styling['wpcf_nd_submit_font_weight'] . ';'; 2091 2170 } 2092 2171 if ( '' !== $wpcf_nd_styling['wpcf_nd_submit_text_transform'] ) { 2093 echo 'text-transform:' . $wpcf_nd_styling['wpcf_nd_submit_text_transform'] . ' px;';2172 echo 'text-transform:' . $wpcf_nd_styling['wpcf_nd_submit_text_transform'] . ';'; 2094 2173 } ?> 2095 2174 } … … 2121 2200 if (isset($_POST['wpcf_submit_save_settings'])) { 2122 2201 2123 if ( isset( $_POST['wpcf_nd_email_from_address'] ) ){ 2124 $wpcf_nd_settings['wpcf_nd_email_from_address'] = sanitize_text_field( $_POST['wpcf_nd_email_from_address'] ); 2202 if($this->wpcf_can_save_settings()){ 2203 2204 if ( isset( $_POST['wpcf_nd_email_from_address'] ) ){ 2205 $wpcf_nd_settings['wpcf_nd_email_from_address'] = sanitize_text_field( $_POST['wpcf_nd_email_from_address'] ); 2206 } else { 2207 $wpcf_nd_settings['wpcf_nd_email_from_address'] = ''; 2208 } 2209 2210 if ( isset( $_POST['wpcf_nd_email_from_name'] ) ){ 2211 $wpcf_nd_settings['wpcf_nd_email_from_name'] = sanitize_text_field( $_POST['wpcf_nd_email_from_name'] ); 2212 } else { 2213 $wpcf_nd_settings['wpcf_nd_email_from_name'] = ''; 2214 } 2215 2216 if (isset($_POST['wpcf_custom_css'])) { 2217 $wpcf_nd_settings['wpcf_custom_css'] = sanitize_textarea_field($_POST['wpcf_custom_css']); 2218 } else { 2219 $wpcf_nd_settings['wpcf_custom_css'] = ""; 2220 } 2221 2222 if (isset($_POST['wpcf_nd_thank_you_text'])) 2223 $wpcf_nd_settings['wpcf_nd_thank_you_text'] = sanitize_text_field( $_POST['wpcf_nd_thank_you_text'] ); 2224 2225 if (isset($_POST['wpcf_nd_enable_gdpr']) && $_POST['wpcf_nd_enable_gdpr'] == '1' ) { 2226 $wpcf_nd_settings['wpcf_nd_enable_gdpr'] = intval(sanitize_text_field( $_POST['wpcf_nd_enable_gdpr'] )); 2227 } else { 2228 $wpcf_nd_settings['wpcf_nd_enable_gdpr'] = 0; 2229 } 2230 if (isset($_POST['wpcf_nd_gdpr_company_name'])) 2231 $wpcf_nd_settings['wpcf_nd_gdpr_company_name'] = sanitize_text_field( $_POST['wpcf_nd_gdpr_company_name'] ); 2232 if (isset($_POST['wpcf_nd_gdpr_retention_purpose'])) 2233 $wpcf_nd_settings['wpcf_nd_gdpr_retention_purpose'] = sanitize_text_field( $_POST['wpcf_nd_gdpr_retention_purpose'] ); 2234 if (isset($_POST['wpcf_nd_gdpr_retention_period'])) 2235 $wpcf_nd_settings['wpcf_nd_gdpr_retention_period'] = sanitize_text_field( $_POST['wpcf_nd_gdpr_retention_period'] ); 2236 if (isset($_POST['wpcf_nd_gdpr_notice'])) 2237 $wpcf_nd_settings['wpcf_nd_gdpr_notice'] = sanitize_text_field( $_POST['wpcf_nd_gdpr_notice'] ); 2238 if (isset($_POST['wpcf_nd_enable_gdpr_delete_button']) && $_POST['wpcf_nd_enable_gdpr_delete_button'] == '1' ) { 2239 $wpcf_nd_settings['wpcf_nd_enable_gdpr_delete_button'] = intval(sanitize_text_field( $_POST['wpcf_nd_enable_gdpr_delete_button'] )); 2240 } else { 2241 $wpcf_nd_settings['wpcf_nd_enable_gdpr_delete_button'] = 0; 2242 } 2243 if (isset($_POST['wpcf_nd_enable_gdpr_download_button']) && $_POST['wpcf_nd_enable_gdpr_download_button'] == '1' ) { 2244 $wpcf_nd_settings['wpcf_nd_enable_gdpr_download_button'] = intval(sanitize_text_field( $_POST['wpcf_nd_enable_gdpr_download_button'] )); 2245 } else { 2246 $wpcf_nd_settings['wpcf_nd_enable_gdpr_download_button'] = 0; 2247 } 2248 2249 $wpcf_nd_settings = apply_filters("wpcf_filter_save_settings", $wpcf_nd_settings, $_POST); 2250 2251 $updated_wpcf_nd_settings = update_option( "wpcf_nd_settings" , $wpcf_nd_settings ); 2252 2253 if($updated_wpcf_nd_settings){ 2254 echo " 2255 <div class=\"updated\"> 2256 <p>".__('Update Successful', 'wpcf_nd')."</p> 2257 </div> 2258 "; 2259 } else { 2260 echo " 2261 <div class=\"error\"> 2262 <p>".__('No changes were made', 'wpcf_nd')."</p> 2263 </div> 2264 "; 2265 } 2266 2267 $cfr_enable_gdpr = isset($_POST['wpcf_nd_enable_gdpr']) && $_POST['wpcf_nd_enable_gdpr'] == 1; 2268 if ( ! $cfr_enable_gdpr ) { 2269 $wpcf_nd_settings['wpcf_nd_enable_gdpr_delete_button'] = 0; 2270 $wpcf_nd_settings['wpcf_nd_enable_gdpr_download_button'] = 0; 2271 } else { 2272 //echo "<span class='update-nag below-h1'>Settings saved</span>"; 2273 } 2125 2274 } else { 2126 $wpcf_nd_settings['wpcf_nd_email_from_address'] = ''; 2127 } 2128 2129 2130 if ( isset( $_POST['wpcf_nd_email_from_name'] ) ){ 2131 $wpcf_nd_settings['wpcf_nd_email_from_name'] = sanitize_text_field( $_POST['wpcf_nd_email_from_name'] ); 2132 } else { 2133 $wpcf_nd_settings['wpcf_nd_email_from_name'] = ''; 2134 } 2135 2136 if (isset($_POST['wpcf_nd_thank_you_text'])) 2137 $wpcf_nd_settings['wpcf_nd_thank_you_text'] = sanitize_text_field( $_POST['wpcf_nd_thank_you_text'] ); 2138 2139 if (isset($_POST['wpcf_nd_enable_gdpr']) && $_POST['wpcf_nd_enable_gdpr'] == '1' ) { 2140 $wpcf_nd_settings['wpcf_nd_enable_gdpr'] = intval(sanitize_text_field( $_POST['wpcf_nd_enable_gdpr'] )); 2141 } else { 2142 $wpcf_nd_settings['wpcf_nd_enable_gdpr'] = 0; 2143 } 2144 if (isset($_POST['wpcf_nd_gdpr_company_name'])) 2145 $wpcf_nd_settings['wpcf_nd_gdpr_company_name'] = sanitize_text_field( $_POST['wpcf_nd_gdpr_company_name'] ); 2146 if (isset($_POST['wpcf_nd_gdpr_retention_purpose'])) 2147 $wpcf_nd_settings['wpcf_nd_gdpr_retention_purpose'] = sanitize_text_field( $_POST['wpcf_nd_gdpr_retention_purpose'] ); 2148 if (isset($_POST['wpcf_nd_gdpr_retention_period'])) 2149 $wpcf_nd_settings['wpcf_nd_gdpr_retention_period'] = sanitize_text_field( $_POST['wpcf_nd_gdpr_retention_period'] ); 2150 if (isset($_POST['wpcf_nd_gdpr_notice'])) 2151 $wpcf_nd_settings['wpcf_nd_gdpr_notice'] = sanitize_text_field( $_POST['wpcf_nd_gdpr_notice'] ); 2152 if (isset($_POST['wpcf_nd_enable_gdpr_delete_button']) && $_POST['wpcf_nd_enable_gdpr_delete_button'] == '1' ) { 2153 $wpcf_nd_settings['wpcf_nd_enable_gdpr_delete_button'] = intval(sanitize_text_field( $_POST['wpcf_nd_enable_gdpr_delete_button'] )); 2154 } else { 2155 $wpcf_nd_settings['wpcf_nd_enable_gdpr_delete_button'] = 0; 2156 } 2157 if (isset($_POST['wpcf_nd_enable_gdpr_download_button']) && $_POST['wpcf_nd_enable_gdpr_download_button'] == '1' ) { 2158 $wpcf_nd_settings['wpcf_nd_enable_gdpr_download_button'] = intval(sanitize_text_field( $_POST['wpcf_nd_enable_gdpr_download_button'] )); 2159 } else { 2160 $wpcf_nd_settings['wpcf_nd_enable_gdpr_download_button'] = 0; 2161 } 2162 2163 2164 2165 $wpcf_nd_settings = apply_filters("wpcf_filter_save_settings", $wpcf_nd_settings, $_POST); 2166 2167 update_option( "wpcf_nd_settings" , $wpcf_nd_settings ); 2168 2169 $cfr_enable_gdpr = isset($_POST['wpcf_nd_enable_gdpr']) && $_POST['wpcf_nd_enable_gdpr'] == 1; 2170 if ( ! $cfr_enable_gdpr ) { 2171 $wpcf_nd_settings['wpcf_nd_enable_gdpr_delete_button'] = 0; 2172 $wpcf_nd_settings['wpcf_nd_enable_gdpr_download_button'] = 0; 2173 } else { 2174 echo "<span class='update-nag below-h1'>Settings saved</span>"; 2175 } 2275 echo " 2276 <div class=\"error\"> 2277 <p>".__('No changes were made', 'wpcf_nd')."</p> 2278 </div> 2279 "; 2280 } 2281 } 2282 2283 if (!empty($wpcf_nd_settings['wpcf_custom_css'])) { 2284 wp_add_inline_style( 'contact-form-ready', wp_strip_all_tags( $wpcf_nd_settings['wpcf_custom_css'] ) ); 2176 2285 } 2177 2286 … … 2182 2291 if (!isset($wpcf_nd_settings['wpcf_nd_email_from_name'])) 2183 2292 $wpcf_nd_settings['wpcf_nd_email_from_name'] = get_option( 'blogname' ); 2184 2185 2186 2293 2187 2294 ?> 2295 2188 2296 <form action='' method='POST' name='wpcf_settings_form'> 2189 2297 <div id="sola_cfr_tabs"> … … 2194 2302 <li><a href="#tabs-3">Email template</a></li> 2195 2303 <li><a href="#tabs-4">Privacy</a></li> 2304 <li><a href="#tabs-5">Advanced</a></li> 2305 2306 <?php 2307 //Build extension settings page tab 2308 do_action( 'wpcf_hook_settings_page_tab', $wpcf_nd_settings ); 2309 ?> 2310 2311 <li><a href="#tabs-6">REST API</a></li> 2196 2312 </ul> 2197 2313 … … 2199 2315 <h2><?php _e("Contact Form Settings","wpcf_nd"); ?></h2> 2200 2316 2201 <table class='wp-list-table widefat stripedfixed'>2317 <table class='wp-list-table fixed'> 2202 2318 <tr> 2203 <td width='250'>< ?php _e("Email from address","wpcf_nd"); ?></td>2204 <td><input type='text' name='wpcf_nd_email_from_address' class='regular-text' id='wpcf_nd_email_from_address' value='<?php echo $wpcf_nd_settings['wpcf_nd_email_from_address']; ?>' /></td>2319 <td width='250'><label for="wpcf_nd_email_from_address"><?php _e("Email from address","wpcf_nd"); ?></label></td> 2320 <td><input type='text' name='wpcf_nd_email_from_address' class='regular-text' id='wpcf_nd_email_from_address' value='<?php echo esc_attr($wpcf_nd_settings['wpcf_nd_email_from_address']); ?>' /></td> 2205 2321 </tr> 2206 2322 <tr> 2207 <td width='250'>< ?php _e("Email from name","wpcf_nd"); ?></td>2208 <td><input type='text' name='wpcf_nd_email_from_name' class='regular-text' id='wpcf_nd_email_from_name' value='<?php echo $wpcf_nd_settings['wpcf_nd_email_from_name']; ?>' /></td>2323 <td width='250'><label for="wpcf_nd_email_from_name"><?php _e("Email from name","wpcf_nd"); ?></label></td> 2324 <td><input type='text' name='wpcf_nd_email_from_name' class='regular-text' id='wpcf_nd_email_from_name' value='<?php echo esc_attr($wpcf_nd_settings['wpcf_nd_email_from_name']); ?>' /></td> 2209 2325 </tr> 2210 2326 <tr> 2211 <td width='250'>< ?php _e("Thank you text","wpcf_nd"); ?></td>2212 <td><input type='text' name='wpcf_nd_thank_you_text' class='regular-text' id='wpcf_nd_thank_you_text' value='<?php echo stripslashes(esc_html($wpcf_nd_settings['wpcf_nd_thank_you_text'])); ?>' /></td>2327 <td width='250'><label for="wpcf_nd_thank_you_text"><?php _e("Thank you text","wpcf_nd"); ?></label></td> 2328 <td><input type='text' name='wpcf_nd_thank_you_text' class='regular-text' id='wpcf_nd_thank_you_text' value='<?php echo esc_attr($wpcf_nd_settings['wpcf_nd_thank_you_text']); ?>' /></td> 2213 2329 </tr> 2214 2330 </table> … … 2226 2342 <?php do_action( "wpcf_hook_settings_page_bottom_privacy", $wpcf_nd_settings ); ?> 2227 2343 </div> 2344 2345 <div id="tabs-5"> 2346 <h2><?php _e("Advanced Settings","wpcf_nd"); ?></h2> 2347 <table class='wp-list-table fixed'> 2348 <tr id="wpcf_custom_css_tr_container"> 2349 <td style="width: 250px"><label><?php _e("Custom CSS:","wpcf_nd"); ?></label></td> 2350 <td id="wpcf_custom_css_container"><textarea name="wpcf_custom_css" id="wpcf_custom_css" cols="70" rows="10" spellcheck="false"><?php if(isset($wpcf_nd_settings['wpcf_custom_css']) && $wpcf_nd_settings['wpcf_custom_css'] != "") { echo wp_strip_all_tags($wpcf_nd_settings['wpcf_custom_css']); } ?></textarea></td> 2351 </tr> 2352 2353 </table> 2354 </div> 2355 2356 <?php 2357 function wpcf_nd_get_token() { 2358 $wpcf_nd_token = get_option( 'wpcf_nd_token' ); 2359 if ( isset( $wpcf_nd_token ) ){ 2360 return $wpcf_nd_token; 2361 } else { 2362 return ''; 2363 } 2364 } 2365 ?> 2366 2367 <div id="tabs-6"> 2368 <h2><?php _e("REST API","wpcf_nd"); ?></h2> 2369 <table class="form-table wp-list-table widefat striped pages"> 2370 <tbody> 2371 <tr> 2372 <td width="200">Secret Token:</td> 2373 <td width="300px"><input type="text" id="wpcf_nd_token" disabled="true" value="<?php echo esc_attr(wpcf_nd_get_token()); ?>" readonly style="width:300px;"></td> 2374 </tr> 2375 2376 <tr> 2377 <td>Supported API Calls:</td> 2378 <td width="600"><code>/wp-json/contact-form-ready/v1/get_forms?token={secret_token}</code> 2379 </td> 2380 2381 </tr> 2382 <?php 2383 do_action('wpcf_hook_settings_page_sr_rest_show'); 2384 ?> 2385 <tr> 2386 <td>API Response Codes:</td> 2387 <td><code>200</code> 2388 <code>Success</code> 2389 </td> 2390 </tr> 2391 <tr> 2392 <td></td> 2393 <td><code>400</code> 2394 <code>Bad Request</code> 2395 </td> 2396 </tr> 2397 <tr> 2398 <td></td> 2399 <td><code>401</code> 2400 <code>Unauthorized</code> 2401 </td> 2402 </tr> 2403 </tbody> 2404 </table> 2405 </div> 2406 2407 <?php 2408 //Build extension settings page body 2409 do_action( "wpcf_hook_settings_page_bottom", $wpcf_nd_settings ); 2410 ?> 2411 2228 2412 </div> 2413 2414 <?php wp_nonce_field('wpcf_save_settings', 'wpcf_save_settings'); ?> 2415 2229 2416 <input type='submit' class="button-primary" value='Save settings' name='wpcf_submit_save_settings' /> 2230 2417 </form> 2231 2232 2418 2233 2419 <?php … … 2260 2446 function set_custom_edit_columns($columns) { 2261 2447 2262 2263 $columns['shortcode'] = __( 'Shortcode', 'wpcf_nd' ); 2448 2264 2449 $columns['views'] = __( 'Views', 'wpcf_nd' ); 2265 $columns['submissions'] = __( 'Submissions', 'wpcf_nd' ); 2450 $columns['submissions'] = __( 'Submissions', 'wpcf_nd' ); 2451 $columns['shortcode'] = __( 'Shortcode', 'wpcf_nd' ); 2266 2452 2267 2453 return $columns; … … 2271 2457 switch ( $column ) { 2272 2458 2273 case 'shortcode' : 2274 echo '<pre>[cform-nd id="'.$post_id.'"]</pre>'; 2275 break; 2459 2276 2460 case 'views' : 2277 2461 $views = intval(get_post_meta( $post_id , 'cform_views' , true )); … … 2281 2465 $views = intval(get_post_meta( $post_id , 'cform_submissions' , true )); 2282 2466 echo $views; 2283 break; 2467 break; 2468 case 'shortcode' : 2469 echo '<pre>[cform-nd id="'. intval($post_id).'"]</pre>'; 2470 break; 2284 2471 2285 2472 … … 2294 2481 public static function enqueue_user_styles() { 2295 2482 wp_register_style( 'contact-form-ready', plugins_url(plugin_basename(dirname(__FILE__)))."/css/front-end.css", true ); 2296 wp_enqueue_style( 'contact-form-ready' );2483 wp_enqueue_style( 'contact-form-ready' ); 2297 2484 2298 2485 $wpcf_nd_styling = get_option("wpcf_nd_styling"); 2486 2487 if (!empty($wpcf_nd_styling)){ 2488 2489 if ($wpcf_nd_styling['wpcf_nd_enable_style'] == 1){ 2490 2491 $wpcf_nd_styling_css_string_labels = '.fb-text-label, .fb-textarea-label, .fb-radio-group-label, .fb-select-label, .fb-date-label, .fb-number-label, .fb-checkbox-group-label{font-size:' . esc_attr($wpcf_nd_styling['wpcf_nd_label_font_size']) . 'px !important; font-weight:' . esc_attr($wpcf_nd_styling['wpcf_nd_label_font_weight']) .' !important; color:' . esc_attr($wpcf_nd_styling['wpcf_nd_label_color']) . ' !important;}'; 2492 2493 $wpcf_nd_styling_css_string_inputs = '.text-input, .text-area, .wpcf_nd input[type=text], .wpcf_nd textarea, .wpcf_nd input[type=number], .wpcf_nd select, .wpcf_nd input[type=date], .wpcf_nd input[type=email]{background-color:' . esc_attr($wpcf_nd_styling['wpcf_nd_input_bg_color']) . ' !important; border-color:' . esc_attr($wpcf_nd_styling['wpcf_nd_input_border_color']) . ' !important; font-size:' . esc_attr($wpcf_nd_styling['wpcf_nd_input_font_size']) . 'px !important; color:' . esc_attr($wpcf_nd_styling['wpcf_nd_input_font_color']) . ' !important;} ' . '.text-input:hover, .text-area:hover, .wpcf_nd input[type=text]:hover, .wpcf_nd textarea:hover, .wpcf_nd input[type=number]:hover, .wpcf_nd select:hover, .wpcf_nd input[type=date]:hover, .wpcf_nd input[type=email]:hover{border-color:' . esc_attr($wpcf_nd_styling['wpcf_nd_input_border_focus_color']) . '!important;}'; 2494 2495 $wpcf_nd_styling_css_string_submit = '.wpcf_nd_submit{background-color:' . esc_attr($wpcf_nd_styling['wpcf_nd_submit_bg_color']) . ' !important; font-size:' . esc_attr($wpcf_nd_styling['wpcf_nd_submit_font_size']) . 'px !important; color:' . esc_attr($wpcf_nd_styling['wpcf_nd_submit_font_color']) . ' !important; font-weight:' . esc_attr($wpcf_nd_styling['wpcf_nd_submit_font_weight']) . ' !important; text-transform:' . esc_attr($wpcf_nd_styling['wpcf_nd_submit_text_transform']) . ' !important;} ' . '.wpcf_nd_submit:hover{background-color:' . esc_attr($wpcf_nd_styling['wpcf_nd_submit_bg_hover_color']) . ' !important;}'; 2496 2497 $wpcf_nd_styling_css_string_full = $wpcf_nd_styling_css_string_labels . ' ' . $wpcf_nd_styling_css_string_inputs . ' ' . $wpcf_nd_styling_css_string_submit; 2498 2499 wp_add_inline_style( 'contact-form-ready', stripslashes( $wpcf_nd_styling_css_string_full ) ); 2500 } 2501 2502 } 2503 2299 2504 $wpcf_nd_basic_settings = get_option("wpcf_nd_basic_settings"); 2300 $modal_el = $wpcf_nd_basic_settings['wpcf_nd_modal_el']; 2301 $modal_bg = $wpcf_nd_basic_settings['wpcf_nd_modal_bg']; 2302 $modal_opacity = $wpcf_nd_basic_settings['wpcf_nd_modal_opacity']; 2303 $modal_inner_bg = $wpcf_nd_basic_settings['wpcf_nd_modal_inner_bg']; 2505 2506 $modal_el = !empty($wpcf_nd_basic_settings['wpcf_nd_modal_el']) ? $wpcf_nd_basic_settings['wpcf_nd_modal_el'] : ''; 2507 $modal_bg = !empty($wpcf_nd_basic_settings['wpcf_nd_modal_bg']) ? $wpcf_nd_basic_settings['wpcf_nd_modal_bg'] : ''; 2508 $modal_opacity = !empty($wpcf_nd_basic_settings['wpcf_nd_modal_opacity']) ? $wpcf_nd_basic_settings['wpcf_nd_modal_opacity'] : ''; 2509 $modal_inner_bg = !empty($wpcf_nd_basic_settings['wpcf_nd_modal_inner_bg']) ? $wpcf_nd_basic_settings['wpcf_nd_modal_inner_bg'] : ''; 2510 2511 $wpcf_nd_settings = get_option("wpcf_nd_settings"); 2512 if (!empty($wpcf_nd_settings['wpcf_custom_css'])) { 2513 wp_add_inline_style( 'contact-form-ready', wp_strip_all_tags( $wpcf_nd_settings['wpcf_custom_css'] ) ); 2514 } 2304 2515 2305 2516 $css = ''; … … 2390 2601 } 2391 2602 2392 if ( '' !== $css ) { 2393 wp_add_inline_style( 'contact-form-ready', $css ); 2394 } 2603 2395 2604 } 2396 2605 … … 2409 2618 2410 2619 $wpcf_nd_basic_settings = get_option("wpcf_nd_basic_settings"); 2411 $modal_el_attr = $wpcf_nd_basic_settings['wpcf_nd_modal_el_attr'];2412 $modal_el = $wpcf_nd_basic_settings['wpcf_nd_modal_el'];2620 $modal_el_attr = !empty($wpcf_nd_basic_settings['wpcf_nd_modal_el_attr']) ? $wpcf_nd_basic_settings['wpcf_nd_modal_el_attr'] : ''; 2621 $modal_el = !empty($wpcf_nd_basic_settings['wpcf_nd_modal_el']) ? $wpcf_nd_basic_settings['wpcf_nd_modal_el'] : ''; 2413 2622 if ($wpcf_thank_you) { 2414 2623 … … 2430 2639 } 2431 2640 2432 wp_localize_script( 'contact-form-ready', 'wpcf_nd_form_type', $form_type ); 2641 $formLocalize = array(); 2642 2643 $formLocalize['wpcf_nd_form_type'] = $form_type; 2433 2644 2434 2645 $wpcf_nd_redirect_uri = get_post_meta( $atts['id'], 'wpcf_nd_redirect_uri', true ); 2435 2646 if ($wpcf_nd_redirect_uri) { 2436 wp_localize_script( 'contact-form-ready', 'wpcf_nd_form_redirect', get_option("siteurl") . $wpcf_nd_redirect_uri );2647 $formLocalize['wpcf_nd_form_redirect'] = get_option("siteurl") . $wpcf_nd_redirect_uri; 2437 2648 } 2649 2650 wp_localize_script( 'contact-form-ready', 'wpcf_nd_form_localize', $formLocalize ); 2438 2651 2439 2652 $submit_string = get_post_meta( $atts['id'], 'wpcf_nd_submit_string' , true ); … … 2738 2951 2739 2952 // First check if Gutenberg is available. 2740 if ( function_exists( 'register_block_type ' ) ) {2953 if ( function_exists( 'register_block_type_from_metadata' ) ) { 2741 2954 2742 2955 /** … … 2744 2957 */ 2745 2958 function cfr_gutenberg_block_renderer() { 2746 // Register our block editor script.2959 // Register gutenberg block script 2747 2960 wp_register_script( 2748 2961 'cfr-gutenberg-block', 2749 2962 plugins_url( 'gutenberg/block.js', __FILE__ ), 2750 array( 'wp-blocks', 'wp-element', 'wp-components', 'wp-editor')2963 array( "wp-blocks", "wp-i18n") 2751 2964 ); 2752 2965 2753 // Register our styles for backend to represent what the user would see on the frontend 2754 // specifically adjust the default WordPress styling to our own. 2755 wp_register_style( 2966 // Register gutenbern styles 2967 wp_register_style( 2756 2968 'cfr-gutenberg-block-style', 2757 2969 plugins_url( 'gutenberg/style.css', __FILE__ ), 2758 array( ),2970 array(), 2759 2971 filemtime( plugin_dir_path( __FILE__ ) . 'gutenberg/style.css' ) 2760 2972 ); 2761 // Gets our contact forms and loops through giving us a drop down list to use when2762 // selecting a contact form2973 2974 // Localize the forms for selection 2763 2975 $forms = get_posts( 2764 2976 array( … … 2773 2985 $localized_forms[] = array( 2774 2986 'value' => $form->ID, 2775 'label' => $form->post_ name2987 'label' => $form->post_title 2776 2988 ); 2777 2989 } … … 2779 2991 wp_localize_script('cfr-gutenberg-block', 'cfr_localized_forms', $localized_forms); 2780 2992 2781 // Register our block, and define attributes we accept. 2782 register_block_type( 'contact-form-ready/cfr-gutenberg-block', array( 2783 'attributes' => array( 2784 'cfid' => array( 2785 'type' => 'string', 2786 ), 2787 'alignment' => array( 2788 'type' => 'string', 2993 // Register block type using the new JSON definition approach, this will enqueue the assets 2994 register_block_type_from_metadata( 2995 plugin_dir_path(__FILE__) . '/gutenberg/', 2996 array( 2997 'render_callback' => 'cfr_gutenberg_block_render', 2998 'attributes' => array( 2999 'cfid' => array( 3000 'type' => 'string' 3001 ), 3002 'alignment' => array( 3003 'type' => 'string' 3004 ) 2789 3005 ) 2790 ), 2791 'editor_script' => 'cfr-gutenberg-block', // The script name we gave in the wp_register_script() call. 2792 'render_callback' => 'cfr_gutenberg_block_render', 2793 'editor_style' => 'cfr-gutenberg-block-style', // the style name we gave in the WP_register_style() call. 2794 ) ); 3006 ) 3007 ); 2795 3008 } 2796 3009 … … 2801 3014 */ 2802 3015 function cfr_gutenberg_block_render( $attributes ) { 3016 if(empty($attributes['cfid'])){ 3017 return "<p style='padding:10px;'>Please Select A Form</p>"; 3018 } 2803 3019 2804 3020 $style = ''; 2805 2806 3021 if(!empty($attributes['alignment'])){ 2807 3022 $style = 'style="text-align:' . $attributes['alignment'] . ';"'; 2808 3023 } 2809 3024 2810 if(empty($attributes['cfid'])){ 2811 return "<p $style>Please Select A Form</p>"; 2812 } 2813 2814 return "<div $style>" . do_shortcode('[cform-nd id="' . $attributes['cfid'] . '"]') . "</div>"; 3025 $shortcode = do_shortcode('[cform-nd id="' . intval($attributes['cfid']) . '"]'); 3026 return "<div {$style}>{$shortcode}</div>"; 2815 3027 } 2816 3028 } -
contact-form-ready/trunk/css/admin.css
r2190532 r3049139 101 101 width: 262px; 102 102 padding: 14px; 103 height: 395px;103 height: 415px; 104 104 position: relative; 105 105 … … 115 115 bottom: 14px; 116 116 left: 14px; 117 118 } 119 120 .wpcf_shortcode_copy { 121 background: #edf7fc !important; 122 box-shadow: none !important; 123 border: none !important; 124 padding: 7px 5px; 125 font-size: 15px !important; 126 color: #007cba!important; 127 border: 2px solid #007cba !important; 128 border-radius: 3px !important; 129 cursor: pointer; 130 text-align: center; 131 } 132 133 .wpcf_nd_shortcode_styling { 134 background: #edf7fc !important; 135 box-shadow: none !important; 136 border: none !important; 137 padding: 7px 5px; 138 font-size: 15px !important; 139 color: #007cba!important; 140 border: 2px solid #007cba !important; 141 border-radius: 3px !important; 142 cursor: pointer; 143 text-align: center; 117 144 } 118 145 … … 123 150 padding: 2px; 124 151 transition: opacity 0.8s; 125 color: #00 85ba;126 border: 1px solid #00 85ba;152 color: #007cba; 153 border: 1px solid #007cba; 127 154 } 128 155 … … 130 157 opacity: 1; 131 158 visibility: visible; 159 132 160 } 133 161 … … 190 218 .wpcf-admin-enable-style-wrapper { 191 219 display: inline-block; 192 margin: 20px 0;220 margin: 5px 0 20px 0; 193 221 padding: 10px 15px; 194 background: # f9f9f9;222 background: #c5c5c5;; 195 223 font-size: 16px; 196 224 font-weight: 600; 225 197 226 } 198 227 … … 201 230 top: 2px; 202 231 margin-left: 5px; 232 203 233 } 204 234 … … 236 266 .wpcf_nd label, .fb-radio-group-label, .fb-checkbox-group-label { 237 267 display: block; 268 margin-top: 20px; 238 269 margin-bottom: 8px; 239 270 color: #333333; … … 250 281 .wpcf-admin-preview-submit { 251 282 border: none; 283 width: 100%; 284 height: 30px; 285 border-radius: 5px; 252 286 } 253 287 … … 287 321 } 288 322 323 289 324 .wpcf_nd input[type="submit"] { 290 325 width: 100%; … … 343 378 } 344 379 345 .wpcf-live-color-preview {346 width: 14px;347 height: 14px;348 border-radius: 2px;349 margin-left: 4px;350 margin-right: 4px;351 box-shadow: 0px 0px 2px #888888;352 }353 380 354 381 #wpcf_nd_label_font_weight{ … … 370 397 .wpcf-styling-form .wpcf-admin-preview-form, .wpcf_nd { 371 398 margin-left: 0 !important; 372 padding: 28px;373 background: white;399 padding: 18px 28px 0px 28px; 400 background: #fff; 374 401 } 375 402 } … … 378 405 .wpcf-styling-form .wpcf-admin-preview-form, .wpcf_nd { 379 406 margin-left: 150px; 380 padding: 28px;381 background: white;407 padding: 18px 28px 0px 28px; 408 background: #fff; 382 409 } 383 410 } 384 385 411 412 386 413 .wpcf-styling-form #sola_cfr_styling_tabs { 387 414 height: 100%; 388 415 width: 100%; 389 416 } 390 417 418 /* 391 419 .wpcf-styling-form .wpcf-admin-preview-form:hover { 392 420 border: 1px solid #c5c5c5; 393 421 } 422 */ 394 423 395 424 #sola_cfr_styling_tabs .ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active, a.ui-button:active, .ui-button:active, .ui-button.ui-state-active:hover { … … 420 449 width: 100%; 421 450 } 422 451 452 423 453 #sola_cfr_styling_tabs .ui-state-default .ui-tabs-anchor { 424 454 padding: 10px 0px 10px 0px; 425 } 426 427 #sola_cfr_styling_tabs .ui-state-default.ui-state-active{ 428 background: #0085ba; 429 color: #fff; 430 } 431 432 #sola_cfr_styling_tabs .ui-state-default{ 433 background: #e9e9e9; 455 456 } 457 458 #sola_cfr_styling_tabs .ui-state-default.ui-state-active a{ 459 background: #fff; 460 color: #000; 461 } 462 463 464 #sola_cfr_styling_tabs .ui-state-default { 465 background: #D3D3D3; 434 466 } 435 467 … … 483 515 width: 32.66%; 484 516 } 517 518 .widefat td pre{ 519 background: #edf7fc !important; 520 box-shadow: none !important; 521 border: none !important; 522 padding: 7px 5px; 523 font-size: 15px !important; 524 color: #007cba!important; 525 border: 2px solid #007cba !important; 526 border-radius: 3px !important; 527 cursor: pointer; 528 text-align: center; 529 } 530 531 .updated, .error{ 532 margin: 15px 15px 2px 0 !important; 533 } 534 535 label#wpcf-admin-preview-darkmode-label{ 536 color: #000; 537 display: inline; 538 } 539 540 input#wpcf-admin-preview-darkmode-checkbox{ 541 margin-left: 15px; 542 margin-top: 20px; 543 } 544 545 span#wpcf-admin-preview-darkmode-note{ 546 display: block; 547 padding-bottom: 20px; 548 border-bottom: 1px solid rgba(0, 0, 0, 0.15); 549 } 550 551 #contact_form_ready_tabs .ui-tabs-panel > h2{ 552 font-size: 20px; 553 } 554 555 #contact_form_ready_tabs{ 556 border: none; 557 } 558 559 #contact_form_ready_tabs .ui-tabs-panel{ 560 border: 1px solid #dddddd; 561 } 562 563 #contact_form_ready_tabs .ui-tabs-nav li{ 564 margin-right: 0 !important; 565 border-bottom: 1px solid rgba(0, 0, 0, 0.25); 566 } 567 568 #contact_form_ready_tabs .ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr{ 569 border-radius: 0 !important; 570 } 571 572 #contact_form_ready_tabs .ui-widget-header{ 573 border: none; 574 background: none; 575 padding-left: 0px; 576 } -
contact-form-ready/trunk/css/wpcf-tabs-style.css
r2230921 r3049139 1 label { font-weight: bolder; } 1 /*label { font-weight: bolder; }*/ 2 2 3 #sola_cfr_tabs .ui-tabs-nav { 3 4 padding:0; 4 height:auto; 5 } 6 5 height:auto; 6 } 7 8 #sola_cfr_tabs h1 { 9 margin-top: 40px; 10 font-size: 24px; 11 font-weight: 450; 12 } 13 7 14 #sola_cfr_tabs .ui-tabs-nav { 8 15 border-bottom: none !important; 9 16 margin-top: 0px !important; 10 } 11 #sola_cfr_tabs .ui-tabs-panel{ 17 18 } 19 20 #sola_cfr_tabs .ui-tabs-panel { 12 21 padding:0; 13 } 22 23 } 24 14 25 #sola_cfr_tabs .ui-tabs-panel table { 15 padding: 5px; 16 } 26 padding: 1px; 27 28 font-style: normal; 29 } 30 17 31 #sola_cfr_tabs .ui-state-default{ 18 32 width: 180px; 19 background-color: # e9e9e9;33 background-color: #D3D3D3; 20 34 height: 35px; 21 padding: 0px;22 35 line-height: 30px; 23 36 border: none !important; 24 25 } 37 margin-bottom: 0px; 38 margin-top: 3px; 39 font-weight: 400; 40 font-size: 12px; 41 42 } 43 26 44 #sola_cfr_tabs .ui-state-default a{ 27 45 color:#000; … … 29 47 text-align: center; 30 48 display: block; 31 } 32 #sola_cfr_tabs .ui-state-default a:hover{ 33 text-decoration:none; 34 cursor: pointer; 35 color: #000; 36 display: block; 37 } 38 39 49 font-size: 13px; 50 padding-top: 2px; 51 padding-bottom: 17px; 52 53 } 40 54 41 55 #sola_cfr_tabs .ui-state-active a:hover{ 42 56 cursor: pointer; 43 border: none ; 44 } 57 border: none ; 58 } 59 45 60 #sola_cfr_tabs .ui-state-active { 46 61 background-color: #fff; 47 62 border: none; 63 48 64 } 49 65 50 66 #sola_cfr_tabs .ui-tabs-nav { 51 67 text-align: left; 68 background: #f1f1f1; 52 69 } 53 70 … … 55 72 margin: 0; 56 73 padding: .2em .2em 0 ; 57 } 58 74 75 } 76 77 59 78 #sola_cfr_tabs .ui-widget-header { 60 79 border: 1px solid #dddddd; 61 80 color: #333333; 62 font-weight: bold; 63 } 81 font-weight: bold; 82 83 } 84 64 85 #sola_cfr_tabs .ui-helper-reset { 65 86 margin: 0; … … 70 91 font-size: 100%; 71 92 list-style: none; 72 } 93 94 } 95 73 96 #sola_cfr_tabs .ui-helper-clearfix:before, .ui-helper-clearfix:after { 74 97 content: ""; … … 76 99 border-collapse: collapse; 77 100 } 101 78 102 #sola_cfr_tabs .ui-helper-clearfix:after { 79 103 clear: both; 80 104 } 105 81 106 #sola_cfr_tabs .ui-helper-clearfix:before, .ui-helper-clearfix:after { 82 107 content: ""; … … 84 109 border-collapse: collapse; 85 110 } 111 86 112 #sola_cfr_tabs .ui-tabs .ui-tabs-nav li.ui-tabs-active { 87 113 margin-bottom: -1px; 88 114 padding-bottom: 10px; 115 89 116 } 90 117 … … 97 124 border-bottom-width: 0; 98 125 white-space: nowrap; 126 99 127 } 100 128 101 129 #sola_cfr_tabs{ 102 margin: 1px .2em 15px 0; 130 margin: 1px .2em 15px 0; 131 103 132 } 104 133 … … 108 137 color: #ffffff; 109 138 } 139 110 140 #sola_cfr_tabs .ui-tabs-nav { 111 141 border-bottom: none; 112 142 margin-top: 15px; 143 113 144 } 114 145 … … 117 148 .ui-tabs-anchor:focus{ 118 149 outline: none; 119 box-shadow: none; 150 box-shadow: none; 151 120 152 } 121 153 122 154 #sola_cfr_tabs .ui-state-default.ui-state-active { 123 background: #0085ba; 124 color: #fff; 125 } 155 background-color: #fff; 156 color: #000; 157 } 158 126 159 #sola_cfr_tabs .ui-state-active .ui-tabs-anchor{ 127 color: #ffffff; 128 } 129 130 160 color: #000; 161 162 } 163 164 #sola_cfr_tabs #tabs-1, /* Contact Form Tab*/ 165 #sola_cfr_tabs #tabs-2, /* Anti Spam Tab */ 166 #sola_cfr_tabs #tabs-4, /* Privacy Tab */ 167 #sola_cfr_tabs #tabs-5, /* Advanced Tab */ 168 #sola_cfr_tabs .extension-tab /* Extension Tabs */ 169 { 170 background: #fff; 171 padding: 0.1em 13px; 172 margin-top: 2px; 173 font-style: normal; 174 width: 97% !important; 175 } 176 177 /* Email Template Tab */ 178 #sola_cfr_tabs #tabs-3 { 179 background: #fff; 180 padding: 0.1em 13px; 181 margin-top: 2px; 182 /*width: 2147px;*/ 183 width: 97% !important; 184 } 185 186 /* REST API Tab */ 187 #sola_cfr_tabs #tabs-6 { 188 background: #fff; 189 padding: 0.1em 13px; 190 margin-top: 2px; 191 font-style: normal; 192 font-weight: 100; 193 width: 97% !important; 194 } 195 196 #sola_cfr_tabs #tabs-5 #wpcf_custom_css_container{ 197 margin-right: 13px; 198 } 199 200 textarea #wpcf_custom_css{ 201 border-color: #2B323C; 202 background-color:#2B323C; 203 background: #2B323C; 204 color: #fff; 205 padding-left: 10px; 206 } 207 208 .wp-core-ui .button-primary { 209 background: #f3f5f6; 210 color: #183ad6; 211 } 212 213 .wp-core-ui .button-primary:hover{ 214 background: #cee3ec; 215 color: #007cba; 216 } 217 218 #tabs-3 .wp-list-table{ 219 width: 100% !important; 220 } 221 222 #wpcf_restore_default_template{ 223 margin-top: 15px !important; 224 } 225 226 .wp-list-table{ 227 margin-bottom: 15px; 228 } 229 230 .wp-list-table label{ 231 font-weight: 600; 232 } 233 234 .updated, .error{ 235 margin: 15px 15px 2px 0 !important; 236 } 237 238 #wpcf_custom_css_tr_container .CodeMirror{ 239 width: 400px; 240 } 241 242 .CodeMirror .CodeMirror-scroll .CodeMirror-sizer{ 243 min-height: 150px !important; 244 } -
contact-form-ready/trunk/gutenberg/block.js
r2230921 r3049139 1 var el = wp.element.createElement,2 registerBlockType = wp.blocks.registerBlockType,3 ServerSideRender = wp.components.ServerSideRender,4 TextControl = wp.components.TextControl,5 SelectControl = wp.components.SelectControl,6 InspectorControls = wp.editor.InspectorControls,7 AlignmentToolbar = wp.editor.AlignmentToolbar,8 BlockControls = wp.editor.BlockControls;9 10 1 11 /* 12 * Registers the block in JavaScript. 13 */ 14 registerBlockType( 'contact-form-ready/cfr-gutenberg-block', { 15 title: 'Contact Form Ready Block', 16 icon: 'email-alt', 17 category: 'common', 18 19 /* 20 * Our block is renderred on the PHP side so here we are 21 * setting our controls and attributes. 22 */ 23 edit: function( props ) { 2 (function( blocks, element, components, i18n, wp) { 3 const blockEditor = wp.blockEditor; 4 const useBlockProps = blockEditor.useBlockProps; 5 const InspectorControls = blockEditor.InspectorControls; 6 const PanelBody = components.PanelBody; 7 const ServerSideRender = wp.serverSideRender, 24 8 25 var alignment = props.attributes.alignment;26 9 27 function onChangeAlignment( newAlignment ) { 28 props.setAttributes( { alignment: newAlignment === undefined ? 'none' : newAlignment } ); 29 } 10 CFRGutenberg = function(){ 11 blocks.registerBlockType('contact-form-ready/cfr-gutenberg-block', this.getDefinition()); 12 } 13 14 CFRGutenberg.prototype.getDefinition = function(){ 15 return { 16 attributes : this.getAttributes(), 17 edit : (props) => { 18 return this.onEdit(props); 19 }, 20 save : (props) => { 21 const blockProps = useBlockProps.save(); 22 return null; 23 } 24 }; 25 } 26 27 CFRGutenberg.prototype.getAttributes = function(){ 28 return { 29 cfid : {type : 'string'}, 30 alignment: {type : 'string'} 31 } 32 } 33 34 CFRGutenberg.prototype.onEdit = function(props){ 35 const inspector = this.getInspector(props); 36 const preview = this.getPreview(props); 30 37 31 38 return [ 32 /* 33 * Automatically calls our block renderer from our PHP when it needs 34 * to get an updated view of the block 35 */ 36 el( ServerSideRender, { 39 inspector, 40 preview 41 ]; 42 } 43 44 CFRGutenberg.prototype.getInspector = function(props){ 45 let inspector = []; 46 if(!!props.isSelected){ 47 let panel = React.createElement( 48 InspectorControls, 49 { key: "inspector" }, 50 React.createElement( 51 PanelBody, 52 { title: wp.i18n.__('Settings') }, 53 React.createElement(wp.components.SelectControl, { 54 name: "cfid", 55 label: wp.i18n.__("Form"), 56 value: props.attributes.cfid || "", 57 options: this.getFormOptions(), 58 onChange: (value) => { 59 props.setAttributes({cfid : value}); 60 } 61 }), 62 React.createElement(wp.components.SelectControl, { 63 name: 'alignment', 64 label: wp.i18n.__('Alignment'), 65 value: props.attributes.alignment || "", 66 options: [ 67 { 68 key: "left", 69 value: "left", 70 label: wp.i18n.__('Left') 71 }, 72 { 73 key: "center", 74 value: "center", 75 label: wp.i18n.__('Center') 76 }, 77 { 78 key: "right", 79 value: "right", 80 label: wp.i18n.__('Right') 81 } 82 ], 83 onChange: (value) => { 84 props.setAttributes({alignment : value}); 85 } 86 }) 87 ) 88 ); 89 90 inspector.push(panel); 91 } 92 return inspector; 93 } 94 95 CFRGutenberg.prototype.getPreview = function(props){ 96 let preview = []; 97 98 let blockProps = useBlockProps({ 99 key: 'cfr-preview', 100 className: props.className + " cfr-preview-block" 101 }); 102 103 let serverSide = React.createElement( 104 ServerSideRender, 105 { 106 key: "preview", 37 107 block: 'contact-form-ready/cfr-gutenberg-block', 38 attributes: props.attributes, 39 } ), 108 attributes: props.attributes 109 } 110 ); 40 111 41 /* 42 * Adds our block controls, in this case we are simply adding 43 * the ability to text align left, center and right using the 44 * Gutenberg controls 45 */ 46 el( BlockControls,{ 47 key: 'controls' }, 48 el( 49 AlignmentToolbar, { 50 value: alignment, 51 onChange: onChangeAlignment, 52 } 53 ) 54 ), 112 let wrapper = React.createElement('div', {...blockProps}, serverSide); 55 113 56 /* 57 * Adds inspector controls, right hand side of block/page 58 */ 59 el( InspectorControls, {}, 60 el( SelectControl, { 61 label: 'Please Choose A Contact Form', 62 value: props.attributes.cfid, 63 onChange: ( value ) => { props.setAttributes( { cfid: value } ); }, 64 options: cfr_localized_forms, 65 } ) 66 ), 67 ]; 68 }, 114 preview.push(wrapper); 69 115 70 // We're going to be rendering in PHP, so save() can just return null. 71 save: function() { 72 return null; 73 }, 74 } ); 116 return preview; 117 } 118 119 CFRGutenberg.prototype.getFormOptions = function(){ 120 let data = []; 121 122 data.push({ 123 key: "", 124 value: "", 125 label: wp.i18n.__('Please choose a form') 126 }); 127 128 cfr_localized_forms.forEach(function (el) { 129 data.push({ 130 key: el.value, 131 value: el.value, 132 label: el.label + " (" + el.value + ")" 133 }); 134 }); 135 136 return data; 137 } 138 139 const cfrGutenberg = new CFRGutenberg(); 140 141 })( window.wp.blocks, window.wp.element, window.wp.components, window.wp.i18n, window.wp); -
contact-form-ready/trunk/includes/class.document.php
r2168183 r3049139 3 3 namespace WPGMZA; 4 4 5 if (!defined('ABSPATH')) { 6 exit; 5 if(!defined('ABSPATH')) 6 return; 7 8 /** 9 * We don't actually need to be callin require once here at all 10 * 11 * The autoloader works fine, but because it was rebuilt in some ways for PHP8 12 * 13 * We will leave it as it, with a conditional PHP8 brach for now 14 * 15 * Expect this to be removed more fully soon 16 */ 17 if(version_compare(phpversion(), '8.0', '>=')){ 18 require_once(plugin_dir_path(__FILE__) . 'php8/class.dom-element.php'); 19 } else { 20 require_once(plugin_dir_path(__FILE__) . 'class.dom-element.php'); 7 21 } 8 22 9 require_once(__DIR__ . '/class.element.php'); 10 23 #[\AllowDynamicProperties] 11 24 class DOMDocument extends \DOMDocument 12 25 { … … 19 32 public function __construct($version='1.0', $encoding='UTF-8') 20 33 { 21 parent::__construct($version, $encoding); 34 \DOMDocument::__construct($version, $encoding); 35 22 36 $this->registerNodeClass('DOMElement', 'WPGMZA\DOMElement'); 23 37 $this->onReady(); 38 } 39 40 public static function convertUTF8ToHTMLEntities($html) 41 { 42 43 try{ 44 if(version_compare(phpversion(), '8.2', '>=') && function_exists('mb_encode_numericentity')){ 45 /* Deprecations in PHP require us to rework the way we do conversions */ 46 $converted = htmlspecialchars_decode(mb_encode_numericentity(htmlentities($html, ENT_QUOTES, 'UTF-8'), [0x80, 0x10FFFF, 0, ~0], 'UTF-8')); 47 return $converted; 48 } else { 49 if(function_exists('mb_convert_encoding')){ 50 return mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8'); 51 } else{ 52 trigger_error('Using fallback UTF to HTML entity conversion', E_USER_NOTICE); 53 return htmlspecialchars_decode(utf8_decode(htmlentities($html, ENT_COMPAT, 'utf-8', false))); 54 } 55 } 56 } catch (\Exception $ex){ 57 if(function_exists('mb_convert_encoding')){ 58 return mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8'); 59 } else{ 60 trigger_error('Using fallback UTF to HTML entity conversion', E_USER_NOTICE); 61 return htmlspecialchars_decode(utf8_decode(htmlentities($html, ENT_COMPAT, 'utf-8', false))); 62 } 63 } 64 24 65 } 25 66 … … 49 90 * @return boolean TRUE on success, FALSE otherwise 50 91 */ 92 #[\ReturnTypeWillChange] 51 93 public function load($src, $options=null) 52 94 { 53 95 if(!is_string($src)) 54 96 throw new \Exception('Input must be a string'); 55 56 97 $result = \DOMDocument::load($src, $options); 57 98 $this->src_file = $src; … … 61 102 62 103 return $result; 104 } 105 106 private function translateLineNumber($htmlLineNumber, $src) 107 { 108 109 } 110 111 public function onError($severity, $message, $file, $unused) 112 { 113 if(!preg_match('/DOMDocument::loadHTML.+line: (\d+)/', $message, $m)){ 114 trigger_error($message, E_USER_WARNING); 115 return; 116 } 117 118 $htmlLineNumber = $m[1]; 119 $lines = file($this->src_file); 120 121 $totalPhpLines = count($lines); 122 $lineCounter = 1; 123 124 $allowShortTags = ini_get('short_open_tag') == "1"; 125 $regexOpenTag = ($allowShortTags ? '/<\?(php)?/' : '/<\?php/'); 126 $regexCloseTag = "/\?>/"; 127 128 $inPhp = false; 129 130 for($phpLineNumber = 1; $phpLineNumber <= $totalPhpLines; $phpLineNumber++) 131 { 132 if($lineCounter == $htmlLineNumber) 133 { 134 $message = preg_replace( 135 array('/loadHTML/', '/line: \d+/'), 136 array('loadPHPFile', "line: $phpLineNumber"), 137 $message 138 ); 139 140 /* Supress error because MO files cause issues which can be ignored */ 141 /* Update 2022-05-12 -> We don't need to log these at all, 142 * even surpression results in php-error class being added to WP admin area 143 * 144 * So we simply don't track the notice as it doesn't serve a real purpose on account of MO files 145 */ 146 /* 147 @trigger_error($message, E_USER_WARNING); 148 */ 149 return; 150 } 151 152 $line = $lines[$phpLineNumber - 1]; 153 154 $numOpenTags = preg_match_all($regexOpenTag, $line); 155 $numCloseTags = preg_match_all($regexCloseTag, $line); 156 157 if($numOpenTags > $numCloseTags) 158 { 159 $inPhp = true; 160 } 161 else if($numCloseTags > 0) 162 { 163 $inPhp = false; 164 $lineCounter--; // NB: I don't understand why a close tag swallows the newline, but it does appear to 165 } 166 167 if(!$inPhp) 168 $lineCounter++; 169 } 170 171 $safeEntities = array('progress'); 172 foreach($safeEntities as $entity){ 173 if(preg_match("/DOMDocument::loadHTML.+{$entity} invalid in Entity/", $message, $m)){ 174 // HTML 5 safe entity, doesn't need to be logged 175 return; 176 } 177 } 178 179 trigger_error("Failed to translate line number", E_USER_WARNING); 180 trigger_error($message, E_USER_WARNING); 63 181 } 64 182 … … 69 187 * @return boolean TRUE on success, FALSE otherwise 70 188 */ 71 public function loadPHPFile($src, $options= null)189 public function loadPHPFile($src, $options=0) 72 190 { 73 191 if(!file_exists($src)) … … 81 199 throw new \Exception("$src is empty"); 82 200 83 $html = mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8'); 84 $result = $this->loadHTML($html); 85 86 $this->src_file = $src; 201 $this->src_file = $src; 202 $html = DOMDocument::convertUTF8ToHTMLEntities($html); 203 $suppress_warnings = !(defined('WP_DEBUG') && WP_DEBUG); 204 205 if(!$suppress_warnings) 206 { 207 $error_handler = set_error_handler(array($this, 'onError'), E_WARNING); 208 } 209 210 // From PHP 5.4.0 onwards, loadHTML takes 2 arguments 211 if(version_compare(PHP_VERSION, '5.4.0', '>=')) 212 { 213 if($suppress_warnings) 214 $result = @$this->loadHTML($html, $options); 215 else 216 $result = $this->loadHTML($html, $options); 217 } 218 else 219 { 220 if($suppress_warnings) 221 $result = @$this->loadHTML($html); 222 else 223 $result = $this->loadHTML($html); 224 } 225 226 if(!$suppress_warnings) 227 set_error_handler($error_handler); 87 228 88 229 $this->onLoaded(); 89 230 90 231 return $result; 232 } 233 234 public function getDocumentElementSafe() 235 { 236 // Workaround for some installations of PHP missing documentElement property 237 if(property_exists($this, 'documentElement')) 238 return $this->documentElement; 239 240 $xpath = new \DOMXPath($this); 241 $result = $xpath->query('/html/body'); 242 $item = $result->item(0); 243 244 return $item; 91 245 } 92 246 … … 151 305 public function querySelector($query) 152 306 { 153 if(!$this-> documentElement)307 if(!$this->getDocumentElementSafe()) 154 308 throw new \Exception('Document is empty'); 155 return $this->documentElement->querySelector($query); 309 310 return $this->getDocumentElementSafe()->querySelector($query); 156 311 } 157 312 … … 162 317 public function querySelectorAll($query) 163 318 { 164 if(!$this-> documentElement)319 if(!$this->getDocumentElementSafe()) 165 320 throw new \Exception('Document is empty'); 166 return $this->documentElement->querySelectorAll($query); 321 322 return $this->getDocumentElementSafe()->querySelectorAll($query); 167 323 } 168 324 … … 174 330 public function populate($src, $formatters=null) 175 331 { 176 if(!$this-> documentElement)332 if(!$this->getDocumentElementSafe()) 177 333 throw new \Exception('Document is empty'); 178 return $this->documentElement->populate($src, $formatters); 334 335 return $this->getDocumentElementSafe()->populate($src, $formatters); 336 } 337 338 public function serializeFormData() 339 { 340 if(!$this->getDocumentElementSafe()) 341 throw new \Exception('Document is empty'); 342 343 return $this->getDocumentElementSafe()->serializeFormData(); 179 344 } 180 345 … … 200 365 $result = ''; 201 366 202 foreach($this->querySelectorAll('body>*') as $node) 367 if(property_exists($this, 'documentElement')) 368 $body = $this->querySelector('body'); 369 else 370 $body = $this->getDocumentElementSafe(); 371 372 if(!$body) 373 return null; 374 375 for($node = $body->firstChild; $node != null; $node = $node->nextSibling) 203 376 $result .= $this->saveHTML($node); 204 377 205 378 return $result; 206 379 } 380 381 public function __get($name) 382 { 383 if($name == 'html') 384 return $this->saveInnerBody(); 385 386 return null; 387 } 207 388 } 208 209 ?> -
contact-form-ready/trunk/includes/class.element.php
r2168183 r3049139 3 3 namespace WPGMZA; 4 4 5 if (!defined('ABSPATH')) { 6 exit; 7 } 8 9 require_once(__DIR__ . '/class.selector-to-xpath.php'); 10 5 if(!defined('ABSPATH')) 6 return; 7 8 require_once(plugin_dir_path(__FILE__) . '../class.selector-to-xpath.php'); 9 10 /** 11 * Direct replacement for the defauly class.dom-element.php 12 * 13 * Due to the fact it is located in the php8 sub directory, we will only load it for PHP 8 users 14 */ 11 15 class DOMElement extends \DOMElement 12 16 { … … 18 22 } 19 23 24 public function __get($name) 25 { 26 switch($name) 27 { 28 case "html": 29 30 return $this->ownerDocument->saveHTML( $this ); 31 32 break; 33 } 34 35 return \DOMElement::__get($name); 36 } 37 20 38 /** 21 39 * Runs a CSS selector on the element. This is equivilant to Javascripts querySelector … … 26 44 { 27 45 $results = $this->querySelectorAll($query); 46 28 47 if(empty($results)) 29 48 return null; 49 30 50 return $results[0]; 31 51 } … … 41 61 try{ 42 62 $expr = DOMElement::selectorToXPath($query); 43 }catch( Exception $e) {63 }catch(\Exception $e) { 44 64 echo "<p class='notice notice-warning'>Failed to convert CSS selector to XPath (" . $e->getMessage() . ")</p>"; 45 65 } … … 54 74 usort($results, array('WPGMZA\DOMElement', 'sortByDOMPosition')); 55 75 56 return $results; 57 } 58 59 /** 60 * Prepends the subject to this element. 61 * @param $subject element or array of elements 62 * @return $this element 63 */ 64 public function prepend($subject) 65 { 66 if(is_array($subject)) 67 { 68 $originalFirst = $this->firstChild; 69 70 foreach($subject as $el) 71 $this->insertBefore($el, $originalFirst); 72 } 73 else 74 $this->insertBefore($subject, $this->firstChild); 75 76 return $this; 77 } 78 79 /** 80 * Appends the subject to this element. 81 */ 82 public function append($subject) 83 { 84 if(is_array($subject)) 85 { 86 foreach($subject as $el) 87 $this->appendChild($subject); 88 } 89 else 90 $this->appendChild($subject); 91 92 return $this; 76 return new DOMQueryResults($results); 93 77 } 94 78 … … 99 83 public function closest($selector) 100 84 { 101 if($this === $this->ownerDocument-> documentElement)85 if($this === $this->ownerDocument->getDocumentElementSafe()) 102 86 throw new \Exception('Method not valid on document element'); 103 87 … … 110 94 111 95 return null; 96 } 97 98 /** 99 * Wraps this element in the element passed in, then replaces this nodes original position 100 * @param DOMElement The element to wrap this element in 101 */ 102 public function wrap($wrapper) 103 { 104 $this->parentNode->replaceChild($wrapper, $this); 105 $wrapper->appendChild($this); 112 106 } 113 107 … … 211 205 public function import($subject, $forcePHP=false) 212 206 { 207 global $wpgmza; 208 213 209 $node = null; 214 210 215 211 if($subject instanceof \DOMDocument) 216 212 { 217 if(!$subject-> documentElement)213 if(!$subject->getDocumentElementSafe()) 218 214 throw new \Exception('Document is empty'); 219 215 220 $node = $this->ownerDocument->importNode($subject-> documentElement, true);216 $node = $this->ownerDocument->importNode($subject->getDocumentElementSafe(), true); 221 217 222 218 } … … 237 233 $temp->load($subject); 238 234 239 $node = $this->ownerDocument->importNode($temp-> documentElement, true);235 $node = $this->ownerDocument->importNode($temp->getDocumentElementSafe(), true); 240 236 } 241 237 else if(is_string($subject)) … … 244 240 return; 245 241 246 if($subject != strip_tags($subject) )242 if($subject != strip_tags($subject) || preg_match('/&.+;/', $subject)) 247 243 { 248 244 // Subject is a HTML string 249 $ subject = mb_convert_encoding($subject, 'HTML-ENTITIES', 'UTF-8');245 $html = DOMDocument::convertUTF8ToHTMLEntities($subject); 250 246 251 247 $temp = new DOMDocument('1.0', 'UTF-8'); 252 $temp->loadHTML("<div id='domdocument-import-payload___'>" . $subject . "</div>"); 248 $str = "<div id='domdocument-import-payload___'>" . $html . "</div>"; 249 250 if($wpgmza->isInDeveloperMode()){ 251 $temp->loadHTML($str); 252 } else { 253 @$temp->loadHTML($str); 254 } 253 255 254 256 $body = $temp->querySelector('#domdocument-import-payload___'); … … 274 276 if($body = $node->querySelector("body")) 275 277 { 276 // TODO: I don't think a query selector is necessary here. Iterating over the bodies children should be more optimal. 277 foreach($node->querySelectorAll("body>*") as $child) 278 // TODO: I don't think a query selector is necessary here. Iterating over the bodies children should be more optimal 279 $results = $node->querySelectorAll("body>*"); 280 281 foreach($results as $child) 278 282 $this->appendChild($child); 283 284 return $results; 279 285 } 280 286 else 287 { 281 288 $this->appendChild($node); 282 283 return $this; 289 return $node; 290 } 291 292 return null; 284 293 } 285 294 … … 449 458 * @param mixed $src Associative array or object with the keys and values 450 459 * @param array $formatters Optional associative array of functions to format values with. The keys on this array correspond with the keys on $src 451 * @return \Smart\Element This element460 * @return DOMElement This element 452 461 */ 453 462 public function populate($src=null, $formatters=null) … … 500 509 } 501 510 511 public function serializeFormData() 512 { 513 $data = array(); 514 515 foreach($this->querySelectorAll('input, select, textarea') as $input) 516 { 517 $name = $input->getAttribute('name'); 518 519 if(!$name) 520 continue; 521 522 if(preg_match('/nonce/i', $name)) 523 continue; // NB: Do not serialize nonce values 524 525 switch($input->getAttribute('type')) 526 { 527 case 'checkbox': 528 529 if($input->getValue()) 530 $data[$name] = true; 531 else 532 $data[$name] = false; 533 534 break; 535 536 case 'radio': 537 538 if($input->getAttribute('checked')) 539 $data[$name] = $input->getAttribute('value'); 540 541 break; 542 543 default: 544 $data[$name] = $input->getValue(); 545 break; 546 } 547 } 548 549 return $data; 550 } 551 502 552 /** 503 553 * Gets the value of this element … … 545 595 public function setValue($value) 546 596 { 597 /*if($this->getAttribute("name") == "wpgmza_gdpr_require_consent_before_load") 598 { 599 600 echo "<pre>"; 601 debug_print_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS); 602 exit; 603 }*/ 604 547 605 switch(strtolower($this->nodeName)) 548 606 { … … 642 700 public function clear() 643 701 { 702 644 703 while($this->childNodes->length) 645 704 $this->removeChild($this->firstChild); … … 651 710 * @return \Smart\Element This element 652 711 */ 653 public function remove() 712 public function remove() : void 654 713 { 655 714 if($this->parentNode) 656 715 $this->parentNode->removeChild($this); 657 return $this;658 716 } 659 717 } 660 718 661 ?> -
contact-form-ready/trunk/includes/module_recaptcha.php
r2190532 r3049139 33 33 34 34 <h2><?php _e("Anti Spam Settings","wpcf_nd"); ?></h2> 35 <table class="wp-list-table widefat striped fixed">35 <table class="wp-list-table fixed" > 36 36 <tbody> 37 37 <tr> 38 <td width='250' ><label for='wpcf_nd_enable_recaptcha'><?php _e("Enable reCAPTCHA?","wpcf_nd"); ?></label></td>38 <td width='250' ><label for='wpcf_nd_enable_recaptcha'><?php _e("Enable reCAPTCHA?","wpcf_nd"); ?></label></td> 39 39 <td><?php 40 40 $is_checked = (isset($wpcf_nd_settings['wpcf_nd_enable_recaptcha']) && $wpcf_nd_settings['wpcf_nd_enable_recaptcha'] == 1) ? "checked" : ""; … … 44 44 <tr> 45 45 <td><label for='wpcf_nd_recaptcha_site_key'><?php _e("Site key","wpcf_nd"); ?></label></td> 46 <td><input type='text' name='wpcf_nd_recaptcha_site_key' class='regular-text' id='wpcf_nd_recaptcha_site_key' value='<?php echo $wpcf_nd_settings['wpcf_nd_recaptcha_site_key']; ?>' /></td>46 <td><input type='text' name='wpcf_nd_recaptcha_site_key' class='regular-text' id='wpcf_nd_recaptcha_site_key' value='<?php echo esc_attr($wpcf_nd_settings['wpcf_nd_recaptcha_site_key']); ?>' /></td> 47 47 </tr> 48 48 <tr> 49 49 <td><label for='wpcf_nd_recaptcha_secret_key'><?php _e("Secret key","wpcf_nd"); ?></label></td> 50 <td><input type='text' name='wpcf_nd_recaptcha_secret_key' class='regular-text' id='wpcf_nd_recaptcha_secret_key' value='<?php echo $wpcf_nd_settings['wpcf_nd_recaptcha_secret_key']; ?>' /></td>50 <td><input type='text' name='wpcf_nd_recaptcha_secret_key' class='regular-text' id='wpcf_nd_recaptcha_secret_key' value='<?php echo esc_attr($wpcf_nd_settings['wpcf_nd_recaptcha_secret_key']); ?>' /></td> 51 51 </tr> 52 52 </tbody> … … 61 61 <tr> 62 62 <td><label for='wpcf_nd_invisible_recaptcha_site_key'><?php _e("Site key","wpcf_nd"); ?></label></td> 63 <td><input type='text' name='wpcf_nd_invisible_recaptcha_site_key' class='regular-text' id='wpcf_nd_invisible_recaptcha_site_key' value='<?php echo $wpcf_nd_settings['wpcf_nd_invisible_recaptcha_site_key']; ?>' /></td>63 <td><input type='text' name='wpcf_nd_invisible_recaptcha_site_key' class='regular-text' id='wpcf_nd_invisible_recaptcha_site_key' value='<?php echo esc_attr($wpcf_nd_settings['wpcf_nd_invisible_recaptcha_site_key']); ?>' /></td> 64 64 </tr> 65 65 <tr> 66 66 <td><label for='wpcf_nd_invisible_recaptcha_secret_key'><?php _e("Secret key","wpcf_nd"); ?></label></td> 67 <td><input type='text' name='wpcf_nd_invisible_recaptcha_secret_key' class='regular-text' id='wpcf_nd_invisible_recaptcha_secret_key' value='<?php echo $wpcf_nd_settings['wpcf_nd_invisible_recaptcha_secret_key']; ?>' /></td>67 <td><input type='text' name='wpcf_nd_invisible_recaptcha_secret_key' class='regular-text' id='wpcf_nd_invisible_recaptcha_secret_key' value='<?php echo esc_attr($wpcf_nd_settings['wpcf_nd_invisible_recaptcha_secret_key']); ?>' /></td> 68 68 </tr> 69 69 </tbody> -
contact-form-ready/trunk/includes/module_subscribe.php
r2168183 r3049139 44 44 wp_register_script( 'cfr_plugin_row_js', plugins_url(plugin_basename(dirname(dirname(__FILE__)))).'/js/cfr_plugin_row.js', array( 'jquery-ui-core' ) ); 45 45 wp_enqueue_script( 'cfr_plugin_row_js' ); 46 wp_localize_script( 'cfr_plugin_row_js', 'cfr_sub_nonce', wp_create_nonce("cfr_subscribe") );46 wp_localize_script( 'cfr_plugin_row_js', 'cfr_sub_nonce', array('nonce' => wp_create_nonce("cfr_subscribe")) ); 47 47 } 48 48 } … … 64 64 $ret .= '<p><input type="checkbox" name="cfr_signup_newsletter" id="cfr_signup_newsletter"><label for="cfr_signup_newsletter" style="font-style:italic; margin-bottom:5px;">' . __( 'I would like to receive information on your latest updates, beta version and specials. I understand my information will be processed in terms of the GDPR, and I may wihtdraw it at any time.', 'wpcf_nd' ) . '</label></p>'; 65 65 $ret .= '<span id="cfr_subscribe_div">'; 66 $ret .= '<input type="text" name="cfr_signup_newsletter" id="cfr_signup_newsletter" value="'. get_option( 'admin_email').'"></option>';66 $ret .= '<input type="text" name="cfr_signup_newsletter" id="cfr_signup_newsletter" value="'.esc_attr(get_option( 'admin_email' )).'"></option>'; 67 67 $ret .= '<input type="button" class="button button-primary" id="cfr_signup_newsletter_btn" name="cfr_signup_newsletter_btn" value="' . __( 'Sign up', 'wpcf_nd' ) . '" />'; 68 68 $ret .= '<span>'; -
contact-form-ready/trunk/includes/module_template_editor.php
r2190532 r3049139 17 17 18 18 <h2><?php _e("Email Template","wpcf_nd"); ?></h2> 19 <table class='wp-list-table widefat stripedfixed'>19 <table class='wp-list-table fixed'> 20 20 <tr> 21 21 <td width='100%'> -
contact-form-ready/trunk/js/admin.js
r2190532 r3049139 177 177 178 178 /* Color picker inputs */ 179 var colorInput = $('.wpcf-color-input'); 180 181 colorInput.iris(); 182 $(document).click(function (event) { 183 if (! $(event.target).is(".wpcf-color-input, .iris-picker, .iris-picker-inner")) { 184 colorInput.iris('hide'); 185 } 186 }); 187 colorInput.click(function (event) { 188 colorInput.iris('hide'); 189 $(this).iris('show'); 190 return false; 191 }); 179 /* Iris replaced with standard color picker*/ 192 180 193 181 }); -
contact-form-ready/trunk/js/admin_settings.js
r1882463 r3049139 17 17 18 18 jQuery("body").on("click", "#wpcf_restore_default_template", function() { 19 var proceed = confirm(wpcf_nd_confirm_restore_template_string );19 var proceed = confirm(wpcf_nd_confirm_restore_template_string.label); 20 20 if(proceed) { 21 21 var def_template = jQuery("#wpcf_nd_template_html_default").val(); … … 25 25 } 26 26 }); 27 } 28 29 if (document.getElementById('wpcf_custom_css')){ 30 var wpcfCodeMirror = CodeMirror.fromTextArea(document.getElementById('wpcf_custom_css'), { 31 matchBrackets: true, 32 lineNumbers: true, 33 styleActiveLine: true, 34 smartIndent: true, 35 mode: "text/css", 36 }); 37 wpcfCodeMirror.setOption("theme", "monokai"); 38 setTimeout(function () { 39 wpcfCodeMirror.refresh(); 40 }, 1); 27 41 } 28 42 -
contact-form-ready/trunk/js/admin_styling.js
r2190532 r3049139 30 30 previewSubmit = $('.wpcf-admin-preview-submit'); 31 31 32 33 $('#wpcf_nd_label_color').iris({34 change: function (event, ui) {35 previewLabels.css('color', ui.color.toString());36 }37 });38 39 $('#wpcf_nd_input_bg_color').iris({40 change: function (event, ui) {41 previewInputs.css('background', ui.color.toString());42 }43 });44 45 $('#wpcf_nd_input_border_color').iris({46 change: function (event, ui) {47 previewInputs.css('border-color', ui.color.toString());48 }49 });50 51 $('#wpcf_nd_input_font_color').iris({52 change: function (event, ui) {53 previewInputs.css('color', ui.color.toString());54 }55 });56 57 $('#wpcf_nd_submit_bg_color').iris({58 change: function (event, ui) {59 previewSubmit.css('background', ui.color.toString());60 }61 });62 63 $('#wpcf_nd_submit_font_color').iris({64 change: function (event, ui) {65 previewSubmit.css('color', ui.color.toString());66 }67 });68 69 $('#wpcf_nd_input_border_focus_color').iris({70 change: function (event, ui) {71 previewInputs.mouseenter(function() {72 $(this).css('border-color', ui.color.toString());73 }).mouseleave(function() {74 previewInputs.css('border-color', jQuery('#wpcf_nd_input_border_color').val());75 });76 }77 });78 79 $('#wpcf_nd_submit_bg_hover_color').iris({80 change: function (event, ui) {81 previewSubmit.mouseenter(function() {82 previewSubmit.css('background', ui.color.toString());83 }).mouseleave(function() {84 previewSubmit.css('background', jQuery('#wpcf_nd_submit_bg_color').val());85 });86 }87 });88 89 $('.wpcf-styling-form').click(function (event) {90 var targets = $(".wpcf-color-input, .iris-picker, .iris-picker-inner, .wpcf-submit-save-styling, .wpcf-admin-enable-style-wrapper, .wpcf-live-color-preview");91 if (!targets.is(event.target) && targets.has(event.target).length === 0) {92 colorInput.iris('hide');93 94 return false;95 }96 });97 98 colorInput.click(function (event) {99 colorInput.iris('hide');100 $(this).iris('show');101 return false;102 });103 104 32 $('#wpcf_nd_label_font_size').on('change', function (event) { 105 33 previewLabels.css('font-size', $(this).val() + 'px'); … … 125 53 previewSubmit.css('text-transform', $(this).val()); 126 54 }); 55 56 $('#wpcf_nd_label_color').on('change', function (event) { 57 previewLabels.css('color', $(this).val()); 58 }); 127 59 128 $(".wpcf-color-input").each(function(){ 129 var row = $(this).parent().parent(); 130 131 row.append('<td><div class="wpcf-live-color-preview"></div></td>'); 132 row.find(".wpcf-live-color-preview").css("background", $(this).val()); 60 $('#wpcf_nd_input_bg_color').on('change', function (event) { 61 previewInputs.css('background-color', $(this).val()); 133 62 }); 134 135 $("body").on('click', '.iris-picker', function(){ 136 $(".wpcf-color-input").each(function(){ 137 var row = $(this).parent().parent(); 138 139 row.find(".wpcf-live-color-preview").css("background", $(this).val()); 140 }); 63 64 var wpcf_style_input_border_color = $('#wpcf_nd_input_border_color').val(); 65 $('#wpcf_nd_input_border_color').on('change', function (event) { 66 previewInputs.css('border-color', $(this).val()); 67 wpcf_style_input_border_color = $(this).val(); 141 68 }); 142 143 $('.wpcf-live-color-preview').on('click', function(){ 144 var row = $(this).parent().parent(); 145 146 row.find('.wpcf-color-input').click(); 69 70 var wpcf_style_input_border_focus_color = $('#wpcf_nd_input_border_focus_color').val(); 71 $('#wpcf_nd_input_border_focus_color').on('change', function (event) { 72 wpcf_style_input_border_focus_color = $(this).val(); 73 }); 74 75 $('.wpcf-admin-preview-input').on('mouseover', function (event) { 76 previewInputs.css('border-color', wpcf_style_input_border_focus_color); 77 }); 78 79 $('.wpcf-admin-preview-input').on('mouseleave', function (event) { 80 previewInputs.css('border-color', wpcf_style_input_border_color); 81 }); 82 83 $('#wpcf_nd_input_font_color').on('change', function (event) { 84 previewInputs.css('color', $(this).val()); 85 }); 86 87 var wpcf_style_submit_bg_color = $('#wpcf_nd_submit_bg_color').val(); 88 $('#wpcf_nd_submit_bg_color').on('change', function (event) { 89 previewSubmit.css('background-color', $(this).val()); 90 wpcf_style_submit_bg_color = $(this).val(); 91 }); 92 93 var wpcf_style_submit_bg_hover_color = $('#wpcf_nd_submit_bg_hover_color').val(); 94 $('#wpcf_nd_submit_bg_hover_color').on('change', function (event) { 95 wpcf_style_submit_bg_hover_color = $(this).val(); 96 }); 97 98 $('.wpcf-admin-preview-submit').on('mouseover', function (event) { 99 previewSubmit.css('background-color', wpcf_style_submit_bg_hover_color); 100 }); 101 102 $('.wpcf-admin-preview-submit').on('mouseleave', function (event) { 103 previewSubmit.css('background-color', wpcf_style_submit_bg_color); 104 }); 105 106 $('#wpcf-admin-preview-darkmode-checkbox').on('change', function(event) { 107 if (!$('#wpcf-admin-preview-darkmode-checkbox').attr('checked')){ 108 $('#wpcf-admin-preview-darkmode-checkbox').attr('checked', 'checked'); 109 } else { 110 $('#wpcf-admin-preview-darkmode-checkbox').removeAttr('checked'); 111 } 112 113 if ($('#wpcf-admin-preview-darkmode-checkbox').attr('checked')){ 114 $('.wpcf-admin-preview-form').css('background-color', '#333'); 115 $('#wpcf-admin-preview-darkmode-note').css('color', '#ddd'); 116 $('#wpcf-admin-preview-darkmode-label').css('color', '#fff' ); 117 } else { 118 $('.wpcf-admin-preview-form').css('background-color', '#fff'); 119 $('#wpcf-admin-preview-darkmode-note').css('color', '#333'); 120 $('#wpcf-admin-preview-darkmode-label').css('color', '#000' ); 121 } 147 122 }); 148 123 }); -
contact-form-ready/trunk/js/cfr_plugin_row.js
r1882463 r3049139 20 20 var data = { 21 21 action: 'cfr_subscribe', 22 security: cfr_sub_nonce 22 security: cfr_sub_nonce.nonce 23 23 24 24 }; -
contact-form-ready/trunk/js/form-builder.js
r1882463 r3049139 28 28 29 29 */ 30 "use strict";function formBuilderHelpersFn(e,t){var a={doCancel:!1};return t.events=formBuilderEventsFn(),a.attrString=function(e){var t=[];for(var l in e)e.hasOwnProperty(l)&&(l=a.safeAttr(l,e[l]),t.push(l.name+l.value));var s=t.join(" ");return s},a.hyphenCase=function(e){return e=e.replace(/([A-Z])/g,function(e){return"-"+e.toLowerCase()}),e.replace(/\s/g,"-").replace(/^-+/g,"")},a.makeClassName=function(e){return e=e.replace(/[^\w\s\-]/gi,""),a.hyphenCase(e)},a.safeAttrName=function(e){var t={className:"class"};return t[e]||a.hyphenCase(e)},a.safeAttr=function(e,t){e=a.safeAttrName(e);var l=window.JSON.stringify(HTML_ENTITIES.encode(t));return t=t?"="+l:"",{name:e,value:t}},a.mobileClass=function(){var e="";return function(t){(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)| iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(t)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(t.substr(0,4)))&&(e=" fb-mobile")}(navigator.userAgent||navigator.vendor||window.opera),e},a.startMoving=function(e,t){e=e,t.item.show().addClass("moving"),a.startIndex=$("li",this).index(t.item)},a.stopMoving=function(e,t){e=e,t.item.removeClass("moving"),a.doCancel&&($(t.sender).sortable("cancel"),$(this).sortable("cancel")),a.save(),a.doCancel=!1},a.beforeStop=function(t,l){t=t;var s=document.getElementById(e.formID),o=s.children.length-1,r=[];a.stopIndex=l.placeholder.index()-1,!e.sortableControls&&l.item.parent().hasClass("frmb-control")&&r.push(!0),e.prepend&&r.push(0===a.stopIndex),e.append&&r.push(a.stopIndex+1===o),a.doCancel=r.some(function(e){return e===!0})},a.safename=function(e){return e.replace(/\s/g,"-").replace(/[^a-zA-Z0-9\-]/g,"").toLowerCase()},a.forceNumber=function(e){return e.replace(/[^0-9]/g,"")},a.initTooltip=function(e){var t=e.find(".tooltip");e.mouseenter(function(){t.outerWidth()>200&&t.addClass("max-width"),t.css("left",e.width()+14),t.stop(!0,!0).fadeIn("fast")}).mouseleave(function(){e.find(".tooltip").stop(!0,!0).fadeOut("fast")}),t.hide()},a.getTypes=function(e){return{type:e.attr("type"),subtype:$(".fld-subtype",e).val()}},a.trimAttrs=function(e){var t=[null,void 0,"",!1];for(var l in e)a.inArray(e[l],t)&&delete e[l];return e},a.escapeAttrs=function(e){for(var t in e)e.hasOwnProperty(t)&&(e[t]=HTML_ENTITIES.encode(e[t]));return e},a.xmlSave=function(e){var l=$(e).toXML(a);return window.JSON.stringify(l)===window.JSON.stringify(t.formData)?!1:void(t.formData=l)},a.jsonSave=function(){e.notify.warning("json data not available yet")},a.save=function(){var l,s=a.getElement(),o=document.getElementById(e.formID),r={xml:a.xmlSave,json:a.jsonSave};return l=r[e.dataType](o),s&&(s.value=t.formData,window.jQuery?$(s).trigger("change"):s.onchange()),document.dispatchEvent(t.events.formSaved),l},a.getElement=function(){var l=!1;return t.element&&(l=t.element,l.id||a.makeId(l),l.onchange||(l.onchange=function(){e.notify.success(e.messages.formUpdated)})),l},a.incrementId=function(e){var t=e.lastIndexOf("-"),a=parseInt(e.substring(t+1))+1,l=e.substring(0,t);return l+"-"+a},a.makeId=function(){var e=arguments.length<=0||void 0===arguments[0]?!1:arguments[0],t=(new Date).getTime();return e.tagName+"-"+t},a.updatePreview=function(e){var t=e.data("fieldData")||{},l=e.attr("class");if(-1===l.indexOf("ui-sortable-handle")){var s,o=$(e).attr("type"),r=$(".prev-holder",e),n={label:$(".fld-label",e).val(),type:o},i=$(".fld-subtype",e).val();i&&(n.subtype=i);var c=$(".fld-maxlength",e).val();c&&(n.maxlength=c),n.className=$(".fld-className",e).val()||t.className||"";var d=$(".fld-placeholder",e).val();d&&(n.placeholder=d);var u=$(".btn-style",e).val();u&&(n.style=u),"checkbox"===o&&(n.toggle=$(".checkbox-toggle",e).is(":checked")),o.match(/(checkbox-group|radio-group)/)&&(n.enableOther=$('[name="enable-other"]',e).is(":checked")),o.match(/(select|checkbox-group|radio-group)/)&&(n.values=[],n.multiple=$('[name="multiple"]',e).is(":checked"),$(".sortable-options li",e).each(function(){var e={};e.selected=$(".option-selected",this).is(":checked"),e.value=$(".option-value",this).val(),e.label=$(".option-label",this).val(),n.values.push(e)})),n.className=a.classNames(e,n),$(".fld-className",e).val(n.className),e.data("fieldData",n),s=a.fieldPreview(n),r.html(s),$("input[toggle]",r).kcToggle()}},a.fieldPreview=function(t){var l,s="",o=(new Date).getTime();t=jQuery.extend({},t),t.type=t.subtype||t.type;var r=t.toggle?"toggle":"",n=a.attrString(t);switch(t.type){case"textarea":case"rich-text":s="<textarea "+n+"></textarea>";break;case"button":case"submit":s="<button "+n+">"+t.label+"</button>";break;case"select":var i="",c=t.multiple?"multiple":"";for(t.values.reverse(),t.placeholder&&(i+="<option disabled selected>"+t.placeholder+"</option>"),l=t.values.length-1;l>=0;l--){var d=t.values[l].selected&&!t.placeholder?"selected":"";i+='<option value="'+t.values[l].value+'" '+d+">"+t.values[l].label+"</option>"}s="<"+t.type+' class="'+t.className+'" '+c+">"+i+"</"+t.type+">";break;case"checkbox-group":case"radio-group":var u=t.type.replace("-group",""),p=u+"-"+o;for(t.values.reverse(),l=t.values.length-1;l>=0;l--){var m=t.values[l].selected?"checked":"",f=u+"-"+o+"-"+l;s+='<div><input type="'+u+'" class="'+t.className+'" name="'+p+'" id="'+f+'" value="'+t.values[l].value+'" '+m+'/><label for="'+f+'">'+t.values[l].label+"</label></div>"}if(t.enableOther){var v=p+"-other",h={id:v,name:p,className:t.className+" other-option",type:u,onclick:"otherOptionCallback('"+v+"')"},g=a.markup("input",null,h);a.attrString(h);window.otherOptionCallback=function(e){var t=document.getElementById(e),a=t.nextElementSibling,l=a.nextElementSibling;t.checked?(l.style.display="inline-block",a.style.display="none"):(l.style.display="none",a.style.display="inline-block")},s+="<div>"+g.outerHTML+'<label for="'+v+'">'+e.messages.other+'</label> <input type="text" id="'+v+'-value" style="display:none;" /></div>'}break;case"text":case"password":case"email":case"date":case"file":s="<input "+n+">";break;case"color":s='<input type="'+t.type+'" class="'+t.className+'"> '+e.messages.selectColor;break;case"hidden":case"checkbox":s='<input type="'+t.type+'" '+r+" >";break;case"autocomplete":s='<input class="ui-autocomplete-input '+t.className+'" autocomplete="on">';break;default:n=a.attrString(t),s="<"+t.type+" "+n+">"+t.label+"</"+t.type+">"}return s},a.updateMultipleSelect=function(){$(document.getElementById(e.formID)).on("change",'input[name="multiple"]',function(){var e=$(this).parents(".field-options:eq(0)").find(".sortable-options input.option-selected");this.checked?e.each(function(){$(this).prop("type","checkbox")}):e.each(function(){$(this).removeAttr("checked").prop("type","radio")})})},a.debounce=function(e){var t,a=arguments.length<=1||void 0===arguments[1]?250:arguments[1],l=arguments.length<=2||void 0===arguments[2]?!1:arguments[2];return function(){var s=this,o=arguments,r=function(){t=null,l||e.apply(s,o)},n=l&&!t;clearTimeout(t),t=setTimeout(r,a),n&&e.apply(s,o)}},a.htmlEncode=function(e){return $("<div/>").text(e).html()},a.htmlDecode=function(e){return $("<div/>").html(e).text()},a.validateForm=function(){var t=$(document.getElementById(e.formID)),a=[];$('input[name="label"], input[type="text"].option',t).each(function(){if(""===$(this).val()){var t=$(this).parents("li.form-field"),l=$(this);a.push({field:t,error:e.messages.labelEmpty,attribute:l})}}),a.length&&(alert("Error: "+a[0].error),$("html, body").animate({scrollTop:a[0].field.offset().top},1e3,function(){var e=$(".toggle-form",a[0].field).attr("id");$(".toggle-form",a[0].field).addClass("open").parent().next(".prev-holder").slideUp(250),$("#"+e+"-fld").slideDown(250,function(){a[0].attribute.addClass("error")})}))},a.disabledTT={className:"frmb-tt",add:function(t){var l=e.messages.fieldNonEditable;if(l){var s=a.markup("p",l,{className:a.disabledTT.className});t.append(s)}},remove:function(e){$(".frmb-tt",e).remove()}},a.classNames=function(t,l){var s=["checkbox","checkbox-group","radio-group"],o=["header","paragraph","button"],r=void 0;for(r=o.length-1;r>=0;r--)o=o.concat(e.messages.subtypes[o[r]]);s=s.concat(o);var n=l.type,i=l.style,c=t[0].querySelector(".fld-className").value,d=[].concat(c.split(" ")).reverse(),u={button:"btn",submit:"btn"},p=u[n];if(p){if(i){for(r=d.length-1;r>=0;r--){var m=new RegExp("(?:^|s)"+p+"-(.*?)(?:s|$)+","g"),f=d[r].match(m);f&&d.splice(r,1)}d.push(p+"-"+i)}d.push(p)}else a.inArray(n,s)||d.push("form-control");return a.unique(d.reverse()).join(" ").trim()},a.markup=function(e){var t=arguments.length<=1||void 0===arguments[1]?"":arguments[1],l=arguments.length<=2||void 0===arguments[2]?{}:arguments[2],s=void 0,o=document.createElement(e),r=function(e){return Array.isArray(e)?"array":"undefined"==typeof e?"undefined":_typeof(e)},n={string:function(e){o.innerHTML=e},object:function(e){return o.appendChild(e)},array:function(e){for(var t=0;t<e.length;t++)s=r(e[t]),n[s](e[t])}};for(var i in l)if(l.hasOwnProperty(i)&&l[i]){var c=a.safeAttrName(i);o.setAttribute(c,l[i])}return s=r(t),t&&n[s].call(this,t),o},a.closeConfirm=function(e,a){e=e||document.getElementsByClassName("form-builder-overlay")[0],a=a||document.getElementsByClassName("form-builder-dialog")[0],e.classList.remove("visible"),a.remove(),e.remove(),document.dispatchEvent(t.events.modalClosed)},a.editorLayout=function(e){var t={left:{stage:"pull-right",controls:"pull-left"},right:{stage:"pull-left",controls:"pull-right"}};return t[e]?t[e]:""},a.showOverlay=function(){var e=a.markup("div",null,{className:"form-builder-overlay"});return document.body.appendChild(e),e.classList.add("visible"),e.onclick=function(){a.closeConfirm(e)},e},a.confirm=function(t,l){var s=arguments.length<=2||void 0===arguments[2]?!1:arguments[2],o=arguments.length<=3||void 0===arguments[3]?"":arguments[3],r=a.showOverlay(),n=a.markup("button",e.messages.yes,{className:"yes btn btn-success btn-sm"}),i=a.markup("button",e.messages.no,{className:"no btn btn-danger btn-sm"});i.onclick=function(){a.closeConfirm(r)},n.onclick=function(){l(),a.closeConfirm(r)};var c=a.markup("div",[i,n],{className:"button-wrap"});o="form-builder-dialog "+o;var d=a.markup("div",[t,c],{className:o});return s?d.classList.add("positioned"):(s={pageX:Math.max(document.documentElement.clientWidth,window.innerWidth||0)/2,pageY:Math.max(document.documentElement.clientHeight,window.innerHeight||0)/2},d.style.position="fixed"),d.style.left=s.pageX+"px",d.style.top=s.pageY+"px",document.body.appendChild(d),n.focus(),d},a.dialog=function(e){var l=arguments.length<=1||void 0===arguments[1]?!1:arguments[1],s=arguments.length<=2||void 0===arguments[2]?"":arguments[2];a.showOverlay(),s="form-builder-dialog "+s;var o=a.markup("div",e,{className:s});return l?o.classList.add("positioned"):(l={pageX:Math.max(document.documentElement.clientWidth,window.innerWidth||0)/2,pageY:Math.max(document.documentElement.clientHeight,window.innerHeight||0)/2},o.style.position="fixed"),o.style.left=l.pageX+"px",o.style.top=l.pageY+"px",document.body.appendChild(o),-1!==s.indexOf("data-dialog")&&document.dispatchEvent(t.events.viewData),o},a.removeAllfields=function(){var t=document.getElementById(e.formID),l=t.querySelectorAll("li.form-field"),s=$(l),o=[];e.prepend&&o.push(!0),e.append&&o.push(!0),o.some(function(e){return e===!0})||t.parentElement.classList.add("empty"),t.classList.add("removing");var r=0;s.each(function(){r+=$(this).outerHeight()+3}),l[0].style.marginTop=-r+"px",setTimeout(function(){s.remove(),document.getElementById(e.formID).classList.remove("removing"),a.save()},500)},a.setFieldOrder=function(t){if(!e.sortableControls)return!1;var a={};t.children().each(function(e,t){a[e]=$(t).data("attrs").type}),window.sessionStorage&&window.sessionStorage.setItem("fieldOrder",window.JSON.stringify(a))},a.orderFields=function(t){var l=!1;window.sessionStorage&&(e.sortableControls?l=window.sessionStorage.getItem("fieldOrder"):window.sessionStorage.removeItem("fieldOrder")),l?(l=window.JSON.parse(l),l=Object.keys(l).map(function(e){return l[e]})):l=a.unique(e.controlOrder);for(var s=[],o=l.length-1;o>=0;o--){var r=t.filter(function(e){return e.attrs.type===l[o]})[0];s.push(r)}return s.filter(Boolean)},a.forEach=function(e,t,a){for(var l=0;l<e.length;l++)t.call(a,l,e[l])},a.inArray=function(e,t){return-1!==t.indexOf(e)},a.unique=function(e){return e.filter(function(e,t,a){return a.indexOf(e)===t})},a}function formBuilderEventsFn(){var e={};return e.loaded=new Event("loaded"),e.viewData=new Event("viewData"),e.userDeclined=new Event("userDeclined"),e.modalClosed=new Event("modalClosed"),e.formSaved=new Event("formSaved"),e}var HTML_ENTITIES=function(){var e={};return e.getHtmlTranslationTable=function(e,t){var a,l={},s={},o={},r={},n={},i={};if(o[0]="HTML_SPECIALCHARS",o[1]="HTML_ENTITIES",r[0]="ENT_NOQUOTES",r[2]="ENT_COMPAT",r[3]="ENT_QUOTES",n=isNaN(e)?e?e.toUpperCase():"HTML_SPECIALCHARS":o[e],i=isNaN(t)?t?t.toUpperCase():"ENT_COMPAT":r[t],"HTML_SPECIALCHARS"!==n&&"HTML_ENTITIES"!==n)throw new Error("Table: "+n+" not supported");l[38]="&","HTML_ENTITIES"===n&&(l[160]=" ",l[161]="¡",l[162]="¢",l[163]="£",l[164]="¤",l[165]="¥",l[166]="¦",l[167]="§",l[168]="¨",l[169]="©",l[170]="ª",l[171]="«",l[172]="¬",l[173]="­",l[174]="®",l[175]="¯",l[176]="°",l[177]="±",l[178]="²",l[179]="³",l[180]="´",l[181]="µ",l[182]="¶",l[183]="·",l[184]="¸",l[185]="¹",l[186]="º",l[187]="»",l[188]="¼",l[189]="½",l[190]="¾",l[191]="¿",l[192]="À",l[193]="Á",l[194]="Â",l[195]="Ã",l[196]="Ä",l[197]="Å",l[198]="Æ",l[199]="Ç",l[200]="È",l[201]="É",l[202]="Ê",l[203]="Ë",l[204]="Ì",l[205]="Í",l[206]="Î",l[207]="Ï",l[208]="Ð",l[209]="Ñ",l[210]="Ò",l[211]="Ó",l[212]="Ô",l[213]="Õ",l[214]="Ö",l[215]="×",l[216]="Ø",l[217]="Ù",l[218]="Ú",l[219]="Û",l[220]="Ü",l[221]="Ý",l[222]="Þ",l[223]="ß",l[224]="à",l[225]="á",l[226]="â",l[227]="ã",l[228]="ä",l[229]="å",l[230]="æ",l[231]="ç",l[232]="è",l[233]="é",l[234]="ê",l[235]="ë",l[236]="ì",l[237]="í",l[238]="î",l[239]="ï",l[240]="ð",l[241]="ñ",l[242]="ò",l[243]="ó",l[244]="ô",l[245]="õ",l[246]="ö",l[247]="÷",l[248]="ø",l[249]="ù",l[250]="ú",l[251]="û",l[252]="ü",l[253]="ý",l[254]="þ",l[255]="ÿ"),"ENT_NOQUOTES"!==i&&(l[34]="""),"ENT_QUOTES"===i&&(l[39]="'"),l[60]="<",l[62]=">";for(a in l)l.hasOwnProperty(a)&&(s[String.fromCharCode(a)]=l[a]);return s},e.encode=function(e,t){var a=this.getHtmlTranslationTable("HTML_ENTITIES",t);if(e=null===e?"":e+"",!a)return!1;t&&"ENT_QUOTES"===t&&(a["'"]="'");var l=new RegExp("&(?:#\\d+|#x[\\da-f]+|[a-zA-Z][\\da-z]*);|["+Object.keys(a).join("").replace(/([()[\]{}\-.*+?^$|\/\\])/g,"\\$1")+"]","g");return e.replace(l,function(e){var t=void 0;return e.length>1&&(t=e),t=a[e]})},e}(HTML_ENTITIES||{}),_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e};!function(e){var t=function(t,a){var l={theme:"fresh",labels:{off:"Off",on:"On"}},s=e.extend(l,a),o=e('<div class="kc-toggle"/>').insertAfter(t).append(t);o.toggleClass("on",t.is(":checked"));var r='<div class="kct-on">'+s.labels.on+"</div>",n='<div class="kct-off">'+s.labels.off+"</div>",i='<div class="kct-handle"></div>',c='<div class="kct-inner">'+r+i+n+"</div>";o.append(c),o.click(function(){t.attr("checked",!t.attr("checked")),e(this).toggleClass("on")})};e.fn.kcToggle=function(a){var l=this;return l.each(function(){var l=e(this);if(!l.data("kcToggle")){var s=new t(l,a);l.data("kcToggle",s)}})}}(jQuery),function(e){var t=function(t,a){var l=this,s={controlPosition:"right",controlOrder:["autocomplete","button","checkbox","checkbox-group","date","file","header","hidden","paragraph","radio-group","select","text","textarea"],dataType:"xml",disableFields:["autocomplete","hidden"],append:!1,prepend:!1,defaultFields:[],fieldRemoveWarn:!1,roles:{1:"Administrator"},messages:{addOption:"Add Option",allFieldsRemoved:"All fields were removed.",allowSelect:"Allow Select",autocomplete:"Autocomplete",button:"Button",cannotBeEmpty:"This field cannot be empty",checkboxGroup:"Checkbox Group",checkbox:"Checkbox",checkboxes:"Checkboxes",className:"Class",clearAllMessage:"Are you sure you want to clear all fields?",clearAll:"Clear",close:"Close",content:"Content",copy:"Copy To Clipboard",dateField:"Date Field",description:"Help Text",descriptionField:"Description",devMode:"Developer Mode",editNames:"Edit Names",editorTitle:"Form Elements",editXML:"Edit XML",enableOther:"Enable "Other"",enableOtherMsg:"Permit users to enter an unlisted option",fieldDeleteWarning:!1,fieldVars:"Field Variables",fieldNonEditable:"This field cannot be edited.",fieldRemoveWarning:"Are you sure you want to remove this field?",fileUpload:"File Upload",formUpdated:"Form Updated",getStarted:"Drag a field from the right to this area",header:"Header",hide:"Edit",hidden:"Hidden Input",label:"Label",labelEmpty:"Field Label cannot be empty",limitRole:"Limit access to one or more of the following roles:",mandatory:"Mandatory",maxlength:"Max Length",minOptionMessage:"This field requires a minimum of 2 options",name:"Name",no:"No",off:"Off",on:"On",option:"Option",optional:"optional",optionLabelPlaceholder:"Label",optionValuePlaceholder:"Value",optionEmpty:"Option value required",other:"Other",paragraph:"Paragraph",placeholder:"Placeholder",placeholders:{value:"Value",label:"Label",text:"",textarea:"",email:"Enter you email",placeholder:"",className:"space separated classes",password:"Enter your password"},preview:"Preview",radioGroup:"Radio Group",radio:"Radio",removeMessage:"Remove Element",remove:"×",required:"Required",richText:"Rich Text Editor",roles:"Access",save:"Save",selectOptions:"Options",select:"Select",selectColor:"Select Color",selectionsMessage:"Allow Multiple Selections",size:"Size",sizes:{xs:"Extra Small",sm:"Small",m:"Default",lg:"Large"},style:"Style",styles:{btn:{"default":"Default",danger:"Danger",info:"Info",primary:"Primary",success:"Success",warning:"Warning"}},subtype:"Type",subtypes:{text:["text","password","email","color"],button:["button","submit"],header:["h1","h2","h3"],paragraph:["p","address","blockquote","canvas","output"]},text:"Text Field",textArea:"Text Area",toggle:"Toggle",warning:"Warning!",viewXML:"</>",yes:"Yes"},notify:{error:function(e){return console.error(e)},success:function(e){return console.log(e)},warning:function(e){return console.warn(e)}},sortableControls:!1,prefix:"form-builder-"};s.messages.subtypes.password=s.messages.subtypes.text,s.messages.subtypes.email=s.messages.subtypes.text,s.messages.subtypes.color=s.messages.subtypes.text,s.messages.subtypes.submit=s.messages.subtypes.button;var o=e.extend(!0,s,t),r=e(a),n="frmb-"+e("ul[id^=frmb-]").length++;o.formID=n,l.element=a;var i=e("<ul/>").attr("id",n).addClass("frmb"),c=formBuilderHelpersFn(o,l);l.layout=c.editorLayout(o.controlPosition);var d=n+"-fld-1",u=n+"-control-box",p=[{label:o.messages.textArea,attrs:{type:"textarea",className:"text-area",name:"textarea"}},{label:o.messages.text,attrs:{type:"text",className:"text-input",name:"text-input"}},{label:o.messages.select,attrs:{type:"select",className:"select",name:"select"}},{label:o.messages.radioGroup,attrs:{type:"radio-group",className:"radio-group",name:"radio-group"}},{label:o.messages.paragraph,attrs:{type:"paragraph",className:"paragraph"}},{label:o.messages.hidden,attrs:{type:"hidden",className:"hidden-input",name:"hidden-input"}},{label:o.messages.header,attrs:{type:"header",className:"header"}},{label:o.messages.fileUpload,attrs:{type:"file",className:"file-input",name:"file-input"}},{label:o.messages.dateField,attrs:{type:"date",className:"calendar",name:"date-input"}},{label:o.messages.checkboxGroup,attrs:{type:"checkbox-group",className:"checkbox-group",name:"checkbox-group"}},{label:o.messages.checkbox,attrs:{type:"checkbox",className:"checkbox",name:"checkbox"}},{label:o.messages.button,attrs:{type:"button",className:"button-input",name:"button"}},{label:o.messages.autocomplete,attrs:{type:"autocomplete",className:"autocomplete",name:"autocomplete"}}];p=c.orderFields(p),o.disableFields&&(p=p.filter(function(e){return!c.inArray(e.attrs.type,o.disableFields)}));var m=c.markup("ul",null,{id:u,className:"frmb-control"});o.sortableControls&&m.classList.add("sort-enabled");for(var f=e(m),v=p.length-1;v>=0;v--){var h=e("<li/>",{"class":"icon-"+p[v].attrs.className,type:p[v].type,name:p[v].className,label:p[v].label});h.data("newFieldData",p[v]);var g=c.markup("span",p[v].label);h.html(g).appendTo(f)}var b="xml"===o.dataType?o.messages.viewXML:o.messages.viewJSON,y=c.markup("button",b,{id:n+"-view-data",type:"button",className:"view-data btn btn-default"}),k=c.markup("button",o.messages.clearAll,{id:n+"-clear-all",type:"button",className:"clear-all btn btn-default"}),x=c.markup("button",o.messages.save,{className:"btn btn-primary "+o.prefix+"save",id:n+"-save",type:"button"}),w=c.markup("div",[k,y,x],{className:"form-actions btn-group"}).outerHTML;i.sortable({cursor:"move",opacity:.9,revert:150,beforeStop:c.beforeStop,start:c.startMoving,stop:c.stopMoving,cancel:"input, select, .disabled, .form-group, .btn",placeholder:"frmb-placeholder"}),f.sortable({helper:"clone",opacity:.9,connectWith:i,cursor:"move",placeholder:"ui-state-highlight",start:c.startMoving,stop:c.stopMoving,revert:150,beforeStop:c.beforeStop,update:function(e,t){return c.doCancel?!1:(e=e,void(t.item.parent()[0]===i[0]?(S(t.item,!0),c.doCancel=!0):(c.setFieldOrder(f),c.doCancel=!o.sortableControls)))}});var N=e("<div/>",{id:n+"-stage-wrap","class":"stage-wrap "+l.layout.stage}),E=e("<div/>",{id:n+"-form-wrap","class":"form-wrap form-builder"+c.mobileClass()});r.before(N).appendTo(N);var T=e("<div/>",{id:n+"-cb-wrap","class":"cb-wrap "+l.layout.controls}).append(f[0],w);N.append(i,T),N.before(E),E.append(N,T);var C=c.debounce(function(t){if(t&&"keyup"===t.type&&"className"===this.name)return!1;var a=e(this).parents(".form-field:eq(0)");c.updatePreview(a),c.save()});i.on("change blur keyup",".form-elements input, .form-elements select, .form-elements textarea",C);var O=function(){var t=[];if(o.prepend&&!e(".disabled.prepend",i).length){var a=c.markup("li",o.prepend,{className:"disabled prepend"});t.push(!0),i.prepend(a)}if(o.append&&!e(".disabled.append",i).length){var l=c.markup("li",o.append,{className:"disabled append"});t.push(!0),i.append(l)}t.some(function(e){return e===!0})&&N.removeClass("empty")},S=function(t){var a=arguments.length<=1||void 0===arguments[1]?!1:arguments[1],l={};if(t instanceof jQuery){var s=t.data("newFieldData");if(s)l=s.attrs,l.label=s.label;else{var o=t[0].attributes;a||(l.values=t.children().map(function(t,a){return{label:e(a).text(),value:e(a).attr("value"),selected:Boolean(e(a).attr("selected"))}}));for(var r=o.length-1;r>=0;r--)l[o[r].name]=o[r].value}}else l=t;l.label=c.htmlEncode(l.label),l.name=a?I(l):l.name,l.role=l.role,l.className=l.className||l["class"],l.required="true"===l.required||l.required===!0,l.maxlength=l.maxlength,l.toggle=l.toggle,l.description=void 0!==l.description?c.htmlEncode(l.description):"";var n=/(?:^|\s)btn-(.*?)(?:\s|$)/g.exec(l.className);n&&(l.style=n[1]),D(l),N.removeClass("empty")},A=function(){var t="";t=l.formData?l.formData:""!==r.val()?e.parseXML(l.element.value.trim()):!1;var a=e(t).find("field");if(a.length>0)l.formData=t,a.each(function(){S(e(this))});else if(!t)if(o.defaultFields&&o.defaultFields.length){o.defaultFields.reverse();for(var s=o.defaultFields.length-1;s>=0;s--)S(o.defaultFields[s]);N.removeClass("empty"),c.save()}else o.prepend||o.append||N.addClass("empty").attr("data-content",o.messages.getStarted);e("li.form-field:not(.disabled)",i).each(function(){c.updatePreview(e(this))}),O()},M=function(){var e={xml:A,json:function(){console.log("coming soon")}};e[o.dataType]()};i.on("mousemove","li.disabled",function(t){e(".frmb-tt",this).css({left:t.offsetX-16,top:t.offsetY-34})}),i.on("mouseenter","li.disabled",function(){c.disabledTT.add(e(this))}),i.on("mouseleave","li.disabled",function(){c.disabledTT.remove(e(this))});var I=function(e){var t=(new Date).getTime();return e.type+"-"+t},L=function(e){R(o.messages.textArea,H(e),e)},q=function(e){var t=e.type||"text";R(o.messages[t],H(e),e)},$=function(t){t.values&&t.values.length||(t.values=[{selected:!0},{selected:!1}],t.values=t.values.map(function(e,t){return e.label=o.messages.option+" "+(t+1),e.value=c.hyphenCase(e.label),e}));var a="";for(a+=H(t),a+='<div class="form-group field-options">',a+='<label class="false-label">'+o.messages.selectOptions+"</label>",a+='<div class="sortable-options-wrap">',"select"===t.type&&(a+='<div class="allow-multi">',a+='<input type="checkbox" id="multiple_'+d+'" name="multiple"'+(t.multiple?'checked="checked"':"")+">",a+='<label class="multiple" for="multiple_'+d+'">'+o.messages.selectionsMessage+"</label>",a+="</div>"),a+='<ol class="sortable-options">',v=0;v<t.values.length;v++)a+=U(t.name,t.values[v],t.values[v].selected,t.multiple);a+="</ol>";var l=c.markup("a",o.messages.addOption,{className:"add add-opt"});a+=c.markup("div",l,{className:"option-actions"}).outerHTML,a+="</div>",a+="</div>",R(o.messages.select,a,t),e(".sortable-options").sortable()},D=function(e){var t={select:$,"rich-text":L,textarea:L,"radio-group":$,"checkbox-group":$};e=e||"",t[e.type]?t[e.type](e):q(e)},H=function W(e){var t,W=[],a="",l=void 0!==e.role?e.role.split(","):[];W.push(j("label",e)),e.size=e.size||"m",e.style=e.style||"default",W.push(F(e)),W.push(B(e)),W.push(_(e.style,e.type)),W.push(j("placeholder",e)),W.push(j("className",e)),W.push(j("name",e)),W.push('<div class="form-group access-wrap"><label>'+o.messages.roles+"</label>"),W.push('<input type="checkbox" name="enable_roles" value="" '+(void 0!==e.role?"checked":"")+' id="enable_roles-'+d+'"/> <label for="enable_roles-'+d+'" class="roles-label">'+o.messages.limitRole+"</label>"),W.push('<div class="available-roles" '+(void 0!==e.role?'style="display:block"':"")+">");for(t in o.roles)o.roles.hasOwnProperty(t)&&(a=c.inArray(t,l)?"checked":"",W.push('<input type="checkbox" name="roles[]" value="'+t+'" id="fld-'+d+"-roles-"+t+'" '+a+' class="roles-field" /><label for="fld-'+d+"-roles-"+t+'">'+o.roles[t]+"</label><br/>"));return W.push("</div></div>"),"checkbox-group"!==e.type&&"radio-group"!==e.type||(W.push('<div class="form-group other-wrap"><label>'+o.messages.enableOther+"</label>"),W.push('<input type="checkbox" name="enable-other" value="" '+(void 0!==e.other?"checked":"")+' id="enable-other-'+d+'"/> <label for="enable-other-'+d+'" class="other-label">'+o.messages.enableOtherMsg+"</label></div>")),W.push(j("maxlength",e)),W.join("")},F=function(e){var t=["header","paragraph","button"],a=[],l="";if(t=t.concat(o.messages.subtypes.header,o.messages.subtypes.paragraph),-1===t.indexOf(e.type)&&a.push(!0),a.some(function(e){return e===!0})){var s=c.markup("label",o.messages.description,{"for":"description-"+d}),r=c.markup("input",null,{type:"text",className:"fld-description form-control",name:"description",id:"description-"+d,value:e.description}),n=c.markup("div",[s,r],{"class":"form-group description-wrap"});l=n.outerHTML}return l},B=function Q(e){var t=o.messages.subtypes,a=e.type,l=e.subtype||"",Q="",s=void 0;if(t[a]){var r="<label>"+o.messages.subtype+"</label>";Q+='<select name="subtype" class="fld-subtype form-control" id="subtype-'+d+'">',t[a].forEach(function(e){s=l===e?"selected":"",Q+='<option value="'+e+'" '+s+">"+e+"</option>"}),Q+="</select>",Q='<div class="form-group subtype-wrap">'+r+" "+Q+"</div>"}return Q},_=function(e,t){var a={button:"btn"},l=o.messages.styles[a[t]],s="";if(l){var r="<label>"+o.messages.style+"</label>";s+='<input value="'+e+'" name="style" type="hidden" class="btn-style">',s+='<div class="btn-group" role="group">',Object.keys(o.messages.styles[a[t]]).forEach(function(l){var r=e===l?"active":"";s+='<button value="'+l+'" type="'+t+'" class="'+r+" btn-xs "+a[t]+" "+a[t]+"-"+l+'">'+o.messages.styles[a[t]][l]+"</button>"}),s+="</div>",s='<div class="form-group style-wrap">'+r+" "+s+"</div>"}return s},j=function(e,t){var a=["text","textarea","select"],l=["header"],s=["paragraph"],r=["checkbox","select","checkbox-group","date","autocomplete","radio-group","hidden","button","header"],n="label"===e?t.label:t[e]||"",i=o.messages[e];"label"===e&&c.inArray(t.type,s)&&(i=o.messages.content),l=l.concat(o.messages.subtypes.header,s),r=r.concat(s);var u=o.messages.placeholders,p=u[e]||"",m="",f=[];if("placeholder"!==e||c.inArray(t.type,a)||f.push(!0),"name"===e&&c.inArray(t.type,l)&&f.push(!0),"maxlength"===e&&c.inArray(t.type,r)&&f.push(!0),!f.some(function(e){return e===!0})){var v="<label>"+i+"</label>";m+="label"===e&&c.inArray(t.type,s)?'<textarea name="'+e+'" placeholder="'+p+'" class="fld-'+e+' form-control" id="'+e+"-"+d+'">'+n+"</textarea>":'<input type="text" value="'+n+'" name="'+e+'" placeholder="'+p+'" class="fld-'+e+' form-control" id="'+e+"-"+d+'">',m='<div class="form-group '+e+'-wrap">'+v+" "+m+"</div>"}return m},P=function(e){var t=["header","paragraph","button"],a=[],l="";if(c.inArray(e.type,t)&&a.push(!0),!a.some(function(e){return e===!0})){l+='<div class="form-group">',l+="<label> </label>";var s=c.markup("input",null,{className:"required",type:"checkbox",name:"required-"+d,id:"required-"+d,value:1});s.defaultChecked=e.required,l+=s.outerHTML,l+=c.markup("label",o.messages.required,{className:"required-label","for":"required-"+d}).outerHTML,l+="</div>"}return l},R=function(t,a,l){var s=e(a).find('input[name="label"]').val(),r=s?s:t,n=c.markup("a",o.messages.remove,{id:"del_"+d,className:"del-button btn delete-confirm",title:o.messages.removeMessage}),u=c.markup("a",null,{30 "use strict";function formBuilderHelpersFn(e,t){var a={doCancel:!1};return t.events=formBuilderEventsFn(),a.attrString=function(e){var t=[];for(var l in e)e.hasOwnProperty(l)&&(l=a.safeAttr(l,e[l]),t.push(l.name+l.value));var s=t.join(" ");return s},a.hyphenCase=function(e){return e=e.replace(/([A-Z])/g,function(e){return"-"+e.toLowerCase()}),e.replace(/\s/g,"-").replace(/^-+/g,"")},a.makeClassName=function(e){return e=e.replace(/[^\w\s\-]/gi,""),a.hyphenCase(e)},a.safeAttrName=function(e){var t={className:"class"};return t[e]||a.hyphenCase(e)},a.safeAttr=function(e,t){e=a.safeAttrName(e);var l=window.JSON.stringify(HTML_ENTITIES.encode(t));return t=t?"="+l:"",{name:e,value:t}},a.mobileClass=function(){var e="";return function(t){(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(t)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(t.substr(0,4)))&&(e=" fb-mobile")}(navigator.userAgent||navigator.vendor||window.opera),e},a.startMoving=function(e,t){e=e,t.item.show().addClass("moving"),a.startIndex=$("li",this).index(t.item)},a.stopMoving=function(e,t){e=e,t.item.removeClass("moving"),a.doCancel&&($(t.sender).sortable("cancel"),$(this).sortable("cancel")),a.save(),a.doCancel=!1},a.beforeStop=function(t,l){t=t;var s=document.getElementById(e.formID),o=s.children.length-1,r=[];a.stopIndex=l.placeholder.index()-1,!e.sortableControls&&l.item.parent().hasClass("frmb-control")&&r.push(!0),e.prepend&&r.push(0===a.stopIndex),e.append&&r.push(a.stopIndex+1===o),a.doCancel=r.some(function(e){return e===!0})},a.safename=function(e){return e.replace(/\s/g,"-").replace(/[^a-zA-Z0-9\-]/g,"").toLowerCase()},a.forceNumber=function(e){return e.replace(/[^0-9]/g,"")},a.initTooltip=function(e){var t=e.find(".tooltip");e.mouseenter(function(){t.outerWidth()>200&&t.addClass("max-width"),t.css("left",e.width()+14),t.stop(!0,!0).fadeIn("fast")}).mouseleave(function(){e.find(".tooltip").stop(!0,!0).fadeOut("fast")}),t.hide()},a.getTypes=function(e){return{type:e.attr("type"),subtype:$(".fld-subtype",e).val()}},a.trimAttrs=function(e){var t=[null,void 0,"",!1];for(var l in e)a.inArray(e[l],t)&&delete e[l];return e},a.escapeAttrs=function(e){for(var t in e)e.hasOwnProperty(t)&&(e[t]=HTML_ENTITIES.encode(e[t]));return e},a.xmlSave=function(e){var l=$(e).toXML(a);return window.JSON.stringify(l)===window.JSON.stringify(t.formData)?!1:void(t.formData=l)},a.jsonSave=function(){e.notify.warning("json data not available yet")},a.save=function(){var l,s=a.getElement(),o=document.getElementById(e.formID),r={xml:a.xmlSave,json:a.jsonSave};return l=r[e.dataType](o),s&&(s.value=t.formData,window.jQuery?$(s).trigger("change"):s.onchange()),document.dispatchEvent(t.events.formSaved),l},a.getElement=function(){var l=!1;return t.element&&(l=t.element,l.id||a.makeId(l),l.onchange||(l.onchange=function(){e.notify.success(e.messages.formUpdated)})),l},a.incrementId=function(e){var t=e.lastIndexOf("-"),a=parseInt(e.substring(t+1))+1,l=e.substring(0,t);return l+"-"+a},a.makeId=function(){var e=arguments.length<=0||void 0===arguments[0]?!1:arguments[0],t=(new Date).getTime();return e.tagName+"-"+t},a.updatePreview=function(e){var t=e.data("fieldData")||{},l=e.attr("class");if(-1===l.indexOf("ui-sortable-handle")){var s,o=$(e).attr("type"),r=$(".prev-holder",e),n={label:$(".fld-label",e).val(),type:o},i=$(".fld-subtype",e).val();i&&(n.subtype=i);var c=$(".fld-maxlength",e).val();c&&(n.maxlength=c),n.className=$(".fld-className",e).val()||t.className||"";var d=$(".fld-placeholder",e).val();d&&(n.placeholder=d);var u=$(".btn-style",e).val();u&&(n.style=u),"checkbox"===o&&(n.toggle=$(".checkbox-toggle",e).is(":checked")),o.match(/(checkbox-group|radio-group)/)&&(n.enableOther=$('[name="enable-other"]',e).is(":checked")),o.match(/(select|checkbox-group|radio-group)/)&&(n.values=[],n.multiple=$('[name="multiple"]',e).is(":checked"),$(".sortable-options li",e).each(function(){var e={};e.selected=$(".option-selected",this).is(":checked"),e.value=$(".option-value",this).val(),e.label=$(".option-label",this).val(),n.values.push(e)})),n.className=a.classNames(e,n),$(".fld-className",e).val(n.className),e.data("fieldData",n),s=a.fieldPreview(n),r.html(s),$("input[toggle]",r).kcToggle()}},a.fieldPreview=function(t){var l,s="",o=(new Date).getTime();t=jQuery.extend({},t),t.type=t.subtype||t.type;var r=t.toggle?"toggle":"",n=a.attrString(t);switch(t.type){case"textarea":case"rich-text":s="<textarea "+n+"></textarea>";break;case"button":case"submit":s="<button "+n+">"+t.label+"</button>";break;case"select":var i="",c=t.multiple?"multiple":"";for(t.values.reverse(),t.placeholder&&(i+="<option disabled selected>"+t.placeholder+"</option>"),l=t.values.length-1;l>=0;l--){var d=t.values[l].selected&&!t.placeholder?"selected":"";i+='<option value="'+t.values[l].value+'" '+d+">"+t.values[l].label+"</option>"}s="<"+t.type+' class="'+t.className+'" '+c+">"+i+"</"+t.type+">";break;case"checkbox-group":case"radio-group":var u=t.type.replace("-group",""),p=u+"-"+o;for(t.values.reverse(),l=t.values.length-1;l>=0;l--){var m=t.values[l].selected?"checked":"",f=u+"-"+o+"-"+l;s+='<div><input type="'+u+'" class="'+t.className+'" name="'+p+'" id="'+f+'" value="'+t.values[l].value+'" '+m+'/><label for="'+f+'">'+t.values[l].label+"</label></div>"}if(t.enableOther){var v=p+"-other",h={id:v,name:p,className:t.className+" other-option",type:u,onclick:"otherOptionCallback('"+v+"')"},g=a.markup("input",null,h);a.attrString(h);window.otherOptionCallback=function(e){var t=document.getElementById(e),a=t.nextElementSibling,l=a.nextElementSibling;t.checked?(l.style.display="inline-block",a.style.display="none"):(l.style.display="none",a.style.display="inline-block")},s+="<div>"+g.outerHTML+'<label for="'+v+'">'+e.messages.other+'</label> <input type="text" id="'+v+'-value" style="display:none;" /></div>'}break;case"text":case"password":case"email":case"date":case"file":s="<input "+n+">";break;case"color":s='<input type="'+t.type+'" class="'+t.className+'"> '+e.messages.selectColor;break;case"hidden":case"checkbox":s='<input type="'+t.type+'" '+r+" >";break;case"autocomplete":s='<input class="ui-autocomplete-input '+t.className+'" autocomplete="on">';break;default:n=a.attrString(t),s="<"+t.type+" "+n+">"+t.label+"</"+t.type+">"}return s},a.updateMultipleSelect=function(){$(document.getElementById(e.formID)).on("change",'input[name="multiple"]',function(){var e=$(this).parents(".field-options:eq(0)").find(".sortable-options input.option-selected");this.checked?e.each(function(){$(this).prop("type","checkbox")}):e.each(function(){$(this).removeAttr("checked").prop("type","radio")})})},a.debounce=function(e){var t,a=arguments.length<=1||void 0===arguments[1]?250:arguments[1],l=arguments.length<=2||void 0===arguments[2]?!1:arguments[2];return function(){var s=this,o=arguments,r=function(){t=null,l||e.apply(s,o)},n=l&&!t;clearTimeout(t),t=setTimeout(r,a),n&&e.apply(s,o)}},a.htmlEncode=function(e){return $("<div/>").text(e).html()},a.htmlDecode=function(e){return $("<div/>").html(e).text()},a.validateForm=function(){var t=$(document.getElementById(e.formID)),a=[];$('input[name="label"], input[type="text"].option',t).each(function(){if(""===$(this).val()){var t=$(this).parents("li.form-field"),l=$(this);a.push({field:t,error:e.messages.labelEmpty,attribute:l})}}),a.length&&(alert("Error: "+a[0].error),$("html, body").animate({scrollTop:a[0].field.offset().top},1e3,function(){var e=$(".toggle-form",a[0].field).attr("id");$(".toggle-form",a[0].field).addClass("open").parent().next(".prev-holder").slideUp(250),$("#"+e+"-fld").slideDown(250,function(){a[0].attribute.addClass("error")})}))},a.disabledTT={className:"frmb-tt",add:function(t){var l=e.messages.fieldNonEditable;if(l){var s=a.markup("p",l,{className:a.disabledTT.className});t.append(s)}},remove:function(e){$(".frmb-tt",e).remove()}},a.classNames=function(t,l){var s=["checkbox","checkbox-group","radio-group"],o=["header","paragraph","button"],r=void 0;for(r=o.length-1;r>=0;r--)o=o.concat(e.messages.subtypes[o[r]]);s=s.concat(o);var n=l.type,i=l.style,c=t[0].querySelector(".fld-className").value,d=[].concat(c.split(" ")).reverse(),u={button:"btn",submit:"btn"},p=u[n];if(p){if(i){for(r=d.length-1;r>=0;r--){var m=new RegExp("(?:^|s)"+p+"-(.*?)(?:s|$)+","g"),f=d[r].match(m);f&&d.splice(r,1)}d.push(p+"-"+i)}d.push(p)}else a.inArray(n,s)||d.push("form-control");return a.unique(d.reverse()).join(" ").trim()},a.markup=function(e){var t=arguments.length<=1||void 0===arguments[1]?"":arguments[1],l=arguments.length<=2||void 0===arguments[2]?{}:arguments[2],s=void 0,o=document.createElement(e),r=function(e){return Array.isArray(e)?"array":"undefined"==typeof e?"undefined":_typeof(e)},n={string:function(e){o.innerHTML=e},object:function(e){return o.appendChild(e)},array:function(e){for(var t=0;t<e.length;t++)s=r(e[t]),n[s](e[t])}};for(var i in l)if(l.hasOwnProperty(i)&&l[i]){var c=a.safeAttrName(i);o.setAttribute(c,l[i])}return s=r(t),t&&n[s].call(this,t),o},a.closeConfirm=function(e,a){e=e||document.getElementsByClassName("form-builder-overlay")[0],a=a||document.getElementsByClassName("form-builder-dialog")[0],e.classList.remove("visible"),a.remove(),e.remove(),document.dispatchEvent(t.events.modalClosed)},a.editorLayout=function(e){var t={left:{stage:"pull-right",controls:"pull-left"},right:{stage:"pull-left",controls:"pull-right"}};return t[e]?t[e]:""},a.showOverlay=function(){var e=a.markup("div",null,{className:"form-builder-overlay"});return document.body.appendChild(e),e.classList.add("visible"),e.onclick=function(){a.closeConfirm(e)},e},a.confirm=function(t,l){var s=arguments.length<=2||void 0===arguments[2]?!1:arguments[2],o=arguments.length<=3||void 0===arguments[3]?"":arguments[3],r=a.showOverlay(),n=a.markup("button",e.messages.yes,{className:"yes btn btn-success btn-sm"}),i=a.markup("button",e.messages.no,{className:"no btn btn-danger btn-sm"});i.onclick=function(){a.closeConfirm(r)},n.onclick=function(){l(),a.closeConfirm(r)};var c=a.markup("div",[i,n],{className:"button-wrap"});o="form-builder-dialog "+o;var d=a.markup("div",[t,c],{className:o});return s?d.classList.add("positioned"):(s={pageX:Math.max(document.documentElement.clientWidth,window.innerWidth||0)/2,pageY:Math.max(document.documentElement.clientHeight,window.innerHeight||0)/2},d.style.position="fixed"),d.style.left=s.pageX+"px",d.style.top=s.pageY+"px",document.body.appendChild(d),n.focus(),d},a.dialog=function(e){var l=arguments.length<=1||void 0===arguments[1]?!1:arguments[1],s=arguments.length<=2||void 0===arguments[2]?"":arguments[2];a.showOverlay(),s="form-builder-dialog "+s;var o=a.markup("div",e,{className:s});return l?o.classList.add("positioned"):(l={pageX:Math.max(document.documentElement.clientWidth,window.innerWidth||0)/2,pageY:Math.max(document.documentElement.clientHeight,window.innerHeight||0)/2},o.style.position="fixed"),o.style.left=l.pageX+"px",o.style.top=l.pageY+"px",document.body.appendChild(o),-1!==s.indexOf("data-dialog")&&document.dispatchEvent(t.events.viewData),o},a.removeAllfields=function(){var t=document.getElementById(e.formID),l=t.querySelectorAll("li.form-field"),s=$(l),o=[];e.prepend&&o.push(!0),e.append&&o.push(!0),o.some(function(e){return e===!0})||t.parentElement.classList.add("empty"),t.classList.add("removing");var r=0;s.each(function(){r+=$(this).outerHeight()+3}),l[0].style.marginTop=-r+"px",setTimeout(function(){s.remove(),document.getElementById(e.formID).classList.remove("removing"),a.save()},500)},a.setFieldOrder=function(t){if(!e.sortableControls)return!1;var a={};t.children().each(function(e,t){a[e]=$(t).data("attrs").type}),window.sessionStorage&&window.sessionStorage.setItem("fieldOrder",window.JSON.stringify(a))},a.orderFields=function(t){var l=!1;window.sessionStorage&&(e.sortableControls?l=window.sessionStorage.getItem("fieldOrder"):window.sessionStorage.removeItem("fieldOrder")),l?(l=window.JSON.parse(l),l=Object.keys(l).map(function(e){return l[e]})):l=a.unique(e.controlOrder);for(var s=[],o=l.length-1;o>=0;o--){var r=t.filter(function(e){return e.attrs.type===l[o]})[0];s.push(r)}return s.filter(Boolean)},a.forEach=function(e,t,a){for(var l=0;l<e.length;l++)t.call(a,l,e[l])},a.inArray=function(e,t){return-1!==t.indexOf(e)},a.unique=function(e){return e.filter(function(e,t,a){return a.indexOf(e)===t})},a}function formBuilderEventsFn(){var e={};return e.loaded=new Event("loaded"),e.viewData=new Event("viewData"),e.userDeclined=new Event("userDeclined"),e.modalClosed=new Event("modalClosed"),e.formSaved=new Event("formSaved"),e}var HTML_ENTITIES=function(){var e={};return e.getHtmlTranslationTable=function(e,t){var a,l={},s={},o={},r={},n={},i={};if(o[0]="HTML_SPECIALCHARS",o[1]="HTML_ENTITIES",r[0]="ENT_NOQUOTES",r[2]="ENT_COMPAT",r[3]="ENT_QUOTES",n=isNaN(e)?e?e.toUpperCase():"HTML_SPECIALCHARS":o[e],i=isNaN(t)?t?t.toUpperCase():"ENT_COMPAT":r[t],"HTML_SPECIALCHARS"!==n&&"HTML_ENTITIES"!==n)throw new Error("Table: "+n+" not supported");l[38]="&","HTML_ENTITIES"===n&&(l[160]=" ",l[161]="¡",l[162]="¢",l[163]="£",l[164]="¤",l[165]="¥",l[166]="¦",l[167]="§",l[168]="¨",l[169]="©",l[170]="ª",l[171]="«",l[172]="¬",l[173]="­",l[174]="®",l[175]="¯",l[176]="°",l[177]="±",l[178]="²",l[179]="³",l[180]="´",l[181]="µ",l[182]="¶",l[183]="·",l[184]="¸",l[185]="¹",l[186]="º",l[187]="»",l[188]="¼",l[189]="½",l[190]="¾",l[191]="¿",l[192]="À",l[193]="Á",l[194]="Â",l[195]="Ã",l[196]="Ä",l[197]="Å",l[198]="Æ",l[199]="Ç",l[200]="È",l[201]="É",l[202]="Ê",l[203]="Ë",l[204]="Ì",l[205]="Í",l[206]="Î",l[207]="Ï",l[208]="Ð",l[209]="Ñ",l[210]="Ò",l[211]="Ó",l[212]="Ô",l[213]="Õ",l[214]="Ö",l[215]="×",l[216]="Ø",l[217]="Ù",l[218]="Ú",l[219]="Û",l[220]="Ü",l[221]="Ý",l[222]="Þ",l[223]="ß",l[224]="à",l[225]="á",l[226]="â",l[227]="ã",l[228]="ä",l[229]="å",l[230]="æ",l[231]="ç",l[232]="è",l[233]="é",l[234]="ê",l[235]="ë",l[236]="ì",l[237]="í",l[238]="î",l[239]="ï",l[240]="ð",l[241]="ñ",l[242]="ò",l[243]="ó",l[244]="ô",l[245]="õ",l[246]="ö",l[247]="÷",l[248]="ø",l[249]="ù",l[250]="ú",l[251]="û",l[252]="ü",l[253]="ý",l[254]="þ",l[255]="ÿ"),"ENT_NOQUOTES"!==i&&(l[34]="""),"ENT_QUOTES"===i&&(l[39]="'"),l[60]="<",l[62]=">";for(a in l)l.hasOwnProperty(a)&&(s[String.fromCharCode(a)]=l[a]);return s},e.encode=function(e,t){var a=this.getHtmlTranslationTable("HTML_ENTITIES",t);if(e=null===e?"":e+"",!a)return!1;t&&"ENT_QUOTES"===t&&(a["'"]="'");var l=new RegExp("&(?:#\\d+|#x[\\da-f]+|[a-zA-Z][\\da-z]*);|["+Object.keys(a).join("").replace(/([()[\]{}\-.*+?^$|\/\\])/g,"\\$1")+"]","g");return e.replace(l,function(e){var t=void 0;return e.length>1&&(t=e),t=a[e]})},e}(HTML_ENTITIES||{}),_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e};!function(e){var t=function(t,a){var l={theme:"fresh",labels:{off:"Off",on:"On"}},s=e.extend(l,a),o=e('<div class="kc-toggle"/>').insertAfter(t).append(t);o.toggleClass("on",t.is(":checked"));var r='<div class="kct-on">'+s.labels.on+"</div>",n='<div class="kct-off">'+s.labels.off+"</div>",i='<div class="kct-handle"></div>',c='<div class="kct-inner">'+r+i+n+"</div>";o.append(c),o.click(function(){t.attr("checked",!t.attr("checked")),e(this).toggleClass("on")})};e.fn.kcToggle=function(a){var l=this;return l.each(function(){var l=e(this);if(!l.data("kcToggle")){var s=new t(l,a);l.data("kcToggle",s)}})}}(jQuery),function(e){var t=function(t,a){var l=this,s={controlPosition:"right",controlOrder:["autocomplete","button","checkbox","checkbox-group","date","file","header","hidden","paragraph","radio-group","select","text","textarea"],dataType:"xml",disableFields:["autocomplete","hidden"],append:!1,prepend:!1,defaultFields:[],fieldRemoveWarn:!1,roles:{1:"Administrator"},messages:{addOption:"Add Option",allFieldsRemoved:"All fields were removed.",allowSelect:"Allow Select",autocomplete:"Autocomplete",button:"Button",cannotBeEmpty:"This field cannot be empty",checkboxGroup:"Checkbox Group",checkbox:"Checkbox",checkboxes:"Checkboxes",className:"Class",clearAllMessage:"Are you sure you want to clear all fields?",clearAll:"Clear",close:"Close",content:"Content",copy:"Copy To Clipboard",dateField:"Date Field",description:"Help Text",descriptionField:"Description",devMode:"Developer Mode",editNames:"Edit Names",editorTitle:"Form Elements",editXML:"Edit XML",enableOther:"Enable "Other"",enableOtherMsg:"Permit users to enter an unlisted option",fieldDeleteWarning:!1,fieldVars:"Field Variables",fieldNonEditable:"This field cannot be edited.",fieldRemoveWarning:"Are you sure you want to remove this field?",fileUpload:"File Upload",formUpdated:"Form Updated",getStarted:"Drag a field from the right to this area",header:"Header",hide:"Edit",hidden:"Hidden Input",label:"Label",labelEmpty:"Field Label cannot be empty",limitRole:"Limit access to one or more of the following roles:",mandatory:"Mandatory",maxlength:"Max Length",minOptionMessage:"This field requires a minimum of 2 options",name:"Name",no:"No",off:"Off",on:"On",option:"Option",optional:"optional",optionLabelPlaceholder:"Label",optionValuePlaceholder:"Value",optionEmpty:"Option value required",other:"Other",paragraph:"Paragraph",placeholder:"Placeholder",placeholders:{value:"Value",label:"Label",text:"",textarea:"",email:"Enter you email",placeholder:"",className:"space separated classes",password:"Enter your password"},preview:"Preview",radioGroup:"Radio Group",radio:"Radio",removeMessage:"Remove Element",remove:"×",required:"Required",richText:"Rich Text Editor",roles:"Access",save:"Save",selectOptions:"Options",select:"Select",selectColor:"Select Color",selectionsMessage:"Allow Multiple Selections",size:"Size",sizes:{xs:"Extra Small",sm:"Small",m:"Default",lg:"Large"},style:"Style",styles:{btn:{"default":"Default",danger:"Danger",info:"Info",primary:"Primary",success:"Success",warning:"Warning"}},subtype:"Type",subtypes:{text:["text","password","email","color"],button:["button","submit"],header:["h1","h2","h3"],paragraph:["p","address","blockquote","canvas","output"]},text:"Text Field",textArea:"Text Area",toggle:"Toggle",warning:"Warning!",viewXML:"</>",yes:"Yes"},notify:{error:function(e){return console.error(e)},success:function(e){return console.log(e)},warning:function(e){return console.warn(e)}},sortableControls:!1,prefix:"form-builder-"};s.messages.subtypes.password=s.messages.subtypes.text,s.messages.subtypes.email=s.messages.subtypes.text,s.messages.subtypes.color=s.messages.subtypes.text,s.messages.subtypes.submit=s.messages.subtypes.button;var o=e.extend(!0,s,t),r=e(a),n="frmb-"+e("ul[id^=frmb-]").length++;o.formID=n,l.element=a;var i=e("<ul/>").attr("id",n).addClass("frmb"),c=formBuilderHelpersFn(o,l);l.layout=c.editorLayout(o.controlPosition);var d=n+"-fld-1",u=n+"-control-box",p=[{label:o.messages.textArea,attrs:{type:"textarea",className:"text-area",name:"textarea"}},{label:o.messages.text,attrs:{type:"text",className:"text-input",name:"text-input"}},{label:o.messages.select,attrs:{type:"select",className:"select",name:"select"}},{label:o.messages.radioGroup,attrs:{type:"radio-group",className:"radio-group",name:"radio-group"}},{label:o.messages.paragraph,attrs:{type:"paragraph",className:"paragraph"}},{label:o.messages.hidden,attrs:{type:"hidden",className:"hidden-input",name:"hidden-input"}},{label:o.messages.header,attrs:{type:"header",className:"header"}},{label:o.messages.fileUpload,attrs:{type:"file",className:"file-input",name:"file-input"}},{label:o.messages.dateField,attrs:{type:"date",className:"calendar",name:"date-input"}},{label:o.messages.checkboxGroup,attrs:{type:"checkbox-group",className:"checkbox-group",name:"checkbox-group"}},{label:o.messages.checkbox,attrs:{type:"checkbox",className:"checkbox",name:"checkbox"}},{label:o.messages.button,attrs:{type:"button",className:"button-input",name:"button"}},{label:o.messages.autocomplete,attrs:{type:"autocomplete",className:"autocomplete",name:"autocomplete"}}];p=c.orderFields(p),o.disableFields&&(p=p.filter(function(e){return!c.inArray(e.attrs.type,o.disableFields)}));var m=c.markup("ul",null,{id:u,className:"frmb-control"});o.sortableControls&&m.classList.add("sort-enabled");for(var f=e(m),v=p.length-1;v>=0;v--){var h=e("<li/>",{"class":"icon-"+p[v].attrs.className,type:p[v].type,name:p[v].className,label:p[v].label});h.data("newFieldData",p[v]);var g=c.markup("span",p[v].label);h.html(g).appendTo(f)}var b="xml"===o.dataType?o.messages.viewXML:o.messages.viewJSON,y=c.markup("button",b,{id:n+"-view-data",type:"button",className:"view-data btn btn-default"}),k=c.markup("button",o.messages.clearAll,{id:n+"-clear-all",type:"button",className:"clear-all btn btn-default"}),x=c.markup("button",o.messages.save,{className:"btn btn-primary "+o.prefix+"save",id:n+"-save",type:"button"}),w=c.markup("div",[k,y,x],{className:"form-actions btn-group"}).outerHTML;i.sortable({cursor:"move",opacity:.9,revert:150,beforeStop:c.beforeStop,start:c.startMoving,stop:c.stopMoving,cancel:"input, select, .disabled, .form-group, .btn",placeholder:"frmb-placeholder"}),f.sortable({helper:"clone",opacity:.9,connectWith:i,cursor:"move",placeholder:"ui-state-highlight",start:c.startMoving,stop:c.stopMoving,revert:150,beforeStop:c.beforeStop,update:function(e,t){return c.doCancel?!1:(e=e,void(t.item.parent()[0]===i[0]?(S(t.item,!0),c.doCancel=!0):(c.setFieldOrder(f),c.doCancel=!o.sortableControls)))}});var N=e("<div/>",{id:n+"-stage-wrap","class":"stage-wrap "+l.layout.stage}),E=e("<div/>",{id:n+"-form-wrap","class":"form-wrap form-builder"+c.mobileClass()});r.before(N).appendTo(N);var T=e("<div/>",{id:n+"-cb-wrap","class":"cb-wrap "+l.layout.controls}).append(f[0],w);N.append(i,T),N.before(E),E.append(N,T);var C=c.debounce(function(t){if(t&&"keyup"===t.type&&"className"===this.name)return!1;var a=e(this).parents(".form-field:eq(0)");c.updatePreview(a),c.save()});i.on("change blur keyup",".form-elements input, .form-elements select, .form-elements textarea",C);var O=function(){var t=[];if(o.prepend&&!e(".disabled.prepend",i).length){var a=c.markup("li",o.prepend,{className:"disabled prepend"});t.push(!0),i.prepend(a)}if(o.append&&!e(".disabled.append",i).length){var l=c.markup("li",o.append,{className:"disabled append"});t.push(!0),i.append(l)}t.some(function(e){return e===!0})&&N.removeClass("empty")},S=function(t){var a=arguments.length<=1||void 0===arguments[1]?!1:arguments[1],l={};if(t instanceof jQuery){var s=t.data("newFieldData");if(s)l=s.attrs,l.label=s.label;else{var o=t[0].attributes;a||(l.values=t.children().map(function(t,a){return{label:e(a).text(),value:e(a).attr("value"),selected:Boolean(e(a).attr("selected"))}}));for(var r=o.length-1;r>=0;r--)l[o[r].name]=o[r].value}}else l=t;l.label=c.htmlEncode(l.label),l.name=a?I(l):l.name,l.role=l.role,l.className=l.className||l["class"],l.required="true"===l.required||l.required===!0,l.maxlength=l.maxlength,l.toggle=l.toggle,l.description=void 0!==l.description?c.htmlEncode(l.description):"";var n=/(?:^|\s)btn-(.*?)(?:\s|$)/g.exec(l.className);n&&(l.style=n[1]),D(l),N.removeClass("empty")},A=function(){var t="";t=l.formData?l.formData:""!==r.val()?e.parseXML(l.element.value.trim()):!1;var a=e(t).find("field");if(a.length>0)l.formData=t,a.each(function(){S(e(this))});else if(!t)if(o.defaultFields&&o.defaultFields.length){o.defaultFields.reverse();for(var s=o.defaultFields.length-1;s>=0;s--)S(o.defaultFields[s]);N.removeClass("empty"),c.save()}else o.prepend||o.append||N.addClass("empty").attr("data-content",o.messages.getStarted);e("li.form-field:not(.disabled)",i).each(function(){c.updatePreview(e(this))}),O()},M=function(){var e={xml:A,json:function(){console.log("coming soon")}};e[o.dataType]()};i.on("mousemove","li.disabled",function(t){e(".frmb-tt",this).css({left:t.offsetX-16,top:t.offsetY-34})}),i.on("mouseenter","li.disabled",function(){c.disabledTT.add(e(this))}),i.on("mouseleave","li.disabled",function(){c.disabledTT.remove(e(this))});var I=function(e){var t=(new Date).getTime();return e.type+"-"+t},L=function(e){R(o.messages.textArea,H(e),e)},q=function(e){var t=e.type||"text";R(o.messages[t],H(e),e)},$=function(t){t.values&&t.values.length||(t.values=[{selected:!0},{selected:!1}],t.values=t.values.map(function(e,t){return e.label=o.messages.option+" "+(t+1),e.value=c.hyphenCase(e.label),e}));var a="";for(a+=H(t),a+='<div class="form-group field-options">',a+='<label class="false-label">'+o.messages.selectOptions+"</label>",a+='<div class="sortable-options-wrap">',"select"===t.type&&(a+='<div class="allow-multi">',a+='<input type="checkbox" id="multiple_'+d+'" name="multiple"'+(t.multiple?'checked="checked"':"")+">",a+='<label class="multiple" for="multiple_'+d+'">'+o.messages.selectionsMessage+"</label>",a+="</div>"),a+='<ol class="sortable-options">',v=0;v<t.values.length;v++)a+=U(t.name,t.values[v],t.values[v].selected,t.multiple);a+="</ol>";var l=c.markup("a",o.messages.addOption,{className:"add add-opt"});a+=c.markup("div",l,{className:"option-actions"}).outerHTML,a+="</div>",a+="</div>",R(o.messages.select,a,t),e(".sortable-options").sortable()},D=function(e){var t={select:$,"rich-text":L,textarea:L,"radio-group":$,"checkbox-group":$};e=e||"",t[e.type]?t[e.type](e):q(e)},H=function W(e){var t,W=[],a="",l=void 0!==e.role?e.role.split(","):[];W.push(j("label",e)),e.size=e.size||"m",e.style=e.style||"default",W.push(F(e)),W.push(B(e)),W.push(_(e.style,e.type)),W.push(j("placeholder",e)),W.push(j("className",e)),W.push(j("name",e)),W.push('<div class="form-group access-wrap"><label>'+o.messages.roles+"</label>"),W.push('<input type="checkbox" name="enable_roles" value="" '+(void 0!==e.role?"checked":"")+' id="enable_roles-'+d+'"/> <label for="enable_roles-'+d+'" class="roles-label">'+o.messages.limitRole+"</label>"),W.push('<div class="available-roles" '+(void 0!==e.role?'style="display:block"':"")+">");for(t in o.roles)o.roles.hasOwnProperty(t)&&(a=c.inArray(t,l)?"checked":"",W.push('<input type="checkbox" name="roles[]" value="'+t+'" id="fld-'+d+"-roles-"+t+'" '+a+' class="roles-field" /><label for="fld-'+d+"-roles-"+t+'">'+o.roles[t]+"</label><br/>"));return W.push("</div></div>"),"checkbox-group"!==e.type&&"radio-group"!==e.type||(W.push('<div class="form-group other-wrap"><label>'+o.messages.enableOther+"</label>"),W.push('<input type="checkbox" name="enable-other" value="" '+(void 0!==e.other?"checked":"")+' id="enable-other-'+d+'"/> <label for="enable-other-'+d+'" class="other-label">'+o.messages.enableOtherMsg+"</label></div>")),W.push(j("maxlength",e)),W.join("")},F=function(e){var t=["header","paragraph","button"],a=[],l="";if(t=t.concat(o.messages.subtypes.header,o.messages.subtypes.paragraph),-1===t.indexOf(e.type)&&a.push(!0),a.some(function(e){return e===!0})){var s=c.markup("label",o.messages.description,{"for":"description-"+d}),r=c.markup("input",null,{type:"text",className:"fld-description form-control",name:"description",id:"description-"+d,value:e.description}),n=c.markup("div",[s,r],{"class":"form-group description-wrap"});l=n.outerHTML}return l},B=function Q(e){var t=o.messages.subtypes,a=e.type,l=e.subtype||"",Q="",s=void 0;if(t[a]){var r="<label>"+o.messages.subtype+"</label>";Q+='<select name="subtype" class="fld-subtype form-control" id="subtype-'+d+'">',t[a].forEach(function(e){s=l===e?"selected":"",Q+='<option value="'+e+'" '+s+">"+e+"</option>"}),Q+="</select>",Q='<div class="form-group subtype-wrap">'+r+" "+Q+"</div>"}return Q},_=function(e,t){var a={button:"btn"},l=o.messages.styles[a[t]],s="";if(l){var r="<label>"+o.messages.style+"</label>";s+='<input value="'+e+'" name="style" type="hidden" class="btn-style">',s+='<div class="btn-group" role="group">',Object.keys(o.messages.styles[a[t]]).forEach(function(l){var r=e===l?"active":"";s+='<button value="'+l+'" type="'+t+'" class="'+r+" btn-xs "+a[t]+" "+a[t]+"-"+l+'">'+o.messages.styles[a[t]][l]+"</button>"}),s+="</div>",s='<div class="form-group style-wrap">'+r+" "+s+"</div>"}return s},j=function(e,t){var a=["text","textarea","select"],l=["header"],s=["paragraph"],r=["checkbox","select","checkbox-group","date","autocomplete","radio-group","hidden","button","header"],n="label"===e?t.label:t[e]||"",i=o.messages[e];"label"===e&&c.inArray(t.type,s)&&(i=o.messages.content),l=l.concat(o.messages.subtypes.header,s),r=r.concat(s);var u=o.messages.placeholders,p=u[e]||"",m="",f=[];if("placeholder"!==e||c.inArray(t.type,a)||f.push(!0),"name"===e&&c.inArray(t.type,l)&&f.push(!0),"maxlength"===e&&c.inArray(t.type,r)&&f.push(!0),!f.some(function(e){return e===!0})){var v="<label>"+i+"</label>";m+="label"===e&&c.inArray(t.type,s)?'<textarea name="'+e+'" placeholder="'+p+'" class="fld-'+e+' form-control" id="'+e+"-"+d+'">'+n+"</textarea>":'<input type="text" value="'+n+'" name="'+e+'" placeholder="'+p+'" class="fld-'+e+' form-control" id="'+e+"-"+d+'">',m='<div class="form-group '+e+'-wrap">'+v+" "+m+"</div>"}return m},P=function(e){var t=["header","paragraph","button"],a=[],l="";if(c.inArray(e.type,t)&&a.push(!0),!a.some(function(e){return e===!0})){l+='<div class="form-group">',l+="<label> </label>";var s=c.markup("input",null,{className:"required",type:"checkbox",name:"required-"+d,id:"required-"+d,value:1});s.defaultChecked=e.required,l+=s.outerHTML,l+=c.markup("label",o.messages.required,{className:"required-label","for":"required-"+d}).outerHTML,l+="</div>"}return l},R=function(t,a,l){var s=e(a).find('input[name="label"]').val(),r=s?s:t,n=c.markup("a",o.messages.remove,{id:"del_"+d,className:"del-button btn delete-confirm",title:o.messages.removeMessage}),u=c.markup("a",null,{ 31 31 id:d+"-edit",className:"toggle-form btn icon-pencil",title:o.messages.hide}),p=l.required,m=l.toggle||void 0,f=""!==l.description?'<span class="tooltip-element" tooltip="'+l.description+'">?</span>':"",v=c.markup("div",[u,n],{className:"field-actions"}).outerHTML;v+='<label class="field-label">'+r+"</label>"+f+'<span class="required-asterisk" '+(p?'style="display:inline"':"")+"> *</span>",v+=c.markup("div","",{className:"prev-holder"}).outerHTML,v+='<div id="'+d+'-holder" class="frm-holder">',v+='<div class="form-elements">',v+=P(l),"checkbox"===l.type&&(v+='<div class="form-group">',v+="<label> </label>",v+='<input class="checkbox-toggle" type="checkbox" value="1" name="toggle-'+d+'" id="toggle-'+d+'"'+("true"===m?" checked":"")+' /><label class="toggle-label" for="toggle-'+d+'">'+o.messages.toggle+"</label>",v+="</div>"),v+=a,v+=c.markup("a",o.messages.close,{className:"close-field"}).outerHTML,v+="</div>",v+="</div>";var h=c.markup("li",v,{"class":l.type+"-field form-field",type:l.type,id:d}),g=e(h);g.data("fieldData",{attrs:l}),"undefined"!=typeof c.stopIndex?e("> li",i).eq(c.stopIndex).after(g):i.append(g),c.updatePreview(g),e(document.getElementById("frm-"+d+"-item")).hide().slideDown(250),d=c.incrementId(d)},U=function(t,a,l,s){var r={selected:s?"checkbox":"radio"},n={selected:l,label:"",value:""},i=e.extend({},n,a),d=[];for(var u in i)if(i.hasOwnProperty(u)){var p={type:r[u]||"text","class":"option-"+u,placeholder:o.messages.placeholders[u],value:i[u],name:t},m=c.markup("input",null,p);"selected"===u&&(m.checked=i.selected),d.push(m)}var f={className:"remove btn",title:o.messages.removeMessage};d.push(c.markup("a",o.messages.remove,f));var v=c.markup("li",d);return v.outerHTML};i.on("click touchstart",".remove",function(t){var a=e(this).parents(".form-field:eq(0)");t.preventDefault();var l=e(this).parents(".sortable-options:eq(0)").children("li").length;2>=l?o.notify.error("Error: "+o.messages.minOptionMessage):e(this).parent("li").slideUp("250",function(){e(this).remove(),c.updatePreview(a),c.save()})}),i.on("touchstart","input",function(t){if(t.handled===!0)return!1;if("checkbox"===e(this).attr("type"))e(this).trigger("click");else{e(this).focus();var a=e(this).val();e(this).val(a)}}),i.on("click touchstart",".toggle-form, .close-field",function(t){if(t.stopPropagation(),t.preventDefault(),t.handled===!0)return!1;var a=e(this).parents(".form-field:eq(0)").attr("id");c.toggleEdit(a),t.handled=!0}),c.toggleEdit=function(t){var a=document.getElementById(t),l=e(".toggle-form",a),s=e(".frm-holder",a);a.classList.toggle("editing"),l.toggleClass("open"),e(".prev-holder",a).slideToggle(250),s.slideToggle(250)},i.on("keyup change",'[name="label"]',function(){e(".field-label",e(this).closest("li")).text(e(this).val())}),i.delegate("input.error","keyup",function(){e(this).removeClass("error")}),i.on("keyup",'input[name="description"]',function(){var t=e(this).parents(".form-field:eq(0)"),a=e(".tooltip-element",t),l=e(this).val();if(""!==l)if(a.length)a.attr("tooltip",l).css("display","inline-block");else{var s='<span class="tooltip-element" tooltip="'+l+'">?</span>';e(".field-label",t).after(s)}else a.length&&a.css("display","none")}),c.updateMultipleSelect(),i.delegate('input[name="name"]',"blur",function(){e(this).val(c.safename(e(this).val())),""===e(this).val()?e(this).addClass("field_error").attr("placeholder",o.messages.cannotBeEmpty):e(this).removeClass("field_error")}),i.delegate("input.fld-maxlength","blur",function(){e(this).val(c.forceNumber(e(this).val()))}),i.on("click touchstart",".delete-confirm",function(t){t.preventDefault();var a=this.getBoundingClientRect(),l=document.body.getBoundingClientRect(),s={pageX:a.left+a.width/2,pageY:a.top-l.top-12},r=e(this).parents(".form-field:eq(0)").attr("id"),n=e(document.getElementById(r)),d=function(){n.slideUp(250,function(){n.removeClass("deleting"),n.remove(),c.save(),i[0].childNodes.length||N.addClass("empty").attr("data-content",o.messages.getStarted)})};if(document.addEventListener("modalClosed",function(){n.removeClass("deleting")},!1),o.fieldRemoveWarn){var u=c.markup("h3",o.messages.warning),p=c.markup("p",o.messages.fieldRemoveWarning);c.confirm([u,p],d,s),n.addClass("deleting")}else d(n)}),i.on("click",".style-wrap button",function(){var t=e(this).val(),a=e(this).parent(),l=a.prev(".btn-style");l.val(t),e(this).siblings(".btn").removeClass("active"),e(this).addClass("active"),C.call(a)}),i.on("click","input.required",function(){var t=e(this).parents("li.form-field").find(".required-asterisk");t.toggle()}),i.on("click",'input[name="enable_roles"]',function(){var t=e(this).siblings("div.available-roles"),a=e(this);t.slideToggle(250,function(){a.is(":checked")||e('input[type="checkbox"]',t).removeAttr("checked")})}),i.on("click",".add-opt",function(t){t.preventDefault();var a=e(this).parents(".field-options:eq(0)"),l=e('[name="multiple"]',a),s=e(".option-selected:eq(0)",a),o=!1;o=l.length?l.prop("checked"):"checkbox"===s.attr("type");var r=s.attr("name");e(".sortable-options",a).append(U(r,!1,!1,o)),c.updateMultipleSelect()}),i.on("mouseover mouseout",".remove, .del-button",function(){e(this).parents("li:eq(0)").toggleClass("delete")});var z=e(document.getElementById(n+"-view-data"));z.click(function(e){e.preventDefault();var t=c.htmlEncode(r.val()),a=c.markup("code",t,{className:"xml"}),l=c.markup("pre",a);c.dialog(l,null,"data-dialog")});var X=e(document.getElementById(n+"-clear-all"));return X.click(function(){var t=e("li.form-field"),a=this.getBoundingClientRect(),l=document.body.getBoundingClientRect(),s={pageX:a.left+a.width/2,pageY:a.top-l.top-12};t.length?c.confirm(o.messages.clearAllMessage,function(){c.removeAllfields(),o.notify.success(o.messages.allFieldsRemoved),c.save()},s):c.dialog("There are no fields to clear",{pageX:s.pageX,pageY:s.pageY})}),e(document.getElementById(n+"-save")).click(function(e){e.preventDefault(),c.save(),c.validateForm(e)}),r.parent().find('p[id*="ideaTemplate"]').remove(),r.wrap('<div class="template-textarea-wrap"/>'),M(),i.css("min-height",f.height()),document.dispatchEvent(l.events.loaded),l};e.fn.formBuilder=function(a){return this.each(function(){var l,s=this;if(e(s).data("formBuilder")){var o=e(s).parents(".form-builder:eq(0)");o.before(s),o.remove(),l=new t(a,s),e(s).data("formBuilder",l)}else l=new t(a,s),e(s).data("formBuilder",l)})}}(jQuery),function(e){e.fn.toXML=function(t){var a="",l=function(a){var l=[];return e(".sortable-options li",a).each(function(){var a=e(this),s={value:e(".option-value",a).val(),selected:e(".option-selected",a).is(":checked")},o=t.markup("option",e(".option-label",a).val(),s).outerHTML;l.push("\n "+o)}),l.join("")+"\n "};return this.each(function(){var s=this;s.childNodes.length>=1&&(a+="<form-template>\n <fields>",t.forEach(s.childNodes,function(s,o){s=s;var r=e(o),n=r.data("fieldData");if(!r.hasClass("disabled")){var i=e(".roles-field:checked",o).map(function(){return this.value}).get(),c=e('[name="enable-other"]:checked',o).length,d=t.getTypes(r),u={className:n.className,description:e("input.fld-description",r).val(),label:e(".fld-label",r).val(),maxlength:e("input.fld-maxlength",r).val(),multiple:e('input[name="multiple"]',r).is(":checked"),name:e("input.fld-name",r).val(),placeholder:e("input.fld-placeholder",r).val(),required:e("input.required",r).is(":checked"),toggle:e(".checkbox-toggle",r).is(":checked"),type:d.type,subtype:d.subtype};i.length&&(u.role=i.join(",")),c&&(u.enableOther="true"),u=t.trimAttrs(u),u=t.escapeAttrs(u);var p,m=u.type.match(/(select|checkbox-group|radio-group)/),f="";m&&(f=l(r)),p=t.markup("field",f,u),a+="\n "+p.outerHTML}}),a+="\n </fields>\n</form-template>")}),a}}(jQuery),"function"!=typeof Object.assign&&!function(){Object.assign=function(e){if(void 0===e||null===e)throw new TypeError("Cannot convert undefined or null to object");for(var t=Object(e),a=1;a<arguments.length;a++){var l=arguments[a];if(void 0!==l&&null!==l)for(var s in l)l.hasOwnProperty(s)&&(t[s]=l[s])}return t}}(),"remove"in Element.prototype||(Element.prototype.remove=function(){this.parentNode&&this.parentNode.removeChild(this)}),"function"!=typeof Event&&!function(){window.Event=function(e){var t=document.createEvent("Event");return t.initEvent(e,!0,!0),t}}(); 32 32 //# sourceMappingURL=form-builder.min.js.map -
contact-form-ready/trunk/js/user.js
r2190532 r3049139 1 1 var within_wplc = false; 2 if(! invisible_recaptcha_options.invisible_recaptcha_enabled){2 if(!wpcf_localized_client.invisible_recaptcha_options.invisible_recaptcha_enabled){ 3 3 var recaptcha_can_continue = new Array(); 4 4 var recaptcha_loaded = new Array(); … … 23 23 24 24 var current_cfid = jQuery(this).attr('cfid'); 25 if( invisible_recaptcha_options.invisible_recaptcha_enabled){25 if(wpcf_localized_client.invisible_recaptcha_options.invisible_recaptcha_enabled){ 26 26 /* set true to default (when reCaptcha is not enabled */ 27 27 invisible_recaptcha_can_continue[current_cfid] = true; … … 30 30 jQuery(".wpcf_nd_submit").addClass("g-recaptcha"); 31 31 invisible_recaptcha_widgets[current_cfid] = grecaptcha.render('wpcf_g_recaptcha_'+current_cfid, { 32 'sitekey' : invisible_recaptcha_options.wpcf_invisible_recaptcha_api,32 'sitekey' : wpcf_localized_client.invisible_recaptcha_options.wpcf_invisible_recaptcha_api, 33 33 'callback' : wpcf_verifyCallback_invisible, 34 34 }); … … 159 159 } 160 160 161 if(! invisible_recaptcha_options.invisible_recaptcha_enabled){161 if(!wpcf_localized_client.invisible_recaptcha_options.invisible_recaptcha_enabled){ 162 162 jQuery("body").on("click", "#wp-live-chat-inner #wpcf_nd_submit", function(e) { 163 163 var cfid = jQuery(this).attr('cfid'); … … 191 191 192 192 if( validation_errors === 0 ) { 193 jQuery(this).val(wpcf_ nd_ajax_sending);193 jQuery(this).val(wpcf_localized_client.wpcf_nd_ajax_sending); 194 194 195 195 jQuery("#wp-live-chat-inner #wpcf_nd_submit").attr('disabled', 'disabled'); … … 204 204 205 205 formData.append('action', 'wpcf_nd_send_ajax'); 206 formData.append('security', wpcf_ nd_nonce);206 formData.append('security', wpcf_localized_client.wpcf_nd_nonce); 207 207 jQuery.ajax({ 208 url: wpcf_ nd_ajaxurl,208 url: wpcf_localized_client.wpcf_nd_ajaxurl, 209 209 type: 'POST', 210 210 data: formData, … … 219 219 } else { 220 220 221 if (typeof wpcf_ nd_ajax_thank_you !== "undefined") {222 jQuery(".wpcf_nd_" + cfid).html("<div class='wpcf-nd-thank-you'>" + wpcf_ nd_ajax_thank_you + "</div>");221 if (typeof wpcf_localized_client.wpcf_nd_ajax_thank_you !== "undefined") { 222 jQuery(".wpcf_nd_" + cfid).html("<div class='wpcf-nd-thank-you'>" + wpcf_localized_client.wpcf_nd_ajax_thank_you + "</div>"); 223 223 } else { 224 224 jQuery(".wpcf_nd_" + cfid).html("<div class='wpcf-nd-thank-you'>Thank you for your message. We will respond to you as soon as possible.</div>"); … … 242 242 if (recaptcha_can_continue[cfid]) { 243 243 244 if (typeof wpcf_nd_form_ type !== "undefined" &&wpcf_nd_form_type == '1' && !within_wplc) {244 if (typeof wpcf_nd_form_localize.wpcf_nd_form_type !== "undefined" && wpcf_nd_form_localize.wpcf_nd_form_type == '1' && !within_wplc) { 245 245 e.preventDefault(); 246 246 var orig_element = this; … … 267 267 268 268 var orig_elem_string = jQuery(this).val(); 269 jQuery(this).val(wpcf_ nd_ajax_sending);269 jQuery(this).val(wpcf_localized_client.wpcf_nd_ajax_sending); 270 270 jQuery(orig_element).attr('disabled', 'disabled'); 271 271 … … 279 279 280 280 formData.append('action', 'wpcf_nd_send_ajax'); 281 formData.append('security', wpcf_ nd_nonce);281 formData.append('security', wpcf_localized_client.wpcf_nd_nonce); 282 282 283 283 jQuery.ajax({ 284 url : wpcf_ nd_ajaxurl,284 url : wpcf_localized_client.wpcf_nd_ajaxurl, 285 285 type : 'POST', 286 286 data : formData, … … 294 294 jQuery(orig_element).val(orig_elem_string); 295 295 } else { 296 if (typeof wpcf_ nd_ajax_thank_you !== "undefined") {297 jQuery(".wpcf_nd_"+cfid).html("<div class='wpcf-nd-thank-you'>"+wpcf_ nd_ajax_thank_you+"</div>");296 if (typeof wpcf_localized_client.wpcf_nd_ajax_thank_you !== "undefined") { 297 jQuery(".wpcf_nd_"+cfid).html("<div class='wpcf-nd-thank-you'>"+wpcf_localized_client.wpcf_nd_ajax_thank_you+"</div>"); 298 298 } else { 299 299 jQuery(".wpcf_nd_"+cfid).html("<div class='wpcf-nd-thank-you'>Thank you for your message. We will respond to you as soon as possible.</div>"); 300 300 } 301 if (typeof wpcf_nd_form_ redirect !== "undefined") {302 window.location = wpcf_nd_form_ redirect;301 if (typeof wpcf_nd_form_localize.wpcf_nd_form_redirect !== "undefined") { 302 window.location = wpcf_nd_form_localize.wpcf_nd_form_redirect; 303 303 } 304 304 } … … 326 326 if (invisible_recaptcha_can_continue[cfid]) { 327 327 328 if (typeof wpcf_nd_form_ type !== "undefined" &&wpcf_nd_form_type == '1' && !within_wplc) {328 if (typeof wpcf_nd_form_localize.wpcf_nd_form_type !== "undefined" && wpcf_nd_form_localize.wpcf_nd_form_type == '1' && !within_wplc) { 329 329 e.preventDefault(); 330 330 var orig_element = this; … … 351 351 352 352 var orig_elem_string = jQuery(this).val(); 353 jQuery(this).val(wpcf_ nd_ajax_sending);353 jQuery(this).val(wpcf_localized_client.wpcf_nd_ajax_sending); 354 354 jQuery(orig_element).attr('disabled', 'disabled'); 355 355 … … 363 363 364 364 formData.append('action', 'wpcf_nd_send_ajax'); 365 formData.append('security', wpcf_ nd_nonce);365 formData.append('security', wpcf_localized_client.wpcf_nd_nonce); 366 366 367 367 jQuery.ajax({ 368 url : wpcf_ nd_ajaxurl,368 url : wpcf_localized_client.wpcf_nd_ajaxurl, 369 369 type : 'POST', 370 370 data : formData, … … 378 378 jQuery(orig_element).val(orig_elem_string); 379 379 } else { 380 if (typeof wpcf_ nd_ajax_thank_you !== "undefined") {381 jQuery(".wpcf_nd_"+cfid).html("<div class='wpcf-nd-thank-you'>"+wpcf_ nd_ajax_thank_you+"</div>");380 if (typeof wpcf_localized_client.wpcf_nd_ajax_thank_you !== "undefined") { 381 jQuery(".wpcf_nd_"+cfid).html("<div class='wpcf-nd-thank-you'>"+wpcf_localized_client.wpcf_nd_ajax_thank_you+"</div>"); 382 382 } else { 383 383 jQuery(".wpcf_nd_"+cfid).html("<div class='wpcf-nd-thank-you'>Thank you for your message. We will respond to you as soon as possible.</div>"); 384 384 } 385 if (typeof wpcf_nd_form_ redirect !== "undefined") {386 window.location = wpcf_nd_form_ redirect;385 if (typeof wpcf_nd_form_localize.wpcf_nd_form_redirect !== "undefined") { 386 window.location = wpcf_nd_form_localize.wpcf_nd_form_redirect; 387 387 } 388 388 } … … 404 404 if (invisible_recaptcha_can_continue[cfid]) { 405 405 406 if (typeof wpcf_nd_form_ type !== "undefined" &&wpcf_nd_form_type == '1' && !within_wplc) {406 if (typeof wpcf_nd_form_localize.wpcf_nd_form_type !== "undefined" && wpcf_nd_form_localize.wpcf_nd_form_type == '1' && !within_wplc) { 407 407 e.preventDefault(); 408 408 var orig_element = this; … … 429 429 430 430 var orig_elem_string = jQuery(this).val(); 431 jQuery(this).val(wpcf_ nd_ajax_sending);431 jQuery(this).val(wpcf_localized_client.wpcf_nd_ajax_sending); 432 432 jQuery(orig_element).attr('disabled', 'disabled'); 433 433 … … 441 441 442 442 formData.append('action', 'wpcf_nd_send_ajax'); 443 formData.append('security', wpcf_ nd_nonce);443 formData.append('security', wpcf_localized_client.wpcf_nd_nonce); 444 444 445 445 jQuery.ajax({ 446 url : wpcf_ nd_ajaxurl,446 url : wpcf_localized_client.wpcf_nd_ajaxurl, 447 447 type : 'POST', 448 448 data : formData, … … 456 456 jQuery(orig_element).val(orig_elem_string); 457 457 } else { 458 if (typeof wpcf_ nd_ajax_thank_you !== "undefined") {459 jQuery(".wpcf_nd_"+cfid).html("<div class='wpcf-nd-thank-you'>"+wpcf_ nd_ajax_thank_you+"</div>");458 if (typeof wpcf_localized_client.wpcf_nd_ajax_thank_you !== "undefined") { 459 jQuery(".wpcf_nd_"+cfid).html("<div class='wpcf-nd-thank-you'>"+wpcf_localized_client.wpcf_nd_ajax_thank_you+"</div>"); 460 460 } else { 461 461 jQuery(".wpcf_nd_"+cfid).html("<div class='wpcf-nd-thank-you'>Thank you for your message. We will respond to you as soon as possible.</div>"); 462 462 } 463 if (typeof wpcf_nd_form_ redirect !== "undefined") {464 window.location = wpcf_nd_form_ redirect;463 if (typeof wpcf_nd_form_localize.wpcf_nd_form_redirect !== "undefined") { 464 window.location = wpcf_nd_form_localize.wpcf_nd_form_redirect; 465 465 } 466 466 } -
contact-form-ready/trunk/js/wpcf_tabs.js
r2230921 r3049139 1 jQuery("document").ready(function(){ 2 jQuery( "#sola_cfr_tabs" ).tabs({ active: 0 }); 1 jQuery(function(){ 2 3 jQuery(document).ready(function(){ 4 jQuery( "#sola_cfr_tabs" ).tabs({ active: 0 }); 5 }); 6 7 jQuery('#GDPR_privacy_settings_button').on('click', function(){ 8 jQuery('.wpcf_gdpr_notice').hide(); 9 jQuery('.ui-tabs-nav #ui-id-4').trigger('click'); 10 }); 11 12 jQuery("body").on("click", '.ui-tabs-nav li', function(){ 13 var tabId = jQuery(this).attr('aria-controls'); 14 tabId = tabId.replace('tabs-', ''); 15 tabId = parseInt(tabId); 16 switch(tabId){ 17 case 4: 18 jQuery('.wpcf_gdpr_notice').hide(); 19 break; 20 default: 21 jQuery('.wpcf_gdpr_notice').show(); 22 break; 23 } 24 }); 25 3 26 }); -
contact-form-ready/trunk/readme.txt
r2230921 r3049139 5 5 Requires at least: 3.8 6 6 Requires PHP: 5.3 7 Tested up to: 5.38 Stable tag: trunk7 Tested up to: 6.5 8 Stable tag: 2.0.12 9 9 License: GPLv3 10 10 License URI: http://www.gnu.org/licenses/gpl-3.0.html … … 165 165 166 166 == Upgrade notice == 167 Nothing here 167 168 = 2.0.12 = 169 Please update to 2.0.12 or above or above to ensure you are using the latest security enhancements. 168 170 169 171 == Changelog == 172 173 = 2.0.12 - 2024-03-12 = 174 * Enhancement: Rebuilt gutenberg block modules to bring up to specification with latest WordPress guidelines 175 * Enhancement: PHP8+ compatibility added, first phase of updates 176 * Bug Fix: Fixed security issue with styling page due to missing nonce checks. Thanks Nguyen Xuan Chien (Patchstack) 177 * Bug Fix: Fixed security issue with settings page due to missing nonce checks. Thanks Nguyen Xuan Chien (Patchstack) 178 * Bug Fix: Improved settings/styling storage security by enforcing a user access check 179 * Bug Fix: Fixed issue with wp_localize_script usage for reset string localization 180 * Bug Fix: Fixed issue with wp_localize_script usage for demo form structure localization 181 * Bug Fix: Fixed issues with accessing arrays that may not be defined/stored 182 * Bug Fix: Fixed issues with REST API registration calls not being up to specification, missing permission callback 183 * Bug Fix: Standardized localizers to group common strings within an object, instead of making multiple localization calls 184 * Bug Fix: Fixed issue where form structures were not storing correctly 185 * Bug Fix: Improved sanitization and escaping workflows throughout the plugin core code 186 * Bug Fix: Fixed JSON parser issues in user.js 187 * Bug Fix: Disabled welcome notice, and subsequently feature vote system. No longer active, and caused issues 188 * General: Tested on WordPress 6.5 189 * General: Readme brought up to specification 190 191 = 2.0.11 - 2020-11-30 = 192 * Tested on WordPress 5.5.3 193 * Modernized admin areas 194 * Added custom secure REST endpoint – ‘get_forms’ 195 * Added REST API tab in Settings 196 * Added Live Preview on Styling tab 197 * Added Dark Mode feature for Live Preview on Styling tab 198 * Added Custom CSS feature 199 * Bug Fix: Fixed a bug that prevented extension settings from displaying 200 * Bug Fix: Fixed GDPR warning buttons and links 201 * Bug Fix: Fixed a bug that prevented custom stylings on front end 202 * Bug Fix: Fixed various styling issues 203 * Bug Fix: Fixed various bugs 204 170 205 171 206 = 2.0.10 - 2020-01-21 = -
contact-form-ready/trunk/templates/mail_template.html
r1882463 r3049139 2 2 <html> 3 3 <body> 4 <table id="" border="0" cellpadding="0" cellspacing="0" width="100%" style="background-color: #F8F8F8; color:#333;"> 4 <table id="" border="0" cellpadding="0" cellspacing="0" width="100%" style="background-color: #F8F8F8; color:#333;"> 5 5 <tbody> 6 6 <tr>
Note: See TracChangeset
for help on using the changeset viewer.