Changeset 3233179
- Timestamp:
- 02/01/2025 05:14:33 PM (14 months ago)
- Location:
- hcaptcha-for-forms-and-more
- Files:
-
- 14 added
- 110 edited
- 1 copied
-
tags/4.10.0 (copied) (copied from hcaptcha-for-forms-and-more/trunk)
-
tags/4.10.0/assets/css/events.css (modified) (2 diffs)
-
tags/4.10.0/assets/css/events.min.css (modified) (1 diff)
-
tags/4.10.0/assets/css/forms.css (modified) (2 diffs)
-
tags/4.10.0/assets/css/forms.min.css (modified) (1 diff)
-
tags/4.10.0/assets/css/settings-base.css (modified) (8 diffs)
-
tags/4.10.0/assets/css/settings-base.min.css (modified) (1 diff)
-
tags/4.10.0/assets/css/settings-list-page-base.css (modified) (1 diff)
-
tags/4.10.0/assets/css/settings-list-page-base.min.css (modified) (1 diff)
-
tags/4.10.0/assets/js/apps/hcaptcha.js (modified) (1 diff)
-
tags/4.10.0/assets/js/events.js (modified) (2 diffs)
-
tags/4.10.0/assets/js/events.min.js (modified) (1 diff)
-
tags/4.10.0/assets/js/forms.js (modified) (1 diff)
-
tags/4.10.0/assets/js/forms.min.js (modified) (1 diff)
-
tags/4.10.0/assets/js/general.js (modified) (3 diffs)
-
tags/4.10.0/assets/js/general.min.js (modified) (1 diff)
-
tags/4.10.0/assets/js/hcaptcha-auto-verify.js (added)
-
tags/4.10.0/assets/js/hcaptcha-auto-verify.min.js (added)
-
tags/4.10.0/assets/js/integrations.js (modified) (4 diffs)
-
tags/4.10.0/assets/js/integrations.min.js (modified) (1 diff)
-
tags/4.10.0/assets/js/settings-base.js (modified) (3 diffs)
-
tags/4.10.0/assets/js/settings-base.min.js (modified) (1 diff)
-
tags/4.10.0/assets/js/settings-list-page-base.js (modified) (2 diffs)
-
tags/4.10.0/assets/js/settings-list-page-base.min.js (modified) (1 diff)
-
tags/4.10.0/changelog.txt (modified) (1 diff)
-
tags/4.10.0/hcaptcha.php (modified) (3 diffs)
-
tags/4.10.0/readme.txt (modified) (5 diffs)
-
tags/4.10.0/src/php/Abstracts/LoginBase.php (modified) (1 diff)
-
tags/4.10.0/src/php/Admin/Events/Events.php (modified) (1 diff)
-
tags/4.10.0/src/php/Admin/Events/EventsTable.php (modified) (8 diffs)
-
tags/4.10.0/src/php/Admin/Events/FormsTable.php (modified) (6 diffs)
-
tags/4.10.0/src/php/Admin/Events/TableBase.php (added)
-
tags/4.10.0/src/php/AutoVerify/AutoVerify.php (modified) (12 diffs)
-
tags/4.10.0/src/php/CACSP (added)
-
tags/4.10.0/src/php/CACSP/Compatibility.php (added)
-
tags/4.10.0/src/php/ClassifiedListing/Login.php (modified) (2 diffs)
-
tags/4.10.0/src/php/GravityForms/Base.php (modified) (1 diff)
-
tags/4.10.0/src/php/GravityForms/Form.php (modified) (7 diffs)
-
tags/4.10.0/src/php/Helpers/DB.php (added)
-
tags/4.10.0/src/php/Helpers/HCaptcha.php (modified) (8 diffs)
-
tags/4.10.0/src/php/LearnPress/Login.php (modified) (3 diffs)
-
tags/4.10.0/src/php/LearnPress/Register.php (modified) (1 diff)
-
tags/4.10.0/src/php/Main.php (modified) (4 diffs)
-
tags/4.10.0/src/php/ProfileBuilder/Login.php (modified) (1 diff)
-
tags/4.10.0/src/php/Sendinblue/Sendinblue.php (modified) (1 diff)
-
tags/4.10.0/src/php/Settings/EventsPage.php (modified) (8 diffs)
-
tags/4.10.0/src/php/Settings/FormsPage.php (modified) (7 diffs)
-
tags/4.10.0/src/php/Settings/General.php (modified) (3 diffs)
-
tags/4.10.0/src/php/Settings/Integrations.php (modified) (2 diffs)
-
tags/4.10.0/src/php/Settings/ListPageBase.php (modified) (7 diffs)
-
tags/4.10.0/src/php/Tutor/Login.php (modified) (2 diffs)
-
tags/4.10.0/src/php/WP/Comment.php (modified) (1 diff)
-
tags/4.10.0/src/php/WP/Login.php (modified) (1 diff)
-
tags/4.10.0/src/php/WP/LoginOut.php (added)
-
tags/4.10.0/src/php/WPForms/Form.php (modified) (1 diff)
-
tags/4.10.0/src/php/includes/functions.php (modified) (2 diffs)
-
tags/4.10.0/src/php/includes/request.php (modified) (3 diffs)
-
tags/4.10.0/vendor/autoload.php (modified) (1 diff)
-
tags/4.10.0/vendor/composer/InstalledVersions.php (modified) (4 diffs)
-
tags/4.10.0/vendor/composer/autoload_classmap.php (modified) (4 diffs)
-
tags/4.10.0/vendor/composer/autoload_real.php (modified) (2 diffs)
-
tags/4.10.0/vendor/composer/autoload_static.php (modified) (6 diffs)
-
tags/4.10.0/vendor/composer/installed.php (modified) (2 diffs)
-
trunk/assets/css/events.css (modified) (2 diffs)
-
trunk/assets/css/events.min.css (modified) (1 diff)
-
trunk/assets/css/forms.css (modified) (2 diffs)
-
trunk/assets/css/forms.min.css (modified) (1 diff)
-
trunk/assets/css/settings-base.css (modified) (8 diffs)
-
trunk/assets/css/settings-base.min.css (modified) (1 diff)
-
trunk/assets/css/settings-list-page-base.css (modified) (1 diff)
-
trunk/assets/css/settings-list-page-base.min.css (modified) (1 diff)
-
trunk/assets/js/apps/hcaptcha.js (modified) (1 diff)
-
trunk/assets/js/events.js (modified) (2 diffs)
-
trunk/assets/js/events.min.js (modified) (1 diff)
-
trunk/assets/js/forms.js (modified) (1 diff)
-
trunk/assets/js/forms.min.js (modified) (1 diff)
-
trunk/assets/js/general.js (modified) (3 diffs)
-
trunk/assets/js/general.min.js (modified) (1 diff)
-
trunk/assets/js/hcaptcha-auto-verify.js (added)
-
trunk/assets/js/hcaptcha-auto-verify.min.js (added)
-
trunk/assets/js/integrations.js (modified) (4 diffs)
-
trunk/assets/js/integrations.min.js (modified) (1 diff)
-
trunk/assets/js/settings-base.js (modified) (3 diffs)
-
trunk/assets/js/settings-base.min.js (modified) (1 diff)
-
trunk/assets/js/settings-list-page-base.js (modified) (2 diffs)
-
trunk/assets/js/settings-list-page-base.min.js (modified) (1 diff)
-
trunk/changelog.txt (modified) (1 diff)
-
trunk/hcaptcha.php (modified) (3 diffs)
-
trunk/readme.txt (modified) (5 diffs)
-
trunk/src/php/Abstracts/LoginBase.php (modified) (1 diff)
-
trunk/src/php/Admin/Events/Events.php (modified) (1 diff)
-
trunk/src/php/Admin/Events/EventsTable.php (modified) (8 diffs)
-
trunk/src/php/Admin/Events/FormsTable.php (modified) (6 diffs)
-
trunk/src/php/Admin/Events/TableBase.php (added)
-
trunk/src/php/AutoVerify/AutoVerify.php (modified) (12 diffs)
-
trunk/src/php/CACSP (added)
-
trunk/src/php/CACSP/Compatibility.php (added)
-
trunk/src/php/ClassifiedListing/Login.php (modified) (2 diffs)
-
trunk/src/php/GravityForms/Base.php (modified) (1 diff)
-
trunk/src/php/GravityForms/Form.php (modified) (7 diffs)
-
trunk/src/php/Helpers/DB.php (added)
-
trunk/src/php/Helpers/HCaptcha.php (modified) (8 diffs)
-
trunk/src/php/LearnPress/Login.php (modified) (3 diffs)
-
trunk/src/php/LearnPress/Register.php (modified) (1 diff)
-
trunk/src/php/Main.php (modified) (4 diffs)
-
trunk/src/php/ProfileBuilder/Login.php (modified) (1 diff)
-
trunk/src/php/Sendinblue/Sendinblue.php (modified) (1 diff)
-
trunk/src/php/Settings/EventsPage.php (modified) (8 diffs)
-
trunk/src/php/Settings/FormsPage.php (modified) (7 diffs)
-
trunk/src/php/Settings/General.php (modified) (3 diffs)
-
trunk/src/php/Settings/Integrations.php (modified) (2 diffs)
-
trunk/src/php/Settings/ListPageBase.php (modified) (7 diffs)
-
trunk/src/php/Tutor/Login.php (modified) (2 diffs)
-
trunk/src/php/WP/Comment.php (modified) (1 diff)
-
trunk/src/php/WP/Login.php (modified) (1 diff)
-
trunk/src/php/WP/LoginOut.php (added)
-
trunk/src/php/WPForms/Form.php (modified) (1 diff)
-
trunk/src/php/includes/functions.php (modified) (2 diffs)
-
trunk/src/php/includes/request.php (modified) (3 diffs)
-
trunk/vendor/autoload.php (modified) (1 diff)
-
trunk/vendor/composer/InstalledVersions.php (modified) (4 diffs)
-
trunk/vendor/composer/autoload_classmap.php (modified) (4 diffs)
-
trunk/vendor/composer/autoload_real.php (modified) (2 diffs)
-
trunk/vendor/composer/autoload_static.php (modified) (6 diffs)
-
trunk/vendor/composer/installed.php (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
hcaptcha-for-forms-and-more/tags/4.10.0/assets/css/events.css
r3166267 r3233179 49 49 } 50 50 51 @media (max-width: 600px) {51 @media (max-width: 782px) { 52 52 #hcaptcha-options #hcaptcha-events-wrap table tbody tr td { 53 53 padding-block-start: 3px; … … 55 55 padding-block-end: 3px; 56 56 padding-inline-start: 35%; 57 min-height: 19.5px; 57 58 } 58 59 -
hcaptcha-for-forms-and-more/tags/4.10.0/assets/css/events.min.css
r3166267 r3233179 1 #hcaptcha-options #hcaptcha-events-wrap table tbody tr td{padding:8px 10px}.hcaptcha-events-sample-bg{aspect-ratio:2882/1943;background-image:url(../images/events-page.png);background-position:50%;background-repeat:no-repeat;background-size:cover;box-sizing:border-box;filter:blur(1px);-webkit-filter:blur(1px);width:100%}.hcaptcha-events-sample-text{background-color:rgba(92,111,138,.8);border:3px solid #f0f2f5;color:#f0f2f5;left:50%;padding:20px;position:absolute;text-align:center;top:50%;transform:translate(-50%,-50%);width:80%;z-index:1}.hcaptcha-events-sample-text p{font-size:1.3em}#hcaptcha-options .hcaptcha-events-sample-text p a{color:#f0f2f5}#hcaptcha-events-chart{aspect-ratio:3/1;background-color:#fff;margin:auto;position:relative;width:100%}#hcaptcha-events-wrap #user_agent{width:220px}@media (max-width: 600px){#hcaptcha-options #hcaptcha-events-wrap table tbody tr td{padding-block-end:3px;padding-block-start:3px;padding-inline-end:8px;padding-inline-start:35%}#hcaptcha-options #hcaptcha-events-wrap table tbody tr td.column-primary{padding:3px 10px}}1 #hcaptcha-options #hcaptcha-events-wrap table tbody tr td{padding:8px 10px}.hcaptcha-events-sample-bg{aspect-ratio:2882/1943;background-image:url(../images/events-page.png);background-position:50%;background-repeat:no-repeat;background-size:cover;box-sizing:border-box;filter:blur(1px);-webkit-filter:blur(1px);width:100%}.hcaptcha-events-sample-text{background-color:rgba(92,111,138,.8);border:3px solid #f0f2f5;color:#f0f2f5;left:50%;padding:20px;position:absolute;text-align:center;top:50%;transform:translate(-50%,-50%);width:80%;z-index:1}.hcaptcha-events-sample-text p{font-size:1.3em}#hcaptcha-options .hcaptcha-events-sample-text p a{color:#f0f2f5}#hcaptcha-events-chart{aspect-ratio:3/1;background-color:#fff;margin:auto;position:relative;width:100%}#hcaptcha-events-wrap #user_agent{width:220px}@media (max-width:782px){#hcaptcha-options #hcaptcha-events-wrap table tbody tr td{min-height:19.5px;padding-block-end:3px;padding-block-start:3px;padding-inline-end:8px;padding-inline-start:35%}#hcaptcha-options #hcaptcha-events-wrap table tbody tr td.column-primary{padding:3px 10px}} -
hcaptcha-for-forms-and-more/tags/4.10.0/assets/css/forms.css
r3166267 r3233179 45 45 } 46 46 47 @media (max-width: 600px) {47 @media (max-width: 782px) { 48 48 #hcaptcha-options #hcaptcha-forms-wrap table tbody tr td { 49 49 padding-block-start: 3px; … … 51 51 padding-block-end: 3px; 52 52 padding-inline-start: 35%; 53 min-height: 19.5px; 53 54 } 54 55 -
hcaptcha-for-forms-and-more/tags/4.10.0/assets/css/forms.min.css
r3166267 r3233179 1 #hcaptcha-options #hcaptcha-forms-wrap table tbody tr td{padding:8px 10px}.hcaptcha-forms-sample-bg{aspect-ratio:2845/1637;background-image:url(../images/forms-page.png);background-position:50%;background-repeat:no-repeat;background-size:cover;box-sizing:border-box;filter:blur(1px);-webkit-filter:blur(1px);width:100%}.hcaptcha-forms-sample-text{background-color:rgba(92,111,138,.8);border:3px solid #f0f2f5;color:#f0f2f5;left:50%;padding:20px;position:absolute;text-align:center;top:50%;transform:translate(-50%,-50%);width:80%;z-index:1}.hcaptcha-forms-sample-text p{font-size:1.3em}#hcaptcha-options .hcaptcha-forms-sample-text p a{color:#f0f2f5}#hcaptcha-forms-chart{aspect-ratio:3/1;background-color:#fff;margin:auto;position:relative;width:100%}@media (max-width: 600px){#hcaptcha-options #hcaptcha-forms-wrap table tbody tr td{padding-block-end:3px;padding-block-start:3px;padding-inline-end:8px;padding-inline-start:35%}#hcaptcha-options #hcaptcha-forms-wrap table tbody tr td.column-primary{padding:3px 10px}}1 #hcaptcha-options #hcaptcha-forms-wrap table tbody tr td{padding:8px 10px}.hcaptcha-forms-sample-bg{aspect-ratio:2845/1637;background-image:url(../images/forms-page.png);background-position:50%;background-repeat:no-repeat;background-size:cover;box-sizing:border-box;filter:blur(1px);-webkit-filter:blur(1px);width:100%}.hcaptcha-forms-sample-text{background-color:rgba(92,111,138,.8);border:3px solid #f0f2f5;color:#f0f2f5;left:50%;padding:20px;position:absolute;text-align:center;top:50%;transform:translate(-50%,-50%);width:80%;z-index:1}.hcaptcha-forms-sample-text p{font-size:1.3em}#hcaptcha-options .hcaptcha-forms-sample-text p a{color:#f0f2f5}#hcaptcha-forms-chart{aspect-ratio:3/1;background-color:#fff;margin:auto;position:relative;width:100%}@media (max-width:782px){#hcaptcha-options #hcaptcha-forms-wrap table tbody tr td{min-height:19.5px;padding-block-end:3px;padding-block-start:3px;padding-inline-end:8px;padding-inline-start:35%}#hcaptcha-options #hcaptcha-forms-wrap table tbody tr td.column-primary{padding:3px 10px}} -
hcaptcha-for-forms-and-more/tags/4.10.0/assets/css/settings-base.css
r3215681 r3233179 54 54 position: sticky; 55 55 top: 60px; 56 z-index: 1;56 z-index: 2; 57 57 background: #f0f2f5; 58 58 display: flex; … … 87 87 } 88 88 89 #hcaptcha-options table tr td input[type="checkbox"] {89 #hcaptcha-options table tr td fieldset input[type="checkbox"] { 90 90 display: inline; 91 91 border: none; … … 99 99 } 100 100 101 #hcaptcha-options table tr td input[type="checkbox"]::before {101 #hcaptcha-options table tr td fieldset input[type="checkbox"]::before { 102 102 background: url('../images/checkbox-off.svg'); 103 103 background-size: cover; … … 109 109 } 110 110 111 #hcaptcha-options table tr td input[type="checkbox"]:checked::before {111 #hcaptcha-options table tr td fieldset input[type="checkbox"]:checked::before { 112 112 background: no-repeat url('../images/checkbox-on.svg'); 113 113 background-size: cover; … … 251 251 .hcaptcha-excerpt { 252 252 display: block; 253 position: relative; 254 width: max-content; 255 max-width: 100%; 253 256 overflow: hidden; 254 257 white-space: nowrap; 255 258 text-overflow: ellipsis; 259 } 260 261 .hcaptcha-excerpt:hover { 262 overflow: visible; 256 263 } 257 264 … … 265 272 width: max-content; 266 273 padding: 8px 10px; 267 top: 0; 268 inset-inline-start: 0; 274 top: 50%; 275 inset-inline-start: 50%; 276 transform: translate(-50%, -50%); 269 277 box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1); 270 278 border-radius: 6px; … … 275 283 276 284 @media (max-width: 782px) { 285 #hcaptcha-options .wp-list-table .toggle-row { 286 top: 15px; 287 } 288 289 #hcaptcha-options .wp-list-table tr.is-expanded .toggle-row { 290 top: 6.5px; 291 } 292 293 #hcaptcha-options .widefat tbody th.check-column { 294 padding: 0; 295 vertical-align: middle; 296 } 297 298 #hcaptcha-options .widefat thead td.check-column, .widefat tfoot td.check-column { 299 padding-left: 0; 300 } 301 302 #hcaptcha-options .widefat th input[type="checkbox"] { 303 margin-bottom: 0; 304 } 305 306 #hcaptcha-options .wp-list-table .is-expanded td:not(.hidden) { 307 overflow: visible; 308 } 309 277 310 .hcaptcha-settings-tabs { 278 311 margin: unset; … … 286 319 padding-inline-start: 10px; 287 320 } 321 322 .hcaptcha-excerpt { 323 display: table-cell; 324 vertical-align: middle; 325 height: 44px; 326 } 327 328 tr.is-expanded .hcaptcha-excerpt { 329 height: 19.5px; 330 } 288 331 } 289 332 -
hcaptcha-for-forms-and-more/tags/4.10.0/assets/css/settings-base.min.css
r3215681 r3233179 1 body.settings_page_hcaptcha{background:#f0f2f5;color:#5c6f8a}.wrap h1.hcaptcha-settings-header{align-items:center;display:flex;font-size:34px;font-weight:700}.hcaptcha-logo{height:64px;margin-block-end:10px;margin-block-start:10px;margin-inline-end:5px;margin-inline-start:0}.hcaptcha-settings-tabs{background:#fff;display:flex;flex-wrap:wrap;justify-content:space-between;line-height:4.5em;margin:10px -20px 0;padding:0 20px;position:sticky;top:0;z-index:2}.hcaptcha-settings-tab{border-bottom:2px solid transparent;color:#646970;display:inline-block;font-size:1.1em;margin-inline-end:30px;text-decoration:none}.hcaptcha-settings-tab:hover{border-bottom-color:#025176!important;border-bottom:2px solid;color:#666}.hcaptcha-settings-tab.active{border-bottom:2px solid #0075ab}.hcaptcha-header-bar{align-items:center;background:#f0f2f5;display:flex;justify-content:space-between;margin:0 -20px;padding:0 20px;position:sticky;top:60px;z-index: 1}#hcaptcha-options h2{color:#5c6f8a;font-size:1.5em}#hcaptcha-options h2~*{display:none}#hcaptcha-options h3{color:#5c6f8a;margin:1.5em 0 1em}#hcaptcha-options .notice-dismiss:before{color:#5c6f8a}#hcaptcha-options table tbody tr td{margin:0;padding:0;position:relative}#hcaptcha-options table tr td input[type=checkbox]{border:none;box-shadow:none;display:inline;height:1.25rem;margin-block-end:0;margin-block-start:-.125rem;margin-inline-end:.5rem;margin-inline-start:0;width:2.3611rem}#hcaptcha-options table tr td input[type=checkbox]:before{background:url(../images/checkbox-off.svg);background-size:cover;content:"";display:inline-block;height:1.25rem;margin:0;width:2.3611rem}#hcaptcha-options table tr td input[type=checkbox]:checked:before{background:no-repeat url(../images/checkbox-on.svg);background-size:cover}#hcaptcha-options fieldset:disabled{color:#dadada}#hcaptcha-options .button-primary{background-color:#026593;border-color:#026593;color:#fff}#hcaptcha-options .button-primary:hover{background-color:#025176}#hcaptcha-options .button-secondary{background-color:#fff;border-color:#026593;color:#026593}#hcaptcha-options .button-secondary:hover{background-color:#ccc}#hcaptcha-options a{color:#0075ab}#hcaptcha-navigation a{border-color:#0075ab}#hcaptcha-options a.hcaptcha-settings-tab{color:#5c6f8a}#hcaptcha-options .helper:before{background:#5c6f8a;border-radius:1.2em;color:#fff;content:"?";height:1.2em;inset-inline-end:0;position:absolute;text-align:center;top:0;transform:translateY(-27px);width:1.2em}#hcaptcha-options fieldset+.helper:before{top:50%;transform:translate(25px,-.7em)}.rtl #hcaptcha-options fieldset+.helper:before{transform:translate(-25px,-.8em)}#hcaptcha-options .helper .helper-content{background:#5c6f8a;box-sizing:border-box;color:#f0f2f5;display:none;inset-inline-end:0;padding:.5em 1em;position:absolute;top:0;transform:translate(1px,10px);width:100%}.rtl #hcaptcha-options .helper .helper-content{transform:translate(-1px,10px)}#hcaptcha-options fieldset+.helper .helper-content{top:50%;transform:translate(25px,25px);width:calc(100% + 25px)}#hcaptcha-options .helper:hover{cursor:help}#hcaptcha-options .helper:hover .helper-content{display:block;z-index:1}#hcaptcha-options .helper .helper-content:after{border:10px solid transparent;border-bottom-color:#5c6f8a;content:"";inset-inline-end:0;position:absolute;top:0;transform:translateY(-100%)}#hcaptcha-options .helper .helper-content a{color:#fff}#hcaptcha-message{box-sizing:border-box}#hcaptcha-message>p{font-size:13px;font-weight:600;line-height:1.5;margin:.5em 0}@keyframes blink{0%{opacity:1}16.7%{opacity:0}33.3%{opacity:1}50%{opacity:0}66.7%{opacity:1}83.3%{opacity:0}to{opacity:1}}.blink{animation:blink 3s linear}.hcaptcha-hide{display:none}.hcaptcha-excerpt{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hcaptcha-excerpt:hover .hcaptcha-hide{background:#5c6f8a;border:1px solid #c3c4c7;border-radius:6px;box-shadow:inset 0 -1px 0 rgba(0,0,0,.1);color:#f0f2f5;display:block;inset-inline-start:0;max-width:300px;padding:8px 10px;position:absolute;text-align:center;top:0;white-space:normal;width:max-content;z-index:1}@media (max-width:782px){.hcaptcha-settings-tabs{margin:unset;margin-block-end:0;margin-block-start:10px;margin-inline-end:-12px;margin-inline-start:-10px;padding-block-end:0;padding-block-start:0;padding-inline-end:12px;padding-inline-start:10px}}@media (max-width:600px){#hcaptcha-options table tbody{grid-template-columns:1fr}#hcaptcha-options table tbody tr{position:relative}#hcaptcha-options fieldset+.helper:before{transform:translateY(-.7em)}#hcaptcha-options fieldset+.helper .helper-content{transform:translateY(25px);width:100%}#hcaptcha-options .helper{z-index:1}.hcaptcha-settings-tab{inset-inline-end:15px}}1 body.settings_page_hcaptcha{background:#f0f2f5;color:#5c6f8a}.wrap h1.hcaptcha-settings-header{align-items:center;display:flex;font-size:34px;font-weight:700}.hcaptcha-logo{height:64px;margin-block-end:10px;margin-block-start:10px;margin-inline-end:5px;margin-inline-start:0}.hcaptcha-settings-tabs{background:#fff;display:flex;flex-wrap:wrap;justify-content:space-between;line-height:4.5em;margin:10px -20px 0;padding:0 20px;position:sticky;top:0;z-index:2}.hcaptcha-settings-tab{border-bottom:2px solid transparent;color:#646970;display:inline-block;font-size:1.1em;margin-inline-end:30px;text-decoration:none}.hcaptcha-settings-tab:hover{border-bottom-color:#025176!important;border-bottom:2px solid;color:#666}.hcaptcha-settings-tab.active{border-bottom:2px solid #0075ab}.hcaptcha-header-bar{align-items:center;background:#f0f2f5;display:flex;justify-content:space-between;margin:0 -20px;padding:0 20px;position:sticky;top:60px;z-index:2}#hcaptcha-options h2{color:#5c6f8a;font-size:1.5em}#hcaptcha-options h2~*{display:none}#hcaptcha-options h3{color:#5c6f8a;margin:1.5em 0 1em}#hcaptcha-options .notice-dismiss:before{color:#5c6f8a}#hcaptcha-options table tbody tr td{margin:0;padding:0;position:relative}#hcaptcha-options table tr td fieldset input[type=checkbox]{border:none;box-shadow:none;display:inline;height:1.25rem;margin-block-end:0;margin-block-start:-.125rem;margin-inline-end:.5rem;margin-inline-start:0;width:2.3611rem}#hcaptcha-options table tr td fieldset input[type=checkbox]:before{background:url(../images/checkbox-off.svg);background-size:cover;content:"";display:inline-block;height:1.25rem;margin:0;width:2.3611rem}#hcaptcha-options table tr td fieldset input[type=checkbox]:checked:before{background:no-repeat url(../images/checkbox-on.svg);background-size:cover}#hcaptcha-options fieldset:disabled{color:#dadada}#hcaptcha-options .button-primary{background-color:#026593;border-color:#026593;color:#fff}#hcaptcha-options .button-primary:hover{background-color:#025176}#hcaptcha-options .button-secondary{background-color:#fff;border-color:#026593;color:#026593}#hcaptcha-options .button-secondary:hover{background-color:#ccc}#hcaptcha-options a{color:#0075ab}#hcaptcha-navigation a{border-color:#0075ab}#hcaptcha-options a.hcaptcha-settings-tab{color:#5c6f8a}#hcaptcha-options .helper:before{background:#5c6f8a;border-radius:1.2em;color:#fff;content:"?";height:1.2em;inset-inline-end:0;position:absolute;text-align:center;top:0;transform:translateY(-27px);width:1.2em}#hcaptcha-options fieldset+.helper:before{top:50%;transform:translate(25px,-.7em)}.rtl #hcaptcha-options fieldset+.helper:before{transform:translate(-25px,-.8em)}#hcaptcha-options .helper .helper-content{background:#5c6f8a;box-sizing:border-box;color:#f0f2f5;display:none;inset-inline-end:0;padding:.5em 1em;position:absolute;top:0;transform:translate(1px,10px);width:100%}.rtl #hcaptcha-options .helper .helper-content{transform:translate(-1px,10px)}#hcaptcha-options fieldset+.helper .helper-content{top:50%;transform:translate(25px,25px);width:calc(100% + 25px)}#hcaptcha-options .helper:hover{cursor:help}#hcaptcha-options .helper:hover .helper-content{display:block;z-index:1}#hcaptcha-options .helper .helper-content:after{border:10px solid transparent;border-bottom-color:#5c6f8a;content:"";inset-inline-end:0;position:absolute;top:0;transform:translateY(-100%)}#hcaptcha-options .helper .helper-content a{color:#fff}#hcaptcha-message{box-sizing:border-box}#hcaptcha-message>p{font-size:13px;font-weight:600;line-height:1.5;margin:.5em 0}@keyframes blink{0%{opacity:1}16.7%{opacity:0}33.3%{opacity:1}50%{opacity:0}66.7%{opacity:1}83.3%{opacity:0}to{opacity:1}}.blink{animation:blink 3s linear}.hcaptcha-hide{display:none}.hcaptcha-excerpt{display:block;max-width:100%;overflow:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:max-content}.hcaptcha-excerpt:hover{overflow:visible}.hcaptcha-excerpt:hover .hcaptcha-hide{background:#5c6f8a;border:1px solid #c3c4c7;border-radius:6px;box-shadow:inset 0 -1px 0 rgba(0,0,0,.1);color:#f0f2f5;display:block;inset-inline-start:50%;max-width:300px;padding:8px 10px;position:absolute;text-align:center;top:50%;transform:translate(-50%,-50%);white-space:normal;width:max-content;z-index:1}@media (max-width:782px){#hcaptcha-options .wp-list-table .toggle-row{top:15px}#hcaptcha-options .wp-list-table tr.is-expanded .toggle-row{top:6.5px}#hcaptcha-options .widefat tbody th.check-column{padding:0;vertical-align:middle}#hcaptcha-options .widefat thead td.check-column,.widefat tfoot td.check-column{padding-left:0}#hcaptcha-options .widefat th input[type=checkbox]{margin-bottom:0}#hcaptcha-options .wp-list-table .is-expanded td:not(.hidden){overflow:visible}.hcaptcha-settings-tabs{margin:unset;margin-block-end:0;margin-block-start:10px;margin-inline-end:-12px;margin-inline-start:-10px;padding-block-end:0;padding-block-start:0;padding-inline-end:12px;padding-inline-start:10px}.hcaptcha-excerpt{display:table-cell;height:44px;vertical-align:middle}tr.is-expanded .hcaptcha-excerpt{height:19.5px}}@media (max-width:600px){#hcaptcha-options table tbody{grid-template-columns:1fr}#hcaptcha-options table tbody tr{position:relative}#hcaptcha-options fieldset+.helper:before{transform:translateY(-.7em)}#hcaptcha-options fieldset+.helper .helper-content{transform:translateY(25px);width:100%}#hcaptcha-options .helper{z-index:1}.hcaptcha-settings-tab{inset-inline-end:15px}} -
hcaptcha-for-forms-and-more/tags/4.10.0/assets/css/settings-list-page-base.css
r3166267 r3233179 3 3 display: flex; 4 4 flex-direction: row-reverse; 5 margin-bottom: 15px;6 5 } 7 6 -
hcaptcha-for-forms-and-more/tags/4.10.0/assets/css/settings-list-page-base.min.css
r3166267 r3233179 1 .hcaptcha-filter{display:flex;flex-direction:row-reverse; margin-bottom:15px;position:relative}#hcaptcha-datepicker-popover-button{align-items:center;background:#fff;border-color:#8c8f94;color:#3c434a;display:flex;font-size:14px;gap:16px}.hcaptcha-datepicker-popover{background:#fff;border-radius:6px;box-shadow:0 5px 15px rgba(0,0,0,.15);display:none;inset-inline-end:0;margin-top:10px;max-width:80vw;position:absolute;top:32px;width:416px;z-index:30}.hcaptcha-datepicker-popover-content{display:flex;flex-wrap:wrap}.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-choices{display:flex;flex-direction:column;flex-grow:1;font-size:14px;gap:15px;justify-content:space-between;line-height:14px;margin:0;padding:20px}.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-choices label{cursor:pointer}.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-choices .hcaptcha-is-selected{color:#0075ab}.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-calendar{padding:10px}.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-action{border-top:1px solid #ccd0d4;display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end;padding:15px 20px;width:100%}.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-calendar .form-control,.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-choices [type=radio]{border:none;clip:rect(1px,1px,1px,1px);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-wrap:normal}.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-calendar .flatpickr-calendar.inline{top:0}.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-calendar .flatpickr-calendar{box-shadow:none;width:100%}.flatpickr-current-month .flatpickr-monthDropdown-months,.flatpickr-current-month input.cur-year{font-size:14px;font-weight:700;opacity:.7}.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-calendar .flatpickr-calendar .dayContainer,.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-calendar .flatpickr-calendar .flatpickr-days,.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-calendar .flatpickr-calendar .flatpickr-rContainer{font-size:13px;width:100%}.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-calendar .flatpickr-calendar .dayContainer{max-width:100%;min-width:100%}.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-calendar .flatpickr-calendar *{box-sizing:border-box}.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-calendar .flatpickr-calendar .flatpickr-day{align-items:center;aspect-ratio:1;border-style:hidden;box-shadow:none;display:flex;height:auto;line-height:30px;margin:0;max-width:none}@media (min-width:601px){.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-calendar{width:245px}.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-choices{border-inline-end:1px solid #ccd0d4;margin-inline-end:4px}}1 .hcaptcha-filter{display:flex;flex-direction:row-reverse;position:relative}#hcaptcha-datepicker-popover-button{align-items:center;background:#fff;border-color:#8c8f94;color:#3c434a;display:flex;font-size:14px;gap:16px}.hcaptcha-datepicker-popover{background:#fff;border-radius:6px;box-shadow:0 5px 15px rgba(0,0,0,.15);display:none;inset-inline-end:0;margin-top:10px;max-width:80vw;position:absolute;top:32px;width:416px;z-index:30}.hcaptcha-datepicker-popover-content{display:flex;flex-wrap:wrap}.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-choices{display:flex;flex-direction:column;flex-grow:1;font-size:14px;gap:15px;justify-content:space-between;line-height:14px;margin:0;padding:20px}.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-choices label{cursor:pointer}.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-choices .hcaptcha-is-selected{color:#0075ab}.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-calendar{padding:10px}.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-action{border-top:1px solid #ccd0d4;display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end;padding:15px 20px;width:100%}.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-calendar .form-control,.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-choices [type=radio]{border:none;clip:rect(1px,1px,1px,1px);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-wrap:normal}.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-calendar .flatpickr-calendar.inline{top:0}.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-calendar .flatpickr-calendar{box-shadow:none;width:100%}.flatpickr-current-month .flatpickr-monthDropdown-months,.flatpickr-current-month input.cur-year{font-size:14px;font-weight:700;opacity:.7}.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-calendar .flatpickr-calendar .dayContainer,.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-calendar .flatpickr-calendar .flatpickr-days,.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-calendar .flatpickr-calendar .flatpickr-rContainer{font-size:13px;width:100%}.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-calendar .flatpickr-calendar .dayContainer{max-width:100%;min-width:100%}.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-calendar .flatpickr-calendar *{box-sizing:border-box}.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-calendar .flatpickr-calendar .flatpickr-day{align-items:center;aspect-ratio:1;border-style:hidden;box-shadow:none;display:flex;height:auto;line-height:30px;margin:0;max-width:none}@media (min-width:601px){.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-calendar{width:245px}.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-choices{border-inline-end:1px solid #ccd0d4;margin-inline-end:4px}} -
hcaptcha-for-forms-and-more/tags/4.10.0/assets/js/apps/hcaptcha.js
r3200161 r3233179 1 (()=>{"use strict";function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(t){return function(t){if(Array.isArray(t))return r(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||n(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function n(t,e){if(t){if("string"==typeof t)return r(t,e);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(t,e):void 0}}function r(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n<e;n++)r[n]=t[n];return r}function o(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t, a(r.key),r)}}function a(e){var n=function(e,n){if("object"!=t(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var o=r.call(e,n||"default");if("object"!=t(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===n?String:Number)(e)}(e,"string");return"symbol"==t(n)?n:n+""}var i=function(){return r=function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.foundForms=[],this.params=null,this.observing=!1,this.darkElement=null,this.darkClass=null,this.callback=this.callback.bind(this),this.validate=this.validate.bind(this),this.addedDCLCallbacks=new Set},a=[{key:"generateID",value:function(){var t=function(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)};return t()+"-"+t()+"-"+t()+"-"+t()}},{key:"getFoundFormById",value:function(t){var e;return null!==(e=this.foundForms.filter((function(e){return t===e.hCaptchaId}))[0])&&void 0!==e?e:null}},{key:"getWidgetId",value:function(t){var e,n,r;if(void 0===t)return"";var o=null!==(e=null===(n=t.closest(this.formSelector))||void 0===n||null===(n=n.dataset)||void 0===n?void 0:n.hCaptchaId)&&void 0!==e?e:"";if(!o)return"";var a=this.getFoundFormById(o);return null!==(r=null==a?void 0:a.widgetId)&&void 0!==r?r:""}},{key:"reset",value:function(t){var e=this.getWidgetId(t);e&&hcaptcha.reset(e)}},{key:"isSameOrDescendant",value:function(t,e){for(var n=e;n;){if(n===t)return!0;n=n.parentElement}return!1}},{key:"validate",value:function(t){var e=t.currentTarget.closest(this.formSelector),n=this.getFoundFormById(e.dataset.hCaptchaId),r=n.submitButtonElement,o=n.widgetId;if(this.isSameOrDescendant(r,t.target)&&(t.preventDefault(),t.stopPropagation(),this.currentForm={formElement:e,submitButtonElement:r},o)){var a=e.querySelector(this.responseSelector),i=a?a.value:"";""===i?hcaptcha.execute(o):this.callback(i)}}},{key:"isValidated",value:function(){return void 0!==this.currentForm}},{key:"getForms",value:function(){return e(document.querySelectorAll(this.formSelector))}},{key:"getParams",value:function(){if(null!==this.params)return this.params;var t;try{var e,n;t=JSON.parse(wp.hooks.applyFilters("hcaptcha.params",null!==(e=null===(n=HCaptchaMainObject)||void 0===n?void 0:n.params)&&void 0!==e?e:""))}catch(e){t={}}return t.callback=this.callback,t}},{key:"setParams",value:function(t){this.params=t}},{key:"setDarkData",value:function(){var t={"twenty-twenty-one":{darkStyleId:"twenty-twenty-one-style-css",darkElement:document.body,darkClass:"is-dark-theme"},"wp-dark-mode":{darkStyleId:"wp-dark-mode-frontend-css",darkElement:document.documentElement,darkClass:"wp-dark-mode-active"},"droit-dark-mode":{darkStyleId:"dtdr-public-inline-css",darkElement:document.documentElement,darkClass:"drdt-dark-mode"}};t=wp.hooks.applyFilters("hcaptcha.darkData",t);for(var e=0,n=Object.values(t);e<n.length;e++){var r=n[e];if(document.getElementById(r.darkStyleId))return this.darkElement=r.darkElement,void(this.darkClass=r.darkClass)}}},{key:"observeDarkMode",value:function(){var t=this;this.observing||(this.observing=!0,"auto"!==this.getParams().theme)||(this.setDarkData(),this.darkElement&&this.darkClass&&new MutationObserver((function(e){var r,o=function(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=n(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var o=0,a=function(){};return{s:a,n:function(){return o>=t.length?{done:!0}:{done:!1,value:t[o++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,u=!0,c=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return u=t.done,t},e:function(t){c=!0,i=t},f:function(){try{u||null==r.return||r.return()}finally{if(c)throw i}}}}(e);try{var a=function(){var e=r.value.oldValue,n=t.darkElement.getAttribute("class");e=e?e.split(" "):[],(n=n?n.split(" "):[]).filter((function(t){return!e.includes(t)})).concat(e.filter((function(t){return!n.includes(t)}))).includes(t.darkClass)&&t.bindEvents()};for(o.s();!(r=o.n()).done;)a()}catch(t){o.e(t)}finally{o.f()}})).observe(this.darkElement,{attributes:!0,attributeOldValue:!0}))}},{key:"getWidgetByToken",value:function(t){var n=e(document.querySelectorAll(this.responseSelector)).find((function(e){return e.value===t}));return n?n.closest(".h-captcha"):null}},{key:"callback",value:function(t){document.dispatchEvent(new CustomEvent("hCaptchaSubmitted",{detail:{token:t}}));var e=this.getParams(),n=this.getWidgetByToken(t),r=n?n.dataset.force:null;("invisible"===e.size||"true"===r&&this.isValidated())&&this.submit()}},{key:"applyAutoTheme",value:function(t){if("auto"!==t.theme)return t;if(t.theme="light",!this.darkElement)return t;var e=this.darkElement.getAttribute("class");return(e=e||"").includes(this.darkClass)&&(t.theme="dark"),t}},{key:"render",value:function(e){this.observeDarkMode();var n,r,o=this.getParams();return"object"===t(o.theme)?null!==(n=null===(r=o)||void 0===r||null===(r=r.theme)||void 0===r||null===(r=r.component)||void 0===r||null===(r=r.checkbox)||void 0===r||null===(r=r.main)||void 0===r?void 0:r.fill)&&void 0!==n&&n&&(e.dataset.theme="custom"):o.theme=e.dataset.theme,o.size=e.dataset.size,o=this.applyAutoTheme(o),hcaptcha.render(e,o)}},{key:"addSyncedEventListener",value:function(t){if("loading"===document.readyState){if(this.addedDCLCallbacks.has(t))return;this.addedDCLCallbacks.add(t),window.addEventListener("DOMContentLoaded",t)}else t()}},{key:"bindEvents",value:function(){var t=this;"undefined"!=typeof hcaptcha&&(this.formSelector=wp.hooks.applyFilters("hcaptcha.formSelector","form, section.cwginstock-subscribe-form, div.sdm_download_item, .gform_editor, #nf-builder, .wpforms-captcha-preview"),this.submitButtonSelector=wp.hooks.applyFilters("hcaptcha.submitButtonSelector",'*[type="submit"]:not(.quform-default-submit), #check_config, button[type="button"].ff-btn, a.et_pb_newsletter_button.et_pb_button, .forminator-button-submit, .frm_button_submit, a.sdm_download, .uagb-forms-main-submit-button'),this.responseSelector='textarea[name="h-captcha-response"]',this.getForms().map((function(e){var n=e.querySelector(".h-captcha");if(null===n)return e;if(n.classList.contains("hcaptcha-widget-id"))return e;n.innerHTML="";var r=t.generateID(),o=e.querySelectorAll(t.submitButtonSelector)[0],a=t.render(n);return e.dataset.hCaptchaId=r,t.foundForms.push({hCaptchaId:r,submitButtonElement:o,widgetId:a}),"invisible"!==n.dataset.size&&"true"!==n.dataset.force?e:o?(o.addEventListener("click",t.validate,!0),e):e}),this))}},{key:"isAjaxSubmitButton",value:function(t){var e=t.getAttribute("type"),n="submit"!==(e=e?e.toLowerCase():"");return wp.hooks.applyFilters("hcaptcha.ajaxSubmitButton",n,t)}},{key:"submit",value:function(){var t=this.currentForm.formElement,e=this.currentForm.submitButtonElement;if("form"!==t.tagName.toLowerCase()||this.isAjaxSubmitButton(e))return e.removeEventListener("click",this.validate,!0),void e.click();t.requestSubmit?t.requestSubmit(e):t.submit()}}],a&&o(r.prototype,a),i&&o(r,i),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,a,i}();window.HCaptchaMainObject=window.HCaptchaMainObject||{};const u=i;function c(t){return c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},c(t)}function l(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,s(r.key),r)}}function s(t){var e=function(t,e){if("object"!=c(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var r=n.call(t,e||"default");if("object"!=c(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==c(e)?e:e+""}function d(t,e,n){return e=p(e),function(t,e){if(e&&("object"==c(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,h()?Reflect.construct(e,n||[],p(t).constructor):e.apply(t,n))}function f(t){var e="function"==typeof Map?new Map:void 0;return f=function(t){if(null===t||!function(t){try{return-1!==Function.toString.call(t).indexOf("[native code]")}catch(e){return"function"==typeof t}}(t))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,n)}function n(){return function(t,e,n){if(h())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,e);var o=new(t.bind.apply(t,r));return n&&m(o,n.prototype),o}(t,arguments,p(this).constructor)}return n.prototype=Object.create(t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),m(n,t)},f(t)}function h(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(h=function(){return!!t})()}function m(t,e){return m=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},m(t,e)}function p(t){return p=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},p(t)}const v=function(t){function e(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),d(this,e,arguments)}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&m(t,e)}(e,t),n=e,(r=[{key:"connectedCallback",value:function(){window.hCaptcha.addSyncedEventListener(window.hCaptchaBindEvents)}}])&&l(n.prototype,r),o&&l(n,o),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r,o}(f(HTMLElement));var y=new u;window.hCaptcha=y,window.hCaptchaGetWidgetId=function(t){y.getWidgetId(t)},window.hCaptchaReset=function(t){y.reset(t)},window.hCaptchaBindEvents=function(){y.bindEvents()},window.hCaptchaSubmit=function(){y.submit()},window.hCaptchaOnLoad=function(){y.addSyncedEventListener((function(){document.dispatchEvent(new CustomEvent("hCaptchaBeforeBindEvents")),window.hCaptchaBindEvents(),document.dispatchEvent(new CustomEvent("hCaptchaLoaded"))}))},window.customElements.define("h-captcha",v),document.dispatchEvent(new CustomEvent("hCaptchaBeforeAPI"))})();1 (()=>{"use strict";function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(t){return function(t){if(Array.isArray(t))return r(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||n(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function n(t,e){if(t){if("string"==typeof t)return r(t,e);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(t,e):void 0}}function r(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n<e;n++)r[n]=t[n];return r}function o(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,i(r.key),r)}}function i(e){var n=function(e,n){if("object"!=t(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var o=r.call(e,n||"default");if("object"!=t(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===n?String:Number)(e)}(e,"string");return"symbol"==t(n)?n:n+""}var a=function(){return r=function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.foundForms=[],this.params=null,this.observing=!1,this.darkElement=null,this.darkClass=null,this.callback=this.callback.bind(this),this.validate=this.validate.bind(this),this.addedDCLCallbacks=new Set},i=[{key:"generateID",value:function(){var t=function(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)};return t()+"-"+t()+"-"+t()+"-"+t()}},{key:"getFoundFormById",value:function(t){var e;return null!==(e=this.foundForms.filter((function(e){return t===e.hCaptchaId}))[0])&&void 0!==e?e:null}},{key:"getWidgetId",value:function(t){var e,n,r;if(void 0===t)return"";var o=null!==(e=null===(n=t.closest(this.formSelector))||void 0===n||null===(n=n.dataset)||void 0===n?void 0:n.hCaptchaId)&&void 0!==e?e:"";if(!o)return"";var i=this.getFoundFormById(o);return null!==(r=null==i?void 0:i.widgetId)&&void 0!==r?r:""}},{key:"reset",value:function(t){var e=this.getWidgetId(t);e&&hcaptcha.reset(e)}},{key:"isSameOrDescendant",value:function(t,e){for(var n=e;n;){if(n===t)return!0;n=n.parentElement}return!1}},{key:"getCurrentForm",value:function(t){var e,n=t.currentTarget.closest(this.formSelector),r=this.getFoundFormById(null==n||null===(e=n.dataset)||void 0===e?void 0:e.hCaptchaId),o=null==r?void 0:r.submitButtonElement,i=null==r?void 0:r.widgetId;if(i&&this.isSameOrDescendant(o,t.target))return t.preventDefault(),t.stopPropagation(),{formElement:n,submitButtonElement:o,widgetId:i}}},{key:"validate",value:function(t){if(this.currentForm=this.getCurrentForm(t),this.currentForm){var e=this.currentForm,n=e.formElement,r=e.widgetId,o=n.querySelector(this.responseSelector),i=o?o.value:"";""===i?hcaptcha.execute(r):this.callback(i)}}},{key:"isValidated",value:function(){return void 0!==this.currentForm}},{key:"getForms",value:function(){return e(document.querySelectorAll(this.formSelector))}},{key:"getParams",value:function(){if(null!==this.params)return this.params;var t;try{var e,n;t=JSON.parse(wp.hooks.applyFilters("hcaptcha.params",null!==(e=null===(n=HCaptchaMainObject)||void 0===n?void 0:n.params)&&void 0!==e?e:""))}catch(e){t={}}return t.callback=this.callback,t}},{key:"setParams",value:function(t){this.params=t}},{key:"setDarkData",value:function(){var t={"twenty-twenty-one":{darkStyleId:"twenty-twenty-one-style-css",darkElement:document.body,darkClass:"is-dark-theme"},"wp-dark-mode":{darkStyleId:"wp-dark-mode-frontend-css",darkElement:document.documentElement,darkClass:"wp-dark-mode-active"},"droit-dark-mode":{darkStyleId:"dtdr-public-inline-css",darkElement:document.documentElement,darkClass:"drdt-dark-mode"}};t=wp.hooks.applyFilters("hcaptcha.darkData",t);for(var e=0,n=Object.values(t);e<n.length;e++){var r=n[e];if(document.getElementById(r.darkStyleId))return this.darkElement=r.darkElement,void(this.darkClass=r.darkClass)}}},{key:"observeDarkMode",value:function(){var t=this;this.observing||(this.observing=!0,"auto"!==this.getParams().theme)||(this.setDarkData(),this.darkElement&&this.darkClass&&new MutationObserver((function(e){var r,o=function(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=n(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var o=0,i=function(){};return{s:i,n:function(){return o>=t.length?{done:!0}:{done:!1,value:t[o++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,u=!0,c=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return u=t.done,t},e:function(t){c=!0,a=t},f:function(){try{u||null==r.return||r.return()}finally{if(c)throw a}}}}(e);try{var i=function(){var e=r.value.oldValue,n=t.darkElement.getAttribute("class");e=e?e.split(" "):[],(n=n?n.split(" "):[]).filter((function(t){return!e.includes(t)})).concat(e.filter((function(t){return!n.includes(t)}))).includes(t.darkClass)&&t.bindEvents()};for(o.s();!(r=o.n()).done;)i()}catch(t){o.e(t)}finally{o.f()}})).observe(this.darkElement,{attributes:!0,attributeOldValue:!0}))}},{key:"getWidgetByToken",value:function(t){var n=e(document.querySelectorAll(this.responseSelector)).find((function(e){return e.value===t}));return n?n.closest(".h-captcha"):null}},{key:"callback",value:function(t){document.dispatchEvent(new CustomEvent("hCaptchaSubmitted",{detail:{token:t}}));var e=this.getParams(),n=this.getWidgetByToken(t),r=n?n.dataset.force:null;("invisible"===e.size||"true"===r&&this.isValidated())&&this.submit()}},{key:"applyAutoTheme",value:function(t){if("auto"!==t.theme)return t;if(t.theme="light",!this.darkElement)return t;var e=this.darkElement.getAttribute("class");return(e=e||"").includes(this.darkClass)&&(t.theme="dark"),t}},{key:"render",value:function(e){this.observeDarkMode();var n,r,o=this.getParams();return"object"===t(o.theme)?null!==(n=null===(r=o)||void 0===r||null===(r=r.theme)||void 0===r||null===(r=r.component)||void 0===r||null===(r=r.checkbox)||void 0===r||null===(r=r.main)||void 0===r?void 0:r.fill)&&void 0!==n&&n&&(e.dataset.theme="custom"):o.theme=e.dataset.theme,o.size=e.dataset.size,o=this.applyAutoTheme(o),hcaptcha.render(e,o)}},{key:"addSyncedEventListener",value:function(t){if("loading"===document.readyState){if(this.addedDCLCallbacks.has(t))return;this.addedDCLCallbacks.add(t),window.addEventListener("DOMContentLoaded",t)}else t()}},{key:"bindEvents",value:function(){var t=this;"undefined"!=typeof hcaptcha&&(this.formSelector=wp.hooks.applyFilters("hcaptcha.formSelector","form, section.cwginstock-subscribe-form, div.sdm_download_item, .gform_editor, #nf-builder, .wpforms-captcha-preview"),this.submitButtonSelector=wp.hooks.applyFilters("hcaptcha.submitButtonSelector",'*[type="submit"]:not(.quform-default-submit), #check_config, button[type="button"].ff-btn, a.et_pb_newsletter_button.et_pb_button, .forminator-button-submit, .frm_button_submit, a.sdm_download, .uagb-forms-main-submit-button'),this.responseSelector='textarea[name="h-captcha-response"]',this.getForms().map((function(e){var n=e.querySelector(".h-captcha");if(null===n)return e;if(n.classList.contains("hcaptcha-widget-id"))return e;n.innerHTML="";var r=t.generateID(),o=e.querySelectorAll(t.submitButtonSelector)[0],i=t.render(n);if(e.dataset.hCaptchaId=r,t.foundForms.push({hCaptchaId:r,submitButtonElement:o,widgetId:i}),!o)return e;var a=n.dataset;return"invisible"!==a.size&&"true"!==a.force||o.addEventListener("click",t.validate,!0),e}),this))}},{key:"isAjaxSubmitButton",value:function(t){var e=t.getAttribute("type"),n="submit"!==(e=e?e.toLowerCase():"");return wp.hooks.applyFilters("hcaptcha.ajaxSubmitButton",n,t)}},{key:"submit",value:function(){if(this.currentForm){var t=this.currentForm,e=t.formElement,n=t.submitButtonElement;if("form"!==e.tagName.toLowerCase()||this.isAjaxSubmitButton(n))return n.removeEventListener("click",this.validate,!0),void n.click();e.requestSubmit?e.requestSubmit(n):e.submit()}}}],i&&o(r.prototype,i),a&&o(r,a),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,i,a}();window.HCaptchaMainObject=window.HCaptchaMainObject||{};const u=a;function c(t){return c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},c(t)}function l(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,s(r.key),r)}}function s(t){var e=function(t,e){if("object"!=c(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var r=n.call(t,e||"default");if("object"!=c(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==c(e)?e:e+""}function d(t,e,n){return e=p(e),function(t,e){if(e&&("object"==c(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,h()?Reflect.construct(e,n||[],p(t).constructor):e.apply(t,n))}function f(t){var e="function"==typeof Map?new Map:void 0;return f=function(t){if(null===t||!function(t){try{return-1!==Function.toString.call(t).indexOf("[native code]")}catch(e){return"function"==typeof t}}(t))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,n)}function n(){return function(t,e,n){if(h())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,e);var o=new(t.bind.apply(t,r));return n&&m(o,n.prototype),o}(t,arguments,p(this).constructor)}return n.prototype=Object.create(t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),m(n,t)},f(t)}function h(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(h=function(){return!!t})()}function m(t,e){return m=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},m(t,e)}function p(t){return p=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},p(t)}const v=function(t){function e(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),d(this,e,arguments)}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&m(t,e)}(e,t),n=e,(r=[{key:"connectedCallback",value:function(){window.hCaptcha.addSyncedEventListener(window.hCaptchaBindEvents)}}])&&l(n.prototype,r),o&&l(n,o),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r,o}(f(HTMLElement));var y=new u;window.hCaptcha=y,window.hCaptchaGetWidgetId=function(t){y.getWidgetId(t)},window.hCaptchaReset=function(t){y.reset(t)},window.hCaptchaBindEvents=function(){y.bindEvents()},window.hCaptchaSubmit=function(){y.submit()},window.hCaptchaOnLoad=function(){y.addSyncedEventListener((function(){document.dispatchEvent(new CustomEvent("hCaptchaBeforeBindEvents")),window.hCaptchaBindEvents(),document.dispatchEvent(new CustomEvent("hCaptchaLoaded"))}))},window.customElements.define("h-captcha",v),document.dispatchEvent(new CustomEvent("hCaptchaBeforeAPI"))})(); -
hcaptcha-for-forms-and-more/tags/4.10.0/assets/js/events.js
r3095958 r3233179 1 /* global Chart, HCaptchaEventsObject */1 /* global jQuery, Chart, hCaptchaSettingsBase, HCaptchaListPageBaseObject, HCaptchaEventsObject */ 2 2 3 3 /** 4 * @param HCaptchaEventsObject.ajaxUrl 5 * @param HCaptchaEventsObject.bulkAction 6 * @param HCaptchaEventsObject.bulkNonce 4 7 * @param HCaptchaEventsObject.failed 5 8 * @param HCaptchaEventsObject.failedLabel … … 8 11 * @param HCaptchaEventsObject.unit 9 12 */ 10 document.addEventListener( 'DOMContentLoaded', function() {11 const ctx = document.getElementById( 'eventsChart' );12 const aspectRatio = window.innerWidth > 600 ? 3 : 2;13 13 14 new Chart( ctx, { 15 type: 'bar', 16 data: { 17 datasets: [ 18 { 19 label: HCaptchaEventsObject.succeedLabel, 20 data: HCaptchaEventsObject.succeed, 21 borderWidth: 1, 22 }, 23 { 24 label: HCaptchaEventsObject.failedLabel, 25 data: HCaptchaEventsObject.failed, 26 borderWidth: 1, 27 }, 28 ], 29 }, 30 options: { 31 responsive: true, 32 maintainAspectRatio: true, 33 aspectRatio, 34 scales: { 35 x: { 36 type: 'time', 37 time: { 38 displayFormats: { 39 millisecond: 'HH:mm:ss', 40 second: 'HH:mm:ss', 41 minute: 'HH:mm', 42 hour: 'HH:mm', 43 day: 'dd.MM.yyyy', 44 week: 'dd.MM.yyyy', 45 month: 'dd.MM.yyyy', 46 quarter: 'dd.MM.yyyy', 47 year: 'dd.MM.yyyy', 14 /** 15 * Events page logic. 16 * 17 * @param {Object} $ jQuery instance. 18 */ 19 const events = function( $ ) { 20 function initChart() { 21 const ctx = document.getElementById( 'eventsChart' ); 22 const aspectRatio = window.innerWidth > 600 ? 3 : 2; 23 24 new Chart( ctx, { 25 type: 'bar', 26 data: { 27 datasets: [ 28 { 29 label: HCaptchaEventsObject.succeedLabel, 30 data: HCaptchaEventsObject.succeed, 31 borderWidth: 1, 32 }, 33 { 34 label: HCaptchaEventsObject.failedLabel, 35 data: HCaptchaEventsObject.failed, 36 borderWidth: 1, 37 }, 38 ], 39 }, 40 options: { 41 responsive: true, 42 maintainAspectRatio: true, 43 aspectRatio, 44 scales: { 45 x: { 46 type: 'time', 47 time: { 48 displayFormats: { 49 millisecond: 'HH:mm:ss', 50 second: 'HH:mm:ss', 51 minute: 'HH:mm', 52 hour: 'HH:mm', 53 day: 'dd.MM.yyyy', 54 week: 'dd.MM.yyyy', 55 month: 'dd.MM.yyyy', 56 quarter: 'dd.MM.yyyy', 57 year: 'dd.MM.yyyy', 58 }, 59 tooltipFormat: 'dd.MM.yyyy HH:mm', 60 unit: HCaptchaEventsObject.unit, 48 61 }, 49 tooltipFormat: 'dd.MM.yyyy HH:mm',50 unit: HCaptchaEventsObject.unit,51 62 }, 52 },53 y: {54 beginAtZero: true,55 ticks: {56 precision: 0,63 y: { 64 beginAtZero: true, 65 ticks: { 66 precision: 0, 67 }, 57 68 }, 58 69 }, 59 70 }, 60 }, 61 } ); 62 } ); 71 } ); 72 } 73 74 function handleBulkAction( event ) { 75 event.preventDefault(); 76 77 const form = event.target.closest( 'form' ); 78 const formData = new FormData( form ); 79 80 const bulk = formData.get( 'action' ); 81 82 if ( bulk === '-1' ) { 83 hCaptchaSettingsBase.showErrorMessage( HCaptchaListPageBaseObject.noAction ); 84 85 return; 86 } 87 88 const ids = formData.getAll( 'bulk-checkbox[]' ); 89 90 if ( ! ids.length ) { 91 hCaptchaSettingsBase.showErrorMessage( HCaptchaListPageBaseObject.noItems ); 92 93 return; 94 } 95 96 const data = { 97 action: HCaptchaEventsObject.bulkAction, 98 nonce: HCaptchaEventsObject.bulkNonce, 99 bulk, 100 ids: JSON.stringify( ids ), 101 }; 102 103 $.post( { 104 url: HCaptchaEventsObject.ajaxUrl, 105 data, 106 beforeSend: () => hCaptchaSettingsBase.showSuccessMessage( HCaptchaListPageBaseObject.DoingBulk ), 107 } ) 108 .done( function( response ) { 109 if ( ! response.success ) { 110 hCaptchaSettingsBase.showErrorMessage( response.data ); 111 112 return; 113 } 114 115 window.location.reload(); 116 } ) 117 .fail( 118 function( response ) { 119 hCaptchaSettingsBase.showErrorMessage( response.statusText ); 120 }, 121 ); 122 } 123 124 initChart(); 125 document.getElementById( 'doaction' ).addEventListener( 'click', handleBulkAction ); 126 }; 127 128 window.hCaptchaForms = events; 129 130 jQuery( document ).ready( events ); -
hcaptcha-for-forms-and-more/tags/4.10.0/assets/js/events.min.js
r3095958 r3233179 1 document.addEventListener("DOMContentLoaded",(function(){var e=document.getElementById("eventsChart"),t=window.innerWidth>600?3:2;new Chart(e,{type:"bar",data:{datasets:[{label:HCaptchaEventsObject.succeedLabel,data:HCaptchaEventsObject.succeed,borderWidth:1},{label:HCaptchaEventsObject.failedLabel,data:HCaptchaEventsObject.failed,borderWidth:1}]},options:{responsive:!0,maintainAspectRatio:!0,aspectRatio:t,scales:{x:{type:"time",time:{displayFormats:{millisecond:"HH:mm:ss",second:"HH:mm:ss",minute:"HH:mm",hour:"HH:mm",day:"dd.MM.yyyy",week:"dd.MM.yyyy",month:"dd.MM.yyyy",quarter:"dd.MM.yyyy",year:"dd.MM.yyyy"},tooltipFormat:"dd.MM.yyyy HH:mm",unit:HCaptchaEventsObject.unit}},y:{beginAtZero:!0,ticks:{precision:0}}}}})}));1 (()=>{var e=function(e){var t,a;t=document.getElementById("eventsChart"),a=window.innerWidth>600?3:2,new Chart(t,{type:"bar",data:{datasets:[{label:HCaptchaEventsObject.succeedLabel,data:HCaptchaEventsObject.succeed,borderWidth:1},{label:HCaptchaEventsObject.failedLabel,data:HCaptchaEventsObject.failed,borderWidth:1}]},options:{responsive:!0,maintainAspectRatio:!0,aspectRatio:a,scales:{x:{type:"time",time:{displayFormats:{millisecond:"HH:mm:ss",second:"HH:mm:ss",minute:"HH:mm",hour:"HH:mm",day:"dd.MM.yyyy",week:"dd.MM.yyyy",month:"dd.MM.yyyy",quarter:"dd.MM.yyyy",year:"dd.MM.yyyy"},tooltipFormat:"dd.MM.yyyy HH:mm",unit:HCaptchaEventsObject.unit}},y:{beginAtZero:!0,ticks:{precision:0}}}}}),document.getElementById("doaction").addEventListener("click",(function(t){t.preventDefault();var a=t.target.closest("form"),s=new FormData(a),n=s.get("action");if("-1"!==n){var c=s.getAll("bulk-checkbox[]");if(c.length){var o={action:HCaptchaEventsObject.bulkAction,nonce:HCaptchaEventsObject.bulkNonce,bulk:n,ids:JSON.stringify(c)};e.post({url:HCaptchaEventsObject.ajaxUrl,data:o,beforeSend:function(){return hCaptchaSettingsBase.showSuccessMessage(HCaptchaListPageBaseObject.DoingBulk)}}).done((function(e){e.success?window.location.reload():hCaptchaSettingsBase.showErrorMessage(e.data)})).fail((function(e){hCaptchaSettingsBase.showErrorMessage(e.statusText)}))}else hCaptchaSettingsBase.showErrorMessage(HCaptchaListPageBaseObject.noItems)}else hCaptchaSettingsBase.showErrorMessage(HCaptchaListPageBaseObject.noAction)}))};window.hCaptchaForms=e,jQuery(document).ready(e)})(); -
hcaptcha-for-forms-and-more/tags/4.10.0/assets/js/forms.js
r3095958 r3233179 1 /* global Chart, HCaptchaFormsObject */1 /* global jQuery, Chart, hCaptchaSettingsBase, HCaptchaListPageBaseObject, HCaptchaFormsObject */ 2 2 3 3 /** 4 * @param HCaptchaFormsObject.ajaxUrl 5 * @param HCaptchaFormsObject.bulkAction 6 * @param HCaptchaFormsObject.bulkNonce 4 7 * @param HCaptchaFormsObject.served 5 8 * @param HCaptchaFormsObject.servedLabel 6 9 * @param HCaptchaFormsObject.unit 10 * @param HCaptchaListPageBaseObject.noAction 11 * @param HCaptchaListPageBaseObject.noItems 12 * @param HCaptchaListPageBaseObject.DoingBulk 7 13 */ 8 document.addEventListener( 'DOMContentLoaded', function() {9 const ctx = document.getElementById( 'formsChart' );10 const aspectRatio = window.innerWidth > 600 ? 3 : 2;11 14 12 new Chart( ctx, { 13 type: 'bar', 14 data: { 15 datasets: [ 16 { 17 label: HCaptchaFormsObject.servedLabel, 18 backgroundColor: 'rgba(2,101,147,0.5)', 19 data: HCaptchaFormsObject.served, 20 borderWidth: 1, 21 }, 22 ], 23 }, 24 options: { 25 responsive: true, 26 maintainAspectRatio: true, 27 aspectRatio, 28 scales: { 29 x: { 30 type: 'time', 31 time: { 32 displayFormats: { 33 millisecond: 'HH:mm:ss', 34 second: 'HH:mm:ss', 35 minute: 'HH:mm', 36 hour: 'HH:mm', 37 day: 'dd.MM.yyyy', 38 week: 'dd.MM.yyyy', 39 month: 'dd.MM.yyyy', 40 quarter: 'dd.MM.yyyy', 41 year: 'dd.MM.yyyy', 15 /** 16 * Forms page logic. 17 * 18 * @param {Object} $ jQuery instance. 19 */ 20 const forms = function( $ ) { 21 function initChart() { 22 const ctx = document.getElementById( 'formsChart' ); 23 const aspectRatio = window.innerWidth > 600 ? 3 : 2; 24 25 new Chart( ctx, { 26 type: 'bar', 27 data: { 28 datasets: [ 29 { 30 label: HCaptchaFormsObject.servedLabel, 31 backgroundColor: 'rgba(2,101,147,0.5)', 32 data: HCaptchaFormsObject.served, 33 borderWidth: 1, 34 }, 35 ], 36 }, 37 options: { 38 responsive: true, 39 maintainAspectRatio: true, 40 aspectRatio, 41 scales: { 42 x: { 43 type: 'time', 44 time: { 45 displayFormats: { 46 millisecond: 'HH:mm:ss', 47 second: 'HH:mm:ss', 48 minute: 'HH:mm', 49 hour: 'HH:mm', 50 day: 'dd.MM.yyyy', 51 week: 'dd.MM.yyyy', 52 month: 'dd.MM.yyyy', 53 quarter: 'dd.MM.yyyy', 54 year: 'dd.MM.yyyy', 55 }, 56 tooltipFormat: 'dd.MM.yyyy HH:mm', 57 unit: HCaptchaFormsObject.unit, 42 58 }, 43 tooltipFormat: 'dd.MM.yyyy HH:mm',44 unit: HCaptchaFormsObject.unit,45 59 }, 46 },47 y: {48 beginAtZero: true,49 ticks: {50 precision: 0,60 y: { 61 beginAtZero: true, 62 ticks: { 63 precision: 0, 64 }, 51 65 }, 52 66 }, 53 67 }, 54 }, 55 } ); 56 } ); 68 } ); 69 } 70 71 function handleBulkAction( event ) { 72 event.preventDefault(); 73 74 const form = event.target.closest( 'form' ); 75 const formData = new FormData( form ); 76 77 const bulk = formData.get( 'action' ); 78 79 if ( bulk === '-1' ) { 80 hCaptchaSettingsBase.showErrorMessage( HCaptchaListPageBaseObject.noAction ); 81 82 return; 83 } 84 85 const ids = formData.getAll( 'bulk-checkbox[]' ).map( 86 ( id ) => { 87 const row = form.querySelector( `input[name="bulk-checkbox[]"][value="${ id }"]` ).closest( 'tr' ); 88 const source = row.querySelector( 'td.name .hcaptcha-excerpt' ).dataset.source; 89 const formId = row.querySelector( 'td.form_id' ).textContent; 90 91 return { source, formId }; 92 }, 93 ); 94 95 if ( ! ids.length ) { 96 hCaptchaSettingsBase.showErrorMessage( HCaptchaListPageBaseObject.noItems ); 97 98 return; 99 } 100 101 const data = { 102 action: HCaptchaFormsObject.bulkAction, 103 nonce: HCaptchaFormsObject.bulkNonce, 104 bulk, 105 ids: JSON.stringify( ids ), 106 }; 107 108 $.post( { 109 url: HCaptchaFormsObject.ajaxUrl, 110 data, 111 beforeSend: () => hCaptchaSettingsBase.showSuccessMessage( HCaptchaListPageBaseObject.DoingBulk ), 112 } ) 113 .done( function( response ) { 114 if ( ! response.success ) { 115 hCaptchaSettingsBase.showErrorMessage( response.data ); 116 117 return; 118 } 119 120 window.location.reload(); 121 } ) 122 .fail( 123 function( response ) { 124 hCaptchaSettingsBase.showErrorMessage( response.statusText ); 125 }, 126 ); 127 } 128 129 initChart(); 130 document.getElementById( 'doaction' ).addEventListener( 'click', handleBulkAction ); 131 }; 132 133 window.hCaptchaForms = forms; 134 135 jQuery( document ).ready( forms ); -
hcaptcha-for-forms-and-more/tags/4.10.0/assets/js/forms.min.js
r3095958 r3233179 1 document.addEventListener("DOMContentLoaded",(function(){var t=document.getElementById("formsChart"),e=window.innerWidth>600?3:2;new Chart(t,{type:"bar",data:{datasets:[{label:HCaptchaFormsObject.servedLabel,backgroundColor:"rgba(2,101,147,0.5)",data:HCaptchaFormsObject.served,borderWidth:1}]},options:{responsive:!0,maintainAspectRatio:!0,aspectRatio:e,scales:{x:{type:"time",time:{displayFormats:{millisecond:"HH:mm:ss",second:"HH:mm:ss",minute:"HH:mm",hour:"HH:mm",day:"dd.MM.yyyy",week:"dd.MM.yyyy",month:"dd.MM.yyyy",quarter:"dd.MM.yyyy",year:"dd.MM.yyyy"},tooltipFormat:"dd.MM.yyyy HH:mm",unit:HCaptchaFormsObject.unit}},y:{beginAtZero:!0,ticks:{precision:0}}}}})}));1 (()=>{var e=function(e){var t,a;t=document.getElementById("formsChart"),a=window.innerWidth>600?3:2,new Chart(t,{type:"bar",data:{datasets:[{label:HCaptchaFormsObject.servedLabel,backgroundColor:"rgba(2,101,147,0.5)",data:HCaptchaFormsObject.served,borderWidth:1}]},options:{responsive:!0,maintainAspectRatio:!0,aspectRatio:a,scales:{x:{type:"time",time:{displayFormats:{millisecond:"HH:mm:ss",second:"HH:mm:ss",minute:"HH:mm",hour:"HH:mm",day:"dd.MM.yyyy",week:"dd.MM.yyyy",month:"dd.MM.yyyy",quarter:"dd.MM.yyyy",year:"dd.MM.yyyy"},tooltipFormat:"dd.MM.yyyy HH:mm",unit:HCaptchaFormsObject.unit}},y:{beginAtZero:!0,ticks:{precision:0}}}}}),document.getElementById("doaction").addEventListener("click",(function(t){t.preventDefault();var a=t.target.closest("form"),s=new FormData(a),o=s.get("action");if("-1"!==o){var r=s.getAll("bulk-checkbox[]").map((function(e){var t=a.querySelector('input[name="bulk-checkbox[]"][value="'.concat(e,'"]')).closest("tr");return{source:t.querySelector("td.name .hcaptcha-excerpt").dataset.source,formId:t.querySelector("td.form_id").textContent}}));if(r.length){var c={action:HCaptchaFormsObject.bulkAction,nonce:HCaptchaFormsObject.bulkNonce,bulk:o,ids:JSON.stringify(r)};e.post({url:HCaptchaFormsObject.ajaxUrl,data:c,beforeSend:function(){return hCaptchaSettingsBase.showSuccessMessage(HCaptchaListPageBaseObject.DoingBulk)}}).done((function(e){e.success?window.location.reload():hCaptchaSettingsBase.showErrorMessage(e.data)})).fail((function(e){hCaptchaSettingsBase.showErrorMessage(e.statusText)}))}else hCaptchaSettingsBase.showErrorMessage(HCaptchaListPageBaseObject.noItems)}else hCaptchaSettingsBase.showErrorMessage(HCaptchaListPageBaseObject.noAction)}))};window.hCaptchaForms=e,jQuery(document).ready(e)})(); -
hcaptcha-for-forms-and-more/tags/4.10.0/assets/js/general.js
r3200161 r3233179 1 /* global jQuery, hCaptcha, HCaptchaGeneralObject, kaggDialog */1 /* global jQuery, hCaptcha, hCaptchaSettingsBase, HCaptchaGeneralObject, kaggDialog */ 2 2 3 3 /** … … 154 154 function clearMessage() { 155 155 $message.remove(); 156 // Concat below to avoid inspection message.156 // Concat below to avoid an inspection message. 157 157 $( '<div id="hcaptcha-message">' + '</div>' ).insertAfter( headerBarSelector ); 158 158 $message = $( msgSelector ); … … 181 181 $( document ).trigger( 'wp-updates-notice-added' ); 182 182 183 const $wpwrap = $( '#wpwrap' );184 const top = $wpwrap.position().top;185 186 183 $( 'html, body' ).animate( 187 184 { 188 scrollTop: $message.offset().top - top - parseInt( $message.css( 'margin-bottom' )),185 scrollTop: $message.offset().top - hCaptchaSettingsBase.getStickyHeight(), 189 186 }, 190 187 1000 -
hcaptcha-for-forms-and-more/tags/4.10.0/assets/js/general.min.js
r3200161 r3233179 1 (()=>{var t={};function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},e(t)}t.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}();var a=function(a){var n="#hcaptcha-message",c=a(n),o=a("form.hcaptcha-general"),r=a('[name="hcaptcha_settings[site_key]"]'),i=a('[name="hcaptcha_settings[secret_key]"]'),s=a("#hcaptcha-options .h-captcha"),h=a("#check_config"),l=a("#reset_notifications"),p=a('[name="hcaptcha_settings[theme]"]'),d=a('[name="hcaptcha_settings[size]"]'),u=a('[name="hcaptcha_settings[language]"]'),f=a('[name="hcaptcha_settings[mode]"]'),m=a('[name="hcaptcha_settings[custom_themes][]"]'),v=a(".hcaptcha-general-custom-prop select"),g=a(".hcaptcha-general-custom-value input"),b=a('[name="hcaptcha_settings[config_params]"]'),y=a(".hcaptcha-section-enterprise + table input"),C=a('[name="hcaptcha_settings[recaptcha_compat_off][]"]'),j=o.find("#submit"),O={},k=r.val(),H=i.val(), w=A();O[HCaptchaGeneralObject.modeLive]=HCaptchaGeneralObject.siteKey,O[HCaptchaGeneralObject.modeTestPublisher]=HCaptchaGeneralObject.modeTestPublisherSiteKey,O[HCaptchaGeneralObject.modeTestEnterpriseSafeEndUser]=HCaptchaGeneralObject.modeTestEnterpriseSafeEndUserSiteKey,O[HCaptchaGeneralObject.modeTestEnterpriseBotDetected]=HCaptchaGeneralObject.modeTestEnterpriseBotDetectedSiteKey;var G=!1,_=!1,S=[];function T(t){var e={};return t.each((function(){var t=a(this),n=t.attr("name").replace(/hcaptcha_settings\[(.+)]/,"$1");e[n]=t.val()})),e}function A(){return T(y)}function x(){c.remove(),a('<div id="hcaptcha-message"></div>').insertAfter(".hcaptcha-header-bar"),c=a(n)}function E(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(t=void 0===t?"":String(t),t=(t+="\n"+function(){for(var t=["recaptchacompat disabled","Missing sitekey - https://docs.hcaptcha.com/configuration#javascript-api"],e=[],a=0;a<S.length;a++){for(var n=S[a],c=n[0],o=n[1],r=Object.keys(o),i=[],s=0;s<r.length;s++){var h=o[s];"string"==typeof h&&-1===t.indexOf(h)&&i.push([c,h].join(" "))}e.push(i.join("\n"))}return S=[],e.join("\n")}()).trim()){c.removeClass(),c.addClass(e+" notice is-dismissible");var n=t.split("\n").map((function(t){return"<p>".concat(t,"</p>")}));c.html(n.join("")),a(document).trigger("wp-updates-notice-added");var o=a("#wpwrap").position().top;a("html, body").animate({scrollTop:c.offset().top-o-parseInt(c.css("margin-bottom"))},1e3)}}function N(){E(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"","notice-success")}function K(){E(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"","notice-error")}function L(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},a=Object.assign({},hCaptcha.getParams(),t),n=m.prop("checked"),c="live"===f.val();for(var o in n&&c?s.attr("data-theme","custom"):s.attr("data-theme",p.val()),n&&"object"===e(t.theme)||!n&&"object"!==e(t.theme)?a.theme=t.theme:a.theme=hCaptcha.getParams().theme,hCaptcha.setParams(a),s.html(""),t)"object"!==e(t[o])&&s.attr("data-".concat(o),"".concat(t[o]));hCaptcha.bindEvents()}function P(t,a){var n=function(t){return t&&"object"===e(t)};return n(t)&&n(a)?(Object.keys(a).forEach((function(e){var c=t[e],o=a[e];Array.isArray(c)&&Array.isArray(o)?t[e]=c.concat(o):n(c)&&n(o)?t[e]=P(Object.assign({},c),o):t[e]=o})),t):a}function U(t){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";for(var n in t){var c=a?"".concat(a,"--").concat(n):n;if("object"===e(t[n])&&null!==t[n])U(t[n],c);else{var o=t[n],r=c.replace(/theme--/g,""),i="".concat(r,"=").concat(o),s=v.find('option[value*="'.concat(r,'="]'));1===s.length&&(s.attr("value",i),s.is(":selected")&&g.val(o))}}}function B(){var t,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},a=b.val().trim();a=a||null;try{t=JSON.parse(a)}catch(t){return b.css("background-color","#ffabaf"),j.attr("disabled",!0),void K("Bad JSON!")}t=P(t,e),b.val(JSON.stringify(t,null,2)),U(t),m.prop("checked")||(t={sitekey:r.val(),theme:p.val(),size:d.val(),hl:u.val()}),L(t)}function J(){r.val()===k&&i.val()===H?(G=!1,x(),j.attr("disabled",!1)):G||(G=!0,K(HCaptchaGeneralObject.checkConfigNotice),j.attr("disabled",!0))}function D(t){return t=t.replace(/(http|https):\/\//,""),"https://"+new URL("https://"+t).host}!function(){S=[];var t=console.log,e=console.warn,a=console.info,n=console.error,c=console.clear;console.log=function(e){S.push(["Console log:",arguments]),t.apply(console,arguments)},console.warn=function(t){S.push(["Console warn:",arguments]),e.apply(console,arguments)},console.info=function(t){S.push(["Console info:",arguments]),a.apply(console,arguments)},console.error=function(t){S.push(["Console error:",arguments]),n.apply(console,arguments)},console.clear=function(){S=[],c()}}(),document.addEventListener("hCaptchaLoaded",(function(){K()})),h.on("click",(function(t){t.preventDefault(),""!==a('.hcaptcha-general-sample-hcaptcha textarea[name="h-captcha-response"]').val()?function(){x(),j.attr("disabled",!0);var t={action:HCaptchaGeneralObject.checkConfigAction,nonce:HCaptchaGeneralObject.checkConfigNonce,mode:f.val(),siteKey:r.val(),secretKey:i.val(),"h-captcha-response":a('textarea[name="h-captcha-response"]').val(),"hcaptcha-widget-id":a('input[name="hcaptcha-widget-id"]').val()};a.post({url:HCaptchaGeneralObject.ajaxUrl,data:t,beforeSend:function(){return N(HCaptchaGeneralObject.checkingConfigMsg)}}).done((function(t){t.success?(k=r.val(),H=i.val(),w=T(y),_=!1,N(t.data),j.attr("disabled",!1)):K(t.data)})).fail((function(t){K(t.statusText)})).always((function(){L()}))}():kaggDialog.confirm({title:HCaptchaGeneralObject.completeHCaptchaTitle,content:HCaptchaGeneralObject.completeHCaptchaContent,type:"info",buttons:{ok:{text:HCaptchaGeneralObject.OKBtnText}},onAction:function(){return window.hCaptchaReset(document.querySelector(".hcaptcha-general-sample-hcaptcha"))}})})),r.on("change",(function(t){L({sitekey:a(t.target).val()}),J()})),i.on("change",(function(){J()})),p.on("change",(function(t){L({theme:a(t.target).val()})})),d.on("change",(function(t){var e=a("#hcaptcha-invisible-notice"),n=a(t.target).val();"invisible"===n?e.show():e.hide(),L({size:n})})),u.on("change",(function(t){L({hl:a(t.target).val()})})),f.on("change",(function(t){var e=a(t.target).val();O.hasOwnProperty(e)&&(e===HCaptchaGeneralObject.modeLive?(r.attr("disabled",!1),i.attr("disabled",!1)):(r.attr("disabled",!0),i.attr("disabled",!0)),L({sitekey:O[e]}))})),m.on("change",(function(){B()})),b.on("blur",(function(){B()})),b.on("focus",(function(){b.css("background-color","unset"),j.attr("disabled",!1)})),y.on("change",(function(){!function(){var e={onload:"hCaptchaOnLoad",render:"explicit"};C.prop("checked")&&(e.recaptchacompat="off"),m.prop("checked")&&(e.custom="true");var a={asset_host:"assethost",endpoint:"endpoint",host:"host",image_host:"imghost",report_api:"reportapi",sentry:"sentry"},n=A();for(var c in a){var o=n[c].trim();o&&(e[a[c]]=encodeURIComponent(D(o)))}var r=n.api_host.trim();r=D(r=r||"js.hcaptcha.com")+"/1/api.js";var i=new URL(r);for(var h in e)i.searchParams.append(h,e[h]);document.getElementById("hcaptcha-api").remove(),delete t.g.hcaptcha,s.html("");var l=document.getElementsByTagName("head")[0],p=document.createElement("script");p.type="text/javascript",p.id="hcaptcha-api",p.src=i.href,l.appendChild(p)}(),JSON.stringify(A())===JSON.stringify(w)?(_=!1,x(),j.attr("disabled",!1)):_||(_=!0,K(HCaptchaGeneralObject.checkConfigNotice),j.attr("disabled",!0))})),a(".hcaptcha-general h3").on("click",(function(t){var e=a(t.currentTarget);e.toggleClass("closed");var n={action:HCaptchaGeneralObject.toggleSectionAction,nonce:HCaptchaGeneralObject.toggleSectionNonce,section:e.attr("class").replaceAll(/(hcaptcha-section-|closed)/g,"").trim(),status:!e.hasClass("closed")};a.post({url:HCaptchaGeneralObject.ajaxUrl,data:n}).done((function(t){t.success||K(t.data)})).fail((function(t){K(t.statusText)}))})),h.removeAttr("name"),l.removeAttr("name"),v.removeAttr("name"),g.removeAttr("name"),v.find("option").each((function(){var t=a(this);t.val().split("=")[1]||t.attr("disabled",!0)})),g.val(""),v.on("change",(function(){var t=a(this).find("option:selected").val().split("="),e=t[0],n=t[1];"palette--mode"===e?(g.attr("type","text"),g.val(n)):(g.val(n),g.attr("type","color"))})),g.on("change",(function(t){var e=a(t.target).val(),n=v.find("option:selected"),c=n.val().split("="),o=c[0],r=e;n.val(o+"="+e),B(r=(o="theme--"+c[0]).split("--").reverse().reduce((function(t,e){var a={};return a[e]=t,a}),r))}))};window.hCaptchaGeneral=a,jQuery(document).ready(a)})();1 (()=>{var t={};function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},e(t)}t.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}();var a=function(a){var n="#hcaptcha-message",c=a(n),o=a("form.hcaptcha-general"),r=a('[name="hcaptcha_settings[site_key]"]'),i=a('[name="hcaptcha_settings[secret_key]"]'),s=a("#hcaptcha-options .h-captcha"),h=a("#check_config"),l=a("#reset_notifications"),p=a('[name="hcaptcha_settings[theme]"]'),d=a('[name="hcaptcha_settings[size]"]'),u=a('[name="hcaptcha_settings[language]"]'),f=a('[name="hcaptcha_settings[mode]"]'),m=a('[name="hcaptcha_settings[custom_themes][]"]'),v=a(".hcaptcha-general-custom-prop select"),g=a(".hcaptcha-general-custom-value input"),b=a('[name="hcaptcha_settings[config_params]"]'),y=a(".hcaptcha-section-enterprise + table input"),C=a('[name="hcaptcha_settings[recaptcha_compat_off][]"]'),j=o.find("#submit"),O={},k=r.val(),H=i.val(),G=A();O[HCaptchaGeneralObject.modeLive]=HCaptchaGeneralObject.siteKey,O[HCaptchaGeneralObject.modeTestPublisher]=HCaptchaGeneralObject.modeTestPublisherSiteKey,O[HCaptchaGeneralObject.modeTestEnterpriseSafeEndUser]=HCaptchaGeneralObject.modeTestEnterpriseSafeEndUserSiteKey,O[HCaptchaGeneralObject.modeTestEnterpriseBotDetected]=HCaptchaGeneralObject.modeTestEnterpriseBotDetectedSiteKey;var S=!1,_=!1,w=[];function T(t){var e={};return t.each((function(){var t=a(this),n=t.attr("name").replace(/hcaptcha_settings\[(.+)]/,"$1");e[n]=t.val()})),e}function A(){return T(y)}function x(){c.remove(),a('<div id="hcaptcha-message"></div>').insertAfter(".hcaptcha-header-bar"),c=a(n)}function E(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(t=void 0===t?"":String(t),t=(t+="\n"+function(){for(var t=["recaptchacompat disabled","Missing sitekey - https://docs.hcaptcha.com/configuration#javascript-api"],e=[],a=0;a<w.length;a++){for(var n=w[a],c=n[0],o=n[1],r=Object.keys(o),i=[],s=0;s<r.length;s++){var h=o[s];"string"==typeof h&&-1===t.indexOf(h)&&i.push([c,h].join(" "))}e.push(i.join("\n"))}return w=[],e.join("\n")}()).trim()){c.removeClass(),c.addClass(e+" notice is-dismissible");var n=t.split("\n").map((function(t){return"<p>".concat(t,"</p>")}));c.html(n.join("")),a(document).trigger("wp-updates-notice-added"),a("html, body").animate({scrollTop:c.offset().top-hCaptchaSettingsBase.getStickyHeight()},1e3)}}function N(){E(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"","notice-success")}function B(){E(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"","notice-error")}function K(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},a=Object.assign({},hCaptcha.getParams(),t),n=m.prop("checked"),c="live"===f.val();for(var o in n&&c?s.attr("data-theme","custom"):s.attr("data-theme",p.val()),n&&"object"===e(t.theme)||!n&&"object"!==e(t.theme)?a.theme=t.theme:a.theme=hCaptcha.getParams().theme,hCaptcha.setParams(a),s.html(""),t)"object"!==e(t[o])&&s.attr("data-".concat(o),"".concat(t[o]));hCaptcha.bindEvents()}function L(t,a){var n=function(t){return t&&"object"===e(t)};return n(t)&&n(a)?(Object.keys(a).forEach((function(e){var c=t[e],o=a[e];Array.isArray(c)&&Array.isArray(o)?t[e]=c.concat(o):n(c)&&n(o)?t[e]=L(Object.assign({},c),o):t[e]=o})),t):a}function P(t){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";for(var n in t){var c=a?"".concat(a,"--").concat(n):n;if("object"===e(t[n])&&null!==t[n])P(t[n],c);else{var o=t[n],r=c.replace(/theme--/g,""),i="".concat(r,"=").concat(o),s=v.find('option[value*="'.concat(r,'="]'));1===s.length&&(s.attr("value",i),s.is(":selected")&&g.val(o))}}}function U(){var t,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},a=b.val().trim();a=a||null;try{t=JSON.parse(a)}catch(t){return b.css("background-color","#ffabaf"),j.attr("disabled",!0),void B("Bad JSON!")}t=L(t,e),b.val(JSON.stringify(t,null,2)),P(t),m.prop("checked")||(t={sitekey:r.val(),theme:p.val(),size:d.val(),hl:u.val()}),K(t)}function J(){r.val()===k&&i.val()===H?(S=!1,x(),j.attr("disabled",!1)):S||(S=!0,B(HCaptchaGeneralObject.checkConfigNotice),j.attr("disabled",!0))}function D(t){return t=t.replace(/(http|https):\/\//,""),"https://"+new URL("https://"+t).host}!function(){w=[];var t=console.log,e=console.warn,a=console.info,n=console.error,c=console.clear;console.log=function(e){w.push(["Console log:",arguments]),t.apply(console,arguments)},console.warn=function(t){w.push(["Console warn:",arguments]),e.apply(console,arguments)},console.info=function(t){w.push(["Console info:",arguments]),a.apply(console,arguments)},console.error=function(t){w.push(["Console error:",arguments]),n.apply(console,arguments)},console.clear=function(){w=[],c()}}(),document.addEventListener("hCaptchaLoaded",(function(){B()})),h.on("click",(function(t){t.preventDefault(),""!==a('.hcaptcha-general-sample-hcaptcha textarea[name="h-captcha-response"]').val()?function(){x(),j.attr("disabled",!0);var t={action:HCaptchaGeneralObject.checkConfigAction,nonce:HCaptchaGeneralObject.checkConfigNonce,mode:f.val(),siteKey:r.val(),secretKey:i.val(),"h-captcha-response":a('textarea[name="h-captcha-response"]').val(),"hcaptcha-widget-id":a('input[name="hcaptcha-widget-id"]').val()};a.post({url:HCaptchaGeneralObject.ajaxUrl,data:t,beforeSend:function(){return N(HCaptchaGeneralObject.checkingConfigMsg)}}).done((function(t){t.success?(k=r.val(),H=i.val(),G=T(y),_=!1,N(t.data),j.attr("disabled",!1)):B(t.data)})).fail((function(t){B(t.statusText)})).always((function(){K()}))}():kaggDialog.confirm({title:HCaptchaGeneralObject.completeHCaptchaTitle,content:HCaptchaGeneralObject.completeHCaptchaContent,type:"info",buttons:{ok:{text:HCaptchaGeneralObject.OKBtnText}},onAction:function(){return window.hCaptchaReset(document.querySelector(".hcaptcha-general-sample-hcaptcha"))}})})),r.on("change",(function(t){K({sitekey:a(t.target).val()}),J()})),i.on("change",(function(){J()})),p.on("change",(function(t){K({theme:a(t.target).val()})})),d.on("change",(function(t){var e=a("#hcaptcha-invisible-notice"),n=a(t.target).val();"invisible"===n?e.show():e.hide(),K({size:n})})),u.on("change",(function(t){K({hl:a(t.target).val()})})),f.on("change",(function(t){var e=a(t.target).val();O.hasOwnProperty(e)&&(e===HCaptchaGeneralObject.modeLive?(r.attr("disabled",!1),i.attr("disabled",!1)):(r.attr("disabled",!0),i.attr("disabled",!0)),K({sitekey:O[e]}))})),m.on("change",(function(){U()})),b.on("blur",(function(){U()})),b.on("focus",(function(){b.css("background-color","unset"),j.attr("disabled",!1)})),y.on("change",(function(){!function(){var e={onload:"hCaptchaOnLoad",render:"explicit"};C.prop("checked")&&(e.recaptchacompat="off"),m.prop("checked")&&(e.custom="true");var a={asset_host:"assethost",endpoint:"endpoint",host:"host",image_host:"imghost",report_api:"reportapi",sentry:"sentry"},n=A();for(var c in a){var o=n[c].trim();o&&(e[a[c]]=encodeURIComponent(D(o)))}var r=n.api_host.trim();r=D(r=r||"js.hcaptcha.com")+"/1/api.js";var i=new URL(r);for(var h in e)i.searchParams.append(h,e[h]);document.getElementById("hcaptcha-api").remove(),delete t.g.hcaptcha,s.html("");var l=document.getElementsByTagName("head")[0],p=document.createElement("script");p.type="text/javascript",p.id="hcaptcha-api",p.src=i.href,l.appendChild(p)}(),JSON.stringify(A())===JSON.stringify(G)?(_=!1,x(),j.attr("disabled",!1)):_||(_=!0,B(HCaptchaGeneralObject.checkConfigNotice),j.attr("disabled",!0))})),a(".hcaptcha-general h3").on("click",(function(t){var e=a(t.currentTarget);e.toggleClass("closed");var n={action:HCaptchaGeneralObject.toggleSectionAction,nonce:HCaptchaGeneralObject.toggleSectionNonce,section:e.attr("class").replaceAll(/(hcaptcha-section-|closed)/g,"").trim(),status:!e.hasClass("closed")};a.post({url:HCaptchaGeneralObject.ajaxUrl,data:n}).done((function(t){t.success||B(t.data)})).fail((function(t){B(t.statusText)}))})),h.removeAttr("name"),l.removeAttr("name"),v.removeAttr("name"),g.removeAttr("name"),v.find("option").each((function(){var t=a(this);t.val().split("=")[1]||t.attr("disabled",!0)})),g.val(""),v.on("change",(function(){var t=a(this).find("option:selected").val().split("="),e=t[0],n=t[1];"palette--mode"===e?(g.attr("type","text"),g.val(n)):(g.val(n),g.attr("type","color"))})),g.on("change",(function(t){var e=a(t.target).val(),n=v.find("option:selected"),c=n.val().split("="),o=c[0],r=e;n.val(o+"="+e),U(r=(o="theme--"+c[0]).split("--").reverse().reduce((function(t,e){var a={};return a[e]=t,a}),r))}))};window.hCaptchaGeneral=a,jQuery(document).ready(a)})(); -
hcaptcha-for-forms-and-more/tags/4.10.0/assets/js/integrations.js
r3215681 r3233179 1 /* global jQuery, HCaptchaIntegrationsObject, kaggDialog */1 /* global jQuery, hCaptchaSettingsBase, HCaptchaIntegrationsObject, kaggDialog */ 2 2 3 3 /** … … 26 26 */ 27 27 const integrations = function( $ ) { 28 /**29 * @type {HTMLElement}30 */31 const adminBar = document.querySelector( '#wpadminbar' );32 33 /**34 * @type {HTMLElement}35 */36 const tabs = document.querySelector( '.hcaptcha-settings-tabs' );37 38 /**39 * @type {HTMLElement}40 */41 const headerBar = document.querySelector( '.hcaptcha-header-bar' );42 28 const msgSelector = '#hcaptcha-message'; 43 29 let $message = $( msgSelector ); … … 46 32 const $search = $( '#hcaptcha-integrations-search' ); 47 33 48 function getStickyHeight() {49 const isAbsolute = adminBar ? window.getComputedStyle( adminBar ).position === 'absolute' : true;50 const adminBarHeight = ( adminBar && ! isAbsolute ) ? adminBar.offsetHeight : 0;51 const tabsHeight = tabs ? tabs.offsetHeight : 0;52 const headerBarHeight = headerBar ? headerBar.offsetHeight : 0;53 54 return adminBarHeight + tabsHeight + headerBarHeight;55 }56 57 34 function clearMessage() { 58 35 $message.remove(); 59 // Concat below to avoidinspection message.36 // Concat to avoid an inspection message. 60 37 $( '<div id="hcaptcha-message">' + '</div>' ).insertAfter( '.hcaptcha-header-bar' ); 61 38 $message = $( msgSelector ); … … 278 255 $( 'html, body' ).animate( 279 256 { 280 scrollTop: $tr.offset().top - getStickyHeight(),257 scrollTop: $tr.offset().top - hCaptchaSettingsBase.getStickyHeight(), 281 258 }, 282 259 1000 -
hcaptcha-for-forms-and-more/tags/4.10.0/assets/js/integrations.min.js
r3215681 r3233179 1 (()=>{function t(t,a){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var a=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=a){var n,i,o,r,c=[],s=!0,l=!1;try{if(o=(a=a.call(t)).next,0===e){if(Object(a)!==a)return;s=!1}else for(;!(s=(n=o.call(a)).done)&&(c.push(n.value),c.length!==e);s=!0);}catch(t){l=!0,i=t}finally{try{if(!s&&null!=a.return&&(r=a.return(),Object(r)!==r))return}finally{if(l)throw i}}return c}}(t,a)||function(t,a){if(t){if("string"==typeof t)return e(t,a);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?e(t,a):void 0}}(t,a)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function e(t,e){(null==e||e>t.length)&&(e=t.length);for(var a=0,n=Array(e);a<e;a++)n[a]=t[a];return n}var a=function(e){var a= document.querySelector("#wpadminbar"),n=document.querySelector(".hcaptcha-settings-tabs"),i=document.querySelector(".hcaptcha-header-bar"),o="#hcaptcha-message",r=e(o),c=e("#wpwrap"),s=e("#adminmenuwrap"),l=e("#hcaptcha-integrations-search");function d(t,a){r.removeClass(),r.addClass(a+" notice settings-error is-dismissible"),r.html("<p>".concat(t,"</p>")),e(document).trigger("wp-updates-notice-added");var n=r.clone();r.css("visibility","hidden"),n.css("margin","0px"),n.css("top",c.position().top),n.css("z-index","999999");var i="block"===s.css("display")?s.width():0;n.css("left",i),n.width(e(window).width()-i),n.css("position","fixed"),e("body").append(n),setTimeout((function(){r.css("visibility","unset"),n.remove()}),3e3)}function h(t){d(t,"notice-error")}function u(t){return t.is(jQuery(".form-table").eq(0))}function f(t,a,n){var i=!1,o=a.toLowerCase(),r=!u(t),c=n.find("fieldset");c.attr("disabled",r),c.find("input").attr("disabled",r),t.find("tbody").children().each((function(t,a){var r=e(a).find(".hcaptcha-integrations-logo img").attr("alt");if((r=(r=r||"").replace(" Logo","")).toLowerCase()>o)return n.insertBefore(e(a)),i=!0,!1})),i||t.find("tbody").append(n)}e(".form-table img").on("click",(function(c){function s(){l(!0)}function l(){var o=arguments.length>0&&void 0!==arguments[0]&&arguments[0],r=v?"on":"off";r=o?"install":r;var c,s,l=(s=document.querySelector(".kagg-dialog select"))&&null!==(c=s.value)&&void 0!==c?c:"",g={action:HCaptchaIntegrationsObject.action,nonce:HCaptchaIntegrationsObject.nonce,install:o,activate:v,entity:p,status:j,newTheme:l};y.addClass(r),e.post({url:HCaptchaIntegrationsObject.ajaxUrl,data:g}).done((function(o){if(void 0!==o.success)if(void 0!==o.data.themes&&(HCaptchaIntegrationsObject.themes=o.data.themes,HCaptchaIntegrationsObject.defaultTheme=o.data.defaultTheme),o.success){var r,c=e(".form-table").eq(v?0:1);!function(t,a,n){if("theme"===a){var i=e(".form-table"),o=t?"":'[data-label="'+n+'"]',r=i.eq(t?0:1).find('.hcaptcha-integrations-logo img[data-entity="theme"]'+o);if(r.length){var c=i.eq(t?1:0),s=r.closest("tr");f(c,r.attr("data-label"),s)}}}(v,p,l),f(c,m,y),function(t){d(t,"notice-success")}(o.data.message),function(a){for(var n=e(".form-table"),i=0,o=Object.entries(a);i<o.length;i++){var r=t(o[i],2),c=r[0],s=r[1],l="hcaptcha-integrations-"+c.replace(/_/g,"-"),d=e("tr.".concat(l)),h=d.find(".hcaptcha-integrations-logo"),g=u(d.closest(".form-table"));s&&h.attr("data-installed",!0),g!==s&&f(n.eq(s?0:1),h.find("img").attr("alt"),d)}}(o.data.stati),e("html, body").animate({scrollTop:y.offset().top-(r=!a||"absolute"===window.getComputedStyle(a).position,(a&&!r?a.offsetHeight:0)+(n?n.offsetHeight:0)+(i?i.offsetHeight:0))},1e3)}else{var s,g;h(null!==(s=null===(g=o.data)||void 0===g?void 0:g.message)&&void 0!==s?s:o.data)}else d(HCaptchaIntegrationsObject.unexpectedErrorMsg,"notice-error")})).fail((function(t){h(t.statusText)})).always((function(){y.removeClass("install on off")}))}c.preventDefault(),r.remove(),e('<div id="hcaptcha-message"></div>').insertAfter(".hcaptcha-header-bar"),r=e(o);var g=e(c.target),p=g.data("entity");if(p=p||"",-1!==e.inArray(p,["core","theme","plugin"])&&-1===e.inArray(p,["core"])){var m=g.attr("alt");m=(m=m||"").replace(" Logo","");var b,v,y=g.closest("tr"),C=y.attr("class").match(/hcaptcha-integrations-([a-z0-9-]+)/),j=C?C[1]:"",O="";if(y.find("fieldset").attr("disabled"))b="plugin"===p?HCaptchaIntegrationsObject.activatePluginMsg:HCaptchaIntegrationsObject.activateThemeMsg,v=!0;else{if("plugin"===p)b=HCaptchaIntegrationsObject.deactivatePluginMsg;else{for(var w in b=HCaptchaIntegrationsObject.deactivateThemeMsg,O="<p>"+HCaptchaIntegrationsObject.selectThemeMsg+"</p>",O+="<select>",HCaptchaIntegrationsObject.themes){var H=w===HCaptchaIntegrationsObject.defaultTheme?' selected="selected"':"";O+='<option value="'.concat(w,'"').concat(H,">").concat(HCaptchaIntegrationsObject.themes[w],"</option>")}O+="</select>"}v=!1}if(-1===e.inArray(p,["theme"])||v||0!==Object.keys(HCaptchaIntegrationsObject.themes).length){if("false"===y.find(".hcaptcha-integrations-logo").attr("data-installed"))return c.ctrlKey?void s():(b=(b="plugin"===p?HCaptchaIntegrationsObject.installPluginMsg:HCaptchaIntegrationsObject.installThemeMsg).replace("%s",m),void kaggDialog.confirm({title:b,content:O,type:"install",buttons:{ok:{text:HCaptchaIntegrationsObject.OKBtnText},cancel:{text:HCaptchaIntegrationsObject.CancelBtnText}},onAction:function(t){t&&s()}}));c.ctrlKey?l():(b=b.replace("%s",m),kaggDialog.confirm({title:b,content:O,type:v?"activate":"deactivate",buttons:{ok:{text:HCaptchaIntegrationsObject.OKBtnText},cancel:{text:HCaptchaIntegrationsObject.CancelBtnText}},onAction:function(t){t&&l()}}))}else kaggDialog.confirm({title:HCaptchaIntegrationsObject.onlyOneThemeMsg,content:"",type:"info",buttons:{ok:{text:HCaptchaIntegrationsObject.OKBtnText}}})}}));var g,p,m;l.on("input",(g=function(){var t=l.val().trim().toLowerCase(),a=e(".hcaptcha-integrations-logo img"),n=null;if(a.each((function(a,i){var o=e(i);if("core"!==o.data("entity")){var r,c=o.closest("tr");o.data("label").toLowerCase().includes(t)?(c.show(),n=null!==(r=n)&&void 0!==r?r:c):c.hide()}})),n){var i=n.offset().top+n.outerHeight()-e(window).height()+5;e("html").stop().animate({scrollTop:i},1e3)}},p=100,function(){var t=this,e=arguments;clearTimeout(m),m=setTimeout((function(){return g.apply(t,e)}),p)})),e("#hcaptcha-options").keydown((function(t){e(t.target).is(l)&&13===t.which&&t.preventDefault()}))};window.hCaptchaIntegrations=a,jQuery(document).ready(a)})();1 (()=>{function t(t,a){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var a=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=a){var n,i,o,r,c=[],s=!0,l=!1;try{if(o=(a=a.call(t)).next,0===e){if(Object(a)!==a)return;s=!1}else for(;!(s=(n=o.call(a)).done)&&(c.push(n.value),c.length!==e);s=!0);}catch(t){l=!0,i=t}finally{try{if(!s&&null!=a.return&&(r=a.return(),Object(r)!==r))return}finally{if(l)throw i}}return c}}(t,a)||function(t,a){if(t){if("string"==typeof t)return e(t,a);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?e(t,a):void 0}}(t,a)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function e(t,e){(null==e||e>t.length)&&(e=t.length);for(var a=0,n=Array(e);a<e;a++)n[a]=t[a];return n}var a=function(e){var a="#hcaptcha-message",n=e(a),i=e("#wpwrap"),o=e("#adminmenuwrap"),r=e("#hcaptcha-integrations-search");function c(t,a){n.removeClass(),n.addClass(a+" notice settings-error is-dismissible"),n.html("<p>".concat(t,"</p>")),e(document).trigger("wp-updates-notice-added");var r=n.clone();n.css("visibility","hidden"),r.css("margin","0px"),r.css("top",i.position().top),r.css("z-index","999999");var c="block"===o.css("display")?o.width():0;r.css("left",c),r.width(e(window).width()-c),r.css("position","fixed"),e("body").append(r),setTimeout((function(){n.css("visibility","unset"),r.remove()}),3e3)}function s(t){c(t,"notice-error")}function l(t){return t.is(jQuery(".form-table").eq(0))}function h(t,a,n){var i=!1,o=a.toLowerCase(),r=!l(t),c=n.find("fieldset");c.attr("disabled",r),c.find("input").attr("disabled",r),t.find("tbody").children().each((function(t,a){var r=e(a).find(".hcaptcha-integrations-logo img").attr("alt");if((r=(r=r||"").replace(" Logo","")).toLowerCase()>o)return n.insertBefore(e(a)),i=!0,!1})),i||t.find("tbody").append(n)}e(".form-table img").on("click",(function(i){function o(){r(!0)}function r(){var a=arguments.length>0&&void 0!==arguments[0]&&arguments[0],n=p?"on":"off";n=a?"install":n;var i,o,r=(o=document.querySelector(".kagg-dialog select"))&&null!==(i=o.value)&&void 0!==i?i:"",d={action:HCaptchaIntegrationsObject.action,nonce:HCaptchaIntegrationsObject.nonce,install:a,activate:p,entity:u,status:b,newTheme:r};m.addClass(n),e.post({url:HCaptchaIntegrationsObject.ajaxUrl,data:d}).done((function(a){if(void 0!==a.success)if(void 0!==a.data.themes&&(HCaptchaIntegrationsObject.themes=a.data.themes,HCaptchaIntegrationsObject.defaultTheme=a.data.defaultTheme),a.success){var n=e(".form-table").eq(p?0:1);!function(t,a,n){if("theme"===a){var i=e(".form-table"),o=t?"":'[data-label="'+n+'"]',r=i.eq(t?0:1).find('.hcaptcha-integrations-logo img[data-entity="theme"]'+o);if(r.length){var c=i.eq(t?1:0),s=r.closest("tr");h(c,r.attr("data-label"),s)}}}(p,u,r),h(n,f,m),function(t){c(t,"notice-success")}(a.data.message),function(a){for(var n=e(".form-table"),i=0,o=Object.entries(a);i<o.length;i++){var r=t(o[i],2),c=r[0],s=r[1],d="hcaptcha-integrations-"+c.replace(/_/g,"-"),u=e("tr.".concat(d)),f=u.find(".hcaptcha-integrations-logo"),g=l(u.closest(".form-table"));s&&f.attr("data-installed",!0),g!==s&&h(n.eq(s?0:1),f.find("img").attr("alt"),u)}}(a.data.stati),e("html, body").animate({scrollTop:m.offset().top-hCaptchaSettingsBase.getStickyHeight()},1e3)}else{var i,o;s(null!==(i=null===(o=a.data)||void 0===o?void 0:o.message)&&void 0!==i?i:a.data)}else c(HCaptchaIntegrationsObject.unexpectedErrorMsg,"notice-error")})).fail((function(t){s(t.statusText)})).always((function(){m.removeClass("install on off")}))}i.preventDefault(),n.remove(),e('<div id="hcaptcha-message"></div>').insertAfter(".hcaptcha-header-bar"),n=e(a);var d=e(i.target),u=d.data("entity");if(u=u||"",-1!==e.inArray(u,["core","theme","plugin"])&&-1===e.inArray(u,["core"])){var f=d.attr("alt");f=(f=f||"").replace(" Logo","");var g,p,m=d.closest("tr"),v=m.attr("class").match(/hcaptcha-integrations-([a-z0-9-]+)/),b=v?v[1]:"",y="";if(m.find("fieldset").attr("disabled"))g="plugin"===u?HCaptchaIntegrationsObject.activatePluginMsg:HCaptchaIntegrationsObject.activateThemeMsg,p=!0;else{if("plugin"===u)g=HCaptchaIntegrationsObject.deactivatePluginMsg;else{for(var C in g=HCaptchaIntegrationsObject.deactivateThemeMsg,y="<p>"+HCaptchaIntegrationsObject.selectThemeMsg+"</p>",y+="<select>",HCaptchaIntegrationsObject.themes){var j=C===HCaptchaIntegrationsObject.defaultTheme?' selected="selected"':"";y+='<option value="'.concat(C,'"').concat(j,">").concat(HCaptchaIntegrationsObject.themes[C],"</option>")}y+="</select>"}p=!1}if(-1===e.inArray(u,["theme"])||p||0!==Object.keys(HCaptchaIntegrationsObject.themes).length){if("false"===m.find(".hcaptcha-integrations-logo").attr("data-installed"))return i.ctrlKey?void o():(g=(g="plugin"===u?HCaptchaIntegrationsObject.installPluginMsg:HCaptchaIntegrationsObject.installThemeMsg).replace("%s",f),void kaggDialog.confirm({title:g,content:y,type:"install",buttons:{ok:{text:HCaptchaIntegrationsObject.OKBtnText},cancel:{text:HCaptchaIntegrationsObject.CancelBtnText}},onAction:function(t){t&&o()}}));i.ctrlKey?r():(g=g.replace("%s",f),kaggDialog.confirm({title:g,content:y,type:p?"activate":"deactivate",buttons:{ok:{text:HCaptchaIntegrationsObject.OKBtnText},cancel:{text:HCaptchaIntegrationsObject.CancelBtnText}},onAction:function(t){t&&r()}}))}else kaggDialog.confirm({title:HCaptchaIntegrationsObject.onlyOneThemeMsg,content:"",type:"info",buttons:{ok:{text:HCaptchaIntegrationsObject.OKBtnText}}})}}));var d,u,f;r.on("input",(d=function(){var t=r.val().trim().toLowerCase(),a=e(".hcaptcha-integrations-logo img"),n=null;if(a.each((function(a,i){var o=e(i);if("core"!==o.data("entity")){var r=o.closest("tr");o.data("label").toLowerCase().includes(t)?(r.show(),n=null!=n?n:r):r.hide()}})),n){var i=n.offset().top+n.outerHeight()-e(window).height()+5;e("html").stop().animate({scrollTop:i},1e3)}},u=100,function(){var t=this,e=arguments;clearTimeout(f),f=setTimeout((function(){return d.apply(t,e)}),u)})),e("#hcaptcha-options").keydown((function(t){e(t.target).is(r)&&13===t.which&&t.preventDefault()}))};window.hCaptchaIntegrations=a,jQuery(document).ready(a)})(); -
hcaptcha-for-forms-and-more/tags/4.10.0/assets/js/settings-base.js
r3200161 r3233179 6 6 * @param {Object} $ jQuery instance. 7 7 */ 8 const settingsBase = function( $ ) { 8 const settingsBase = ( function( $ ) { 9 /** 10 * @type {HTMLElement} 11 */ 12 const adminBar = document.querySelector( '#wpadminbar' ); 13 14 /** 15 * @type {HTMLElement} 16 */ 17 const tabs = document.querySelector( '.hcaptcha-settings-tabs' ); 18 19 /** 20 * @type {HTMLElement} 21 */ 22 const headerBar = document.querySelector( '.hcaptcha-header-bar' ); 23 9 24 const h2Selector = '.hcaptcha-header h2'; 25 const headerBarSelector = '.hcaptcha-header-bar'; 10 26 const msgSelector = '#hcaptcha-message'; 27 let $message = $( msgSelector ); 11 28 12 29 function setHeaderBarTop() { 13 /**14 * @type {HTMLElement}15 */16 const adminBar = document.querySelector( '#wpadminbar' );17 18 /**19 * @type {HTMLElement}20 */21 const tabs = document.querySelector( '.hcaptcha-settings-tabs' );22 23 /**24 * @type {HTMLElement}25 */26 const headerBar = document.querySelector( '.hcaptcha-header-bar' );27 28 30 const isAbsolute = adminBar ? window.getComputedStyle( adminBar ).position === 'absolute' : true; 29 31 const adminBarHeight = ( adminBar && ! isAbsolute ) ? adminBar.offsetHeight : 0; … … 71 73 } 72 74 75 /** 76 * Public properties and functions. 77 */ 78 const app = { 79 getStickyHeight() { 80 const isAbsolute = adminBar ? window.getComputedStyle( adminBar ).position === 'absolute' : true; 81 const adminBarHeight = ( adminBar && ! isAbsolute ) ? adminBar.offsetHeight : 0; 82 const tabsHeight = tabs ? tabs.offsetHeight : 0; 83 const headerBarHeight = headerBar ? headerBar.offsetHeight : 0; 84 85 return adminBarHeight + tabsHeight + headerBarHeight; 86 }, 87 88 clearMessage() { 89 $message.remove(); 90 // Concat below to avoid an inspection message. 91 $( '<div id="hcaptcha-message">' + '</div>' ).insertAfter( headerBarSelector ); 92 $message = $( msgSelector ); 93 }, 94 95 showMessage( message = '', msgClass = '' ) { 96 message = message === undefined ? '' : String( message ); 97 98 if ( ! message ) { 99 return; 100 } 101 102 app.clearMessage(); 103 $message.addClass( msgClass + ' notice is-dismissible' ); 104 105 const messageLines = message.split( '\n' ).map( function( line ) { 106 return `<p>${ line }</p>`; 107 } ); 108 109 $message.html( messageLines.join( '' ) ); 110 111 $( document ).trigger( 'wp-updates-notice-added' ); 112 113 $( 'html, body' ).animate( 114 { 115 scrollTop: $message.offset().top - app.getStickyHeight(), 116 }, 117 1000, 118 ); 119 }, 120 121 showSuccessMessage( message = '' ) { 122 app.showMessage( message, 'notice-success' ); 123 }, 124 125 showErrorMessage( message = '' ) { 126 app.showMessage( message, 'notice-error' ); 127 }, 128 }; 129 73 130 // Move WP notices to the message area. 74 131 $( h2Selector ).siblings().appendTo( msgSelector ); … … 81 138 82 139 highLight(); 83 }; 140 141 return app; 142 }( jQuery ) ); 84 143 85 144 window.hCaptchaSettingsBase = settingsBase; -
hcaptcha-for-forms-and-more/tags/4.10.0/assets/js/settings-base.min.js
r3143189 r3233179 1 (()=>{var e=function(e){ function t(){var e=document.querySelector("#wpadminbar"),t=document.querySelector(".hcaptcha-settings-tabs"),a=document.querySelector(".hcaptcha-header-bar"),o=!e||"absolute"===window.getComputedStyle(e).position,n=e&&!o?e.offsetHeight:0,c=n+(t?t.offsetHeight:0)-1;t&&(t.style.top="".concat(n,"px")),a&&(a.style.top="".concat(c,"px"))}e(".hcaptcha-header h2").siblings().appendTo("#hcaptcha-message"),window.addEventListener("resize",(function(){t()})),t(),function(){var t=window.location.href,a=document.referrer;if(a&&a!==t){var o=window.location.hash;if(o){var n=e(o);n&&(n.is(":checkbox")?n.closest("fieldset").addClass("blink"):n.addClass("blink"))}}}()};window.hCaptchaSettingsBase=e,jQuery(document).ready(e)})();1 (()=>{var e=function(e){var t=document.querySelector("#wpadminbar"),o=document.querySelector(".hcaptcha-settings-tabs"),a=document.querySelector(".hcaptcha-header-bar"),s="#hcaptcha-message",i=e(s);function n(){var e=!t||"absolute"===window.getComputedStyle(t).position,s=t&&!e?t.offsetHeight:0,i=s+(o?o.offsetHeight:0)-1;o&&(o.style.top="".concat(s,"px")),a&&(a.style.top="".concat(i,"px"))}var c={getStickyHeight:function(){var e=!t||"absolute"===window.getComputedStyle(t).position;return(t&&!e?t.offsetHeight:0)+(o?o.offsetHeight:0)+(a?a.offsetHeight:0)},clearMessage:function(){i.remove(),e('<div id="hcaptcha-message"></div>').insertAfter(".hcaptcha-header-bar"),i=e(s)},showMessage:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(t=void 0===t?"":String(t)){c.clearMessage(),i.addClass(o+" notice is-dismissible");var a=t.split("\n").map((function(e){return"<p>".concat(e,"</p>")}));i.html(a.join("")),e(document).trigger("wp-updates-notice-added"),e("html, body").animate({scrollTop:i.offset().top-c.getStickyHeight()},1e3)}},showSuccessMessage:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";c.showMessage(e,"notice-success")},showErrorMessage:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";c.showMessage(e,"notice-error")}};return e(".hcaptcha-header h2").siblings().appendTo(s),window.addEventListener("resize",(function(){n()})),n(),function(){var t=window.location.href,o=document.referrer;if(o&&o!==t){var a=window.location.hash;if(a){var s=e(a);s&&(s.is(":checkbox")?s.closest("fieldset").addClass("blink"):s.addClass("blink"))}}}(),c}(jQuery);window.hCaptchaSettingsBase=e,jQuery(document).ready(e)})(); -
hcaptcha-for-forms-and-more/tags/4.10.0/assets/js/settings-list-page-base.js
r3215681 r3233179 1 /* global HCaptcha FlatPickerObject, flatpickr */1 /* global HCaptchaListPageBaseObject, flatpickr */ 2 2 3 3 /** … … 18 18 selected: 'hcaptcha-is-selected', 19 19 }; 20 const delimiter = HCaptcha FlatPickerObject.delimiter;21 const locale = HCaptcha FlatPickerObject.locale;20 const delimiter = HCaptchaListPageBaseObject.delimiter; 21 const locale = HCaptchaListPageBaseObject.locale; 22 22 let flatPickerObj; 23 23 -
hcaptcha-for-forms-and-more/tags/4.10.0/assets/js/settings-list-page-base.min.js
r3215681 r3233179 1 (()=>{function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e(t)}function t(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function r(e){for(var r=1;r<arguments.length;r++){var a=null!=arguments[r]?arguments[r]:{};r%2?t(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):t(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function n(t,r,n){return(r=function(t){var r=function(t,r){if("object"!=e(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var a=n.call(t,r||"default");if("object"!=e(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}(t,"string");return"symbol"==e(r)?r:r+""}(r))in t?Object.defineProperty(t,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[r]=n,t}document.addEventListener("DOMContentLoaded",(function(){var e=document.getElementById("hcaptcha-datepicker");if(e){var t,n,a="hcaptcha-is-selected",o=HCaptchaFlatPickerObject.delimiter,c=HCaptchaFlatPickerObject.locale,i=document.getElementById("hcaptcha-options"),l=document.querySelector(".hcaptcha-filter"),u=document.getElementById("hcaptcha-datepicker-popover-button"),p=l.querySelector('input[type="radio"][data-default]');document.addEventListener("click",f),i.querySelector("#hcaptcha-datepicker-popover-button").addEventListener("click",d),i.querySelectorAll('[type="radio"]').forEach((function(e){e.addEventListener("change",v)})),i.querySelector('[type="reset"]').addEventListener("click",b),i.addEventListener("submit",s),i.querySelector("#current-page-selector").addEventListener("keydown",y),n=l.querySelector('input[value="custom"]'),t=flatpickr(e,{mode:"range",inline:!0,allowInput:!1,enableTime:!1,clickOpens:!1,altInput:!0,altFormat:"M j, Y",dateFormat:"Y-m-d",locale:r(r({},flatpickr.l10ns[c]||{}),{},{rangeSeparator:o}),onChange:function(e,t,r){n.checked=!0,m(n.parentElement),t&&(u.textContent=r.altInput.value)}}),v({},n.checked)}function s(t){var r;t.preventDefault(),this.querySelectorAll('input[type="radio"]').forEach((function(e){e.name=""})),(r=u.nextElementSibling).setAttribute("aria-expanded","false"),r.style.display="none";var n=new URL(window.location.href),a=n.searchParams;a.delete("date"),e.value&&a.append("date",e.value),window.location.href=n.toString()}function d(e){e.preventDefault(),e.stopPropagation();var t=e.target.nextElementSibling;"none"===t.style.display||""===t.style.display?t.style.display="block":t.style.display="none",t.setAttribute("aria-expanded","block"===t.style.display?"true":"false")}function y(e){if("Enter"===e.key){e.preventDefault();var t=new URL(window.location.href),r=parseInt(t.searchParams.get("paged")),n=parseInt(e.target.value);(isNaN(r)||r<1)&&(r=1),isNaN(n)||n<1||(t.searchParams.delete("paged"),n!==r&&(t.searchParams.set("paged",n.toString()),window.location.href=t.href))}}function f(e){var t=document.querySelector(".hcaptcha-datepicker-popover");t.contains(e.target)||(t.style.display="none")}function m(e){l.querySelectorAll("label").forEach((function(e){e.classList.remove(a)})),e.classList.add(a)}function b(e){e.preventDefault(),p.checked=!0,v()}function v(){var r=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=l.querySelector("input:checked"),a=n.parentElement,c=r?e:n,i=c.value.split(o),p=c.nextElementSibling;u.textContent=r?p.value:a.textContent,m(a),Array.isArray(i)&&2===i.length?t.setDate(i):t.clear()}}))})();1 (()=>{function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e(t)}function t(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function n(e){for(var n=1;n<arguments.length;n++){var a=null!=arguments[n]?arguments[n]:{};n%2?t(Object(a),!0).forEach((function(t){r(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):t(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function r(t,n,r){return(n=function(t){var n=function(t,n){if("object"!=e(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var a=r.call(t,n||"default");if("object"!=e(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===n?String:Number)(t)}(t,"string");return"symbol"==e(n)?n:n+""}(n))in t?Object.defineProperty(t,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[n]=r,t}document.addEventListener("DOMContentLoaded",(function(){var e=document.getElementById("hcaptcha-datepicker");if(e){var t,r,a="hcaptcha-is-selected",o=HCaptchaListPageBaseObject.delimiter,c=HCaptchaListPageBaseObject.locale,i=document.getElementById("hcaptcha-options"),l=document.querySelector(".hcaptcha-filter"),u=document.getElementById("hcaptcha-datepicker-popover-button"),p=l.querySelector('input[type="radio"][data-default]');document.addEventListener("click",f),i.querySelector("#hcaptcha-datepicker-popover-button").addEventListener("click",d),i.querySelectorAll('[type="radio"]').forEach((function(e){e.addEventListener("change",v)})),i.querySelector('[type="reset"]').addEventListener("click",b),i.addEventListener("submit",s),i.querySelector("#current-page-selector").addEventListener("keydown",y),r=l.querySelector('input[value="custom"]'),t=flatpickr(e,{mode:"range",inline:!0,allowInput:!1,enableTime:!1,clickOpens:!1,altInput:!0,altFormat:"M j, Y",dateFormat:"Y-m-d",locale:n(n({},flatpickr.l10ns[c]||{}),{},{rangeSeparator:o}),onChange:function(e,t,n){r.checked=!0,m(r.parentElement),t&&(u.textContent=n.altInput.value)}}),v({},r.checked)}function s(t){var n;t.preventDefault(),this.querySelectorAll('input[type="radio"]').forEach((function(e){e.name=""})),(n=u.nextElementSibling).setAttribute("aria-expanded","false"),n.style.display="none";var r=new URL(window.location.href),a=r.searchParams;a.delete("date"),e.value&&a.append("date",e.value),window.location.href=r.toString()}function d(e){e.preventDefault(),e.stopPropagation();var t=e.target.nextElementSibling;"none"===t.style.display||""===t.style.display?t.style.display="block":t.style.display="none",t.setAttribute("aria-expanded","block"===t.style.display?"true":"false")}function y(e){if("Enter"===e.key){e.preventDefault();var t=new URL(window.location.href),n=parseInt(t.searchParams.get("paged")),r=parseInt(e.target.value);(isNaN(n)||n<1)&&(n=1),isNaN(r)||r<1||(t.searchParams.delete("paged"),r!==n&&(t.searchParams.set("paged",r.toString()),window.location.href=t.href))}}function f(e){var t=document.querySelector(".hcaptcha-datepicker-popover");t.contains(e.target)||(t.style.display="none")}function m(e){l.querySelectorAll("label").forEach((function(e){e.classList.remove(a)})),e.classList.add(a)}function b(e){e.preventDefault(),p.checked=!0,v()}function v(){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=l.querySelector("input:checked"),a=r.parentElement,c=n?e:r,i=c.value.split(o),p=c.nextElementSibling;u.textContent=n?p.value:a.textContent,m(a),Array.isArray(i)&&2===i.length?t.setDate(i):t.clear()}}))})(); -
hcaptcha-for-forms-and-more/tags/4.10.0/changelog.txt
r3215681 r3233179 1 = 4.10.0 = 2 * Added support for wp_login_form() function and LoginOut block. 3 * Added support for hCaptcha in HTML Gravity Forms fields. 4 * Added support for custom nonce action and name in the [hcaptcha] shortcode. 5 * Added compatibility with Cookies and Content Security Policy plugin. 6 * Added auto-verification of arbitrary forms in ajax. 7 * Added deletion of events on the Forms page. 8 * Added deletion of events on the Events page. 9 * Improved error messaging for hCaptcha verification. 10 * Fixed IP detection in the WordPress core via filter. Now syncs with hCaptcha event information when IP collection is activated. 11 * Fixed fatal error with the WPForms plugin in rare cases. 12 * Fixed error message at the first entry to the login page when Hide Login Errors in on. 13 * Fixed scrolling to the message on the General page. 14 * Fixed fatal error during integration installation in some cases. 15 * Fixed the Integrations page when active plugin was deleted. 16 * Fixed error when hCaptcha is disabled for standard login but enabled for LearnPress login. 17 * Fixed error when hCaptcha is disabled for standard login but enabled for Tutor login. 18 * Fixed layout for Forms and Events pages on small screens. 19 1 20 = 4.9.0 = 2 21 * Added LearnPress integration. -
hcaptcha-for-forms-and-more/tags/4.10.0/hcaptcha.php
r3215681 r3233179 11 11 * Plugin URI: https://www.hcaptcha.com/ 12 12 * Description: hCaptcha keeps out bots and spam while putting privacy first. It is a drop-in replacement for reCAPTCHA. 13 * Version: 4. 9.013 * Version: 4.10.0 14 14 * Requires at least: 5.3 15 15 * Requires PHP: 7.2 … … 22 22 * 23 23 * WC requires at least: 3.0 24 * WC tested up to: 9. 324 * WC tested up to: 9.6 25 25 */ 26 26 … … 40 40 * Plugin version. 41 41 */ 42 const HCAPTCHA_VERSION = '4. 9.0';42 const HCAPTCHA_VERSION = '4.10.0'; 43 43 44 44 /** -
hcaptcha-for-forms-and-more/tags/4.10.0/readme.txt
r3215681 r3233179 5 5 Tested up to: 6.7 6 6 Requires PHP: 7.2 7 Stable tag: 4. 9.07 Stable tag: 4.10.0 8 8 License: GPLv2 or later 9 9 License URI: https://www.gnu.org/licenses/gpl-2.0.html … … 112 112 113 113 ` 114 [hcaptcha action="my_hcap_action" name="my_hcap_name" auto="true|false" force="true|false" theme="light|dark|auto" size="normal|compact|invisible"]114 [hcaptcha action="my_hcap_action" name="my_hcap_name" auto="true|false" ajax="true|false" force="true|false" theme="light|dark|auto" size="normal|compact|invisible"] 115 115 ` 116 116 … … 186 186 ` 187 187 [hcaptcha auto="true" force="true"] 188 ` 189 190 Arbitrary forms can also be verified in ajax via the `ajax` argument. There is no need to specify `auto="true"` in this case, as `ajax` implies `auto="true"`. 191 192 ` 193 [hcaptcha ajax="true"] 188 194 ` 189 195 … … 552 558 * Colorlib Customizer Login, Lost Password, and Customizer Register Forms 553 559 * Contact Form 7 560 * Cookies and Content Security Policy 554 561 * Divi Comment, Contact, Email Optin and Login Forms 555 562 * Divi Builder Comment, Contact, Email Optin and Login Forms … … 621 628 == Changelog == 622 629 630 = 4.10.0 = 631 * Added support for wp_login_form() function and LoginOut block. 632 * Added support for hCaptcha in HTML Gravity Forms fields. 633 * Added support for custom nonce action and name in the [hcaptcha] shortcode. 634 * Added compatibility with Cookies and Content Security Policy plugin. 635 * Added auto-verification of arbitrary forms in ajax. 636 * Added deletion of events on the Forms page. 637 * Added deletion of events on the Events page. 638 * Improved error messaging for hCaptcha verification. 639 * Fixed IP detection in the WordPress core via filter. Now syncs with hCaptcha event information when IP collection is activated. 640 * Fixed fatal error with the WPForms plugin in rare cases. 641 * Fixed error message at the first entry to the login page when Hide Login Errors in on. 642 * Fixed scrolling to the message on the General page. 643 * Fixed fatal error during integration installation in some cases. 644 * Fixed the Integrations page when active plugin was deleted. 645 * Fixed error when hCaptcha is disabled for standard login but enabled for LearnPress login. 646 * Fixed error when hCaptcha is disabled for standard login but enabled for Tutor login. 647 * Fixed layout for Forms and Events pages on small screens. 648 623 649 = 4.9.0 = 624 650 * Added LearnPress integration. -
hcaptcha-for-forms-and-more/tags/4.10.0/src/php/Abstracts/LoginBase.php
r3215681 r3233179 159 159 160 160 if ( ! hcaptcha()->settings()->is_on( 'hide_login_errors' ) ) { 161 return $user; 162 } 163 164 $ignore_codes = [ 'empty_username', 'empty_password' ]; 165 166 if ( in_array( $user->get_error_code(), $ignore_codes, true ) ) { 161 167 return $user; 162 168 } -
hcaptcha-for-forms-and-more/tags/4.10.0/src/php/Admin/Events/Events.php
r3215681 r3233179 234 234 "SELECT 235 235 SQL_CALC_FOUND_ROWS 236 source, form_id, COUNT(*) as served236 id, source, form_id, COUNT(*) as served 237 237 FROM $table_name 238 238 WHERE $where_date -
hcaptcha-for-forms-and-more/tags/4.10.0/src/php/Admin/Events/EventsTable.php
r3215681 r3233179 9 9 10 10 use HCaptcha\Settings\ListPageBase; 11 use WP_List_Table;12 13 // If this file is called directly, abort.14 if ( ! defined( 'ABSPATH' ) ) {15 // @codeCoverageIgnoreStart16 exit;17 // @codeCoverageIgnoreEnd18 }19 20 if ( ! class_exists( 'WP_List_Table', false ) ) {21 // IMPORTANT NOTICE:22 // This line is needed to prevent fatal errors in the third-party plugins.23 // We know that Jetpack (probably others also) can load WP classes during cron jobs.24 require_once ABSPATH . 'wp-admin/includes/class-wp-list-table.php';25 }26 11 27 12 /** 28 13 * List events in the table. 29 14 */ 30 class EventsTable extends WP_List_Table { 31 32 /** 33 * Events per page option. 34 */ 35 private const EVENTS_PER_PAGE = 'hcaptcha_events_per_page'; 36 37 /** 38 * Plugin page hook. 39 * 40 * @var string 41 */ 42 private $plugin_page_hook; 43 44 /** 45 * Default number of events to show per page. 46 * 47 * @var int 48 */ 49 public $per_page_default = 20; 15 class EventsTable extends TableBase { 16 17 /** 18 * Singular table name. 19 */ 20 protected const SINGULAR = 'event'; 21 22 /** 23 * Plural table name. 24 */ 25 protected const PLURAL = 'events'; 26 27 /** 28 * Items per page option. 29 */ 30 protected const ITEMS_PER_PAGE = 'hcaptcha_events_per_page'; 50 31 51 32 /** … … 55 36 */ 56 37 private $datetime_format = []; 57 58 /**59 * Columns.60 *61 * @var array62 */63 private $columns;64 65 /**66 * Plugins installed.67 *68 * @var array[]69 */70 private $plugins;71 72 /**73 * Class constructor.74 *75 * @param string $plugin_page_hook Plugin page hook.76 */77 public function __construct( string $plugin_page_hook ) {78 parent::__construct(79 [80 'singular' => 'event',81 'plural' => 'events',82 'screen' => $plugin_page_hook,83 ]84 );85 86 $this->plugin_page_hook = $plugin_page_hook;87 88 $this->init();89 }90 38 91 39 /** … … 101 49 102 50 $this->columns = [ 51 'cb' => '<input type="checkbox" />', 103 52 'name' => __( 'Source', 'hcaptcha-for-forms-and-more' ), 104 53 'form_id' => __( 'Form Id', 'hcaptcha-for-forms-and-more' ), … … 109 58 ]; 110 59 111 $this->plugins = get_plugins(); 112 113 add_action( 'load-' . $this->plugin_page_hook, [ $this, 'add_screen_option' ] ); 114 add_filter( 'set_screen_option_' . self::EVENTS_PER_PAGE, [ $this, 'set_screen_option' ], 10, 3 ); 115 116 set_screen_options(); 117 } 118 119 /** 120 * Add screen options. 121 * 122 * @return void 123 */ 124 public function add_screen_option(): void { 125 $args = [ 126 'label' => __( 'Number of items per page:', 'hcaptcha-for-forms-and-more' ), 127 'default' => $this->per_page_default, 128 'option' => self::EVENTS_PER_PAGE, 129 ]; 130 131 add_screen_option( 'per_page', $args ); 132 } 133 134 /** 135 * Set screen option. 136 * 137 * @param mixed $screen_option The value to save instead of the option value. 138 * Default false (to skip saving the current option). 139 * @param string $option The option name. 140 * @param mixed $value The option value. 141 * 142 * @return mixed 143 * @noinspection PhpUnusedParameterInspection 144 */ 145 public function set_screen_option( $screen_option, string $option, $value ) { 146 return $value; 147 } 148 149 /** 150 * Retrieve the table columns. 151 * 152 * @return array Array of all the list table columns. 153 */ 154 public function get_columns(): array { 155 return $this->columns; 60 parent::init(); 156 61 } 157 62 … … 187 92 /** 188 93 * Fetch and set up the final data for the table. 94 * 95 * @return void 189 96 */ 190 97 public function prepare_items(): void { … … 204 111 $dates = explode( ListPageBase::TIMESPAN_DELIMITER, $date ); 205 112 $dates = array_filter( array_map( 'trim', $dates ) ); 206 $column_slugs = str_replace( 'name', 'source', array_keys( $this->columns ) );207 $per_page = $this->get_items_per_page( self:: EVENTS_PER_PAGE, $this->per_page_default );113 $column_slugs = str_replace( [ 'cb', 'name' ], [ 'id', 'source' ], array_keys( $this->columns ) ); 114 $per_page = $this->get_items_per_page( self::ITEMS_PER_PAGE, $this->per_page_default ); 208 115 $offset = ( $paged - 1 ) * $per_page; 209 116 $args = [ … … 230 137 231 138 /** 232 * Column Source.233 * Has 'name' slug not to be hidden.234 * WP has no filter for special columns.235 *236 * @see \WP_Screen::render_list_table_columns_preferences.237 *238 * @param object $item Item.239 *240 * @noinspection PhpUnused PhpUnused.241 */242 protected function column_name( object $item ): string {243 $source = (array) json_decode( $item->source, true );244 245 foreach ( $source as &$slug ) {246 if ( 'WordPress' === $slug ) {247 continue;248 }249 250 if ( false === strpos( $slug, '/' ) ) {251 continue;252 }253 254 $slug = isset( $this->plugins[ $slug ] ) ? $this->plugins[ $slug ]['Name'] : $slug;255 }256 257 unset( $slug );258 259 return $this->excerpt( implode( ', ', $source ), 15 );260 }261 262 /**263 139 * Column IP. 264 140 * … … 324 200 ); 325 201 } 326 327 /**328 * Column default.329 *330 * @param object $item Item.331 * @param string $column_name Column name.332 */333 protected function column_default( $item, $column_name ): string {334 return (string) $item->$column_name;335 }336 337 /**338 * Excerpt text.339 *340 * @param string $text Text.341 * @param int $length Excerpt length.342 *343 * @return string344 */345 private function excerpt( string $text, int $length = 35 ): string {346 $excerpt = mb_substr( $text, 0, $length );347 348 ob_start();349 350 ?>351 <span class="hcaptcha-excerpt"><?php echo esc_html( $excerpt ); ?>352 <span class="hcaptcha-hide"><?php echo esc_html( $text ); ?></span>353 </span>354 <?php355 356 return ob_get_clean();357 }358 202 } -
hcaptcha-for-forms-and-more/tags/4.10.0/src/php/Admin/Events/FormsTable.php
r3185570 r3233179 9 9 10 10 use HCaptcha\Settings\ListPageBase; 11 use WP_List_Table;12 13 // If this file is called directly, abort.14 if ( ! defined( 'ABSPATH' ) ) {15 // @codeCoverageIgnoreStart16 exit;17 // @codeCoverageIgnoreEnd18 }19 20 if ( ! class_exists( 'WP_List_Table', false ) ) {21 // IMPORTANT NOTICE:22 // This line is needed to prevent fatal errors in the third-party plugins.23 // We know that Jetpack (probably others also) can load WP classes during cron jobs.24 require_once ABSPATH . 'wp-admin/includes/class-wp-list-table.php';25 }26 11 27 12 /** 28 13 * List forms in the table. 29 14 */ 30 class FormsTable extends WP_List_Table {15 class FormsTable extends TableBase { 31 16 32 17 /** 33 * Forms per page option.18 * Singular table name. 34 19 */ 35 pr ivate const FORMS_PER_PAGE = 'hcaptcha_forms_per_page';20 protected const SINGULAR = 'form'; 36 21 37 22 /** 38 * Plugin page hook. 39 * 40 * @var string 23 * Plural table name. 41 24 */ 42 pr ivate $plugin_page_hook;25 protected const PLURAL = 'forms'; 43 26 44 27 /** 45 * Default number of forms to show per page. 46 * 47 * @var int 28 * Items per page option. 48 29 */ 49 p ublic $per_page_default = 20;30 protected const ITEMS_PER_PAGE = 'hcaptcha_forms_per_page'; 50 31 51 32 /** … … 57 38 58 39 /** 59 * Columns.60 *61 * @var array62 */63 private $columns;64 65 /**66 * Plugins installed.67 *68 * @var array[]69 */70 private $plugins;71 72 /**73 * Class constructor.74 *75 * @param string $plugin_page_hook Plugin page hook.76 */77 public function __construct( string $plugin_page_hook ) {78 parent::__construct(79 [80 'singular' => 'form',81 'plural' => 'forms',82 'screen' => $plugin_page_hook,83 ]84 );85 86 $this->plugin_page_hook = $plugin_page_hook;87 88 $this->init();89 }90 91 /**92 40 * Init class. 93 41 * … … 96 44 public function init(): void { 97 45 $this->columns = [ 46 'cb' => '<input type="checkbox" />', 98 47 'name' => __( 'Source', 'hcaptcha-for-forms-and-more' ), 99 48 'form_id' => __( 'Form Id', 'hcaptcha-for-forms-and-more' ), … … 101 50 ]; 102 51 103 $this->plugins = get_plugins(); 104 105 add_action( 'load-' . $this->plugin_page_hook, [ $this, 'add_screen_option' ] ); 106 add_filter( 'set_screen_option_' . self::FORMS_PER_PAGE, [ $this, 'set_screen_option' ], 10, 3 ); 107 108 set_screen_options(); 109 } 110 111 /** 112 * Add screen options. 113 * 114 * @return void 115 */ 116 public function add_screen_option(): void { 117 $args = [ 118 'label' => __( 'Number of items per page:', 'hcaptcha-for-forms-and-more' ), 119 'default' => $this->per_page_default, 120 'option' => self::FORMS_PER_PAGE, 121 ]; 122 123 add_screen_option( 'per_page', $args ); 124 } 125 126 /** 127 * Set screen option. 128 * 129 * @param mixed $screen_option The value to save instead of the option value. 130 * Default false (to skip saving the current option). 131 * @param string $option The option name. 132 * @param mixed $value The option value. 133 * 134 * @return mixed 135 * @noinspection PhpUnusedParameterInspection 136 */ 137 public function set_screen_option( $screen_option, string $option, $value ) { 138 return $value; 139 } 140 141 /** 142 * Retrieve the table columns. 143 * 144 * @return array Array of all the list table columns. 145 */ 146 public function get_columns(): array { 147 return $this->columns; 52 parent::init(); 148 53 } 149 54 … … 197 102 $dates = explode( ListPageBase::TIMESPAN_DELIMITER, $date ); 198 103 $dates = array_filter( array_map( 'trim', $dates ) ); 199 $per_page = $this->get_items_per_page( self:: FORMS_PER_PAGE, $this->per_page_default );104 $per_page = $this->get_items_per_page( self::ITEMS_PER_PAGE, $this->per_page_default ); 200 105 $offset = ( $paged - 1 ) * $per_page; 201 106 $args = [ … … 220 125 ); 221 126 } 222 223 /**224 * Column Source.225 * Has 'name' slug not to be hidden.226 * WP has no filter for special columns.227 *228 * @see \WP_Screen::render_list_table_columns_preferences.229 *230 * @param object $item Item.231 *232 * @noinspection PhpUnused PhpUnused.233 */234 protected function column_name( object $item ): string {235 $source = (array) json_decode( $item->source, true );236 237 foreach ( $source as &$slug ) {238 if ( 'WordPress' === $slug ) {239 continue;240 }241 242 if ( false === strpos( $slug, '/' ) ) {243 continue;244 }245 246 $slug = isset( $this->plugins[ $slug ] ) ? $this->plugins[ $slug ]['Name'] : $slug;247 }248 249 unset( $slug );250 251 return $this->excerpt( implode( ', ', $source ), 15 );252 }253 254 /**255 * Column default.256 *257 * @param object $item Item.258 * @param string $column_name Column name.259 */260 protected function column_default( $item, $column_name ): string {261 return (string) $item->$column_name;262 }263 264 /**265 * Excerpt text.266 *267 * @param string $text Text.268 * @param int $length Excerpt length.269 *270 * @return string271 */272 private function excerpt( string $text, int $length = 35 ): string {273 $excerpt = mb_substr( $text, 0, $length );274 275 ob_start();276 277 ?>278 <span class="hcaptcha-excerpt"><?php echo esc_html( $excerpt ); ?>279 <span class="hcaptcha-hide"><?php echo esc_html( $text ); ?></span>280 </span>281 <?php282 283 return ob_get_clean();284 }285 127 } -
hcaptcha-for-forms-and-more/tags/4.10.0/src/php/AutoVerify/AutoVerify.php
r3129246 r3233179 8 8 namespace HCaptcha\AutoVerify; 9 9 10 use HCaptcha\Helpers\HCaptcha; 10 11 use HCaptcha\Helpers\Request; 11 12 use WP_Widget_Block; … … 22 23 23 24 /** 25 * Script handle. 26 */ 27 public const HANDLE = 'hcaptcha-auto-verify'; 28 29 /** 30 * Script localization object. 31 */ 32 public const OBJECT = 'HCaptchaAutoVerifyObject'; 33 34 /** 35 * The hCaptcha forms registry. 36 * 37 * @var array 38 */ 39 protected $registry = []; 40 41 /** 24 42 * Init class. 25 43 * … … 36 54 */ 37 55 private function init_hooks(): void { 38 add_action( 'init', [ $this, 'verify _form' ], - PHP_INT_MAX );56 add_action( 'init', [ $this, 'verify' ], - PHP_INT_MAX ); 39 57 add_filter( 'the_content', [ $this, 'content_filter' ], PHP_INT_MAX ); 40 58 add_filter( 'widget_block_content', [ $this, 'widget_block_content_filter' ], PHP_INT_MAX, 3 ); 41 59 add_action( 'hcap_auto_verify_register', [ $this, 'content_filter' ] ); 60 add_action( 'hcap_register_form', [ $this, 'register_hcaptcha' ] ); 61 add_action( 'wp_print_footer_scripts', [ $this, 'enqueue_scripts' ], 9 ); 42 62 } 43 63 … … 68 88 69 89 /** 90 * Register hCaptcha form. 91 * 92 * @param array|mixed $args Arguments. 93 * 94 * @return void 95 */ 96 public function register_hcaptcha( $args ): void { 97 if ( ! is_array( $args ) ) { 98 return; 99 } 100 101 $widget_id = HCaptcha::widget_id_value( $args['id'] ?? [] ); 102 103 $this->registry[ $widget_id ] = $args; 104 } 105 106 /** 107 * Enqueue scripts. 108 * 109 * @return void 110 */ 111 public function enqueue_scripts(): void { 112 if ( ! array_filter( array_column( $this->registry ?? [], 'ajax' ) ) ) { 113 return; 114 } 115 116 $min = hcap_min_suffix(); 117 118 wp_enqueue_script( 119 self::HANDLE, 120 constant( 'HCAPTCHA_URL' ) . "/assets/js/hcaptcha-auto-verify$min.js", 121 [ 'jquery' ], 122 constant( 'HCAPTCHA_VERSION' ), 123 true 124 ); 125 126 wp_localize_script( 127 self::HANDLE, 128 self::OBJECT, 129 [ 130 'successMsg' => __( 'The form was submitted successfully.', 'hcaptcha-for-forms-and-more' ), 131 ] 132 ); 133 134 wp_enqueue_script( 'hcaptcha' ); 135 } 136 137 /** 70 138 * Verify a form automatically. 71 139 * … … 73 141 * @noinspection ForgottenDebugOutputInspection 74 142 */ 75 public function verify _form(): void {143 public function verify(): void { 76 144 if ( ! Request::is_post() || ! Request::is_frontend() ) { 77 145 return; … … 84 152 } 85 153 86 if ( ! $this->is_form_registered( $path ) ) { 154 $registered_form = $this->get_registered_form( $path ); 155 156 if ( null === $registered_form ) { 87 157 return; 88 158 } 89 159 90 $result = hcaptcha_verify_post(); 160 $args = $registered_form['args'] ?? []; 161 $action = $args['action'] ?? ''; 162 $name = $args['name'] ?? ''; 163 $ajax = $args['ajax'] ?? ''; 164 $result = hcaptcha_verify_post( $name, $action ); 165 166 if ( $ajax ) { 167 add_filter( 'wp_doing_ajax', '__return_true' ); 168 } 91 169 92 170 if ( null !== $result ) { 93 171 $_POST = []; 172 94 173 wp_die( 95 174 esc_html( $result ), … … 119 198 } 120 199 200 $widget_id_value = $this->get_widget_id_value( $form ); 201 $args = $this->registry[ $widget_id_value ] ?? []; 202 121 203 $forms_data[] = [ 122 204 'action' => $action, 123 205 'inputs' => $this->get_visible_input_names( $form ), 124 'a uto' => $this->is_form_auto( $form ),206 'args' => $args, 125 207 ]; 126 208 } … … 139 221 $form_action = ''; 140 222 141 if ( preg_match( '#<form [\S\s]*?action="(.*?)"[\S\s]*?>#', $form, $m ) ) {223 if ( preg_match( '#<form\s[\S\s]*?action="(.*?)"[\S\s]*?>#', $form, $m ) ) { 142 224 $form_action = $m[1]; 143 225 } … … 146 228 147 229 return $this->get_path( $form_action ); 230 } 231 232 /** 233 * Get widget id value. 234 * 235 * @param string $form Form. 236 * 237 * @return string 238 */ 239 private function get_widget_id_value( string $form ): string { 240 $widget_id_value = ''; 241 242 if ( preg_match( '#<input\s[\S\s]*?name="hcaptcha-widget-id"\s[\S\s]*?value="(.*?)"[\S\s]*?>#', $form, $m ) ) { 243 $widget_id_value = $m[1]; 244 } 245 246 return $widget_id_value; 148 247 } 149 248 … … 229 328 230 329 /** 231 * Get form auto.232 *233 * @param string $form Form.234 *235 * @return string|null236 */237 private function get_form_auto( string $form ): ?string {238 if ( preg_match( '#class="h-captcha"[\S\s]+?data-auto="(.*)"[\S\s]*?>#', $form, $matches ) ) {239 return $matches[1];240 }241 242 return null;243 }244 245 /**246 * Check if the form is auto.247 *248 * @param string $form Form.249 *250 * @return bool251 */252 private function is_form_auto( string $form ): bool {253 return 'true' === $this->get_form_auto( $form );254 }255 256 /**257 330 * Update form data in transient. 258 331 * … … 264 337 265 338 foreach ( $forms_data as $form_data ) { 339 $data = $form_data; 266 340 $action = $form_data['action']; 267 $inputs = $form_data['inputs']; 268 $auto = $form_data['auto']; 269 270 $key = isset( $registered_forms[ $action ] ) ? 271 array_search( $inputs, $registered_forms[ $action ], true ) : 272 false; 341 342 unset( $data['action'] ); 343 344 $inputs = $data['inputs']; 345 $args = $data['args']; 346 $auto = $args['auto']; 347 348 $key = false; 349 $action_forms = $registered_forms[ $action ] ?? []; 350 351 foreach ( $action_forms as $index => $action_form ) { 352 if ( $inputs === $action_form['inputs'] ) { 353 $key = $index; 354 break; 355 } 356 } 273 357 274 358 $registered = false !== $key; 275 359 276 if ( $auto && ! $registered ) { 277 $registered_forms[ $action ][] = $inputs; 278 } 279 280 if ( ! $auto && $registered ) { 360 if ( $auto ) { 361 if ( $registered ) { 362 $registered_forms[ $action ][ $key ] = $data; 363 } else { 364 $registered_forms[ $action ][] = $data; 365 } 366 367 continue; 368 } 369 370 if ( $registered ) { 281 371 unset( $registered_forms[ $action ][ $key ] ); 282 372 } … … 292 382 293 383 /** 294 * Is the form registered?384 * Get registered form. 295 385 * 296 386 * @param string $path URL path. 297 387 * 298 * @return bool299 */ 300 protected function is_form_registered( string $path ): bool{388 * @return array|null 389 */ 390 protected function get_registered_form( string $path ): ?array { 301 391 $registered_forms = get_transient( self::TRANSIENT ); 302 392 303 393 if ( empty( $registered_forms ) ) { 304 return false;394 return null; 305 395 } 306 396 307 397 if ( ! isset( $registered_forms[ $path ] ) ) { 308 return false; 309 } 398 return null; 399 } 400 401 // Nonce is verified later, in hcaptcha_verify_post(). 402 // phpcs:ignore WordPress.Security.NonceVerification.Missing 403 $post_keys = array_keys( $_POST ); 310 404 311 405 foreach ( $registered_forms[ $path ] as $registered_form ) { 312 // Nonce is verified later, in hcaptcha_verify_post(). 313 // phpcs:ignore WordPress.Security.NonceVerification.Missing 314 if ( ! empty( array_intersect( array_keys( $_POST ), $registered_form ) ) ) { 315 return true; 316 } 317 } 318 319 return false; 406 $inputs = $registered_form['inputs'] ?? []; 407 408 // Make sure that all inputs are present in the $_POST array. 409 if ( $inputs && ! array_diff( $inputs, $post_keys ) ) { 410 return $registered_form; 411 } 412 } 413 414 return null; 320 415 } 321 416 -
hcaptcha-for-forms-and-more/tags/4.10.0/src/php/ClassifiedListing/Login.php
r3114572 r3233179 37 37 * 38 38 * @return WP_User|WP_Error 39 * @noinspection PhpUnusedParameterInspection40 39 */ 41 40 public function verify( $user, string $password ) { … … 45 44 } 46 45 47 if ( ! $this->is_login_limit_exceeded() ) { 48 return $user; 49 } 50 51 $error_message = hcaptcha_verify_post( 52 self::NONCE, 53 self::ACTION 54 ); 55 56 if ( null === $error_message ) { 57 return $user; 58 } 59 60 $code = array_search( $error_message, hcap_get_error_messages(), true ) ?: 'fail'; 61 62 return new WP_Error( $code, $error_message, 400 ); 46 return $this->login_base_verify( $user, $password ); 63 47 } 64 48 } -
hcaptcha-for-forms-and-more/tags/4.10.0/src/php/GravityForms/Base.php
r3114572 r3233179 16 16 * Nonce action. 17 17 */ 18 public const ACTION = 'gravity_forms _form';18 public const ACTION = 'gravity_forms'; 19 19 20 20 /** 21 21 * Nonce name. 22 22 */ 23 public const NONCE = 'gravity_forms_ form_nonce';23 public const NONCE = 'gravity_forms_nonce'; 24 24 } -
hcaptcha-for-forms-and-more/tags/4.10.0/src/php/GravityForms/Form.php
r3114572 r3233179 46 46 47 47 /** 48 * Current form id. 49 * 50 * @var int 51 */ 52 protected $form_id = 0; 53 54 /** 48 55 * Constructor. 49 56 */ … … 62 69 63 70 if ( $this->mode_auto ) { 64 add_filter( 'gform_submit_button', [ $this, 'add_captcha' ], 10, 2 ); 65 } 71 add_filter( 'gform_submit_button', [ $this, 'add_hcaptcha' ], 10, 2 ); 72 } 73 74 add_filter( 'gform_form_after_open', [ $this, 'gform_open' ], 10, 2 ); 75 add_filter( 'gform_get_form_filter', [ $this, 'gform_close' ], 10, 2 ); 66 76 67 77 add_filter( 'gform_validation', [ $this, 'verify' ], 10, 2 ); … … 80 90 * @noinspection PhpUnusedParameterInspection 81 91 */ 82 public function add_ captcha( $button_input, array $form ): string {92 public function add_hcaptcha( $button_input, array $form ): string { 83 93 if ( is_admin() ) { 84 94 return $button_input; … … 87 97 $form_id = $form['id'] ?? 0; 88 98 89 if ( $this-> mode_embed && $this->has_hcaptcha( $form_id ) ) {99 if ( $this->has_hcaptcha( $form_id ) ) { 90 100 return $button_input; 91 101 } 92 102 93 $args = [ 94 'action' => self::ACTION, 95 'name' => self::NONCE, 96 'id' => [ 97 'source' => HCaptcha::get_class_source( __CLASS__ ), 98 'form_id' => $form_id, 99 ], 100 ]; 101 102 return HCaptcha::form( $args ) . $button_input; 103 return HCaptcha::form() . $button_input; 104 } 105 106 /** 107 * Add hCaptcha args filter on opening the form. 108 * 109 * @param string|mixed $markup The current string to append. 110 * @param array $form The form being displayed. 111 * 112 * @return string 113 */ 114 public function gform_open( $markup, array $form ): string { 115 $this->form_id = (int) ( $form['id'] ?? 0 ); 116 117 add_filter( 'hcap_form_args', [ $this, 'hcap_form_args' ] ); 118 119 return (string) $markup; 120 } 121 122 /** 123 * Remove hCaptcha args filter on closing the form. 124 * 125 * @param string|mixed $form_string The current form string. 126 * @param array $form The form being displayed. 127 * 128 * @return string 129 * @noinspection PhpMissingParamTypeInspection 130 * @noinspection PhpUnusedParameterInspection 131 */ 132 public function gform_close( $form_string, $form ): string { 133 $this->form_id = 0; 134 135 remove_filter( 'hcap_form_args', [ $this, 'hcap_form_args' ] ); 136 137 return (string) $form_string; 138 } 139 140 /** 141 * Filter hCaptcha from args on form. 142 * 143 * @param array|mixed $args The form arguments. 144 * 145 * @return array 146 */ 147 public function hcap_form_args( $args ): array { 148 $args = (array) $args; 149 150 return array_merge( 151 $args, 152 [ 153 'action' => self::ACTION, 154 'name' => self::NONCE, 155 'id' => [ 156 'source' => HCaptcha::get_class_source( __CLASS__ ), 157 'form_id' => $this->form_id, 158 ], 159 ] 160 ); 103 161 } 104 162 … … 297 355 298 356 if ( 299 0 !== (int) $_POST[ $target_page_name ]&&357 0 !== $target_page && 300 358 $target_page !== $source_page && 301 359 isset( … … 316 374 } 317 375 318 if ( $this-> mode_embed && $this->has_hcaptcha( $form_id ) ) {319 // In embed mode, verify only a form having hCaptcha field.376 if ( $this->has_hcaptcha( $form_id ) ) { 377 // Verify only a form having hCaptcha field. 320 378 return true; 321 379 } … … 341 399 342 400 foreach ( $form['fields'] as $field ) { 343 if ( in_array( $field->type, $captcha_types, true ) ) { 401 $type = $field->type ?? ''; 402 $content = $field->content ?? ''; 403 404 if ( 405 ( $this->mode_embed && in_array( $type, $captcha_types, true ) ) || 406 has_shortcode( $content, 'hcaptcha' ) 407 ) { 344 408 return true; 345 409 } -
hcaptcha-for-forms-and-more/tags/4.10.0/src/php/Helpers/HCaptcha.php
r3200161 r3233179 78 78 'name' => '', // Nonce name for wp_nonce_field. 79 79 'auto' => false, // Whether a form has to be auto-verified. 80 'ajax' => false, // Whether a form has to be auto-verified in ajax. 80 81 'force' => $hcaptcha_force, // Whether to execute hCaptcha widget before submit (like for invisible). 81 82 'theme' => $hcaptcha_theme, // The hCaptcha theme. … … 96 97 97 98 /** 98 * Filters the form arguments.99 * Filters the hCaptcha form arguments. 99 100 * 100 * @param array $args The form arguments.101 * @param array $args The hCaptcha form arguments. 101 102 */ 102 103 $args = (array) apply_filters( 'hcap_form_args', $args ); … … 104 105 $args['action'] = (string) $args['action']; 105 106 $args['name'] = (string) $args['name']; 106 $args['auto'] = filter_var( $args['auto'], FILTER_VALIDATE_BOOLEAN ); 107 $auto = filter_var( $args['auto'], FILTER_VALIDATE_BOOLEAN ); 108 $args['ajax'] = filter_var( $args['ajax'], FILTER_VALIDATE_BOOLEAN ); 109 $args['auto'] = $args['ajax'] ? true : $auto; // Auto-verify in ajax. 107 110 $args['force'] = filter_var( $args['force'], FILTER_VALIDATE_BOOLEAN ); 108 111 $args['theme'] = in_array( (string) $args['theme'], $allowed_themes, true ) ? (string) $args['theme'] : $hcaptcha_theme; … … 110 113 $args['size'] = in_array( (string) $args['size'], $allowed_sizes, true ) ? (string) $args['size'] : $hcaptcha_size; 111 114 $args['id'] = (array) $args['id']; 115 $id = $args['id']; 116 $source = empty( $id['source'] ) ? self::$default_id['source'] : $id['source']; 117 $form_id = $id['form_id'] ?? self::$default_id['form_id']; 118 $id = [ 119 'source' => $source, 120 'form_id' => $form_id, 121 ]; 122 $args['id'] = $id; 112 123 $args['protect'] = filter_var( $args['protect'], FILTER_VALIDATE_BOOLEAN ); 113 124 114 $id = wp_parse_args( 115 $args['id'], 116 self::$default_id 117 ); 125 /** 126 * Register hCaptcha form. 127 * 128 * @param array $args The hCaptcha form arguments. 129 */ 130 do_action( 'hcap_register_form', $args ); 118 131 119 132 self::display_widget( $id ); … … 142 155 data-size="<?php echo esc_attr( $args['size'] ); ?>" 143 156 data-auto="<?php echo $args['auto'] ? 'true' : 'false'; ?>" 157 data-ajax="<?php echo $args['ajax'] ? 'true' : 'false'; ?>" 144 158 data-force="<?php echo $args['force'] ? 'true' : 'false'; ?>"> 145 159 </h-captcha> … … 152 166 153 167 /** 154 * Display widget.168 * Get widget id value. 155 169 * 156 170 * @param array $id The hCaptcha widget id. 157 171 * 158 * @return void159 */ 160 p rivate static function display_widget( array $id ): void{172 * @return string 173 */ 174 public static function widget_id_value( array $id ): string { 161 175 $id['source'] = (array) ( $id['source'] ?? [] ); 162 176 $id['form_id'] = $id['form_id'] ?? 0; … … 164 178 // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_encode 165 179 $encoded_id = base64_encode( wp_json_encode( $id ) ); 166 $widget_id = $encoded_id . '-' . wp_hash( $encoded_id ); 167 180 181 return $encoded_id . '-' . wp_hash( $encoded_id ); 182 } 183 184 /** 185 * Display widget. 186 * 187 * @param array $id The hCaptcha widget id. 188 * 189 * @return void 190 */ 191 private static function display_widget( array $id ): void { 168 192 ?> 169 193 <input … … 171 195 class="<?php echo esc_attr( self::HCAPTCHA_WIDGET_ID ); ?>" 172 196 name="<?php echo esc_attr( self::HCAPTCHA_WIDGET_ID ); ?>" 173 value="<?php echo esc_attr( $widget_id); ?>">197 value="<?php echo esc_attr( self::widget_id_value( $id ) ); ?>"> 174 198 <?php 175 199 } -
hcaptcha-for-forms-and-more/tags/4.10.0/src/php/LearnPress/Login.php
r3215681 r3233179 9 9 10 10 use HCaptcha\Abstracts\LoginBase; 11 use HCaptcha\Helpers\HCaptcha; 12 use WP_Error; 13 use WP_User; 11 14 12 15 /** … … 24 27 25 28 add_action( 'login_form', [ $this, 'add_captcha' ] ); 26 add_filter( 'wp_authenticate_user', [ $this, ' login_base_verify' ], PHP_INT_MAX, 2 );29 add_filter( 'wp_authenticate_user', [ $this, 'verify' ], 10, 2 ); 27 30 } 28 31 … … 39 42 parent::add_captcha(); 40 43 } 44 45 /** 46 * Verify a login form. 47 * 48 * @param WP_User|WP_Error $user WP_User or WP_Error object 49 * if a previous callback failed authentication. 50 * @param string $password Password to check against the user. 51 * 52 * @return WP_User|WP_Error 53 */ 54 public function verify( $user, string $password ) { 55 if ( ! $this->is_learn_press_form() ) { 56 return $user; 57 } 58 59 return $this->login_base_verify( $user, $password ); 60 } 61 62 /** 63 * Whether we process the Learn Press login form. 64 * 65 * @return bool 66 */ 67 private function is_learn_press_form(): bool { 68 return HCaptcha::did_filter( 'learnpress_login_credentials' ); 69 } 41 70 } -
hcaptcha-for-forms-and-more/tags/4.10.0/src/php/LearnPress/Register.php
r3215681 r3233179 68 68 * 69 69 * @return void 70 * @noinspection PhpUndefinedFunctionInspection 70 71 */ 71 72 public function verify(): void { -
hcaptcha-for-forms-and-more/tags/4.10.0/src/php/Main.php
r3215681 r3233179 18 18 use HCaptcha\AutoVerify\AutoVerify; 19 19 use HCaptcha\CF7\Admin; 20 use HCaptcha\CACSP\Compatibility; 20 21 use HCaptcha\CF7\CF7; 21 22 use HCaptcha\DelayedScript\DelayedScript; … … 832 833 [ 'wp_status', 'login' ], 833 834 '', 834 WP\Login::class,835 [ WP\Login::class, WP\LoginOut::class ], 835 836 ], 836 837 'Lost Password Form' => [ … … 974 975 [ CF7::class, Admin::class ], 975 976 ], 977 'Cookies and Content Security Policy' => [ 978 [ 'cacsp_status', null ], 979 'cookies-and-content-security-policy/cookies-and-content-security-policy.php', 980 [ Compatibility::class ], 981 ], 976 982 'Divi Comment Form' => [ 977 983 [ 'divi_status', 'comment' ], … … 1304 1310 Tutor\Checkout::class, 1305 1311 ], 1306 'Tutor L MS Login'=> [1312 'Tutor Login' => [ 1307 1313 [ 'tutor_status', 'login' ], 1308 1314 'tutor/tutor.php', 1309 1315 Tutor\Login::class, 1310 1316 ], 1311 'Tutor L MS LostPassword'=> [1317 'Tutor LostPassword' => [ 1312 1318 [ 'tutor_status', 'lost_pass' ], 1313 1319 'tutor/tutor.php', 1314 1320 Tutor\LostPassword::class, 1315 1321 ], 1316 'Tutor LMS Register'=> [1322 'Tutor Register' => [ 1317 1323 [ 'tutor_status', 'register' ], 1318 1324 'tutor/tutor.php', -
hcaptcha-for-forms-and-more/tags/4.10.0/src/php/ProfileBuilder/Login.php
r3114572 r3233179 76 76 } 77 77 78 if ( ! $this->is_login_limit_exceeded() ) { 79 return $user; 80 } 81 82 $error_message = hcaptcha_verify_post( 83 self::NONCE, 84 self::ACTION 85 ); 86 87 if ( null === $error_message ) { 88 return $user; 89 } 90 91 $code = array_search( $error_message, hcap_get_error_messages(), true ) ?: 'fail'; 92 93 return new WP_Error( $code, $error_message, 400 ); 78 return $this->login_base_verify( $user, $password ); 94 79 } 95 80 -
hcaptcha-for-forms-and-more/tags/4.10.0/src/php/Sendinblue/Sendinblue.php
r3114572 r3233179 67 67 68 68 /** 69 * Filters the HTML containing a form to register it for auto-verification.69 * Register a form containing hCaptcha for auto-verification purposes. 70 70 * 71 * @param string $ htmlHTML content.71 * @param string $output HTML content. 72 72 */ 73 73 do_action( 'hcap_auto_verify_register', $output ); -
hcaptcha-for-forms-and-more/tags/4.10.0/src/php/Settings/EventsPage.php
r3114572 r3233179 9 9 10 10 use HCaptcha\Admin\Events\EventsTable; 11 use HCaptcha\Helpers\DB; 11 12 use KAGG\Settings\Abstracts\SettingsBase; 12 13 … … 29 30 30 31 /** 32 * Bulk ajax action. 33 */ 34 public const BULK_ACTION = 'hcaptcha-events-bulk'; 35 36 /** 31 37 * ListTable instance. 32 38 * … … 48 54 */ 49 55 protected $failed; 56 57 /** 58 * Init class hooks. 59 */ 60 protected function init_hooks(): void { 61 parent::init_hooks(); 62 63 add_action( 'wp_ajax_' . self::BULK_ACTION, [ $this, 'bulk_action' ] ); 64 } 50 65 51 66 /** … … 77 92 78 93 /** 79 * Init class hooks.80 */81 protected function init_hooks(): void {82 parent::init_hooks();83 84 add_action( 'admin_init', [ $this, 'admin_init' ] );85 add_action( 'kagg_settings_header', [ $this, 'date_picker_display' ] );86 }87 88 /**89 94 * Admin init. 90 95 * … … 103 108 104 109 $this->prepare_chart_data(); 110 } 111 112 /** 113 * Ajax callback for bulk actions. 114 * 115 * @return void 116 */ 117 public function bulk_action(): void { 118 $this->run_checks( self::BULK_ACTION ); 119 120 // Nonce is checked by check_ajax_referer() in run_checks(). 121 // phpcs:disable WordPress.Security.NonceVerification.Missing 122 $bulk = isset( $_POST['bulk'] ) ? sanitize_text_field( wp_unslash( $_POST['bulk'] ) ) : ''; 123 $ids = isset( $_POST['ids'] ) 124 ? (array) json_decode( sanitize_text_field( wp_unslash( $_POST['ids'] ) ), true ) 125 : []; 126 // phpcs:enable WordPress.Security.NonceVerification.Missing 127 128 if ( 'trash' === $bulk ) { 129 if ( ! $this->delete_hcaptcha_events( $ids ) ) { 130 wp_send_json_error( __( 'Failed to delete the selected items.', 'hcaptcha-for-forms-and-more' ) ); 131 } 132 133 wp_send_json_success(); 134 135 // For testing purposes. 136 return; 137 } 138 139 wp_send_json_error( __( 'Invalid bulk action.', 'hcaptcha-for-forms-and-more' ) ); 105 140 } 106 141 … … 136 171 self::OBJECT, 137 172 [ 173 'ajaxUrl' => admin_url( 'admin-ajax.php' ), 174 'bulkAction' => self::BULK_ACTION, 175 'bulkNonce' => wp_create_nonce( self::BULK_ACTION ), 138 176 'succeed' => $this->succeed, 139 177 'failed' => $this->failed, … … 155 193 public function section_callback( array $arguments ): void { 156 194 $this->print_header(); 195 196 ?> 197 <div id="hcaptcha-message"></div> 198 <?php 157 199 158 200 if ( ! $this->allowed ) { … … 236 278 } 237 279 } 280 281 /** 282 * Delete hCaptcha events by IDs. 283 * 284 * @param array $ids Array of event IDs to delete. 285 * 286 * @return bool 287 */ 288 private function delete_hcaptcha_events( array $ids ): bool { 289 global $wpdb; 290 291 $table_name = $wpdb->prefix . 'hcaptcha_events'; 292 293 $in = DB::prepare_in( $ids, '%d' ); 294 295 // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching 296 $result = $wpdb->query( 297 $wpdb->prepare( 298 // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared 299 "DELETE FROM $table_name WHERE id IN($in)" 300 ) 301 ); 302 303 return (bool) $result; 304 } 238 305 } -
hcaptcha-for-forms-and-more/tags/4.10.0/src/php/Settings/FormsPage.php
r3114572 r3233179 29 29 30 30 /** 31 * Bulk ajax action. 32 */ 33 public const BULK_ACTION = 'hcaptcha-forms-bulk'; 34 35 /** 31 36 * ListTable instance. 32 37 * … … 41 46 */ 42 47 protected $served; 48 49 /** 50 * Init class hooks. 51 */ 52 protected function init_hooks(): void { 53 parent::init_hooks(); 54 55 add_action( 'wp_ajax_' . self::BULK_ACTION, [ $this, 'bulk_action' ] ); 56 } 43 57 44 58 /** … … 70 84 71 85 /** 72 * Init class hooks.73 */74 protected function init_hooks(): void {75 parent::init_hooks();76 77 add_action( 'admin_init', [ $this, 'admin_init' ] );78 add_action( 'kagg_settings_header', [ $this, 'date_picker_display' ] );79 }80 81 /**82 86 * Admin init. 83 87 * … … 94 98 95 99 $this->prepare_chart_data(); 100 } 101 102 /** 103 * Ajax callback for bulk actions. 104 * 105 * @return void 106 */ 107 public function bulk_action(): void { 108 $this->run_checks( self::BULK_ACTION ); 109 110 // Nonce is checked by check_ajax_referer() in run_checks(). 111 // phpcs:disable WordPress.Security.NonceVerification.Missing 112 $bulk = isset( $_POST['bulk'] ) ? sanitize_text_field( wp_unslash( $_POST['bulk'] ) ) : ''; 113 $ids = isset( $_POST['ids'] ) 114 ? (array) json_decode( sanitize_text_field( wp_unslash( $_POST['ids'] ) ), true ) 115 : []; 116 // phpcs:enable WordPress.Security.NonceVerification.Missing 117 118 if ( 'trash' === $bulk ) { 119 if ( ! $this->delete_hcaptcha_events_by_forms( $ids ) ) { 120 wp_send_json_error( __( 'Failed to delete the selected items.', 'hcaptcha-for-forms-and-more' ) ); 121 } 122 123 wp_send_json_success(); 124 125 // For testing purposes. 126 return; 127 } 128 129 wp_send_json_error( __( 'Invalid bulk action.', 'hcaptcha-for-forms-and-more' ) ); 96 130 } 97 131 … … 127 161 self::OBJECT, 128 162 [ 163 'ajaxUrl' => admin_url( 'admin-ajax.php' ), 164 'bulkAction' => self::BULK_ACTION, 165 'bulkNonce' => wp_create_nonce( self::BULK_ACTION ), 129 166 'served' => $this->served, 130 167 'servedLabel' => __( 'Served', 'hcaptcha-for-forms-and-more' ), … … 144 181 public function section_callback( array $arguments ): void { 145 182 $this->print_header(); 183 184 ?> 185 <div id="hcaptcha-message"></div> 186 <?php 146 187 147 188 if ( ! $this->allowed ) { … … 212 253 } 213 254 } 255 256 /** 257 * Delete hCaptcha events by forms. 258 * 259 * @param array $ids Array of event IDs to delete. 260 * 261 * @return bool 262 */ 263 private function delete_hcaptcha_events_by_forms( array $ids ): bool { 264 global $wpdb; 265 266 $table_name = $wpdb->prefix . 'hcaptcha_events'; 267 $conditions = []; 268 $values = []; 269 270 foreach ( $ids as $item ) { 271 $conditions[] = '(source = %s AND form_id = %d)'; 272 $values[] = $item['source']; 273 $values[] = $item['formId']; 274 } 275 276 $where_clause = implode( ' OR ', $conditions ); 277 278 // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching 279 $result = $wpdb->query( 280 $wpdb->prepare( 281 // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared, WordPress.DB.PreparedSQLPlaceholders.UnfinishedPrepare 282 "DELETE FROM $table_name WHERE $where_clause", 283 ...$values 284 ) 285 ); 286 287 return (bool) $result; 288 } 214 289 } -
hcaptcha-for-forms-and-more/tags/4.10.0/src/php/Settings/General.php
r3215681 r3233179 116 116 117 117 /** 118 * Check configform id.118 * The 'check config' form id. 119 119 */ 120 120 public const CHECK_CONFIG_FORM_ID = 'check-config'; … … 581 581 ], 582 582 'default' => 'on', 583 'helper' => __( 'Store collected IP and User Agent as hashed values to conform to GDPR requirements.', 'hcaptcha-for-forms-and-more' ),583 'helper' => __( 'Store collected IP and User Agent locally as hashed values to conform to GDPR requirements.', 'hcaptcha-for-forms-and-more' ), 584 584 ], 585 585 'collect_ip' => [ … … 857 857 * 858 858 * @return void 859 * @noinspection PhpUnusedParameterInspection860 859 */ 861 860 public function check_config(): void { -
hcaptcha-for-forms-and-more/tags/4.10.0/src/php/Settings/Integrations.php
r3215681 r3233179 751 751 $installed = array_unique( $installed ); 752 752 753 $this->form_fields = $this->sort_fields( $this->form_fields );754 755 $prefix = self::PREFIX . '-' . $this->section_title() . '-';756 757 753 foreach ( $this->form_fields as $status => &$form_field ) { 758 754 $form_field['installed'] = in_array( $status, $installed, true ); 759 $form_field['section'] = ( ! $form_field['installed'] ) || $form_field['disabled'] 760 ? self::SECTION_DISABLED 761 : self::SECTION_ENABLED; 755 $form_field['disabled'] = ( ! $form_field['installed'] ) || $form_field['disabled']; 756 } 757 758 unset( $form_field ); 759 760 $this->form_fields = $this->sort_fields( $this->form_fields ); 761 762 $prefix = self::PREFIX . '-' . $this->section_title() . '-'; 763 764 foreach ( $this->form_fields as $status => &$form_field ) { 765 $form_field['installed'] = in_array( $status, $installed, true ); 766 $form_field['section'] = $form_field['disabled'] ? self::SECTION_DISABLED : self::SECTION_ENABLED; 762 767 763 768 if ( isset( $form_field['label'] ) ) { … … 1684 1689 1685 1690 if ( is_wp_error( $result ) ) { 1686 return new WP_Error( $result->get_error_code(), $result->get_error_message() );1691 return $result; 1687 1692 } 1688 1693 1689 1694 if ( is_wp_error( $skin->result ) ) { 1690 return new WP_Error( $skin->result->get_error_code(), $skin->result->get_error_message() ); 1691 } 1692 1693 if ( $skin->get_errors() && $skin->get_errors()->has_errors() ) { 1694 return new WP_Error( $skin->result->get_error_code(), $skin->result->get_error_message() ); 1695 return $skin->result; 1696 } 1697 1698 $skin_errors = $skin->get_errors(); 1699 1700 if ( $skin_errors && $skin_errors->has_errors() ) { 1701 return $skin_errors; 1695 1702 } 1696 1703 -
hcaptcha-for-forms-and-more/tags/4.10.0/src/php/Settings/ListPageBase.php
r3185570 r3233179 9 9 10 10 use DateTimeImmutable; 11 use Exception; 11 12 12 13 /** … … 35 36 * Base object. 36 37 */ 37 public const OBJECT = 'HCaptcha FlatPickerObject';38 public const OBJECT = 'HCaptchaListPageBaseObject'; 38 39 39 40 /** … … 66 67 */ 67 68 protected $allowed = false; 69 70 /** 71 * Init class hooks. 72 */ 73 protected function init_hooks(): void { 74 parent::init_hooks(); 75 76 add_action( 'admin_init', [ $this, 'admin_init' ] ); 77 add_action( 'kagg_settings_header', [ $this, 'date_picker_display' ] ); 78 } 68 79 69 80 /** … … 175 186 self::OBJECT, 176 187 [ 188 'noAction' => __( 'Please select a bulk action.', 'hcaptcha-for-forms-and-more' ), 189 'noItems' => __( 'Please select at least one item to perform this action on.', 'hcaptcha-for-forms-and-more' ), 190 'DoingBulk' => __( 'Doing bulk action...', 'hcaptcha-for-forms-and-more' ), 177 191 'delimiter' => self::TIMESPAN_DELIMITER, 178 192 'locale' => $this->get_language_code(), … … 222 236 <label for="hcaptcha-datepicker"> 223 237 <input 224 type="text"225 name="date"226 tabindex="-1"227 aria-hidden="true"228 id="hcaptcha-datepicker"229 value="<?php echo esc_attr( $value ); ?>">238 type="text" 239 name="date" 240 tabindex="-1" 241 aria-hidden="true" 242 id="hcaptcha-datepicker" 243 value="<?php echo esc_attr( $value ); ?>"> 230 244 </label> 231 245 </div> … … 386 400 387 401 if ( (int) $days > 0 ) { 388 $start_date = $start_date->modify( "-$days day" ); 402 try { 403 $start_date = $start_date->modify( "-$days day" ); 404 } catch ( Exception $e ) { 405 // @codeCoverageIgnoreStart 406 $start_date = $end_date; 407 // @codeCoverageIgnoreEnd 408 } 389 409 } 390 410 … … 432 452 433 453 /** 434 * Concatenate given dates into a single string. i.e. "2024-04-16 - 2024-05-16". 454 * Concatenate given dates into a single string. 455 * Should be like that: "2024-04-16 - 2024-05-16". 435 456 * 436 457 * @param DateTimeImmutable|mixed $start_date Start date. -
hcaptcha-for-forms-and-more/tags/4.10.0/src/php/Tutor/Login.php
r3215681 r3233179 9 9 10 10 use HCaptcha\Abstracts\LoginBase; 11 use HCaptcha\Helpers\HCaptcha; 12 use WP_Error; 13 use WP_User; 11 14 12 15 /** … … 24 27 25 28 add_action( 'tutor_login_form_middle', [ $this, 'add_captcha' ] ); 26 add_filter( 'wp_authenticate_user', [ $this, 'login_base_verify' ], PHP_INT_MAX, 2 ); 29 add_filter( 'wp_authenticate_user', [ $this, 'verify' ], 10, 2 ); 30 } 31 32 /** 33 * Verify a login form. 34 * 35 * @param WP_User|WP_Error $user WP_User or WP_Error object 36 * if a previous callback failed authentication. 37 * @param string $password Password to check against the user. 38 * 39 * @return WP_User|WP_Error 40 */ 41 public function verify( $user, string $password ) { 42 if ( ! $this->is_tutor_login_form() ) { 43 return $user; 44 } 45 46 return $this->login_base_verify( $user, $password ); 47 } 48 49 /** 50 * Whether we process the Tutor login form. 51 * 52 * @return bool 53 */ 54 private function is_tutor_login_form(): bool { 55 return HCaptcha::did_filter( 'tutor_login_credentials' ); 27 56 } 28 57 } -
hcaptcha-for-forms-and-more/tags/4.10.0/src/php/WP/Comment.php
r3114572 r3233179 119 119 } 120 120 121 // Override poor IP detection by WP Core and make sure that IP is the same in the 'comments' table and in the 'hcaptcha_events' table. 122 $comment_data['comment_author_IP'] = hcap_get_user_ip(); 123 121 124 $this->result = hcaptcha_get_verify_message_html( self::NONCE, self::ACTION ); 122 125 -
hcaptcha-for-forms-and-more/tags/4.10.0/src/php/WP/Login.php
r3114572 r3233179 6 6 */ 7 7 8 // phpcs:disable Generic.Commenting.DocComment.MissingShort9 /** @noinspection PhpUndefinedNamespaceInspection */10 /** @noinspection PhpUndefinedClassInspection */11 // phpcs:enable Generic.Commenting.DocComment.MissingShort12 13 8 namespace HCaptcha\WP; 14 9 15 10 use HCaptcha\Abstracts\LoginBase; 16 use WordfenceLS\Controller_WordfenceLS;17 11 18 12 /** -
hcaptcha-for-forms-and-more/tags/4.10.0/src/php/WPForms/Form.php
r3114572 r3233179 56 56 */ 57 57 protected function init_hooks(): void { 58 if ( ! function_exists( 'wpforms' ) ) { 59 return; 60 } 61 58 62 $this->mode_auto = hcaptcha()->settings()->is( 'wpforms_status', 'form' ); 59 63 $this->mode_embed = -
hcaptcha-for-forms-and-more/tags/4.10.0/src/php/includes/functions.php
r3200161 r3233179 26 26 * Do not set the default size here. 27 27 * If size is not normal|compact|invisible, it will be taken from plugin settings in HCaptcha::form(). 28 * Same for theme and force. 28 29 */ 29 30 $atts = shortcode_atts( … … 32 33 'name' => HCAPTCHA_NONCE, 33 34 'auto' => false, 35 'ajax' => false, 34 36 'force' => $hcaptcha_force, 35 37 'theme' => $hcaptcha_theme, -
hcaptcha-for-forms-and-more/tags/4.10.0/src/php/includes/request.php
r3200161 r3233179 138 138 $raw_response = wp_remote_post( $url ); 139 139 140 if ( is_wp_error( $raw_response ) ) { 141 return [ 142 'error' => implode( "\n", $raw_response->get_error_messages() ), 143 ]; 144 } 145 140 146 $raw_body = wp_remote_retrieve_body( $raw_response ); 141 147 … … 235 241 [ 'body' => $params ] 236 242 ); 243 244 if ( is_wp_error( $raw_response ) ) { 245 $result = implode( "\n", $raw_response->get_error_messages() ); 246 $error_codes = $raw_response->get_error_codes(); 247 248 /** This filter is documented above. */ 249 return apply_filters( 'hcap_verify_request', $result, $error_codes ); 250 } 237 251 238 252 $raw_body = wp_remote_retrieve_body( $raw_response ); … … 348 362 if ( ! function_exists( 'hcaptcha_get_verify_message_html' ) ) { 349 363 /** 350 * Get verify message html.364 * Get verify message HTML. 351 365 * 352 366 * @param string $nonce_field_name Nonce field name. -
hcaptcha-for-forms-and-more/tags/4.10.0/vendor/autoload.php
r3215681 r3233179 23 23 require_once __DIR__ . '/composer/autoload_real.php'; 24 24 25 return ComposerAutoloaderInit 0c3f450f81223af0ef151675e6b814b7::getLoader();25 return ComposerAutoloaderInit5b9e71c5ecc4233f8a6f35918bdc1f18::getLoader(); -
hcaptcha-for-forms-and-more/tags/4.10.0/vendor/composer/InstalledVersions.php
r3215681 r3233179 32 32 */ 33 33 private static $installed; 34 35 /** 36 * @var bool 37 */ 38 private static $installedIsLocalDir; 34 39 35 40 /** … … 310 315 self::$installed = $data; 311 316 self::$installedByVendor = array(); 317 318 // when using reload, we disable the duplicate protection to ensure that self::$installed data is 319 // always returned, but we cannot know whether it comes from the installed.php in __DIR__ or not, 320 // so we have to assume it does not, and that may result in duplicate data being returned when listing 321 // all installed packages for example 322 self::$installedIsLocalDir = false; 312 323 } 313 324 … … 326 337 327 338 if (self::$canGetVendors) { 339 $selfDir = strtr(__DIR__, '\\', '/'); 328 340 foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) { 341 $vendorDir = strtr($vendorDir, '\\', '/'); 329 342 if (isset(self::$installedByVendor[$vendorDir])) { 330 343 $installed[] = self::$installedByVendor[$vendorDir]; … … 334 347 self::$installedByVendor[$vendorDir] = $required; 335 348 $installed[] = $required; 336 if (s trtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) {349 if (self::$installed === null && $vendorDir.'/composer' === $selfDir) { 337 350 self::$installed = $required; 338 $copiedLocalDir = true;351 self::$installedIsLocalDir = true; 339 352 } 353 } 354 if (self::$installedIsLocalDir && $vendorDir.'/composer' === $selfDir) { 355 $copiedLocalDir = true; 340 356 } 341 357 } -
hcaptcha-for-forms-and-more/tags/4.10.0/vendor/composer/autoload_classmap.php
r3215681 r3233179 14 14 'HCaptcha\\Admin\\Events\\EventsTable' => $baseDir . '/src/php/Admin/Events/EventsTable.php', 15 15 'HCaptcha\\Admin\\Events\\FormsTable' => $baseDir . '/src/php/Admin/Events/FormsTable.php', 16 'HCaptcha\\Admin\\Events\\TableBase' => $baseDir . '/src/php/Admin/Events/TableBase.php', 16 17 'HCaptcha\\Admin\\Notifications' => $baseDir . '/src/php/Admin/Notifications.php', 17 18 'HCaptcha\\Admin\\PluginStats' => $baseDir . '/src/php/Admin/PluginStats.php', … … 36 37 'HCaptcha\\BuddyPress\\CreateGroup' => $baseDir . '/src/php/BuddyPress/CreateGroup.php', 37 38 'HCaptcha\\BuddyPress\\Register' => $baseDir . '/src/php/BuddyPress/Register.php', 39 'HCaptcha\\CACSP\\Compatibility' => $baseDir . '/src/php/CACSP/Compatibility.php', 38 40 'HCaptcha\\CF7\\Admin' => $baseDir . '/src/php/CF7/Admin.php', 39 41 'HCaptcha\\CF7\\Base' => $baseDir . '/src/php/CF7/Base.php', … … 75 77 'HCaptcha\\GravityForms\\Form' => $baseDir . '/src/php/GravityForms/Form.php', 76 78 'HCaptcha\\HTMLForms\\Form' => $baseDir . '/src/php/HTMLForms/Form.php', 79 'HCaptcha\\Helpers\\DB' => $baseDir . '/src/php/Helpers/DB.php', 77 80 'HCaptcha\\Helpers\\HCaptcha' => $baseDir . '/src/php/Helpers/HCaptcha.php', 78 81 'HCaptcha\\Helpers\\Minify\\CSS' => $baseDir . '/src/php/Helpers/Minify/CSS.php', … … 173 176 'HCaptcha\\WP\\Comment' => $baseDir . '/src/php/WP/Comment.php', 174 177 'HCaptcha\\WP\\Login' => $baseDir . '/src/php/WP/Login.php', 178 'HCaptcha\\WP\\LoginOut' => $baseDir . '/src/php/WP/LoginOut.php', 175 179 'HCaptcha\\WP\\LostPassword' => $baseDir . '/src/php/WP/LostPassword.php', 176 180 'HCaptcha\\WP\\PasswordProtected' => $baseDir . '/src/php/WP/PasswordProtected.php', -
hcaptcha-for-forms-and-more/tags/4.10.0/vendor/composer/autoload_real.php
r3215681 r3233179 3 3 // autoload_real.php @generated by Composer 4 4 5 class ComposerAutoloaderInit 0c3f450f81223af0ef151675e6b814b75 class ComposerAutoloaderInit5b9e71c5ecc4233f8a6f35918bdc1f18 6 6 { 7 7 private static $loader; … … 23 23 } 24 24 25 spl_autoload_register(array('ComposerAutoloaderInit 0c3f450f81223af0ef151675e6b814b7', 'loadClassLoader'), true, true);25 spl_autoload_register(array('ComposerAutoloaderInit5b9e71c5ecc4233f8a6f35918bdc1f18', 'loadClassLoader'), true, true); 26 26 self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__)); 27 spl_autoload_unregister(array('ComposerAutoloaderInit 0c3f450f81223af0ef151675e6b814b7', 'loadClassLoader'));27 spl_autoload_unregister(array('ComposerAutoloaderInit5b9e71c5ecc4233f8a6f35918bdc1f18', 'loadClassLoader')); 28 28 29 29 require __DIR__ . '/autoload_static.php'; 30 call_user_func(\Composer\Autoload\ComposerStaticInit 0c3f450f81223af0ef151675e6b814b7::getInitializer($loader));30 call_user_func(\Composer\Autoload\ComposerStaticInit5b9e71c5ecc4233f8a6f35918bdc1f18::getInitializer($loader)); 31 31 32 32 $loader->setClassMapAuthoritative(true); -
hcaptcha-for-forms-and-more/tags/4.10.0/vendor/composer/autoload_static.php
r3215681 r3233179 5 5 namespace Composer\Autoload; 6 6 7 class ComposerStaticInit 0c3f450f81223af0ef151675e6b814b77 class ComposerStaticInit5b9e71c5ecc4233f8a6f35918bdc1f18 8 8 { 9 9 public static $prefixLengthsPsr4 = array ( … … 42 42 'HCaptcha\\Admin\\Events\\EventsTable' => __DIR__ . '/../..' . '/src/php/Admin/Events/EventsTable.php', 43 43 'HCaptcha\\Admin\\Events\\FormsTable' => __DIR__ . '/../..' . '/src/php/Admin/Events/FormsTable.php', 44 'HCaptcha\\Admin\\Events\\TableBase' => __DIR__ . '/../..' . '/src/php/Admin/Events/TableBase.php', 44 45 'HCaptcha\\Admin\\Notifications' => __DIR__ . '/../..' . '/src/php/Admin/Notifications.php', 45 46 'HCaptcha\\Admin\\PluginStats' => __DIR__ . '/../..' . '/src/php/Admin/PluginStats.php', … … 64 65 'HCaptcha\\BuddyPress\\CreateGroup' => __DIR__ . '/../..' . '/src/php/BuddyPress/CreateGroup.php', 65 66 'HCaptcha\\BuddyPress\\Register' => __DIR__ . '/../..' . '/src/php/BuddyPress/Register.php', 67 'HCaptcha\\CACSP\\Compatibility' => __DIR__ . '/../..' . '/src/php/CACSP/Compatibility.php', 66 68 'HCaptcha\\CF7\\Admin' => __DIR__ . '/../..' . '/src/php/CF7/Admin.php', 67 69 'HCaptcha\\CF7\\Base' => __DIR__ . '/../..' . '/src/php/CF7/Base.php', … … 103 105 'HCaptcha\\GravityForms\\Form' => __DIR__ . '/../..' . '/src/php/GravityForms/Form.php', 104 106 'HCaptcha\\HTMLForms\\Form' => __DIR__ . '/../..' . '/src/php/HTMLForms/Form.php', 107 'HCaptcha\\Helpers\\DB' => __DIR__ . '/../..' . '/src/php/Helpers/DB.php', 105 108 'HCaptcha\\Helpers\\HCaptcha' => __DIR__ . '/../..' . '/src/php/Helpers/HCaptcha.php', 106 109 'HCaptcha\\Helpers\\Minify\\CSS' => __DIR__ . '/../..' . '/src/php/Helpers/Minify/CSS.php', … … 201 204 'HCaptcha\\WP\\Comment' => __DIR__ . '/../..' . '/src/php/WP/Comment.php', 202 205 'HCaptcha\\WP\\Login' => __DIR__ . '/../..' . '/src/php/WP/Login.php', 206 'HCaptcha\\WP\\LoginOut' => __DIR__ . '/../..' . '/src/php/WP/LoginOut.php', 203 207 'HCaptcha\\WP\\LostPassword' => __DIR__ . '/../..' . '/src/php/WP/LostPassword.php', 204 208 'HCaptcha\\WP\\PasswordProtected' => __DIR__ . '/../..' . '/src/php/WP/PasswordProtected.php', … … 212 216 { 213 217 return \Closure::bind(function () use ($loader) { 214 $loader->prefixLengthsPsr4 = ComposerStaticInit 0c3f450f81223af0ef151675e6b814b7::$prefixLengthsPsr4;215 $loader->prefixDirsPsr4 = ComposerStaticInit 0c3f450f81223af0ef151675e6b814b7::$prefixDirsPsr4;216 $loader->classMap = ComposerStaticInit 0c3f450f81223af0ef151675e6b814b7::$classMap;218 $loader->prefixLengthsPsr4 = ComposerStaticInit5b9e71c5ecc4233f8a6f35918bdc1f18::$prefixLengthsPsr4; 219 $loader->prefixDirsPsr4 = ComposerStaticInit5b9e71c5ecc4233f8a6f35918bdc1f18::$prefixDirsPsr4; 220 $loader->classMap = ComposerStaticInit5b9e71c5ecc4233f8a6f35918bdc1f18::$classMap; 217 221 218 222 }, null, ClassLoader::class); -
hcaptcha-for-forms-and-more/tags/4.10.0/vendor/composer/installed.php
r3215681 r3233179 2 2 'root' => array( 3 3 'name' => 'hcaptcha/hcaptcha-wordpress-plugin', 4 'pretty_version' => '4. 9.0',5 'version' => '4. 9.0.0',6 'reference' => ' bcf1d7e3058f194fdf32b0c257caf651ab195121',4 'pretty_version' => '4.10.0', 5 'version' => '4.10.0.0', 6 'reference' => '3f3d675e6a0c12404a0a7aa20b4472b5d37ea88d', 7 7 'type' => 'wordpress-plugin', 8 8 'install_path' => __DIR__ . '/../../', … … 12 12 'versions' => array( 13 13 'hcaptcha/hcaptcha-wordpress-plugin' => array( 14 'pretty_version' => '4. 9.0',15 'version' => '4. 9.0.0',16 'reference' => ' bcf1d7e3058f194fdf32b0c257caf651ab195121',14 'pretty_version' => '4.10.0', 15 'version' => '4.10.0.0', 16 'reference' => '3f3d675e6a0c12404a0a7aa20b4472b5d37ea88d', 17 17 'type' => 'wordpress-plugin', 18 18 'install_path' => __DIR__ . '/../../', -
hcaptcha-for-forms-and-more/trunk/assets/css/events.css
r3166267 r3233179 49 49 } 50 50 51 @media (max-width: 600px) {51 @media (max-width: 782px) { 52 52 #hcaptcha-options #hcaptcha-events-wrap table tbody tr td { 53 53 padding-block-start: 3px; … … 55 55 padding-block-end: 3px; 56 56 padding-inline-start: 35%; 57 min-height: 19.5px; 57 58 } 58 59 -
hcaptcha-for-forms-and-more/trunk/assets/css/events.min.css
r3166267 r3233179 1 #hcaptcha-options #hcaptcha-events-wrap table tbody tr td{padding:8px 10px}.hcaptcha-events-sample-bg{aspect-ratio:2882/1943;background-image:url(../images/events-page.png);background-position:50%;background-repeat:no-repeat;background-size:cover;box-sizing:border-box;filter:blur(1px);-webkit-filter:blur(1px);width:100%}.hcaptcha-events-sample-text{background-color:rgba(92,111,138,.8);border:3px solid #f0f2f5;color:#f0f2f5;left:50%;padding:20px;position:absolute;text-align:center;top:50%;transform:translate(-50%,-50%);width:80%;z-index:1}.hcaptcha-events-sample-text p{font-size:1.3em}#hcaptcha-options .hcaptcha-events-sample-text p a{color:#f0f2f5}#hcaptcha-events-chart{aspect-ratio:3/1;background-color:#fff;margin:auto;position:relative;width:100%}#hcaptcha-events-wrap #user_agent{width:220px}@media (max-width: 600px){#hcaptcha-options #hcaptcha-events-wrap table tbody tr td{padding-block-end:3px;padding-block-start:3px;padding-inline-end:8px;padding-inline-start:35%}#hcaptcha-options #hcaptcha-events-wrap table tbody tr td.column-primary{padding:3px 10px}}1 #hcaptcha-options #hcaptcha-events-wrap table tbody tr td{padding:8px 10px}.hcaptcha-events-sample-bg{aspect-ratio:2882/1943;background-image:url(../images/events-page.png);background-position:50%;background-repeat:no-repeat;background-size:cover;box-sizing:border-box;filter:blur(1px);-webkit-filter:blur(1px);width:100%}.hcaptcha-events-sample-text{background-color:rgba(92,111,138,.8);border:3px solid #f0f2f5;color:#f0f2f5;left:50%;padding:20px;position:absolute;text-align:center;top:50%;transform:translate(-50%,-50%);width:80%;z-index:1}.hcaptcha-events-sample-text p{font-size:1.3em}#hcaptcha-options .hcaptcha-events-sample-text p a{color:#f0f2f5}#hcaptcha-events-chart{aspect-ratio:3/1;background-color:#fff;margin:auto;position:relative;width:100%}#hcaptcha-events-wrap #user_agent{width:220px}@media (max-width:782px){#hcaptcha-options #hcaptcha-events-wrap table tbody tr td{min-height:19.5px;padding-block-end:3px;padding-block-start:3px;padding-inline-end:8px;padding-inline-start:35%}#hcaptcha-options #hcaptcha-events-wrap table tbody tr td.column-primary{padding:3px 10px}} -
hcaptcha-for-forms-and-more/trunk/assets/css/forms.css
r3166267 r3233179 45 45 } 46 46 47 @media (max-width: 600px) {47 @media (max-width: 782px) { 48 48 #hcaptcha-options #hcaptcha-forms-wrap table tbody tr td { 49 49 padding-block-start: 3px; … … 51 51 padding-block-end: 3px; 52 52 padding-inline-start: 35%; 53 min-height: 19.5px; 53 54 } 54 55 -
hcaptcha-for-forms-and-more/trunk/assets/css/forms.min.css
r3166267 r3233179 1 #hcaptcha-options #hcaptcha-forms-wrap table tbody tr td{padding:8px 10px}.hcaptcha-forms-sample-bg{aspect-ratio:2845/1637;background-image:url(../images/forms-page.png);background-position:50%;background-repeat:no-repeat;background-size:cover;box-sizing:border-box;filter:blur(1px);-webkit-filter:blur(1px);width:100%}.hcaptcha-forms-sample-text{background-color:rgba(92,111,138,.8);border:3px solid #f0f2f5;color:#f0f2f5;left:50%;padding:20px;position:absolute;text-align:center;top:50%;transform:translate(-50%,-50%);width:80%;z-index:1}.hcaptcha-forms-sample-text p{font-size:1.3em}#hcaptcha-options .hcaptcha-forms-sample-text p a{color:#f0f2f5}#hcaptcha-forms-chart{aspect-ratio:3/1;background-color:#fff;margin:auto;position:relative;width:100%}@media (max-width: 600px){#hcaptcha-options #hcaptcha-forms-wrap table tbody tr td{padding-block-end:3px;padding-block-start:3px;padding-inline-end:8px;padding-inline-start:35%}#hcaptcha-options #hcaptcha-forms-wrap table tbody tr td.column-primary{padding:3px 10px}}1 #hcaptcha-options #hcaptcha-forms-wrap table tbody tr td{padding:8px 10px}.hcaptcha-forms-sample-bg{aspect-ratio:2845/1637;background-image:url(../images/forms-page.png);background-position:50%;background-repeat:no-repeat;background-size:cover;box-sizing:border-box;filter:blur(1px);-webkit-filter:blur(1px);width:100%}.hcaptcha-forms-sample-text{background-color:rgba(92,111,138,.8);border:3px solid #f0f2f5;color:#f0f2f5;left:50%;padding:20px;position:absolute;text-align:center;top:50%;transform:translate(-50%,-50%);width:80%;z-index:1}.hcaptcha-forms-sample-text p{font-size:1.3em}#hcaptcha-options .hcaptcha-forms-sample-text p a{color:#f0f2f5}#hcaptcha-forms-chart{aspect-ratio:3/1;background-color:#fff;margin:auto;position:relative;width:100%}@media (max-width:782px){#hcaptcha-options #hcaptcha-forms-wrap table tbody tr td{min-height:19.5px;padding-block-end:3px;padding-block-start:3px;padding-inline-end:8px;padding-inline-start:35%}#hcaptcha-options #hcaptcha-forms-wrap table tbody tr td.column-primary{padding:3px 10px}} -
hcaptcha-for-forms-and-more/trunk/assets/css/settings-base.css
r3215681 r3233179 54 54 position: sticky; 55 55 top: 60px; 56 z-index: 1;56 z-index: 2; 57 57 background: #f0f2f5; 58 58 display: flex; … … 87 87 } 88 88 89 #hcaptcha-options table tr td input[type="checkbox"] {89 #hcaptcha-options table tr td fieldset input[type="checkbox"] { 90 90 display: inline; 91 91 border: none; … … 99 99 } 100 100 101 #hcaptcha-options table tr td input[type="checkbox"]::before {101 #hcaptcha-options table tr td fieldset input[type="checkbox"]::before { 102 102 background: url('../images/checkbox-off.svg'); 103 103 background-size: cover; … … 109 109 } 110 110 111 #hcaptcha-options table tr td input[type="checkbox"]:checked::before {111 #hcaptcha-options table tr td fieldset input[type="checkbox"]:checked::before { 112 112 background: no-repeat url('../images/checkbox-on.svg'); 113 113 background-size: cover; … … 251 251 .hcaptcha-excerpt { 252 252 display: block; 253 position: relative; 254 width: max-content; 255 max-width: 100%; 253 256 overflow: hidden; 254 257 white-space: nowrap; 255 258 text-overflow: ellipsis; 259 } 260 261 .hcaptcha-excerpt:hover { 262 overflow: visible; 256 263 } 257 264 … … 265 272 width: max-content; 266 273 padding: 8px 10px; 267 top: 0; 268 inset-inline-start: 0; 274 top: 50%; 275 inset-inline-start: 50%; 276 transform: translate(-50%, -50%); 269 277 box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1); 270 278 border-radius: 6px; … … 275 283 276 284 @media (max-width: 782px) { 285 #hcaptcha-options .wp-list-table .toggle-row { 286 top: 15px; 287 } 288 289 #hcaptcha-options .wp-list-table tr.is-expanded .toggle-row { 290 top: 6.5px; 291 } 292 293 #hcaptcha-options .widefat tbody th.check-column { 294 padding: 0; 295 vertical-align: middle; 296 } 297 298 #hcaptcha-options .widefat thead td.check-column, .widefat tfoot td.check-column { 299 padding-left: 0; 300 } 301 302 #hcaptcha-options .widefat th input[type="checkbox"] { 303 margin-bottom: 0; 304 } 305 306 #hcaptcha-options .wp-list-table .is-expanded td:not(.hidden) { 307 overflow: visible; 308 } 309 277 310 .hcaptcha-settings-tabs { 278 311 margin: unset; … … 286 319 padding-inline-start: 10px; 287 320 } 321 322 .hcaptcha-excerpt { 323 display: table-cell; 324 vertical-align: middle; 325 height: 44px; 326 } 327 328 tr.is-expanded .hcaptcha-excerpt { 329 height: 19.5px; 330 } 288 331 } 289 332 -
hcaptcha-for-forms-and-more/trunk/assets/css/settings-base.min.css
r3215681 r3233179 1 body.settings_page_hcaptcha{background:#f0f2f5;color:#5c6f8a}.wrap h1.hcaptcha-settings-header{align-items:center;display:flex;font-size:34px;font-weight:700}.hcaptcha-logo{height:64px;margin-block-end:10px;margin-block-start:10px;margin-inline-end:5px;margin-inline-start:0}.hcaptcha-settings-tabs{background:#fff;display:flex;flex-wrap:wrap;justify-content:space-between;line-height:4.5em;margin:10px -20px 0;padding:0 20px;position:sticky;top:0;z-index:2}.hcaptcha-settings-tab{border-bottom:2px solid transparent;color:#646970;display:inline-block;font-size:1.1em;margin-inline-end:30px;text-decoration:none}.hcaptcha-settings-tab:hover{border-bottom-color:#025176!important;border-bottom:2px solid;color:#666}.hcaptcha-settings-tab.active{border-bottom:2px solid #0075ab}.hcaptcha-header-bar{align-items:center;background:#f0f2f5;display:flex;justify-content:space-between;margin:0 -20px;padding:0 20px;position:sticky;top:60px;z-index: 1}#hcaptcha-options h2{color:#5c6f8a;font-size:1.5em}#hcaptcha-options h2~*{display:none}#hcaptcha-options h3{color:#5c6f8a;margin:1.5em 0 1em}#hcaptcha-options .notice-dismiss:before{color:#5c6f8a}#hcaptcha-options table tbody tr td{margin:0;padding:0;position:relative}#hcaptcha-options table tr td input[type=checkbox]{border:none;box-shadow:none;display:inline;height:1.25rem;margin-block-end:0;margin-block-start:-.125rem;margin-inline-end:.5rem;margin-inline-start:0;width:2.3611rem}#hcaptcha-options table tr td input[type=checkbox]:before{background:url(../images/checkbox-off.svg);background-size:cover;content:"";display:inline-block;height:1.25rem;margin:0;width:2.3611rem}#hcaptcha-options table tr td input[type=checkbox]:checked:before{background:no-repeat url(../images/checkbox-on.svg);background-size:cover}#hcaptcha-options fieldset:disabled{color:#dadada}#hcaptcha-options .button-primary{background-color:#026593;border-color:#026593;color:#fff}#hcaptcha-options .button-primary:hover{background-color:#025176}#hcaptcha-options .button-secondary{background-color:#fff;border-color:#026593;color:#026593}#hcaptcha-options .button-secondary:hover{background-color:#ccc}#hcaptcha-options a{color:#0075ab}#hcaptcha-navigation a{border-color:#0075ab}#hcaptcha-options a.hcaptcha-settings-tab{color:#5c6f8a}#hcaptcha-options .helper:before{background:#5c6f8a;border-radius:1.2em;color:#fff;content:"?";height:1.2em;inset-inline-end:0;position:absolute;text-align:center;top:0;transform:translateY(-27px);width:1.2em}#hcaptcha-options fieldset+.helper:before{top:50%;transform:translate(25px,-.7em)}.rtl #hcaptcha-options fieldset+.helper:before{transform:translate(-25px,-.8em)}#hcaptcha-options .helper .helper-content{background:#5c6f8a;box-sizing:border-box;color:#f0f2f5;display:none;inset-inline-end:0;padding:.5em 1em;position:absolute;top:0;transform:translate(1px,10px);width:100%}.rtl #hcaptcha-options .helper .helper-content{transform:translate(-1px,10px)}#hcaptcha-options fieldset+.helper .helper-content{top:50%;transform:translate(25px,25px);width:calc(100% + 25px)}#hcaptcha-options .helper:hover{cursor:help}#hcaptcha-options .helper:hover .helper-content{display:block;z-index:1}#hcaptcha-options .helper .helper-content:after{border:10px solid transparent;border-bottom-color:#5c6f8a;content:"";inset-inline-end:0;position:absolute;top:0;transform:translateY(-100%)}#hcaptcha-options .helper .helper-content a{color:#fff}#hcaptcha-message{box-sizing:border-box}#hcaptcha-message>p{font-size:13px;font-weight:600;line-height:1.5;margin:.5em 0}@keyframes blink{0%{opacity:1}16.7%{opacity:0}33.3%{opacity:1}50%{opacity:0}66.7%{opacity:1}83.3%{opacity:0}to{opacity:1}}.blink{animation:blink 3s linear}.hcaptcha-hide{display:none}.hcaptcha-excerpt{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hcaptcha-excerpt:hover .hcaptcha-hide{background:#5c6f8a;border:1px solid #c3c4c7;border-radius:6px;box-shadow:inset 0 -1px 0 rgba(0,0,0,.1);color:#f0f2f5;display:block;inset-inline-start:0;max-width:300px;padding:8px 10px;position:absolute;text-align:center;top:0;white-space:normal;width:max-content;z-index:1}@media (max-width:782px){.hcaptcha-settings-tabs{margin:unset;margin-block-end:0;margin-block-start:10px;margin-inline-end:-12px;margin-inline-start:-10px;padding-block-end:0;padding-block-start:0;padding-inline-end:12px;padding-inline-start:10px}}@media (max-width:600px){#hcaptcha-options table tbody{grid-template-columns:1fr}#hcaptcha-options table tbody tr{position:relative}#hcaptcha-options fieldset+.helper:before{transform:translateY(-.7em)}#hcaptcha-options fieldset+.helper .helper-content{transform:translateY(25px);width:100%}#hcaptcha-options .helper{z-index:1}.hcaptcha-settings-tab{inset-inline-end:15px}}1 body.settings_page_hcaptcha{background:#f0f2f5;color:#5c6f8a}.wrap h1.hcaptcha-settings-header{align-items:center;display:flex;font-size:34px;font-weight:700}.hcaptcha-logo{height:64px;margin-block-end:10px;margin-block-start:10px;margin-inline-end:5px;margin-inline-start:0}.hcaptcha-settings-tabs{background:#fff;display:flex;flex-wrap:wrap;justify-content:space-between;line-height:4.5em;margin:10px -20px 0;padding:0 20px;position:sticky;top:0;z-index:2}.hcaptcha-settings-tab{border-bottom:2px solid transparent;color:#646970;display:inline-block;font-size:1.1em;margin-inline-end:30px;text-decoration:none}.hcaptcha-settings-tab:hover{border-bottom-color:#025176!important;border-bottom:2px solid;color:#666}.hcaptcha-settings-tab.active{border-bottom:2px solid #0075ab}.hcaptcha-header-bar{align-items:center;background:#f0f2f5;display:flex;justify-content:space-between;margin:0 -20px;padding:0 20px;position:sticky;top:60px;z-index:2}#hcaptcha-options h2{color:#5c6f8a;font-size:1.5em}#hcaptcha-options h2~*{display:none}#hcaptcha-options h3{color:#5c6f8a;margin:1.5em 0 1em}#hcaptcha-options .notice-dismiss:before{color:#5c6f8a}#hcaptcha-options table tbody tr td{margin:0;padding:0;position:relative}#hcaptcha-options table tr td fieldset input[type=checkbox]{border:none;box-shadow:none;display:inline;height:1.25rem;margin-block-end:0;margin-block-start:-.125rem;margin-inline-end:.5rem;margin-inline-start:0;width:2.3611rem}#hcaptcha-options table tr td fieldset input[type=checkbox]:before{background:url(../images/checkbox-off.svg);background-size:cover;content:"";display:inline-block;height:1.25rem;margin:0;width:2.3611rem}#hcaptcha-options table tr td fieldset input[type=checkbox]:checked:before{background:no-repeat url(../images/checkbox-on.svg);background-size:cover}#hcaptcha-options fieldset:disabled{color:#dadada}#hcaptcha-options .button-primary{background-color:#026593;border-color:#026593;color:#fff}#hcaptcha-options .button-primary:hover{background-color:#025176}#hcaptcha-options .button-secondary{background-color:#fff;border-color:#026593;color:#026593}#hcaptcha-options .button-secondary:hover{background-color:#ccc}#hcaptcha-options a{color:#0075ab}#hcaptcha-navigation a{border-color:#0075ab}#hcaptcha-options a.hcaptcha-settings-tab{color:#5c6f8a}#hcaptcha-options .helper:before{background:#5c6f8a;border-radius:1.2em;color:#fff;content:"?";height:1.2em;inset-inline-end:0;position:absolute;text-align:center;top:0;transform:translateY(-27px);width:1.2em}#hcaptcha-options fieldset+.helper:before{top:50%;transform:translate(25px,-.7em)}.rtl #hcaptcha-options fieldset+.helper:before{transform:translate(-25px,-.8em)}#hcaptcha-options .helper .helper-content{background:#5c6f8a;box-sizing:border-box;color:#f0f2f5;display:none;inset-inline-end:0;padding:.5em 1em;position:absolute;top:0;transform:translate(1px,10px);width:100%}.rtl #hcaptcha-options .helper .helper-content{transform:translate(-1px,10px)}#hcaptcha-options fieldset+.helper .helper-content{top:50%;transform:translate(25px,25px);width:calc(100% + 25px)}#hcaptcha-options .helper:hover{cursor:help}#hcaptcha-options .helper:hover .helper-content{display:block;z-index:1}#hcaptcha-options .helper .helper-content:after{border:10px solid transparent;border-bottom-color:#5c6f8a;content:"";inset-inline-end:0;position:absolute;top:0;transform:translateY(-100%)}#hcaptcha-options .helper .helper-content a{color:#fff}#hcaptcha-message{box-sizing:border-box}#hcaptcha-message>p{font-size:13px;font-weight:600;line-height:1.5;margin:.5em 0}@keyframes blink{0%{opacity:1}16.7%{opacity:0}33.3%{opacity:1}50%{opacity:0}66.7%{opacity:1}83.3%{opacity:0}to{opacity:1}}.blink{animation:blink 3s linear}.hcaptcha-hide{display:none}.hcaptcha-excerpt{display:block;max-width:100%;overflow:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:max-content}.hcaptcha-excerpt:hover{overflow:visible}.hcaptcha-excerpt:hover .hcaptcha-hide{background:#5c6f8a;border:1px solid #c3c4c7;border-radius:6px;box-shadow:inset 0 -1px 0 rgba(0,0,0,.1);color:#f0f2f5;display:block;inset-inline-start:50%;max-width:300px;padding:8px 10px;position:absolute;text-align:center;top:50%;transform:translate(-50%,-50%);white-space:normal;width:max-content;z-index:1}@media (max-width:782px){#hcaptcha-options .wp-list-table .toggle-row{top:15px}#hcaptcha-options .wp-list-table tr.is-expanded .toggle-row{top:6.5px}#hcaptcha-options .widefat tbody th.check-column{padding:0;vertical-align:middle}#hcaptcha-options .widefat thead td.check-column,.widefat tfoot td.check-column{padding-left:0}#hcaptcha-options .widefat th input[type=checkbox]{margin-bottom:0}#hcaptcha-options .wp-list-table .is-expanded td:not(.hidden){overflow:visible}.hcaptcha-settings-tabs{margin:unset;margin-block-end:0;margin-block-start:10px;margin-inline-end:-12px;margin-inline-start:-10px;padding-block-end:0;padding-block-start:0;padding-inline-end:12px;padding-inline-start:10px}.hcaptcha-excerpt{display:table-cell;height:44px;vertical-align:middle}tr.is-expanded .hcaptcha-excerpt{height:19.5px}}@media (max-width:600px){#hcaptcha-options table tbody{grid-template-columns:1fr}#hcaptcha-options table tbody tr{position:relative}#hcaptcha-options fieldset+.helper:before{transform:translateY(-.7em)}#hcaptcha-options fieldset+.helper .helper-content{transform:translateY(25px);width:100%}#hcaptcha-options .helper{z-index:1}.hcaptcha-settings-tab{inset-inline-end:15px}} -
hcaptcha-for-forms-and-more/trunk/assets/css/settings-list-page-base.css
r3166267 r3233179 3 3 display: flex; 4 4 flex-direction: row-reverse; 5 margin-bottom: 15px;6 5 } 7 6 -
hcaptcha-for-forms-and-more/trunk/assets/css/settings-list-page-base.min.css
r3166267 r3233179 1 .hcaptcha-filter{display:flex;flex-direction:row-reverse; margin-bottom:15px;position:relative}#hcaptcha-datepicker-popover-button{align-items:center;background:#fff;border-color:#8c8f94;color:#3c434a;display:flex;font-size:14px;gap:16px}.hcaptcha-datepicker-popover{background:#fff;border-radius:6px;box-shadow:0 5px 15px rgba(0,0,0,.15);display:none;inset-inline-end:0;margin-top:10px;max-width:80vw;position:absolute;top:32px;width:416px;z-index:30}.hcaptcha-datepicker-popover-content{display:flex;flex-wrap:wrap}.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-choices{display:flex;flex-direction:column;flex-grow:1;font-size:14px;gap:15px;justify-content:space-between;line-height:14px;margin:0;padding:20px}.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-choices label{cursor:pointer}.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-choices .hcaptcha-is-selected{color:#0075ab}.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-calendar{padding:10px}.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-action{border-top:1px solid #ccd0d4;display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end;padding:15px 20px;width:100%}.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-calendar .form-control,.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-choices [type=radio]{border:none;clip:rect(1px,1px,1px,1px);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-wrap:normal}.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-calendar .flatpickr-calendar.inline{top:0}.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-calendar .flatpickr-calendar{box-shadow:none;width:100%}.flatpickr-current-month .flatpickr-monthDropdown-months,.flatpickr-current-month input.cur-year{font-size:14px;font-weight:700;opacity:.7}.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-calendar .flatpickr-calendar .dayContainer,.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-calendar .flatpickr-calendar .flatpickr-days,.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-calendar .flatpickr-calendar .flatpickr-rContainer{font-size:13px;width:100%}.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-calendar .flatpickr-calendar .dayContainer{max-width:100%;min-width:100%}.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-calendar .flatpickr-calendar *{box-sizing:border-box}.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-calendar .flatpickr-calendar .flatpickr-day{align-items:center;aspect-ratio:1;border-style:hidden;box-shadow:none;display:flex;height:auto;line-height:30px;margin:0;max-width:none}@media (min-width:601px){.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-calendar{width:245px}.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-choices{border-inline-end:1px solid #ccd0d4;margin-inline-end:4px}}1 .hcaptcha-filter{display:flex;flex-direction:row-reverse;position:relative}#hcaptcha-datepicker-popover-button{align-items:center;background:#fff;border-color:#8c8f94;color:#3c434a;display:flex;font-size:14px;gap:16px}.hcaptcha-datepicker-popover{background:#fff;border-radius:6px;box-shadow:0 5px 15px rgba(0,0,0,.15);display:none;inset-inline-end:0;margin-top:10px;max-width:80vw;position:absolute;top:32px;width:416px;z-index:30}.hcaptcha-datepicker-popover-content{display:flex;flex-wrap:wrap}.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-choices{display:flex;flex-direction:column;flex-grow:1;font-size:14px;gap:15px;justify-content:space-between;line-height:14px;margin:0;padding:20px}.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-choices label{cursor:pointer}.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-choices .hcaptcha-is-selected{color:#0075ab}.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-calendar{padding:10px}.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-action{border-top:1px solid #ccd0d4;display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end;padding:15px 20px;width:100%}.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-calendar .form-control,.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-choices [type=radio]{border:none;clip:rect(1px,1px,1px,1px);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-wrap:normal}.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-calendar .flatpickr-calendar.inline{top:0}.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-calendar .flatpickr-calendar{box-shadow:none;width:100%}.flatpickr-current-month .flatpickr-monthDropdown-months,.flatpickr-current-month input.cur-year{font-size:14px;font-weight:700;opacity:.7}.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-calendar .flatpickr-calendar .dayContainer,.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-calendar .flatpickr-calendar .flatpickr-days,.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-calendar .flatpickr-calendar .flatpickr-rContainer{font-size:13px;width:100%}.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-calendar .flatpickr-calendar .dayContainer{max-width:100%;min-width:100%}.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-calendar .flatpickr-calendar *{box-sizing:border-box}.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-calendar .flatpickr-calendar .flatpickr-day{align-items:center;aspect-ratio:1;border-style:hidden;box-shadow:none;display:flex;height:auto;line-height:30px;margin:0;max-width:none}@media (min-width:601px){.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-calendar{width:245px}.hcaptcha-datepicker-popover-content .hcaptcha-datepicker-choices{border-inline-end:1px solid #ccd0d4;margin-inline-end:4px}} -
hcaptcha-for-forms-and-more/trunk/assets/js/apps/hcaptcha.js
r3200161 r3233179 1 (()=>{"use strict";function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(t){return function(t){if(Array.isArray(t))return r(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||n(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function n(t,e){if(t){if("string"==typeof t)return r(t,e);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(t,e):void 0}}function r(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n<e;n++)r[n]=t[n];return r}function o(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t, a(r.key),r)}}function a(e){var n=function(e,n){if("object"!=t(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var o=r.call(e,n||"default");if("object"!=t(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===n?String:Number)(e)}(e,"string");return"symbol"==t(n)?n:n+""}var i=function(){return r=function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.foundForms=[],this.params=null,this.observing=!1,this.darkElement=null,this.darkClass=null,this.callback=this.callback.bind(this),this.validate=this.validate.bind(this),this.addedDCLCallbacks=new Set},a=[{key:"generateID",value:function(){var t=function(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)};return t()+"-"+t()+"-"+t()+"-"+t()}},{key:"getFoundFormById",value:function(t){var e;return null!==(e=this.foundForms.filter((function(e){return t===e.hCaptchaId}))[0])&&void 0!==e?e:null}},{key:"getWidgetId",value:function(t){var e,n,r;if(void 0===t)return"";var o=null!==(e=null===(n=t.closest(this.formSelector))||void 0===n||null===(n=n.dataset)||void 0===n?void 0:n.hCaptchaId)&&void 0!==e?e:"";if(!o)return"";var a=this.getFoundFormById(o);return null!==(r=null==a?void 0:a.widgetId)&&void 0!==r?r:""}},{key:"reset",value:function(t){var e=this.getWidgetId(t);e&&hcaptcha.reset(e)}},{key:"isSameOrDescendant",value:function(t,e){for(var n=e;n;){if(n===t)return!0;n=n.parentElement}return!1}},{key:"validate",value:function(t){var e=t.currentTarget.closest(this.formSelector),n=this.getFoundFormById(e.dataset.hCaptchaId),r=n.submitButtonElement,o=n.widgetId;if(this.isSameOrDescendant(r,t.target)&&(t.preventDefault(),t.stopPropagation(),this.currentForm={formElement:e,submitButtonElement:r},o)){var a=e.querySelector(this.responseSelector),i=a?a.value:"";""===i?hcaptcha.execute(o):this.callback(i)}}},{key:"isValidated",value:function(){return void 0!==this.currentForm}},{key:"getForms",value:function(){return e(document.querySelectorAll(this.formSelector))}},{key:"getParams",value:function(){if(null!==this.params)return this.params;var t;try{var e,n;t=JSON.parse(wp.hooks.applyFilters("hcaptcha.params",null!==(e=null===(n=HCaptchaMainObject)||void 0===n?void 0:n.params)&&void 0!==e?e:""))}catch(e){t={}}return t.callback=this.callback,t}},{key:"setParams",value:function(t){this.params=t}},{key:"setDarkData",value:function(){var t={"twenty-twenty-one":{darkStyleId:"twenty-twenty-one-style-css",darkElement:document.body,darkClass:"is-dark-theme"},"wp-dark-mode":{darkStyleId:"wp-dark-mode-frontend-css",darkElement:document.documentElement,darkClass:"wp-dark-mode-active"},"droit-dark-mode":{darkStyleId:"dtdr-public-inline-css",darkElement:document.documentElement,darkClass:"drdt-dark-mode"}};t=wp.hooks.applyFilters("hcaptcha.darkData",t);for(var e=0,n=Object.values(t);e<n.length;e++){var r=n[e];if(document.getElementById(r.darkStyleId))return this.darkElement=r.darkElement,void(this.darkClass=r.darkClass)}}},{key:"observeDarkMode",value:function(){var t=this;this.observing||(this.observing=!0,"auto"!==this.getParams().theme)||(this.setDarkData(),this.darkElement&&this.darkClass&&new MutationObserver((function(e){var r,o=function(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=n(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var o=0,a=function(){};return{s:a,n:function(){return o>=t.length?{done:!0}:{done:!1,value:t[o++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,u=!0,c=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return u=t.done,t},e:function(t){c=!0,i=t},f:function(){try{u||null==r.return||r.return()}finally{if(c)throw i}}}}(e);try{var a=function(){var e=r.value.oldValue,n=t.darkElement.getAttribute("class");e=e?e.split(" "):[],(n=n?n.split(" "):[]).filter((function(t){return!e.includes(t)})).concat(e.filter((function(t){return!n.includes(t)}))).includes(t.darkClass)&&t.bindEvents()};for(o.s();!(r=o.n()).done;)a()}catch(t){o.e(t)}finally{o.f()}})).observe(this.darkElement,{attributes:!0,attributeOldValue:!0}))}},{key:"getWidgetByToken",value:function(t){var n=e(document.querySelectorAll(this.responseSelector)).find((function(e){return e.value===t}));return n?n.closest(".h-captcha"):null}},{key:"callback",value:function(t){document.dispatchEvent(new CustomEvent("hCaptchaSubmitted",{detail:{token:t}}));var e=this.getParams(),n=this.getWidgetByToken(t),r=n?n.dataset.force:null;("invisible"===e.size||"true"===r&&this.isValidated())&&this.submit()}},{key:"applyAutoTheme",value:function(t){if("auto"!==t.theme)return t;if(t.theme="light",!this.darkElement)return t;var e=this.darkElement.getAttribute("class");return(e=e||"").includes(this.darkClass)&&(t.theme="dark"),t}},{key:"render",value:function(e){this.observeDarkMode();var n,r,o=this.getParams();return"object"===t(o.theme)?null!==(n=null===(r=o)||void 0===r||null===(r=r.theme)||void 0===r||null===(r=r.component)||void 0===r||null===(r=r.checkbox)||void 0===r||null===(r=r.main)||void 0===r?void 0:r.fill)&&void 0!==n&&n&&(e.dataset.theme="custom"):o.theme=e.dataset.theme,o.size=e.dataset.size,o=this.applyAutoTheme(o),hcaptcha.render(e,o)}},{key:"addSyncedEventListener",value:function(t){if("loading"===document.readyState){if(this.addedDCLCallbacks.has(t))return;this.addedDCLCallbacks.add(t),window.addEventListener("DOMContentLoaded",t)}else t()}},{key:"bindEvents",value:function(){var t=this;"undefined"!=typeof hcaptcha&&(this.formSelector=wp.hooks.applyFilters("hcaptcha.formSelector","form, section.cwginstock-subscribe-form, div.sdm_download_item, .gform_editor, #nf-builder, .wpforms-captcha-preview"),this.submitButtonSelector=wp.hooks.applyFilters("hcaptcha.submitButtonSelector",'*[type="submit"]:not(.quform-default-submit), #check_config, button[type="button"].ff-btn, a.et_pb_newsletter_button.et_pb_button, .forminator-button-submit, .frm_button_submit, a.sdm_download, .uagb-forms-main-submit-button'),this.responseSelector='textarea[name="h-captcha-response"]',this.getForms().map((function(e){var n=e.querySelector(".h-captcha");if(null===n)return e;if(n.classList.contains("hcaptcha-widget-id"))return e;n.innerHTML="";var r=t.generateID(),o=e.querySelectorAll(t.submitButtonSelector)[0],a=t.render(n);return e.dataset.hCaptchaId=r,t.foundForms.push({hCaptchaId:r,submitButtonElement:o,widgetId:a}),"invisible"!==n.dataset.size&&"true"!==n.dataset.force?e:o?(o.addEventListener("click",t.validate,!0),e):e}),this))}},{key:"isAjaxSubmitButton",value:function(t){var e=t.getAttribute("type"),n="submit"!==(e=e?e.toLowerCase():"");return wp.hooks.applyFilters("hcaptcha.ajaxSubmitButton",n,t)}},{key:"submit",value:function(){var t=this.currentForm.formElement,e=this.currentForm.submitButtonElement;if("form"!==t.tagName.toLowerCase()||this.isAjaxSubmitButton(e))return e.removeEventListener("click",this.validate,!0),void e.click();t.requestSubmit?t.requestSubmit(e):t.submit()}}],a&&o(r.prototype,a),i&&o(r,i),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,a,i}();window.HCaptchaMainObject=window.HCaptchaMainObject||{};const u=i;function c(t){return c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},c(t)}function l(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,s(r.key),r)}}function s(t){var e=function(t,e){if("object"!=c(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var r=n.call(t,e||"default");if("object"!=c(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==c(e)?e:e+""}function d(t,e,n){return e=p(e),function(t,e){if(e&&("object"==c(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,h()?Reflect.construct(e,n||[],p(t).constructor):e.apply(t,n))}function f(t){var e="function"==typeof Map?new Map:void 0;return f=function(t){if(null===t||!function(t){try{return-1!==Function.toString.call(t).indexOf("[native code]")}catch(e){return"function"==typeof t}}(t))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,n)}function n(){return function(t,e,n){if(h())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,e);var o=new(t.bind.apply(t,r));return n&&m(o,n.prototype),o}(t,arguments,p(this).constructor)}return n.prototype=Object.create(t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),m(n,t)},f(t)}function h(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(h=function(){return!!t})()}function m(t,e){return m=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},m(t,e)}function p(t){return p=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},p(t)}const v=function(t){function e(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),d(this,e,arguments)}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&m(t,e)}(e,t),n=e,(r=[{key:"connectedCallback",value:function(){window.hCaptcha.addSyncedEventListener(window.hCaptchaBindEvents)}}])&&l(n.prototype,r),o&&l(n,o),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r,o}(f(HTMLElement));var y=new u;window.hCaptcha=y,window.hCaptchaGetWidgetId=function(t){y.getWidgetId(t)},window.hCaptchaReset=function(t){y.reset(t)},window.hCaptchaBindEvents=function(){y.bindEvents()},window.hCaptchaSubmit=function(){y.submit()},window.hCaptchaOnLoad=function(){y.addSyncedEventListener((function(){document.dispatchEvent(new CustomEvent("hCaptchaBeforeBindEvents")),window.hCaptchaBindEvents(),document.dispatchEvent(new CustomEvent("hCaptchaLoaded"))}))},window.customElements.define("h-captcha",v),document.dispatchEvent(new CustomEvent("hCaptchaBeforeAPI"))})();1 (()=>{"use strict";function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(t){return function(t){if(Array.isArray(t))return r(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||n(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function n(t,e){if(t){if("string"==typeof t)return r(t,e);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(t,e):void 0}}function r(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n<e;n++)r[n]=t[n];return r}function o(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,i(r.key),r)}}function i(e){var n=function(e,n){if("object"!=t(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var o=r.call(e,n||"default");if("object"!=t(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===n?String:Number)(e)}(e,"string");return"symbol"==t(n)?n:n+""}var a=function(){return r=function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.foundForms=[],this.params=null,this.observing=!1,this.darkElement=null,this.darkClass=null,this.callback=this.callback.bind(this),this.validate=this.validate.bind(this),this.addedDCLCallbacks=new Set},i=[{key:"generateID",value:function(){var t=function(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)};return t()+"-"+t()+"-"+t()+"-"+t()}},{key:"getFoundFormById",value:function(t){var e;return null!==(e=this.foundForms.filter((function(e){return t===e.hCaptchaId}))[0])&&void 0!==e?e:null}},{key:"getWidgetId",value:function(t){var e,n,r;if(void 0===t)return"";var o=null!==(e=null===(n=t.closest(this.formSelector))||void 0===n||null===(n=n.dataset)||void 0===n?void 0:n.hCaptchaId)&&void 0!==e?e:"";if(!o)return"";var i=this.getFoundFormById(o);return null!==(r=null==i?void 0:i.widgetId)&&void 0!==r?r:""}},{key:"reset",value:function(t){var e=this.getWidgetId(t);e&&hcaptcha.reset(e)}},{key:"isSameOrDescendant",value:function(t,e){for(var n=e;n;){if(n===t)return!0;n=n.parentElement}return!1}},{key:"getCurrentForm",value:function(t){var e,n=t.currentTarget.closest(this.formSelector),r=this.getFoundFormById(null==n||null===(e=n.dataset)||void 0===e?void 0:e.hCaptchaId),o=null==r?void 0:r.submitButtonElement,i=null==r?void 0:r.widgetId;if(i&&this.isSameOrDescendant(o,t.target))return t.preventDefault(),t.stopPropagation(),{formElement:n,submitButtonElement:o,widgetId:i}}},{key:"validate",value:function(t){if(this.currentForm=this.getCurrentForm(t),this.currentForm){var e=this.currentForm,n=e.formElement,r=e.widgetId,o=n.querySelector(this.responseSelector),i=o?o.value:"";""===i?hcaptcha.execute(r):this.callback(i)}}},{key:"isValidated",value:function(){return void 0!==this.currentForm}},{key:"getForms",value:function(){return e(document.querySelectorAll(this.formSelector))}},{key:"getParams",value:function(){if(null!==this.params)return this.params;var t;try{var e,n;t=JSON.parse(wp.hooks.applyFilters("hcaptcha.params",null!==(e=null===(n=HCaptchaMainObject)||void 0===n?void 0:n.params)&&void 0!==e?e:""))}catch(e){t={}}return t.callback=this.callback,t}},{key:"setParams",value:function(t){this.params=t}},{key:"setDarkData",value:function(){var t={"twenty-twenty-one":{darkStyleId:"twenty-twenty-one-style-css",darkElement:document.body,darkClass:"is-dark-theme"},"wp-dark-mode":{darkStyleId:"wp-dark-mode-frontend-css",darkElement:document.documentElement,darkClass:"wp-dark-mode-active"},"droit-dark-mode":{darkStyleId:"dtdr-public-inline-css",darkElement:document.documentElement,darkClass:"drdt-dark-mode"}};t=wp.hooks.applyFilters("hcaptcha.darkData",t);for(var e=0,n=Object.values(t);e<n.length;e++){var r=n[e];if(document.getElementById(r.darkStyleId))return this.darkElement=r.darkElement,void(this.darkClass=r.darkClass)}}},{key:"observeDarkMode",value:function(){var t=this;this.observing||(this.observing=!0,"auto"!==this.getParams().theme)||(this.setDarkData(),this.darkElement&&this.darkClass&&new MutationObserver((function(e){var r,o=function(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=n(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var o=0,i=function(){};return{s:i,n:function(){return o>=t.length?{done:!0}:{done:!1,value:t[o++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,u=!0,c=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return u=t.done,t},e:function(t){c=!0,a=t},f:function(){try{u||null==r.return||r.return()}finally{if(c)throw a}}}}(e);try{var i=function(){var e=r.value.oldValue,n=t.darkElement.getAttribute("class");e=e?e.split(" "):[],(n=n?n.split(" "):[]).filter((function(t){return!e.includes(t)})).concat(e.filter((function(t){return!n.includes(t)}))).includes(t.darkClass)&&t.bindEvents()};for(o.s();!(r=o.n()).done;)i()}catch(t){o.e(t)}finally{o.f()}})).observe(this.darkElement,{attributes:!0,attributeOldValue:!0}))}},{key:"getWidgetByToken",value:function(t){var n=e(document.querySelectorAll(this.responseSelector)).find((function(e){return e.value===t}));return n?n.closest(".h-captcha"):null}},{key:"callback",value:function(t){document.dispatchEvent(new CustomEvent("hCaptchaSubmitted",{detail:{token:t}}));var e=this.getParams(),n=this.getWidgetByToken(t),r=n?n.dataset.force:null;("invisible"===e.size||"true"===r&&this.isValidated())&&this.submit()}},{key:"applyAutoTheme",value:function(t){if("auto"!==t.theme)return t;if(t.theme="light",!this.darkElement)return t;var e=this.darkElement.getAttribute("class");return(e=e||"").includes(this.darkClass)&&(t.theme="dark"),t}},{key:"render",value:function(e){this.observeDarkMode();var n,r,o=this.getParams();return"object"===t(o.theme)?null!==(n=null===(r=o)||void 0===r||null===(r=r.theme)||void 0===r||null===(r=r.component)||void 0===r||null===(r=r.checkbox)||void 0===r||null===(r=r.main)||void 0===r?void 0:r.fill)&&void 0!==n&&n&&(e.dataset.theme="custom"):o.theme=e.dataset.theme,o.size=e.dataset.size,o=this.applyAutoTheme(o),hcaptcha.render(e,o)}},{key:"addSyncedEventListener",value:function(t){if("loading"===document.readyState){if(this.addedDCLCallbacks.has(t))return;this.addedDCLCallbacks.add(t),window.addEventListener("DOMContentLoaded",t)}else t()}},{key:"bindEvents",value:function(){var t=this;"undefined"!=typeof hcaptcha&&(this.formSelector=wp.hooks.applyFilters("hcaptcha.formSelector","form, section.cwginstock-subscribe-form, div.sdm_download_item, .gform_editor, #nf-builder, .wpforms-captcha-preview"),this.submitButtonSelector=wp.hooks.applyFilters("hcaptcha.submitButtonSelector",'*[type="submit"]:not(.quform-default-submit), #check_config, button[type="button"].ff-btn, a.et_pb_newsletter_button.et_pb_button, .forminator-button-submit, .frm_button_submit, a.sdm_download, .uagb-forms-main-submit-button'),this.responseSelector='textarea[name="h-captcha-response"]',this.getForms().map((function(e){var n=e.querySelector(".h-captcha");if(null===n)return e;if(n.classList.contains("hcaptcha-widget-id"))return e;n.innerHTML="";var r=t.generateID(),o=e.querySelectorAll(t.submitButtonSelector)[0],i=t.render(n);if(e.dataset.hCaptchaId=r,t.foundForms.push({hCaptchaId:r,submitButtonElement:o,widgetId:i}),!o)return e;var a=n.dataset;return"invisible"!==a.size&&"true"!==a.force||o.addEventListener("click",t.validate,!0),e}),this))}},{key:"isAjaxSubmitButton",value:function(t){var e=t.getAttribute("type"),n="submit"!==(e=e?e.toLowerCase():"");return wp.hooks.applyFilters("hcaptcha.ajaxSubmitButton",n,t)}},{key:"submit",value:function(){if(this.currentForm){var t=this.currentForm,e=t.formElement,n=t.submitButtonElement;if("form"!==e.tagName.toLowerCase()||this.isAjaxSubmitButton(n))return n.removeEventListener("click",this.validate,!0),void n.click();e.requestSubmit?e.requestSubmit(n):e.submit()}}}],i&&o(r.prototype,i),a&&o(r,a),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,i,a}();window.HCaptchaMainObject=window.HCaptchaMainObject||{};const u=a;function c(t){return c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},c(t)}function l(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,s(r.key),r)}}function s(t){var e=function(t,e){if("object"!=c(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var r=n.call(t,e||"default");if("object"!=c(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==c(e)?e:e+""}function d(t,e,n){return e=p(e),function(t,e){if(e&&("object"==c(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,h()?Reflect.construct(e,n||[],p(t).constructor):e.apply(t,n))}function f(t){var e="function"==typeof Map?new Map:void 0;return f=function(t){if(null===t||!function(t){try{return-1!==Function.toString.call(t).indexOf("[native code]")}catch(e){return"function"==typeof t}}(t))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,n)}function n(){return function(t,e,n){if(h())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,e);var o=new(t.bind.apply(t,r));return n&&m(o,n.prototype),o}(t,arguments,p(this).constructor)}return n.prototype=Object.create(t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),m(n,t)},f(t)}function h(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(h=function(){return!!t})()}function m(t,e){return m=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},m(t,e)}function p(t){return p=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},p(t)}const v=function(t){function e(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),d(this,e,arguments)}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&m(t,e)}(e,t),n=e,(r=[{key:"connectedCallback",value:function(){window.hCaptcha.addSyncedEventListener(window.hCaptchaBindEvents)}}])&&l(n.prototype,r),o&&l(n,o),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r,o}(f(HTMLElement));var y=new u;window.hCaptcha=y,window.hCaptchaGetWidgetId=function(t){y.getWidgetId(t)},window.hCaptchaReset=function(t){y.reset(t)},window.hCaptchaBindEvents=function(){y.bindEvents()},window.hCaptchaSubmit=function(){y.submit()},window.hCaptchaOnLoad=function(){y.addSyncedEventListener((function(){document.dispatchEvent(new CustomEvent("hCaptchaBeforeBindEvents")),window.hCaptchaBindEvents(),document.dispatchEvent(new CustomEvent("hCaptchaLoaded"))}))},window.customElements.define("h-captcha",v),document.dispatchEvent(new CustomEvent("hCaptchaBeforeAPI"))})(); -
hcaptcha-for-forms-and-more/trunk/assets/js/events.js
r3095958 r3233179 1 /* global Chart, HCaptchaEventsObject */1 /* global jQuery, Chart, hCaptchaSettingsBase, HCaptchaListPageBaseObject, HCaptchaEventsObject */ 2 2 3 3 /** 4 * @param HCaptchaEventsObject.ajaxUrl 5 * @param HCaptchaEventsObject.bulkAction 6 * @param HCaptchaEventsObject.bulkNonce 4 7 * @param HCaptchaEventsObject.failed 5 8 * @param HCaptchaEventsObject.failedLabel … … 8 11 * @param HCaptchaEventsObject.unit 9 12 */ 10 document.addEventListener( 'DOMContentLoaded', function() {11 const ctx = document.getElementById( 'eventsChart' );12 const aspectRatio = window.innerWidth > 600 ? 3 : 2;13 13 14 new Chart( ctx, { 15 type: 'bar', 16 data: { 17 datasets: [ 18 { 19 label: HCaptchaEventsObject.succeedLabel, 20 data: HCaptchaEventsObject.succeed, 21 borderWidth: 1, 22 }, 23 { 24 label: HCaptchaEventsObject.failedLabel, 25 data: HCaptchaEventsObject.failed, 26 borderWidth: 1, 27 }, 28 ], 29 }, 30 options: { 31 responsive: true, 32 maintainAspectRatio: true, 33 aspectRatio, 34 scales: { 35 x: { 36 type: 'time', 37 time: { 38 displayFormats: { 39 millisecond: 'HH:mm:ss', 40 second: 'HH:mm:ss', 41 minute: 'HH:mm', 42 hour: 'HH:mm', 43 day: 'dd.MM.yyyy', 44 week: 'dd.MM.yyyy', 45 month: 'dd.MM.yyyy', 46 quarter: 'dd.MM.yyyy', 47 year: 'dd.MM.yyyy', 14 /** 15 * Events page logic. 16 * 17 * @param {Object} $ jQuery instance. 18 */ 19 const events = function( $ ) { 20 function initChart() { 21 const ctx = document.getElementById( 'eventsChart' ); 22 const aspectRatio = window.innerWidth > 600 ? 3 : 2; 23 24 new Chart( ctx, { 25 type: 'bar', 26 data: { 27 datasets: [ 28 { 29 label: HCaptchaEventsObject.succeedLabel, 30 data: HCaptchaEventsObject.succeed, 31 borderWidth: 1, 32 }, 33 { 34 label: HCaptchaEventsObject.failedLabel, 35 data: HCaptchaEventsObject.failed, 36 borderWidth: 1, 37 }, 38 ], 39 }, 40 options: { 41 responsive: true, 42 maintainAspectRatio: true, 43 aspectRatio, 44 scales: { 45 x: { 46 type: 'time', 47 time: { 48 displayFormats: { 49 millisecond: 'HH:mm:ss', 50 second: 'HH:mm:ss', 51 minute: 'HH:mm', 52 hour: 'HH:mm', 53 day: 'dd.MM.yyyy', 54 week: 'dd.MM.yyyy', 55 month: 'dd.MM.yyyy', 56 quarter: 'dd.MM.yyyy', 57 year: 'dd.MM.yyyy', 58 }, 59 tooltipFormat: 'dd.MM.yyyy HH:mm', 60 unit: HCaptchaEventsObject.unit, 48 61 }, 49 tooltipFormat: 'dd.MM.yyyy HH:mm',50 unit: HCaptchaEventsObject.unit,51 62 }, 52 },53 y: {54 beginAtZero: true,55 ticks: {56 precision: 0,63 y: { 64 beginAtZero: true, 65 ticks: { 66 precision: 0, 67 }, 57 68 }, 58 69 }, 59 70 }, 60 }, 61 } ); 62 } ); 71 } ); 72 } 73 74 function handleBulkAction( event ) { 75 event.preventDefault(); 76 77 const form = event.target.closest( 'form' ); 78 const formData = new FormData( form ); 79 80 const bulk = formData.get( 'action' ); 81 82 if ( bulk === '-1' ) { 83 hCaptchaSettingsBase.showErrorMessage( HCaptchaListPageBaseObject.noAction ); 84 85 return; 86 } 87 88 const ids = formData.getAll( 'bulk-checkbox[]' ); 89 90 if ( ! ids.length ) { 91 hCaptchaSettingsBase.showErrorMessage( HCaptchaListPageBaseObject.noItems ); 92 93 return; 94 } 95 96 const data = { 97 action: HCaptchaEventsObject.bulkAction, 98 nonce: HCaptchaEventsObject.bulkNonce, 99 bulk, 100 ids: JSON.stringify( ids ), 101 }; 102 103 $.post( { 104 url: HCaptchaEventsObject.ajaxUrl, 105 data, 106 beforeSend: () => hCaptchaSettingsBase.showSuccessMessage( HCaptchaListPageBaseObject.DoingBulk ), 107 } ) 108 .done( function( response ) { 109 if ( ! response.success ) { 110 hCaptchaSettingsBase.showErrorMessage( response.data ); 111 112 return; 113 } 114 115 window.location.reload(); 116 } ) 117 .fail( 118 function( response ) { 119 hCaptchaSettingsBase.showErrorMessage( response.statusText ); 120 }, 121 ); 122 } 123 124 initChart(); 125 document.getElementById( 'doaction' ).addEventListener( 'click', handleBulkAction ); 126 }; 127 128 window.hCaptchaForms = events; 129 130 jQuery( document ).ready( events ); -
hcaptcha-for-forms-and-more/trunk/assets/js/events.min.js
r3095958 r3233179 1 document.addEventListener("DOMContentLoaded",(function(){var e=document.getElementById("eventsChart"),t=window.innerWidth>600?3:2;new Chart(e,{type:"bar",data:{datasets:[{label:HCaptchaEventsObject.succeedLabel,data:HCaptchaEventsObject.succeed,borderWidth:1},{label:HCaptchaEventsObject.failedLabel,data:HCaptchaEventsObject.failed,borderWidth:1}]},options:{responsive:!0,maintainAspectRatio:!0,aspectRatio:t,scales:{x:{type:"time",time:{displayFormats:{millisecond:"HH:mm:ss",second:"HH:mm:ss",minute:"HH:mm",hour:"HH:mm",day:"dd.MM.yyyy",week:"dd.MM.yyyy",month:"dd.MM.yyyy",quarter:"dd.MM.yyyy",year:"dd.MM.yyyy"},tooltipFormat:"dd.MM.yyyy HH:mm",unit:HCaptchaEventsObject.unit}},y:{beginAtZero:!0,ticks:{precision:0}}}}})}));1 (()=>{var e=function(e){var t,a;t=document.getElementById("eventsChart"),a=window.innerWidth>600?3:2,new Chart(t,{type:"bar",data:{datasets:[{label:HCaptchaEventsObject.succeedLabel,data:HCaptchaEventsObject.succeed,borderWidth:1},{label:HCaptchaEventsObject.failedLabel,data:HCaptchaEventsObject.failed,borderWidth:1}]},options:{responsive:!0,maintainAspectRatio:!0,aspectRatio:a,scales:{x:{type:"time",time:{displayFormats:{millisecond:"HH:mm:ss",second:"HH:mm:ss",minute:"HH:mm",hour:"HH:mm",day:"dd.MM.yyyy",week:"dd.MM.yyyy",month:"dd.MM.yyyy",quarter:"dd.MM.yyyy",year:"dd.MM.yyyy"},tooltipFormat:"dd.MM.yyyy HH:mm",unit:HCaptchaEventsObject.unit}},y:{beginAtZero:!0,ticks:{precision:0}}}}}),document.getElementById("doaction").addEventListener("click",(function(t){t.preventDefault();var a=t.target.closest("form"),s=new FormData(a),n=s.get("action");if("-1"!==n){var c=s.getAll("bulk-checkbox[]");if(c.length){var o={action:HCaptchaEventsObject.bulkAction,nonce:HCaptchaEventsObject.bulkNonce,bulk:n,ids:JSON.stringify(c)};e.post({url:HCaptchaEventsObject.ajaxUrl,data:o,beforeSend:function(){return hCaptchaSettingsBase.showSuccessMessage(HCaptchaListPageBaseObject.DoingBulk)}}).done((function(e){e.success?window.location.reload():hCaptchaSettingsBase.showErrorMessage(e.data)})).fail((function(e){hCaptchaSettingsBase.showErrorMessage(e.statusText)}))}else hCaptchaSettingsBase.showErrorMessage(HCaptchaListPageBaseObject.noItems)}else hCaptchaSettingsBase.showErrorMessage(HCaptchaListPageBaseObject.noAction)}))};window.hCaptchaForms=e,jQuery(document).ready(e)})(); -
hcaptcha-for-forms-and-more/trunk/assets/js/forms.js
r3095958 r3233179 1 /* global Chart, HCaptchaFormsObject */1 /* global jQuery, Chart, hCaptchaSettingsBase, HCaptchaListPageBaseObject, HCaptchaFormsObject */ 2 2 3 3 /** 4 * @param HCaptchaFormsObject.ajaxUrl 5 * @param HCaptchaFormsObject.bulkAction 6 * @param HCaptchaFormsObject.bulkNonce 4 7 * @param HCaptchaFormsObject.served 5 8 * @param HCaptchaFormsObject.servedLabel 6 9 * @param HCaptchaFormsObject.unit 10 * @param HCaptchaListPageBaseObject.noAction 11 * @param HCaptchaListPageBaseObject.noItems 12 * @param HCaptchaListPageBaseObject.DoingBulk 7 13 */ 8 document.addEventListener( 'DOMContentLoaded', function() {9 const ctx = document.getElementById( 'formsChart' );10 const aspectRatio = window.innerWidth > 600 ? 3 : 2;11 14 12 new Chart( ctx, { 13 type: 'bar', 14 data: { 15 datasets: [ 16 { 17 label: HCaptchaFormsObject.servedLabel, 18 backgroundColor: 'rgba(2,101,147,0.5)', 19 data: HCaptchaFormsObject.served, 20 borderWidth: 1, 21 }, 22 ], 23 }, 24 options: { 25 responsive: true, 26 maintainAspectRatio: true, 27 aspectRatio, 28 scales: { 29 x: { 30 type: 'time', 31 time: { 32 displayFormats: { 33 millisecond: 'HH:mm:ss', 34 second: 'HH:mm:ss', 35 minute: 'HH:mm', 36 hour: 'HH:mm', 37 day: 'dd.MM.yyyy', 38 week: 'dd.MM.yyyy', 39 month: 'dd.MM.yyyy', 40 quarter: 'dd.MM.yyyy', 41 year: 'dd.MM.yyyy', 15 /** 16 * Forms page logic. 17 * 18 * @param {Object} $ jQuery instance. 19 */ 20 const forms = function( $ ) { 21 function initChart() { 22 const ctx = document.getElementById( 'formsChart' ); 23 const aspectRatio = window.innerWidth > 600 ? 3 : 2; 24 25 new Chart( ctx, { 26 type: 'bar', 27 data: { 28 datasets: [ 29 { 30 label: HCaptchaFormsObject.servedLabel, 31 backgroundColor: 'rgba(2,101,147,0.5)', 32 data: HCaptchaFormsObject.served, 33 borderWidth: 1, 34 }, 35 ], 36 }, 37 options: { 38 responsive: true, 39 maintainAspectRatio: true, 40 aspectRatio, 41 scales: { 42 x: { 43 type: 'time', 44 time: { 45 displayFormats: { 46 millisecond: 'HH:mm:ss', 47 second: 'HH:mm:ss', 48 minute: 'HH:mm', 49 hour: 'HH:mm', 50 day: 'dd.MM.yyyy', 51 week: 'dd.MM.yyyy', 52 month: 'dd.MM.yyyy', 53 quarter: 'dd.MM.yyyy', 54 year: 'dd.MM.yyyy', 55 }, 56 tooltipFormat: 'dd.MM.yyyy HH:mm', 57 unit: HCaptchaFormsObject.unit, 42 58 }, 43 tooltipFormat: 'dd.MM.yyyy HH:mm',44 unit: HCaptchaFormsObject.unit,45 59 }, 46 },47 y: {48 beginAtZero: true,49 ticks: {50 precision: 0,60 y: { 61 beginAtZero: true, 62 ticks: { 63 precision: 0, 64 }, 51 65 }, 52 66 }, 53 67 }, 54 }, 55 } ); 56 } ); 68 } ); 69 } 70 71 function handleBulkAction( event ) { 72 event.preventDefault(); 73 74 const form = event.target.closest( 'form' ); 75 const formData = new FormData( form ); 76 77 const bulk = formData.get( 'action' ); 78 79 if ( bulk === '-1' ) { 80 hCaptchaSettingsBase.showErrorMessage( HCaptchaListPageBaseObject.noAction ); 81 82 return; 83 } 84 85 const ids = formData.getAll( 'bulk-checkbox[]' ).map( 86 ( id ) => { 87 const row = form.querySelector( `input[name="bulk-checkbox[]"][value="${ id }"]` ).closest( 'tr' ); 88 const source = row.querySelector( 'td.name .hcaptcha-excerpt' ).dataset.source; 89 const formId = row.querySelector( 'td.form_id' ).textContent; 90 91 return { source, formId }; 92 }, 93 ); 94 95 if ( ! ids.length ) { 96 hCaptchaSettingsBase.showErrorMessage( HCaptchaListPageBaseObject.noItems ); 97 98 return; 99 } 100 101 const data = { 102 action: HCaptchaFormsObject.bulkAction, 103 nonce: HCaptchaFormsObject.bulkNonce, 104 bulk, 105 ids: JSON.stringify( ids ), 106 }; 107 108 $.post( { 109 url: HCaptchaFormsObject.ajaxUrl, 110 data, 111 beforeSend: () => hCaptchaSettingsBase.showSuccessMessage( HCaptchaListPageBaseObject.DoingBulk ), 112 } ) 113 .done( function( response ) { 114 if ( ! response.success ) { 115 hCaptchaSettingsBase.showErrorMessage( response.data ); 116 117 return; 118 } 119 120 window.location.reload(); 121 } ) 122 .fail( 123 function( response ) { 124 hCaptchaSettingsBase.showErrorMessage( response.statusText ); 125 }, 126 ); 127 } 128 129 initChart(); 130 document.getElementById( 'doaction' ).addEventListener( 'click', handleBulkAction ); 131 }; 132 133 window.hCaptchaForms = forms; 134 135 jQuery( document ).ready( forms ); -
hcaptcha-for-forms-and-more/trunk/assets/js/forms.min.js
r3095958 r3233179 1 document.addEventListener("DOMContentLoaded",(function(){var t=document.getElementById("formsChart"),e=window.innerWidth>600?3:2;new Chart(t,{type:"bar",data:{datasets:[{label:HCaptchaFormsObject.servedLabel,backgroundColor:"rgba(2,101,147,0.5)",data:HCaptchaFormsObject.served,borderWidth:1}]},options:{responsive:!0,maintainAspectRatio:!0,aspectRatio:e,scales:{x:{type:"time",time:{displayFormats:{millisecond:"HH:mm:ss",second:"HH:mm:ss",minute:"HH:mm",hour:"HH:mm",day:"dd.MM.yyyy",week:"dd.MM.yyyy",month:"dd.MM.yyyy",quarter:"dd.MM.yyyy",year:"dd.MM.yyyy"},tooltipFormat:"dd.MM.yyyy HH:mm",unit:HCaptchaFormsObject.unit}},y:{beginAtZero:!0,ticks:{precision:0}}}}})}));1 (()=>{var e=function(e){var t,a;t=document.getElementById("formsChart"),a=window.innerWidth>600?3:2,new Chart(t,{type:"bar",data:{datasets:[{label:HCaptchaFormsObject.servedLabel,backgroundColor:"rgba(2,101,147,0.5)",data:HCaptchaFormsObject.served,borderWidth:1}]},options:{responsive:!0,maintainAspectRatio:!0,aspectRatio:a,scales:{x:{type:"time",time:{displayFormats:{millisecond:"HH:mm:ss",second:"HH:mm:ss",minute:"HH:mm",hour:"HH:mm",day:"dd.MM.yyyy",week:"dd.MM.yyyy",month:"dd.MM.yyyy",quarter:"dd.MM.yyyy",year:"dd.MM.yyyy"},tooltipFormat:"dd.MM.yyyy HH:mm",unit:HCaptchaFormsObject.unit}},y:{beginAtZero:!0,ticks:{precision:0}}}}}),document.getElementById("doaction").addEventListener("click",(function(t){t.preventDefault();var a=t.target.closest("form"),s=new FormData(a),o=s.get("action");if("-1"!==o){var r=s.getAll("bulk-checkbox[]").map((function(e){var t=a.querySelector('input[name="bulk-checkbox[]"][value="'.concat(e,'"]')).closest("tr");return{source:t.querySelector("td.name .hcaptcha-excerpt").dataset.source,formId:t.querySelector("td.form_id").textContent}}));if(r.length){var c={action:HCaptchaFormsObject.bulkAction,nonce:HCaptchaFormsObject.bulkNonce,bulk:o,ids:JSON.stringify(r)};e.post({url:HCaptchaFormsObject.ajaxUrl,data:c,beforeSend:function(){return hCaptchaSettingsBase.showSuccessMessage(HCaptchaListPageBaseObject.DoingBulk)}}).done((function(e){e.success?window.location.reload():hCaptchaSettingsBase.showErrorMessage(e.data)})).fail((function(e){hCaptchaSettingsBase.showErrorMessage(e.statusText)}))}else hCaptchaSettingsBase.showErrorMessage(HCaptchaListPageBaseObject.noItems)}else hCaptchaSettingsBase.showErrorMessage(HCaptchaListPageBaseObject.noAction)}))};window.hCaptchaForms=e,jQuery(document).ready(e)})(); -
hcaptcha-for-forms-and-more/trunk/assets/js/general.js
r3200161 r3233179 1 /* global jQuery, hCaptcha, HCaptchaGeneralObject, kaggDialog */1 /* global jQuery, hCaptcha, hCaptchaSettingsBase, HCaptchaGeneralObject, kaggDialog */ 2 2 3 3 /** … … 154 154 function clearMessage() { 155 155 $message.remove(); 156 // Concat below to avoid inspection message.156 // Concat below to avoid an inspection message. 157 157 $( '<div id="hcaptcha-message">' + '</div>' ).insertAfter( headerBarSelector ); 158 158 $message = $( msgSelector ); … … 181 181 $( document ).trigger( 'wp-updates-notice-added' ); 182 182 183 const $wpwrap = $( '#wpwrap' );184 const top = $wpwrap.position().top;185 186 183 $( 'html, body' ).animate( 187 184 { 188 scrollTop: $message.offset().top - top - parseInt( $message.css( 'margin-bottom' )),185 scrollTop: $message.offset().top - hCaptchaSettingsBase.getStickyHeight(), 189 186 }, 190 187 1000 -
hcaptcha-for-forms-and-more/trunk/assets/js/general.min.js
r3200161 r3233179 1 (()=>{var t={};function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},e(t)}t.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}();var a=function(a){var n="#hcaptcha-message",c=a(n),o=a("form.hcaptcha-general"),r=a('[name="hcaptcha_settings[site_key]"]'),i=a('[name="hcaptcha_settings[secret_key]"]'),s=a("#hcaptcha-options .h-captcha"),h=a("#check_config"),l=a("#reset_notifications"),p=a('[name="hcaptcha_settings[theme]"]'),d=a('[name="hcaptcha_settings[size]"]'),u=a('[name="hcaptcha_settings[language]"]'),f=a('[name="hcaptcha_settings[mode]"]'),m=a('[name="hcaptcha_settings[custom_themes][]"]'),v=a(".hcaptcha-general-custom-prop select"),g=a(".hcaptcha-general-custom-value input"),b=a('[name="hcaptcha_settings[config_params]"]'),y=a(".hcaptcha-section-enterprise + table input"),C=a('[name="hcaptcha_settings[recaptcha_compat_off][]"]'),j=o.find("#submit"),O={},k=r.val(),H=i.val(), w=A();O[HCaptchaGeneralObject.modeLive]=HCaptchaGeneralObject.siteKey,O[HCaptchaGeneralObject.modeTestPublisher]=HCaptchaGeneralObject.modeTestPublisherSiteKey,O[HCaptchaGeneralObject.modeTestEnterpriseSafeEndUser]=HCaptchaGeneralObject.modeTestEnterpriseSafeEndUserSiteKey,O[HCaptchaGeneralObject.modeTestEnterpriseBotDetected]=HCaptchaGeneralObject.modeTestEnterpriseBotDetectedSiteKey;var G=!1,_=!1,S=[];function T(t){var e={};return t.each((function(){var t=a(this),n=t.attr("name").replace(/hcaptcha_settings\[(.+)]/,"$1");e[n]=t.val()})),e}function A(){return T(y)}function x(){c.remove(),a('<div id="hcaptcha-message"></div>').insertAfter(".hcaptcha-header-bar"),c=a(n)}function E(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(t=void 0===t?"":String(t),t=(t+="\n"+function(){for(var t=["recaptchacompat disabled","Missing sitekey - https://docs.hcaptcha.com/configuration#javascript-api"],e=[],a=0;a<S.length;a++){for(var n=S[a],c=n[0],o=n[1],r=Object.keys(o),i=[],s=0;s<r.length;s++){var h=o[s];"string"==typeof h&&-1===t.indexOf(h)&&i.push([c,h].join(" "))}e.push(i.join("\n"))}return S=[],e.join("\n")}()).trim()){c.removeClass(),c.addClass(e+" notice is-dismissible");var n=t.split("\n").map((function(t){return"<p>".concat(t,"</p>")}));c.html(n.join("")),a(document).trigger("wp-updates-notice-added");var o=a("#wpwrap").position().top;a("html, body").animate({scrollTop:c.offset().top-o-parseInt(c.css("margin-bottom"))},1e3)}}function N(){E(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"","notice-success")}function K(){E(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"","notice-error")}function L(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},a=Object.assign({},hCaptcha.getParams(),t),n=m.prop("checked"),c="live"===f.val();for(var o in n&&c?s.attr("data-theme","custom"):s.attr("data-theme",p.val()),n&&"object"===e(t.theme)||!n&&"object"!==e(t.theme)?a.theme=t.theme:a.theme=hCaptcha.getParams().theme,hCaptcha.setParams(a),s.html(""),t)"object"!==e(t[o])&&s.attr("data-".concat(o),"".concat(t[o]));hCaptcha.bindEvents()}function P(t,a){var n=function(t){return t&&"object"===e(t)};return n(t)&&n(a)?(Object.keys(a).forEach((function(e){var c=t[e],o=a[e];Array.isArray(c)&&Array.isArray(o)?t[e]=c.concat(o):n(c)&&n(o)?t[e]=P(Object.assign({},c),o):t[e]=o})),t):a}function U(t){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";for(var n in t){var c=a?"".concat(a,"--").concat(n):n;if("object"===e(t[n])&&null!==t[n])U(t[n],c);else{var o=t[n],r=c.replace(/theme--/g,""),i="".concat(r,"=").concat(o),s=v.find('option[value*="'.concat(r,'="]'));1===s.length&&(s.attr("value",i),s.is(":selected")&&g.val(o))}}}function B(){var t,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},a=b.val().trim();a=a||null;try{t=JSON.parse(a)}catch(t){return b.css("background-color","#ffabaf"),j.attr("disabled",!0),void K("Bad JSON!")}t=P(t,e),b.val(JSON.stringify(t,null,2)),U(t),m.prop("checked")||(t={sitekey:r.val(),theme:p.val(),size:d.val(),hl:u.val()}),L(t)}function J(){r.val()===k&&i.val()===H?(G=!1,x(),j.attr("disabled",!1)):G||(G=!0,K(HCaptchaGeneralObject.checkConfigNotice),j.attr("disabled",!0))}function D(t){return t=t.replace(/(http|https):\/\//,""),"https://"+new URL("https://"+t).host}!function(){S=[];var t=console.log,e=console.warn,a=console.info,n=console.error,c=console.clear;console.log=function(e){S.push(["Console log:",arguments]),t.apply(console,arguments)},console.warn=function(t){S.push(["Console warn:",arguments]),e.apply(console,arguments)},console.info=function(t){S.push(["Console info:",arguments]),a.apply(console,arguments)},console.error=function(t){S.push(["Console error:",arguments]),n.apply(console,arguments)},console.clear=function(){S=[],c()}}(),document.addEventListener("hCaptchaLoaded",(function(){K()})),h.on("click",(function(t){t.preventDefault(),""!==a('.hcaptcha-general-sample-hcaptcha textarea[name="h-captcha-response"]').val()?function(){x(),j.attr("disabled",!0);var t={action:HCaptchaGeneralObject.checkConfigAction,nonce:HCaptchaGeneralObject.checkConfigNonce,mode:f.val(),siteKey:r.val(),secretKey:i.val(),"h-captcha-response":a('textarea[name="h-captcha-response"]').val(),"hcaptcha-widget-id":a('input[name="hcaptcha-widget-id"]').val()};a.post({url:HCaptchaGeneralObject.ajaxUrl,data:t,beforeSend:function(){return N(HCaptchaGeneralObject.checkingConfigMsg)}}).done((function(t){t.success?(k=r.val(),H=i.val(),w=T(y),_=!1,N(t.data),j.attr("disabled",!1)):K(t.data)})).fail((function(t){K(t.statusText)})).always((function(){L()}))}():kaggDialog.confirm({title:HCaptchaGeneralObject.completeHCaptchaTitle,content:HCaptchaGeneralObject.completeHCaptchaContent,type:"info",buttons:{ok:{text:HCaptchaGeneralObject.OKBtnText}},onAction:function(){return window.hCaptchaReset(document.querySelector(".hcaptcha-general-sample-hcaptcha"))}})})),r.on("change",(function(t){L({sitekey:a(t.target).val()}),J()})),i.on("change",(function(){J()})),p.on("change",(function(t){L({theme:a(t.target).val()})})),d.on("change",(function(t){var e=a("#hcaptcha-invisible-notice"),n=a(t.target).val();"invisible"===n?e.show():e.hide(),L({size:n})})),u.on("change",(function(t){L({hl:a(t.target).val()})})),f.on("change",(function(t){var e=a(t.target).val();O.hasOwnProperty(e)&&(e===HCaptchaGeneralObject.modeLive?(r.attr("disabled",!1),i.attr("disabled",!1)):(r.attr("disabled",!0),i.attr("disabled",!0)),L({sitekey:O[e]}))})),m.on("change",(function(){B()})),b.on("blur",(function(){B()})),b.on("focus",(function(){b.css("background-color","unset"),j.attr("disabled",!1)})),y.on("change",(function(){!function(){var e={onload:"hCaptchaOnLoad",render:"explicit"};C.prop("checked")&&(e.recaptchacompat="off"),m.prop("checked")&&(e.custom="true");var a={asset_host:"assethost",endpoint:"endpoint",host:"host",image_host:"imghost",report_api:"reportapi",sentry:"sentry"},n=A();for(var c in a){var o=n[c].trim();o&&(e[a[c]]=encodeURIComponent(D(o)))}var r=n.api_host.trim();r=D(r=r||"js.hcaptcha.com")+"/1/api.js";var i=new URL(r);for(var h in e)i.searchParams.append(h,e[h]);document.getElementById("hcaptcha-api").remove(),delete t.g.hcaptcha,s.html("");var l=document.getElementsByTagName("head")[0],p=document.createElement("script");p.type="text/javascript",p.id="hcaptcha-api",p.src=i.href,l.appendChild(p)}(),JSON.stringify(A())===JSON.stringify(w)?(_=!1,x(),j.attr("disabled",!1)):_||(_=!0,K(HCaptchaGeneralObject.checkConfigNotice),j.attr("disabled",!0))})),a(".hcaptcha-general h3").on("click",(function(t){var e=a(t.currentTarget);e.toggleClass("closed");var n={action:HCaptchaGeneralObject.toggleSectionAction,nonce:HCaptchaGeneralObject.toggleSectionNonce,section:e.attr("class").replaceAll(/(hcaptcha-section-|closed)/g,"").trim(),status:!e.hasClass("closed")};a.post({url:HCaptchaGeneralObject.ajaxUrl,data:n}).done((function(t){t.success||K(t.data)})).fail((function(t){K(t.statusText)}))})),h.removeAttr("name"),l.removeAttr("name"),v.removeAttr("name"),g.removeAttr("name"),v.find("option").each((function(){var t=a(this);t.val().split("=")[1]||t.attr("disabled",!0)})),g.val(""),v.on("change",(function(){var t=a(this).find("option:selected").val().split("="),e=t[0],n=t[1];"palette--mode"===e?(g.attr("type","text"),g.val(n)):(g.val(n),g.attr("type","color"))})),g.on("change",(function(t){var e=a(t.target).val(),n=v.find("option:selected"),c=n.val().split("="),o=c[0],r=e;n.val(o+"="+e),B(r=(o="theme--"+c[0]).split("--").reverse().reduce((function(t,e){var a={};return a[e]=t,a}),r))}))};window.hCaptchaGeneral=a,jQuery(document).ready(a)})();1 (()=>{var t={};function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},e(t)}t.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}();var a=function(a){var n="#hcaptcha-message",c=a(n),o=a("form.hcaptcha-general"),r=a('[name="hcaptcha_settings[site_key]"]'),i=a('[name="hcaptcha_settings[secret_key]"]'),s=a("#hcaptcha-options .h-captcha"),h=a("#check_config"),l=a("#reset_notifications"),p=a('[name="hcaptcha_settings[theme]"]'),d=a('[name="hcaptcha_settings[size]"]'),u=a('[name="hcaptcha_settings[language]"]'),f=a('[name="hcaptcha_settings[mode]"]'),m=a('[name="hcaptcha_settings[custom_themes][]"]'),v=a(".hcaptcha-general-custom-prop select"),g=a(".hcaptcha-general-custom-value input"),b=a('[name="hcaptcha_settings[config_params]"]'),y=a(".hcaptcha-section-enterprise + table input"),C=a('[name="hcaptcha_settings[recaptcha_compat_off][]"]'),j=o.find("#submit"),O={},k=r.val(),H=i.val(),G=A();O[HCaptchaGeneralObject.modeLive]=HCaptchaGeneralObject.siteKey,O[HCaptchaGeneralObject.modeTestPublisher]=HCaptchaGeneralObject.modeTestPublisherSiteKey,O[HCaptchaGeneralObject.modeTestEnterpriseSafeEndUser]=HCaptchaGeneralObject.modeTestEnterpriseSafeEndUserSiteKey,O[HCaptchaGeneralObject.modeTestEnterpriseBotDetected]=HCaptchaGeneralObject.modeTestEnterpriseBotDetectedSiteKey;var S=!1,_=!1,w=[];function T(t){var e={};return t.each((function(){var t=a(this),n=t.attr("name").replace(/hcaptcha_settings\[(.+)]/,"$1");e[n]=t.val()})),e}function A(){return T(y)}function x(){c.remove(),a('<div id="hcaptcha-message"></div>').insertAfter(".hcaptcha-header-bar"),c=a(n)}function E(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(t=void 0===t?"":String(t),t=(t+="\n"+function(){for(var t=["recaptchacompat disabled","Missing sitekey - https://docs.hcaptcha.com/configuration#javascript-api"],e=[],a=0;a<w.length;a++){for(var n=w[a],c=n[0],o=n[1],r=Object.keys(o),i=[],s=0;s<r.length;s++){var h=o[s];"string"==typeof h&&-1===t.indexOf(h)&&i.push([c,h].join(" "))}e.push(i.join("\n"))}return w=[],e.join("\n")}()).trim()){c.removeClass(),c.addClass(e+" notice is-dismissible");var n=t.split("\n").map((function(t){return"<p>".concat(t,"</p>")}));c.html(n.join("")),a(document).trigger("wp-updates-notice-added"),a("html, body").animate({scrollTop:c.offset().top-hCaptchaSettingsBase.getStickyHeight()},1e3)}}function N(){E(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"","notice-success")}function B(){E(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"","notice-error")}function K(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},a=Object.assign({},hCaptcha.getParams(),t),n=m.prop("checked"),c="live"===f.val();for(var o in n&&c?s.attr("data-theme","custom"):s.attr("data-theme",p.val()),n&&"object"===e(t.theme)||!n&&"object"!==e(t.theme)?a.theme=t.theme:a.theme=hCaptcha.getParams().theme,hCaptcha.setParams(a),s.html(""),t)"object"!==e(t[o])&&s.attr("data-".concat(o),"".concat(t[o]));hCaptcha.bindEvents()}function L(t,a){var n=function(t){return t&&"object"===e(t)};return n(t)&&n(a)?(Object.keys(a).forEach((function(e){var c=t[e],o=a[e];Array.isArray(c)&&Array.isArray(o)?t[e]=c.concat(o):n(c)&&n(o)?t[e]=L(Object.assign({},c),o):t[e]=o})),t):a}function P(t){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";for(var n in t){var c=a?"".concat(a,"--").concat(n):n;if("object"===e(t[n])&&null!==t[n])P(t[n],c);else{var o=t[n],r=c.replace(/theme--/g,""),i="".concat(r,"=").concat(o),s=v.find('option[value*="'.concat(r,'="]'));1===s.length&&(s.attr("value",i),s.is(":selected")&&g.val(o))}}}function U(){var t,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},a=b.val().trim();a=a||null;try{t=JSON.parse(a)}catch(t){return b.css("background-color","#ffabaf"),j.attr("disabled",!0),void B("Bad JSON!")}t=L(t,e),b.val(JSON.stringify(t,null,2)),P(t),m.prop("checked")||(t={sitekey:r.val(),theme:p.val(),size:d.val(),hl:u.val()}),K(t)}function J(){r.val()===k&&i.val()===H?(S=!1,x(),j.attr("disabled",!1)):S||(S=!0,B(HCaptchaGeneralObject.checkConfigNotice),j.attr("disabled",!0))}function D(t){return t=t.replace(/(http|https):\/\//,""),"https://"+new URL("https://"+t).host}!function(){w=[];var t=console.log,e=console.warn,a=console.info,n=console.error,c=console.clear;console.log=function(e){w.push(["Console log:",arguments]),t.apply(console,arguments)},console.warn=function(t){w.push(["Console warn:",arguments]),e.apply(console,arguments)},console.info=function(t){w.push(["Console info:",arguments]),a.apply(console,arguments)},console.error=function(t){w.push(["Console error:",arguments]),n.apply(console,arguments)},console.clear=function(){w=[],c()}}(),document.addEventListener("hCaptchaLoaded",(function(){B()})),h.on("click",(function(t){t.preventDefault(),""!==a('.hcaptcha-general-sample-hcaptcha textarea[name="h-captcha-response"]').val()?function(){x(),j.attr("disabled",!0);var t={action:HCaptchaGeneralObject.checkConfigAction,nonce:HCaptchaGeneralObject.checkConfigNonce,mode:f.val(),siteKey:r.val(),secretKey:i.val(),"h-captcha-response":a('textarea[name="h-captcha-response"]').val(),"hcaptcha-widget-id":a('input[name="hcaptcha-widget-id"]').val()};a.post({url:HCaptchaGeneralObject.ajaxUrl,data:t,beforeSend:function(){return N(HCaptchaGeneralObject.checkingConfigMsg)}}).done((function(t){t.success?(k=r.val(),H=i.val(),G=T(y),_=!1,N(t.data),j.attr("disabled",!1)):B(t.data)})).fail((function(t){B(t.statusText)})).always((function(){K()}))}():kaggDialog.confirm({title:HCaptchaGeneralObject.completeHCaptchaTitle,content:HCaptchaGeneralObject.completeHCaptchaContent,type:"info",buttons:{ok:{text:HCaptchaGeneralObject.OKBtnText}},onAction:function(){return window.hCaptchaReset(document.querySelector(".hcaptcha-general-sample-hcaptcha"))}})})),r.on("change",(function(t){K({sitekey:a(t.target).val()}),J()})),i.on("change",(function(){J()})),p.on("change",(function(t){K({theme:a(t.target).val()})})),d.on("change",(function(t){var e=a("#hcaptcha-invisible-notice"),n=a(t.target).val();"invisible"===n?e.show():e.hide(),K({size:n})})),u.on("change",(function(t){K({hl:a(t.target).val()})})),f.on("change",(function(t){var e=a(t.target).val();O.hasOwnProperty(e)&&(e===HCaptchaGeneralObject.modeLive?(r.attr("disabled",!1),i.attr("disabled",!1)):(r.attr("disabled",!0),i.attr("disabled",!0)),K({sitekey:O[e]}))})),m.on("change",(function(){U()})),b.on("blur",(function(){U()})),b.on("focus",(function(){b.css("background-color","unset"),j.attr("disabled",!1)})),y.on("change",(function(){!function(){var e={onload:"hCaptchaOnLoad",render:"explicit"};C.prop("checked")&&(e.recaptchacompat="off"),m.prop("checked")&&(e.custom="true");var a={asset_host:"assethost",endpoint:"endpoint",host:"host",image_host:"imghost",report_api:"reportapi",sentry:"sentry"},n=A();for(var c in a){var o=n[c].trim();o&&(e[a[c]]=encodeURIComponent(D(o)))}var r=n.api_host.trim();r=D(r=r||"js.hcaptcha.com")+"/1/api.js";var i=new URL(r);for(var h in e)i.searchParams.append(h,e[h]);document.getElementById("hcaptcha-api").remove(),delete t.g.hcaptcha,s.html("");var l=document.getElementsByTagName("head")[0],p=document.createElement("script");p.type="text/javascript",p.id="hcaptcha-api",p.src=i.href,l.appendChild(p)}(),JSON.stringify(A())===JSON.stringify(G)?(_=!1,x(),j.attr("disabled",!1)):_||(_=!0,B(HCaptchaGeneralObject.checkConfigNotice),j.attr("disabled",!0))})),a(".hcaptcha-general h3").on("click",(function(t){var e=a(t.currentTarget);e.toggleClass("closed");var n={action:HCaptchaGeneralObject.toggleSectionAction,nonce:HCaptchaGeneralObject.toggleSectionNonce,section:e.attr("class").replaceAll(/(hcaptcha-section-|closed)/g,"").trim(),status:!e.hasClass("closed")};a.post({url:HCaptchaGeneralObject.ajaxUrl,data:n}).done((function(t){t.success||B(t.data)})).fail((function(t){B(t.statusText)}))})),h.removeAttr("name"),l.removeAttr("name"),v.removeAttr("name"),g.removeAttr("name"),v.find("option").each((function(){var t=a(this);t.val().split("=")[1]||t.attr("disabled",!0)})),g.val(""),v.on("change",(function(){var t=a(this).find("option:selected").val().split("="),e=t[0],n=t[1];"palette--mode"===e?(g.attr("type","text"),g.val(n)):(g.val(n),g.attr("type","color"))})),g.on("change",(function(t){var e=a(t.target).val(),n=v.find("option:selected"),c=n.val().split("="),o=c[0],r=e;n.val(o+"="+e),U(r=(o="theme--"+c[0]).split("--").reverse().reduce((function(t,e){var a={};return a[e]=t,a}),r))}))};window.hCaptchaGeneral=a,jQuery(document).ready(a)})(); -
hcaptcha-for-forms-and-more/trunk/assets/js/integrations.js
r3215681 r3233179 1 /* global jQuery, HCaptchaIntegrationsObject, kaggDialog */1 /* global jQuery, hCaptchaSettingsBase, HCaptchaIntegrationsObject, kaggDialog */ 2 2 3 3 /** … … 26 26 */ 27 27 const integrations = function( $ ) { 28 /**29 * @type {HTMLElement}30 */31 const adminBar = document.querySelector( '#wpadminbar' );32 33 /**34 * @type {HTMLElement}35 */36 const tabs = document.querySelector( '.hcaptcha-settings-tabs' );37 38 /**39 * @type {HTMLElement}40 */41 const headerBar = document.querySelector( '.hcaptcha-header-bar' );42 28 const msgSelector = '#hcaptcha-message'; 43 29 let $message = $( msgSelector ); … … 46 32 const $search = $( '#hcaptcha-integrations-search' ); 47 33 48 function getStickyHeight() {49 const isAbsolute = adminBar ? window.getComputedStyle( adminBar ).position === 'absolute' : true;50 const adminBarHeight = ( adminBar && ! isAbsolute ) ? adminBar.offsetHeight : 0;51 const tabsHeight = tabs ? tabs.offsetHeight : 0;52 const headerBarHeight = headerBar ? headerBar.offsetHeight : 0;53 54 return adminBarHeight + tabsHeight + headerBarHeight;55 }56 57 34 function clearMessage() { 58 35 $message.remove(); 59 // Concat below to avoidinspection message.36 // Concat to avoid an inspection message. 60 37 $( '<div id="hcaptcha-message">' + '</div>' ).insertAfter( '.hcaptcha-header-bar' ); 61 38 $message = $( msgSelector ); … … 278 255 $( 'html, body' ).animate( 279 256 { 280 scrollTop: $tr.offset().top - getStickyHeight(),257 scrollTop: $tr.offset().top - hCaptchaSettingsBase.getStickyHeight(), 281 258 }, 282 259 1000 -
hcaptcha-for-forms-and-more/trunk/assets/js/integrations.min.js
r3215681 r3233179 1 (()=>{function t(t,a){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var a=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=a){var n,i,o,r,c=[],s=!0,l=!1;try{if(o=(a=a.call(t)).next,0===e){if(Object(a)!==a)return;s=!1}else for(;!(s=(n=o.call(a)).done)&&(c.push(n.value),c.length!==e);s=!0);}catch(t){l=!0,i=t}finally{try{if(!s&&null!=a.return&&(r=a.return(),Object(r)!==r))return}finally{if(l)throw i}}return c}}(t,a)||function(t,a){if(t){if("string"==typeof t)return e(t,a);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?e(t,a):void 0}}(t,a)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function e(t,e){(null==e||e>t.length)&&(e=t.length);for(var a=0,n=Array(e);a<e;a++)n[a]=t[a];return n}var a=function(e){var a= document.querySelector("#wpadminbar"),n=document.querySelector(".hcaptcha-settings-tabs"),i=document.querySelector(".hcaptcha-header-bar"),o="#hcaptcha-message",r=e(o),c=e("#wpwrap"),s=e("#adminmenuwrap"),l=e("#hcaptcha-integrations-search");function d(t,a){r.removeClass(),r.addClass(a+" notice settings-error is-dismissible"),r.html("<p>".concat(t,"</p>")),e(document).trigger("wp-updates-notice-added");var n=r.clone();r.css("visibility","hidden"),n.css("margin","0px"),n.css("top",c.position().top),n.css("z-index","999999");var i="block"===s.css("display")?s.width():0;n.css("left",i),n.width(e(window).width()-i),n.css("position","fixed"),e("body").append(n),setTimeout((function(){r.css("visibility","unset"),n.remove()}),3e3)}function h(t){d(t,"notice-error")}function u(t){return t.is(jQuery(".form-table").eq(0))}function f(t,a,n){var i=!1,o=a.toLowerCase(),r=!u(t),c=n.find("fieldset");c.attr("disabled",r),c.find("input").attr("disabled",r),t.find("tbody").children().each((function(t,a){var r=e(a).find(".hcaptcha-integrations-logo img").attr("alt");if((r=(r=r||"").replace(" Logo","")).toLowerCase()>o)return n.insertBefore(e(a)),i=!0,!1})),i||t.find("tbody").append(n)}e(".form-table img").on("click",(function(c){function s(){l(!0)}function l(){var o=arguments.length>0&&void 0!==arguments[0]&&arguments[0],r=v?"on":"off";r=o?"install":r;var c,s,l=(s=document.querySelector(".kagg-dialog select"))&&null!==(c=s.value)&&void 0!==c?c:"",g={action:HCaptchaIntegrationsObject.action,nonce:HCaptchaIntegrationsObject.nonce,install:o,activate:v,entity:p,status:j,newTheme:l};y.addClass(r),e.post({url:HCaptchaIntegrationsObject.ajaxUrl,data:g}).done((function(o){if(void 0!==o.success)if(void 0!==o.data.themes&&(HCaptchaIntegrationsObject.themes=o.data.themes,HCaptchaIntegrationsObject.defaultTheme=o.data.defaultTheme),o.success){var r,c=e(".form-table").eq(v?0:1);!function(t,a,n){if("theme"===a){var i=e(".form-table"),o=t?"":'[data-label="'+n+'"]',r=i.eq(t?0:1).find('.hcaptcha-integrations-logo img[data-entity="theme"]'+o);if(r.length){var c=i.eq(t?1:0),s=r.closest("tr");f(c,r.attr("data-label"),s)}}}(v,p,l),f(c,m,y),function(t){d(t,"notice-success")}(o.data.message),function(a){for(var n=e(".form-table"),i=0,o=Object.entries(a);i<o.length;i++){var r=t(o[i],2),c=r[0],s=r[1],l="hcaptcha-integrations-"+c.replace(/_/g,"-"),d=e("tr.".concat(l)),h=d.find(".hcaptcha-integrations-logo"),g=u(d.closest(".form-table"));s&&h.attr("data-installed",!0),g!==s&&f(n.eq(s?0:1),h.find("img").attr("alt"),d)}}(o.data.stati),e("html, body").animate({scrollTop:y.offset().top-(r=!a||"absolute"===window.getComputedStyle(a).position,(a&&!r?a.offsetHeight:0)+(n?n.offsetHeight:0)+(i?i.offsetHeight:0))},1e3)}else{var s,g;h(null!==(s=null===(g=o.data)||void 0===g?void 0:g.message)&&void 0!==s?s:o.data)}else d(HCaptchaIntegrationsObject.unexpectedErrorMsg,"notice-error")})).fail((function(t){h(t.statusText)})).always((function(){y.removeClass("install on off")}))}c.preventDefault(),r.remove(),e('<div id="hcaptcha-message"></div>').insertAfter(".hcaptcha-header-bar"),r=e(o);var g=e(c.target),p=g.data("entity");if(p=p||"",-1!==e.inArray(p,["core","theme","plugin"])&&-1===e.inArray(p,["core"])){var m=g.attr("alt");m=(m=m||"").replace(" Logo","");var b,v,y=g.closest("tr"),C=y.attr("class").match(/hcaptcha-integrations-([a-z0-9-]+)/),j=C?C[1]:"",O="";if(y.find("fieldset").attr("disabled"))b="plugin"===p?HCaptchaIntegrationsObject.activatePluginMsg:HCaptchaIntegrationsObject.activateThemeMsg,v=!0;else{if("plugin"===p)b=HCaptchaIntegrationsObject.deactivatePluginMsg;else{for(var w in b=HCaptchaIntegrationsObject.deactivateThemeMsg,O="<p>"+HCaptchaIntegrationsObject.selectThemeMsg+"</p>",O+="<select>",HCaptchaIntegrationsObject.themes){var H=w===HCaptchaIntegrationsObject.defaultTheme?' selected="selected"':"";O+='<option value="'.concat(w,'"').concat(H,">").concat(HCaptchaIntegrationsObject.themes[w],"</option>")}O+="</select>"}v=!1}if(-1===e.inArray(p,["theme"])||v||0!==Object.keys(HCaptchaIntegrationsObject.themes).length){if("false"===y.find(".hcaptcha-integrations-logo").attr("data-installed"))return c.ctrlKey?void s():(b=(b="plugin"===p?HCaptchaIntegrationsObject.installPluginMsg:HCaptchaIntegrationsObject.installThemeMsg).replace("%s",m),void kaggDialog.confirm({title:b,content:O,type:"install",buttons:{ok:{text:HCaptchaIntegrationsObject.OKBtnText},cancel:{text:HCaptchaIntegrationsObject.CancelBtnText}},onAction:function(t){t&&s()}}));c.ctrlKey?l():(b=b.replace("%s",m),kaggDialog.confirm({title:b,content:O,type:v?"activate":"deactivate",buttons:{ok:{text:HCaptchaIntegrationsObject.OKBtnText},cancel:{text:HCaptchaIntegrationsObject.CancelBtnText}},onAction:function(t){t&&l()}}))}else kaggDialog.confirm({title:HCaptchaIntegrationsObject.onlyOneThemeMsg,content:"",type:"info",buttons:{ok:{text:HCaptchaIntegrationsObject.OKBtnText}}})}}));var g,p,m;l.on("input",(g=function(){var t=l.val().trim().toLowerCase(),a=e(".hcaptcha-integrations-logo img"),n=null;if(a.each((function(a,i){var o=e(i);if("core"!==o.data("entity")){var r,c=o.closest("tr");o.data("label").toLowerCase().includes(t)?(c.show(),n=null!==(r=n)&&void 0!==r?r:c):c.hide()}})),n){var i=n.offset().top+n.outerHeight()-e(window).height()+5;e("html").stop().animate({scrollTop:i},1e3)}},p=100,function(){var t=this,e=arguments;clearTimeout(m),m=setTimeout((function(){return g.apply(t,e)}),p)})),e("#hcaptcha-options").keydown((function(t){e(t.target).is(l)&&13===t.which&&t.preventDefault()}))};window.hCaptchaIntegrations=a,jQuery(document).ready(a)})();1 (()=>{function t(t,a){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var a=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=a){var n,i,o,r,c=[],s=!0,l=!1;try{if(o=(a=a.call(t)).next,0===e){if(Object(a)!==a)return;s=!1}else for(;!(s=(n=o.call(a)).done)&&(c.push(n.value),c.length!==e);s=!0);}catch(t){l=!0,i=t}finally{try{if(!s&&null!=a.return&&(r=a.return(),Object(r)!==r))return}finally{if(l)throw i}}return c}}(t,a)||function(t,a){if(t){if("string"==typeof t)return e(t,a);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?e(t,a):void 0}}(t,a)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function e(t,e){(null==e||e>t.length)&&(e=t.length);for(var a=0,n=Array(e);a<e;a++)n[a]=t[a];return n}var a=function(e){var a="#hcaptcha-message",n=e(a),i=e("#wpwrap"),o=e("#adminmenuwrap"),r=e("#hcaptcha-integrations-search");function c(t,a){n.removeClass(),n.addClass(a+" notice settings-error is-dismissible"),n.html("<p>".concat(t,"</p>")),e(document).trigger("wp-updates-notice-added");var r=n.clone();n.css("visibility","hidden"),r.css("margin","0px"),r.css("top",i.position().top),r.css("z-index","999999");var c="block"===o.css("display")?o.width():0;r.css("left",c),r.width(e(window).width()-c),r.css("position","fixed"),e("body").append(r),setTimeout((function(){n.css("visibility","unset"),r.remove()}),3e3)}function s(t){c(t,"notice-error")}function l(t){return t.is(jQuery(".form-table").eq(0))}function h(t,a,n){var i=!1,o=a.toLowerCase(),r=!l(t),c=n.find("fieldset");c.attr("disabled",r),c.find("input").attr("disabled",r),t.find("tbody").children().each((function(t,a){var r=e(a).find(".hcaptcha-integrations-logo img").attr("alt");if((r=(r=r||"").replace(" Logo","")).toLowerCase()>o)return n.insertBefore(e(a)),i=!0,!1})),i||t.find("tbody").append(n)}e(".form-table img").on("click",(function(i){function o(){r(!0)}function r(){var a=arguments.length>0&&void 0!==arguments[0]&&arguments[0],n=p?"on":"off";n=a?"install":n;var i,o,r=(o=document.querySelector(".kagg-dialog select"))&&null!==(i=o.value)&&void 0!==i?i:"",d={action:HCaptchaIntegrationsObject.action,nonce:HCaptchaIntegrationsObject.nonce,install:a,activate:p,entity:u,status:b,newTheme:r};m.addClass(n),e.post({url:HCaptchaIntegrationsObject.ajaxUrl,data:d}).done((function(a){if(void 0!==a.success)if(void 0!==a.data.themes&&(HCaptchaIntegrationsObject.themes=a.data.themes,HCaptchaIntegrationsObject.defaultTheme=a.data.defaultTheme),a.success){var n=e(".form-table").eq(p?0:1);!function(t,a,n){if("theme"===a){var i=e(".form-table"),o=t?"":'[data-label="'+n+'"]',r=i.eq(t?0:1).find('.hcaptcha-integrations-logo img[data-entity="theme"]'+o);if(r.length){var c=i.eq(t?1:0),s=r.closest("tr");h(c,r.attr("data-label"),s)}}}(p,u,r),h(n,f,m),function(t){c(t,"notice-success")}(a.data.message),function(a){for(var n=e(".form-table"),i=0,o=Object.entries(a);i<o.length;i++){var r=t(o[i],2),c=r[0],s=r[1],d="hcaptcha-integrations-"+c.replace(/_/g,"-"),u=e("tr.".concat(d)),f=u.find(".hcaptcha-integrations-logo"),g=l(u.closest(".form-table"));s&&f.attr("data-installed",!0),g!==s&&h(n.eq(s?0:1),f.find("img").attr("alt"),u)}}(a.data.stati),e("html, body").animate({scrollTop:m.offset().top-hCaptchaSettingsBase.getStickyHeight()},1e3)}else{var i,o;s(null!==(i=null===(o=a.data)||void 0===o?void 0:o.message)&&void 0!==i?i:a.data)}else c(HCaptchaIntegrationsObject.unexpectedErrorMsg,"notice-error")})).fail((function(t){s(t.statusText)})).always((function(){m.removeClass("install on off")}))}i.preventDefault(),n.remove(),e('<div id="hcaptcha-message"></div>').insertAfter(".hcaptcha-header-bar"),n=e(a);var d=e(i.target),u=d.data("entity");if(u=u||"",-1!==e.inArray(u,["core","theme","plugin"])&&-1===e.inArray(u,["core"])){var f=d.attr("alt");f=(f=f||"").replace(" Logo","");var g,p,m=d.closest("tr"),v=m.attr("class").match(/hcaptcha-integrations-([a-z0-9-]+)/),b=v?v[1]:"",y="";if(m.find("fieldset").attr("disabled"))g="plugin"===u?HCaptchaIntegrationsObject.activatePluginMsg:HCaptchaIntegrationsObject.activateThemeMsg,p=!0;else{if("plugin"===u)g=HCaptchaIntegrationsObject.deactivatePluginMsg;else{for(var C in g=HCaptchaIntegrationsObject.deactivateThemeMsg,y="<p>"+HCaptchaIntegrationsObject.selectThemeMsg+"</p>",y+="<select>",HCaptchaIntegrationsObject.themes){var j=C===HCaptchaIntegrationsObject.defaultTheme?' selected="selected"':"";y+='<option value="'.concat(C,'"').concat(j,">").concat(HCaptchaIntegrationsObject.themes[C],"</option>")}y+="</select>"}p=!1}if(-1===e.inArray(u,["theme"])||p||0!==Object.keys(HCaptchaIntegrationsObject.themes).length){if("false"===m.find(".hcaptcha-integrations-logo").attr("data-installed"))return i.ctrlKey?void o():(g=(g="plugin"===u?HCaptchaIntegrationsObject.installPluginMsg:HCaptchaIntegrationsObject.installThemeMsg).replace("%s",f),void kaggDialog.confirm({title:g,content:y,type:"install",buttons:{ok:{text:HCaptchaIntegrationsObject.OKBtnText},cancel:{text:HCaptchaIntegrationsObject.CancelBtnText}},onAction:function(t){t&&o()}}));i.ctrlKey?r():(g=g.replace("%s",f),kaggDialog.confirm({title:g,content:y,type:p?"activate":"deactivate",buttons:{ok:{text:HCaptchaIntegrationsObject.OKBtnText},cancel:{text:HCaptchaIntegrationsObject.CancelBtnText}},onAction:function(t){t&&r()}}))}else kaggDialog.confirm({title:HCaptchaIntegrationsObject.onlyOneThemeMsg,content:"",type:"info",buttons:{ok:{text:HCaptchaIntegrationsObject.OKBtnText}}})}}));var d,u,f;r.on("input",(d=function(){var t=r.val().trim().toLowerCase(),a=e(".hcaptcha-integrations-logo img"),n=null;if(a.each((function(a,i){var o=e(i);if("core"!==o.data("entity")){var r=o.closest("tr");o.data("label").toLowerCase().includes(t)?(r.show(),n=null!=n?n:r):r.hide()}})),n){var i=n.offset().top+n.outerHeight()-e(window).height()+5;e("html").stop().animate({scrollTop:i},1e3)}},u=100,function(){var t=this,e=arguments;clearTimeout(f),f=setTimeout((function(){return d.apply(t,e)}),u)})),e("#hcaptcha-options").keydown((function(t){e(t.target).is(r)&&13===t.which&&t.preventDefault()}))};window.hCaptchaIntegrations=a,jQuery(document).ready(a)})(); -
hcaptcha-for-forms-and-more/trunk/assets/js/settings-base.js
r3200161 r3233179 6 6 * @param {Object} $ jQuery instance. 7 7 */ 8 const settingsBase = function( $ ) { 8 const settingsBase = ( function( $ ) { 9 /** 10 * @type {HTMLElement} 11 */ 12 const adminBar = document.querySelector( '#wpadminbar' ); 13 14 /** 15 * @type {HTMLElement} 16 */ 17 const tabs = document.querySelector( '.hcaptcha-settings-tabs' ); 18 19 /** 20 * @type {HTMLElement} 21 */ 22 const headerBar = document.querySelector( '.hcaptcha-header-bar' ); 23 9 24 const h2Selector = '.hcaptcha-header h2'; 25 const headerBarSelector = '.hcaptcha-header-bar'; 10 26 const msgSelector = '#hcaptcha-message'; 27 let $message = $( msgSelector ); 11 28 12 29 function setHeaderBarTop() { 13 /**14 * @type {HTMLElement}15 */16 const adminBar = document.querySelector( '#wpadminbar' );17 18 /**19 * @type {HTMLElement}20 */21 const tabs = document.querySelector( '.hcaptcha-settings-tabs' );22 23 /**24 * @type {HTMLElement}25 */26 const headerBar = document.querySelector( '.hcaptcha-header-bar' );27 28 30 const isAbsolute = adminBar ? window.getComputedStyle( adminBar ).position === 'absolute' : true; 29 31 const adminBarHeight = ( adminBar && ! isAbsolute ) ? adminBar.offsetHeight : 0; … … 71 73 } 72 74 75 /** 76 * Public properties and functions. 77 */ 78 const app = { 79 getStickyHeight() { 80 const isAbsolute = adminBar ? window.getComputedStyle( adminBar ).position === 'absolute' : true; 81 const adminBarHeight = ( adminBar && ! isAbsolute ) ? adminBar.offsetHeight : 0; 82 const tabsHeight = tabs ? tabs.offsetHeight : 0; 83 const headerBarHeight = headerBar ? headerBar.offsetHeight : 0; 84 85 return adminBarHeight + tabsHeight + headerBarHeight; 86 }, 87 88 clearMessage() { 89 $message.remove(); 90 // Concat below to avoid an inspection message. 91 $( '<div id="hcaptcha-message">' + '</div>' ).insertAfter( headerBarSelector ); 92 $message = $( msgSelector ); 93 }, 94 95 showMessage( message = '', msgClass = '' ) { 96 message = message === undefined ? '' : String( message ); 97 98 if ( ! message ) { 99 return; 100 } 101 102 app.clearMessage(); 103 $message.addClass( msgClass + ' notice is-dismissible' ); 104 105 const messageLines = message.split( '\n' ).map( function( line ) { 106 return `<p>${ line }</p>`; 107 } ); 108 109 $message.html( messageLines.join( '' ) ); 110 111 $( document ).trigger( 'wp-updates-notice-added' ); 112 113 $( 'html, body' ).animate( 114 { 115 scrollTop: $message.offset().top - app.getStickyHeight(), 116 }, 117 1000, 118 ); 119 }, 120 121 showSuccessMessage( message = '' ) { 122 app.showMessage( message, 'notice-success' ); 123 }, 124 125 showErrorMessage( message = '' ) { 126 app.showMessage( message, 'notice-error' ); 127 }, 128 }; 129 73 130 // Move WP notices to the message area. 74 131 $( h2Selector ).siblings().appendTo( msgSelector ); … … 81 138 82 139 highLight(); 83 }; 140 141 return app; 142 }( jQuery ) ); 84 143 85 144 window.hCaptchaSettingsBase = settingsBase; -
hcaptcha-for-forms-and-more/trunk/assets/js/settings-base.min.js
r3143189 r3233179 1 (()=>{var e=function(e){ function t(){var e=document.querySelector("#wpadminbar"),t=document.querySelector(".hcaptcha-settings-tabs"),a=document.querySelector(".hcaptcha-header-bar"),o=!e||"absolute"===window.getComputedStyle(e).position,n=e&&!o?e.offsetHeight:0,c=n+(t?t.offsetHeight:0)-1;t&&(t.style.top="".concat(n,"px")),a&&(a.style.top="".concat(c,"px"))}e(".hcaptcha-header h2").siblings().appendTo("#hcaptcha-message"),window.addEventListener("resize",(function(){t()})),t(),function(){var t=window.location.href,a=document.referrer;if(a&&a!==t){var o=window.location.hash;if(o){var n=e(o);n&&(n.is(":checkbox")?n.closest("fieldset").addClass("blink"):n.addClass("blink"))}}}()};window.hCaptchaSettingsBase=e,jQuery(document).ready(e)})();1 (()=>{var e=function(e){var t=document.querySelector("#wpadminbar"),o=document.querySelector(".hcaptcha-settings-tabs"),a=document.querySelector(".hcaptcha-header-bar"),s="#hcaptcha-message",i=e(s);function n(){var e=!t||"absolute"===window.getComputedStyle(t).position,s=t&&!e?t.offsetHeight:0,i=s+(o?o.offsetHeight:0)-1;o&&(o.style.top="".concat(s,"px")),a&&(a.style.top="".concat(i,"px"))}var c={getStickyHeight:function(){var e=!t||"absolute"===window.getComputedStyle(t).position;return(t&&!e?t.offsetHeight:0)+(o?o.offsetHeight:0)+(a?a.offsetHeight:0)},clearMessage:function(){i.remove(),e('<div id="hcaptcha-message"></div>').insertAfter(".hcaptcha-header-bar"),i=e(s)},showMessage:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(t=void 0===t?"":String(t)){c.clearMessage(),i.addClass(o+" notice is-dismissible");var a=t.split("\n").map((function(e){return"<p>".concat(e,"</p>")}));i.html(a.join("")),e(document).trigger("wp-updates-notice-added"),e("html, body").animate({scrollTop:i.offset().top-c.getStickyHeight()},1e3)}},showSuccessMessage:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";c.showMessage(e,"notice-success")},showErrorMessage:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";c.showMessage(e,"notice-error")}};return e(".hcaptcha-header h2").siblings().appendTo(s),window.addEventListener("resize",(function(){n()})),n(),function(){var t=window.location.href,o=document.referrer;if(o&&o!==t){var a=window.location.hash;if(a){var s=e(a);s&&(s.is(":checkbox")?s.closest("fieldset").addClass("blink"):s.addClass("blink"))}}}(),c}(jQuery);window.hCaptchaSettingsBase=e,jQuery(document).ready(e)})(); -
hcaptcha-for-forms-and-more/trunk/assets/js/settings-list-page-base.js
r3215681 r3233179 1 /* global HCaptcha FlatPickerObject, flatpickr */1 /* global HCaptchaListPageBaseObject, flatpickr */ 2 2 3 3 /** … … 18 18 selected: 'hcaptcha-is-selected', 19 19 }; 20 const delimiter = HCaptcha FlatPickerObject.delimiter;21 const locale = HCaptcha FlatPickerObject.locale;20 const delimiter = HCaptchaListPageBaseObject.delimiter; 21 const locale = HCaptchaListPageBaseObject.locale; 22 22 let flatPickerObj; 23 23 -
hcaptcha-for-forms-and-more/trunk/assets/js/settings-list-page-base.min.js
r3215681 r3233179 1 (()=>{function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e(t)}function t(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function r(e){for(var r=1;r<arguments.length;r++){var a=null!=arguments[r]?arguments[r]:{};r%2?t(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):t(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function n(t,r,n){return(r=function(t){var r=function(t,r){if("object"!=e(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var a=n.call(t,r||"default");if("object"!=e(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}(t,"string");return"symbol"==e(r)?r:r+""}(r))in t?Object.defineProperty(t,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[r]=n,t}document.addEventListener("DOMContentLoaded",(function(){var e=document.getElementById("hcaptcha-datepicker");if(e){var t,n,a="hcaptcha-is-selected",o=HCaptchaFlatPickerObject.delimiter,c=HCaptchaFlatPickerObject.locale,i=document.getElementById("hcaptcha-options"),l=document.querySelector(".hcaptcha-filter"),u=document.getElementById("hcaptcha-datepicker-popover-button"),p=l.querySelector('input[type="radio"][data-default]');document.addEventListener("click",f),i.querySelector("#hcaptcha-datepicker-popover-button").addEventListener("click",d),i.querySelectorAll('[type="radio"]').forEach((function(e){e.addEventListener("change",v)})),i.querySelector('[type="reset"]').addEventListener("click",b),i.addEventListener("submit",s),i.querySelector("#current-page-selector").addEventListener("keydown",y),n=l.querySelector('input[value="custom"]'),t=flatpickr(e,{mode:"range",inline:!0,allowInput:!1,enableTime:!1,clickOpens:!1,altInput:!0,altFormat:"M j, Y",dateFormat:"Y-m-d",locale:r(r({},flatpickr.l10ns[c]||{}),{},{rangeSeparator:o}),onChange:function(e,t,r){n.checked=!0,m(n.parentElement),t&&(u.textContent=r.altInput.value)}}),v({},n.checked)}function s(t){var r;t.preventDefault(),this.querySelectorAll('input[type="radio"]').forEach((function(e){e.name=""})),(r=u.nextElementSibling).setAttribute("aria-expanded","false"),r.style.display="none";var n=new URL(window.location.href),a=n.searchParams;a.delete("date"),e.value&&a.append("date",e.value),window.location.href=n.toString()}function d(e){e.preventDefault(),e.stopPropagation();var t=e.target.nextElementSibling;"none"===t.style.display||""===t.style.display?t.style.display="block":t.style.display="none",t.setAttribute("aria-expanded","block"===t.style.display?"true":"false")}function y(e){if("Enter"===e.key){e.preventDefault();var t=new URL(window.location.href),r=parseInt(t.searchParams.get("paged")),n=parseInt(e.target.value);(isNaN(r)||r<1)&&(r=1),isNaN(n)||n<1||(t.searchParams.delete("paged"),n!==r&&(t.searchParams.set("paged",n.toString()),window.location.href=t.href))}}function f(e){var t=document.querySelector(".hcaptcha-datepicker-popover");t.contains(e.target)||(t.style.display="none")}function m(e){l.querySelectorAll("label").forEach((function(e){e.classList.remove(a)})),e.classList.add(a)}function b(e){e.preventDefault(),p.checked=!0,v()}function v(){var r=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=l.querySelector("input:checked"),a=n.parentElement,c=r?e:n,i=c.value.split(o),p=c.nextElementSibling;u.textContent=r?p.value:a.textContent,m(a),Array.isArray(i)&&2===i.length?t.setDate(i):t.clear()}}))})();1 (()=>{function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e(t)}function t(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function n(e){for(var n=1;n<arguments.length;n++){var a=null!=arguments[n]?arguments[n]:{};n%2?t(Object(a),!0).forEach((function(t){r(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):t(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function r(t,n,r){return(n=function(t){var n=function(t,n){if("object"!=e(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var a=r.call(t,n||"default");if("object"!=e(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===n?String:Number)(t)}(t,"string");return"symbol"==e(n)?n:n+""}(n))in t?Object.defineProperty(t,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[n]=r,t}document.addEventListener("DOMContentLoaded",(function(){var e=document.getElementById("hcaptcha-datepicker");if(e){var t,r,a="hcaptcha-is-selected",o=HCaptchaListPageBaseObject.delimiter,c=HCaptchaListPageBaseObject.locale,i=document.getElementById("hcaptcha-options"),l=document.querySelector(".hcaptcha-filter"),u=document.getElementById("hcaptcha-datepicker-popover-button"),p=l.querySelector('input[type="radio"][data-default]');document.addEventListener("click",f),i.querySelector("#hcaptcha-datepicker-popover-button").addEventListener("click",d),i.querySelectorAll('[type="radio"]').forEach((function(e){e.addEventListener("change",v)})),i.querySelector('[type="reset"]').addEventListener("click",b),i.addEventListener("submit",s),i.querySelector("#current-page-selector").addEventListener("keydown",y),r=l.querySelector('input[value="custom"]'),t=flatpickr(e,{mode:"range",inline:!0,allowInput:!1,enableTime:!1,clickOpens:!1,altInput:!0,altFormat:"M j, Y",dateFormat:"Y-m-d",locale:n(n({},flatpickr.l10ns[c]||{}),{},{rangeSeparator:o}),onChange:function(e,t,n){r.checked=!0,m(r.parentElement),t&&(u.textContent=n.altInput.value)}}),v({},r.checked)}function s(t){var n;t.preventDefault(),this.querySelectorAll('input[type="radio"]').forEach((function(e){e.name=""})),(n=u.nextElementSibling).setAttribute("aria-expanded","false"),n.style.display="none";var r=new URL(window.location.href),a=r.searchParams;a.delete("date"),e.value&&a.append("date",e.value),window.location.href=r.toString()}function d(e){e.preventDefault(),e.stopPropagation();var t=e.target.nextElementSibling;"none"===t.style.display||""===t.style.display?t.style.display="block":t.style.display="none",t.setAttribute("aria-expanded","block"===t.style.display?"true":"false")}function y(e){if("Enter"===e.key){e.preventDefault();var t=new URL(window.location.href),n=parseInt(t.searchParams.get("paged")),r=parseInt(e.target.value);(isNaN(n)||n<1)&&(n=1),isNaN(r)||r<1||(t.searchParams.delete("paged"),r!==n&&(t.searchParams.set("paged",r.toString()),window.location.href=t.href))}}function f(e){var t=document.querySelector(".hcaptcha-datepicker-popover");t.contains(e.target)||(t.style.display="none")}function m(e){l.querySelectorAll("label").forEach((function(e){e.classList.remove(a)})),e.classList.add(a)}function b(e){e.preventDefault(),p.checked=!0,v()}function v(){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=l.querySelector("input:checked"),a=r.parentElement,c=n?e:r,i=c.value.split(o),p=c.nextElementSibling;u.textContent=n?p.value:a.textContent,m(a),Array.isArray(i)&&2===i.length?t.setDate(i):t.clear()}}))})(); -
hcaptcha-for-forms-and-more/trunk/changelog.txt
r3215681 r3233179 1 = 4.10.0 = 2 * Added support for wp_login_form() function and LoginOut block. 3 * Added support for hCaptcha in HTML Gravity Forms fields. 4 * Added support for custom nonce action and name in the [hcaptcha] shortcode. 5 * Added compatibility with Cookies and Content Security Policy plugin. 6 * Added auto-verification of arbitrary forms in ajax. 7 * Added deletion of events on the Forms page. 8 * Added deletion of events on the Events page. 9 * Improved error messaging for hCaptcha verification. 10 * Fixed IP detection in the WordPress core via filter. Now syncs with hCaptcha event information when IP collection is activated. 11 * Fixed fatal error with the WPForms plugin in rare cases. 12 * Fixed error message at the first entry to the login page when Hide Login Errors in on. 13 * Fixed scrolling to the message on the General page. 14 * Fixed fatal error during integration installation in some cases. 15 * Fixed the Integrations page when active plugin was deleted. 16 * Fixed error when hCaptcha is disabled for standard login but enabled for LearnPress login. 17 * Fixed error when hCaptcha is disabled for standard login but enabled for Tutor login. 18 * Fixed layout for Forms and Events pages on small screens. 19 1 20 = 4.9.0 = 2 21 * Added LearnPress integration. -
hcaptcha-for-forms-and-more/trunk/hcaptcha.php
r3215681 r3233179 11 11 * Plugin URI: https://www.hcaptcha.com/ 12 12 * Description: hCaptcha keeps out bots and spam while putting privacy first. It is a drop-in replacement for reCAPTCHA. 13 * Version: 4. 9.013 * Version: 4.10.0 14 14 * Requires at least: 5.3 15 15 * Requires PHP: 7.2 … … 22 22 * 23 23 * WC requires at least: 3.0 24 * WC tested up to: 9. 324 * WC tested up to: 9.6 25 25 */ 26 26 … … 40 40 * Plugin version. 41 41 */ 42 const HCAPTCHA_VERSION = '4. 9.0';42 const HCAPTCHA_VERSION = '4.10.0'; 43 43 44 44 /** -
hcaptcha-for-forms-and-more/trunk/readme.txt
r3215681 r3233179 5 5 Tested up to: 6.7 6 6 Requires PHP: 7.2 7 Stable tag: 4. 9.07 Stable tag: 4.10.0 8 8 License: GPLv2 or later 9 9 License URI: https://www.gnu.org/licenses/gpl-2.0.html … … 112 112 113 113 ` 114 [hcaptcha action="my_hcap_action" name="my_hcap_name" auto="true|false" force="true|false" theme="light|dark|auto" size="normal|compact|invisible"]114 [hcaptcha action="my_hcap_action" name="my_hcap_name" auto="true|false" ajax="true|false" force="true|false" theme="light|dark|auto" size="normal|compact|invisible"] 115 115 ` 116 116 … … 186 186 ` 187 187 [hcaptcha auto="true" force="true"] 188 ` 189 190 Arbitrary forms can also be verified in ajax via the `ajax` argument. There is no need to specify `auto="true"` in this case, as `ajax` implies `auto="true"`. 191 192 ` 193 [hcaptcha ajax="true"] 188 194 ` 189 195 … … 552 558 * Colorlib Customizer Login, Lost Password, and Customizer Register Forms 553 559 * Contact Form 7 560 * Cookies and Content Security Policy 554 561 * Divi Comment, Contact, Email Optin and Login Forms 555 562 * Divi Builder Comment, Contact, Email Optin and Login Forms … … 621 628 == Changelog == 622 629 630 = 4.10.0 = 631 * Added support for wp_login_form() function and LoginOut block. 632 * Added support for hCaptcha in HTML Gravity Forms fields. 633 * Added support for custom nonce action and name in the [hcaptcha] shortcode. 634 * Added compatibility with Cookies and Content Security Policy plugin. 635 * Added auto-verification of arbitrary forms in ajax. 636 * Added deletion of events on the Forms page. 637 * Added deletion of events on the Events page. 638 * Improved error messaging for hCaptcha verification. 639 * Fixed IP detection in the WordPress core via filter. Now syncs with hCaptcha event information when IP collection is activated. 640 * Fixed fatal error with the WPForms plugin in rare cases. 641 * Fixed error message at the first entry to the login page when Hide Login Errors in on. 642 * Fixed scrolling to the message on the General page. 643 * Fixed fatal error during integration installation in some cases. 644 * Fixed the Integrations page when active plugin was deleted. 645 * Fixed error when hCaptcha is disabled for standard login but enabled for LearnPress login. 646 * Fixed error when hCaptcha is disabled for standard login but enabled for Tutor login. 647 * Fixed layout for Forms and Events pages on small screens. 648 623 649 = 4.9.0 = 624 650 * Added LearnPress integration. -
hcaptcha-for-forms-and-more/trunk/src/php/Abstracts/LoginBase.php
r3215681 r3233179 159 159 160 160 if ( ! hcaptcha()->settings()->is_on( 'hide_login_errors' ) ) { 161 return $user; 162 } 163 164 $ignore_codes = [ 'empty_username', 'empty_password' ]; 165 166 if ( in_array( $user->get_error_code(), $ignore_codes, true ) ) { 161 167 return $user; 162 168 } -
hcaptcha-for-forms-and-more/trunk/src/php/Admin/Events/Events.php
r3215681 r3233179 234 234 "SELECT 235 235 SQL_CALC_FOUND_ROWS 236 source, form_id, COUNT(*) as served236 id, source, form_id, COUNT(*) as served 237 237 FROM $table_name 238 238 WHERE $where_date -
hcaptcha-for-forms-and-more/trunk/src/php/Admin/Events/EventsTable.php
r3215681 r3233179 9 9 10 10 use HCaptcha\Settings\ListPageBase; 11 use WP_List_Table;12 13 // If this file is called directly, abort.14 if ( ! defined( 'ABSPATH' ) ) {15 // @codeCoverageIgnoreStart16 exit;17 // @codeCoverageIgnoreEnd18 }19 20 if ( ! class_exists( 'WP_List_Table', false ) ) {21 // IMPORTANT NOTICE:22 // This line is needed to prevent fatal errors in the third-party plugins.23 // We know that Jetpack (probably others also) can load WP classes during cron jobs.24 require_once ABSPATH . 'wp-admin/includes/class-wp-list-table.php';25 }26 11 27 12 /** 28 13 * List events in the table. 29 14 */ 30 class EventsTable extends WP_List_Table { 31 32 /** 33 * Events per page option. 34 */ 35 private const EVENTS_PER_PAGE = 'hcaptcha_events_per_page'; 36 37 /** 38 * Plugin page hook. 39 * 40 * @var string 41 */ 42 private $plugin_page_hook; 43 44 /** 45 * Default number of events to show per page. 46 * 47 * @var int 48 */ 49 public $per_page_default = 20; 15 class EventsTable extends TableBase { 16 17 /** 18 * Singular table name. 19 */ 20 protected const SINGULAR = 'event'; 21 22 /** 23 * Plural table name. 24 */ 25 protected const PLURAL = 'events'; 26 27 /** 28 * Items per page option. 29 */ 30 protected const ITEMS_PER_PAGE = 'hcaptcha_events_per_page'; 50 31 51 32 /** … … 55 36 */ 56 37 private $datetime_format = []; 57 58 /**59 * Columns.60 *61 * @var array62 */63 private $columns;64 65 /**66 * Plugins installed.67 *68 * @var array[]69 */70 private $plugins;71 72 /**73 * Class constructor.74 *75 * @param string $plugin_page_hook Plugin page hook.76 */77 public function __construct( string $plugin_page_hook ) {78 parent::__construct(79 [80 'singular' => 'event',81 'plural' => 'events',82 'screen' => $plugin_page_hook,83 ]84 );85 86 $this->plugin_page_hook = $plugin_page_hook;87 88 $this->init();89 }90 38 91 39 /** … … 101 49 102 50 $this->columns = [ 51 'cb' => '<input type="checkbox" />', 103 52 'name' => __( 'Source', 'hcaptcha-for-forms-and-more' ), 104 53 'form_id' => __( 'Form Id', 'hcaptcha-for-forms-and-more' ), … … 109 58 ]; 110 59 111 $this->plugins = get_plugins(); 112 113 add_action( 'load-' . $this->plugin_page_hook, [ $this, 'add_screen_option' ] ); 114 add_filter( 'set_screen_option_' . self::EVENTS_PER_PAGE, [ $this, 'set_screen_option' ], 10, 3 ); 115 116 set_screen_options(); 117 } 118 119 /** 120 * Add screen options. 121 * 122 * @return void 123 */ 124 public function add_screen_option(): void { 125 $args = [ 126 'label' => __( 'Number of items per page:', 'hcaptcha-for-forms-and-more' ), 127 'default' => $this->per_page_default, 128 'option' => self::EVENTS_PER_PAGE, 129 ]; 130 131 add_screen_option( 'per_page', $args ); 132 } 133 134 /** 135 * Set screen option. 136 * 137 * @param mixed $screen_option The value to save instead of the option value. 138 * Default false (to skip saving the current option). 139 * @param string $option The option name. 140 * @param mixed $value The option value. 141 * 142 * @return mixed 143 * @noinspection PhpUnusedParameterInspection 144 */ 145 public function set_screen_option( $screen_option, string $option, $value ) { 146 return $value; 147 } 148 149 /** 150 * Retrieve the table columns. 151 * 152 * @return array Array of all the list table columns. 153 */ 154 public function get_columns(): array { 155 return $this->columns; 60 parent::init(); 156 61 } 157 62 … … 187 92 /** 188 93 * Fetch and set up the final data for the table. 94 * 95 * @return void 189 96 */ 190 97 public function prepare_items(): void { … … 204 111 $dates = explode( ListPageBase::TIMESPAN_DELIMITER, $date ); 205 112 $dates = array_filter( array_map( 'trim', $dates ) ); 206 $column_slugs = str_replace( 'name', 'source', array_keys( $this->columns ) );207 $per_page = $this->get_items_per_page( self:: EVENTS_PER_PAGE, $this->per_page_default );113 $column_slugs = str_replace( [ 'cb', 'name' ], [ 'id', 'source' ], array_keys( $this->columns ) ); 114 $per_page = $this->get_items_per_page( self::ITEMS_PER_PAGE, $this->per_page_default ); 208 115 $offset = ( $paged - 1 ) * $per_page; 209 116 $args = [ … … 230 137 231 138 /** 232 * Column Source.233 * Has 'name' slug not to be hidden.234 * WP has no filter for special columns.235 *236 * @see \WP_Screen::render_list_table_columns_preferences.237 *238 * @param object $item Item.239 *240 * @noinspection PhpUnused PhpUnused.241 */242 protected function column_name( object $item ): string {243 $source = (array) json_decode( $item->source, true );244 245 foreach ( $source as &$slug ) {246 if ( 'WordPress' === $slug ) {247 continue;248 }249 250 if ( false === strpos( $slug, '/' ) ) {251 continue;252 }253 254 $slug = isset( $this->plugins[ $slug ] ) ? $this->plugins[ $slug ]['Name'] : $slug;255 }256 257 unset( $slug );258 259 return $this->excerpt( implode( ', ', $source ), 15 );260 }261 262 /**263 139 * Column IP. 264 140 * … … 324 200 ); 325 201 } 326 327 /**328 * Column default.329 *330 * @param object $item Item.331 * @param string $column_name Column name.332 */333 protected function column_default( $item, $column_name ): string {334 return (string) $item->$column_name;335 }336 337 /**338 * Excerpt text.339 *340 * @param string $text Text.341 * @param int $length Excerpt length.342 *343 * @return string344 */345 private function excerpt( string $text, int $length = 35 ): string {346 $excerpt = mb_substr( $text, 0, $length );347 348 ob_start();349 350 ?>351 <span class="hcaptcha-excerpt"><?php echo esc_html( $excerpt ); ?>352 <span class="hcaptcha-hide"><?php echo esc_html( $text ); ?></span>353 </span>354 <?php355 356 return ob_get_clean();357 }358 202 } -
hcaptcha-for-forms-and-more/trunk/src/php/Admin/Events/FormsTable.php
r3185570 r3233179 9 9 10 10 use HCaptcha\Settings\ListPageBase; 11 use WP_List_Table;12 13 // If this file is called directly, abort.14 if ( ! defined( 'ABSPATH' ) ) {15 // @codeCoverageIgnoreStart16 exit;17 // @codeCoverageIgnoreEnd18 }19 20 if ( ! class_exists( 'WP_List_Table', false ) ) {21 // IMPORTANT NOTICE:22 // This line is needed to prevent fatal errors in the third-party plugins.23 // We know that Jetpack (probably others also) can load WP classes during cron jobs.24 require_once ABSPATH . 'wp-admin/includes/class-wp-list-table.php';25 }26 11 27 12 /** 28 13 * List forms in the table. 29 14 */ 30 class FormsTable extends WP_List_Table {15 class FormsTable extends TableBase { 31 16 32 17 /** 33 * Forms per page option.18 * Singular table name. 34 19 */ 35 pr ivate const FORMS_PER_PAGE = 'hcaptcha_forms_per_page';20 protected const SINGULAR = 'form'; 36 21 37 22 /** 38 * Plugin page hook. 39 * 40 * @var string 23 * Plural table name. 41 24 */ 42 pr ivate $plugin_page_hook;25 protected const PLURAL = 'forms'; 43 26 44 27 /** 45 * Default number of forms to show per page. 46 * 47 * @var int 28 * Items per page option. 48 29 */ 49 p ublic $per_page_default = 20;30 protected const ITEMS_PER_PAGE = 'hcaptcha_forms_per_page'; 50 31 51 32 /** … … 57 38 58 39 /** 59 * Columns.60 *61 * @var array62 */63 private $columns;64 65 /**66 * Plugins installed.67 *68 * @var array[]69 */70 private $plugins;71 72 /**73 * Class constructor.74 *75 * @param string $plugin_page_hook Plugin page hook.76 */77 public function __construct( string $plugin_page_hook ) {78 parent::__construct(79 [80 'singular' => 'form',81 'plural' => 'forms',82 'screen' => $plugin_page_hook,83 ]84 );85 86 $this->plugin_page_hook = $plugin_page_hook;87 88 $this->init();89 }90 91 /**92 40 * Init class. 93 41 * … … 96 44 public function init(): void { 97 45 $this->columns = [ 46 'cb' => '<input type="checkbox" />', 98 47 'name' => __( 'Source', 'hcaptcha-for-forms-and-more' ), 99 48 'form_id' => __( 'Form Id', 'hcaptcha-for-forms-and-more' ), … … 101 50 ]; 102 51 103 $this->plugins = get_plugins(); 104 105 add_action( 'load-' . $this->plugin_page_hook, [ $this, 'add_screen_option' ] ); 106 add_filter( 'set_screen_option_' . self::FORMS_PER_PAGE, [ $this, 'set_screen_option' ], 10, 3 ); 107 108 set_screen_options(); 109 } 110 111 /** 112 * Add screen options. 113 * 114 * @return void 115 */ 116 public function add_screen_option(): void { 117 $args = [ 118 'label' => __( 'Number of items per page:', 'hcaptcha-for-forms-and-more' ), 119 'default' => $this->per_page_default, 120 'option' => self::FORMS_PER_PAGE, 121 ]; 122 123 add_screen_option( 'per_page', $args ); 124 } 125 126 /** 127 * Set screen option. 128 * 129 * @param mixed $screen_option The value to save instead of the option value. 130 * Default false (to skip saving the current option). 131 * @param string $option The option name. 132 * @param mixed $value The option value. 133 * 134 * @return mixed 135 * @noinspection PhpUnusedParameterInspection 136 */ 137 public function set_screen_option( $screen_option, string $option, $value ) { 138 return $value; 139 } 140 141 /** 142 * Retrieve the table columns. 143 * 144 * @return array Array of all the list table columns. 145 */ 146 public function get_columns(): array { 147 return $this->columns; 52 parent::init(); 148 53 } 149 54 … … 197 102 $dates = explode( ListPageBase::TIMESPAN_DELIMITER, $date ); 198 103 $dates = array_filter( array_map( 'trim', $dates ) ); 199 $per_page = $this->get_items_per_page( self:: FORMS_PER_PAGE, $this->per_page_default );104 $per_page = $this->get_items_per_page( self::ITEMS_PER_PAGE, $this->per_page_default ); 200 105 $offset = ( $paged - 1 ) * $per_page; 201 106 $args = [ … … 220 125 ); 221 126 } 222 223 /**224 * Column Source.225 * Has 'name' slug not to be hidden.226 * WP has no filter for special columns.227 *228 * @see \WP_Screen::render_list_table_columns_preferences.229 *230 * @param object $item Item.231 *232 * @noinspection PhpUnused PhpUnused.233 */234 protected function column_name( object $item ): string {235 $source = (array) json_decode( $item->source, true );236 237 foreach ( $source as &$slug ) {238 if ( 'WordPress' === $slug ) {239 continue;240 }241 242 if ( false === strpos( $slug, '/' ) ) {243 continue;244 }245 246 $slug = isset( $this->plugins[ $slug ] ) ? $this->plugins[ $slug ]['Name'] : $slug;247 }248 249 unset( $slug );250 251 return $this->excerpt( implode( ', ', $source ), 15 );252 }253 254 /**255 * Column default.256 *257 * @param object $item Item.258 * @param string $column_name Column name.259 */260 protected function column_default( $item, $column_name ): string {261 return (string) $item->$column_name;262 }263 264 /**265 * Excerpt text.266 *267 * @param string $text Text.268 * @param int $length Excerpt length.269 *270 * @return string271 */272 private function excerpt( string $text, int $length = 35 ): string {273 $excerpt = mb_substr( $text, 0, $length );274 275 ob_start();276 277 ?>278 <span class="hcaptcha-excerpt"><?php echo esc_html( $excerpt ); ?>279 <span class="hcaptcha-hide"><?php echo esc_html( $text ); ?></span>280 </span>281 <?php282 283 return ob_get_clean();284 }285 127 } -
hcaptcha-for-forms-and-more/trunk/src/php/AutoVerify/AutoVerify.php
r3129246 r3233179 8 8 namespace HCaptcha\AutoVerify; 9 9 10 use HCaptcha\Helpers\HCaptcha; 10 11 use HCaptcha\Helpers\Request; 11 12 use WP_Widget_Block; … … 22 23 23 24 /** 25 * Script handle. 26 */ 27 public const HANDLE = 'hcaptcha-auto-verify'; 28 29 /** 30 * Script localization object. 31 */ 32 public const OBJECT = 'HCaptchaAutoVerifyObject'; 33 34 /** 35 * The hCaptcha forms registry. 36 * 37 * @var array 38 */ 39 protected $registry = []; 40 41 /** 24 42 * Init class. 25 43 * … … 36 54 */ 37 55 private function init_hooks(): void { 38 add_action( 'init', [ $this, 'verify _form' ], - PHP_INT_MAX );56 add_action( 'init', [ $this, 'verify' ], - PHP_INT_MAX ); 39 57 add_filter( 'the_content', [ $this, 'content_filter' ], PHP_INT_MAX ); 40 58 add_filter( 'widget_block_content', [ $this, 'widget_block_content_filter' ], PHP_INT_MAX, 3 ); 41 59 add_action( 'hcap_auto_verify_register', [ $this, 'content_filter' ] ); 60 add_action( 'hcap_register_form', [ $this, 'register_hcaptcha' ] ); 61 add_action( 'wp_print_footer_scripts', [ $this, 'enqueue_scripts' ], 9 ); 42 62 } 43 63 … … 68 88 69 89 /** 90 * Register hCaptcha form. 91 * 92 * @param array|mixed $args Arguments. 93 * 94 * @return void 95 */ 96 public function register_hcaptcha( $args ): void { 97 if ( ! is_array( $args ) ) { 98 return; 99 } 100 101 $widget_id = HCaptcha::widget_id_value( $args['id'] ?? [] ); 102 103 $this->registry[ $widget_id ] = $args; 104 } 105 106 /** 107 * Enqueue scripts. 108 * 109 * @return void 110 */ 111 public function enqueue_scripts(): void { 112 if ( ! array_filter( array_column( $this->registry ?? [], 'ajax' ) ) ) { 113 return; 114 } 115 116 $min = hcap_min_suffix(); 117 118 wp_enqueue_script( 119 self::HANDLE, 120 constant( 'HCAPTCHA_URL' ) . "/assets/js/hcaptcha-auto-verify$min.js", 121 [ 'jquery' ], 122 constant( 'HCAPTCHA_VERSION' ), 123 true 124 ); 125 126 wp_localize_script( 127 self::HANDLE, 128 self::OBJECT, 129 [ 130 'successMsg' => __( 'The form was submitted successfully.', 'hcaptcha-for-forms-and-more' ), 131 ] 132 ); 133 134 wp_enqueue_script( 'hcaptcha' ); 135 } 136 137 /** 70 138 * Verify a form automatically. 71 139 * … … 73 141 * @noinspection ForgottenDebugOutputInspection 74 142 */ 75 public function verify _form(): void {143 public function verify(): void { 76 144 if ( ! Request::is_post() || ! Request::is_frontend() ) { 77 145 return; … … 84 152 } 85 153 86 if ( ! $this->is_form_registered( $path ) ) { 154 $registered_form = $this->get_registered_form( $path ); 155 156 if ( null === $registered_form ) { 87 157 return; 88 158 } 89 159 90 $result = hcaptcha_verify_post(); 160 $args = $registered_form['args'] ?? []; 161 $action = $args['action'] ?? ''; 162 $name = $args['name'] ?? ''; 163 $ajax = $args['ajax'] ?? ''; 164 $result = hcaptcha_verify_post( $name, $action ); 165 166 if ( $ajax ) { 167 add_filter( 'wp_doing_ajax', '__return_true' ); 168 } 91 169 92 170 if ( null !== $result ) { 93 171 $_POST = []; 172 94 173 wp_die( 95 174 esc_html( $result ), … … 119 198 } 120 199 200 $widget_id_value = $this->get_widget_id_value( $form ); 201 $args = $this->registry[ $widget_id_value ] ?? []; 202 121 203 $forms_data[] = [ 122 204 'action' => $action, 123 205 'inputs' => $this->get_visible_input_names( $form ), 124 'a uto' => $this->is_form_auto( $form ),206 'args' => $args, 125 207 ]; 126 208 } … … 139 221 $form_action = ''; 140 222 141 if ( preg_match( '#<form [\S\s]*?action="(.*?)"[\S\s]*?>#', $form, $m ) ) {223 if ( preg_match( '#<form\s[\S\s]*?action="(.*?)"[\S\s]*?>#', $form, $m ) ) { 142 224 $form_action = $m[1]; 143 225 } … … 146 228 147 229 return $this->get_path( $form_action ); 230 } 231 232 /** 233 * Get widget id value. 234 * 235 * @param string $form Form. 236 * 237 * @return string 238 */ 239 private function get_widget_id_value( string $form ): string { 240 $widget_id_value = ''; 241 242 if ( preg_match( '#<input\s[\S\s]*?name="hcaptcha-widget-id"\s[\S\s]*?value="(.*?)"[\S\s]*?>#', $form, $m ) ) { 243 $widget_id_value = $m[1]; 244 } 245 246 return $widget_id_value; 148 247 } 149 248 … … 229 328 230 329 /** 231 * Get form auto.232 *233 * @param string $form Form.234 *235 * @return string|null236 */237 private function get_form_auto( string $form ): ?string {238 if ( preg_match( '#class="h-captcha"[\S\s]+?data-auto="(.*)"[\S\s]*?>#', $form, $matches ) ) {239 return $matches[1];240 }241 242 return null;243 }244 245 /**246 * Check if the form is auto.247 *248 * @param string $form Form.249 *250 * @return bool251 */252 private function is_form_auto( string $form ): bool {253 return 'true' === $this->get_form_auto( $form );254 }255 256 /**257 330 * Update form data in transient. 258 331 * … … 264 337 265 338 foreach ( $forms_data as $form_data ) { 339 $data = $form_data; 266 340 $action = $form_data['action']; 267 $inputs = $form_data['inputs']; 268 $auto = $form_data['auto']; 269 270 $key = isset( $registered_forms[ $action ] ) ? 271 array_search( $inputs, $registered_forms[ $action ], true ) : 272 false; 341 342 unset( $data['action'] ); 343 344 $inputs = $data['inputs']; 345 $args = $data['args']; 346 $auto = $args['auto']; 347 348 $key = false; 349 $action_forms = $registered_forms[ $action ] ?? []; 350 351 foreach ( $action_forms as $index => $action_form ) { 352 if ( $inputs === $action_form['inputs'] ) { 353 $key = $index; 354 break; 355 } 356 } 273 357 274 358 $registered = false !== $key; 275 359 276 if ( $auto && ! $registered ) { 277 $registered_forms[ $action ][] = $inputs; 278 } 279 280 if ( ! $auto && $registered ) { 360 if ( $auto ) { 361 if ( $registered ) { 362 $registered_forms[ $action ][ $key ] = $data; 363 } else { 364 $registered_forms[ $action ][] = $data; 365 } 366 367 continue; 368 } 369 370 if ( $registered ) { 281 371 unset( $registered_forms[ $action ][ $key ] ); 282 372 } … … 292 382 293 383 /** 294 * Is the form registered?384 * Get registered form. 295 385 * 296 386 * @param string $path URL path. 297 387 * 298 * @return bool299 */ 300 protected function is_form_registered( string $path ): bool{388 * @return array|null 389 */ 390 protected function get_registered_form( string $path ): ?array { 301 391 $registered_forms = get_transient( self::TRANSIENT ); 302 392 303 393 if ( empty( $registered_forms ) ) { 304 return false;394 return null; 305 395 } 306 396 307 397 if ( ! isset( $registered_forms[ $path ] ) ) { 308 return false; 309 } 398 return null; 399 } 400 401 // Nonce is verified later, in hcaptcha_verify_post(). 402 // phpcs:ignore WordPress.Security.NonceVerification.Missing 403 $post_keys = array_keys( $_POST ); 310 404 311 405 foreach ( $registered_forms[ $path ] as $registered_form ) { 312 // Nonce is verified later, in hcaptcha_verify_post(). 313 // phpcs:ignore WordPress.Security.NonceVerification.Missing 314 if ( ! empty( array_intersect( array_keys( $_POST ), $registered_form ) ) ) { 315 return true; 316 } 317 } 318 319 return false; 406 $inputs = $registered_form['inputs'] ?? []; 407 408 // Make sure that all inputs are present in the $_POST array. 409 if ( $inputs && ! array_diff( $inputs, $post_keys ) ) { 410 return $registered_form; 411 } 412 } 413 414 return null; 320 415 } 321 416 -
hcaptcha-for-forms-and-more/trunk/src/php/ClassifiedListing/Login.php
r3114572 r3233179 37 37 * 38 38 * @return WP_User|WP_Error 39 * @noinspection PhpUnusedParameterInspection40 39 */ 41 40 public function verify( $user, string $password ) { … … 45 44 } 46 45 47 if ( ! $this->is_login_limit_exceeded() ) { 48 return $user; 49 } 50 51 $error_message = hcaptcha_verify_post( 52 self::NONCE, 53 self::ACTION 54 ); 55 56 if ( null === $error_message ) { 57 return $user; 58 } 59 60 $code = array_search( $error_message, hcap_get_error_messages(), true ) ?: 'fail'; 61 62 return new WP_Error( $code, $error_message, 400 ); 46 return $this->login_base_verify( $user, $password ); 63 47 } 64 48 } -
hcaptcha-for-forms-and-more/trunk/src/php/GravityForms/Base.php
r3114572 r3233179 16 16 * Nonce action. 17 17 */ 18 public const ACTION = 'gravity_forms _form';18 public const ACTION = 'gravity_forms'; 19 19 20 20 /** 21 21 * Nonce name. 22 22 */ 23 public const NONCE = 'gravity_forms_ form_nonce';23 public const NONCE = 'gravity_forms_nonce'; 24 24 } -
hcaptcha-for-forms-and-more/trunk/src/php/GravityForms/Form.php
r3114572 r3233179 46 46 47 47 /** 48 * Current form id. 49 * 50 * @var int 51 */ 52 protected $form_id = 0; 53 54 /** 48 55 * Constructor. 49 56 */ … … 62 69 63 70 if ( $this->mode_auto ) { 64 add_filter( 'gform_submit_button', [ $this, 'add_captcha' ], 10, 2 ); 65 } 71 add_filter( 'gform_submit_button', [ $this, 'add_hcaptcha' ], 10, 2 ); 72 } 73 74 add_filter( 'gform_form_after_open', [ $this, 'gform_open' ], 10, 2 ); 75 add_filter( 'gform_get_form_filter', [ $this, 'gform_close' ], 10, 2 ); 66 76 67 77 add_filter( 'gform_validation', [ $this, 'verify' ], 10, 2 ); … … 80 90 * @noinspection PhpUnusedParameterInspection 81 91 */ 82 public function add_ captcha( $button_input, array $form ): string {92 public function add_hcaptcha( $button_input, array $form ): string { 83 93 if ( is_admin() ) { 84 94 return $button_input; … … 87 97 $form_id = $form['id'] ?? 0; 88 98 89 if ( $this-> mode_embed && $this->has_hcaptcha( $form_id ) ) {99 if ( $this->has_hcaptcha( $form_id ) ) { 90 100 return $button_input; 91 101 } 92 102 93 $args = [ 94 'action' => self::ACTION, 95 'name' => self::NONCE, 96 'id' => [ 97 'source' => HCaptcha::get_class_source( __CLASS__ ), 98 'form_id' => $form_id, 99 ], 100 ]; 101 102 return HCaptcha::form( $args ) . $button_input; 103 return HCaptcha::form() . $button_input; 104 } 105 106 /** 107 * Add hCaptcha args filter on opening the form. 108 * 109 * @param string|mixed $markup The current string to append. 110 * @param array $form The form being displayed. 111 * 112 * @return string 113 */ 114 public function gform_open( $markup, array $form ): string { 115 $this->form_id = (int) ( $form['id'] ?? 0 ); 116 117 add_filter( 'hcap_form_args', [ $this, 'hcap_form_args' ] ); 118 119 return (string) $markup; 120 } 121 122 /** 123 * Remove hCaptcha args filter on closing the form. 124 * 125 * @param string|mixed $form_string The current form string. 126 * @param array $form The form being displayed. 127 * 128 * @return string 129 * @noinspection PhpMissingParamTypeInspection 130 * @noinspection PhpUnusedParameterInspection 131 */ 132 public function gform_close( $form_string, $form ): string { 133 $this->form_id = 0; 134 135 remove_filter( 'hcap_form_args', [ $this, 'hcap_form_args' ] ); 136 137 return (string) $form_string; 138 } 139 140 /** 141 * Filter hCaptcha from args on form. 142 * 143 * @param array|mixed $args The form arguments. 144 * 145 * @return array 146 */ 147 public function hcap_form_args( $args ): array { 148 $args = (array) $args; 149 150 return array_merge( 151 $args, 152 [ 153 'action' => self::ACTION, 154 'name' => self::NONCE, 155 'id' => [ 156 'source' => HCaptcha::get_class_source( __CLASS__ ), 157 'form_id' => $this->form_id, 158 ], 159 ] 160 ); 103 161 } 104 162 … … 297 355 298 356 if ( 299 0 !== (int) $_POST[ $target_page_name ]&&357 0 !== $target_page && 300 358 $target_page !== $source_page && 301 359 isset( … … 316 374 } 317 375 318 if ( $this-> mode_embed && $this->has_hcaptcha( $form_id ) ) {319 // In embed mode, verify only a form having hCaptcha field.376 if ( $this->has_hcaptcha( $form_id ) ) { 377 // Verify only a form having hCaptcha field. 320 378 return true; 321 379 } … … 341 399 342 400 foreach ( $form['fields'] as $field ) { 343 if ( in_array( $field->type, $captcha_types, true ) ) { 401 $type = $field->type ?? ''; 402 $content = $field->content ?? ''; 403 404 if ( 405 ( $this->mode_embed && in_array( $type, $captcha_types, true ) ) || 406 has_shortcode( $content, 'hcaptcha' ) 407 ) { 344 408 return true; 345 409 } -
hcaptcha-for-forms-and-more/trunk/src/php/Helpers/HCaptcha.php
r3200161 r3233179 78 78 'name' => '', // Nonce name for wp_nonce_field. 79 79 'auto' => false, // Whether a form has to be auto-verified. 80 'ajax' => false, // Whether a form has to be auto-verified in ajax. 80 81 'force' => $hcaptcha_force, // Whether to execute hCaptcha widget before submit (like for invisible). 81 82 'theme' => $hcaptcha_theme, // The hCaptcha theme. … … 96 97 97 98 /** 98 * Filters the form arguments.99 * Filters the hCaptcha form arguments. 99 100 * 100 * @param array $args The form arguments.101 * @param array $args The hCaptcha form arguments. 101 102 */ 102 103 $args = (array) apply_filters( 'hcap_form_args', $args ); … … 104 105 $args['action'] = (string) $args['action']; 105 106 $args['name'] = (string) $args['name']; 106 $args['auto'] = filter_var( $args['auto'], FILTER_VALIDATE_BOOLEAN ); 107 $auto = filter_var( $args['auto'], FILTER_VALIDATE_BOOLEAN ); 108 $args['ajax'] = filter_var( $args['ajax'], FILTER_VALIDATE_BOOLEAN ); 109 $args['auto'] = $args['ajax'] ? true : $auto; // Auto-verify in ajax. 107 110 $args['force'] = filter_var( $args['force'], FILTER_VALIDATE_BOOLEAN ); 108 111 $args['theme'] = in_array( (string) $args['theme'], $allowed_themes, true ) ? (string) $args['theme'] : $hcaptcha_theme; … … 110 113 $args['size'] = in_array( (string) $args['size'], $allowed_sizes, true ) ? (string) $args['size'] : $hcaptcha_size; 111 114 $args['id'] = (array) $args['id']; 115 $id = $args['id']; 116 $source = empty( $id['source'] ) ? self::$default_id['source'] : $id['source']; 117 $form_id = $id['form_id'] ?? self::$default_id['form_id']; 118 $id = [ 119 'source' => $source, 120 'form_id' => $form_id, 121 ]; 122 $args['id'] = $id; 112 123 $args['protect'] = filter_var( $args['protect'], FILTER_VALIDATE_BOOLEAN ); 113 124 114 $id = wp_parse_args( 115 $args['id'], 116 self::$default_id 117 ); 125 /** 126 * Register hCaptcha form. 127 * 128 * @param array $args The hCaptcha form arguments. 129 */ 130 do_action( 'hcap_register_form', $args ); 118 131 119 132 self::display_widget( $id ); … … 142 155 data-size="<?php echo esc_attr( $args['size'] ); ?>" 143 156 data-auto="<?php echo $args['auto'] ? 'true' : 'false'; ?>" 157 data-ajax="<?php echo $args['ajax'] ? 'true' : 'false'; ?>" 144 158 data-force="<?php echo $args['force'] ? 'true' : 'false'; ?>"> 145 159 </h-captcha> … … 152 166 153 167 /** 154 * Display widget.168 * Get widget id value. 155 169 * 156 170 * @param array $id The hCaptcha widget id. 157 171 * 158 * @return void159 */ 160 p rivate static function display_widget( array $id ): void{172 * @return string 173 */ 174 public static function widget_id_value( array $id ): string { 161 175 $id['source'] = (array) ( $id['source'] ?? [] ); 162 176 $id['form_id'] = $id['form_id'] ?? 0; … … 164 178 // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_encode 165 179 $encoded_id = base64_encode( wp_json_encode( $id ) ); 166 $widget_id = $encoded_id . '-' . wp_hash( $encoded_id ); 167 180 181 return $encoded_id . '-' . wp_hash( $encoded_id ); 182 } 183 184 /** 185 * Display widget. 186 * 187 * @param array $id The hCaptcha widget id. 188 * 189 * @return void 190 */ 191 private static function display_widget( array $id ): void { 168 192 ?> 169 193 <input … … 171 195 class="<?php echo esc_attr( self::HCAPTCHA_WIDGET_ID ); ?>" 172 196 name="<?php echo esc_attr( self::HCAPTCHA_WIDGET_ID ); ?>" 173 value="<?php echo esc_attr( $widget_id); ?>">197 value="<?php echo esc_attr( self::widget_id_value( $id ) ); ?>"> 174 198 <?php 175 199 } -
hcaptcha-for-forms-and-more/trunk/src/php/LearnPress/Login.php
r3215681 r3233179 9 9 10 10 use HCaptcha\Abstracts\LoginBase; 11 use HCaptcha\Helpers\HCaptcha; 12 use WP_Error; 13 use WP_User; 11 14 12 15 /** … … 24 27 25 28 add_action( 'login_form', [ $this, 'add_captcha' ] ); 26 add_filter( 'wp_authenticate_user', [ $this, ' login_base_verify' ], PHP_INT_MAX, 2 );29 add_filter( 'wp_authenticate_user', [ $this, 'verify' ], 10, 2 ); 27 30 } 28 31 … … 39 42 parent::add_captcha(); 40 43 } 44 45 /** 46 * Verify a login form. 47 * 48 * @param WP_User|WP_Error $user WP_User or WP_Error object 49 * if a previous callback failed authentication. 50 * @param string $password Password to check against the user. 51 * 52 * @return WP_User|WP_Error 53 */ 54 public function verify( $user, string $password ) { 55 if ( ! $this->is_learn_press_form() ) { 56 return $user; 57 } 58 59 return $this->login_base_verify( $user, $password ); 60 } 61 62 /** 63 * Whether we process the Learn Press login form. 64 * 65 * @return bool 66 */ 67 private function is_learn_press_form(): bool { 68 return HCaptcha::did_filter( 'learnpress_login_credentials' ); 69 } 41 70 } -
hcaptcha-for-forms-and-more/trunk/src/php/LearnPress/Register.php
r3215681 r3233179 68 68 * 69 69 * @return void 70 * @noinspection PhpUndefinedFunctionInspection 70 71 */ 71 72 public function verify(): void { -
hcaptcha-for-forms-and-more/trunk/src/php/Main.php
r3215681 r3233179 18 18 use HCaptcha\AutoVerify\AutoVerify; 19 19 use HCaptcha\CF7\Admin; 20 use HCaptcha\CACSP\Compatibility; 20 21 use HCaptcha\CF7\CF7; 21 22 use HCaptcha\DelayedScript\DelayedScript; … … 832 833 [ 'wp_status', 'login' ], 833 834 '', 834 WP\Login::class,835 [ WP\Login::class, WP\LoginOut::class ], 835 836 ], 836 837 'Lost Password Form' => [ … … 974 975 [ CF7::class, Admin::class ], 975 976 ], 977 'Cookies and Content Security Policy' => [ 978 [ 'cacsp_status', null ], 979 'cookies-and-content-security-policy/cookies-and-content-security-policy.php', 980 [ Compatibility::class ], 981 ], 976 982 'Divi Comment Form' => [ 977 983 [ 'divi_status', 'comment' ], … … 1304 1310 Tutor\Checkout::class, 1305 1311 ], 1306 'Tutor L MS Login'=> [1312 'Tutor Login' => [ 1307 1313 [ 'tutor_status', 'login' ], 1308 1314 'tutor/tutor.php', 1309 1315 Tutor\Login::class, 1310 1316 ], 1311 'Tutor L MS LostPassword'=> [1317 'Tutor LostPassword' => [ 1312 1318 [ 'tutor_status', 'lost_pass' ], 1313 1319 'tutor/tutor.php', 1314 1320 Tutor\LostPassword::class, 1315 1321 ], 1316 'Tutor LMS Register'=> [1322 'Tutor Register' => [ 1317 1323 [ 'tutor_status', 'register' ], 1318 1324 'tutor/tutor.php', -
hcaptcha-for-forms-and-more/trunk/src/php/ProfileBuilder/Login.php
r3114572 r3233179 76 76 } 77 77 78 if ( ! $this->is_login_limit_exceeded() ) { 79 return $user; 80 } 81 82 $error_message = hcaptcha_verify_post( 83 self::NONCE, 84 self::ACTION 85 ); 86 87 if ( null === $error_message ) { 88 return $user; 89 } 90 91 $code = array_search( $error_message, hcap_get_error_messages(), true ) ?: 'fail'; 92 93 return new WP_Error( $code, $error_message, 400 ); 78 return $this->login_base_verify( $user, $password ); 94 79 } 95 80 -
hcaptcha-for-forms-and-more/trunk/src/php/Sendinblue/Sendinblue.php
r3114572 r3233179 67 67 68 68 /** 69 * Filters the HTML containing a form to register it for auto-verification.69 * Register a form containing hCaptcha for auto-verification purposes. 70 70 * 71 * @param string $ htmlHTML content.71 * @param string $output HTML content. 72 72 */ 73 73 do_action( 'hcap_auto_verify_register', $output ); -
hcaptcha-for-forms-and-more/trunk/src/php/Settings/EventsPage.php
r3114572 r3233179 9 9 10 10 use HCaptcha\Admin\Events\EventsTable; 11 use HCaptcha\Helpers\DB; 11 12 use KAGG\Settings\Abstracts\SettingsBase; 12 13 … … 29 30 30 31 /** 32 * Bulk ajax action. 33 */ 34 public const BULK_ACTION = 'hcaptcha-events-bulk'; 35 36 /** 31 37 * ListTable instance. 32 38 * … … 48 54 */ 49 55 protected $failed; 56 57 /** 58 * Init class hooks. 59 */ 60 protected function init_hooks(): void { 61 parent::init_hooks(); 62 63 add_action( 'wp_ajax_' . self::BULK_ACTION, [ $this, 'bulk_action' ] ); 64 } 50 65 51 66 /** … … 77 92 78 93 /** 79 * Init class hooks.80 */81 protected function init_hooks(): void {82 parent::init_hooks();83 84 add_action( 'admin_init', [ $this, 'admin_init' ] );85 add_action( 'kagg_settings_header', [ $this, 'date_picker_display' ] );86 }87 88 /**89 94 * Admin init. 90 95 * … … 103 108 104 109 $this->prepare_chart_data(); 110 } 111 112 /** 113 * Ajax callback for bulk actions. 114 * 115 * @return void 116 */ 117 public function bulk_action(): void { 118 $this->run_checks( self::BULK_ACTION ); 119 120 // Nonce is checked by check_ajax_referer() in run_checks(). 121 // phpcs:disable WordPress.Security.NonceVerification.Missing 122 $bulk = isset( $_POST['bulk'] ) ? sanitize_text_field( wp_unslash( $_POST['bulk'] ) ) : ''; 123 $ids = isset( $_POST['ids'] ) 124 ? (array) json_decode( sanitize_text_field( wp_unslash( $_POST['ids'] ) ), true ) 125 : []; 126 // phpcs:enable WordPress.Security.NonceVerification.Missing 127 128 if ( 'trash' === $bulk ) { 129 if ( ! $this->delete_hcaptcha_events( $ids ) ) { 130 wp_send_json_error( __( 'Failed to delete the selected items.', 'hcaptcha-for-forms-and-more' ) ); 131 } 132 133 wp_send_json_success(); 134 135 // For testing purposes. 136 return; 137 } 138 139 wp_send_json_error( __( 'Invalid bulk action.', 'hcaptcha-for-forms-and-more' ) ); 105 140 } 106 141 … … 136 171 self::OBJECT, 137 172 [ 173 'ajaxUrl' => admin_url( 'admin-ajax.php' ), 174 'bulkAction' => self::BULK_ACTION, 175 'bulkNonce' => wp_create_nonce( self::BULK_ACTION ), 138 176 'succeed' => $this->succeed, 139 177 'failed' => $this->failed, … … 155 193 public function section_callback( array $arguments ): void { 156 194 $this->print_header(); 195 196 ?> 197 <div id="hcaptcha-message"></div> 198 <?php 157 199 158 200 if ( ! $this->allowed ) { … … 236 278 } 237 279 } 280 281 /** 282 * Delete hCaptcha events by IDs. 283 * 284 * @param array $ids Array of event IDs to delete. 285 * 286 * @return bool 287 */ 288 private function delete_hcaptcha_events( array $ids ): bool { 289 global $wpdb; 290 291 $table_name = $wpdb->prefix . 'hcaptcha_events'; 292 293 $in = DB::prepare_in( $ids, '%d' ); 294 295 // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching 296 $result = $wpdb->query( 297 $wpdb->prepare( 298 // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared 299 "DELETE FROM $table_name WHERE id IN($in)" 300 ) 301 ); 302 303 return (bool) $result; 304 } 238 305 } -
hcaptcha-for-forms-and-more/trunk/src/php/Settings/FormsPage.php
r3114572 r3233179 29 29 30 30 /** 31 * Bulk ajax action. 32 */ 33 public const BULK_ACTION = 'hcaptcha-forms-bulk'; 34 35 /** 31 36 * ListTable instance. 32 37 * … … 41 46 */ 42 47 protected $served; 48 49 /** 50 * Init class hooks. 51 */ 52 protected function init_hooks(): void { 53 parent::init_hooks(); 54 55 add_action( 'wp_ajax_' . self::BULK_ACTION, [ $this, 'bulk_action' ] ); 56 } 43 57 44 58 /** … … 70 84 71 85 /** 72 * Init class hooks.73 */74 protected function init_hooks(): void {75 parent::init_hooks();76 77 add_action( 'admin_init', [ $this, 'admin_init' ] );78 add_action( 'kagg_settings_header', [ $this, 'date_picker_display' ] );79 }80 81 /**82 86 * Admin init. 83 87 * … … 94 98 95 99 $this->prepare_chart_data(); 100 } 101 102 /** 103 * Ajax callback for bulk actions. 104 * 105 * @return void 106 */ 107 public function bulk_action(): void { 108 $this->run_checks( self::BULK_ACTION ); 109 110 // Nonce is checked by check_ajax_referer() in run_checks(). 111 // phpcs:disable WordPress.Security.NonceVerification.Missing 112 $bulk = isset( $_POST['bulk'] ) ? sanitize_text_field( wp_unslash( $_POST['bulk'] ) ) : ''; 113 $ids = isset( $_POST['ids'] ) 114 ? (array) json_decode( sanitize_text_field( wp_unslash( $_POST['ids'] ) ), true ) 115 : []; 116 // phpcs:enable WordPress.Security.NonceVerification.Missing 117 118 if ( 'trash' === $bulk ) { 119 if ( ! $this->delete_hcaptcha_events_by_forms( $ids ) ) { 120 wp_send_json_error( __( 'Failed to delete the selected items.', 'hcaptcha-for-forms-and-more' ) ); 121 } 122 123 wp_send_json_success(); 124 125 // For testing purposes. 126 return; 127 } 128 129 wp_send_json_error( __( 'Invalid bulk action.', 'hcaptcha-for-forms-and-more' ) ); 96 130 } 97 131 … … 127 161 self::OBJECT, 128 162 [ 163 'ajaxUrl' => admin_url( 'admin-ajax.php' ), 164 'bulkAction' => self::BULK_ACTION, 165 'bulkNonce' => wp_create_nonce( self::BULK_ACTION ), 129 166 'served' => $this->served, 130 167 'servedLabel' => __( 'Served', 'hcaptcha-for-forms-and-more' ), … … 144 181 public function section_callback( array $arguments ): void { 145 182 $this->print_header(); 183 184 ?> 185 <div id="hcaptcha-message"></div> 186 <?php 146 187 147 188 if ( ! $this->allowed ) { … … 212 253 } 213 254 } 255 256 /** 257 * Delete hCaptcha events by forms. 258 * 259 * @param array $ids Array of event IDs to delete. 260 * 261 * @return bool 262 */ 263 private function delete_hcaptcha_events_by_forms( array $ids ): bool { 264 global $wpdb; 265 266 $table_name = $wpdb->prefix . 'hcaptcha_events'; 267 $conditions = []; 268 $values = []; 269 270 foreach ( $ids as $item ) { 271 $conditions[] = '(source = %s AND form_id = %d)'; 272 $values[] = $item['source']; 273 $values[] = $item['formId']; 274 } 275 276 $where_clause = implode( ' OR ', $conditions ); 277 278 // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching 279 $result = $wpdb->query( 280 $wpdb->prepare( 281 // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared, WordPress.DB.PreparedSQLPlaceholders.UnfinishedPrepare 282 "DELETE FROM $table_name WHERE $where_clause", 283 ...$values 284 ) 285 ); 286 287 return (bool) $result; 288 } 214 289 } -
hcaptcha-for-forms-and-more/trunk/src/php/Settings/General.php
r3215681 r3233179 116 116 117 117 /** 118 * Check configform id.118 * The 'check config' form id. 119 119 */ 120 120 public const CHECK_CONFIG_FORM_ID = 'check-config'; … … 581 581 ], 582 582 'default' => 'on', 583 'helper' => __( 'Store collected IP and User Agent as hashed values to conform to GDPR requirements.', 'hcaptcha-for-forms-and-more' ),583 'helper' => __( 'Store collected IP and User Agent locally as hashed values to conform to GDPR requirements.', 'hcaptcha-for-forms-and-more' ), 584 584 ], 585 585 'collect_ip' => [ … … 857 857 * 858 858 * @return void 859 * @noinspection PhpUnusedParameterInspection860 859 */ 861 860 public function check_config(): void { -
hcaptcha-for-forms-and-more/trunk/src/php/Settings/Integrations.php
r3215681 r3233179 751 751 $installed = array_unique( $installed ); 752 752 753 $this->form_fields = $this->sort_fields( $this->form_fields );754 755 $prefix = self::PREFIX . '-' . $this->section_title() . '-';756 757 753 foreach ( $this->form_fields as $status => &$form_field ) { 758 754 $form_field['installed'] = in_array( $status, $installed, true ); 759 $form_field['section'] = ( ! $form_field['installed'] ) || $form_field['disabled'] 760 ? self::SECTION_DISABLED 761 : self::SECTION_ENABLED; 755 $form_field['disabled'] = ( ! $form_field['installed'] ) || $form_field['disabled']; 756 } 757 758 unset( $form_field ); 759 760 $this->form_fields = $this->sort_fields( $this->form_fields ); 761 762 $prefix = self::PREFIX . '-' . $this->section_title() . '-'; 763 764 foreach ( $this->form_fields as $status => &$form_field ) { 765 $form_field['installed'] = in_array( $status, $installed, true ); 766 $form_field['section'] = $form_field['disabled'] ? self::SECTION_DISABLED : self::SECTION_ENABLED; 762 767 763 768 if ( isset( $form_field['label'] ) ) { … … 1684 1689 1685 1690 if ( is_wp_error( $result ) ) { 1686 return new WP_Error( $result->get_error_code(), $result->get_error_message() );1691 return $result; 1687 1692 } 1688 1693 1689 1694 if ( is_wp_error( $skin->result ) ) { 1690 return new WP_Error( $skin->result->get_error_code(), $skin->result->get_error_message() ); 1691 } 1692 1693 if ( $skin->get_errors() && $skin->get_errors()->has_errors() ) { 1694 return new WP_Error( $skin->result->get_error_code(), $skin->result->get_error_message() ); 1695 return $skin->result; 1696 } 1697 1698 $skin_errors = $skin->get_errors(); 1699 1700 if ( $skin_errors && $skin_errors->has_errors() ) { 1701 return $skin_errors; 1695 1702 } 1696 1703 -
hcaptcha-for-forms-and-more/trunk/src/php/Settings/ListPageBase.php
r3185570 r3233179 9 9 10 10 use DateTimeImmutable; 11 use Exception; 11 12 12 13 /** … … 35 36 * Base object. 36 37 */ 37 public const OBJECT = 'HCaptcha FlatPickerObject';38 public const OBJECT = 'HCaptchaListPageBaseObject'; 38 39 39 40 /** … … 66 67 */ 67 68 protected $allowed = false; 69 70 /** 71 * Init class hooks. 72 */ 73 protected function init_hooks(): void { 74 parent::init_hooks(); 75 76 add_action( 'admin_init', [ $this, 'admin_init' ] ); 77 add_action( 'kagg_settings_header', [ $this, 'date_picker_display' ] ); 78 } 68 79 69 80 /** … … 175 186 self::OBJECT, 176 187 [ 188 'noAction' => __( 'Please select a bulk action.', 'hcaptcha-for-forms-and-more' ), 189 'noItems' => __( 'Please select at least one item to perform this action on.', 'hcaptcha-for-forms-and-more' ), 190 'DoingBulk' => __( 'Doing bulk action...', 'hcaptcha-for-forms-and-more' ), 177 191 'delimiter' => self::TIMESPAN_DELIMITER, 178 192 'locale' => $this->get_language_code(), … … 222 236 <label for="hcaptcha-datepicker"> 223 237 <input 224 type="text"225 name="date"226 tabindex="-1"227 aria-hidden="true"228 id="hcaptcha-datepicker"229 value="<?php echo esc_attr( $value ); ?>">238 type="text" 239 name="date" 240 tabindex="-1" 241 aria-hidden="true" 242 id="hcaptcha-datepicker" 243 value="<?php echo esc_attr( $value ); ?>"> 230 244 </label> 231 245 </div> … … 386 400 387 401 if ( (int) $days > 0 ) { 388 $start_date = $start_date->modify( "-$days day" ); 402 try { 403 $start_date = $start_date->modify( "-$days day" ); 404 } catch ( Exception $e ) { 405 // @codeCoverageIgnoreStart 406 $start_date = $end_date; 407 // @codeCoverageIgnoreEnd 408 } 389 409 } 390 410 … … 432 452 433 453 /** 434 * Concatenate given dates into a single string. i.e. "2024-04-16 - 2024-05-16". 454 * Concatenate given dates into a single string. 455 * Should be like that: "2024-04-16 - 2024-05-16". 435 456 * 436 457 * @param DateTimeImmutable|mixed $start_date Start date. -
hcaptcha-for-forms-and-more/trunk/src/php/Tutor/Login.php
r3215681 r3233179 9 9 10 10 use HCaptcha\Abstracts\LoginBase; 11 use HCaptcha\Helpers\HCaptcha; 12 use WP_Error; 13 use WP_User; 11 14 12 15 /** … … 24 27 25 28 add_action( 'tutor_login_form_middle', [ $this, 'add_captcha' ] ); 26 add_filter( 'wp_authenticate_user', [ $this, 'login_base_verify' ], PHP_INT_MAX, 2 ); 29 add_filter( 'wp_authenticate_user', [ $this, 'verify' ], 10, 2 ); 30 } 31 32 /** 33 * Verify a login form. 34 * 35 * @param WP_User|WP_Error $user WP_User or WP_Error object 36 * if a previous callback failed authentication. 37 * @param string $password Password to check against the user. 38 * 39 * @return WP_User|WP_Error 40 */ 41 public function verify( $user, string $password ) { 42 if ( ! $this->is_tutor_login_form() ) { 43 return $user; 44 } 45 46 return $this->login_base_verify( $user, $password ); 47 } 48 49 /** 50 * Whether we process the Tutor login form. 51 * 52 * @return bool 53 */ 54 private function is_tutor_login_form(): bool { 55 return HCaptcha::did_filter( 'tutor_login_credentials' ); 27 56 } 28 57 } -
hcaptcha-for-forms-and-more/trunk/src/php/WP/Comment.php
r3114572 r3233179 119 119 } 120 120 121 // Override poor IP detection by WP Core and make sure that IP is the same in the 'comments' table and in the 'hcaptcha_events' table. 122 $comment_data['comment_author_IP'] = hcap_get_user_ip(); 123 121 124 $this->result = hcaptcha_get_verify_message_html( self::NONCE, self::ACTION ); 122 125 -
hcaptcha-for-forms-and-more/trunk/src/php/WP/Login.php
r3114572 r3233179 6 6 */ 7 7 8 // phpcs:disable Generic.Commenting.DocComment.MissingShort9 /** @noinspection PhpUndefinedNamespaceInspection */10 /** @noinspection PhpUndefinedClassInspection */11 // phpcs:enable Generic.Commenting.DocComment.MissingShort12 13 8 namespace HCaptcha\WP; 14 9 15 10 use HCaptcha\Abstracts\LoginBase; 16 use WordfenceLS\Controller_WordfenceLS;17 11 18 12 /** -
hcaptcha-for-forms-and-more/trunk/src/php/WPForms/Form.php
r3114572 r3233179 56 56 */ 57 57 protected function init_hooks(): void { 58 if ( ! function_exists( 'wpforms' ) ) { 59 return; 60 } 61 58 62 $this->mode_auto = hcaptcha()->settings()->is( 'wpforms_status', 'form' ); 59 63 $this->mode_embed = -
hcaptcha-for-forms-and-more/trunk/src/php/includes/functions.php
r3200161 r3233179 26 26 * Do not set the default size here. 27 27 * If size is not normal|compact|invisible, it will be taken from plugin settings in HCaptcha::form(). 28 * Same for theme and force. 28 29 */ 29 30 $atts = shortcode_atts( … … 32 33 'name' => HCAPTCHA_NONCE, 33 34 'auto' => false, 35 'ajax' => false, 34 36 'force' => $hcaptcha_force, 35 37 'theme' => $hcaptcha_theme, -
hcaptcha-for-forms-and-more/trunk/src/php/includes/request.php
r3200161 r3233179 138 138 $raw_response = wp_remote_post( $url ); 139 139 140 if ( is_wp_error( $raw_response ) ) { 141 return [ 142 'error' => implode( "\n", $raw_response->get_error_messages() ), 143 ]; 144 } 145 140 146 $raw_body = wp_remote_retrieve_body( $raw_response ); 141 147 … … 235 241 [ 'body' => $params ] 236 242 ); 243 244 if ( is_wp_error( $raw_response ) ) { 245 $result = implode( "\n", $raw_response->get_error_messages() ); 246 $error_codes = $raw_response->get_error_codes(); 247 248 /** This filter is documented above. */ 249 return apply_filters( 'hcap_verify_request', $result, $error_codes ); 250 } 237 251 238 252 $raw_body = wp_remote_retrieve_body( $raw_response ); … … 348 362 if ( ! function_exists( 'hcaptcha_get_verify_message_html' ) ) { 349 363 /** 350 * Get verify message html.364 * Get verify message HTML. 351 365 * 352 366 * @param string $nonce_field_name Nonce field name. -
hcaptcha-for-forms-and-more/trunk/vendor/autoload.php
r3215681 r3233179 23 23 require_once __DIR__ . '/composer/autoload_real.php'; 24 24 25 return ComposerAutoloaderInit 0c3f450f81223af0ef151675e6b814b7::getLoader();25 return ComposerAutoloaderInit5b9e71c5ecc4233f8a6f35918bdc1f18::getLoader(); -
hcaptcha-for-forms-and-more/trunk/vendor/composer/InstalledVersions.php
r3215681 r3233179 32 32 */ 33 33 private static $installed; 34 35 /** 36 * @var bool 37 */ 38 private static $installedIsLocalDir; 34 39 35 40 /** … … 310 315 self::$installed = $data; 311 316 self::$installedByVendor = array(); 317 318 // when using reload, we disable the duplicate protection to ensure that self::$installed data is 319 // always returned, but we cannot know whether it comes from the installed.php in __DIR__ or not, 320 // so we have to assume it does not, and that may result in duplicate data being returned when listing 321 // all installed packages for example 322 self::$installedIsLocalDir = false; 312 323 } 313 324 … … 326 337 327 338 if (self::$canGetVendors) { 339 $selfDir = strtr(__DIR__, '\\', '/'); 328 340 foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) { 341 $vendorDir = strtr($vendorDir, '\\', '/'); 329 342 if (isset(self::$installedByVendor[$vendorDir])) { 330 343 $installed[] = self::$installedByVendor[$vendorDir]; … … 334 347 self::$installedByVendor[$vendorDir] = $required; 335 348 $installed[] = $required; 336 if (s trtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) {349 if (self::$installed === null && $vendorDir.'/composer' === $selfDir) { 337 350 self::$installed = $required; 338 $copiedLocalDir = true;351 self::$installedIsLocalDir = true; 339 352 } 353 } 354 if (self::$installedIsLocalDir && $vendorDir.'/composer' === $selfDir) { 355 $copiedLocalDir = true; 340 356 } 341 357 } -
hcaptcha-for-forms-and-more/trunk/vendor/composer/autoload_classmap.php
r3215681 r3233179 14 14 'HCaptcha\\Admin\\Events\\EventsTable' => $baseDir . '/src/php/Admin/Events/EventsTable.php', 15 15 'HCaptcha\\Admin\\Events\\FormsTable' => $baseDir . '/src/php/Admin/Events/FormsTable.php', 16 'HCaptcha\\Admin\\Events\\TableBase' => $baseDir . '/src/php/Admin/Events/TableBase.php', 16 17 'HCaptcha\\Admin\\Notifications' => $baseDir . '/src/php/Admin/Notifications.php', 17 18 'HCaptcha\\Admin\\PluginStats' => $baseDir . '/src/php/Admin/PluginStats.php', … … 36 37 'HCaptcha\\BuddyPress\\CreateGroup' => $baseDir . '/src/php/BuddyPress/CreateGroup.php', 37 38 'HCaptcha\\BuddyPress\\Register' => $baseDir . '/src/php/BuddyPress/Register.php', 39 'HCaptcha\\CACSP\\Compatibility' => $baseDir . '/src/php/CACSP/Compatibility.php', 38 40 'HCaptcha\\CF7\\Admin' => $baseDir . '/src/php/CF7/Admin.php', 39 41 'HCaptcha\\CF7\\Base' => $baseDir . '/src/php/CF7/Base.php', … … 75 77 'HCaptcha\\GravityForms\\Form' => $baseDir . '/src/php/GravityForms/Form.php', 76 78 'HCaptcha\\HTMLForms\\Form' => $baseDir . '/src/php/HTMLForms/Form.php', 79 'HCaptcha\\Helpers\\DB' => $baseDir . '/src/php/Helpers/DB.php', 77 80 'HCaptcha\\Helpers\\HCaptcha' => $baseDir . '/src/php/Helpers/HCaptcha.php', 78 81 'HCaptcha\\Helpers\\Minify\\CSS' => $baseDir . '/src/php/Helpers/Minify/CSS.php', … … 173 176 'HCaptcha\\WP\\Comment' => $baseDir . '/src/php/WP/Comment.php', 174 177 'HCaptcha\\WP\\Login' => $baseDir . '/src/php/WP/Login.php', 178 'HCaptcha\\WP\\LoginOut' => $baseDir . '/src/php/WP/LoginOut.php', 175 179 'HCaptcha\\WP\\LostPassword' => $baseDir . '/src/php/WP/LostPassword.php', 176 180 'HCaptcha\\WP\\PasswordProtected' => $baseDir . '/src/php/WP/PasswordProtected.php', -
hcaptcha-for-forms-and-more/trunk/vendor/composer/autoload_real.php
r3215681 r3233179 3 3 // autoload_real.php @generated by Composer 4 4 5 class ComposerAutoloaderInit 0c3f450f81223af0ef151675e6b814b75 class ComposerAutoloaderInit5b9e71c5ecc4233f8a6f35918bdc1f18 6 6 { 7 7 private static $loader; … … 23 23 } 24 24 25 spl_autoload_register(array('ComposerAutoloaderInit 0c3f450f81223af0ef151675e6b814b7', 'loadClassLoader'), true, true);25 spl_autoload_register(array('ComposerAutoloaderInit5b9e71c5ecc4233f8a6f35918bdc1f18', 'loadClassLoader'), true, true); 26 26 self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__)); 27 spl_autoload_unregister(array('ComposerAutoloaderInit 0c3f450f81223af0ef151675e6b814b7', 'loadClassLoader'));27 spl_autoload_unregister(array('ComposerAutoloaderInit5b9e71c5ecc4233f8a6f35918bdc1f18', 'loadClassLoader')); 28 28 29 29 require __DIR__ . '/autoload_static.php'; 30 call_user_func(\Composer\Autoload\ComposerStaticInit 0c3f450f81223af0ef151675e6b814b7::getInitializer($loader));30 call_user_func(\Composer\Autoload\ComposerStaticInit5b9e71c5ecc4233f8a6f35918bdc1f18::getInitializer($loader)); 31 31 32 32 $loader->setClassMapAuthoritative(true); -
hcaptcha-for-forms-and-more/trunk/vendor/composer/autoload_static.php
r3215681 r3233179 5 5 namespace Composer\Autoload; 6 6 7 class ComposerStaticInit 0c3f450f81223af0ef151675e6b814b77 class ComposerStaticInit5b9e71c5ecc4233f8a6f35918bdc1f18 8 8 { 9 9 public static $prefixLengthsPsr4 = array ( … … 42 42 'HCaptcha\\Admin\\Events\\EventsTable' => __DIR__ . '/../..' . '/src/php/Admin/Events/EventsTable.php', 43 43 'HCaptcha\\Admin\\Events\\FormsTable' => __DIR__ . '/../..' . '/src/php/Admin/Events/FormsTable.php', 44 'HCaptcha\\Admin\\Events\\TableBase' => __DIR__ . '/../..' . '/src/php/Admin/Events/TableBase.php', 44 45 'HCaptcha\\Admin\\Notifications' => __DIR__ . '/../..' . '/src/php/Admin/Notifications.php', 45 46 'HCaptcha\\Admin\\PluginStats' => __DIR__ . '/../..' . '/src/php/Admin/PluginStats.php', … … 64 65 'HCaptcha\\BuddyPress\\CreateGroup' => __DIR__ . '/../..' . '/src/php/BuddyPress/CreateGroup.php', 65 66 'HCaptcha\\BuddyPress\\Register' => __DIR__ . '/../..' . '/src/php/BuddyPress/Register.php', 67 'HCaptcha\\CACSP\\Compatibility' => __DIR__ . '/../..' . '/src/php/CACSP/Compatibility.php', 66 68 'HCaptcha\\CF7\\Admin' => __DIR__ . '/../..' . '/src/php/CF7/Admin.php', 67 69 'HCaptcha\\CF7\\Base' => __DIR__ . '/../..' . '/src/php/CF7/Base.php', … … 103 105 'HCaptcha\\GravityForms\\Form' => __DIR__ . '/../..' . '/src/php/GravityForms/Form.php', 104 106 'HCaptcha\\HTMLForms\\Form' => __DIR__ . '/../..' . '/src/php/HTMLForms/Form.php', 107 'HCaptcha\\Helpers\\DB' => __DIR__ . '/../..' . '/src/php/Helpers/DB.php', 105 108 'HCaptcha\\Helpers\\HCaptcha' => __DIR__ . '/../..' . '/src/php/Helpers/HCaptcha.php', 106 109 'HCaptcha\\Helpers\\Minify\\CSS' => __DIR__ . '/../..' . '/src/php/Helpers/Minify/CSS.php', … … 201 204 'HCaptcha\\WP\\Comment' => __DIR__ . '/../..' . '/src/php/WP/Comment.php', 202 205 'HCaptcha\\WP\\Login' => __DIR__ . '/../..' . '/src/php/WP/Login.php', 206 'HCaptcha\\WP\\LoginOut' => __DIR__ . '/../..' . '/src/php/WP/LoginOut.php', 203 207 'HCaptcha\\WP\\LostPassword' => __DIR__ . '/../..' . '/src/php/WP/LostPassword.php', 204 208 'HCaptcha\\WP\\PasswordProtected' => __DIR__ . '/../..' . '/src/php/WP/PasswordProtected.php', … … 212 216 { 213 217 return \Closure::bind(function () use ($loader) { 214 $loader->prefixLengthsPsr4 = ComposerStaticInit 0c3f450f81223af0ef151675e6b814b7::$prefixLengthsPsr4;215 $loader->prefixDirsPsr4 = ComposerStaticInit 0c3f450f81223af0ef151675e6b814b7::$prefixDirsPsr4;216 $loader->classMap = ComposerStaticInit 0c3f450f81223af0ef151675e6b814b7::$classMap;218 $loader->prefixLengthsPsr4 = ComposerStaticInit5b9e71c5ecc4233f8a6f35918bdc1f18::$prefixLengthsPsr4; 219 $loader->prefixDirsPsr4 = ComposerStaticInit5b9e71c5ecc4233f8a6f35918bdc1f18::$prefixDirsPsr4; 220 $loader->classMap = ComposerStaticInit5b9e71c5ecc4233f8a6f35918bdc1f18::$classMap; 217 221 218 222 }, null, ClassLoader::class); -
hcaptcha-for-forms-and-more/trunk/vendor/composer/installed.php
r3215681 r3233179 2 2 'root' => array( 3 3 'name' => 'hcaptcha/hcaptcha-wordpress-plugin', 4 'pretty_version' => '4. 9.0',5 'version' => '4. 9.0.0',6 'reference' => ' bcf1d7e3058f194fdf32b0c257caf651ab195121',4 'pretty_version' => '4.10.0', 5 'version' => '4.10.0.0', 6 'reference' => '3f3d675e6a0c12404a0a7aa20b4472b5d37ea88d', 7 7 'type' => 'wordpress-plugin', 8 8 'install_path' => __DIR__ . '/../../', … … 12 12 'versions' => array( 13 13 'hcaptcha/hcaptcha-wordpress-plugin' => array( 14 'pretty_version' => '4. 9.0',15 'version' => '4. 9.0.0',16 'reference' => ' bcf1d7e3058f194fdf32b0c257caf651ab195121',14 'pretty_version' => '4.10.0', 15 'version' => '4.10.0.0', 16 'reference' => '3f3d675e6a0c12404a0a7aa20b4472b5d37ea88d', 17 17 'type' => 'wordpress-plugin', 18 18 'install_path' => __DIR__ . '/../../',
Note: See TracChangeset
for help on using the changeset viewer.