Version Description
January 20 2020 = * Upd: Rebuilding users/comments scan * Fix: UltimateMember - form validation checking fixed. * Fix: Exclusion for login form. * Fix: Disable scripts on excluded pages. * Fix: PHP 7.4 compability. * Minor fixes. * Spam protection improved.
Download this release
Release Info
Developer | glomberg |
Plugin | Spam protection, AntiSpam, FireWall by CleanTalk |
Version | 5.133 |
Comparing to | |
See all releases |
Code changes from version 5.132.3 to 5.133
- cleantalk.php +4 -4
- css/cleantalk-admin-settings-page.min.css +1 -1
- css/cleantalk-spam-check.min.css +1 -1
- css/jquery-ui.min.css +4 -4
- css/jquery-ui.theme.min.css +5 -0
- i18n/cleantalk-ru_RU.mo +0 -0
- i18n/cleantalk-ru_RU.po +1536 -1536
- inc/ClassApbctListTable.php +1434 -0
- inc/cleantalk-admin.php +29 -99
- inc/cleantalk-ajax.php +1 -0
- inc/cleantalk-autoloader.php +21 -21
- inc/cleantalk-comments.php +0 -726
- inc/cleantalk-find-spam.php +57 -0
- inc/cleantalk-public.php +11 -2
- inc/cleantalk-updater.php +19 -0
- inc/cleantalk-users.php +0 -802
- inc/find-spam/ClassCleantalkCommentsListTable.php +302 -0
- inc/find-spam/ClassCleantalkCommentsListTableLogs.php +63 -0
- inc/find-spam/ClassCleantalkCommentsListTableScan.php +42 -0
- inc/find-spam/ClassCleantalkCommentsListTableSpam.php +42 -0
- inc/find-spam/ClassCleantalkFindSpamChecker.php +132 -0
- inc/find-spam/ClassCleantalkFindSpamCommentsChecker.php +448 -0
- inc/find-spam/ClassCleantalkFindSpamPage.php +136 -0
- inc/find-spam/ClassCleantalkFindSpamUsersChecker.php +535 -0
- inc/find-spam/ClassCleantalkUsersListTable.php +263 -0
- inc/find-spam/ClassCleantalkUsersListTableLogs.php +63 -0
- inc/find-spam/ClassCleantalkUsersListTableScan.php +47 -0
- inc/find-spam/ClassCleantalkUsersListTableSpam.php +55 -0
- js/apbct-disable-comments.min.js +2 -0
- js/apbct-disable-comments.min.js.map +1 -0
- js/apbct-public.min.js +2 -2
- js/apbct-public.min.js.map +1 -1
- js/cleantalk-comments-checkspam.min.js +2 -2
- js/cleantalk-comments-checkspam.min.js.map +1 -1
- js/cleantalk-users-checkspam.min.js +2 -2
- js/cleantalk-users-checkspam.min.js.map +1 -1
- js/cleantalk_nocache.min.js +1 -1
- js/cleantalk_nocache.min.js.map +1 -1
- js/jquery-ui.min.js +10 -7
- lib/Cleantalk/Antispam/Helper.php +3 -3
- lib/Cleantalk/Common/Cookie.php +51 -51
- lib/Cleantalk/Common/Get.php +51 -51
- lib/Cleantalk/Common/Post.php +52 -52
- lib/Cleantalk/Common/Request.php +47 -47
- lib/Cleantalk/Common/Server.php +82 -82
- lib/Cleantalk/Common/ServerVariables.php +83 -83
- lib/CleantalkState.php +19 -3
- lib/CleantalkUpgraderSkin_Deprecated.php +44 -44
- lib/autoloader.php +23 -0
- readme.txt +15 -19
- templates/empty_comments.php +2 -0
cleantalk.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
Plugin Name: Anti-Spam by CleanTalk
|
4 |
Plugin URI: https://cleantalk.org
|
5 |
Description: Max power, all-in-one, no Captcha, premium anti-spam plugin. No comment spam, no registration spam, no contact spam, protects any WordPress forms.
|
6 |
-
Version: 5.
|
7 |
Author: СleanTalk <welcome@cleantalk.org>
|
8 |
Author URI: https://cleantalk.org
|
9 |
Text Domain: cleantalk
|
@@ -120,6 +120,7 @@ if( !defined( 'CLEANTALK_PLUGIN_DIR' ) ){
|
|
120 |
define('APBCT_TBL_FIREWALL_DATA', $apbct->db_prefix . 'cleantalk_sfw'); // Table with firewall data.
|
121 |
define('APBCT_TBL_FIREWALL_LOG', $apbct->db_prefix . 'cleantalk_sfw_logs'); // Table with firewall logs.
|
122 |
define('APBCT_TBL_SESSIONS', $apbct->db_prefix . 'cleantalk_sessions'); // Table with session data.
|
|
|
123 |
define('APBCT_SELECT_LIMIT', 5000); // Select limit for logs.
|
124 |
define('APBCT_WRITE_LIMIT', 5000); // Write limit for firewall data.
|
125 |
|
@@ -273,9 +274,8 @@ if( !defined( 'CLEANTALK_PLUGIN_DIR' ) ){
|
|
273 |
|
274 |
// Admin panel actions
|
275 |
if (is_admin() || is_network_admin()){
|
276 |
-
|
277 |
-
|
278 |
-
require_once(CLEANTALK_PLUGIN_DIR . 'inc/cleantalk-users.php');
|
279 |
require_once(CLEANTALK_PLUGIN_DIR . 'inc/cleantalk-admin.php');
|
280 |
require_once(CLEANTALK_PLUGIN_DIR . 'inc/cleantalk-settings.php');
|
281 |
|
3 |
Plugin Name: Anti-Spam by CleanTalk
|
4 |
Plugin URI: https://cleantalk.org
|
5 |
Description: Max power, all-in-one, no Captcha, premium anti-spam plugin. No comment spam, no registration spam, no contact spam, protects any WordPress forms.
|
6 |
+
Version: 5.133
|
7 |
Author: СleanTalk <welcome@cleantalk.org>
|
8 |
Author URI: https://cleantalk.org
|
9 |
Text Domain: cleantalk
|
120 |
define('APBCT_TBL_FIREWALL_DATA', $apbct->db_prefix . 'cleantalk_sfw'); // Table with firewall data.
|
121 |
define('APBCT_TBL_FIREWALL_LOG', $apbct->db_prefix . 'cleantalk_sfw_logs'); // Table with firewall logs.
|
122 |
define('APBCT_TBL_SESSIONS', $apbct->db_prefix . 'cleantalk_sessions'); // Table with session data.
|
123 |
+
define('APBCT_SPAMSCAN_LOGS', $apbct->db_prefix . 'cleantalk_spamscan_logs'); // Table with session data.
|
124 |
define('APBCT_SELECT_LIMIT', 5000); // Select limit for logs.
|
125 |
define('APBCT_WRITE_LIMIT', 5000); // Write limit for firewall data.
|
126 |
|
274 |
|
275 |
// Admin panel actions
|
276 |
if (is_admin() || is_network_admin()){
|
277 |
+
|
278 |
+
require_once( CLEANTALK_PLUGIN_DIR . 'inc/cleantalk-find-spam.php' );
|
|
|
279 |
require_once(CLEANTALK_PLUGIN_DIR . 'inc/cleantalk-admin.php');
|
280 |
require_once(CLEANTALK_PLUGIN_DIR . 'inc/cleantalk-settings.php');
|
281 |
|
css/cleantalk-admin-settings-page.min.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
#apbctTopWarning{margin-bottom:5px}#apbctTopWarning h3{margin:10px 0 5px}#apbctTopWarning h4{margin:10px}#apbctTopWarning h4 span{margin-top:5px}.apbct_settings-subtitle{position:relative;top:-15px;margin:0}.apbct_settings-field_wrapper{margin:15px 0}.apbct_settings-field_wrapper--sub{margin-left:30px!important}.apbct_settings__label{margin-right:10px;font-size:17px;vertical-align:text-bottom}.apbct_settings-field_content
|
1 |
+
.apbct_settings-field_content,.cleantalk_link-auto,.cleantalk_link-manual,.ct-warning-test-failed,.ct_rate_block,.ct_settings_banner,i.animate-spin{display:inline-block}#apbctTopWarning{margin-bottom:5px}#apbctTopWarning h3{margin:10px 0 5px}#apbctTopWarning h4{margin:10px}#apbctTopWarning h4 span{margin-top:5px}.apbct_settings-subtitle{position:relative;top:-15px;margin:0}.apbct_settings-field_wrapper{margin:15px 0}.apbct_settings-field_wrapper--sub{margin-left:30px!important}.apbct_settings__label{margin-right:10px;font-size:17px;vertical-align:text-bottom}.apbct_settings-field_content--radio{width:70%}.apbct_settings-field_title--radio{display:inline-block;margin:0;width:210px;padding-right:10px;font-size:14px;vertical-align:top}.apbct_input_text{min-width:255px;width:400px}.apbct_settings-field--api_key{font-size:14pt}.apbct_settings-long_description---show:hover{color:#aaa;cursor:pointer}.cleantalk_link{text-decoration:none;font-size:13px;line-height:26px;margin:0;padding:0 10px 1px;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;white-space:nowrap;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.cleantalk_link-auto{background:#ccc;border-color:#999;-webkit-box-shadow:inset 0 1px 0 rgba(200,200,200,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(200,200,200,.5),0 1px 0 rgba(0,0,0,.15);color:#000;height:28px;-webkit-border-radius:2px;border-radius:2px}.cleantalk_link-auto:hover{color:#fff}.cleantalk_link-manual{background:#2ea2cc;border-color:#0074a2;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);color:#fff;-webkit-border-radius:3px;border-radius:3px;text-align:center}.cleantalk_link-manual:hover{color:#000}.cleantalk_link[disabled=disabled]{background:#5d9db5;color:#000}.apbct_status_icon{vertical-align:text-bottom;margin:0 5px 0 8px}a.ct_support_link{color:#666;margin-right:.5em;font-size:10pt;font-weight:400}.ct-warning-test-failed{position:relative;padding:5px;margin:4px;border:3px solid rgba(240,50,50,1);border-radius:5px;background-color:rgba(255,200,200,1)}.ct_settings_banner{text-align:right;width:100%;margin:1em 0;vertical-align:top}#ct_translate_plugin{margin-left:0}.ct_rate_block{width:370px;margin-right:3em;padding:.8em .8em 15px;text-align:center;border:1px dashed #666}#ct_translate_plugin .apbct_button_rate{margin-bottom:10px}.apbct_long_desc{position:absolute;background:#5a5a5a;min-width:80px;min-height:80px;max-width:500px;padding:10px;color:#fff;z-index:10}i.animate-spin{-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;-webkit-animation:spin 2s infinite linear;animation:spin 2s infinite linear;font-size:25px;line-height:20px;color:rgba(120,200,230,1);margin:25px}@keyframes spin{to{transform:rotate(359deg)}}.apbct_long_desc__cancel{position:absolute;top:5px;right:5px;color:rgba(255,255,255,.5)}.apbct_long_desc__cancel:hover{color:#fff}.apbct_long_desc__angle{position:absolute;top:5px;left:-17px;width:10px;height:10px;background:#5a5a5a;-webkit-transform:rotate(135deg);-ms-transform:rotate(135deg);transform:rotate(135deg);-webkit-transform-origin:100% 100%;-ms-transform-origin:100% 100%;transform-origin:100% 100%}.apbct_long_desc__title{color:rgba(120,200,230,1);margin:0}
|
css/cleantalk-spam-check.min.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
#ct_checking_status,#ct_cooling_notice,#ct_error_message h3,#ct_error_message h4{text-align:center;width:90%}#ct_preloader{display:none;width:100%;text-align:center}#ct_working_message{display:none;margin:1em auto auto;padding:3px;width:70%;border:2px dotted gray;background:#ff9}#ct_pause{display:none}.ct_check_params_elem_sub{margin:15px 0 0 25px;width:150px;display:inline-block}.ct_check_params_elem_sub_sub{margin:15px 0 0 50px}button#ct_check_spam_button{background:#2ea2cc;border-color:#0074a2;color:#fff;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15)}button#ct_check_spam_button:hover{color:#000}.ct_date{display:inline;width:150px}.ct_check_params_desc{display:inline-block;margin:5px 10px 10px 15px}
|
1 |
+
#ct_checking_status,#ct_cooling_notice,#ct_error_message h3,#ct_error_message h4{text-align:center;width:90%}#ct_preloader{display:none;width:100%;text-align:center}#ct_preloader img{border:none!important}#ct_working_message{display:none;margin:1em auto auto;padding:3px;width:70%;border:2px dotted gray;background:#ff9}#ct_pause{display:none}.ct_check_params_elem_sub{margin:15px 0 0 25px;width:150px;display:inline-block}.ct_check_params_elem_sub_sub{margin:15px 0 0 50px}button#ct_check_spam_button{background:#2ea2cc;border-color:#0074a2;color:#fff;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15)}button#ct_check_spam_button:hover{color:#000}.ct_date{display:inline;width:150px}.ct_check_params_desc{display:inline-block;margin:5px 10px 10px 15px}#ct_check_tabs{border:1px solid #c5c5c5;border-radius:3px;padding:.2em;background:#fff}#ct_check_tabs ul{margin:0;padding:.2em .2em 0;border:1px solid #c5c5c5;border-radius:3px;background:#e9e9e9;color:#333;font-weight:700;display:flex}#ct_check_tabs ul li{list-style:none;position:relative;margin:1px .2em -1px 0;padding:0;white-space:nowrap;border:1px solid #c5c5c5;border-radius:3px 3px 0 0;background:#f6f6f6;font-weight:400}#ct_check_tabs ul li.active{border-color:#003eff;background:#007fff}#ct_check_tabs ul li a{display:block;padding:.5em 1em;text-decoration:none}#ct_check_tabs ul li.active a{color:#fff}#ct_check_content{display:block;border-width:0;padding:1em 1.4em;background:0 0}
|
css/jquery-ui.min.css
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
-
/*! jQuery UI - v1.12.1 -
|
2 |
* http://jqueryui.com
|
3 |
-
* Includes: draggable.css, core.css, resizable.css, accordion.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, progressbar.css, theme.css
|
4 |
-
* To view and modify this theme, visit http://jqueryui.com/themeroller/?scope=&folderName=
|
5 |
* Copyright jQuery Foundation and other contributors; Licensed MIT */
|
6 |
|
7 |
-
.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;font-size:100%}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-button{padding:.4em 1em;display:inline-block;position:relative;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2em;box-sizing:border-box;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-button-icon-only{text-indent:0}.ui-button-icon-only .ui-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.ui-button.ui-icon-notext .ui-icon{padding:0;width:2.1em;height:2.1em;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-icon-notext .ui-icon{width:auto;height:auto;text-indent:0;white-space:normal;padding:.4em 1em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-controlgroup{vertical-align:middle;display:inline-block}.ui-controlgroup > .ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup > .ui-controlgroup-item:focus,.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus{z-index:9999}.ui-controlgroup-vertical > .ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item{border-left:none}.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item{border-top:none}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:none}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:none}.ui-controlgroup-vertical .ui-spinner-input{width:75%;width:calc( 100% - 2.4em )}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:none}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:none}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;left:.5em;top:.3em}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-n{height:2px;top:0}.ui-dialog .ui-resizable-e{width:2px;right:0}.ui-dialog .ui-resizable-s{height:2px;bottom:0}.ui-dialog .ui-resizable-w{width:2px;left:0}.ui-dialog .ui-resizable-se,.ui-dialog .ui-resizable-sw,.ui-dialog .ui-resizable-ne,.ui-dialog .ui-resizable-nw{width:7px;height:7px}.ui-dialog .ui-resizable-se{right:0;bottom:0}.ui-dialog .ui-resizable-sw{left:0;bottom:0}.ui-dialog .ui-resizable-ne{right:0;top:0}.ui-dialog .ui-resizable-nw{left:0;top:0}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,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");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-widget{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #c5c5c5}.ui-widget-content{border:1px solid #ddd;background:#fff;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #ddd;background:#e9e9e9;color:#333;font-weight:bold}.ui-widget-header a{color:#333}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,.ui-button,html .ui-button.ui-state-disabled:hover,html .ui-button.ui-state-disabled:active{border:1px solid #c5c5c5;background:#f6f6f6;font-weight:normal;color:#454545}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button,.ui-button{color:#454545;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus,.ui-button:hover,.ui-button:focus{border:1px solid #ccc;background:#ededed;font-weight:normal;color:#2b2b2b}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,a.ui-button:hover,a.ui-button:focus{color:#2b2b2b;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px rgb(94,158,214)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active,.ui-button:active,.ui-button.ui-state-active:hover{border:1px solid #246b85;background:#2ea2cc;font-weight:normal;color:#fff}.ui-icon-background,.ui-state-active .ui-icon-background{border:#246b85;background-color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #dad55e;background:#fffa90;color:#777620}.ui-state-checked{border:1px solid #dad55e;background:#fffa90}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#777620}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #f1a899;background:#fddfdf;color:#5f3f3f}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#5f3f3f}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#5f3f3f}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-button:hover .ui-icon,.ui-button:focus .ui-icon{background-image:url("images/ui-icons_555555_256x240.png")}.ui-state-active .ui-icon,.ui-button:active .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-highlight .ui-icon,.ui-button .ui-state-highlight.ui-icon{background-image:url("images/ui-icons_777620_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_cc0000_256x240.png")}.ui-button .ui-icon{background-image:url("images/ui-icons_777777_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:3px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:3px}.ui-widget-overlay{background:#aaa;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{-webkit-box-shadow:0 0 5px #666;box-shadow:0 0 5px #666}
|
1 |
+
/*! jQuery UI - v1.12.1 - 2020-01-10
|
2 |
* http://jqueryui.com
|
3 |
+
* Includes: draggable.css, core.css, resizable.css, selectable.css, sortable.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, progressbar.css, selectmenu.css, slider.css, spinner.css, tabs.css, tooltip.css, theme.css
|
4 |
+
* To view and modify this theme, visit http://jqueryui.com/themeroller/?scope=&folderName=base&cornerRadiusShadow=8px&offsetLeftShadow=0px&offsetTopShadow=0px&thicknessShadow=5px&opacityShadow=30&bgImgOpacityShadow=0&bgTextureShadow=flat&bgColorShadow=666666&opacityOverlay=30&bgImgOpacityOverlay=0&bgTextureOverlay=flat&bgColorOverlay=aaaaaa&iconColorError=cc0000&fcError=5f3f3f&borderColorError=f1a899&bgTextureError=flat&bgColorError=fddfdf&iconColorHighlight=777620&fcHighlight=777620&borderColorHighlight=dad55e&bgTextureHighlight=flat&bgColorHighlight=fffa90&iconColorActive=ffffff&fcActive=ffffff&borderColorActive=003eff&bgTextureActive=flat&bgColorActive=007fff&iconColorHover=555555&fcHover=2b2b2b&borderColorHover=cccccc&bgTextureHover=flat&bgColorHover=ededed&iconColorDefault=777777&fcDefault=454545&borderColorDefault=c5c5c5&bgTextureDefault=flat&bgColorDefault=f6f6f6&iconColorContent=444444&fcContent=333333&borderColorContent=dddddd&bgTextureContent=flat&bgColorContent=ffffff&iconColorHeader=444444&fcHeader=333333&borderColorHeader=dddddd&bgTextureHeader=flat&bgColorHeader=e9e9e9&cornerRadius=3px&fwDefault=normal&fsDefault=1em&ffDefault=Arial%2CHelvetica%2Csans-serif
|
5 |
* Copyright jQuery Foundation and other contributors; Licensed MIT */
|
6 |
|
7 |
+
.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;font-size:100%}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-button{padding:.4em 1em;display:inline-block;position:relative;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2em;box-sizing:border-box;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-button-icon-only{text-indent:0}.ui-button-icon-only .ui-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.ui-button.ui-icon-notext .ui-icon{padding:0;width:2.1em;height:2.1em;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-icon-notext .ui-icon{width:auto;height:auto;text-indent:0;white-space:normal;padding:.4em 1em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-controlgroup{vertical-align:middle;display:inline-block}.ui-controlgroup > .ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup > .ui-controlgroup-item:focus,.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus{z-index:9999}.ui-controlgroup-vertical > .ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item{border-left:none}.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item{border-top:none}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:none}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:none}.ui-controlgroup-vertical .ui-spinner-input{width:75%;width:calc( 100% - 2.4em )}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:none}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:none}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;left:.5em;top:.3em}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-n{height:2px;top:0}.ui-dialog .ui-resizable-e{width:2px;right:0}.ui-dialog .ui-resizable-s{height:2px;bottom:0}.ui-dialog .ui-resizable-w{width:2px;left:0}.ui-dialog .ui-resizable-se,.ui-dialog .ui-resizable-sw,.ui-dialog .ui-resizable-ne,.ui-dialog .ui-resizable-nw{width:7px;height:7px}.ui-dialog .ui-resizable-se{right:0;bottom:0}.ui-dialog .ui-resizable-sw{left:0;bottom:0}.ui-dialog .ui-resizable-ne{right:0;top:0}.ui-dialog .ui-resizable-nw{left:0;top:0}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,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");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-text{display:block;margin-right:20px;overflow:hidden;text-overflow:ellipsis}.ui-selectmenu-button.ui-button{text-align:left;white-space:nowrap;width:14em}.ui-selectmenu-icon.ui-icon{float:right;margin-top:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:.222em 0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:2em}.ui-spinner-button{width:1.6em;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top-style:none;border-bottom-style:none;border-right-style:none}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #c5c5c5}.ui-widget-content{border:1px solid #ddd;background:#fff;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #ddd;background:#e9e9e9;color:#333;font-weight:bold}.ui-widget-header a{color:#333}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,.ui-button,html .ui-button.ui-state-disabled:hover,html .ui-button.ui-state-disabled:active{border:1px solid #c5c5c5;background:#f6f6f6;font-weight:normal;color:#454545}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button,.ui-button{color:#454545;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus,.ui-button:hover,.ui-button:focus{border:1px solid #ccc;background:#ededed;font-weight:normal;color:#2b2b2b}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,a.ui-button:hover,a.ui-button:focus{color:#2b2b2b;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px rgb(94,158,214)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active,.ui-button:active,.ui-button.ui-state-active:hover{border:1px solid #003eff;background:#007fff;font-weight:normal;color:#fff}.ui-icon-background,.ui-state-active .ui-icon-background{border:#003eff;background-color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #dad55e;background:#fffa90;color:#777620}.ui-state-checked{border:1px solid #dad55e;background:#fffa90}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#777620}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #f1a899;background:#fddfdf;color:#5f3f3f}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#5f3f3f}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#5f3f3f}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-button:hover .ui-icon,.ui-button:focus .ui-icon{background-image:url("images/ui-icons_555555_256x240.png")}.ui-state-active .ui-icon,.ui-button:active .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-highlight .ui-icon,.ui-button .ui-state-highlight.ui-icon{background-image:url("images/ui-icons_777620_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_cc0000_256x240.png")}.ui-button .ui-icon{background-image:url("images/ui-icons_777777_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:3px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:3px}.ui-widget-overlay{background:#aaa;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{-webkit-box-shadow:0 0 5px #666;box-shadow:0 0 5px #666}
|
css/jquery-ui.theme.min.css
ADDED
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*! jQuery UI - v1.12.1 - 2020-01-10
|
2 |
+
* http://jqueryui.com
|
3 |
+
* Copyright jQuery Foundation and other contributors; Licensed MIT */
|
4 |
+
|
5 |
+
.ui-widget{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #c5c5c5}.ui-widget-content{border:1px solid #ddd;background:#fff;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #ddd;background:#e9e9e9;color:#333;font-weight:bold}.ui-widget-header a{color:#333}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,.ui-button,html .ui-button.ui-state-disabled:hover,html .ui-button.ui-state-disabled:active{border:1px solid #c5c5c5;background:#f6f6f6;font-weight:normal;color:#454545}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button,.ui-button{color:#454545;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus,.ui-button:hover,.ui-button:focus{border:1px solid #ccc;background:#ededed;font-weight:normal;color:#2b2b2b}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,a.ui-button:hover,a.ui-button:focus{color:#2b2b2b;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px rgb(94,158,214)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active,.ui-button:active,.ui-button.ui-state-active:hover{border:1px solid #003eff;background:#007fff;font-weight:normal;color:#fff}.ui-icon-background,.ui-state-active .ui-icon-background{border:#003eff;background-color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #dad55e;background:#fffa90;color:#777620}.ui-state-checked{border:1px solid #dad55e;background:#fffa90}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#777620}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #f1a899;background:#fddfdf;color:#5f3f3f}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#5f3f3f}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#5f3f3f}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-button:hover .ui-icon,.ui-button:focus .ui-icon{background-image:url("images/ui-icons_555555_256x240.png")}.ui-state-active .ui-icon,.ui-button:active .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-highlight .ui-icon,.ui-button .ui-state-highlight.ui-icon{background-image:url("images/ui-icons_777620_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_cc0000_256x240.png")}.ui-button .ui-icon{background-image:url("images/ui-icons_777777_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:3px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:3px}.ui-widget-overlay{background:#aaa;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{-webkit-box-shadow:0 0 5px #666;box-shadow:0 0 5px #666}
|
i18n/cleantalk-ru_RU.mo
CHANGED
Binary file
|
i18n/cleantalk-ru_RU.po
CHANGED
@@ -1,1536 +1,1536 @@
|
|
1 |
-
msgid ""
|
2 |
-
msgstr ""
|
3 |
-
"Project-Id-Version: Anti-Spam by CleanTalk\n"
|
4 |
-
"POT-Creation-Date: 2019-10-27 16:02+0000\n"
|
5 |
-
"PO-Revision-Date:
|
6 |
-
"Last-Translator: admin <ievlev@cleantalk.org>\n"
|
7 |
-
"Language-Team: Русский\n"
|
8 |
-
"Language: ru_RU\n"
|
9 |
-
"MIME-Version: 1.0\n"
|
10 |
-
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
-
"Content-Transfer-Encoding: 8bit\n"
|
12 |
-
"X-Generator:
|
13 |
-
"X-Poedit-Basepath: ..\n"
|
14 |
-
"X-Poedit-WPHeader: cleantalk.php\n"
|
15 |
-
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 &&
|
16 |
-
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
17 |
-
"X-Poedit-SourceCharset: UTF-8\n"
|
18 |
-
"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;"
|
19 |
-
"esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;"
|
20 |
-
"_nx_noop:3c,1,2;__ngettext_noop:1,2\n"
|
21 |
-
"Report-Msgid-Bugs-To: \n"
|
22 |
-
"X-Loco-Version: 2.3.
|
23 |
-
"X-Poedit-SearchPath-0: .\n"
|
24 |
-
"X-Poedit-SearchPathExcluded-0: *.js\n"
|
25 |
-
|
26 |
-
#: inc/classCleantalkComments.php:32 inc/cleantalk-comments.php:16
|
27 |
-
#: inc/cleantalk-users.php:15
|
28 |
-
msgid "Check for spam"
|
29 |
-
msgstr "Проверить на спам"
|
30 |
-
|
31 |
-
#: inc/classCleantalkComments.php:33 inc/cleantalk-admin.php:350
|
32 |
-
#: inc/cleantalk-comments.php:16
|
33 |
-
msgid "Find spam comments"
|
34 |
-
msgstr "Найти спам в комментариях"
|
35 |
-
|
36 |
-
#: inc/classCleantalkComments.php:66 inc/cleantalk-comments.php:26
|
37 |
-
#: inc/cleantalk-users.php:25
|
38 |
-
msgid "Plugin Settings"
|
39 |
-
msgstr "Настройки плагина"
|
40 |
-
|
41 |
-
#: inc/classCleantalkComments.php:76 inc/cleantalk-comments.php:35
|
42 |
-
#: inc/cleantalk-users.php:34
|
43 |
-
#, php-format
|
44 |
-
msgid ""
|
45 |
-
"Antispam hosting tariff does not allow you to use this feature. To do so, "
|
46 |
-
"you need to enter an Access Key in the %splugin settings%s."
|
47 |
-
msgstr ""
|
48 |
-
"Тариф на антиспам хостинг не позволяет использовать эту функцию. Для этого "
|
49 |
-
"вам необходимо ввести ключ доступа в %sнастройках плагина%s."
|
50 |
-
|
51 |
-
#: inc/classCleantalkComments.php:101 inc/cleantalk-comments.php:60
|
52 |
-
#: inc/cleantalk-users.php:60
|
53 |
-
msgid ""
|
54 |
-
"Ajax error. Process will be automatically restarted in 3 seconds. Status: "
|
55 |
-
msgstr ""
|
56 |
-
"Ajax ошибка. Процесс проверки будет автоматически возобновлен через 3 "
|
57 |
-
"секунды. Статус:"
|
58 |
-
|
59 |
-
#: inc/classCleantalkComments.php:108 inc/cleantalk-comments.php:67
|
60 |
-
msgid ""
|
61 |
-
"Please wait for a while. CleanTalk is deleting spam comments. Comments left: "
|
62 |
-
msgstr "Пожалуйста, подождите. CleanTalk удаляет спам-комментарии. Осталось:"
|
63 |
-
|
64 |
-
#: inc/classCleantalkComments.php:118 inc/cleantalk-comments.php:77
|
65 |
-
#: inc/cleantalk-users.php:77
|
66 |
-
msgid "Start check"
|
67 |
-
msgstr "Начать проверку"
|
68 |
-
|
69 |
-
#: inc/classCleantalkComments.php:119 inc/cleantalk-comments.php:78
|
70 |
-
#: inc/cleantalk-users.php:78
|
71 |
-
msgid "Continue check"
|
72 |
-
msgstr "Продолжить проверку"
|
73 |
-
|
74 |
-
#: inc/classCleantalkComments.php:120 inc/cleantalk-comments.php:79
|
75 |
-
msgid ""
|
76 |
-
"The plugin will check all comments against blacklists database and show you "
|
77 |
-
"senders that have spam activity on other websites."
|
78 |
-
msgstr ""
|
79 |
-
"Пожалуйста, подождите. CleanTalk проверяет комментарии по черным спискам на "
|
80 |
-
"cleantalk.org. Вы сможете удалить комментарии со спамом после окончания "
|
81 |
-
"работы."
|
82 |
-
|
83 |
-
#: inc/classCleantalkComments.php:123 inc/cleantalk-comments.php:82
|
84 |
-
#: inc/cleantalk-users.php:82
|
85 |
-
msgid "Accurate check"
|
86 |
-
msgstr "Точная проверка"
|
87 |
-
|
88 |
-
#: inc/classCleantalkComments.php:125 inc/cleantalk-comments.php:84
|
89 |
-
msgid ""
|
90 |
-
"Allows to use comment's dates to perform more accurate check. Could "
|
91 |
-
"seriously slow down the check."
|
92 |
-
msgstr ""
|
93 |
-
"Позволяет использовать даты комментариев для выполения более тщательной "
|
94 |
-
"проверки. Может серьезно замедлить проверку."
|
95 |
-
|
96 |
-
#: inc/classCleantalkComments.php:128 inc/cleantalk-comments.php:87
|
97 |
-
#: inc/cleantalk-users.php:87
|
98 |
-
msgid "Specify date range"
|
99 |
-
msgstr "Указать диапазон дат"
|
100 |
-
|
101 |
-
#: inc/classCleantalkComments.php:149 inc/cleantalk-comments.php:108
|
102 |
-
msgid ""
|
103 |
-
"Please wait! CleanTalk is checking all approved and pending comments via "
|
104 |
-
"blacklist database at cleantalk.org. You will have option to delete found "
|
105 |
-
"spam comments after plugin finish."
|
106 |
-
msgstr ""
|
107 |
-
"Пожалуйста, подождите! CleanTalk проверяет комментарии по черным спискам на "
|
108 |
-
"cleantalk.org. Вы сможете удалить комментарии со спамом после окончания "
|
109 |
-
"работы."
|
110 |
-
|
111 |
-
#: inc/classCleantalkCommentsListTable.php:24
|
112 |
-
msgid "Author"
|
113 |
-
msgstr "Автор"
|
114 |
-
|
115 |
-
#: inc/classCleantalkCommentsListTable.php:25 inc/cleantalk-comments.php:158
|
116 |
-
msgid "Comment"
|
117 |
-
msgstr "Комментарий"
|
118 |
-
|
119 |
-
#: inc/classCleantalkCommentsListTable.php:26 inc/cleantalk-comments.php:159
|
120 |
-
msgid "In Response To"
|
121 |
-
msgstr "В ответ на"
|
122 |
-
|
123 |
-
#: inc/classCleantalkCommentsListTable.php:33
|
124 |
-
msgid "No spam comments."
|
125 |
-
msgstr "Нет спам комментариев."
|
126 |
-
|
127 |
-
#: inc/cleantalk-admin.php:27
|
128 |
-
#, php-format
|
129 |
-
msgid "Find spam %s"
|
130 |
-
msgstr "Найти спам %s"
|
131 |
-
|
132 |
-
#: inc/cleantalk-admin.php:31
|
133 |
-
msgid "CleanTalk Anti-Spam Log"
|
134 |
-
msgstr "CleanTalk Anti-Spam лог"
|
135 |
-
|
136 |
-
#: inc/cleantalk-admin.php:50
|
137 |
-
#, php-format
|
138 |
-
msgid "%sRefresh%s"
|
139 |
-
msgstr "%sОбновить%s"
|
140 |
-
|
141 |
-
#: inc/cleantalk-admin.php:51
|
142 |
-
#, php-format
|
143 |
-
msgid "%sConfigure%s"
|
144 |
-
msgstr "%sКонфигурация%s"
|
145 |
-
|
146 |
-
#: inc/cleantalk-admin.php:68
|
147 |
-
msgid "7 days anti-spam stats"
|
148 |
-
msgstr "Статистика атак за 7 дней"
|
149 |
-
|
150 |
-
#: inc/cleantalk-admin.php:72
|
151 |
-
msgid "Top 5 spam IPs blocked"
|
152 |
-
msgstr "Топ 5 cамых заблокированных IP"
|
153 |
-
|
154 |
-
#: inc/cleantalk-admin.php:78
|
155 |
-
msgid "Get Access key to activate Anti-Spam protection!"
|
156 |
-
msgstr "Получите ключ доступа для активации спам защиты!"
|
157 |
-
|
158 |
-
#: inc/cleantalk-admin.php:86
|
159 |
-
#, php-format
|
160 |
-
msgid "Something went wrong! Error: \"%s\"."
|
161 |
-
msgstr "Что-то пошло не так: Ошибка: \"%s\"."
|
162 |
-
|
163 |
-
#: inc/cleantalk-admin.php:90
|
164 |
-
msgid "Please, visit your dashboard."
|
165 |
-
msgstr "Пожалуйста, посетите панель управления."
|
166 |
-
|
167 |
-
#: inc/cleantalk-admin.php:104
|
168 |
-
msgid "IP"
|
169 |
-
msgstr "IP"
|
170 |
-
|
171 |
-
#: inc/cleantalk-admin.php:105
|
172 |
-
msgid "Country"
|
173 |
-
msgstr "Страна"
|
174 |
-
|
175 |
-
#: inc/cleantalk-admin.php:106
|
176 |
-
msgid "Block Count"
|
177 |
-
msgstr "Заблкирован раз"
|
178 |
-
|
179 |
-
#: inc/cleantalk-admin.php:134
|
180 |
-
#, php-format
|
181 |
-
msgid ""
|
182 |
-
"This is the count from the %s's cloud and could be different to admin bar "
|
183 |
-
"counters"
|
184 |
-
msgstr ""
|
185 |
-
"Это счетчик из %s облака, эти данные могут отличаться от данных счетчика в "
|
186 |
-
"админ-баре."
|
187 |
-
|
188 |
-
#. %s: Number of spam messages
|
189 |
-
#: inc/cleantalk-admin.php:137
|
190 |
-
#, php-format
|
191 |
-
msgid ""
|
192 |
-
"%s%s%s has blocked %s spam for all time. The statistics are automatically "
|
193 |
-
"updated every 24 hours."
|
194 |
-
msgstr ""
|
195 |
-
"%s%s%s заблокировал %s спама за все время. Статистика автоматически "
|
196 |
-
"обновляется каждый 24 часа."
|
197 |
-
|
198 |
-
#: inc/cleantalk-admin.php:148 inc/cleantalk-settings.php:544
|
199 |
-
#, php-format
|
200 |
-
msgid "Do you like CleanTalk? %sPost your feedback here%s."
|
201 |
-
msgstr "Вам понравился CleanTalk?%s Напишите свой отзыв здесь%s."
|
202 |
-
|
203 |
-
#: inc/cleantalk-admin.php:234
|
204 |
-
msgid "Translate"
|
205 |
-
msgstr "Перевести"
|
206 |
-
|
207 |
-
#: inc/cleantalk-admin.php:237
|
208 |
-
msgid "Start here"
|
209 |
-
msgstr "Начать здесь"
|
210 |
-
|
211 |
-
#: inc/cleantalk-admin.php:238
|
212 |
-
msgid "FAQ"
|
213 |
-
msgstr "FAQ"
|
214 |
-
|
215 |
-
#: inc/cleantalk-admin.php:239 inc/cleantalk-admin.php:644
|
216 |
-
#: inc/cleantalk-settings.php:575
|
217 |
-
msgid "Support"
|
218 |
-
msgstr "Поддержка"
|
219 |
-
|
220 |
-
#: inc/cleantalk-admin.php:306 inc/cleantalk-settings.php:523
|
221 |
-
msgid "Hosting AntiSpam"
|
222 |
-
msgstr "Hosting AntiSpam"
|
223 |
-
|
224 |
-
#: inc/cleantalk-admin.php:333
|
225 |
-
msgid "Failed from timeout. Going to check comments again."
|
226 |
-
msgstr "Ошибка по таймауту. Попробовать еще раз?"
|
227 |
-
|
228 |
-
#: inc/cleantalk-admin.php:334
|
229 |
-
msgid "Added"
|
230 |
-
msgstr "Добавлены"
|
231 |
-
|
232 |
-
#: inc/cleantalk-admin.php:335 inc/cleantalk-admin.php:386
|
233 |
-
msgid "Deleted"
|
234 |
-
msgstr "Удалено"
|
235 |
-
|
236 |
-
#: inc/cleantalk-admin.php:336
|
237 |
-
msgid "comments"
|
238 |
-
msgstr "комментарии"
|
239 |
-
|
240 |
-
#: inc/cleantalk-admin.php:337
|
241 |
-
msgid "Delete all spam comments?"
|
242 |
-
msgstr "Удалить ВСЕ найденные спам-комментарии?"
|
243 |
-
|
244 |
-
#: inc/cleantalk-admin.php:338
|
245 |
-
msgid "Delete checked comments?"
|
246 |
-
msgstr "Удалить отмеченые спам-комментарии?"
|
247 |
-
|
248 |
-
#: inc/cleantalk-admin.php:339
|
249 |
-
#, php-format
|
250 |
-
msgid ""
|
251 |
-
"Total comments %s. Checked %s. Found %s spam comments. %s bad comments "
|
252 |
-
"(without IP or email)."
|
253 |
-
msgstr ""
|
254 |
-
"Всего комментариев %s. Проверено %s. Найдено %s спам комментариев. %s плохих "
|
255 |
-
"комментариев (без IP и Email'а)."
|
256 |
-
|
257 |
-
#: inc/cleantalk-admin.php:340 inc/cleantalk-admin.php:393
|
258 |
-
#: inc/cleantalk-users.php:531
|
259 |
-
msgid "Please do backup of WordPress database before delete any accounts!"
|
260 |
-
msgstr ""
|
261 |
-
"Пожалуйста, сделайте резервную копию базы данных Wordpress перед удалением "
|
262 |
-
"аккаунтов."
|
263 |
-
|
264 |
-
#: inc/cleantalk-admin.php:351
|
265 |
-
msgid "The sender has been whitelisted."
|
266 |
-
msgstr "Отправитель был добавлен в белый список."
|
267 |
-
|
268 |
-
#: inc/cleantalk-admin.php:352
|
269 |
-
msgid "The sender has been blacklisted."
|
270 |
-
msgstr "Отправитель был добавлен в черный список."
|
271 |
-
|
272 |
-
#: inc/cleantalk-admin.php:353 inc/cleantalk-public.php:3321
|
273 |
-
#, php-format
|
274 |
-
msgid "Feedback has been sent to %sCleanTalk Dashboard%s."
|
275 |
-
msgstr "Обратная связь отправлена в панель управления %sCleanTalk%s."
|
276 |
-
|
277 |
-
#: inc/cleantalk-admin.php:383
|
278 |
-
msgid "Failed from timeout. Going to check users again."
|
279 |
-
msgstr "Ошибка по таймауту. Попробовать еще раз?"
|
280 |
-
|
281 |
-
#: inc/cleantalk-admin.php:384
|
282 |
-
msgid "Failed from timeout. Going to run a new attempt to delete spam users."
|
283 |
-
msgstr "Ошибка по таймауту. Попробовать еще раз?"
|
284 |
-
|
285 |
-
#: inc/cleantalk-admin.php:385
|
286 |
-
msgid "Inserted"
|
287 |
-
msgstr "Добавлено"
|
288 |
-
|
289 |
-
#: inc/cleantalk-admin.php:387
|
290 |
-
msgid "users."
|
291 |
-
msgstr "пользователей."
|
292 |
-
|
293 |
-
#: inc/cleantalk-admin.php:388
|
294 |
-
msgid "Delete all spam users?"
|
295 |
-
msgstr "Удалить ВСЕХ найденых спам-пользователей?"
|
296 |
-
|
297 |
-
#: inc/cleantalk-admin.php:389
|
298 |
-
msgid "Delete checked users?"
|
299 |
-
msgstr "Удалить отмеченых спам-пользователей?"
|
300 |
-
|
301 |
-
#: inc/cleantalk-admin.php:392
|
302 |
-
#, php-format
|
303 |
-
msgid ""
|
304 |
-
"Total users %s, checked %s, found %s spam users and %s bad users (without IP "
|
305 |
-
"or email)"
|
306 |
-
msgstr ""
|
307 |
-
"Всего пользователей %s, проверено %s, найдено %s спам пользователей и %s "
|
308 |
-
"плохих пользователей (без IP и Email'а)"
|
309 |
-
|
310 |
-
#: inc/cleantalk-admin.php:401
|
311 |
-
msgid "Find spam-users"
|
312 |
-
msgstr "Найти спам-пользователей"
|
313 |
-
|
314 |
-
#: inc/cleantalk-admin.php:449
|
315 |
-
#, php-format
|
316 |
-
msgid "Unable to get Access key automatically: %s"
|
317 |
-
msgstr "Невозможно получить ключ автоматически: %s"
|
318 |
-
|
319 |
-
#: inc/cleantalk-admin.php:450
|
320 |
-
msgid "Get the Access key"
|
321 |
-
msgstr "Получить ключ вручную"
|
322 |
-
|
323 |
-
#: inc/cleantalk-admin.php:459
|
324 |
-
#, php-format
|
325 |
-
msgid "Please enter Access Key in %s settings to enable anti spam protection!"
|
326 |
-
msgstr ""
|
327 |
-
"Пожалуйста, укажите Ключ доступа в настройках %s для активации защиты от "
|
328 |
-
"спама!"
|
329 |
-
|
330 |
-
#: inc/cleantalk-admin.php:469
|
331 |
-
#, php-format
|
332 |
-
msgid "%s trial period ends, please upgrade to %s!"
|
333 |
-
msgstr ""
|
334 |
-
"%s заканчивается ознакомительный срок пользования антиспам плагином "
|
335 |
-
"CleanTalk, пожалуйста продлите подключение %s."
|
336 |
-
|
337 |
-
#: inc/cleantalk-admin.php:481
|
338 |
-
msgid "RENEW ANTI-SPAM"
|
339 |
-
msgstr "ПРОДЛИТЬ АНТИСПАМ"
|
340 |
-
|
341 |
-
#: inc/cleantalk-admin.php:482
|
342 |
-
msgid "next year"
|
343 |
-
msgstr "следующий год"
|
344 |
-
|
345 |
-
#: inc/cleantalk-admin.php:486
|
346 |
-
#, php-format
|
347 |
-
msgid "Please renew your anti-spam license for %s."
|
348 |
-
msgstr "Пожалуйста, продлите свою антиспам-лицензию на %s."
|
349 |
-
|
350 |
-
#: inc/cleantalk-admin.php:511
|
351 |
-
msgid "Make it right!"
|
352 |
-
msgstr "Сделай все правильно!"
|
353 |
-
|
354 |
-
#: inc/cleantalk-admin.php:513
|
355 |
-
#, php-format
|
356 |
-
msgid "%sGet premium%s"
|
357 |
-
msgstr "%sПолучить премиум%s"
|
358 |
-
|
359 |
-
#: inc/cleantalk-admin.php:552
|
360 |
-
msgid "Since"
|
361 |
-
msgstr "От"
|
362 |
-
|
363 |
-
#: inc/cleantalk-admin.php:558
|
364 |
-
msgid ""
|
365 |
-
"All / Allowed / Blocked submissions. The number of submissions is being "
|
366 |
-
"counted since CleanTalk plugin installation."
|
367 |
-
msgstr "Все / Разрешенные / Запрещенные запросы с момента установки CleanTalk."
|
368 |
-
|
369 |
-
#: inc/cleantalk-admin.php:558
|
370 |
-
msgid "All"
|
371 |
-
msgstr "Все"
|
372 |
-
|
373 |
-
#: inc/cleantalk-admin.php:566
|
374 |
-
msgid ""
|
375 |
-
"Allowed / Blocked submissions. The number of submissions for past 24 hours. "
|
376 |
-
msgstr "Разрешенные / Запрещенные запросы за последние 24 часа."
|
377 |
-
|
378 |
-
#: inc/cleantalk-admin.php:566
|
379 |
-
msgid "Day"
|
380 |
-
msgstr "За день"
|
381 |
-
|
382 |
-
#: inc/cleantalk-admin.php:572
|
383 |
-
msgid ""
|
384 |
-
"All / Blocked events. Access attempts regitred by SpamFireWall counted since "
|
385 |
-
"the last plugin activation."
|
386 |
-
msgstr ""
|
387 |
-
"Все / Запрещенные попытки просмотра сайта. Отображет попытки с момента "
|
388 |
-
"последней активации плагина."
|
389 |
-
|
390 |
-
#: inc/cleantalk-admin.php:582
|
391 |
-
msgid ""
|
392 |
-
"Allowed / Blocked submissions. The number of submissions is being counted "
|
393 |
-
"since "
|
394 |
-
msgstr "Разрешенные / Запрещенные попытки."
|
395 |
-
|
396 |
-
#: inc/cleantalk-admin.php:593
|
397 |
-
msgid "dashboard"
|
398 |
-
msgstr "панель управления"
|
399 |
-
|
400 |
-
#: inc/cleantalk-admin.php:600
|
401 |
-
msgid "Settings"
|
402 |
-
msgstr "Настройки"
|
403 |
-
|
404 |
-
#: inc/cleantalk-admin.php:608
|
405 |
-
msgid "Bulk spam comments removal tool."
|
406 |
-
msgstr "Инструмент массового удаления пользователей."
|
407 |
-
|
408 |
-
#: inc/cleantalk-admin.php:608 inc/cleantalk-settings.php:882
|
409 |
-
msgid "Check comments for spam"
|
410 |
-
msgstr "Проверка комментариев"
|
411 |
-
|
412 |
-
#: inc/cleantalk-admin.php:618 inc/cleantalk-settings.php:885
|
413 |
-
msgid "Check users for spam"
|
414 |
-
msgstr "Проверить пользователей на спам"
|
415 |
-
|
416 |
-
#: inc/cleantalk-admin.php:627
|
417 |
-
msgid "Reset first counter"
|
418 |
-
msgstr "Сбросить первый счетчик"
|
419 |
-
|
420 |
-
#: inc/cleantalk-admin.php:635
|
421 |
-
msgid "Reset all counters"
|
422 |
-
msgstr "Сбросить все счетчики"
|
423 |
-
|
424 |
-
#: inc/cleantalk-comments.php:221 inc/cleantalk-users.php:220
|
425 |
-
msgid "Approve"
|
426 |
-
msgstr "Одобрить"
|
427 |
-
|
428 |
-
#: inc/cleantalk-comments.php:223 inc/cleantalk-users.php:222
|
429 |
-
msgid "Delete"
|
430 |
-
msgstr "Удалить"
|
431 |
-
|
432 |
-
#: inc/cleantalk-comments.php:265
|
433 |
-
msgid "Delete all comments from the list"
|
434 |
-
msgstr "Удалить все сообщения в списке"
|
435 |
-
|
436 |
-
#: inc/cleantalk-comments.php:266 inc/cleantalk-users.php:268
|
437 |
-
msgid "Delete selected"
|
438 |
-
msgstr "Удалить отмеченные"
|
439 |
-
|
440 |
-
#: inc/cleantalk-comments.php:270
|
441 |
-
msgid "Insert comments"
|
442 |
-
msgstr "Добавить комментарии"
|
443 |
-
|
444 |
-
#: inc/cleantalk-comments.php:271
|
445 |
-
msgid "Delete comments"
|
446 |
-
msgstr "Удалить тестовые спам-комментарии?"
|
447 |
-
|
448 |
-
#: inc/cleantalk-comments.php:276 inc/cleantalk-users.php:279
|
449 |
-
msgid ""
|
450 |
-
"There is some differencies between blacklists database and our API "
|
451 |
-
"mechanisms. Blacklists shows all history of spam activity, but our API (that "
|
452 |
-
"used in spam checking) used another parameters, too: last day of activity, "
|
453 |
-
"number of spam attacks during last days etc. This mechanisms help us to "
|
454 |
-
"reduce number of false positivitie. So, there is nothing strange, if some "
|
455 |
-
"emails/IPs will be not found by this checking."
|
456 |
-
msgstr ""
|
457 |
-
"Есть некоторые отличия между проверкой через базу данных черных списков и "
|
458 |
-
"через механизм API. В черных списках отображается вся история о спам-"
|
459 |
-
"активности, но наш API используетс другие механизмы: последний день "
|
460 |
-
"активности, количество спам-атак в течение последних дней и т. д. Эти "
|
461 |
-
"механизмы помогают нам сократить количество ложных обнаружений. Поэтому, нет "
|
462 |
-
"ничего странного, если некоторые письма/IP не будут обнаружены при этой "
|
463 |
-
"проверке."
|
464 |
-
|
465 |
-
#: inc/cleantalk-comments.php:281 inc/cleantalk-users.php:284
|
466 |
-
msgid "Stop deletion"
|
467 |
-
msgstr "Остановить удаление"
|
468 |
-
|
469 |
-
#: inc/cleantalk-comments.php:495
|
470 |
-
#, php-format
|
471 |
-
msgid ""
|
472 |
-
"Total comments %s. Checked %s. Last check %s. Found %s spam comments. %s bad "
|
473 |
-
"comments (without IP or email)."
|
474 |
-
msgstr ""
|
475 |
-
"Всего комментариев %s. Проверено %s. Последняя проверка %s. Найдено %s спам-"
|
476 |
-
"комментариев. %s плохие комментарии (без IP или электронной почты)."
|
477 |
-
|
478 |
-
#: inc/cleantalk-comments.php:499
|
479 |
-
msgid "Please do backup of WordPress database before delete any comments!"
|
480 |
-
msgstr ""
|
481 |
-
"Пожалуйста, сделайте резервную копию базы данных Wordpress перед удалением "
|
482 |
-
"комментариев."
|
483 |
-
|
484 |
-
#: inc/cleantalk-public.php:500 inc/cleantalk-public.php:641
|
485 |
-
#: inc/cleantalk-public.php:743 inc/cleantalk-public.php:2363
|
486 |
-
#: inc/cleantalk-public.php:3052
|
487 |
-
msgid "Spam protection by CleanTalk"
|
488 |
-
msgstr "Спам защита CleanTalk"
|
489 |
-
|
490 |
-
#: inc/cleantalk-public.php:1233 inc/cleantalk-public.php:1361
|
491 |
-
#: inc/cleantalk-public.php:1379
|
492 |
-
msgid "Spam protection"
|
493 |
-
msgstr "Защита от спама"
|
494 |
-
|
495 |
-
#: inc/cleantalk-public.php:1332
|
496 |
-
msgid "CleanTalk AntiSpam: This message is possible spam."
|
497 |
-
msgstr "CleanTalk AntiSpam: Это сообщение, возможно, является спамом."
|
498 |
-
|
499 |
-
#: inc/cleantalk-public.php:1333
|
500 |
-
msgid "You could check it in CleanTalk's anti-spam database:"
|
501 |
-
msgstr "Вы можете проверить это по антиспам-базе CleanTalk:"
|
502 |
-
|
503 |
-
#: inc/cleantalk-public.php:1569
|
504 |
-
#, php-format
|
505 |
-
msgid "Registration approved by %s."
|
506 |
-
msgstr "Регистрация одобрена %s."
|
507 |
-
|
508 |
-
#: inc/cleantalk-public.php:1849
|
509 |
-
msgid "CleanTalk AntiSpam: This registration is spam."
|
510 |
-
msgstr "CleanTalk AntiSpam: Эта регистрация - спам."
|
511 |
-
|
512 |
-
#: inc/cleantalk-public.php:1850 inc/cleantalk-public.php:2219
|
513 |
-
#: inc/cleantalk-public.php:2387 inc/cleantalk-public.php:2542
|
514 |
-
msgid "CleanTalk's anti-spam database:"
|
515 |
-
msgstr "Антиспам-база CleanTalk:"
|
516 |
-
|
517 |
-
#: inc/cleantalk-public.php:2218 inc/cleantalk-public.php:2386
|
518 |
-
#: inc/cleantalk-public.php:2541
|
519 |
-
msgid "CleanTalk AntiSpam: This message is spam."
|
520 |
-
msgstr "CleanTalk AntiSpam: Это сообщение - спам."
|
521 |
-
|
522 |
-
#: inc/cleantalk-public.php:2666
|
523 |
-
msgid "Comment approved. Anti-spam by CleanTalk."
|
524 |
-
msgstr "Комментарий одобрен. Антиспам от CleanTalk."
|
525 |
-
|
526 |
-
#: inc/cleantalk-public.php:3219
|
527 |
-
msgid "Attention, please!"
|
528 |
-
msgstr "Внимание!"
|
529 |
-
|
530 |
-
#: inc/cleantalk-public.php:3220
|
531 |
-
#, php-format
|
532 |
-
msgid "\"%s\" plugin error on your site \"%s\":"
|
533 |
-
msgstr "\"%s\" ошибка плагина на сайте \"%s\":"
|
534 |
-
|
535 |
-
#: inc/cleantalk-public.php:3222
|
536 |
-
#, php-format
|
537 |
-
msgid "[%s] \"%s\" error!"
|
538 |
-
msgstr "[%s] \"%s\" ошибка!"
|
539 |
-
|
540 |
-
#: inc/cleantalk-public.php:3271
|
541 |
-
msgid ""
|
542 |
-
"By using this form you agree with the storage and processing of your data by "
|
543 |
-
"using the Privacy Policy on this website."
|
544 |
-
msgstr ""
|
545 |
-
"Используя эту форму, вы соглашаетесь с хранением и обработкой ваших данных, "
|
546 |
-
"в соответствии с Политикой конфиденциальности на этом сайте."
|
547 |
-
|
548 |
-
#: inc/cleantalk-public.php:3319
|
549 |
-
msgid "Error occured while sending feedback."
|
550 |
-
msgstr "Случилась ошибка при отправке обратной связи."
|
551 |
-
|
552 |
-
#: inc/cleantalk-public.php:3320
|
553 |
-
msgid "Feedback wasn't sent. There is no associated request."
|
554 |
-
msgstr "Обратная связь не была отправлена. Нет связанного запроса."
|
555 |
-
|
556 |
-
#: inc/cleantalk-public.php:3364
|
557 |
-
msgid "Sender info"
|
558 |
-
msgstr "Информация об отправителе"
|
559 |
-
|
560 |
-
#: inc/cleantalk-public.php:3367
|
561 |
-
msgid "by"
|
562 |
-
msgstr " от"
|
563 |
-
|
564 |
-
#: inc/cleantalk-public.php:3378
|
565 |
-
msgid "No email"
|
566 |
-
msgstr "Email отсутствует"
|
567 |
-
|
568 |
-
#: inc/cleantalk-public.php:3388
|
569 |
-
msgid "No IP"
|
570 |
-
msgstr "IP отсутствует"
|
571 |
-
|
572 |
-
#: inc/cleantalk-public.php:3391
|
573 |
-
msgid "Mark as spam"
|
574 |
-
msgstr "Отметить как спам"
|
575 |
-
|
576 |
-
#: inc/cleantalk-public.php:3392
|
577 |
-
msgid "Unspam"
|
578 |
-
msgstr "Вернуть из спама"
|
579 |
-
|
580 |
-
#: inc/cleantalk-public.php:3394
|
581 |
-
msgid "Marked as spam."
|
582 |
-
msgstr "Отмечено как спам."
|
583 |
-
|
584 |
-
#: inc/cleantalk-public.php:3395
|
585 |
-
msgid "Marked as not spam."
|
586 |
-
msgstr "Отмечено как не спам."
|
587 |
-
|
588 |
-
#: inc/cleantalk-settings.php:96
|
589 |
-
msgid "SpamFireWall"
|
590 |
-
msgstr "SpamFireWall"
|
591 |
-
|
592 |
-
#: inc/cleantalk-settings.php:97
|
593 |
-
msgid ""
|
594 |
-
"This option allows to filter spam bots before they access website. Also "
|
595 |
-
"reduces CPU usage on hosting server and accelerates pages load time."
|
596 |
-
msgstr ""
|
597 |
-
"Эта опция позволяет фильтровать спам-ботов прежде, чем они войдут на сайт. "
|
598 |
-
"Также уменьшает загрузку процессора на хостинге и ускоряет время загрузки "
|
599 |
-
"страниц."
|
600 |
-
|
601 |
-
#: inc/cleantalk-settings.php:104
|
602 |
-
msgid "Forms to protect"
|
603 |
-
msgstr "Защищаемые формы"
|
604 |
-
|
605 |
-
#: inc/cleantalk-settings.php:110
|
606 |
-
msgid "Advanced settings"
|
607 |
-
msgstr "Продвинутые настройки"
|
608 |
-
|
609 |
-
#: inc/cleantalk-settings.php:117
|
610 |
-
msgid "Registration Forms"
|
611 |
-
msgstr "Формы регистрации"
|
612 |
-
|
613 |
-
#: inc/cleantalk-settings.php:118
|
614 |
-
msgid "WordPress, BuddyPress, bbPress, S2Member, WooCommerce."
|
615 |
-
msgstr "WordPress, BuddyPress, bbPress, S2Member, WooCommerce."
|
616 |
-
|
617 |
-
#: inc/cleantalk-settings.php:121
|
618 |
-
msgid "Comments form"
|
619 |
-
msgstr "Комментарии в блоге"
|
620 |
-
|
621 |
-
#: inc/cleantalk-settings.php:122
|
622 |
-
msgid "WordPress, JetPack, WooCommerce."
|
623 |
-
msgstr "WordPress, JetPack, WooCommerce."
|
624 |
-
|
625 |
-
#: inc/cleantalk-settings.php:125 inc/cleantalk-settings.php:761
|
626 |
-
msgid "Contact forms"
|
627 |
-
msgstr "Контактные формы"
|
628 |
-
|
629 |
-
#: inc/cleantalk-settings.php:126
|
630 |
-
msgid ""
|
631 |
-
"Contact Form 7, Formidable forms, JetPack, Fast Secure Contact Form, "
|
632 |
-
"WordPress Landing Pages, Gravity Forms."
|
633 |
-
msgstr ""
|
634 |
-
"Contact Form 7, Formidable Forms, Jetpack, Fast Secure Contact Form, "
|
635 |
-
"WordPress Landing Pages, Gravity Forms."
|
636 |
-
|
637 |
-
#: inc/cleantalk-settings.php:129 inc/cleantalk-settings.php:762
|
638 |
-
msgid "Custom contact forms"
|
639 |
-
msgstr "Произвольные контактные формы"
|
640 |
-
|
641 |
-
#: inc/cleantalk-settings.php:130
|
642 |
-
msgid "Anti spam test for any WordPress themes or contacts forms."
|
643 |
-
msgstr "Защита от спама любой контактной формы или темы."
|
644 |
-
|
645 |
-
#: inc/cleantalk-settings.php:133 inc/cleantalk-settings.php:775
|
646 |
-
msgid "WooCommerce checkout form"
|
647 |
-
msgstr "Форма заказа WooCommerce"
|
648 |
-
|
649 |
-
#: inc/cleantalk-settings.php:134
|
650 |
-
msgid "Anti spam test for WooCommerce checkout form."
|
651 |
-
msgstr "Спам тест для формы заказа WooCommerce"
|
652 |
-
|
653 |
-
#: inc/cleantalk-settings.php:138
|
654 |
-
msgid "Spam test for registration during checkout"
|
655 |
-
msgstr "Регистрация на странице заказа"
|
656 |
-
|
657 |
-
#: inc/cleantalk-settings.php:139
|
658 |
-
msgid ""
|
659 |
-
"Enable anti spam test for registration process which during woocommerce's "
|
660 |
-
"checkout."
|
661 |
-
msgstr ""
|
662 |
-
"Включить защиту от спама в регистрациях, которые проходят во время "
|
663 |
-
"оформления заказа."
|
664 |
-
|
665 |
-
#: inc/cleantalk-settings.php:145
|
666 |
-
msgid "Test default Wordpress search form for spam"
|
667 |
-
msgstr "Стандартная форма поиска Wordpress"
|
668 |
-
|
669 |
-
#: inc/cleantalk-settings.php:146
|
670 |
-
msgid "Spam protection for Search form."
|
671 |
-
msgstr "Защита от спама для Форм поиска."
|
672 |
-
|
673 |
-
#: inc/cleantalk-settings.php:148
|
674 |
-
#, php-format
|
675 |
-
msgid "Read more about %sspam protection for Search form%s on our blog."
|
676 |
-
msgstr "Прочтите о %sспам-защите для Форм поиска%s на нашем блоге."
|
677 |
-
|
678 |
-
#: inc/cleantalk-settings.php:156
|
679 |
-
msgid "Protect external forms"
|
680 |
-
msgstr "Защита внешних форм"
|
681 |
-
|
682 |
-
#: inc/cleantalk-settings.php:157
|
683 |
-
msgid ""
|
684 |
-
"Turn this option on to protect forms on your WordPress that send data to "
|
685 |
-
"third-part servers (like MailChimp)."
|
686 |
-
msgstr ""
|
687 |
-
"Включите эту опцию, что бы защитить формы, которые отсылают данные на "
|
688 |
-
"сторонние ресурсы, например MailChimp."
|
689 |
-
|
690 |
-
#: inc/cleantalk-settings.php:161
|
691 |
-
msgid "Capture buffer"
|
692 |
-
msgstr "Захват буфера"
|
693 |
-
|
694 |
-
#: inc/cleantalk-settings.php:162
|
695 |
-
msgid ""
|
696 |
-
"This setting gives you more sophisticated and strengthened protection for "
|
697 |
-
"external forms. But it could break plugins which use a buffer like Ninja "
|
698 |
-
"Forms."
|
699 |
-
msgstr ""
|
700 |
-
"Этот параметр дает вам более сложную и усиленную защиту для внешних форм. Но "
|
701 |
-
"это может сломать плагины, которые используют буфер, такой как Ninja Forms."
|
702 |
-
|
703 |
-
#: inc/cleantalk-settings.php:167
|
704 |
-
msgid "Protect internal forms"
|
705 |
-
msgstr "Защита внутренних форм"
|
706 |
-
|
707 |
-
#: inc/cleantalk-settings.php:168
|
708 |
-
msgid ""
|
709 |
-
"This option will enable protection for custom (hand-made) AJAX forms with "
|
710 |
-
"PHP scripts handlers on your WordPress."
|
711 |
-
msgstr "Эта опция обеспечит защиту созданных вручную форм, использующих AJAX."
|
712 |
-
|
713 |
-
#: inc/cleantalk-settings.php:175
|
714 |
-
msgid "Comments and Messages"
|
715 |
-
msgstr "Комментарии и сообщения"
|
716 |
-
|
717 |
-
#: inc/cleantalk-settings.php:178
|
718 |
-
msgid "BuddyPress Private Messages"
|
719 |
-
msgstr "Личные сообщения buddyPress"
|
720 |
-
|
721 |
-
#: inc/cleantalk-settings.php:179
|
722 |
-
msgid "Check buddyPress private messages."
|
723 |
-
msgstr "Проверять личные сообщения buddyPress "
|
724 |
-
|
725 |
-
#: inc/cleantalk-settings.php:182
|
726 |
-
msgid "Don't check trusted user's comments"
|
727 |
-
msgstr "Не проверять доверенных пользователей"
|
728 |
-
|
729 |
-
#: inc/cleantalk-settings.php:183
|
730 |
-
#, php-format
|
731 |
-
msgid "Don't check comments for users with above %d comments."
|
732 |
-
msgstr "Не проверять комментарии пользователей с более %d комментариями."
|
733 |
-
|
734 |
-
#: inc/cleantalk-settings.php:186
|
735 |
-
msgid "Automatically delete spam comments"
|
736 |
-
msgstr "Автоматически удалять спам-комментарии"
|
737 |
-
|
738 |
-
#: inc/cleantalk-settings.php:187
|
739 |
-
#, php-format
|
740 |
-
msgid "Delete spam comments older than %d days."
|
741 |
-
msgstr "Удалять комментарии старше %d дней."
|
742 |
-
|
743 |
-
#: inc/cleantalk-settings.php:190
|
744 |
-
msgid "Remove links from approved comments"
|
745 |
-
msgstr "Удалять ссылки из одобреных комментариев"
|
746 |
-
|
747 |
-
#: inc/cleantalk-settings.php:191
|
748 |
-
msgid "Remove links from approved comments. Replace it with \"[Link deleted]\""
|
749 |
-
msgstr "Удалять ссылки из одобренных сообщений"
|
750 |
-
|
751 |
-
#: inc/cleantalk-settings.php:194
|
752 |
-
msgid "Show links to check Emails, IPs for spam."
|
753 |
-
msgstr "Отобразить ссылки для проверки Email'ов и IP адресов."
|
754 |
-
|
755 |
-
#: inc/cleantalk-settings.php:195
|
756 |
-
msgid ""
|
757 |
-
"Shows little icon near IP addresses and Emails allowing you to check it via "
|
758 |
-
"CleanTalk's database. Also allowing you to manage comments from the public "
|
759 |
-
"post's page."
|
760 |
-
msgstr ""
|
761 |
-
"Показывает маленькую иконку около IP и Email'a позволяющую проверить их "
|
762 |
-
"через базу данных. Так же позволяет управлять комментариями с публичной "
|
763 |
-
"страницы записи."
|
764 |
-
|
765 |
-
#: inc/cleantalk-settings.php:203
|
766 |
-
msgid "Data Processing"
|
767 |
-
msgstr "Обработка данных"
|
768 |
-
|
769 |
-
#: inc/cleantalk-settings.php:206
|
770 |
-
msgid "Protect logged in Users"
|
771 |
-
msgstr "Проверять залогиненых пользователей"
|
772 |
-
|
773 |
-
#: inc/cleantalk-settings.php:207
|
774 |
-
msgid ""
|
775 |
-
"Turn this option on to check for spam any submissions (comments, contact "
|
776 |
-
"forms and etc.) from registered Users."
|
777 |
-
msgstr "Включите, чтобы проверять зарегистрированных пользователей."
|
778 |
-
|
779 |
-
#: inc/cleantalk-settings.php:210
|
780 |
-
msgid "Use AJAX for JavaScript check"
|
781 |
-
msgstr "Использовать AJAX для проверки JavaScript"
|
782 |
-
|
783 |
-
#: inc/cleantalk-settings.php:211
|
784 |
-
msgid ""
|
785 |
-
"Options helps protect WordPress against spam with any caching plugins. Turn "
|
786 |
-
"this option on to avoid issues with caching plugins."
|
787 |
-
msgstr "Данная настройка помогает избежать конфликтов с кеширующими плагинами."
|
788 |
-
|
789 |
-
#: inc/cleantalk-settings.php:214
|
790 |
-
msgid "Use static keys for JS check."
|
791 |
-
msgstr "Использовать постоянный (статичный) ключ для проверки JS."
|
792 |
-
|
793 |
-
#: inc/cleantalk-settings.php:215
|
794 |
-
msgid ""
|
795 |
-
"Could help if you have cache for AJAX requests and you are dealing with "
|
796 |
-
"false positives. Slightly decreases protection quality. Auto - Static key "
|
797 |
-
"will be used if caching plugin is spotted."
|
798 |
-
msgstr ""
|
799 |
-
"Может помочь, если у вас кешируются запросы AJAX и вы имеете дело с ложными "
|
800 |
-
"срабатываниями. Немного снижает качество защиты. Статический ключ будет "
|
801 |
-
"использоваться автоматически, если обнаружен плагин кэширования."
|
802 |
-
|
803 |
-
#: inc/cleantalk-settings.php:223
|
804 |
-
msgid "Check all post data"
|
805 |
-
msgstr "Проверять все POST-данные"
|
806 |
-
|
807 |
-
#: inc/cleantalk-settings.php:224
|
808 |
-
msgid ""
|
809 |
-
"Check all POST submissions from website visitors. Enable this option if you "
|
810 |
-
"have spam misses on website."
|
811 |
-
msgstr ""
|
812 |
-
"Проверять все POST-данные, отправляемые посетителями. Активируйте, если у "
|
813 |
-
"вас есть спам на сайте."
|
814 |
-
|
815 |
-
#: inc/cleantalk-settings.php:226
|
816 |
-
msgid " Or you don`t have records about missed spam here:"
|
817 |
-
msgstr " Или у вас нет записей о спаме здесь:"
|
818 |
-
|
819 |
-
#: inc/cleantalk-settings.php:226
|
820 |
-
msgid "CleanTalk dashboard"
|
821 |
-
msgstr "панель управления CleanTalk"
|
822 |
-
|
823 |
-
#: inc/cleantalk-settings.php:229
|
824 |
-
msgid "СAUTION! Option can catch POST requests in WordPress backend"
|
825 |
-
msgstr ""
|
826 |
-
"ВНИМАНИЕ! Опция может перехватывать все POST запросы в панели управления "
|
827 |
-
"Wordpress. Отключите, если возникают проблемы/ошибки."
|
828 |
-
|
829 |
-
#: inc/cleantalk-settings.php:232
|
830 |
-
msgid "Set cookies"
|
831 |
-
msgstr "Устанавливать куки"
|
832 |
-
|
833 |
-
#: inc/cleantalk-settings.php:233
|
834 |
-
msgid ""
|
835 |
-
"Turn this option off to deny plugin generates any cookies on website front-"
|
836 |
-
"end. This option is helpful if you use Varnish. But most of contact forms "
|
837 |
-
"will not be protected if the option is turned off! <b>Warning: We strongly "
|
838 |
-
"recommend you to enable this otherwise it could cause false positives spam "
|
839 |
-
"detection.</b>"
|
840 |
-
msgstr ""
|
841 |
-
"Отключите эту опцию, чтобы запретить плагину создавать любые файлы cookies "
|
842 |
-
"на веб-сайте. Эта опция полезна, если вы используете Varnish. Но большинство "
|
843 |
-
"контактных форм не будут защищены, если опция отключена! <b>ВНИМАНИЕ! Мы "
|
844 |
-
"настоятельно рекомендуем не отключать опцию, иначе это может привести к "
|
845 |
-
"ложному обнаружению спама.</b>"
|
846 |
-
|
847 |
-
#: inc/cleantalk-settings.php:237
|
848 |
-
msgid "Use alternative mechanism for cookies"
|
849 |
-
msgstr "Использовать альтернативный механизм хранения файлов cookie"
|
850 |
-
|
851 |
-
#: inc/cleantalk-settings.php:238 inc/cleantalk-settings.php:360
|
852 |
-
msgid "Doesn't use cookie or PHP sessions. Collect data for all types of bots."
|
853 |
-
msgstr ""
|
854 |
-
"Не использовать файлы cookies или PHP-сессии. Собирать данные обо всех типах "
|
855 |
-
"ботов."
|
856 |
-
|
857 |
-
#: inc/cleantalk-settings.php:243
|
858 |
-
msgid "Use SSL"
|
859 |
-
msgstr "Использовать SSL"
|
860 |
-
|
861 |
-
#: inc/cleantalk-settings.php:244
|
862 |
-
msgid "Turn this option on to use encrypted (SSL) connection with servers."
|
863 |
-
msgstr ""
|
864 |
-
"Включите эту опцию для использования защищенного (SSL) соединения между "
|
865 |
-
"серверами."
|
866 |
-
|
867 |
-
#: inc/cleantalk-settings.php:247
|
868 |
-
msgid "Use Wordpress HTTP API"
|
869 |
-
msgstr "Использовать стандартное Wordpress HTTP API"
|
870 |
-
|
871 |
-
#: inc/cleantalk-settings.php:248
|
872 |
-
msgid ""
|
873 |
-
"Alternative way to connect the Cloud. Use this if you have connection "
|
874 |
-
"problems."
|
875 |
-
msgstr ""
|
876 |
-
"Альтернативный способ подключения к CleanTalk Cloud. Используйте, если вы "
|
877 |
-
"имеете проблемы с подключением."
|
878 |
-
|
879 |
-
#: inc/cleantalk-settings.php:255
|
880 |
-
msgid "Exclusions"
|
881 |
-
msgstr "Исключения"
|
882 |
-
|
883 |
-
#: inc/cleantalk-settings.php:259
|
884 |
-
msgid "URL exclusions"
|
885 |
-
msgstr "Исключения по URL"
|
886 |
-
|
887 |
-
#: inc/cleantalk-settings.php:260
|
888 |
-
msgid "You could type here URL you want to exclude. Use comma as separator."
|
889 |
-
msgstr ""
|
890 |
-
"Вы можете ввести здесь URL, который вы хотите исключить. Используйте запятую "
|
891 |
-
"в качестве разделителя."
|
892 |
-
|
893 |
-
#: inc/cleantalk-settings.php:264
|
894 |
-
msgid "Use Regular Expression in URL Exclusions"
|
895 |
-
msgstr "Использовать регулярное выражение в исключении по URL"
|
896 |
-
|
897 |
-
#: inc/cleantalk-settings.php:268
|
898 |
-
msgid "Field name exclusions"
|
899 |
-
msgstr "Исключение по имени поля"
|
900 |
-
|
901 |
-
#: inc/cleantalk-settings.php:269
|
902 |
-
msgid ""
|
903 |
-
"You could type here fields names you want to exclude. Use comma as separator."
|
904 |
-
msgstr ""
|
905 |
-
"Вы можете ввести здесь имена полей, которые вы хотите исключить. Используйте "
|
906 |
-
"запятую в качестве разделителя."
|
907 |
-
|
908 |
-
#: inc/cleantalk-settings.php:273
|
909 |
-
msgid "Use Regular Expression in Field Exclusions"
|
910 |
-
msgstr "Использовать регулярное выражение в исключении по полю формы."
|
911 |
-
|
912 |
-
#: inc/cleantalk-settings.php:280
|
913 |
-
msgid "Roles which bypass spam test. Hold CTRL to select multiple roles."
|
914 |
-
msgstr ""
|
915 |
-
"Роли, которые обходят проверку на спам. Удерживайте CTRL, чтобы выбрать "
|
916 |
-
"несколько ролей."
|
917 |
-
|
918 |
-
#: inc/cleantalk-settings.php:287
|
919 |
-
msgid "Admin bar"
|
920 |
-
msgstr "Админ-бар"
|
921 |
-
|
922 |
-
#: inc/cleantalk-settings.php:294
|
923 |
-
msgid "Show statistics in admin bar"
|
924 |
-
msgstr "Показывать статистику в админбаре"
|
925 |
-
|
926 |
-
#: inc/cleantalk-settings.php:295
|
927 |
-
msgid ""
|
928 |
-
"Show/hide icon in top level menu in WordPress backend. The number of "
|
929 |
-
"submissions is being counted for past 24 hours."
|
930 |
-
msgstr ""
|
931 |
-
"Показать/скрыть иконку
|
932 |
-
"
|
933 |
-
|
934 |
-
#: inc/cleantalk-settings.php:299
|
935 |
-
msgid "Show All-time counter"
|
936 |
-
msgstr "Счетчик за все время"
|
937 |
-
|
938 |
-
#: inc/cleantalk-settings.php:300
|
939 |
-
msgid ""
|
940 |
-
"Display all-time requests counter in the admin bar. Counter displays number "
|
941 |
-
"of requests since plugin installation."
|
942 |
-
msgstr ""
|
943 |
-
"Отображать счетчик запросов за все время в админ-баре. Счетчик показывает "
|
944 |
-
"записи с момента установки."
|
945 |
-
|
946 |
-
#: inc/cleantalk-settings.php:305
|
947 |
-
msgid "Show 24 hours counter"
|
948 |
-
msgstr "24-х часовой счетчик"
|
949 |
-
|
950 |
-
#: inc/cleantalk-settings.php:306
|
951 |
-
msgid ""
|
952 |
-
"Display daily requests counter in the admin bar. Counter displays number of "
|
953 |
-
"requests of the past 24 hours."
|
954 |
-
msgstr ""
|
955 |
-
"Отображать 24-х часовой счетчик запросов в админ-баре. Отображает запросы за "
|
956 |
-
"последние 24 часа."
|
957 |
-
|
958 |
-
#: inc/cleantalk-settings.php:311
|
959 |
-
msgid "SpamFireWall counter"
|
960 |
-
msgstr "Счетчик SpamFireWall"
|
961 |
-
|
962 |
-
#: inc/cleantalk-settings.php:312
|
963 |
-
msgid ""
|
964 |
-
"Display SpamFireWall requests in the admin bar. Counter displays number of "
|
965 |
-
"requests since plugin installation."
|
966 |
-
msgstr ""
|
967 |
-
"Отображать счетчик SpamFireWall запросов в админ-баре. Отображает количество "
|
968 |
-
"запросов с момента установки плагина."
|
969 |
-
|
970 |
-
#: inc/cleantalk-settings.php:325
|
971 |
-
msgid "Collect details about browsers"
|
972 |
-
msgstr "Собирать данные браузера"
|
973 |
-
|
974 |
-
#: inc/cleantalk-settings.php:326
|
975 |
-
msgid ""
|
976 |
-
"Checking this box you allow plugin store information about screen size and "
|
977 |
-
"browser plugins of website visitors. The option in a beta state."
|
978 |
-
msgstr ""
|
979 |
-
"Включая эту опцию, Вы разрешаете плагину хранить информацию о размере экрана "
|
980 |
-
"и плагинах браузера посетителей. Бета опция."
|
981 |
-
|
982 |
-
#: inc/cleantalk-settings.php:330
|
983 |
-
msgid "Send connection reports"
|
984 |
-
msgstr "Отправлять отчеты о соединении"
|
985 |
-
|
986 |
-
#: inc/cleantalk-settings.php:331
|
987 |
-
msgid ""
|
988 |
-
"Checking this box you allow plugin to send the information about your "
|
989 |
-
"connection. The option in a beta state."
|
990 |
-
msgstr ""
|
991 |
-
"Ставя эту галочку вы разрешаете плагину отрпавлять информацию о интернет-"
|
992 |
-
"соединении. Опция находится на бета-тестировании."
|
993 |
-
|
994 |
-
#: inc/cleantalk-settings.php:335
|
995 |
-
msgid "Async JavaScript loading"
|
996 |
-
msgstr "Асинхронная загрузка JavaScript"
|
997 |
-
|
998 |
-
#: inc/cleantalk-settings.php:336
|
999 |
-
msgid ""
|
1000 |
-
"Use async loading for scripts. Warning: This could reduce filtration quality."
|
1001 |
-
msgstr ""
|
1002 |
-
"Использовать асинхронную загрузку JS-скриптов. ВНИМАНИЕ! это может понизить "
|
1003 |
-
"качество спам-фильтра."
|
1004 |
-
|
1005 |
-
#: inc/cleantalk-settings.php:340
|
1006 |
-
msgid "Allow to add GDPR notice via shortcode"
|
1007 |
-
msgstr "Разрешить добавление GDPR-уведомления с помощью шордкода"
|
1008 |
-
|
1009 |
-
#: inc/cleantalk-settings.php:341
|
1010 |
-
msgid ""
|
1011 |
-
" Adds small checkbox under your website form. To add it you should use the "
|
1012 |
-
"shortcode on the form's page: [cleantalk_gdpr_form id=\"FORM_ID\"]"
|
1013 |
-
msgstr ""
|
1014 |
-
"Добавить не большой чекбокс в форму. Для добавления уведомления вставьте на "
|
1015 |
-
"странице с формой этот шорткод: [cleantalk_gdpr_form id=\"FORM_ID\"]"
|
1016 |
-
|
1017 |
-
#: inc/cleantalk-settings.php:346
|
1018 |
-
msgid "GDPR text notice"
|
1019 |
-
msgstr "Текст GDPR-уведомления"
|
1020 |
-
|
1021 |
-
#: inc/cleantalk-settings.php:347
|
1022 |
-
msgid "This text will be added as a description to the GDPR checkbox."
|
1023 |
-
msgstr "Этот текст будет добавлен к чекбоксу как описание."
|
1024 |
-
|
1025 |
-
#: inc/cleantalk-settings.php:353
|
1026 |
-
msgid "Store visited URLs"
|
1027 |
-
msgstr "Хранить посещенные URL-ы"
|
1028 |
-
|
1029 |
-
#: inc/cleantalk-settings.php:354
|
1030 |
-
msgid ""
|
1031 |
-
"Plugin stores last 10 visited URLs (HTTP REFFERERS) before visitor submits "
|
1032 |
-
"form on the site. You can see stored visited URLS for each visitor in your "
|
1033 |
-
"Dashboard. Turn the option on to improve Anti-Spam protection."
|
1034 |
-
msgstr ""
|
1035 |
-
"Плагин хранит последние 10 посещенных URL (HTTP REFFERERS) до того, как "
|
1036 |
-
"посетитель отправит форму на сайт. Вы можете видеть сохраненные посещенные "
|
1037 |
-
"URL-адреса для каждого посетителя на своей панели инструментов. Включите эту "
|
1038 |
-
"опцию, чтобы улучшить защиту от спама."
|
1039 |
-
|
1040 |
-
#: inc/cleantalk-settings.php:359
|
1041 |
-
msgid "Use cookies less sessions"
|
1042 |
-
msgstr "Использовать сеансы без cookies"
|
1043 |
-
|
1044 |
-
#: inc/cleantalk-settings.php:366
|
1045 |
-
msgid ""
|
1046 |
-
"Notify users with selected roles about new approved comments. Hold CTRL to "
|
1047 |
-
"select multiple roles."
|
1048 |
-
msgstr ""
|
1049 |
-
"Уведомлять пользователей с выбранными ролями о новых одобренных "
|
1050 |
-
"
|
1051 |
-
|
1052 |
-
#: inc/cleantalk-settings.php:367
|
1053 |
-
#, php-format
|
1054 |
-
msgid "If enabled, overrides similar Wordpress %sdiscussion settings%s."
|
1055 |
-
msgstr "Если включено, переопределяет аналогичные %sнастройки Wordpress%s."
|
1056 |
-
|
1057 |
-
#: inc/cleantalk-settings.php:380
|
1058 |
-
msgid "Complete deactivation"
|
1059 |
-
msgstr "Полная деактивация"
|
1060 |
-
|
1061 |
-
#: inc/cleantalk-settings.php:381
|
1062 |
-
msgid "Leave no trace in the system after deactivation."
|
1063 |
-
msgstr "Не оставлять следов в системе после деактивации."
|
1064 |
-
|
1065 |
-
#: inc/cleantalk-settings.php:398
|
1066 |
-
msgid "Enable White Label Mode"
|
1067 |
-
msgstr "Активировать White Label Mode."
|
1068 |
-
|
1069 |
-
#: inc/cleantalk-settings.php:399
|
1070 |
-
#, php-format
|
1071 |
-
msgid "Learn more information %shere%s."
|
1072 |
-
msgstr "Узнать
|
1073 |
-
|
1074 |
-
#: inc/cleantalk-settings.php:404
|
1075 |
-
msgid "Hoster API Key"
|
1076 |
-
msgstr "Хостинг API ключ"
|
1077 |
-
|
1078 |
-
#: inc/cleantalk-settings.php:405
|
1079 |
-
#, php-format
|
1080 |
-
msgid "You can get it in %sCleantalk's Control Panel%s"
|
1081 |
-
msgstr "Вы можете получить
|
1082 |
-
|
1083 |
-
#: inc/cleantalk-settings.php:413
|
1084 |
-
msgid "Plugin name"
|
1085 |
-
msgstr "Наименование плагина"
|
1086 |
-
|
1087 |
-
#: inc/cleantalk-settings.php:414
|
1088 |
-
#, php-format
|
1089 |
-
msgid "Specify plugin name. Leave empty for deafult %sAntispam by Cleantalk%s"
|
1090 |
-
msgstr ""
|
1091 |
-
"Укажите название плагина. Оставьте пустым для названия по умолчанию "
|
1092 |
-
"%sAntispam by Cleantalk%s"
|
1093 |
-
|
1094 |
-
#: inc/cleantalk-settings.php:423
|
1095 |
-
msgid "Allow users to use other key"
|
1096 |
-
msgstr "Позволяет пользователям использовать другой ключ."
|
1097 |
-
|
1098 |
-
#: inc/cleantalk-settings.php:424
|
1099 |
-
msgid ""
|
1100 |
-
"Allow users to use different Access key in their plugin settings on child "
|
1101 |
-
"blogs. They could use different CleanTalk account."
|
1102 |
-
msgstr ""
|
1103 |
-
"Позволяет пользователям использовать разные Ключи доступа в настройках "
|
1104 |
-
"плагина на их дочерних блогах. Они могут использовать разные аккаунты "
|
1105 |
-
"CleanTalk."
|
1106 |
-
|
1107 |
-
#: inc/cleantalk-settings.php:427
|
1108 |
-
msgid ""
|
1109 |
-
"Constant <b>CLEANTALK_ACCESS_KEY</b> is set. All websites will use API key "
|
1110 |
-
"from this constant. Look into wp-config.php"
|
1111 |
-
msgstr ""
|
1112 |
-
"Константа <b>CLEANTALK_ACCESS_KEY</b> установлена. Все дочерние сайты будут "
|
1113 |
-
"использовать ключ доступа из этой контсанты. Смотри в wp-config.php"
|
1114 |
-
|
1115 |
-
#: inc/cleantalk-settings.php:533
|
1116 |
-
msgid "CleanTalk's tech support:"
|
1117 |
-
msgstr "Техническия поддержка CleanTalk: "
|
1118 |
-
|
1119 |
-
#: inc/cleantalk-settings.php:539
|
1120 |
-
msgid "Plugin Homepage at"
|
1121 |
-
msgstr "Домашняя страница плагина на"
|
1122 |
-
|
1123 |
-
#: inc/cleantalk-settings.php:540
|
1124 |
-
msgid "GDPR compliance"
|
1125 |
-
msgstr "Соответствие GDPR"
|
1126 |
-
|
1127 |
-
#: inc/cleantalk-settings.php:541
|
1128 |
-
msgid "Use s@cleantalk.org to test plugin in any WordPress form."
|
1129 |
-
msgstr ""
|
1130 |
-
"Используйте s@cleantalk.org чтобы проверить плагин в любой форме в WordPress."
|
1131 |
-
|
1132 |
-
#: inc/cleantalk-settings.php:542
|
1133 |
-
msgid "CleanTalk is registered Trademark. All rights reserved."
|
1134 |
-
msgstr "CleanTalk - это зарегистрированая торговая марка. Все права защищены."
|
1135 |
-
|
1136 |
-
#: inc/cleantalk-settings.php:559
|
1137 |
-
#, php-format
|
1138 |
-
msgid "%s has blocked <b>%s</b> spam."
|
1139 |
-
msgstr "%s заблокировал <b>%s</b> спама."
|
1140 |
-
|
1141 |
-
#: inc/cleantalk-settings.php:571
|
1142 |
-
msgid "Click here to get anti-spam statistics"
|
1143 |
-
msgstr "Щелкните, чтобы получить статистику"
|
1144 |
-
|
1145 |
-
#: inc/cleantalk-settings.php:614
|
1146 |
-
#, php-format
|
1147 |
-
msgid "Please, enter the %splugin settings%s in main site dashboard."
|
1148 |
-
msgstr ""
|
1149 |
-
"Пожалуйста, перейдите в %sнастройки плагина%s в панели управления на главном "
|
1150 |
-
"сайте."
|
1151 |
-
|
1152 |
-
#: inc/cleantalk-settings.php:633
|
1153 |
-
msgid "Error occured while API key validating. Error: "
|
1154 |
-
msgstr "Произошла ошибка при проверке ключа API. Ошибка: "
|
1155 |
-
|
1156 |
-
#: inc/cleantalk-settings.php:634
|
1157 |
-
msgid "Error occured while automatically gettings access key. Error: "
|
1158 |
-
msgstr "Произошла ошибка при автоматическом получении ключа доступа. Ошибка: "
|
1159 |
-
|
1160 |
-
#: inc/cleantalk-settings.php:635
|
1161 |
-
msgid "Error occured while sending sending SpamFireWall logs. Error: "
|
1162 |
-
msgstr "Произошла ошибка при отправке логов Spam FireWall. Ошибка: "
|
1163 |
-
|
1164 |
-
#: inc/cleantalk-settings.php:636
|
1165 |
-
msgid "Error occured while updating SpamFireWall local base. Error: "
|
1166 |
-
msgstr "Произошла ошибка при обновлении локальной базы Spam FireWall. Ошибка: "
|
1167 |
-
|
1168 |
-
#: inc/cleantalk-settings.php:637
|
1169 |
-
msgid "Error occured while checking account status. Error: "
|
1170 |
-
msgstr "Произошла ошибка при проверке статуса аккаунта. Ошибка: "
|
1171 |
-
|
1172 |
-
#: inc/cleantalk-settings.php:638
|
1173 |
-
msgid "Error occured while excuting API call. Error: "
|
1174 |
-
msgstr "Произошла ошибка при выполнении вызова API. Ошибка: "
|
1175 |
-
|
1176 |
-
#: inc/cleantalk-settings.php:646
|
1177 |
-
msgid "Unknown error. Error: "
|
1178 |
-
msgstr "Неизвестная ошибка. Ошибка: "
|
1179 |
-
|
1180 |
-
#: inc/cleantalk-settings.php:677
|
1181 |
-
msgid "Errors:"
|
1182 |
-
msgstr "Ошибки: "
|
1183 |
-
|
1184 |
-
#: inc/cleantalk-settings.php:682
|
1185 |
-
#, php-format
|
1186 |
-
msgid "You can get support any time here: %s."
|
1187 |
-
msgstr "Вы всегда можете получить техническую поддержку здесь: %s."
|
1188 |
-
|
1189 |
-
#: inc/cleantalk-settings.php:757
|
1190 |
-
msgid "Protection is active"
|
1191 |
-
msgstr "Защита включена"
|
1192 |
-
|
1193 |
-
#: inc/cleantalk-settings.php:759
|
1194 |
-
msgid "Registration forms"
|
1195 |
-
msgstr "Регистрации пользователей"
|
1196 |
-
|
1197 |
-
#: inc/cleantalk-settings.php:760
|
1198 |
-
msgid "Comments forms"
|
1199 |
-
msgstr "Формы комментариев"
|
1200 |
-
|
1201 |
-
#: inc/cleantalk-settings.php:765
|
1202 |
-
msgid "Validate email for existence"
|
1203 |
-
msgstr "Проверка e-mail на существование"
|
1204 |
-
|
1205 |
-
#: inc/cleantalk-settings.php:769
|
1206 |
-
msgid "Auto update"
|
1207 |
-
msgstr "Автообновлние"
|
1208 |
-
|
1209 |
-
#: inc/cleantalk-settings.php:793
|
1210 |
-
msgid "<h3>Key is provided by Super Admin.</h3>"
|
1211 |
-
msgstr "<h3>Ключ доступа предоставлен Супер Администратором.</h3>"
|
1212 |
-
|
1213 |
-
#: inc/cleantalk-settings.php:797
|
1214 |
-
msgid "Access key"
|
1215 |
-
msgstr "Ключ доступа"
|
1216 |
-
|
1217 |
-
#: inc/cleantalk-settings.php:812
|
1218 |
-
msgid "Enter the key"
|
1219 |
-
msgstr "Введите ключ"
|
1220 |
-
|
1221 |
-
#: inc/cleantalk-settings.php:818
|
1222 |
-
#, php-format
|
1223 |
-
msgid "Account at cleantalk.org is %s."
|
1224 |
-
msgstr "Аккаунт на cleantalk.org %s."
|
1225 |
-
|
1226 |
-
#: inc/cleantalk-settings.php:827
|
1227 |
-
msgid "Show the access key"
|
1228 |
-
msgstr "Показать ключ доступа"
|
1229 |
-
|
1230 |
-
#: inc/cleantalk-settings.php:838
|
1231 |
-
msgid "Get Access Key Automatically"
|
1232 |
-
msgstr "Получить ключ доступа автоматически"
|
1233 |
-
|
1234 |
-
#: inc/cleantalk-settings.php:846
|
1235 |
-
#, php-format
|
1236 |
-
msgid ""
|
1237 |
-
"Admin e-mail (%s) will be used for registration, if you want to use other "
|
1238 |
-
"email please %sGet Access Key Manually%s."
|
1239 |
-
msgstr ""
|
1240 |
-
"E-mail администратора (%s) будет использован для регистрации. Если вы хотите "
|
1241 |
-
"использовать другой e-mail, пожлуйста, %sполучите ключ доступа
|
1242 |
-
"
|
1243 |
-
|
1244 |
-
#: inc/cleantalk-settings.php:862
|
1245 |
-
#, php-format
|
1246 |
-
msgid "I accept %sLicense Agreement%s."
|
1247 |
-
msgstr "Я принимаю %sЛицензионно Соглашение%s."
|
1248 |
-
|
1249 |
-
#: inc/cleantalk-settings.php:888
|
1250 |
-
msgid "Statistics & Reports"
|
1251 |
-
msgstr "Статистика и отчеты"
|
1252 |
-
|
1253 |
-
#: inc/cleantalk-settings.php:904
|
1254 |
-
#, php-format
|
1255 |
-
msgid "Last spam check request to %s server was at %s."
|
1256 |
-
msgstr "Последний запрос проверки спама на сервере %s был произведен %s."
|
1257 |
-
|
1258 |
-
#: inc/cleantalk-settings.php:905 inc/cleantalk-settings.php:906
|
1259 |
-
#: inc/cleantalk-settings.php:915 inc/cleantalk-settings.php:922
|
1260 |
-
#: inc/cleantalk-settings.php:923 inc/cleantalk-settings.php:931
|
1261 |
-
#: inc/cleantalk-settings.php:932 inc/cleantalk-settings.php:939
|
1262 |
-
#: inc/cleantalk-settings.php:940
|
1263 |
-
msgid "unknown"
|
1264 |
-
msgstr "неизвестно"
|
1265 |
-
|
1266 |
-
#: inc/cleantalk-settings.php:912
|
1267 |
-
#, php-format
|
1268 |
-
msgid "Average request time for past 7 days: %s seconds."
|
1269 |
-
msgstr "Среднее время запроса за последние 7 дней: %s секунд."
|
1270 |
-
|
1271 |
-
#: inc/cleantalk-settings.php:921
|
1272 |
-
#, php-format
|
1273 |
-
msgid "Last time SpamFireWall was triggered for %s IP at %s"
|
1274 |
-
msgstr "В последний раз SpamFireWall сработал на %s IP %s"
|
1275 |
-
|
1276 |
-
#: inc/cleantalk-settings.php:930
|
1277 |
-
#, php-format
|
1278 |
-
msgid "SpamFireWall was updated %s. Now contains %s entries."
|
1279 |
-
msgstr "SpamFireWall был обновлен %s. Содержится %s записей."
|
1280 |
-
|
1281 |
-
#: inc/cleantalk-settings.php:938
|
1282 |
-
#, php-format
|
1283 |
-
msgid "SpamFireWall sent %s events at %s."
|
1284 |
-
msgstr "SpamFireWall отправил %s событий %s."
|
1285 |
-
|
1286 |
-
#: inc/cleantalk-settings.php:948
|
1287 |
-
msgid "There are no failed connections to server."
|
1288 |
-
msgstr "Проблем с подключением к серверу нет."
|
1289 |
-
|
1290 |
-
#: inc/cleantalk-settings.php:975
|
1291 |
-
msgid "Send report"
|
1292 |
-
msgstr "Отправить отчет"
|
1293 |
-
|
1294 |
-
#: inc/cleantalk-settings.php:979
|
1295 |
-
msgid ""
|
1296 |
-
"Please, enable \"Send connection reports\" setting to be able to send reports"
|
1297 |
-
msgstr ""
|
1298 |
-
"Пожалуйста, активируйте опцию \"Отправлять отчеты о соединении\" для "
|
1299 |
-
"возможности отправлять отчеты."
|
1300 |
-
|
1301 |
-
#: inc/cleantalk-settings.php:1327
|
1302 |
-
msgid "Testing is failed. Please check the Access key."
|
1303 |
-
msgstr "Ошибка тестирования. Пожалуйста, проверьте ключ доступа."
|
1304 |
-
|
1305 |
-
#: inc/cleantalk-settings.php:1442
|
1306 |
-
msgid "XSS check"
|
1307 |
-
msgstr "Проверка XSS уязвимости"
|
1308 |
-
|
1309 |
-
#: inc/cleantalk-settings.php:1443
|
1310 |
-
msgid ""
|
1311 |
-
"Cross-Site Scripting (XSS) — prevents malicious code to be executed/sent to "
|
1312 |
-
"any user. As a result malicious scripts can not get access to the cookie "
|
1313 |
-
"files, session tokens and any other confidential information browsers use "
|
1314 |
-
"and store. Such scripts can even overwrite content of HTML pages. CleanTalk "
|
1315 |
-
"WAF monitors for patterns of these parameters and block them."
|
1316 |
-
msgstr ""
|
1317 |
-
"Межсайтовый скриптинг (XSS) - предотвращает выполнение / отправку "
|
1318 |
-
"вредоносного кода любому пользователю. В результате вредоносные сценарии не "
|
1319 |
-
"могут получить доступ к файлам cookie, токенам сеансов и любой другой "
|
1320 |
-
"конфиденциальной информации, которую используют и хранят браузеры. Такие "
|
1321 |
-
"сценарии могут даже перезаписывать содержимое HTML-страниц. CleanTalk WAF "
|
1322 |
-
"отслеживает шаблоны этих параметров и блокирует их."
|
1323 |
-
|
1324 |
-
#: inc/cleantalk-settings.php:1446
|
1325 |
-
msgid "SQL-injection check"
|
1326 |
-
msgstr "Проверка на наличие SQL-injection"
|
1327 |
-
|
1328 |
-
#: inc/cleantalk-settings.php:1447
|
1329 |
-
msgid ""
|
1330 |
-
"SQL Injection — one of the most popular ways to hack websites and programs "
|
1331 |
-
"that work with databases. It is based on injection of a custom SQL code into "
|
1332 |
-
"database queries. It could transmit data through GET, POST requests or "
|
1333 |
-
"cookie files in an SQL code. If a website is vulnerable and execute such "
|
1334 |
-
"injections then it would allow attackers to apply changes to the website's "
|
1335 |
-
"MySQL database."
|
1336 |
-
msgstr ""
|
1337 |
-
"SQL-инъекция - один из самых популярных способов взлома сайтов и программ, "
|
1338 |
-
"работающих с базами данных. Он основан на внедрении пользовательского кода "
|
1339 |
-
"SQL в запросы к базе данных. Он может передавать данные через запросы GET, "
|
1340 |
-
"POST или файлы cookie в коде SQL. Если веб-сайт уязвим и выполняет такие "
|
1341 |
-
"инъекции, это позволит злоумышленникам применить изменения к базе данных "
|
1342 |
-
"MySQL веб-сайта."
|
1343 |
-
|
1344 |
-
#: inc/cleantalk-settings.php:1450
|
1345 |
-
msgid "Check uploaded files"
|
1346 |
-
msgstr "Проверка загруженных файлов"
|
1347 |
-
|
1348 |
-
#: inc/cleantalk-settings.php:1451
|
1349 |
-
msgid ""
|
1350 |
-
"The option checks each uploaded file to a website for malicious code. If "
|
1351 |
-
"it's possible for visitors to upload files to a website, for instance a work "
|
1352 |
-
"resume, then attackers could abuse it and upload an infected file to execute "
|
1353 |
-
"it later and get access to your website."
|
1354 |
-
msgstr ""
|
1355 |
-
"Опция проверяет каждый загруженный файл на веб-сайт на наличие вредоносного "
|
1356 |
-
"кода. Если посетители могут загружать на сайт файлы, например, резюме, то "
|
1357 |
-
"злоумышленники могут злоупотреблять им и загружать зараженный файл, чтобы "
|
1358 |
-
"выполнить его позднее и получить доступ к вашему сайту."
|
1359 |
-
|
1360 |
-
#: inc/cleantalk-users.php:15
|
1361 |
-
msgid "Find spam users"
|
1362 |
-
msgstr "Найти спам-пользователей"
|
1363 |
-
|
1364 |
-
#: inc/cleantalk-users.php:67
|
1365 |
-
msgid "Please wait for a while. CleanTalk is deleting spam users. Users left: "
|
1366 |
-
msgstr "Пожалуйста, подождите. CleanTalk удаляет спам-пользователей. Осталось:"
|
1367 |
-
|
1368 |
-
#: inc/cleantalk-users.php:79
|
1369 |
-
msgid ""
|
1370 |
-
"The plugin will check all users against blacklists database and show you "
|
1371 |
-
"senders that have spam activity on other websites."
|
1372 |
-
msgstr ""
|
1373 |
-
"Плагин проверит всех пользователей по базе данных чёрных списков и покажет "
|
1374 |
-
"отправителей, которые занимаются спамом на других сайтах."
|
1375 |
-
|
1376 |
-
#: inc/cleantalk-users.php:84
|
1377 |
-
msgid ""
|
1378 |
-
"Allows to use user's dates to perform more accurate check. Could seriously "
|
1379 |
-
"slow down the check."
|
1380 |
-
msgstr ""
|
1381 |
-
"Позволяет использовать даты пользователей для выполения более тщательной "
|
1382 |
-
"проверки. Может серьезно замедлить проверку."
|
1383 |
-
|
1384 |
-
#: inc/cleantalk-users.php:108
|
1385 |
-
msgid ""
|
1386 |
-
"Please wait for a while. CleanTalk is checking all users via blacklist "
|
1387 |
-
"database at cleantalk.org. You will have option to delete found spam users "
|
1388 |
-
"after plugin finish."
|
1389 |
-
msgstr ""
|
1390 |
-
"Пожалуйста, подождите. ClenTalk проверяет всех пользователей по чёрным "
|
1391 |
-
"спискам на cleantalk.org. У вас появится возможность удалить обнаруженных "
|
1392 |
-
"спам-пользователей как только плагин закончит."
|
1393 |
-
|
1394 |
-
#: inc/cleantalk-users.php:267
|
1395 |
-
msgid "Delete all users from list"
|
1396 |
-
msgstr "Удалить всех пользователей в списке"
|
1397 |
-
|
1398 |
-
#: inc/cleantalk-users.php:269
|
1399 |
-
msgid "Download results in CSV"
|
1400 |
-
msgstr "Загрузить результаты (CSV)"
|
1401 |
-
|
1402 |
-
#: inc/cleantalk-users.php:273
|
1403 |
-
msgid "Insert accounts"
|
1404 |
-
msgstr "Добавить аккаунты"
|
1405 |
-
|
1406 |
-
#: inc/cleantalk-users.php:274
|
1407 |
-
msgid "Delete accounts"
|
1408 |
-
msgstr "Удалить тестовые спам-аккаунты"
|
1409 |
-
|
1410 |
-
#: inc/cleantalk-users.php:527
|
1411 |
-
#, php-format
|
1412 |
-
msgid ""
|
1413 |
-
"Total users %s, checked %s, last check %s, found %s spam users and %s bad "
|
1414 |
-
"users (without IP or email)"
|
1415 |
-
msgstr ""
|
1416 |
-
"Всего пользователей %s, проверено %s, последняя проверка %s, найдено %s спам-"
|
1417 |
-
"пользователей и %s плохих пользователей (без IP или электронной почты)"
|
1418 |
-
|
1419 |
-
#: inc/cleantalk-widget.php:22
|
1420 |
-
msgid "CleanTalk Widget"
|
1421 |
-
msgstr "Виджет CleanTalk"
|
1422 |
-
|
1423 |
-
#: inc/cleantalk-widget.php:25
|
1424 |
-
msgid "CleanTalk widget"
|
1425 |
-
msgstr "виджет CleanTalk"
|
1426 |
-
|
1427 |
-
#: inc/cleantalk-widget.php:72
|
1428 |
-
msgid "CleanTalk's main page"
|
1429 |
-
msgstr "Главная страница CleanTalk"
|
1430 |
-
|
1431 |
-
#: inc/cleantalk-widget.php:73
|
1432 |
-
msgid "spam"
|
1433 |
-
msgstr "спама"
|
1434 |
-
|
1435 |
-
#: inc/cleantalk-widget.php:73
|
1436 |
-
msgid "blocked by"
|
1437 |
-
msgstr "заблокировано"
|
1438 |
-
|
1439 |
-
#: inc/cleantalk-widget.php:85
|
1440 |
-
msgid "Spam blocked"
|
1441 |
-
msgstr "Спама заблокировано"
|
1442 |
-
|
1443 |
-
#: inc/cleantalk-widget.php:90
|
1444 |
-
msgid "Title:"
|
1445 |
-
msgstr "Заголовок:"
|
1446 |
-
|
1447 |
-
#: inc/cleantalk-widget.php:95
|
1448 |
-
msgid "Style:"
|
1449 |
-
msgstr "Стиль:"
|
1450 |
-
|
1451 |
-
#: inc/cleantalk-widget.php:97
|
1452 |
-
msgid "CleanTalk's Style"
|
1453 |
-
msgstr "Фирменный стиль CleanTalk"
|
1454 |
-
|
1455 |
-
#: inc/cleantalk-widget.php:98
|
1456 |
-
msgid "Light"
|
1457 |
-
msgstr "Лёгкий"
|
1458 |
-
|
1459 |
-
#: inc/cleantalk-widget.php:99
|
1460 |
-
msgid "Extremely Light"
|
1461 |
-
msgstr "Очень легкий"
|
1462 |
-
|
1463 |
-
#: inc/cleantalk-widget.php:100
|
1464 |
-
msgid "Dark"
|
1465 |
-
msgstr "Темный"
|
1466 |
-
|
1467 |
-
#: inc/cleantalk-widget.php:105
|
1468 |
-
msgid "Referal link ID:"
|
1469 |
-
msgstr "ID партнера:"
|
1470 |
-
|
1471 |
-
#: lib/CleantalkSFW.php:71
|
1472 |
-
msgid "SpamFireWall is activated for your IP "
|
1473 |
-
msgstr "Спам Фаервол заблокировал ваш IP"
|
1474 |
-
|
1475 |
-
#: lib/CleantalkSFW.php:72
|
1476 |
-
msgid ""
|
1477 |
-
"To continue working with web site, please make sure that you have enabled "
|
1478 |
-
"JavaScript."
|
1479 |
-
msgstr ""
|
1480 |
-
"Что бы продолжить работу с сайтом, пожалуйста, убедитесь что у вас включен "
|
1481 |
-
"JavaScript."
|
1482 |
-
|
1483 |
-
#: lib/CleantalkSFW.php:73
|
1484 |
-
msgid "Please click below to pass protection,"
|
1485 |
-
msgstr "Пожалуйста, нажмите, чтобы пройти защиту,"
|
1486 |
-
|
1487 |
-
#: lib/CleantalkSFW.php:74
|
1488 |
-
#, php-format
|
1489 |
-
msgid ""
|
1490 |
-
"Or you will be automatically redirected to the requested page after %d "
|
1491 |
-
"seconds."
|
1492 |
-
msgstr ""
|
1493 |
-
"Или вы будете автоматически переадресованы на запрашиваемую страницу через "
|
1494 |
-
"%d секунд."
|
1495 |
-
|
1496 |
-
#: lib/CleantalkSFW.php:75
|
1497 |
-
msgid "Antispam by CleanTalk"
|
1498 |
-
msgstr "Антиспам от CleanTalk"
|
1499 |
-
|
1500 |
-
#: lib/CleantalkSFW.php:76
|
1501 |
-
msgid "This is the testing page for SpamFireWall"
|
1502 |
-
msgstr "Это тестовая страница SpamFireWall"
|
1503 |
-
|
1504 |
-
#: templates/translate_banner.php:6
|
1505 |
-
msgid "Help others use the plugin in your language."
|
1506 |
-
msgstr "Помогите другим пользователям использовать плагин на их языке."
|
1507 |
-
|
1508 |
-
#: templates/translate_banner.php:7
|
1509 |
-
msgid ""
|
1510 |
-
"We ask you to help with the translation of the plugin in your language. "
|
1511 |
-
"Please take a few minutes to make the plugin more comfortable."
|
1512 |
-
msgstr ""
|
1513 |
-
"Мы просим Вас помочь с переводом плагина на ваш язык. Пожалуйста, потратьте "
|
1514 |
-
"несколько минут, чтобы сделать плагин более удобным."
|
1515 |
-
|
1516 |
-
#: templates/translate_banner.php:10
|
1517 |
-
msgid "TRANSLATE"
|
1518 |
-
msgstr "ПЕРЕВЕСТИ"
|
1519 |
-
|
1520 |
-
#. Description of the plugin/theme
|
1521 |
-
msgid ""
|
1522 |
-
"Max power, all-in-one, no Captcha, premium anti-spam plugin. No comment "
|
1523 |
-
"
|
1524 |
-
msgstr ""
|
1525 |
-
"Максимальная эффективность, проверка всех форм, без Сaptcha, премиум "
|
1526 |
-
"антиспам плагин. Нет спаму в комментариях, нет спаму в регистрациях, нету "
|
1527 |
-
"спаму в контактных формах, защита любых форм в WordPress."
|
1528 |
-
|
1529 |
-
#. Plugin URI of the plugin/theme
|
1530 |
-
#. Author URI of the plugin/theme
|
1531 |
-
msgid "http://cleantalk.org"
|
1532 |
-
msgstr "http://cleantalk.org"
|
1533 |
-
|
1534 |
-
#. Author of the plugin/theme
|
1535 |
-
msgid "СleanTalk <welcome@cleantalk.org>"
|
1536 |
-
msgstr "СleanTalk <welcome@cleantalk.org>"
|
1 |
+
msgid ""
|
2 |
+
msgstr ""
|
3 |
+
"Project-Id-Version: Anti-Spam by CleanTalk\n"
|
4 |
+
"POT-Creation-Date: 2019-10-27 16:02+0000\n"
|
5 |
+
"PO-Revision-Date: 2020-01-20 15:11+0000\n"
|
6 |
+
"Last-Translator: admin <ievlev@cleantalk.org>\n"
|
7 |
+
"Language-Team: Русский\n"
|
8 |
+
"Language: ru_RU\n"
|
9 |
+
"MIME-Version: 1.0\n"
|
10 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
+
"Content-Transfer-Encoding: 8bit\n"
|
12 |
+
"X-Generator: Loco https://localise.biz/\n"
|
13 |
+
"X-Poedit-Basepath: ..\n"
|
14 |
+
"X-Poedit-WPHeader: cleantalk.php\n"
|
15 |
+
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
|
16 |
+
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
17 |
+
"X-Poedit-SourceCharset: UTF-8\n"
|
18 |
+
"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;"
|
19 |
+
"esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;"
|
20 |
+
"_nx_noop:3c,1,2;__ngettext_noop:1,2\n"
|
21 |
+
"Report-Msgid-Bugs-To: \n"
|
22 |
+
"X-Loco-Version: 2.3.1; wp-5.3.2\n"
|
23 |
+
"X-Poedit-SearchPath-0: .\n"
|
24 |
+
"X-Poedit-SearchPathExcluded-0: *.js\n"
|
25 |
+
|
26 |
+
#: inc/classCleantalkComments.php:32 inc/cleantalk-comments.php:16
|
27 |
+
#: inc/cleantalk-users.php:15
|
28 |
+
msgid "Check for spam"
|
29 |
+
msgstr "Проверить на спам"
|
30 |
+
|
31 |
+
#: inc/classCleantalkComments.php:33 inc/cleantalk-admin.php:350
|
32 |
+
#: inc/cleantalk-comments.php:16
|
33 |
+
msgid "Find spam comments"
|
34 |
+
msgstr "Найти спам в комментариях"
|
35 |
+
|
36 |
+
#: inc/classCleantalkComments.php:66 inc/cleantalk-comments.php:26
|
37 |
+
#: inc/cleantalk-users.php:25
|
38 |
+
msgid "Plugin Settings"
|
39 |
+
msgstr "Настройки плагина"
|
40 |
+
|
41 |
+
#: inc/classCleantalkComments.php:76 inc/cleantalk-comments.php:35
|
42 |
+
#: inc/cleantalk-users.php:34
|
43 |
+
#, php-format
|
44 |
+
msgid ""
|
45 |
+
"Antispam hosting tariff does not allow you to use this feature. To do so, "
|
46 |
+
"you need to enter an Access Key in the %splugin settings%s."
|
47 |
+
msgstr ""
|
48 |
+
"Тариф на антиспам хостинг не позволяет использовать эту функцию. Для этого "
|
49 |
+
"вам необходимо ввести ключ доступа в %sнастройках плагина%s."
|
50 |
+
|
51 |
+
#: inc/classCleantalkComments.php:101 inc/cleantalk-comments.php:60
|
52 |
+
#: inc/cleantalk-users.php:60
|
53 |
+
msgid ""
|
54 |
+
"Ajax error. Process will be automatically restarted in 3 seconds. Status: "
|
55 |
+
msgstr ""
|
56 |
+
"Ajax ошибка. Процесс проверки будет автоматически возобновлен через 3 "
|
57 |
+
"секунды. Статус:"
|
58 |
+
|
59 |
+
#: inc/classCleantalkComments.php:108 inc/cleantalk-comments.php:67
|
60 |
+
msgid ""
|
61 |
+
"Please wait for a while. CleanTalk is deleting spam comments. Comments left: "
|
62 |
+
msgstr "Пожалуйста, подождите. CleanTalk удаляет спам-комментарии. Осталось:"
|
63 |
+
|
64 |
+
#: inc/classCleantalkComments.php:118 inc/cleantalk-comments.php:77
|
65 |
+
#: inc/cleantalk-users.php:77
|
66 |
+
msgid "Start check"
|
67 |
+
msgstr "Начать проверку"
|
68 |
+
|
69 |
+
#: inc/classCleantalkComments.php:119 inc/cleantalk-comments.php:78
|
70 |
+
#: inc/cleantalk-users.php:78
|
71 |
+
msgid "Continue check"
|
72 |
+
msgstr "Продолжить проверку"
|
73 |
+
|
74 |
+
#: inc/classCleantalkComments.php:120 inc/cleantalk-comments.php:79
|
75 |
+
msgid ""
|
76 |
+
"The plugin will check all comments against blacklists database and show you "
|
77 |
+
"senders that have spam activity on other websites."
|
78 |
+
msgstr ""
|
79 |
+
"Пожалуйста, подождите. CleanTalk проверяет комментарии по черным спискам на "
|
80 |
+
"cleantalk.org. Вы сможете удалить комментарии со спамом после окончания "
|
81 |
+
"работы."
|
82 |
+
|
83 |
+
#: inc/classCleantalkComments.php:123 inc/cleantalk-comments.php:82
|
84 |
+
#: inc/cleantalk-users.php:82
|
85 |
+
msgid "Accurate check"
|
86 |
+
msgstr "Точная проверка"
|
87 |
+
|
88 |
+
#: inc/classCleantalkComments.php:125 inc/cleantalk-comments.php:84
|
89 |
+
msgid ""
|
90 |
+
"Allows to use comment's dates to perform more accurate check. Could "
|
91 |
+
"seriously slow down the check."
|
92 |
+
msgstr ""
|
93 |
+
"Позволяет использовать даты комментариев для выполения более тщательной "
|
94 |
+
"проверки. Может серьезно замедлить проверку."
|
95 |
+
|
96 |
+
#: inc/classCleantalkComments.php:128 inc/cleantalk-comments.php:87
|
97 |
+
#: inc/cleantalk-users.php:87
|
98 |
+
msgid "Specify date range"
|
99 |
+
msgstr "Указать диапазон дат"
|
100 |
+
|
101 |
+
#: inc/classCleantalkComments.php:149 inc/cleantalk-comments.php:108
|
102 |
+
msgid ""
|
103 |
+
"Please wait! CleanTalk is checking all approved and pending comments via "
|
104 |
+
"blacklist database at cleantalk.org. You will have option to delete found "
|
105 |
+
"spam comments after plugin finish."
|
106 |
+
msgstr ""
|
107 |
+
"Пожалуйста, подождите! CleanTalk проверяет комментарии по черным спискам на "
|
108 |
+
"cleantalk.org. Вы сможете удалить комментарии со спамом после окончания "
|
109 |
+
"работы."
|
110 |
+
|
111 |
+
#: inc/classCleantalkCommentsListTable.php:24
|
112 |
+
msgid "Author"
|
113 |
+
msgstr "Автор"
|
114 |
+
|
115 |
+
#: inc/classCleantalkCommentsListTable.php:25 inc/cleantalk-comments.php:158
|
116 |
+
msgid "Comment"
|
117 |
+
msgstr "Комментарий"
|
118 |
+
|
119 |
+
#: inc/classCleantalkCommentsListTable.php:26 inc/cleantalk-comments.php:159
|
120 |
+
msgid "In Response To"
|
121 |
+
msgstr "В ответ на"
|
122 |
+
|
123 |
+
#: inc/classCleantalkCommentsListTable.php:33
|
124 |
+
msgid "No spam comments."
|
125 |
+
msgstr "Нет спам комментариев."
|
126 |
+
|
127 |
+
#: inc/cleantalk-admin.php:27
|
128 |
+
#, php-format
|
129 |
+
msgid "Find spam %s"
|
130 |
+
msgstr "Найти спам %s"
|
131 |
+
|
132 |
+
#: inc/cleantalk-admin.php:31
|
133 |
+
msgid "CleanTalk Anti-Spam Log"
|
134 |
+
msgstr "CleanTalk Anti-Spam лог"
|
135 |
+
|
136 |
+
#: inc/cleantalk-admin.php:50
|
137 |
+
#, php-format
|
138 |
+
msgid "%sRefresh%s"
|
139 |
+
msgstr "%sОбновить%s"
|
140 |
+
|
141 |
+
#: inc/cleantalk-admin.php:51
|
142 |
+
#, php-format
|
143 |
+
msgid "%sConfigure%s"
|
144 |
+
msgstr "%sКонфигурация%s"
|
145 |
+
|
146 |
+
#: inc/cleantalk-admin.php:68
|
147 |
+
msgid "7 days anti-spam stats"
|
148 |
+
msgstr "Статистика атак за 7 дней"
|
149 |
+
|
150 |
+
#: inc/cleantalk-admin.php:72
|
151 |
+
msgid "Top 5 spam IPs blocked"
|
152 |
+
msgstr "Топ 5 cамых заблокированных IP"
|
153 |
+
|
154 |
+
#: inc/cleantalk-admin.php:78
|
155 |
+
msgid "Get Access key to activate Anti-Spam protection!"
|
156 |
+
msgstr "Получите ключ доступа для активации спам защиты!"
|
157 |
+
|
158 |
+
#: inc/cleantalk-admin.php:86
|
159 |
+
#, php-format
|
160 |
+
msgid "Something went wrong! Error: \"%s\"."
|
161 |
+
msgstr "Что-то пошло не так: Ошибка: \"%s\"."
|
162 |
+
|
163 |
+
#: inc/cleantalk-admin.php:90
|
164 |
+
msgid "Please, visit your dashboard."
|
165 |
+
msgstr "Пожалуйста, посетите панель управления."
|
166 |
+
|
167 |
+
#: inc/cleantalk-admin.php:104
|
168 |
+
msgid "IP"
|
169 |
+
msgstr "IP"
|
170 |
+
|
171 |
+
#: inc/cleantalk-admin.php:105
|
172 |
+
msgid "Country"
|
173 |
+
msgstr "Страна"
|
174 |
+
|
175 |
+
#: inc/cleantalk-admin.php:106
|
176 |
+
msgid "Block Count"
|
177 |
+
msgstr "Заблкирован раз"
|
178 |
+
|
179 |
+
#: inc/cleantalk-admin.php:134
|
180 |
+
#, php-format
|
181 |
+
msgid ""
|
182 |
+
"This is the count from the %s's cloud and could be different to admin bar "
|
183 |
+
"counters"
|
184 |
+
msgstr ""
|
185 |
+
"Это счетчик из %s облака, эти данные могут отличаться от данных счетчика в "
|
186 |
+
"админ-баре."
|
187 |
+
|
188 |
+
#. %s: Number of spam messages
|
189 |
+
#: inc/cleantalk-admin.php:137
|
190 |
+
#, php-format
|
191 |
+
msgid ""
|
192 |
+
"%s%s%s has blocked %s spam for all time. The statistics are automatically "
|
193 |
+
"updated every 24 hours."
|
194 |
+
msgstr ""
|
195 |
+
"%s%s%s заблокировал %s спама за все время. Статистика автоматически "
|
196 |
+
"обновляется каждый 24 часа."
|
197 |
+
|
198 |
+
#: inc/cleantalk-admin.php:148 inc/cleantalk-settings.php:544
|
199 |
+
#, php-format
|
200 |
+
msgid "Do you like CleanTalk? %sPost your feedback here%s."
|
201 |
+
msgstr "Вам понравился CleanTalk?%s Напишите свой отзыв здесь%s."
|
202 |
+
|
203 |
+
#: inc/cleantalk-admin.php:234
|
204 |
+
msgid "Translate"
|
205 |
+
msgstr "Перевести"
|
206 |
+
|
207 |
+
#: inc/cleantalk-admin.php:237
|
208 |
+
msgid "Start here"
|
209 |
+
msgstr "Начать здесь"
|
210 |
+
|
211 |
+
#: inc/cleantalk-admin.php:238
|
212 |
+
msgid "FAQ"
|
213 |
+
msgstr "FAQ"
|
214 |
+
|
215 |
+
#: inc/cleantalk-admin.php:239 inc/cleantalk-admin.php:644
|
216 |
+
#: inc/cleantalk-settings.php:575
|
217 |
+
msgid "Support"
|
218 |
+
msgstr "Поддержка"
|
219 |
+
|
220 |
+
#: inc/cleantalk-admin.php:306 inc/cleantalk-settings.php:523
|
221 |
+
msgid "Hosting AntiSpam"
|
222 |
+
msgstr "Hosting AntiSpam"
|
223 |
+
|
224 |
+
#: inc/cleantalk-admin.php:333
|
225 |
+
msgid "Failed from timeout. Going to check comments again."
|
226 |
+
msgstr "Ошибка по таймауту. Попробовать еще раз?"
|
227 |
+
|
228 |
+
#: inc/cleantalk-admin.php:334
|
229 |
+
msgid "Added"
|
230 |
+
msgstr "Добавлены"
|
231 |
+
|
232 |
+
#: inc/cleantalk-admin.php:335 inc/cleantalk-admin.php:386
|
233 |
+
msgid "Deleted"
|
234 |
+
msgstr "Удалено"
|
235 |
+
|
236 |
+
#: inc/cleantalk-admin.php:336
|
237 |
+
msgid "comments"
|
238 |
+
msgstr "комментарии"
|
239 |
+
|
240 |
+
#: inc/cleantalk-admin.php:337
|
241 |
+
msgid "Delete all spam comments?"
|
242 |
+
msgstr "Удалить ВСЕ найденные спам-комментарии?"
|
243 |
+
|
244 |
+
#: inc/cleantalk-admin.php:338
|
245 |
+
msgid "Delete checked comments?"
|
246 |
+
msgstr "Удалить отмеченые спам-комментарии?"
|
247 |
+
|
248 |
+
#: inc/cleantalk-admin.php:339
|
249 |
+
#, php-format
|
250 |
+
msgid ""
|
251 |
+
"Total comments %s. Checked %s. Found %s spam comments. %s bad comments "
|
252 |
+
"(without IP or email)."
|
253 |
+
msgstr ""
|
254 |
+
"Всего комментариев %s. Проверено %s. Найдено %s спам комментариев. %s плохих "
|
255 |
+
"комментариев (без IP и Email'а)."
|
256 |
+
|
257 |
+
#: inc/cleantalk-admin.php:340 inc/cleantalk-admin.php:393
|
258 |
+
#: inc/cleantalk-users.php:531
|
259 |
+
msgid "Please do backup of WordPress database before delete any accounts!"
|
260 |
+
msgstr ""
|
261 |
+
"Пожалуйста, сделайте резервную копию базы данных Wordpress перед удалением "
|
262 |
+
"аккаунтов."
|
263 |
+
|
264 |
+
#: inc/cleantalk-admin.php:351
|
265 |
+
msgid "The sender has been whitelisted."
|
266 |
+
msgstr "Отправитель был добавлен в белый список."
|
267 |
+
|
268 |
+
#: inc/cleantalk-admin.php:352
|
269 |
+
msgid "The sender has been blacklisted."
|
270 |
+
msgstr "Отправитель был добавлен в черный список."
|
271 |
+
|
272 |
+
#: inc/cleantalk-admin.php:353 inc/cleantalk-public.php:3321
|
273 |
+
#, php-format
|
274 |
+
msgid "Feedback has been sent to %sCleanTalk Dashboard%s."
|
275 |
+
msgstr "Обратная связь отправлена в панель управления %sCleanTalk%s."
|
276 |
+
|
277 |
+
#: inc/cleantalk-admin.php:383
|
278 |
+
msgid "Failed from timeout. Going to check users again."
|
279 |
+
msgstr "Ошибка по таймауту. Попробовать еще раз?"
|
280 |
+
|
281 |
+
#: inc/cleantalk-admin.php:384
|
282 |
+
msgid "Failed from timeout. Going to run a new attempt to delete spam users."
|
283 |
+
msgstr "Ошибка по таймауту. Попробовать еще раз?"
|
284 |
+
|
285 |
+
#: inc/cleantalk-admin.php:385
|
286 |
+
msgid "Inserted"
|
287 |
+
msgstr "Добавлено"
|
288 |
+
|
289 |
+
#: inc/cleantalk-admin.php:387
|
290 |
+
msgid "users."
|
291 |
+
msgstr "пользователей."
|
292 |
+
|
293 |
+
#: inc/cleantalk-admin.php:388
|
294 |
+
msgid "Delete all spam users?"
|
295 |
+
msgstr "Удалить ВСЕХ найденых спам-пользователей?"
|
296 |
+
|
297 |
+
#: inc/cleantalk-admin.php:389
|
298 |
+
msgid "Delete checked users?"
|
299 |
+
msgstr "Удалить отмеченых спам-пользователей?"
|
300 |
+
|
301 |
+
#: inc/cleantalk-admin.php:392
|
302 |
+
#, php-format
|
303 |
+
msgid ""
|
304 |
+
"Total users %s, checked %s, found %s spam users and %s bad users (without IP "
|
305 |
+
"or email)"
|
306 |
+
msgstr ""
|
307 |
+
"Всего пользователей %s, проверено %s, найдено %s спам пользователей и %s "
|
308 |
+
"плохих пользователей (без IP и Email'а)"
|
309 |
+
|
310 |
+
#: inc/cleantalk-admin.php:401
|
311 |
+
msgid "Find spam-users"
|
312 |
+
msgstr "Найти спам-пользователей"
|
313 |
+
|
314 |
+
#: inc/cleantalk-admin.php:449
|
315 |
+
#, php-format
|
316 |
+
msgid "Unable to get Access key automatically: %s"
|
317 |
+
msgstr "Невозможно получить ключ автоматически: %s"
|
318 |
+
|
319 |
+
#: inc/cleantalk-admin.php:450
|
320 |
+
msgid "Get the Access key"
|
321 |
+
msgstr "Получить ключ вручную"
|
322 |
+
|
323 |
+
#: inc/cleantalk-admin.php:459
|
324 |
+
#, php-format
|
325 |
+
msgid "Please enter Access Key in %s settings to enable anti spam protection!"
|
326 |
+
msgstr ""
|
327 |
+
"Пожалуйста, укажите Ключ доступа в настройках %s для активации защиты от "
|
328 |
+
"спама!"
|
329 |
+
|
330 |
+
#: inc/cleantalk-admin.php:469
|
331 |
+
#, php-format
|
332 |
+
msgid "%s trial period ends, please upgrade to %s!"
|
333 |
+
msgstr ""
|
334 |
+
"%s заканчивается ознакомительный срок пользования антиспам плагином "
|
335 |
+
"CleanTalk, пожалуйста продлите подключение %s."
|
336 |
+
|
337 |
+
#: inc/cleantalk-admin.php:481
|
338 |
+
msgid "RENEW ANTI-SPAM"
|
339 |
+
msgstr "ПРОДЛИТЬ АНТИСПАМ"
|
340 |
+
|
341 |
+
#: inc/cleantalk-admin.php:482
|
342 |
+
msgid "next year"
|
343 |
+
msgstr "следующий год"
|
344 |
+
|
345 |
+
#: inc/cleantalk-admin.php:486
|
346 |
+
#, php-format
|
347 |
+
msgid "Please renew your anti-spam license for %s."
|
348 |
+
msgstr "Пожалуйста, продлите свою антиспам-лицензию на %s."
|
349 |
+
|
350 |
+
#: inc/cleantalk-admin.php:511
|
351 |
+
msgid "Make it right!"
|
352 |
+
msgstr "Сделай все правильно!"
|
353 |
+
|
354 |
+
#: inc/cleantalk-admin.php:513
|
355 |
+
#, php-format
|
356 |
+
msgid "%sGet premium%s"
|
357 |
+
msgstr "%sПолучить премиум%s"
|
358 |
+
|
359 |
+
#: inc/cleantalk-admin.php:552
|
360 |
+
msgid "Since"
|
361 |
+
msgstr "От"
|
362 |
+
|
363 |
+
#: inc/cleantalk-admin.php:558
|
364 |
+
msgid ""
|
365 |
+
"All / Allowed / Blocked submissions. The number of submissions is being "
|
366 |
+
"counted since CleanTalk plugin installation."
|
367 |
+
msgstr "Все / Разрешенные / Запрещенные запросы с момента установки CleanTalk."
|
368 |
+
|
369 |
+
#: inc/cleantalk-admin.php:558
|
370 |
+
msgid "All"
|
371 |
+
msgstr "Все"
|
372 |
+
|
373 |
+
#: inc/cleantalk-admin.php:566
|
374 |
+
msgid ""
|
375 |
+
"Allowed / Blocked submissions. The number of submissions for past 24 hours. "
|
376 |
+
msgstr "Разрешенные / Запрещенные запросы за последние 24 часа."
|
377 |
+
|
378 |
+
#: inc/cleantalk-admin.php:566
|
379 |
+
msgid "Day"
|
380 |
+
msgstr "За день"
|
381 |
+
|
382 |
+
#: inc/cleantalk-admin.php:572
|
383 |
+
msgid ""
|
384 |
+
"All / Blocked events. Access attempts regitred by SpamFireWall counted since "
|
385 |
+
"the last plugin activation."
|
386 |
+
msgstr ""
|
387 |
+
"Все / Запрещенные попытки просмотра сайта. Отображет попытки с момента "
|
388 |
+
"последней активации плагина."
|
389 |
+
|
390 |
+
#: inc/cleantalk-admin.php:582
|
391 |
+
msgid ""
|
392 |
+
"Allowed / Blocked submissions. The number of submissions is being counted "
|
393 |
+
"since "
|
394 |
+
msgstr "Разрешенные / Запрещенные попытки."
|
395 |
+
|
396 |
+
#: inc/cleantalk-admin.php:593
|
397 |
+
msgid "dashboard"
|
398 |
+
msgstr "панель управления"
|
399 |
+
|
400 |
+
#: inc/cleantalk-admin.php:600
|
401 |
+
msgid "Settings"
|
402 |
+
msgstr "Настройки"
|
403 |
+
|
404 |
+
#: inc/cleantalk-admin.php:608
|
405 |
+
msgid "Bulk spam comments removal tool."
|
406 |
+
msgstr "Инструмент массового удаления пользователей."
|
407 |
+
|
408 |
+
#: inc/cleantalk-admin.php:608 inc/cleantalk-settings.php:882
|
409 |
+
msgid "Check comments for spam"
|
410 |
+
msgstr "Проверка комментариев"
|
411 |
+
|
412 |
+
#: inc/cleantalk-admin.php:618 inc/cleantalk-settings.php:885
|
413 |
+
msgid "Check users for spam"
|
414 |
+
msgstr "Проверить пользователей на спам"
|
415 |
+
|
416 |
+
#: inc/cleantalk-admin.php:627
|
417 |
+
msgid "Reset first counter"
|
418 |
+
msgstr "Сбросить первый счетчик"
|
419 |
+
|
420 |
+
#: inc/cleantalk-admin.php:635
|
421 |
+
msgid "Reset all counters"
|
422 |
+
msgstr "Сбросить все счетчики"
|
423 |
+
|
424 |
+
#: inc/cleantalk-comments.php:221 inc/cleantalk-users.php:220
|
425 |
+
msgid "Approve"
|
426 |
+
msgstr "Одобрить"
|
427 |
+
|
428 |
+
#: inc/cleantalk-comments.php:223 inc/cleantalk-users.php:222
|
429 |
+
msgid "Delete"
|
430 |
+
msgstr "Удалить"
|
431 |
+
|
432 |
+
#: inc/cleantalk-comments.php:265
|
433 |
+
msgid "Delete all comments from the list"
|
434 |
+
msgstr "Удалить все сообщения в списке"
|
435 |
+
|
436 |
+
#: inc/cleantalk-comments.php:266 inc/cleantalk-users.php:268
|
437 |
+
msgid "Delete selected"
|
438 |
+
msgstr "Удалить отмеченные"
|
439 |
+
|
440 |
+
#: inc/cleantalk-comments.php:270
|
441 |
+
msgid "Insert comments"
|
442 |
+
msgstr "Добавить комментарии"
|
443 |
+
|
444 |
+
#: inc/cleantalk-comments.php:271
|
445 |
+
msgid "Delete comments"
|
446 |
+
msgstr "Удалить тестовые спам-комментарии?"
|
447 |
+
|
448 |
+
#: inc/cleantalk-comments.php:276 inc/cleantalk-users.php:279
|
449 |
+
msgid ""
|
450 |
+
"There is some differencies between blacklists database and our API "
|
451 |
+
"mechanisms. Blacklists shows all history of spam activity, but our API (that "
|
452 |
+
"used in spam checking) used another parameters, too: last day of activity, "
|
453 |
+
"number of spam attacks during last days etc. This mechanisms help us to "
|
454 |
+
"reduce number of false positivitie. So, there is nothing strange, if some "
|
455 |
+
"emails/IPs will be not found by this checking."
|
456 |
+
msgstr ""
|
457 |
+
"Есть некоторые отличия между проверкой через базу данных черных списков и "
|
458 |
+
"через механизм API. В черных списках отображается вся история о спам-"
|
459 |
+
"активности, но наш API используетс другие механизмы: последний день "
|
460 |
+
"активности, количество спам-атак в течение последних дней и т. д. Эти "
|
461 |
+
"механизмы помогают нам сократить количество ложных обнаружений. Поэтому, нет "
|
462 |
+
"ничего странного, если некоторые письма/IP не будут обнаружены при этой "
|
463 |
+
"проверке."
|
464 |
+
|
465 |
+
#: inc/cleantalk-comments.php:281 inc/cleantalk-users.php:284
|
466 |
+
msgid "Stop deletion"
|
467 |
+
msgstr "Остановить удаление"
|
468 |
+
|
469 |
+
#: inc/cleantalk-comments.php:495
|
470 |
+
#, php-format
|
471 |
+
msgid ""
|
472 |
+
"Total comments %s. Checked %s. Last check %s. Found %s spam comments. %s bad "
|
473 |
+
"comments (without IP or email)."
|
474 |
+
msgstr ""
|
475 |
+
"Всего комментариев %s. Проверено %s. Последняя проверка %s. Найдено %s спам-"
|
476 |
+
"комментариев. %s плохие комментарии (без IP или электронной почты)."
|
477 |
+
|
478 |
+
#: inc/cleantalk-comments.php:499
|
479 |
+
msgid "Please do backup of WordPress database before delete any comments!"
|
480 |
+
msgstr ""
|
481 |
+
"Пожалуйста, сделайте резервную копию базы данных Wordpress перед удалением "
|
482 |
+
"комментариев."
|
483 |
+
|
484 |
+
#: inc/cleantalk-public.php:500 inc/cleantalk-public.php:641
|
485 |
+
#: inc/cleantalk-public.php:743 inc/cleantalk-public.php:2363
|
486 |
+
#: inc/cleantalk-public.php:3052
|
487 |
+
msgid "Spam protection by CleanTalk"
|
488 |
+
msgstr "Спам защита CleanTalk"
|
489 |
+
|
490 |
+
#: inc/cleantalk-public.php:1233 inc/cleantalk-public.php:1361
|
491 |
+
#: inc/cleantalk-public.php:1379
|
492 |
+
msgid "Spam protection"
|
493 |
+
msgstr "Защита от спама"
|
494 |
+
|
495 |
+
#: inc/cleantalk-public.php:1332
|
496 |
+
msgid "CleanTalk AntiSpam: This message is possible spam."
|
497 |
+
msgstr "CleanTalk AntiSpam: Это сообщение, возможно, является спамом."
|
498 |
+
|
499 |
+
#: inc/cleantalk-public.php:1333
|
500 |
+
msgid "You could check it in CleanTalk's anti-spam database:"
|
501 |
+
msgstr "Вы можете проверить это по антиспам-базе CleanTalk:"
|
502 |
+
|
503 |
+
#: inc/cleantalk-public.php:1569
|
504 |
+
#, php-format
|
505 |
+
msgid "Registration approved by %s."
|
506 |
+
msgstr "Регистрация одобрена %s."
|
507 |
+
|
508 |
+
#: inc/cleantalk-public.php:1849
|
509 |
+
msgid "CleanTalk AntiSpam: This registration is spam."
|
510 |
+
msgstr "CleanTalk AntiSpam: Эта регистрация - спам."
|
511 |
+
|
512 |
+
#: inc/cleantalk-public.php:1850 inc/cleantalk-public.php:2219
|
513 |
+
#: inc/cleantalk-public.php:2387 inc/cleantalk-public.php:2542
|
514 |
+
msgid "CleanTalk's anti-spam database:"
|
515 |
+
msgstr "Антиспам-база CleanTalk:"
|
516 |
+
|
517 |
+
#: inc/cleantalk-public.php:2218 inc/cleantalk-public.php:2386
|
518 |
+
#: inc/cleantalk-public.php:2541
|
519 |
+
msgid "CleanTalk AntiSpam: This message is spam."
|
520 |
+
msgstr "CleanTalk AntiSpam: Это сообщение - спам."
|
521 |
+
|
522 |
+
#: inc/cleantalk-public.php:2666
|
523 |
+
msgid "Comment approved. Anti-spam by CleanTalk."
|
524 |
+
msgstr "Комментарий одобрен. Антиспам от CleanTalk."
|
525 |
+
|
526 |
+
#: inc/cleantalk-public.php:3219
|
527 |
+
msgid "Attention, please!"
|
528 |
+
msgstr "Внимание!"
|
529 |
+
|
530 |
+
#: inc/cleantalk-public.php:3220
|
531 |
+
#, php-format
|
532 |
+
msgid "\"%s\" plugin error on your site \"%s\":"
|
533 |
+
msgstr "\"%s\" ошибка плагина на сайте \"%s\":"
|
534 |
+
|
535 |
+
#: inc/cleantalk-public.php:3222
|
536 |
+
#, php-format
|
537 |
+
msgid "[%s] \"%s\" error!"
|
538 |
+
msgstr "[%s] \"%s\" ошибка!"
|
539 |
+
|
540 |
+
#: inc/cleantalk-public.php:3271
|
541 |
+
msgid ""
|
542 |
+
"By using this form you agree with the storage and processing of your data by "
|
543 |
+
"using the Privacy Policy on this website."
|
544 |
+
msgstr ""
|
545 |
+
"Используя эту форму, вы соглашаетесь с хранением и обработкой ваших данных, "
|
546 |
+
"в соответствии с Политикой конфиденциальности на этом сайте."
|
547 |
+
|
548 |
+
#: inc/cleantalk-public.php:3319
|
549 |
+
msgid "Error occured while sending feedback."
|
550 |
+
msgstr "Случилась ошибка при отправке обратной связи."
|
551 |
+
|
552 |
+
#: inc/cleantalk-public.php:3320
|
553 |
+
msgid "Feedback wasn't sent. There is no associated request."
|
554 |
+
msgstr "Обратная связь не была отправлена. Нет связанного запроса."
|
555 |
+
|
556 |
+
#: inc/cleantalk-public.php:3364
|
557 |
+
msgid "Sender info"
|
558 |
+
msgstr "Информация об отправителе"
|
559 |
+
|
560 |
+
#: inc/cleantalk-public.php:3367
|
561 |
+
msgid "by"
|
562 |
+
msgstr " от"
|
563 |
+
|
564 |
+
#: inc/cleantalk-public.php:3378
|
565 |
+
msgid "No email"
|
566 |
+
msgstr "Email отсутствует"
|
567 |
+
|
568 |
+
#: inc/cleantalk-public.php:3388
|
569 |
+
msgid "No IP"
|
570 |
+
msgstr "IP отсутствует"
|
571 |
+
|
572 |
+
#: inc/cleantalk-public.php:3391
|
573 |
+
msgid "Mark as spam"
|
574 |
+
msgstr "Отметить как спам"
|
575 |
+
|
576 |
+
#: inc/cleantalk-public.php:3392
|
577 |
+
msgid "Unspam"
|
578 |
+
msgstr "Вернуть из спама"
|
579 |
+
|
580 |
+
#: inc/cleantalk-public.php:3394
|
581 |
+
msgid "Marked as spam."
|
582 |
+
msgstr "Отмечено как спам."
|
583 |
+
|
584 |
+
#: inc/cleantalk-public.php:3395
|
585 |
+
msgid "Marked as not spam."
|
586 |
+
msgstr "Отмечено как не спам."
|
587 |
+
|
588 |
+
#: inc/cleantalk-settings.php:96
|
589 |
+
msgid "SpamFireWall"
|
590 |
+
msgstr "SpamFireWall"
|
591 |
+
|
592 |
+
#: inc/cleantalk-settings.php:97
|
593 |
+
msgid ""
|
594 |
+
"This option allows to filter spam bots before they access website. Also "
|
595 |
+
"reduces CPU usage on hosting server and accelerates pages load time."
|
596 |
+
msgstr ""
|
597 |
+
"Эта опция позволяет фильтровать спам-ботов прежде, чем они войдут на сайт. "
|
598 |
+
"Также уменьшает загрузку процессора на хостинге и ускоряет время загрузки "
|
599 |
+
"страниц."
|
600 |
+
|
601 |
+
#: inc/cleantalk-settings.php:104
|
602 |
+
msgid "Forms to protect"
|
603 |
+
msgstr "Защищаемые формы"
|
604 |
+
|
605 |
+
#: inc/cleantalk-settings.php:110
|
606 |
+
msgid "Advanced settings"
|
607 |
+
msgstr "Продвинутые настройки"
|
608 |
+
|
609 |
+
#: inc/cleantalk-settings.php:117
|
610 |
+
msgid "Registration Forms"
|
611 |
+
msgstr "Формы регистрации"
|
612 |
+
|
613 |
+
#: inc/cleantalk-settings.php:118
|
614 |
+
msgid "WordPress, BuddyPress, bbPress, S2Member, WooCommerce."
|
615 |
+
msgstr "WordPress, BuddyPress, bbPress, S2Member, WooCommerce."
|
616 |
+
|
617 |
+
#: inc/cleantalk-settings.php:121
|
618 |
+
msgid "Comments form"
|
619 |
+
msgstr "Комментарии в блоге"
|
620 |
+
|
621 |
+
#: inc/cleantalk-settings.php:122
|
622 |
+
msgid "WordPress, JetPack, WooCommerce."
|
623 |
+
msgstr "WordPress, JetPack, WooCommerce."
|
624 |
+
|
625 |
+
#: inc/cleantalk-settings.php:125 inc/cleantalk-settings.php:761
|
626 |
+
msgid "Contact forms"
|
627 |
+
msgstr "Контактные формы"
|
628 |
+
|
629 |
+
#: inc/cleantalk-settings.php:126
|
630 |
+
msgid ""
|
631 |
+
"Contact Form 7, Formidable forms, JetPack, Fast Secure Contact Form, "
|
632 |
+
"WordPress Landing Pages, Gravity Forms."
|
633 |
+
msgstr ""
|
634 |
+
"Contact Form 7, Formidable Forms, Jetpack, Fast Secure Contact Form, "
|
635 |
+
"WordPress Landing Pages, Gravity Forms."
|
636 |
+
|
637 |
+
#: inc/cleantalk-settings.php:129 inc/cleantalk-settings.php:762
|
638 |
+
msgid "Custom contact forms"
|
639 |
+
msgstr "Произвольные контактные формы"
|
640 |
+
|
641 |
+
#: inc/cleantalk-settings.php:130
|
642 |
+
msgid "Anti spam test for any WordPress themes or contacts forms."
|
643 |
+
msgstr "Защита от спама любой контактной формы или темы."
|
644 |
+
|
645 |
+
#: inc/cleantalk-settings.php:133 inc/cleantalk-settings.php:775
|
646 |
+
msgid "WooCommerce checkout form"
|
647 |
+
msgstr "Форма заказа WooCommerce"
|
648 |
+
|
649 |
+
#: inc/cleantalk-settings.php:134
|
650 |
+
msgid "Anti spam test for WooCommerce checkout form."
|
651 |
+
msgstr "Спам тест для формы заказа WooCommerce"
|
652 |
+
|
653 |
+
#: inc/cleantalk-settings.php:138
|
654 |
+
msgid "Spam test for registration during checkout"
|
655 |
+
msgstr "Регистрация на странице заказа"
|
656 |
+
|
657 |
+
#: inc/cleantalk-settings.php:139
|
658 |
+
msgid ""
|
659 |
+
"Enable anti spam test for registration process which during woocommerce's "
|
660 |
+
"checkout."
|
661 |
+
msgstr ""
|
662 |
+
"Включить защиту от спама в регистрациях, которые проходят во время "
|
663 |
+
"оформления заказа."
|
664 |
+
|
665 |
+
#: inc/cleantalk-settings.php:145
|
666 |
+
msgid "Test default Wordpress search form for spam"
|
667 |
+
msgstr "Стандартная форма поиска Wordpress"
|
668 |
+
|
669 |
+
#: inc/cleantalk-settings.php:146
|
670 |
+
msgid "Spam protection for Search form."
|
671 |
+
msgstr "Защита от спама для Форм поиска."
|
672 |
+
|
673 |
+
#: inc/cleantalk-settings.php:148
|
674 |
+
#, php-format
|
675 |
+
msgid "Read more about %sspam protection for Search form%s on our blog."
|
676 |
+
msgstr "Прочтите о %sспам-защите для Форм поиска%s на нашем блоге."
|
677 |
+
|
678 |
+
#: inc/cleantalk-settings.php:156
|
679 |
+
msgid "Protect external forms"
|
680 |
+
msgstr "Защита внешних форм"
|
681 |
+
|
682 |
+
#: inc/cleantalk-settings.php:157
|
683 |
+
msgid ""
|
684 |
+
"Turn this option on to protect forms on your WordPress that send data to "
|
685 |
+
"third-part servers (like MailChimp)."
|
686 |
+
msgstr ""
|
687 |
+
"Включите эту опцию, что бы защитить формы, которые отсылают данные на "
|
688 |
+
"сторонние ресурсы, например MailChimp."
|
689 |
+
|
690 |
+
#: inc/cleantalk-settings.php:161
|
691 |
+
msgid "Capture buffer"
|
692 |
+
msgstr "Захват буфера"
|
693 |
+
|
694 |
+
#: inc/cleantalk-settings.php:162
|
695 |
+
msgid ""
|
696 |
+
"This setting gives you more sophisticated and strengthened protection for "
|
697 |
+
"external forms. But it could break plugins which use a buffer like Ninja "
|
698 |
+
"Forms."
|
699 |
+
msgstr ""
|
700 |
+
"Этот параметр дает вам более сложную и усиленную защиту для внешних форм. Но "
|
701 |
+
"это может сломать плагины, которые используют буфер, такой как Ninja Forms."
|
702 |
+
|
703 |
+
#: inc/cleantalk-settings.php:167
|
704 |
+
msgid "Protect internal forms"
|
705 |
+
msgstr "Защита внутренних форм"
|
706 |
+
|
707 |
+
#: inc/cleantalk-settings.php:168
|
708 |
+
msgid ""
|
709 |
+
"This option will enable protection for custom (hand-made) AJAX forms with "
|
710 |
+
"PHP scripts handlers on your WordPress."
|
711 |
+
msgstr "Эта опция обеспечит защиту созданных вручную форм, использующих AJAX."
|
712 |
+
|
713 |
+
#: inc/cleantalk-settings.php:175
|
714 |
+
msgid "Comments and Messages"
|
715 |
+
msgstr "Комментарии и сообщения"
|
716 |
+
|
717 |
+
#: inc/cleantalk-settings.php:178
|
718 |
+
msgid "BuddyPress Private Messages"
|
719 |
+
msgstr "Личные сообщения buddyPress"
|
720 |
+
|
721 |
+
#: inc/cleantalk-settings.php:179
|
722 |
+
msgid "Check buddyPress private messages."
|
723 |
+
msgstr "Проверять личные сообщения buddyPress "
|
724 |
+
|
725 |
+
#: inc/cleantalk-settings.php:182
|
726 |
+
msgid "Don't check trusted user's comments"
|
727 |
+
msgstr "Не проверять доверенных пользователей"
|
728 |
+
|
729 |
+
#: inc/cleantalk-settings.php:183
|
730 |
+
#, php-format
|
731 |
+
msgid "Don't check comments for users with above %d comments."
|
732 |
+
msgstr "Не проверять комментарии пользователей с более %d комментариями."
|
733 |
+
|
734 |
+
#: inc/cleantalk-settings.php:186
|
735 |
+
msgid "Automatically delete spam comments"
|
736 |
+
msgstr "Автоматически удалять спам-комментарии"
|
737 |
+
|
738 |
+
#: inc/cleantalk-settings.php:187
|
739 |
+
#, php-format
|
740 |
+
msgid "Delete spam comments older than %d days."
|
741 |
+
msgstr "Удалять комментарии старше %d дней."
|
742 |
+
|
743 |
+
#: inc/cleantalk-settings.php:190
|
744 |
+
msgid "Remove links from approved comments"
|
745 |
+
msgstr "Удалять ссылки из одобреных комментариев"
|
746 |
+
|
747 |
+
#: inc/cleantalk-settings.php:191
|
748 |
+
msgid "Remove links from approved comments. Replace it with \"[Link deleted]\""
|
749 |
+
msgstr "Удалять ссылки из одобренных сообщений"
|
750 |
+
|
751 |
+
#: inc/cleantalk-settings.php:194
|
752 |
+
msgid "Show links to check Emails, IPs for spam."
|
753 |
+
msgstr "Отобразить ссылки для проверки Email'ов и IP адресов."
|
754 |
+
|
755 |
+
#: inc/cleantalk-settings.php:195
|
756 |
+
msgid ""
|
757 |
+
"Shows little icon near IP addresses and Emails allowing you to check it via "
|
758 |
+
"CleanTalk's database. Also allowing you to manage comments from the public "
|
759 |
+
"post's page."
|
760 |
+
msgstr ""
|
761 |
+
"Показывает маленькую иконку около IP и Email'a позволяющую проверить их "
|
762 |
+
"через базу данных. Так же позволяет управлять комментариями с публичной "
|
763 |
+
"страницы записи."
|
764 |
+
|
765 |
+
#: inc/cleantalk-settings.php:203
|
766 |
+
msgid "Data Processing"
|
767 |
+
msgstr "Обработка данных"
|
768 |
+
|
769 |
+
#: inc/cleantalk-settings.php:206
|
770 |
+
msgid "Protect logged in Users"
|
771 |
+
msgstr "Проверять залогиненых пользователей"
|
772 |
+
|
773 |
+
#: inc/cleantalk-settings.php:207
|
774 |
+
msgid ""
|
775 |
+
"Turn this option on to check for spam any submissions (comments, contact "
|
776 |
+
"forms and etc.) from registered Users."
|
777 |
+
msgstr "Включите, чтобы проверять зарегистрированных пользователей."
|
778 |
+
|
779 |
+
#: inc/cleantalk-settings.php:210
|
780 |
+
msgid "Use AJAX for JavaScript check"
|
781 |
+
msgstr "Использовать AJAX для проверки JavaScript"
|
782 |
+
|
783 |
+
#: inc/cleantalk-settings.php:211
|
784 |
+
msgid ""
|
785 |
+
"Options helps protect WordPress against spam with any caching plugins. Turn "
|
786 |
+
"this option on to avoid issues with caching plugins."
|
787 |
+
msgstr "Данная настройка помогает избежать конфликтов с кеширующими плагинами."
|
788 |
+
|
789 |
+
#: inc/cleantalk-settings.php:214
|
790 |
+
msgid "Use static keys for JS check."
|
791 |
+
msgstr "Использовать постоянный (статичный) ключ для проверки JS."
|
792 |
+
|
793 |
+
#: inc/cleantalk-settings.php:215
|
794 |
+
msgid ""
|
795 |
+
"Could help if you have cache for AJAX requests and you are dealing with "
|
796 |
+
"false positives. Slightly decreases protection quality. Auto - Static key "
|
797 |
+
"will be used if caching plugin is spotted."
|
798 |
+
msgstr ""
|
799 |
+
"Может помочь, если у вас кешируются запросы AJAX и вы имеете дело с ложными "
|
800 |
+
"срабатываниями. Немного снижает качество защиты. Статический ключ будет "
|
801 |
+
"использоваться автоматически, если обнаружен плагин кэширования."
|
802 |
+
|
803 |
+
#: inc/cleantalk-settings.php:223
|
804 |
+
msgid "Check all post data"
|
805 |
+
msgstr "Проверять все POST-данные"
|
806 |
+
|
807 |
+
#: inc/cleantalk-settings.php:224
|
808 |
+
msgid ""
|
809 |
+
"Check all POST submissions from website visitors. Enable this option if you "
|
810 |
+
"have spam misses on website."
|
811 |
+
msgstr ""
|
812 |
+
"Проверять все POST-данные, отправляемые посетителями. Активируйте, если у "
|
813 |
+
"вас есть спам на сайте."
|
814 |
+
|
815 |
+
#: inc/cleantalk-settings.php:226
|
816 |
+
msgid " Or you don`t have records about missed spam here:"
|
817 |
+
msgstr " Или у вас нет записей о спаме здесь:"
|
818 |
+
|
819 |
+
#: inc/cleantalk-settings.php:226
|
820 |
+
msgid "CleanTalk dashboard"
|
821 |
+
msgstr "панель управления CleanTalk"
|
822 |
+
|
823 |
+
#: inc/cleantalk-settings.php:229
|
824 |
+
msgid "СAUTION! Option can catch POST requests in WordPress backend"
|
825 |
+
msgstr ""
|
826 |
+
"ВНИМАНИЕ! Опция может перехватывать все POST запросы в панели управления "
|
827 |
+
"Wordpress. Отключите, если возникают проблемы/ошибки."
|
828 |
+
|
829 |
+
#: inc/cleantalk-settings.php:232
|
830 |
+
msgid "Set cookies"
|
831 |
+
msgstr "Устанавливать куки"
|
832 |
+
|
833 |
+
#: inc/cleantalk-settings.php:233
|
834 |
+
msgid ""
|
835 |
+
"Turn this option off to deny plugin generates any cookies on website front-"
|
836 |
+
"end. This option is helpful if you use Varnish. But most of contact forms "
|
837 |
+
"will not be protected if the option is turned off! <b>Warning: We strongly "
|
838 |
+
"recommend you to enable this otherwise it could cause false positives spam "
|
839 |
+
"detection.</b>"
|
840 |
+
msgstr ""
|
841 |
+
"Отключите эту опцию, чтобы запретить плагину создавать любые файлы cookies "
|
842 |
+
"на веб-сайте. Эта опция полезна, если вы используете Varnish. Но большинство "
|
843 |
+
"контактных форм не будут защищены, если опция отключена! <b>ВНИМАНИЕ! Мы "
|
844 |
+
"настоятельно рекомендуем не отключать опцию, иначе это может привести к "
|
845 |
+
"ложному обнаружению спама.</b>"
|
846 |
+
|
847 |
+
#: inc/cleantalk-settings.php:237
|
848 |
+
msgid "Use alternative mechanism for cookies"
|
849 |
+
msgstr "Использовать альтернативный механизм хранения файлов cookie"
|
850 |
+
|
851 |
+
#: inc/cleantalk-settings.php:238 inc/cleantalk-settings.php:360
|
852 |
+
msgid "Doesn't use cookie or PHP sessions. Collect data for all types of bots."
|
853 |
+
msgstr ""
|
854 |
+
"Не использовать файлы cookies или PHP-сессии. Собирать данные обо всех типах "
|
855 |
+
"ботов."
|
856 |
+
|
857 |
+
#: inc/cleantalk-settings.php:243
|
858 |
+
msgid "Use SSL"
|
859 |
+
msgstr "Использовать SSL"
|
860 |
+
|
861 |
+
#: inc/cleantalk-settings.php:244
|
862 |
+
msgid "Turn this option on to use encrypted (SSL) connection with servers."
|
863 |
+
msgstr ""
|
864 |
+
"Включите эту опцию для использования защищенного (SSL) соединения между "
|
865 |
+
"серверами."
|
866 |
+
|
867 |
+
#: inc/cleantalk-settings.php:247
|
868 |
+
msgid "Use Wordpress HTTP API"
|
869 |
+
msgstr "Использовать стандартное Wordpress HTTP API"
|
870 |
+
|
871 |
+
#: inc/cleantalk-settings.php:248
|
872 |
+
msgid ""
|
873 |
+
"Alternative way to connect the Cloud. Use this if you have connection "
|
874 |
+
"problems."
|
875 |
+
msgstr ""
|
876 |
+
"Альтернативный способ подключения к CleanTalk Cloud. Используйте, если вы "
|
877 |
+
"имеете проблемы с подключением."
|
878 |
+
|
879 |
+
#: inc/cleantalk-settings.php:255
|
880 |
+
msgid "Exclusions"
|
881 |
+
msgstr "Исключения"
|
882 |
+
|
883 |
+
#: inc/cleantalk-settings.php:259
|
884 |
+
msgid "URL exclusions"
|
885 |
+
msgstr "Исключения по URL"
|
886 |
+
|
887 |
+
#: inc/cleantalk-settings.php:260
|
888 |
+
msgid "You could type here URL you want to exclude. Use comma as separator."
|
889 |
+
msgstr ""
|
890 |
+
"Вы можете ввести здесь URL, который вы хотите исключить. Используйте запятую "
|
891 |
+
"в качестве разделителя."
|
892 |
+
|
893 |
+
#: inc/cleantalk-settings.php:264
|
894 |
+
msgid "Use Regular Expression in URL Exclusions"
|
895 |
+
msgstr "Использовать регулярное выражение в исключении по URL"
|
896 |
+
|
897 |
+
#: inc/cleantalk-settings.php:268
|
898 |
+
msgid "Field name exclusions"
|
899 |
+
msgstr "Исключение по имени поля"
|
900 |
+
|
901 |
+
#: inc/cleantalk-settings.php:269
|
902 |
+
msgid ""
|
903 |
+
"You could type here fields names you want to exclude. Use comma as separator."
|
904 |
+
msgstr ""
|
905 |
+
"Вы можете ввести здесь имена полей, которые вы хотите исключить. Используйте "
|
906 |
+
"запятую в качестве разделителя."
|
907 |
+
|
908 |
+
#: inc/cleantalk-settings.php:273
|
909 |
+
msgid "Use Regular Expression in Field Exclusions"
|
910 |
+
msgstr "Использовать регулярное выражение в исключении по полю формы."
|
911 |
+
|
912 |
+
#: inc/cleantalk-settings.php:280
|
913 |
+
msgid "Roles which bypass spam test. Hold CTRL to select multiple roles."
|
914 |
+
msgstr ""
|
915 |
+
"Роли, которые обходят проверку на спам. Удерживайте CTRL, чтобы выбрать "
|
916 |
+
"несколько ролей."
|
917 |
+
|
918 |
+
#: inc/cleantalk-settings.php:287
|
919 |
+
msgid "Admin bar"
|
920 |
+
msgstr "Админ-бар"
|
921 |
+
|
922 |
+
#: inc/cleantalk-settings.php:294
|
923 |
+
msgid "Show statistics in admin bar"
|
924 |
+
msgstr "Показывать статистику в админбаре"
|
925 |
+
|
926 |
+
#: inc/cleantalk-settings.php:295
|
927 |
+
msgid ""
|
928 |
+
"Show/hide icon in top level menu in WordPress backend. The number of "
|
929 |
+
"submissions is being counted for past 24 hours."
|
930 |
+
msgstr ""
|
931 |
+
"Показать/скрыть иконку в админ-баре WordPress. Статистика подсчитывается за "
|
932 |
+
"последние 24 часа."
|
933 |
+
|
934 |
+
#: inc/cleantalk-settings.php:299
|
935 |
+
msgid "Show All-time counter"
|
936 |
+
msgstr "Счетчик за все время"
|
937 |
+
|
938 |
+
#: inc/cleantalk-settings.php:300
|
939 |
+
msgid ""
|
940 |
+
"Display all-time requests counter in the admin bar. Counter displays number "
|
941 |
+
"of requests since plugin installation."
|
942 |
+
msgstr ""
|
943 |
+
"Отображать счетчик запросов за все время в админ-баре. Счетчик показывает "
|
944 |
+
"записи с момента установки."
|
945 |
+
|
946 |
+
#: inc/cleantalk-settings.php:305
|
947 |
+
msgid "Show 24 hours counter"
|
948 |
+
msgstr "24-х часовой счетчик"
|
949 |
+
|
950 |
+
#: inc/cleantalk-settings.php:306
|
951 |
+
msgid ""
|
952 |
+
"Display daily requests counter in the admin bar. Counter displays number of "
|
953 |
+
"requests of the past 24 hours."
|
954 |
+
msgstr ""
|
955 |
+
"Отображать 24-х часовой счетчик запросов в админ-баре. Отображает запросы за "
|
956 |
+
"последние 24 часа."
|
957 |
+
|
958 |
+
#: inc/cleantalk-settings.php:311
|
959 |
+
msgid "SpamFireWall counter"
|
960 |
+
msgstr "Счетчик SpamFireWall"
|
961 |
+
|
962 |
+
#: inc/cleantalk-settings.php:312
|
963 |
+
msgid ""
|
964 |
+
"Display SpamFireWall requests in the admin bar. Counter displays number of "
|
965 |
+
"requests since plugin installation."
|
966 |
+
msgstr ""
|
967 |
+
"Отображать счетчик SpamFireWall запросов в админ-баре. Отображает количество "
|
968 |
+
"запросов с момента установки плагина."
|
969 |
+
|
970 |
+
#: inc/cleantalk-settings.php:325
|
971 |
+
msgid "Collect details about browsers"
|
972 |
+
msgstr "Собирать данные браузера"
|
973 |
+
|
974 |
+
#: inc/cleantalk-settings.php:326
|
975 |
+
msgid ""
|
976 |
+
"Checking this box you allow plugin store information about screen size and "
|
977 |
+
"browser plugins of website visitors. The option in a beta state."
|
978 |
+
msgstr ""
|
979 |
+
"Включая эту опцию, Вы разрешаете плагину хранить информацию о размере экрана "
|
980 |
+
"и плагинах браузера посетителей. Бета опция."
|
981 |
+
|
982 |
+
#: inc/cleantalk-settings.php:330
|
983 |
+
msgid "Send connection reports"
|
984 |
+
msgstr "Отправлять отчеты о соединении"
|
985 |
+
|
986 |
+
#: inc/cleantalk-settings.php:331
|
987 |
+
msgid ""
|
988 |
+
"Checking this box you allow plugin to send the information about your "
|
989 |
+
"connection. The option in a beta state."
|
990 |
+
msgstr ""
|
991 |
+
"Ставя эту галочку вы разрешаете плагину отрпавлять информацию о интернет-"
|
992 |
+
"соединении. Опция находится на бета-тестировании."
|
993 |
+
|
994 |
+
#: inc/cleantalk-settings.php:335
|
995 |
+
msgid "Async JavaScript loading"
|
996 |
+
msgstr "Асинхронная загрузка JavaScript"
|
997 |
+
|
998 |
+
#: inc/cleantalk-settings.php:336
|
999 |
+
msgid ""
|
1000 |
+
"Use async loading for scripts. Warning: This could reduce filtration quality."
|
1001 |
+
msgstr ""
|
1002 |
+
"Использовать асинхронную загрузку JS-скриптов. ВНИМАНИЕ! это может понизить "
|
1003 |
+
"качество спам-фильтра."
|
1004 |
+
|
1005 |
+
#: inc/cleantalk-settings.php:340
|
1006 |
+
msgid "Allow to add GDPR notice via shortcode"
|
1007 |
+
msgstr "Разрешить добавление GDPR-уведомления с помощью шордкода"
|
1008 |
+
|
1009 |
+
#: inc/cleantalk-settings.php:341
|
1010 |
+
msgid ""
|
1011 |
+
" Adds small checkbox under your website form. To add it you should use the "
|
1012 |
+
"shortcode on the form's page: [cleantalk_gdpr_form id=\"FORM_ID\"]"
|
1013 |
+
msgstr ""
|
1014 |
+
"Добавить не большой чекбокс в форму. Для добавления уведомления вставьте на "
|
1015 |
+
"странице с формой этот шорткод: [cleantalk_gdpr_form id=\"FORM_ID\"]"
|
1016 |
+
|
1017 |
+
#: inc/cleantalk-settings.php:346
|
1018 |
+
msgid "GDPR text notice"
|
1019 |
+
msgstr "Текст GDPR-уведомления"
|
1020 |
+
|
1021 |
+
#: inc/cleantalk-settings.php:347
|
1022 |
+
msgid "This text will be added as a description to the GDPR checkbox."
|
1023 |
+
msgstr "Этот текст будет добавлен к чекбоксу как описание."
|
1024 |
+
|
1025 |
+
#: inc/cleantalk-settings.php:353
|
1026 |
+
msgid "Store visited URLs"
|
1027 |
+
msgstr "Хранить посещенные URL-ы"
|
1028 |
+
|
1029 |
+
#: inc/cleantalk-settings.php:354
|
1030 |
+
msgid ""
|
1031 |
+
"Plugin stores last 10 visited URLs (HTTP REFFERERS) before visitor submits "
|
1032 |
+
"form on the site. You can see stored visited URLS for each visitor in your "
|
1033 |
+
"Dashboard. Turn the option on to improve Anti-Spam protection."
|
1034 |
+
msgstr ""
|
1035 |
+
"Плагин хранит последние 10 посещенных URL (HTTP REFFERERS) до того, как "
|
1036 |
+
"посетитель отправит форму на сайт. Вы можете видеть сохраненные посещенные "
|
1037 |
+
"URL-адреса для каждого посетителя на своей панели инструментов. Включите эту "
|
1038 |
+
"опцию, чтобы улучшить защиту от спама."
|
1039 |
+
|
1040 |
+
#: inc/cleantalk-settings.php:359
|
1041 |
+
msgid "Use cookies less sessions"
|
1042 |
+
msgstr "Использовать сеансы без cookies"
|
1043 |
+
|
1044 |
+
#: inc/cleantalk-settings.php:366
|
1045 |
+
msgid ""
|
1046 |
+
"Notify users with selected roles about new approved comments. Hold CTRL to "
|
1047 |
+
"select multiple roles."
|
1048 |
+
msgstr ""
|
1049 |
+
"Уведомлять пользователей с выбранными ролями о новых одобренных комментариях."
|
1050 |
+
" Удерживайте CTRL для выбора нескольких ролей."
|
1051 |
+
|
1052 |
+
#: inc/cleantalk-settings.php:367
|
1053 |
+
#, php-format
|
1054 |
+
msgid "If enabled, overrides similar Wordpress %sdiscussion settings%s."
|
1055 |
+
msgstr "Если включено, переопределяет аналогичные %sнастройки Wordpress%s."
|
1056 |
+
|
1057 |
+
#: inc/cleantalk-settings.php:380
|
1058 |
+
msgid "Complete deactivation"
|
1059 |
+
msgstr "Полная деактивация"
|
1060 |
+
|
1061 |
+
#: inc/cleantalk-settings.php:381
|
1062 |
+
msgid "Leave no trace in the system after deactivation."
|
1063 |
+
msgstr "Не оставлять следов в системе после деактивации."
|
1064 |
+
|
1065 |
+
#: inc/cleantalk-settings.php:398
|
1066 |
+
msgid "Enable White Label Mode"
|
1067 |
+
msgstr "Активировать White Label Mode."
|
1068 |
+
|
1069 |
+
#: inc/cleantalk-settings.php:399
|
1070 |
+
#, php-format
|
1071 |
+
msgid "Learn more information %shere%s."
|
1072 |
+
msgstr "Узнать больше информации %sздесь%s"
|
1073 |
+
|
1074 |
+
#: inc/cleantalk-settings.php:404
|
1075 |
+
msgid "Hoster API Key"
|
1076 |
+
msgstr "Хостинг API ключ"
|
1077 |
+
|
1078 |
+
#: inc/cleantalk-settings.php:405
|
1079 |
+
#, php-format
|
1080 |
+
msgid "You can get it in %sCleantalk's Control Panel%s"
|
1081 |
+
msgstr "Вы можете получить ключ в вашей %sпанели управления CleanTalk%s"
|
1082 |
+
|
1083 |
+
#: inc/cleantalk-settings.php:413
|
1084 |
+
msgid "Plugin name"
|
1085 |
+
msgstr "Наименование плагина"
|
1086 |
+
|
1087 |
+
#: inc/cleantalk-settings.php:414
|
1088 |
+
#, php-format
|
1089 |
+
msgid "Specify plugin name. Leave empty for deafult %sAntispam by Cleantalk%s"
|
1090 |
+
msgstr ""
|
1091 |
+
"Укажите название плагина. Оставьте пустым для названия по умолчанию "
|
1092 |
+
"%sAntispam by Cleantalk%s"
|
1093 |
+
|
1094 |
+
#: inc/cleantalk-settings.php:423
|
1095 |
+
msgid "Allow users to use other key"
|
1096 |
+
msgstr "Позволяет пользователям использовать другой ключ."
|
1097 |
+
|
1098 |
+
#: inc/cleantalk-settings.php:424
|
1099 |
+
msgid ""
|
1100 |
+
"Allow users to use different Access key in their plugin settings on child "
|
1101 |
+
"blogs. They could use different CleanTalk account."
|
1102 |
+
msgstr ""
|
1103 |
+
"Позволяет пользователям использовать разные Ключи доступа в настройках "
|
1104 |
+
"плагина на их дочерних блогах. Они могут использовать разные аккаунты "
|
1105 |
+
"CleanTalk."
|
1106 |
+
|
1107 |
+
#: inc/cleantalk-settings.php:427
|
1108 |
+
msgid ""
|
1109 |
+
"Constant <b>CLEANTALK_ACCESS_KEY</b> is set. All websites will use API key "
|
1110 |
+
"from this constant. Look into wp-config.php"
|
1111 |
+
msgstr ""
|
1112 |
+
"Константа <b>CLEANTALK_ACCESS_KEY</b> установлена. Все дочерние сайты будут "
|
1113 |
+
"использовать ключ доступа из этой контсанты. Смотри в wp-config.php"
|
1114 |
+
|
1115 |
+
#: inc/cleantalk-settings.php:533
|
1116 |
+
msgid "CleanTalk's tech support:"
|
1117 |
+
msgstr "Техническия поддержка CleanTalk: "
|
1118 |
+
|
1119 |
+
#: inc/cleantalk-settings.php:539
|
1120 |
+
msgid "Plugin Homepage at"
|
1121 |
+
msgstr "Домашняя страница плагина на"
|
1122 |
+
|
1123 |
+
#: inc/cleantalk-settings.php:540
|
1124 |
+
msgid "GDPR compliance"
|
1125 |
+
msgstr "Соответствие GDPR"
|
1126 |
+
|
1127 |
+
#: inc/cleantalk-settings.php:541
|
1128 |
+
msgid "Use s@cleantalk.org to test plugin in any WordPress form."
|
1129 |
+
msgstr ""
|
1130 |
+
"Используйте s@cleantalk.org чтобы проверить плагин в любой форме в WordPress."
|
1131 |
+
|
1132 |
+
#: inc/cleantalk-settings.php:542
|
1133 |
+
msgid "CleanTalk is registered Trademark. All rights reserved."
|
1134 |
+
msgstr "CleanTalk - это зарегистрированая торговая марка. Все права защищены."
|
1135 |
+
|
1136 |
+
#: inc/cleantalk-settings.php:559
|
1137 |
+
#, php-format
|
1138 |
+
msgid "%s has blocked <b>%s</b> spam."
|
1139 |
+
msgstr "%s заблокировал <b>%s</b> спама."
|
1140 |
+
|
1141 |
+
#: inc/cleantalk-settings.php:571
|
1142 |
+
msgid "Click here to get anti-spam statistics"
|
1143 |
+
msgstr "Щелкните, чтобы получить статистику"
|
1144 |
+
|
1145 |
+
#: inc/cleantalk-settings.php:614
|
1146 |
+
#, php-format
|
1147 |
+
msgid "Please, enter the %splugin settings%s in main site dashboard."
|
1148 |
+
msgstr ""
|
1149 |
+
"Пожалуйста, перейдите в %sнастройки плагина%s в панели управления на главном "
|
1150 |
+
"сайте."
|
1151 |
+
|
1152 |
+
#: inc/cleantalk-settings.php:633
|
1153 |
+
msgid "Error occured while API key validating. Error: "
|
1154 |
+
msgstr "Произошла ошибка при проверке ключа API. Ошибка: "
|
1155 |
+
|
1156 |
+
#: inc/cleantalk-settings.php:634
|
1157 |
+
msgid "Error occured while automatically gettings access key. Error: "
|
1158 |
+
msgstr "Произошла ошибка при автоматическом получении ключа доступа. Ошибка: "
|
1159 |
+
|
1160 |
+
#: inc/cleantalk-settings.php:635
|
1161 |
+
msgid "Error occured while sending sending SpamFireWall logs. Error: "
|
1162 |
+
msgstr "Произошла ошибка при отправке логов Spam FireWall. Ошибка: "
|
1163 |
+
|
1164 |
+
#: inc/cleantalk-settings.php:636
|
1165 |
+
msgid "Error occured while updating SpamFireWall local base. Error: "
|
1166 |
+
msgstr "Произошла ошибка при обновлении локальной базы Spam FireWall. Ошибка: "
|
1167 |
+
|
1168 |
+
#: inc/cleantalk-settings.php:637
|
1169 |
+
msgid "Error occured while checking account status. Error: "
|
1170 |
+
msgstr "Произошла ошибка при проверке статуса аккаунта. Ошибка: "
|
1171 |
+
|
1172 |
+
#: inc/cleantalk-settings.php:638
|
1173 |
+
msgid "Error occured while excuting API call. Error: "
|
1174 |
+
msgstr "Произошла ошибка при выполнении вызова API. Ошибка: "
|
1175 |
+
|
1176 |
+
#: inc/cleantalk-settings.php:646
|
1177 |
+
msgid "Unknown error. Error: "
|
1178 |
+
msgstr "Неизвестная ошибка. Ошибка: "
|
1179 |
+
|
1180 |
+
#: inc/cleantalk-settings.php:677
|
1181 |
+
msgid "Errors:"
|
1182 |
+
msgstr "Ошибки: "
|
1183 |
+
|
1184 |
+
#: inc/cleantalk-settings.php:682
|
1185 |
+
#, php-format
|
1186 |
+
msgid "You can get support any time here: %s."
|
1187 |
+
msgstr "Вы всегда можете получить техническую поддержку здесь: %s."
|
1188 |
+
|
1189 |
+
#: inc/cleantalk-settings.php:757
|
1190 |
+
msgid "Protection is active"
|
1191 |
+
msgstr "Защита включена"
|
1192 |
+
|
1193 |
+
#: inc/cleantalk-settings.php:759
|
1194 |
+
msgid "Registration forms"
|
1195 |
+
msgstr "Регистрации пользователей"
|
1196 |
+
|
1197 |
+
#: inc/cleantalk-settings.php:760
|
1198 |
+
msgid "Comments forms"
|
1199 |
+
msgstr "Формы комментариев"
|
1200 |
+
|
1201 |
+
#: inc/cleantalk-settings.php:765
|
1202 |
+
msgid "Validate email for existence"
|
1203 |
+
msgstr "Проверка e-mail на существование"
|
1204 |
+
|
1205 |
+
#: inc/cleantalk-settings.php:769
|
1206 |
+
msgid "Auto update"
|
1207 |
+
msgstr "Автообновлние"
|
1208 |
+
|
1209 |
+
#: inc/cleantalk-settings.php:793
|
1210 |
+
msgid "<h3>Key is provided by Super Admin.</h3>"
|
1211 |
+
msgstr "<h3>Ключ доступа предоставлен Супер Администратором.</h3>"
|
1212 |
+
|
1213 |
+
#: inc/cleantalk-settings.php:797
|
1214 |
+
msgid "Access key"
|
1215 |
+
msgstr "Ключ доступа"
|
1216 |
+
|
1217 |
+
#: inc/cleantalk-settings.php:812
|
1218 |
+
msgid "Enter the key"
|
1219 |
+
msgstr "Введите ключ"
|
1220 |
+
|
1221 |
+
#: inc/cleantalk-settings.php:818
|
1222 |
+
#, php-format
|
1223 |
+
msgid "Account at cleantalk.org is %s."
|
1224 |
+
msgstr "Аккаунт на cleantalk.org %s."
|
1225 |
+
|
1226 |
+
#: inc/cleantalk-settings.php:827
|
1227 |
+
msgid "Show the access key"
|
1228 |
+
msgstr "Показать ключ доступа"
|
1229 |
+
|
1230 |
+
#: inc/cleantalk-settings.php:838
|
1231 |
+
msgid "Get Access Key Automatically"
|
1232 |
+
msgstr "Получить ключ доступа автоматически"
|
1233 |
+
|
1234 |
+
#: inc/cleantalk-settings.php:846
|
1235 |
+
#, php-format
|
1236 |
+
msgid ""
|
1237 |
+
"Admin e-mail (%s) will be used for registration, if you want to use other "
|
1238 |
+
"email please %sGet Access Key Manually%s."
|
1239 |
+
msgstr ""
|
1240 |
+
"E-mail администратора (%s) будет использован для регистрации. Если вы хотите "
|
1241 |
+
"использовать другой e-mail, пожлуйста, %sполучите ключ доступа "
|
1242 |
+
"самостоятельно%s."
|
1243 |
+
|
1244 |
+
#: inc/cleantalk-settings.php:862
|
1245 |
+
#, php-format
|
1246 |
+
msgid "I accept %sLicense Agreement%s."
|
1247 |
+
msgstr "Я принимаю %sЛицензионно Соглашение%s."
|
1248 |
+
|
1249 |
+
#: inc/cleantalk-settings.php:888
|
1250 |
+
msgid "Statistics & Reports"
|
1251 |
+
msgstr "Статистика и отчеты"
|
1252 |
+
|
1253 |
+
#: inc/cleantalk-settings.php:904
|
1254 |
+
#, php-format
|
1255 |
+
msgid "Last spam check request to %s server was at %s."
|
1256 |
+
msgstr "Последний запрос проверки спама на сервере %s был произведен %s."
|
1257 |
+
|
1258 |
+
#: inc/cleantalk-settings.php:905 inc/cleantalk-settings.php:906
|
1259 |
+
#: inc/cleantalk-settings.php:915 inc/cleantalk-settings.php:922
|
1260 |
+
#: inc/cleantalk-settings.php:923 inc/cleantalk-settings.php:931
|
1261 |
+
#: inc/cleantalk-settings.php:932 inc/cleantalk-settings.php:939
|
1262 |
+
#: inc/cleantalk-settings.php:940
|
1263 |
+
msgid "unknown"
|
1264 |
+
msgstr "неизвестно"
|
1265 |
+
|
1266 |
+
#: inc/cleantalk-settings.php:912
|
1267 |
+
#, php-format
|
1268 |
+
msgid "Average request time for past 7 days: %s seconds."
|
1269 |
+
msgstr "Среднее время запроса за последние 7 дней: %s секунд."
|
1270 |
+
|
1271 |
+
#: inc/cleantalk-settings.php:921
|
1272 |
+
#, php-format
|
1273 |
+
msgid "Last time SpamFireWall was triggered for %s IP at %s"
|
1274 |
+
msgstr "В последний раз SpamFireWall сработал на %s IP %s"
|
1275 |
+
|
1276 |
+
#: inc/cleantalk-settings.php:930
|
1277 |
+
#, php-format
|
1278 |
+
msgid "SpamFireWall was updated %s. Now contains %s entries."
|
1279 |
+
msgstr "SpamFireWall был обновлен %s. Содержится %s записей."
|
1280 |
+
|
1281 |
+
#: inc/cleantalk-settings.php:938
|
1282 |
+
#, php-format
|
1283 |
+
msgid "SpamFireWall sent %s events at %s."
|
1284 |
+
msgstr "SpamFireWall отправил %s событий %s."
|
1285 |
+
|
1286 |
+
#: inc/cleantalk-settings.php:948
|
1287 |
+
msgid "There are no failed connections to server."
|
1288 |
+
msgstr "Проблем с подключением к серверу нет."
|
1289 |
+
|
1290 |
+
#: inc/cleantalk-settings.php:975
|
1291 |
+
msgid "Send report"
|
1292 |
+
msgstr "Отправить отчет"
|
1293 |
+
|
1294 |
+
#: inc/cleantalk-settings.php:979
|
1295 |
+
msgid ""
|
1296 |
+
"Please, enable \"Send connection reports\" setting to be able to send reports"
|
1297 |
+
msgstr ""
|
1298 |
+
"Пожалуйста, активируйте опцию \"Отправлять отчеты о соединении\" для "
|
1299 |
+
"возможности отправлять отчеты."
|
1300 |
+
|
1301 |
+
#: inc/cleantalk-settings.php:1327
|
1302 |
+
msgid "Testing is failed. Please check the Access key."
|
1303 |
+
msgstr "Ошибка тестирования. Пожалуйста, проверьте ключ доступа."
|
1304 |
+
|
1305 |
+
#: inc/cleantalk-settings.php:1442
|
1306 |
+
msgid "XSS check"
|
1307 |
+
msgstr "Проверка XSS уязвимости"
|
1308 |
+
|
1309 |
+
#: inc/cleantalk-settings.php:1443
|
1310 |
+
msgid ""
|
1311 |
+
"Cross-Site Scripting (XSS) — prevents malicious code to be executed/sent to "
|
1312 |
+
"any user. As a result malicious scripts can not get access to the cookie "
|
1313 |
+
"files, session tokens and any other confidential information browsers use "
|
1314 |
+
"and store. Such scripts can even overwrite content of HTML pages. CleanTalk "
|
1315 |
+
"WAF monitors for patterns of these parameters and block them."
|
1316 |
+
msgstr ""
|
1317 |
+
"Межсайтовый скриптинг (XSS) - предотвращает выполнение / отправку "
|
1318 |
+
"вредоносного кода любому пользователю. В результате вредоносные сценарии не "
|
1319 |
+
"могут получить доступ к файлам cookie, токенам сеансов и любой другой "
|
1320 |
+
"конфиденциальной информации, которую используют и хранят браузеры. Такие "
|
1321 |
+
"сценарии могут даже перезаписывать содержимое HTML-страниц. CleanTalk WAF "
|
1322 |
+
"отслеживает шаблоны этих параметров и блокирует их."
|
1323 |
+
|
1324 |
+
#: inc/cleantalk-settings.php:1446
|
1325 |
+
msgid "SQL-injection check"
|
1326 |
+
msgstr "Проверка на наличие SQL-injection"
|
1327 |
+
|
1328 |
+
#: inc/cleantalk-settings.php:1447
|
1329 |
+
msgid ""
|
1330 |
+
"SQL Injection — one of the most popular ways to hack websites and programs "
|
1331 |
+
"that work with databases. It is based on injection of a custom SQL code into "
|
1332 |
+
"database queries. It could transmit data through GET, POST requests or "
|
1333 |
+
"cookie files in an SQL code. If a website is vulnerable and execute such "
|
1334 |
+
"injections then it would allow attackers to apply changes to the website's "
|
1335 |
+
"MySQL database."
|
1336 |
+
msgstr ""
|
1337 |
+
"SQL-инъекция - один из самых популярных способов взлома сайтов и программ, "
|
1338 |
+
"работающих с базами данных. Он основан на внедрении пользовательского кода "
|
1339 |
+
"SQL в запросы к базе данных. Он может передавать данные через запросы GET, "
|
1340 |
+
"POST или файлы cookie в коде SQL. Если веб-сайт уязвим и выполняет такие "
|
1341 |
+
"инъекции, это позволит злоумышленникам применить изменения к базе данных "
|
1342 |
+
"MySQL веб-сайта."
|
1343 |
+
|
1344 |
+
#: inc/cleantalk-settings.php:1450
|
1345 |
+
msgid "Check uploaded files"
|
1346 |
+
msgstr "Проверка загруженных файлов"
|
1347 |
+
|
1348 |
+
#: inc/cleantalk-settings.php:1451
|
1349 |
+
msgid ""
|
1350 |
+
"The option checks each uploaded file to a website for malicious code. If "
|
1351 |
+
"it's possible for visitors to upload files to a website, for instance a work "
|
1352 |
+
"resume, then attackers could abuse it and upload an infected file to execute "
|
1353 |
+
"it later and get access to your website."
|
1354 |
+
msgstr ""
|
1355 |
+
"Опция проверяет каждый загруженный файл на веб-сайт на наличие вредоносного "
|
1356 |
+
"кода. Если посетители могут загружать на сайт файлы, например, резюме, то "
|
1357 |
+
"злоумышленники могут злоупотреблять им и загружать зараженный файл, чтобы "
|
1358 |
+
"выполнить его позднее и получить доступ к вашему сайту."
|
1359 |
+
|
1360 |
+
#: inc/cleantalk-users.php:15
|
1361 |
+
msgid "Find spam users"
|
1362 |
+
msgstr "Найти спам-пользователей"
|
1363 |
+
|
1364 |
+
#: inc/cleantalk-users.php:67
|
1365 |
+
msgid "Please wait for a while. CleanTalk is deleting spam users. Users left: "
|
1366 |
+
msgstr "Пожалуйста, подождите. CleanTalk удаляет спам-пользователей. Осталось:"
|
1367 |
+
|
1368 |
+
#: inc/cleantalk-users.php:79
|
1369 |
+
msgid ""
|
1370 |
+
"The plugin will check all users against blacklists database and show you "
|
1371 |
+
"senders that have spam activity on other websites."
|
1372 |
+
msgstr ""
|
1373 |
+
"Плагин проверит всех пользователей по базе данных чёрных списков и покажет "
|
1374 |
+
"отправителей, которые занимаются спамом на других сайтах."
|
1375 |
+
|
1376 |
+
#: inc/cleantalk-users.php:84
|
1377 |
+
msgid ""
|
1378 |
+
"Allows to use user's dates to perform more accurate check. Could seriously "
|
1379 |
+
"slow down the check."
|
1380 |
+
msgstr ""
|
1381 |
+
"Позволяет использовать даты пользователей для выполения более тщательной "
|
1382 |
+
"проверки. Может серьезно замедлить проверку."
|
1383 |
+
|
1384 |
+
#: inc/cleantalk-users.php:108
|
1385 |
+
msgid ""
|
1386 |
+
"Please wait for a while. CleanTalk is checking all users via blacklist "
|
1387 |
+
"database at cleantalk.org. You will have option to delete found spam users "
|
1388 |
+
"after plugin finish."
|
1389 |
+
msgstr ""
|
1390 |
+
"Пожалуйста, подождите. ClenTalk проверяет всех пользователей по чёрным "
|
1391 |
+
"спискам на cleantalk.org. У вас появится возможность удалить обнаруженных "
|
1392 |
+
"спам-пользователей как только плагин закончит."
|
1393 |
+
|
1394 |
+
#: inc/cleantalk-users.php:267
|
1395 |
+
msgid "Delete all users from list"
|
1396 |
+
msgstr "Удалить всех пользователей в списке"
|
1397 |
+
|
1398 |
+
#: inc/cleantalk-users.php:269
|
1399 |
+
msgid "Download results in CSV"
|
1400 |
+
msgstr "Загрузить результаты (CSV)"
|
1401 |
+
|
1402 |
+
#: inc/cleantalk-users.php:273
|
1403 |
+
msgid "Insert accounts"
|
1404 |
+
msgstr "Добавить аккаунты"
|
1405 |
+
|
1406 |
+
#: inc/cleantalk-users.php:274
|
1407 |
+
msgid "Delete accounts"
|
1408 |
+
msgstr "Удалить тестовые спам-аккаунты"
|
1409 |
+
|
1410 |
+
#: inc/cleantalk-users.php:527
|
1411 |
+
#, php-format
|
1412 |
+
msgid ""
|
1413 |
+
"Total users %s, checked %s, last check %s, found %s spam users and %s bad "
|
1414 |
+
"users (without IP or email)"
|
1415 |
+
msgstr ""
|
1416 |
+
"Всего пользователей %s, проверено %s, последняя проверка %s, найдено %s спам-"
|
1417 |
+
"пользователей и %s плохих пользователей (без IP или электронной почты)"
|
1418 |
+
|
1419 |
+
#: inc/cleantalk-widget.php:22
|
1420 |
+
msgid "CleanTalk Widget"
|
1421 |
+
msgstr "Виджет CleanTalk"
|
1422 |
+
|
1423 |
+
#: inc/cleantalk-widget.php:25
|
1424 |
+
msgid "CleanTalk widget"
|
1425 |
+
msgstr "виджет CleanTalk"
|
1426 |
+
|
1427 |
+
#: inc/cleantalk-widget.php:72
|
1428 |
+
msgid "CleanTalk's main page"
|
1429 |
+
msgstr "Главная страница CleanTalk"
|
1430 |
+
|
1431 |
+
#: inc/cleantalk-widget.php:73
|
1432 |
+
msgid "spam"
|
1433 |
+
msgstr "спама"
|
1434 |
+
|
1435 |
+
#: inc/cleantalk-widget.php:73
|
1436 |
+
msgid "blocked by"
|
1437 |
+
msgstr "заблокировано"
|
1438 |
+
|
1439 |
+
#: inc/cleantalk-widget.php:85
|
1440 |
+
msgid "Spam blocked"
|
1441 |
+
msgstr "Спама заблокировано"
|
1442 |
+
|
1443 |
+
#: inc/cleantalk-widget.php:90
|
1444 |
+
msgid "Title:"
|
1445 |
+
msgstr "Заголовок:"
|
1446 |
+
|
1447 |
+
#: inc/cleantalk-widget.php:95
|
1448 |
+
msgid "Style:"
|
1449 |
+
msgstr "Стиль:"
|
1450 |
+
|
1451 |
+
#: inc/cleantalk-widget.php:97
|
1452 |
+
msgid "CleanTalk's Style"
|
1453 |
+
msgstr "Фирменный стиль CleanTalk"
|
1454 |
+
|
1455 |
+
#: inc/cleantalk-widget.php:98
|
1456 |
+
msgid "Light"
|
1457 |
+
msgstr "Лёгкий"
|
1458 |
+
|
1459 |
+
#: inc/cleantalk-widget.php:99
|
1460 |
+
msgid "Extremely Light"
|
1461 |
+
msgstr "Очень легкий"
|
1462 |
+
|
1463 |
+
#: inc/cleantalk-widget.php:100
|
1464 |
+
msgid "Dark"
|
1465 |
+
msgstr "Темный"
|
1466 |
+
|
1467 |
+
#: inc/cleantalk-widget.php:105
|
1468 |
+
msgid "Referal link ID:"
|
1469 |
+
msgstr "ID партнера:"
|
1470 |
+
|
1471 |
+
#: lib/CleantalkSFW.php:71
|
1472 |
+
msgid "SpamFireWall is activated for your IP "
|
1473 |
+
msgstr "Спам Фаервол заблокировал ваш IP"
|
1474 |
+
|
1475 |
+
#: lib/CleantalkSFW.php:72
|
1476 |
+
msgid ""
|
1477 |
+
"To continue working with web site, please make sure that you have enabled "
|
1478 |
+
"JavaScript."
|
1479 |
+
msgstr ""
|
1480 |
+
"Что бы продолжить работу с сайтом, пожалуйста, убедитесь что у вас включен "
|
1481 |
+
"JavaScript."
|
1482 |
+
|
1483 |
+
#: lib/CleantalkSFW.php:73
|
1484 |
+
msgid "Please click below to pass protection,"
|
1485 |
+
msgstr "Пожалуйста, нажмите, чтобы пройти защиту,"
|
1486 |
+
|
1487 |
+
#: lib/CleantalkSFW.php:74
|
1488 |
+
#, php-format
|
1489 |
+
msgid ""
|
1490 |
+
"Or you will be automatically redirected to the requested page after %d "
|
1491 |
+
"seconds."
|
1492 |
+
msgstr ""
|
1493 |
+
"Или вы будете автоматически переадресованы на запрашиваемую страницу через "
|
1494 |
+
"%d секунд."
|
1495 |
+
|
1496 |
+
#: lib/CleantalkSFW.php:75
|
1497 |
+
msgid "Antispam by CleanTalk"
|
1498 |
+
msgstr "Антиспам от CleanTalk"
|
1499 |
+
|
1500 |
+
#: lib/CleantalkSFW.php:76
|
1501 |
+
msgid "This is the testing page for SpamFireWall"
|
1502 |
+
msgstr "Это тестовая страница SpamFireWall"
|
1503 |
+
|
1504 |
+
#: templates/translate_banner.php:6
|
1505 |
+
msgid "Help others use the plugin in your language."
|
1506 |
+
msgstr "Помогите другим пользователям использовать плагин на их языке."
|
1507 |
+
|
1508 |
+
#: templates/translate_banner.php:7
|
1509 |
+
msgid ""
|
1510 |
+
"We ask you to help with the translation of the plugin in your language. "
|
1511 |
+
"Please take a few minutes to make the plugin more comfortable."
|
1512 |
+
msgstr ""
|
1513 |
+
"Мы просим Вас помочь с переводом плагина на ваш язык. Пожалуйста, потратьте "
|
1514 |
+
"несколько минут, чтобы сделать плагин более удобным."
|
1515 |
+
|
1516 |
+
#: templates/translate_banner.php:10
|
1517 |
+
msgid "TRANSLATE"
|
1518 |
+
msgstr "ПЕРЕВЕСТИ"
|
1519 |
+
|
1520 |
+
#. Description of the plugin/theme
|
1521 |
+
msgid ""
|
1522 |
+
"Max power, all-in-one, no Captcha, premium anti-spam plugin. No comment spam,"
|
1523 |
+
" no registration spam, no contact spam, protects any WordPress forms."
|
1524 |
+
msgstr ""
|
1525 |
+
"Максимальная эффективность, проверка всех форм, без Сaptcha, премиум "
|
1526 |
+
"антиспам плагин. Нет спаму в комментариях, нет спаму в регистрациях, нету "
|
1527 |
+
"спаму в контактных формах, защита любых форм в WordPress."
|
1528 |
+
|
1529 |
+
#. Plugin URI of the plugin/theme
|
1530 |
+
#. Author URI of the plugin/theme
|
1531 |
+
msgid "http://cleantalk.org"
|
1532 |
+
msgstr "http://cleantalk.org"
|
1533 |
+
|
1534 |
+
#. Author of the plugin/theme
|
1535 |
+
msgid "СleanTalk <welcome@cleantalk.org>"
|
1536 |
+
msgstr "СleanTalk <welcome@cleantalk.org>"
|
inc/ClassApbctListTable.php
ADDED
@@ -0,0 +1,1434 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* This is copy of the WP_List_Table class for the future compability
|
4 |
+
*/
|
5 |
+
|
6 |
+
/**
|
7 |
+
* Administration API: WP_List_Table class
|
8 |
+
*
|
9 |
+
* @package WordPress
|
10 |
+
* @subpackage List_Table
|
11 |
+
* @since 3.1.0
|
12 |
+
*/
|
13 |
+
|
14 |
+
/**
|
15 |
+
* Base class for displaying a list of items in an ajaxified HTML table.
|
16 |
+
*
|
17 |
+
* @since 3.1.0
|
18 |
+
* @access private
|
19 |
+
*/
|
20 |
+
class ABPCT_List_Table {
|
21 |
+
|
22 |
+
/**
|
23 |
+
* The current list of items.
|
24 |
+
*
|
25 |
+
* @since 3.1.0
|
26 |
+
* @var array
|
27 |
+
*/
|
28 |
+
public $items;
|
29 |
+
|
30 |
+
/**
|
31 |
+
* Various information about the current table.
|
32 |
+
*
|
33 |
+
* @since 3.1.0
|
34 |
+
* @var array
|
35 |
+
*/
|
36 |
+
protected $_args;
|
37 |
+
|
38 |
+
/**
|
39 |
+
* Various information needed for displaying the pagination.
|
40 |
+
*
|
41 |
+
* @since 3.1.0
|
42 |
+
* @var array
|
43 |
+
*/
|
44 |
+
protected $_pagination_args = array();
|
45 |
+
|
46 |
+
/**
|
47 |
+
* The current screen.
|
48 |
+
*
|
49 |
+
* @since 3.1.0
|
50 |
+
* @var object
|
51 |
+
*/
|
52 |
+
protected $screen;
|
53 |
+
|
54 |
+
/**
|
55 |
+
* Cached bulk actions.
|
56 |
+
*
|
57 |
+
* @since 3.1.0
|
58 |
+
* @var array
|
59 |
+
*/
|
60 |
+
private $_actions;
|
61 |
+
|
62 |
+
/**
|
63 |
+
* Cached pagination output.
|
64 |
+
*
|
65 |
+
* @since 3.1.0
|
66 |
+
* @var string
|
67 |
+
*/
|
68 |
+
private $_pagination;
|
69 |
+
|
70 |
+
/**
|
71 |
+
* The view switcher modes.
|
72 |
+
*
|
73 |
+
* @since 4.1.0
|
74 |
+
* @var array
|
75 |
+
*/
|
76 |
+
protected $modes = array();
|
77 |
+
|
78 |
+
/**
|
79 |
+
* Stores the value returned by ->get_column_info().
|
80 |
+
*
|
81 |
+
* @since 4.1.0
|
82 |
+
* @var array
|
83 |
+
*/
|
84 |
+
protected $_column_headers;
|
85 |
+
|
86 |
+
/**
|
87 |
+
* {@internal Missing Summary}
|
88 |
+
*
|
89 |
+
* @var array
|
90 |
+
*/
|
91 |
+
protected $compat_fields = array( '_args', '_pagination_args', 'screen', '_actions', '_pagination' );
|
92 |
+
|
93 |
+
/**
|
94 |
+
* {@internal Missing Summary}
|
95 |
+
*
|
96 |
+
* @var array
|
97 |
+
*/
|
98 |
+
protected $compat_methods = array(
|
99 |
+
'set_pagination_args',
|
100 |
+
'get_views',
|
101 |
+
'get_bulk_actions',
|
102 |
+
'bulk_actions',
|
103 |
+
'row_actions',
|
104 |
+
'months_dropdown',
|
105 |
+
'view_switcher',
|
106 |
+
'comments_bubble',
|
107 |
+
'get_items_per_page',
|
108 |
+
'pagination',
|
109 |
+
'get_sortable_columns',
|
110 |
+
'get_column_info',
|
111 |
+
'get_table_classes',
|
112 |
+
'display_tablenav',
|
113 |
+
'extra_tablenav',
|
114 |
+
'single_row_columns',
|
115 |
+
);
|
116 |
+
|
117 |
+
/**
|
118 |
+
* Constructor.
|
119 |
+
*
|
120 |
+
* The child class should call this constructor from its own constructor to override
|
121 |
+
* the default $args.
|
122 |
+
*
|
123 |
+
* @since 3.1.0
|
124 |
+
*
|
125 |
+
* @param array|string $args {
|
126 |
+
* Array or string of arguments.
|
127 |
+
*
|
128 |
+
* @type string $plural Plural value used for labels and the objects being listed.
|
129 |
+
* This affects things such as CSS class-names and nonces used
|
130 |
+
* in the list table, e.g. 'posts'. Default empty.
|
131 |
+
* @type string $singular Singular label for an object being listed, e.g. 'post'.
|
132 |
+
* Default empty
|
133 |
+
* @type bool $ajax Whether the list table supports Ajax. This includes loading
|
134 |
+
* and sorting data, for example. If true, the class will call
|
135 |
+
* the _js_vars() method in the footer to provide variables
|
136 |
+
* to any scripts handling Ajax events. Default false.
|
137 |
+
* @type string $screen String containing the hook name used to determine the current
|
138 |
+
* screen. If left null, the current screen will be automatically set.
|
139 |
+
* Default null.
|
140 |
+
* }
|
141 |
+
*/
|
142 |
+
public function __construct( $args = array() ) {
|
143 |
+
$args = wp_parse_args(
|
144 |
+
$args,
|
145 |
+
array(
|
146 |
+
'plural' => '',
|
147 |
+
'singular' => '',
|
148 |
+
'ajax' => false,
|
149 |
+
'screen' => null,
|
150 |
+
)
|
151 |
+
);
|
152 |
+
|
153 |
+
$this->screen = convert_to_screen( $args['screen'] );
|
154 |
+
|
155 |
+
add_filter( "manage_{$this->screen->id}_columns", array( $this, 'get_columns' ), 0 );
|
156 |
+
|
157 |
+
if ( ! $args['plural'] ) {
|
158 |
+
$args['plural'] = $this->screen->base;
|
159 |
+
}
|
160 |
+
|
161 |
+
$args['plural'] = sanitize_key( $args['plural'] );
|
162 |
+
$args['singular'] = sanitize_key( $args['singular'] );
|
163 |
+
|
164 |
+
$this->_args = $args;
|
165 |
+
|
166 |
+
if ( $args['ajax'] ) {
|
167 |
+
// wp_enqueue_script( 'list-table' );
|
168 |
+
add_action( 'admin_footer', array( $this, '_js_vars' ) );
|
169 |
+
}
|
170 |
+
|
171 |
+
if ( empty( $this->modes ) ) {
|
172 |
+
$this->modes = array(
|
173 |
+
'list' => __( 'List View' ),
|
174 |
+
'excerpt' => __( 'Excerpt View' ),
|
175 |
+
);
|
176 |
+
}
|
177 |
+
}
|
178 |
+
|
179 |
+
/**
|
180 |
+
* Make private properties readable for backward compatibility.
|
181 |
+
*
|
182 |
+
* @since 4.0.0
|
183 |
+
*
|
184 |
+
* @param string $name Property to get.
|
185 |
+
* @return mixed Property.
|
186 |
+
*/
|
187 |
+
public function __get( $name ) {
|
188 |
+
if ( in_array( $name, $this->compat_fields ) ) {
|
189 |
+
return $this->$name;
|
190 |
+
}
|
191 |
+
}
|
192 |
+
|
193 |
+
/**
|
194 |
+
* Make private properties settable for backward compatibility.
|
195 |
+
*
|
196 |
+
* @since 4.0.0
|
197 |
+
*
|
198 |
+
* @param string $name Property to check if set.
|
199 |
+
* @param mixed $value Property value.
|
200 |
+
* @return mixed Newly-set property.
|
201 |
+
*/
|
202 |
+
public function __set( $name, $value ) {
|
203 |
+
if ( in_array( $name, $this->compat_fields ) ) {
|
204 |
+
return $this->$name = $value;
|
205 |
+
}
|
206 |
+
}
|
207 |
+
|
208 |
+
/**
|
209 |
+
* Make private properties checkable for backward compatibility.
|
210 |
+
*
|
211 |
+
* @since 4.0.0
|
212 |
+
*
|
213 |
+
* @param string $name Property to check if set.
|
214 |
+
* @return bool Whether the property is set.
|
215 |
+
*/
|
216 |
+
public function __isset( $name ) {
|
217 |
+
if ( in_array( $name, $this->compat_fields ) ) {
|
218 |
+
return isset( $this->$name );
|
219 |
+
}
|
220 |
+
}
|
221 |
+
|
222 |
+
/**
|
223 |
+
* Make private properties un-settable for backward compatibility.
|
224 |
+
*
|
225 |
+
* @since 4.0.0
|
226 |
+
*
|
227 |
+
* @param string $name Property to unset.
|
228 |
+
*/
|
229 |
+
public function __unset( $name ) {
|
230 |
+
if ( in_array( $name, $this->compat_fields ) ) {
|
231 |
+
unset( $this->$name );
|
232 |
+
}
|
233 |
+
}
|
234 |
+
|
235 |
+
/**
|
236 |
+
* Make private/protected methods readable for backward compatibility.
|
237 |
+
*
|
238 |
+
* @since 4.0.0
|
239 |
+
*
|
240 |
+
* @param string $name Method to call.
|
241 |
+
* @param array $arguments Arguments to pass when calling.
|
242 |
+
* @return mixed|bool Return value of the callback, false otherwise.
|
243 |
+
*/
|
244 |
+
public function __call( $name, $arguments ) {
|
245 |
+
if ( in_array( $name, $this->compat_methods ) ) {
|
246 |
+
return $this->$name( ...$arguments );
|
247 |
+
}
|
248 |
+
return false;
|
249 |
+
}
|
250 |
+
|
251 |
+
/**
|
252 |
+
* Checks the current user's permissions
|
253 |
+
*
|
254 |
+
* @since 3.1.0
|
255 |
+
* @abstract
|
256 |
+
*/
|
257 |
+
public function ajax_user_can() {
|
258 |
+
die( 'function WP_List_Table::ajax_user_can() must be over-ridden in a sub-class.' );
|
259 |
+
}
|
260 |
+
|
261 |
+
/**
|
262 |
+
* Prepares the list of items for displaying.
|
263 |
+
*
|
264 |
+
* @uses WP_List_Table::set_pagination_args()
|
265 |
+
*
|
266 |
+
* @since 3.1.0
|
267 |
+
* @abstract
|
268 |
+
*/
|
269 |
+
public function prepare_items() {
|
270 |
+
die( 'function WP_List_Table::prepare_items() must be over-ridden in a sub-class.' );
|
271 |
+
}
|
272 |
+
|
273 |
+
/**
|
274 |
+
* An internal method that sets all the necessary pagination arguments
|
275 |
+
*
|
276 |
+
* @since 3.1.0
|
277 |
+
*
|
278 |
+
* @param array|string $args Array or string of arguments with information about the pagination.
|
279 |
+
*/
|
280 |
+
protected function set_pagination_args( $args ) {
|
281 |
+
$args = wp_parse_args(
|
282 |
+
$args,
|
283 |
+
array(
|
284 |
+
'total_items' => 0,
|
285 |
+
'total_pages' => 0,
|
286 |
+
'per_page' => 0,
|
287 |
+
)
|
288 |
+
);
|
289 |
+
|
290 |
+
if ( ! $args['total_pages'] && $args['per_page'] > 0 ) {
|
291 |
+
$args['total_pages'] = ceil( $args['total_items'] / $args['per_page'] );
|
292 |
+
}
|
293 |
+
|
294 |
+
// Redirect if page number is invalid and headers are not already sent.
|
295 |
+
if ( ! headers_sent() && ! wp_doing_ajax() && $args['total_pages'] > 0 && $this->get_pagenum() > $args['total_pages'] ) {
|
296 |
+
wp_redirect( add_query_arg( 'paged', $args['total_pages'] ) );
|
297 |
+
exit;
|
298 |
+
}
|
299 |
+
|
300 |
+
$this->_pagination_args = $args;
|
301 |
+
}
|
302 |
+
|
303 |
+
/**
|
304 |
+
* Access the pagination args.
|
305 |
+
*
|
306 |
+
* @since 3.1.0
|
307 |
+
*
|
308 |
+
* @param string $key Pagination argument to retrieve. Common values include 'total_items',
|
309 |
+
* 'total_pages', 'per_page', or 'infinite_scroll'.
|
310 |
+
* @return int Number of items that correspond to the given pagination argument.
|
311 |
+
*/
|
312 |
+
public function get_pagination_arg( $key ) {
|
313 |
+
if ( 'page' === $key ) {
|
314 |
+
return $this->get_pagenum();
|
315 |
+
}
|
316 |
+
|
317 |
+
if ( isset( $this->_pagination_args[ $key ] ) ) {
|
318 |
+
return $this->_pagination_args[ $key ];
|
319 |
+
}
|
320 |
+
}
|
321 |
+
|
322 |
+
/**
|
323 |
+
* Whether the table has items to display or not
|
324 |
+
*
|
325 |
+
* @since 3.1.0
|
326 |
+
*
|
327 |
+
* @return bool
|
328 |
+
*/
|
329 |
+
public function has_items() {
|
330 |
+
return ! empty( $this->items );
|
331 |
+
}
|
332 |
+
|
333 |
+
/**
|
334 |
+
* Message to be displayed when there are no items
|
335 |
+
*
|
336 |
+
* @since 3.1.0
|
337 |
+
*/
|
338 |
+
public function no_items() {
|
339 |
+
_e( 'No items found.' );
|
340 |
+
}
|
341 |
+
|
342 |
+
/**
|
343 |
+
* Displays the search box.
|
344 |
+
*
|
345 |
+
* @since 3.1.0
|
346 |
+
*
|
347 |
+
* @param string $text The 'submit' button label.
|
348 |
+
* @param string $input_id ID attribute value for the search input field.
|
349 |
+
*/
|
350 |
+
public function search_box( $text, $input_id ) {
|
351 |
+
if ( empty( $_REQUEST['s'] ) && ! $this->has_items() ) {
|
352 |
+
return;
|
353 |
+
}
|
354 |
+
|
355 |
+
$input_id = $input_id . '-search-input';
|
356 |
+
|
357 |
+
if ( ! empty( $_REQUEST['orderby'] ) ) {
|
358 |
+
echo '<input type="hidden" name="orderby" value="' . esc_attr( $_REQUEST['orderby'] ) . '" />';
|
359 |
+
}
|
360 |
+
if ( ! empty( $_REQUEST['order'] ) ) {
|
361 |
+
echo '<input type="hidden" name="order" value="' . esc_attr( $_REQUEST['order'] ) . '" />';
|
362 |
+
}
|
363 |
+
if ( ! empty( $_REQUEST['post_mime_type'] ) ) {
|
364 |
+
echo '<input type="hidden" name="post_mime_type" value="' . esc_attr( $_REQUEST['post_mime_type'] ) . '" />';
|
365 |
+
}
|
366 |
+
if ( ! empty( $_REQUEST['detached'] ) ) {
|
367 |
+
echo '<input type="hidden" name="detached" value="' . esc_attr( $_REQUEST['detached'] ) . '" />';
|
368 |
+
}
|
369 |
+
?>
|
370 |
+
<p class="search-box">
|
371 |
+
<label class="screen-reader-text" for="<?php echo esc_attr( $input_id ); ?>"><?php echo $text; ?>:</label>
|
372 |
+
<input type="search" id="<?php echo esc_attr( $input_id ); ?>" name="s" value="<?php _admin_search_query(); ?>" />
|
373 |
+
<?php submit_button( $text, '', '', false, array( 'id' => 'search-submit' ) ); ?>
|
374 |
+
</p>
|
375 |
+
<?php
|
376 |
+
}
|
377 |
+
|
378 |
+
/**
|
379 |
+
* Get an associative array ( id => link ) with the list
|
380 |
+
* of views available on this table.
|
381 |
+
*
|
382 |
+
* @since 3.1.0
|
383 |
+
*
|
384 |
+
* @return array
|
385 |
+
*/
|
386 |
+
protected function get_views() {
|
387 |
+
return array();
|
388 |
+
}
|
389 |
+
|
390 |
+
/**
|
391 |
+
* Display the list of views available on this table.
|
392 |
+
*
|
393 |
+
* @since 3.1.0
|
394 |
+
*/
|
395 |
+
public function views() {
|
396 |
+
$views = $this->get_views();
|
397 |
+
/**
|
398 |
+
* Filters the list of available list table views.
|
399 |
+
*
|
400 |
+
* The dynamic portion of the hook name, `$this->screen->id`, refers
|
401 |
+
* to the ID of the current screen, usually a string.
|
402 |
+
*
|
403 |
+
* @since 3.5.0
|
404 |
+
*
|
405 |
+
* @param string[] $views An array of available list table views.
|
406 |
+
*/
|
407 |
+
$views = apply_filters( "views_{$this->screen->id}", $views );
|
408 |
+
|
409 |
+
if ( empty( $views ) ) {
|
410 |
+
return;
|
411 |
+
}
|
412 |
+
|
413 |
+
$this->screen->render_screen_reader_content( 'heading_views' );
|
414 |
+
|
415 |
+
echo "<ul class='subsubsub'>\n";
|
416 |
+
foreach ( $views as $class => $view ) {
|
417 |
+
$views[ $class ] = "\t<li class='$class'>$view";
|
418 |
+
}
|
419 |
+
echo implode( " |</li>\n", $views ) . "</li>\n";
|
420 |
+
echo '</ul>';
|
421 |
+
}
|
422 |
+
|
423 |
+
/**
|
424 |
+
* Get an associative array ( option_name => option_title ) with the list
|
425 |
+
* of bulk actions available on this table.
|
426 |
+
*
|
427 |
+
* @since 3.1.0
|
428 |
+
*
|
429 |
+
* @return array
|
430 |
+
*/
|
431 |
+
protected function get_bulk_actions() {
|
432 |
+
return array();
|
433 |
+
}
|
434 |
+
|
435 |
+
/**
|
436 |
+
* Display the bulk actions dropdown.
|
437 |
+
*
|
438 |
+
* @since 3.1.0
|
439 |
+
*
|
440 |
+
* @param string $which The location of the bulk actions: 'top' or 'bottom'.
|
441 |
+
* This is designated as optional for backward compatibility.
|
442 |
+
*/
|
443 |
+
protected function bulk_actions( $which = '' ) {
|
444 |
+
if ( is_null( $this->_actions ) ) {
|
445 |
+
$this->_actions = $this->get_bulk_actions();
|
446 |
+
/**
|
447 |
+
* Filters the list table Bulk Actions drop-down.
|
448 |
+
*
|
449 |
+
* The dynamic portion of the hook name, `$this->screen->id`, refers
|
450 |
+
* to the ID of the current screen, usually a string.
|
451 |
+
*
|
452 |
+
* This filter can currently only be used to remove bulk actions.
|
453 |
+
*
|
454 |
+
* @since 3.5.0
|
455 |
+
*
|
456 |
+
* @param string[] $actions An array of the available bulk actions.
|
457 |
+
*/
|
458 |
+
$this->_actions = apply_filters( "bulk_actions-{$this->screen->id}", $this->_actions ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores
|
459 |
+
$two = '';
|
460 |
+
} else {
|
461 |
+
$two = '2';
|
462 |
+
}
|
463 |
+
|
464 |
+
if ( empty( $this->_actions ) ) {
|
465 |
+
return;
|
466 |
+
}
|
467 |
+
|
468 |
+
echo '<label for="bulk-action-selector-' . esc_attr( $which ) . '" class="screen-reader-text">' . __( 'Select bulk action' ) . '</label>';
|
469 |
+
echo '<select name="action' . $two . '" id="bulk-action-selector-' . esc_attr( $which ) . "\">\n";
|
470 |
+
echo '<option value="-1">' . __( 'Bulk Actions' ) . "</option>\n";
|
471 |
+
|
472 |
+
foreach ( $this->_actions as $name => $title ) {
|
473 |
+
$class = 'edit' === $name ? ' class="hide-if-no-js"' : '';
|
474 |
+
|
475 |
+
echo "\t" . '<option value="' . $name . '"' . $class . '>' . $title . "</option>\n";
|
476 |
+
}
|
477 |
+
|
478 |
+
echo "</select>\n";
|
479 |
+
|
480 |
+
submit_button( __( 'Apply' ), 'action', '', false, array( 'id' => "doaction$two" ) );
|
481 |
+
echo "\n";
|
482 |
+
}
|
483 |
+
|
484 |
+
/**
|
485 |
+
* Get the current action selected from the bulk actions dropdown.
|
486 |
+
*
|
487 |
+
* @since 3.1.0
|
488 |
+
*
|
489 |
+
* @return string|false The action name or False if no action was selected
|
490 |
+
*/
|
491 |
+
public function current_action() {
|
492 |
+
if ( isset( $_REQUEST['filter_action'] ) && ! empty( $_REQUEST['filter_action'] ) ) {
|
493 |
+
return false;
|
494 |
+
}
|
495 |
+
|
496 |
+
if ( isset( $_REQUEST['action'] ) && -1 != $_REQUEST['action'] ) {
|
497 |
+
return $_REQUEST['action'];
|
498 |
+
}
|
499 |
+
|
500 |
+
if ( isset( $_REQUEST['action2'] ) && -1 != $_REQUEST['action2'] ) {
|
501 |
+
return $_REQUEST['action2'];
|
502 |
+
}
|
503 |
+
|
504 |
+
return false;
|
505 |
+
}
|
506 |
+
|
507 |
+
/**
|
508 |
+
* Generate row actions div
|
509 |
+
*
|
510 |
+
* @since 3.1.0
|
511 |
+
*
|
512 |
+
* @param string[] $actions An array of action links.
|
513 |
+
* @param bool $always_visible Whether the actions should be always visible.
|
514 |
+
* @return string
|
515 |
+
*/
|
516 |
+
protected function row_actions( $actions, $always_visible = false ) {
|
517 |
+
$action_count = count( $actions );
|
518 |
+
$i = 0;
|
519 |
+
|
520 |
+
if ( ! $action_count ) {
|
521 |
+
return '';
|
522 |
+
}
|
523 |
+
|
524 |
+
$out = '<div class="' . ( $always_visible ? 'row-actions visible' : 'row-actions' ) . '">';
|
525 |
+
foreach ( $actions as $action => $link ) {
|
526 |
+
++$i;
|
527 |
+
( $i == $action_count ) ? $sep = '' : $sep = ' | ';
|
528 |
+
$out .= "<span class='$action'>$link$sep</span>";
|
529 |
+
}
|
530 |
+
$out .= '</div>';
|
531 |
+
|
532 |
+
$out .= '<button type="button" class="toggle-row"><span class="screen-reader-text">' . __( 'Show more details' ) . '</span></button>';
|
533 |
+
|
534 |
+
return $out;
|
535 |
+
}
|
536 |
+
|
537 |
+
/**
|
538 |
+
* Display a monthly dropdown for filtering items
|
539 |
+
*
|
540 |
+
* @since 3.1.0
|
541 |
+
*
|
542 |
+
* @global wpdb $wpdb WordPress database abstraction object.
|
543 |
+
* @global WP_Locale $wp_locale WordPress date and time locale object.
|
544 |
+
*
|
545 |
+
* @param string $post_type
|
546 |
+
*/
|
547 |
+
protected function months_dropdown( $post_type ) {
|
548 |
+
global $wpdb, $wp_locale;
|
549 |
+
|
550 |
+
/**
|
551 |
+
* Filters whether to remove the 'Months' drop-down from the post list table.
|
552 |
+
*
|
553 |
+
* @since 4.2.0
|
554 |
+
*
|
555 |
+
* @param bool $disable Whether to disable the drop-down. Default false.
|
556 |
+
* @param string $post_type The post type.
|
557 |
+
*/
|
558 |
+
if ( apply_filters( 'disable_months_dropdown', false, $post_type ) ) {
|
559 |
+
return;
|
560 |
+
}
|
561 |
+
|
562 |
+
$extra_checks = "AND post_status != 'auto-draft'";
|
563 |
+
if ( ! isset( $_GET['post_status'] ) || 'trash' !== $_GET['post_status'] ) {
|
564 |
+
$extra_checks .= " AND post_status != 'trash'";
|
565 |
+
} elseif ( isset( $_GET['post_status'] ) ) {
|
566 |
+
$extra_checks = $wpdb->prepare( ' AND post_status = %s', $_GET['post_status'] );
|
567 |
+
}
|
568 |
+
|
569 |
+
$months = $wpdb->get_results(
|
570 |
+
$wpdb->prepare(
|
571 |
+
"
|
572 |
+
SELECT DISTINCT YEAR( post_date ) AS year, MONTH( post_date ) AS month
|
573 |
+
FROM $wpdb->posts
|
574 |
+
WHERE post_type = %s
|
575 |
+
$extra_checks
|
576 |
+
ORDER BY post_date DESC
|
577 |
+
",
|
578 |
+
$post_type
|
579 |
+
)
|
580 |
+
);
|
581 |
+
|
582 |
+
/**
|
583 |
+
* Filters the 'Months' drop-down results.
|
584 |
+
*
|
585 |
+
* @since 3.7.0
|
586 |
+
*
|
587 |
+
* @param object $months The months drop-down query results.
|
588 |
+
* @param string $post_type The post type.
|
589 |
+
*/
|
590 |
+
$months = apply_filters( 'months_dropdown_results', $months, $post_type );
|
591 |
+
|
592 |
+
$month_count = count( $months );
|
593 |
+
|
594 |
+
if ( ! $month_count || ( 1 == $month_count && 0 == $months[0]->month ) ) {
|
595 |
+
return;
|
596 |
+
}
|
597 |
+
|
598 |
+
$m = isset( $_GET['m'] ) ? (int) $_GET['m'] : 0;
|
599 |
+
?>
|
600 |
+
<label for="filter-by-date" class="screen-reader-text"><?php _e( 'Filter by date' ); ?></label>
|
601 |
+
<select name="m" id="filter-by-date">
|
602 |
+
<option<?php selected( $m, 0 ); ?> value="0"><?php _e( 'All dates' ); ?></option>
|
603 |
+
<?php
|
604 |
+
foreach ( $months as $arc_row ) {
|
605 |
+
if ( 0 == $arc_row->year ) {
|
606 |
+
continue;
|
607 |
+
}
|
608 |
+
|
609 |
+
$month = zeroise( $arc_row->month, 2 );
|
610 |
+
$year = $arc_row->year;
|
611 |
+
|
612 |
+
printf(
|
613 |
+
"<option %s value='%s'>%s</option>\n",
|
614 |
+
selected( $m, $year . $month, false ),
|
615 |
+
esc_attr( $arc_row->year . $month ),
|
616 |
+
/* translators: 1: Month name, 2: 4-digit year. */
|
617 |
+
sprintf( __( '%1$s %2$d' ), $wp_locale->get_month( $month ), $year )
|
618 |
+
);
|
619 |
+
}
|
620 |
+
?>
|
621 |
+
</select>
|
622 |
+
<?php
|
623 |
+
}
|
624 |
+
|
625 |
+
/**
|
626 |
+
* Display a view switcher
|
627 |
+
*
|
628 |
+
* @since 3.1.0
|
629 |
+
*
|
630 |
+
* @param string $current_mode
|
631 |
+
*/
|
632 |
+
protected function view_switcher( $current_mode ) {
|
633 |
+
?>
|
634 |
+
<input type="hidden" name="mode" value="<?php echo esc_attr( $current_mode ); ?>" />
|
635 |
+
<div class="view-switch">
|
636 |
+
<?php
|
637 |
+
foreach ( $this->modes as $mode => $title ) {
|
638 |
+
$classes = array( 'view-' . $mode );
|
639 |
+
$aria_current = '';
|
640 |
+
|
641 |
+
if ( $current_mode === $mode ) {
|
642 |
+
$classes[] = 'current';
|
643 |
+
$aria_current = ' aria-current="page"';
|
644 |
+
}
|
645 |
+
printf(
|
646 |
+
"<a href='%s' class='%s' id='view-switch-$mode'$aria_current><span class='screen-reader-text'>%s</span></a>\n",
|
647 |
+
esc_url( add_query_arg( 'mode', $mode ) ),
|
648 |
+
implode( ' ', $classes ),
|
649 |
+
$title
|
650 |
+
);
|
651 |
+
}
|
652 |
+
?>
|
653 |
+
</div>
|
654 |
+
<?php
|
655 |
+
}
|
656 |
+
|
657 |
+
/**
|
658 |
+
* Display a comment count bubble
|
659 |
+
*
|
660 |
+
* @since 3.1.0
|
661 |
+
*
|
662 |
+
* @param int $post_id The post ID.
|
663 |
+
* @param int $pending_comments Number of pending comments.
|
664 |
+
*/
|
665 |
+
protected function comments_bubble( $post_id, $pending_comments ) {
|
666 |
+
$approved_comments = get_comments_number();
|
667 |
+
|
668 |
+
$approved_comments_number = number_format_i18n( $approved_comments );
|
669 |
+
$pending_comments_number = number_format_i18n( $pending_comments );
|
670 |
+
|
671 |
+
$approved_only_phrase = sprintf(
|
672 |
+
/* translators: %s: Number of comments. */
|
673 |
+
_n( '%s comment', '%s comments', $approved_comments ),
|
674 |
+
$approved_comments_number
|
675 |
+
);
|
676 |
+
|
677 |
+
$approved_phrase = sprintf(
|
678 |
+
/* translators: %s: Number of comments. */
|
679 |
+
_n( '%s approved comment', '%s approved comments', $approved_comments ),
|
680 |
+
$approved_comments_number
|
681 |
+
);
|
682 |
+
|
683 |
+
$pending_phrase = sprintf(
|
684 |
+
/* translators: %s: Number of comments. */
|
685 |
+
_n( '%s pending comment', '%s pending comments', $pending_comments ),
|
686 |
+
$pending_comments_number
|
687 |
+
);
|
688 |
+
|
689 |
+
// No comments at all.
|
690 |
+
if ( ! $approved_comments && ! $pending_comments ) {
|
691 |
+
printf(
|
692 |
+
'<span aria-hidden="true">—</span><span class="screen-reader-text">%s</span>',
|
693 |
+
__( 'No comments' )
|
694 |
+
);
|
695 |
+
// Approved comments have different display depending on some conditions.
|
696 |
+
} elseif ( $approved_comments ) {
|
697 |
+
printf(
|
698 |
+
'<a href="%s" class="post-com-count post-com-count-approved"><span class="comment-count-approved" aria-hidden="true">%s</span><span class="screen-reader-text">%s</span></a>',
|
699 |
+
esc_url(
|
700 |
+
add_query_arg(
|
701 |
+
array(
|
702 |
+
'p' => $post_id,
|
703 |
+
'comment_status' => 'approved',
|
704 |
+
),
|
705 |
+
admin_url( 'edit-comments.php' )
|
706 |
+
)
|
707 |
+
),
|
708 |
+
$approved_comments_number,
|
709 |
+
$pending_comments ? $approved_phrase : $approved_only_phrase
|
710 |
+
);
|
711 |
+
} else {
|
712 |
+
printf(
|
713 |
+
'<span class="post-com-count post-com-count-no-comments"><span class="comment-count comment-count-no-comments" aria-hidden="true">%s</span><span class="screen-reader-text">%s</span></span>',
|
714 |
+
$approved_comments_number,
|
715 |
+
$pending_comments ? __( 'No approved comments' ) : __( 'No comments' )
|
716 |
+
);
|
717 |
+
}
|
718 |
+
|
719 |
+
if ( $pending_comments ) {
|
720 |
+
printf(
|
721 |
+
'<a href="%s" class="post-com-count post-com-count-pending"><span class="comment-count-pending" aria-hidden="true">%s</span><span class="screen-reader-text">%s</span></a>',
|
722 |
+
esc_url(
|
723 |
+
add_query_arg(
|
724 |
+
array(
|
725 |
+
'p' => $post_id,
|
726 |
+
'comment_status' => 'moderated',
|
727 |
+
),
|
728 |
+
admin_url( 'edit-comments.php' )
|
729 |
+
)
|
730 |
+
),
|
731 |
+
$pending_comments_number,
|
732 |
+
$pending_phrase
|
733 |
+
);
|
734 |
+
} else {
|
735 |
+
printf(
|
736 |
+
'<span class="post-com-count post-com-count-pending post-com-count-no-pending"><span class="comment-count comment-count-no-pending" aria-hidden="true">%s</span><span class="screen-reader-text">%s</span></span>',
|
737 |
+
$pending_comments_number,
|
738 |
+
$approved_comments ? __( 'No pending comments' ) : __( 'No comments' )
|
739 |
+
);
|
740 |
+
}
|
741 |
+
}
|
742 |
+
|
743 |
+
/**
|
744 |
+
* Get the current page number
|
745 |
+
*
|
746 |
+
* @since 3.1.0
|
747 |
+
*
|
748 |
+
* @return int
|
749 |
+
*/
|
750 |
+
public function get_pagenum() {
|
751 |
+
$pagenum = isset( $_REQUEST['paged'] ) ? absint( $_REQUEST['paged'] ) : 0;
|
752 |
+
|
753 |
+
if ( isset( $this->_pagination_args['total_pages'] ) && $pagenum > $this->_pagination_args['total_pages'] ) {
|
754 |
+
$pagenum = $this->_pagination_args['total_pages'];
|
755 |
+
}
|
756 |
+
|
757 |
+
return max( 1, $pagenum );
|
758 |
+
}
|
759 |
+
|
760 |
+
/**
|
761 |
+
* Get number of items to display on a single page
|
762 |
+
*
|
763 |
+
* @since 3.1.0
|
764 |
+
*
|
765 |
+
* @param string $option
|
766 |
+
* @param int $default
|
767 |
+
* @return int
|
768 |
+
*/
|
769 |
+
protected function get_items_per_page( $option, $default = 20 ) {
|
770 |
+
$per_page = (int) get_user_option( $option );
|
771 |
+
if ( empty( $per_page ) || $per_page < 1 ) {
|
772 |
+
$per_page = $default;
|
773 |
+
}
|
774 |
+
|
775 |
+
/**
|
776 |
+
* Filters the number of items to be displayed on each page of the list table.
|
777 |
+
*
|
778 |
+
* The dynamic hook name, $option, refers to the `per_page` option depending
|
779 |
+
* on the type of list table in use. Possible values include: 'edit_comments_per_page',
|
780 |
+
* 'sites_network_per_page', 'site_themes_network_per_page', 'themes_network_per_page',
|
781 |
+
* 'users_network_per_page', 'edit_post_per_page', 'edit_page_per_page',
|
782 |
+
* 'edit_{$post_type}_per_page', etc.
|
783 |
+
*
|
784 |
+
* @since 2.9.0
|
785 |
+
*
|
786 |
+
* @param int $per_page Number of items to be displayed. Default 20.
|
787 |
+
*/
|
788 |
+
return (int) apply_filters( "{$option}", $per_page );
|
789 |
+
}
|
790 |
+
|
791 |
+
/**
|
792 |
+
* Display the pagination.
|
793 |
+
*
|
794 |
+
* @since 3.1.0
|
795 |
+
*
|
796 |
+
* @param string $which
|
797 |
+
*/
|
798 |
+
protected function pagination( $which ) {
|
799 |
+
if ( empty( $this->_pagination_args ) ) {
|
800 |
+
return;
|
801 |
+
}
|
802 |
+
|
803 |
+
$total_items = $this->_pagination_args['total_items'];
|
804 |
+
$total_pages = $this->_pagination_args['total_pages'];
|
805 |
+
$infinite_scroll = false;
|
806 |
+
if ( isset( $this->_pagination_args['infinite_scroll'] ) ) {
|
807 |
+
$infinite_scroll = $this->_pagination_args['infinite_scroll'];
|
808 |
+
}
|
809 |
+
|
810 |
+
if ( 'top' === $which && $total_pages > 1 ) {
|
811 |
+
$this->screen->render_screen_reader_content( 'heading_pagination' );
|
812 |
+
}
|
813 |
+
|
814 |
+
$output = '<span class="displaying-num">' . sprintf(
|
815 |
+
/* translators: %s: Number of items. */
|
816 |
+
_n( '%s item', '%s items', $total_items ),
|
817 |
+
number_format_i18n( $total_items )
|
818 |
+
) . '</span>';
|
819 |
+
|
820 |
+
$current = $this->get_pagenum();
|
821 |
+
$removable_query_args = wp_removable_query_args();
|
822 |
+
|
823 |
+
$current_url = set_url_scheme( 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] );
|
824 |
+
|
825 |
+
$current_url = remove_query_arg( $removable_query_args, $current_url );
|
826 |
+
|
827 |
+
$page_links = array();
|
828 |
+
|
829 |
+
$total_pages_before = '<span class="paging-input">';
|
830 |
+
$total_pages_after = '</span></span>';
|
831 |
+
|
832 |
+
$disable_first = false;
|
833 |
+
$disable_last = false;
|
834 |
+
$disable_prev = false;
|
835 |
+
$disable_next = false;
|
836 |
+
|
837 |
+
if ( $current == 1 ) {
|
838 |
+
$disable_first = true;
|
839 |
+
$disable_prev = true;
|
840 |
+
}
|
841 |
+
if ( $current == 2 ) {
|
842 |
+
$disable_first = true;
|
843 |
+
}
|
844 |
+
if ( $current == $total_pages ) {
|
845 |
+
$disable_last = true;
|
846 |
+
$disable_next = true;
|
847 |
+
}
|
848 |
+
if ( $current == $total_pages - 1 ) {
|
849 |
+
$disable_last = true;
|
850 |
+
}
|
851 |
+
|
852 |
+
if ( $disable_first ) {
|
853 |
+
$page_links[] = '<span class="tablenav-pages-navspan button disabled" aria-hidden="true">«</span>';
|
854 |
+
} else {
|
855 |
+
$page_links[] = sprintf(
|
856 |
+
"<a class='first-page button' href='%s'><span class='screen-reader-text'>%s</span><span aria-hidden='true'>%s</span></a>",
|
857 |
+
esc_url( remove_query_arg( 'paged', $current_url ) ),
|
858 |
+
__( 'First page' ),
|
859 |
+
'«'
|
860 |
+
);
|
861 |
+
}
|
862 |
+
|
863 |
+
if ( $disable_prev ) {
|
864 |
+
$page_links[] = '<span class="tablenav-pages-navspan button disabled" aria-hidden="true">‹</span>';
|
865 |
+
} else {
|
866 |
+
$page_links[] = sprintf(
|
867 |
+
"<a class='prev-page button' href='%s'><span class='screen-reader-text'>%s</span><span aria-hidden='true'>%s</span></a>",
|
868 |
+
esc_url( add_query_arg( 'paged', max( 1, $current - 1 ), $current_url ) ),
|
869 |
+
__( 'Previous page' ),
|
870 |
+
'‹'
|
871 |
+
);
|
872 |
+
}
|
873 |
+
|
874 |
+
if ( 'bottom' === $which ) {
|
875 |
+
$html_current_page = $current;
|
876 |
+
$total_pages_before = '<span class="screen-reader-text">' . __( 'Current Page' ) . '</span><span id="table-paging" class="paging-input"><span class="tablenav-paging-text">';
|
877 |
+
} else {
|
878 |
+
$html_current_page = sprintf(
|
879 |
+
"%s<input class='current-page' id='current-page-selector' type='text' name='paged' value='%s' size='%d' aria-describedby='table-paging' /><span class='tablenav-paging-text'>",
|
880 |
+
'<label for="current-page-selector" class="screen-reader-text">' . __( 'Current Page' ) . '</label>',
|
881 |
+
$current,
|
882 |
+
strlen( $total_pages )
|
883 |
+
);
|
884 |
+
}
|
885 |
+
$html_total_pages = sprintf( "<span class='total-pages'>%s</span>", number_format_i18n( $total_pages ) );
|
886 |
+
$page_links[] = $total_pages_before . sprintf(
|
887 |
+
/* translators: 1: Current page, 2: Total pages. */
|
888 |
+
_x( '%1$s of %2$s', 'paging' ),
|
889 |
+
$html_current_page,
|
890 |
+
$html_total_pages
|
891 |
+
) . $total_pages_after;
|
892 |
+
|
893 |
+
if ( $disable_next ) {
|
894 |
+
$page_links[] = '<span class="tablenav-pages-navspan button disabled" aria-hidden="true">›</span>';
|
895 |
+
} else {
|
896 |
+
$page_links[] = sprintf(
|
897 |
+
"<a class='next-page button' href='%s'><span class='screen-reader-text'>%s</span><span aria-hidden='true'>%s</span></a>",
|
898 |
+
esc_url( add_query_arg( 'paged', min( $total_pages, $current + 1 ), $current_url ) ),
|
899 |
+
__( 'Next page' ),
|
900 |
+
'›'
|
901 |
+
);
|
902 |
+
}
|
903 |
+
|
904 |
+
if ( $disable_last ) {
|
905 |
+
$page_links[] = '<span class="tablenav-pages-navspan button disabled" aria-hidden="true">»</span>';
|
906 |
+
} else {
|
907 |
+
$page_links[] = sprintf(
|
908 |
+
"<a class='last-page button' href='%s'><span class='screen-reader-text'>%s</span><span aria-hidden='true'>%s</span></a>",
|
909 |
+
esc_url( add_query_arg( 'paged', $total_pages, $current_url ) ),
|
910 |
+
__( 'Last page' ),
|
911 |
+
'»'
|
912 |
+
);
|
913 |
+
}
|
914 |
+
|
915 |
+
$pagination_links_class = 'pagination-links';
|
916 |
+
if ( ! empty( $infinite_scroll ) ) {
|
917 |
+
$pagination_links_class .= ' hide-if-js';
|
918 |
+
}
|
919 |
+
$output .= "\n<span class='$pagination_links_class'>" . join( "\n", $page_links ) . '</span>';
|
920 |
+
|
921 |
+
if ( $total_pages ) {
|
922 |
+
$page_class = $total_pages < 2 ? ' one-page' : '';
|
923 |
+
} else {
|
924 |
+
$page_class = ' no-pages';
|
925 |
+
}
|
926 |
+
$this->_pagination = "<div class='tablenav-pages{$page_class}'>$output</div>";
|
927 |
+
|
928 |
+
echo $this->_pagination;
|
929 |
+
}
|
930 |
+
|
931 |
+
/**
|
932 |
+
* Get a list of columns. The format is:
|
933 |
+
* 'internal-name' => 'Title'
|
934 |
+
*
|
935 |
+
* @since 3.1.0
|
936 |
+
* @abstract
|
937 |
+
*
|
938 |
+
* @return array
|
939 |
+
*/
|
940 |
+
public function get_columns() {
|
941 |
+
die( 'function WP_List_Table::get_columns() must be over-ridden in a sub-class.' );
|
942 |
+
}
|
943 |
+
|
944 |
+
/**
|
945 |
+
* Get a list of sortable columns. The format is:
|
946 |
+
* 'internal-name' => 'orderby'
|
947 |
+
* or
|
948 |
+
* 'internal-name' => array( 'orderby', true )
|
949 |
+
*
|
950 |
+
* The second format will make the initial sorting order be descending
|
951 |
+
*
|
952 |
+
* @since 3.1.0
|
953 |
+
*
|
954 |
+
* @return array
|
955 |
+
*/
|
956 |
+
protected function get_sortable_columns() {
|
957 |
+
return array();
|
958 |
+
}
|
959 |
+
|
960 |
+
/**
|
961 |
+
* Gets the name of the default primary column.
|
962 |
+
*
|
963 |
+
* @since 4.3.0
|
964 |
+
*
|
965 |
+
* @return string Name of the default primary column, in this case, an empty string.
|
966 |
+
*/
|
967 |
+
protected function get_default_primary_column_name() {
|
968 |
+
$columns = $this->get_columns();
|
969 |
+
$column = '';
|
970 |
+
|
971 |
+
if ( empty( $columns ) ) {
|
972 |
+
return $column;
|
973 |
+
}
|
974 |
+
|
975 |
+
// We need a primary defined so responsive views show something,
|
976 |
+
// so let's fall back to the first non-checkbox column.
|
977 |
+
foreach ( $columns as $col => $column_name ) {
|
978 |
+
if ( 'cb' === $col ) {
|
979 |
+
continue;
|
980 |
+
}
|
981 |
+
|
982 |
+
$column = $col;
|
983 |
+
break;
|
984 |
+
}
|
985 |
+
|
986 |
+
return $column;
|
987 |
+
}
|
988 |
+
|
989 |
+
/**
|
990 |
+
* Public wrapper for WP_List_Table::get_default_primary_column_name().
|
991 |
+
*
|
992 |
+
* @since 4.4.0
|
993 |
+
*
|
994 |
+
* @return string Name of the default primary column.
|
995 |
+
*/
|
996 |
+
public function get_primary_column() {
|
997 |
+
return $this->get_primary_column_name();
|
998 |
+
}
|
999 |
+
|
1000 |
+
/**
|
1001 |
+
* Gets the name of the primary column.
|
1002 |
+
*
|
1003 |
+
* @since 4.3.0
|
1004 |
+
*
|
1005 |
+
* @return string The name of the primary column.
|
1006 |
+
*/
|
1007 |
+
protected function get_primary_column_name() {
|
1008 |
+
$columns = get_column_headers( $this->screen );
|
1009 |
+
$default = $this->get_default_primary_column_name();
|
1010 |
+
|
1011 |
+
// If the primary column doesn't exist fall back to the
|
1012 |
+
// first non-checkbox column.
|
1013 |
+
if ( ! isset( $columns[ $default ] ) ) {
|
1014 |
+
$default = ABPCT_List_Table::get_default_primary_column_name();
|
1015 |
+
}
|
1016 |
+
|
1017 |
+
/**
|
1018 |
+
* Filters the name of the primary column for the current list table.
|
1019 |
+
*
|
1020 |
+
* @since 4.3.0
|
1021 |
+
*
|
1022 |
+
* @param string $default Column name default for the specific list table, e.g. 'name'.
|
1023 |
+
* @param string $context Screen ID for specific list table, e.g. 'plugins'.
|
1024 |
+
*/
|
1025 |
+
$column = apply_filters( 'list_table_primary_column', $default, $this->screen->id );
|
1026 |
+
|
1027 |
+
if ( empty( $column ) || ! isset( $columns[ $column ] ) ) {
|
1028 |
+
$column = $default;
|
1029 |
+
}
|
1030 |
+
|
1031 |
+
return $column;
|
1032 |
+
}
|
1033 |
+
|
1034 |
+
/**
|
1035 |
+
* Get a list of all, hidden and sortable columns, with filter applied
|
1036 |
+
*
|
1037 |
+
* @since 3.1.0
|
1038 |
+
*
|
1039 |
+
* @return array
|
1040 |
+
*/
|
1041 |
+
protected function get_column_info() {
|
1042 |
+
// $_column_headers is already set / cached
|
1043 |
+
if ( isset( $this->_column_headers ) && is_array( $this->_column_headers ) ) {
|
1044 |
+
// Back-compat for list tables that have been manually setting $_column_headers for horse reasons.
|
1045 |
+
// In 4.3, we added a fourth argument for primary column.
|
1046 |
+
$column_headers = array( array(), array(), array(), $this->get_primary_column_name() );
|
1047 |
+
foreach ( $this->_column_headers as $key => $value ) {
|
1048 |
+
$column_headers[ $key ] = $value;
|
1049 |
+
}
|
1050 |
+
|
1051 |
+
return $column_headers;
|
1052 |
+
}
|
1053 |
+
|
1054 |
+
$columns = get_column_headers( $this->screen );
|
1055 |
+
$hidden = get_hidden_columns( $this->screen );
|
1056 |
+
|
1057 |
+
$sortable_columns = $this->get_sortable_columns();
|
1058 |
+
/**
|
1059 |
+
* Filters the list table sortable columns for a specific screen.
|
1060 |
+
*
|
1061 |
+
* The dynamic portion of the hook name, `$this->screen->id`, refers
|
1062 |
+
* to the ID of the current screen, usually a string.
|
1063 |
+
*
|
1064 |
+
* @since 3.5.0
|
1065 |
+
*
|
1066 |
+
* @param array $sortable_columns An array of sortable columns.
|
1067 |
+
*/
|
1068 |
+
$_sortable = apply_filters( "manage_{$this->screen->id}_sortable_columns", $sortable_columns );
|
1069 |
+
|
1070 |
+
$sortable = array();
|
1071 |
+
foreach ( $_sortable as $id => $data ) {
|
1072 |
+
if ( empty( $data ) ) {
|
1073 |
+
continue;
|
1074 |
+
}
|
1075 |
+
|
1076 |
+
$data = (array) $data;
|
1077 |
+
if ( ! isset( $data[1] ) ) {
|
1078 |
+
$data[1] = false;
|
1079 |
+
}
|
1080 |
+
|
1081 |
+
$sortable[ $id ] = $data;
|
1082 |
+
}
|
1083 |
+
|
1084 |
+
$primary = $this->get_primary_column_name();
|
1085 |
+
$this->_column_headers = array( $columns, $hidden, $sortable, $primary );
|
1086 |
+
|
1087 |
+
return $this->_column_headers;
|
1088 |
+
}
|
1089 |
+
|
1090 |
+
/**
|
1091 |
+
* Return number of visible columns
|
1092 |
+
*
|
1093 |
+
* @since 3.1.0
|
1094 |
+
*
|
1095 |
+
* @return int
|
1096 |
+
*/
|
1097 |
+
public function get_column_count() {
|
1098 |
+
list ( $columns, $hidden ) = $this->get_column_info();
|
1099 |
+
$hidden = array_intersect( array_keys( $columns ), array_filter( $hidden ) );
|
1100 |
+
return count( $columns ) - count( $hidden );
|
1101 |
+
}
|
1102 |
+
|
1103 |
+
/**
|
1104 |
+
* Print column headers, accounting for hidden and sortable columns.
|
1105 |
+
*
|
1106 |
+
* @since 3.1.0
|
1107 |
+
*
|
1108 |
+
* @staticvar int $cb_counter
|
1109 |
+
*
|
1110 |
+
* @param bool $with_id Whether to set the id attribute or not
|
1111 |
+
*/
|
1112 |
+
public function print_column_headers( $with_id = true ) {
|
1113 |
+
list( $columns, $hidden, $sortable, $primary ) = $this->get_column_info();
|
1114 |
+
|
1115 |
+
$current_url = set_url_scheme( 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] );
|
1116 |
+
$current_url = remove_query_arg( 'paged', $current_url );
|
1117 |
+
|
1118 |
+
if ( isset( $_GET['orderby'] ) ) {
|
1119 |
+
$current_orderby = $_GET['orderby'];
|
1120 |
+
} else {
|
1121 |
+
$current_orderby = '';
|
1122 |
+
}
|
1123 |
+
|
1124 |
+
if ( isset( $_GET['order'] ) && 'desc' === $_GET['order'] ) {
|
1125 |
+
$current_order = 'desc';
|
1126 |
+
} else {
|
1127 |
+
$current_order = 'asc';
|
1128 |
+
}
|
1129 |
+
|
1130 |
+
if ( ! empty( $columns['cb'] ) ) {
|
1131 |
+
static $cb_counter = 1;
|
1132 |
+
$columns['cb'] = '<label class="screen-reader-text" for="cb-select-all-' . $cb_counter . '">' . __( 'Select All' ) . '</label>'
|
1133 |
+
. '<input id="cb-select-all-' . $cb_counter . '" type="checkbox" />';
|
1134 |
+
$cb_counter++;
|
1135 |
+
}
|
1136 |
+
|
1137 |
+
foreach ( $columns as $column_key => $column_display_name ) {
|
1138 |
+
$class = array( 'manage-column', "column-$column_key" );
|
1139 |
+
|
1140 |
+
if ( in_array( $column_key, $hidden ) ) {
|
1141 |
+
$class[] = 'hidden';
|
1142 |
+
}
|
1143 |
+
|
1144 |
+
if ( 'cb' === $column_key ) {
|
1145 |
+
$class[] = 'check-column';
|
1146 |
+
} elseif ( in_array( $column_key, array( 'posts', 'comments', 'links' ) ) ) {
|
1147 |
+
$class[] = 'num';
|
1148 |
+
}
|
1149 |
+
|
1150 |
+
if ( $column_key === $primary ) {
|
1151 |
+
$class[] = 'column-primary';
|
1152 |
+
}
|
1153 |
+
|
1154 |
+
if ( isset( $sortable[ $column_key ] ) ) {
|
1155 |
+
list( $orderby, $desc_first ) = $sortable[ $column_key ];
|
1156 |
+
|
1157 |
+
if ( $current_orderby === $orderby ) {
|
1158 |
+
$order = 'asc' === $current_order ? 'desc' : 'asc';
|
1159 |
+
$class[] = 'sorted';
|
1160 |
+
$class[] = $current_order;
|
1161 |
+
} else {
|
1162 |
+
$order = $desc_first ? 'desc' : 'asc';
|
1163 |
+
$class[] = 'sortable';
|
1164 |
+
$class[] = $desc_first ? 'asc' : 'desc';
|
1165 |
+
}
|
1166 |
+
|
1167 |
+
$column_display_name = '<a href="' . esc_url( add_query_arg( compact( 'orderby', 'order' ), $current_url ) ) . '"><span>' . $column_display_name . '</span><span class="sorting-indicator"></span></a>';
|
1168 |
+
}
|
1169 |
+
|
1170 |
+
$tag = ( 'cb' === $column_key ) ? 'td' : 'th';
|
1171 |
+
$scope = ( 'th' === $tag ) ? 'scope="col"' : '';
|
1172 |
+
$id = $with_id ? "id='$column_key'" : '';
|
1173 |
+
|
1174 |
+
if ( ! empty( $class ) ) {
|
1175 |
+
$class = "class='" . join( ' ', $class ) . "'";
|
1176 |
+
}
|
1177 |
+
|
1178 |
+
echo "<$tag $scope $id $class>$column_display_name</$tag>";
|
1179 |
+
}
|
1180 |
+
}
|
1181 |
+
|
1182 |
+
/**
|
1183 |
+
* Displays the table.
|
1184 |
+
*
|
1185 |
+
* @since 3.1.0
|
1186 |
+
*/
|
1187 |
+
public function display() {
|
1188 |
+
$singular = $this->_args['singular'];
|
1189 |
+
|
1190 |
+
$this->display_tablenav( 'top' );
|
1191 |
+
|
1192 |
+
$this->screen->render_screen_reader_content( 'heading_list' );
|
1193 |
+
?>
|
1194 |
+
<table class="wp-list-table <?php echo implode( ' ', $this->get_table_classes() ); ?>">
|
1195 |
+
<thead>
|
1196 |
+
<tr>
|
1197 |
+
<?php $this->print_column_headers(); ?>
|
1198 |
+
</tr>
|
1199 |
+
</thead>
|
1200 |
+
|
1201 |
+
<tbody id="the-list"
|
1202 |
+
<?php
|
1203 |
+
if ( $singular ) {
|
1204 |
+
echo " data-wp-lists='list:$singular'";
|
1205 |
+
}
|
1206 |
+
?>
|
1207 |
+
>
|
1208 |
+
<?php $this->display_rows_or_placeholder(); ?>
|
1209 |
+
</tbody>
|
1210 |
+
|
1211 |
+
<tfoot>
|
1212 |
+
<tr>
|
1213 |
+
<?php $this->print_column_headers( false ); ?>
|
1214 |
+
</tr>
|
1215 |
+
</tfoot>
|
1216 |
+
|
1217 |
+
</table>
|
1218 |
+
<?php
|
1219 |
+
$this->display_tablenav( 'bottom' );
|
1220 |
+
}
|
1221 |
+
|
1222 |
+
/**
|
1223 |
+
* Get a list of CSS classes for the WP_List_Table table tag.
|
1224 |
+
*
|
1225 |
+
* @since 3.1.0
|
1226 |
+
*
|
1227 |
+
* @return array List of CSS classes for the table tag.
|
1228 |
+
*/
|
1229 |
+
protected function get_table_classes() {
|
1230 |
+
return array( 'widefat', 'fixed', 'striped', $this->_args['plural'] );
|
1231 |
+
}
|
1232 |
+
|
1233 |
+
/**
|
1234 |
+
* Generate the table navigation above or below the table
|
1235 |
+
*
|
1236 |
+
* @since 3.1.0
|
1237 |
+
* @param string $which
|
1238 |
+
*/
|
1239 |
+
protected function display_tablenav( $which ) {
|
1240 |
+
if ( 'top' === $which ) {
|
1241 |
+
wp_nonce_field( 'bulk-' . $this->_args['plural'] );
|
1242 |
+
}
|
1243 |
+
?>
|
1244 |
+
<div class="tablenav <?php echo esc_attr( $which ); ?>">
|
1245 |
+
|
1246 |
+
<?php if ( $this->has_items() ) : ?>
|
1247 |
+
<div class="alignleft actions bulkactions">
|
1248 |
+
<?php $this->bulk_actions( $which ); ?>
|
1249 |
+
</div>
|
1250 |
+
<?php
|
1251 |
+
endif;
|
1252 |
+
$this->extra_tablenav( $which );
|
1253 |
+
$this->pagination( $which );
|
1254 |
+
?>
|
1255 |
+
|
1256 |
+
<br class="clear" />
|
1257 |
+
</div>
|
1258 |
+
<?php
|
1259 |
+
}
|
1260 |
+
|
1261 |
+
/**
|
1262 |
+
* Extra controls to be displayed between bulk actions and pagination
|
1263 |
+
*
|
1264 |
+
* @since 3.1.0
|
1265 |
+
*
|
1266 |
+
* @param string $which
|
1267 |
+
*/
|
1268 |
+
protected function extra_tablenav( $which ) {}
|
1269 |
+
|
1270 |
+
/**
|
1271 |
+
* Generate the tbody element for the list table.
|
1272 |
+
*
|
1273 |
+
* @since 3.1.0
|
1274 |
+
*/
|
1275 |
+
public function display_rows_or_placeholder() {
|
1276 |
+
if ( $this->has_items() ) {
|
1277 |
+
$this->display_rows();
|
1278 |
+
} else {
|
1279 |
+
echo '<tr class="no-items"><td class="colspanchange" colspan="' . $this->get_column_count() . '">';
|
1280 |
+
$this->no_items();
|
1281 |
+
echo '</td></tr>';
|
1282 |
+
}
|
1283 |
+
}
|
1284 |
+
|
1285 |
+
/**
|
1286 |
+
* Generate the table rows
|
1287 |
+
*
|
1288 |
+
* @since 3.1.0
|
1289 |
+
*/
|
1290 |
+
public function display_rows() {
|
1291 |
+
foreach ( $this->items as $item ) {
|
1292 |
+
$this->single_row( $item );
|
1293 |
+
}
|
1294 |
+
}
|
1295 |
+
|
1296 |
+
/**
|
1297 |
+
* Generates content for a single row of the table
|
1298 |
+
*
|
1299 |
+
* @since 3.1.0
|
1300 |
+
*
|
1301 |
+
* @param object $item The current item
|
1302 |
+
*/
|
1303 |
+
public function single_row( $item ) {
|
1304 |
+
echo '<tr>';
|
1305 |
+
$this->single_row_columns( $item );
|
1306 |
+
echo '</tr>';
|
1307 |
+
}
|
1308 |
+
|
1309 |
+
/**
|
1310 |
+
* @param object $item
|
1311 |
+
* @param string $column_name
|
1312 |
+
*/
|
1313 |
+
protected function column_default( $item, $column_name ) {}
|
1314 |
+
|
1315 |
+
/**
|
1316 |
+
* @param object $item
|
1317 |
+
*/
|
1318 |
+
protected function column_cb( $item ) {}
|
1319 |
+
|
1320 |
+
/**
|
1321 |
+
* Generates the columns for a single row of the table
|
1322 |
+
*
|
1323 |
+
* @since 3.1.0
|
1324 |
+
*
|
1325 |
+
* @param object $item The current item
|
1326 |
+
*/
|
1327 |
+
protected function single_row_columns( $item ) {
|
1328 |
+
list( $columns, $hidden, $sortable, $primary ) = $this->get_column_info();
|
1329 |
+
|
1330 |
+
foreach ( $columns as $column_name => $column_display_name ) {
|
1331 |
+
$classes = "$column_name column-$column_name";
|
1332 |
+
if ( $primary === $column_name ) {
|
1333 |
+
$classes .= ' has-row-actions column-primary';
|
1334 |
+
}
|
1335 |
+
|
1336 |
+
if ( in_array( $column_name, $hidden ) ) {
|
1337 |
+
$classes .= ' hidden';
|
1338 |
+
}
|
1339 |
+
|
1340 |
+
// Comments column uses HTML in the display name with screen reader text.
|
1341 |
+
// Instead of using esc_attr(), we strip tags to get closer to a user-friendly string.
|
1342 |
+
$data = 'data-colname="' . wp_strip_all_tags( $column_display_name ) . '"';
|
1343 |
+
|
1344 |
+
$attributes = "class='$classes' $data";
|
1345 |
+
|
1346 |
+
if ( 'cb' === $column_name ) {
|
1347 |
+
echo '<th scope="row" class="check-column">';
|
1348 |
+
echo $this->column_cb( $item );
|
1349 |
+
echo '</th>';
|
1350 |
+
} elseif ( method_exists( $this, '_column_' . $column_name ) ) {
|
1351 |
+
echo call_user_func(
|
1352 |
+
array( $this, '_column_' . $column_name ),
|
1353 |
+
$item,
|
1354 |
+
$classes,
|
1355 |
+
$data,
|
1356 |
+
$primary
|
1357 |
+
);
|
1358 |
+
} elseif ( method_exists( $this, 'column_' . $column_name ) ) {
|
1359 |
+
echo "<td $attributes>";
|
1360 |
+
echo call_user_func( array( $this, 'column_' . $column_name ), $item );
|
1361 |
+
echo $this->handle_row_actions( $item, $column_name, $primary );
|
1362 |
+
echo '</td>';
|
1363 |
+
} else {
|
1364 |
+
echo "<td $attributes>";
|
1365 |
+
echo $this->column_default( $item, $column_name );
|
1366 |
+
echo $this->handle_row_actions( $item, $column_name, $primary );
|
1367 |
+
echo '</td>';
|
1368 |
+
}
|
1369 |
+
}
|
1370 |
+
}
|
1371 |
+
|
1372 |
+
/**
|
1373 |
+
* Generates and display row actions links for the list table.
|
1374 |
+
*
|
1375 |
+
* @since 4.3.0
|
1376 |
+
*
|
1377 |
+
* @param object $item The item being acted upon.
|
1378 |
+
* @param string $column_name Current column name.
|
1379 |
+
* @param string $primary Primary column name.
|
1380 |
+
* @return string The row actions HTML, or an empty string if the current column is the primary column.
|
1381 |
+
*/
|
1382 |
+
protected function handle_row_actions( $item, $column_name, $primary ) {
|
1383 |
+
return $column_name === $primary ? '<button type="button" class="toggle-row"><span class="screen-reader-text">' . __( 'Show more details' ) . '</span></button>' : '';
|
1384 |
+
}
|
1385 |
+
|
1386 |
+
/**
|
1387 |
+
* Handle an incoming ajax request (called from admin-ajax.php)
|
1388 |
+
*
|
1389 |
+
* @since 3.1.0
|
1390 |
+
*/
|
1391 |
+
public function ajax_response() {
|
1392 |
+
$this->prepare_items();
|
1393 |
+
|
1394 |
+
ob_start();
|
1395 |
+
if ( ! empty( $_REQUEST['no_placeholder'] ) ) {
|
1396 |
+
$this->display_rows();
|
1397 |
+
} else {
|
1398 |
+
$this->display_rows_or_placeholder();
|
1399 |
+
}
|
1400 |
+
|
1401 |
+
$rows = ob_get_clean();
|
1402 |
+
|
1403 |
+
$response = array( 'rows' => $rows );
|
1404 |
+
|
1405 |
+
if ( isset( $this->_pagination_args['total_items'] ) ) {
|
1406 |
+
$response['total_items_i18n'] = sprintf(
|
1407 |
+
/* translators: Number of items. */
|
1408 |
+
_n( '%s item', '%s items', $this->_pagination_args['total_items'] ),
|
1409 |
+
number_format_i18n( $this->_pagination_args['total_items'] )
|
1410 |
+
);
|
1411 |
+
}
|
1412 |
+
if ( isset( $this->_pagination_args['total_pages'] ) ) {
|
1413 |
+
$response['total_pages'] = $this->_pagination_args['total_pages'];
|
1414 |
+
$response['total_pages_i18n'] = number_format_i18n( $this->_pagination_args['total_pages'] );
|
1415 |
+
}
|
1416 |
+
|
1417 |
+
die( wp_json_encode( $response ) );
|
1418 |
+
}
|
1419 |
+
|
1420 |
+
/**
|
1421 |
+
* Send required variables to JavaScript land
|
1422 |
+
*/
|
1423 |
+
public function _js_vars() {
|
1424 |
+
$args = array(
|
1425 |
+
'class' => get_class( $this ),
|
1426 |
+
'screen' => array(
|
1427 |
+
'id' => $this->screen->id,
|
1428 |
+
'base' => $this->screen->base,
|
1429 |
+
),
|
1430 |
+
);
|
1431 |
+
|
1432 |
+
printf( "<script type='text/javascript'>list_args = %s;</script>\n", wp_json_encode( $args ) );
|
1433 |
+
}
|
1434 |
+
}
|
inc/cleantalk-admin.php
CHANGED
@@ -307,104 +307,31 @@ function apbct_admin__enqueue_scripts($hook){
|
|
307 |
'ip_license' => $apbct->ip_license ? true : false,
|
308 |
));
|
309 |
}
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
'ct_comments_deleted' => __('Deleted', 'cleantalk'),
|
336 |
-
'ct_comments_added_after' => __('comments', 'cleantalk'),
|
337 |
-
'ct_confirm_deletion_all' => __('Delete all spam comments?', 'cleantalk'),
|
338 |
-
'ct_confirm_deletion_checked' => __('Delete checked comments?', 'cleantalk'),
|
339 |
-
'ct_status_string' => __('Total comments %s. Checked %s. Found %s spam comments. %s bad comments (without IP or email).', 'cleantalk'),
|
340 |
-
'ct_status_string_warning' => '<p>'.__('Please do backup of WordPress database before delete any accounts!', 'cleantalk').'</p>',
|
341 |
-
'start' => !empty($_COOKIE['ct_comments_start_check']) ? true : false,
|
342 |
-
));
|
343 |
-
}
|
344 |
-
|
345 |
-
// COMMENTS page JavaScript
|
346 |
-
if($hook == 'edit-comments.php'){
|
347 |
-
wp_enqueue_script('ct_comments_editscreen', plugins_url('/cleantalk-spam-protect/js/cleantalk-comments-editscreen.min.js'), array(), APBCT_VERSION);
|
348 |
-
wp_localize_script( 'jquery', 'ctCommentsScreen', array(
|
349 |
-
'ct_ajax_nonce' => wp_create_nonce('ct_secret_nonce'),
|
350 |
-
'spambutton_text' => __("Find spam comments", 'cleantalk'),
|
351 |
-
'ct_feedback_msg_whitelisted' => __("The sender has been whitelisted.", 'cleantalk'),
|
352 |
-
'ct_feedback_msg_blacklisted' => __("The sender has been blacklisted.", 'cleantalk'),
|
353 |
-
'ct_feedback_msg' => sprintf(__("Feedback has been sent to %sCleanTalk Dashboard%s.", 'cleantalk'), $apbct->user_token ? "<a target='_blank' href=https://cleantalk.org/my?user_token={$apbct->user_token}&cp_mode=antispam>" : '', $apbct->user_token ? "</a>" : ''),
|
354 |
-
'ct_show_check_links' => (bool)$apbct->settings['show_check_links'],
|
355 |
-
'ct_img_src_new_tab' => plugin_dir_url(__FILE__)."images/new_window.gif",
|
356 |
-
));
|
357 |
-
}
|
358 |
-
}
|
359 |
-
|
360 |
-
// USERS's page JavaScript and CSS
|
361 |
-
if( $hook == 'users_page_ct_check_users' || $hook == 'users.php'){
|
362 |
-
|
363 |
-
// Preparing data
|
364 |
-
$current_user = wp_get_current_user();
|
365 |
-
if(!empty($_COOKIE['ct_paused_users_check']))
|
366 |
-
$prev_check = json_decode(stripslashes($_COOKIE['ct_paused_users_check']), true);
|
367 |
-
|
368 |
-
// jQueryUI
|
369 |
-
wp_enqueue_script('jqueryui', plugins_url('/cleantalk-spam-protect/js/jquery-ui.min.js'), array('jquery'), '1.12.1');
|
370 |
-
wp_enqueue_style('jqueryui_css', plugins_url('/cleantalk-spam-protect/css/jquery-ui.min.css'),array(), '1.21.1', 'all');
|
371 |
-
|
372 |
-
// CSS
|
373 |
-
wp_enqueue_style('cleantalk_admin_css_settings_page', plugins_url().'/cleantalk-spam-protect/css/cleantalk-spam-check.min.css', array(), APBCT_VERSION, 'all');
|
374 |
-
|
375 |
-
// CHECK USERS page JavaScript
|
376 |
-
if($hook == 'users_page_ct_check_users'){
|
377 |
-
wp_enqueue_script('ct_users_checkspam', plugins_url('/cleantalk-spam-protect/js/cleantalk-users-checkspam.min.js'), array(), APBCT_VERSION);
|
378 |
-
wp_localize_script( 'jquery', 'ctUsersCheck', array(
|
379 |
-
'ct_ajax_nonce' => wp_create_nonce('ct_secret_nonce'),
|
380 |
-
'ct_prev_accurate' => !empty($prev_check['accurate']) ? true : false,
|
381 |
-
'ct_prev_from' => !empty($prev_check['from']) ? $prev_check['from'] : false,
|
382 |
-
'ct_prev_till' => !empty($prev_check['till']) ? $prev_check['till'] : false,
|
383 |
-
'ct_timeout' => __('Failed from timeout. Going to check users again.', 'cleantalk'),
|
384 |
-
'ct_timeout_delete' => __('Failed from timeout. Going to run a new attempt to delete spam users.', 'cleantalk'),
|
385 |
-
'ct_inserted' => __('Inserted', 'cleantalk'),
|
386 |
-
'ct_deleted' => __('Deleted', 'cleantalk'),
|
387 |
-
'ct_iusers' => __('users.', 'cleantalk'),
|
388 |
-
'ct_confirm_deletion_all' => __('Delete all spam users?', 'cleantalk'),
|
389 |
-
'ct_confirm_deletion_checked' => __('Delete checked users?', 'cleantalk'),
|
390 |
-
'ct_csv_filename' => "user_check_by_".$current_user->user_login,
|
391 |
-
'ct_bad_csv' => __("File doesn't exist. File will be generated while checking. Please, press \"Check for spam\"."),
|
392 |
-
'ct_status_string' => __("Total users %s, checked %s, found %s spam users and %s bad users (without IP or email)", 'cleantalk'),
|
393 |
-
'ct_status_string_warning' => "<p>".__("Please do backup of WordPress database before delete any accounts!", 'cleantalk')."</p>"
|
394 |
-
));
|
395 |
-
}
|
396 |
-
|
397 |
-
// USERS page JavaScript
|
398 |
-
if($hook == 'users.php'){
|
399 |
-
wp_enqueue_script('ct_users_editscreen', plugins_url('/cleantalk-spam-protect/js/cleantalk-users-editscreen.min.js'), array(), APBCT_VERSION);
|
400 |
-
wp_localize_script( 'jquery', 'ctUsersScreen', array(
|
401 |
-
'spambutton_text' => __("Find spam-users", 'cleantalk'),
|
402 |
-
'ct_show_check_links' => (bool)$apbct->settings['show_check_links'],
|
403 |
-
'ct_img_src_new_tab' => plugin_dir_url(__FILE__)."images/new_window.gif"
|
404 |
-
));
|
405 |
-
}
|
406 |
-
|
407 |
-
}
|
408 |
}
|
409 |
|
410 |
/**
|
@@ -664,7 +591,10 @@ function apbct_comment__unmark_red($message) {
|
|
664 |
function apbct_comment__send_feedback($comment_id = null, $comment_status = null, $change_status = false, $direct_call = null){
|
665 |
|
666 |
// For AJAX call
|
667 |
-
|
|
|
|
|
|
|
668 |
$comment_id = !empty($_POST['comment_id']) ? $_POST['comment_id'] : false;
|
669 |
$comment_status = !empty($_POST['comment_status']) ? $_POST['comment_status'] : false;
|
670 |
$change_status = !empty($_POST['change_status']) ? $_POST['change_status'] : false;
|
307 |
'ip_license' => $apbct->ip_license ? true : false,
|
308 |
));
|
309 |
}
|
310 |
+
|
311 |
+
// COMMENTS page JavaScript
|
312 |
+
if($hook == 'edit-comments.php'){
|
313 |
+
wp_enqueue_script('ct_comments_editscreen', plugins_url('/cleantalk-spam-protect/js/cleantalk-comments-editscreen.min.js'), array(), APBCT_VERSION);
|
314 |
+
wp_localize_script( 'jquery', 'ctCommentsScreen', array(
|
315 |
+
'ct_ajax_nonce' => wp_create_nonce('ct_secret_nonce'),
|
316 |
+
'spambutton_text' => __("Find spam comments", 'cleantalk'),
|
317 |
+
'ct_feedback_msg_whitelisted' => __("The sender has been whitelisted.", 'cleantalk'),
|
318 |
+
'ct_feedback_msg_blacklisted' => __("The sender has been blacklisted.", 'cleantalk'),
|
319 |
+
'ct_feedback_msg' => sprintf(__("Feedback has been sent to %sCleanTalk Dashboard%s.", 'cleantalk'), $apbct->user_token ? "<a target='_blank' href=https://cleantalk.org/my?user_token={$apbct->user_token}&cp_mode=antispam>" : '', $apbct->user_token ? "</a>" : ''),
|
320 |
+
'ct_show_check_links' => (bool)$apbct->settings['show_check_links'],
|
321 |
+
'ct_img_src_new_tab' => plugin_dir_url(__FILE__)."images/new_window.gif",
|
322 |
+
));
|
323 |
+
}
|
324 |
+
|
325 |
+
// USERS page JavaScript
|
326 |
+
if($hook == 'users.php'){
|
327 |
+
wp_enqueue_script('ct_users_editscreen', plugins_url('/cleantalk-spam-protect/js/cleantalk-users-editscreen.min.js'), array(), APBCT_VERSION);
|
328 |
+
wp_localize_script( 'jquery', 'ctUsersScreen', array(
|
329 |
+
'spambutton_text' => __("Find spam-users", 'cleantalk'),
|
330 |
+
'ct_show_check_links' => (bool)$apbct->settings['show_check_links'],
|
331 |
+
'ct_img_src_new_tab' => plugin_dir_url(__FILE__)."images/new_window.gif"
|
332 |
+
));
|
333 |
+
}
|
334 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
335 |
}
|
336 |
|
337 |
/**
|
591 |
function apbct_comment__send_feedback($comment_id = null, $comment_status = null, $change_status = false, $direct_call = null){
|
592 |
|
593 |
// For AJAX call
|
594 |
+
if( ! $direct_call ){
|
595 |
+
check_ajax_referer('ct_secret_nonce', 'security');
|
596 |
+
}
|
597 |
+
|
598 |
$comment_id = !empty($_POST['comment_id']) ? $_POST['comment_id'] : false;
|
599 |
$comment_status = !empty($_POST['comment_status']) ? $_POST['comment_status'] : false;
|
600 |
$change_status = !empty($_POST['change_status']) ? $_POST['change_status'] : false;
|
inc/cleantalk-ajax.php
CHANGED
@@ -287,6 +287,7 @@ function ct_ajax_hook($message_obj = false, $additional = false)
|
|
287 |
'formcraft3_save_form_progress', // FormCraft – Contact Form Builder for WordPress. Save progress.
|
288 |
'wpdmpp_save_settings', // PayPal save settings.
|
289 |
'give_process_donation', // GiveWP will be checked by feedback_general_contact_form
|
|
|
290 |
);
|
291 |
|
292 |
// Skip test if
|
287 |
'formcraft3_save_form_progress', // FormCraft – Contact Form Builder for WordPress. Save progress.
|
288 |
'wpdmpp_save_settings', // PayPal save settings.
|
289 |
'give_process_donation', // GiveWP will be checked by feedback_general_contact_form
|
290 |
+
'iwj_login', // Fix for unknown plugin for user #133315
|
291 |
);
|
292 |
|
293 |
// Skip test if
|
inc/cleantalk-autoloader.php
CHANGED
@@ -1,21 +1,21 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/**
|
4 |
-
* Autoloader for \Cleantalk\* classes
|
5 |
-
*
|
6 |
-
* @param string $class
|
7 |
-
*
|
8 |
-
* @return void
|
9 |
-
*/
|
10 |
-
function apbct_autoloader( $class ){
|
11 |
-
// Register class auto loader
|
12 |
-
// Custom modules
|
13 |
-
if( strpos( $class, 'Cleantalk' ) !== false && ! class_exists( '\\' . $class )) {
|
14 |
-
$class_file = CLEANTALK_PLUGIN_DIR . 'lib' . DIRECTORY_SEPARATOR . $class . '.php';
|
15 |
-
if( file_exists( $class_file ) ){
|
16 |
-
require_once( $class_file );
|
17 |
-
}
|
18 |
-
}
|
19 |
-
}
|
20 |
-
|
21 |
-
spl_autoload_register( 'apbct_autoloader' );
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Autoloader for \Cleantalk\* classes
|
5 |
+
*
|
6 |
+
* @param string $class
|
7 |
+
*
|
8 |
+
* @return void
|
9 |
+
*/
|
10 |
+
function apbct_autoloader( $class ){
|
11 |
+
// Register class auto loader
|
12 |
+
// Custom modules
|
13 |
+
if( strpos( $class, 'Cleantalk' ) !== false && ! class_exists( '\\' . $class )) {
|
14 |
+
$class_file = CLEANTALK_PLUGIN_DIR . 'lib' . DIRECTORY_SEPARATOR . $class . '.php';
|
15 |
+
if( file_exists( $class_file ) ){
|
16 |
+
require_once( $class_file );
|
17 |
+
}
|
18 |
+
}
|
19 |
+
}
|
20 |
+
|
21 |
+
spl_autoload_register( 'apbct_autoloader' );
|
inc/cleantalk-comments.php
DELETED
@@ -1,726 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
add_action('admin_menu', 'ct_add_comments_menu');
|
4 |
-
add_action( 'wp_ajax_ajax_check_comments', 'ct_ajax_check_comments' );
|
5 |
-
add_action( 'wp_ajax_ajax_info_comments', 'ct_ajax_info_comments' );
|
6 |
-
add_action( 'wp_ajax_ajax_insert_comments', 'ct_ajax_insert_comments' );
|
7 |
-
add_action( 'wp_ajax_ajax_delete_checked', 'ct_ajax_delete_checked' );
|
8 |
-
add_action( 'wp_ajax_ajax_delete_all', 'ct_ajax_delete_all' );
|
9 |
-
add_action( 'wp_ajax_ajax_clear_comments', 'ct_ajax_clear_comments' );
|
10 |
-
add_action( 'wp_ajax_ajax_ct_approve_comment', 'ct_comment_check_approve_comment' );
|
11 |
-
|
12 |
-
function ct_add_comments_menu(){
|
13 |
-
if(current_user_can('activate_plugins'))
|
14 |
-
add_comments_page( __("Check for spam", 'cleantalk'), __("Find spam comments", 'cleantalk'), 'read', 'ct_check_spam', 'ct_show_checkspam_page');
|
15 |
-
}
|
16 |
-
|
17 |
-
function ct_show_checkspam_page(){
|
18 |
-
|
19 |
-
global $apbct;
|
20 |
-
|
21 |
-
?>
|
22 |
-
<div class="wrap">
|
23 |
-
<h2><img src="<?php echo $apbct->logo__small__colored; ?>" /> <?php echo $apbct->plugin_name; ?></h2>
|
24 |
-
<a style="color: gray; margin-left: 23px;" href="<?php echo $apbct->settings_link; ?>"><?php _e('Plugin Settings', 'cleantalk'); ?></a>
|
25 |
-
<br />
|
26 |
-
<?php
|
27 |
-
|
28 |
-
// If access key is unset in
|
29 |
-
if(!apbct_api_key__is_correct()){
|
30 |
-
if($apbct->moderate_ip == 1){
|
31 |
-
echo '<h3>'
|
32 |
-
.sprintf(
|
33 |
-
__('Antispam hosting tariff does not allow you to use this feature. To do so, you need to enter an Access Key in the %splugin settings%s.', 'cleantalk'),
|
34 |
-
'<a href="' . (is_network_admin() ? 'settings.php?page=cleantalk' : 'options-general.php?page=cleantalk').'">',
|
35 |
-
'</a>'
|
36 |
-
)
|
37 |
-
.'</h3>';
|
38 |
-
return;
|
39 |
-
}
|
40 |
-
}
|
41 |
-
|
42 |
-
// Getting total spam comments
|
43 |
-
$args_spam = array(
|
44 |
-
'meta_query' => array(
|
45 |
-
Array(
|
46 |
-
'key' => 'ct_marked_as_spam',
|
47 |
-
'compare' => 'EXISTS'
|
48 |
-
)
|
49 |
-
),
|
50 |
-
'count'=>true
|
51 |
-
);
|
52 |
-
$cnt_spam = get_comments($args_spam);
|
53 |
-
|
54 |
-
?>
|
55 |
-
<!-- AJAX error message -->
|
56 |
-
<div id="ct_error_message" style="display:none">
|
57 |
-
<h3>
|
58 |
-
<?php _e("Ajax error. Process will be automatically restarted in 3 seconds. Status: ", 'cleantalk'); ?><span id="cleantalk_ajax_error"></span> (<span id="cleantalk_js_func"></span>)
|
59 |
-
</h3>
|
60 |
-
<h4>Please, check for JavaScript errors in your dashboard and and repair it.</h4>
|
61 |
-
</div>
|
62 |
-
|
63 |
-
<!-- Deleting message -->
|
64 |
-
<div id="ct_deleting_message" style="display:none;">
|
65 |
-
<?php _e("Please wait for a while. CleanTalk is deleting spam comments. Comments left: ", 'cleantalk'); ?> <span id="cleantalk_comments_left">
|
66 |
-
<?php echo $cnt_spam; ?>
|
67 |
-
</span>
|
68 |
-
</div>
|
69 |
-
|
70 |
-
<!-- Main info -->
|
71 |
-
<h3 id="ct_checking_status"><?php echo ct_ajax_info_comments(true);?></h3>
|
72 |
-
|
73 |
-
<!-- Check options -->
|
74 |
-
<div class="ct_to_hide" id="ct_check_params_wrapper">
|
75 |
-
<button class="button ct_check_params_elem" id="ct_check_spam_button" <?php echo !$apbct->data['moderate'] ? 'disabled="disabled"' : ''; ?>><?php _e("Start check", 'cleantalk'); ?></button>
|
76 |
-
<?php if(!empty($_COOKIE['ct_paused_comments_check'])) { ?><button class="button ct_check_params_elem" id="ct_proceed_check_button"><?php _e("Continue check", 'cleantalk'); ?></button><?php } ?>
|
77 |
-
<p class="ct_check_params_desc"><?php _e("The plugin will check all comments against blacklists database and show you senders that have spam activity on other websites.", 'cleantalk'); ?></p>
|
78 |
-
<br />
|
79 |
-
<div class="ct_check_params_elem ct_check_params_elem_sub">
|
80 |
-
<input id="ct_accurate_check" type="checkbox" value="1" /><b><label for="ct_accurate_check"><?php _e("Accurate check", 'cleantalk'); ?></b></label>
|
81 |
-
</div>
|
82 |
-
<p class="ct_check_params_desc"><?php _e("Allows to use comment's dates to perform more accurate check. Could seriously slow down the check.", 'cleantalk'); ?></p>
|
83 |
-
<br />
|
84 |
-
<div class="ct_check_params_elem ct_check_params_elem_sub">
|
85 |
-
<input id="ct_allow_date_range" type="checkbox" value="1" /><label for="ct_allow_date_range"><b><?php _e("Specify date range", 'cleantalk'); ?></b></label>
|
86 |
-
</div>
|
87 |
-
<div class="ct_check_params_desc">
|
88 |
-
<input class="ct_date" type="text" id="ct_date_range_from" value="<?php echo ct_last_checked_comment(); ?>" disabled readonly />
|
89 |
-
<input class="ct_date" type="text" id="ct_date_range_till" value="<?php echo date( "M j Y"); ?>" disabled readonly />
|
90 |
-
</div>
|
91 |
-
<div class="ct_check_params_desc">
|
92 |
-
<p>Begin/end dates of creation comments to check. If no date is specified, the plugin uses the last comments check date.</p>
|
93 |
-
</div>
|
94 |
-
<br>
|
95 |
-
<?php apbct_admin__badge__get_premium(); ?>
|
96 |
-
</div>
|
97 |
-
|
98 |
-
<!-- Cooling notice -->
|
99 |
-
<h3 id="ct_cooling_notice"></h3>
|
100 |
-
|
101 |
-
<!-- Preloader and working message -->
|
102 |
-
<div id="ct_preloader">
|
103 |
-
<img border=0 src="<?php print plugin_dir_url(__FILE__); ?>images/preloader.gif" />
|
104 |
-
</div>
|
105 |
-
<div id="ct_working_message">
|
106 |
-
<?php _e("Please wait! CleanTalk is checking all approved and pending comments via blacklist database at cleantalk.org. You will have option to delete found spam comments after plugin finish.", 'cleantalk'); ?>
|
107 |
-
</div>
|
108 |
-
|
109 |
-
<!-- Pause button -->
|
110 |
-
<button class="button" id="ct_pause">Pause check</button>
|
111 |
-
|
112 |
-
<?php
|
113 |
-
|
114 |
-
// Pagination
|
115 |
-
$page = !empty($_GET['spam_page']) ? intval($_GET['spam_page']) : 1;
|
116 |
-
$on_page = 20;
|
117 |
-
|
118 |
-
$args_spam = array(
|
119 |
-
'meta_query' => array(
|
120 |
-
Array(
|
121 |
-
'key' => 'ct_marked_as_spam',
|
122 |
-
'value' => '1',
|
123 |
-
'compare' => 'NUMERIC'
|
124 |
-
)
|
125 |
-
),
|
126 |
-
'number'=>$on_page,
|
127 |
-
'offset'=>($page-1)*$on_page
|
128 |
-
);
|
129 |
-
|
130 |
-
$c_spam = get_comments($args_spam);
|
131 |
-
if($cnt_spam>0){
|
132 |
-
|
133 |
-
$pages = ceil(intval($cnt_spam)/$on_page);
|
134 |
-
if($pages && $pages != 1){
|
135 |
-
echo "<div class='ct_to_hide pagination'>"
|
136 |
-
."<b>Pages:</b>"
|
137 |
-
."<ul class='pagination'>";
|
138 |
-
for($i = 1; $i <= $pages; $i++){
|
139 |
-
echo "<li class='pagination'>"
|
140 |
-
."<a href='edit-comments.php?page=ct_check_spam&spam_page=$i&ct_worked=1'>"
|
141 |
-
.($i == $page ? "<span class='current_page'>$i</span>" : $i)
|
142 |
-
."</a>"
|
143 |
-
."</li>";
|
144 |
-
}
|
145 |
-
echo "</ul>";
|
146 |
-
echo "</div>";
|
147 |
-
}
|
148 |
-
?>
|
149 |
-
<table class="ct_to_hide widefat fixed comments" id="ct_check_comments_table">
|
150 |
-
<thead>
|
151 |
-
<th scope="col" id="cb" class="manage-column column-cb check-column">
|
152 |
-
<label class="screen-reader-text" for="cb-select-all-1">Select All</label>
|
153 |
-
<input id="cb-select-all-1" type="checkbox" style="margin-top:0;"/>
|
154 |
-
</th>
|
155 |
-
<th scope="col" id="author" class="manage-column column-slug"><?php print _e( 'Author' ); ?></th>
|
156 |
-
<th scope="col" id="comment" class="manage-column column-comment"><?php _e( 'Comment', 'cleantalk'); ?></th>
|
157 |
-
<th scope="col" id="response" class="manage-column column-response sortable desc"><?php _e( 'In Response To', 'cleantalk' );?></th>
|
158 |
-
</thead>
|
159 |
-
<tbody id="the-comment-list" data-wp-lists="list:comment">
|
160 |
-
<?php
|
161 |
-
for($i=0;$i<sizeof($c_spam);$i++){
|
162 |
-
$id = $c_spam[$i]->comment_ID;
|
163 |
-
$post_id = $c_spam[$i]->comment_post_ID;
|
164 |
-
$login = $c_spam[$i]->comment_author;
|
165 |
-
$email = $c_spam[$i]->comment_author_email;
|
166 |
-
$ip = $c_spam[$i]->comment_author_IP;
|
167 |
-
|
168 |
-
echo "<tr id='comment-$id' class='comment even thread-even depth-1 approved cleantalk_comment' data-id='$id'>"
|
169 |
-
."<th scope='row' class='check-column'>"
|
170 |
-
."<label class='screen-reader-text' for='cb-select-$id'>Select comment</label>"
|
171 |
-
."<input id='cb-select-$id' type='checkbox' name='del_comments[]' value='$id'/>"
|
172 |
-
."</th>"
|
173 |
-
."<td class='author column-author' nowrap>"
|
174 |
-
."<strong>"
|
175 |
-
.get_avatar( $c_spam[$i]->user_id , 32)
|
176 |
-
."$login"
|
177 |
-
."</strong>"
|
178 |
-
."<br />"
|
179 |
-
."<br />";
|
180 |
-
|
181 |
-
// Outputs email if exists
|
182 |
-
if($email)
|
183 |
-
echo "<a href='mailto:$email'>$email</a>"
|
184 |
-
.(!$apbct->white_label
|
185 |
-
? "<a href='https://cleantalk.org/blacklists/$email' target='_blank'>"
|
186 |
-
." <img src='".plugin_dir_url(__FILE__)."images/new_window.gif' border='0' style='float:none' />"
|
187 |
-
."</a>"
|
188 |
-
: '');
|
189 |
-
else
|
190 |
-
echo "No email";
|
191 |
-
echo "<br/>";
|
192 |
-
|
193 |
-
// Outputs IP if exists
|
194 |
-
if($ip)
|
195 |
-
echo "<a href='edit-comments.php?s=$ip&mode=detail'>$ip </a>"
|
196 |
-
.(!$apbct->white_label
|
197 |
-
?"<a href='https://cleantalk.org/blacklists/$ip ' target='_blank'>"
|
198 |
-
." <img src='".plugin_dir_url(__FILE__)."images/new_window.gif' border='0' style='float:none'/>"
|
199 |
-
."</a>"
|
200 |
-
: '');
|
201 |
-
else
|
202 |
-
echo "No IP adress";
|
203 |
-
echo "</td>";
|
204 |
-
?>
|
205 |
-
<td class="comment column-comment">
|
206 |
-
<div class="submitted-on">
|
207 |
-
<?php printf( __( 'Submitted on <a href="%1$s">%2$s at %3$s</a>' ), get_comment_link($id),
|
208 |
-
/* translators: comment date format. See http://php.net/date */
|
209 |
-
get_comment_date( __( 'Y/m/d' ),$id ),
|
210 |
-
get_comment_date( get_option( 'time_format' ),$id )
|
211 |
-
);
|
212 |
-
?>
|
213 |
-
|
214 |
-
</div>
|
215 |
-
<p>
|
216 |
-
<?php print $c_spam[$i]->comment_content; ?>
|
217 |
-
</p>
|
218 |
-
<div style="height:16px; display: none;" id='cleantalk_button_set_<?php print $id; ?>'>
|
219 |
-
<a href="#" class="cleantalk_delete_from_list_button" data-id="<?php print $id; ?>" style="color:#0a0;" onclick="return false;" onmouseover="this.style.textDecoration='underline';" onmouseout="this.style.textDecoration='none';"><?php _e("Approve", "cleantalk"); ?></a>
|
220 |
-
|
|
221 |
-
<a href="#" class="cleantalk_delete_button" data-id="<?php print $id; ?>" style="color:#a00;" onclick="return false;" onmouseover="this.style.textDecoration='underline';" onmouseout="this.style.textDecoration='none';"><?php _e("Delete", "cleantalk"); ?></a>
|
222 |
-
</div>
|
223 |
-
</td>
|
224 |
-
<td class="response column-response">
|
225 |
-
<div>
|
226 |
-
<span>
|
227 |
-
<a href="/wp-admin/post.php?post=<?php print $post_id; ?>&action=edit"><?php print get_the_title($post_id); ?></a>
|
228 |
-
<br/>
|
229 |
-
<a href="/wp-admin/edit-comments.php?p=<?php print $post_id; ?>" class="post-com-count">
|
230 |
-
<span class="comment-count"><?php
|
231 |
-
$p_cnt=wp_count_comments();
|
232 |
-
print $p_cnt->total_comments;
|
233 |
-
?></span>
|
234 |
-
</a>
|
235 |
-
</span>
|
236 |
-
<a href="<?php print get_permalink($post_id); ?>"><?php print _e('View Post');?></a>
|
237 |
-
</div>
|
238 |
-
</td>
|
239 |
-
</tr>
|
240 |
-
<?php
|
241 |
-
}
|
242 |
-
?>
|
243 |
-
</tbody>
|
244 |
-
</table>
|
245 |
-
<?php
|
246 |
-
// Pagination
|
247 |
-
if($pages && $pages != 1){
|
248 |
-
echo "<div class='ct_to_hide pagination'>"
|
249 |
-
."<b>Pages:</b>"
|
250 |
-
."<ul class='pagination'>";
|
251 |
-
for($i = 1; $i <= $pages; $i++){
|
252 |
-
echo "<li class='pagination'>"
|
253 |
-
."<a href='edit-comments.php?page=ct_check_spam&spam_page=$i&ct_worked=1'>"
|
254 |
-
.($i == $page ? "<span class='current_page'>$i</span>" : $i)
|
255 |
-
."</a>"
|
256 |
-
."</li>";
|
257 |
-
}
|
258 |
-
echo "</ul>";
|
259 |
-
echo "</div>";
|
260 |
-
}
|
261 |
-
?>
|
262 |
-
<div class="ct_to_hide" id="ct_tools_buttons" style="margin-top: 10px;">
|
263 |
-
<button class= "button" id="ct_delete_all"><?php _e('Delete all comments from the list', 'cleantalk'); ?></button>
|
264 |
-
<button class="button" id="ct_delete_checked"><?php _e('Delete selected', 'cleantalk'); ?></button><br /><br />
|
265 |
-
</div>
|
266 |
-
<?php
|
267 |
-
}
|
268 |
-
echo apbct_get_server_variable( 'REMOTE_ADDR' )=='127.0.0.1' ? '<button class="button ct_to_hide" id="ct_insert_comments">'. __('Insert comments', 'cleantalk') .' (100)</button> ' : '';
|
269 |
-
echo apbct_get_server_variable( 'REMOTE_ADDR' )=='127.0.0.1' ? '<button class="button ct_to_hide" id="ct_delete_comments">'. __('Delete comments', 'cleantalk') .' (110)</button>' : '';
|
270 |
-
|
271 |
-
if($cnt_spam > 0){
|
272 |
-
echo "<div id='ct_search_info'>"
|
273 |
-
."<br />"
|
274 |
-
.__('There is some differencies between blacklists database and our API mechanisms. Blacklists shows all history of spam activity, but our API (that used in spam checking) used another parameters, too: last day of activity, number of spam attacks during last days etc. This mechanisms help us to reduce number of false positivitie. So, there is nothing strange, if some emails/IPs will be not found by this checking.', 'cleantalk')
|
275 |
-
."</div>";
|
276 |
-
}
|
277 |
-
?>
|
278 |
-
<div>
|
279 |
-
<button class="button" id="ct_stop_deletion" style="display:none;"><?php _e("Stop deletion", 'cleantalk'); ?></button>
|
280 |
-
</div>
|
281 |
-
</div>
|
282 |
-
<?php
|
283 |
-
}
|
284 |
-
|
285 |
-
function ct_ajax_check_comments(){
|
286 |
-
|
287 |
-
check_ajax_referer( 'ct_secret_nonce', 'security' );
|
288 |
-
|
289 |
-
global $wpdb, $apbct;
|
290 |
-
|
291 |
-
if(isset($_POST['from'], $_POST['till'])){
|
292 |
-
$from_date = date('Y-m-d', intval(strtotime($_POST['from'])));
|
293 |
-
$till_date = date('Y-m-d', intval(strtotime($_POST['till'])));
|
294 |
-
}
|
295 |
-
|
296 |
-
// Gettings comments 100 unchecked comments
|
297 |
-
if(isset($_COOKIE['ct_comments_safe_check'])){
|
298 |
-
$c = $wpdb->get_results("
|
299 |
-
SELECT comment_ID, comment_date_gmt, comment_author_IP, comment_author_email
|
300 |
-
FROM {$wpdb->comments} as comm
|
301 |
-
WHERE
|
302 |
-
(comm.comment_approved = '1' OR comm.comment_approved = '0')
|
303 |
-
AND NOT EXISTS(
|
304 |
-
SELECT comment_id, meta_key
|
305 |
-
FROM {$wpdb->commentmeta} as meta
|
306 |
-
WHERE comm.comment_ID = meta.comment_id AND (meta_key = 'ct_checked' OR meta_key = 'ct_bad')
|
307 |
-
)
|
308 |
-
ORDER BY comment_date_gmt
|
309 |
-
LIMIT 100",
|
310 |
-
ARRAY_A
|
311 |
-
);
|
312 |
-
}else{
|
313 |
-
$params = array(
|
314 |
-
'meta_query' => array(
|
315 |
-
'relation' => 'AND',
|
316 |
-
array(
|
317 |
-
'key' => 'ct_checked',
|
318 |
-
'compare' => 'NOT EXISTS'
|
319 |
-
),
|
320 |
-
array(
|
321 |
-
'key' => 'ct_bad',
|
322 |
-
'compare' => 'NOT EXISTS'
|
323 |
-
)
|
324 |
-
),
|
325 |
-
'orderby' => 'comment_date_gmt',
|
326 |
-
'order' => 'ASC',
|
327 |
-
'number' => 100
|
328 |
-
);
|
329 |
-
if(isset($from_date, $till_date)){
|
330 |
-
$params['date_query'] = array(
|
331 |
-
'column' => 'comment_date_gmt',
|
332 |
-
'after' => $from_date,
|
333 |
-
'before' => $till_date,
|
334 |
-
'inclusive' => true,
|
335 |
-
);
|
336 |
-
}
|
337 |
-
$c = get_comments( $params );
|
338 |
-
}
|
339 |
-
|
340 |
-
$check_result = array(
|
341 |
-
'end' => 0,
|
342 |
-
'checked' => 0,
|
343 |
-
'spam' => 0,
|
344 |
-
'bad' => 0,
|
345 |
-
'error' => 0
|
346 |
-
);
|
347 |
-
|
348 |
-
if(sizeof($c)>0){
|
349 |
-
|
350 |
-
// Coverting $c to objects
|
351 |
-
if(is_array($c[0])){
|
352 |
-
foreach($c as $key => $value){
|
353 |
-
$c[$key] = (object)$value;
|
354 |
-
} unset($key, $value);
|
355 |
-
}
|
356 |
-
|
357 |
-
if(!empty($_POST['accurate_check'])){
|
358 |
-
// Leaving comments only with first comment's date. Unsetting others.
|
359 |
-
|
360 |
-
foreach($c as $comment_index => $comment){
|
361 |
-
|
362 |
-
if(!isset($curr_date))
|
363 |
-
$curr_date = (substr($comment->comment_date_gmt, 0, 10) ? substr($comment->comment_date_gmt, 0, 10) : '');
|
364 |
-
|
365 |
-
if(substr($comment->comment_date_gmt, 0, 10) != $curr_date)
|
366 |
-
unset($c[$comment_index]);
|
367 |
-
|
368 |
-
}
|
369 |
-
unset($comment_index, $comment);
|
370 |
-
}
|
371 |
-
|
372 |
-
// Checking comments IP/Email. Gathering $data for check.
|
373 |
-
$data = Array();
|
374 |
-
for($i=0;$i<sizeof($c);$i++){
|
375 |
-
|
376 |
-
$curr_ip = $c[$i]->comment_author_IP;
|
377 |
-
$curr_email = $c[$i]->comment_author_email;
|
378 |
-
|
379 |
-
// Check for identity
|
380 |
-
$curr_ip = preg_match('/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/', $curr_ip) === 1 ? $curr_ip : null;
|
381 |
-
$curr_email = preg_match('/^\S+@\S+\.\S+$/', $curr_email) === 1 ? $curr_email : null;
|
382 |
-
|
383 |
-
if(empty($curr_ip) && empty($curr_email)){
|
384 |
-
$check_result['bad']++;
|
385 |
-
update_comment_meta($c[$i]->comment_ID,'ct_bad','1');
|
386 |
-
unset($c[$i]);
|
387 |
-
}else{
|
388 |
-
if(!empty($curr_ip))
|
389 |
-
$data[] = $curr_ip;
|
390 |
-
if(!empty($curr_email))
|
391 |
-
$data[] = $curr_email;
|
392 |
-
// Patch for empty IP/Email
|
393 |
-
$c[$i]->comment_author_IP = empty($curr_ip) ? 'none' : $curr_ip;
|
394 |
-
$c[$i]->comment_author_email = empty($curr_email) ? 'none' : $curr_email;
|
395 |
-
}
|
396 |
-
}
|
397 |
-
|
398 |
-
// Recombining after checking and unsettting
|
399 |
-
$c = array_values($c);
|
400 |
-
|
401 |
-
// Drop if data empty and there's no comments to check
|
402 |
-
if(count($data) == 0){
|
403 |
-
if($_POST['unchecked'] === 0)
|
404 |
-
$check_result['end'] = 1;
|
405 |
-
print json_encode($check_result);
|
406 |
-
die();
|
407 |
-
}
|
408 |
-
|
409 |
-
$result = CleantalkAPI::method__spam_check_cms($apbct->api_key, $data, !empty($_POST['accurate_check']) ? $curr_date : null);
|
410 |
-
|
411 |
-
if(empty($result['error'])){
|
412 |
-
|
413 |
-
for($i=0;$i<sizeof($c);$i++){
|
414 |
-
|
415 |
-
$mark_spam_ip = false;
|
416 |
-
$mark_spam_email = false;
|
417 |
-
|
418 |
-
$check_result['checked']++;
|
419 |
-
update_comment_meta($c[$i]->comment_ID,'ct_checked',date("Y-m-d H:m:s"));
|
420 |
-
$uip=$c[$i]->comment_author_IP;
|
421 |
-
$uim=$c[$i]->comment_author_email;
|
422 |
-
|
423 |
-
if(isset($result[$uip]) && $result[$uip]['appears'] == 1)
|
424 |
-
$mark_spam_ip = true;
|
425 |
-
|
426 |
-
if(isset($result[$uim]) && $result[$uim]['appears'] == 1)
|
427 |
-
$mark_spam_email = true;
|
428 |
-
|
429 |
-
if ($mark_spam_ip || $mark_spam_email){
|
430 |
-
$check_result['spam']++;
|
431 |
-
update_comment_meta($c[$i]->comment_ID,'ct_marked_as_spam','1');
|
432 |
-
}
|
433 |
-
}
|
434 |
-
print json_encode($check_result);
|
435 |
-
|
436 |
-
}else{
|
437 |
-
$check_result['error'] = 1;
|
438 |
-
$check_result['error_message'] = $result['error'];
|
439 |
-
echo json_encode($check_result);
|
440 |
-
}
|
441 |
-
}else{
|
442 |
-
$check_result['end'] = 1;
|
443 |
-
print json_encode($check_result);
|
444 |
-
}
|
445 |
-
|
446 |
-
die;
|
447 |
-
}
|
448 |
-
|
449 |
-
function ct_ajax_info_comments($direct_call = false){
|
450 |
-
|
451 |
-
if (!$direct_call)
|
452 |
-
check_ajax_referer( 'ct_secret_nonce', 'security' );
|
453 |
-
|
454 |
-
global $wpdb;
|
455 |
-
|
456 |
-
$metas = array('', 'ct_marked_as_spam', 'ct_checked', 'ct_bad');
|
457 |
-
|
458 |
-
$result = array();
|
459 |
-
foreach($metas as $meta){
|
460 |
-
if(isset($_COOKIE['ct_comments_safe_check'])){
|
461 |
-
$res = $wpdb->get_results("
|
462 |
-
SELECT COUNT(DISTINCT comment_ID) AS cnt
|
463 |
-
FROM {$wpdb->comments} AS comm
|
464 |
-
WHERE comm.comment_approved IN ('1','0')".
|
465 |
-
(!empty($meta)
|
466 |
-
? " AND EXISTS (SELECT comment_id, meta_key
|
467 |
-
FROM {$wpdb->commentmeta} meta
|
468 |
-
WHERE comm.comment_ID = meta.comment_id AND meta_key = '$meta')"
|
469 |
-
: ''),
|
470 |
-
ARRAY_A);
|
471 |
-
$result[] = $res[0]['cnt'];
|
472 |
-
}else{
|
473 |
-
$params = array('fields' => 'ids', 'count' => true);
|
474 |
-
if(!empty($meta))
|
475 |
-
$params['meta_key'] = $meta;
|
476 |
-
$result[] = get_comments( $params );
|
477 |
-
}
|
478 |
-
}
|
479 |
-
|
480 |
-
$cnt = $result[0]; // Total comments
|
481 |
-
$cnt_spam = $result[1]; // Spam comments
|
482 |
-
$cnt_checked = $result[2]; // Checked comments
|
483 |
-
$cnt_bad = $result[3]; // Bad comments (without IP and Email)
|
484 |
-
|
485 |
-
$return = array(
|
486 |
-
'message' => '',
|
487 |
-
'total' => $cnt,
|
488 |
-
'spam' => $cnt_spam,
|
489 |
-
'checked' => $cnt_checked,
|
490 |
-
'bad' => $cnt_bad,
|
491 |
-
);
|
492 |
-
|
493 |
-
$return['message'] .= sprintf (__("Total comments %s. Checked %s. Last check %s. Found %s spam comments. %s bad comments (without IP or email).", 'cleantalk'), $cnt, $cnt_checked, ct_get_last_comment_check_date(), $cnt_spam, $cnt_bad);
|
494 |
-
|
495 |
-
$backup_notice = ' ';
|
496 |
-
if ($cnt_spam > 0){
|
497 |
-
$backup_notice = __("Please do backup of WordPress database before delete any comments!", 'cleantalk');
|
498 |
-
}
|
499 |
-
$return['message'] .= "<p>$backup_notice</p>";
|
500 |
-
|
501 |
-
if($direct_call){
|
502 |
-
return $return['message'];
|
503 |
-
}else{
|
504 |
-
echo json_encode($return);
|
505 |
-
die();
|
506 |
-
}
|
507 |
-
|
508 |
-
}
|
509 |
-
|
510 |
-
|
511 |
-
function ct_ajax_insert_comments(){
|
512 |
-
|
513 |
-
check_ajax_referer( 'ct_secret_nonce', 'security' );
|
514 |
-
|
515 |
-
//* DELETION
|
516 |
-
if(!empty($_POST['delete'])){
|
517 |
-
$comments = get_comments(array('author_email' => 'stop_email@example.com'));
|
518 |
-
$deleted = 0;
|
519 |
-
$amount_to_delete = 15;
|
520 |
-
foreach($comments as $comment){
|
521 |
-
if($deleted >= $amount_to_delete)
|
522 |
-
break;
|
523 |
-
if(wp_delete_comment($comment->comment_ID, true))
|
524 |
-
$deleted++;
|
525 |
-
}
|
526 |
-
print "$deleted";
|
527 |
-
die();
|
528 |
-
}
|
529 |
-
|
530 |
-
//* INSERTION
|
531 |
-
global $wpdb;
|
532 |
-
|
533 |
-
$to_insert = 100;
|
534 |
-
$time = current_time('timestamp')-(730*86400);
|
535 |
-
|
536 |
-
$result = $wpdb->get_results('SELECT network FROM `'. APBCT_TBL_FIREWALL_DATA .'` LIMIT '. $to_insert .';', ARRAY_A);
|
537 |
-
|
538 |
-
if($result){
|
539 |
-
$ip = array();
|
540 |
-
foreach($result as $value){
|
541 |
-
$ips[] = long2ip($value['network']);
|
542 |
-
}
|
543 |
-
unset($value);
|
544 |
-
|
545 |
-
$inserted = 0;
|
546 |
-
for($i=0, $j=0; $i<$to_insert; $i++, $j++){
|
547 |
-
|
548 |
-
if(!isset($ips[$j]))
|
549 |
-
$j=0;
|
550 |
-
|
551 |
-
$rnd=mt_rand(1,100);
|
552 |
-
|
553 |
-
$email="stop_email@example.com";
|
554 |
-
|
555 |
-
$data = array(
|
556 |
-
'comment_post_ID' => 1,
|
557 |
-
'comment_author' => "author_$rnd",
|
558 |
-
'comment_author_email' => $email,
|
559 |
-
'comment_author_url' => 'http://',
|
560 |
-
'comment_content' => "comment content ".mt_rand(1,10000)." ".mt_rand(1,10000)." ".mt_rand(1,10000),
|
561 |
-
'comment_type' => '',
|
562 |
-
'comment_parent' => 0,
|
563 |
-
'user_id' => 1,
|
564 |
-
'comment_author_IP' => $ips[$j],
|
565 |
-
'comment_agent' => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729)',
|
566 |
-
'comment_date' => date('Y-m-d H:i:s', $time),
|
567 |
-
'comment_approved' => 1,
|
568 |
-
);
|
569 |
-
|
570 |
-
wp_insert_comment($data);
|
571 |
-
$time = $time + 86400;
|
572 |
-
$inserted++;
|
573 |
-
}
|
574 |
-
}else{
|
575 |
-
$inserted = '0';
|
576 |
-
}
|
577 |
-
|
578 |
-
print $inserted;
|
579 |
-
die();
|
580 |
-
}
|
581 |
-
|
582 |
-
function ct_ajax_delete_checked(){
|
583 |
-
check_ajax_referer( 'ct_secret_nonce', 'security' );
|
584 |
-
foreach($_POST['ids'] as $key=>$value){
|
585 |
-
wp_delete_comment($value, false);
|
586 |
-
}
|
587 |
-
die();
|
588 |
-
}
|
589 |
-
|
590 |
-
function ct_ajax_delete_all(){
|
591 |
-
check_ajax_referer( 'ct_secret_nonce', 'security' );
|
592 |
-
$args_spam = array(
|
593 |
-
'number'=>100,
|
594 |
-
'meta_query' => array(
|
595 |
-
Array(
|
596 |
-
'key' => 'ct_marked_as_spam',
|
597 |
-
'value' => '1',
|
598 |
-
'compare' => 'NUMERIC'
|
599 |
-
)
|
600 |
-
)
|
601 |
-
);
|
602 |
-
$c_spam=get_comments($args_spam);
|
603 |
-
|
604 |
-
$cnt=sizeof($c_spam);
|
605 |
-
|
606 |
-
$args_spam = array(
|
607 |
-
'count'=>true,
|
608 |
-
'meta_query' => array(
|
609 |
-
Array(
|
610 |
-
'key' => 'ct_marked_as_spam',
|
611 |
-
'value' => '1',
|
612 |
-
'compare' => 'NUMERIC'
|
613 |
-
)
|
614 |
-
)
|
615 |
-
);
|
616 |
-
$cnt_all=get_comments($args_spam);
|
617 |
-
|
618 |
-
for($i=0;$i<sizeof($c_spam);$i++){
|
619 |
-
wp_delete_comment($c_spam[$i]->comment_ID, false);
|
620 |
-
usleep(10000);
|
621 |
-
}
|
622 |
-
print $cnt_all;
|
623 |
-
die();
|
624 |
-
}
|
625 |
-
|
626 |
-
function ct_ajax_clear_comments(){
|
627 |
-
|
628 |
-
check_ajax_referer( 'ct_secret_nonce', 'security' );
|
629 |
-
|
630 |
-
if ( isset($_POST['from']) && isset($_POST['till']) ) {
|
631 |
-
if ( preg_match('/[a-zA-Z]{3}\s{1}\d{1,2}\s{1}\d{4}/', $_POST['from'] ) && preg_match('/[a-zA-Z]{3}\s{1}\d{1,2}\s{1}\d{4}/', $_POST['till'] ) ) {
|
632 |
-
|
633 |
-
$from = date('Y-m-d', intval(strtotime($_POST['from']))) . ' 00:00:00';
|
634 |
-
$till = date('Y-m-d', intval(strtotime($_POST['till']))) . ' 23:59:59';
|
635 |
-
|
636 |
-
global $wpdb;
|
637 |
-
$query_result = $wpdb->query("DELETE FROM {$wpdb->commentmeta} WHERE
|
638 |
-
meta_key IN ('ct_checked', 'ct_marked_as_spam', 'ct_bad')
|
639 |
-
AND meta_value >= '{$from}'
|
640 |
-
AND meta_value <= '{$till}';");
|
641 |
-
|
642 |
-
die();
|
643 |
-
|
644 |
-
}
|
645 |
-
}
|
646 |
-
|
647 |
-
}
|
648 |
-
|
649 |
-
/**
|
650 |
-
* Admin action 'comment_unapproved_to_approved' - Approve comment, delete from the deleting list
|
651 |
-
*/
|
652 |
-
function ct_comment_check_approve_comment(){
|
653 |
-
|
654 |
-
check_ajax_referer( 'ct_secret_nonce', 'security' );
|
655 |
-
|
656 |
-
$id=$_POST['id'];
|
657 |
-
$comment = get_comment($id, 'ARRAY_A');
|
658 |
-
$comment['comment_content'] = apbct_comment__unmark_red($comment['comment_content']);
|
659 |
-
$comment['comment_approved'] = 1;
|
660 |
-
update_comment_meta($id, 'ct_marked_as_spam', 0);
|
661 |
-
wp_update_comment($comment);
|
662 |
-
|
663 |
-
die();
|
664 |
-
}
|
665 |
-
|
666 |
-
/**
|
667 |
-
* Get date last checked comment or date of the first comment
|
668 |
-
*
|
669 |
-
* @return string date "M j Y"
|
670 |
-
*/
|
671 |
-
function ct_last_checked_comment() {
|
672 |
-
|
673 |
-
$params = array(
|
674 |
-
'fields' => 'ids',
|
675 |
-
'meta_key' => 'ct_checked',
|
676 |
-
'orderby' => 'ct_checked',
|
677 |
-
'order' => 'ASC'
|
678 |
-
);
|
679 |
-
$checked_comments = get_comments( $params );
|
680 |
-
|
681 |
-
if ( ! empty($checked_comments) ) {
|
682 |
-
|
683 |
-
return get_comment_date( "M j Y", end( $checked_comments ) );
|
684 |
-
|
685 |
-
} else {
|
686 |
-
|
687 |
-
$params = array(
|
688 |
-
'fields' => 'ids',
|
689 |
-
'orderby' => 'comment_date_gmt',
|
690 |
-
'order' => 'ASC',
|
691 |
-
'number' => 1
|
692 |
-
);
|
693 |
-
$first_comment = get_comments( $params );
|
694 |
-
|
695 |
-
return get_comment_date( "M j Y", current( $first_comment ) );
|
696 |
-
|
697 |
-
}
|
698 |
-
|
699 |
-
}
|
700 |
-
|
701 |
-
/**
|
702 |
-
* Get last comments check date.
|
703 |
-
*
|
704 |
-
* @return string|null Date format"M j Y" or datetime format or null
|
705 |
-
*/
|
706 |
-
function ct_get_last_comment_check_date( $timestamp = false ) {
|
707 |
-
|
708 |
-
$params = array(
|
709 |
-
'fields' => 'ids',
|
710 |
-
'meta_key' => 'ct_checked',
|
711 |
-
'orderby' => 'comment_date_gmt',
|
712 |
-
'order' => 'ASC'
|
713 |
-
);
|
714 |
-
$checked_comments = get_comments( $params );
|
715 |
-
|
716 |
-
$last_check = null;
|
717 |
-
|
718 |
-
if( ! empty( $checked_comments ) ) {
|
719 |
-
|
720 |
-
$last_check = $timestamp ? get_comment_meta( end( $checked_comments ), 'ct_checked', true ) : date( "M j Y", strtotime( get_comment_meta( end( $checked_comments ), 'ct_checked', true ) ) );
|
721 |
-
|
722 |
-
}
|
723 |
-
|
724 |
-
return $last_check;
|
725 |
-
|
726 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
inc/cleantalk-find-spam.php
ADDED
@@ -0,0 +1,57 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once(CLEANTALK_PLUGIN_DIR . 'inc/find-spam/ClassCleantalkFindSpamPage.php');
|
4 |
+
require_once(CLEANTALK_PLUGIN_DIR . 'inc/find-spam/ClassCleantalkFindSpamChecker.php');
|
5 |
+
require_once(CLEANTALK_PLUGIN_DIR . 'inc/find-spam/ClassCleantalkFindSpamUsersChecker.php');
|
6 |
+
require_once(CLEANTALK_PLUGIN_DIR . 'inc/find-spam/ClassCleantalkFindSpamCommentsChecker.php');
|
7 |
+
|
8 |
+
// Adding menu items for USERS and COMMENTS spam checking pages
|
9 |
+
add_action( 'admin_menu', 'ct_add_find_spam_pages' );
|
10 |
+
function ct_add_find_spam_pages(){
|
11 |
+
|
12 |
+
// Check users pages
|
13 |
+
$ct_check_users = add_users_page( __( "Check for spam", 'cleantalk' ), __( "Find spam users", 'cleantalk' ), 'activate_plugins', 'ct_check_users', array( 'ClassCleantalkFindSpamPage', 'showFindSpamPage' ) );
|
14 |
+
$ct_check_users_total = add_users_page( __( "Total spam found", 'cleantalk' ), '', 'activate_plugins', 'ct_check_users_total', array( 'ClassCleantalkFindSpamPage', 'showFindSpamPage' ) );
|
15 |
+
$ct_check_users_logs = add_users_page( __( "Scan logs", 'cleantalk' ), '', 'activate_plugins', 'ct_check_users_logs', array( 'ClassCleantalkFindSpamPage', 'showFindSpamPage' ) );
|
16 |
+
|
17 |
+
// Cheack comments pages
|
18 |
+
$ct_check_spam = add_comments_page( __( "Check for spam", 'cleantalk' ), __( "Find spam comments", 'cleantalk' ), 'activate_plugins', 'ct_check_spam', array( 'ClassCleantalkFindSpamPage', 'showFindSpamPage' ) );
|
19 |
+
$ct_check_spam_total = add_comments_page( __( "Total spam found", 'cleantalk' ), '', 'activate_plugins', 'ct_check_spam_total', array( 'ClassCleantalkFindSpamPage', 'showFindSpamPage' ) );
|
20 |
+
$ct_check_spam_logs = add_comments_page( __( "Scan logs", 'cleantalk' ), '', 'activate_plugins', 'ct_check_spam_logs', array( 'ClassCleantalkFindSpamPage', 'showFindSpamPage' ) );
|
21 |
+
|
22 |
+
// Remove some pages from main menu
|
23 |
+
remove_submenu_page( 'users.php', 'ct_check_users_total' );
|
24 |
+
remove_submenu_page( 'users.php', 'ct_check_users_logs' );
|
25 |
+
remove_submenu_page( 'edit-comments.php', 'ct_check_spam_total' );
|
26 |
+
remove_submenu_page( 'edit-comments.php', 'ct_check_spam_logs' );
|
27 |
+
|
28 |
+
// Set screen option for every pages
|
29 |
+
add_action( "load-$ct_check_users", array( 'ClassCleantalkFindSpamPage', 'setScreenOption' ) );
|
30 |
+
add_action( "load-$ct_check_users_total", array( 'ClassCleantalkFindSpamPage', 'setScreenOption' ) );
|
31 |
+
add_action( "load-$ct_check_users_logs", array( 'ClassCleantalkFindSpamPage', 'setScreenOption' ) );
|
32 |
+
add_action( "load-$ct_check_spam", array( 'ClassCleantalkFindSpamPage', 'setScreenOption' ) );
|
33 |
+
add_action( "load-$ct_check_spam_total", array( 'ClassCleantalkFindSpamPage', 'setScreenOption' ) );
|
34 |
+
add_action( "load-$ct_check_spam_logs", array( 'ClassCleantalkFindSpamPage', 'setScreenOption' ) );
|
35 |
+
|
36 |
+
}
|
37 |
+
|
38 |
+
// Set AJAX actions
|
39 |
+
add_action( 'wp_ajax_ajax_clear_users', array( 'ClassCleantalkFindSpamUsersChecker', 'ct_ajax_clear_users' ) );
|
40 |
+
add_action( 'wp_ajax_ajax_check_users', array( 'ClassCleantalkFindSpamUsersChecker', 'ct_ajax_check_users' ) );
|
41 |
+
add_action( 'wp_ajax_ajax_info_users', array( 'ClassCleantalkFindSpamUsersChecker', 'ct_ajax_info' ) );
|
42 |
+
add_action( 'wp_ajax_ajax_ct_get_csv_file', array( 'ClassCleantalkFindSpamUsersChecker', 'ct_get_csv_file' ) );
|
43 |
+
|
44 |
+
add_action( 'wp_ajax_ajax_clear_comments', array( 'ClassCleantalkFindSpamCommentsChecker', 'ct_ajax_clear_comments' ) );
|
45 |
+
add_action( 'wp_ajax_ajax_check_comments', array( 'ClassCleantalkFindSpamCommentsChecker', 'ct_ajax_check_comments' ) );
|
46 |
+
add_action( 'wp_ajax_ajax_info_comments', array( 'ClassCleantalkFindSpamCommentsChecker', 'ct_ajax_info' ) );
|
47 |
+
|
48 |
+
// Hook for saving "per_page" option
|
49 |
+
add_action( 'wp_loaded', 'ct_save_screen_option' );
|
50 |
+
function ct_save_screen_option() {
|
51 |
+
|
52 |
+
// Saving screen option for the pagination (per page option)
|
53 |
+
add_filter( 'set-screen-option', function( $status, $option, $value ){
|
54 |
+
return ( $option == 'spam_per_page' ) ? (int) $value : $status;
|
55 |
+
}, 10, 3 );
|
56 |
+
|
57 |
+
}
|
inc/cleantalk-public.php
CHANGED
@@ -1475,7 +1475,7 @@ function apbct_js_test($field_name = 'ct_checkjs', $data = null) {
|
|
1475 |
$apbct->settings['use_static_js_key'] == 1 ||
|
1476 |
( $apbct->settings['use_static_js_key'] == - 1 &&
|
1477 |
( apbct_is_cache_plugins_exists() ||
|
1478 |
-
( apbct_is_post() && $apbct->data['cache_detected'] == 1 )
|
1479 |
)
|
1480 |
)
|
1481 |
){
|
@@ -1950,6 +1950,11 @@ function apbct_registration__Wordpress__changeMailNotification($wp_new_user_noti
|
|
1950 |
*/
|
1951 |
function apbct_registration__UltimateMembers__check( $args ){
|
1952 |
|
|
|
|
|
|
|
|
|
|
|
1953 |
global $apbct, $cleantalk_executed;
|
1954 |
|
1955 |
if ($apbct->settings['registrations_test'] == 0)
|
@@ -3294,7 +3299,8 @@ function ct_contact_form_validate_postdata() {
|
|
3294 |
(isset($_GET['wc-ajax']) && $_GET['wc-ajax'] == 'sa_wc_buy_now_get_ajax_buy_now_button') || //BuyNow add to cart
|
3295 |
apbct_is_in_uri('/wp-json/wpstatistics/v1/hit') || //WPStatistics
|
3296 |
(isset($_POST['ihcaction']) && $_POST['ihcaction'] == 'login') || //Skip login form
|
3297 |
-
(isset($_POST['action']) && $_POST['action'] == 'infinite_scroll') //Scroll
|
|
|
3298 |
) {
|
3299 |
return null;
|
3300 |
}
|
@@ -3413,6 +3419,9 @@ function ct_enqueue_scripts_public($hook){
|
|
3413 |
|
3414 |
global $current_user, $apbct;
|
3415 |
|
|
|
|
|
|
|
3416 |
if($apbct->settings['registrations_test'] || $apbct->settings['comments_test'] || $apbct->settings['contact_forms_test'] || $apbct->settings['general_contact_forms_test'] || $apbct->settings['wc_checkout_test'] || $apbct->settings['check_external'] || $apbct->settings['check_internal'] || $apbct->settings['bp_private_messages'] || $apbct->settings['general_postdata_test']){
|
3417 |
|
3418 |
// Differnt JS params
|
1475 |
$apbct->settings['use_static_js_key'] == 1 ||
|
1476 |
( $apbct->settings['use_static_js_key'] == - 1 &&
|
1477 |
( apbct_is_cache_plugins_exists() ||
|
1478 |
+
( apbct_is_post() && isset($apbct->data['cache_detected']) && $apbct->data['cache_detected'] == 1 )
|
1479 |
)
|
1480 |
)
|
1481 |
){
|
1950 |
*/
|
1951 |
function apbct_registration__UltimateMembers__check( $args ){
|
1952 |
|
1953 |
+
if ( isset( UM()->form()->errors ) ) {
|
1954 |
+
$sender_info['previous_form_validation'] = true;
|
1955 |
+
$sender_info['validation_notice'] = json_encode( UM()->form()->errors );
|
1956 |
+
}
|
1957 |
+
|
1958 |
global $apbct, $cleantalk_executed;
|
1959 |
|
1960 |
if ($apbct->settings['registrations_test'] == 0)
|
3299 |
(isset($_GET['wc-ajax']) && $_GET['wc-ajax'] == 'sa_wc_buy_now_get_ajax_buy_now_button') || //BuyNow add to cart
|
3300 |
apbct_is_in_uri('/wp-json/wpstatistics/v1/hit') || //WPStatistics
|
3301 |
(isset($_POST['ihcaction']) && $_POST['ihcaction'] == 'login') || //Skip login form
|
3302 |
+
(isset($_POST['action']) && $_POST['action'] == 'infinite_scroll') || //Scroll
|
3303 |
+
isset($_POST['gform_submit']) //Skip gravity checking because of direct integration
|
3304 |
) {
|
3305 |
return null;
|
3306 |
}
|
3419 |
|
3420 |
global $current_user, $apbct;
|
3421 |
|
3422 |
+
if (apbct_exclusions_check__url()) {
|
3423 |
+
return;
|
3424 |
+
}
|
3425 |
if($apbct->settings['registrations_test'] || $apbct->settings['comments_test'] || $apbct->settings['contact_forms_test'] || $apbct->settings['general_contact_forms_test'] || $apbct->settings['wc_checkout_test'] || $apbct->settings['check_external'] || $apbct->settings['check_internal'] || $apbct->settings['bp_private_messages'] || $apbct->settings['general_postdata_test']){
|
3426 |
|
3427 |
// Differnt JS params
|
inc/cleantalk-updater.php
CHANGED
@@ -392,3 +392,22 @@ function apbct_update_to_5_128_0(){
|
|
392 |
$apbct->remote_calls = array();
|
393 |
$apbct->save('remote_calls');
|
394 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
392 |
$apbct->remote_calls = array();
|
393 |
$apbct->save('remote_calls');
|
394 |
}
|
395 |
+
|
396 |
+
function apbct_update_to_5_133_0() {
|
397 |
+
|
398 |
+
global $wpdb;
|
399 |
+
|
400 |
+
// Scan comment/user log
|
401 |
+
$sqls[] = 'CREATE TABLE IF NOT EXISTS `%scleantalk_spamscan_logs` (
|
402 |
+
`id` int(11) NOT NULL AUTO_INCREMENT,
|
403 |
+
`scan_type` varchar(11) NOT NULL,
|
404 |
+
`start_time` datetime NOT NULL,
|
405 |
+
`finish_time` datetime NOT NULL,
|
406 |
+
`count_to_scan` int(11) DEFAULT NULL,
|
407 |
+
`found_spam` int(11) DEFAULT NULL,
|
408 |
+
`found_bad` int(11) DEFAULT NULL,
|
409 |
+
PRIMARY KEY (`id`));';
|
410 |
+
|
411 |
+
apbct_activation__create_tables($sqls);
|
412 |
+
|
413 |
+
}
|
inc/cleantalk-users.php
DELETED
@@ -1,802 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
add_action('admin_menu', 'ct_add_users_menu');
|
4 |
-
add_action( 'wp_ajax_ajax_check_users', 'ct_ajax_check_users' );
|
5 |
-
add_action( 'wp_ajax_ajax_info_users', 'ct_ajax_info_users' );
|
6 |
-
add_action( 'wp_ajax_ajax_insert_users', 'ct_ajax_insert_users' );
|
7 |
-
add_action( 'wp_ajax_ajax_delete_checked_users', 'ct_ajax_delete_checked_users' );
|
8 |
-
add_action( 'wp_ajax_ajax_delete_all_users', 'ct_ajax_delete_all_users' );
|
9 |
-
add_action( 'wp_ajax_ajax_clear_users', 'ct_ajax_clear_users' );
|
10 |
-
add_action( 'wp_ajax_ajax_ct_approve_user', 'ct_usercheck_approve_user' );
|
11 |
-
add_action( 'wp_ajax_ajax_ct_get_csv_file', 'ct_usercheck_get_csv_file' );
|
12 |
-
|
13 |
-
function ct_add_users_menu(){
|
14 |
-
if(current_user_can('activate_plugins'))
|
15 |
-
add_users_page( __("Check for spam", 'cleantalk'), __("Find spam users", 'cleantalk'), 'read', 'ct_check_users', 'ct_show_users_page');
|
16 |
-
}
|
17 |
-
|
18 |
-
function ct_show_users_page(){
|
19 |
-
|
20 |
-
global $wpdb, $apbct;
|
21 |
-
|
22 |
-
?>
|
23 |
-
<div class="wrap">
|
24 |
-
<h2><img src="<?php echo $apbct->logo__small__colored; ?>" /> <?php echo $apbct->plugin_name; ?></h2>
|
25 |
-
<a style="color: gray; margin-left: 23px;" href="<?php echo $apbct->settings_link; ?>"><?php _e('Plugin Settings', 'cleantalk'); ?></a>
|
26 |
-
<br />
|
27 |
-
<?php
|
28 |
-
|
29 |
-
// If access key is unset in
|
30 |
-
if(!apbct_api_key__is_correct()){
|
31 |
-
if($apbct->moderate_ip == 1){
|
32 |
-
echo '<h3>'
|
33 |
-
.sprintf(
|
34 |
-
__('Antispam hosting tariff does not allow you to use this feature. To do so, you need to enter an Access Key in the %splugin settings%s.', 'cleantalk'),
|
35 |
-
'<a href="' . (is_network_admin() ? 'settings.php?page=cleantalk' : 'options-general.php?page=cleantalk').'">',
|
36 |
-
'</a>'
|
37 |
-
)
|
38 |
-
.'</h3>';
|
39 |
-
return;
|
40 |
-
}
|
41 |
-
}
|
42 |
-
|
43 |
-
|
44 |
-
// Getting total spam users
|
45 |
-
$r = $wpdb->get_results("
|
46 |
-
SELECT
|
47 |
-
DISTINCT COUNT($wpdb->users.ID) AS cnt
|
48 |
-
FROM $wpdb->users
|
49 |
-
INNER JOIN $wpdb->usermeta
|
50 |
-
ON $wpdb->users.ID = $wpdb->usermeta.user_id
|
51 |
-
WHERE $wpdb->usermeta.meta_key='ct_marked_as_spam';"
|
52 |
-
, ARRAY_A);
|
53 |
-
$cnt_spam1=$r[0]['cnt'];
|
54 |
-
|
55 |
-
?>
|
56 |
-
|
57 |
-
<!-- AJAX error message -->
|
58 |
-
<div id="ct_error_message" style="display:none">
|
59 |
-
<h3>
|
60 |
-
<?php _e("Ajax error. Process will be automatically restarted in 3 seconds. Status: ", 'cleantalk'); ?><span id="cleantalk_ajax_error"></span> (<span id="cleantalk_js_func"></span>)
|
61 |
-
</h3>
|
62 |
-
<h4>Please, check for JavaScript errors in your dashboard and and repair it.</h4>
|
63 |
-
</div>
|
64 |
-
|
65 |
-
<!-- Deleting message -->
|
66 |
-
<div id="ct_deleting_message" style="display:none">
|
67 |
-
<?php _e("Please wait for a while. CleanTalk is deleting spam users. Users left: ", 'cleantalk'); ?> <span id="cleantalk_users_left">
|
68 |
-
<?php echo $cnt_spam1;?>
|
69 |
-
</span>
|
70 |
-
</div>
|
71 |
-
|
72 |
-
<!-- Main info -->
|
73 |
-
<h3 id="ct_checking_status"><?php echo ct_ajax_info_users(true); ?></h3>
|
74 |
-
|
75 |
-
<!-- Check options -->
|
76 |
-
<div class="ct_to_hide" id="ct_check_params_wrapper">
|
77 |
-
<button class="button ct_check_params_elem" id="ct_check_spam_button" <?php echo !$apbct->data['moderate'] ? 'disabled="disabled"' : ''; ?>><?php _e("Start check", 'cleantalk'); ?></button>
|
78 |
-
<?php if(!empty($_COOKIE['ct_paused_users_check'])) { ?><button class="button ct_check_params_elem" id="ct_proceed_check_button"><?php _e("Continue check", 'cleantalk'); ?></button><?php } ?>
|
79 |
-
<p class="ct_check_params_desc"><?php _e("The plugin will check all users against blacklists database and show you senders that have spam activity on other websites.", 'cleantalk'); ?></p>
|
80 |
-
<br />
|
81 |
-
<div class="ct_check_params_elem ct_check_params_elem_sub">
|
82 |
-
<input id="ct_accurate_check" type="checkbox" value="1" /><b><label for="ct_accurate_check"><?php _e("Accurate check", 'cleantalk'); ?></b></label>
|
83 |
-
</div>
|
84 |
-
<p class="ct_check_params_desc"><?php _e("Allows to use user's dates to perform more accurate check. Could seriously slow down the check.", 'cleantalk'); ?></p>
|
85 |
-
<br />
|
86 |
-
<div class="ct_check_params_elem ct_check_params_elem_sub">
|
87 |
-
<input id="ct_allow_date_range" type="checkbox" value="1" /><label for="ct_allow_date_range"><b><?php _e("Specify date range", 'cleantalk'); ?></b></label>
|
88 |
-
</div>
|
89 |
-
<div class="ct_check_params_desc">
|
90 |
-
<input class="ct_date" type="text" id="ct_date_range_from" value="<?php echo ct_last_checked_user_register(); ?>" disabled readonly />
|
91 |
-
<input class="ct_date" type="text" id="ct_date_range_till" value="<?php echo date( "M j Y"); ?>" disabled readonly />
|
92 |
-
</div>
|
93 |
-
<div class="ct_check_params_desc">
|
94 |
-
<p>Begin/end dates of creation user to check. If no date is specified, the plugin uses the last users check date.</p>
|
95 |
-
</div>
|
96 |
-
<br>
|
97 |
-
<?php apbct_admin__badge__get_premium(); ?>
|
98 |
-
</div>
|
99 |
-
|
100 |
-
<!-- Cooling notice -->
|
101 |
-
<h3 id="ct_cooling_notice"></h3>
|
102 |
-
|
103 |
-
<!-- Preloader and working message -->
|
104 |
-
<div id="ct_preloader">
|
105 |
-
<img border=0 src="<?php print plugin_dir_url(__FILE__); ?>images/preloader.gif" />
|
106 |
-
</div>
|
107 |
-
<div id="ct_working_message">
|
108 |
-
<?php _e("Please wait for a while. CleanTalk is checking all users via blacklist database at cleantalk.org. You will have option to delete found spam users after plugin finish.", 'cleantalk'); ?>
|
109 |
-
</div>
|
110 |
-
|
111 |
-
<!-- Pause button -->
|
112 |
-
<button class="button" id="ct_pause">Pause check</button>
|
113 |
-
|
114 |
-
<?php
|
115 |
-
|
116 |
-
// Pagination
|
117 |
-
$page = !empty($_GET['spam_page']) ? intval($_GET['spam_page']) : 1;
|
118 |
-
$on_page = 20;
|
119 |
-
|
120 |
-
$args_spam = array(
|
121 |
-
'meta_query' => array(
|
122 |
-
Array(
|
123 |
-
'key' => 'ct_marked_as_spam',
|
124 |
-
'value' => '1',
|
125 |
-
'compare' => 'NUMERIC'
|
126 |
-
)
|
127 |
-
),
|
128 |
-
'number'=>$on_page,
|
129 |
-
'offset'=>($page-1)*$on_page
|
130 |
-
);
|
131 |
-
|
132 |
-
$c_spam=get_users($args_spam);
|
133 |
-
if($cnt_spam1 > 0){
|
134 |
-
|
135 |
-
$pages = ceil(intval($cnt_spam1)/$on_page);
|
136 |
-
if($pages && $pages != 1){
|
137 |
-
echo "<div class='ct_to_hide pagination'>"
|
138 |
-
."<b>Pages:</b>"
|
139 |
-
."<ul class='pagination'>";
|
140 |
-
for($i = 1; $i <= $pages; $i++){
|
141 |
-
echo "<li class='pagination'>"
|
142 |
-
."<a href='users.php?page=ct_check_users&spam_page=$i&ct_worked=1'>"
|
143 |
-
.($i == $page ? "<span class='current_page'>$i</span>" : $i)
|
144 |
-
."</a>"
|
145 |
-
."</li>";
|
146 |
-
}
|
147 |
-
echo "</ul>";
|
148 |
-
echo "</div>";
|
149 |
-
}
|
150 |
-
?>
|
151 |
-
<table class="ct_to_hide widefat fixed comments" id="ct_check_users_table">
|
152 |
-
<thead>
|
153 |
-
<th scope="col" id="cb" class="manage-column column-cb check-column">
|
154 |
-
<label class="screen-reader-text" for="cb-select-all-1">Select All</label>
|
155 |
-
<input id="cb-select-all-1" type="checkbox"/>
|
156 |
-
</th>
|
157 |
-
<th scope="col" id="author" class="manage-column column-slug"><?php _e('Username');?></th>
|
158 |
-
<th scope="col" id="comment" class="manage-column column-comment"><?php _e('Name');?></th>
|
159 |
-
<th scope="col" id="response" class="manage-column column-comment"><?php _e('E-mail');?></th>
|
160 |
-
<th scope="col" id="signed_up" class="manage-column column-comment"><?php _e('Signed up');?></th>
|
161 |
-
<th scope="col" id="role" class="manage-column column-response sortable desc"><?php _e('Role');?></th>
|
162 |
-
<th scope="col" id="posts" class="manage-column column-response sortable desc"><?php _e('Posts');?></th>
|
163 |
-
</thead>
|
164 |
-
<tbody id="the-comment-list" data-wp-lists="list:comment">
|
165 |
-
<?php
|
166 |
-
for($i=0;$i<sizeof($c_spam);$i++){
|
167 |
-
$id = $c_spam[$i]->ID;
|
168 |
-
$login = $c_spam[$i]->data->user_login;
|
169 |
-
$email = $c_spam[$i]->data->user_email;
|
170 |
-
$signed = substr($c_spam[$i]->data->user_registered, 0, -3);
|
171 |
-
|
172 |
-
echo "<tr id='comment-$id' class='comment even thread-even depth-1 approved cleantalk_user' data-id='$id'>"
|
173 |
-
."<th scope='row' class='check-column'>"
|
174 |
-
."<label class='screen-reader-text' for='cb-select-$id'>Select user</label>"
|
175 |
-
."<input id='cb-select-$id' type='checkbox' name='del_comments[]' />"
|
176 |
-
."</th>"
|
177 |
-
."<td class='author column-author' nowrap>"
|
178 |
-
."<strong>"
|
179 |
-
.get_avatar( $c_spam[$i]->data->ID , 32)
|
180 |
-
.$login
|
181 |
-
."</strong>"
|
182 |
-
."<br/>"
|
183 |
-
."<br/>";
|
184 |
-
|
185 |
-
// Outputs email if exists
|
186 |
-
if(!empty($email)){
|
187 |
-
echo "<a href='mailto:$email'>$email</a>"
|
188 |
-
.(!$apbct->white_label
|
189 |
-
? "<a href='https://cleantalk.org/blacklists/$email' target='_blank'>"
|
190 |
-
." <img src='".plugin_dir_url(__FILE__)."images/new_window.gif' border='0' style='float:none' />"
|
191 |
-
."</a>"
|
192 |
-
: '');
|
193 |
-
}else{
|
194 |
-
echo "No email";
|
195 |
-
}
|
196 |
-
echo "<br/>";
|
197 |
-
|
198 |
-
// Outputs IP if exists
|
199 |
-
$user_meta = get_user_meta($id, 'session_tokens', true);
|
200 |
-
if(!empty($user_meta) && is_array($user_meta)){
|
201 |
-
$user_meta=array_values($user_meta);
|
202 |
-
if(!empty($user_meta[0]['ip'])){
|
203 |
-
$ip = $user_meta[0]['ip'];
|
204 |
-
echo "<a href='user-edit.php?user_id=$id'>$ip</a>"
|
205 |
-
.(!$apbct->white_label
|
206 |
-
?"<a href='https://cleantalk.org/blacklists/$ip ' target='_blank'>"
|
207 |
-
." <img src='".plugin_dir_url(__FILE__)."images/new_window.gif' border='0' style='float:none' />"
|
208 |
-
."</a>"
|
209 |
-
: '');
|
210 |
-
}else
|
211 |
-
echo "No IP adress";
|
212 |
-
}else
|
213 |
-
echo "No IP adress";
|
214 |
-
echo "</td>";
|
215 |
-
?>
|
216 |
-
<td class="comment column-comment">
|
217 |
-
<div class="submitted-on">
|
218 |
-
<?php print $c_spam[$i]->data->display_name; ?>
|
219 |
-
<div style="height:16px; display: none;" id="cleantalk_button_set_<?php print $id; ?>">
|
220 |
-
<a href="#" class="cleantalk_delete_from_list_button" data-id="<?php print $id; ?>" style="color:#0a0;" onclick="return false;" onmouseover="this.style.textDecoration='underline';" onmouseout="this.style.textDecoration='none';"><?php _e("Approve", "cleantalk"); ?></a>
|
221 |
-
|
|
222 |
-
<a href="#" class="cleantalk_delete_user_button" id="cleantalk_delete_user_<?php print $id; ?>" data-id="<?php print $id; ?>" style="color:#a00;display:none;" onclick="return false;" onmouseover="this.style.textDecoration='underline';" onmouseout="this.style.textDecoration='none';"><?php _e("Delete", "cleantalk"); ?></a>
|
223 |
-
</div>
|
224 |
-
</div>
|
225 |
-
</td>
|
226 |
-
<td class="comment column-comment">
|
227 |
-
<?php print $email; ?>
|
228 |
-
</td>
|
229 |
-
<td class="comment column-comment">
|
230 |
-
<?php print $signed; ?>
|
231 |
-
</td>
|
232 |
-
<td class="comment column-comment">
|
233 |
-
<?php
|
234 |
-
$info=get_userdata( $id );
|
235 |
-
print implode(', ', $info->roles);
|
236 |
-
?>
|
237 |
-
</td>
|
238 |
-
<td class="comment column-comment">
|
239 |
-
<?php
|
240 |
-
print count_user_posts($id);
|
241 |
-
?>
|
242 |
-
</td>
|
243 |
-
</tr>
|
244 |
-
<?php
|
245 |
-
}
|
246 |
-
?>
|
247 |
-
</tbody>
|
248 |
-
</table>
|
249 |
-
<?php
|
250 |
-
// Pagination
|
251 |
-
if($pages && $pages != 1){
|
252 |
-
echo "<div class='ct_to_hide pagination'>"
|
253 |
-
."<b>Pages:</b>"
|
254 |
-
."<ul class='pagination'>";
|
255 |
-
for($i = 1; $i <= $pages; $i++){
|
256 |
-
echo "<li class='pagination'>"
|
257 |
-
."<a href='users.php?page=ct_check_users&spam_page=$i&ct_worked=1'>"
|
258 |
-
.($i == $page ? "<span class='current_page'>$i</span>" : $i)
|
259 |
-
."</a>"
|
260 |
-
."</li>";
|
261 |
-
}
|
262 |
-
echo "</ul>";
|
263 |
-
echo "</div>";
|
264 |
-
}
|
265 |
-
?>
|
266 |
-
<div class="ct_to_hide" id="ct_tools_buttons" style="margin-top: 10px;">
|
267 |
-
<button class="button" id="ct_delete_all_users"><?php _e('Delete all users from list', 'cleantalk'); ?></button>
|
268 |
-
<button class="button" id="ct_delete_checked_users"><?php _e('Delete selected', 'cleantalk'); ?></button>
|
269 |
-
<button class="button" id="ct_get_csv_file"><?php _e('Download results in CSV', 'cleantalk'); ?></button>
|
270 |
-
</div>
|
271 |
-
<?php
|
272 |
-
}
|
273 |
-
echo apbct_get_server_variable( 'REMOTE_ADDR' )=='127.0.0.1' ? '<br /><button class=" ct_to_hide button" id="ct_insert_users">'. __('Insert accounts', 'cleantalk'). ' (100)</button> ' : '';
|
274 |
-
echo apbct_get_server_variable( 'REMOTE_ADDR' )=='127.0.0.1' ? '<button class="ct_to_hide button" id="ct_delete_users">'. __('Delete accounts', 'cleantalk'). ' (110)</button><br />' : '';
|
275 |
-
|
276 |
-
if($cnt_spam1 > 0){
|
277 |
-
echo "<div id='ct_search_info'>"
|
278 |
-
."<br />"
|
279 |
-
.__("There is some differencies between blacklists database and our API mechanisms. Blacklists shows all history of spam activity, but our API (that used in spam checking) used another parameters, too: last day of activity, number of spam attacks during last days etc. This mechanisms help us to reduce number of false positivitie. So, there is nothing strange, if some emails/IPs will be not found by this checking.", 'cleantalk')
|
280 |
-
."</div>";
|
281 |
-
}
|
282 |
-
?>
|
283 |
-
<div>
|
284 |
-
<button class="button" id="ct_stop_deletion" style="display:none;"><?php _e("Stop deletion", 'cleantalk'); ?></button>
|
285 |
-
</div>
|
286 |
-
<div id='ct_csv_wrapper' style="display: none;"></div>
|
287 |
-
</div>
|
288 |
-
<?php
|
289 |
-
}
|
290 |
-
|
291 |
-
function ct_ajax_check_users(){
|
292 |
-
|
293 |
-
check_ajax_referer('ct_secret_nonce', 'security');
|
294 |
-
|
295 |
-
$amount = !empty($_POST['amount']) && intval($_POST['amount'])
|
296 |
-
? intval($_POST['amount'])
|
297 |
-
: 100;
|
298 |
-
|
299 |
-
global $apbct;
|
300 |
-
|
301 |
-
$skip_roles = array(
|
302 |
-
'administrator'
|
303 |
-
);
|
304 |
-
|
305 |
-
$params = array(
|
306 |
-
// 'fields' => array(
|
307 |
-
// 'ID',
|
308 |
-
// 'user_login',
|
309 |
-
// 'user_email',
|
310 |
-
// 'user_registered',
|
311 |
-
// ),
|
312 |
-
'meta_query' => array(
|
313 |
-
'relation' => 'AND',
|
314 |
-
array(
|
315 |
-
'key' => 'ct_checked',
|
316 |
-
'compare' => 'NOT EXISTS'
|
317 |
-
),
|
318 |
-
array(
|
319 |
-
'key' => 'ct_bad',
|
320 |
-
'compare' => 'NOT EXISTS'
|
321 |
-
),
|
322 |
-
),
|
323 |
-
'orderby' => 'registered',
|
324 |
-
'order' => 'ASC',
|
325 |
-
'number' => $amount,
|
326 |
-
);
|
327 |
-
|
328 |
-
if(isset($_POST['from'], $_POST['till'])){
|
329 |
-
|
330 |
-
$from_date = date('Y-m-d', intval(strtotime($_POST['from'])));
|
331 |
-
$till_date = date('Y-m-d', intval(strtotime($_POST['till'])));
|
332 |
-
|
333 |
-
$params['date_query'] = array(
|
334 |
-
'column' => 'user_registered',
|
335 |
-
'after' => $from_date,
|
336 |
-
'before' => $till_date,
|
337 |
-
'inclusive' => true,
|
338 |
-
);
|
339 |
-
}
|
340 |
-
|
341 |
-
$u = get_users( $params );
|
342 |
-
|
343 |
-
$check_result = array(
|
344 |
-
'end' => 0,
|
345 |
-
'checked' => 0,
|
346 |
-
'spam' => 0,
|
347 |
-
'bad' => 0,
|
348 |
-
'error' => 0
|
349 |
-
);
|
350 |
-
|
351 |
-
if(count($u) > 0){
|
352 |
-
|
353 |
-
if(!empty($_POST['accurate_check'])){
|
354 |
-
// Leaving users only with first comment's date. Unsetting others.
|
355 |
-
foreach($u as $user_index => $user){
|
356 |
-
|
357 |
-
if(!isset($curr_date))
|
358 |
-
$curr_date = (substr($user->data->user_registered, 0, 10) ? substr($user->data->user_registered, 0, 10) : '');
|
359 |
-
|
360 |
-
if(substr($user->data->user_registered, 0, 10) != $curr_date)
|
361 |
-
unset($u[$user_index]);
|
362 |
-
|
363 |
-
}
|
364 |
-
unset($user_index, $user);
|
365 |
-
}
|
366 |
-
|
367 |
-
// Checking comments IP/Email. Gathering $data for check.
|
368 |
-
$data=Array();
|
369 |
-
for($i=0; $i < count($u); $i++){
|
370 |
-
|
371 |
-
$user_meta = get_user_meta($u[$i]->ID, 'session_tokens', true);
|
372 |
-
if(is_array($user_meta))
|
373 |
-
$user_meta = array_values($user_meta);
|
374 |
-
|
375 |
-
$curr_ip = !empty($user_meta[0]['ip']) ? trim($user_meta[0]['ip']) : '';
|
376 |
-
$curr_email = !empty($u[$i]->data->user_email) ? trim($u[$i]->data->user_email) : '';
|
377 |
-
|
378 |
-
// Check for identity
|
379 |
-
$curr_ip = preg_match('/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/', $curr_ip) === 1 ? $curr_ip : null;
|
380 |
-
$curr_email = preg_match('/^\S+@\S+\.\S+$/', $curr_email) === 1 ? $curr_email : null;
|
381 |
-
|
382 |
-
if(empty($curr_ip) && empty($curr_email)){
|
383 |
-
$check_result['bad']++;
|
384 |
-
update_user_meta($u[$i]->ID,'ct_bad','1',true);
|
385 |
-
unset($u[$i]);
|
386 |
-
}else{
|
387 |
-
if(!empty($curr_ip))
|
388 |
-
$data[] = $curr_ip;
|
389 |
-
if(!empty($curr_email))
|
390 |
-
$data[] = $curr_email;
|
391 |
-
// Patch for empty IP/Email
|
392 |
-
$u[$i]->data->user_ip = empty($curr_ip) ? 'none' : $curr_ip;
|
393 |
-
$u[$i]->data->user_email = empty($curr_email) ? 'none' : $curr_email;
|
394 |
-
}
|
395 |
-
}
|
396 |
-
|
397 |
-
// Recombining after checking and unsettting
|
398 |
-
$u = array_values($u);
|
399 |
-
|
400 |
-
// Drop if data empty and there's no users to check
|
401 |
-
if(count($data) == 0){
|
402 |
-
if($_POST['unchecked'] === 0)
|
403 |
-
$check_result['end'] = 1;
|
404 |
-
print json_encode($check_result);
|
405 |
-
die();
|
406 |
-
}
|
407 |
-
|
408 |
-
$result = CleantalkAPI::method__spam_check_cms($apbct->api_key, $data, !empty($_POST['accurate_check']) ? $curr_date : null);
|
409 |
-
|
410 |
-
if(empty($result['error'])){
|
411 |
-
|
412 |
-
for($i=0;$i<sizeof($u);$i++){
|
413 |
-
|
414 |
-
$check_result['checked']++;
|
415 |
-
update_user_meta($u[$i]->ID,'ct_checked',date("Y-m-d H:m:s"),true);
|
416 |
-
|
417 |
-
// Do not display forbidden roles.
|
418 |
-
foreach ($skip_roles as $role) {
|
419 |
-
if (in_array($role, $u[$i]->roles)){
|
420 |
-
delete_user_meta($u[$i]->ID, 'ct_marked_as_spam');
|
421 |
-
continue 2;
|
422 |
-
}
|
423 |
-
}
|
424 |
-
|
425 |
-
$mark_spam_ip = false;
|
426 |
-
$mark_spam_email = false;
|
427 |
-
|
428 |
-
$uip = $u[$i]->data->user_ip;
|
429 |
-
$uim = $u[$i]->data->user_email;
|
430 |
-
|
431 |
-
if(isset($result[$uip]) && $result[$uip]['appears'] == 1)
|
432 |
-
$mark_spam_ip = true;
|
433 |
-
|
434 |
-
if(isset($result[$uim]) && $result[$uim]['appears'] == 1)
|
435 |
-
$mark_spam_email = true;
|
436 |
-
|
437 |
-
if ($mark_spam_ip || $mark_spam_email){
|
438 |
-
$check_result['spam']++;
|
439 |
-
update_user_meta($u[$i]->ID,'ct_marked_as_spam','1',true);
|
440 |
-
}
|
441 |
-
|
442 |
-
}
|
443 |
-
print json_encode($check_result);
|
444 |
-
}else{
|
445 |
-
$check_result['error'] = 1;
|
446 |
-
$check_result['error_message'] = $result['error'];
|
447 |
-
echo json_encode($check_result);
|
448 |
-
}
|
449 |
-
}else{
|
450 |
-
$check_result['end'] = 1;
|
451 |
-
print json_encode($check_result);
|
452 |
-
}
|
453 |
-
die;
|
454 |
-
}
|
455 |
-
|
456 |
-
function ct_ajax_info_users($direct_call = false)
|
457 |
-
{
|
458 |
-
if (!$direct_call)
|
459 |
-
check_ajax_referer( 'ct_secret_nonce', 'security' );
|
460 |
-
|
461 |
-
// Total users
|
462 |
-
$params_total = array(
|
463 |
-
'fields' => 'ID',
|
464 |
-
'count'=>true,
|
465 |
-
'orderby' => 'user_registered'
|
466 |
-
);
|
467 |
-
$total_users = new WP_User_Query($params_total);
|
468 |
-
$cnt = $total_users->get_total();
|
469 |
-
|
470 |
-
// Checked users
|
471 |
-
$params_checked = array(
|
472 |
-
'fields' => 'ID',
|
473 |
-
'meta_key' => 'ct_checked',
|
474 |
-
'count_total' => true,
|
475 |
-
'orderby' => 'ct_checked'
|
476 |
-
);
|
477 |
-
$checked_users = new WP_User_Query($params_checked);
|
478 |
-
$cnt_checked = $checked_users->get_total();
|
479 |
-
|
480 |
-
// Spam users
|
481 |
-
$params_spam = array(
|
482 |
-
'fields' => 'ID',
|
483 |
-
'meta_key' => 'ct_marked_as_spam',
|
484 |
-
'count_total' => true,
|
485 |
-
);
|
486 |
-
$spam_users = new WP_User_Query($params_spam);
|
487 |
-
$cnt_spam = $spam_users->get_total();
|
488 |
-
|
489 |
-
// Bad users (without IP and Email)
|
490 |
-
$params_bad = array(
|
491 |
-
'fields' => 'ID',
|
492 |
-
'meta_key' => 'ct_bad',
|
493 |
-
'count_total' => true,
|
494 |
-
);
|
495 |
-
$bad_users = new WP_User_Query($params_bad);
|
496 |
-
$cnt_bad = $bad_users->get_total();
|
497 |
-
|
498 |
-
$return = array(
|
499 |
-
'message' => '',
|
500 |
-
'total' => $cnt,
|
501 |
-
'spam' => $cnt_spam,
|
502 |
-
'checked' => $cnt_checked,
|
503 |
-
'bad' => $cnt_bad,
|
504 |
-
);
|
505 |
-
|
506 |
-
$return['message'] .= sprintf (__("Total users %s, checked %s, last check %s, found %s spam users and %s bad users (without IP or email)", 'cleantalk'), $cnt, $cnt_checked, ct_get_last_check_date(), $cnt_spam, $cnt_bad);
|
507 |
-
|
508 |
-
$backup_notice = ' ';
|
509 |
-
if ($cnt_spam > 0) {
|
510 |
-
$backup_notice = __("Please do backup of WordPress database before delete any accounts!", 'cleantalk');
|
511 |
-
}
|
512 |
-
$return['message'] .= "<p>$backup_notice</p>";
|
513 |
-
|
514 |
-
if($direct_call){
|
515 |
-
return $return['message'];
|
516 |
-
}else{
|
517 |
-
echo json_encode($return);
|
518 |
-
die();
|
519 |
-
}
|
520 |
-
|
521 |
-
return null;
|
522 |
-
}
|
523 |
-
|
524 |
-
function ct_ajax_insert_users()
|
525 |
-
{
|
526 |
-
check_ajax_referer( 'ct_secret_nonce', 'security' );
|
527 |
-
|
528 |
-
//* DELETION
|
529 |
-
if(!empty($_POST['delete'])){
|
530 |
-
$users = get_users(array('search' => '*user_*', 'search_columns' => array('login', 'nicename')));
|
531 |
-
$deleted = 0;
|
532 |
-
$amount_to_delete = 15;
|
533 |
-
foreach($users as $user){
|
534 |
-
if($deleted >= $amount_to_delete)
|
535 |
-
break;
|
536 |
-
if(wp_delete_user($user->ID))
|
537 |
-
$deleted++;
|
538 |
-
}
|
539 |
-
print "$deleted";
|
540 |
-
die();
|
541 |
-
}
|
542 |
-
//*/
|
543 |
-
|
544 |
-
//* INSERTION
|
545 |
-
global $wpdb;
|
546 |
-
$to_insert = 100;
|
547 |
-
$result = $wpdb->get_results('SELECT network FROM `'. APBCT_TBL_FIREWALL_DATA .'` LIMIT '. $to_insert .';', ARRAY_A);
|
548 |
-
|
549 |
-
if($result){
|
550 |
-
$ip = array();
|
551 |
-
foreach($result as $value){
|
552 |
-
$ips[] = long2ip($value['network']);
|
553 |
-
}
|
554 |
-
unset($value);
|
555 |
-
|
556 |
-
$inserted = 0;
|
557 |
-
for($i=0; $i<$to_insert; $i++){
|
558 |
-
$rnd=mt_rand(1,10000000);
|
559 |
-
|
560 |
-
$user_name = "user_$rnd";
|
561 |
-
$email="stop_email_$rnd@example.com";
|
562 |
-
|
563 |
-
$user_id = wp_create_user(
|
564 |
-
$user_name,
|
565 |
-
rand(),
|
566 |
-
$email
|
567 |
-
);
|
568 |
-
|
569 |
-
$curr_user = get_user_by('email', $email);
|
570 |
-
|
571 |
-
update_user_meta($curr_user->ID, 'session_tokens', array($rnd => array('ip' => $ips[$i])));
|
572 |
-
|
573 |
-
if (is_int($user_id))
|
574 |
-
$inserted++;
|
575 |
-
|
576 |
-
}
|
577 |
-
}else{
|
578 |
-
$inserted = '0';
|
579 |
-
}
|
580 |
-
//*/
|
581 |
-
|
582 |
-
print "$inserted";
|
583 |
-
die();
|
584 |
-
}
|
585 |
-
|
586 |
-
function ct_ajax_delete_checked_users()
|
587 |
-
{
|
588 |
-
check_ajax_referer( 'ct_secret_nonce', 'security' );
|
589 |
-
foreach($_POST['ids'] as $key=>$value)
|
590 |
-
{
|
591 |
-
wp_delete_user($value);
|
592 |
-
}
|
593 |
-
die();
|
594 |
-
}
|
595 |
-
|
596 |
-
function ct_ajax_delete_all_users($count_all = 0)
|
597 |
-
{
|
598 |
-
check_ajax_referer( 'ct_secret_nonce', 'security' );
|
599 |
-
|
600 |
-
global $wpdb;
|
601 |
-
|
602 |
-
$r = $wpdb->get_results("select count(*) as cnt from $wpdb->usermeta where meta_key='ct_marked_as_spam';", OBJECT );
|
603 |
-
|
604 |
-
if(!empty($r)){
|
605 |
-
|
606 |
-
$count_all = $r ? $r[0]->cnt : 0;
|
607 |
-
|
608 |
-
$args = array(
|
609 |
-
'meta_key' => 'ct_marked_as_spam',
|
610 |
-
'meta_value' => '1',
|
611 |
-
'fields' => array('ID'),
|
612 |
-
'number' => 50
|
613 |
-
);
|
614 |
-
$users = get_users($args);
|
615 |
-
|
616 |
-
if ($users){
|
617 |
-
foreach($users as $user){
|
618 |
-
wp_delete_user($user->ID);
|
619 |
-
usleep(5000);
|
620 |
-
}
|
621 |
-
}
|
622 |
-
}
|
623 |
-
|
624 |
-
die($count_all);
|
625 |
-
}
|
626 |
-
|
627 |
-
function ct_ajax_clear_users()
|
628 |
-
{
|
629 |
-
check_ajax_referer( 'ct_secret_nonce', 'security' );
|
630 |
-
|
631 |
-
if ( isset($_POST['from']) && isset($_POST['till']) ) {
|
632 |
-
if ( preg_match('/[a-zA-Z]{3}\s{1}\d{1,2}\s{1}\d{4}/', $_POST['from'] ) && preg_match('/[a-zA-Z]{3}\s{1}\d{1,2}\s{1}\d{4}/', $_POST['till'] ) ) {
|
633 |
-
|
634 |
-
$from = date('Y-m-d', intval(strtotime($_POST['from']))) . ' 00:00:00';
|
635 |
-
$till = date('Y-m-d', intval(strtotime($_POST['till']))) . ' 23:59:59';
|
636 |
-
|
637 |
-
global $wpdb;
|
638 |
-
$query_result = $wpdb->query("DELETE FROM {$wpdb->usermeta} WHERE
|
639 |
-
meta_key IN ('ct_checked', 'ct_marked_as_spam', 'ct_bad')
|
640 |
-
AND meta_value >= '{$from}'
|
641 |
-
AND meta_value <= '{$till}';");
|
642 |
-
|
643 |
-
die();
|
644 |
-
|
645 |
-
}
|
646 |
-
}
|
647 |
-
}
|
648 |
-
|
649 |
-
/**
|
650 |
-
* Admin action 'user_unapproved_to_approved' - Approve user, delete from the deleting list
|
651 |
-
*/
|
652 |
-
function ct_usercheck_approve_user() {
|
653 |
-
|
654 |
-
check_ajax_referer( 'ct_secret_nonce', 'security' );
|
655 |
-
|
656 |
-
delete_metadata('user', $_POST['id'], 'ct_marked_as_spam');
|
657 |
-
|
658 |
-
die();
|
659 |
-
}
|
660 |
-
|
661 |
-
/**
|
662 |
-
* Admin action 'wp_ajax_ajax_ct_get_csv_file' - prints CSV file to AJAX
|
663 |
-
*/
|
664 |
-
function ct_usercheck_get_csv_file() {
|
665 |
-
|
666 |
-
check_ajax_referer( 'ct_secret_nonce', 'security' );
|
667 |
-
|
668 |
-
// Opening CSV file
|
669 |
-
if(!is_dir(APBCT_DIR_PATH .'/check-results/'))
|
670 |
-
mkdir(APBCT_DIR_PATH .'/check-results');
|
671 |
-
|
672 |
-
$current_user = wp_get_current_user();
|
673 |
-
|
674 |
-
$filename = APBCT_DIR_PATH ."/check-results/user_check_by_{$current_user->user_nicename}.csv";
|
675 |
-
|
676 |
-
//Delete old file
|
677 |
-
if (file_exists($filename))
|
678 |
-
unlink($filename);
|
679 |
-
|
680 |
-
$file_desc = fopen($filename, 'w');
|
681 |
-
$text = 'login,email,ip'.PHP_EOL;
|
682 |
-
|
683 |
-
$params = array(
|
684 |
-
'meta_query' => array(
|
685 |
-
array(
|
686 |
-
'key' => 'ct_marked_as_spam',
|
687 |
-
'compare' => '1'
|
688 |
-
),
|
689 |
-
),
|
690 |
-
'orderby' => 'registered',
|
691 |
-
'order' => 'ASC',
|
692 |
-
);
|
693 |
-
|
694 |
-
$u = get_users( $params );
|
695 |
-
|
696 |
-
for($i=0; $i < count($u); $i++){
|
697 |
-
$user_meta = get_user_meta($u[$i]->ID, 'session_tokens', true);
|
698 |
-
if(is_array($user_meta))
|
699 |
-
$user_meta = array_values($user_meta);
|
700 |
-
$text .= $u[$i]->user_login.',';
|
701 |
-
$text .= $u[$i]->data->user_email.',';
|
702 |
-
$text .= !empty($user_meta[0]['ip']) ? trim($user_meta[0]['ip']) : ''.PHP_EOL;
|
703 |
-
}
|
704 |
-
if($file_desc){
|
705 |
-
fwrite($file_desc, $text);
|
706 |
-
fclose($file_desc);
|
707 |
-
}
|
708 |
-
|
709 |
-
$filename = !empty($_POST['filename']) ? $_POST['filename'] : false;
|
710 |
-
|
711 |
-
if($filename !== false && file_exists(WP_PLUGIN_DIR."/cleantalk-spam-protect/check-results/{$filename}.csv"))
|
712 |
-
$output = 1;
|
713 |
-
else
|
714 |
-
$output = 0;
|
715 |
-
|
716 |
-
echo $output;
|
717 |
-
|
718 |
-
die();
|
719 |
-
|
720 |
-
}
|
721 |
-
|
722 |
-
/**
|
723 |
-
* Get date user registered
|
724 |
-
*
|
725 |
-
* @param $user_id
|
726 |
-
* @return string Date format"M j Y"
|
727 |
-
*/
|
728 |
-
function ct_get_user_register($user_id ) {
|
729 |
-
|
730 |
-
$user_data = get_userdata( $user_id );
|
731 |
-
$registered = $user_data->user_registered;
|
732 |
-
|
733 |
-
return date( "M j Y", strtotime( $registered ) );
|
734 |
-
|
735 |
-
}
|
736 |
-
|
737 |
-
/**
|
738 |
-
* Get date last checked user or date first registered user
|
739 |
-
*
|
740 |
-
* @return string date "M j Y"
|
741 |
-
*/
|
742 |
-
function ct_last_checked_user_register() {
|
743 |
-
|
744 |
-
// Checked users
|
745 |
-
$params = array(
|
746 |
-
'fields' => 'ID',
|
747 |
-
'meta_key' => 'ct_checked',
|
748 |
-
'count_total' => true,
|
749 |
-
'orderby' => 'ct_checked'
|
750 |
-
);
|
751 |
-
$tmp = new WP_User_Query($params);
|
752 |
-
$cnt_checked = $tmp->get_total();
|
753 |
-
|
754 |
-
if( $cnt_checked > 0 ) {
|
755 |
-
|
756 |
-
// If we have checked users return last user reg date
|
757 |
-
$users = $tmp->get_results();
|
758 |
-
return ct_get_user_register( end( $users ) );
|
759 |
-
|
760 |
-
} else {
|
761 |
-
|
762 |
-
// If we have not any checked users return first user registered date
|
763 |
-
$params = array(
|
764 |
-
'fields' => 'ID',
|
765 |
-
'number' => 1,
|
766 |
-
'orderby' => 'user_registered'
|
767 |
-
);
|
768 |
-
$tmp = new WP_User_Query($params);
|
769 |
-
|
770 |
-
return ct_get_user_register( current( $tmp->get_results() ) );
|
771 |
-
|
772 |
-
}
|
773 |
-
|
774 |
-
}
|
775 |
-
|
776 |
-
/**
|
777 |
-
* Get last users check date.
|
778 |
-
*
|
779 |
-
* @return string|null Date format"M j Y" or datetime format or null
|
780 |
-
*/
|
781 |
-
function ct_get_last_check_date( $timestamp = false ) {
|
782 |
-
|
783 |
-
// Checked users
|
784 |
-
$params = array(
|
785 |
-
'fields' => 'ID',
|
786 |
-
'meta_key' => 'ct_checked',
|
787 |
-
'count_total' => true,
|
788 |
-
'orderby' => 'ct_checked'
|
789 |
-
);
|
790 |
-
$tmp = new WP_User_Query($params);
|
791 |
-
$cnt_checked = $tmp->get_total();
|
792 |
-
$last_check = null;
|
793 |
-
|
794 |
-
if( $cnt_checked > 0 ) {
|
795 |
-
|
796 |
-
$users = $tmp->get_results();
|
797 |
-
$last_check = $timestamp ? get_user_meta( end( $users ), 'ct_checked', true ) : date( "M j Y", strtotime( get_user_meta( end( $users ), 'ct_checked', true ) ) );
|
798 |
-
}
|
799 |
-
|
800 |
-
return $last_check;
|
801 |
-
|
802 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
inc/find-spam/ClassCleantalkCommentsListTable.php
ADDED
@@ -0,0 +1,302 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
|
4 |
+
class ABPCTCommentsListTable extends ABPCT_List_Table
|
5 |
+
{
|
6 |
+
protected $apbct;
|
7 |
+
|
8 |
+
function __construct(){
|
9 |
+
|
10 |
+
parent::__construct(array(
|
11 |
+
'singular' => 'spam',
|
12 |
+
'plural' => 'spam'
|
13 |
+
));
|
14 |
+
|
15 |
+
$this->bulk_actions_handler();
|
16 |
+
|
17 |
+
$this->row_actions_handler();
|
18 |
+
|
19 |
+
$this->prepare_items();
|
20 |
+
|
21 |
+
global $apbct;
|
22 |
+
$this->apbct = $apbct;
|
23 |
+
|
24 |
+
}
|
25 |
+
// Set columns
|
26 |
+
function get_columns(){
|
27 |
+
return array(
|
28 |
+
'cb' => '<input type="checkbox" />',
|
29 |
+
'ct_author' => esc_html__( 'Author', 'cleantalk' ),
|
30 |
+
'ct_comment' => esc_html__( 'Comment', 'cleantalk' ),
|
31 |
+
'ct_response_to' => esc_html__( ' In Response To', 'cleantalk' ),
|
32 |
+
);
|
33 |
+
}
|
34 |
+
|
35 |
+
// CheckBox column
|
36 |
+
function column_cb( $item ){
|
37 |
+
echo '<input type="checkbox" name="spamids[]" id="cb-select-'. $item['ct_id'] .'" value="'. $item['ct_id'] .'" />';
|
38 |
+
}
|
39 |
+
|
40 |
+
// Author (first) column
|
41 |
+
function column_ct_author( $item ) {
|
42 |
+
|
43 |
+
$column_content = '';
|
44 |
+
$email = $item['ct_comment']->comment_author_email;
|
45 |
+
$ip = $item['ct_comment']->comment_author_IP;
|
46 |
+
|
47 |
+
// Avatar, nickname
|
48 |
+
$column_content .= '<strong>'. $item['ct_comment']->comment_author . '</strong>';
|
49 |
+
$column_content .= '<br /><br />';
|
50 |
+
|
51 |
+
// Email
|
52 |
+
if( ! empty( $email ) ){
|
53 |
+
$column_content .= "<a href='mailto:$email'>$email</a>"
|
54 |
+
.( ! $this->apbct->white_label
|
55 |
+
? "<a href='https://cleantalk.org/blacklists/$email' target='_blank'>"
|
56 |
+
." <img src='" . APBCT_URL_PATH . "/inc/images/new_window.gif' alt='Ico: open in new window' border='0' style='float:none' />"
|
57 |
+
."</a>"
|
58 |
+
: '');
|
59 |
+
} else {
|
60 |
+
$column_content .= esc_html__( 'No email', 'cleantalk' );
|
61 |
+
}
|
62 |
+
|
63 |
+
$column_content .= '<br/>';
|
64 |
+
|
65 |
+
// IP
|
66 |
+
if( ! empty( $ip ) ) {
|
67 |
+
$column_content .= "<a href='edit-comments.php?s=$ip&mode=detail'>$ip</a>"
|
68 |
+
.( ! $this->apbct->white_label
|
69 |
+
?"<a href='https://cleantalk.org/blacklists/$ip ' target='_blank'>"
|
70 |
+
." <img src='" . APBCT_URL_PATH . "/inc/images/new_window.gif' alt='Ico: open in new window' border='0' style='float:none' />"
|
71 |
+
."</a>"
|
72 |
+
: '');
|
73 |
+
}else
|
74 |
+
$column_content .= esc_html__( 'No IP adress', 'cleantalk' );
|
75 |
+
|
76 |
+
return $column_content;
|
77 |
+
|
78 |
+
}
|
79 |
+
|
80 |
+
function column_ct_comment( $item ){
|
81 |
+
|
82 |
+
$id = $item['ct_id'];
|
83 |
+
$column_content = '';
|
84 |
+
|
85 |
+
$column_content .= '<div class="column-comment">';
|
86 |
+
|
87 |
+
$column_content .= '<div class="submitted-on">';
|
88 |
+
|
89 |
+
$column_content .= sprintf( __( 'Submitted on <a href="%1$s">%2$s at %3$s</a>' ), get_comment_link($id),
|
90 |
+
get_comment_date( __( 'Y/m/d' ),$id ),
|
91 |
+
get_comment_date( get_option( 'time_format' ),$id )
|
92 |
+
);
|
93 |
+
|
94 |
+
$column_content .= '</div>';
|
95 |
+
|
96 |
+
$column_content .= '<p>' . $item['ct_comment']->comment_content . '</p>';
|
97 |
+
|
98 |
+
$column_content .= '</div>';
|
99 |
+
|
100 |
+
$actions = array(
|
101 |
+
'approve' => sprintf( '<span class="approve"><a href="?page=%s&action=%s&spam=%s">Approve</a></span>', $_REQUEST['page'],'approve', $id ),
|
102 |
+
'delete' => sprintf( '<a href="?page=%s&action=%s&spam=%s">Delete</a>', $_REQUEST['page'],'delete', $id ),
|
103 |
+
);
|
104 |
+
|
105 |
+
return sprintf( '%1$s %2$s', $column_content, $this->row_actions( $actions ) );
|
106 |
+
|
107 |
+
}
|
108 |
+
|
109 |
+
function column_ct_response_to( $item ) {
|
110 |
+
$post_id = $item['ct_response_to'];
|
111 |
+
?>
|
112 |
+
<div>
|
113 |
+
<span>
|
114 |
+
<a href="/wp-admin/post.php?post=<?php echo $post_id; ?>&action=edit"><?php print get_the_title( $post_id ); ?></a>
|
115 |
+
<br/>
|
116 |
+
<a href="/wp-admin/edit-comments.php?p=<?php echo $post_id; ?>" class="post-com-count">
|
117 |
+
<span class="comment-count"><?php
|
118 |
+
$p_cnt = wp_count_comments( $post_id );
|
119 |
+
echo $p_cnt->total_comments;
|
120 |
+
?></span>
|
121 |
+
</a>
|
122 |
+
</span>
|
123 |
+
<a href="<?php print get_permalink( $post_id ); ?>"><?php _e( 'View Post' );?></a>
|
124 |
+
</div>
|
125 |
+
<?php
|
126 |
+
}
|
127 |
+
|
128 |
+
// Rest of columns
|
129 |
+
function column_default( $item, $column_name ) {
|
130 |
+
switch( $column_name ) {
|
131 |
+
case 'ct_author':
|
132 |
+
case 'ct_comment':
|
133 |
+
case 'ct_response_to':
|
134 |
+
case 'ct_start':
|
135 |
+
case 'ct_checked':
|
136 |
+
case 'ct_spam':
|
137 |
+
case 'ct_bad':
|
138 |
+
return $item[ $column_name ];
|
139 |
+
default:
|
140 |
+
return print_r( $item, true ) ;
|
141 |
+
}
|
142 |
+
}
|
143 |
+
|
144 |
+
function get_bulk_actions() {
|
145 |
+
$actions = array(
|
146 |
+
'delete' => 'Delete'
|
147 |
+
);
|
148 |
+
return $actions;
|
149 |
+
}
|
150 |
+
|
151 |
+
function bulk_actions_handler() {
|
152 |
+
|
153 |
+
if( empty($_POST['spamids']) || empty($_POST['_wpnonce']) ) return;
|
154 |
+
|
155 |
+
if ( ! $action = $this->current_action() ) return;
|
156 |
+
|
157 |
+
if( ! wp_verify_nonce( $_POST['_wpnonce'], 'bulk-' . $this->_args['plural'] ) )
|
158 |
+
wp_die('nonce error');
|
159 |
+
|
160 |
+
if( 'delete' == $action ) {
|
161 |
+
$this->removeSpam( $_POST['spamids'] );
|
162 |
+
}
|
163 |
+
|
164 |
+
}
|
165 |
+
|
166 |
+
function row_actions_handler() {
|
167 |
+
|
168 |
+
if( empty($_GET['action']) ) return;
|
169 |
+
|
170 |
+
if( $_GET['action'] == 'approve' ) {
|
171 |
+
|
172 |
+
$id = filter_input( INPUT_GET, 'spam', FILTER_SANITIZE_NUMBER_INT );
|
173 |
+
$this->approveSpam( $id );
|
174 |
+
|
175 |
+
}
|
176 |
+
|
177 |
+
if( $_GET['action'] == 'delete' ) {
|
178 |
+
|
179 |
+
$id = filter_input( INPUT_GET, 'spam', FILTER_SANITIZE_NUMBER_INT );
|
180 |
+
$this->removeSpam( array( $id ) );
|
181 |
+
|
182 |
+
}
|
183 |
+
|
184 |
+
}
|
185 |
+
|
186 |
+
function no_items() {
|
187 |
+
esc_html_e( 'No spam found.', 'cleantalk' );
|
188 |
+
}
|
189 |
+
|
190 |
+
//********************************************//
|
191 |
+
// LOGIC //
|
192 |
+
//*******************************************//
|
193 |
+
|
194 |
+
function approveSpam( $ids ) {
|
195 |
+
|
196 |
+
$comment = get_comment($id, 'ARRAY_A');
|
197 |
+
$comment['comment_approved'] = 1;
|
198 |
+
delete_comment_meta( $id, 'ct_marked_as_spam' );
|
199 |
+
wp_update_comment( $comment );
|
200 |
+
|
201 |
+
apbct_comment__send_feedback( $id, 'approve', false, true );
|
202 |
+
|
203 |
+
}
|
204 |
+
|
205 |
+
function removeSpam( $ids ) {
|
206 |
+
|
207 |
+
$ids_string = implode( ', ', $ids );
|
208 |
+
global $wpdb;
|
209 |
+
|
210 |
+
$wpdb->query("DELETE FROM {$wpdb->comments} WHERE
|
211 |
+
comment_ID IN ($ids_string)");
|
212 |
+
|
213 |
+
}
|
214 |
+
|
215 |
+
public function getTotal() {
|
216 |
+
|
217 |
+
$total_comments = new WP_Comment_Query();
|
218 |
+
return $total_comments;
|
219 |
+
|
220 |
+
}
|
221 |
+
|
222 |
+
public function getChecked() {
|
223 |
+
|
224 |
+
$params_spam = array(
|
225 |
+
'meta_key' => 'ct_checked',
|
226 |
+
);
|
227 |
+
$spam_comments = new WP_Comment_Query($params_spam);
|
228 |
+
return $spam_comments;
|
229 |
+
|
230 |
+
}
|
231 |
+
|
232 |
+
public function getCheckedNow() {
|
233 |
+
|
234 |
+
$params_spam = array(
|
235 |
+
'meta_key' => 'ct_checked_now',
|
236 |
+
);
|
237 |
+
$spam_comments = new WP_Comment_Query($params_spam);
|
238 |
+
return $spam_comments;
|
239 |
+
|
240 |
+
}
|
241 |
+
|
242 |
+
public function getSpam() {
|
243 |
+
|
244 |
+
$params_spam = array(
|
245 |
+
'meta_key' => 'ct_marked_as_spam',
|
246 |
+
);
|
247 |
+
$spam_comments = new WP_Comment_Query($params_spam);
|
248 |
+
return $spam_comments;
|
249 |
+
|
250 |
+
}
|
251 |
+
|
252 |
+
public function getSpamNow() {
|
253 |
+
|
254 |
+
// Spam comments
|
255 |
+
$params_spam = array(
|
256 |
+
'meta_query' => array(
|
257 |
+
'relation' => 'AND',
|
258 |
+
array(
|
259 |
+
'key' => 'ct_marked_as_spam',
|
260 |
+
'compare' => 'EXISTS'
|
261 |
+
),
|
262 |
+
array(
|
263 |
+
'key' => 'ct_checked_now',
|
264 |
+
'compare' => 'EXISTS'
|
265 |
+
),
|
266 |
+
)
|
267 |
+
);
|
268 |
+
$spam_comments = new WP_Comment_Query($params_spam);
|
269 |
+
return $spam_comments;
|
270 |
+
|
271 |
+
}
|
272 |
+
|
273 |
+
public function getBad() { // Without IP and EMAIL
|
274 |
+
|
275 |
+
$params_bad = array(
|
276 |
+
'meta_key' => 'ct_bad',
|
277 |
+
);
|
278 |
+
$bad_users = new WP_Comment_Query($params_bad);
|
279 |
+
return $bad_users;
|
280 |
+
|
281 |
+
}
|
282 |
+
|
283 |
+
public function getScansLogs() {
|
284 |
+
|
285 |
+
global $wpdb;
|
286 |
+
$query = "SELECT * FROM " . APBCT_SPAMSCAN_LOGS . " WHERE scan_type = 'comments'";
|
287 |
+
$res = $wpdb->get_results( $query, ARRAY_A );
|
288 |
+
return $res;
|
289 |
+
|
290 |
+
}
|
291 |
+
|
292 |
+
protected function removeLogs( $ids ) {
|
293 |
+
|
294 |
+
$ids_string = implode( ', ', $ids );
|
295 |
+
global $wpdb;
|
296 |
+
|
297 |
+
$wpdb->query("DELETE FROM " . APBCT_SPAMSCAN_LOGS . " WHERE
|
298 |
+
ID IN ($ids_string)");
|
299 |
+
|
300 |
+
}
|
301 |
+
|
302 |
+
}
|
inc/find-spam/ClassCleantalkCommentsListTableLogs.php
ADDED
@@ -0,0 +1,63 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
|
4 |
+
class ABPCTCommentsListTableLogs extends ABPCTCommentsListTable
|
5 |
+
{
|
6 |
+
|
7 |
+
// Set columns
|
8 |
+
function get_columns(){
|
9 |
+
return array(
|
10 |
+
'cb' => '<input type="checkbox" />',
|
11 |
+
'ct_start' => esc_html__( 'Start time', 'cleantalk' ),
|
12 |
+
'ct_checked' => esc_html__( 'Checked', 'cleantalk' ),
|
13 |
+
'ct_spam' => esc_html__( 'Found spam', 'cleantalk' ),
|
14 |
+
'ct_bad' => esc_html__( 'Found bad', 'cleantalk' ),
|
15 |
+
);
|
16 |
+
}
|
17 |
+
|
18 |
+
function prepare_items(){
|
19 |
+
|
20 |
+
$columns = $this->get_columns();
|
21 |
+
$this->_column_headers = array( $columns, array(), array() );
|
22 |
+
|
23 |
+
$logs = $this->getScansLogs();
|
24 |
+
|
25 |
+
foreach( $logs as $log ) {
|
26 |
+
|
27 |
+
$this->items[] = array(
|
28 |
+
'ct_id' => $log['id'],
|
29 |
+
'ct_start' => $log['start_time'],
|
30 |
+
'ct_checked' => $log['count_to_scan'],
|
31 |
+
'ct_spam' => $log['found_spam'],
|
32 |
+
'ct_bad' => $log['found_bad'],
|
33 |
+
);
|
34 |
+
|
35 |
+
}
|
36 |
+
|
37 |
+
}
|
38 |
+
|
39 |
+
function get_bulk_actions() {
|
40 |
+
$actions = array(
|
41 |
+
'delete' => 'Delete'
|
42 |
+
);
|
43 |
+
return $actions;
|
44 |
+
}
|
45 |
+
|
46 |
+
function bulk_actions_handler() {
|
47 |
+
|
48 |
+
if( empty($_POST['spamids']) || empty($_POST['_wpnonce']) ) return;
|
49 |
+
|
50 |
+
if ( ! $action = $this->current_action() ) return;
|
51 |
+
|
52 |
+
if( ! wp_verify_nonce( $_POST['_wpnonce'], 'bulk-' . $this->_args['plural'] ) )
|
53 |
+
wp_die('nonce error');
|
54 |
+
|
55 |
+
$this->removeLogs( $_POST['spamids'] );
|
56 |
+
|
57 |
+
}
|
58 |
+
|
59 |
+
function no_items() {
|
60 |
+
esc_html_e( 'No logs found.', 'cleantalk' );
|
61 |
+
}
|
62 |
+
|
63 |
+
}
|
inc/find-spam/ClassCleantalkCommentsListTableScan.php
ADDED
@@ -0,0 +1,42 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
|
4 |
+
class ABPCTCommentsListTableScan extends ABPCTCommentsListTable
|
5 |
+
{
|
6 |
+
|
7 |
+
function prepare_items() {
|
8 |
+
|
9 |
+
$columns = $this->get_columns();
|
10 |
+
$this->_column_headers = array( $columns, array(), array() );
|
11 |
+
|
12 |
+
$per_page_option = get_current_screen()->get_option( 'per_page', 'option' );
|
13 |
+
$per_page = get_user_meta( get_current_user_id(), $per_page_option, true );
|
14 |
+
if( ! $per_page ) {
|
15 |
+
$per_page = 10;
|
16 |
+
}
|
17 |
+
|
18 |
+
$scanned_comments = $this->getSpamNow();
|
19 |
+
|
20 |
+
$this->set_pagination_args( array(
|
21 |
+
'total_items' => count( $scanned_comments->get_comments() ),
|
22 |
+
'per_page' => $per_page,
|
23 |
+
) );
|
24 |
+
|
25 |
+
$current_page = (int) $this->get_pagenum();
|
26 |
+
|
27 |
+
$scanned_comments_to_show = array_slice( $scanned_comments->get_comments(), ( ( $current_page - 1 ) * $per_page ), $per_page );
|
28 |
+
|
29 |
+
foreach( $scanned_comments_to_show as $comment ) {
|
30 |
+
|
31 |
+
$this->items[] = array(
|
32 |
+
'ct_id' => $comment->comment_ID,
|
33 |
+
'ct_author' => $comment->comment_author,
|
34 |
+
'ct_comment' => $comment,
|
35 |
+
'ct_response_to' => $comment->comment_post_ID,
|
36 |
+
);
|
37 |
+
|
38 |
+
}
|
39 |
+
|
40 |
+
}
|
41 |
+
|
42 |
+
}
|
inc/find-spam/ClassCleantalkCommentsListTableSpam.php
ADDED
@@ -0,0 +1,42 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
|
4 |
+
class ABPCTCommentsListTableSpam extends ABPCTCommentsListTable
|
5 |
+
{
|
6 |
+
|
7 |
+
function prepare_items() {
|
8 |
+
|
9 |
+
$columns = $this->get_columns();
|
10 |
+
$this->_column_headers = array( $columns, array(), array() );
|
11 |
+
|
12 |
+
$per_page_option = get_current_screen()->get_option( 'per_page', 'option' );
|
13 |
+
$per_page = get_user_meta( get_current_user_id(), $per_page_option, true );
|
14 |
+
if( ! $per_page ) {
|
15 |
+
$per_page = 10;
|
16 |
+
}
|
17 |
+
|
18 |
+
$scanned_comments = $this->getSpam();
|
19 |
+
|
20 |
+
$this->set_pagination_args( array(
|
21 |
+
'total_items' => count( $scanned_comments->get_comments() ),
|
22 |
+
'per_page' => $per_page,
|
23 |
+
) );
|
24 |
+
|
25 |
+
$current_page = (int) $this->get_pagenum();
|
26 |
+
|
27 |
+
$scanned_comments_to_show = array_slice( $scanned_comments->get_comments(), ( ( $current_page - 1 ) * $per_page ), $per_page );
|
28 |
+
|
29 |
+
foreach( $scanned_comments_to_show as $comment ) {
|
30 |
+
|
31 |
+
$this->items[] = array(
|
32 |
+
'ct_id' => $comment->comment_ID,
|
33 |
+
'ct_author' => $comment->comment_author,
|
34 |
+
'ct_comment' => $comment,
|
35 |
+
'ct_response_to' => $comment->comment_post_ID,
|
36 |
+
);
|
37 |
+
|
38 |
+
}
|
39 |
+
|
40 |
+
}
|
41 |
+
|
42 |
+
}
|
inc/find-spam/ClassCleantalkFindSpamChecker.php
ADDED
@@ -0,0 +1,132 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
|
4 |
+
abstract class ClassCleantalkFindSpamChecker
|
5 |
+
{
|
6 |
+
|
7 |
+
protected $page_title = '';
|
8 |
+
|
9 |
+
protected $apbct;
|
10 |
+
|
11 |
+
protected $page_script_name;
|
12 |
+
|
13 |
+
protected $page_slug;
|
14 |
+
|
15 |
+
protected $list_table;
|
16 |
+
|
17 |
+
public function __construct() {
|
18 |
+
|
19 |
+
global $apbct;
|
20 |
+
$this->apbct = $apbct;
|
21 |
+
|
22 |
+
// jQueryUI
|
23 |
+
wp_enqueue_script( 'jqueryui', plugins_url('/cleantalk-spam-protect/js/jquery-ui.min.js'), array('jquery'), '1.12.1' );
|
24 |
+
wp_enqueue_style( 'jqueryui_css', plugins_url('/cleantalk-spam-protect/css/jquery-ui.min.css'), array(), '1.21.1', 'all' );
|
25 |
+
wp_enqueue_style( 'jqueryui_theme_css', plugins_url('/cleantalk-spam-protect/css/jquery-ui.theme.min.css'), array(), '1.21.1', 'all' );
|
26 |
+
|
27 |
+
// Common CSS
|
28 |
+
wp_enqueue_style( 'cleantalk_admin_css_settings_page', plugins_url('/cleantalk-spam-protect/css/cleantalk-spam-check.min.css'), array( 'jqueryui_css' ), APBCT_VERSION, 'all' );
|
29 |
+
|
30 |
+
require_once(CLEANTALK_PLUGIN_DIR . 'inc/ClassApbctListTable.php');
|
31 |
+
|
32 |
+
}
|
33 |
+
|
34 |
+
public function getPageTitle() {
|
35 |
+
|
36 |
+
return $this->page_title;
|
37 |
+
|
38 |
+
}
|
39 |
+
|
40 |
+
public function getPageScriptName() {
|
41 |
+
|
42 |
+
return $this->page_script_name;
|
43 |
+
|
44 |
+
}
|
45 |
+
|
46 |
+
/**
|
47 |
+
* @return mixed
|
48 |
+
*/
|
49 |
+
public function getPageSlug()
|
50 |
+
{
|
51 |
+
return $this->page_slug;
|
52 |
+
}
|
53 |
+
|
54 |
+
/**
|
55 |
+
* @return mixed
|
56 |
+
*/
|
57 |
+
public function getApbct()
|
58 |
+
{
|
59 |
+
return $this->apbct;
|
60 |
+
}
|
61 |
+
|
62 |
+
abstract function getCurrentScanPage();
|
63 |
+
|
64 |
+
abstract function getTotalSpamPage();
|
65 |
+
|
66 |
+
abstract function getSpamLogsPage();
|
67 |
+
|
68 |
+
protected function getCurrentScanPanel( $spam_checker ) {
|
69 |
+
?>
|
70 |
+
|
71 |
+
<!-- Main info -->
|
72 |
+
<h3 id="ct_checking_status"><?php echo $spam_checker::ct_ajax_info(true) ; ?></h3>
|
73 |
+
|
74 |
+
<!-- Check options -->
|
75 |
+
<div class="ct_to_hide" id="ct_check_params_wrapper">
|
76 |
+
<button class="button ct_check_params_elem" id="ct_check_spam_button" <?php echo !$this->apbct->data['moderate'] ? 'disabled="disabled"' : ''; ?>><?php _e("Start check", 'cleantalk'); ?></button>
|
77 |
+
<?php if(!empty($_COOKIE['ct_paused_'.$this->page_slug.'_check'])) { ?><button class="button ct_check_params_elem" id="ct_proceed_check_button"><?php _e("Continue check", 'cleantalk'); ?></button><?php } ?>
|
78 |
+
<p class="ct_check_params_desc"><?php _e("The plugin will check all $this->page_slug against blacklists database and show you senders that have spam activity on other websites.", 'cleantalk'); ?></p>
|
79 |
+
<br />
|
80 |
+
<div class="ct_check_params_elem ct_check_params_elem_sub">
|
81 |
+
<input id="ct_accurate_check" type="checkbox" value="1" /><label for="ct_accurate_check"><strong><?php _e("Accurate check", 'cleantalk'); ?></strong></label>
|
82 |
+
</div>
|
83 |
+
<p class="ct_check_params_desc"><?php _e("Allows to use $this->page_slug's dates to perform more accurate check. Could seriously slow down the check.", 'cleantalk'); ?></p>
|
84 |
+
<br />
|
85 |
+
<div class="ct_check_params_elem ct_check_params_elem_sub">
|
86 |
+
<input id="ct_allow_date_range" type="checkbox" value="1" /><label for="ct_allow_date_range"><strong><?php _e("Specify date range", 'cleantalk'); ?></strong></label>
|
87 |
+
</div>
|
88 |
+
<div class="ct_check_params_desc">
|
89 |
+
<label for="ct_date_range_from"></label><input class="ct_date" type="text" id="ct_date_range_from" value="<?php echo $this->lastCheckDate(); ?>" disabled readonly />
|
90 |
+
<label for="ct_date_range_till"></label><input class="ct_date" type="text" id="ct_date_range_till" value="<?php echo date( "M j Y"); ?>" disabled readonly />
|
91 |
+
</div>
|
92 |
+
<div class="ct_check_params_desc">
|
93 |
+
<p><?php esc_html_e( "Begin/end dates of creation $this->page_slug to check. If no date is specified, the plugin uses the last $this->page_slug check date.", 'cleantalk'); ?></p>
|
94 |
+
</div>
|
95 |
+
<br>
|
96 |
+
<?php apbct_admin__badge__get_premium(); ?>
|
97 |
+
</div>
|
98 |
+
|
99 |
+
<!-- Cooling notice -->
|
100 |
+
<h3 id="ct_cooling_notice"></h3>
|
101 |
+
|
102 |
+
<!-- Preloader and working message -->
|
103 |
+
<div id="ct_preloader">
|
104 |
+
<img src="<?php echo APBCT_URL_PATH . '/inc/images/preloader.gif'; ?>" alt="Cleantalk preloader" />
|
105 |
+
</div>
|
106 |
+
<div id="ct_working_message">
|
107 |
+
<?php _e("Please wait for a while. CleanTalk is checking all $this->page_slug via blacklist database at cleantalk.org. You will have option to delete found spam $this->page_slug after plugin finish.", 'cleantalk'); ?>
|
108 |
+
</div>
|
109 |
+
|
110 |
+
<!-- Pause button -->
|
111 |
+
<button class="button" id="ct_pause">Pause check</button>
|
112 |
+
<?php
|
113 |
+
}
|
114 |
+
|
115 |
+
public static function writeSpamLog( $scan_type, $scan_date, $cnt_checked, $cnt_spam, $cnt_bad ) {
|
116 |
+
|
117 |
+
global $wpdb;
|
118 |
+
$wpdb->insert(
|
119 |
+
APBCT_SPAMSCAN_LOGS,
|
120 |
+
array(
|
121 |
+
'scan_type' => $scan_type,
|
122 |
+
'start_time' => $scan_date, //@ToDo this is the END date. Need to place both: start and and of scanning
|
123 |
+
'count_to_scan' => $cnt_checked,
|
124 |
+
'found_spam' => $cnt_spam,
|
125 |
+
'found_bad' => $cnt_bad
|
126 |
+
),
|
127 |
+
array( '%s', '%s', '%d', '%d', '%d' )
|
128 |
+
);
|
129 |
+
|
130 |
+
}
|
131 |
+
|
132 |
+
}
|
inc/find-spam/ClassCleantalkFindSpamCommentsChecker.php
ADDED
@@ -0,0 +1,448 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
|
4 |
+
class ClassCleantalkFindSpamCommentsChecker extends ClassCleantalkFindSpamChecker
|
5 |
+
{
|
6 |
+
|
7 |
+
public function __construct() {
|
8 |
+
|
9 |
+
parent::__construct();
|
10 |
+
|
11 |
+
$this->page_title = esc_html__( 'Check comments for spam', 'cleantalk' );
|
12 |
+
$this->page_script_name = 'edit-comments.php';
|
13 |
+
$this->page_slug = 'spam';
|
14 |
+
|
15 |
+
// Preparing data
|
16 |
+
if(!empty($_COOKIE['ct_paused_comments_check']))
|
17 |
+
$prev_check = json_decode(stripslashes($_COOKIE['ct_paused_comments_check']), true);
|
18 |
+
|
19 |
+
wp_enqueue_script( 'ct_comments_checkspam', plugins_url('/cleantalk-spam-protect/js/cleantalk-comments-checkspam.min.js'), array( 'jquery', 'jqueryui' ), APBCT_VERSION );
|
20 |
+
wp_localize_script( 'ct_comments_checkspam', 'ctCommentsCheck', array(
|
21 |
+
'ct_ajax_nonce' => wp_create_nonce('ct_secret_nonce'),
|
22 |
+
'ct_prev_accurate' => !empty($prev_check['accurate']) ? true : false,
|
23 |
+
'ct_prev_from' => !empty($prev_check['from']) ? $prev_check['from'] : false,
|
24 |
+
'ct_prev_till' => !empty($prev_check['till']) ? $prev_check['till'] : false,
|
25 |
+
'ct_timeout_confirm' => __('Failed from timeout. Going to check comments again.', 'cleantalk'),
|
26 |
+
'ct_comments_added_after' => __('comments', 'cleantalk'),
|
27 |
+
'ct_status_string' => __('Checked %s, found %s spam comments and %s bad comments (without IP or email).', 'cleantalk'),
|
28 |
+
'ct_status_string_warning' => '<p>'.__('Please do backup of WordPress database before delete any accounts!', 'cleantalk').'</p>',
|
29 |
+
'start' => !empty($_COOKIE['ct_comments_start_check']) ? true : false,
|
30 |
+
));
|
31 |
+
|
32 |
+
require_once(CLEANTALK_PLUGIN_DIR . 'inc/find-spam/ClassCleantalkCommentsListTable.php');
|
33 |
+
|
34 |
+
}
|
35 |
+
|
36 |
+
public function getCurrentScanPage() {
|
37 |
+
|
38 |
+
require_once(CLEANTALK_PLUGIN_DIR . 'inc/find-spam/ClassCleantalkCommentsListTableScan.php');
|
39 |
+
$this->list_table = new ABPCTCommentsListTableScan();
|
40 |
+
|
41 |
+
$this->getCurrentScanPanel( $this );
|
42 |
+
echo '<form action="" method="POST">';
|
43 |
+
$this->list_table->display();
|
44 |
+
echo '</form>';
|
45 |
+
|
46 |
+
}
|
47 |
+
|
48 |
+
public function getTotalSpamPage(){
|
49 |
+
|
50 |
+
require_once(CLEANTALK_PLUGIN_DIR . 'inc/find-spam/ClassCleantalkCommentsListTableSpam.php');
|
51 |
+
$this->list_table = new ABPCTCommentsListTableSpam();
|
52 |
+
|
53 |
+
echo '<form action="" method="POST">';
|
54 |
+
$this->list_table->display();
|
55 |
+
echo '</form>';
|
56 |
+
|
57 |
+
}
|
58 |
+
|
59 |
+
public function getSpamLogsPage(){
|
60 |
+
|
61 |
+
require_once(CLEANTALK_PLUGIN_DIR . 'inc/find-spam/ClassCleantalkCommentsListTableLogs.php');
|
62 |
+
$this->list_table = new ABPCTCommentsListTableLogs();
|
63 |
+
|
64 |
+
echo '<form action="" method="POST">';
|
65 |
+
$this->list_table->display();
|
66 |
+
echo '</form>';
|
67 |
+
|
68 |
+
}
|
69 |
+
|
70 |
+
/**
|
71 |
+
* Get date last checked comment or date of the first comment
|
72 |
+
*
|
73 |
+
* @return string date "M j Y"
|
74 |
+
*/
|
75 |
+
public static function lastCheckDate() {
|
76 |
+
|
77 |
+
$params = array(
|
78 |
+
'fields' => 'ids',
|
79 |
+
'meta_key' => 'ct_checked',
|
80 |
+
'orderby' => 'ct_checked',
|
81 |
+
'order' => 'ASC'
|
82 |
+
);
|
83 |
+
$checked_comments = get_comments( $params );
|
84 |
+
|
85 |
+
if ( ! empty($checked_comments) ) {
|
86 |
+
|
87 |
+
return get_comment_date( "M j Y", end( $checked_comments ) );
|
88 |
+
|
89 |
+
} else {
|
90 |
+
|
91 |
+
$params = array(
|
92 |
+
'fields' => 'ids',
|
93 |
+
'orderby' => 'comment_date_gmt',
|
94 |
+
'order' => 'ASC',
|
95 |
+
'number' => 1
|
96 |
+
);
|
97 |
+
$first_comment = get_comments( $params );
|
98 |
+
|
99 |
+
return get_comment_date( "M j Y", current( $first_comment ) );
|
100 |
+
|
101 |
+
}
|
102 |
+
|
103 |
+
}
|
104 |
+
|
105 |
+
public static function ct_ajax_check_comments(){
|
106 |
+
|
107 |
+
check_ajax_referer( 'ct_secret_nonce', 'security' );
|
108 |
+
|
109 |
+
global $wpdb, $apbct;
|
110 |
+
|
111 |
+
if(isset($_POST['from'], $_POST['till'])){
|
112 |
+
$from_date = date('Y-m-d', intval(strtotime($_POST['from'])));
|
113 |
+
$till_date = date('Y-m-d', intval(strtotime($_POST['till'])));
|
114 |
+
}
|
115 |
+
|
116 |
+
// Gettings comments 100 unchecked comments
|
117 |
+
if(isset($_COOKIE['ct_comments_safe_check'])){
|
118 |
+
$c = $wpdb->get_results("
|
119 |
+
SELECT comment_ID, comment_date_gmt, comment_author_IP, comment_author_email
|
120 |
+
FROM {$wpdb->comments} as comm
|
121 |
+
WHERE
|
122 |
+
(comm.comment_approved = '1' OR comm.comment_approved = '0')
|
123 |
+
AND NOT EXISTS(
|
124 |
+
SELECT comment_id, meta_key
|
125 |
+
FROM {$wpdb->commentmeta} as meta
|
126 |
+
WHERE comm.comment_ID = meta.comment_id AND (meta_key = 'ct_checked' OR meta_key = 'ct_bad')
|
127 |
+
)
|
128 |
+
ORDER BY comment_date_gmt
|
129 |
+
LIMIT 100",
|
130 |
+
ARRAY_A
|
131 |
+
);
|
132 |
+
}else{
|
133 |
+
$params = array(
|
134 |
+
'meta_query' => array(
|
135 |
+
'relation' => 'AND',
|
136 |
+
array(
|
137 |
+
'key' => 'ct_checked_now',
|
138 |
+
'compare' => 'NOT EXISTS'
|
139 |
+
),
|
140 |
+
array(
|
141 |
+
'key' => 'ct_checked',
|
142 |
+
'compare' => 'NOT EXISTS'
|
143 |
+
),
|
144 |
+
array(
|
145 |
+
'key' => 'ct_bad',
|
146 |
+
'compare' => 'NOT EXISTS'
|
147 |
+
)
|
148 |
+
),
|
149 |
+
'orderby' => 'comment_date_gmt',
|
150 |
+
'order' => 'ASC',
|
151 |
+
'number' => 100
|
152 |
+
);
|
153 |
+
if(isset($from_date, $till_date)){
|
154 |
+
$params['date_query'] = array(
|
155 |
+
'column' => 'comment_date_gmt',
|
156 |
+
'after' => $from_date,
|
157 |
+
'before' => $till_date,
|
158 |
+
'inclusive' => true,
|
159 |
+
);
|
160 |
+
}
|
161 |
+
$c = get_comments( $params );
|
162 |
+
}
|
163 |
+
|
164 |
+
$check_result = array(
|
165 |
+
'end' => 0,
|
166 |
+
'checked' => 0,
|
167 |
+
'spam' => 0,
|
168 |
+
'bad' => 0,
|
169 |
+
'error' => 0
|
170 |
+
);
|
171 |
+
|
172 |
+
if(sizeof($c)>0){
|
173 |
+
|
174 |
+
// Coverting $c to objects
|
175 |
+
if(is_array($c[0])){
|
176 |
+
foreach($c as $key => $value){
|
177 |
+
$c[$key] = (object)$value;
|
178 |
+
} unset($key, $value);
|
179 |
+
}
|
180 |
+
|
181 |
+
if(!empty($_POST['accurate_check'])){
|
182 |
+
// Leaving comments only with first comment's date. Unsetting others.
|
183 |
+
|
184 |
+
foreach($c as $comment_index => $comment){
|
185 |
+
|
186 |
+
if(!isset($curr_date))
|
187 |
+
$curr_date = (substr($comment->comment_date_gmt, 0, 10) ? substr($comment->comment_date_gmt, 0, 10) : '');
|
188 |
+
|
189 |
+
if(substr($comment->comment_date_gmt, 0, 10) != $curr_date)
|
190 |
+
unset($c[$comment_index]);
|
191 |
+
|
192 |
+
}
|
193 |
+
unset($comment_index, $comment);
|
194 |
+
}
|
195 |
+
|
196 |
+
// Checking comments IP/Email. Gathering $data for check.
|
197 |
+
$data = Array();
|
198 |
+
for($i=0;$i<sizeof($c);$i++){
|
199 |
+
|
200 |
+
$curr_ip = $c[$i]->comment_author_IP;
|
201 |
+
$curr_email = $c[$i]->comment_author_email;
|
202 |
+
|
203 |
+
// Check for identity
|
204 |
+
$curr_ip = preg_match('/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/', $curr_ip) === 1 ? $curr_ip : null;
|
205 |
+
$curr_email = preg_match('/^\S+@\S+\.\S+$/', $curr_email) === 1 ? $curr_email : null;
|
206 |
+
|
207 |
+
if(empty($curr_ip) && empty($curr_email)){
|
208 |
+
$check_result['bad']++;
|
209 |
+
update_comment_meta($c[$i]->comment_ID,'ct_bad','1');
|
210 |
+
update_comment_meta($c[$i]->comment_ID,'ct_checked','1');
|
211 |
+
unset($c[$i]);
|
212 |
+
}else{
|
213 |
+
if(!empty($curr_ip))
|
214 |
+
$data[] = $curr_ip;
|
215 |
+
if(!empty($curr_email))
|
216 |
+
$data[] = $curr_email;
|
217 |
+
// Patch for empty IP/Email
|
218 |
+
$c[$i]->comment_author_IP = empty($curr_ip) ? 'none' : $curr_ip;
|
219 |
+
$c[$i]->comment_author_email = empty($curr_email) ? 'none' : $curr_email;
|
220 |
+
}
|
221 |
+
}
|
222 |
+
|
223 |
+
// Recombining after checking and unsettting
|
224 |
+
$c = array_values($c);
|
225 |
+
|
226 |
+
// Drop if data empty and there's no comments to check
|
227 |
+
if(count($data) == 0){
|
228 |
+
if($_POST['unchecked'] === 0)
|
229 |
+
$check_result['end'] = 1;
|
230 |
+
print json_encode($check_result);
|
231 |
+
die();
|
232 |
+
}
|
233 |
+
|
234 |
+
$result = CleantalkAPI::method__spam_check_cms($apbct->api_key, $data, !empty($_POST['accurate_check']) ? $curr_date : null);
|
235 |
+
|
236 |
+
if(empty($result['error'])){
|
237 |
+
|
238 |
+
for($i=0;$i<sizeof($c);$i++){
|
239 |
+
|
240 |
+
$mark_spam_ip = false;
|
241 |
+
$mark_spam_email = false;
|
242 |
+
|
243 |
+
$check_result['checked']++;
|
244 |
+
update_comment_meta($c[$i]->comment_ID,'ct_checked',date("Y-m-d H:m:s"));
|
245 |
+
update_comment_meta( $c[$i]->comment_ID, 'ct_checked_now', date("Y-m-d H:m:s"), true) ;
|
246 |
+
|
247 |
+
$uip=$c[$i]->comment_author_IP;
|
248 |
+
$uim=$c[$i]->comment_author_email;
|
249 |
+
|
250 |
+
if(isset($result[$uip]) && $result[$uip]['appears'] == 1)
|
251 |
+
$mark_spam_ip = true;
|
252 |
+
|
253 |
+
if(isset($result[$uim]) && $result[$uim]['appears'] == 1)
|
254 |
+
$mark_spam_email = true;
|
255 |
+
|
256 |
+
if ($mark_spam_ip || $mark_spam_email){
|
257 |
+
$check_result['spam']++;
|
258 |
+
update_comment_meta($c[$i]->comment_ID,'ct_marked_as_spam','1');
|
259 |
+
}
|
260 |
+
}
|
261 |
+
print json_encode($check_result);
|
262 |
+
|
263 |
+
}else{
|
264 |
+
$check_result['error'] = 1;
|
265 |
+
$check_result['error_message'] = $result['error'];
|
266 |
+
echo json_encode($check_result);
|
267 |
+
}
|
268 |
+
}else{
|
269 |
+
|
270 |
+
$check_result['end'] = 1;
|
271 |
+
|
272 |
+
$log_data = static::get_log_data();
|
273 |
+
static::writeSpamLog( 'comments', date("Y-m-d H:i:s"), $log_data['checked'], $log_data['spam'], $log_data['bad'] );
|
274 |
+
|
275 |
+
print json_encode($check_result);
|
276 |
+
|
277 |
+
}
|
278 |
+
|
279 |
+
die;
|
280 |
+
}
|
281 |
+
|
282 |
+
public static function ct_ajax_info($direct_call = false){
|
283 |
+
|
284 |
+
if (!$direct_call)
|
285 |
+
check_ajax_referer( 'ct_secret_nonce', 'security' );
|
286 |
+
|
287 |
+
// Checked comments
|
288 |
+
$params_checked = array(
|
289 |
+
'meta_key' => 'ct_checked_now',
|
290 |
+
'orderby' => 'ct_checked_now'
|
291 |
+
);
|
292 |
+
$checked_comments = new WP_Comment_Query($params_checked);
|
293 |
+
$cnt_checked = count( $checked_comments->get_comments() );
|
294 |
+
|
295 |
+
// Spam comments
|
296 |
+
$params_spam = array(
|
297 |
+
'meta_query' => array(
|
298 |
+
'relation' => 'AND',
|
299 |
+
array(
|
300 |
+
'key' => 'ct_marked_as_spam',
|
301 |
+
'compare' => 'EXISTS'
|
302 |
+
),
|
303 |
+
array(
|
304 |
+
'key' => 'ct_checked_now',
|
305 |
+
'compare' => 'EXISTS'
|
306 |
+
),
|
307 |
+
),
|
308 |
+
);
|
309 |
+
$spam_comments = new WP_Comment_Query($params_spam);
|
310 |
+
$cnt_spam = count( $spam_comments->get_comments() );
|
311 |
+
|
312 |
+
// Bad comments (without IP and Email)
|
313 |
+
$params_bad = array(
|
314 |
+
'meta_query' => array(
|
315 |
+
'relation' => 'AND',
|
316 |
+
array(
|
317 |
+
'key' => 'ct_bad',
|
318 |
+
'compare' => 'EXISTS'
|
319 |
+
),
|
320 |
+
array(
|
321 |
+
'key' => 'ct_checked_now',
|
322 |
+
'compare' => 'EXISTS'
|
323 |
+
),
|
324 |
+
),
|
325 |
+
);
|
326 |
+
$bad_comments = new WP_Comment_Query($params_bad);
|
327 |
+
$cnt_bad = count( $bad_comments->get_comments() );
|
328 |
+
|
329 |
+
$return = array(
|
330 |
+
'message' => '',
|
331 |
+
'spam' => $cnt_spam,
|
332 |
+
'checked' => $cnt_checked,
|
333 |
+
'bad' => $cnt_bad,
|
334 |
+
);
|
335 |
+
|
336 |
+
if( ! $direct_call ) {
|
337 |
+
$return['message'] .= sprintf (
|
338 |
+
esc_html__('Checked %s, found %s spam comments and %s bad comments (without IP or email)', 'cleantalk'),
|
339 |
+
$cnt_checked,
|
340 |
+
$cnt_spam,
|
341 |
+
$cnt_bad
|
342 |
+
);
|
343 |
+
} else {
|
344 |
+
if( isset( $return['checked'] ) && 0 == $return['checked'] ) {
|
345 |
+
$return['message'] = esc_html__( 'Never checked yet or no new spam.', 'cleantalk' );
|
346 |
+
} else {
|
347 |
+
$return['message'] .= sprintf (
|
348 |
+
__("Last check %s: checked %s comments, found %s spam comments and %s bad comments (without IP or email).", 'cleantalk'),
|
349 |
+
self::lastCheckDate(),
|
350 |
+
$cnt_checked,
|
351 |
+
$cnt_spam,
|
352 |
+
$cnt_bad
|
353 |
+
);
|
354 |
+
}
|
355 |
+
}
|
356 |
+
|
357 |
+
$backup_notice = ' ';
|
358 |
+
if ($cnt_spam > 0){
|
359 |
+
$backup_notice = __("Please do backup of WordPress database before delete any comments!", 'cleantalk');
|
360 |
+
}
|
361 |
+
$return['message'] .= "<p>$backup_notice</p>";
|
362 |
+
|
363 |
+
if($direct_call){
|
364 |
+
return $return['message'];
|
365 |
+
}else{
|
366 |
+
echo json_encode($return);
|
367 |
+
die();
|
368 |
+
}
|
369 |
+
|
370 |
+
}
|
371 |
+
|
372 |
+
public static function ct_ajax_clear_comments(){
|
373 |
+
|
374 |
+
check_ajax_referer( 'ct_secret_nonce', 'security' );
|
375 |
+
|
376 |
+
global $wpdb;
|
377 |
+
$wpdb->query("DELETE FROM {$wpdb->commentmeta} WHERE meta_key IN ('ct_checked_now')");
|
378 |
+
|
379 |
+
if ( isset($_POST['from']) && isset($_POST['till']) ) {
|
380 |
+
if ( preg_match('/[a-zA-Z]{3}\s{1}\d{1,2}\s{1}\d{4}/', $_POST['from'] ) && preg_match('/[a-zA-Z]{3}\s{1}\d{1,2}\s{1}\d{4}/', $_POST['till'] ) ) {
|
381 |
+
|
382 |
+
$from = date('Y-m-d', intval(strtotime($_POST['from']))) . ' 00:00:00';
|
383 |
+
$till = date('Y-m-d', intval(strtotime($_POST['till']))) . ' 23:59:59';
|
384 |
+
|
385 |
+
$wpdb->query("DELETE FROM {$wpdb->commentmeta} WHERE
|
386 |
+
meta_key IN ('ct_checked','ct_marked_as_spam','ct_bad')
|
387 |
+
AND meta_value >= '{$from}'
|
388 |
+
AND meta_value <= '{$till}';");
|
389 |
+
|
390 |
+
die();
|
391 |
+
|
392 |
+
}
|
393 |
+
}
|
394 |
+
|
395 |
+
}
|
396 |
+
|
397 |
+
private static function get_log_data() {
|
398 |
+
|
399 |
+
// Checked users
|
400 |
+
$params_spam = array(
|
401 |
+
'meta_key' => 'ct_checked_now',
|
402 |
+
);
|
403 |
+
$spam_comments = new WP_Comment_Query($params_spam);
|
404 |
+
$cnt_checked = count( $spam_comments->get_comments() );
|
405 |
+
|
406 |
+
// Spam users
|
407 |
+
$params_spam = array(
|
408 |
+
'meta_query' => array(
|
409 |
+
'relation' => 'AND',
|
410 |
+
array(
|
411 |
+
'key' => 'ct_marked_as_spam',
|
412 |
+
'compare' => 'EXISTS'
|
413 |
+
),
|
414 |
+
array(
|
415 |
+
'key' => 'ct_checked_now',
|
416 |
+
'compare' => 'EXISTS'
|
417 |
+
),
|
418 |
+
),
|
419 |
+
);
|
420 |
+
$spam_comments = new WP_Comment_Query($params_spam);
|
421 |
+
$cnt_spam = count( $spam_comments->get_comments() );
|
422 |
+
|
423 |
+
// Bad users (without IP and Email)
|
424 |
+
$params_bad = array(
|
425 |
+
'meta_query' => array(
|
426 |
+
'relation' => 'AND',
|
427 |
+
array(
|
428 |
+
'key' => 'ct_bad',
|
429 |
+
'compare' => 'EXISTS'
|
430 |
+
),
|
431 |
+
array(
|
432 |
+
'key' => 'ct_checked_now',
|
433 |
+
'compare' => 'EXISTS'
|
434 |
+
),
|
435 |
+
),
|
436 |
+
);
|
437 |
+
$spam_comments = new WP_Comment_Query($params_bad);
|
438 |
+
$cnt_bad = count( $spam_comments->get_comments() );
|
439 |
+
|
440 |
+
return array(
|
441 |
+
'spam' => $cnt_spam,
|
442 |
+
'checked' => $cnt_checked,
|
443 |
+
'bad' => $cnt_bad,
|
444 |
+
);
|
445 |
+
|
446 |
+
}
|
447 |
+
|
448 |
+
}
|
inc/find-spam/ClassCleantalkFindSpamPage.php
ADDED
@@ -0,0 +1,136 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
|
4 |
+
class ClassCleantalkFindSpamPage
|
5 |
+
{
|
6 |
+
|
7 |
+
private $spam_checker;
|
8 |
+
|
9 |
+
private $current_tab;
|
10 |
+
|
11 |
+
public function __construct( ClassCleantalkFindSpamChecker $apbct_spam_checker ) {
|
12 |
+
|
13 |
+
$this->spam_checker = $apbct_spam_checker;
|
14 |
+
|
15 |
+
switch ( current_action() ) {
|
16 |
+
|
17 |
+
case 'users_page_ct_check_users' :
|
18 |
+
case 'comments_page_ct_check_spam' :
|
19 |
+
$this->current_tab = 1;
|
20 |
+
$this->generatePageHeader();
|
21 |
+
$this->spam_checker->getCurrentScanPage();
|
22 |
+
break;
|
23 |
+
|
24 |
+
case 'users_page_ct_check_users_total' :
|
25 |
+
case 'comments_page_ct_check_spam_total' :
|
26 |
+
$this->current_tab = 2;
|
27 |
+
$this->generatePageHeader();
|
28 |
+
$this->spam_checker->getTotalSpamPage();
|
29 |
+
break;
|
30 |
+
|
31 |
+
case 'users_page_ct_check_users_logs' :
|
32 |
+
case 'comments_page_ct_check_spam_logs' :
|
33 |
+
$this->current_tab = 3;
|
34 |
+
$this->generatePageHeader();
|
35 |
+
$this->spam_checker->getSpamLogsPage();
|
36 |
+
break;
|
37 |
+
|
38 |
+
}
|
39 |
+
|
40 |
+
}
|
41 |
+
|
42 |
+
/**
|
43 |
+
* Output header section of the FindSpam pages
|
44 |
+
*
|
45 |
+
* @return void (HTML layout output)
|
46 |
+
*/
|
47 |
+
public static function showFindSpamPage() {
|
48 |
+
switch ( current_action() ) {
|
49 |
+
|
50 |
+
case 'users_page_ct_check_users' :
|
51 |
+
case 'users_page_ct_check_users_total' :
|
52 |
+
case 'users_page_ct_check_users_logs' :
|
53 |
+
self::generateCheckUsersPage();
|
54 |
+
break;
|
55 |
+
|
56 |
+
case 'comments_page_ct_check_spam' :
|
57 |
+
case 'comments_page_ct_check_spam_total' :
|
58 |
+
case 'comments_page_ct_check_spam_logs' :
|
59 |
+
self::generateCheckSpamPage();
|
60 |
+
break;
|
61 |
+
|
62 |
+
}
|
63 |
+
|
64 |
+
}
|
65 |
+
|
66 |
+
private static function generateCheckUsersPage() {
|
67 |
+
|
68 |
+
new self( new ClassCleantalkFindSpamUsersChecker() );
|
69 |
+
|
70 |
+
self::closeTags();
|
71 |
+
|
72 |
+
}
|
73 |
+
|
74 |
+
private static function generateCheckSpamPage() {
|
75 |
+
|
76 |
+
new self( new ClassCleantalkFindSpamCommentsChecker() );
|
77 |
+
|
78 |
+
self::closeTags();
|
79 |
+
|
80 |
+
}
|
81 |
+
|
82 |
+
private function generatePageHeader() {
|
83 |
+
|
84 |
+
// If access key is unset in
|
85 |
+
if( ! apbct_api_key__is_correct() ){
|
86 |
+
if( 1 == $this->spam_checker->getApbct()->moderate_ip ){
|
87 |
+
echo '<h3>'
|
88 |
+
.sprintf(
|
89 |
+
__('Antispam hosting tariff does not allow you to use this feature. To do so, you need to enter an Access Key in the %splugin settings%s.', 'cleantalk'),
|
90 |
+
'<a href="' . ( is_network_admin() ? 'settings.php?page=cleantalk' : 'options-general.php?page=cleantalk' ).'">',
|
91 |
+
'</a>'
|
92 |
+
)
|
93 |
+
.'</h3>';
|
94 |
+
}
|
95 |
+
return;
|
96 |
+
}
|
97 |
+
|
98 |
+
?>
|
99 |
+
<div class="wrap">
|
100 |
+
<h2><img src="<?php echo $this->spam_checker->getApbct()->logo__small__colored; ?>" alt="CleanTalk logo" /> <?php echo $this->spam_checker->getApbct()->plugin_name; ?></h2>
|
101 |
+
<a style="color: gray; margin-left: 23px;" href="<?php echo $this->spam_checker->getApbct()->settings_link; ?>"><?php _e('Plugin Settings', 'cleantalk'); ?></a>
|
102 |
+
<br />
|
103 |
+
<h3><?php echo $this->spam_checker->getPageTitle(); ?></h3>
|
104 |
+
<div id="ct_check_tabs">
|
105 |
+
<ul>
|
106 |
+
<li <?php echo (1 == $this->current_tab) ? 'class="active"' : ''; ?>><a href="<?php echo $this->spam_checker->getPageScriptName(); ?>?page=ct_check_<?php echo $this->spam_checker->getPageSlug(); ?>"><?php esc_html_e( 'Current scan results', 'cleantalk' ) ?></a></li>
|
107 |
+
<li <?php echo (2 == $this->current_tab) ? 'class="active"' : ''; ?>><a href="<?php echo $this->spam_checker->getPageScriptName(); ?>?page=ct_check_<?php echo $this->spam_checker->getPageSlug(); ?>_total"><?php esc_html_e( 'Total spam found', 'cleantalk' ) ?></a></li>
|
108 |
+
<li <?php echo (3 == $this->current_tab) ? 'class="active"' : ''; ?>><a href="<?php echo $this->spam_checker->getPageScriptName(); ?>?page=ct_check_<?php echo $this->spam_checker->getPageSlug(); ?>_logs"><?php esc_html_e( 'Scan logs', 'cleantalk' ) ?></a></li>
|
109 |
+
</ul>
|
110 |
+
<div id="ct_check_content">
|
111 |
+
<?php
|
112 |
+
|
113 |
+
}
|
114 |
+
|
115 |
+
public static function setScreenOption() {
|
116 |
+
|
117 |
+
$option = 'per_page';
|
118 |
+
$args = array(
|
119 |
+
'label' => esc_html__( 'Show per page', 'cleantalk' ),
|
120 |
+
'default' => 10,
|
121 |
+
'option' => 'spam_per_page',
|
122 |
+
);
|
123 |
+
add_screen_option( $option, $args );
|
124 |
+
|
125 |
+
}
|
126 |
+
|
127 |
+
private static function closeTags() {
|
128 |
+
|
129 |
+
?>
|
130 |
+
</div>
|
131 |
+
</div>
|
132 |
+
<?php
|
133 |
+
|
134 |
+
}
|
135 |
+
|
136 |
+
}
|
inc/find-spam/ClassCleantalkFindSpamUsersChecker.php
ADDED
@@ -0,0 +1,535 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
|
4 |
+
class ClassCleantalkFindSpamUsersChecker extends ClassCleantalkFindSpamChecker
|
5 |
+
{
|
6 |
+
|
7 |
+
public function __construct() {
|
8 |
+
|
9 |
+
parent::__construct();
|
10 |
+
|
11 |
+
$this->page_title = esc_html__( 'Check users for spam', 'cleantalk' );
|
12 |
+
$this->page_script_name = 'users.php';
|
13 |
+
$this->page_slug = 'users';
|
14 |
+
|
15 |
+
// Preparing data
|
16 |
+
$current_user = wp_get_current_user();
|
17 |
+
if( ! empty( $_COOKIE['ct_paused_users_check'] ) )
|
18 |
+
$prev_check = json_decode( stripslashes( $_COOKIE['ct_paused_users_check'] ), true );
|
19 |
+
|
20 |
+
wp_enqueue_script( 'ct_users_checkspam', plugins_url('/cleantalk-spam-protect/js/cleantalk-users-checkspam.min.js'), array( 'jquery', 'jqueryui' ), APBCT_VERSION );
|
21 |
+
wp_localize_script( 'ct_users_checkspam', 'ctUsersCheck', array(
|
22 |
+
'ct_ajax_nonce' => wp_create_nonce('ct_secret_nonce'),
|
23 |
+
'ct_prev_accurate' => !empty($prev_check['accurate']) ? true : false,
|
24 |
+
'ct_prev_from' => !empty($prev_check['from']) ? $prev_check['from'] : false,
|
25 |
+
'ct_prev_till' => !empty($prev_check['till']) ? $prev_check['till'] : false,
|
26 |
+
'ct_timeout' => __('Failed from timeout. Going to check users again.', 'cleantalk'),
|
27 |
+
'ct_timeout_delete' => __('Failed from timeout. Going to run a new attempt to delete spam users.', 'cleantalk'),
|
28 |
+
'ct_iusers' => __('users.', 'cleantalk'),
|
29 |
+
'ct_csv_filename' => "user_check_by_".$current_user->user_login,
|
30 |
+
'ct_status_string' => __("Checked %s, found %s spam users and %s bad users (without IP or email)", 'cleantalk'),
|
31 |
+
'ct_status_string_warning' => "<p>".__("Please do backup of WordPress database before delete any accounts!", 'cleantalk')."</p>"
|
32 |
+
));
|
33 |
+
|
34 |
+
wp_enqueue_style( 'cleantalk_admin_css_settings_page', plugins_url().'/cleantalk-spam-protect/css/cleantalk-spam-check.min.css', array(), APBCT_VERSION, 'all' );
|
35 |
+
|
36 |
+
require_once(CLEANTALK_PLUGIN_DIR . 'inc/find-spam/ClassCleantalkUsersListTable.php');
|
37 |
+
|
38 |
+
}
|
39 |
+
|
40 |
+
public function getCurrentScanPage() {
|
41 |
+
|
42 |
+
require_once(CLEANTALK_PLUGIN_DIR . 'inc/find-spam/ClassCleantalkUsersListTableScan.php');
|
43 |
+
$this->list_table = new ABPCTUsersListTableScan();
|
44 |
+
|
45 |
+
$this->getCurrentScanPanel( $this );
|
46 |
+
echo '<form action="" method="POST">';
|
47 |
+
$this->list_table->display();
|
48 |
+
echo '</form>';
|
49 |
+
|
50 |
+
}
|
51 |
+
|
52 |
+
public function getTotalSpamPage(){
|
53 |
+
|
54 |
+
require_once(CLEANTALK_PLUGIN_DIR . 'inc/find-spam/ClassCleantalkUsersListTableSpam.php');
|
55 |
+
$this->list_table = new ABPCTUsersListTableSpam();
|
56 |
+
|
57 |
+
echo '<form action="" method="POST">';
|
58 |
+
$this->list_table->display();
|
59 |
+
echo '</form>';
|
60 |
+
|
61 |
+
}
|
62 |
+
|
63 |
+
public function getSpamLogsPage(){
|
64 |
+
|
65 |
+
require_once(CLEANTALK_PLUGIN_DIR . 'inc/find-spam/ClassCleantalkUsersListTableLogs.php');
|
66 |
+
$this->list_table = new ABPCTUsersListTableLogs();
|
67 |
+
|
68 |
+
echo '<form action="" method="POST">';
|
69 |
+
$this->list_table->display();
|
70 |
+
echo '</form>';
|
71 |
+
|
72 |
+
}
|
73 |
+
|
74 |
+
/**
|
75 |
+
* Get date last checked user or date first registered user
|
76 |
+
*
|
77 |
+
* @return string date "M j Y"
|
78 |
+
*/
|
79 |
+
public static function lastCheckDate() {
|
80 |
+
|
81 |
+
// Checked users
|
82 |
+
$params = array(
|
83 |
+
'fields' => 'ID',
|
84 |
+
'meta_key' => 'ct_checked',
|
85 |
+
'count_total' => true,
|
86 |
+
'orderby' => 'ct_checked'
|
87 |
+
);
|
88 |
+
$tmp = new WP_User_Query( $params );
|
89 |
+
$cnt_checked = $tmp->get_total();
|
90 |
+
|
91 |
+
if( $cnt_checked > 0 ) {
|
92 |
+
|
93 |
+
// If we have checked users return last user reg date
|
94 |
+
$users = $tmp->get_results();
|
95 |
+
return self::getUserRegister( end( $users ) );
|
96 |
+
|
97 |
+
} else {
|
98 |
+
|
99 |
+
// If we have not any checked users return first user registered date
|
100 |
+
$params = array(
|
101 |
+
'fields' => 'ID',
|
102 |
+
'number' => 1,
|
103 |
+
'orderby' => 'user_registered'
|
104 |
+
);
|
105 |
+
$tmp = new WP_User_Query( $params );
|
106 |
+
|
107 |
+
return self::getUserRegister( current( $tmp->get_results() ) );
|
108 |
+
|
109 |
+
}
|
110 |
+
|
111 |
+
}
|
112 |
+
|
113 |
+
/**
|
114 |
+
* Get date user registered
|
115 |
+
*
|
116 |
+
* @param $user_id
|
117 |
+
* @return string Date format"M j Y"
|
118 |
+
*/
|
119 |
+
private static function getUserRegister( $user_id ) {
|
120 |
+
|
121 |
+
$user_data = get_userdata( $user_id );
|
122 |
+
$registered = $user_data->user_registered;
|
123 |
+
|
124 |
+
return date( "M j Y", strtotime( $registered ) );
|
125 |
+
|
126 |
+
}
|
127 |
+
|
128 |
+
static function ct_ajax_check_users(){
|
129 |
+
|
130 |
+
check_ajax_referer('ct_secret_nonce', 'security');
|
131 |
+
|
132 |
+
global $apbct;
|
133 |
+
|
134 |
+
$amount = !empty($_POST['amount']) && intval($_POST['amount'])
|
135 |
+
? intval($_POST['amount'])
|
136 |
+
: 100;
|
137 |
+
|
138 |
+
$skip_roles = array(
|
139 |
+
'administrator'
|
140 |
+
);
|
141 |
+
|
142 |
+
$params = array(
|
143 |
+
'meta_query' => array(
|
144 |
+
'relation' => 'AND',
|
145 |
+
array(
|
146 |
+
'key' => 'ct_checked_now',
|
147 |
+
'compare' => 'NOT EXISTS'
|
148 |
+
),
|
149 |
+
array(
|
150 |
+
'key' => 'ct_checked',
|
151 |
+
'compare' => 'NOT EXISTS'
|
152 |
+
),
|
153 |
+
array(
|
154 |
+
'key' => 'ct_bad',
|
155 |
+
'compare' => 'NOT EXISTS'
|
156 |
+
)
|
157 |
+
),
|
158 |
+
'orderby' => 'registered',
|
159 |
+
'order' => 'ASC',
|
160 |
+
'number' => $amount,
|
161 |
+
);
|
162 |
+
|
163 |
+
if(isset($_POST['from'], $_POST['till'])){
|
164 |
+
|
165 |
+
$from_date = date('Y-m-d', intval(strtotime($_POST['from'])));
|
166 |
+
$till_date = date('Y-m-d', intval(strtotime($_POST['till'])));
|
167 |
+
|
168 |
+
$params['date_query'] = array(
|
169 |
+
'column' => 'user_registered',
|
170 |
+
'after' => $from_date,
|
171 |
+
'before' => $till_date,
|
172 |
+
'inclusive' => true,
|
173 |
+
);
|
174 |
+
}
|
175 |
+
|
176 |
+
$u = get_users( $params );
|
177 |
+
|
178 |
+
$check_result = array(
|
179 |
+
'end' => 0,
|
180 |
+
'checked' => 0,
|
181 |
+
'spam' => 0,
|
182 |
+
'bad' => 0,
|
183 |
+
'error' => 0
|
184 |
+
);
|
185 |
+
|
186 |
+
if( count($u) > 0 ){
|
187 |
+
|
188 |
+
if( ! empty( $_POST['accurate_check'] ) ){
|
189 |
+
// Leaving users only with first comment's date. Unsetting others.
|
190 |
+
foreach( $u as $user_index => $user ){
|
191 |
+
|
192 |
+
if( ! isset( $curr_date ) )
|
193 |
+
$curr_date = ( substr( $user->data->user_registered, 0, 10 ) ? substr( $user->data->user_registered, 0, 10 ) : '' );
|
194 |
+
|
195 |
+
if( substr( $user->data->user_registered, 0, 10 ) != $curr_date )
|
196 |
+
unset( $u[$user_index] );
|
197 |
+
|
198 |
+
}
|
199 |
+
unset( $user_index, $user );
|
200 |
+
}
|
201 |
+
|
202 |
+
// Checking comments IP/Email. Gathering $data for check.
|
203 |
+
$data = array();
|
204 |
+
|
205 |
+
for( $i=0; $i < count($u); $i++ ){
|
206 |
+
|
207 |
+
$user_meta = get_user_meta( $u[$i]->ID, 'session_tokens', true );
|
208 |
+
if( is_array( $user_meta ) )
|
209 |
+
$user_meta = array_values( $user_meta );
|
210 |
+
|
211 |
+
$curr_ip = !empty( $user_meta[0]['ip' ]) ? trim( $user_meta[0]['ip'] ) : '';
|
212 |
+
$curr_email = !empty( $u[$i]->data->user_email ) ? trim( $u[$i]->data->user_email ) : '';
|
213 |
+
|
214 |
+
// Check for identity
|
215 |
+
$curr_ip = preg_match('/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/', $curr_ip) === 1 ? $curr_ip : null;
|
216 |
+
$curr_email = preg_match('/^\S+@\S+\.\S+$/', $curr_email) === 1 ? $curr_email : null;
|
217 |
+
|
218 |
+
if( empty( $curr_ip ) && empty( $curr_email ) ){
|
219 |
+
$check_result['bad']++;
|
220 |
+
update_user_meta( $u[$i]->ID,'ct_bad','1',true );
|
221 |
+
update_user_meta( $u[$i]->ID, 'ct_checked', date("Y-m-d H:m:s"), true) ;
|
222 |
+
unset( $u[$i] );
|
223 |
+
}else{
|
224 |
+
if( !empty( $curr_ip ) )
|
225 |
+
$data[] = $curr_ip;
|
226 |
+
if( !empty( $curr_email ) )
|
227 |
+
$data[] = $curr_email;
|
228 |
+
// Patch for empty IP/Email
|
229 |
+
$u[$i]->data->user_ip = empty($curr_ip) ? 'none' : $curr_ip;
|
230 |
+
$u[$i]->data->user_email = empty($curr_email) ? 'none' : $curr_email;
|
231 |
+
}
|
232 |
+
}
|
233 |
+
|
234 |
+
// Recombining after checking and unsettting
|
235 |
+
$u = array_values( $u );
|
236 |
+
|
237 |
+
// Drop if data empty and there's no users to check
|
238 |
+
if( count( $data ) == 0 ){
|
239 |
+
if( $_POST['unchecked'] === 0 )
|
240 |
+
$check_result['end'] = 1;
|
241 |
+
print json_encode( $check_result );
|
242 |
+
die();
|
243 |
+
}
|
244 |
+
|
245 |
+
$result = CleantalkAPI::method__spam_check_cms( $apbct->api_key, $data, !empty($_POST['accurate_check']) ? $curr_date : null );
|
246 |
+
|
247 |
+
if( empty( $result['error'] ) ){
|
248 |
+
|
249 |
+
for( $i=0; $i < sizeof( $u ); $i++ ) {
|
250 |
+
|
251 |
+
$check_result['checked']++;
|
252 |
+
update_user_meta( $u[$i]->ID, 'ct_checked', date("Y-m-d H:m:s"), true) ;
|
253 |
+
update_user_meta( $u[$i]->ID, 'ct_checked_now', date("Y-m-d H:m:s"), true) ;
|
254 |
+
|
255 |
+
// Do not display forbidden roles.
|
256 |
+
foreach ( $skip_roles as $role ) {
|
257 |
+
if ( in_array( $role, $u[$i]->roles ) ){
|
258 |
+
delete_user_meta( $u[$i]->ID, 'ct_marked_as_spam' );
|
259 |
+
continue 2;
|
260 |
+
}
|
261 |
+
}
|
262 |
+
|
263 |
+
$mark_spam_ip = false;
|
264 |
+
$mark_spam_email = false;
|
265 |
+
|
266 |
+
$uip = $u[$i]->data->user_ip;
|
267 |
+
$uim = $u[$i]->data->user_email;
|
268 |
+
|
269 |
+
if( isset( $result[$uip] ) && $result[$uip]['appears'] == 1 )
|
270 |
+
$mark_spam_ip = true;
|
271 |
+
|
272 |
+
if( isset($result[$uim]) && $result[$uim]['appears'] == 1 )
|
273 |
+
$mark_spam_email = true;
|
274 |
+
|
275 |
+
if ( $mark_spam_ip || $mark_spam_email ){
|
276 |
+
$check_result['spam']++;
|
277 |
+
update_user_meta( $u[$i]->ID, 'ct_marked_as_spam', '1', true );
|
278 |
+
}
|
279 |
+
|
280 |
+
}
|
281 |
+
|
282 |
+
echo json_encode( $check_result );
|
283 |
+
|
284 |
+
} else {
|
285 |
+
|
286 |
+
$check_result['error'] = 1;
|
287 |
+
$check_result['error_message'] = $result['error'];
|
288 |
+
|
289 |
+
echo json_encode( $check_result );
|
290 |
+
|
291 |
+
}
|
292 |
+
} else {
|
293 |
+
|
294 |
+
$check_result['end'] = 1;
|
295 |
+
|
296 |
+
$log_data = static::get_log_data();
|
297 |
+
static::writeSpamLog( 'users', date("Y-m-d H:i:s"), $log_data['checked'], $log_data['spam'], $log_data['bad'] );
|
298 |
+
|
299 |
+
echo json_encode( $check_result );
|
300 |
+
|
301 |
+
}
|
302 |
+
|
303 |
+
die;
|
304 |
+
|
305 |
+
}
|
306 |
+
|
307 |
+
/**
|
308 |
+
* Run query for deleting 'ct_checked_now' meta. Need for the new scan.
|
309 |
+
*
|
310 |
+
* @return void
|
311 |
+
*/
|
312 |
+
public static function ct_ajax_clear_users()
|
313 |
+
{
|
314 |
+
check_ajax_referer( 'ct_secret_nonce', 'security' );
|
315 |
+
|
316 |
+
global $wpdb;
|
317 |
+
$wpdb->query("DELETE FROM {$wpdb->usermeta} WHERE meta_key IN ('ct_checked_now')");
|
318 |
+
|
319 |
+
if ( isset($_POST['from']) && isset($_POST['till']) ) {
|
320 |
+
if ( preg_match('/[a-zA-Z]{3}\s{1}\d{1,2}\s{1}\d{4}/', $_POST['from'] ) && preg_match('/[a-zA-Z]{3}\s{1}\d{1,2}\s{1}\d{4}/', $_POST['till'] ) ) {
|
321 |
+
|
322 |
+
$from = date('Y-m-d', intval(strtotime($_POST['from']))) . ' 00:00:00';
|
323 |
+
$till = date('Y-m-d', intval(strtotime($_POST['till']))) . ' 23:59:59';
|
324 |
+
|
325 |
+
$wpdb->query("DELETE FROM {$wpdb->usermeta} WHERE
|
326 |
+
meta_key IN ('ct_checked','ct_marked_as_spam','ct_bad')
|
327 |
+
AND meta_value >= '{$from}'
|
328 |
+
AND meta_value <= '{$till}';");
|
329 |
+
|
330 |
+
die();
|
331 |
+
|
332 |
+
}
|
333 |
+
}
|
334 |
+
|
335 |
+
die();
|
336 |
+
}
|
337 |
+
|
338 |
+
public static function ct_ajax_info($direct_call = false) {
|
339 |
+
|
340 |
+
if (!$direct_call)
|
341 |
+
check_ajax_referer( 'ct_secret_nonce', 'security' );
|
342 |
+
|
343 |
+
// Checked users
|
344 |
+
$params_checked = array(
|
345 |
+
'fields' => 'ID',
|
346 |
+
'meta_key' => 'ct_checked_now',
|
347 |
+
'count_total' => true,
|
348 |
+
'orderby' => 'ct_checked_now'
|
349 |
+
);
|
350 |
+
$checked_users = new WP_User_Query($params_checked);
|
351 |
+
$cnt_checked = $checked_users->get_total();
|
352 |
+
|
353 |
+
// Spam users
|
354 |
+
$params_spam = array(
|
355 |
+
'fields' => 'ID',
|
356 |
+
'meta_query' => array(
|
357 |
+
'relation' => 'AND',
|
358 |
+
array(
|
359 |
+
'key' => 'ct_marked_as_spam',
|
360 |
+
'compare' => 'EXISTS'
|
361 |
+
),
|
362 |
+
array(
|
363 |
+
'key' => 'ct_checked_now',
|
364 |
+
'compare' => 'EXISTS'
|
365 |
+
),
|
366 |
+
),
|
367 |
+
'count_total' => true,
|
368 |
+
);
|
369 |
+
$spam_users = new WP_User_Query($params_spam);
|
370 |
+
$cnt_spam = $spam_users->get_total();
|
371 |
+
|
372 |
+
// Bad users (without IP and Email)
|
373 |
+
$params_bad = array(
|
374 |
+
'fields' => 'ID',
|
375 |
+
'meta_query' => array(
|
376 |
+
'relation' => 'AND',
|
377 |
+
array(
|
378 |
+
'key' => 'ct_bad',
|
379 |
+
'compare' => 'EXISTS'
|
380 |
+
),
|
381 |
+
array(
|
382 |
+
'key' => 'ct_checked_now',
|
383 |
+
'compare' => 'EXISTS'
|
384 |
+
),
|
385 |
+
),
|
386 |
+
'count_total' => true,
|
387 |
+
);
|
388 |
+
$bad_users = new WP_User_Query($params_bad);
|
389 |
+
$cnt_bad = $bad_users->get_total();
|
390 |
+
|
391 |
+
$return = array(
|
392 |
+
'message' => '',
|
393 |
+
'spam' => $cnt_spam,
|
394 |
+
'checked' => $cnt_checked,
|
395 |
+
'bad' => $cnt_bad,
|
396 |
+
);
|
397 |
+
|
398 |
+
if( ! $direct_call ) {
|
399 |
+
$return['message'] .= sprintf (
|
400 |
+
esc_html__('Checked %s, found %s spam users and %s bad users (without IP or email)', 'cleantalk'),
|
401 |
+
$cnt_checked,
|
402 |
+
$cnt_spam,
|
403 |
+
$cnt_bad
|
404 |
+
);
|
405 |
+
} else {
|
406 |
+
if( isset( $return['checked'] ) && 0 == $return['checked'] ) {
|
407 |
+
$return['message'] = esc_html__( 'Never checked yet or no new spam.', 'cleantalk' );
|
408 |
+
} else {
|
409 |
+
$return['message'] .= sprintf (
|
410 |
+
__("Last check %s: checked %s users, found %s spam users and %s bad users (without IP or email).", 'cleantalk'),
|
411 |
+
self::lastCheckDate(),
|
412 |
+
$cnt_checked,
|
413 |
+
$cnt_spam,
|
414 |
+
$cnt_bad
|
415 |
+
);
|
416 |
+
}
|
417 |
+
}
|
418 |
+
|
419 |
+
$backup_notice = ' ';
|
420 |
+
if ($cnt_spam > 0) {
|
421 |
+
$backup_notice = __("Please do backup of WordPress database before delete any accounts!", 'cleantalk');
|
422 |
+
}
|
423 |
+
$return['message'] .= "<p>$backup_notice</p>";
|
424 |
+
|
425 |
+
if($direct_call){
|
426 |
+
return $return['message'];
|
427 |
+
}else{
|
428 |
+
echo json_encode($return);
|
429 |
+
die();
|
430 |
+
}
|
431 |
+
}
|
432 |
+
|
433 |
+
private static function get_log_data() {
|
434 |
+
|
435 |
+
// Checked users
|
436 |
+
$params_checked = array(
|
437 |
+
'fields' => 'ID',
|
438 |
+
'meta_key' => 'ct_checked_now',
|
439 |
+
'count_total' => true,
|
440 |
+
'orderby' => 'ct_checked_now'
|
441 |
+
);
|
442 |
+
$checked_users = new WP_User_Query($params_checked);
|
443 |
+
$cnt_checked = $checked_users->get_total();
|
444 |
+
|
445 |
+
// Spam users
|
446 |
+
$params_spam = array(
|
447 |
+
'fields' => 'ID',
|
448 |
+
'meta_query' => array(
|
449 |
+
'relation' => 'AND',
|
450 |
+
array(
|
451 |
+
'key' => 'ct_marked_as_spam',
|
452 |
+
'compare' => 'EXISTS'
|
453 |
+
),
|
454 |
+
array(
|
455 |
+
'key' => 'ct_checked_now',
|
456 |
+
'compare' => 'EXISTS'
|
457 |
+
),
|
458 |
+
),
|
459 |
+
'count_total' => true,
|
460 |
+
);
|
461 |
+
$spam_users = new WP_User_Query($params_spam);
|
462 |
+
$cnt_spam = $spam_users->get_total();
|
463 |
+
|
464 |
+
// Bad users (without IP and Email)
|
465 |
+
$params_bad = array(
|
466 |
+
'fields' => 'ID',
|
467 |
+
'meta_query' => array(
|
468 |
+
'relation' => 'AND',
|
469 |
+
array(
|
470 |
+
'key' => 'ct_bad',
|
471 |
+
'compare' => 'EXISTS'
|
472 |
+
),
|
473 |
+
array(
|
474 |
+
'key' => 'ct_checked_now',
|
475 |
+
'compare' => 'EXISTS'
|
476 |
+
),
|
477 |
+
),
|
478 |
+
'count_total' => true,
|
479 |
+
);
|
480 |
+
$bad_users = new WP_User_Query($params_bad);
|
481 |
+
$cnt_bad = $bad_users->get_total();
|
482 |
+
|
483 |
+
return array(
|
484 |
+
'spam' => $cnt_spam,
|
485 |
+
'checked' => $cnt_checked,
|
486 |
+
'bad' => $cnt_bad,
|
487 |
+
);
|
488 |
+
|
489 |
+
}
|
490 |
+
|
491 |
+
/**
|
492 |
+
* Admin action 'wp_ajax_ajax_ct_get_csv_file' - prints CSV file to AJAX
|
493 |
+
*/
|
494 |
+
public static function ct_get_csv_file() {
|
495 |
+
|
496 |
+
check_ajax_referer( 'ct_secret_nonce', 'security' );
|
497 |
+
|
498 |
+
$text = 'login,email,ip' . PHP_EOL;
|
499 |
+
|
500 |
+
$params = array(
|
501 |
+
'meta_query' => array(
|
502 |
+
array(
|
503 |
+
'key' => 'ct_marked_as_spam',
|
504 |
+
'compare' => '1'
|
505 |
+
),
|
506 |
+
),
|
507 |
+
'orderby' => 'registered',
|
508 |
+
'order' => 'ASC',
|
509 |
+
);
|
510 |
+
|
511 |
+
$u = get_users( $params );
|
512 |
+
|
513 |
+
for( $i=0; $i < count($u); $i++ ){
|
514 |
+
$user_meta = get_user_meta( $u[$i]->ID, 'session_tokens', true );
|
515 |
+
if( is_array( $user_meta ) )
|
516 |
+
$user_meta = array_values( $user_meta );
|
517 |
+
$text .= $u[$i]->user_login.',';
|
518 |
+
$text .= $u[$i]->data->user_email.',';
|
519 |
+
$text .= ! empty( $user_meta[0]['ip']) ? trim( $user_meta[0]['ip'] ) : '';
|
520 |
+
$text .= PHP_EOL;
|
521 |
+
}
|
522 |
+
|
523 |
+
$filename = ! empty( $_POST['filename'] ) ? $_POST['filename'] : false;
|
524 |
+
|
525 |
+
if( $filename !== false ) {
|
526 |
+
header('Content-Type: text/csv');
|
527 |
+
echo $text;
|
528 |
+
} else {
|
529 |
+
echo 'Export error.'; // file not exists or empty $_POST['filename']
|
530 |
+
}
|
531 |
+
die();
|
532 |
+
|
533 |
+
}
|
534 |
+
|
535 |
+
}
|
inc/find-spam/ClassCleantalkUsersListTable.php
ADDED
@@ -0,0 +1,263 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
|
4 |
+
class ABPCTUsersListTable extends ABPCT_List_Table
|
5 |
+
{
|
6 |
+
|
7 |
+
protected $apbct;
|
8 |
+
|
9 |
+
function __construct(){
|
10 |
+
|
11 |
+
parent::__construct(array(
|
12 |
+
'singular' => 'spam',
|
13 |
+
'plural' => 'spam'
|
14 |
+
));
|
15 |
+
|
16 |
+
$this->bulk_actions_handler();
|
17 |
+
|
18 |
+
$this->row_actions_handler();
|
19 |
+
|
20 |
+
$this->prepare_items();
|
21 |
+
|
22 |
+
global $apbct;
|
23 |
+
$this->apbct = $apbct;
|
24 |
+
|
25 |
+
}
|
26 |
+
|
27 |
+
// Set columns
|
28 |
+
function get_columns(){
|
29 |
+
return array(
|
30 |
+
'cb' => '<input type="checkbox" />',
|
31 |
+
'ct_username' => esc_html__( 'Username', 'cleantalk' ),
|
32 |
+
'ct_name' => esc_html__( 'Name', 'cleantalk' ),
|
33 |
+
'ct_email' => esc_html__( 'E-mail', 'cleantalk' ),
|
34 |
+
'ct_signed_up' => esc_html__( 'Signed up', 'cleantalk' ),
|
35 |
+
'ct_role' => esc_html__( 'Role', 'cleantalk' ),
|
36 |
+
'ct_posts' => esc_html__( 'Posts', 'cleantalk' ),
|
37 |
+
);
|
38 |
+
}
|
39 |
+
|
40 |
+
// CheckBox column
|
41 |
+
function column_cb( $item ){
|
42 |
+
echo '<input type="checkbox" name="spamids[]" id="cb-select-'. $item['ct_id'] .'" value="'. $item['ct_id'] .'" />';
|
43 |
+
}
|
44 |
+
|
45 |
+
// Username (first) column
|
46 |
+
function column_ct_username( $item ) {
|
47 |
+
$user_obj = $item['ct_username'];
|
48 |
+
$email = $user_obj->user_email;
|
49 |
+
$column_content = '';
|
50 |
+
|
51 |
+
// Avatar, nickname
|
52 |
+
$column_content .= '<strong>' . get_avatar( $user_obj->ID , 32) . ' ' . $user_obj->user_login . '</strong>';
|
53 |
+
$column_content .= '<br /><br />';
|
54 |
+
|
55 |
+
// Email
|
56 |
+
if( ! empty( $email ) ){
|
57 |
+
$column_content .= "<a href='mailto:$email'>$email</a>"
|
58 |
+
.( ! $this->apbct->white_label
|
59 |
+
? "<a href='https://cleantalk.org/blacklists/$email' target='_blank'>"
|
60 |
+
." <img src='" . APBCT_URL_PATH . "/inc/images/new_window.gif' alt='Ico: open in new window' border='0' style='float:none' />"
|
61 |
+
."</a>"
|
62 |
+
: '');
|
63 |
+
} else {
|
64 |
+
$column_content .= esc_html__( 'No email', 'cleantalk' );
|
65 |
+
}
|
66 |
+
$column_content .= '<br/>';
|
67 |
+
|
68 |
+
// IP
|
69 |
+
$user_meta = get_user_meta( $user_obj->ID, 'session_tokens', true );
|
70 |
+
if( ! empty( $user_meta ) && is_array( $user_meta ) ){
|
71 |
+
$user_meta = array_values( $user_meta );
|
72 |
+
if( ! empty( $user_meta[0]['ip'] ) ) {
|
73 |
+
$ip = $user_meta[0]['ip'];
|
74 |
+
$column_content .= "<a href='user-edit.php?user_id=$user_obj->ID'>$ip</a>"
|
75 |
+
.( ! $this->apbct->white_label
|
76 |
+
?"<a href='https://cleantalk.org/blacklists/$ip ' target='_blank'>"
|
77 |
+
." <img src='" . APBCT_URL_PATH . "/inc/images/new_window.gif' alt='Ico: open in new window' border='0' style='float:none' />"
|
78 |
+
."</a>"
|
79 |
+
: '');
|
80 |
+
}else
|
81 |
+
$column_content .= esc_html__( 'No IP adress', 'cleantalk' );
|
82 |
+
}else
|
83 |
+
$column_content .= esc_html__( 'No IP adress', 'cleantalk' );
|
84 |
+
|
85 |
+
$actions = array(
|
86 |
+
'delete' => sprintf( '<a href="?page=%s&action=%s&spam=%s">Delete</a>', $_REQUEST['page'],'delete', $user_obj->ID ),
|
87 |
+
);
|
88 |
+
|
89 |
+
return sprintf( '%1$s %2$s', $column_content, $this->row_actions( $actions ) );
|
90 |
+
|
91 |
+
}
|
92 |
+
|
93 |
+
// Rest of columns
|
94 |
+
function column_default( $item, $column_name ) {
|
95 |
+
switch( $column_name ) {
|
96 |
+
case 'ct_name':
|
97 |
+
case 'ct_email':
|
98 |
+
case 'ct_signed_up':
|
99 |
+
case 'ct_role':
|
100 |
+
case 'ct_posts':
|
101 |
+
case 'ct_start':
|
102 |
+
case 'ct_checked':
|
103 |
+
case 'ct_spam':
|
104 |
+
case 'ct_bad':
|
105 |
+
return $item[ $column_name ];
|
106 |
+
default:
|
107 |
+
return print_r( $item, true ) ;
|
108 |
+
}
|
109 |
+
}
|
110 |
+
|
111 |
+
function get_bulk_actions() {
|
112 |
+
$actions = array(
|
113 |
+
'delete' => 'Delete'
|
114 |
+
);
|
115 |
+
return $actions;
|
116 |
+
}
|
117 |
+
|
118 |
+
function bulk_actions_handler() {
|
119 |
+
|
120 |
+
if( empty($_POST['spamids']) || empty($_POST['_wpnonce']) ) return;
|
121 |
+
|
122 |
+
if ( ! $action = $this->current_action() ) return;
|
123 |
+
|
124 |
+
if( ! wp_verify_nonce( $_POST['_wpnonce'], 'bulk-' . $this->_args['plural'] ) )
|
125 |
+
wp_die('nonce error');
|
126 |
+
|
127 |
+
$this->removeSpam( $_POST['spamids'] );
|
128 |
+
|
129 |
+
}
|
130 |
+
|
131 |
+
function row_actions_handler() {
|
132 |
+
|
133 |
+
if( empty($_GET['action']) ) return;
|
134 |
+
|
135 |
+
if( $_GET['action'] == 'delete' ) {
|
136 |
+
|
137 |
+
$id = filter_input( INPUT_GET, 'spam', FILTER_SANITIZE_NUMBER_INT );
|
138 |
+
$this->removeSpam( array( $id ) );
|
139 |
+
|
140 |
+
}
|
141 |
+
|
142 |
+
}
|
143 |
+
|
144 |
+
function no_items() {
|
145 |
+
esc_html_e( 'No spam found.', 'cleantalk' );
|
146 |
+
}
|
147 |
+
|
148 |
+
//********************************************//
|
149 |
+
// LOGIC //
|
150 |
+
//*******************************************//
|
151 |
+
|
152 |
+
function removeSpam( $ids ) {
|
153 |
+
|
154 |
+
$ids_string = implode( ', ', $ids );
|
155 |
+
global $wpdb;
|
156 |
+
|
157 |
+
$wpdb->query("DELETE FROM {$wpdb->users} WHERE
|
158 |
+
ID IN ($ids_string)");
|
159 |
+
|
160 |
+
}
|
161 |
+
|
162 |
+
public function getTotal() {
|
163 |
+
|
164 |
+
$params_total = array(
|
165 |
+
'fields' => 'ID',
|
166 |
+
'count'=>true,
|
167 |
+
'orderby' => 'user_registered'
|
168 |
+
);
|
169 |
+
$total_users = new WP_User_Query($params_total);
|
170 |
+
return $total_users;
|
171 |
+
|
172 |
+
}
|
173 |
+
|
174 |
+
public function getChecked() {
|
175 |
+
|
176 |
+
$params_spam = array(
|
177 |
+
'fields' => 'ID',
|
178 |
+
'meta_key' => 'ct_checked',
|
179 |
+
'count_total' => true,
|
180 |
+
);
|
181 |
+
$spam_users = new WP_User_Query($params_spam);
|
182 |
+
return $spam_users;
|
183 |
+
|
184 |
+
}
|
185 |
+
|
186 |
+
public function getCheckedNow() {
|
187 |
+
|
188 |
+
$params_spam = array(
|
189 |
+
'fields' => 'ID',
|
190 |
+
'meta_key' => 'ct_checked_now',
|
191 |
+
'count_total' => true,
|
192 |
+
);
|
193 |
+
$spam_users = new WP_User_Query($params_spam);
|
194 |
+
return $spam_users;
|
195 |
+
|
196 |
+
}
|
197 |
+
|
198 |
+
public function getSpam() {
|
199 |
+
|
200 |
+
$params_spam = array(
|
201 |
+
'fields' => 'ID',
|
202 |
+
'meta_key' => 'ct_marked_as_spam',
|
203 |
+
'count_total' => true,
|
204 |
+
);
|
205 |
+
$spam_users = new WP_User_Query($params_spam);
|
206 |
+
return $spam_users;
|
207 |
+
|
208 |
+
}
|
209 |
+
|
210 |
+
public function getSpamNow() {
|
211 |
+
|
212 |
+
$params_spam = array(
|
213 |
+
'fields' => 'ID',
|
214 |
+
'meta_query' => array(
|
215 |
+
'relation' => 'AND',
|
216 |
+
array(
|
217 |
+
'key' => 'ct_marked_as_spam',
|
218 |
+
'compare' => 'EXISTS'
|
219 |
+
),
|
220 |
+
array(
|
221 |
+
'key' => 'ct_checked_now',
|
222 |
+
'compare' => 'EXISTS'
|
223 |
+
),
|
224 |
+
),
|
225 |
+
'count_total' => true,
|
226 |
+
);
|
227 |
+
$spam_users = new WP_User_Query($params_spam);
|
228 |
+
return $spam_users;
|
229 |
+
|
230 |
+
}
|
231 |
+
|
232 |
+
public function getBad() { // Without IP and EMAIL
|
233 |
+
|
234 |
+
$params_bad = array(
|
235 |
+
'fields' => 'ID',
|
236 |
+
'meta_key' => 'ct_bad',
|
237 |
+
'count_total' => true,
|
238 |
+
);
|
239 |
+
$bad_users = new WP_User_Query($params_bad);
|
240 |
+
return $bad_users;
|
241 |
+
|
242 |
+
}
|
243 |
+
|
244 |
+
public function getScansLogs() {
|
245 |
+
|
246 |
+
global $wpdb;
|
247 |
+
$query = "SELECT * FROM " . APBCT_SPAMSCAN_LOGS . " WHERE scan_type = 'users'";
|
248 |
+
$res = $wpdb->get_results( $query, ARRAY_A );
|
249 |
+
return $res;
|
250 |
+
|
251 |
+
}
|
252 |
+
|
253 |
+
protected function removeLogs( $ids ) {
|
254 |
+
|
255 |
+
$ids_string = implode( ', ', $ids );
|
256 |
+
global $wpdb;
|
257 |
+
|
258 |
+
$wpdb->query("DELETE FROM " . APBCT_SPAMSCAN_LOGS . " WHERE
|
259 |
+
ID IN ($ids_string)");
|
260 |
+
|
261 |
+
}
|
262 |
+
|
263 |
+
}
|
inc/find-spam/ClassCleantalkUsersListTableLogs.php
ADDED
@@ -0,0 +1,63 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
|
4 |
+
class ABPCTUsersListTableLogs extends ABPCTUsersListTable
|
5 |
+
{
|
6 |
+
|
7 |
+
// Set columns
|
8 |
+
function get_columns(){
|
9 |
+
return array(
|
10 |
+
'cb' => '<input type="checkbox" />',
|
11 |
+
'ct_start' => esc_html__( 'Start time', 'cleantalk' ),
|
12 |
+
'ct_checked' => esc_html__( 'Checked', 'cleantalk' ),
|
13 |
+
'ct_spam' => esc_html__( 'Found spam', 'cleantalk' ),
|
14 |
+
'ct_bad' => esc_html__( 'Found bad', 'cleantalk' ),
|
15 |
+
);
|
16 |
+
}
|
17 |
+
|
18 |
+
function prepare_items(){
|
19 |
+
|
20 |
+
$columns = $this->get_columns();
|
21 |
+
$this->_column_headers = array( $columns, array(), array() );
|
22 |
+
|
23 |
+
$logs = $this->getScansLogs();
|
24 |
+
|
25 |
+
foreach( $logs as $log ) {
|
26 |
+
|
27 |
+
$this->items[] = array(
|
28 |
+
'ct_id' => $log['id'],
|
29 |
+
'ct_start' => $log['start_time'],
|
30 |
+
'ct_checked' => $log['count_to_scan'],
|
31 |
+
'ct_spam' => $log['found_spam'],
|
32 |
+
'ct_bad' => $log['found_bad'],
|
33 |
+
);
|
34 |
+
|
35 |
+
}
|
36 |
+
|
37 |
+
}
|
38 |
+
|
39 |
+
function get_bulk_actions() {
|
40 |
+
$actions = array(
|
41 |
+
'delete' => 'Delete'
|
42 |
+
);
|
43 |
+
return $actions;
|
44 |
+
}
|
45 |
+
|
46 |
+
function bulk_actions_handler() {
|
47 |
+
|
48 |
+
if( empty($_POST['spamids']) || empty($_POST['_wpnonce']) ) return;
|
49 |
+
|
50 |
+
if ( ! $action = $this->current_action() ) return;
|
51 |
+
|
52 |
+
if( ! wp_verify_nonce( $_POST['_wpnonce'], 'bulk-' . $this->_args['plural'] ) )
|
53 |
+
wp_die('nonce error');
|
54 |
+
|
55 |
+
$this->removeLogs( $_POST['spamids'] );
|
56 |
+
|
57 |
+
}
|
58 |
+
|
59 |
+
function no_items() {
|
60 |
+
esc_html_e( 'No logs found.', 'cleantalk' );
|
61 |
+
}
|
62 |
+
|
63 |
+
}
|
inc/find-spam/ClassCleantalkUsersListTableScan.php
ADDED
@@ -0,0 +1,47 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
|
4 |
+
class ABPCTUsersListTableScan extends ABPCTUsersListTable
|
5 |
+
{
|
6 |
+
|
7 |
+
function prepare_items() {
|
8 |
+
|
9 |
+
$columns = $this->get_columns();
|
10 |
+
$this->_column_headers = array( $columns, array(), array() );
|
11 |
+
|
12 |
+
$per_page_option = get_current_screen()->get_option( 'per_page', 'option' );
|
13 |
+
$per_page = get_user_meta( get_current_user_id(), $per_page_option, true );
|
14 |
+
if( ! $per_page ) {
|
15 |
+
$per_page = 10;
|
16 |
+
}
|
17 |
+
|
18 |
+
$scanned_users = $this->getSpamNow();
|
19 |
+
|
20 |
+
$this->set_pagination_args( array(
|
21 |
+
'total_items' => $scanned_users->get_total(),
|
22 |
+
'per_page' => $per_page,
|
23 |
+
) );
|
24 |
+
|
25 |
+
$current_page = (int) $this->get_pagenum();
|
26 |
+
|
27 |
+
$scanned_users_to_show = array_slice( $scanned_users->get_results(), ( ( $current_page - 1 ) * $per_page ), $per_page );
|
28 |
+
|
29 |
+
foreach( $scanned_users_to_show as $user_id ) {
|
30 |
+
|
31 |
+
$user_obj = get_userdata( $user_id );
|
32 |
+
|
33 |
+
$this->items[] = array(
|
34 |
+
'ct_id' => $user_obj->ID,
|
35 |
+
'ct_username' => $user_obj,
|
36 |
+
'ct_name' => $user_obj->display_name,
|
37 |
+
'ct_email' => $user_obj->user_email,
|
38 |
+
'ct_signed_up' => $user_obj->user_registered,
|
39 |
+
'ct_role' => implode( ', ', $user_obj->roles ),
|
40 |
+
'ct_posts' => count_user_posts( $user_id ),
|
41 |
+
);
|
42 |
+
|
43 |
+
}
|
44 |
+
|
45 |
+
}
|
46 |
+
|
47 |
+
}
|
inc/find-spam/ClassCleantalkUsersListTableSpam.php
ADDED
@@ -0,0 +1,55 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
|
4 |
+
class ABPCTUsersListTableSpam extends ABPCTUsersListTable
|
5 |
+
{
|
6 |
+
|
7 |
+
function prepare_items(){
|
8 |
+
|
9 |
+
$columns = $this->get_columns();
|
10 |
+
$this->_column_headers = array( $columns, array(), array() );
|
11 |
+
|
12 |
+
$per_page_option = get_current_screen()->get_option( 'per_page', 'option' );
|
13 |
+
$per_page = get_user_meta( get_current_user_id(), $per_page_option, true );
|
14 |
+
if( ! $per_page ) {
|
15 |
+
$per_page = 10;
|
16 |
+
}
|
17 |
+
|
18 |
+
$spam_users = $this->getSpam();
|
19 |
+
|
20 |
+
$this->set_pagination_args( array(
|
21 |
+
'total_items' => $spam_users->get_total(),
|
22 |
+
'per_page' => $per_page,
|
23 |
+
) );
|
24 |
+
|
25 |
+
$current_page = (int) $this->get_pagenum();
|
26 |
+
|
27 |
+
$spam_users_to_show = array_slice( $spam_users->get_results(), ( ( $current_page - 1 ) * $per_page ), $per_page );
|
28 |
+
|
29 |
+
foreach( $spam_users_to_show as $user_id ) {
|
30 |
+
|
31 |
+
$user_obj = get_userdata( $user_id );
|
32 |
+
|
33 |
+
$this->items[] = array(
|
34 |
+
'ct_id' => $user_obj->ID,
|
35 |
+
'ct_username' => $user_obj,
|
36 |
+
'ct_name' => $user_obj->display_name,
|
37 |
+
'ct_email' => $user_obj->user_email,
|
38 |
+
'ct_signed_up' => $user_obj->user_registered,
|
39 |
+
'ct_role' => implode( ', ', $user_obj->roles ),
|
40 |
+
'ct_posts' => count_user_posts( $user_id ),
|
41 |
+
);
|
42 |
+
|
43 |
+
}
|
44 |
+
|
45 |
+
}
|
46 |
+
|
47 |
+
function extra_tablenav( $which ) {
|
48 |
+
?>
|
49 |
+
<div class="alignleft actions bulkactions">
|
50 |
+
<button type="button" id="ct_get_csv_file" class="button action"><?php esc_html_e( 'Download results in CSV', 'cleantalk' ) ?></button>
|
51 |
+
</div>
|
52 |
+
<?php
|
53 |
+
}
|
54 |
+
|
55 |
+
}
|
js/apbct-disable-comments.min.js
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
1 |
+
"use strict";wp.domReady(function(){wp.blocks&&wp.blocks.getBlockTypes().forEach(function(e){apbctDisableComments.disabled_blocks.includes(e.name)&&wp.blocks.unregisterBlockType(e.name)})});
|
2 |
+
//# sourceMappingURL=apbct-disable-comments.min.js.map
|
js/apbct-disable-comments.min.js.map
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
{"version":3,"sources":["apbct-disable-comments.js"],"names":["wp","domReady","blocks","getBlockTypes","forEach","block","apbctDisableComments","disabled_blocks","includes","name","unregisterBlockType"],"mappings":"AAAA,aACAA,GAAGC,SAAS,WACPD,GAAGE,QACNF,GAAGE,OAAOC,gBAAgBC,QAAQ,SAAUC,GACvCC,qBAAqBC,gBAAgBC,SAASH,EAAMI,OACvDT,GAAGE,OAAOQ,oBAAoBL,EAAMI","file":"apbct-disable-comments.min.js","sourcesContent":["\"use strict\";\r\nwp.domReady(function () {\r\n\tif (wp.blocks) {\r\n\t\twp.blocks.getBlockTypes().forEach(function (block) {\r\n\t\t\tif (apbctDisableComments.disabled_blocks.includes(block.name)) {\r\n\t\t\t\twp.blocks.unregisterBlockType(block.name);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n});\r\n"]}
|
js/apbct-public.min.js
CHANGED
@@ -1,2 +1,2 @@
|
|
1 |
-
function apbct_js_keys__set_input_value(e,t,n,o){if(null!==document.getElementById(n.input_name)){var i=document.getElementById(n.input_name).value;document.getElementById(n.input_name).value=document.getElementById(n.input_name).value.replace(i,e.js_key)}}if(function(){var e=new Date,t=(new Date).getTime(),n=!0,o=[],i=0;function a(e,t){document.cookie=e+"="+encodeURIComponent(t)+"; path=/"}function c(e,t,n){"function"==typeof window.addEventListener?e.addEventListener(t,n):e.attachEvent(t,n)}function r(e,t,n){"function"==typeof window.removeEventListener?e.removeEventListener(t,n):e.detachEvent(t,n)}a("ct_ps_timestamp",Math.floor((new Date).getTime()/1e3)),a("ct_fkp_timestamp","0"),a("ct_pointer_data","0"),a("ct_timezone","0"),setTimeout(function(){a("ct_timezone",e.getTimezoneOffset()/60*-1)},1e3);var u=function(
|
2 |
-
//# sourceMappingURL=apbct-public.min.js.map
|
1 |
+
function apbct_js_keys__set_input_value(e,t,n,o){if(null!==document.getElementById(n.input_name)){var i=document.getElementById(n.input_name).value;document.getElementById(n.input_name).value=document.getElementById(n.input_name).value.replace(i,e.js_key)}}if(!function(){var e=new Date,t=(new Date).getTime(),n=!0,o=[],i=0;function a(e,t){document.cookie=e+"="+encodeURIComponent(t)+"; path=/"}function c(e,t,n){"function"==typeof window.addEventListener?e.addEventListener(t,n):e.attachEvent(t,n)}function r(e,t,n){"function"==typeof window.removeEventListener?e.removeEventListener(t,n):e.detachEvent(t,n)}a("ct_ps_timestamp",Math.floor((new Date).getTime()/1e3)),a("ct_fkp_timestamp","0"),a("ct_pointer_data","0"),a("ct_timezone","0"),setTimeout(function(){a("ct_timezone",e.getTimezoneOffset()/60*-1)},1e3);var u=function(){a("ct_fkp_timestamp",Math.floor((new Date).getTime()/1e3)),r(window,"mousedown",u),r(window,"keydown",u)},l=setInterval(function(){n=!0},150),m=setInterval(function(){a("ct_pointer_data",JSON.stringify(o))},1200),s=function(e){!0===n&&(o.push([Math.round(e.clientY),Math.round(e.clientX),Math.round((new Date).getTime()-t)]),n=!1,50<=++i&&(r(window,"mousemove",s),clearInterval(l),clearInterval(m)))};c(window,"mousemove",s),c(window,"mousedown",u),c(window,"keydown",u);var d,p,f,v,_,g,b=!0,w={orientation:{alpha:{},beta:{},gamma:{}},motion:{x:{},y:{},z:{}}};var y=setInterval(function(){var e=+new Date;w.orientation.alpha[e]=d,w.orientation.beta[e]=p,w.orientation.gamma[e]=f,w.motion.x[e]=v,w.motion.y[e]=_,w.motion.z[e]=g,a("abpct_hyro_acc_collect",JSON.stringify(w))},1e3);setTimeout(function(){clearInterval(y)},1e4),window.DeviceOrientationEvent&&c(window,"deviceorientation",function(e){var t,n,o,i=0,a=0,c=0;if(b)return i=e.alpha,a=e.beta,c=e.gamma,void(b=!1);t=e.alpha-i,n=e.beta-a,o=e.gamma-c,d=parseInt(t,10),p=parseInt(n,10),f=parseInt(o,10)}),window.DeviceMotionEvent&&c(window,"devicemotion",function(e){v=parseInt(e.accelerationIncludingGravity.x,10),_=parseInt(e.accelerationIncludingGravity.y,10),g=parseInt(e.accelerationIncludingGravity.z,10)}),c(window,"DOMContentLoaded",function(){a("apbct_visible_fields",0),a("apbct_visible_fields_count",0),setTimeout(function(){for(var e=0;e<document.forms.length;e++){var t=document.forms[e];t.onsubmit_prev=t.onsubmit,t.onsubmit=function(e){var t=[];for(var n in this.elements)isNaN(+n)||(t[n]=this.elements[n]);var o=(t=t.filter(function(o){return"none"!==getComputedStyle(o).display&&"hidden"!==getComputedStyle(o).visibility&&"0"!==getComputedStyle(o).opacity&&"hidden"!==o.getAttribute("type")&&"submit"!==o.getAttribute("type")&&""!==o.value&&null!==o.getAttribute("name")&&("radio"===o.getAttribute("type")&&t.forEach(function(e,t,n){o.getAttribute("name")!==e.getAttribute("name")||!1}),!0)})).length,i="";t.forEach(function(e,t,n){i+=" "+e.getAttribute("name")}),a("apbct_visible_fields",i=i.trim()),a("apbct_visible_fields_count",o),e.target.onsubmit_prev instanceof Function&&setTimeout(function(){e.target.onsubmit_prev.call(e.target,e)},500)}}},1e3)})}(),"undefined"!=typeof jQuery){function apbct_sendAJAXRequest(o,t,n){var i=t.callback||null,a=t.notJson||null,e=t.timeout||15e3;n=n||null;o._ajax_nonce=ctPublic._ajax_nonce,jQuery.ajax({type:"POST",url:ctPublic._ajax_url,data:o,success:function(e){a||(e=JSON.parse(e)),e.error||i&&i(e,o,t,n)},error:function(e,t,n){console.log("APBCT_AJAX_ERROR"),console.log(o),console.log(e),console.log(t),console.log(n)},timeout:e})}jQuery(document).ajaxComplete(function(e,t,n){var o;t.responseText&&-1!==t.responseText.indexOf('"apbct')&&void 0!==(o=JSON.parse(t.responseText)).apbct&&(o=o.apbct).blocked&&alert(o.comment)})}
|
2 |
+
//# sourceMappingURL=apbct-public.min.js.map
|
js/apbct-public.min.js.map
CHANGED
@@ -1 +1 @@
|
|
1 |
-
{"version":3,"sources":["apbct-public.js"],"names":["apbct_js_keys__set_input_value","result","data","params","obj","document","getElementById","input_name","ct_input_value","value","replace","js_key","ct_date","Date","ctTimeMs","getTime","ctMouseEventTimerFlag","ctMouseData","ctMouseDataCounter","ctSetCookieSec","c_name","cookie","encodeURIComponent","apbct_attach_event_handler","elem","event","callback","window","addEventListener","attachEvent","apbct_remove_event_handler","removeEventListener","detachEvent","Math","floor","setTimeout","getTimezoneOffset","ctFunctionFirstKey","ctMouseReadInterval","setInterval","ctMouseWriteDataInterval","JSON","stringify","ctFunctionMouseMove","push","round","clientY","clientX","clearInterval","globalAlpha","globalBeta","globalGamma","globalAccX","globalAccY","globalAccZ","isFirstTimeHyro","output","orientation","alpha","beta","gamma","motion","x","y","z","collect","timestamp","DeviceOrientationEvent","alphaOffset","betaOffset","gammaOffset","parseInt","DeviceMotionEvent","accelerationIncludingGravity","i","forms","length","form","onsubmit_prev","onsubmit","elements","key","this","isNaN","visible_fields_count","filter","getComputedStyle","display","visibility","opacity","getAttribute","forEach","el","j","els","visible_fields","trim","target","Function","call","jQuery","apbct_sendAJAXRequest","notJson","timeout","_ajax_nonce","ctPublic","ajax","type","url","_ajax_url","success","parse","error","jqXHR","textStatus","errorThrown","console","log","ajaxComplete","xhr","settings","response","responseText","indexOf","apbct","blocked","alert","comment"],"mappings":"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","file":"apbct-public.min.js","sourcesContent":["(function() {\r\n\r\n\tvar ct_date = new Date(),\r\n\t\tctTimeMs = new Date().getTime(),\r\n\t\tctMouseEventTimerFlag = true, //Reading interval flag\r\n\t\tctMouseData = [],\r\n\t\tctMouseDataCounter = 0;\r\n\r\n\tfunction ctSetCookieSec(c_name, value) {\r\n\t\tdocument.cookie = c_name + \"=\" + encodeURIComponent(value) + \"; path=/\";\r\n\t}\r\n\r\n\tfunction apbct_attach_event_handler(elem, event, callback){\r\n\t\tif(typeof window.addEventListener === \"function\") elem.addEventListener(event, callback);\r\n\t\telse elem.attachEvent(event, callback);\r\n\t}\r\n\r\n\tfunction apbct_remove_event_handler(elem, event, callback){\r\n\t\tif(typeof window.removeEventListener === \"function\") elem.removeEventListener(event, callback);\r\n\t\telse elem.detachEvent(event, callback);\r\n\t}\r\n\r\n\tctSetCookieSec(\"ct_ps_timestamp\", Math.floor(new Date().getTime()/1000));\r\n\tctSetCookieSec(\"ct_fkp_timestamp\", \"0\");\r\n\tctSetCookieSec(\"ct_pointer_data\", \"0\");\r\n\tctSetCookieSec(\"ct_timezone\", \"0\");\r\n\r\n\tsetTimeout(function(){\r\n\t\tctSetCookieSec(\"ct_timezone\", ct_date.getTimezoneOffset()/60*(-1));\r\n\t},1000);\r\n\r\n\t//Writing first key press timestamp\r\n\tvar ctFunctionFirstKey = function output(event){\r\n\t\tvar KeyTimestamp = Math.floor(new Date().getTime()/1000);\r\n\t\tctSetCookieSec(\"ct_fkp_timestamp\", KeyTimestamp);\r\n\t\tctKeyStopStopListening();\r\n\t};\r\n\r\n\t//Reading interval\r\n\tvar ctMouseReadInterval = setInterval(function(){\r\n\t\tctMouseEventTimerFlag = true;\r\n\t}, 150);\r\n\r\n\t//Writting interval\r\n\tvar ctMouseWriteDataInterval = setInterval(function(){\r\n\t\tctSetCookieSec(\"ct_pointer_data\", JSON.stringify(ctMouseData));\r\n\t}, 1200);\r\n\r\n\t//Logging mouse position each 150 ms\r\n\tvar ctFunctionMouseMove = function output(event){\r\n\t\tif(ctMouseEventTimerFlag === true){\r\n\r\n\t\t\tctMouseData.push([\r\n\t\t\t\tMath.round(event.clientY),\r\n\t\t\t\tMath.round(event.clientX),\r\n\t\t\t\tMath.round(new Date().getTime() - ctTimeMs)\r\n\t\t\t]);\r\n\r\n\t\t\tctMouseDataCounter++;\r\n\t\t\tctMouseEventTimerFlag = false;\r\n\t\t\tif(ctMouseDataCounter >= 50){\r\n\t\t\t\tctMouseStopData();\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t//Stop mouse observing function\r\n\tfunction ctMouseStopData(){\r\n\t\tapbct_remove_event_handler(window, \"mousemove\", ctFunctionMouseMove);\r\n\t\tclearInterval(ctMouseReadInterval);\r\n\t\tclearInterval(ctMouseWriteDataInterval);\r\n\t}\r\n\r\n\t//Stop key listening function\r\n\tfunction ctKeyStopStopListening(){\r\n\t\tapbct_remove_event_handler(window, \"mousedown\", ctFunctionFirstKey);\r\n\t\tapbct_remove_event_handler(window, \"keydown\", ctFunctionFirstKey);\r\n\t}\r\n\r\n\tapbct_attach_event_handler(window, \"mousemove\", ctFunctionMouseMove);\r\n\tapbct_attach_event_handler(window, \"mousedown\", ctFunctionFirstKey);\r\n\tapbct_attach_event_handler(window, \"keydown\", ctFunctionFirstKey);\r\n\r\n\t// Hyroscope && Accelerometer data\r\n\r\n var isFirstTimeHyro = true;\r\n\r\n var output = {\r\n 'orientation' : {\r\n 'alpha' : {},\r\n 'beta' : {},\r\n 'gamma' : {}\r\n },\r\n 'motion' : {\r\n 'x' : {},\r\n 'y' : {},\r\n 'z' : {}\r\n }\r\n };\r\n\r\n var globalAlpha, globalBeta, globalGamma, globalAccX, globalAccY, globalAccZ;\r\n\r\n function handleOrientation(event) {\r\n\r\n var alphaOffset = 0;\r\n var betaOffset = 0;\r\n var gammaOffset = 0;\r\n var alpha = 0;\r\n var beta = 0;\r\n var gamma = 0;\r\n if(isFirstTimeHyro){\r\n alphaOffset = event.alpha;\r\n betaOffset = event.beta;\r\n gammaOffset = event.gamma;\r\n isFirstTimeHyro = false;\r\n return;\r\n }\r\n\r\n alpha = event.alpha - alphaOffset;\r\n beta = event.beta - betaOffset;\r\n gamma = event.gamma - gammaOffset;\r\n globalAlpha = parseInt( alpha, 10 );\r\n globalBeta = parseInt( beta, 10 );\r\n globalGamma = parseInt( gamma, 10 );\r\n\r\n }\r\n\r\n function handleMotion(event) {\r\n\r\n globalAccX = parseInt( event.accelerationIncludingGravity.x, 10 );\r\n globalAccY = parseInt( event.accelerationIncludingGravity.y, 10 );\r\n globalAccZ = parseInt( event.accelerationIncludingGravity.z, 10 );\r\n\r\n }\r\n\r\n var collect = setInterval( function(){\r\n var timestamp = ( + new Date() );\r\n output.orientation.alpha[timestamp] = globalAlpha;\r\n output.orientation.beta[timestamp] = globalBeta;\r\n output.orientation.gamma[timestamp] = globalGamma;\r\n output.motion.x[timestamp] = globalAccX;\r\n output.motion.y[timestamp] = globalAccY;\r\n output.motion.z[timestamp] = globalAccZ;\r\n ctSetCookieSec(\"abpct_hyro_acc_collect\", JSON.stringify(output))\r\n }, 1000 );\r\n setTimeout( function(){\r\n clearInterval( collect );\r\n }, 10000 );\r\n\r\n if (window.DeviceOrientationEvent) {\r\n apbct_attach_event_handler(window, \"deviceorientation\", handleOrientation);\r\n }\r\n if (window.DeviceMotionEvent) {\r\n apbct_attach_event_handler(window, \"devicemotion\", handleMotion);\r\n }\r\n\r\n\t// Ready function\r\n\tfunction apbct_ready(){\r\n\t\tctSetCookieSec(\"apbct_visible_fields\", 0);\r\n\t\tctSetCookieSec(\"apbct_visible_fields_count\", 0);\r\n\t\tsetTimeout(function(){\r\n\t\t\tfor(var i = 0; i < document.forms.length; i++){\r\n\t\t\t\tvar form = document.forms[i];\r\n\r\n\t\t\t\tform.onsubmit_prev = form.onsubmit;\r\n\t\t\t\tform.onsubmit = function(event){\r\n\r\n\t\t\t\t\t// Get only fields\r\n\t\t\t\t\tvar elements = [];\r\n\t\t\t\t\tfor(var key in this.elements){\r\n\t\t\t\t\t\tif(!isNaN(+key))\r\n\t\t\t\t\t\t\telements[key] = this.elements[key];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Filter fields\r\n\t\t\t\t\telements = elements.filter(function(elem){\r\n\r\n\t\t\t\t\t\tvar pass = true;\r\n\r\n\t\t\t\t\t\t// Filter fields\r\n\t\t\t\t\t\tif( getComputedStyle(elem).display === \"none\" || // hidden\r\n\t\t\t\t\t\t\tgetComputedStyle(elem).visibility === \"hidden\" || // hidden\r\n\t\t\t\t\t\t\tgetComputedStyle(elem).opacity === \"0\" || // hidden\r\n\t\t\t\t\t\t\telem.getAttribute(\"type\") === \"hidden\" || // type == hidden\r\n\t\t\t\t\t\t\telem.getAttribute(\"type\") === \"submit\" || // type == submit\r\n\t\t\t\t\t\t\telem.value === \"\" || // empty value\r\n\t\t\t\t\t\t\telem.getAttribute('name') === null\r\n\t\t\t\t\t\t){\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// Filter elements with same names for type == radio\r\n\t\t\t\t\t\tif(elem.getAttribute(\"type\") === \"radio\"){\r\n\t\t\t\t\t\t\telements.forEach(function(el, j, els){\r\n\t\t\t\t\t\t\t\tif(elem.getAttribute('name') === el.getAttribute('name')){\r\n\t\t\t\t\t\t\t\t\tpass = false;\r\n\t\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t// Visible fields count\r\n\t\t\t\t\tvar visible_fields_count = elements.length;\r\n\r\n\t\t\t\t\t// Visible fields\r\n\t\t\t\t\tvar visible_fields = '';\r\n\t\t\t\t\telements.forEach(function(elem, i, elements){\r\n\t\t\t\t\t\tvisible_fields += \" \" + elem.getAttribute(\"name\");\r\n\t\t\t\t\t});\r\n\t\t\t\t\tvisible_fields = visible_fields.trim();\r\n\r\n\t\t\t\t\tctSetCookieSec(\"apbct_visible_fields\", visible_fields);\r\n\t\t\t\t\tctSetCookieSec(\"apbct_visible_fields_count\", visible_fields_count);\r\n\r\n\t\t\t\t\t// Call previous submit action\r\n\t\t\t\t\tif(event.target.onsubmit_prev instanceof Function){\r\n\t\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\t\tevent.target.onsubmit_prev.call(event.target, event);\r\n\t\t\t\t\t\t}, 500);\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t}, 1000);\r\n\t}\r\n\tapbct_attach_event_handler(window, \"DOMContentLoaded\", apbct_ready);\r\n\r\n\t//(function(open) {\r\n\t// XMLHttpRequest.prototype.open = function(method, url, async, user, pass) {\r\n\t// this.addEventListener(\"readystatechange\", function() {\r\n\t// }, false);\r\n\t// open.call(this, method, url, async, user, pass);\r\n\t// };\r\n\t//})(XMLHttpRequest.prototype.open);\r\n\r\n}());\r\n\r\nfunction apbct_js_keys__set_input_value(result, data, params, obj){\r\n\tif (document.getElementById(params.input_name) !== null) {\r\n\t\tvar ct_input_value = document.getElementById(params.input_name).value;\r\n\t\tdocument.getElementById(params.input_name).value = document.getElementById(params.input_name).value.replace(ct_input_value, result.js_key);\r\n\t}\r\n}\r\n\r\nif(typeof jQuery !== 'undefined') {\r\n\r\n\t// Capturing responses and output block message for unknown AJAX forms\r\n\tjQuery(document).ajaxComplete(function (event, xhr, settings) {\r\n\t\tif (xhr.responseText && xhr.responseText.indexOf('\"apbct') !== -1) {\r\n\t\t\tvar response = JSON.parse(xhr.responseText);\r\n\t\t\tif (typeof response.apbct !== 'undefined') {\r\n\t\t\t\tvar response = response.apbct;\r\n\t\t\t\tif (response.blocked) {\r\n\t\t\t\t\talert(response.comment);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\tfunction apbct_sendAJAXRequest(data, params, obj) {\r\n\r\n\t\t// Default params\r\n\t\tvar callback = params.callback || null;\r\n\t\tvar notJson = params.notJson || null;\r\n\t\tvar timeout = params.timeout || 15000;\r\n\t\tvar obj = obj || null;\r\n\r\n\t\tdata._ajax_nonce = ctPublic._ajax_nonce;\r\n\r\n\t\tjQuery.ajax({\r\n\t\t\ttype: \"POST\",\r\n\t\t\turl: ctPublic._ajax_url,\r\n\t\t\tdata: data,\r\n\t\t\tsuccess: function (result) {\r\n\t\t\t\tif (!notJson) result = JSON.parse(result);\r\n\t\t\t\tif (result.error) {\r\n\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (callback)\r\n\t\t\t\t\t\tcallback(result, data, params, obj);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\terror: function (jqXHR, textStatus, errorThrown) {\r\n\t\t\t\tconsole.log('APBCT_AJAX_ERROR');\r\n\t\t\t\tconsole.log(data);\r\n\t\t\t\tconsole.log(jqXHR);\r\n\t\t\t\tconsole.log(textStatus);\r\n\t\t\t\tconsole.log(errorThrown);\r\n\t\t\t},\r\n\t\t\ttimeout: timeout\r\n\t\t});\r\n\t}\r\n}"]}
|
1 |
+
{"version":3,"sources":["apbct-public.js"],"names":["apbct_js_keys__set_input_value","result","data","params","obj","document","getElementById","input_name","ct_input_value","value","replace","js_key","ct_date","Date","ctTimeMs","getTime","ctMouseEventTimerFlag","ctMouseData","ctMouseDataCounter","ctSetCookieSec","c_name","cookie","encodeURIComponent","apbct_attach_event_handler","elem","event","callback","window","addEventListener","attachEvent","apbct_remove_event_handler","removeEventListener","detachEvent","Math","floor","setTimeout","getTimezoneOffset","ctFunctionFirstKey","ctMouseReadInterval","setInterval","ctMouseWriteDataInterval","JSON","stringify","ctFunctionMouseMove","push","round","clientY","clientX","clearInterval","globalAlpha","globalBeta","globalGamma","globalAccX","globalAccY","globalAccZ","isFirstTimeHyro","output","orientation","alpha","beta","gamma","motion","x","y","z","collect","timestamp","DeviceOrientationEvent","alphaOffset","betaOffset","gammaOffset","parseInt","DeviceMotionEvent","accelerationIncludingGravity","i","forms","length","form","onsubmit_prev","onsubmit","elements","key","this","isNaN","visible_fields_count","filter","getComputedStyle","display","visibility","opacity","getAttribute","forEach","el","j","els","visible_fields","trim","target","Function","call","jQuery","apbct_sendAJAXRequest","notJson","timeout","_ajax_nonce","ctPublic","ajax","type","url","_ajax_url","success","parse","error","jqXHR","textStatus","errorThrown","console","log","ajaxComplete","xhr","settings","response","responseText","indexOf","apbct","blocked","alert","comment"],"mappings":"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","file":"apbct-public.min.js","sourcesContent":["(function() {\r\n\r\n\tvar ct_date = new Date(),\r\n\t\tctTimeMs = new Date().getTime(),\r\n\t\tctMouseEventTimerFlag = true, //Reading interval flag\r\n\t\tctMouseData = [],\r\n\t\tctMouseDataCounter = 0;\r\n\r\n\tfunction ctSetCookieSec(c_name, value) {\r\n\t\tdocument.cookie = c_name + \"=\" + encodeURIComponent(value) + \"; path=/\";\r\n\t}\r\n\r\n\tfunction apbct_attach_event_handler(elem, event, callback){\r\n\t\tif(typeof window.addEventListener === \"function\") elem.addEventListener(event, callback);\r\n\t\telse elem.attachEvent(event, callback);\r\n\t}\r\n\r\n\tfunction apbct_remove_event_handler(elem, event, callback){\r\n\t\tif(typeof window.removeEventListener === \"function\") elem.removeEventListener(event, callback);\r\n\t\telse elem.detachEvent(event, callback);\r\n\t}\r\n\r\n\tctSetCookieSec(\"ct_ps_timestamp\", Math.floor(new Date().getTime()/1000));\r\n\tctSetCookieSec(\"ct_fkp_timestamp\", \"0\");\r\n\tctSetCookieSec(\"ct_pointer_data\", \"0\");\r\n\tctSetCookieSec(\"ct_timezone\", \"0\");\r\n\r\n\tsetTimeout(function(){\r\n\t\tctSetCookieSec(\"ct_timezone\", ct_date.getTimezoneOffset()/60*(-1));\r\n\t},1000);\r\n\r\n\t//Writing first key press timestamp\r\n\tvar ctFunctionFirstKey = function output(event){\r\n\t\tvar KeyTimestamp = Math.floor(new Date().getTime()/1000);\r\n\t\tctSetCookieSec(\"ct_fkp_timestamp\", KeyTimestamp);\r\n\t\tctKeyStopStopListening();\r\n\t};\r\n\r\n\t//Reading interval\r\n\tvar ctMouseReadInterval = setInterval(function(){\r\n\t\tctMouseEventTimerFlag = true;\r\n\t}, 150);\r\n\r\n\t//Writting interval\r\n\tvar ctMouseWriteDataInterval = setInterval(function(){\r\n\t\tctSetCookieSec(\"ct_pointer_data\", JSON.stringify(ctMouseData));\r\n\t}, 1200);\r\n\r\n\t//Logging mouse position each 150 ms\r\n\tvar ctFunctionMouseMove = function output(event){\r\n\t\tif(ctMouseEventTimerFlag === true){\r\n\r\n\t\t\tctMouseData.push([\r\n\t\t\t\tMath.round(event.clientY),\r\n\t\t\t\tMath.round(event.clientX),\r\n\t\t\t\tMath.round(new Date().getTime() - ctTimeMs)\r\n\t\t\t]);\r\n\r\n\t\t\tctMouseDataCounter++;\r\n\t\t\tctMouseEventTimerFlag = false;\r\n\t\t\tif(ctMouseDataCounter >= 50){\r\n\t\t\t\tctMouseStopData();\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t//Stop mouse observing function\r\n\tfunction ctMouseStopData(){\r\n\t\tapbct_remove_event_handler(window, \"mousemove\", ctFunctionMouseMove);\r\n\t\tclearInterval(ctMouseReadInterval);\r\n\t\tclearInterval(ctMouseWriteDataInterval);\r\n\t}\r\n\r\n\t//Stop key listening function\r\n\tfunction ctKeyStopStopListening(){\r\n\t\tapbct_remove_event_handler(window, \"mousedown\", ctFunctionFirstKey);\r\n\t\tapbct_remove_event_handler(window, \"keydown\", ctFunctionFirstKey);\r\n\t}\r\n\r\n\tapbct_attach_event_handler(window, \"mousemove\", ctFunctionMouseMove);\r\n\tapbct_attach_event_handler(window, \"mousedown\", ctFunctionFirstKey);\r\n\tapbct_attach_event_handler(window, \"keydown\", ctFunctionFirstKey);\r\n\r\n\t// Hyroscope && Accelerometer data\r\n\r\n var isFirstTimeHyro = true;\r\n\r\n var output = {\r\n 'orientation' : {\r\n 'alpha' : {},\r\n 'beta' : {},\r\n 'gamma' : {}\r\n },\r\n 'motion' : {\r\n 'x' : {},\r\n 'y' : {},\r\n 'z' : {}\r\n }\r\n };\r\n\r\n var globalAlpha, globalBeta, globalGamma, globalAccX, globalAccY, globalAccZ;\r\n\r\n function handleOrientation(event) {\r\n\r\n var alphaOffset = 0;\r\n var betaOffset = 0;\r\n var gammaOffset = 0;\r\n var alpha = 0;\r\n var beta = 0;\r\n var gamma = 0;\r\n if(isFirstTimeHyro){\r\n alphaOffset = event.alpha;\r\n betaOffset = event.beta;\r\n gammaOffset = event.gamma;\r\n isFirstTimeHyro = false;\r\n return;\r\n }\r\n\r\n alpha = event.alpha - alphaOffset;\r\n beta = event.beta - betaOffset;\r\n gamma = event.gamma - gammaOffset;\r\n globalAlpha = parseInt( alpha, 10 );\r\n globalBeta = parseInt( beta, 10 );\r\n globalGamma = parseInt( gamma, 10 );\r\n\r\n }\r\n\r\n function handleMotion(event) {\r\n\r\n globalAccX = parseInt( event.accelerationIncludingGravity.x, 10 );\r\n globalAccY = parseInt( event.accelerationIncludingGravity.y, 10 );\r\n globalAccZ = parseInt( event.accelerationIncludingGravity.z, 10 );\r\n\r\n }\r\n\r\n var collect = setInterval( function(){\r\n var timestamp = ( + new Date() );\r\n output.orientation.alpha[timestamp] = globalAlpha;\r\n output.orientation.beta[timestamp] = globalBeta;\r\n output.orientation.gamma[timestamp] = globalGamma;\r\n output.motion.x[timestamp] = globalAccX;\r\n output.motion.y[timestamp] = globalAccY;\r\n output.motion.z[timestamp] = globalAccZ;\r\n ctSetCookieSec(\"abpct_hyro_acc_collect\", JSON.stringify(output))\r\n }, 1000 );\r\n setTimeout( function(){\r\n clearInterval( collect );\r\n }, 10000 );\r\n\r\n if (window.DeviceOrientationEvent) {\r\n apbct_attach_event_handler(window, \"deviceorientation\", handleOrientation);\r\n }\r\n if (window.DeviceMotionEvent) {\r\n apbct_attach_event_handler(window, \"devicemotion\", handleMotion);\r\n }\r\n\r\n\t// Ready function\r\n\tfunction apbct_ready(){\r\n\t\tctSetCookieSec(\"apbct_visible_fields\", 0);\r\n\t\tctSetCookieSec(\"apbct_visible_fields_count\", 0);\r\n\t\tsetTimeout(function(){\r\n\t\t\tfor(var i = 0; i < document.forms.length; i++){\r\n\t\t\t\tvar form = document.forms[i];\r\n\r\n\t\t\t\tform.onsubmit_prev = form.onsubmit;\r\n\t\t\t\tform.onsubmit = function(event){\r\n\r\n\t\t\t\t\t// Get only fields\r\n\t\t\t\t\tvar elements = [];\r\n\t\t\t\t\tfor(var key in this.elements){\r\n\t\t\t\t\t\tif(!isNaN(+key))\r\n\t\t\t\t\t\t\telements[key] = this.elements[key];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Filter fields\r\n\t\t\t\t\telements = elements.filter(function(elem){\r\n\r\n\t\t\t\t\t\tvar pass = true;\r\n\r\n\t\t\t\t\t\t// Filter fields\r\n\t\t\t\t\t\tif( getComputedStyle(elem).display === \"none\" || // hidden\r\n\t\t\t\t\t\t\tgetComputedStyle(elem).visibility === \"hidden\" || // hidden\r\n\t\t\t\t\t\t\tgetComputedStyle(elem).opacity === \"0\" || // hidden\r\n\t\t\t\t\t\t\telem.getAttribute(\"type\") === \"hidden\" || // type == hidden\r\n\t\t\t\t\t\t\telem.getAttribute(\"type\") === \"submit\" || // type == submit\r\n\t\t\t\t\t\t\telem.value === \"\" || // empty value\r\n\t\t\t\t\t\t\telem.getAttribute('name') === null\r\n\t\t\t\t\t\t){\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// Filter elements with same names for type == radio\r\n\t\t\t\t\t\tif(elem.getAttribute(\"type\") === \"radio\"){\r\n\t\t\t\t\t\t\telements.forEach(function(el, j, els){\r\n\t\t\t\t\t\t\t\tif(elem.getAttribute('name') === el.getAttribute('name')){\r\n\t\t\t\t\t\t\t\t\tpass = false;\r\n\t\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t// Visible fields count\r\n\t\t\t\t\tvar visible_fields_count = elements.length;\r\n\r\n\t\t\t\t\t// Visible fields\r\n\t\t\t\t\tvar visible_fields = '';\r\n\t\t\t\t\telements.forEach(function(elem, i, elements){\r\n\t\t\t\t\t\tvisible_fields += \" \" + elem.getAttribute(\"name\");\r\n\t\t\t\t\t});\r\n\t\t\t\t\tvisible_fields = visible_fields.trim();\r\n\r\n\t\t\t\t\tctSetCookieSec(\"apbct_visible_fields\", visible_fields);\r\n\t\t\t\t\tctSetCookieSec(\"apbct_visible_fields_count\", visible_fields_count);\r\n\r\n\t\t\t\t\t// Call previous submit action\r\n\t\t\t\t\tif(event.target.onsubmit_prev instanceof Function){\r\n\t\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\t\tevent.target.onsubmit_prev.call(event.target, event);\r\n\t\t\t\t\t\t}, 500);\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t}, 1000);\r\n\t}\r\n\tapbct_attach_event_handler(window, \"DOMContentLoaded\", apbct_ready);\r\n\r\n\t//(function(open) {\r\n\t// XMLHttpRequest.prototype.open = function(method, url, async, user, pass) {\r\n\t// this.addEventListener(\"readystatechange\", function() {\r\n\t// }, false);\r\n\t// open.call(this, method, url, async, user, pass);\r\n\t// };\r\n\t//})(XMLHttpRequest.prototype.open);\r\n\r\n}());\r\n\r\nfunction apbct_js_keys__set_input_value(result, data, params, obj){\r\n\tif (document.getElementById(params.input_name) !== null) {\r\n\t\tvar ct_input_value = document.getElementById(params.input_name).value;\r\n\t\tdocument.getElementById(params.input_name).value = document.getElementById(params.input_name).value.replace(ct_input_value, result.js_key);\r\n\t}\r\n}\r\n\r\nif(typeof jQuery !== 'undefined') {\r\n\r\n\t// Capturing responses and output block message for unknown AJAX forms\r\n\tjQuery(document).ajaxComplete(function (event, xhr, settings) {\r\n\t\tif (xhr.responseText && xhr.responseText.indexOf('\"apbct') !== -1) {\r\n\t\t\tvar response = JSON.parse(xhr.responseText);\r\n\t\t\tif (typeof response.apbct !== 'undefined') {\r\n\t\t\t\tvar response = response.apbct;\r\n\t\t\t\tif (response.blocked) {\r\n\t\t\t\t\talert(response.comment);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\tfunction apbct_sendAJAXRequest(data, params, obj) {\r\n\r\n\t\t// Default params\r\n\t\tvar callback = params.callback || null;\r\n\t\tvar notJson = params.notJson || null;\r\n\t\tvar timeout = params.timeout || 15000;\r\n\t\tvar obj = obj || null;\r\n\r\n\t\tdata._ajax_nonce = ctPublic._ajax_nonce;\r\n\r\n\t\tjQuery.ajax({\r\n\t\t\ttype: \"POST\",\r\n\t\t\turl: ctPublic._ajax_url,\r\n\t\t\tdata: data,\r\n\t\t\tsuccess: function (result) {\r\n\t\t\t\tif (!notJson) result = JSON.parse(result);\r\n\t\t\t\tif (result.error) {\r\n\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (callback)\r\n\t\t\t\t\t\tcallback(result, data, params, obj);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\terror: function (jqXHR, textStatus, errorThrown) {\r\n\t\t\t\tconsole.log('APBCT_AJAX_ERROR');\r\n\t\t\t\tconsole.log(data);\r\n\t\t\t\tconsole.log(jqXHR);\r\n\t\t\t\tconsole.log(textStatus);\r\n\t\t\t\tconsole.log(errorThrown);\r\n\t\t\t},\r\n\t\t\ttimeout: timeout\r\n\t\t});\r\n\t}\r\n}"]}
|
js/cleantalk-comments-checkspam.min.js
CHANGED
@@ -1,2 +1,2 @@
|
|
1 |
-
var ct_working=!(String.prototype.printf=function(){var
|
2 |
-
//# sourceMappingURL=cleantalk-comments-checkspam.min.js.map
|
1 |
+
var ct_working=!(String.prototype.printf=function(){var t=this;for(var e in arguments){var c=t.substring(0,t.indexOf("%s",0)),_=t.substring(t.indexOf("%s",0)+2,t.length);t=c+arguments[e]+_}return t}),ct_new_check=!0,ct_cooling_down_flag=!1,ct_close_animate=!0,ct_accurate_check=!1,ct_pause=!1,ct_prev_accurate=ctCommentsCheck.ct_prev_accurate,ct_prev_from=ctCommentsCheck.ct_prev_from,ct_prev_till=ctCommentsCheck.ct_prev_till,ct_cool_down_time=9e4,ct_requests_counter=0,ct_max_requests=60,ct_ajax_nonce=ctCommentsCheck.ct_ajax_nonce,ct_comments_total=0,ct_comments_checked=0,ct_comments_spam=0,ct_comments_bad=0,ct_unchecked="unset",ct_date_from=0,ct_date_till=0;function animate_comment(t,e){ct_close_animate?.3==t?jQuery("#comment-"+e).fadeTo(200,t,function(){animate_comment(1,e)}):jQuery("#comment-"+e).fadeTo(200,t,function(){animate_comment(.3,e)}):ct_close_animate=!0}function ct_clear_comments(){var t=0,e=0;jQuery("#ct_allow_date_range").is(":checked")&&(t=jQuery("#ct_date_range_from").val(),e=jQuery("#ct_date_range_till").val());var c={action:"ajax_clear_comments",security:ct_ajax_nonce,from:t,till:e};jQuery.ajax({type:"POST",url:ajaxurl,data:c,success:function(t){ct_show_info(),ct_send_comments()}})}function ct_cooling_down_toggle(){ct_cooling_down_flag=!1,ct_send_comments(),ct_show_info()}function ct_send_comments(){if(!0!==ct_cooling_down_flag){if(ct_max_requests<=ct_requests_counter)return setTimeout(ct_cooling_down_toggle,ct_cool_down_time),void(ct_cooling_down_flag=!(ct_requests_counter=0));ct_requests_counter++;var t={action:"ajax_check_comments",security:ct_ajax_nonce,new_check:ct_new_check,unchecked:ct_unchecked};ct_accurate_check&&(t.accurate_check=!0),ct_date_from&&ct_date_till&&(t.from=ct_date_from,t.till=ct_date_till),jQuery.ajax({type:"POST",url:ajaxurl,data:t,success:function(t){if(t=jQuery.parseJSON(t),parseInt(t.error))if(ct_working=!1,confirm(t.error_message+". Do you want to proceed?"))ct_send_comments();else{var e="edit-comments.php?page=ct_check_spam";0!=ct_date_from&&0!=ct_date_till&&(e+="&from="+ct_date_from+"&till="+ct_date_till),location.href=e}else if(ct_new_check=!1,1==parseInt(t.end)||!0===ct_pause){1==parseInt(t.end)&&(document.cookie="ct_paused_comments_check=0; path=/"),ct_working=!1,jQuery("#ct_working_message").hide();e="edit-comments.php?page=ct_check_spam";0!=ct_date_from&&0!=ct_date_till&&(e+="&from="+ct_date_from+"&till="+ct_date_till),location.href=e}else if(0==parseInt(t.end)){ct_comments_checked+=t.checked,ct_comments_spam+=t.spam,ct_comments_bad+=t.bad,ct_unchecked=ct_comments_total-ct_comments_checked-ct_comments_bad;var c=(c=String(ctCommentsCheck.ct_status_string)).printf(ct_comments_total,ct_comments_checked,ct_comments_spam,ct_comments_bad);0<parseInt(ct_comments_spam)&&(c+=ctCommentsCheck.ct_status_string_warning),jQuery("#ct_checking_status").html(c),jQuery("#ct_error_message").hide(),+ct_comments_total<ct_comments_checked+ct_comments_bad&&(document.cookie="ct_comments_start_check=1; path=/",document.cookie="ct_comments_safe_check=1; path=/",location.href="edit-comments.php?page=ct_check_spam"),ct_send_comments()}},error:function(t,e,c){jQuery("#ct_error_message").show(),jQuery("#cleantalk_ajax_error").html(e),jQuery("#cleantalk_js_func").html("Check comments"),setTimeout(ct_send_comments(),3e3)},timeout:25e3})}}function ct_show_info(){if(ct_working){if(1==ct_cooling_down_flag)return jQuery("#ct_cooling_notice").html("Waiting for API to cool down. (About a minute)"),void jQuery("#ct_cooling_notice").show();if(jQuery("#ct_cooling_notice").hide(),setTimeout(ct_show_info,3e3),!ct_comments_total){var t={action:"ajax_info_comments",security:ct_ajax_nonce};ct_date_from&&ct_date_till&&(t.from=ct_date_from,t.till=ct_date_till),jQuery.ajax({type:"POST",url:ajaxurl,data:t,success:function(t){t=jQuery.parseJSON(t),jQuery("#ct_checking_status").html(t.message),ct_comments_total=t.total,ct_comments_spam=t.spam,ct_comments_checked=t.checked,ct_comments_bad=t.bad},error:function(t,e,c){jQuery("#ct_error_message").show(),jQuery("#cleantalk_ajax_error").html(e),jQuery("#cleantalk_js_func").html("Check comments"),setTimeout(ct_show_info(),3e3)},timeout:15e3})}}}function ct_toggle_depended(t,e){e=e||null;var c=jQuery(t.data("depended"));t.data("state")||e?(t.data("state",!1),c.prop("disabled",!0),c.removeProp("checked"),c.data("depended")&&ct_toggle_depended(c,!0)):(t.data("state",!0),c.removeProp("disabled"))}jQuery(document).ready(function(){jQuery("#ct_allow_date_range").data({depended:".ct_date",state:!1}),ct_prev_accurate&&jQuery("#ct_accurate_check").prop("checked",!0),ct_prev_from&&(jQuery("#ct_allow_date_range").prop("checked",!0).data("state",!0),jQuery("#ct_date_range_from").removeProp("disabled").val(ct_prev_from),jQuery("#ct_date_range_till").removeProp("disabled").val(ct_prev_till)),jQuery("#ct_allow_date_range, #ct_accurate_check").on("change",function(){ct_toggle_depended(jQuery(this))}),jQuery.datepicker.setDefaults(jQuery.datepicker.regional.en);var a=jQuery("#ct_date_range_from, #ct_date_range_till").datepicker({dateFormat:"M d yy",maxDate:"+0D",changeMonth:!0,changeYear:!0,showAnim:"slideDown",onSelect:function(t){var e="ct_date_range_from"==this.id?"minDate":"maxDate",c=jQuery(this).data("datepicker"),_=jQuery.datepicker.parseDate(c.settings.dateFormat||jQuery.datepicker._defaults.dateFormat,t,c.settings);a.not(this).datepicker("option",e,_)}});function t(t){t=t||null,jQuery("#ct_allow_date_range").is(":checked")&&(ct_date_from=jQuery("#ct_date_range_from").val(),ct_date_till=jQuery("#ct_date_range_till").val(),""==ct_date_from||""==ct_date_till)?alert("Please, specify a date range."):(jQuery("#ct_accurate_check").is(":checked")&&(ct_accurate_check=!0),jQuery(".ct_to_hide").hide(),jQuery("#ct_working_message").show(),jQuery("#ct_preloader").show(),jQuery("#ct_pause").show(),ct_working=!0,t?(ct_show_info(),ct_send_comments()):ct_clear_comments())}jQuery("#ct_check_spam_button").click(function(){t(!(document.cookie="ct_paused_comments_check=0; path=/"))}),jQuery("#ct_proceed_check_button").click(function(){t(!0)}),jQuery("#ct_pause").on("click",function(){ct_pause=!0;var t={accurate:ct_accurate_check,from:ct_date_from,till:ct_date_till};document.cookie="ct_paused_comments_check="+JSON.stringify(t)+"; path=/"}),"1"===ctCommentsCheck.start&&(document.cookie="ct_comments_start_check=0; expires="+new Date(0).toUTCString()+"; path=/",jQuery("#ct_check_spam_button").click())});
|
2 |
+
//# sourceMappingURL=cleantalk-comments-checkspam.min.js.map
|
js/cleantalk-comments-checkspam.min.js.map
CHANGED
@@ -1 +1 @@
|
|
1 |
-
{"version":3,"sources":["cleantalk-comments-checkspam.js"],"names":["ct_working","String","prototype","printf","formatted","this","arg","arguments","before_formatted","substring","indexOf","after_formatted","length","ct_new_check","ct_cooling_down_flag","ct_close_animate","ct_accurate_check","ct_pause","ct_prev_accurate","ctCommentsCheck","ct_prev_from","ct_prev_till","ct_cool_down_time","ct_requests_counter","ct_max_requests","ct_ajax_nonce","ct_comments_total","ct_comments_checked","ct_comments_spam","ct_comments_bad","ct_unchecked","ct_date_from","ct_date_till","animate_comment","to","id","jQuery","fadeTo","ct_clear_comments","from","till","is","val","data","action","security","ajax","type","url","ajaxurl","success","msg","ct_show_info","ct_send_comments","ct_cooling_down_toggle","setTimeout","new_check","unchecked","parseJSON","parseInt","error","confirm","error_message","new_href","location","href","end","document","cookie","hide","checked","spam","bad","status_string","ct_status_string","ct_status_string_warning","html","jqXHR","textStatus","errorThrown","show","timeout","message","total","ct_insert_comments","delete_comments","alert","ct_comments_deleted","ct_comments_added_after","ct_comments_added","ct_delete_all","ct_delete_checked","ids","Array","cnt","each","prop","attr","ct_toggle_depended","obj","secondary","depended","removeProp","ready","state","on","dates","datepicker","dateFormat","maxDate","changeMonth","changeYear","showAnim","onSelect","selectedDate","option","instance","date","parseDate","settings","_defaults","not","ct_start_check","continue_check","click","ct_check","accurate","JSON","stringify","ct_confirm_deletion_all","animate","scrollTop","ct_confirm_deletion_checked","remove","mouseover","mouseout","ct_id","fadeOut","comment_id","comment_status","start","Date","toUTCString"],"mappings":"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","file":"cleantalk-comments-checkspam.min.js","sourcesContent":["// Printf for JS\r\nString.prototype.printf = function(){\r\n var formatted = this;\r\n for( var arg in arguments ) {\r\n\t\tvar before_formatted = formatted.substring(0, formatted.indexOf(\"%s\", 0));\r\n\t\tvar after_formatted = formatted.substring(formatted.indexOf(\"%s\", 0)+2, formatted.length);\r\n\t\tformatted = before_formatted + arguments[arg] + after_formatted;\r\n }\r\n return formatted;\r\n};\r\n\r\n// Flags\r\nvar ct_working = false,\r\n\tct_new_check = true,\r\n\tct_cooling_down_flag = false,\r\n\tct_close_animate = true,\r\n\tct_accurate_check = false,\r\n\tct_pause = false,\r\n\tct_prev_accurate = ctCommentsCheck.ct_prev_accurate,\r\n\tct_prev_from = ctCommentsCheck.ct_prev_from,\t\r\n\tct_prev_till = ctCommentsCheck.ct_prev_till;\r\n// Settings\r\nvar ct_cool_down_time = 90000,\r\n\tct_requests_counter = 0,\r\n\tct_max_requests = 60;\r\n// Variables\r\nvar ct_ajax_nonce = ctCommentsCheck.ct_ajax_nonce,\r\n\tct_comments_total = 0,\r\n\tct_comments_checked = 0,\r\n\tct_comments_spam = 0,\r\n\tct_comments_bad = 0,\r\n\tct_unchecked = 'unset',\r\n\tct_date_from = 0,\r\n\tct_date_till = 0;\r\n\r\nfunction animate_comment(to,id){\r\n\tif(ct_close_animate){\r\n\t\tif(to==0.3){\r\n\t\t\tjQuery('#comment-'+id).fadeTo(200,to,function(){\r\n\t\t\t\tanimate_comment(1,id)\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tjQuery('#comment-'+id).fadeTo(200,to,function(){\r\n\t\t\t\tanimate_comment(0.3,id)\r\n\t\t\t});\r\n\t\t}\r\n\t}else{\r\n\t\tct_close_animate=true;\r\n\t}\r\n}\r\n\r\nfunction ct_clear_comments(){\r\n\r\n\tvar from = 0, till = 0;\r\n\tif(jQuery('#ct_allow_date_range').is(':checked')) {\r\n\t\tfrom = jQuery('#ct_date_range_from').val();\r\n\t\ttill = jQuery('#ct_date_range_till').val();\r\n\t}\r\n\tvar data = {\r\n\t\t'action' : 'ajax_clear_comments',\r\n\t\t'security' : ct_ajax_nonce,\r\n\t\t'from' : from,\r\n\t\t'till' : till\r\n\t};\r\n\r\n\tjQuery.ajax({\r\n\t\ttype: \"POST\",\r\n\t\turl: ajaxurl,\r\n\t\tdata: data,\r\n\t\tsuccess: function(msg){\r\n\t\t\tct_show_info();\r\n\t\t\tct_send_comments();\r\n\t\t}\r\n\t});\r\n}\r\n\r\n//Continues the check after cooldown time\r\n//Called by ct_send_users();\r\nfunction ct_cooling_down_toggle(){\r\n\tct_cooling_down_flag = false;\r\n\tct_send_comments();\r\n\tct_show_info();\r\n}\r\n\r\nfunction ct_send_comments(){\r\n\t\r\n\tif(ct_cooling_down_flag == true)\r\n\t\treturn;\r\n\t\r\n\tif(ct_requests_counter >= ct_max_requests){\r\n\t\tsetTimeout(ct_cooling_down_toggle, ct_cool_down_time);\r\n\t\tct_requests_counter = 0;\r\n\t\tct_cooling_down_flag = true;\r\n\t\treturn;\r\n\t}else{\r\n\t\tct_requests_counter++;\r\n\t}\r\n\t\r\n\tvar data = {\r\n\t\t'action': 'ajax_check_comments',\r\n\t\t'security': ct_ajax_nonce,\r\n\t\t'new_check': ct_new_check,\r\n\t\t'unchecked': ct_unchecked\r\n\t};\r\n\t\r\n\tif(ct_accurate_check)\r\n\t\tdata['accurate_check'] = true;\r\n\t\r\n\tif(ct_date_from && ct_date_till){\r\n\t\tdata['from'] = ct_date_from;\r\n\t\tdata['till'] = ct_date_till;\r\n\t}\r\n\t\r\n\tjQuery.ajax({\r\n\t\ttype: \"POST\",\r\n\t\turl: ajaxurl,\r\n\t\tdata: data,\r\n\t\tsuccess: function(msg){\r\n\t\t\t\r\n\t\t\tmsg = jQuery.parseJSON(msg);\r\n\t\t\t\r\n\t\t\tif(parseInt(msg.error)){\r\n\t\t\t\tct_working=false;\r\n\t\t\t\tif(!confirm(msg.error_message+\". Do you want to proceed?\")){\r\n\t\t\t\t\tvar new_href = 'edit-comments.php?page=ct_check_spam';\r\n\t\t\t\t\tif(ct_date_from != 0 && ct_date_till != 0)\r\n\t\t\t\t\t\tnew_href+='&from='+ct_date_from+'&till='+ct_date_till;\r\n\t\t\t\t\tlocation.href = new_href;\r\n\t\t\t\t}else\r\n\t\t\t\t\tct_send_comments();\r\n\t\t\t}else{\r\n\t\t\t\tct_new_check = false;\r\n\t\t\t\tif(parseInt(msg.end) == 1 || ct_pause === true){\r\n\t\t\t\t\tif(parseInt(msg.end) == 1)\r\n\t\t\t\t\t\tdocument.cookie = 'ct_paused_comments_check=0; path=/';\r\n\t\t\t\t\tct_working=false;\r\n\t\t\t\t\tjQuery('#ct_working_message').hide();\r\n\t\t\t\t\tvar new_href = 'edit-comments.php?page=ct_check_spam';\r\n\t\t\t\t\tif(ct_date_from != 0 && ct_date_till != 0)\r\n\t\t\t\t\t\tnew_href+='&from='+ct_date_from+'&till='+ct_date_till;\r\n\t\t\t\t\tlocation.href = new_href;\r\n\t\t\t\t}else if(parseInt(msg.end) == 0){\r\n\t\t\t\t\tct_comments_checked = +ct_comments_checked + +msg.checked;\r\n\t\t\t\t\tct_comments_spam = +ct_comments_spam + +msg.spam;\r\n\t\t\t\t\tct_comments_bad = +ct_comments_bad + +msg.bad;\r\n\t\t\t\t\tct_unchecked = ct_comments_total - ct_comments_checked - ct_comments_bad;\r\n\t\t\t\t\tvar status_string = String(ctCommentsCheck.ct_status_string);\r\n\t\t\t\t\tvar status_string = status_string.printf(ct_comments_total, ct_comments_checked, ct_comments_spam, ct_comments_bad);\r\n\t\t\t\t\tif(parseInt(ct_comments_spam) > 0)\r\n\t\t\t\t\t\tstatus_string += ctCommentsCheck.ct_status_string_warning;\r\n\t\t\t\t\tjQuery('#ct_checking_status').html(status_string);\r\n\t\t\t\t\tjQuery('#ct_error_message').hide();\r\n\t\t\t\t\t// If DB woks not properly\r\n\t\t\t\t\tif(+ct_comments_total < ct_comments_checked + ct_comments_bad){\r\n\t\t\t\t\t\tdocument.cookie = 'ct_comments_start_check=1; path=/';\r\n\t\t\t\t\t\tdocument.cookie = 'ct_comments_safe_check=1; path=/';\r\n\t\t\t\t\t\tlocation.href = 'edit-comments.php?page=ct_check_spam';\r\n\t\t\t\t\t}\r\n\t\t\t\t\tct_send_comments();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n error: function(jqXHR, textStatus, errorThrown) {\r\n\t\t\tjQuery('#ct_error_message').show();\r\n\t\t\tjQuery('#cleantalk_ajax_error').html(textStatus);\r\n\t\t\tjQuery('#cleantalk_js_func').html('Check comments');\r\n\t\t\tsetTimeout(ct_send_comments(), 3000); \r\n },\r\n timeout: 25000\r\n\t});\r\n}\r\nfunction ct_show_info(){\r\n\t\r\n\tif(ct_working){\r\n\t\t\r\n\t\tif(ct_cooling_down_flag == true){\r\n\t\t\tjQuery('#ct_cooling_notice').html('Waiting for API to cool down. (About a minute)');\r\n\t\t\tjQuery('#ct_cooling_notice').show();\r\n\t\t\treturn;\t\t\t\r\n\t\t}else{\r\n\t\t\tjQuery('#ct_cooling_notice').hide();\r\n\t\t}\t\r\n\t\t\r\n\t\tsetTimeout(ct_show_info, 3000);\r\n\t\t\r\n\t\tif(!ct_comments_total){\r\n\t\t\t\r\n\t\t\tvar data = {\r\n\t\t\t\t'action': 'ajax_info_comments',\r\n\t\t\t\t'security': ct_ajax_nonce\r\n\t\t\t};\r\n\t\t\t\r\n\t\t\tif(ct_date_from && ct_date_till){\r\n\t\t\t\tdata['from'] = ct_date_from;\r\n\t\t\t\tdata['till'] = ct_date_till;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tjQuery.ajax({\r\n\t\t\t\ttype: \"POST\",\r\n\t\t\t\turl: ajaxurl,\r\n\t\t\t\tdata: data,\r\n\t\t\t\tsuccess: function(msg){\r\n\t\t\t\t\tmsg = jQuery.parseJSON(msg);\r\n\t\t\t\t\tjQuery('#ct_checking_status').html(msg.message);\r\n\t\t\t\t\tct_comments_total = msg.total;\r\n\t\t\t\t\tct_comments_spam = msg.spam;\r\n\t\t\t\t\tct_comments_checked = msg.checked;\r\n\t\t\t\t\tct_comments_bad = msg.bad;\r\n\t\t\t\t},\r\n\t\t\t\terror: function(jqXHR, textStatus, errorThrown) {\r\n\t\t\t\t\tjQuery('#ct_error_message').show();\r\n\t\t\t\t\tjQuery('#cleantalk_ajax_error').html(textStatus);\r\n\t\t\t\t\tjQuery('#cleantalk_js_func').html('Check comments');\r\n\t\t\t\t\tsetTimeout(ct_show_info(), 3000); \r\n\t\t\t\t},\r\n\t\t\t\ttimeout: 15000\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}\r\nfunction ct_insert_comments(delete_comments){\r\n\r\n delete_comments = delete_comments || null;\r\n\r\n\tvar data = {\r\n\t\t'action': 'ajax_insert_comments',\r\n\t\t'security': ct_ajax_nonce\r\n\t};\r\n\t\r\n\tif(delete_comments)\r\n\t\tdata['delete'] = true;\r\n\t\r\n\tjQuery.ajax({\r\n\t\ttype: \"POST\",\r\n\t\turl: ajaxurl,\r\n\t\tdata: data,\r\n\t\tsuccess: function(msg){\r\n\t\t\tif(delete_comments)\r\n\t\t\t\talert(ctCommentsCheck.ct_comments_deleted + ' ' + msg + ' ' + ctCommentsCheck.ct_comments_added_after);\r\n\t\t\telse\r\n\t\t\t\talert(ctCommentsCheck.ct_comments_added + ' ' + msg + ' ' + ctCommentsCheck.ct_comments_added_after);\r\n\t\t}\r\n\t});\r\n}\r\nfunction ct_delete_all(){\r\n\t\r\n\tvar data = {\r\n\t\t'action': 'ajax_delete_all',\r\n\t\t'security': ct_ajax_nonce\r\n\t};\r\n\t\r\n\tjQuery.ajax({\r\n\t\ttype: \"POST\",\r\n\t\turl: ajaxurl,\r\n\t\tdata: data,\r\n\t\tsuccess: function(msg){\r\n\t\t\tif(msg>0){\r\n\t\t\t\tjQuery('#cleantalk_comments_left').html(msg);\r\n\t\t\t\tct_delete_all();\r\n\t\t\t}else{\r\n\t\t\t\tlocation.href='edit-comments.php?page=ct_check_spam';\r\n\t\t\t}\r\n\t\t},\t\t\t\r\n\t\terror: function(jqXHR, textStatus, errorThrown) {\r\n\t\t\tjQuery('#ct_error_message').show();\r\n\t\t\tjQuery('#cleantalk_ajax_error').html(textStatus);\r\n\t\t\tjQuery('#cleantalk_js_func').html('Check comments');\r\n\t\t\tsetTimeout(ct_delete_all(), 3000); \r\n\t\t},\r\n\t\ttimeout: 25000\r\n\t});\r\n}\r\nfunction ct_delete_checked(){\r\n\t\r\n\tids=Array();\r\n\tvar cnt=0;\r\n\tjQuery('input[id^=cb-select-][id!=cb-select-all-1]').each(function(){\r\n\t\tif(jQuery(this).prop('checked')){\r\n\t\t\tids[cnt]=jQuery(this).attr('id').substring(10);\r\n\t\t\tcnt++;\r\n\t\t}\r\n\t});\r\n\tvar data = {\r\n\t\t'action': 'ajax_delete_checked',\r\n\t\t'security': ct_ajax_nonce,\r\n\t\t'ids':ids\r\n\t};\r\n\t\r\n\tjQuery.ajax({\r\n\t\ttype: \"POST\",\r\n\t\turl: ajaxurl,\r\n\t\tdata: data,\r\n\t\tsuccess: function(msg){\r\n\t\t\tlocation.href='edit-comments.php?page=ct_check_spam';\r\n\t\t},\r\n\t\terror: function(jqXHR, textStatus, errorThrown) {\r\n\t\t\tjQuery('#ct_error_message').show();\r\n\t\t\tjQuery('#cleantalk_ajax_error').html(textStatus);\r\n\t\t\tjQuery('#cleantalk_js_func').html('Check comments');\r\n\t\t\tsetTimeout(ct_delete_checked(), 3000); \r\n\t\t},\r\n\t\ttimeout: 15000\r\n\t});\r\n}\r\n\r\n// Function to toggle dependences\r\nfunction ct_toggle_depended(obj, secondary){\r\n\r\n secondary = secondary || null;\r\n\r\n\tvar depended = jQuery(obj.data('depended')),\r\n\t\tstate = obj.data('state');\r\n\t\t\r\n\tif(!state && !secondary){\r\n\t\tobj.data('state', true);\r\n\t\tdepended.removeProp('disabled');\r\n\t}else{\r\n\t\tobj.data('state', false);\r\n\t\tdepended.prop('disabled', true);\r\n\t\tdepended.removeProp('checked');\r\n\t\tif(depended.data('depended'))\r\n\t\t\tct_toggle_depended(depended, true);\r\n\t}\r\n}\r\n\r\njQuery(document).ready(function(){\r\n\t\r\n\t// Setting dependences\r\n\t// jQuery('#ct_accurate_check') .data({'depended': '#ct_allow_date_range', 'state': false});\r\n\tjQuery('#ct_allow_date_range').data({'depended': '.ct_date', 'state': false});\r\n\t\r\n\t// Prev check parameters\r\n\tif(ct_prev_accurate){\r\n\t\tjQuery(\"#ct_accurate_check\").prop('checked', true);\r\n\t}\r\n\tif(ct_prev_from){\r\n\t\tjQuery(\"#ct_allow_date_range\").prop('checked', true).data('state', true);\r\n\t\tjQuery(\"#ct_date_range_from\").removeProp('disabled').val(ct_prev_from);\r\n\t\tjQuery(\"#ct_date_range_till\").removeProp('disabled').val(ct_prev_till);\r\n\t}\r\n\t\r\n\t// Toggle dependences\r\n\tjQuery(\"#ct_allow_date_range, #ct_accurate_check\").on('change', function(){\r\n\t\tct_toggle_depended(jQuery(this));\r\n\t});\r\n\t\t\t\r\n\tvar dates = jQuery('#ct_date_range_from, #ct_date_range_till').datepicker(\r\n\t\t{\r\n\t\t\tdateFormat: 'M d yy',\r\n\t\t\tmaxDate:\"+0D\",\r\n\t\t\tchangeMonth:true,\r\n\t\t\tchangeYear:true,\r\n\t\t\tshowAnim: 'slideDown',\r\n\t\t\tonSelect: function(selectedDate){\r\n\t\t\tvar option = this.id == \"ct_date_range_from\" ? \"minDate\" : \"maxDate\",\r\n\t\t\t\tinstance = jQuery( this ).data( \"datepicker\" ),\r\n\t\t\t\tdate = jQuery.datepicker.parseDate(\r\n\t\t\t\t\tinstance.settings.dateFormat || jQuery.datepicker._defaults.dateFormat,\r\n\t\t\t\t\tselectedDate, instance.settings);\r\n\t\t\t\tdates.not(this).datepicker(\"option\", option, date);\r\n\t\t\t}\r\n\t\t}\r\n\t);\r\n\t\r\n\tfunction ct_start_check(continue_check){\r\n\r\n continue_check = continue_check || null;\r\n\r\n\t\tif(jQuery('#ct_allow_date_range').is(':checked')){\r\n\t\t\t\r\n\t\t\tct_date_from = jQuery('#ct_date_range_from').val(),\r\n\t\t\tct_date_till = jQuery('#ct_date_range_till').val();\r\n\t\t\t\t\t\t\r\n\t\t\tif(!(ct_date_from != '' && ct_date_till != '')){\r\n\t\t\t\talert('Please, specify a date range.');\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(jQuery('#ct_accurate_check').is(':checked')){\r\n\t\t\tct_accurate_check = true;\r\n\t\t}\r\n\t\t\r\n\t\tjQuery('.ct_to_hide').hide();\r\n\t\tjQuery('#ct_working_message').show();\r\n\t\tjQuery('#ct_preloader').show();\r\n\t\tjQuery('#ct_pause').show();\r\n\r\n\t\tct_working=true;\r\n\t\t\r\n\t\tif(continue_check){\r\n\t\t\tct_show_info();\r\n\t\t\tct_send_comments();\r\n\t\t}else\r\n\t\t\tct_clear_comments();\r\n\t\t\r\n\t}\r\n\t\r\n\t// Check comments\r\n\tjQuery(\"#ct_check_spam_button\").click(function(){\r\n\t\tdocument.cookie = 'ct_paused_comments_check=0; path=/';\r\n\t\tct_start_check(false);\r\n\t});\r\n\tjQuery(\"#ct_proceed_check_button\").click(function(){\r\n\t\tct_start_check(true);\r\n\t});\r\n\r\n\t// Pause the check\r\n\tjQuery('#ct_pause').on('click', function(){\r\n\t\tct_pause = true;\r\n\t\tvar ct_check = {\r\n\t\t\t'accurate': ct_accurate_check,\r\n\t\t\t'from' : ct_date_from,\r\n\t\t\t'till' : ct_date_till\r\n\t\t};\r\n\t\tdocument.cookie = 'ct_paused_comments_check=' + JSON.stringify(ct_check) + '; path=/';\r\n\t});\r\n\t\r\n\tjQuery(\"#ct_insert_comments\").click(function(){\r\n\t\tct_insert_comments();\r\n\t});\r\n\t\r\n\tjQuery(\"#ct_delete_comments\").click(function(){\r\n\t\tct_insert_comments(true);\r\n\t});\r\n\t\r\n\t// Delete all spam comments\r\n\tjQuery(\"#ct_delete_all\").click(function(){\r\n\t\t\r\n\t\tif (!confirm(ctCommentsCheck.ct_confirm_deletion_all))\r\n\t\t\treturn false;\r\n\t\t\r\n\t\tjQuery('.ct_to_hide').hide();\r\n\t\tjQuery('#ct_checking_status').hide();\r\n\t\tjQuery('#ct_search_info').hide();\r\n\t\tjQuery('#ct_preloader').show();\r\n\t\tjQuery('#ct_deleting_message').show();\r\n\t\tjQuery('#ct_stop_deletion').show();\r\n\t\tjQuery(\"html, body\").animate({ scrollTop: 0 }, \"slow\");\r\n\t\tct_delete_all();\r\n\t});\r\n\tjQuery(\"#ct_delete_checked\").click(function(){\r\n\t\tif (!confirm(ctCommentsCheck.ct_confirm_deletion_checked))\r\n\t\t\treturn false;\r\n\t\tct_delete_checked();\r\n\t});\r\n\t\r\n\tjQuery(\"#ct_stop_deletion\").click(function(){\r\n\t\tlocation.href='edit-comments.php?page=ct_check_spam';\r\n\t});\r\n\t\r\n\tjQuery(\".cleantalk_delete_button\").click(function(){\r\n\t\tid = jQuery(this).attr(\"data-id\");\r\n\t\tids=Array();\r\n\t\tids[0]=id;\r\n\t\tvar data = {\r\n\t\t\t'action': 'ajax_delete_checked',\r\n\t\t\t'security': ct_ajax_nonce,\r\n\t\t\t'ids':ids\r\n\t\t};\r\n\t\tjQuery.ajax({\r\n\t\t\ttype: \"POST\",\r\n\t\t\turl: ajaxurl,\r\n\t\t\tdata: data,\r\n\t\t\tsuccess: function(msg){\r\n\t\t\t\tct_close_animate=false;\r\n\t\t\t\tjQuery(\"#comment-\"+id).hide();\r\n\t\t\t\tjQuery(\"#comment-\"+id).remove();\r\n\t\t\t\tct_close_animate=true;\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\t\r\n\tjQuery(\".cleantalk_delete_button\").click(function(){\r\n\t\tid = jQuery(this).attr(\"data-id\");\r\n\t\tanimate_comment(0.3, id);\r\n\t});\r\n\t\r\n\t//Show/hide action on mouse over/out\r\n\tjQuery(\".cleantalk_comment\").mouseover(function(){\r\n\t\tid = jQuery(this).attr(\"data-id\");\r\n\t\tjQuery(\"#cleantalk_button_set_\"+id).show();\r\n\t});\r\n\tjQuery(\".cleantalk_comment\").mouseout(function(){\r\n\t\tid = jQuery(this).attr(\"data-id\");\r\n\t\tjQuery(\"#cleantalk_button_set_\"+id).hide();\r\n\t});\r\n\t\r\n\t//Approve button\t\r\n\tjQuery(\".cleantalk_delete_from_list_button\").click(function(){\r\n\t\tvar ct_id = jQuery(this).attr(\"data-id\");\r\n\t\t\r\n\t\t// Approving\r\n\t\tvar data = {\r\n\t\t\t'action': 'ajax_ct_approve_comment',\r\n\t\t\t'security': ct_ajax_nonce,\r\n\t\t\t'id': ct_id\r\n\t\t};\r\n\t\tjQuery.ajax({\r\n\t\t\ttype: \"POST\",\r\n\t\t\turl: ajaxurl,\r\n\t\t\tdata: data,\r\n\t\t\tsuccess: function(msg){\r\n\t\t\t\tjQuery(\"#comment-\"+ct_id).fadeOut('slow', function(){\r\n\t\t\t\t\tjQuery(\"#comment-\"+ct_id).remove();\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t});\r\n\t\t\r\n\t\t// Positive feedback\r\n\t\tvar data = {\r\n\t\t\t'action': 'ct_feedback_comment',\r\n\t\t\t'security': ct_ajax_nonce,\r\n\t\t\t'comment_id': ct_id,\r\n\t\t\t'comment_status': 'approve'\r\n\t\t};\r\n\t\tjQuery.ajax({\r\n\t\t\ttype: \"POST\",\r\n\t\t\turl: ajaxurl,\r\n\t\t\tdata: data,\r\n\t\t\tsuccess: function(msg){\r\n\t\t\t\tif(msg == 1){\r\n\t\t\t\t\t// Success\r\n\t\t\t\t}\r\n\t\t\t\tif(msg == 0){\r\n\t\t\t\t\t// Error occurred\r\n\t\t\t\t}\r\n\t\t\t\tif(msg == 'no_hash'){\r\n\t\t\t\t\t// No hash\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\terror: function(jqXHR, textStatus, errorThrown) {\r\n\t\t\t\t\r\n\t\t\t},\r\n\t\t\ttimeout: 5000\r\n\t\t});\r\n\t});\r\n\tif(ctCommentsCheck.start === '1'){\r\n\t\tdocument.cookie = 'ct_comments_start_check=0; expires=' + new Date(0).toUTCString() + '; path=/';\r\n\t\tjQuery('#ct_check_spam_button').click();\t\r\n\t}\r\n});"]}
|
1 |
+
{"version":3,"sources":["cleantalk-comments-checkspam.js"],"names":["ct_working","String","prototype","printf","formatted","this","arg","arguments","before_formatted","substring","indexOf","after_formatted","length","ct_new_check","ct_cooling_down_flag","ct_close_animate","ct_accurate_check","ct_pause","ct_prev_accurate","ctCommentsCheck","ct_prev_from","ct_prev_till","ct_cool_down_time","ct_requests_counter","ct_max_requests","ct_ajax_nonce","ct_comments_total","ct_comments_checked","ct_comments_spam","ct_comments_bad","ct_unchecked","ct_date_from","ct_date_till","animate_comment","to","id","jQuery","fadeTo","ct_clear_comments","from","till","is","val","data","action","security","ajax","type","url","ajaxurl","success","msg","ct_show_info","ct_send_comments","ct_cooling_down_toggle","setTimeout","new_check","unchecked","parseJSON","parseInt","error","confirm","error_message","new_href","location","href","end","document","cookie","hide","checked","spam","bad","status_string","ct_status_string","ct_status_string_warning","html","jqXHR","textStatus","errorThrown","show","timeout","message","total","ct_toggle_depended","obj","secondary","depended","prop","removeProp","ready","state","on","datepicker","setDefaults","regional","dates","dateFormat","maxDate","changeMonth","changeYear","showAnim","onSelect","selectedDate","option","instance","date","parseDate","settings","_defaults","not","ct_start_check","continue_check","alert","click","ct_check","accurate","JSON","stringify","start","Date","toUTCString"],"mappings":"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","file":"cleantalk-comments-checkspam.min.js","sourcesContent":["// Printf for JS\r\nString.prototype.printf = function(){\r\n var formatted = this;\r\n for( var arg in arguments ) {\r\n\t\tvar before_formatted = formatted.substring(0, formatted.indexOf(\"%s\", 0));\r\n\t\tvar after_formatted = formatted.substring(formatted.indexOf(\"%s\", 0)+2, formatted.length);\r\n\t\tformatted = before_formatted + arguments[arg] + after_formatted;\r\n }\r\n return formatted;\r\n};\r\n\r\n// Flags\r\nvar ct_working = false,\r\n\tct_new_check = true,\r\n\tct_cooling_down_flag = false,\r\n\tct_close_animate = true,\r\n\tct_accurate_check = false,\r\n\tct_pause = false,\r\n\tct_prev_accurate = ctCommentsCheck.ct_prev_accurate,\r\n\tct_prev_from = ctCommentsCheck.ct_prev_from,\t\r\n\tct_prev_till = ctCommentsCheck.ct_prev_till;\r\n// Settings\r\nvar ct_cool_down_time = 90000,\r\n\tct_requests_counter = 0,\r\n\tct_max_requests = 60;\r\n// Variables\r\nvar ct_ajax_nonce = ctCommentsCheck.ct_ajax_nonce,\r\n\tct_comments_total = 0,\r\n\tct_comments_checked = 0,\r\n\tct_comments_spam = 0,\r\n\tct_comments_bad = 0,\r\n\tct_unchecked = 'unset',\r\n\tct_date_from = 0,\r\n\tct_date_till = 0;\r\n\r\nfunction animate_comment(to,id){\r\n\tif(ct_close_animate){\r\n\t\tif(to==0.3){\r\n\t\t\tjQuery('#comment-'+id).fadeTo(200,to,function(){\r\n\t\t\t\tanimate_comment(1,id)\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tjQuery('#comment-'+id).fadeTo(200,to,function(){\r\n\t\t\t\tanimate_comment(0.3,id)\r\n\t\t\t});\r\n\t\t}\r\n\t}else{\r\n\t\tct_close_animate=true;\r\n\t}\r\n}\r\n\r\nfunction ct_clear_comments(){\r\n\r\n\tvar from = 0, till = 0;\r\n\tif(jQuery('#ct_allow_date_range').is(':checked')) {\r\n\t\tfrom = jQuery('#ct_date_range_from').val();\r\n\t\ttill = jQuery('#ct_date_range_till').val();\r\n\t}\r\n\tvar data = {\r\n\t\t'action' : 'ajax_clear_comments',\r\n\t\t'security' : ct_ajax_nonce,\r\n\t\t'from' : from,\r\n\t\t'till' : till\r\n\t};\r\n\r\n\tjQuery.ajax({\r\n\t\ttype: \"POST\",\r\n\t\turl: ajaxurl,\r\n\t\tdata: data,\r\n\t\tsuccess: function(msg){\r\n\t\t\tct_show_info();\r\n\t\t\tct_send_comments();\r\n\t\t}\r\n\t});\r\n}\r\n\r\n//Continues the check after cooldown time\r\n//Called by ct_send_users();\r\nfunction ct_cooling_down_toggle(){\r\n\tct_cooling_down_flag = false;\r\n\tct_send_comments();\r\n\tct_show_info();\r\n}\r\n\r\nfunction ct_send_comments(){\r\n\t\r\n\tif(ct_cooling_down_flag === true)\r\n\t\treturn;\r\n\t\r\n\tif(ct_requests_counter >= ct_max_requests){\r\n\t\tsetTimeout(ct_cooling_down_toggle, ct_cool_down_time);\r\n\t\tct_requests_counter = 0;\r\n\t\tct_cooling_down_flag = true;\r\n\t\treturn;\r\n\t}else{\r\n\t\tct_requests_counter++;\r\n\t}\r\n\t\r\n\tvar data = {\r\n\t\t'action': 'ajax_check_comments',\r\n\t\t'security': ct_ajax_nonce,\r\n\t\t'new_check': ct_new_check,\r\n\t\t'unchecked': ct_unchecked\r\n\t};\r\n\t\r\n\tif(ct_accurate_check)\r\n\t\tdata['accurate_check'] = true;\r\n\t\r\n\tif(ct_date_from && ct_date_till){\r\n\t\tdata['from'] = ct_date_from;\r\n\t\tdata['till'] = ct_date_till;\r\n\t}\r\n\t\r\n\tjQuery.ajax({\r\n\t\ttype: \"POST\",\r\n\t\turl: ajaxurl,\r\n\t\tdata: data,\r\n\t\tsuccess: function(msg){\r\n\t\t\t\r\n\t\t\tmsg = jQuery.parseJSON(msg);\r\n\t\t\t\r\n\t\t\tif(parseInt(msg.error)){\r\n\t\t\t\tct_working=false;\r\n\t\t\t\tif(!confirm(msg.error_message+\". Do you want to proceed?\")){\r\n\t\t\t\t\tvar new_href = 'edit-comments.php?page=ct_check_spam';\r\n\t\t\t\t\tif(ct_date_from != 0 && ct_date_till != 0)\r\n\t\t\t\t\t\tnew_href+='&from='+ct_date_from+'&till='+ct_date_till;\r\n\t\t\t\t\tlocation.href = new_href;\r\n\t\t\t\t}else\r\n\t\t\t\t\tct_send_comments();\r\n\t\t\t}else{\r\n\t\t\t\tct_new_check = false;\r\n\t\t\t\tif(parseInt(msg.end) == 1 || ct_pause === true){\r\n\t\t\t\t\tif(parseInt(msg.end) == 1)\r\n\t\t\t\t\t\tdocument.cookie = 'ct_paused_comments_check=0; path=/';\r\n\t\t\t\t\tct_working=false;\r\n\t\t\t\t\tjQuery('#ct_working_message').hide();\r\n\t\t\t\t\tvar new_href = 'edit-comments.php?page=ct_check_spam';\r\n\t\t\t\t\tif(ct_date_from != 0 && ct_date_till != 0)\r\n\t\t\t\t\t\tnew_href+='&from='+ct_date_from+'&till='+ct_date_till;\r\n\t\t\t\t\tlocation.href = new_href;\r\n\t\t\t\t}else if(parseInt(msg.end) == 0){\r\n\t\t\t\t\tct_comments_checked += msg.checked;\r\n\t\t\t\t\tct_comments_spam += msg.spam;\r\n\t\t\t\t\tct_comments_bad += msg.bad;\r\n\t\t\t\t\tct_unchecked = ct_comments_total - ct_comments_checked - ct_comments_bad;\r\n\t\t\t\t\tvar status_string = String(ctCommentsCheck.ct_status_string);\r\n\t\t\t\t\tvar status_string = status_string.printf(ct_comments_total, ct_comments_checked, ct_comments_spam, ct_comments_bad);\r\n\t\t\t\t\tif(parseInt(ct_comments_spam) > 0)\r\n\t\t\t\t\t\tstatus_string += ctCommentsCheck.ct_status_string_warning;\r\n\t\t\t\t\tjQuery('#ct_checking_status').html(status_string);\r\n\t\t\t\t\tjQuery('#ct_error_message').hide();\r\n\t\t\t\t\t// If DB woks not properly\r\n\t\t\t\t\tif(+ct_comments_total < ct_comments_checked + ct_comments_bad){\r\n\t\t\t\t\t\tdocument.cookie = 'ct_comments_start_check=1; path=/';\r\n\t\t\t\t\t\tdocument.cookie = 'ct_comments_safe_check=1; path=/';\r\n\t\t\t\t\t\tlocation.href = 'edit-comments.php?page=ct_check_spam';\r\n\t\t\t\t\t}\r\n\t\t\t\t\tct_send_comments();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n error: function(jqXHR, textStatus, errorThrown) {\r\n\t\t\tjQuery('#ct_error_message').show();\r\n\t\t\tjQuery('#cleantalk_ajax_error').html(textStatus);\r\n\t\t\tjQuery('#cleantalk_js_func').html('Check comments');\r\n\t\t\tsetTimeout(ct_send_comments(), 3000); \r\n },\r\n timeout: 25000\r\n\t});\r\n}\r\nfunction ct_show_info(){\r\n\t\r\n\tif(ct_working){\r\n\t\t\r\n\t\tif(ct_cooling_down_flag == true){\r\n\t\t\tjQuery('#ct_cooling_notice').html('Waiting for API to cool down. (About a minute)');\r\n\t\t\tjQuery('#ct_cooling_notice').show();\r\n\t\t\treturn;\t\t\t\r\n\t\t}else{\r\n\t\t\tjQuery('#ct_cooling_notice').hide();\r\n\t\t}\t\r\n\t\t\r\n\t\tsetTimeout(ct_show_info, 3000);\r\n\t\t\r\n\t\tif(!ct_comments_total){\r\n\t\t\t\r\n\t\t\tvar data = {\r\n\t\t\t\t'action': 'ajax_info_comments',\r\n\t\t\t\t'security': ct_ajax_nonce\r\n\t\t\t};\r\n\t\t\t\r\n\t\t\tif(ct_date_from && ct_date_till){\r\n\t\t\t\tdata['from'] = ct_date_from;\r\n\t\t\t\tdata['till'] = ct_date_till;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tjQuery.ajax({\r\n\t\t\t\ttype: \"POST\",\r\n\t\t\t\turl: ajaxurl,\r\n\t\t\t\tdata: data,\r\n\t\t\t\tsuccess: function(msg){\r\n\t\t\t\t\tmsg = jQuery.parseJSON(msg);\r\n\t\t\t\t\tjQuery('#ct_checking_status').html(msg.message);\r\n\t\t\t\t\tct_comments_total = msg.total;\r\n\t\t\t\t\tct_comments_spam = msg.spam;\r\n\t\t\t\t\tct_comments_checked = msg.checked;\r\n\t\t\t\t\tct_comments_bad = msg.bad;\r\n\t\t\t\t},\r\n\t\t\t\terror: function(jqXHR, textStatus, errorThrown) {\r\n\t\t\t\t\tjQuery('#ct_error_message').show();\r\n\t\t\t\t\tjQuery('#cleantalk_ajax_error').html(textStatus);\r\n\t\t\t\t\tjQuery('#cleantalk_js_func').html('Check comments');\r\n\t\t\t\t\tsetTimeout(ct_show_info(), 3000); \r\n\t\t\t\t},\r\n\t\t\t\ttimeout: 15000\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}\r\n\r\n// Function to toggle dependences\r\nfunction ct_toggle_depended(obj, secondary){\r\n\r\n secondary = secondary || null;\r\n\r\n\tvar depended = jQuery(obj.data('depended')),\r\n\t\tstate = obj.data('state');\r\n\t\t\r\n\tif(!state && !secondary){\r\n\t\tobj.data('state', true);\r\n\t\tdepended.removeProp('disabled');\r\n\t}else{\r\n\t\tobj.data('state', false);\r\n\t\tdepended.prop('disabled', true);\r\n\t\tdepended.removeProp('checked');\r\n\t\tif(depended.data('depended'))\r\n\t\t\tct_toggle_depended(depended, true);\r\n\t}\r\n}\r\n\r\njQuery(document).ready(function(){\r\n\r\n\t// Setting dependences\r\n\t// jQuery('#ct_accurate_check') .data({'depended': '#ct_allow_date_range', 'state': false});\r\n\tjQuery('#ct_allow_date_range').data({'depended': '.ct_date', 'state': false});\r\n\t\r\n\t// Prev check parameters\r\n\tif(ct_prev_accurate){\r\n\t\tjQuery(\"#ct_accurate_check\").prop('checked', true);\r\n\t}\r\n\tif(ct_prev_from){\r\n\t\tjQuery(\"#ct_allow_date_range\").prop('checked', true).data('state', true);\r\n\t\tjQuery(\"#ct_date_range_from\").removeProp('disabled').val(ct_prev_from);\r\n\t\tjQuery(\"#ct_date_range_till\").removeProp('disabled').val(ct_prev_till);\r\n\t}\r\n\t\r\n\t// Toggle dependences\r\n\tjQuery(\"#ct_allow_date_range, #ct_accurate_check\").on('change', function(){\r\n\t\tct_toggle_depended(jQuery(this));\r\n\t});\r\n\r\n jQuery.datepicker.setDefaults(jQuery.datepicker.regional['en']);\r\n\tvar dates = jQuery('#ct_date_range_from, #ct_date_range_till').datepicker(\r\n\t\t{\r\n\t\t\tdateFormat: 'M d yy',\r\n\t\t\tmaxDate:\"+0D\",\r\n\t\t\tchangeMonth:true,\r\n\t\t\tchangeYear:true,\r\n\t\t\tshowAnim: 'slideDown',\r\n\t\t\tonSelect: function(selectedDate){\r\n\t\t\tvar option = this.id == \"ct_date_range_from\" ? \"minDate\" : \"maxDate\",\r\n\t\t\t\tinstance = jQuery( this ).data( \"datepicker\" ),\r\n\t\t\t\tdate = jQuery.datepicker.parseDate(\r\n\t\t\t\t\tinstance.settings.dateFormat || jQuery.datepicker._defaults.dateFormat,\r\n\t\t\t\t\tselectedDate, instance.settings);\r\n\t\t\t\tdates.not(this).datepicker(\"option\", option, date);\r\n\t\t\t}\r\n\t\t}\r\n\t);\r\n\t\r\n\tfunction ct_start_check(continue_check){\r\n\r\n continue_check = continue_check || null;\r\n\r\n\t\tif(jQuery('#ct_allow_date_range').is(':checked')){\r\n\t\t\t\r\n\t\t\tct_date_from = jQuery('#ct_date_range_from').val(),\r\n\t\t\tct_date_till = jQuery('#ct_date_range_till').val();\r\n\t\t\t\t\t\t\r\n\t\t\tif(!(ct_date_from != '' && ct_date_till != '')){\r\n\t\t\t\talert('Please, specify a date range.');\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(jQuery('#ct_accurate_check').is(':checked')){\r\n\t\t\tct_accurate_check = true;\r\n\t\t}\r\n\t\t\r\n\t\tjQuery('.ct_to_hide').hide();\r\n\t\tjQuery('#ct_working_message').show();\r\n\t\tjQuery('#ct_preloader').show();\r\n\t\tjQuery('#ct_pause').show();\r\n\r\n\t\tct_working=true;\r\n\t\t\r\n\t\tif(continue_check){\r\n\t\t\tct_show_info();\r\n\t\t\tct_send_comments();\r\n\t\t}else\r\n\t\t\tct_clear_comments();\r\n\t\t\r\n\t}\r\n\t\r\n\t// Check comments\r\n\tjQuery(\"#ct_check_spam_button\").click(function(){\r\n\t\tdocument.cookie = 'ct_paused_comments_check=0; path=/';\r\n\t\tct_start_check(false);\r\n\t});\r\n\tjQuery(\"#ct_proceed_check_button\").click(function(){\r\n\t\tct_start_check(true);\r\n\t});\r\n\r\n\t// Pause the check\r\n\tjQuery('#ct_pause').on('click', function(){\r\n\t\tct_pause = true;\r\n\t\tvar ct_check = {\r\n\t\t\t'accurate': ct_accurate_check,\r\n\t\t\t'from' : ct_date_from,\r\n\t\t\t'till' : ct_date_till\r\n\t\t};\r\n\t\tdocument.cookie = 'ct_paused_comments_check=' + JSON.stringify(ct_check) + '; path=/';\r\n\t});\r\n\r\n\r\n\tif(ctCommentsCheck.start === '1'){\r\n\t\tdocument.cookie = 'ct_comments_start_check=0; expires=' + new Date(0).toUTCString() + '; path=/';\r\n\t\tjQuery('#ct_check_spam_button').click();\t\r\n\t}\r\n\r\n});"]}
|
js/cleantalk-users-checkspam.min.js
CHANGED
@@ -1,2 +1,2 @@
|
|
1 |
-
String.prototype.printf=function(){var e=this;for(var t in arguments){var c=e.substring(0,e.indexOf("%s",0)),_=e.substring(e.indexOf("%s",0)+2,e.length);e=c+arguments[t]+_}return e};var ct_working=!(document.cookie="ct_check_users__amount=100; path=/"),ct_new_check=!0,ct_cooling_down_flag=!1,ct_close_animate=!0,ct_accurate_check=!1,ct_pause=!1,ct_prev_accurate=ctUsersCheck.ct_prev_accurate,ct_prev_from=ctUsersCheck.ct_prev_from,ct_prev_till=ctUsersCheck.ct_prev_till,ct_cool_down_time=9e4,ct_requests_counter=0,ct_max_requests=60,ct_ajax_nonce=ctUsersCheck.ct_ajax_nonce,ct_users_total=0,ct_users_checked=0,ct_users_spam=0,ct_users_bad=0,ct_unchecked="unset",ct_date_from=0,ct_date_till=0;function apbct_cookie__get(r,a){var s={};return"string"==typeof(r=r||null)&&(r=r.split()),"none"==(a=a||["apbct_","ct_"])&&(a=null),"string"==typeof a&&(a=a.split()),document.cookie.split(";").forEach(function(e,t,c){var _=e.trim().split("=");r&&r.forEach(function(e,t,c){_[0]===e&&(s[_[0]]=_[1])}),a&&a.forEach(function(e,t,c){0===_[0].indexOf(e)&&(s[_[0]]=_[1])})}),s}function apbct_get_cookie(e){var t=apbct_cookie__get(e,e);return"object"==typeof t&&void 0!==t[e]?t[e]:null}function animate_comment(e,t){ct_close_animate?.3==e?jQuery("#comment-"+t).fadeTo(200,e,function(){animate_comment(1,t)}):jQuery("#comment-"+t).fadeTo(200,e,function(){animate_comment(.3,t)}):ct_close_animate=!0}function ct_clear_users(){var e=0,t=0;jQuery("#ct_allow_date_range").is(":checked")&&(e=jQuery("#ct_date_range_from").val(),t=jQuery("#ct_date_range_till").val());var c={action:"ajax_clear_users",security:ct_ajax_nonce,from:e,till:t};jQuery.ajax({type:"POST",url:ajaxurl,data:c,success:function(e){ct_show_users_info(),ct_send_users()}})}function ct_cooling_down_toggle(){ct_cooling_down_flag=!1,ct_send_users(),ct_show_users_info()}function ct_send_users(){if(1!=ct_cooling_down_flag){if(ct_max_requests<=ct_requests_counter)return setTimeout(ct_cooling_down_toggle,ct_cool_down_time),void(ct_cooling_down_flag=!(ct_requests_counter=0));ct_requests_counter++;var e={action:"ajax_check_users",security:ct_ajax_nonce,new_check:ct_new_check,unchecked:ct_unchecked,amount:apbct_get_cookie("ct_check_users__amount")};ct_accurate_check&&(e.accurate_check=!0),ct_date_from&&ct_date_till&&(e.from=ct_date_from,e.till=ct_date_till),jQuery.ajax({type:"POST",url:ajaxurl,data:e,success:function(e){if(e=jQuery.parseJSON(e),parseInt(e.error))if(ct_working=!1,confirm(e.error_message+". Do you want to proceed?"))ct_send_users();else{var t="users.php?page=ct_check_users";0!=ct_date_from&&0!=ct_date_till&&(t+="&from="+ct_date_from+"&till="+ct_date_till),location.href=t}else if(ct_new_check=!1,1==parseInt(e.end)||1==ct_pause){1==parseInt(e.end)&&(document.cookie="ct_paused_users_check=0; path=/"),ct_working=!1,jQuery("#ct_working_message").hide();t="users.php?page=ct_check_users&ct_worked=1";0!=ct_date_from&&0!=ct_date_till&&(t+="&from="+ct_date_from+"&till="+ct_date_till),location.href=t}else if(0==parseInt(e.end)){ct_users_checked+=e.checked,ct_users_spam+=e.spam,ct_users_bad+=e.bad,ct_unchecked=ct_users_total-ct_users_checked-ct_users_bad;var c=(c=String(ctUsersCheck.ct_status_string)).printf(ct_users_total,ct_users_checked,ct_users_spam,ct_users_bad);0<parseInt(ct_users_spam)&&(c+=ctUsersCheck.ct_status_string_warning),jQuery("#ct_checking_status").html(c),jQuery("#ct_error_message").hide(),ct_send_users()}},error:function(e,t,c){20<check_amount&&(check_amount-=20,document.cookie="ct_check_users__amount="+check_amount+"; path=/"),jQuery("#ct_error_message").show(),jQuery("#cleantalk_ajax_error").html(t),jQuery("#cleantalk_js_func").html("Check users"),setTimeout(ct_send_users(),3e3)},timeout:25e3})}}function ct_show_users_info(){if(ct_working){if(1==ct_cooling_down_flag)return jQuery("#ct_cooling_notice").html("Waiting for API to cool down. (About a minute)"),void jQuery("#ct_cooling_notice").show();if(jQuery("#ct_cooling_notice").hide(),setTimeout(ct_show_users_info,3e3),!ct_users_total){var e={action:"ajax_info_users",security:ct_ajax_nonce};ct_date_from&&ct_date_till&&(e.from=ct_date_from,e.till=ct_date_till),jQuery.ajax({type:"POST",url:ajaxurl,data:e,success:function(e){e=jQuery.parseJSON(e),jQuery("#ct_checking_status").html(e.message),ct_users_total=e.total,ct_users_spam=e.spam,ct_users_checked=e.checked,ct_users_bad=e.bad},error:function(e,t,c){jQuery("#ct_error_message").show(),jQuery("#cleantalk_ajax_error").html(t),jQuery("#cleantalk_js_func").html("Show users"),setTimeout(ct_show_users_info(),3e3)},timeout:15e3})}}}function ct_insert_users(t){var e={action:"ajax_insert_users",security:ct_ajax_nonce};(t=t||null)&&(e.delete=!0),jQuery.ajax({type:"POST",url:ajaxurl,data:e,success:function(e){t?alert(ctUsersCheck.ct_deleted+" "+e+" "+ctUsersCheck.ct_iusers):alert(ctUsersCheck.ct_inserted+" "+e+" "+ctUsersCheck.ct_iusers)}})}function ct_delete_all_users(){var e={action:"ajax_delete_all_users",security:ct_ajax_nonce};jQuery.ajax({type:"POST",url:ajaxurl,data:e,success:function(e){0<e?(jQuery("#cleantalk_users_left").html(e),ct_delete_all_users()):location.href="users.php?page=ct_check_users&ct_worked=1"},error:function(e,t,c){jQuery("#ct_error_message").show(),jQuery("#cleantalk_ajax_error").html(t),jQuery("#cleantalk_js_func").html("All users deleteion"),setTimeout(ct_delete_all_users(),3e3)},timeout:25e3})}function ct_delete_checked_users(){ids=Array();var e=0;jQuery("input[id^=cb-select-][id!=cb-select-all-1]").each(function(){jQuery(this).prop("checked")&&(ids[e]=jQuery(this).attr("id").substring(10),e++)});var t={action:"ajax_delete_checked_users",security:ct_ajax_nonce,ids:ids};jQuery.ajax({type:"POST",url:ajaxurl,data:t,success:function(e){location.href="users.php?page=ct_check_users&ct_worked=1"},error:function(e,t,c){jQuery("#ct_error_message").show(),jQuery("#cleantalk_ajax_error").html(t),jQuery("#cleantalk_js_func").html("All users deleteion"),setTimeout(ct_delete_checked_users(),3e3)},timeout:15e3})}function ct_toggle_depended(e,t){t=t||null;var c=jQuery(e.data("depended"));e.data("state")||t?(e.data("state",!1),c.prop("disabled",!0),c.removeProp("checked"),c.data("depended")&&ct_toggle_depended(c,!0)):(e.data("state",!0),c.removeProp("disabled"))}jQuery(document).ready(function(){jQuery("#ct_allow_date_range").data({depended:".ct_date",state:!1}),ct_prev_accurate&&jQuery("#ct_accurate_check").prop("checked",!0),ct_prev_from&&(jQuery("#ct_allow_date_range").prop("checked",!0).data("state",!0),jQuery("#ct_date_range_from").removeProp("disabled").val(ct_prev_from),jQuery("#ct_date_range_till").removeProp("disabled").val(ct_prev_till)),jQuery("#ct_allow_date_range, #ct_accurate_check").on("change",function(){ct_toggle_depended(jQuery(this))});var r=jQuery("#ct_date_range_from, #ct_date_range_till").datepicker({dateFormat:"M d yy",maxDate:"+0D",changeMonth:!0,changeYear:!0,showAnim:"slideDown",onSelect:function(e){var t="ct_date_range_from"==this.id?"minDate":"maxDate",c=jQuery(this).data("datepicker"),_=jQuery.datepicker.parseDate(c.settings.dateFormat||jQuery.datepicker._defaults.dateFormat,e,c.settings);r.not(this).datepicker("option",t,_)}});function e(e){e=e||null,jQuery("#ct_allow_date_range").is(":checked")&&(ct_date_from=jQuery("#ct_date_range_from").val(),ct_date_till=jQuery("#ct_date_range_till").val(),""===ct_date_from||""===ct_date_till)?alert("Please, specify a date range."):(jQuery("#ct_accurate_check").is(":checked")&&(ct_accurate_check=!0),jQuery(".ct_to_hide").hide(),jQuery("#ct_working_message").show(),jQuery("#ct_preloader").show(),jQuery("#ct_pause").show(),ct_working=!0,e?(ct_show_users_info(),ct_send_users()):ct_clear_users())}jQuery("#ct_check_spam_button").click(function(){e(!(document.cookie="ct_paused_users_check=0; path=/"))}),jQuery("#ct_proceed_check_button").click(function(){e(!0)}),jQuery("#ct_pause").on("click",function(){ct_pause=!0;var e={accurate:ct_accurate_check,from:ct_date_from,till:ct_date_till};document.cookie="ct_paused_users_check="+JSON.stringify(e)+"; path=/"}),jQuery("#ct_insert_users").click(function(){ct_insert_users()}),jQuery("#ct_delete_users").click(function(){ct_insert_users(!0)}),jQuery("#ct_delete_all_users").click(function(){if(!confirm(ctUsersCheck.ct_confirm_deletion_all))return!1;jQuery(".ct_to_hide").hide(),jQuery("#ct_checking_status").hide(),jQuery("#ct_search_info").hide(),jQuery("#ct_preloader").show(),jQuery("#ct_deleting_message").show(),jQuery("#ct_stop_deletion").show(),jQuery("html, body").animate({scrollTop:0},"slow"),ct_delete_all_users()}),jQuery("#ct_delete_checked_users").click(function(){if(!confirm(ctUsersCheck.ct_confirm_deletion_checked))return!1;ct_delete_checked_users()}),jQuery("#ct_stop_deletion").click(function(){location.href="users.php?page=ct_check_users"}),jQuery(".cleantalk_delete_user_button").click(function(){id=jQuery(this).attr("data-id"),ids=Array(),ids[0]=id;var e={action:"ajax_delete_checked_users",security:ct_ajax_nonce,ids:ids};jQuery.ajax({type:"POST",url:ajaxurl,data:e,success:function(e){ct_close_animate=!1,jQuery("#comment-"+id).hide(),jQuery("#comment-"+id).remove(),ct_close_animate=!0},timeout:15e3})}),jQuery(".cleantalk_delete_user_button").click(function(){id=jQuery(this).attr("data-id"),animate_comment(.3,id)}),jQuery(".cleantalk_user").mouseover(function(){id=jQuery(this).attr("data-id"),jQuery("#cleantalk_delete_user_"+id).show()}),jQuery(".cleantalk_user").mouseout(function(){id=jQuery(this).attr("data-id"),jQuery("#cleantalk_delete_user_"+id).hide()}),jQuery(".cleantalk_delete_from_list_button").click(function(){ct_id=jQuery(this).attr("data-id");var e={action:"ajax_ct_approve_user",security:ct_ajax_nonce,id:ct_id};jQuery.ajax({type:"POST",url:ajaxurl,data:e,success:function(e){jQuery("#comment-"+ct_id).fadeOut("slow",function(){jQuery("#comment-"+ct_id).remove()})}});e={action:"ct_feedback_user",security:ct_ajax_nonce,user_id:ct_id,status:"approve"};jQuery.ajax({type:"POST",url:ajaxurl,data:e,success:function(e){},error:function(e,t,c){},timeout:5e3})}),jQuery("#ct_get_csv_file").click(function(){var e={action:"ajax_ct_get_csv_file",security:ct_ajax_nonce,filename:ctUsersCheck.ct_csv_filename};jQuery.ajax({type:"POST",url:ajaxurl,data:e,success:function(e){0==parseInt(e)?alert(ctUsersCheck.ct_bad_csv):jQuery("#ct_csv_wrapper").html("<iframe src='"+location.protocol+"//"+location.hostname+"/wp-content/plugins/cleantalk-spam-protect/check-results/"+ctUsersCheck.ct_csv_filename+".csv'></iframe>")}})})});
|
2 |
-
//# sourceMappingURL=cleantalk-users-checkspam.min.js.map
|
1 |
+
String.prototype.printf=function(){var e=this;for(var t in arguments){var c=e.substring(0,e.indexOf("%s",0)),_=e.substring(e.indexOf("%s",0)+2,e.length);e=c+arguments[t]+_}return e};var ct_working=!(document.cookie="ct_check_users__amount=100; path=/"),ct_new_check=!0,ct_cooling_down_flag=!1,ct_close_animate=!0,ct_accurate_check=!1,ct_pause=!1,ct_prev_accurate=ctUsersCheck.ct_prev_accurate,ct_prev_from=ctUsersCheck.ct_prev_from,ct_prev_till=ctUsersCheck.ct_prev_till,ct_cool_down_time=9e4,ct_requests_counter=0,ct_max_requests=60,ct_ajax_nonce=ctUsersCheck.ct_ajax_nonce,ct_users_total=0,ct_users_checked=0,ct_users_spam=0,ct_users_bad=0,ct_unchecked="unset",ct_date_from=0,ct_date_till=0;function apbct_cookie__get(a,r){var s={};return"string"==typeof(a=a||null)&&(a=a.split()),"none"===(r=r||["apbct_","ct_"])&&(r=null),"string"==typeof r&&(r=r.split()),document.cookie.split(";").forEach(function(e,t,c){var _=e.trim().split("=");a&&a.forEach(function(e,t,c){_[0]===e&&(s[_[0]]=_[1])}),r&&r.forEach(function(e,t,c){0===_[0].indexOf(e)&&(s[_[0]]=_[1])})}),s}function apbct_get_cookie(e){var t=apbct_cookie__get(e,e);return"object"==typeof t&&void 0!==t[e]?t[e]:null}function animate_comment(e,t){ct_close_animate?.3===e?jQuery("#comment-"+t).fadeTo(200,e,function(){animate_comment(1,t)}):jQuery("#comment-"+t).fadeTo(200,e,function(){animate_comment(.3,t)}):ct_close_animate=!0}function ct_clear_users(){var e=0,t=0;jQuery("#ct_allow_date_range").is(":checked")&&(e=jQuery("#ct_date_range_from").val(),t=jQuery("#ct_date_range_till").val());var c={action:"ajax_clear_users",security:ct_ajax_nonce,from:e,till:t};jQuery.ajax({type:"POST",url:ajaxurl,data:c,success:function(e){ct_show_users_info(),ct_send_users()}})}function ct_cooling_down_toggle(){ct_cooling_down_flag=!1,ct_send_users(),ct_show_users_info()}function ct_send_users(){if(!0!==ct_cooling_down_flag){if(ct_max_requests<=ct_requests_counter)return setTimeout(ct_cooling_down_toggle,ct_cool_down_time),void(ct_cooling_down_flag=!(ct_requests_counter=0));ct_requests_counter++;var _=apbct_get_cookie("ct_check_users__amount"),e={action:"ajax_check_users",security:ct_ajax_nonce,new_check:ct_new_check,unchecked:ct_unchecked,amount:_};ct_accurate_check&&(e.accurate_check=!0),ct_date_from&&ct_date_till&&(e.from=ct_date_from,e.till=ct_date_till),jQuery.ajax({type:"POST",url:ajaxurl,data:e,success:function(e){if(e=jQuery.parseJSON(e),parseInt(e.error))if(ct_working=!1,confirm(e.error_message+". Do you want to proceed?"))ct_send_users();else{var t="users.php?page=ct_check_users";0!=ct_date_from&&0!=ct_date_till&&(t+="&from="+ct_date_from+"&till="+ct_date_till),location.href=t}else if(ct_new_check=!1,1==parseInt(e.end)||1==ct_pause){1==parseInt(e.end)&&(document.cookie="ct_paused_users_check=0; path=/"),ct_working=!1,jQuery("#ct_working_message").hide();t="users.php?page=ct_check_users&ct_worked=1";0!=ct_date_from&&0!=ct_date_till&&(t+="&from="+ct_date_from+"&till="+ct_date_till),location.href=t}else if(0==parseInt(e.end)){ct_users_checked+=e.checked,ct_users_spam+=e.spam,ct_users_bad+=e.bad,ct_unchecked=ct_users_total-ct_users_checked-ct_users_bad;var c=(c=String(ctUsersCheck.ct_status_string)).printf(ct_users_checked,ct_users_spam,ct_users_bad);0<parseInt(ct_users_spam)&&(c+=ctUsersCheck.ct_status_string_warning),jQuery("#ct_checking_status").html(c),jQuery("#ct_error_message").hide(),ct_send_users()}},error:function(e,t,c){20<_&&(_-=20,document.cookie="ct_check_users__amount="+_+"; path=/"),jQuery("#ct_error_message").show(),jQuery("#cleantalk_ajax_error").html(t),jQuery("#cleantalk_js_func").html("Check users"),setTimeout(ct_send_users(),3e3)},timeout:25e3})}}function ct_show_users_info(){if(ct_working){if(1==ct_cooling_down_flag)return jQuery("#ct_cooling_notice").html("Waiting for API to cool down. (About a minute)"),void jQuery("#ct_cooling_notice").show();if(jQuery("#ct_cooling_notice").hide(),setTimeout(ct_show_users_info,3e3),!ct_users_total){var e={action:"ajax_info_users",security:ct_ajax_nonce};ct_date_from&&ct_date_till&&(e.from=ct_date_from,e.till=ct_date_till),jQuery.ajax({type:"POST",url:ajaxurl,data:e,success:function(e){e=jQuery.parseJSON(e),jQuery("#ct_checking_status").html(e.message),ct_users_spam=e.spam,ct_users_checked=e.checked,ct_users_bad=e.bad},error:function(e,t,c){jQuery("#ct_error_message").show(),jQuery("#cleantalk_ajax_error").html(t),jQuery("#cleantalk_js_func").html("Show users"),setTimeout(ct_show_users_info(),3e3)},timeout:15e3})}}}function ct_toggle_depended(e,t){t=t||null;var c=jQuery(e.data("depended"));e.data("state")||t?(e.data("state",!1),c.prop("disabled",!0),c.removeProp("checked"),c.data("depended")&&ct_toggle_depended(c,!0)):(e.data("state",!0),c.removeProp("disabled"))}function ct_start_check(e){e=e||null,jQuery("#ct_allow_date_range").is(":checked")&&(ct_date_from=jQuery("#ct_date_range_from").val(),ct_date_till=jQuery("#ct_date_range_till").val(),""===ct_date_from||""===ct_date_till)?alert("Please, specify a date range."):(jQuery("#ct_accurate_check").is(":checked")&&(ct_accurate_check=!0),jQuery(".ct_to_hide").hide(),jQuery("#ct_working_message").show(),jQuery("#ct_preloader").show(),jQuery("#ct_pause").show(),ct_working=!0,e?(ct_show_users_info(),ct_send_users()):ct_clear_users())}jQuery(document).ready(function(){jQuery("#ct_allow_date_range").data({depended:".ct_date",state:!1}),ct_prev_accurate&&jQuery("#ct_accurate_check").prop("checked",!0),ct_prev_from&&(jQuery("#ct_allow_date_range").prop("checked",!0).data("state",!0),jQuery("#ct_date_range_from").removeProp("disabled").val(ct_prev_from),jQuery("#ct_date_range_till").removeProp("disabled").val(ct_prev_till)),jQuery("#ct_allow_date_range, #ct_accurate_check").on("change",function(){ct_toggle_depended(jQuery(this))}),jQuery.datepicker.setDefaults(jQuery.datepicker.regional.en);var a=jQuery("#ct_date_range_from, #ct_date_range_till").datepicker({dateFormat:"M d yy",maxDate:"+0D",changeMonth:!0,changeYear:!0,showAnim:"slideDown",onSelect:function(e){var t="ct_date_range_from"==this.id?"minDate":"maxDate",c=jQuery(this).data("datepicker"),_=jQuery.datepicker.parseDate(c.settings.dateFormat||jQuery.datepicker._defaults.dateFormat,e,c.settings);a.not(this).datepicker("option",t,_)}});jQuery("#ct_check_spam_button").click(function(){ct_start_check(!(document.cookie="ct_paused_users_check=0; path=/"))}),jQuery("#ct_proceed_check_button").click(function(){ct_start_check(!0)}),jQuery("#ct_pause").on("click",function(){ct_pause=!0;var e={accurate:ct_accurate_check,from:ct_date_from,till:ct_date_till};document.cookie="ct_paused_users_check="+JSON.stringify(e)+"; path=/"}),jQuery(".cleantalk_delete_from_list_button").click(function(){ct_id=jQuery(this).attr("data-id");var e={action:"ajax_ct_approve_user",security:ct_ajax_nonce,id:ct_id};jQuery.ajax({type:"POST",url:ajaxurl,data:e,success:function(e){jQuery("#comment-"+ct_id).fadeOut("slow",function(){jQuery("#comment-"+ct_id).remove()})}});e={action:"ct_feedback_user",security:ct_ajax_nonce,user_id:ct_id,status:"approve"};jQuery.ajax({type:"POST",url:ajaxurl,data:e,success:function(e){},error:function(e,t,c){},timeout:5e3})}),jQuery("#ct_get_csv_file").click(function(_){var e={action:"ajax_ct_get_csv_file",security:ct_ajax_nonce,filename:ctUsersCheck.ct_csv_filename};jQuery("#"+_.target.id).addClass("disabled"),jQuery.ajax({type:"POST",url:ajaxurl,data:e,success:function(e){if(0===parseInt(e))alert(ctUsersCheck.ct_bad_csv);else{var t=URL.createObjectURL(new Blob([e])),c=document.createElement("a");c.href=t,c.download=ctUsersCheck.ct_csv_filename+".csv",document.body.appendChild(c),c.click()}jQuery("#"+_.target.id).removeClass("disabled")}})})});
|
2 |
+
//# sourceMappingURL=cleantalk-users-checkspam.min.js.map
|
js/cleantalk-users-checkspam.min.js.map
CHANGED
@@ -1 +1 @@
|
|
1 |
-
{"version":3,"sources":["cleantalk-users-checkspam.js"],"names":["String","prototype","printf","formatted","this","arg","arguments","before_formatted","substring","indexOf","after_formatted","length","ct_working","document","cookie","ct_new_check","ct_cooling_down_flag","ct_close_animate","ct_accurate_check","ct_pause","ct_prev_accurate","ctUsersCheck","ct_prev_from","ct_prev_till","ct_cool_down_time","ct_requests_counter","ct_max_requests","ct_ajax_nonce","ct_users_total","ct_users_checked","ct_users_spam","ct_users_bad","ct_unchecked","ct_date_from","ct_date_till","apbct_cookie__get","names","prefixes","split","forEach","item","i","arr","curr","trim","name","all","prefix","apbct_get_cookie","animate_comment","to","id","jQuery","fadeTo","ct_clear_users","from","till","is","val","data","action","security","ajax","type","url","ajaxurl","success","msg","ct_show_users_info","ct_send_users","ct_cooling_down_toggle","setTimeout","new_check","unchecked","amount","parseJSON","parseInt","error","confirm","error_message","new_href","location","href","end","hide","checked","spam","bad","status_string","ct_status_string","ct_status_string_warning","html","jqXHR","textStatus","errorThrown","check_amount","show","timeout","message","total","ct_insert_users","delete_accounts","alert","ct_deleted","ct_iusers","ct_inserted","ct_delete_all_users","ct_delete_checked_users","ids","Array","cnt","each","prop","attr","ct_toggle_depended","obj","secondary","depended","removeProp","ready","state","on","dates","datepicker","dateFormat","maxDate","changeMonth","changeYear","showAnim","onSelect","selectedDate","option","instance","date","parseDate","settings","_defaults","not","ct_start_check","continue_check","click","ct_check","accurate","JSON","stringify","ct_confirm_deletion_all","animate","scrollTop","ct_confirm_deletion_checked","remove","mouseover","mouseout","ct_id","fadeOut","user_id","status","filename","ct_csv_filename","ct_bad_csv","protocol","hostname"],"mappings":"AACAA,OAAOC,UAAUC,OAAS,WACtB,IAAIC,EAAYC,KAChB,IAAK,IAAIC,KAAOC,UAAY,CAC9B,IAAIC,EAAmBJ,EAAUK,UAAU,EAAGL,EAAUM,QAAQ,KAAM,IAClEC,EAAmBP,EAAUK,UAAUL,EAAUM,QAAQ,KAAM,GAAG,EAAGN,EAAUQ,QACnFR,EAAYI,EAAmBD,UAAUD,GAAOK,EAE9C,OAAOP,GAOX,IAAIS,aAHJC,SAASC,OAAS,sCAIjBC,cAAe,EACfC,sBAAuB,EACvBC,kBAAmB,EACnBC,mBAAoB,EACpBC,UAAW,EACXC,iBAAmBC,aAAaD,iBAChCE,aAAmBD,aAAaC,aAChCC,aAAmBF,aAAaE,aAE7BC,kBAAoB,IACvBC,oBAAsB,EACtBC,gBAAkB,GAEfC,cAAgBN,aAAaM,cAChCC,eAAiB,EACjBC,iBAAmB,EACnBC,cAAgB,EAChBC,aAAe,EACfC,aAAe,QACfC,aAAe,EACfC,aAAe,EAGhB,SAASC,kBAAkBC,EAAOC,GACjC,IAAIvB,EAAS,GAuBb,MArBmB,iBADnBsB,EAAQA,GAAS,QACYA,EAAQA,EAAME,SAE5B,SADfD,EAAWA,GAAY,CAAC,SAAU,UACFA,EAAW,MACrB,iBAAZA,IAAsBA,EAAWA,EAASC,SACpDzB,SAASC,OAAOwB,MAAM,KAAKC,QAAQ,SAASC,EAAMC,EAAGC,GACpD,IAAIC,EAAOH,EAAKI,OAAON,MAAM,KAE1BF,GACFA,EAAMG,QAAQ,SAASM,EAAMJ,EAAGK,GAC5BH,EAAK,KAAOE,IACd/B,EAAO6B,EAAK,IAAOA,EAAK,MAIxBN,GACFA,EAASE,QAAQ,SAASQ,EAAQN,EAAGK,GACL,IAA5BH,EAAK,GAAGlC,QAAQsC,KAClBjC,EAAO6B,EAAK,IAAOA,EAAK,QAIrB7B,EAGR,SAASkC,iBAAkBH,GAC1B,IAAI/B,EAASqB,kBAAmBU,EAAMA,GACtC,MAAqB,iBAAX/B,QAA8C,IAAhBA,EAAO+B,GACvC/B,EAAO+B,GAEP,KAGT,SAASI,gBAAgBC,EAAGC,GACxBlC,iBACK,IAAJiC,EACFE,OAAO,YAAYD,GAAIE,OAAO,IAAIH,EAAG,WACpCD,gBAAgB,EAAEE,KAGnBC,OAAO,YAAYD,GAAIE,OAAO,IAAIH,EAAG,WACpCD,gBAAgB,GAAIE,KAItBlC,kBAAiB,EAInB,SAASqC,iBAER,IAAIC,EAAO,EAAGC,EAAO,EAClBJ,OAAO,wBAAwBK,GAAG,cACpCF,EAAOH,OAAO,uBAAuBM,MACrCF,EAAOJ,OAAO,uBAAuBM,OAEtC,IAAIC,EAAO,CACVC,OAAa,mBACbC,SAAalC,cACb4B,KAAaA,EACbC,KAAaA,GAGdJ,OAAOU,KAAK,CACXC,KAAM,OACNC,IAAKC,QACLN,KAAMA,EACNO,QAAS,SAASC,GACjBC,qBACAC,mBAQH,SAASC,yBACRtD,sBAAuB,EACvBqD,gBACAD,qBAGD,SAASC,gBAER,GAA2B,GAAxBrD,qBAAH,CAGA,GAA0BU,iBAAvBD,oBAIF,OAHA8C,WAAWD,uBAAwB9C,wBAEnCR,uBADAS,oBAAsB,IAItBA,sBAGD,IAAIkC,EAAO,CACVC,OAAQ,mBACRC,SAAUlC,cACV6C,UAAWzD,aACX0D,UAAWzC,aACX0C,OAAQ1B,iBAAiB,2BAGvB9B,oBACFyC,EAAqB,gBAAI,GAEvB1B,cAAgBC,eAClByB,EAAW,KAAI1B,aACf0B,EAAW,KAAIzB,cAGhBkB,OAAOU,KAAK,CACXC,KAAM,OACNC,IAAKC,QACLN,KAAMA,EACNO,QAAS,SAASC,GAIjB,GAFAA,EAAMf,OAAOuB,UAAUR,GAEpBS,SAAST,EAAIU,OAEf,GADAjE,YAAW,EACPkE,QAAQX,EAAIY,cAAc,6BAM7BV,oBAN0D,CAC1D,IAAIW,EAAW,gCACI,GAAhB/C,cAAqC,GAAhBC,eACvB8C,GAAU,SAAS/C,aAAa,SAASC,cAC1C+C,SAASC,KAAOF,OAKjB,GADAjE,cAAe,EACS,GAArB6D,SAAST,EAAIgB,MAAyB,GAAZhE,SAAiB,CACrB,GAArByD,SAAST,EAAIgB,OACftE,SAASC,OAAS,mCACnBF,YAAW,EACXwC,OAAO,uBAAuBgC,OAC1BJ,EAAW,4CACI,GAAhB/C,cAAqC,GAAhBC,eACvB8C,GAAU,SAAS/C,aAAa,SAASC,cAC1C+C,SAASC,KAAOF,OACX,GAAwB,GAArBJ,SAAST,EAAIgB,KAAU,CAC/BtD,kBAAoBsC,EAAIkB,QACxBvD,eAAiBqC,EAAImB,KACrBvD,cAAgBoC,EAAIoB,IACpBvD,aAAeJ,eAAiBC,iBAAmBE,aACnD,IACIyD,GADAA,EAAgBxF,OAAOqB,aAAaoE,mBACNvF,OAAO0B,eAAgBC,iBAAkBC,cAAeC,cAC7D,EAA1B6C,SAAS9C,iBACX0D,GAAiBnE,aAAaqE,0BAC/BtC,OAAO,uBAAuBuC,KAAKH,GACnCpC,OAAO,qBAAqBgC,OAC5Bf,kBAIGQ,MAAO,SAASe,EAAOC,EAAYC,GACtB,GAAfC,eACFA,cAAgB,GAChBlF,SAASC,OAAS,0BAA4BiF,aAAe,YAE9D3C,OAAO,qBAAqB4C,OAC5B5C,OAAO,yBAAyBuC,KAAKE,GACrCzC,OAAO,sBAAsBuC,KAAK,eAClCpB,WAAWF,gBAAiB,MAEvB4B,QAAS,QAGjB,SAAS7B,qBAER,GAAGxD,WAAW,CAEb,GAA2B,GAAxBI,qBAGF,OAFAoC,OAAO,sBAAsBuC,KAAK,uDAClCvC,OAAO,sBAAsB4C,OAQ9B,GALC5C,OAAO,sBAAsBgC,OAG9Bb,WAAWH,mBAAoB,MAE3BxC,eAAe,CAElB,IAAI+B,EAAO,CACVC,OAAU,kBACVC,SAAYlC,eAGVM,cAAgBC,eAClByB,EAAW,KAAI1B,aACf0B,EAAW,KAAIzB,cAGhBkB,OAAOU,KAAK,CACXC,KAAM,OACNC,IAAKC,QACLN,KAAMA,EACNO,QAAS,SAASC,GACjBA,EAAMf,OAAOuB,UAAUR,GACvBf,OAAO,uBAAuBuC,KAAKxB,EAAI+B,SACvCtE,eAAmBuC,EAAIgC,MACvBrE,cAAmBqC,EAAImB,KACvBzD,iBAAmBsC,EAAIkB,QACvBtD,aAAmBoC,EAAIoB,KAExBV,MAAO,SAAUe,EAAOC,EAAYC,GACnC1C,OAAO,qBAAqB4C,OAC5B5C,OAAO,yBAAyBuC,KAAKE,GACrCzC,OAAO,sBAAsBuC,KAAK,cAClCpB,WAAWH,qBAAsB,MAElC6B,QAAS,SAKb,SAASG,gBAAgBC,GAIxB,IAAI1C,EAAO,CACVC,OAAU,oBACVC,SAAYlC,gBAJV0E,EAAkBA,GAAmB,QAQvC1C,EAAa,QAAI,GAElBP,OAAOU,KAAK,CACXC,KAAM,OACNC,IAAKC,QACLN,KAAMA,EACNO,QAAS,SAASC,GACdkC,EACFC,MAAMjF,aAAakF,WAAa,IAAMpC,EAAM,IAAM9C,aAAamF,WAE/DF,MAAMjF,aAAaoF,YAAc,IAAMtC,EAAM,IAAM9C,aAAamF,cAIpE,SAASE,sBAER,IAAI/C,EAAO,CACVC,OAAU,wBACVC,SAAYlC,eAGbyB,OAAOU,KAAK,CACXC,KAAM,OACNC,IAAKC,QACLN,KAAMA,EACNO,QAAS,SAASC,GACV,EAAJA,GACFf,OAAO,yBAAyBuC,KAAKxB,GACrCuC,uBAEAzB,SAASC,KAAK,6CAGVL,MAAO,SAASe,EAAOC,EAAYC,GACxC1C,OAAO,qBAAqB4C,OAC5B5C,OAAO,yBAAyBuC,KAAKE,GACrCzC,OAAO,sBAAsBuC,KAAK,uBAClCpB,WAAWmC,sBAAuB,MAE7BT,QAAS,OAGjB,SAASU,0BAERC,IAAIC,QACJ,IAAIC,EAAI,EACR1D,OAAO,8CAA8C2D,KAAK,WACtD3D,OAAOhD,MAAM4G,KAAK,aACpBJ,IAAIE,GAAK1D,OAAOhD,MAAM6G,KAAK,MAAMzG,UAAU,IAC3CsG,OAGF,IAAInD,EAAO,CACVC,OAAU,4BACVC,SAAYlC,cACZiF,IAAMA,KAGPxD,OAAOU,KAAK,CACXC,KAAM,OACNC,IAAKC,QACLN,KAAMA,EACNO,QAAS,SAASC,GACjBc,SAASC,KAAK,6CAEfL,MAAO,SAASe,EAAOC,EAAYC,GAClC1C,OAAO,qBAAqB4C,OAC5B5C,OAAO,yBAAyBuC,KAAKE,GACrCzC,OAAO,sBAAsBuC,KAAK,uBAClCpB,WAAWoC,0BAA2B,MAEvCV,QAAS,OAKX,SAASiB,mBAAmBC,EAAKC,GAE7BA,EAAYA,GAAa,KAE5B,IAAIC,EAAWjE,OAAO+D,EAAIxD,KAAK,aACtBwD,EAAIxD,KAAK,UAEJyD,GAIbD,EAAIxD,KAAK,SAAS,GAClB0D,EAASL,KAAK,YAAY,GAC1BK,EAASC,WAAW,WACjBD,EAAS1D,KAAK,aAChBuD,mBAAmBG,GAAU,KAP9BF,EAAIxD,KAAK,SAAS,GAClB0D,EAASC,WAAW,aAUtBlE,OAAOvC,UAAU0G,MAAM,WAItBnE,OAAO,wBAAwBO,KAAK,CAAC0D,SAAY,WAAYG,OAAS,IAGnEpG,kBACFgC,OAAO,sBAAsB4D,KAAK,WAAW,GAE3C1F,eACF8B,OAAO,wBAAwB4D,KAAK,WAAW,GAAMrD,KAAK,SAAS,GACnEP,OAAO,uBAAuBkE,WAAW,YAAY5D,IAAIpC,cACzD8B,OAAO,uBAAuBkE,WAAW,YAAY5D,IAAInC,eAI1D6B,OAAO,4CAA4CqE,GAAG,SAAU,WAC/DP,mBAAmB9D,OAAOhD,SAG3B,IAAIsH,EAAQtE,OAAO,4CAA4CuE,WAC9D,CACCC,WAAY,SACZC,QAAQ,MACRC,aAAY,EACZC,YAAW,EACXC,SAAU,YACVC,SAAU,SAASC,GACnB,IAAIC,EAAoB,sBAAX/H,KAAK+C,GAA6B,UAAY,UAC1DiF,EAAWhF,OAAQhD,MAAOuD,KAAM,cAChC0E,EAAOjF,OAAOuE,WAAWW,UACxBF,EAASG,SAASX,YAAcxE,OAAOuE,WAAWa,UAAUZ,WAC5DM,EAAcE,EAASG,UACxBb,EAAMe,IAAIrI,MAAMuH,WAAW,SAAUQ,EAAQE,MAKhD,SAASK,EAAeC,GAEpBA,EAAiBA,GAAkB,KAEnCvF,OAAO,wBAAwBK,GAAG,cAEpCxB,aAAemB,OAAO,uBAAuBM,MAC7CxB,aAAekB,OAAO,uBAAuBM,MAEvB,KAAjBzB,cAAwC,KAAjBC,cAC3BoE,MAAM,kCAKLlD,OAAO,sBAAsBK,GAAG,cAClCvC,mBAAoB,GAGrBkC,OAAO,eAAegC,OACtBhC,OAAO,uBAAuB4C,OAC9B5C,OAAO,iBAAiB4C,OACxB5C,OAAO,aAAa4C,OAEpBpF,YAAW,EAER+H,GACFvE,qBACAC,iBAEAf,kBAKFF,OAAO,yBAAyBwF,MAAM,WAErCF,IADA7H,SAASC,OAAS,sCAGnBsC,OAAO,4BAA4BwF,MAAM,WACxCF,GAAe,KAIhBtF,OAAO,aAAaqE,GAAG,QAAS,WAC/BtG,UAAW,EACX,IAAI0H,EAAW,CACdC,SAAY5H,kBACZqC,KAAYtB,aACZuB,KAAYtB,cAEbrB,SAASC,OAAS,yBAA2BiI,KAAKC,UAAUH,GAAY,aAGzEzF,OAAO,oBAAoBwF,MAAM,WAChCxC,oBAGDhD,OAAO,oBAAoBwF,MAAM,WAChCxC,iBAAgB,KAIjBhD,OAAO,wBAAwBwF,MAAM,WAEpC,IAAK9D,QAAQzD,aAAa4H,yBACzB,OAAO,EAER7F,OAAO,eAAegC,OACtBhC,OAAO,uBAAuBgC,OAC9BhC,OAAO,mBAAmBgC,OAC1BhC,OAAO,iBAAiB4C,OACxB5C,OAAO,wBAAwB4C,OAC/B5C,OAAO,qBAAqB4C,OAC5B5C,OAAO,cAAc8F,QAAQ,CAAEC,UAAW,GAAK,QAC/CzC,wBAEDtD,OAAO,4BAA4BwF,MAAM,WACxC,IAAK9D,QAAQzD,aAAa+H,6BACzB,OAAO,EACRzC,4BAGDvD,OAAO,qBAAqBwF,MAAM,WACjC3D,SAASC,KAAK,kCAGf9B,OAAO,iCAAiCwF,MAAM,WAC7CzF,GAAKC,OAAOhD,MAAM6G,KAAK,WACvBL,IAAIC,QACJD,IAAI,GAAGzD,GACP,IAAIQ,EAAO,CACVC,OAAU,4BACVC,SAAYlC,cACZiF,IAAMA,KAEPxD,OAAOU,KAAK,CACXC,KAAM,OACNC,IAAKC,QACLN,KAAMA,EACNO,QAAS,SAASC,GACjBlD,kBAAiB,EACjBmC,OAAO,YAAYD,IAAIiC,OACvBhC,OAAO,YAAYD,IAAIkG,SACvBpI,kBAAiB,GAElBgF,QAAS,SAIX7C,OAAO,iCAAiCwF,MAAM,WAC7CzF,GAAKC,OAAOhD,MAAM6G,KAAK,WACvBhE,gBAAgB,GAAKE,MAItBC,OAAO,mBAAmBkG,UAAU,WACnCnG,GAAKC,OAAOhD,MAAM6G,KAAK,WACvB7D,OAAO,0BAA0BD,IAAI6C,SAEtC5C,OAAO,mBAAmBmG,SAAS,WAClCpG,GAAKC,OAAOhD,MAAM6G,KAAK,WACvB7D,OAAO,0BAA0BD,IAAIiC,SAItChC,OAAO,sCAAsCwF,MAAM,WAClDY,MAAQpG,OAAOhD,MAAM6G,KAAK,WAG1B,IAAItD,EAAO,CACVC,OAAU,uBACVC,SAAYlC,cACZwB,GAAMqG,OAEPpG,OAAOU,KAAK,CACXC,KAAM,OACNC,IAAKC,QACLN,KAAMA,EACNO,QAAS,SAASC,GACjBf,OAAO,YAAYoG,OAAOC,QAAQ,OAAQ,WACzCrG,OAAO,YAAYoG,OAAOH,cAMzB1F,EAAO,CACVC,OAAU,mBACVC,SAAYlC,cACZ+H,QAAWF,MACXG,OAAU,WAEXvG,OAAOU,KAAK,CACXC,KAAM,OACNC,IAAKC,QACLN,KAAMA,EACNO,QAAS,SAASC,KAWlBU,MAAO,SAASe,EAAOC,EAAYC,KAGnCG,QAAS,QAMX7C,OAAO,oBAAoBwF,MAAM,WAChC,IAAIjF,EAAO,CACVC,OAAU,uBACVC,SAAYlC,cACZiI,SAAYvI,aAAawI,iBAE1BzG,OAAOU,KAAK,CACXC,KAAM,OACNC,IAAKC,QACLN,KAAMA,EACNO,QAAS,SAASC,GACC,GAAfS,SAAST,GACXmC,MAAMjF,aAAayI,YAEnB1G,OAAO,mBAAmBuC,KAAK,gBAAgBV,SAAS8E,SAAS,KAAK9E,SAAS+E,SAAS,4DAA4D3I,aAAawI,gBAAgB","file":"cleantalk-users-checkspam.min.js","sourcesContent":["// Printf for JS\r\nString.prototype.printf = function(){\r\n var formatted = this;\r\n for( var arg in arguments ) {\r\n\t\tvar before_formatted = formatted.substring(0, formatted.indexOf(\"%s\", 0));\r\n\t\tvar after_formatted = formatted.substring(formatted.indexOf(\"%s\", 0)+2, formatted.length);\r\n\t\tformatted = before_formatted + arguments[arg] + after_formatted;\r\n }\r\n return formatted;\r\n};\r\n\r\n// Set deafult amount to check by request.\r\ndocument.cookie = \"ct_check_users__amount=\" + 100 + \"; path=/\";\r\n\r\n// Flags\r\nvar ct_working = false,\r\n\tct_new_check = true,\r\n\tct_cooling_down_flag = false,\r\n\tct_close_animate = true,\r\n\tct_accurate_check = false,\r\n\tct_pause = false,\r\n\tct_prev_accurate = ctUsersCheck.ct_prev_accurate,\r\n\tct_prev_from = ctUsersCheck.ct_prev_from,\t\r\n\tct_prev_till = ctUsersCheck.ct_prev_till;\r\n// Settings\r\nvar ct_cool_down_time = 90000,\r\n\tct_requests_counter = 0,\r\n\tct_max_requests = 60;\r\n// Variables\r\nvar ct_ajax_nonce = ctUsersCheck.ct_ajax_nonce,\r\n\tct_users_total = 0,\r\n\tct_users_checked = 0,\r\n\tct_users_spam = 0,\r\n\tct_users_bad = 0,\r\n\tct_unchecked = 'unset',\r\n\tct_date_from = 0,\r\n\tct_date_till = 0;\r\n\r\n/* Function: Reuturns cookie with prefix */\r\nfunction apbct_cookie__get(names, prefixes){\r\n\tvar cookie = {};\r\n\tnames = names || null;\r\n\tif(typeof names == 'string') names = names.split();\r\n\tprefixes = prefixes || ['apbct_', 'ct_'];\r\n\tif(prefixes == 'none') prefixes = null;\r\n\tif(typeof prefixes == 'string') prefixes = prefixes.split();\r\n\tdocument.cookie.split(';').forEach(function(item, i, arr){\r\n\t\tvar curr = item.trim().split('=');\r\n\t\t// Detect by full cookie name\r\n\t\tif(names){\r\n\t\t\tnames.forEach(function(name, i, all){\r\n\t\t\t\tif(curr[0] === name)\r\n\t\t\t\t\tcookie[curr[0]] = (curr[1]);\r\n\t\t\t});\r\n\t\t}\r\n\t\t// Detect by name prefix\r\n\t\tif(prefixes){\r\n\t\t\tprefixes.forEach(function(prefix, i, all){\r\n\t\t\t\tif(curr[0].indexOf(prefix) === 0)\r\n\t\t\t\t\tcookie[curr[0]] = (curr[1]);\r\n\t\t\t});\r\n\t\t}\r\n\t});\r\n\treturn cookie;\r\n}\r\n\r\nfunction apbct_get_cookie( name ){\r\n\tvar cookie = apbct_cookie__get( name, name );\r\n\tif(typeof cookie === 'object' && typeof cookie[name] != 'undefined'){\r\n\t\treturn cookie[name];\r\n\t}else\r\n\t\treturn null;\r\n}\r\n\r\nfunction animate_comment(to,id){\r\n\tif(ct_close_animate){\r\n\t\tif(to==0.3){\r\n\t\t\tjQuery('#comment-'+id).fadeTo(200,to,function(){\r\n\t\t\t\tanimate_comment(1,id)\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tjQuery('#comment-'+id).fadeTo(200,to,function(){\r\n\t\t\t\tanimate_comment(0.3,id)\r\n\t\t\t});\r\n\t\t}\r\n\t}else{\r\n\t\tct_close_animate=true;\r\n\t}\r\n}\r\n\r\nfunction ct_clear_users(){\r\n\r\n\tvar from = 0, till = 0;\r\n\tif(jQuery('#ct_allow_date_range').is(':checked')) {\r\n\t\tfrom = jQuery('#ct_date_range_from').val();\r\n\t\ttill = jQuery('#ct_date_range_till').val();\r\n\t}\r\n\tvar data = {\r\n\t\t'action' : 'ajax_clear_users',\r\n\t\t'security' : ct_ajax_nonce,\r\n\t\t'from' : from,\r\n\t\t'till' : till\r\n\t};\r\n\r\n\tjQuery.ajax({\r\n\t\ttype: \"POST\",\r\n\t\turl: ajaxurl,\r\n\t\tdata: data,\r\n\t\tsuccess: function(msg){\r\n\t\t\tct_show_users_info();\r\n\t\t\tct_send_users();\r\n\t\t}\r\n\t});\r\n\r\n}\r\n\r\n//Continues the check after cooldown time\r\n//Called by ct_send_users();\r\nfunction ct_cooling_down_toggle(){\r\n\tct_cooling_down_flag = false;\r\n\tct_send_users();\r\n\tct_show_users_info();\r\n}\r\n\r\nfunction ct_send_users(){\r\n\t\r\n\tif(ct_cooling_down_flag == true)\r\n\t\treturn;\r\n\t\r\n\tif(ct_requests_counter >= ct_max_requests){\r\n\t\tsetTimeout(ct_cooling_down_toggle, ct_cool_down_time);\r\n\t\tct_requests_counter = 0;\r\n\t\tct_cooling_down_flag = true;\r\n\t\treturn;\r\n\t}else{\r\n\t\tct_requests_counter++;\r\n\t}\r\n\r\n\tvar data = {\r\n\t\taction: 'ajax_check_users',\r\n\t\tsecurity: ct_ajax_nonce,\r\n\t\tnew_check: ct_new_check,\r\n\t\tunchecked: ct_unchecked,\r\n\t\tamount: apbct_get_cookie('ct_check_users__amount'),\r\n\t};\r\n\t\r\n\tif(ct_accurate_check)\r\n\t\tdata['accurate_check'] = true;\r\n\t\r\n\tif(ct_date_from && ct_date_till){\r\n\t\tdata['from'] = ct_date_from;\r\n\t\tdata['till'] = ct_date_till;\r\n\t}\r\n\t\r\n\tjQuery.ajax({\r\n\t\ttype: \"POST\",\r\n\t\turl: ajaxurl,\r\n\t\tdata: data,\r\n\t\tsuccess: function(msg){\r\n\t\t\t\r\n\t\t\tmsg = jQuery.parseJSON(msg);\r\n\t\t\t\r\n\t\t\tif(parseInt(msg.error)){\r\n\t\t\t\tct_working=false;\r\n\t\t\t\tif(!confirm(msg.error_message+\". Do you want to proceed?\")){\r\n\t\t\t\t\tvar new_href = 'users.php?page=ct_check_users';\r\n\t\t\t\t\tif(ct_date_from != 0 && ct_date_till != 0)\r\n\t\t\t\t\t\tnew_href+='&from='+ct_date_from+'&till='+ct_date_till;\r\n\t\t\t\t\tlocation.href = new_href;\r\n\t\t\t\t}else\r\n\t\t\t\t\tct_send_users();\r\n\t\t\t}else{\r\n\t\t\t\tct_new_check = false;\r\n\t\t\t\tif(parseInt(msg.end) == 1 || ct_pause == true){\r\n\t\t\t\t\tif(parseInt(msg.end) == 1)\r\n\t\t\t\t\t\tdocument.cookie = 'ct_paused_users_check=0; path=/';\r\n\t\t\t\t\tct_working=false;\r\n\t\t\t\t\tjQuery('#ct_working_message').hide();\r\n\t\t\t\t\tvar new_href = 'users.php?page=ct_check_users&ct_worked=1';\r\n\t\t\t\t\tif(ct_date_from != 0 && ct_date_till != 0)\r\n\t\t\t\t\t\tnew_href+='&from='+ct_date_from+'&till='+ct_date_till;\r\n\t\t\t\t\tlocation.href = new_href;\r\n\t\t\t\t}else if(parseInt(msg.end) == 0){\r\n\t\t\t\t\tct_users_checked += msg.checked;\r\n\t\t\t\t\tct_users_spam += msg.spam;\r\n\t\t\t\t\tct_users_bad += msg.bad;\r\n\t\t\t\t\tct_unchecked = ct_users_total - ct_users_checked - ct_users_bad;\r\n\t\t\t\t\tvar status_string = String(ctUsersCheck.ct_status_string);\r\n\t\t\t\t\tvar status_string = status_string.printf(ct_users_total, ct_users_checked, ct_users_spam, ct_users_bad);\r\n\t\t\t\t\tif(parseInt(ct_users_spam) > 0)\r\n\t\t\t\t\t\tstatus_string += ctUsersCheck.ct_status_string_warning;\r\n\t\t\t\t\tjQuery('#ct_checking_status').html(status_string);\r\n\t\t\t\t\tjQuery('#ct_error_message').hide();\r\n\t\t\t\t\tct_send_users();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n error: function(jqXHR, textStatus, errorThrown) {\r\n\t\t\tif(check_amount > 20){\r\n\t\t\t\tcheck_amount -= 20;\r\n\t\t\t\tdocument.cookie = \"ct_check_users__amount=\" + check_amount + \"; path=/\";\r\n\t\t\t}\r\n\t\t\tjQuery('#ct_error_message').show();\r\n\t\t\tjQuery('#cleantalk_ajax_error').html(textStatus);\r\n\t\t\tjQuery('#cleantalk_js_func').html('Check users');\r\n\t\t\tsetTimeout(ct_send_users(), 3000);\r\n },\r\n timeout: 25000\r\n\t});\r\n}\r\nfunction ct_show_users_info(){\r\n\t\r\n\tif(ct_working){\r\n\t\t\r\n\t\tif(ct_cooling_down_flag == true){\r\n\t\t\tjQuery('#ct_cooling_notice').html('Waiting for API to cool down. (About a minute)');\r\n\t\t\tjQuery('#ct_cooling_notice').show();\r\n\t\t\treturn;\t\t\t\r\n\t\t}else{\r\n\t\t\tjQuery('#ct_cooling_notice').hide();\r\n\t\t}\r\n\t\t\r\n\t\tsetTimeout(ct_show_users_info, 3000);\r\n\t\t\r\n\t\tif(!ct_users_total){\r\n\t\t\t\r\n\t\t\tvar data = {\r\n\t\t\t\t'action': 'ajax_info_users',\r\n\t\t\t\t'security': ct_ajax_nonce\r\n\t\t\t};\r\n\t\t\t\r\n\t\t\tif(ct_date_from && ct_date_till){\r\n\t\t\t\tdata['from'] = ct_date_from;\r\n\t\t\t\tdata['till'] = ct_date_till;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tjQuery.ajax({\r\n\t\t\t\ttype: \"POST\",\r\n\t\t\t\turl: ajaxurl,\r\n\t\t\t\tdata: data,\r\n\t\t\t\tsuccess: function(msg){\r\n\t\t\t\t\tmsg = jQuery.parseJSON(msg);\r\n\t\t\t\t\tjQuery('#ct_checking_status').html(msg.message);\r\n\t\t\t\t\tct_users_total = msg.total;\r\n\t\t\t\t\tct_users_spam = msg.spam;\r\n\t\t\t\t\tct_users_checked = msg.checked;\r\n\t\t\t\t\tct_users_bad = msg.bad;\r\n\t\t\t\t},\r\n\t\t\t\terror: function (jqXHR, textStatus, errorThrown){\r\n\t\t\t\t\tjQuery('#ct_error_message').show();\r\n\t\t\t\t\tjQuery('#cleantalk_ajax_error').html(textStatus);\r\n\t\t\t\t\tjQuery('#cleantalk_js_func').html('Show users');\r\n\t\t\t\t\tsetTimeout(ct_show_users_info(), 3000);\r\n\t\t\t\t},\r\n\t\t\t\ttimeout: 15000\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}\r\nfunction ct_insert_users(delete_accounts){\r\n\r\n delete_accounts = delete_accounts || null;\r\n\r\n\tvar data = {\r\n\t\t'action': 'ajax_insert_users',\r\n\t\t'security': ct_ajax_nonce\r\n\t};\r\n\t\r\n\tif(delete_accounts)\r\n\t\tdata['delete'] = true;\r\n\t\r\n\tjQuery.ajax({\r\n\t\ttype: \"POST\",\r\n\t\turl: ajaxurl,\r\n\t\tdata: data,\r\n\t\tsuccess: function(msg){\r\n\t\t\tif(delete_accounts)\r\n\t\t\t\talert(ctUsersCheck.ct_deleted + ' ' + msg + ' ' + ctUsersCheck.ct_iusers);\r\n\t\t\telse\r\n\t\t\t\talert(ctUsersCheck.ct_inserted + ' ' + msg + ' ' + ctUsersCheck.ct_iusers);\r\n\t\t}\r\n\t});\r\n}\r\nfunction ct_delete_all_users(){\r\n\t\r\n\tvar data = {\r\n\t\t'action': 'ajax_delete_all_users',\r\n\t\t'security': ct_ajax_nonce\r\n\t};\r\n\t\r\n\tjQuery.ajax({\r\n\t\ttype: \"POST\",\r\n\t\turl: ajaxurl,\r\n\t\tdata: data,\r\n\t\tsuccess: function(msg){\r\n\t\t\tif(msg>0){\r\n\t\t\t\tjQuery('#cleantalk_users_left').html(msg);\r\n\t\t\t\tct_delete_all_users();\r\n\t\t\t}else{\r\n\t\t\t\tlocation.href='users.php?page=ct_check_users&ct_worked=1';\r\n\t\t\t}\r\n\t\t},\r\n error: function(jqXHR, textStatus, errorThrown) {\r\n\t\t\tjQuery('#ct_error_message').show();\r\n\t\t\tjQuery('#cleantalk_ajax_error').html(textStatus);\r\n\t\t\tjQuery('#cleantalk_js_func').html('All users deleteion');\r\n\t\t\tsetTimeout(ct_delete_all_users(), 3000);\r\n },\r\n timeout: 25000\r\n\t});\r\n}\r\nfunction ct_delete_checked_users(){\r\n\t\r\n\tids=Array();\r\n\tvar cnt=0;\r\n\tjQuery('input[id^=cb-select-][id!=cb-select-all-1]').each(function(){\r\n\t\tif(jQuery(this).prop('checked')){\r\n\t\t\tids[cnt]=jQuery(this).attr('id').substring(10);\r\n\t\t\tcnt++;\r\n\t\t}\r\n\t});\r\n\tvar data = {\r\n\t\t'action': 'ajax_delete_checked_users',\r\n\t\t'security': ct_ajax_nonce,\r\n\t\t'ids':ids\r\n\t};\r\n\t\r\n\tjQuery.ajax({\r\n\t\ttype: \"POST\",\r\n\t\turl: ajaxurl,\r\n\t\tdata: data,\r\n\t\tsuccess: function(msg){\r\n\t\t\tlocation.href='users.php?page=ct_check_users&ct_worked=1';\r\n\t\t},\r\n\t\terror: function(jqXHR, textStatus, errorThrown) {\r\n\t\t\tjQuery('#ct_error_message').show();\r\n\t\t\tjQuery('#cleantalk_ajax_error').html(textStatus);\r\n\t\t\tjQuery('#cleantalk_js_func').html('All users deleteion');\r\n\t\t\tsetTimeout(ct_delete_checked_users(), 3000);\r\n\t\t},\r\n\t\ttimeout: 15000\r\n\t});\r\n}\r\n\r\n// Function to toggle dependences\r\nfunction ct_toggle_depended(obj, secondary){\r\n\r\n secondary = secondary || null;\r\n\r\n\tvar depended = jQuery(obj.data('depended')),\r\n\t\tstate = obj.data('state');\r\n\t\t\r\n\tif(!state && !secondary){\r\n\t\tobj.data('state', true);\r\n\t\tdepended.removeProp('disabled');\r\n\t}else{\r\n\t\tobj.data('state', false);\r\n\t\tdepended.prop('disabled', true);\r\n\t\tdepended.removeProp('checked');\r\n\t\tif(depended.data('depended'))\r\n\t\t\tct_toggle_depended(depended, true);\r\n\t}\r\n}\r\n\r\njQuery(document).ready(function(){\r\n\t\r\n\t// Setting dependences\r\n\t// jQuery('#ct_accurate_check') .data({'depended': '#ct_allow_date_range', 'state': false});\r\n\tjQuery('#ct_allow_date_range').data({'depended': '.ct_date', 'state': false});\r\n\t\r\n\t// Prev check parameters\r\n\tif(ct_prev_accurate){\r\n\t\tjQuery(\"#ct_accurate_check\").prop('checked', true);\r\n\t}\r\n\tif(ct_prev_from){\r\n\t\tjQuery(\"#ct_allow_date_range\").prop('checked', true).data('state', true);\r\n\t\tjQuery(\"#ct_date_range_from\").removeProp('disabled').val(ct_prev_from);\r\n\t\tjQuery(\"#ct_date_range_till\").removeProp('disabled').val(ct_prev_till);\r\n\t}\r\n\t\r\n\t// Toggle dependences\r\n\tjQuery(\"#ct_allow_date_range, #ct_accurate_check\").on('change', function(){\r\n\t\tct_toggle_depended(jQuery(this));\r\n\t});\r\n\t\t\r\n\tvar dates = jQuery('#ct_date_range_from, #ct_date_range_till').datepicker(\r\n\t\t{\r\n\t\t\tdateFormat: 'M d yy',\r\n\t\t\tmaxDate:\"+0D\",\r\n\t\t\tchangeMonth:true,\r\n\t\t\tchangeYear:true,\r\n\t\t\tshowAnim: 'slideDown',\r\n\t\t\tonSelect: function(selectedDate){\r\n\t\t\tvar option = this.id == \"ct_date_range_from\" ? \"minDate\" : \"maxDate\",\r\n\t\t\t\tinstance = jQuery( this ).data( \"datepicker\" ),\r\n\t\t\t\tdate = jQuery.datepicker.parseDate(\r\n\t\t\t\t\tinstance.settings.dateFormat || jQuery.datepicker._defaults.dateFormat,\r\n\t\t\t\t\tselectedDate, instance.settings);\r\n\t\t\t\tdates.not(this).datepicker(\"option\", option, date);\r\n\t\t\t}\r\n\t\t}\r\n\t);\r\n\t\t\r\n\tfunction ct_start_check(continue_check){\r\n\r\n\t continue_check = continue_check || null;\r\n\t\t\r\n\t\tif(jQuery('#ct_allow_date_range').is(':checked')){\r\n\t\t\t\r\n\t\t\tct_date_from = jQuery('#ct_date_range_from').val();\r\n\t\t\tct_date_till = jQuery('#ct_date_range_till').val();\r\n\t\t\t\t\t\t\r\n\t\t\tif(!(ct_date_from !== '' && ct_date_till !== '')){\r\n\t\t\t\talert('Please, specify a date range.');\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(jQuery('#ct_accurate_check').is(':checked')){\r\n\t\t\tct_accurate_check = true;\r\n\t\t}\r\n\t\t\r\n\t\tjQuery('.ct_to_hide').hide();\r\n\t\tjQuery('#ct_working_message').show();\r\n\t\tjQuery('#ct_preloader').show();\r\n\t\tjQuery('#ct_pause').show();\r\n\t\t\r\n\t\tct_working=true;\r\n\t\t\r\n\t\tif(continue_check){\r\n\t\t\tct_show_users_info();\r\n\t\t\tct_send_users();\r\n\t\t}else\r\n\t\t\tct_clear_users();\r\n\t\t\r\n\t}\r\n\t\r\n\t// Check users\r\n\tjQuery(\"#ct_check_spam_button\").click(function(){\r\n\t\tdocument.cookie = 'ct_paused_users_check=0; path=/';\r\n\t\tct_start_check(false);\r\n\t});\r\n\tjQuery(\"#ct_proceed_check_button\").click(function(){\r\n\t\tct_start_check(true);\r\n\t});\r\n\t\r\n\t// Pause the check\r\n\tjQuery('#ct_pause').on('click', function(){\r\n\t\tct_pause = true;\r\n\t\tvar ct_check = {\r\n\t\t\t'accurate': ct_accurate_check,\r\n\t\t\t'from' : ct_date_from,\r\n\t\t\t'till' : ct_date_till\r\n\t\t};\r\n\t\tdocument.cookie = 'ct_paused_users_check=' + JSON.stringify(ct_check) + '; path=/';\r\n\t});\r\n\t\r\n\tjQuery(\"#ct_insert_users\").click(function(){\r\n\t\tct_insert_users();\r\n\t});\r\n\t\r\n\tjQuery(\"#ct_delete_users\").click(function(){\r\n\t\tct_insert_users(true);\r\n\t});\r\n\t\r\n\t// Delete all spam users\r\n\tjQuery(\"#ct_delete_all_users\").click(function(){\r\n\t\t\r\n\t\tif (!confirm(ctUsersCheck.ct_confirm_deletion_all))\r\n\t\t\treturn false;\r\n\t\t\r\n\t\tjQuery('.ct_to_hide').hide();\r\n\t\tjQuery('#ct_checking_status').hide();\r\n\t\tjQuery('#ct_search_info').hide();\r\n\t\tjQuery('#ct_preloader').show();\r\n\t\tjQuery('#ct_deleting_message').show();\r\n\t\tjQuery('#ct_stop_deletion').show();\r\n\t\tjQuery(\"html, body\").animate({ scrollTop: 0 }, \"slow\");\r\n\t\tct_delete_all_users();\r\n\t});\r\n\tjQuery(\"#ct_delete_checked_users\").click(function(){\r\n\t\tif (!confirm(ctUsersCheck.ct_confirm_deletion_checked))\r\n\t\t\treturn false;\r\n\t\tct_delete_checked_users();\r\n\t});\r\n\t\r\n\tjQuery(\"#ct_stop_deletion\").click(function(){\r\n\t\tlocation.href='users.php?page=ct_check_users';\r\n\t});\r\n\t\r\n\tjQuery(\".cleantalk_delete_user_button\").click(function(){\r\n\t\tid = jQuery(this).attr(\"data-id\");\r\n\t\tids=Array();\r\n\t\tids[0]=id;\r\n\t\tvar data = {\r\n\t\t\t'action': 'ajax_delete_checked_users',\r\n\t\t\t'security': ct_ajax_nonce,\r\n\t\t\t'ids':ids\r\n\t\t};\r\n\t\tjQuery.ajax({\r\n\t\t\ttype: \"POST\",\r\n\t\t\turl: ajaxurl,\r\n\t\t\tdata: data,\r\n\t\t\tsuccess: function(msg){\r\n\t\t\t\tct_close_animate=false;\r\n\t\t\t\tjQuery(\"#comment-\"+id).hide();\r\n\t\t\t\tjQuery(\"#comment-\"+id).remove();\r\n\t\t\t\tct_close_animate=true;\r\n\t\t\t},\r\n\t\t\ttimeout: 15000\r\n\t\t});\r\n\t});\r\n\t\r\n\tjQuery(\".cleantalk_delete_user_button\").click(function(){\r\n\t\tid = jQuery(this).attr(\"data-id\");\r\n\t\tanimate_comment(0.3, id);\r\n\t});\r\n\t\t\r\n\t//Show/hide action on mouse over/out\r\n\tjQuery(\".cleantalk_user\").mouseover(function(){\r\n\t\tid = jQuery(this).attr(\"data-id\");\r\n\t\tjQuery(\"#cleantalk_delete_user_\"+id).show();\r\n\t});\r\n\tjQuery(\".cleantalk_user\").mouseout(function(){\r\n\t\tid = jQuery(this).attr(\"data-id\");\r\n\t\tjQuery(\"#cleantalk_delete_user_\"+id).hide();\r\n\t});\r\n\t\t\r\n\t//Approve button\r\n\tjQuery(\".cleantalk_delete_from_list_button\").click(function(){\r\n\t\tct_id = jQuery(this).attr(\"data-id\");\r\n\t\t\r\n\t\t// Approving\r\n\t\tvar data = {\r\n\t\t\t'action': 'ajax_ct_approve_user',\r\n\t\t\t'security': ct_ajax_nonce,\r\n\t\t\t'id': ct_id\r\n\t\t};\r\n\t\tjQuery.ajax({\r\n\t\t\ttype: \"POST\",\r\n\t\t\turl: ajaxurl,\r\n\t\t\tdata: data,\r\n\t\t\tsuccess: function(msg){\r\n\t\t\t\tjQuery(\"#comment-\"+ct_id).fadeOut('slow', function(){\r\n\t\t\t\t\tjQuery(\"#comment-\"+ct_id).remove();\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t});\r\n\t\t\r\n\t\t// Positive feedback\r\n\t\tvar data = {\r\n\t\t\t'action': 'ct_feedback_user',\r\n\t\t\t'security': ct_ajax_nonce,\r\n\t\t\t'user_id': ct_id,\r\n\t\t\t'status': 'approve'\r\n\t\t};\r\n\t\tjQuery.ajax({\r\n\t\t\ttype: \"POST\",\r\n\t\t\turl: ajaxurl,\r\n\t\t\tdata: data,\r\n\t\t\tsuccess: function(msg){\r\n\t\t\t\tif(msg == 1){\r\n\t\t\t\t\t// Success\r\n\t\t\t\t}\r\n\t\t\t\tif(msg == 0){\r\n\t\t\t\t\t// Error occurred\r\n\t\t\t\t}\r\n\t\t\t\tif(msg == 'no_hash'){\r\n\t\t\t\t\t// No hash\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\terror: function(jqXHR, textStatus, errorThrown) {\r\n\t\t\t\t\r\n\t\t\t},\r\n\t\t\ttimeout: 5000\r\n\t\t});\r\n\t\t\r\n\t});\r\n\t\r\n\t// Request to Download CSV file.\r\n\tjQuery(\"#ct_get_csv_file\").click(function(){\r\n\t\tvar data = {\r\n\t\t\t'action': 'ajax_ct_get_csv_file',\r\n\t\t\t'security': ct_ajax_nonce,\r\n\t\t\t'filename': ctUsersCheck.ct_csv_filename\r\n\t\t};\r\n\t\tjQuery.ajax({\r\n\t\t\ttype: \"POST\",\r\n\t\t\turl: ajaxurl,\r\n\t\t\tdata: data,\r\n\t\t\tsuccess: function(msg){\r\n\t\t\t\tif(parseInt(msg)==0)\r\n\t\t\t\t\talert(ctUsersCheck.ct_bad_csv);\r\n\t\t\t\telse\r\n\t\t\t\t\tjQuery(\"#ct_csv_wrapper\").html(\"<iframe src='\"+location.protocol+\"//\"+location.hostname+\"/wp-content/plugins/cleantalk-spam-protect/check-results/\"+ctUsersCheck.ct_csv_filename+\".csv'></iframe>\");\r\n\t\t\t},\r\n\t\t});\r\n\t});\r\n});"]}
|
1 |
+
{"version":3,"sources":["cleantalk-users-checkspam.js"],"names":["String","prototype","printf","formatted","this","arg","arguments","before_formatted","substring","indexOf","after_formatted","length","ct_working","document","cookie","ct_new_check","ct_cooling_down_flag","ct_close_animate","ct_accurate_check","ct_pause","ct_prev_accurate","ctUsersCheck","ct_prev_from","ct_prev_till","ct_cool_down_time","ct_requests_counter","ct_max_requests","ct_ajax_nonce","ct_users_total","ct_users_checked","ct_users_spam","ct_users_bad","ct_unchecked","ct_date_from","ct_date_till","apbct_cookie__get","names","prefixes","split","forEach","item","i","arr","curr","trim","name","all","prefix","apbct_get_cookie","animate_comment","to","id","jQuery","fadeTo","ct_clear_users","from","till","is","val","data","action","security","ajax","type","url","ajaxurl","success","msg","ct_show_users_info","ct_send_users","ct_cooling_down_toggle","setTimeout","check_amount","new_check","unchecked","amount","parseJSON","parseInt","error","confirm","error_message","new_href","location","href","end","hide","checked","spam","bad","status_string","ct_status_string","ct_status_string_warning","html","jqXHR","textStatus","errorThrown","show","timeout","message","ct_toggle_depended","obj","secondary","depended","prop","removeProp","ct_start_check","continue_check","alert","ready","state","on","datepicker","setDefaults","regional","dates","dateFormat","maxDate","changeMonth","changeYear","showAnim","onSelect","selectedDate","option","instance","date","parseDate","settings","_defaults","not","click","ct_check","accurate","JSON","stringify","ct_id","attr","fadeOut","remove","user_id","status","e","filename","ct_csv_filename","target","addClass","ct_bad_csv","URL","createObjectURL","Blob","dummy","createElement","download","body","appendChild","removeClass"],"mappings":"AACAA,OAAOC,UAAUC,OAAS,WACtB,IAAIC,EAAYC,KAChB,IAAK,IAAIC,KAAOC,UAAY,CAC9B,IAAIC,EAAmBJ,EAAUK,UAAU,EAAGL,EAAUM,QAAQ,KAAM,IAClEC,EAAmBP,EAAUK,UAAUL,EAAUM,QAAQ,KAAM,GAAG,EAAGN,EAAUQ,QACnFR,EAAYI,EAAmBD,UAAUD,GAAOK,EAE9C,OAAOP,GAOX,IAAIS,aAHJC,SAASC,OAAS,sCAIjBC,cAAe,EACfC,sBAAuB,EACvBC,kBAAmB,EACnBC,mBAAoB,EACpBC,UAAW,EACXC,iBAAmBC,aAAaD,iBAChCE,aAAmBD,aAAaC,aAChCC,aAAmBF,aAAaE,aAE7BC,kBAAoB,IACvBC,oBAAsB,EACtBC,gBAAkB,GAEfC,cAAgBN,aAAaM,cAChCC,eAAiB,EACjBC,iBAAmB,EACnBC,cAAgB,EAChBC,aAAe,EACfC,aAAe,QACfC,aAAe,EACfC,aAAe,EAGhB,SAASC,kBAAkBC,EAAOC,GACjC,IAAIvB,EAAS,GAuBb,MArBmB,iBADnBsB,EAAQA,GAAS,QACYA,EAAQA,EAAME,SAE3B,UADhBD,EAAWA,GAAY,CAAC,SAAU,UACDA,EAAW,MACtB,iBAAZA,IAAsBA,EAAWA,EAASC,SACpDzB,SAASC,OAAOwB,MAAM,KAAKC,QAAQ,SAASC,EAAMC,EAAGC,GACpD,IAAIC,EAAOH,EAAKI,OAAON,MAAM,KAE1BF,GACFA,EAAMG,QAAQ,SAASM,EAAMJ,EAAGK,GAC5BH,EAAK,KAAOE,IACd/B,EAAO6B,EAAK,IAAOA,EAAK,MAIxBN,GACFA,EAASE,QAAQ,SAASQ,EAAQN,EAAGK,GACL,IAA5BH,EAAK,GAAGlC,QAAQsC,KAClBjC,EAAO6B,EAAK,IAAOA,EAAK,QAIrB7B,EAGR,SAASkC,iBAAkBH,GAC1B,IAAI/B,EAASqB,kBAAmBU,EAAMA,GACtC,MAAqB,iBAAX/B,QAA8C,IAAhBA,EAAO+B,GACvC/B,EAAO+B,GAEP,KAGT,SAASI,gBAAgBC,EAAGC,GACxBlC,iBACQ,KAAPiC,EACFE,OAAO,YAAYD,GAAIE,OAAO,IAAIH,EAAG,WACpCD,gBAAgB,EAAEE,KAGnBC,OAAO,YAAYD,GAAIE,OAAO,IAAIH,EAAG,WACpCD,gBAAgB,GAAIE,KAItBlC,kBAAiB,EAInB,SAASqC,iBAER,IAAIC,EAAO,EAAGC,EAAO,EAClBJ,OAAO,wBAAwBK,GAAG,cACpCF,EAAOH,OAAO,uBAAuBM,MACrCF,EAAOJ,OAAO,uBAAuBM,OAEtC,IAAIC,EAAO,CACVC,OAAa,mBACbC,SAAalC,cACb4B,KAAaA,EACbC,KAAaA,GAGdJ,OAAOU,KAAK,CACXC,KAAM,OACNC,IAAKC,QACLN,KAAMA,EACNO,QAAS,SAASC,GACjBC,qBACAC,mBAQH,SAASC,yBACRtD,sBAAuB,EACvBqD,gBACAD,qBAGD,SAASC,gBAER,IAA4B,IAAzBrD,qBAAH,CAGA,GAA0BU,iBAAvBD,oBAIF,OAHA8C,WAAWD,uBAAwB9C,wBAEnCR,uBADAS,oBAAsB,IAItBA,sBAGD,IAAI+C,EAAexB,iBAAiB,0BAEhCW,EAAO,CACVC,OAAQ,mBACRC,SAAUlC,cACV8C,UAAW1D,aACX2D,UAAW1C,aACX2C,OAAQH,GAGNtD,oBACFyC,EAAqB,gBAAI,GAEvB1B,cAAgBC,eAClByB,EAAW,KAAI1B,aACf0B,EAAW,KAAIzB,cAGhBkB,OAAOU,KAAK,CACXC,KAAM,OACNC,IAAKC,QACLN,KAAMA,EACNO,QAAS,SAASC,GAIjB,GAFAA,EAAMf,OAAOwB,UAAUT,GAEpBU,SAASV,EAAIW,OAEf,GADAlE,YAAW,EACPmE,QAAQZ,EAAIa,cAAc,6BAM7BX,oBAN0D,CAC1D,IAAIY,EAAW,gCACI,GAAhBhD,cAAqC,GAAhBC,eACvB+C,GAAU,SAAShD,aAAa,SAASC,cAC1CgD,SAASC,KAAOF,OAKjB,GADAlE,cAAe,EACS,GAArB8D,SAASV,EAAIiB,MAAyB,GAAZjE,SAAiB,CACrB,GAArB0D,SAASV,EAAIiB,OACfvE,SAASC,OAAS,mCACnBF,YAAW,EACXwC,OAAO,uBAAuBiC,OAC1BJ,EAAW,4CACI,GAAhBhD,cAAqC,GAAhBC,eACvB+C,GAAU,SAAShD,aAAa,SAASC,cAC1CgD,SAASC,KAAOF,OACX,GAAwB,GAArBJ,SAASV,EAAIiB,KAAU,CAC/BvD,kBAAoBsC,EAAImB,QACxBxD,eAAiBqC,EAAIoB,KACrBxD,cAAgBoC,EAAIqB,IACpBxD,aAAeJ,eAAiBC,iBAAmBE,aACnD,IACI0D,GADAA,EAAgBzF,OAAOqB,aAAaqE,mBACNxF,OAAO2B,iBAAkBC,cAAeC,cAC7C,EAA1B8C,SAAS/C,iBACX2D,GAAiBpE,aAAasE,0BAC/BvC,OAAO,uBAAuBwC,KAAKH,GACnCrC,OAAO,qBAAqBiC,OAC5BhB,kBAIGS,MAAO,SAASe,EAAOC,EAAYC,GACtB,GAAfvB,IACFA,GAAgB,GAChB3D,SAASC,OAAS,0BAA4B0D,EAAe,YAE9DpB,OAAO,qBAAqB4C,OAC5B5C,OAAO,yBAAyBwC,KAAKE,GACrC1C,OAAO,sBAAsBwC,KAAK,eAClCrB,WAAWF,gBAAiB,MAEvB4B,QAAS,QAGjB,SAAS7B,qBAER,GAAIxD,WAAY,CAEf,GAA2B,GAAxBI,qBAGF,OAFAoC,OAAO,sBAAsBwC,KAAK,uDAClCxC,OAAO,sBAAsB4C,OAQ9B,GALC5C,OAAO,sBAAsBiC,OAG9Bd,WAAWH,mBAAoB,MAEzBxC,eAAgB,CAErB,IAAI+B,EAAO,CACVC,OAAU,kBACVC,SAAYlC,eAGTM,cAAgBC,eACnByB,EAAW,KAAI1B,aACf0B,EAAW,KAAIzB,cAGhBkB,OAAOU,KAAK,CACXC,KAAM,OACNC,IAAKC,QACLN,KAAMA,EACNO,QAAS,SAASC,GACjBA,EAAMf,OAAOwB,UAAUT,GACvBf,OAAO,uBAAuBwC,KAAKzB,EAAI+B,SACvCpE,cAAmBqC,EAAIoB,KACvB1D,iBAAmBsC,EAAImB,QACvBvD,aAAmBoC,EAAIqB,KAExBV,MAAO,SAAUe,EAAOC,EAAYC,GACnC3C,OAAO,qBAAqB4C,OAC5B5C,OAAO,yBAAyBwC,KAAKE,GACrC1C,OAAO,sBAAsBwC,KAAK,cAClCrB,WAAWH,qBAAsB,MAElC6B,QAAS,SAMb,SAASE,mBAAmBC,EAAKC,GAE7BA,EAAYA,GAAa,KAE5B,IAAIC,EAAWlD,OAAOgD,EAAIzC,KAAK,aACtByC,EAAIzC,KAAK,UAEJ0C,GAIbD,EAAIzC,KAAK,SAAS,GAClB2C,EAASC,KAAK,YAAY,GAC1BD,EAASE,WAAW,WACjBF,EAAS3C,KAAK,aAChBwC,mBAAmBG,GAAU,KAP9BF,EAAIzC,KAAK,SAAS,GAClB2C,EAASE,WAAW,aAWtB,SAASC,eAAgBC,GAExBA,EAAiBA,GAAkB,KAEhCtD,OAAO,wBAAwBK,GAAG,cAEpCxB,aAAemB,OAAO,uBAAuBM,MAC7CxB,aAAekB,OAAO,uBAAuBM,MAEvB,KAAjBzB,cAAwC,KAAjBC,cAC3ByE,MAAM,kCAKLvD,OAAO,sBAAsBK,GAAG,cAClCvC,mBAAoB,GAGrBkC,OAAO,eAAeiC,OACtBjC,OAAO,uBAAuB4C,OAC9B5C,OAAO,iBAAiB4C,OACxB5C,OAAO,aAAa4C,OAEpBpF,YAAa,EAET8F,GACHtC,qBACAC,iBAEAf,kBAKFF,OAAOvC,UAAU+F,MAAM,WAItBxD,OAAO,wBAAwBO,KAAK,CAAC2C,SAAY,WAAYO,OAAS,IAGnEzF,kBACFgC,OAAO,sBAAsBmD,KAAK,WAAW,GAE3CjF,eACF8B,OAAO,wBAAwBmD,KAAK,WAAW,GAAM5C,KAAK,SAAS,GACnEP,OAAO,uBAAuBoD,WAAW,YAAY9C,IAAIpC,cACzD8B,OAAO,uBAAuBoD,WAAW,YAAY9C,IAAInC,eAI1D6B,OAAO,4CAA4C0D,GAAG,SAAU,WAC/DX,mBAAmB/C,OAAOhD,SAG3BgD,OAAO2D,WAAWC,YAAY5D,OAAO2D,WAAWE,SAAa,IAC7D,IAAIC,EAAQ9D,OAAO,4CAA4C2D,WAC9D,CACCI,WAAY,SACZC,QAAQ,MACRC,aAAY,EACZC,YAAW,EACXC,SAAU,YACVC,SAAU,SAASC,GACnB,IAAIC,EAAoB,sBAAXtH,KAAK+C,GAA6B,UAAY,UAC1DwE,EAAWvE,OAAQhD,MAAOuD,KAAM,cAChCiE,EAAOxE,OAAO2D,WAAWc,UACxBF,EAASG,SAASX,YAAc/D,OAAO2D,WAAWgB,UAAUZ,WAC5DM,EAAcE,EAASG,UACxBZ,EAAMc,IAAI5H,MAAM2G,WAAW,SAAUW,EAAQE,MAMhDxE,OAAO,yBAAyB6E,MAAM,WAErCxB,iBADA5F,SAASC,OAAS,sCAGnBsC,OAAO,4BAA4B6E,MAAM,WACxCxB,gBAAe,KAIhBrD,OAAO,aAAa0D,GAAG,QAAS,WAC/B3F,UAAW,EACX,IAAI+G,EAAW,CACdC,SAAYjH,kBACZqC,KAAYtB,aACZuB,KAAYtB,cAEbrB,SAASC,OAAS,yBAA2BsH,KAAKC,UAAUH,GAAY,aAIzE9E,OAAO,sCAAsC6E,MAAM,WAClDK,MAAQlF,OAAOhD,MAAMmI,KAAK,WAG1B,IAAI5E,EAAO,CACVC,OAAU,uBACVC,SAAYlC,cACZwB,GAAMmF,OAEPlF,OAAOU,KAAK,CACXC,KAAM,OACNC,IAAKC,QACLN,KAAMA,EACNO,QAAS,SAASC,GACjBf,OAAO,YAAYkF,OAAOE,QAAQ,OAAQ,WACzCpF,OAAO,YAAYkF,OAAOG,cAMzB9E,EAAO,CACVC,OAAU,mBACVC,SAAYlC,cACZ+G,QAAWJ,MACXK,OAAU,WAEXvF,OAAOU,KAAK,CACXC,KAAM,OACNC,IAAKC,QACLN,KAAMA,EACNO,QAAS,SAASC,KAWlBW,MAAO,SAASe,EAAOC,EAAYC,KAGnCE,QAAS,QAMX7C,OAAO,oBAAoB6E,MAAM,SAAUW,GAC1C,IAAIjF,EAAO,CACVC,OAAU,uBACVC,SAAYlC,cACZkH,SAAYxH,aAAayH,iBAE1B1F,OAAO,IAAMwF,EAAEG,OAAO5F,IAAI6F,SAAS,YACnC5F,OAAOU,KAAK,CACXC,KAAM,OACNC,IAAKC,QACLN,KAAMA,EACNO,QAAS,SAASC,GACjB,GAAsB,IAAlBU,SAASV,GACZwC,MAAMtF,aAAa4H,gBACb,CACN,IAAIjF,EAAMkF,IAAIC,gBAAgB,IAAIC,KAAK,CAACjF,KAEpCkF,EAAQxI,SAASyI,cAAc,KACnCD,EAAMlE,KAAOnB,EACbqF,EAAME,SAAWlI,aAAayH,gBAAkB,OAEhDjI,SAAS2I,KAAKC,YAAYJ,GAC1BA,EAAMpB,QAEP7E,OAAO,IAAMwF,EAAEG,OAAO5F,IAAIuG,YAAY","file":"cleantalk-users-checkspam.min.js","sourcesContent":["// Printf for JS\r\nString.prototype.printf = function(){\r\n var formatted = this;\r\n for( var arg in arguments ) {\r\n\t\tvar before_formatted = formatted.substring(0, formatted.indexOf(\"%s\", 0));\r\n\t\tvar after_formatted = formatted.substring(formatted.indexOf(\"%s\", 0)+2, formatted.length);\r\n\t\tformatted = before_formatted + arguments[arg] + after_formatted;\r\n }\r\n return formatted;\r\n};\r\n\r\n// Set deafult amount to check by request.\r\ndocument.cookie = \"ct_check_users__amount=\" + 100 + \"; path=/\";\r\n\r\n// Flags\r\nvar ct_working = false,\r\n\tct_new_check = true,\r\n\tct_cooling_down_flag = false,\r\n\tct_close_animate = true,\r\n\tct_accurate_check = false,\r\n\tct_pause = false,\r\n\tct_prev_accurate = ctUsersCheck.ct_prev_accurate,\r\n\tct_prev_from = ctUsersCheck.ct_prev_from,\t\r\n\tct_prev_till = ctUsersCheck.ct_prev_till;\r\n// Settings\r\nvar ct_cool_down_time = 90000,\r\n\tct_requests_counter = 0,\r\n\tct_max_requests = 60;\r\n// Variables\r\nvar ct_ajax_nonce = ctUsersCheck.ct_ajax_nonce,\r\n\tct_users_total = 0,\r\n\tct_users_checked = 0,\r\n\tct_users_spam = 0,\r\n\tct_users_bad = 0,\r\n\tct_unchecked = 'unset',\r\n\tct_date_from = 0,\r\n\tct_date_till = 0;\r\n\r\n/* Function: Reuturns cookie with prefix */\r\nfunction apbct_cookie__get(names, prefixes){\r\n\tvar cookie = {};\r\n\tnames = names || null;\r\n\tif(typeof names == 'string') names = names.split();\r\n\tprefixes = prefixes || ['apbct_', 'ct_'];\r\n\tif(prefixes === 'none') prefixes = null;\r\n\tif(typeof prefixes == 'string') prefixes = prefixes.split();\r\n\tdocument.cookie.split(';').forEach(function(item, i, arr){\r\n\t\tvar curr = item.trim().split('=');\r\n\t\t// Detect by full cookie name\r\n\t\tif(names){\r\n\t\t\tnames.forEach(function(name, i, all){\r\n\t\t\t\tif(curr[0] === name)\r\n\t\t\t\t\tcookie[curr[0]] = (curr[1]);\r\n\t\t\t});\r\n\t\t}\r\n\t\t// Detect by name prefix\r\n\t\tif(prefixes){\r\n\t\t\tprefixes.forEach(function(prefix, i, all){\r\n\t\t\t\tif(curr[0].indexOf(prefix) === 0)\r\n\t\t\t\t\tcookie[curr[0]] = (curr[1]);\r\n\t\t\t});\r\n\t\t}\r\n\t});\r\n\treturn cookie;\r\n}\r\n\r\nfunction apbct_get_cookie( name ){\r\n\tvar cookie = apbct_cookie__get( name, name );\r\n\tif(typeof cookie === 'object' && typeof cookie[name] != 'undefined'){\r\n\t\treturn cookie[name];\r\n\t}else\r\n\t\treturn null;\r\n}\r\n\r\nfunction animate_comment(to,id){\r\n\tif(ct_close_animate){\r\n\t\tif(to === 0.3){\r\n\t\t\tjQuery('#comment-'+id).fadeTo(200,to,function(){\r\n\t\t\t\tanimate_comment(1,id)\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tjQuery('#comment-'+id).fadeTo(200,to,function(){\r\n\t\t\t\tanimate_comment(0.3,id)\r\n\t\t\t});\r\n\t\t}\r\n\t}else{\r\n\t\tct_close_animate=true;\r\n\t}\r\n}\r\n\r\nfunction ct_clear_users(){\r\n\r\n\tvar from = 0, till = 0;\r\n\tif(jQuery('#ct_allow_date_range').is(':checked')) {\r\n\t\tfrom = jQuery('#ct_date_range_from').val();\r\n\t\ttill = jQuery('#ct_date_range_till').val();\r\n\t}\r\n\tvar data = {\r\n\t\t'action' : 'ajax_clear_users',\r\n\t\t'security' : ct_ajax_nonce,\r\n\t\t'from' : from,\r\n\t\t'till' : till\r\n\t};\r\n\r\n\tjQuery.ajax({\r\n\t\ttype: \"POST\",\r\n\t\turl: ajaxurl,\r\n\t\tdata: data,\r\n\t\tsuccess: function(msg){\r\n\t\t\tct_show_users_info();\r\n\t\t\tct_send_users();\r\n\t\t}\r\n\t});\r\n\r\n}\r\n\r\n//Continues the check after cooldown time\r\n//Called by ct_send_users();\r\nfunction ct_cooling_down_toggle(){\r\n\tct_cooling_down_flag = false;\r\n\tct_send_users();\r\n\tct_show_users_info();\r\n}\r\n\r\nfunction ct_send_users(){\r\n\t\r\n\tif(ct_cooling_down_flag === true)\r\n\t\treturn;\r\n\t\r\n\tif(ct_requests_counter >= ct_max_requests){\r\n\t\tsetTimeout(ct_cooling_down_toggle, ct_cool_down_time);\r\n\t\tct_requests_counter = 0;\r\n\t\tct_cooling_down_flag = true;\r\n\t\treturn;\r\n\t}else{\r\n\t\tct_requests_counter++;\r\n\t}\r\n\r\n\tvar check_amount = apbct_get_cookie('ct_check_users__amount');\r\n\r\n\tvar data = {\r\n\t\taction: 'ajax_check_users',\r\n\t\tsecurity: ct_ajax_nonce,\r\n\t\tnew_check: ct_new_check,\r\n\t\tunchecked: ct_unchecked,\r\n\t\tamount: check_amount\r\n\t};\r\n\t\r\n\tif(ct_accurate_check)\r\n\t\tdata['accurate_check'] = true;\r\n\t\r\n\tif(ct_date_from && ct_date_till){\r\n\t\tdata['from'] = ct_date_from;\r\n\t\tdata['till'] = ct_date_till;\r\n\t}\r\n\t\r\n\tjQuery.ajax({\r\n\t\ttype: \"POST\",\r\n\t\turl: ajaxurl,\r\n\t\tdata: data,\r\n\t\tsuccess: function(msg){\r\n\t\t\t\r\n\t\t\tmsg = jQuery.parseJSON(msg);\r\n\t\t\t\r\n\t\t\tif(parseInt(msg.error)){\r\n\t\t\t\tct_working=false;\r\n\t\t\t\tif(!confirm(msg.error_message+\". Do you want to proceed?\")){\r\n\t\t\t\t\tvar new_href = 'users.php?page=ct_check_users';\r\n\t\t\t\t\tif(ct_date_from != 0 && ct_date_till != 0)\r\n\t\t\t\t\t\tnew_href+='&from='+ct_date_from+'&till='+ct_date_till;\r\n\t\t\t\t\tlocation.href = new_href;\r\n\t\t\t\t}else\r\n\t\t\t\t\tct_send_users();\r\n\t\t\t}else{\r\n\t\t\t\tct_new_check = false;\r\n\t\t\t\tif(parseInt(msg.end) == 1 || ct_pause == true){\r\n\t\t\t\t\tif(parseInt(msg.end) == 1)\r\n\t\t\t\t\t\tdocument.cookie = 'ct_paused_users_check=0; path=/';\r\n\t\t\t\t\tct_working=false;\r\n\t\t\t\t\tjQuery('#ct_working_message').hide();\r\n\t\t\t\t\tvar new_href = 'users.php?page=ct_check_users&ct_worked=1';\r\n\t\t\t\t\tif(ct_date_from != 0 && ct_date_till != 0)\r\n\t\t\t\t\t\tnew_href+='&from='+ct_date_from+'&till='+ct_date_till;\r\n\t\t\t\t\tlocation.href = new_href;\r\n\t\t\t\t}else if(parseInt(msg.end) == 0){\r\n\t\t\t\t\tct_users_checked += msg.checked;\r\n\t\t\t\t\tct_users_spam += msg.spam;\r\n\t\t\t\t\tct_users_bad += msg.bad;\r\n\t\t\t\t\tct_unchecked = ct_users_total - ct_users_checked - ct_users_bad;\r\n\t\t\t\t\tvar status_string = String(ctUsersCheck.ct_status_string);\r\n\t\t\t\t\tvar status_string = status_string.printf(ct_users_checked, ct_users_spam, ct_users_bad);\r\n\t\t\t\t\tif(parseInt(ct_users_spam) > 0)\r\n\t\t\t\t\t\tstatus_string += ctUsersCheck.ct_status_string_warning;\r\n\t\t\t\t\tjQuery('#ct_checking_status').html(status_string);\r\n\t\t\t\t\tjQuery('#ct_error_message').hide();\r\n\t\t\t\t\tct_send_users();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n error: function(jqXHR, textStatus, errorThrown) {\r\n\t\t\tif(check_amount > 20){\r\n\t\t\t\tcheck_amount -= 20;\r\n\t\t\t\tdocument.cookie = \"ct_check_users__amount=\" + check_amount + \"; path=/\";\r\n\t\t\t}\r\n\t\t\tjQuery('#ct_error_message').show();\r\n\t\t\tjQuery('#cleantalk_ajax_error').html(textStatus);\r\n\t\t\tjQuery('#cleantalk_js_func').html('Check users');\r\n\t\t\tsetTimeout(ct_send_users(), 3000);\r\n },\r\n timeout: 25000\r\n\t});\r\n}\r\nfunction ct_show_users_info(){\r\n\t\r\n\tif( ct_working ){\r\n\t\t\r\n\t\tif(ct_cooling_down_flag == true){\r\n\t\t\tjQuery('#ct_cooling_notice').html('Waiting for API to cool down. (About a minute)');\r\n\t\t\tjQuery('#ct_cooling_notice').show();\r\n\t\t\treturn;\t\t\t\r\n\t\t}else{\r\n\t\t\tjQuery('#ct_cooling_notice').hide();\r\n\t\t}\r\n\t\t\r\n\t\tsetTimeout(ct_show_users_info, 3000);\r\n\t\t\r\n\t\tif( ! ct_users_total ){\r\n\t\t\t\r\n\t\t\tvar data = {\r\n\t\t\t\t'action': 'ajax_info_users',\r\n\t\t\t\t'security': ct_ajax_nonce\r\n\t\t\t};\r\n\t\t\t\r\n\t\t\tif( ct_date_from && ct_date_till ){\r\n\t\t\t\tdata['from'] = ct_date_from;\r\n\t\t\t\tdata['till'] = ct_date_till;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tjQuery.ajax({\r\n\t\t\t\ttype: \"POST\",\r\n\t\t\t\turl: ajaxurl,\r\n\t\t\t\tdata: data,\r\n\t\t\t\tsuccess: function(msg){\r\n\t\t\t\t\tmsg = jQuery.parseJSON(msg);\r\n\t\t\t\t\tjQuery('#ct_checking_status').html(msg.message);\r\n\t\t\t\t\tct_users_spam = msg.spam;\r\n\t\t\t\t\tct_users_checked = msg.checked;\r\n\t\t\t\t\tct_users_bad = msg.bad;\r\n\t\t\t\t},\r\n\t\t\t\terror: function (jqXHR, textStatus, errorThrown){\r\n\t\t\t\t\tjQuery('#ct_error_message').show();\r\n\t\t\t\t\tjQuery('#cleantalk_ajax_error').html(textStatus);\r\n\t\t\t\t\tjQuery('#cleantalk_js_func').html('Show users');\r\n\t\t\t\t\tsetTimeout(ct_show_users_info(), 3000);\r\n\t\t\t\t},\r\n\t\t\t\ttimeout: 15000\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}\r\n// Function to toggle dependences\r\nfunction ct_toggle_depended(obj, secondary){\r\n\r\n secondary = secondary || null;\r\n\r\n\tvar depended = jQuery(obj.data('depended')),\r\n\t\tstate = obj.data('state');\r\n\t\t\r\n\tif(!state && !secondary){\r\n\t\tobj.data('state', true);\r\n\t\tdepended.removeProp('disabled');\r\n\t}else{\r\n\t\tobj.data('state', false);\r\n\t\tdepended.prop('disabled', true);\r\n\t\tdepended.removeProp('checked');\r\n\t\tif(depended.data('depended'))\r\n\t\t\tct_toggle_depended(depended, true);\r\n\t}\r\n}\r\n\r\n// Main function of checking\r\nfunction ct_start_check( continue_check ){\r\n\r\n\tcontinue_check = continue_check || null;\r\n\r\n\tif(jQuery('#ct_allow_date_range').is(':checked')){\r\n\r\n\t\tct_date_from = jQuery('#ct_date_range_from').val();\r\n\t\tct_date_till = jQuery('#ct_date_range_till').val();\r\n\r\n\t\tif(!(ct_date_from !== '' && ct_date_till !== '')){\r\n\t\t\talert('Please, specify a date range.');\r\n\t\t\treturn;\r\n\t\t}\r\n\t}\r\n\r\n\tif(jQuery('#ct_accurate_check').is(':checked')){\r\n\t\tct_accurate_check = true;\r\n\t}\r\n\r\n\tjQuery('.ct_to_hide').hide();\r\n\tjQuery('#ct_working_message').show();\r\n\tjQuery('#ct_preloader').show();\r\n\tjQuery('#ct_pause').show();\r\n\r\n\tct_working = true;\r\n\r\n\tif( continue_check ){\r\n\t\tct_show_users_info();\r\n\t\tct_send_users();\r\n\t} else {\r\n\t\tct_clear_users();\r\n\t}\r\n\r\n}\r\n\r\njQuery(document).ready(function(){\r\n\r\n\t// Setting dependences\r\n\t// jQuery('#ct_accurate_check') .data({'depended': '#ct_allow_date_range', 'state': false});\r\n\tjQuery('#ct_allow_date_range').data({'depended': '.ct_date', 'state': false});\r\n\t\r\n\t// Prev check parameters\r\n\tif(ct_prev_accurate){\r\n\t\tjQuery(\"#ct_accurate_check\").prop('checked', true);\r\n\t}\r\n\tif(ct_prev_from){\r\n\t\tjQuery(\"#ct_allow_date_range\").prop('checked', true).data('state', true);\r\n\t\tjQuery(\"#ct_date_range_from\").removeProp('disabled').val(ct_prev_from);\r\n\t\tjQuery(\"#ct_date_range_till\").removeProp('disabled').val(ct_prev_till);\r\n\t}\r\n\t\r\n\t// Toggle dependences\r\n\tjQuery(\"#ct_allow_date_range, #ct_accurate_check\").on('change', function(){\r\n\t\tct_toggle_depended(jQuery(this));\r\n\t});\r\n\r\n\tjQuery.datepicker.setDefaults(jQuery.datepicker.regional['en']);\r\n\tvar dates = jQuery('#ct_date_range_from, #ct_date_range_till').datepicker(\r\n\t\t{\r\n\t\t\tdateFormat: 'M d yy',\r\n\t\t\tmaxDate:\"+0D\",\r\n\t\t\tchangeMonth:true,\r\n\t\t\tchangeYear:true,\r\n\t\t\tshowAnim: 'slideDown',\r\n\t\t\tonSelect: function(selectedDate){\r\n\t\t\tvar option = this.id == \"ct_date_range_from\" ? \"minDate\" : \"maxDate\",\r\n\t\t\t\tinstance = jQuery( this ).data( \"datepicker\" ),\r\n\t\t\t\tdate = jQuery.datepicker.parseDate(\r\n\t\t\t\t\tinstance.settings.dateFormat || jQuery.datepicker._defaults.dateFormat,\r\n\t\t\t\t\tselectedDate, instance.settings);\r\n\t\t\t\tdates.not(this).datepicker(\"option\", option, date);\r\n\t\t\t}\r\n\t\t}\r\n\t);\r\n\t\r\n\t// Check users\r\n\tjQuery(\"#ct_check_spam_button\").click(function(){\r\n\t\tdocument.cookie = 'ct_paused_users_check=0; path=/';\r\n\t\tct_start_check(false);\r\n\t});\r\n\tjQuery(\"#ct_proceed_check_button\").click(function(){\r\n\t\tct_start_check(true);\r\n\t});\r\n\t\r\n\t// Pause the check\r\n\tjQuery('#ct_pause').on('click', function(){\r\n\t\tct_pause = true;\r\n\t\tvar ct_check = {\r\n\t\t\t'accurate': ct_accurate_check,\r\n\t\t\t'from' : ct_date_from,\r\n\t\t\t'till' : ct_date_till\r\n\t\t};\r\n\t\tdocument.cookie = 'ct_paused_users_check=' + JSON.stringify(ct_check) + '; path=/';\r\n\t});\r\n\t\t\r\n\t//Approve button\r\n\tjQuery(\".cleantalk_delete_from_list_button\").click(function(){\r\n\t\tct_id = jQuery(this).attr(\"data-id\");\r\n\t\t\r\n\t\t// Approving\r\n\t\tvar data = {\r\n\t\t\t'action': 'ajax_ct_approve_user',\r\n\t\t\t'security': ct_ajax_nonce,\r\n\t\t\t'id': ct_id\r\n\t\t};\r\n\t\tjQuery.ajax({\r\n\t\t\ttype: \"POST\",\r\n\t\t\turl: ajaxurl,\r\n\t\t\tdata: data,\r\n\t\t\tsuccess: function(msg){\r\n\t\t\t\tjQuery(\"#comment-\"+ct_id).fadeOut('slow', function(){\r\n\t\t\t\t\tjQuery(\"#comment-\"+ct_id).remove();\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t});\r\n\t\t\r\n\t\t// Positive feedback\r\n\t\tvar data = {\r\n\t\t\t'action': 'ct_feedback_user',\r\n\t\t\t'security': ct_ajax_nonce,\r\n\t\t\t'user_id': ct_id,\r\n\t\t\t'status': 'approve'\r\n\t\t};\r\n\t\tjQuery.ajax({\r\n\t\t\ttype: \"POST\",\r\n\t\t\turl: ajaxurl,\r\n\t\t\tdata: data,\r\n\t\t\tsuccess: function(msg){\r\n\t\t\t\tif(msg == 1){\r\n\t\t\t\t\t// Success\r\n\t\t\t\t}\r\n\t\t\t\tif(msg == 0){\r\n\t\t\t\t\t// Error occurred\r\n\t\t\t\t}\r\n\t\t\t\tif(msg == 'no_hash'){\r\n\t\t\t\t\t// No hash\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\terror: function(jqXHR, textStatus, errorThrown) {\r\n\t\t\t\t\r\n\t\t\t},\r\n\t\t\ttimeout: 5000\r\n\t\t});\r\n\t\t\r\n\t});\r\n\t\r\n\t// Request to Download CSV file.\r\n\tjQuery(\"#ct_get_csv_file\").click(function( e ){\r\n\t\tvar data = {\r\n\t\t\t'action': 'ajax_ct_get_csv_file',\r\n\t\t\t'security': ct_ajax_nonce,\r\n\t\t\t'filename': ctUsersCheck.ct_csv_filename\r\n\t\t};\r\n\t\tjQuery('#' + e.target.id).addClass('disabled');\r\n\t\tjQuery.ajax({\r\n\t\t\ttype: \"POST\",\r\n\t\t\turl: ajaxurl,\r\n\t\t\tdata: data,\r\n\t\t\tsuccess: function(msg){\r\n\t\t\t\tif( parseInt(msg) === 0 ) {\r\n\t\t\t\t\talert(ctUsersCheck.ct_bad_csv);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar url = URL.createObjectURL(new Blob([msg]));\r\n\r\n\t\t\t\t\tvar dummy = document.createElement('a');\r\n\t\t\t\t\tdummy.href = url;\r\n\t\t\t\t\tdummy.download = ctUsersCheck.ct_csv_filename + '.csv';\r\n\r\n\t\t\t\t\tdocument.body.appendChild(dummy);\r\n\t\t\t\t\tdummy.click();\r\n\t\t\t\t}\r\n\t\t\t\tjQuery('#' + e.target.id).removeClass('disabled');\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n});"]}
|
js/cleantalk_nocache.min.js
CHANGED
@@ -1,2 +1,2 @@
|
|
1 |
-
function sendRequest(e,t,n){var c=createXMLHTTPObject();if(c){var
|
2 |
//# sourceMappingURL=cleantalk_nocache.min.js.map
|
1 |
+
function sendRequest(e,t,n){var c=createXMLHTTPObject();if(c){var o=n?"POST":"GET";e="https:"===location.protocol?e.replace("http:","https:"):e.replace("https:","http:"),c.open(o,e,!0),n&&c.setRequestHeader("Content-type","application/x-www-form-urlencoded"),c.onreadystatechange=function(){4==c.readyState&&(200!=c.status&&304!=c.status||t(c))},4!=c.readyState&&c.send(n)}}"undefined"==typeof ctNocache&&(ctNocache.set_cookies_flag=!0,ctNocache.ajaxurl="/wp-admin/admin-ajax.php");var XMLHttpFactories=[function(){return new XMLHttpRequest},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Msxml3.XMLHTTP")},function(){return new ActiveXObject("Microsoft.XMLHTTP")}];function createXMLHTTPObject(){for(var e=!1,t=0;t<XMLHttpFactories.length;t++){try{e=XMLHttpFactories[t]()}catch(e){continue}break}return e}function ct_getCookie(e){var t=document.cookie.match(new RegExp("(?:^|; )"+e.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g,"\\$1")+"=([^;]*)"));return t?decodeURIComponent(t[1]):void 0}function ct_setCookie(e,t){if(ctNocache.set_cookies_flag){document.cookie=e+" =; expires=Thu, 01 Jan 1970 00:00:01 GMT; path = /",document.cookie=e+" =; expires=Thu, 01 Jan 1970 00:00:01 GMT";var n=new Date;n.setDate(n.getDate()+1),setTimeout(function(){document.cookie=e+"="+t+"; expires="+n.toUTCString()+"; path = /;"},500)}return null}function ct_callback(t){for(ct_cookie=t.responseText.trim(),ct_setCookie("ct_checkjs",ct_cookie),i=0;i<document.forms.length;i++)for(f=document.forms[i],j=0;j<f.elements.length;j++)e=f.elements[j],void 0!==e.name&&-1!=e.name.indexOf("ct_checkjs")&&(e.value=ct_cookie)}if(Date.now||(Date.now=function(){return(new Date).getTime()}),null==ct_nocache_executed){var ct_nocache_executed=!0,checkjs_cookie=ct_getCookie("ct_checkjs");if(null!=checkjs_cookie)for(i=0;i<document.forms.length;i++)for(f=document.forms[i],j=0;j<f.elements.length;j++)e=f.elements[j],void 0!==e.name&&-1!=e.name.indexOf("ct_checkjs")&&(e.value=checkjs_cookie);if(null==checkjs_cookie&&sendRequest(ctNocache.ajaxurl+"?"+Math.random(),ct_callback,"action=ct_get_cookie"),void 0!==ctNocache.info_flag&&ctNocache.info_flag){var cleantalk_user_info={},cleantalk_screen_info={};for(var prop in screen)navigator[prop]instanceof Object||""===screen[prop]||(cleantalk_screen_info[prop]=screen[prop]);cleantalk_user_info.screen=cleantalk_screen_info;for(var prev,cleantalk_plugins=Array(),cnt=0,i=0;i<navigator.plugins.length;i++){var plugin;prev!=(plugin=(plugin=navigator.plugins[i]).name+" "+(plugin.version||""))&&(cleantalk_plugins[cnt]=plugin,cnt++,prev=plugin)}cleantalk_user_info.plugins=cleantalk_plugins,cleantalk_user_info.timezone_offset=-(new Date).getTimezoneOffset()/60,cleantalk_user_info.datetime=Math.round((new Date).getTime()/1e3),cleantalk_user_info.browser_x=document.documentElement.clientWidth,cleantalk_user_info.browser_y=document.documentElement.clientHeight;var ua=navigator.userAgent.toLowerCase(),flashInstalled=0;if(void 0!==navigator.plugins&&"object"==typeof navigator.plugins["Shockwave Flash"])flashInstalled=1;else if(void 0!==window.ActiveXObject)try{new ActiveXObject("ShockwaveFlash.ShockwaveFlash")&&(flashInstalled=1)}catch(e){}cleantalk_user_info.is_flash=flashInstalled,isVisitedMain=-1,location.href!="http://"+location.hostname+"/"&&location.href!="https://"+location.hostname+"/"||(isVisitedMain=1,setTimeout(function(){document.cookie="ct_visited_main = 1; path = /;"},1500)),ct_visited_main=ct_getCookie("ct_visited_main"),isVisitedMain=null==ct_visited_main&&-1==isVisitedMain?0:1,cleantalk_user_info.is_main=isVisitedMain,setTimeout(function(){document.cookie="ct_user_info = "+escape(JSON.stringify(cleantalk_user_info))+"; path = /;"},1500)}}
|
2 |
//# sourceMappingURL=cleantalk_nocache.min.js.map
|
js/cleantalk_nocache.min.js.map
CHANGED
@@ -1 +1 @@
|
|
1 |
-
{"version":3,"sources":["cleantalk_nocache.js"],"names":["sendRequest","url","callback","postData","req","createXMLHTTPObject","method","location","protocol","replace","open","setRequestHeader","onreadystatechange","readyState","status","send","ctNocache","set_cookies_flag","ajaxurl","XMLHttpFactories","XMLHttpRequest","ActiveXObject","xmlhttp","i","length","e","ct_getCookie","name","matches","document","cookie","match","RegExp","decodeURIComponent","undefined","ct_setCookie","value","date","Date","setDate","getDate","setTimeout","toUTCString","ct_callback","ct_cookie","responseText","trim","forms","f","j","elements","indexOf","now","getTime","ct_nocache_executed","checkjs_cookie","Math","random","info_flag","cleantalk_user_info","cleantalk_screen_info","prop","screen","navigator","Object","prev","cleantalk_plugins","Array","cnt","plugins","plugin","version","timezone_offset","getTimezoneOffset","datetime","round","browser_x","documentElement","clientWidth","browser_y","clientHeight","ua","userAgent","toLowerCase","flashInstalled","window","is_flash","isVisitedMain","href","hostname","ct_visited_main","is_main","escape","JSON","stringify"],"mappings":"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","file":"cleantalk_nocache.min.js","sourcesContent":["/*\r\n Assign default values for backend variables.\r\n*/\r\nif (typeof ctNocache === 'undefined') {\r\n ctNocache.set_cookies_flag = true;\r\n ctNocache.ajaxurl = '/wp-admin/admin-ajax.php';\r\n}\r\n\r\nfunction sendRequest(url,callback,postData) {\r\n var req = createXMLHTTPObject();\r\n if (!req) return;\r\n var method = (postData) ? \"POST\" : \"GET\";\r\n \r\n var protocol = location.protocol;\r\n if (protocol === 'https:') {\r\n url = url.replace('http:', 'https:');\r\n } else {\r\n url = url.replace('https:', 'http:');\r\n }\r\n \r\n req.open(method,url,true);\r\n if (postData)\r\n req.setRequestHeader('Content-type','application/x-www-form-urlencoded');\r\n req.onreadystatechange = function () {\r\n if (req.readyState != 4) return;\r\n if (req.status != 200 && req.status != 304) {\r\n// alert('HTTP error ' + req.status);\r\n return;\r\n }\r\n callback(req);\r\n };\r\n if (req.readyState == 4) return;\r\n req.send(postData);\r\n}\r\n\r\nvar XMLHttpFactories = [\r\n function () {return new XMLHttpRequest()},\r\n function () {return new ActiveXObject(\"Msxml2.XMLHTTP\")},\r\n function () {return new ActiveXObject(\"Msxml3.XMLHTTP\")},\r\n function () {return new ActiveXObject(\"Microsoft.XMLHTTP\")}\r\n];\r\n\r\nfunction createXMLHTTPObject() {\r\n var xmlhttp = false;\r\n for (var i=0;i<XMLHttpFactories.length;i++) {\r\n try {\r\n xmlhttp = XMLHttpFactories[i]();\r\n }\r\n catch (e) {\r\n continue;\r\n }\r\n break;\r\n }\r\n return xmlhttp;\r\n}\r\n\r\nfunction ct_getCookie(name) {\r\n var matches = document.cookie.match(new RegExp(\r\n \"(?:^|; )\" + name.replace(/([\\.$?*|{}\\(\\)\\[\\]\\\\\\/\\+^])/g, '\\\\$1') + \"=([^;]*)\"\r\n ));\r\n return matches ? decodeURIComponent(matches[1]) : undefined;\r\n}\r\n\r\nfunction ct_setCookie(name, value)\r\n{\r\n if (ctNocache.set_cookies_flag) {\r\n document.cookie = name+\" =; expires=Thu, 01 Jan 1970 00:00:01 GMT; path = /\";\r\n document.cookie = name+\" =; expires=Thu, 01 Jan 1970 00:00:01 GMT\";\r\n \r\n var date = new Date;\r\n date.setDate(date.getDate() + 1);\r\n setTimeout(function() { document.cookie = name+\"=\" + value + \"; expires=\" + date.toUTCString() + \"; path = /;\"}, 500);\r\n }\r\n\r\n return null;\r\n}\r\n\r\nfunction ct_callback(req)\r\n{\r\n\tct_cookie = req.responseText.trim();\r\n\t//alert('Key value: ' + ct_cookie);\r\n\t\r\n\tct_setCookie('ct_checkjs', ct_cookie);\r\n\t\r\n\tfor(i=0;i<document.forms.length;i++)\r\n\t{\r\n\t\tf=document.forms[i];\r\n\t\tfor(j=0;j<f.elements.length;j++)\r\n\t\t{\r\n\t\t\te=f.elements[j];\r\n\t\t\tif(e.name!==undefined&&e.name.indexOf('ct_checkjs')!=-1)\r\n\t\t\t{\r\n\t\t\t\te.value=ct_cookie;\r\n\t\t\t\t//alert('Form #' + i + ', field ' + e.name + ' = ' + ct_cookie);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//alert('Set cookie: \\n' + document.cookie);\r\n}\r\n\r\nif (!Date.now) {\r\n\tDate.now = function() { return new Date().getTime(); }\r\n}\r\n\r\nif(ct_nocache_executed==undefined)\r\n{\r\n\tvar ct_nocache_executed=true;\r\n\t\r\n\tvar checkjs_cookie=ct_getCookie('ct_checkjs');\r\n\t\r\n\tif(checkjs_cookie!=undefined)\r\n\t{\r\n\t\tfor(i=0;i<document.forms.length;i++)\r\n\t\t{\r\n\t\t\tf=document.forms[i];\r\n\t\t\tfor(j=0;j<f.elements.length;j++)\r\n\t\t\t{\r\n\t\t\t\te=f.elements[j];\r\n\t\t\t\tif(e.name!==undefined&&e.name.indexOf('ct_checkjs')!=-1)\r\n\t\t\t\t{\r\n\t\t\t\t\te.value=checkjs_cookie;\r\n\t\t\t\t\t//alert('Form #' + i + ', field ' + e.name + ' = ' + ct_cookie);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\t\r\n\t\r\n\tif(checkjs_cookie==undefined) //86400 is 24 hours\r\n\t{\r\n\t\tsendRequest(ctNocache.ajaxurl+'?'+Math.random(),ct_callback,'action=ct_get_cookie');\r\n\t}\r\n\t\r\n\tif(typeof ctNocache.info_flag !== 'undefined' && ctNocache.info_flag)\r\n\t{\r\n\t\r\n\t\tvar cleantalk_user_info={};\r\n\t\t\r\n\t\tvar cleantalk_screen_info={};\r\n\t\tfor(var prop in screen)\r\n\t\t{\r\n\t\t\tif (navigator[prop] instanceof Object || screen[prop]==='')\r\n\t\t\t\tcontinue;\r\n\t\t\tcleantalk_screen_info[prop]=screen[prop];\r\n\t\t}\r\n\t\t\r\n\t\tcleantalk_user_info.screen=cleantalk_screen_info;\r\n\t\t\r\n\t\tvar cleantalk_plugins=Array();\r\n\t\tvar prev;\r\n\t\tvar cnt=0;\r\n\t\tfor(var i=0;i<navigator.plugins.length;i++)\r\n\t\t{\r\n\t\t\tvar plugin = navigator.plugins[i];\r\n\t\t\tvar plugin = plugin.name+\" \"+(plugin.version || '')\r\n\t\t\tif (prev == plugin ) continue;\r\n\t\t\tcleantalk_plugins[cnt]=plugin;\r\n\t\t\tcnt++;\r\n\t\t\tprev = plugin;\r\n\t\t}\r\n\t\tcleantalk_user_info.plugins=cleantalk_plugins;\r\n\t\t\r\n\t\tcleantalk_user_info.timezone_offset = -new Date().getTimezoneOffset()/60;\r\n\t\tcleantalk_user_info.datetime = Math.round((new Date().getTime())/1000);\r\n\t\t\r\n\t\tcleantalk_user_info.browser_x=document.documentElement.clientWidth;\r\n\t\tcleantalk_user_info.browser_y=document.documentElement.clientHeight;\r\n\t\t\r\n\t\tvar ua = navigator.userAgent.toLowerCase();\r\n\t\tvar flashInstalled = 0;\r\n\t\tif (typeof(navigator.plugins)!=\"undefined\"&&typeof(navigator.plugins[\"Shockwave Flash\"])==\"object\")\r\n\t\t{\r\n\t\t\tflashInstalled = 1;\r\n\t\t}\r\n\t\telse if (typeof window.ActiveXObject != \"undefined\")\r\n\t\t{\r\n\t\t\ttry\r\n\t\t\t{\r\n\t\t\t\tif (new ActiveXObject(\"ShockwaveFlash.ShockwaveFlash\"))\r\n\t\t\t\t{\r\n\t\t\t\t\tflashInstalled = 1;\r\n\t\t\t\t}\r\n\t\t\t} catch(e) {};\r\n\t\t};\r\n\t\t\r\n\t\tcleantalk_user_info.is_flash=flashInstalled;\r\n\t\t\r\n\t\tisVisitedMain=-1;\r\n\t\tif(location.href=='http://'+location.hostname+'/' || location.href=='https://'+location.hostname+'/')\r\n\t\t{\r\n\t\t\tisVisitedMain=1;\r\n\t\t\tsetTimeout(function() { document.cookie = \"ct_visited_main = 1; path = /;\"}, 1500);\r\n\t\t}\r\n\t\t\r\n\t\t\r\n\t\tct_visited_main = ct_getCookie('ct_visited_main');\r\n\t\tif(ct_visited_main==undefined && isVisitedMain==-1)\r\n\t\t{\r\n\t\t\tisVisitedMain=0;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tisVisitedMain=1;\r\n\t\t}\r\n\t\t\r\n\t\tcleantalk_user_info.is_main=isVisitedMain;\r\n\t\t\r\n\t\tsetTimeout(function() { document.cookie = \"ct_user_info = \"+escape(JSON.stringify(cleantalk_user_info))+\"; path = /;\"}, 1500);\r\n\t}\r\n}"]}
|
1 |
+
{"version":3,"sources":["cleantalk_nocache.js"],"names":["sendRequest","url","callback","postData","req","createXMLHTTPObject","method","location","protocol","replace","open","setRequestHeader","onreadystatechange","readyState","status","send","ctNocache","set_cookies_flag","ajaxurl","XMLHttpFactories","XMLHttpRequest","ActiveXObject","xmlhttp","i","length","e","ct_getCookie","name","matches","document","cookie","match","RegExp","decodeURIComponent","undefined","ct_setCookie","value","date","Date","setDate","getDate","setTimeout","toUTCString","ct_callback","ct_cookie","responseText","trim","forms","f","j","elements","indexOf","now","getTime","ct_nocache_executed","checkjs_cookie","Math","random","info_flag","cleantalk_user_info","cleantalk_screen_info","prop","screen","navigator","Object","prev","cleantalk_plugins","Array","cnt","plugins","plugin","version","timezone_offset","getTimezoneOffset","datetime","round","browser_x","documentElement","clientWidth","browser_y","clientHeight","ua","userAgent","toLowerCase","flashInstalled","window","is_flash","isVisitedMain","href","hostname","ct_visited_main","is_main","escape","JSON","stringify"],"mappings":"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","file":"cleantalk_nocache.min.js","sourcesContent":["/*\r\n Assign default values for backend variables.\r\n*/\r\nif (typeof ctNocache === 'undefined') {\r\n ctNocache.set_cookies_flag = true;\r\n ctNocache.ajaxurl = '/wp-admin/admin-ajax.php';\r\n}\r\n\r\nfunction sendRequest(url,callback,postData) {\r\n var req = createXMLHTTPObject();\r\n if (!req) return;\r\n var method = (postData) ? \"POST\" : \"GET\";\r\n \r\n var protocol = location.protocol;\r\n if (protocol === 'https:') {\r\n url = url.replace('http:', 'https:');\r\n } else {\r\n url = url.replace('https:', 'http:');\r\n }\r\n \r\n req.open(method,url,true);\r\n if (postData)\r\n req.setRequestHeader('Content-type','application/x-www-form-urlencoded');\r\n req.onreadystatechange = function () {\r\n if (req.readyState != 4) return;\r\n if (req.status != 200 && req.status != 304) {\r\n// alert('HTTP error ' + req.status);\r\n return;\r\n }\r\n callback(req);\r\n };\r\n if (req.readyState == 4) return;\r\n req.send(postData);\r\n}\r\n\r\nvar XMLHttpFactories = [\r\n function () {return new XMLHttpRequest()},\r\n function () {return new ActiveXObject(\"Msxml2.XMLHTTP\")},\r\n function () {return new ActiveXObject(\"Msxml3.XMLHTTP\")},\r\n function () {return new ActiveXObject(\"Microsoft.XMLHTTP\")}\r\n];\r\n\r\nfunction createXMLHTTPObject() {\r\n var xmlhttp = false;\r\n for (var i=0;i<XMLHttpFactories.length;i++) {\r\n try {\r\n xmlhttp = XMLHttpFactories[i]();\r\n }\r\n catch (e) {\r\n continue;\r\n }\r\n break;\r\n }\r\n return xmlhttp;\r\n}\r\n\r\nfunction ct_getCookie(name) {\r\n var matches = document.cookie.match(new RegExp(\r\n \"(?:^|; )\" + name.replace(/([\\.$?*|{}\\(\\)\\[\\]\\\\\\/\\+^])/g, '\\\\$1') + \"=([^;]*)\"\r\n ));\r\n return matches ? decodeURIComponent(matches[1]) : undefined;\r\n}\r\n\r\nfunction ct_setCookie(name, value)\r\n{\r\n if (ctNocache.set_cookies_flag) {\r\n document.cookie = name+\" =; expires=Thu, 01 Jan 1970 00:00:01 GMT; path = /\";\r\n document.cookie = name+\" =; expires=Thu, 01 Jan 1970 00:00:01 GMT\";\r\n \r\n var date = new Date;\r\n date.setDate(date.getDate() + 1);\r\n setTimeout(function() { document.cookie = name+\"=\" + value + \"; expires=\" + date.toUTCString() + \"; path = /;\"}, 500);\r\n }\r\n\r\n return null;\r\n}\r\n\r\nfunction ct_callback(req)\r\n{\r\n\tct_cookie = req.responseText.trim();\r\n\t//alert('Key value: ' + ct_cookie);\r\n\t\r\n\tct_setCookie('ct_checkjs', ct_cookie);\r\n\t\r\n\tfor(i=0;i<document.forms.length;i++)\r\n\t{\r\n\t\tf=document.forms[i];\r\n\t\tfor(j=0;j<f.elements.length;j++)\r\n\t\t{\r\n\t\t\te=f.elements[j];\r\n\t\t\tif(e.name!==undefined&&e.name.indexOf('ct_checkjs')!=-1)\r\n\t\t\t{\r\n\t\t\t\te.value=ct_cookie;\r\n\t\t\t\t//alert('Form #' + i + ', field ' + e.name + ' = ' + ct_cookie);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//alert('Set cookie: \\n' + document.cookie);\r\n}\r\n\r\nif (!Date.now) {\r\n\tDate.now = function() { return new Date().getTime(); }\r\n}\r\n\r\nif(ct_nocache_executed==undefined)\r\n{\r\n\tvar ct_nocache_executed=true;\r\n\t\r\n\tvar checkjs_cookie=ct_getCookie('ct_checkjs');\r\n\t\r\n\tif(checkjs_cookie!=undefined)\r\n\t{\r\n\t\tfor(i=0;i<document.forms.length;i++)\r\n\t\t{\r\n\t\t\tf=document.forms[i];\r\n\t\t\tfor(j=0;j<f.elements.length;j++)\r\n\t\t\t{\r\n\t\t\t\te=f.elements[j];\r\n\t\t\t\tif(e.name!==undefined&&e.name.indexOf('ct_checkjs')!=-1)\r\n\t\t\t\t{\r\n\t\t\t\t\te.value=checkjs_cookie;\r\n\t\t\t\t\t//alert('Form #' + i + ', field ' + e.name + ' = ' + ct_cookie);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\t\r\n\t\r\n\tif(checkjs_cookie==undefined) //86400 is 24 hours\r\n\t{\r\n\t\tsendRequest(ctNocache.ajaxurl+'?'+Math.random(),ct_callback,'action=ct_get_cookie');\r\n\t}\r\n\t\r\n\tif(typeof ctNocache.info_flag !== 'undefined' && ctNocache.info_flag)\r\n\t{\r\n\t\r\n\t\tvar cleantalk_user_info={};\r\n\t\t\r\n\t\tvar cleantalk_screen_info={};\r\n\t\tfor(var prop in screen)\r\n\t\t{\r\n\t\t\tif (navigator[prop] instanceof Object || screen[prop]==='')\r\n\t\t\t\tcontinue;\r\n\t\t\tcleantalk_screen_info[prop]=screen[prop];\r\n\t\t}\r\n\t\t\r\n\t\tcleantalk_user_info.screen=cleantalk_screen_info;\r\n\t\t\r\n\t\tvar cleantalk_plugins=Array();\r\n\t\tvar prev;\r\n\t\tvar cnt=0;\r\n\t\tfor(var i=0;i<navigator.plugins.length;i++)\r\n\t\t{\r\n\t\t\tvar plugin = navigator.plugins[i];\r\n\t\t\tvar plugin = plugin.name+\" \"+(plugin.version || '')\r\n\t\t\tif (prev == plugin ) continue;\r\n\t\t\tcleantalk_plugins[cnt]=plugin;\r\n\t\t\tcnt++;\r\n\t\t\tprev = plugin;\r\n\t\t}\r\n\t\tcleantalk_user_info.plugins=cleantalk_plugins;\r\n\t\t\r\n\t\tcleantalk_user_info.timezone_offset = -new Date().getTimezoneOffset()/60;\r\n\t\tcleantalk_user_info.datetime = Math.round((new Date().getTime())/1000);\r\n\t\t\r\n\t\tcleantalk_user_info.browser_x=document.documentElement.clientWidth;\r\n\t\tcleantalk_user_info.browser_y=document.documentElement.clientHeight;\r\n\t\t\r\n\t\tvar ua = navigator.userAgent.toLowerCase();\r\n\t\tvar flashInstalled = 0;\r\n\t\tif (typeof(navigator.plugins)!=\"undefined\"&&typeof(navigator.plugins[\"Shockwave Flash\"])==\"object\")\r\n\t\t{\r\n\t\t\tflashInstalled = 1;\r\n\t\t}\r\n\t\telse if (typeof window.ActiveXObject != \"undefined\")\r\n\t\t{\r\n\t\t\ttry\r\n\t\t\t{\r\n\t\t\t\tif (new ActiveXObject(\"ShockwaveFlash.ShockwaveFlash\"))\r\n\t\t\t\t{\r\n\t\t\t\t\tflashInstalled = 1;\r\n\t\t\t\t}\r\n\t\t\t} catch(e) {};\r\n\t\t};\r\n\t\t\r\n\t\tcleantalk_user_info.is_flash=flashInstalled;\r\n\t\t\r\n\t\tisVisitedMain=-1;\r\n\t\tif(location.href=='http://'+location.hostname+'/' || location.href=='https://'+location.hostname+'/')\r\n\t\t{\r\n\t\t\tisVisitedMain=1;\r\n\t\t\tsetTimeout(function() { document.cookie = \"ct_visited_main = 1; path = /;\"}, 1500);\r\n\t\t}\r\n\t\t\r\n\t\t\r\n\t\tct_visited_main = ct_getCookie('ct_visited_main');\r\n\t\tif(ct_visited_main==undefined && isVisitedMain==-1)\r\n\t\t{\r\n\t\t\tisVisitedMain=0;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tisVisitedMain=1;\r\n\t\t}\r\n\t\t\r\n\t\tcleantalk_user_info.is_main=isVisitedMain;\r\n\t\t\r\n\t\tsetTimeout(function() { document.cookie = \"ct_user_info = \"+escape(JSON.stringify(cleantalk_user_info))+\"; path = /;\"}, 1500);\r\n\t}\r\n}"]}
|
js/jquery-ui.min.js
CHANGED
@@ -1,10 +1,13 @@
|
|
1 |
-
/*! jQuery UI - v1.12.1 -
|
2 |
* http://jqueryui.com
|
3 |
-
* Includes: widget.js, position.js, data.js, disable-selection.js, focusable.js, form-reset-mixin.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/draggable.js, widgets/resizable.js, widgets/accordion.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/mouse.js, widgets/progressbar.js
|
4 |
* Copyright jQuery Foundation and other contributors; Licensed MIT */
|
5 |
|
6 |
-
(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){function e(t){for(var e=t.css("visibility");"inherit"===e;)t=t.parent(),e=t.css("visibility");return"hidden"!==e}function i(t){for(var e,i;t.length&&t[0]!==document;){if(e=t.css("position"),("absolute"===e||"relative"===e||"fixed"===e)&&(i=parseInt(t.css("zIndex"),10),!isNaN(i)&&0!==i))return i;t=t.parent()}return 0}function s(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},t.extend(this._defaults,this.regional[""]),this.regional.en=t.extend(!0,{},this.regional[""]),this.regional["en-US"]=t.extend(!0,{},this.regional.en),this.dpDiv=n(t("<div id='"+this._mainDivId+"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"))}function n(e){var i="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return e.on("mouseout",i,function(){t(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&t(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&t(this).removeClass("ui-datepicker-next-hover")}).on("mouseover",i,o)}function o(){t.datepicker._isDisabledDatepicker(u.inline?u.dpDiv.parent()[0]:u.input[0])||(t(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),t(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&t(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&t(this).addClass("ui-datepicker-next-hover"))}function a(e,i){t.extend(e,i);for(var s in i)null==i[s]&&(e[s]=i[s]);return e}t.ui=t.ui||{},t.ui.version="1.12.1";var r=0,l=Array.prototype.slice;t.cleanData=function(e){return function(i){var s,n,o;for(o=0;null!=(n=i[o]);o++)try{s=t._data(n,"events"),s&&s.remove&&t(n).triggerHandler("remove")}catch(a){}e(i)}}(t.cleanData),t.widget=function(e,i,s){var n,o,a,r={},l=e.split(".")[0];e=e.split(".")[1];var h=l+"-"+e;return s||(s=i,i=t.Widget),t.isArray(s)&&(s=t.extend.apply(null,[{}].concat(s))),t.expr[":"][h.toLowerCase()]=function(e){return!!t.data(e,h)},t[l]=t[l]||{},n=t[l][e],o=t[l][e]=function(t,e){return this._createWidget?(arguments.length&&this._createWidget(t,e),void 0):new o(t,e)},t.extend(o,n,{version:s.version,_proto:t.extend({},s),_childConstructors:[]}),a=new i,a.options=t.widget.extend({},a.options),t.each(s,function(e,s){return t.isFunction(s)?(r[e]=function(){function t(){return i.prototype[e].apply(this,arguments)}function n(t){return i.prototype[e].apply(this,t)}return function(){var e,i=this._super,o=this._superApply;return this._super=t,this._superApply=n,e=s.apply(this,arguments),this._super=i,this._superApply=o,e}}(),void 0):(r[e]=s,void 0)}),o.prototype=t.widget.extend(a,{widgetEventPrefix:n?a.widgetEventPrefix||e:e},r,{constructor:o,namespace:l,widgetName:e,widgetFullName:h}),n?(t.each(n._childConstructors,function(e,i){var s=i.prototype;t.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete n._childConstructors):i._childConstructors.push(o),t.widget.bridge(e,o),o},t.widget.extend=function(e){for(var i,s,n=l.call(arguments,1),o=0,a=n.length;a>o;o++)for(i in n[o])s=n[o][i],n[o].hasOwnProperty(i)&&void 0!==s&&(e[i]=t.isPlainObject(s)?t.isPlainObject(e[i])?t.widget.extend({},e[i],s):t.widget.extend({},s):s);return e},t.widget.bridge=function(e,i){var s=i.prototype.widgetFullName||e;t.fn[e]=function(n){var o="string"==typeof n,a=l.call(arguments,1),r=this;return o?this.length||"instance"!==n?this.each(function(){var i,o=t.data(this,s);return"instance"===n?(r=o,!1):o?t.isFunction(o[n])&&"_"!==n.charAt(0)?(i=o[n].apply(o,a),i!==o&&void 0!==i?(r=i&&i.jquery?r.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+n+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+n+"'")}):r=void 0:(a.length&&(n=t.widget.extend.apply(null,[n].concat(a))),this.each(function(){var e=t.data(this,s);e?(e.option(n||{}),e._init&&e._init()):t.data(this,s,new i(n,this))})),r}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,i){i=t(i||this.defaultElement||this)[0],this.element=t(i),this.uuid=r++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},i!==this&&(t.data(i,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===i&&this.destroy()}}),this.document=t(i.style?i.ownerDocument:i.document||i),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var l=s.match(/^([\w:-]*)\s*(.*)$/),h=l[1]+o.eventNamespace,c=l[2];c?n.on(h,c,r):i.on(h,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,l=/top|center|bottom/,h=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.width<e.element[0].scrollWidth,o="scroll"===s||"auto"===s&&e.height<e.element[0].scrollHeight;return{width:o?t.position.scrollbarWidth():0,height:n?t.position.scrollbarWidth():0}},getWithinInfo:function(e){var i=t(e||window),s=t.isWindow(i[0]),n=!!i[0]&&9===i[0].nodeType,o=!s&&!n;return{element:i,isWindow:s,isDocument:n,offset:o?t(e).offset():{left:0,top:0},scrollLeft:i.scrollLeft(),scrollTop:i.scrollTop(),width:i.outerWidth(),height:i.outerHeight()}}},t.fn.position=function(n){if(!n||!n.of)return d.apply(this,arguments);n=t.extend({},n);var u,p,f,g,m,_,v=t(n.of),b=t.position.getWithinInfo(n.within),y=t.position.getScrollInfo(b),w=(n.collision||"flip").split(" "),k={};return _=s(v),v[0].preventDefault&&(n.at="left top"),p=_.width,f=_.height,g=_.offset,m=t.extend({},g),t.each(["my","at"],function(){var t,e,i=(n[this]||"").split(" ");1===i.length&&(i=r.test(i[0])?i.concat(["center"]):l.test(i[0])?["center"].concat(i):["center","center"]),i[0]=r.test(i[0])?i[0]:"center",i[1]=l.test(i[1])?i[1]:"center",t=h.exec(i[0]),e=h.exec(i[1]),k[this]=[t?t[0]:0,e?e[0]:0],n[this]=[c.exec(i[0])[0],c.exec(i[1])[0]]}),1===w.length&&(w[1]=w[0]),"right"===n.at[0]?m.left+=p:"center"===n.at[0]&&(m.left+=p/2),"bottom"===n.at[1]?m.top+=f:"center"===n.at[1]&&(m.top+=f/2),u=e(k.at,p,f),m.left+=u[0],m.top+=u[1],this.each(function(){var s,r,l=t(this),h=l.outerWidth(),c=l.outerHeight(),d=i(this,"marginLeft"),_=i(this,"marginTop"),x=h+d+i(this,"marginRight")+y.width,C=c+_+i(this,"marginBottom")+y.height,D=t.extend({},m),T=e(k.my,l.outerWidth(),l.outerHeight());"right"===n.my[0]?D.left-=h:"center"===n.my[0]&&(D.left-=h/2),"bottom"===n.my[1]?D.top-=c:"center"===n.my[1]&&(D.top-=c/2),D.left+=T[0],D.top+=T[1],s={marginLeft:d,marginTop:_},t.each(["left","top"],function(e,i){t.ui.position[w[e]]&&t.ui.position[w[e]][i](D,{targetWidth:p,targetHeight:f,elemWidth:h,elemHeight:c,collisionPosition:s,collisionWidth:x,collisionHeight:C,offset:[u[0]+T[0],u[1]+T[1]],my:n.my,at:n.at,within:b,elem:l})}),n.using&&(r=function(t){var e=g.left-D.left,i=e+p-h,s=g.top-D.top,r=s+f-c,u={target:{element:v,left:g.left,top:g.top,width:p,height:f},element:{element:l,left:D.left,top:D.top,width:h,height:c},horizontal:0>i?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};h>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),l.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,l=n-r,h=r+e.collisionWidth-a-n;e.collisionWidth>a?l>0&&0>=h?(i=t.left+l+e.collisionWidth-a-n,t.left+=l-i):t.left=h>0&&0>=l?n:l>h?n+a-e.collisionWidth:n:l>0?t.left+=l:h>0?t.left-=h:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,l=n-r,h=r+e.collisionHeight-a-n;e.collisionHeight>a?l>0&&0>=h?(i=t.top+l+e.collisionHeight-a-n,t.top+=l-i):t.top=h>0&&0>=l?n:l>h?n+a-e.collisionHeight:n:l>0?t.top+=l:h>0?t.top-=h:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,l=n.isWindow?n.scrollLeft:n.offset.left,h=t.left-e.collisionPosition.marginLeft,c=h-l,u=h+e.collisionWidth-r-l,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-l,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,l=n.isWindow?n.scrollTop:n.offset.top,h=t.top-e.collisionPosition.marginTop,c=h-l,u=h+e.collisionHeight-r-l,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,g=-2*e.offset[1];0>c?(s=t.top+p+f+g+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+g)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+g-l,(i>0||u>a(i))&&(t.top+=p+f+g))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,l,h=i.nodeName.toLowerCase();return"area"===h?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(h)?(r=!i.disabled,r&&(l=t(i).closest("fieldset")[0],l&&(r=!l.disabled))):r="a"===h?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var h=!1;t(document).on("mouseup",function(){h=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!h){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,n="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!n&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),h=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,h=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.ui.safeActiveElement=function(t){var e;try{e=t.activeElement}catch(i){e=t.body}return e||(e=t.body),e.nodeName||(e=t.body),e},t.ui.safeBlur=function(e){e&&"body"!==e.nodeName.toLowerCase()&&t(e).trigger("blur")},t.widget("ui.draggable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this._addClass("ui-draggable"),this._setHandleClassName(),this._mouseInit()},_setOption:function(t,e){this._super(t,e),"handle"===t&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){return(this.helper||this.element).is(".ui-draggable-dragging")?(this.destroyOnClear=!0,void 0):(this._removeHandleClassName(),this._mouseDestroy(),void 0)},_mouseCapture:function(e){var i=this.options;return this.helper||i.disabled||t(e.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(e),this.handle?(this._blurActiveElement(e),this._blockFrames(i.iframeFix===!0?"iframe":i.iframeFix),!0):!1)},_blockFrames:function(e){this.iframeBlocks=this.document.find(e).map(function(){var e=t(this);return t("<div>").css("position","absolute").appendTo(e.parent()).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()).offset(e.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(e){var i=t.ui.safeActiveElement(this.document[0]),s=t(e.target);s.closest(i).length||t.ui.safeBlur(i)},_mouseStart:function(e){var i=this.options;return this.helper=this._createHelper(e),this._addClass(this.helper,"ui-draggable-dragging"),this._cacheHelperProportions(),t.ui.ddmanager&&(t.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=this.helper.parents().filter(function(){return"fixed"===t(this).css("position")}).length>0,this.positionAbs=this.element.offset(),this._refreshOffsets(e),this.originalPosition=this.position=this._generatePosition(e,!1),this.originalPageX=e.pageX,this.originalPageY=e.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this._setContainment(),this._trigger("start",e)===!1?(this._clear(),!1):(this._cacheHelperProportions(),t.ui.ddmanager&&!i.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this._mouseDrag(e,!0),t.ui.ddmanager&&t.ui.ddmanager.dragStart(this,e),!0)},_refreshOffsets:function(t){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:t.pageX-this.offset.left,top:t.pageY-this.offset.top}},_mouseDrag:function(e,i){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(e,!0),this.positionAbs=this._convertPositionTo("absolute"),!i){var s=this._uiHash();if(this._trigger("drag",e,s)===!1)return this._mouseUp(new t.Event("mouseup",e)),!1;this.position=s.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),!1},_mouseStop:function(e){var i=this,s=!1;return t.ui.ddmanager&&!this.options.dropBehaviour&&(s=t.ui.ddmanager.drop(this,e)),this.dropped&&(s=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!s||"valid"===this.options.revert&&s||this.options.revert===!0||t.isFunction(this.options.revert)&&this.options.revert.call(this.element,s)?t(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){i._trigger("stop",e)!==!1&&i._clear()}):this._trigger("stop",e)!==!1&&this._clear(),!1},_mouseUp:function(e){return this._unblockFrames(),t.ui.ddmanager&&t.ui.ddmanager.dragStop(this,e),this.handleElement.is(e.target)&&this.element.trigger("focus"),t.ui.mouse.prototype._mouseUp.call(this,e)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp(new t.Event("mouseup",{target:this.element[0]})):this._clear(),this},_getHandle:function(e){return this.options.handle?!!t(e.target).closest(this.element.find(this.options.handle)).length:!0},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this._addClass(this.handleElement,"ui-draggable-handle")},_removeHandleClassName:function(){this._removeClass(this.handleElement,"ui-draggable-handle")},_createHelper:function(e){var i=this.options,s=t.isFunction(i.helper),n=s?t(i.helper.apply(this.element[0],[e])):"clone"===i.helper?this.element.clone().removeAttr("id"):this.element;return n.parents("body").length||n.appendTo("parent"===i.appendTo?this.element[0].parentNode:i.appendTo),s&&n[0]===this.element[0]&&this._setPositionRelative(),n[0]===this.element[0]||/(fixed|absolute)/.test(n.css("position"))||n.css("position","absolute"),n},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(e){"string"==typeof e&&(e=e.split(" ")),t.isArray(e)&&(e={left:+e[0],top:+e[1]||0}),"left"in e&&(this.offset.click.left=e.left+this.margins.left),"right"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),"top"in e&&(this.offset.click.top=e.top+this.margins.top),"bottom"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_isRootNode:function(t){return/(html|body)/i.test(t.tagName)||t===this.document[0]},_getParentOffset:function(){var e=this.offsetParent.offset(),i=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==i&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),this._isRootNode(this.offsetParent[0])&&(e={top:0,left:0}),{top:e.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var t=this.element.position(),e=this._isRootNode(this.scrollParent[0]);return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+(e?0:this.scrollParent.scrollTop()),left:t.left-(parseInt(this.helper.css("left"),10)||0)+(e?0:this.scrollParent.scrollLeft())}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,i,s,n=this.options,o=this.document[0];return this.relativeContainer=null,n.containment?"window"===n.containment?(this.containment=[t(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,t(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,t(window).scrollLeft()+t(window).width()-this.helperProportions.width-this.margins.left,t(window).scrollTop()+(t(window).height()||o.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):"document"===n.containment?(this.containment=[0,0,t(o).width()-this.helperProportions.width-this.margins.left,(t(o).height()||o.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):n.containment.constructor===Array?(this.containment=n.containment,void 0):("parent"===n.containment&&(n.containment=this.helper[0].parentNode),i=t(n.containment),s=i[0],s&&(e=/(scroll|auto)/.test(i.css("overflow")),this.containment=[(parseInt(i.css("borderLeftWidth"),10)||0)+(parseInt(i.css("paddingLeft"),10)||0),(parseInt(i.css("borderTopWidth"),10)||0)+(parseInt(i.css("paddingTop"),10)||0),(e?Math.max(s.scrollWidth,s.offsetWidth):s.offsetWidth)-(parseInt(i.css("borderRightWidth"),10)||0)-(parseInt(i.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(e?Math.max(s.scrollHeight,s.offsetHeight):s.offsetHeight)-(parseInt(i.css("borderBottomWidth"),10)||0)-(parseInt(i.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=i),void 0):(this.containment=null,void 0)
|
7 |
-
},_convertPositionTo:function(t,e){e||(e=this.position);var i="absolute"===t?1:-1,s=this._isRootNode(this.scrollParent[0]);return{top:e.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.offset.scroll.top:s?0:this.offset.scroll.top)*i,left:e.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.offset.scroll.left:s?0:this.offset.scroll.left)*i}},_generatePosition:function(t,e){var i,s,n,o,a=this.options,r=this._isRootNode(this.scrollParent[0]),l=t.pageX,h=t.pageY;return r&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),e&&(this.containment&&(this.relativeContainer?(s=this.relativeContainer.offset(),i=[this.containment[0]+s.left,this.containment[1]+s.top,this.containment[2]+s.left,this.containment[3]+s.top]):i=this.containment,t.pageX-this.offset.click.left<i[0]&&(l=i[0]+this.offset.click.left),t.pageY-this.offset.click.top<i[1]&&(h=i[1]+this.offset.click.top),t.pageX-this.offset.click.left>i[2]&&(l=i[2]+this.offset.click.left),t.pageY-this.offset.click.top>i[3]&&(h=i[3]+this.offset.click.top)),a.grid&&(n=a.grid[1]?this.originalPageY+Math.round((h-this.originalPageY)/a.grid[1])*a.grid[1]:this.originalPageY,h=i?n-this.offset.click.top>=i[1]||n-this.offset.click.top>i[3]?n:n-this.offset.click.top>=i[1]?n-a.grid[1]:n+a.grid[1]:n,o=a.grid[0]?this.originalPageX+Math.round((l-this.originalPageX)/a.grid[0])*a.grid[0]:this.originalPageX,l=i?o-this.offset.click.left>=i[0]||o-this.offset.click.left>i[2]?o:o-this.offset.click.left>=i[0]?o-a.grid[0]:o+a.grid[0]:o),"y"===a.axis&&(l=this.originalPageX),"x"===a.axis&&(h=this.originalPageY)),{top:h-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:r?0:this.offset.scroll.top),left:l-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:r?0:this.offset.scroll.left)}},_clear:function(){this._removeClass(this.helper,"ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_trigger:function(e,i,s){return s=s||this._uiHash(),t.ui.plugin.call(this,e,[i,s,this],!0),/^(drag|start|stop)/.test(e)&&(this.positionAbs=this._convertPositionTo("absolute"),s.offset=this.positionAbs),t.Widget.prototype._trigger.call(this,e,i,s)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),t.ui.plugin.add("draggable","connectToSortable",{start:function(e,i,s){var n=t.extend({},i,{item:s.element});s.sortables=[],t(s.options.connectToSortable).each(function(){var i=t(this).sortable("instance");i&&!i.options.disabled&&(s.sortables.push(i),i.refreshPositions(),i._trigger("activate",e,n))})},stop:function(e,i,s){var n=t.extend({},i,{item:s.element});s.cancelHelperRemoval=!1,t.each(s.sortables,function(){var t=this;t.isOver?(t.isOver=0,s.cancelHelperRemoval=!0,t.cancelHelperRemoval=!1,t._storedCSS={position:t.placeholder.css("position"),top:t.placeholder.css("top"),left:t.placeholder.css("left")},t._mouseStop(e),t.options.helper=t.options._helper):(t.cancelHelperRemoval=!0,t._trigger("deactivate",e,n))})},drag:function(e,i,s){t.each(s.sortables,function(){var n=!1,o=this;o.positionAbs=s.positionAbs,o.helperProportions=s.helperProportions,o.offset.click=s.offset.click,o._intersectsWith(o.containerCache)&&(n=!0,t.each(s.sortables,function(){return this.positionAbs=s.positionAbs,this.helperProportions=s.helperProportions,this.offset.click=s.offset.click,this!==o&&this._intersectsWith(this.containerCache)&&t.contains(o.element[0],this.element[0])&&(n=!1),n})),n?(o.isOver||(o.isOver=1,s._parent=i.helper.parent(),o.currentItem=i.helper.appendTo(o.element).data("ui-sortable-item",!0),o.options._helper=o.options.helper,o.options.helper=function(){return i.helper[0]},e.target=o.currentItem[0],o._mouseCapture(e,!0),o._mouseStart(e,!0,!0),o.offset.click.top=s.offset.click.top,o.offset.click.left=s.offset.click.left,o.offset.parent.left-=s.offset.parent.left-o.offset.parent.left,o.offset.parent.top-=s.offset.parent.top-o.offset.parent.top,s._trigger("toSortable",e),s.dropped=o.element,t.each(s.sortables,function(){this.refreshPositions()}),s.currentItem=s.element,o.fromOutside=s),o.currentItem&&(o._mouseDrag(e),i.position=o.position)):o.isOver&&(o.isOver=0,o.cancelHelperRemoval=!0,o.options._revert=o.options.revert,o.options.revert=!1,o._trigger("out",e,o._uiHash(o)),o._mouseStop(e,!0),o.options.revert=o.options._revert,o.options.helper=o.options._helper,o.placeholder&&o.placeholder.remove(),i.helper.appendTo(s._parent),s._refreshOffsets(e),i.position=s._generatePosition(e,!0),s._trigger("fromSortable",e),s.dropped=!1,t.each(s.sortables,function(){this.refreshPositions()}))})}}),t.ui.plugin.add("draggable","cursor",{start:function(e,i,s){var n=t("body"),o=s.options;n.css("cursor")&&(o._cursor=n.css("cursor")),n.css("cursor",o.cursor)},stop:function(e,i,s){var n=s.options;n._cursor&&t("body").css("cursor",n._cursor)}}),t.ui.plugin.add("draggable","opacity",{start:function(e,i,s){var n=t(i.helper),o=s.options;n.css("opacity")&&(o._opacity=n.css("opacity")),n.css("opacity",o.opacity)},stop:function(e,i,s){var n=s.options;n._opacity&&t(i.helper).css("opacity",n._opacity)}}),t.ui.plugin.add("draggable","scroll",{start:function(t,e,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(e,i,s){var n=s.options,o=!1,a=s.scrollParentNotHidden[0],r=s.document[0];a!==r&&"HTML"!==a.tagName?(n.axis&&"x"===n.axis||(s.overflowOffset.top+a.offsetHeight-e.pageY<n.scrollSensitivity?a.scrollTop=o=a.scrollTop+n.scrollSpeed:e.pageY-s.overflowOffset.top<n.scrollSensitivity&&(a.scrollTop=o=a.scrollTop-n.scrollSpeed)),n.axis&&"y"===n.axis||(s.overflowOffset.left+a.offsetWidth-e.pageX<n.scrollSensitivity?a.scrollLeft=o=a.scrollLeft+n.scrollSpeed:e.pageX-s.overflowOffset.left<n.scrollSensitivity&&(a.scrollLeft=o=a.scrollLeft-n.scrollSpeed))):(n.axis&&"x"===n.axis||(e.pageY-t(r).scrollTop()<n.scrollSensitivity?o=t(r).scrollTop(t(r).scrollTop()-n.scrollSpeed):t(window).height()-(e.pageY-t(r).scrollTop())<n.scrollSensitivity&&(o=t(r).scrollTop(t(r).scrollTop()+n.scrollSpeed))),n.axis&&"y"===n.axis||(e.pageX-t(r).scrollLeft()<n.scrollSensitivity?o=t(r).scrollLeft(t(r).scrollLeft()-n.scrollSpeed):t(window).width()-(e.pageX-t(r).scrollLeft())<n.scrollSensitivity&&(o=t(r).scrollLeft(t(r).scrollLeft()+n.scrollSpeed)))),o!==!1&&t.ui.ddmanager&&!n.dropBehaviour&&t.ui.ddmanager.prepareOffsets(s,e)}}),t.ui.plugin.add("draggable","snap",{start:function(e,i,s){var n=s.options;s.snapElements=[],t(n.snap.constructor!==String?n.snap.items||":data(ui-draggable)":n.snap).each(function(){var e=t(this),i=e.offset();this!==s.element[0]&&s.snapElements.push({item:this,width:e.outerWidth(),height:e.outerHeight(),top:i.top,left:i.left})})},drag:function(e,i,s){var n,o,a,r,l,h,c,u,d,p,f=s.options,g=f.snapTolerance,m=i.offset.left,_=m+s.helperProportions.width,v=i.offset.top,b=v+s.helperProportions.height;for(d=s.snapElements.length-1;d>=0;d--)l=s.snapElements[d].left-s.margins.left,h=l+s.snapElements[d].width,c=s.snapElements[d].top-s.margins.top,u=c+s.snapElements[d].height,l-g>_||m>h+g||c-g>b||v>u+g||!t.contains(s.snapElements[d].item.ownerDocument,s.snapElements[d].item)?(s.snapElements[d].snapping&&s.options.snap.release&&s.options.snap.release.call(s.element,e,t.extend(s._uiHash(),{snapItem:s.snapElements[d].item})),s.snapElements[d].snapping=!1):("inner"!==f.snapMode&&(n=g>=Math.abs(c-b),o=g>=Math.abs(u-v),a=g>=Math.abs(l-_),r=g>=Math.abs(h-m),n&&(i.position.top=s._convertPositionTo("relative",{top:c-s.helperProportions.height,left:0}).top),o&&(i.position.top=s._convertPositionTo("relative",{top:u,left:0}).top),a&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l-s.helperProportions.width}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h}).left)),p=n||o||a||r,"outer"!==f.snapMode&&(n=g>=Math.abs(c-v),o=g>=Math.abs(u-b),a=g>=Math.abs(l-m),r=g>=Math.abs(h-_),n&&(i.position.top=s._convertPositionTo("relative",{top:c,left:0}).top),o&&(i.position.top=s._convertPositionTo("relative",{top:u-s.helperProportions.height,left:0}).top),a&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h-s.helperProportions.width}).left)),!s.snapElements[d].snapping&&(n||o||a||r||p)&&s.options.snap.snap&&s.options.snap.snap.call(s.element,e,t.extend(s._uiHash(),{snapItem:s.snapElements[d].item})),s.snapElements[d].snapping=n||o||a||r||p)}}),t.ui.plugin.add("draggable","stack",{start:function(e,i,s){var n,o=s.options,a=t.makeArray(t(o.stack)).sort(function(e,i){return(parseInt(t(e).css("zIndex"),10)||0)-(parseInt(t(i).css("zIndex"),10)||0)});a.length&&(n=parseInt(t(a[0]).css("zIndex"),10)||0,t(a).each(function(e){t(this).css("zIndex",n+e)}),this.css("zIndex",n+a.length))}}),t.ui.plugin.add("draggable","zIndex",{start:function(e,i,s){var n=t(i.helper),o=s.options;n.css("zIndex")&&(o._zIndex=n.css("zIndex")),n.css("zIndex",o.zIndex)},stop:function(e,i,s){var n=s.options;n._zIndex&&t(i.helper).css("zIndex",n._zIndex)}}),t.ui.draggable,t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("<div>"),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,l=this._change[o];return this._updatePrevProperties(),l?(i=l.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,l,h=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,l=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,h.animate||this.element.css(t.extend(a,{top:l,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!h.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidth<t.width,n=this._isNumber(t.height)&&e.maxHeight&&e.maxHeight<t.height,o=this._isNumber(t.width)&&e.minWidth&&e.minWidth>t.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,l=this.originalPosition.top+this.originalSize.height,h=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&h&&(t.left=r-e.minWidth),s&&h&&(t.left=r-e.maxWidth),a&&c&&(t.top=l-e.minHeight),n&&c&&(t.top=l-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("<div style='overflow:hidden;'></div>"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,l={width:i.size.width-r,height:i.size.height-a},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(l,c&&h?{top:c,left:h}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,l=t(this).resizable("instance"),h=l.options,c=l.element,u=h.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(l.containerElement=t(d),/document/.test(u)||u===document?(l.containerOffset={left:0,top:0},l.containerPosition={left:0,top:0},l.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=l._num(e.css("padding"+s))}),l.containerOffset=e.offset(),l.containerPosition=e.position(),l.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=l.containerOffset,n=l.containerSize.height,o=l.containerSize.width,a=l._hasScroll(d,"left")?d.scrollWidth:o,r=l._hasScroll(d)?d.scrollHeight:n,l.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,l=a.containerOffset,h=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=l),h.left<(a._helper?l.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-l.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?l.left:0),h.top<(a._helper?l.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-l.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?l.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-l.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-l.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),l=a.outerWidth()-e.sizeDiff.width,h=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:l,height:h}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:l,height:h})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,l="number"==typeof s.grid?[s.grid,s.grid]:s.grid,h=l[0]||1,c=l[1]||1,u=Math.round((n.width-o.width)/h)*h,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,g=s.maxWidth&&p>s.maxWidth,m=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=l,_&&(p+=h),v&&(f+=c),g&&(p-=h),m&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-h)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-h>0?(i.size.width=p,i.position.left=a.left-u):(p=h-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable,t.widget("ui.accordion",{version:"1.12.1",options:{active:0,animate:{},classes:{"ui-accordion-header":"ui-corner-top","ui-accordion-header-collapsed":"ui-corner-all","ui-accordion-content":"ui-corner-bottom"},collapsible:!1,event:"click",header:"> li > :first-child, > :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var e=this.options;this.prevShow=this.prevHide=t(),this._addClass("ui-accordion","ui-widget ui-helper-reset"),this.element.attr("role","tablist"),e.collapsible||e.active!==!1&&null!=e.active||(e.active=0),this._processPanels(),0>e.active&&(e.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():t()}},_createIcons:function(){var e,i,s=this.options.icons;s&&(e=t("<span>"),this._addClass(e,"ui-accordion-header-icon","ui-icon "+s.header),e.prependTo(this.headers),i=this.active.children(".ui-accordion-header-icon"),this._removeClass(i,s.header)._addClass(i,null,s.activeHeader)._addClass(this.headers,"ui-accordion-icons"))},_destroyIcons:function(){this._removeClass(this.headers,"ui-accordion-icons"),this.headers.children(".ui-accordion-header-icon").remove()},_destroy:function(){var t;this.element.removeAttr("role"),this.headers.removeAttr("role aria-expanded aria-selected aria-controls tabIndex").removeUniqueId(),this._destroyIcons(),t=this.headers.next().css("display","").removeAttr("role aria-hidden aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&t.css("height","")},_setOption:function(t,e){return"active"===t?(this._activate(e),void 0):("event"===t&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(e)),this._super(t,e),"collapsible"!==t||e||this.options.active!==!1||this._activate(0),"icons"===t&&(this._destroyIcons(),e&&this._createIcons()),void 0)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t),this._toggleClass(this.headers.add(this.headers.next()),null,"ui-state-disabled",!!t)},_keydown:function(e){if(!e.altKey&&!e.ctrlKey){var i=t.ui.keyCode,s=this.headers.length,n=this.headers.index(e.target),o=!1;switch(e.keyCode){case i.RIGHT:case i.DOWN:o=this.headers[(n+1)%s];break;case i.LEFT:case i.UP:o=this.headers[(n-1+s)%s];break;case i.SPACE:case i.ENTER:this._eventHandler(e);break;case i.HOME:o=this.headers[0];break;case i.END:o=this.headers[s-1]}o&&(t(e.target).attr("tabIndex",-1),t(o).attr("tabIndex",0),t(o).trigger("focus"),e.preventDefault())}},_panelKeyDown:function(e){e.keyCode===t.ui.keyCode.UP&&e.ctrlKey&&t(e.currentTarget).prev().trigger("focus")},refresh:function(){var e=this.options;this._processPanels(),e.active===!1&&e.collapsible===!0||!this.headers.length?(e.active=!1,this.active=t()):e.active===!1?this._activate(0):this.active.length&&!t.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(e.active=!1,this.active=t()):this._activate(Math.max(0,e.active-1)):e.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var t=this.headers,e=this.panels;this.headers=this.element.find(this.options.header),this._addClass(this.headers,"ui-accordion-header ui-accordion-header-collapsed","ui-state-default"),this.panels=this.headers.next().filter(":not(.ui-accordion-content-active)").hide(),this._addClass(this.panels,"ui-accordion-content","ui-helper-reset ui-widget-content"),e&&(this._off(t.not(this.headers)),this._off(e.not(this.panels)))},_refresh:function(){var e,i=this.options,s=i.heightStyle,n=this.element.parent();this.active=this._findActive(i.active),this._addClass(this.active,"ui-accordion-header-active","ui-state-active")._removeClass(this.active,"ui-accordion-header-collapsed"),this._addClass(this.active.next(),"ui-accordion-content-active"),this.active.next().show(),this.headers.attr("role","tab").each(function(){var e=t(this),i=e.uniqueId().attr("id"),s=e.next(),n=s.uniqueId().attr("id");
|
8 |
-
e.attr("aria-controls",n),s.attr("aria-labelledby",i)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(i.event),"fill"===s?(e=n.height(),this.element.siblings(":visible").each(function(){var i=t(this),s=i.css("position");"absolute"!==s&&"fixed"!==s&&(e-=i.outerHeight(!0))}),this.headers.each(function(){e-=t(this).outerHeight(!0)}),this.headers.next().each(function(){t(this).height(Math.max(0,e-t(this).innerHeight()+t(this).height()))}).css("overflow","auto")):"auto"===s&&(e=0,this.headers.next().each(function(){var i=t(this).is(":visible");i||t(this).show(),e=Math.max(e,t(this).css("height","").height()),i||t(this).hide()}).height(e))},_activate:function(e){var i=this._findActive(e)[0];i!==this.active[0]&&(i=i||this.active[0],this._eventHandler({target:i,currentTarget:i,preventDefault:t.noop}))},_findActive:function(e){return"number"==typeof e?this.headers.eq(e):t()},_setupEvents:function(e){var i={keydown:"_keydown"};e&&t.each(e.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(e){var i,s,n=this.options,o=this.active,a=t(e.currentTarget),r=a[0]===o[0],l=r&&n.collapsible,h=l?t():a.next(),c=o.next(),u={oldHeader:o,oldPanel:c,newHeader:l?t():a,newPanel:h};e.preventDefault(),r&&!n.collapsible||this._trigger("beforeActivate",e,u)===!1||(n.active=l?!1:this.headers.index(a),this.active=r?t():a,this._toggle(u),this._removeClass(o,"ui-accordion-header-active","ui-state-active"),n.icons&&(i=o.children(".ui-accordion-header-icon"),this._removeClass(i,null,n.icons.activeHeader)._addClass(i,null,n.icons.header)),r||(this._removeClass(a,"ui-accordion-header-collapsed")._addClass(a,"ui-accordion-header-active","ui-state-active"),n.icons&&(s=a.children(".ui-accordion-header-icon"),this._removeClass(s,null,n.icons.header)._addClass(s,null,n.icons.activeHeader)),this._addClass(a.next(),"ui-accordion-content-active")))},_toggle:function(e){var i=e.newPanel,s=this.prevShow.length?this.prevShow:e.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=i,this.prevHide=s,this.options.animate?this._animate(i,s,e):(s.hide(),i.show(),this._toggleComplete(e)),s.attr({"aria-hidden":"true"}),s.prev().attr({"aria-selected":"false","aria-expanded":"false"}),i.length&&s.length?s.prev().attr({tabIndex:-1,"aria-expanded":"false"}):i.length&&this.headers.filter(function(){return 0===parseInt(t(this).attr("tabIndex"),10)}).attr("tabIndex",-1),i.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(t,e,i){var s,n,o,a=this,r=0,l=t.css("box-sizing"),h=t.length&&(!e.length||t.index()<e.index()),c=this.options.animate||{},u=h&&c.down||c,d=function(){a._toggleComplete(i)};return"number"==typeof u&&(o=u),"string"==typeof u&&(n=u),n=n||u.easing||c.easing,o=o||u.duration||c.duration,e.length?t.length?(s=t.show().outerHeight(),e.animate(this.hideProps,{duration:o,easing:n,step:function(t,e){e.now=Math.round(t)}}),t.hide().animate(this.showProps,{duration:o,easing:n,complete:d,step:function(t,i){i.now=Math.round(t),"height"!==i.prop?"content-box"===l&&(r+=i.now):"content"!==a.options.heightStyle&&(i.now=Math.round(s-e.outerHeight()-r),r=0)}}),void 0):e.animate(this.hideProps,o,n,d):t.animate(this.showProps,o,n,d)},_toggleComplete:function(t){var e=t.oldPanel,i=e.prev();this._removeClass(e,"ui-accordion-content-active"),this._removeClass(i,"ui-accordion-header-active")._addClass(i,"ui-accordion-header-collapsed"),e.length&&(e.parent()[0].className=e.parent()[0].className),this._trigger("activate",null,t)}});var c=/ui-corner-([a-z]){2,6}/g;t.widget("ui.controlgroup",{version:"1.12.1",defaultElement:"<div>",options:{direction:"horizontal",disabled:null,onlyVisible:!0,items:{button:"input[type=button], input[type=submit], input[type=reset], button, a",controlgroupLabel:".ui-controlgroup-label",checkboxradio:"input[type='checkbox'], input[type='radio']",selectmenu:"select",spinner:".ui-spinner-input"}},_create:function(){this._enhance()},_enhance:function(){this.element.attr("role","toolbar"),this.refresh()},_destroy:function(){this._callChildMethod("destroy"),this.childWidgets.removeData("ui-controlgroup-data"),this.element.removeAttr("role"),this.options.items.controlgroupLabel&&this.element.find(this.options.items.controlgroupLabel).find(".ui-controlgroup-label-contents").contents().unwrap()},_initWidgets:function(){var e=this,i=[];t.each(this.options.items,function(s,n){var o,a={};return n?"controlgroupLabel"===s?(o=e.element.find(n),o.each(function(){var e=t(this);e.children(".ui-controlgroup-label-contents").length||e.contents().wrapAll("<span class='ui-controlgroup-label-contents'></span>")}),e._addClass(o,null,"ui-widget ui-widget-content ui-state-default"),i=i.concat(o.get()),void 0):(t.fn[s]&&(a=e["_"+s+"Options"]?e["_"+s+"Options"]("middle"):{classes:{}},e.element.find(n).each(function(){var n=t(this),o=n[s]("instance"),r=t.widget.extend({},a);if("button"!==s||!n.parent(".ui-spinner").length){o||(o=n[s]()[s]("instance")),o&&(r.classes=e._resolveClassesValues(r.classes,o)),n[s](r);var l=n[s]("widget");t.data(l[0],"ui-controlgroup-data",o?o:n[s]("instance")),i.push(l[0])}})),void 0):void 0}),this.childWidgets=t(t.unique(i)),this._addClass(this.childWidgets,"ui-controlgroup-item")},_callChildMethod:function(e){this.childWidgets.each(function(){var i=t(this),s=i.data("ui-controlgroup-data");s&&s[e]&&s[e]()})},_updateCornerClass:function(t,e){var i="ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all",s=this._buildSimpleOptions(e,"label").classes.label;this._removeClass(t,null,i),this._addClass(t,null,s)},_buildSimpleOptions:function(t,e){var i="vertical"===this.options.direction,s={classes:{}};return s.classes[e]={middle:"",first:"ui-corner-"+(i?"top":"left"),last:"ui-corner-"+(i?"bottom":"right"),only:"ui-corner-all"}[t],s},_spinnerOptions:function(t){var e=this._buildSimpleOptions(t,"ui-spinner");return e.classes["ui-spinner-up"]="",e.classes["ui-spinner-down"]="",e},_buttonOptions:function(t){return this._buildSimpleOptions(t,"ui-button")},_checkboxradioOptions:function(t){return this._buildSimpleOptions(t,"ui-checkboxradio-label")},_selectmenuOptions:function(t){var e="vertical"===this.options.direction;return{width:e?"auto":!1,classes:{middle:{"ui-selectmenu-button-open":"","ui-selectmenu-button-closed":""},first:{"ui-selectmenu-button-open":"ui-corner-"+(e?"top":"tl"),"ui-selectmenu-button-closed":"ui-corner-"+(e?"top":"left")},last:{"ui-selectmenu-button-open":e?"":"ui-corner-tr","ui-selectmenu-button-closed":"ui-corner-"+(e?"bottom":"right")},only:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"}}[t]}},_resolveClassesValues:function(e,i){var s={};return t.each(e,function(n){var o=i.options.classes[n]||"";o=t.trim(o.replace(c,"")),s[n]=(o+" "+e[n]).replace(/\s+/g," ")}),s},_setOption:function(t,e){return"direction"===t&&this._removeClass("ui-controlgroup-"+this.options.direction),this._super(t,e),"disabled"===t?(this._callChildMethod(e?"disable":"enable"),void 0):(this.refresh(),void 0)},refresh:function(){var e,i=this;this._addClass("ui-controlgroup ui-controlgroup-"+this.options.direction),"horizontal"===this.options.direction&&this._addClass(null,"ui-helper-clearfix"),this._initWidgets(),e=this.childWidgets,this.options.onlyVisible&&(e=e.filter(":visible")),e.length&&(t.each(["first","last"],function(t,s){var n=e[s]().data("ui-controlgroup-data");if(n&&i["_"+n.widgetName+"Options"]){var o=i["_"+n.widgetName+"Options"](1===e.length?"only":s);o.classes=i._resolveClassesValues(o.classes,n),n.element[n.widgetName](o)}else i._updateCornerClass(e[s](),s)}),this._callChildMethod("refresh"))}}),t.widget("ui.checkboxradio",[t.ui.formResetMixin,{version:"1.12.1",options:{disabled:null,label:null,icon:!0,classes:{"ui-checkboxradio-label":"ui-corner-all","ui-checkboxradio-icon":"ui-corner-all"}},_getCreateOptions:function(){var e,i,s=this,n=this._super()||{};return this._readType(),i=this.element.labels(),this.label=t(i[i.length-1]),this.label.length||t.error("No label found for checkboxradio widget"),this.originalLabel="",this.label.contents().not(this.element[0]).each(function(){s.originalLabel+=3===this.nodeType?t(this).text():this.outerHTML}),this.originalLabel&&(n.label=this.originalLabel),e=this.element[0].disabled,null!=e&&(n.disabled=e),n},_create:function(){var t=this.element[0].checked;this._bindFormResetHandler(),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled),this._setOption("disabled",this.options.disabled),this._addClass("ui-checkboxradio","ui-helper-hidden-accessible"),this._addClass(this.label,"ui-checkboxradio-label","ui-button ui-widget"),"radio"===this.type&&this._addClass(this.label,"ui-checkboxradio-radio-label"),this.options.label&&this.options.label!==this.originalLabel?this._updateLabel():this.originalLabel&&(this.options.label=this.originalLabel),this._enhance(),t&&(this._addClass(this.label,"ui-checkboxradio-checked","ui-state-active"),this.icon&&this._addClass(this.icon,null,"ui-state-hover")),this._on({change:"_toggleClasses",focus:function(){this._addClass(this.label,null,"ui-state-focus ui-visual-focus")},blur:function(){this._removeClass(this.label,null,"ui-state-focus ui-visual-focus")}})},_readType:function(){var e=this.element[0].nodeName.toLowerCase();this.type=this.element[0].type,"input"===e&&/radio|checkbox/.test(this.type)||t.error("Can't create checkboxradio on element.nodeName="+e+" and element.type="+this.type)},_enhance:function(){this._updateIcon(this.element[0].checked)},widget:function(){return this.label},_getRadioGroup:function(){var e,i=this.element[0].name,s="input[name='"+t.ui.escapeSelector(i)+"']";return i?(e=this.form.length?t(this.form[0].elements).filter(s):t(s).filter(function(){return 0===t(this).form().length}),e.not(this.element)):t([])},_toggleClasses:function(){var e=this.element[0].checked;this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",e),this.options.icon&&"checkbox"===this.type&&this._toggleClass(this.icon,null,"ui-icon-check ui-state-checked",e)._toggleClass(this.icon,null,"ui-icon-blank",!e),"radio"===this.type&&this._getRadioGroup().each(function(){var e=t(this).checkboxradio("instance");e&&e._removeClass(e.label,"ui-checkboxradio-checked","ui-state-active")})},_destroy:function(){this._unbindFormResetHandler(),this.icon&&(this.icon.remove(),this.iconSpace.remove())},_setOption:function(t,e){return"label"!==t||e?(this._super(t,e),"disabled"===t?(this._toggleClass(this.label,null,"ui-state-disabled",e),this.element[0].disabled=e,void 0):(this.refresh(),void 0)):void 0},_updateIcon:function(e){var i="ui-icon ui-icon-background ";this.options.icon?(this.icon||(this.icon=t("<span>"),this.iconSpace=t("<span> </span>"),this._addClass(this.iconSpace,"ui-checkboxradio-icon-space")),"checkbox"===this.type?(i+=e?"ui-icon-check ui-state-checked":"ui-icon-blank",this._removeClass(this.icon,null,e?"ui-icon-blank":"ui-icon-check")):i+="ui-icon-blank",this._addClass(this.icon,"ui-checkboxradio-icon",i),e||this._removeClass(this.icon,null,"ui-icon-check ui-state-checked"),this.icon.prependTo(this.label).after(this.iconSpace)):void 0!==this.icon&&(this.icon.remove(),this.iconSpace.remove(),delete this.icon)},_updateLabel:function(){var t=this.label.contents().not(this.element[0]);this.icon&&(t=t.not(this.icon[0])),this.iconSpace&&(t=t.not(this.iconSpace[0])),t.remove(),this.label.append(this.options.label)},refresh:function(){var t=this.element[0].checked,e=this.element[0].disabled;this._updateIcon(t),this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),null!==this.options.label&&this._updateLabel(),e!==this.options.disabled&&this._setOptions({disabled:e})}}]),t.ui.checkboxradio,t.widget("ui.button",{version:"1.12.1",defaultElement:"<button>",options:{classes:{"ui-button":"ui-corner-all"},disabled:null,icon:null,iconPosition:"beginning",label:null,showLabel:!0},_getCreateOptions:function(){var t,e=this._super()||{};return this.isInput=this.element.is("input"),t=this.element[0].disabled,null!=t&&(e.disabled=t),this.originalLabel=this.isInput?this.element.val():this.element.html(),this.originalLabel&&(e.label=this.originalLabel),e},_create:function(){!this.option.showLabel&!this.options.icon&&(this.options.showLabel=!0),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled||!1),this.hasTitle=!!this.element.attr("title"),this.options.label&&this.options.label!==this.originalLabel&&(this.isInput?this.element.val(this.options.label):this.element.html(this.options.label)),this._addClass("ui-button","ui-widget"),this._setOption("disabled",this.options.disabled),this._enhance(),this.element.is("a")&&this._on({keyup:function(e){e.keyCode===t.ui.keyCode.SPACE&&(e.preventDefault(),this.element[0].click?this.element[0].click():this.element.trigger("click"))}})},_enhance:function(){this.element.is("button")||this.element.attr("role","button"),this.options.icon&&(this._updateIcon("icon",this.options.icon),this._updateTooltip())},_updateTooltip:function(){this.title=this.element.attr("title"),this.options.showLabel||this.title||this.element.attr("title",this.options.label)},_updateIcon:function(e,i){var s="iconPosition"!==e,n=s?this.options.iconPosition:i,o="top"===n||"bottom"===n;this.icon?s&&this._removeClass(this.icon,null,this.options.icon):(this.icon=t("<span>"),this._addClass(this.icon,"ui-button-icon","ui-icon"),this.options.showLabel||this._addClass("ui-button-icon-only")),s&&this._addClass(this.icon,null,i),this._attachIcon(n),o?(this._addClass(this.icon,null,"ui-widget-icon-block"),this.iconSpace&&this.iconSpace.remove()):(this.iconSpace||(this.iconSpace=t("<span> </span>"),this._addClass(this.iconSpace,"ui-button-icon-space")),this._removeClass(this.icon,null,"ui-wiget-icon-block"),this._attachIconSpace(n))},_destroy:function(){this.element.removeAttr("role"),this.icon&&this.icon.remove(),this.iconSpace&&this.iconSpace.remove(),this.hasTitle||this.element.removeAttr("title")},_attachIconSpace:function(t){this.icon[/^(?:end|bottom)/.test(t)?"before":"after"](this.iconSpace)},_attachIcon:function(t){this.element[/^(?:end|bottom)/.test(t)?"append":"prepend"](this.icon)},_setOptions:function(t){var e=void 0===t.showLabel?this.options.showLabel:t.showLabel,i=void 0===t.icon?this.options.icon:t.icon;e||i||(t.showLabel=!0),this._super(t)},_setOption:function(t,e){"icon"===t&&(e?this._updateIcon(t,e):this.icon&&(this.icon.remove(),this.iconSpace&&this.iconSpace.remove())),"iconPosition"===t&&this._updateIcon(t,e),"showLabel"===t&&(this._toggleClass("ui-button-icon-only",null,!e),this._updateTooltip()),"label"===t&&(this.isInput?this.element.val(e):(this.element.html(e),this.icon&&(this._attachIcon(this.options.iconPosition),this._attachIconSpace(this.options.iconPosition)))),this._super(t,e),"disabled"===t&&(this._toggleClass(null,"ui-state-disabled",e),this.element[0].disabled=e,e&&this.element.blur())},refresh:function(){var t=this.element.is("input, button")?this.element[0].disabled:this.element.hasClass("ui-button-disabled");t!==this.options.disabled&&this._setOptions({disabled:t}),this._updateTooltip()}}),t.uiBackCompat!==!1&&(t.widget("ui.button",t.ui.button,{options:{text:!0,icons:{primary:null,secondary:null}},_create:function(){this.options.showLabel&&!this.options.text&&(this.options.showLabel=this.options.text),!this.options.showLabel&&this.options.text&&(this.options.text=this.options.showLabel),this.options.icon||!this.options.icons.primary&&!this.options.icons.secondary?this.options.icon&&(this.options.icons.primary=this.options.icon):this.options.icons.primary?this.options.icon=this.options.icons.primary:(this.options.icon=this.options.icons.secondary,this.options.iconPosition="end"),this._super()},_setOption:function(t,e){return"text"===t?(this._super("showLabel",e),void 0):("showLabel"===t&&(this.options.text=e),"icon"===t&&(this.options.icons.primary=e),"icons"===t&&(e.primary?(this._super("icon",e.primary),this._super("iconPosition","beginning")):e.secondary&&(this._super("icon",e.secondary),this._super("iconPosition","end"))),this._superApply(arguments),void 0)}}),t.fn.button=function(e){return function(){return!this.length||this.length&&"INPUT"!==this[0].tagName||this.length&&"INPUT"===this[0].tagName&&"checkbox"!==this.attr("type")&&"radio"!==this.attr("type")?e.apply(this,arguments):(t.ui.checkboxradio||t.error("Checkboxradio widget missing"),0===arguments.length?this.checkboxradio({icon:!1}):this.checkboxradio.apply(this,arguments))}}(t.fn.button),t.fn.buttonset=function(){return t.ui.controlgroup||t.error("Controlgroup widget missing"),"option"===arguments[0]&&"items"===arguments[1]&&arguments[2]?this.controlgroup.apply(this,[arguments[0],"items.button",arguments[2]]):"option"===arguments[0]&&"items"===arguments[1]?this.controlgroup.apply(this,[arguments[0],"items.button"]):("object"==typeof arguments[0]&&arguments[0].items&&(arguments[0].items={button:arguments[0].items}),this.controlgroup.apply(this,arguments))}),t.ui.button,t.extend(t.ui,{datepicker:{version:"1.12.1"}});var u;t.extend(s.prototype,{markerClassName:"hasDatepicker",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(t){return a(this._defaults,t||{}),this},_attachDatepicker:function(e,i){var s,n,o;s=e.nodeName.toLowerCase(),n="div"===s||"span"===s,e.id||(this.uuid+=1,e.id="dp"+this.uuid),o=this._newInst(t(e),n),o.settings=t.extend({},i||{}),"input"===s?this._connectDatepicker(e,o):n&&this._inlineDatepicker(e,o)},_newInst:function(e,i){var s=e[0].id.replace(/([^A-Za-z0-9_\-])/g,"\\\\$1");return{id:s,input:e,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:i,dpDiv:i?n(t("<div class='"+this._inlineClass+" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")):this.dpDiv}},_connectDatepicker:function(e,i){var s=t(e);i.append=t([]),i.trigger=t([]),s.hasClass(this.markerClassName)||(this._attachments(s,i),s.addClass(this.markerClassName).on("keydown",this._doKeyDown).on("keypress",this._doKeyPress).on("keyup",this._doKeyUp),this._autoSize(i),t.data(e,"datepicker",i),i.settings.disabled&&this._disableDatepicker(e))},_attachments:function(e,i){var s,n,o,a=this._get(i,"appendText"),r=this._get(i,"isRTL");i.append&&i.append.remove(),a&&(i.append=t("<span class='"+this._appendClass+"'>"+a+"</span>"),e[r?"before":"after"](i.append)),e.off("focus",this._showDatepicker),i.trigger&&i.trigger.remove(),s=this._get(i,"showOn"),("focus"===s||"both"===s)&&e.on("focus",this._showDatepicker),("button"===s||"both"===s)&&(n=this._get(i,"buttonText"),o=this._get(i,"buttonImage"),i.trigger=t(this._get(i,"buttonImageOnly")?t("<img/>").addClass(this._triggerClass).attr({src:o,alt:n,title:n}):t("<button type='button'></button>").addClass(this._triggerClass).html(o?t("<img/>").attr({src:o,alt:n,title:n}):n)),e[r?"before":"after"](i.trigger),i.trigger.on("click",function(){return t.datepicker._datepickerShowing&&t.datepicker._lastInput===e[0]?t.datepicker._hideDatepicker():t.datepicker._datepickerShowing&&t.datepicker._lastInput!==e[0]?(t.datepicker._hideDatepicker(),t.datepicker._showDatepicker(e[0])):t.datepicker._showDatepicker(e[0]),!1}))},_autoSize:function(t){if(this._get(t,"autoSize")&&!t.inline){var e,i,s,n,o=new Date(2009,11,20),a=this._get(t,"dateFormat");a.match(/[DM]/)&&(e=function(t){for(i=0,s=0,n=0;t.length>n;n++)t[n].length>i&&(i=t[n].length,s=n);return s},o.setMonth(e(this._get(t,a.match(/MM/)?"monthNames":"monthNamesShort"))),o.setDate(e(this._get(t,a.match(/DD/)?"dayNames":"dayNamesShort"))+20-o.getDay())),t.input.attr("size",this._formatDate(t,o).length)}},_inlineDatepicker:function(e,i){var s=t(e);s.hasClass(this.markerClassName)||(s.addClass(this.markerClassName).append(i.dpDiv),t.data(e,"datepicker",i),this._setDate(i,this._getDefaultDate(i),!0),this._updateDatepicker(i),this._updateAlternate(i),i.settings.disabled&&this._disableDatepicker(e),i.dpDiv.css("display","block"))},_dialogDatepicker:function(e,i,s,n,o){var r,l,h,c,u,d=this._dialogInst;return d||(this.uuid+=1,r="dp"+this.uuid,this._dialogInput=t("<input type='text' id='"+r+"' style='position: absolute; top: -100px; width: 0px;'/>"),this._dialogInput.on("keydown",this._doKeyDown),t("body").append(this._dialogInput),d=this._dialogInst=this._newInst(this._dialogInput,!1),d.settings={},t.data(this._dialogInput[0],"datepicker",d)),a(d.settings,n||{}),i=i&&i.constructor===Date?this._formatDate(d,i):i,this._dialogInput.val(i),this._pos=o?o.length?o:[o.pageX,o.pageY]:null,this._pos||(l=document.documentElement.clientWidth,h=document.documentElement.clientHeight,c=document.documentElement.scrollLeft||document.body.scrollLeft,u=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[l/2-100+c,h/2-150+u]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),d.settings.onSelect=s,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),t.blockUI&&t.blockUI(this.dpDiv),t.data(this._dialogInput[0],"datepicker",d),this},_destroyDatepicker:function(e){var i,s=t(e),n=t.data(e,"datepicker");s.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),t.removeData(e,"datepicker"),"input"===i?(n.append.remove(),n.trigger.remove(),s.removeClass(this.markerClassName).off("focus",this._showDatepicker).off("keydown",this._doKeyDown).off("keypress",this._doKeyPress).off("keyup",this._doKeyUp)):("div"===i||"span"===i)&&s.removeClass(this.markerClassName).empty(),u===n&&(u=null))},_enableDatepicker:function(e){var i,s,n=t(e),o=t.data(e,"datepicker");n.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),"input"===i?(e.disabled=!1,o.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().removeClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=t.map(this._disabledInputs,function(t){return t===e?null:t}))},_disableDatepicker:function(e){var i,s,n=t(e),o=t.data(e,"datepicker");n.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),"input"===i?(e.disabled=!0,o.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().addClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=t.map(this._disabledInputs,function(t){return t===e?null:t}),this._disabledInputs[this._disabledInputs.length]=e)},_isDisabledDatepicker:function(t){if(!t)return!1;for(var e=0;this._disabledInputs.length>e;e++)if(this._disabledInputs[e]===t)return!0;return!1},_getInst:function(e){try{return t.data(e,"datepicker")}catch(i){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(e,i,s){var n,o,r,l,h=this._getInst(e);return 2===arguments.length&&"string"==typeof i?"defaults"===i?t.extend({},t.datepicker._defaults):h?"all"===i?t.extend({},h.settings):this._get(h,i):null:(n=i||{},"string"==typeof i&&(n={},n[i]=s),h&&(this._curInst===h&&this._hideDatepicker(),o=this._getDateDatepicker(e,!0),r=this._getMinMaxDate(h,"min"),l=this._getMinMaxDate(h,"max"),a(h.settings,n),null!==r&&void 0!==n.dateFormat&&void 0===n.minDate&&(h.settings.minDate=this._formatDate(h,r)),null!==l&&void 0!==n.dateFormat&&void 0===n.maxDate&&(h.settings.maxDate=this._formatDate(h,l)),"disabled"in n&&(n.disabled?this._disableDatepicker(e):this._enableDatepicker(e)),this._attachments(t(e),h),this._autoSize(h),this._setDate(h,o),this._updateAlternate(h),this._updateDatepicker(h)),void 0)},_changeDatepicker:function(t,e,i){this._optionDatepicker(t,e,i)},_refreshDatepicker:function(t){var e=this._getInst(t);e&&this._updateDatepicker(e)},_setDateDatepicker:function(t,e){var i=this._getInst(t);i&&(this._setDate(i,e),this._updateDatepicker(i),this._updateAlternate(i))},_getDateDatepicker:function(t,e){var i=this._getInst(t);return i&&!i.inline&&this._setDateFromField(i,e),i?this._getDate(i):null},_doKeyDown:function(e){var i,s,n,o=t.datepicker._getInst(e.target),a=!0,r=o.dpDiv.is(".ui-datepicker-rtl");if(o._keyEvent=!0,t.datepicker._datepickerShowing)switch(e.keyCode){case 9:t.datepicker._hideDatepicker(),a=!1;break;case 13:return n=t("td."+t.datepicker._dayOverClass+":not(."+t.datepicker._currentClass+")",o.dpDiv),n[0]&&t.datepicker._selectDay(e.target,o.selectedMonth,o.selectedYear,n[0]),i=t.datepicker._get(o,"onSelect"),i?(s=t.datepicker._formatDate(o),i.apply(o.input?o.input[0]:null,[s,o])):t.datepicker._hideDatepicker(),!1;case 27:t.datepicker._hideDatepicker();break;case 33:t.datepicker._adjustDate(e.target,e.ctrlKey?-t.datepicker._get(o,"stepBigMonths"):-t.datepicker._get(o,"stepMonths"),"M");break;case 34:t.datepicker._adjustDate(e.target,e.ctrlKey?+t.datepicker._get(o,"stepBigMonths"):+t.datepicker._get(o,"stepMonths"),"M");break;case 35:(e.ctrlKey||e.metaKey)&&t.datepicker._clearDate(e.target),a=e.ctrlKey||e.metaKey;break;case 36:(e.ctrlKey||e.metaKey)&&t.datepicker._gotoToday(e.target),a=e.ctrlKey||e.metaKey;break;case 37:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,r?1:-1,"D"),a=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&t.datepicker._adjustDate(e.target,e.ctrlKey?-t.datepicker._get(o,"stepBigMonths"):-t.datepicker._get(o,"stepMonths"),"M");break;case 38:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,-7,"D"),a=e.ctrlKey||e.metaKey;break;case 39:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,r?-1:1,"D"),a=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&t.datepicker._adjustDate(e.target,e.ctrlKey?+t.datepicker._get(o,"stepBigMonths"):+t.datepicker._get(o,"stepMonths"),"M");break;case 40:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,7,"D"),a=e.ctrlKey||e.metaKey;break;default:a=!1}else 36===e.keyCode&&e.ctrlKey?t.datepicker._showDatepicker(this):a=!1;a&&(e.preventDefault(),e.stopPropagation())},_doKeyPress:function(e){var i,s,n=t.datepicker._getInst(e.target);return t.datepicker._get(n,"constrainInput")?(i=t.datepicker._possibleChars(t.datepicker._get(n,"dateFormat")),s=String.fromCharCode(null==e.charCode?e.keyCode:e.charCode),e.ctrlKey||e.metaKey||" ">s||!i||i.indexOf(s)>-1):void 0},_doKeyUp:function(e){var i,s=t.datepicker._getInst(e.target);if(s.input.val()!==s.lastVal)try{i=t.datepicker.parseDate(t.datepicker._get(s,"dateFormat"),s.input?s.input.val():null,t.datepicker._getFormatConfig(s)),i&&(t.datepicker._setDateFromField(s),t.datepicker._updateAlternate(s),t.datepicker._updateDatepicker(s))}catch(n){}return!0},_showDatepicker:function(e){if(e=e.target||e,"input"!==e.nodeName.toLowerCase()&&(e=t("input",e.parentNode)[0]),!t.datepicker._isDisabledDatepicker(e)&&t.datepicker._lastInput!==e){var s,n,o,r,l,h,c;s=t.datepicker._getInst(e),t.datepicker._curInst&&t.datepicker._curInst!==s&&(t.datepicker._curInst.dpDiv.stop(!0,!0),s&&t.datepicker._datepickerShowing&&t.datepicker._hideDatepicker(t.datepicker._curInst.input[0])),n=t.datepicker._get(s,"beforeShow"),o=n?n.apply(e,[e,s]):{},o!==!1&&(a(s.settings,o),s.lastVal=null,t.datepicker._lastInput=e,t.datepicker._setDateFromField(s),t.datepicker._inDialog&&(e.value=""),t.datepicker._pos||(t.datepicker._pos=t.datepicker._findPos(e),t.datepicker._pos[1]+=e.offsetHeight),r=!1,t(e).parents().each(function(){return r|="fixed"===t(this).css("position"),!r}),l={left:t.datepicker._pos[0],top:t.datepicker._pos[1]},t.datepicker._pos=null,s.dpDiv.empty(),s.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),t.datepicker._updateDatepicker(s),l=t.datepicker._checkOffset(s,l,r),s.dpDiv.css({position:t.datepicker._inDialog&&t.blockUI?"static":r?"fixed":"absolute",display:"none",left:l.left+"px",top:l.top+"px"}),s.inline||(h=t.datepicker._get(s,"showAnim"),c=t.datepicker._get(s,"duration"),s.dpDiv.css("z-index",i(t(e))+1),t.datepicker._datepickerShowing=!0,t.effects&&t.effects.effect[h]?s.dpDiv.show(h,t.datepicker._get(s,"showOptions"),c):s.dpDiv[h||"show"](h?c:null),t.datepicker._shouldFocusInput(s)&&s.input.trigger("focus"),t.datepicker._curInst=s))}},_updateDatepicker:function(e){this.maxRows=4,u=e,e.dpDiv.empty().append(this._generateHTML(e)),this._attachHandlers(e);var i,s=this._getNumberOfMonths(e),n=s[1],a=17,r=e.dpDiv.find("."+this._dayOverClass+" a");r.length>0&&o.apply(r.get(0)),e.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),n>1&&e.dpDiv.addClass("ui-datepicker-multi-"+n).css("width",a*n+"em"),e.dpDiv[(1!==s[0]||1!==s[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),e.dpDiv[(this._get(e,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),e===t.datepicker._curInst&&t.datepicker._datepickerShowing&&t.datepicker._shouldFocusInput(e)&&e.input.trigger("focus"),e.yearshtml&&(i=e.yearshtml,setTimeout(function(){i===e.yearshtml&&e.yearshtml&&e.dpDiv.find("select.ui-datepicker-year:first").replaceWith(e.yearshtml),i=e.yearshtml=null},0))},_shouldFocusInput:function(t){return t.input&&t.input.is(":visible")&&!t.input.is(":disabled")&&!t.input.is(":focus")},_checkOffset:function(e,i,s){var n=e.dpDiv.outerWidth(),o=e.dpDiv.outerHeight(),a=e.input?e.input.outerWidth():0,r=e.input?e.input.outerHeight():0,l=document.documentElement.clientWidth+(s?0:t(document).scrollLeft()),h=document.documentElement.clientHeight+(s?0:t(document).scrollTop());return i.left-=this._get(e,"isRTL")?n-a:0,i.left-=s&&i.left===e.input.offset().left?t(document).scrollLeft():0,i.top-=s&&i.top===e.input.offset().top+r?t(document).scrollTop():0,i.left-=Math.min(i.left,i.left+n>l&&l>n?Math.abs(i.left+n-l):0),i.top-=Math.min(i.top,i.top+o>h&&h>o?Math.abs(o+r):0),i},_findPos:function(e){for(var i,s=this._getInst(e),n=this._get(s,"isRTL");e&&("hidden"===e.type||1!==e.nodeType||t.expr.filters.hidden(e));)e=e[n?"previousSibling":"nextSibling"];return i=t(e).offset(),[i.left,i.top]},_hideDatepicker:function(e){var i,s,n,o,a=this._curInst;!a||e&&a!==t.data(e,"datepicker")||this._datepickerShowing&&(i=this._get(a,"showAnim"),s=this._get(a,"duration"),n=function(){t.datepicker._tidyDialog(a)},t.effects&&(t.effects.effect[i]||t.effects[i])?a.dpDiv.hide(i,t.datepicker._get(a,"showOptions"),s,n):a.dpDiv["slideDown"===i?"slideUp":"fadeIn"===i?"fadeOut":"hide"](i?s:null,n),i||n(),this._datepickerShowing=!1,o=this._get(a,"onClose"),o&&o.apply(a.input?a.input[0]:null,[a.input?a.input.val():"",a]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),t.blockUI&&(t.unblockUI(),t("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(t){t.dpDiv.removeClass(this._dialogClass).off(".ui-datepicker-calendar")},_checkExternalClick:function(e){if(t.datepicker._curInst){var i=t(e.target),s=t.datepicker._getInst(i[0]);(i[0].id!==t.datepicker._mainDivId&&0===i.parents("#"+t.datepicker._mainDivId).length&&!i.hasClass(t.datepicker.markerClassName)&&!i.closest("."+t.datepicker._triggerClass).length&&t.datepicker._datepickerShowing&&(!t.datepicker._inDialog||!t.blockUI)||i.hasClass(t.datepicker.markerClassName)&&t.datepicker._curInst!==s)&&t.datepicker._hideDatepicker()}},_adjustDate:function(e,i,s){var n=t(e),o=this._getInst(n[0]);this._isDisabledDatepicker(n[0])||(this._adjustInstDate(o,i+("M"===s?this._get(o,"showCurrentAtPos"):0),s),this._updateDatepicker(o))},_gotoToday:function(e){var i,s=t(e),n=this._getInst(s[0]);
|
9 |
-
this._get(n,"gotoCurrent")&&n.currentDay?(n.selectedDay=n.currentDay,n.drawMonth=n.selectedMonth=n.currentMonth,n.drawYear=n.selectedYear=n.currentYear):(i=new Date,n.selectedDay=i.getDate(),n.drawMonth=n.selectedMonth=i.getMonth(),n.drawYear=n.selectedYear=i.getFullYear()),this._notifyChange(n),this._adjustDate(s)},_selectMonthYear:function(e,i,s){var n=t(e),o=this._getInst(n[0]);o["selected"+("M"===s?"Month":"Year")]=o["draw"+("M"===s?"Month":"Year")]=parseInt(i.options[i.selectedIndex].value,10),this._notifyChange(o),this._adjustDate(n)},_selectDay:function(e,i,s,n){var o,a=t(e);t(n).hasClass(this._unselectableClass)||this._isDisabledDatepicker(a[0])||(o=this._getInst(a[0]),o.selectedDay=o.currentDay=t("a",n).html(),o.selectedMonth=o.currentMonth=i,o.selectedYear=o.currentYear=s,this._selectDate(e,this._formatDate(o,o.currentDay,o.currentMonth,o.currentYear)))},_clearDate:function(e){var i=t(e);this._selectDate(i,"")},_selectDate:function(e,i){var s,n=t(e),o=this._getInst(n[0]);i=null!=i?i:this._formatDate(o),o.input&&o.input.val(i),this._updateAlternate(o),s=this._get(o,"onSelect"),s?s.apply(o.input?o.input[0]:null,[i,o]):o.input&&o.input.trigger("change"),o.inline?this._updateDatepicker(o):(this._hideDatepicker(),this._lastInput=o.input[0],"object"!=typeof o.input[0]&&o.input.trigger("focus"),this._lastInput=null)},_updateAlternate:function(e){var i,s,n,o=this._get(e,"altField");o&&(i=this._get(e,"altFormat")||this._get(e,"dateFormat"),s=this._getDate(e),n=this.formatDate(i,s,this._getFormatConfig(e)),t(o).val(n))},noWeekends:function(t){var e=t.getDay();return[e>0&&6>e,""]},iso8601Week:function(t){var e,i=new Date(t.getTime());return i.setDate(i.getDate()+4-(i.getDay()||7)),e=i.getTime(),i.setMonth(0),i.setDate(1),Math.floor(Math.round((e-i)/864e5)/7)+1},parseDate:function(e,i,s){if(null==e||null==i)throw"Invalid arguments";if(i="object"==typeof i?""+i:i+"",""===i)return null;var n,o,a,r,l=0,h=(s?s.shortYearCutoff:null)||this._defaults.shortYearCutoff,c="string"!=typeof h?h:(new Date).getFullYear()%100+parseInt(h,10),u=(s?s.dayNamesShort:null)||this._defaults.dayNamesShort,d=(s?s.dayNames:null)||this._defaults.dayNames,p=(s?s.monthNamesShort:null)||this._defaults.monthNamesShort,f=(s?s.monthNames:null)||this._defaults.monthNames,g=-1,m=-1,_=-1,v=-1,b=!1,y=function(t){var i=e.length>n+1&&e.charAt(n+1)===t;return i&&n++,i},w=function(t){var e=y(t),s="@"===t?14:"!"===t?20:"y"===t&&e?4:"o"===t?3:2,n="y"===t?s:1,o=RegExp("^\\d{"+n+","+s+"}"),a=i.substring(l).match(o);if(!a)throw"Missing number at position "+l;return l+=a[0].length,parseInt(a[0],10)},k=function(e,s,n){var o=-1,a=t.map(y(e)?n:s,function(t,e){return[[e,t]]}).sort(function(t,e){return-(t[1].length-e[1].length)});if(t.each(a,function(t,e){var s=e[1];return i.substr(l,s.length).toLowerCase()===s.toLowerCase()?(o=e[0],l+=s.length,!1):void 0}),-1!==o)return o+1;throw"Unknown name at position "+l},x=function(){if(i.charAt(l)!==e.charAt(n))throw"Unexpected literal at position "+l;l++};for(n=0;e.length>n;n++)if(b)"'"!==e.charAt(n)||y("'")?x():b=!1;else switch(e.charAt(n)){case"d":_=w("d");break;case"D":k("D",u,d);break;case"o":v=w("o");break;case"m":m=w("m");break;case"M":m=k("M",p,f);break;case"y":g=w("y");break;case"@":r=new Date(w("@")),g=r.getFullYear(),m=r.getMonth()+1,_=r.getDate();break;case"!":r=new Date((w("!")-this._ticksTo1970)/1e4),g=r.getFullYear(),m=r.getMonth()+1,_=r.getDate();break;case"'":y("'")?x():b=!0;break;default:x()}if(i.length>l&&(a=i.substr(l),!/^\s+/.test(a)))throw"Extra/unparsed characters found in date: "+a;if(-1===g?g=(new Date).getFullYear():100>g&&(g+=(new Date).getFullYear()-(new Date).getFullYear()%100+(c>=g?0:-100)),v>-1)for(m=1,_=v;;){if(o=this._getDaysInMonth(g,m-1),o>=_)break;m++,_-=o}if(r=this._daylightSavingAdjust(new Date(g,m-1,_)),r.getFullYear()!==g||r.getMonth()+1!==m||r.getDate()!==_)throw"Invalid date";return r},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:1e7*60*60*24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925)),formatDate:function(t,e,i){if(!e)return"";var s,n=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,o=(i?i.dayNames:null)||this._defaults.dayNames,a=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,r=(i?i.monthNames:null)||this._defaults.monthNames,l=function(e){var i=t.length>s+1&&t.charAt(s+1)===e;return i&&s++,i},h=function(t,e,i){var s=""+e;if(l(t))for(;i>s.length;)s="0"+s;return s},c=function(t,e,i,s){return l(t)?s[e]:i[e]},u="",d=!1;if(e)for(s=0;t.length>s;s++)if(d)"'"!==t.charAt(s)||l("'")?u+=t.charAt(s):d=!1;else switch(t.charAt(s)){case"d":u+=h("d",e.getDate(),2);break;case"D":u+=c("D",e.getDay(),n,o);break;case"o":u+=h("o",Math.round((new Date(e.getFullYear(),e.getMonth(),e.getDate()).getTime()-new Date(e.getFullYear(),0,0).getTime())/864e5),3);break;case"m":u+=h("m",e.getMonth()+1,2);break;case"M":u+=c("M",e.getMonth(),a,r);break;case"y":u+=l("y")?e.getFullYear():(10>e.getFullYear()%100?"0":"")+e.getFullYear()%100;break;case"@":u+=e.getTime();break;case"!":u+=1e4*e.getTime()+this._ticksTo1970;break;case"'":l("'")?u+="'":d=!0;break;default:u+=t.charAt(s)}return u},_possibleChars:function(t){var e,i="",s=!1,n=function(i){var s=t.length>e+1&&t.charAt(e+1)===i;return s&&e++,s};for(e=0;t.length>e;e++)if(s)"'"!==t.charAt(e)||n("'")?i+=t.charAt(e):s=!1;else switch(t.charAt(e)){case"d":case"m":case"y":case"@":i+="0123456789";break;case"D":case"M":return null;case"'":n("'")?i+="'":s=!0;break;default:i+=t.charAt(e)}return i},_get:function(t,e){return void 0!==t.settings[e]?t.settings[e]:this._defaults[e]},_setDateFromField:function(t,e){if(t.input.val()!==t.lastVal){var i=this._get(t,"dateFormat"),s=t.lastVal=t.input?t.input.val():null,n=this._getDefaultDate(t),o=n,a=this._getFormatConfig(t);try{o=this.parseDate(i,s,a)||n}catch(r){s=e?"":s}t.selectedDay=o.getDate(),t.drawMonth=t.selectedMonth=o.getMonth(),t.drawYear=t.selectedYear=o.getFullYear(),t.currentDay=s?o.getDate():0,t.currentMonth=s?o.getMonth():0,t.currentYear=s?o.getFullYear():0,this._adjustInstDate(t)}},_getDefaultDate:function(t){return this._restrictMinMax(t,this._determineDate(t,this._get(t,"defaultDate"),new Date))},_determineDate:function(e,i,s){var n=function(t){var e=new Date;return e.setDate(e.getDate()+t),e},o=function(i){try{return t.datepicker.parseDate(t.datepicker._get(e,"dateFormat"),i,t.datepicker._getFormatConfig(e))}catch(s){}for(var n=(i.toLowerCase().match(/^c/)?t.datepicker._getDate(e):null)||new Date,o=n.getFullYear(),a=n.getMonth(),r=n.getDate(),l=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,h=l.exec(i);h;){switch(h[2]||"d"){case"d":case"D":r+=parseInt(h[1],10);break;case"w":case"W":r+=7*parseInt(h[1],10);break;case"m":case"M":a+=parseInt(h[1],10),r=Math.min(r,t.datepicker._getDaysInMonth(o,a));break;case"y":case"Y":o+=parseInt(h[1],10),r=Math.min(r,t.datepicker._getDaysInMonth(o,a))}h=l.exec(i)}return new Date(o,a,r)},a=null==i||""===i?s:"string"==typeof i?o(i):"number"==typeof i?isNaN(i)?s:n(i):new Date(i.getTime());return a=a&&"Invalid Date"==""+a?s:a,a&&(a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0)),this._daylightSavingAdjust(a)},_daylightSavingAdjust:function(t){return t?(t.setHours(t.getHours()>12?t.getHours()+2:0),t):null},_setDate:function(t,e,i){var s=!e,n=t.selectedMonth,o=t.selectedYear,a=this._restrictMinMax(t,this._determineDate(t,e,new Date));t.selectedDay=t.currentDay=a.getDate(),t.drawMonth=t.selectedMonth=t.currentMonth=a.getMonth(),t.drawYear=t.selectedYear=t.currentYear=a.getFullYear(),n===t.selectedMonth&&o===t.selectedYear||i||this._notifyChange(t),this._adjustInstDate(t),t.input&&t.input.val(s?"":this._formatDate(t))},_getDate:function(t){var e=!t.currentYear||t.input&&""===t.input.val()?null:this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return e},_attachHandlers:function(e){var i=this._get(e,"stepMonths"),s="#"+e.id.replace(/\\\\/g,"\\");e.dpDiv.find("[data-handler]").map(function(){var e={prev:function(){t.datepicker._adjustDate(s,-i,"M")},next:function(){t.datepicker._adjustDate(s,+i,"M")},hide:function(){t.datepicker._hideDatepicker()},today:function(){t.datepicker._gotoToday(s)},selectDay:function(){return t.datepicker._selectDay(s,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return t.datepicker._selectMonthYear(s,this,"M"),!1},selectYear:function(){return t.datepicker._selectMonthYear(s,this,"Y"),!1}};t(this).on(this.getAttribute("data-event"),e[this.getAttribute("data-handler")])})},_generateHTML:function(t){var e,i,s,n,o,a,r,l,h,c,u,d,p,f,g,m,_,v,b,y,w,k,x,C,D,T,I,M,P,S,N,H,A,z,O,E,W,F,L,R=new Date,Y=this._daylightSavingAdjust(new Date(R.getFullYear(),R.getMonth(),R.getDate())),B=this._get(t,"isRTL"),j=this._get(t,"showButtonPanel"),q=this._get(t,"hideIfNoPrevNext"),K=this._get(t,"navigationAsDateFormat"),U=this._getNumberOfMonths(t),V=this._get(t,"showCurrentAtPos"),X=this._get(t,"stepMonths"),$=1!==U[0]||1!==U[1],G=this._daylightSavingAdjust(t.currentDay?new Date(t.currentYear,t.currentMonth,t.currentDay):new Date(9999,9,9)),J=this._getMinMaxDate(t,"min"),Q=this._getMinMaxDate(t,"max"),Z=t.drawMonth-V,te=t.drawYear;if(0>Z&&(Z+=12,te--),Q)for(e=this._daylightSavingAdjust(new Date(Q.getFullYear(),Q.getMonth()-U[0]*U[1]+1,Q.getDate())),e=J&&J>e?J:e;this._daylightSavingAdjust(new Date(te,Z,1))>e;)Z--,0>Z&&(Z=11,te--);for(t.drawMonth=Z,t.drawYear=te,i=this._get(t,"prevText"),i=K?this.formatDate(i,this._daylightSavingAdjust(new Date(te,Z-X,1)),this._getFormatConfig(t)):i,s=this._canAdjustMonth(t,-1,te,Z)?"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(B?"e":"w")+"'>"+i+"</span></a>":q?"":"<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(B?"e":"w")+"'>"+i+"</span></a>",n=this._get(t,"nextText"),n=K?this.formatDate(n,this._daylightSavingAdjust(new Date(te,Z+X,1)),this._getFormatConfig(t)):n,o=this._canAdjustMonth(t,1,te,Z)?"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(B?"w":"e")+"'>"+n+"</span></a>":q?"":"<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(B?"w":"e")+"'>"+n+"</span></a>",a=this._get(t,"currentText"),r=this._get(t,"gotoCurrent")&&t.currentDay?G:Y,a=K?this.formatDate(a,r,this._getFormatConfig(t)):a,l=t.inline?"":"<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>"+this._get(t,"closeText")+"</button>",h=j?"<div class='ui-datepicker-buttonpane ui-widget-content'>"+(B?l:"")+(this._isInRange(t,r)?"<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'>"+a+"</button>":"")+(B?"":l)+"</div>":"",c=parseInt(this._get(t,"firstDay"),10),c=isNaN(c)?0:c,u=this._get(t,"showWeek"),d=this._get(t,"dayNames"),p=this._get(t,"dayNamesMin"),f=this._get(t,"monthNames"),g=this._get(t,"monthNamesShort"),m=this._get(t,"beforeShowDay"),_=this._get(t,"showOtherMonths"),v=this._get(t,"selectOtherMonths"),b=this._getDefaultDate(t),y="",k=0;U[0]>k;k++){for(x="",this.maxRows=4,C=0;U[1]>C;C++){if(D=this._daylightSavingAdjust(new Date(te,Z,t.selectedDay)),T=" ui-corner-all",I="",$){if(I+="<div class='ui-datepicker-group",U[1]>1)switch(C){case 0:I+=" ui-datepicker-group-first",T=" ui-corner-"+(B?"right":"left");break;case U[1]-1:I+=" ui-datepicker-group-last",T=" ui-corner-"+(B?"left":"right");break;default:I+=" ui-datepicker-group-middle",T=""}I+="'>"}for(I+="<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix"+T+"'>"+(/all|left/.test(T)&&0===k?B?o:s:"")+(/all|right/.test(T)&&0===k?B?s:o:"")+this._generateMonthYearHeader(t,Z,te,J,Q,k>0||C>0,f,g)+"</div><table class='ui-datepicker-calendar'><thead>"+"<tr>",M=u?"<th class='ui-datepicker-week-col'>"+this._get(t,"weekHeader")+"</th>":"",w=0;7>w;w++)P=(w+c)%7,M+="<th scope='col'"+((w+c+6)%7>=5?" class='ui-datepicker-week-end'":"")+">"+"<span title='"+d[P]+"'>"+p[P]+"</span></th>";for(I+=M+"</tr></thead><tbody>",S=this._getDaysInMonth(te,Z),te===t.selectedYear&&Z===t.selectedMonth&&(t.selectedDay=Math.min(t.selectedDay,S)),N=(this._getFirstDayOfMonth(te,Z)-c+7)%7,H=Math.ceil((N+S)/7),A=$?this.maxRows>H?this.maxRows:H:H,this.maxRows=A,z=this._daylightSavingAdjust(new Date(te,Z,1-N)),O=0;A>O;O++){for(I+="<tr>",E=u?"<td class='ui-datepicker-week-col'>"+this._get(t,"calculateWeek")(z)+"</td>":"",w=0;7>w;w++)W=m?m.apply(t.input?t.input[0]:null,[z]):[!0,""],F=z.getMonth()!==Z,L=F&&!v||!W[0]||J&&J>z||Q&&z>Q,E+="<td class='"+((w+c+6)%7>=5?" ui-datepicker-week-end":"")+(F?" ui-datepicker-other-month":"")+(z.getTime()===D.getTime()&&Z===t.selectedMonth&&t._keyEvent||b.getTime()===z.getTime()&&b.getTime()===D.getTime()?" "+this._dayOverClass:"")+(L?" "+this._unselectableClass+" ui-state-disabled":"")+(F&&!_?"":" "+W[1]+(z.getTime()===G.getTime()?" "+this._currentClass:"")+(z.getTime()===Y.getTime()?" ui-datepicker-today":""))+"'"+(F&&!_||!W[2]?"":" title='"+W[2].replace(/'/g,"'")+"'")+(L?"":" data-handler='selectDay' data-event='click' data-month='"+z.getMonth()+"' data-year='"+z.getFullYear()+"'")+">"+(F&&!_?" ":L?"<span class='ui-state-default'>"+z.getDate()+"</span>":"<a class='ui-state-default"+(z.getTime()===Y.getTime()?" ui-state-highlight":"")+(z.getTime()===G.getTime()?" ui-state-active":"")+(F?" ui-priority-secondary":"")+"' href='#'>"+z.getDate()+"</a>")+"</td>",z.setDate(z.getDate()+1),z=this._daylightSavingAdjust(z);I+=E+"</tr>"}Z++,Z>11&&(Z=0,te++),I+="</tbody></table>"+($?"</div>"+(U[0]>0&&C===U[1]-1?"<div class='ui-datepicker-row-break'></div>":""):""),x+=I}y+=x}return y+=h,t._keyEvent=!1,y},_generateMonthYearHeader:function(t,e,i,s,n,o,a,r){var l,h,c,u,d,p,f,g,m=this._get(t,"changeMonth"),_=this._get(t,"changeYear"),v=this._get(t,"showMonthAfterYear"),b="<div class='ui-datepicker-title'>",y="";if(o||!m)y+="<span class='ui-datepicker-month'>"+a[e]+"</span>";else{for(l=s&&s.getFullYear()===i,h=n&&n.getFullYear()===i,y+="<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>",c=0;12>c;c++)(!l||c>=s.getMonth())&&(!h||n.getMonth()>=c)&&(y+="<option value='"+c+"'"+(c===e?" selected='selected'":"")+">"+r[c]+"</option>");y+="</select>"}if(v||(b+=y+(!o&&m&&_?"":" ")),!t.yearshtml)if(t.yearshtml="",o||!_)b+="<span class='ui-datepicker-year'>"+i+"</span>";else{for(u=this._get(t,"yearRange").split(":"),d=(new Date).getFullYear(),p=function(t){var e=t.match(/c[+\-].*/)?i+parseInt(t.substring(1),10):t.match(/[+\-].*/)?d+parseInt(t,10):parseInt(t,10);return isNaN(e)?d:e},f=p(u[0]),g=Math.max(f,p(u[1]||"")),f=s?Math.max(f,s.getFullYear()):f,g=n?Math.min(g,n.getFullYear()):g,t.yearshtml+="<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";g>=f;f++)t.yearshtml+="<option value='"+f+"'"+(f===i?" selected='selected'":"")+">"+f+"</option>";t.yearshtml+="</select>",b+=t.yearshtml,t.yearshtml=null}return b+=this._get(t,"yearSuffix"),v&&(b+=(!o&&m&&_?"":" ")+y),b+="</div>"},_adjustInstDate:function(t,e,i){var s=t.selectedYear+("Y"===i?e:0),n=t.selectedMonth+("M"===i?e:0),o=Math.min(t.selectedDay,this._getDaysInMonth(s,n))+("D"===i?e:0),a=this._restrictMinMax(t,this._daylightSavingAdjust(new Date(s,n,o)));t.selectedDay=a.getDate(),t.drawMonth=t.selectedMonth=a.getMonth(),t.drawYear=t.selectedYear=a.getFullYear(),("M"===i||"Y"===i)&&this._notifyChange(t)},_restrictMinMax:function(t,e){var i=this._getMinMaxDate(t,"min"),s=this._getMinMaxDate(t,"max"),n=i&&i>e?i:e;return s&&n>s?s:n},_notifyChange:function(t){var e=this._get(t,"onChangeMonthYear");e&&e.apply(t.input?t.input[0]:null,[t.selectedYear,t.selectedMonth+1,t])},_getNumberOfMonths:function(t){var e=this._get(t,"numberOfMonths");return null==e?[1,1]:"number"==typeof e?[1,e]:e},_getMinMaxDate:function(t,e){return this._determineDate(t,this._get(t,e+"Date"),null)},_getDaysInMonth:function(t,e){return 32-this._daylightSavingAdjust(new Date(t,e,32)).getDate()},_getFirstDayOfMonth:function(t,e){return new Date(t,e,1).getDay()},_canAdjustMonth:function(t,e,i,s){var n=this._getNumberOfMonths(t),o=this._daylightSavingAdjust(new Date(i,s+(0>e?e:n[0]*n[1]),1));return 0>e&&o.setDate(this._getDaysInMonth(o.getFullYear(),o.getMonth())),this._isInRange(t,o)},_isInRange:function(t,e){var i,s,n=this._getMinMaxDate(t,"min"),o=this._getMinMaxDate(t,"max"),a=null,r=null,l=this._get(t,"yearRange");return l&&(i=l.split(":"),s=(new Date).getFullYear(),a=parseInt(i[0],10),r=parseInt(i[1],10),i[0].match(/[+\-].*/)&&(a+=s),i[1].match(/[+\-].*/)&&(r+=s)),(!n||e.getTime()>=n.getTime())&&(!o||e.getTime()<=o.getTime())&&(!a||e.getFullYear()>=a)&&(!r||r>=e.getFullYear())},_getFormatConfig:function(t){var e=this._get(t,"shortYearCutoff");return e="string"!=typeof e?e:(new Date).getFullYear()%100+parseInt(e,10),{shortYearCutoff:e,dayNamesShort:this._get(t,"dayNamesShort"),dayNames:this._get(t,"dayNames"),monthNamesShort:this._get(t,"monthNamesShort"),monthNames:this._get(t,"monthNames")}},_formatDate:function(t,e,i,s){e||(t.currentDay=t.selectedDay,t.currentMonth=t.selectedMonth,t.currentYear=t.selectedYear);var n=e?"object"==typeof e?e:this._daylightSavingAdjust(new Date(s,i,e)):this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return this.formatDate(this._get(t,"dateFormat"),n,this._getFormatConfig(t))}}),t.fn.datepicker=function(e){if(!this.length)return this;t.datepicker.initialized||(t(document).on("mousedown",t.datepicker._checkExternalClick),t.datepicker.initialized=!0),0===t("#"+t.datepicker._mainDivId).length&&t("body").append(t.datepicker.dpDiv);var i=Array.prototype.slice.call(arguments,1);return"string"!=typeof e||"isDisabled"!==e&&"getDate"!==e&&"widget"!==e?"option"===e&&2===arguments.length&&"string"==typeof arguments[1]?t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this[0]].concat(i)):this.each(function(){"string"==typeof e?t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this].concat(i)):t.datepicker._attachDatepicker(this,e)}):t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this[0]].concat(i))},t.datepicker=new s,t.datepicker.initialized=!1,t.datepicker.uuid=(new Date).getTime(),t.datepicker.version="1.12.1",t.datepicker,t.widget("ui.dialog",{version:"1.12.1",options:{appendTo:"body",autoOpen:!0,buttons:[],classes:{"ui-dialog":"ui-corner-all","ui-dialog-titlebar":"ui-corner-all"},closeOnEscape:!0,closeText:"Close",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(e){var i=t(this).css(e).offset().top;0>i&&t(this).css("top",e.top-i)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},sizeRelatedOptions:{buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},resizableRelatedOptions:{maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),null==this.options.title&&null!=this.originalTitle&&(this.options.title=this.originalTitle),this.options.disabled&&(this.options.disabled=!1),this._createWrapper(),this.element.show().removeAttr("title").appendTo(this.uiDialog),this._addClass("ui-dialog-content","ui-widget-content"),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&t.fn.draggable&&this._makeDraggable(),this.options.resizable&&t.fn.resizable&&this._makeResizable(),this._isOpen=!1,this._trackFocus()},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var e=this.options.appendTo;return e&&(e.jquery||e.nodeType)?t(e):this.document.find(e||"body").eq(0)},_destroy:function(){var t,e=this.originalPosition;this._untrackInstance(),this._destroyOverlay(),this.element.removeUniqueId().css(this.originalCss).detach(),this.uiDialog.remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),t=e.parent.children().eq(e.index),t.length&&t[0]!==this.element[0]?t.before(this.element):e.parent.append(this.element)},widget:function(){return this.uiDialog},disable:t.noop,enable:t.noop,close:function(e){var i=this;this._isOpen&&this._trigger("beforeClose",e)!==!1&&(this._isOpen=!1,this._focusedElement=null,this._destroyOverlay(),this._untrackInstance(),this.opener.filter(":focusable").trigger("focus").length||t.ui.safeBlur(t.ui.safeActiveElement(this.document[0])),this._hide(this.uiDialog,this.options.hide,function(){i._trigger("close",e)}))},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(e,i){var s=!1,n=this.uiDialog.siblings(".ui-front:visible").map(function(){return+t(this).css("z-index")}).get(),o=Math.max.apply(null,n);return o>=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",o+1),s=!0),s&&!i&&this._trigger("focus",e),s},open:function(){var e=this;return this._isOpen?(this._moveToTop()&&this._focusTabbable(),void 0):(this._isOpen=!0,this.opener=t(t.ui.safeActiveElement(this.document[0])),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,function(){e._focusTabbable(),e._trigger("focus")}),this._makeFocusTarget(),this._trigger("open"),void 0)},_focusTabbable:function(){var t=this._focusedElement;t||(t=this.element.find("[autofocus]")),t.length||(t=this.element.find(":tabbable")),t.length||(t=this.uiDialogButtonPane.find(":tabbable")),t.length||(t=this.uiDialogTitlebarClose.filter(":tabbable")),t.length||(t=this.uiDialog),t.eq(0).trigger("focus")},_keepFocus:function(e){function i(){var e=t.ui.safeActiveElement(this.document[0]),i=this.uiDialog[0]===e||t.contains(this.uiDialog[0],e);i||this._focusTabbable()}e.preventDefault(),i.call(this),this._delay(i)},_createWrapper:function(){this.uiDialog=t("<div>").hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._addClass(this.uiDialog,"ui-dialog","ui-widget ui-widget-content ui-front"),this._on(this.uiDialog,{keydown:function(e){if(this.options.closeOnEscape&&!e.isDefaultPrevented()&&e.keyCode&&e.keyCode===t.ui.keyCode.ESCAPE)return e.preventDefault(),this.close(e),void 0;if(e.keyCode===t.ui.keyCode.TAB&&!e.isDefaultPrevented()){var i=this.uiDialog.find(":tabbable"),s=i.filter(":first"),n=i.filter(":last");e.target!==n[0]&&e.target!==this.uiDialog[0]||e.shiftKey?e.target!==s[0]&&e.target!==this.uiDialog[0]||!e.shiftKey||(this._delay(function(){n.trigger("focus")}),e.preventDefault()):(this._delay(function(){s.trigger("focus")}),e.preventDefault())}},mousedown:function(t){this._moveToTop(t)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var e;this.uiDialogTitlebar=t("<div>"),this._addClass(this.uiDialogTitlebar,"ui-dialog-titlebar","ui-widget-header ui-helper-clearfix"),this._on(this.uiDialogTitlebar,{mousedown:function(e){t(e.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.trigger("focus")}}),this.uiDialogTitlebarClose=t("<button type='button'></button>").button({label:t("<a>").text(this.options.closeText).html(),icon:"ui-icon-closethick",showLabel:!1}).appendTo(this.uiDialogTitlebar),this._addClass(this.uiDialogTitlebarClose,"ui-dialog-titlebar-close"),this._on(this.uiDialogTitlebarClose,{click:function(t){t.preventDefault(),this.close(t)}}),e=t("<span>").uniqueId().prependTo(this.uiDialogTitlebar),this._addClass(e,"ui-dialog-title"),this._title(e),this.uiDialogTitlebar.prependTo(this.uiDialog),this.uiDialog.attr({"aria-labelledby":e.attr("id")})},_title:function(t){this.options.title?t.text(this.options.title):t.html(" ")},_createButtonPane:function(){this.uiDialogButtonPane=t("<div>"),this._addClass(this.uiDialogButtonPane,"ui-dialog-buttonpane","ui-widget-content ui-helper-clearfix"),this.uiButtonSet=t("<div>").appendTo(this.uiDialogButtonPane),this._addClass(this.uiButtonSet,"ui-dialog-buttonset"),this._createButtons()},_createButtons:function(){var e=this,i=this.options.buttons;return this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),t.isEmptyObject(i)||t.isArray(i)&&!i.length?(this._removeClass(this.uiDialog,"ui-dialog-buttons"),void 0):(t.each(i,function(i,s){var n,o;s=t.isFunction(s)?{click:s,text:i}:s,s=t.extend({type:"button"},s),n=s.click,o={icon:s.icon,iconPosition:s.iconPosition,showLabel:s.showLabel,icons:s.icons,text:s.text},delete s.click,delete s.icon,delete s.iconPosition,delete s.showLabel,delete s.icons,"boolean"==typeof s.text&&delete s.text,t("<button></button>",s).button(o).appendTo(e.uiButtonSet).on("click",function(){n.apply(e.element[0],arguments)})}),this._addClass(this.uiDialog,"ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog),void 0)},_makeDraggable:function(){function e(t){return{position:t.position,offset:t.offset}}var i=this,s=this.options;this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(s,n){i._addClass(t(this),"ui-dialog-dragging"),i._blockFrames(),i._trigger("dragStart",s,e(n))},drag:function(t,s){i._trigger("drag",t,e(s))},stop:function(n,o){var a=o.offset.left-i.document.scrollLeft(),r=o.offset.top-i.document.scrollTop();s.position={my:"left top",at:"left"+(a>=0?"+":"")+a+" "+"top"+(r>=0?"+":"")+r,of:i.window},i._removeClass(t(this),"ui-dialog-dragging"),i._unblockFrames(),i._trigger("dragStop",n,e(o))}})},_makeResizable:function(){function e(t){return{originalPosition:t.originalPosition,originalSize:t.originalSize,position:t.position,size:t.size}}var i=this,s=this.options,n=s.resizable,o=this.uiDialog.css("position"),a="string"==typeof n?n:"n,e,s,w,se,sw,ne,nw";this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:s.maxWidth,maxHeight:s.maxHeight,minWidth:s.minWidth,minHeight:this._minHeight(),handles:a,start:function(s,n){i._addClass(t(this),"ui-dialog-resizing"),i._blockFrames(),i._trigger("resizeStart",s,e(n))},resize:function(t,s){i._trigger("resize",t,e(s))},stop:function(n,o){var a=i.uiDialog.offset(),r=a.left-i.document.scrollLeft(),l=a.top-i.document.scrollTop();s.height=i.uiDialog.height(),s.width=i.uiDialog.width(),s.position={my:"left top",at:"left"+(r>=0?"+":"")+r+" "+"top"+(l>=0?"+":"")+l,of:i.window},i._removeClass(t(this),"ui-dialog-resizing"),i._unblockFrames(),i._trigger("resizeStop",n,e(o))}}).css("position",o)},_trackFocus:function(){this._on(this.widget(),{focusin:function(e){this._makeFocusTarget(),this._focusedElement=t(e.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var e=this._trackingInstances(),i=t.inArray(this,e);-1!==i&&e.splice(i,1)},_trackingInstances:function(){var t=this.document.data("ui-dialog-instances");return t||(t=[],this.document.data("ui-dialog-instances",t)),t},_minHeight:function(){var t=this.options;return"auto"===t.height?t.minHeight:Math.min(t.minHeight,t.height)},_position:function(){var t=this.uiDialog.is(":visible");t||this.uiDialog.show(),this.uiDialog.position(this.options.position),t||this.uiDialog.hide()},_setOptions:function(e){var i=this,s=!1,n={};t.each(e,function(t,e){i._setOption(t,e),t in i.sizeRelatedOptions&&(s=!0),t in i.resizableRelatedOptions&&(n[t]=e)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",n)},_setOption:function(e,i){var s,n,o=this.uiDialog;"disabled"!==e&&(this._super(e,i),"appendTo"===e&&this.uiDialog.appendTo(this._appendTo()),"buttons"===e&&this._createButtons(),"closeText"===e&&this.uiDialogTitlebarClose.button({label:t("<a>").text(""+this.options.closeText).html()}),"draggable"===e&&(s=o.is(":data(ui-draggable)"),s&&!i&&o.draggable("destroy"),!s&&i&&this._makeDraggable()),"position"===e&&this._position(),"resizable"===e&&(n=o.is(":data(ui-resizable)"),n&&!i&&o.resizable("destroy"),n&&"string"==typeof i&&o.resizable("option","handles",i),n||i===!1||this._makeResizable()),"title"===e&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var t,e,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),t=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),e=Math.max(0,s.minHeight-t),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-t):"none","auto"===s.height?this.element.css({minHeight:e,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.height-t)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var e=t(this);return t("<div>").css({position:"absolute",width:e.outerWidth(),height:e.outerHeight()}).appendTo(e.parent()).offset(e.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(e){return t(e.target).closest(".ui-dialog").length?!0:!!t(e.target).closest(".ui-datepicker").length},_createOverlay:function(){if(this.options.modal){var e=!0;this._delay(function(){e=!1}),this.document.data("ui-dialog-overlays")||this._on(this.document,{focusin:function(t){e||this._allowInteraction(t)||(t.preventDefault(),this._trackingInstances()[0]._focusTabbable())}}),this.overlay=t("<div>").appendTo(this._appendTo()),this._addClass(this.overlay,null,"ui-widget-overlay ui-front"),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1)}},_destroyOverlay:function(){if(this.options.modal&&this.overlay){var t=this.document.data("ui-dialog-overlays")-1;t?this.document.data("ui-dialog-overlays",t):(this._off(this.document,"focusin"),this.document.removeData("ui-dialog-overlays")),this.overlay.remove(),this.overlay=null}}}),t.uiBackCompat!==!1&&t.widget("ui.dialog",t.ui.dialog,{options:{dialogClass:""},_createWrapper:function(){this._super(),this.uiDialog.addClass(this.options.dialogClass)},_setOption:function(t,e){"dialogClass"===t&&this.uiDialog.removeClass(this.options.dialogClass).addClass(e),this._superApply(arguments)}}),t.ui.dialog,t.widget("ui.progressbar",{version:"1.12.1",options:{classes:{"ui-progressbar":"ui-corner-all","ui-progressbar-value":"ui-corner-left","ui-progressbar-complete":"ui-corner-right"},max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.attr({role:"progressbar","aria-valuemin":this.min}),this._addClass("ui-progressbar","ui-widget ui-widget-content"),this.valueDiv=t("<div>").appendTo(this.element),this._addClass(this.valueDiv,"ui-progressbar-value","ui-widget-header"),this._refreshValue()},_destroy:function(){this.element.removeAttr("role aria-valuemin aria-valuemax aria-valuenow"),this.valueDiv.remove()},value:function(t){return void 0===t?this.options.value:(this.options.value=this._constrainedValue(t),this._refreshValue(),void 0)},_constrainedValue:function(t){return void 0===t&&(t=this.options.value),this.indeterminate=t===!1,"number"!=typeof t&&(t=0),this.indeterminate?!1:Math.min(this.options.max,Math.max(this.min,t))
|
10 |
-
},_setOptions:function(t){var e=t.value;delete t.value,this._super(t),this.options.value=this._constrainedValue(e),this._refreshValue()},_setOption:function(t,e){"max"===t&&(e=Math.max(this.min,e)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var e=this.options.value,i=this._percentage();this.valueDiv.toggle(this.indeterminate||e>this.min).width(i.toFixed(0)+"%"),this._toggleClass(this.valueDiv,"ui-progressbar-complete",null,e===this.options.max)._toggleClass("ui-progressbar-indeterminate",null,this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=t("<div>").appendTo(this.valueDiv),this._addClass(this.overlayDiv,"ui-progressbar-overlay"))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":e}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==e&&(this.oldValue=e,this._trigger("change")),e===this.options.max&&this._trigger("complete")}})});
|
|
|
|
|
|
1 |
+
/*! jQuery UI - v1.12.1 - 2020-01-10
|
2 |
* http://jqueryui.com
|
3 |
+
* Includes: widget.js, position.js, data.js, disable-selection.js, focusable.js, form-reset-mixin.js, jquery-1-7.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/draggable.js, widgets/droppable.js, widgets/resizable.js, widgets/selectable.js, widgets/sortable.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/selectmenu.js, widgets/slider.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js
|
4 |
* Copyright jQuery Foundation and other contributors; Licensed MIT */
|
5 |
|
6 |
+
(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){function e(t){for(var e=t.css("visibility");"inherit"===e;)t=t.parent(),e=t.css("visibility");return"hidden"!==e}function i(t){for(var e,i;t.length&&t[0]!==document;){if(e=t.css("position"),("absolute"===e||"relative"===e||"fixed"===e)&&(i=parseInt(t.css("zIndex"),10),!isNaN(i)&&0!==i))return i;t=t.parent()}return 0}function s(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},t.extend(this._defaults,this.regional[""]),this.regional.en=t.extend(!0,{},this.regional[""]),this.regional["en-US"]=t.extend(!0,{},this.regional.en),this.dpDiv=n(t("<div id='"+this._mainDivId+"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"))}function n(e){var i="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return e.on("mouseout",i,function(){t(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&t(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&t(this).removeClass("ui-datepicker-next-hover")}).on("mouseover",i,o)}function o(){t.datepicker._isDisabledDatepicker(p.inline?p.dpDiv.parent()[0]:p.input[0])||(t(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),t(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&t(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&t(this).addClass("ui-datepicker-next-hover"))}function a(e,i){t.extend(e,i);for(var s in i)null==i[s]&&(e[s]=i[s]);return e}function r(t){return function(){var e=this.element.val();t.apply(this,arguments),this._refresh(),e!==this.element.val()&&this._trigger("change")}}t.ui=t.ui||{},t.ui.version="1.12.1";var h=0,l=Array.prototype.slice;t.cleanData=function(e){return function(i){var s,n,o;for(o=0;null!=(n=i[o]);o++)try{s=t._data(n,"events"),s&&s.remove&&t(n).triggerHandler("remove")}catch(a){}e(i)}}(t.cleanData),t.widget=function(e,i,s){var n,o,a,r={},h=e.split(".")[0];e=e.split(".")[1];var l=h+"-"+e;return s||(s=i,i=t.Widget),t.isArray(s)&&(s=t.extend.apply(null,[{}].concat(s))),t.expr[":"][l.toLowerCase()]=function(e){return!!t.data(e,l)},t[h]=t[h]||{},n=t[h][e],o=t[h][e]=function(t,e){return this._createWidget?(arguments.length&&this._createWidget(t,e),void 0):new o(t,e)},t.extend(o,n,{version:s.version,_proto:t.extend({},s),_childConstructors:[]}),a=new i,a.options=t.widget.extend({},a.options),t.each(s,function(e,s){return t.isFunction(s)?(r[e]=function(){function t(){return i.prototype[e].apply(this,arguments)}function n(t){return i.prototype[e].apply(this,t)}return function(){var e,i=this._super,o=this._superApply;return this._super=t,this._superApply=n,e=s.apply(this,arguments),this._super=i,this._superApply=o,e}}(),void 0):(r[e]=s,void 0)}),o.prototype=t.widget.extend(a,{widgetEventPrefix:n?a.widgetEventPrefix||e:e},r,{constructor:o,namespace:h,widgetName:e,widgetFullName:l}),n?(t.each(n._childConstructors,function(e,i){var s=i.prototype;t.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete n._childConstructors):i._childConstructors.push(o),t.widget.bridge(e,o),o},t.widget.extend=function(e){for(var i,s,n=l.call(arguments,1),o=0,a=n.length;a>o;o++)for(i in n[o])s=n[o][i],n[o].hasOwnProperty(i)&&void 0!==s&&(e[i]=t.isPlainObject(s)?t.isPlainObject(e[i])?t.widget.extend({},e[i],s):t.widget.extend({},s):s);return e},t.widget.bridge=function(e,i){var s=i.prototype.widgetFullName||e;t.fn[e]=function(n){var o="string"==typeof n,a=l.call(arguments,1),r=this;return o?this.length||"instance"!==n?this.each(function(){var i,o=t.data(this,s);return"instance"===n?(r=o,!1):o?t.isFunction(o[n])&&"_"!==n.charAt(0)?(i=o[n].apply(o,a),i!==o&&void 0!==i?(r=i&&i.jquery?r.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+n+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+n+"'")}):r=void 0:(a.length&&(n=t.widget.extend.apply(null,[n].concat(a))),this.each(function(){var e=t.data(this,s);e?(e.option(n||{}),e._init&&e._init()):t.data(this,s,new i(n,this))})),r}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,i){i=t(i||this.defaultElement||this)[0],this.element=t(i),this.uuid=h++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},i!==this&&(t.data(i,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===i&&this.destroy()}}),this.document=t(i.style?i.ownerDocument:i.document||i),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.width<e.element[0].scrollWidth,o="scroll"===s||"auto"===s&&e.height<e.element[0].scrollHeight;return{width:o?t.position.scrollbarWidth():0,height:n?t.position.scrollbarWidth():0}},getWithinInfo:function(e){var i=t(e||window),s=t.isWindow(i[0]),n=!!i[0]&&9===i[0].nodeType,o=!s&&!n;return{element:i,isWindow:s,isDocument:n,offset:o?t(e).offset():{left:0,top:0},scrollLeft:i.scrollLeft(),scrollTop:i.scrollTop(),width:i.outerWidth(),height:i.outerHeight()}}},t.fn.position=function(n){if(!n||!n.of)return d.apply(this,arguments);n=t.extend({},n);var u,p,f,g,m,_,v=t(n.of),b=t.position.getWithinInfo(n.within),y=t.position.getScrollInfo(b),w=(n.collision||"flip").split(" "),k={};return _=s(v),v[0].preventDefault&&(n.at="left top"),p=_.width,f=_.height,g=_.offset,m=t.extend({},g),t.each(["my","at"],function(){var t,e,i=(n[this]||"").split(" ");1===i.length&&(i=r.test(i[0])?i.concat(["center"]):h.test(i[0])?["center"].concat(i):["center","center"]),i[0]=r.test(i[0])?i[0]:"center",i[1]=h.test(i[1])?i[1]:"center",t=l.exec(i[0]),e=l.exec(i[1]),k[this]=[t?t[0]:0,e?e[0]:0],n[this]=[c.exec(i[0])[0],c.exec(i[1])[0]]}),1===w.length&&(w[1]=w[0]),"right"===n.at[0]?m.left+=p:"center"===n.at[0]&&(m.left+=p/2),"bottom"===n.at[1]?m.top+=f:"center"===n.at[1]&&(m.top+=f/2),u=e(k.at,p,f),m.left+=u[0],m.top+=u[1],this.each(function(){var s,r,h=t(this),l=h.outerWidth(),c=h.outerHeight(),d=i(this,"marginLeft"),_=i(this,"marginTop"),x=l+d+i(this,"marginRight")+y.width,C=c+_+i(this,"marginBottom")+y.height,D=t.extend({},m),I=e(k.my,h.outerWidth(),h.outerHeight());"right"===n.my[0]?D.left-=l:"center"===n.my[0]&&(D.left-=l/2),"bottom"===n.my[1]?D.top-=c:"center"===n.my[1]&&(D.top-=c/2),D.left+=I[0],D.top+=I[1],s={marginLeft:d,marginTop:_},t.each(["left","top"],function(e,i){t.ui.position[w[e]]&&t.ui.position[w[e]][i](D,{targetWidth:p,targetHeight:f,elemWidth:l,elemHeight:c,collisionPosition:s,collisionWidth:x,collisionHeight:C,offset:[u[0]+I[0],u[1]+I[1]],my:n.my,at:n.at,within:b,elem:h})}),n.using&&(r=function(t){var e=g.left-D.left,i=e+p-l,s=g.top-D.top,r=s+f-c,u={target:{element:v,left:g.left,top:g.top,width:p,height:f},element:{element:h,left:D.left,top:D.top,width:l,height:c},horizontal:0>i?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,g=-2*e.offset[1];0>c?(s=t.top+p+f+g+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+g)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+g-h,(i>0||u>a(i))&&(t.top+=p+f+g))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,.\/:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var c=!1;t(document).on("mouseup",function(){c=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!c){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,n="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!n&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),c=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,c=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.ui.safeActiveElement=function(t){var e;try{e=t.activeElement}catch(i){e=t.body}return e||(e=t.body),e.nodeName||(e=t.body),e},t.ui.safeBlur=function(e){e&&"body"!==e.nodeName.toLowerCase()&&t(e).trigger("blur")},t.widget("ui.draggable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this._addClass("ui-draggable"),this._setHandleClassName(),this._mouseInit()},_setOption:function(t,e){this._super(t,e),"handle"===t&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){return(this.helper||this.element).is(".ui-draggable-dragging")?(this.destroyOnClear=!0,void 0):(this._removeHandleClassName(),this._mouseDestroy(),void 0)},_mouseCapture:function(e){var i=this.options;return this.helper||i.disabled||t(e.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(e),this.handle?(this._blurActiveElement(e),this._blockFrames(i.iframeFix===!0?"iframe":i.iframeFix),!0):!1)},_blockFrames:function(e){this.iframeBlocks=this.document.find(e).map(function(){var e=t(this);return t("<div>").css("position","absolute").appendTo(e.parent()).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()).offset(e.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(e){var i=t.ui.safeActiveElement(this.document[0]),s=t(e.target);s.closest(i).length||t.ui.safeBlur(i)},_mouseStart:function(e){var i=this.options;return this.helper=this._createHelper(e),this._addClass(this.helper,"ui-draggable-dragging"),this._cacheHelperProportions(),t.ui.ddmanager&&(t.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=this.helper.parents().filter(function(){return"fixed"===t(this).css("position")}).length>0,this.positionAbs=this.element.offset(),this._refreshOffsets(e),this.originalPosition=this.position=this._generatePosition(e,!1),this.originalPageX=e.pageX,this.originalPageY=e.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this._setContainment(),this._trigger("start",e)===!1?(this._clear(),!1):(this._cacheHelperProportions(),t.ui.ddmanager&&!i.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this._mouseDrag(e,!0),t.ui.ddmanager&&t.ui.ddmanager.dragStart(this,e),!0)},_refreshOffsets:function(t){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:t.pageX-this.offset.left,top:t.pageY-this.offset.top}},_mouseDrag:function(e,i){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(e,!0),this.positionAbs=this._convertPositionTo("absolute"),!i){var s=this._uiHash();if(this._trigger("drag",e,s)===!1)return this._mouseUp(new t.Event("mouseup",e)),!1;this.position=s.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),!1},_mouseStop:function(e){var i=this,s=!1;return t.ui.ddmanager&&!this.options.dropBehaviour&&(s=t.ui.ddmanager.drop(this,e)),this.dropped&&(s=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!s||"valid"===this.options.revert&&s||this.options.revert===!0||t.isFunction(this.options.revert)&&this.options.revert.call(this.element,s)?t(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){i._trigger("stop",e)!==!1&&i._clear()}):this._trigger("stop",e)!==!1&&this._clear(),!1},_mouseUp:function(e){return this._unblockFrames(),t.ui.ddmanager&&t.ui.ddmanager.dragStop(this,e),this.handleElement.is(e.target)&&this.element.trigger("focus"),t.ui.mouse.prototype._mouseUp.call(this,e)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp(new t.Event("mouseup",{target:this.element[0]})):this._clear(),this},_getHandle:function(e){return this.options.handle?!!t(e.target).closest(this.element.find(this.options.handle)).length:!0},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this._addClass(this.handleElement,"ui-draggable-handle")},_removeHandleClassName:function(){this._removeClass(this.handleElement,"ui-draggable-handle")},_createHelper:function(e){var i=this.options,s=t.isFunction(i.helper),n=s?t(i.helper.apply(this.element[0],[e])):"clone"===i.helper?this.element.clone().removeAttr("id"):this.element;return n.parents("body").length||n.appendTo("parent"===i.appendTo?this.element[0].parentNode:i.appendTo),s&&n[0]===this.element[0]&&this._setPositionRelative(),n[0]===this.element[0]||/(fixed|absolute)/.test(n.css("position"))||n.css("position","absolute"),n},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(e){"string"==typeof e&&(e=e.split(" ")),t.isArray(e)&&(e={left:+e[0],top:+e[1]||0}),"left"in e&&(this.offset.click.left=e.left+this.margins.left),"right"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),"top"in e&&(this.offset.click.top=e.top+this.margins.top),"bottom"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_isRootNode:function(t){return/(html|body)/i.test(t.tagName)||t===this.document[0]},_getParentOffset:function(){var e=this.offsetParent.offset(),i=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==i&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),this._isRootNode(this.offsetParent[0])&&(e={top:0,left:0}),{top:e.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var t=this.element.position(),e=this._isRootNode(this.scrollParent[0]);return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+(e?0:this.scrollParent.scrollTop()),left:t.left-(parseInt(this.helper.css("left"),10)||0)+(e?0:this.scrollParent.scrollLeft())}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,i,s,n=this.options,o=this.document[0];return this.relativeContainer=null,n.containment?"window"===n.containment?(this.containment=[t(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,t(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,t(window).scrollLeft()+t(window).width()-this.helperProportions.width-this.margins.left,t(window).scrollTop()+(t(window).height()||o.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):"document"===n.containment?(this.containment=[0,0,t(o).width()-this.helperProportions.width-this.margins.left,(t(o).height()||o.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):n.containment.constructor===Array?(this.containment=n.containment,void 0):("parent"===n.containment&&(n.containment=this.helper[0].parentNode),i=t(n.containment),s=i[0],s&&(e=/(scroll|auto)/.test(i.css("overflow")),this.containment=[(parseInt(i.css("borderLeftWidth"),10)||0)+(parseInt(i.css("paddingLeft"),10)||0),(parseInt(i.css("borderTopWidth"),10)||0)+(parseInt(i.css("paddingTop"),10)||0),(e?Math.max(s.scrollWidth,s.offsetWidth):s.offsetWidth)-(parseInt(i.css("borderRightWidth"),10)||0)-(parseInt(i.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(e?Math.max(s.scrollHeight,s.offsetHeight):s.offsetHeight)-(parseInt(i.css("borderBottomWidth"),10)||0)-(parseInt(i.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=i),void 0):(this.containment=null,void 0)
|
7 |
+
},_convertPositionTo:function(t,e){e||(e=this.position);var i="absolute"===t?1:-1,s=this._isRootNode(this.scrollParent[0]);return{top:e.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.offset.scroll.top:s?0:this.offset.scroll.top)*i,left:e.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.offset.scroll.left:s?0:this.offset.scroll.left)*i}},_generatePosition:function(t,e){var i,s,n,o,a=this.options,r=this._isRootNode(this.scrollParent[0]),h=t.pageX,l=t.pageY;return r&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),e&&(this.containment&&(this.relativeContainer?(s=this.relativeContainer.offset(),i=[this.containment[0]+s.left,this.containment[1]+s.top,this.containment[2]+s.left,this.containment[3]+s.top]):i=this.containment,t.pageX-this.offset.click.left<i[0]&&(h=i[0]+this.offset.click.left),t.pageY-this.offset.click.top<i[1]&&(l=i[1]+this.offset.click.top),t.pageX-this.offset.click.left>i[2]&&(h=i[2]+this.offset.click.left),t.pageY-this.offset.click.top>i[3]&&(l=i[3]+this.offset.click.top)),a.grid&&(n=a.grid[1]?this.originalPageY+Math.round((l-this.originalPageY)/a.grid[1])*a.grid[1]:this.originalPageY,l=i?n-this.offset.click.top>=i[1]||n-this.offset.click.top>i[3]?n:n-this.offset.click.top>=i[1]?n-a.grid[1]:n+a.grid[1]:n,o=a.grid[0]?this.originalPageX+Math.round((h-this.originalPageX)/a.grid[0])*a.grid[0]:this.originalPageX,h=i?o-this.offset.click.left>=i[0]||o-this.offset.click.left>i[2]?o:o-this.offset.click.left>=i[0]?o-a.grid[0]:o+a.grid[0]:o),"y"===a.axis&&(h=this.originalPageX),"x"===a.axis&&(l=this.originalPageY)),{top:l-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:r?0:this.offset.scroll.top),left:h-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:r?0:this.offset.scroll.left)}},_clear:function(){this._removeClass(this.helper,"ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_trigger:function(e,i,s){return s=s||this._uiHash(),t.ui.plugin.call(this,e,[i,s,this],!0),/^(drag|start|stop)/.test(e)&&(this.positionAbs=this._convertPositionTo("absolute"),s.offset=this.positionAbs),t.Widget.prototype._trigger.call(this,e,i,s)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),t.ui.plugin.add("draggable","connectToSortable",{start:function(e,i,s){var n=t.extend({},i,{item:s.element});s.sortables=[],t(s.options.connectToSortable).each(function(){var i=t(this).sortable("instance");i&&!i.options.disabled&&(s.sortables.push(i),i.refreshPositions(),i._trigger("activate",e,n))})},stop:function(e,i,s){var n=t.extend({},i,{item:s.element});s.cancelHelperRemoval=!1,t.each(s.sortables,function(){var t=this;t.isOver?(t.isOver=0,s.cancelHelperRemoval=!0,t.cancelHelperRemoval=!1,t._storedCSS={position:t.placeholder.css("position"),top:t.placeholder.css("top"),left:t.placeholder.css("left")},t._mouseStop(e),t.options.helper=t.options._helper):(t.cancelHelperRemoval=!0,t._trigger("deactivate",e,n))})},drag:function(e,i,s){t.each(s.sortables,function(){var n=!1,o=this;o.positionAbs=s.positionAbs,o.helperProportions=s.helperProportions,o.offset.click=s.offset.click,o._intersectsWith(o.containerCache)&&(n=!0,t.each(s.sortables,function(){return this.positionAbs=s.positionAbs,this.helperProportions=s.helperProportions,this.offset.click=s.offset.click,this!==o&&this._intersectsWith(this.containerCache)&&t.contains(o.element[0],this.element[0])&&(n=!1),n})),n?(o.isOver||(o.isOver=1,s._parent=i.helper.parent(),o.currentItem=i.helper.appendTo(o.element).data("ui-sortable-item",!0),o.options._helper=o.options.helper,o.options.helper=function(){return i.helper[0]},e.target=o.currentItem[0],o._mouseCapture(e,!0),o._mouseStart(e,!0,!0),o.offset.click.top=s.offset.click.top,o.offset.click.left=s.offset.click.left,o.offset.parent.left-=s.offset.parent.left-o.offset.parent.left,o.offset.parent.top-=s.offset.parent.top-o.offset.parent.top,s._trigger("toSortable",e),s.dropped=o.element,t.each(s.sortables,function(){this.refreshPositions()}),s.currentItem=s.element,o.fromOutside=s),o.currentItem&&(o._mouseDrag(e),i.position=o.position)):o.isOver&&(o.isOver=0,o.cancelHelperRemoval=!0,o.options._revert=o.options.revert,o.options.revert=!1,o._trigger("out",e,o._uiHash(o)),o._mouseStop(e,!0),o.options.revert=o.options._revert,o.options.helper=o.options._helper,o.placeholder&&o.placeholder.remove(),i.helper.appendTo(s._parent),s._refreshOffsets(e),i.position=s._generatePosition(e,!0),s._trigger("fromSortable",e),s.dropped=!1,t.each(s.sortables,function(){this.refreshPositions()}))})}}),t.ui.plugin.add("draggable","cursor",{start:function(e,i,s){var n=t("body"),o=s.options;n.css("cursor")&&(o._cursor=n.css("cursor")),n.css("cursor",o.cursor)},stop:function(e,i,s){var n=s.options;n._cursor&&t("body").css("cursor",n._cursor)}}),t.ui.plugin.add("draggable","opacity",{start:function(e,i,s){var n=t(i.helper),o=s.options;n.css("opacity")&&(o._opacity=n.css("opacity")),n.css("opacity",o.opacity)},stop:function(e,i,s){var n=s.options;n._opacity&&t(i.helper).css("opacity",n._opacity)}}),t.ui.plugin.add("draggable","scroll",{start:function(t,e,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(e,i,s){var n=s.options,o=!1,a=s.scrollParentNotHidden[0],r=s.document[0];a!==r&&"HTML"!==a.tagName?(n.axis&&"x"===n.axis||(s.overflowOffset.top+a.offsetHeight-e.pageY<n.scrollSensitivity?a.scrollTop=o=a.scrollTop+n.scrollSpeed:e.pageY-s.overflowOffset.top<n.scrollSensitivity&&(a.scrollTop=o=a.scrollTop-n.scrollSpeed)),n.axis&&"y"===n.axis||(s.overflowOffset.left+a.offsetWidth-e.pageX<n.scrollSensitivity?a.scrollLeft=o=a.scrollLeft+n.scrollSpeed:e.pageX-s.overflowOffset.left<n.scrollSensitivity&&(a.scrollLeft=o=a.scrollLeft-n.scrollSpeed))):(n.axis&&"x"===n.axis||(e.pageY-t(r).scrollTop()<n.scrollSensitivity?o=t(r).scrollTop(t(r).scrollTop()-n.scrollSpeed):t(window).height()-(e.pageY-t(r).scrollTop())<n.scrollSensitivity&&(o=t(r).scrollTop(t(r).scrollTop()+n.scrollSpeed))),n.axis&&"y"===n.axis||(e.pageX-t(r).scrollLeft()<n.scrollSensitivity?o=t(r).scrollLeft(t(r).scrollLeft()-n.scrollSpeed):t(window).width()-(e.pageX-t(r).scrollLeft())<n.scrollSensitivity&&(o=t(r).scrollLeft(t(r).scrollLeft()+n.scrollSpeed)))),o!==!1&&t.ui.ddmanager&&!n.dropBehaviour&&t.ui.ddmanager.prepareOffsets(s,e)}}),t.ui.plugin.add("draggable","snap",{start:function(e,i,s){var n=s.options;s.snapElements=[],t(n.snap.constructor!==String?n.snap.items||":data(ui-draggable)":n.snap).each(function(){var e=t(this),i=e.offset();this!==s.element[0]&&s.snapElements.push({item:this,width:e.outerWidth(),height:e.outerHeight(),top:i.top,left:i.left})})},drag:function(e,i,s){var n,o,a,r,h,l,c,u,d,p,f=s.options,g=f.snapTolerance,m=i.offset.left,_=m+s.helperProportions.width,v=i.offset.top,b=v+s.helperProportions.height;for(d=s.snapElements.length-1;d>=0;d--)h=s.snapElements[d].left-s.margins.left,l=h+s.snapElements[d].width,c=s.snapElements[d].top-s.margins.top,u=c+s.snapElements[d].height,h-g>_||m>l+g||c-g>b||v>u+g||!t.contains(s.snapElements[d].item.ownerDocument,s.snapElements[d].item)?(s.snapElements[d].snapping&&s.options.snap.release&&s.options.snap.release.call(s.element,e,t.extend(s._uiHash(),{snapItem:s.snapElements[d].item})),s.snapElements[d].snapping=!1):("inner"!==f.snapMode&&(n=g>=Math.abs(c-b),o=g>=Math.abs(u-v),a=g>=Math.abs(h-_),r=g>=Math.abs(l-m),n&&(i.position.top=s._convertPositionTo("relative",{top:c-s.helperProportions.height,left:0}).top),o&&(i.position.top=s._convertPositionTo("relative",{top:u,left:0}).top),a&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h-s.helperProportions.width}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l}).left)),p=n||o||a||r,"outer"!==f.snapMode&&(n=g>=Math.abs(c-v),o=g>=Math.abs(u-b),a=g>=Math.abs(h-m),r=g>=Math.abs(l-_),n&&(i.position.top=s._convertPositionTo("relative",{top:c,left:0}).top),o&&(i.position.top=s._convertPositionTo("relative",{top:u-s.helperProportions.height,left:0}).top),a&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l-s.helperProportions.width}).left)),!s.snapElements[d].snapping&&(n||o||a||r||p)&&s.options.snap.snap&&s.options.snap.snap.call(s.element,e,t.extend(s._uiHash(),{snapItem:s.snapElements[d].item})),s.snapElements[d].snapping=n||o||a||r||p)}}),t.ui.plugin.add("draggable","stack",{start:function(e,i,s){var n,o=s.options,a=t.makeArray(t(o.stack)).sort(function(e,i){return(parseInt(t(e).css("zIndex"),10)||0)-(parseInt(t(i).css("zIndex"),10)||0)});a.length&&(n=parseInt(t(a[0]).css("zIndex"),10)||0,t(a).each(function(e){t(this).css("zIndex",n+e)}),this.css("zIndex",n+a.length))}}),t.ui.plugin.add("draggable","zIndex",{start:function(e,i,s){var n=t(i.helper),o=s.options;n.css("zIndex")&&(o._zIndex=n.css("zIndex")),n.css("zIndex",o.zIndex)},stop:function(e,i,s){var n=s.options;n._zIndex&&t(i.helper).css("zIndex",n._zIndex)}}),t.ui.draggable,t.widget("ui.droppable",{version:"1.12.1",widgetEventPrefix:"drop",options:{accept:"*",addClasses:!0,greedy:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var e,i=this.options,s=i.accept;this.isover=!1,this.isout=!0,this.accept=t.isFunction(s)?s:function(t){return t.is(s)},this.proportions=function(){return arguments.length?(e=arguments[0],void 0):e?e:e={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight}},this._addToManager(i.scope),i.addClasses&&this._addClass("ui-droppable")},_addToManager:function(e){t.ui.ddmanager.droppables[e]=t.ui.ddmanager.droppables[e]||[],t.ui.ddmanager.droppables[e].push(this)},_splice:function(t){for(var e=0;t.length>e;e++)t[e]===this&&t.splice(e,1)},_destroy:function(){var e=t.ui.ddmanager.droppables[this.options.scope];this._splice(e)},_setOption:function(e,i){if("accept"===e)this.accept=t.isFunction(i)?i:function(t){return t.is(i)};else if("scope"===e){var s=t.ui.ddmanager.droppables[this.options.scope];this._splice(s),this._addToManager(i)}this._super(e,i)},_activate:function(e){var i=t.ui.ddmanager.current;this._addActiveClass(),i&&this._trigger("activate",e,this.ui(i))},_deactivate:function(e){var i=t.ui.ddmanager.current;this._removeActiveClass(),i&&this._trigger("deactivate",e,this.ui(i))},_over:function(e){var i=t.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this._addHoverClass(),this._trigger("over",e,this.ui(i)))},_out:function(e){var i=t.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this._removeHoverClass(),this._trigger("out",e,this.ui(i)))},_drop:function(e,i){var s=i||t.ui.ddmanager.current,n=!1;return s&&(s.currentItem||s.element)[0]!==this.element[0]?(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var i=t(this).droppable("instance");return i.options.greedy&&!i.options.disabled&&i.options.scope===s.options.scope&&i.accept.call(i.element[0],s.currentItem||s.element)&&u(s,t.extend(i,{offset:i.element.offset()}),i.options.tolerance,e)?(n=!0,!1):void 0}),n?!1:this.accept.call(this.element[0],s.currentItem||s.element)?(this._removeActiveClass(),this._removeHoverClass(),this._trigger("drop",e,this.ui(s)),this.element):!1):!1},ui:function(t){return{draggable:t.currentItem||t.element,helper:t.helper,position:t.position,offset:t.positionAbs}},_addHoverClass:function(){this._addClass("ui-droppable-hover")},_removeHoverClass:function(){this._removeClass("ui-droppable-hover")},_addActiveClass:function(){this._addClass("ui-droppable-active")},_removeActiveClass:function(){this._removeClass("ui-droppable-active")}});var u=t.ui.intersect=function(){function t(t,e,i){return t>=e&&e+i>t}return function(e,i,s,n){if(!i.offset)return!1;var o=(e.positionAbs||e.position.absolute).left+e.margins.left,a=(e.positionAbs||e.position.absolute).top+e.margins.top,r=o+e.helperProportions.width,h=a+e.helperProportions.height,l=i.offset.left,c=i.offset.top,u=l+i.proportions().width,d=c+i.proportions().height;switch(s){case"fit":return o>=l&&u>=r&&a>=c&&d>=h;case"intersect":return o+e.helperProportions.width/2>l&&u>r-e.helperProportions.width/2&&a+e.helperProportions.height/2>c&&d>h-e.helperProportions.height/2;case"pointer":return t(n.pageY,c,i.proportions().height)&&t(n.pageX,l,i.proportions().width);case"touch":return(a>=c&&d>=a||h>=c&&d>=h||c>a&&h>d)&&(o>=l&&u>=o||r>=l&&u>=r||l>o&&r>u);default:return!1}}}();t.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(e,i){var s,n,o=t.ui.ddmanager.droppables[e.options.scope]||[],a=i?i.type:null,r=(e.currentItem||e.element).find(":data(ui-droppable)").addBack();t:for(s=0;o.length>s;s++)if(!(o[s].options.disabled||e&&!o[s].accept.call(o[s].element[0],e.currentItem||e.element))){for(n=0;r.length>n;n++)if(r[n]===o[s].element[0]){o[s].proportions().height=0;continue t}o[s].visible="none"!==o[s].element.css("display"),o[s].visible&&("mousedown"===a&&o[s]._activate.call(o[s],i),o[s].offset=o[s].element.offset(),o[s].proportions({width:o[s].element[0].offsetWidth,height:o[s].element[0].offsetHeight}))}},drop:function(e,i){var s=!1;return t.each((t.ui.ddmanager.droppables[e.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&u(e,this,this.options.tolerance,i)&&(s=this._drop.call(this,i)||s),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],e.currentItem||e.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,i)))}),s},dragStart:function(e,i){e.element.parentsUntil("body").on("scroll.droppable",function(){e.options.refreshPositions||t.ui.ddmanager.prepareOffsets(e,i)})},drag:function(e,i){e.options.refreshPositions&&t.ui.ddmanager.prepareOffsets(e,i),t.each(t.ui.ddmanager.droppables[e.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var s,n,o,a=u(e,this,this.options.tolerance,i),r=!a&&this.isover?"isout":a&&!this.isover?"isover":null;r&&(this.options.greedy&&(n=this.options.scope,o=this.element.parents(":data(ui-droppable)").filter(function(){return t(this).droppable("instance").options.scope===n}),o.length&&(s=t(o[0]).droppable("instance"),s.greedyChild="isover"===r)),s&&"isover"===r&&(s.isover=!1,s.isout=!0,s._out.call(s,i)),this[r]=!0,this["isout"===r?"isover":"isout"]=!1,this["isover"===r?"_over":"_out"].call(this,i),s&&"isout"===r&&(s.isout=!1,s.isover=!0,s._over.call(s,i)))}})},dragStop:function(e,i){e.element.parentsUntil("body").off("scroll.droppable"),e.options.refreshPositions||t.ui.ddmanager.prepareOffsets(e,i)}},t.uiBackCompat!==!1&&t.widget("ui.droppable",t.ui.droppable,{options:{hoverClass:!1,activeClass:!1},_addActiveClass:function(){this._super(),this.options.activeClass&&this.element.addClass(this.options.activeClass)},_removeActiveClass:function(){this._super(),this.options.activeClass&&this.element.removeClass(this.options.activeClass)},_addHoverClass:function(){this._super(),this.options.hoverClass&&this.element.addClass(this.options.hoverClass)},_removeHoverClass:function(){this._super(),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass)}}),t.ui.droppable,t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("<div>"),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidth<t.width,n=this._isNumber(t.height)&&e.maxHeight&&e.maxHeight<t.height,o=this._isNumber(t.width)&&e.minWidth&&e.minWidth>t.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("<div style='overflow:hidden;'></div>"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};
|
8 |
+
t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,g=s.maxWidth&&p>s.maxWidth,m=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),g&&(p-=l),m&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable,t.widget("ui.selectable",t.ui.mouse,{version:"1.12.1",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var e=this;this._addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){e.elementPos=t(e.element[0]).offset(),e.selectees=t(e.options.filter,e.element[0]),e._addClass(e.selectees,"ui-selectee"),e.selectees.each(function(){var i=t(this),s=i.offset(),n={left:s.left-e.elementPos.left,top:s.top-e.elementPos.top};t.data(this,"selectable-item",{element:this,$element:i,left:n.left,top:n.top,right:n.left+i.outerWidth(),bottom:n.top+i.outerHeight(),startselected:!1,selected:i.hasClass("ui-selected"),selecting:i.hasClass("ui-selecting"),unselecting:i.hasClass("ui-unselecting")})})},this.refresh(),this._mouseInit(),this.helper=t("<div>"),this._addClass(this.helper,"ui-selectable-helper")},_destroy:function(){this.selectees.removeData("selectable-item"),this._mouseDestroy()},_mouseStart:function(e){var i=this,s=this.options;this.opos=[e.pageX,e.pageY],this.elementPos=t(this.element[0]).offset(),this.options.disabled||(this.selectees=t(s.filter,this.element[0]),this._trigger("start",e),t(s.appendTo).append(this.helper),this.helper.css({left:e.pageX,top:e.pageY,width:0,height:0}),s.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var s=t.data(this,"selectable-item");s.startselected=!0,e.metaKey||e.ctrlKey||(i._removeClass(s.$element,"ui-selected"),s.selected=!1,i._addClass(s.$element,"ui-unselecting"),s.unselecting=!0,i._trigger("unselecting",e,{unselecting:s.element}))}),t(e.target).parents().addBack().each(function(){var s,n=t.data(this,"selectable-item");return n?(s=!e.metaKey&&!e.ctrlKey||!n.$element.hasClass("ui-selected"),i._removeClass(n.$element,s?"ui-unselecting":"ui-selected")._addClass(n.$element,s?"ui-selecting":"ui-unselecting"),n.unselecting=!s,n.selecting=s,n.selected=s,s?i._trigger("selecting",e,{selecting:n.element}):i._trigger("unselecting",e,{unselecting:n.element}),!1):void 0}))},_mouseDrag:function(e){if(this.dragged=!0,!this.options.disabled){var i,s=this,n=this.options,o=this.opos[0],a=this.opos[1],r=e.pageX,h=e.pageY;return o>r&&(i=r,r=o,o=i),a>h&&(i=h,h=a,a=i),this.helper.css({left:o,top:a,width:r-o,height:h-a}),this.selectees.each(function(){var i=t.data(this,"selectable-item"),l=!1,c={};i&&i.element!==s.element[0]&&(c.left=i.left+s.elementPos.left,c.right=i.right+s.elementPos.left,c.top=i.top+s.elementPos.top,c.bottom=i.bottom+s.elementPos.top,"touch"===n.tolerance?l=!(c.left>r||o>c.right||c.top>h||a>c.bottom):"fit"===n.tolerance&&(l=c.left>o&&r>c.right&&c.top>a&&h>c.bottom),l?(i.selected&&(s._removeClass(i.$element,"ui-selected"),i.selected=!1),i.unselecting&&(s._removeClass(i.$element,"ui-unselecting"),i.unselecting=!1),i.selecting||(s._addClass(i.$element,"ui-selecting"),i.selecting=!0,s._trigger("selecting",e,{selecting:i.element}))):(i.selecting&&((e.metaKey||e.ctrlKey)&&i.startselected?(s._removeClass(i.$element,"ui-selecting"),i.selecting=!1,s._addClass(i.$element,"ui-selected"),i.selected=!0):(s._removeClass(i.$element,"ui-selecting"),i.selecting=!1,i.startselected&&(s._addClass(i.$element,"ui-unselecting"),i.unselecting=!0),s._trigger("unselecting",e,{unselecting:i.element}))),i.selected&&(e.metaKey||e.ctrlKey||i.startselected||(s._removeClass(i.$element,"ui-selected"),i.selected=!1,s._addClass(i.$element,"ui-unselecting"),i.unselecting=!0,s._trigger("unselecting",e,{unselecting:i.element})))))}),!1}},_mouseStop:function(e){var i=this;return this.dragged=!1,t(".ui-unselecting",this.element[0]).each(function(){var s=t.data(this,"selectable-item");i._removeClass(s.$element,"ui-unselecting"),s.unselecting=!1,s.startselected=!1,i._trigger("unselected",e,{unselected:s.element})}),t(".ui-selecting",this.element[0]).each(function(){var s=t.data(this,"selectable-item");i._removeClass(s.$element,"ui-selecting")._addClass(s.$element,"ui-selected"),s.selecting=!1,s.selected=!0,s.startselected=!0,i._trigger("selected",e,{selected:s.element})}),this._trigger("stop",e),this.helper.remove(),!1}}),t.widget("ui.sortable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(t,e,i){return t>=e&&e+i>t},_isFloating:function(t){return/left|right/.test(t.css("float"))||/inline|table-cell/.test(t.css("display"))},_create:function(){this.containerCache={},this._addClass("ui-sortable"),this.refresh(),this.offset=this.element.offset(),this._mouseInit(),this._setHandleClassName(),this.ready=!0},_setOption:function(t,e){this._super(t,e),"handle"===t&&this._setHandleClassName()},_setHandleClassName:function(){var e=this;this._removeClass(this.element.find(".ui-sortable-handle"),"ui-sortable-handle"),t.each(this.items,function(){e._addClass(this.instance.options.handle?this.item.find(this.instance.options.handle):this.item,"ui-sortable-handle")})},_destroy:function(){this._mouseDestroy();for(var t=this.items.length-1;t>=0;t--)this.items[t].item.removeData(this.widgetName+"-item");return this},_mouseCapture:function(e,i){var s=null,n=!1,o=this;return this.reverting?!1:this.options.disabled||"static"===this.options.type?!1:(this._refreshItems(e),t(e.target).parents().each(function(){return t.data(this,o.widgetName+"-item")===o?(s=t(this),!1):void 0}),t.data(e.target,o.widgetName+"-item")===o&&(s=t(e.target)),s?!this.options.handle||i||(t(this.options.handle,s).find("*").addBack().each(function(){this===e.target&&(n=!0)}),n)?(this.currentItem=s,this._removeCurrentsFromItems(),!0):!1:!1)},_mouseStart:function(e,i,s){var n,o,a=this.options;if(this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(e),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},t.extend(this.offset,{click:{left:e.pageX-this.offset.left,top:e.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(e),this.originalPageX=e.pageX,this.originalPageY=e.pageY,a.cursorAt&&this._adjustOffsetFromHelper(a.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),a.containment&&this._setContainment(),a.cursor&&"auto"!==a.cursor&&(o=this.document.find("body"),this.storedCursor=o.css("cursor"),o.css("cursor",a.cursor),this.storedStylesheet=t("<style>*{ cursor: "+a.cursor+" !important; }</style>").appendTo(o)),a.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",a.opacity)),a.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",a.zIndex)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",e,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!s)for(n=this.containers.length-1;n>=0;n--)this.containers[n]._trigger("activate",e,this._uiHash(this));return t.ui.ddmanager&&(t.ui.ddmanager.current=this),t.ui.ddmanager&&!a.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this.dragging=!0,this._addClass(this.helper,"ui-sortable-helper"),this._mouseDrag(e),!0},_mouseDrag:function(e){var i,s,n,o,a=this.options,r=!1;for(this.position=this._generatePosition(e),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-e.pageY<a.scrollSensitivity?this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop+a.scrollSpeed:e.pageY-this.overflowOffset.top<a.scrollSensitivity&&(this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop-a.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-e.pageX<a.scrollSensitivity?this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft+a.scrollSpeed:e.pageX-this.overflowOffset.left<a.scrollSensitivity&&(this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft-a.scrollSpeed)):(e.pageY-this.document.scrollTop()<a.scrollSensitivity?r=this.document.scrollTop(this.document.scrollTop()-a.scrollSpeed):this.window.height()-(e.pageY-this.document.scrollTop())<a.scrollSensitivity&&(r=this.document.scrollTop(this.document.scrollTop()+a.scrollSpeed)),e.pageX-this.document.scrollLeft()<a.scrollSensitivity?r=this.document.scrollLeft(this.document.scrollLeft()-a.scrollSpeed):this.window.width()-(e.pageX-this.document.scrollLeft())<a.scrollSensitivity&&(r=this.document.scrollLeft(this.document.scrollLeft()+a.scrollSpeed))),r!==!1&&t.ui.ddmanager&&!a.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e)),this.positionAbs=this._convertPositionTo("absolute"),this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),i=this.items.length-1;i>=0;i--)if(s=this.items[i],n=s.item[0],o=this._intersectsWithPointer(s),o&&s.instance===this.currentContainer&&n!==this.currentItem[0]&&this.placeholder[1===o?"next":"prev"]()[0]!==n&&!t.contains(this.placeholder[0],n)&&("semi-dynamic"===this.options.type?!t.contains(this.element[0],n):!0)){if(this.direction=1===o?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(s))break;this._rearrange(e,s),this._trigger("change",e,this._uiHash());break}return this._contactContainers(e),t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),this._trigger("sort",e,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(e,i){if(e){if(t.ui.ddmanager&&!this.options.dropBehaviour&&t.ui.ddmanager.drop(this,e),this.options.revert){var s=this,n=this.placeholder.offset(),o=this.options.axis,a={};o&&"x"!==o||(a.left=n.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollLeft)),o&&"y"!==o||(a.top=n.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,t(this.helper).animate(a,parseInt(this.options.revert,10)||500,function(){s._clear(e)})}else this._clear(e,i);return!1}},cancel:function(){if(this.dragging){this._mouseUp(new t.Event("mouseup",{target:null})),"original"===this.options.helper?(this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")):this.currentItem.show();for(var e=this.containers.length-1;e>=0;e--)this.containers[e]._trigger("deactivate",null,this._uiHash(this)),this.containers[e].containerCache.over&&(this.containers[e]._trigger("out",null,this._uiHash(this)),this.containers[e].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),t.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?t(this.domPosition.prev).after(this.currentItem):t(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(e){var i=this._getItemsAsjQuery(e&&e.connected),s=[];return e=e||{},t(i).each(function(){var i=(t(e.item||this).attr(e.attribute||"id")||"").match(e.expression||/(.+)[\-=_](.+)/);i&&s.push((e.key||i[1]+"[]")+"="+(e.key&&e.expression?i[1]:i[2]))}),!s.length&&e.key&&s.push(e.key+"="),s.join("&")},toArray:function(e){var i=this._getItemsAsjQuery(e&&e.connected),s=[];return e=e||{},i.each(function(){s.push(t(e.item||this).attr(e.attribute||"id")||"")}),s},_intersectsWith:function(t){var e=this.positionAbs.left,i=e+this.helperProportions.width,s=this.positionAbs.top,n=s+this.helperProportions.height,o=t.left,a=o+t.width,r=t.top,h=r+t.height,l=this.offset.click.top,c=this.offset.click.left,u="x"===this.options.axis||s+l>r&&h>s+l,d="y"===this.options.axis||e+c>o&&a>e+c,p=u&&d;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>t[this.floating?"width":"height"]?p:e+this.helperProportions.width/2>o&&a>i-this.helperProportions.width/2&&s+this.helperProportions.height/2>r&&h>n-this.helperProportions.height/2},_intersectsWithPointer:function(t){var e,i,s="x"===this.options.axis||this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top,t.height),n="y"===this.options.axis||this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left,t.width),o=s&&n;return o?(e=this._getDragVerticalDirection(),i=this._getDragHorizontalDirection(),this.floating?"right"===i||"down"===e?2:1:e&&("down"===e?2:1)):!1},_intersectsWithSides:function(t){var e=this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top+t.height/2,t.height),i=this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left+t.width/2,t.width),s=this._getDragVerticalDirection(),n=this._getDragHorizontalDirection();return this.floating&&n?"right"===n&&i||"left"===n&&!i:s&&("down"===s&&e||"up"===s&&!e)},_getDragVerticalDirection:function(){var t=this.positionAbs.top-this.lastPositionAbs.top;return 0!==t&&(t>0?"down":"up")},_getDragHorizontalDirection:function(){var t=this.positionAbs.left-this.lastPositionAbs.left;return 0!==t&&(t>0?"right":"left")},refresh:function(t){return this._refreshItems(t),this._setHandleClassName(),this.refreshPositions(),this},_connectWith:function(){var t=this.options;return t.connectWith.constructor===String?[t.connectWith]:t.connectWith},_getItemsAsjQuery:function(e){function i(){r.push(this)}var s,n,o,a,r=[],h=[],l=this._connectWith();if(l&&e)for(s=l.length-1;s>=0;s--)for(o=t(l[s],this.document[0]),n=o.length-1;n>=0;n--)a=t.data(o[n],this.widgetFullName),a&&a!==this&&!a.options.disabled&&h.push([t.isFunction(a.options.items)?a.options.items.call(a.element):t(a.options.items,a.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),a]);for(h.push([t.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):t(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),s=h.length-1;s>=0;s--)h[s][0].each(i);return t(r)},_removeCurrentsFromItems:function(){var e=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=t.grep(this.items,function(t){for(var i=0;e.length>i;i++)if(e[i]===t.item[0])return!1;return!0})},_refreshItems:function(e){this.items=[],this.containers=[this];var i,s,n,o,a,r,h,l,c=this.items,u=[[t.isFunction(this.options.items)?this.options.items.call(this.element[0],e,{item:this.currentItem}):t(this.options.items,this.element),this]],d=this._connectWith();if(d&&this.ready)for(i=d.length-1;i>=0;i--)for(n=t(d[i],this.document[0]),s=n.length-1;s>=0;s--)o=t.data(n[s],this.widgetFullName),o&&o!==this&&!o.options.disabled&&(u.push([t.isFunction(o.options.items)?o.options.items.call(o.element[0],e,{item:this.currentItem}):t(o.options.items,o.element),o]),this.containers.push(o));for(i=u.length-1;i>=0;i--)for(a=u[i][1],r=u[i][0],s=0,l=r.length;l>s;s++)h=t(r[s]),h.data(this.widgetName+"-item",a),c.push({item:h,instance:a,width:0,height:0,left:0,top:0})},refreshPositions:function(e){this.floating=this.items.length?"x"===this.options.axis||this._isFloating(this.items[0].item):!1,this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());var i,s,n,o;for(i=this.items.length-1;i>=0;i--)s=this.items[i],s.instance!==this.currentContainer&&this.currentContainer&&s.item[0]!==this.currentItem[0]||(n=this.options.toleranceElement?t(this.options.toleranceElement,s.item):s.item,e||(s.width=n.outerWidth(),s.height=n.outerHeight()),o=n.offset(),s.left=o.left,s.top=o.top);if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(i=this.containers.length-1;i>=0;i--)o=this.containers[i].element.offset(),this.containers[i].containerCache.left=o.left,this.containers[i].containerCache.top=o.top,this.containers[i].containerCache.width=this.containers[i].element.outerWidth(),this.containers[i].containerCache.height=this.containers[i].element.outerHeight();return this},_createPlaceholder:function(e){e=e||this;var i,s=e.options;s.placeholder&&s.placeholder.constructor!==String||(i=s.placeholder,s.placeholder={element:function(){var s=e.currentItem[0].nodeName.toLowerCase(),n=t("<"+s+">",e.document[0]);return e._addClass(n,"ui-sortable-placeholder",i||e.currentItem[0].className)._removeClass(n,"ui-sortable-helper"),"tbody"===s?e._createTrPlaceholder(e.currentItem.find("tr").eq(0),t("<tr>",e.document[0]).appendTo(n)):"tr"===s?e._createTrPlaceholder(e.currentItem,n):"img"===s&&n.attr("src",e.currentItem.attr("src")),i||n.css("visibility","hidden"),n},update:function(t,n){(!i||s.forcePlaceholderSize)&&(n.height()||n.height(e.currentItem.innerHeight()-parseInt(e.currentItem.css("paddingTop")||0,10)-parseInt(e.currentItem.css("paddingBottom")||0,10)),n.width()||n.width(e.currentItem.innerWidth()-parseInt(e.currentItem.css("paddingLeft")||0,10)-parseInt(e.currentItem.css("paddingRight")||0,10)))}}),e.placeholder=t(s.placeholder.element.call(e.element,e.currentItem)),e.currentItem.after(e.placeholder),s.placeholder.update(e,e.placeholder)},_createTrPlaceholder:function(e,i){var s=this;e.children().each(function(){t("<td> </td>",s.document[0]).attr("colspan",t(this).attr("colspan")||1).appendTo(i)})},_contactContainers:function(e){var i,s,n,o,a,r,h,l,c,u,d=null,p=null;for(i=this.containers.length-1;i>=0;i--)if(!t.contains(this.currentItem[0],this.containers[i].element[0]))if(this._intersectsWith(this.containers[i].containerCache)){if(d&&t.contains(this.containers[i].element[0],d.element[0]))continue;d=this.containers[i],p=i}else this.containers[i].containerCache.over&&(this.containers[i]._trigger("out",e,this._uiHash(this)),this.containers[i].containerCache.over=0);if(d)if(1===this.containers.length)this.containers[p].containerCache.over||(this.containers[p]._trigger("over",e,this._uiHash(this)),this.containers[p].containerCache.over=1);else{for(n=1e4,o=null,c=d.floating||this._isFloating(this.currentItem),a=c?"left":"top",r=c?"width":"height",u=c?"pageX":"pageY",s=this.items.length-1;s>=0;s--)t.contains(this.containers[p].element[0],this.items[s].item[0])&&this.items[s].item[0]!==this.currentItem[0]&&(h=this.items[s].item.offset()[a],l=!1,e[u]-h>this.items[s][r]/2&&(l=!0),n>Math.abs(e[u]-h)&&(n=Math.abs(e[u]-h),o=this.items[s],this.direction=l?"up":"down"));if(!o&&!this.options.dropOnEmpty)return;if(this.currentContainer===this.containers[p])return this.currentContainer.containerCache.over||(this.containers[p]._trigger("over",e,this._uiHash()),this.currentContainer.containerCache.over=1),void 0;o?this._rearrange(e,o,null,!0):this._rearrange(e,null,this.containers[p].element,!0),this._trigger("change",e,this._uiHash()),this.containers[p]._trigger("change",e,this._uiHash(this)),this.currentContainer=this.containers[p],this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[p]._trigger("over",e,this._uiHash(this)),this.containers[p].containerCache.over=1}},_createHelper:function(e){var i=this.options,s=t.isFunction(i.helper)?t(i.helper.apply(this.element[0],[e,this.currentItem])):"clone"===i.helper?this.currentItem.clone():this.currentItem;return s.parents("body").length||t("parent"!==i.appendTo?i.appendTo:this.currentItem[0].parentNode)[0].appendChild(s[0]),s[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(!s[0].style.width||i.forceHelperSize)&&s.width(this.currentItem.width()),(!s[0].style.height||i.forceHelperSize)&&s.height(this.currentItem.height()),s},_adjustOffsetFromHelper:function(e){"string"==typeof e&&(e=e.split(" ")),t.isArray(e)&&(e={left:+e[0],top:+e[1]||0}),"left"in e&&(this.offset.click.left=e.left+this.margins.left),"right"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),"top"in e&&(this.offset.click.top=e.top+this.margins.top),"bottom"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var e=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==this.document[0]&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===this.document[0].body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&t.ui.ie)&&(e={top:0,left:0}),{top:e.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var t=this.currentItem.position();return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:t.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,i,s,n=this.options;"parent"===n.containment&&(n.containment=this.helper[0].parentNode),("document"===n.containment||"window"===n.containment)&&(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,"document"===n.containment?this.document.width():this.window.width()-this.helperProportions.width-this.margins.left,("document"===n.containment?this.document.height()||document.body.parentNode.scrollHeight:this.window.height()||this.document[0].body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(n.containment)||(e=t(n.containment)[0],i=t(n.containment).offset(),s="hidden"!==t(e).css("overflow"),this.containment=[i.left+(parseInt(t(e).css("borderLeftWidth"),10)||0)+(parseInt(t(e).css("paddingLeft"),10)||0)-this.margins.left,i.top+(parseInt(t(e).css("borderTopWidth"),10)||0)+(parseInt(t(e).css("paddingTop"),10)||0)-this.margins.top,i.left+(s?Math.max(e.scrollWidth,e.offsetWidth):e.offsetWidth)-(parseInt(t(e).css("borderLeftWidth"),10)||0)-(parseInt(t(e).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,i.top+(s?Math.max(e.scrollHeight,e.offsetHeight):e.offsetHeight)-(parseInt(t(e).css("borderTopWidth"),10)||0)-(parseInt(t(e).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(e,i){i||(i=this.position);var s="absolute"===e?1:-1,n="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,o=/(html|body)/i.test(n[0].tagName);return{top:i.top+this.offset.relative.top*s+this.offset.parent.top*s-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():o?0:n.scrollTop())*s,left:i.left+this.offset.relative.left*s+this.offset.parent.left*s-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():o?0:n.scrollLeft())*s}},_generatePosition:function(e){var i,s,n=this.options,o=e.pageX,a=e.pageY,r="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,h=/(html|body)/i.test(r[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(e.pageX-this.offset.click.left<this.containment[0]&&(o=this.containment[0]+this.offset.click.left),e.pageY-this.offset.click.top<this.containment[1]&&(a=this.containment[1]+this.offset.click.top),e.pageX-this.offset.click.left>this.containment[2]&&(o=this.containment[2]+this.offset.click.left),e.pageY-this.offset.click.top>this.containment[3]&&(a=this.containment[3]+this.offset.click.top)),n.grid&&(i=this.originalPageY+Math.round((a-this.originalPageY)/n.grid[1])*n.grid[1],a=this.containment?i-this.offset.click.top>=this.containment[1]&&i-this.offset.click.top<=this.containment[3]?i:i-this.offset.click.top>=this.containment[1]?i-n.grid[1]:i+n.grid[1]:i,s=this.originalPageX+Math.round((o-this.originalPageX)/n.grid[0])*n.grid[0],o=this.containment?s-this.offset.click.left>=this.containment[0]&&s-this.offset.click.left<=this.containment[2]?s:s-this.offset.click.left>=this.containment[0]?s-n.grid[0]:s+n.grid[0]:s)),{top:a-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():h?0:r.scrollTop()),left:o-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():h?0:r.scrollLeft())}},_rearrange:function(t,e,i,s){i?i[0].appendChild(this.placeholder[0]):e.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?e.item[0]:e.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(t,e){function i(t,e,i){return function(s){i._trigger(t,s,e._uiHash(e))}}this.reverting=!1;var s,n=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(s in this._storedCSS)("auto"===this._storedCSS[s]||"static"===this._storedCSS[s])&&(this._storedCSS[s]="");this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")}else this.currentItem.show();for(this.fromOutside&&!e&&n.push(function(t){this._trigger("receive",t,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||e||n.push(function(t){this._trigger("update",t,this._uiHash())}),this!==this.currentContainer&&(e||(n.push(function(t){this._trigger("remove",t,this._uiHash())}),n.push(function(t){return function(e){t._trigger("receive",e,this._uiHash(this))}}.call(this,this.currentContainer)),n.push(function(t){return function(e){t._trigger("update",e,this._uiHash(this))}}.call(this,this.currentContainer)))),s=this.containers.length-1;s>=0;s--)e||n.push(i("deactivate",this,this.containers[s])),this.containers[s].containerCache.over&&(n.push(i("out",this,this.containers[s])),this.containers[s].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,e||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!e){for(s=0;n.length>s;s++)n[s].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!this.cancelHelperRemoval},_trigger:function(){t.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(e){var i=e||this;return{helper:i.helper,placeholder:i.placeholder||t([]),position:i.position,originalPosition:i.originalPosition,offset:i.positionAbs,item:i.currentItem,sender:e?e.element:null}}}),t.widget("ui.accordion",{version:"1.12.1",options:{active:0,animate:{},classes:{"ui-accordion-header":"ui-corner-top","ui-accordion-header-collapsed":"ui-corner-all","ui-accordion-content":"ui-corner-bottom"},collapsible:!1,event:"click",header:"> li > :first-child, > :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var e=this.options;this.prevShow=this.prevHide=t(),this._addClass("ui-accordion","ui-widget ui-helper-reset"),this.element.attr("role","tablist"),e.collapsible||e.active!==!1&&null!=e.active||(e.active=0),this._processPanels(),0>e.active&&(e.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():t()}},_createIcons:function(){var e,i,s=this.options.icons;s&&(e=t("<span>"),this._addClass(e,"ui-accordion-header-icon","ui-icon "+s.header),e.prependTo(this.headers),i=this.active.children(".ui-accordion-header-icon"),this._removeClass(i,s.header)._addClass(i,null,s.activeHeader)._addClass(this.headers,"ui-accordion-icons"))
|
9 |
+
},_destroyIcons:function(){this._removeClass(this.headers,"ui-accordion-icons"),this.headers.children(".ui-accordion-header-icon").remove()},_destroy:function(){var t;this.element.removeAttr("role"),this.headers.removeAttr("role aria-expanded aria-selected aria-controls tabIndex").removeUniqueId(),this._destroyIcons(),t=this.headers.next().css("display","").removeAttr("role aria-hidden aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&t.css("height","")},_setOption:function(t,e){return"active"===t?(this._activate(e),void 0):("event"===t&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(e)),this._super(t,e),"collapsible"!==t||e||this.options.active!==!1||this._activate(0),"icons"===t&&(this._destroyIcons(),e&&this._createIcons()),void 0)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t),this._toggleClass(this.headers.add(this.headers.next()),null,"ui-state-disabled",!!t)},_keydown:function(e){if(!e.altKey&&!e.ctrlKey){var i=t.ui.keyCode,s=this.headers.length,n=this.headers.index(e.target),o=!1;switch(e.keyCode){case i.RIGHT:case i.DOWN:o=this.headers[(n+1)%s];break;case i.LEFT:case i.UP:o=this.headers[(n-1+s)%s];break;case i.SPACE:case i.ENTER:this._eventHandler(e);break;case i.HOME:o=this.headers[0];break;case i.END:o=this.headers[s-1]}o&&(t(e.target).attr("tabIndex",-1),t(o).attr("tabIndex",0),t(o).trigger("focus"),e.preventDefault())}},_panelKeyDown:function(e){e.keyCode===t.ui.keyCode.UP&&e.ctrlKey&&t(e.currentTarget).prev().trigger("focus")},refresh:function(){var e=this.options;this._processPanels(),e.active===!1&&e.collapsible===!0||!this.headers.length?(e.active=!1,this.active=t()):e.active===!1?this._activate(0):this.active.length&&!t.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(e.active=!1,this.active=t()):this._activate(Math.max(0,e.active-1)):e.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var t=this.headers,e=this.panels;this.headers=this.element.find(this.options.header),this._addClass(this.headers,"ui-accordion-header ui-accordion-header-collapsed","ui-state-default"),this.panels=this.headers.next().filter(":not(.ui-accordion-content-active)").hide(),this._addClass(this.panels,"ui-accordion-content","ui-helper-reset ui-widget-content"),e&&(this._off(t.not(this.headers)),this._off(e.not(this.panels)))},_refresh:function(){var e,i=this.options,s=i.heightStyle,n=this.element.parent();this.active=this._findActive(i.active),this._addClass(this.active,"ui-accordion-header-active","ui-state-active")._removeClass(this.active,"ui-accordion-header-collapsed"),this._addClass(this.active.next(),"ui-accordion-content-active"),this.active.next().show(),this.headers.attr("role","tab").each(function(){var e=t(this),i=e.uniqueId().attr("id"),s=e.next(),n=s.uniqueId().attr("id");e.attr("aria-controls",n),s.attr("aria-labelledby",i)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(i.event),"fill"===s?(e=n.height(),this.element.siblings(":visible").each(function(){var i=t(this),s=i.css("position");"absolute"!==s&&"fixed"!==s&&(e-=i.outerHeight(!0))}),this.headers.each(function(){e-=t(this).outerHeight(!0)}),this.headers.next().each(function(){t(this).height(Math.max(0,e-t(this).innerHeight()+t(this).height()))}).css("overflow","auto")):"auto"===s&&(e=0,this.headers.next().each(function(){var i=t(this).is(":visible");i||t(this).show(),e=Math.max(e,t(this).css("height","").height()),i||t(this).hide()}).height(e))},_activate:function(e){var i=this._findActive(e)[0];i!==this.active[0]&&(i=i||this.active[0],this._eventHandler({target:i,currentTarget:i,preventDefault:t.noop}))},_findActive:function(e){return"number"==typeof e?this.headers.eq(e):t()},_setupEvents:function(e){var i={keydown:"_keydown"};e&&t.each(e.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(e){var i,s,n=this.options,o=this.active,a=t(e.currentTarget),r=a[0]===o[0],h=r&&n.collapsible,l=h?t():a.next(),c=o.next(),u={oldHeader:o,oldPanel:c,newHeader:h?t():a,newPanel:l};e.preventDefault(),r&&!n.collapsible||this._trigger("beforeActivate",e,u)===!1||(n.active=h?!1:this.headers.index(a),this.active=r?t():a,this._toggle(u),this._removeClass(o,"ui-accordion-header-active","ui-state-active"),n.icons&&(i=o.children(".ui-accordion-header-icon"),this._removeClass(i,null,n.icons.activeHeader)._addClass(i,null,n.icons.header)),r||(this._removeClass(a,"ui-accordion-header-collapsed")._addClass(a,"ui-accordion-header-active","ui-state-active"),n.icons&&(s=a.children(".ui-accordion-header-icon"),this._removeClass(s,null,n.icons.header)._addClass(s,null,n.icons.activeHeader)),this._addClass(a.next(),"ui-accordion-content-active")))},_toggle:function(e){var i=e.newPanel,s=this.prevShow.length?this.prevShow:e.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=i,this.prevHide=s,this.options.animate?this._animate(i,s,e):(s.hide(),i.show(),this._toggleComplete(e)),s.attr({"aria-hidden":"true"}),s.prev().attr({"aria-selected":"false","aria-expanded":"false"}),i.length&&s.length?s.prev().attr({tabIndex:-1,"aria-expanded":"false"}):i.length&&this.headers.filter(function(){return 0===parseInt(t(this).attr("tabIndex"),10)}).attr("tabIndex",-1),i.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(t,e,i){var s,n,o,a=this,r=0,h=t.css("box-sizing"),l=t.length&&(!e.length||t.index()<e.index()),c=this.options.animate||{},u=l&&c.down||c,d=function(){a._toggleComplete(i)};return"number"==typeof u&&(o=u),"string"==typeof u&&(n=u),n=n||u.easing||c.easing,o=o||u.duration||c.duration,e.length?t.length?(s=t.show().outerHeight(),e.animate(this.hideProps,{duration:o,easing:n,step:function(t,e){e.now=Math.round(t)}}),t.hide().animate(this.showProps,{duration:o,easing:n,complete:d,step:function(t,i){i.now=Math.round(t),"height"!==i.prop?"content-box"===h&&(r+=i.now):"content"!==a.options.heightStyle&&(i.now=Math.round(s-e.outerHeight()-r),r=0)}}),void 0):e.animate(this.hideProps,o,n,d):t.animate(this.showProps,o,n,d)},_toggleComplete:function(t){var e=t.oldPanel,i=e.prev();this._removeClass(e,"ui-accordion-content-active"),this._removeClass(i,"ui-accordion-header-active")._addClass(i,"ui-accordion-header-collapsed"),e.length&&(e.parent()[0].className=e.parent()[0].className),this._trigger("activate",null,t)}}),t.widget("ui.menu",{version:"1.12.1",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault()},"click .ui-menu-item":function(e){var i=t(e.target),s=t(t.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(e),e.isPropagationStopped()||(this.mouseHandled=!0),i.has(".ui-menu").length?this.expand(e):!this.element.is(":focus")&&s.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(e){if(!this.previousFilter){var i=t(e.target).closest(".ui-menu-item"),s=t(e.currentTarget);i[0]===s[0]&&(this._removeClass(s.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(e,s))}},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this.element.find(this.options.items).eq(0);e||this.focus(t,i)},blur:function(e){this._delay(function(){var i=!t.contains(this.element[0],t.ui.safeActiveElement(this.document[0]));i&&this.collapseAll(e)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t),this.mouseHandled=!1}})},_destroy:function(){var e=this.element.find(".ui-menu-item").removeAttr("role aria-disabled"),i=e.children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),i.children().each(function(){var e=t(this);e.data("ui-menu-submenu-caret")&&e.remove()})},_keydown:function(e){var i,s,n,o,a=!0;switch(e.keyCode){case t.ui.keyCode.PAGE_UP:this.previousPage(e);break;case t.ui.keyCode.PAGE_DOWN:this.nextPage(e);break;case t.ui.keyCode.HOME:this._move("first","first",e);break;case t.ui.keyCode.END:this._move("last","last",e);break;case t.ui.keyCode.UP:this.previous(e);break;case t.ui.keyCode.DOWN:this.next(e);break;case t.ui.keyCode.LEFT:this.collapse(e);break;case t.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(e);break;case t.ui.keyCode.ENTER:case t.ui.keyCode.SPACE:this._activate(e);break;case t.ui.keyCode.ESCAPE:this.collapse(e);break;default:a=!1,s=this.previousFilter||"",o=!1,n=e.keyCode>=96&&105>=e.keyCode?""+(e.keyCode-96):String.fromCharCode(e.keyCode),clearTimeout(this.filterTimer),n===s?o=!0:n=s+n,i=this._filterMenuItems(n),i=o&&-1!==i.index(this.active.next())?this.active.nextAll(".ui-menu-item"):i,i.length||(n=String.fromCharCode(e.keyCode),i=this._filterMenuItems(n)),i.length?(this.focus(e,i),this.previousFilter=n,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}a&&e.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var e,i,s,n,o,a=this,r=this.options.icons.submenu,h=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),s=h.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var e=t(this),i=e.prev(),s=t("<span>").data("ui-menu-submenu-caret",!0);a._addClass(s,"ui-menu-icon","ui-icon "+r),i.attr("aria-haspopup","true").prepend(s),e.attr("aria-labelledby",i.attr("id"))}),this._addClass(s,"ui-menu","ui-widget ui-widget-content ui-front"),e=h.add(this.element),i=e.find(this.options.items),i.not(".ui-menu-item").each(function(){var e=t(this);a._isDivider(e)&&a._addClass(e,"ui-menu-divider","ui-widget-content")}),n=i.not(".ui-menu-item, .ui-menu-divider"),o=n.children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(n,"ui-menu-item")._addClass(o,"ui-menu-item-wrapper"),i.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!t.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){if("icons"===t){var i=this.element.find(".ui-menu-icon");this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)}this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t+""),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i,s,n;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),s=this.active.children(".ui-menu-item-wrapper"),this._addClass(s,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),n=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(n,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=e.children(".ui-menu"),i.length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(e){var i,s,n,o,a,r;this._hasScroll()&&(i=parseFloat(t.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(t.css(this.activeMenu[0],"paddingTop"))||0,n=e.offset().top-this.activeMenu.offset().top-i-s,o=this.activeMenu.scrollTop(),a=this.activeMenu.height(),r=e.outerHeight(),0>n?this.activeMenu.scrollTop(o+n):n+r>a&&this.activeMenu.scrollTop(o+n-a+r))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this._removeClass(this.active.children(".ui-menu-item-wrapper"),null,"ui-state-active"),this._trigger("blur",t,{item:this.active}),this.active=null)},_startOpening:function(t){clearTimeout(this.timer),"true"===t.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(t)},this.delay))},_open:function(e){var i=t.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(e.parents(".ui-menu")).hide().attr("aria-hidden","true"),e.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(e,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:t(e&&e.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(e),this._removeClass(s.find(".ui-state-active"),null,"ui-state-active"),this.activeMenu=s},this.delay)},_close:function(t){t||(t=this.active?this.active.parent():this.element),t.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false")},_closeOnDocumentClick:function(e){return!t(e.target).closest(".ui-menu").length},_isDivider:function(t){return!/[^\-\u2014\u2013\s]/.test(t.text())},collapse:function(t){var e=this.active&&this.active.parent().closest(".ui-menu-item",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this.active.children(".ui-menu ").find(this.options.items).first();e&&e.length&&(this._open(e.parent()),this._delay(function(){this.focus(t,e)}))},next:function(t){this._move("next","first",t)},previous:function(t){this._move("prev","last",t)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(t,e,i){var s;this.active&&(s="first"===t||"last"===t?this.active["first"===t?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[t+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.find(this.options.items)[e]()),this.focus(i,s)},nextPage:function(e){var i,s,n;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=t(this),0>i.offset().top-s-n}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items)[this.active?"last":"first"]())),void 0):(this.next(e),void 0)},previousPage:function(e){var i,s,n;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=t(this),i.offset().top-s+n>0}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items).first())),void 0):(this.next(e),void 0)},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(e){this.active=this.active||t(e.target).closest(".ui-menu-item");var i={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(e,!0),this._trigger("select",e,i)},_filterMenuItems:function(e){var i=e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&"),s=RegExp("^"+i,"i");return this.activeMenu.find(this.options.items).filter(".ui-menu-item").filter(function(){return s.test(t.trim(t(this).children(".ui-menu-item-wrapper").text()))})}}),t.widget("ui.autocomplete",{version:"1.12.1",defaultElement:"<input>",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var e,i,s,n=this.element[0].nodeName.toLowerCase(),o="textarea"===n,a="input"===n;this.isMultiLine=o||!a&&this._isContentEditable(this.element),this.valueMethod=this.element[o||a?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return e=!0,s=!0,i=!0,void 0;e=!1,s=!1,i=!1;var o=t.ui.keyCode;switch(n.keyCode){case o.PAGE_UP:e=!0,this._move("previousPage",n);break;case o.PAGE_DOWN:e=!0,this._move("nextPage",n);break;case o.UP:e=!0,this._keyEvent("previous",n);break;case o.DOWN:e=!0,this._keyEvent("next",n);break;case o.ENTER:this.menu.active&&(e=!0,n.preventDefault(),this.menu.select(n));break;case o.TAB:this.menu.active&&this.menu.select(n);break;case o.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(e)return e=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),void 0;if(!i){var n=t.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(t){return s?(s=!1,t.preventDefault(),void 0):(this._searchTimeout(t),void 0)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(clearTimeout(this.searching),this.close(t),this._change(t),void 0)}}),this._initSource(),this.menu=t("<ul>").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(e){e.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,this.element[0]!==t.ui.safeActiveElement(this.document[0])&&this.element.trigger("focus")})},menufocus:function(e,i){var s,n;return this.isNewMenu&&(this.isNewMenu=!1,e.originalEvent&&/^mouse/.test(e.originalEvent.type))?(this.menu.blur(),this.document.one("mousemove",function(){t(e.target).trigger(e.originalEvent)}),void 0):(n=i.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",e,{item:n})&&e.originalEvent&&/^key/.test(e.originalEvent.type)&&this._value(n.value),s=i.item.attr("aria-label")||n.value,s&&t.trim(s).length&&(this.liveRegion.children().hide(),t("<div>").text(s).appendTo(this.liveRegion)),void 0)},menuselect:function(e,i){var s=i.item.data("ui-autocomplete-item"),n=this.previous;this.element[0]!==t.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=n,this._delay(function(){this.previous=n,this.selectedItem=s})),!1!==this._trigger("select",e,{item:s})&&this._value(s.value),this.term=this._value(),this.close(e),this.selectedItem=s}}),this.liveRegion=t("<div>",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(e){var i=this.menu.element[0];return e.target===this.element[0]||e.target===i||t.contains(i,e.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var e=this.options.appendTo;return e&&(e=e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)),e&&e[0]||(e=this.element.closest(".ui-front, dialog")),e.length||(e=this.document[0].body),e},_initSource:function(){var e,i,s=this;t.isArray(this.options.source)?(e=this.options.source,this.source=function(i,s){s(t.ui.autocomplete.filter(e,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(e,n){s.xhr&&s.xhr.abort(),s.xhr=t.ajax({url:i,data:e,dataType:"json",success:function(t){n(t)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(t){clearTimeout(this.searching),this.searching=this._delay(function(){var e=this.term===this._value(),i=this.menu.element.is(":visible"),s=t.altKey||t.ctrlKey||t.metaKey||t.shiftKey;(!e||e&&!i&&!s)&&(this.selectedItem=null,this.search(null,t))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length<this.options.minLength?this.close(e):this._trigger("search",e)!==!1?this._search(t):void 0},_search:function(t){this.pending++,this._addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:t},this._response())},_response:function(){var e=++this.requestIndex;return t.proxy(function(t){e===this.requestIndex&&this.__response(t),this.pending--,this.pending||this._removeClass("ui-autocomplete-loading")},this)},__response:function(t){t&&(t=this._normalize(t)),this._trigger("response",null,{content:t}),!this.options.disabled&&t&&t.length&&!this.cancelSearch?(this._suggest(t),this._trigger("open")):this._close()},close:function(t){this.cancelSearch=!0,this._close(t)},_close:function(t){this._off(this.document,"mousedown"),this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",t))},_change:function(t){this.previous!==this._value()&&this._trigger("change",t,{item:this.selectedItem})},_normalize:function(e){return e.length&&e[0].label&&e[0].value?e:t.map(e,function(e){return"string"==typeof e?{label:e,value:e}:t.extend({},e,{label:e.label||e.value,value:e.value||e.label})})},_suggest:function(e){var i=this.menu.element.empty();this._renderMenu(i,e),this.isNewMenu=!0,this.menu.refresh(),i.show(),this._resizeMenu(),i.position(t.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next(),this._on(this.document,{mousedown:"_closeOnClickOutside"})},_resizeMenu:function(){var t=this.menu.element;t.outerWidth(Math.max(t.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(e,i){var s=this;t.each(i,function(t,i){s._renderItemData(e,i)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-autocomplete-item",e)},_renderItem:function(e,i){return t("<li>").append(t("<div>").text(i.label)).appendTo(e)},_move:function(t,e){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),this.menu.blur(),void 0):(this.menu[t](e),void 0):(this.search(null,e),void 0)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),t.extend(t.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(e,i){var s=RegExp(t.ui.autocomplete.escapeRegex(i),"i");return t.grep(e,function(t){return s.test(t.label||t.value||t)})}}),t.widget("ui.autocomplete",t.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(t>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(e){var i;this._superApply(arguments),this.options.disabled||this.cancelSearch||(i=e&&e.length?this.options.messages.results(e.length):this.options.messages.noResults,this.liveRegion.children().hide(),t("<div>").text(i).appendTo(this.liveRegion))}}),t.ui.autocomplete;var d=/ui-corner-([a-z]){2,6}/g;t.widget("ui.controlgroup",{version:"1.12.1",defaultElement:"<div>",options:{direction:"horizontal",disabled:null,onlyVisible:!0,items:{button:"input[type=button], input[type=submit], input[type=reset], button, a",controlgroupLabel:".ui-controlgroup-label",checkboxradio:"input[type='checkbox'], input[type='radio']",selectmenu:"select",spinner:".ui-spinner-input"}},_create:function(){this._enhance()},_enhance:function(){this.element.attr("role","toolbar"),this.refresh()},_destroy:function(){this._callChildMethod("destroy"),this.childWidgets.removeData("ui-controlgroup-data"),this.element.removeAttr("role"),this.options.items.controlgroupLabel&&this.element.find(this.options.items.controlgroupLabel).find(".ui-controlgroup-label-contents").contents().unwrap()},_initWidgets:function(){var e=this,i=[];t.each(this.options.items,function(s,n){var o,a={};return n?"controlgroupLabel"===s?(o=e.element.find(n),o.each(function(){var e=t(this);e.children(".ui-controlgroup-label-contents").length||e.contents().wrapAll("<span class='ui-controlgroup-label-contents'></span>")}),e._addClass(o,null,"ui-widget ui-widget-content ui-state-default"),i=i.concat(o.get()),void 0):(t.fn[s]&&(a=e["_"+s+"Options"]?e["_"+s+"Options"]("middle"):{classes:{}},e.element.find(n).each(function(){var n=t(this),o=n[s]("instance"),r=t.widget.extend({},a);if("button"!==s||!n.parent(".ui-spinner").length){o||(o=n[s]()[s]("instance")),o&&(r.classes=e._resolveClassesValues(r.classes,o)),n[s](r);var h=n[s]("widget");t.data(h[0],"ui-controlgroup-data",o?o:n[s]("instance")),i.push(h[0])}})),void 0):void 0}),this.childWidgets=t(t.unique(i)),this._addClass(this.childWidgets,"ui-controlgroup-item")},_callChildMethod:function(e){this.childWidgets.each(function(){var i=t(this),s=i.data("ui-controlgroup-data");s&&s[e]&&s[e]()})},_updateCornerClass:function(t,e){var i="ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all",s=this._buildSimpleOptions(e,"label").classes.label;this._removeClass(t,null,i),this._addClass(t,null,s)},_buildSimpleOptions:function(t,e){var i="vertical"===this.options.direction,s={classes:{}};return s.classes[e]={middle:"",first:"ui-corner-"+(i?"top":"left"),last:"ui-corner-"+(i?"bottom":"right"),only:"ui-corner-all"}[t],s},_spinnerOptions:function(t){var e=this._buildSimpleOptions(t,"ui-spinner");return e.classes["ui-spinner-up"]="",e.classes["ui-spinner-down"]="",e},_buttonOptions:function(t){return this._buildSimpleOptions(t,"ui-button")},_checkboxradioOptions:function(t){return this._buildSimpleOptions(t,"ui-checkboxradio-label")},_selectmenuOptions:function(t){var e="vertical"===this.options.direction;return{width:e?"auto":!1,classes:{middle:{"ui-selectmenu-button-open":"","ui-selectmenu-button-closed":""},first:{"ui-selectmenu-button-open":"ui-corner-"+(e?"top":"tl"),"ui-selectmenu-button-closed":"ui-corner-"+(e?"top":"left")},last:{"ui-selectmenu-button-open":e?"":"ui-corner-tr","ui-selectmenu-button-closed":"ui-corner-"+(e?"bottom":"right")},only:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"}}[t]}},_resolveClassesValues:function(e,i){var s={};return t.each(e,function(n){var o=i.options.classes[n]||"";o=t.trim(o.replace(d,"")),s[n]=(o+" "+e[n]).replace(/\s+/g," ")}),s},_setOption:function(t,e){return"direction"===t&&this._removeClass("ui-controlgroup-"+this.options.direction),this._super(t,e),"disabled"===t?(this._callChildMethod(e?"disable":"enable"),void 0):(this.refresh(),void 0)},refresh:function(){var e,i=this;this._addClass("ui-controlgroup ui-controlgroup-"+this.options.direction),"horizontal"===this.options.direction&&this._addClass(null,"ui-helper-clearfix"),this._initWidgets(),e=this.childWidgets,this.options.onlyVisible&&(e=e.filter(":visible")),e.length&&(t.each(["first","last"],function(t,s){var n=e[s]().data("ui-controlgroup-data");if(n&&i["_"+n.widgetName+"Options"]){var o=i["_"+n.widgetName+"Options"](1===e.length?"only":s);o.classes=i._resolveClassesValues(o.classes,n),n.element[n.widgetName](o)}else i._updateCornerClass(e[s](),s)}),this._callChildMethod("refresh"))}}),t.widget("ui.checkboxradio",[t.ui.formResetMixin,{version:"1.12.1",options:{disabled:null,label:null,icon:!0,classes:{"ui-checkboxradio-label":"ui-corner-all","ui-checkboxradio-icon":"ui-corner-all"}},_getCreateOptions:function(){var e,i,s=this,n=this._super()||{};return this._readType(),i=this.element.labels(),this.label=t(i[i.length-1]),this.label.length||t.error("No label found for checkboxradio widget"),this.originalLabel="",this.label.contents().not(this.element[0]).each(function(){s.originalLabel+=3===this.nodeType?t(this).text():this.outerHTML}),this.originalLabel&&(n.label=this.originalLabel),e=this.element[0].disabled,null!=e&&(n.disabled=e),n},_create:function(){var t=this.element[0].checked;this._bindFormResetHandler(),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled),this._setOption("disabled",this.options.disabled),this._addClass("ui-checkboxradio","ui-helper-hidden-accessible"),this._addClass(this.label,"ui-checkboxradio-label","ui-button ui-widget"),"radio"===this.type&&this._addClass(this.label,"ui-checkboxradio-radio-label"),this.options.label&&this.options.label!==this.originalLabel?this._updateLabel():this.originalLabel&&(this.options.label=this.originalLabel),this._enhance(),t&&(this._addClass(this.label,"ui-checkboxradio-checked","ui-state-active"),this.icon&&this._addClass(this.icon,null,"ui-state-hover")),this._on({change:"_toggleClasses",focus:function(){this._addClass(this.label,null,"ui-state-focus ui-visual-focus")},blur:function(){this._removeClass(this.label,null,"ui-state-focus ui-visual-focus")}})},_readType:function(){var e=this.element[0].nodeName.toLowerCase();this.type=this.element[0].type,"input"===e&&/radio|checkbox/.test(this.type)||t.error("Can't create checkboxradio on element.nodeName="+e+" and element.type="+this.type)},_enhance:function(){this._updateIcon(this.element[0].checked)},widget:function(){return this.label},_getRadioGroup:function(){var e,i=this.element[0].name,s="input[name='"+t.ui.escapeSelector(i)+"']";return i?(e=this.form.length?t(this.form[0].elements).filter(s):t(s).filter(function(){return 0===t(this).form().length}),e.not(this.element)):t([])},_toggleClasses:function(){var e=this.element[0].checked;this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",e),this.options.icon&&"checkbox"===this.type&&this._toggleClass(this.icon,null,"ui-icon-check ui-state-checked",e)._toggleClass(this.icon,null,"ui-icon-blank",!e),"radio"===this.type&&this._getRadioGroup().each(function(){var e=t(this).checkboxradio("instance");e&&e._removeClass(e.label,"ui-checkboxradio-checked","ui-state-active")})},_destroy:function(){this._unbindFormResetHandler(),this.icon&&(this.icon.remove(),this.iconSpace.remove())},_setOption:function(t,e){return"label"!==t||e?(this._super(t,e),"disabled"===t?(this._toggleClass(this.label,null,"ui-state-disabled",e),this.element[0].disabled=e,void 0):(this.refresh(),void 0)):void 0},_updateIcon:function(e){var i="ui-icon ui-icon-background ";this.options.icon?(this.icon||(this.icon=t("<span>"),this.iconSpace=t("<span> </span>"),this._addClass(this.iconSpace,"ui-checkboxradio-icon-space")),"checkbox"===this.type?(i+=e?"ui-icon-check ui-state-checked":"ui-icon-blank",this._removeClass(this.icon,null,e?"ui-icon-blank":"ui-icon-check")):i+="ui-icon-blank",this._addClass(this.icon,"ui-checkboxradio-icon",i),e||this._removeClass(this.icon,null,"ui-icon-check ui-state-checked"),this.icon.prependTo(this.label).after(this.iconSpace)):void 0!==this.icon&&(this.icon.remove(),this.iconSpace.remove(),delete this.icon)
|
10 |
+
},_updateLabel:function(){var t=this.label.contents().not(this.element[0]);this.icon&&(t=t.not(this.icon[0])),this.iconSpace&&(t=t.not(this.iconSpace[0])),t.remove(),this.label.append(this.options.label)},refresh:function(){var t=this.element[0].checked,e=this.element[0].disabled;this._updateIcon(t),this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),null!==this.options.label&&this._updateLabel(),e!==this.options.disabled&&this._setOptions({disabled:e})}}]),t.ui.checkboxradio,t.widget("ui.button",{version:"1.12.1",defaultElement:"<button>",options:{classes:{"ui-button":"ui-corner-all"},disabled:null,icon:null,iconPosition:"beginning",label:null,showLabel:!0},_getCreateOptions:function(){var t,e=this._super()||{};return this.isInput=this.element.is("input"),t=this.element[0].disabled,null!=t&&(e.disabled=t),this.originalLabel=this.isInput?this.element.val():this.element.html(),this.originalLabel&&(e.label=this.originalLabel),e},_create:function(){!this.option.showLabel&!this.options.icon&&(this.options.showLabel=!0),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled||!1),this.hasTitle=!!this.element.attr("title"),this.options.label&&this.options.label!==this.originalLabel&&(this.isInput?this.element.val(this.options.label):this.element.html(this.options.label)),this._addClass("ui-button","ui-widget"),this._setOption("disabled",this.options.disabled),this._enhance(),this.element.is("a")&&this._on({keyup:function(e){e.keyCode===t.ui.keyCode.SPACE&&(e.preventDefault(),this.element[0].click?this.element[0].click():this.element.trigger("click"))}})},_enhance:function(){this.element.is("button")||this.element.attr("role","button"),this.options.icon&&(this._updateIcon("icon",this.options.icon),this._updateTooltip())},_updateTooltip:function(){this.title=this.element.attr("title"),this.options.showLabel||this.title||this.element.attr("title",this.options.label)},_updateIcon:function(e,i){var s="iconPosition"!==e,n=s?this.options.iconPosition:i,o="top"===n||"bottom"===n;this.icon?s&&this._removeClass(this.icon,null,this.options.icon):(this.icon=t("<span>"),this._addClass(this.icon,"ui-button-icon","ui-icon"),this.options.showLabel||this._addClass("ui-button-icon-only")),s&&this._addClass(this.icon,null,i),this._attachIcon(n),o?(this._addClass(this.icon,null,"ui-widget-icon-block"),this.iconSpace&&this.iconSpace.remove()):(this.iconSpace||(this.iconSpace=t("<span> </span>"),this._addClass(this.iconSpace,"ui-button-icon-space")),this._removeClass(this.icon,null,"ui-wiget-icon-block"),this._attachIconSpace(n))},_destroy:function(){this.element.removeAttr("role"),this.icon&&this.icon.remove(),this.iconSpace&&this.iconSpace.remove(),this.hasTitle||this.element.removeAttr("title")},_attachIconSpace:function(t){this.icon[/^(?:end|bottom)/.test(t)?"before":"after"](this.iconSpace)},_attachIcon:function(t){this.element[/^(?:end|bottom)/.test(t)?"append":"prepend"](this.icon)},_setOptions:function(t){var e=void 0===t.showLabel?this.options.showLabel:t.showLabel,i=void 0===t.icon?this.options.icon:t.icon;e||i||(t.showLabel=!0),this._super(t)},_setOption:function(t,e){"icon"===t&&(e?this._updateIcon(t,e):this.icon&&(this.icon.remove(),this.iconSpace&&this.iconSpace.remove())),"iconPosition"===t&&this._updateIcon(t,e),"showLabel"===t&&(this._toggleClass("ui-button-icon-only",null,!e),this._updateTooltip()),"label"===t&&(this.isInput?this.element.val(e):(this.element.html(e),this.icon&&(this._attachIcon(this.options.iconPosition),this._attachIconSpace(this.options.iconPosition)))),this._super(t,e),"disabled"===t&&(this._toggleClass(null,"ui-state-disabled",e),this.element[0].disabled=e,e&&this.element.blur())},refresh:function(){var t=this.element.is("input, button")?this.element[0].disabled:this.element.hasClass("ui-button-disabled");t!==this.options.disabled&&this._setOptions({disabled:t}),this._updateTooltip()}}),t.uiBackCompat!==!1&&(t.widget("ui.button",t.ui.button,{options:{text:!0,icons:{primary:null,secondary:null}},_create:function(){this.options.showLabel&&!this.options.text&&(this.options.showLabel=this.options.text),!this.options.showLabel&&this.options.text&&(this.options.text=this.options.showLabel),this.options.icon||!this.options.icons.primary&&!this.options.icons.secondary?this.options.icon&&(this.options.icons.primary=this.options.icon):this.options.icons.primary?this.options.icon=this.options.icons.primary:(this.options.icon=this.options.icons.secondary,this.options.iconPosition="end"),this._super()},_setOption:function(t,e){return"text"===t?(this._super("showLabel",e),void 0):("showLabel"===t&&(this.options.text=e),"icon"===t&&(this.options.icons.primary=e),"icons"===t&&(e.primary?(this._super("icon",e.primary),this._super("iconPosition","beginning")):e.secondary&&(this._super("icon",e.secondary),this._super("iconPosition","end"))),this._superApply(arguments),void 0)}}),t.fn.button=function(e){return function(){return!this.length||this.length&&"INPUT"!==this[0].tagName||this.length&&"INPUT"===this[0].tagName&&"checkbox"!==this.attr("type")&&"radio"!==this.attr("type")?e.apply(this,arguments):(t.ui.checkboxradio||t.error("Checkboxradio widget missing"),0===arguments.length?this.checkboxradio({icon:!1}):this.checkboxradio.apply(this,arguments))}}(t.fn.button),t.fn.buttonset=function(){return t.ui.controlgroup||t.error("Controlgroup widget missing"),"option"===arguments[0]&&"items"===arguments[1]&&arguments[2]?this.controlgroup.apply(this,[arguments[0],"items.button",arguments[2]]):"option"===arguments[0]&&"items"===arguments[1]?this.controlgroup.apply(this,[arguments[0],"items.button"]):("object"==typeof arguments[0]&&arguments[0].items&&(arguments[0].items={button:arguments[0].items}),this.controlgroup.apply(this,arguments))}),t.ui.button,t.extend(t.ui,{datepicker:{version:"1.12.1"}});var p;t.extend(s.prototype,{markerClassName:"hasDatepicker",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(t){return a(this._defaults,t||{}),this},_attachDatepicker:function(e,i){var s,n,o;s=e.nodeName.toLowerCase(),n="div"===s||"span"===s,e.id||(this.uuid+=1,e.id="dp"+this.uuid),o=this._newInst(t(e),n),o.settings=t.extend({},i||{}),"input"===s?this._connectDatepicker(e,o):n&&this._inlineDatepicker(e,o)},_newInst:function(e,i){var s=e[0].id.replace(/([^A-Za-z0-9_\-])/g,"\\\\$1");return{id:s,input:e,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:i,dpDiv:i?n(t("<div class='"+this._inlineClass+" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")):this.dpDiv}},_connectDatepicker:function(e,i){var s=t(e);i.append=t([]),i.trigger=t([]),s.hasClass(this.markerClassName)||(this._attachments(s,i),s.addClass(this.markerClassName).on("keydown",this._doKeyDown).on("keypress",this._doKeyPress).on("keyup",this._doKeyUp),this._autoSize(i),t.data(e,"datepicker",i),i.settings.disabled&&this._disableDatepicker(e))},_attachments:function(e,i){var s,n,o,a=this._get(i,"appendText"),r=this._get(i,"isRTL");i.append&&i.append.remove(),a&&(i.append=t("<span class='"+this._appendClass+"'>"+a+"</span>"),e[r?"before":"after"](i.append)),e.off("focus",this._showDatepicker),i.trigger&&i.trigger.remove(),s=this._get(i,"showOn"),("focus"===s||"both"===s)&&e.on("focus",this._showDatepicker),("button"===s||"both"===s)&&(n=this._get(i,"buttonText"),o=this._get(i,"buttonImage"),i.trigger=t(this._get(i,"buttonImageOnly")?t("<img/>").addClass(this._triggerClass).attr({src:o,alt:n,title:n}):t("<button type='button'></button>").addClass(this._triggerClass).html(o?t("<img/>").attr({src:o,alt:n,title:n}):n)),e[r?"before":"after"](i.trigger),i.trigger.on("click",function(){return t.datepicker._datepickerShowing&&t.datepicker._lastInput===e[0]?t.datepicker._hideDatepicker():t.datepicker._datepickerShowing&&t.datepicker._lastInput!==e[0]?(t.datepicker._hideDatepicker(),t.datepicker._showDatepicker(e[0])):t.datepicker._showDatepicker(e[0]),!1}))},_autoSize:function(t){if(this._get(t,"autoSize")&&!t.inline){var e,i,s,n,o=new Date(2009,11,20),a=this._get(t,"dateFormat");a.match(/[DM]/)&&(e=function(t){for(i=0,s=0,n=0;t.length>n;n++)t[n].length>i&&(i=t[n].length,s=n);return s},o.setMonth(e(this._get(t,a.match(/MM/)?"monthNames":"monthNamesShort"))),o.setDate(e(this._get(t,a.match(/DD/)?"dayNames":"dayNamesShort"))+20-o.getDay())),t.input.attr("size",this._formatDate(t,o).length)}},_inlineDatepicker:function(e,i){var s=t(e);s.hasClass(this.markerClassName)||(s.addClass(this.markerClassName).append(i.dpDiv),t.data(e,"datepicker",i),this._setDate(i,this._getDefaultDate(i),!0),this._updateDatepicker(i),this._updateAlternate(i),i.settings.disabled&&this._disableDatepicker(e),i.dpDiv.css("display","block"))},_dialogDatepicker:function(e,i,s,n,o){var r,h,l,c,u,d=this._dialogInst;return d||(this.uuid+=1,r="dp"+this.uuid,this._dialogInput=t("<input type='text' id='"+r+"' style='position: absolute; top: -100px; width: 0px;'/>"),this._dialogInput.on("keydown",this._doKeyDown),t("body").append(this._dialogInput),d=this._dialogInst=this._newInst(this._dialogInput,!1),d.settings={},t.data(this._dialogInput[0],"datepicker",d)),a(d.settings,n||{}),i=i&&i.constructor===Date?this._formatDate(d,i):i,this._dialogInput.val(i),this._pos=o?o.length?o:[o.pageX,o.pageY]:null,this._pos||(h=document.documentElement.clientWidth,l=document.documentElement.clientHeight,c=document.documentElement.scrollLeft||document.body.scrollLeft,u=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[h/2-100+c,l/2-150+u]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),d.settings.onSelect=s,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),t.blockUI&&t.blockUI(this.dpDiv),t.data(this._dialogInput[0],"datepicker",d),this},_destroyDatepicker:function(e){var i,s=t(e),n=t.data(e,"datepicker");s.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),t.removeData(e,"datepicker"),"input"===i?(n.append.remove(),n.trigger.remove(),s.removeClass(this.markerClassName).off("focus",this._showDatepicker).off("keydown",this._doKeyDown).off("keypress",this._doKeyPress).off("keyup",this._doKeyUp)):("div"===i||"span"===i)&&s.removeClass(this.markerClassName).empty(),p===n&&(p=null))},_enableDatepicker:function(e){var i,s,n=t(e),o=t.data(e,"datepicker");n.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),"input"===i?(e.disabled=!1,o.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().removeClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=t.map(this._disabledInputs,function(t){return t===e?null:t}))},_disableDatepicker:function(e){var i,s,n=t(e),o=t.data(e,"datepicker");n.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),"input"===i?(e.disabled=!0,o.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().addClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=t.map(this._disabledInputs,function(t){return t===e?null:t}),this._disabledInputs[this._disabledInputs.length]=e)},_isDisabledDatepicker:function(t){if(!t)return!1;for(var e=0;this._disabledInputs.length>e;e++)if(this._disabledInputs[e]===t)return!0;return!1},_getInst:function(e){try{return t.data(e,"datepicker")}catch(i){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(e,i,s){var n,o,r,h,l=this._getInst(e);return 2===arguments.length&&"string"==typeof i?"defaults"===i?t.extend({},t.datepicker._defaults):l?"all"===i?t.extend({},l.settings):this._get(l,i):null:(n=i||{},"string"==typeof i&&(n={},n[i]=s),l&&(this._curInst===l&&this._hideDatepicker(),o=this._getDateDatepicker(e,!0),r=this._getMinMaxDate(l,"min"),h=this._getMinMaxDate(l,"max"),a(l.settings,n),null!==r&&void 0!==n.dateFormat&&void 0===n.minDate&&(l.settings.minDate=this._formatDate(l,r)),null!==h&&void 0!==n.dateFormat&&void 0===n.maxDate&&(l.settings.maxDate=this._formatDate(l,h)),"disabled"in n&&(n.disabled?this._disableDatepicker(e):this._enableDatepicker(e)),this._attachments(t(e),l),this._autoSize(l),this._setDate(l,o),this._updateAlternate(l),this._updateDatepicker(l)),void 0)},_changeDatepicker:function(t,e,i){this._optionDatepicker(t,e,i)},_refreshDatepicker:function(t){var e=this._getInst(t);e&&this._updateDatepicker(e)},_setDateDatepicker:function(t,e){var i=this._getInst(t);i&&(this._setDate(i,e),this._updateDatepicker(i),this._updateAlternate(i))},_getDateDatepicker:function(t,e){var i=this._getInst(t);return i&&!i.inline&&this._setDateFromField(i,e),i?this._getDate(i):null},_doKeyDown:function(e){var i,s,n,o=t.datepicker._getInst(e.target),a=!0,r=o.dpDiv.is(".ui-datepicker-rtl");if(o._keyEvent=!0,t.datepicker._datepickerShowing)switch(e.keyCode){case 9:t.datepicker._hideDatepicker(),a=!1;break;case 13:return n=t("td."+t.datepicker._dayOverClass+":not(."+t.datepicker._currentClass+")",o.dpDiv),n[0]&&t.datepicker._selectDay(e.target,o.selectedMonth,o.selectedYear,n[0]),i=t.datepicker._get(o,"onSelect"),i?(s=t.datepicker._formatDate(o),i.apply(o.input?o.input[0]:null,[s,o])):t.datepicker._hideDatepicker(),!1;case 27:t.datepicker._hideDatepicker();break;case 33:t.datepicker._adjustDate(e.target,e.ctrlKey?-t.datepicker._get(o,"stepBigMonths"):-t.datepicker._get(o,"stepMonths"),"M");break;case 34:t.datepicker._adjustDate(e.target,e.ctrlKey?+t.datepicker._get(o,"stepBigMonths"):+t.datepicker._get(o,"stepMonths"),"M");break;case 35:(e.ctrlKey||e.metaKey)&&t.datepicker._clearDate(e.target),a=e.ctrlKey||e.metaKey;break;case 36:(e.ctrlKey||e.metaKey)&&t.datepicker._gotoToday(e.target),a=e.ctrlKey||e.metaKey;break;case 37:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,r?1:-1,"D"),a=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&t.datepicker._adjustDate(e.target,e.ctrlKey?-t.datepicker._get(o,"stepBigMonths"):-t.datepicker._get(o,"stepMonths"),"M");break;case 38:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,-7,"D"),a=e.ctrlKey||e.metaKey;break;case 39:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,r?-1:1,"D"),a=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&t.datepicker._adjustDate(e.target,e.ctrlKey?+t.datepicker._get(o,"stepBigMonths"):+t.datepicker._get(o,"stepMonths"),"M");break;case 40:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,7,"D"),a=e.ctrlKey||e.metaKey;break;default:a=!1}else 36===e.keyCode&&e.ctrlKey?t.datepicker._showDatepicker(this):a=!1;a&&(e.preventDefault(),e.stopPropagation())},_doKeyPress:function(e){var i,s,n=t.datepicker._getInst(e.target);return t.datepicker._get(n,"constrainInput")?(i=t.datepicker._possibleChars(t.datepicker._get(n,"dateFormat")),s=String.fromCharCode(null==e.charCode?e.keyCode:e.charCode),e.ctrlKey||e.metaKey||" ">s||!i||i.indexOf(s)>-1):void 0},_doKeyUp:function(e){var i,s=t.datepicker._getInst(e.target);if(s.input.val()!==s.lastVal)try{i=t.datepicker.parseDate(t.datepicker._get(s,"dateFormat"),s.input?s.input.val():null,t.datepicker._getFormatConfig(s)),i&&(t.datepicker._setDateFromField(s),t.datepicker._updateAlternate(s),t.datepicker._updateDatepicker(s))}catch(n){}return!0},_showDatepicker:function(e){if(e=e.target||e,"input"!==e.nodeName.toLowerCase()&&(e=t("input",e.parentNode)[0]),!t.datepicker._isDisabledDatepicker(e)&&t.datepicker._lastInput!==e){var s,n,o,r,h,l,c;s=t.datepicker._getInst(e),t.datepicker._curInst&&t.datepicker._curInst!==s&&(t.datepicker._curInst.dpDiv.stop(!0,!0),s&&t.datepicker._datepickerShowing&&t.datepicker._hideDatepicker(t.datepicker._curInst.input[0])),n=t.datepicker._get(s,"beforeShow"),o=n?n.apply(e,[e,s]):{},o!==!1&&(a(s.settings,o),s.lastVal=null,t.datepicker._lastInput=e,t.datepicker._setDateFromField(s),t.datepicker._inDialog&&(e.value=""),t.datepicker._pos||(t.datepicker._pos=t.datepicker._findPos(e),t.datepicker._pos[1]+=e.offsetHeight),r=!1,t(e).parents().each(function(){return r|="fixed"===t(this).css("position"),!r}),h={left:t.datepicker._pos[0],top:t.datepicker._pos[1]},t.datepicker._pos=null,s.dpDiv.empty(),s.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),t.datepicker._updateDatepicker(s),h=t.datepicker._checkOffset(s,h,r),s.dpDiv.css({position:t.datepicker._inDialog&&t.blockUI?"static":r?"fixed":"absolute",display:"none",left:h.left+"px",top:h.top+"px"}),s.inline||(l=t.datepicker._get(s,"showAnim"),c=t.datepicker._get(s,"duration"),s.dpDiv.css("z-index",i(t(e))+1),t.datepicker._datepickerShowing=!0,t.effects&&t.effects.effect[l]?s.dpDiv.show(l,t.datepicker._get(s,"showOptions"),c):s.dpDiv[l||"show"](l?c:null),t.datepicker._shouldFocusInput(s)&&s.input.trigger("focus"),t.datepicker._curInst=s))}},_updateDatepicker:function(e){this.maxRows=4,p=e,e.dpDiv.empty().append(this._generateHTML(e)),this._attachHandlers(e);var i,s=this._getNumberOfMonths(e),n=s[1],a=17,r=e.dpDiv.find("."+this._dayOverClass+" a");r.length>0&&o.apply(r.get(0)),e.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),n>1&&e.dpDiv.addClass("ui-datepicker-multi-"+n).css("width",a*n+"em"),e.dpDiv[(1!==s[0]||1!==s[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),e.dpDiv[(this._get(e,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),e===t.datepicker._curInst&&t.datepicker._datepickerShowing&&t.datepicker._shouldFocusInput(e)&&e.input.trigger("focus"),e.yearshtml&&(i=e.yearshtml,setTimeout(function(){i===e.yearshtml&&e.yearshtml&&e.dpDiv.find("select.ui-datepicker-year:first").replaceWith(e.yearshtml),i=e.yearshtml=null},0))},_shouldFocusInput:function(t){return t.input&&t.input.is(":visible")&&!t.input.is(":disabled")&&!t.input.is(":focus")},_checkOffset:function(e,i,s){var n=e.dpDiv.outerWidth(),o=e.dpDiv.outerHeight(),a=e.input?e.input.outerWidth():0,r=e.input?e.input.outerHeight():0,h=document.documentElement.clientWidth+(s?0:t(document).scrollLeft()),l=document.documentElement.clientHeight+(s?0:t(document).scrollTop());return i.left-=this._get(e,"isRTL")?n-a:0,i.left-=s&&i.left===e.input.offset().left?t(document).scrollLeft():0,i.top-=s&&i.top===e.input.offset().top+r?t(document).scrollTop():0,i.left-=Math.min(i.left,i.left+n>h&&h>n?Math.abs(i.left+n-h):0),i.top-=Math.min(i.top,i.top+o>l&&l>o?Math.abs(o+r):0),i},_findPos:function(e){for(var i,s=this._getInst(e),n=this._get(s,"isRTL");e&&("hidden"===e.type||1!==e.nodeType||t.expr.filters.hidden(e));)e=e[n?"previousSibling":"nextSibling"];return i=t(e).offset(),[i.left,i.top]},_hideDatepicker:function(e){var i,s,n,o,a=this._curInst;!a||e&&a!==t.data(e,"datepicker")||this._datepickerShowing&&(i=this._get(a,"showAnim"),s=this._get(a,"duration"),n=function(){t.datepicker._tidyDialog(a)},t.effects&&(t.effects.effect[i]||t.effects[i])?a.dpDiv.hide(i,t.datepicker._get(a,"showOptions"),s,n):a.dpDiv["slideDown"===i?"slideUp":"fadeIn"===i?"fadeOut":"hide"](i?s:null,n),i||n(),this._datepickerShowing=!1,o=this._get(a,"onClose"),o&&o.apply(a.input?a.input[0]:null,[a.input?a.input.val():"",a]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),t.blockUI&&(t.unblockUI(),t("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(t){t.dpDiv.removeClass(this._dialogClass).off(".ui-datepicker-calendar")},_checkExternalClick:function(e){if(t.datepicker._curInst){var i=t(e.target),s=t.datepicker._getInst(i[0]);(i[0].id!==t.datepicker._mainDivId&&0===i.parents("#"+t.datepicker._mainDivId).length&&!i.hasClass(t.datepicker.markerClassName)&&!i.closest("."+t.datepicker._triggerClass).length&&t.datepicker._datepickerShowing&&(!t.datepicker._inDialog||!t.blockUI)||i.hasClass(t.datepicker.markerClassName)&&t.datepicker._curInst!==s)&&t.datepicker._hideDatepicker()}},_adjustDate:function(e,i,s){var n=t(e),o=this._getInst(n[0]);this._isDisabledDatepicker(n[0])||(this._adjustInstDate(o,i+("M"===s?this._get(o,"showCurrentAtPos"):0),s),this._updateDatepicker(o))},_gotoToday:function(e){var i,s=t(e),n=this._getInst(s[0]);this._get(n,"gotoCurrent")&&n.currentDay?(n.selectedDay=n.currentDay,n.drawMonth=n.selectedMonth=n.currentMonth,n.drawYear=n.selectedYear=n.currentYear):(i=new Date,n.selectedDay=i.getDate(),n.drawMonth=n.selectedMonth=i.getMonth(),n.drawYear=n.selectedYear=i.getFullYear()),this._notifyChange(n),this._adjustDate(s)},_selectMonthYear:function(e,i,s){var n=t(e),o=this._getInst(n[0]);o["selected"+("M"===s?"Month":"Year")]=o["draw"+("M"===s?"Month":"Year")]=parseInt(i.options[i.selectedIndex].value,10),this._notifyChange(o),this._adjustDate(n)},_selectDay:function(e,i,s,n){var o,a=t(e);t(n).hasClass(this._unselectableClass)||this._isDisabledDatepicker(a[0])||(o=this._getInst(a[0]),o.selectedDay=o.currentDay=t("a",n).html(),o.selectedMonth=o.currentMonth=i,o.selectedYear=o.currentYear=s,this._selectDate(e,this._formatDate(o,o.currentDay,o.currentMonth,o.currentYear)))},_clearDate:function(e){var i=t(e);this._selectDate(i,"")},_selectDate:function(e,i){var s,n=t(e),o=this._getInst(n[0]);i=null!=i?i:this._formatDate(o),o.input&&o.input.val(i),this._updateAlternate(o),s=this._get(o,"onSelect"),s?s.apply(o.input?o.input[0]:null,[i,o]):o.input&&o.input.trigger("change"),o.inline?this._updateDatepicker(o):(this._hideDatepicker(),this._lastInput=o.input[0],"object"!=typeof o.input[0]&&o.input.trigger("focus"),this._lastInput=null)},_updateAlternate:function(e){var i,s,n,o=this._get(e,"altField");o&&(i=this._get(e,"altFormat")||this._get(e,"dateFormat"),s=this._getDate(e),n=this.formatDate(i,s,this._getFormatConfig(e)),t(o).val(n))},noWeekends:function(t){var e=t.getDay();return[e>0&&6>e,""]},iso8601Week:function(t){var e,i=new Date(t.getTime());return i.setDate(i.getDate()+4-(i.getDay()||7)),e=i.getTime(),i.setMonth(0),i.setDate(1),Math.floor(Math.round((e-i)/864e5)/7)+1},parseDate:function(e,i,s){if(null==e||null==i)throw"Invalid arguments";if(i="object"==typeof i?""+i:i+"",""===i)return null;var n,o,a,r,h=0,l=(s?s.shortYearCutoff:null)||this._defaults.shortYearCutoff,c="string"!=typeof l?l:(new Date).getFullYear()%100+parseInt(l,10),u=(s?s.dayNamesShort:null)||this._defaults.dayNamesShort,d=(s?s.dayNames:null)||this._defaults.dayNames,p=(s?s.monthNamesShort:null)||this._defaults.monthNamesShort,f=(s?s.monthNames:null)||this._defaults.monthNames,g=-1,m=-1,_=-1,v=-1,b=!1,y=function(t){var i=e.length>n+1&&e.charAt(n+1)===t;return i&&n++,i},w=function(t){var e=y(t),s="@"===t?14:"!"===t?20:"y"===t&&e?4:"o"===t?3:2,n="y"===t?s:1,o=RegExp("^\\d{"+n+","+s+"}"),a=i.substring(h).match(o);if(!a)throw"Missing number at position "+h;return h+=a[0].length,parseInt(a[0],10)},k=function(e,s,n){var o=-1,a=t.map(y(e)?n:s,function(t,e){return[[e,t]]}).sort(function(t,e){return-(t[1].length-e[1].length)});if(t.each(a,function(t,e){var s=e[1];return i.substr(h,s.length).toLowerCase()===s.toLowerCase()?(o=e[0],h+=s.length,!1):void 0}),-1!==o)return o+1;throw"Unknown name at position "+h},x=function(){if(i.charAt(h)!==e.charAt(n))throw"Unexpected literal at position "+h;h++};for(n=0;e.length>n;n++)if(b)"'"!==e.charAt(n)||y("'")?x():b=!1;else switch(e.charAt(n)){case"d":_=w("d");break;case"D":k("D",u,d);break;case"o":v=w("o");break;case"m":m=w("m");break;case"M":m=k("M",p,f);break;case"y":g=w("y");break;case"@":r=new Date(w("@")),g=r.getFullYear(),m=r.getMonth()+1,_=r.getDate();break;case"!":r=new Date((w("!")-this._ticksTo1970)/1e4),g=r.getFullYear(),m=r.getMonth()+1,_=r.getDate();break;case"'":y("'")?x():b=!0;break;default:x()}if(i.length>h&&(a=i.substr(h),!/^\s+/.test(a)))throw"Extra/unparsed characters found in date: "+a;if(-1===g?g=(new Date).getFullYear():100>g&&(g+=(new Date).getFullYear()-(new Date).getFullYear()%100+(c>=g?0:-100)),v>-1)for(m=1,_=v;;){if(o=this._getDaysInMonth(g,m-1),o>=_)break;m++,_-=o}if(r=this._daylightSavingAdjust(new Date(g,m-1,_)),r.getFullYear()!==g||r.getMonth()+1!==m||r.getDate()!==_)throw"Invalid date";return r},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:1e7*60*60*24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925)),formatDate:function(t,e,i){if(!e)return"";var s,n=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,o=(i?i.dayNames:null)||this._defaults.dayNames,a=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,r=(i?i.monthNames:null)||this._defaults.monthNames,h=function(e){var i=t.length>s+1&&t.charAt(s+1)===e;return i&&s++,i},l=function(t,e,i){var s=""+e;if(h(t))for(;i>s.length;)s="0"+s;return s},c=function(t,e,i,s){return h(t)?s[e]:i[e]},u="",d=!1;if(e)for(s=0;t.length>s;s++)if(d)"'"!==t.charAt(s)||h("'")?u+=t.charAt(s):d=!1;else switch(t.charAt(s)){case"d":u+=l("d",e.getDate(),2);break;case"D":u+=c("D",e.getDay(),n,o);break;case"o":u+=l("o",Math.round((new Date(e.getFullYear(),e.getMonth(),e.getDate()).getTime()-new Date(e.getFullYear(),0,0).getTime())/864e5),3);break;case"m":u+=l("m",e.getMonth()+1,2);break;case"M":u+=c("M",e.getMonth(),a,r);break;case"y":u+=h("y")?e.getFullYear():(10>e.getFullYear()%100?"0":"")+e.getFullYear()%100;break;case"@":u+=e.getTime();break;case"!":u+=1e4*e.getTime()+this._ticksTo1970;break;case"'":h("'")?u+="'":d=!0;break;default:u+=t.charAt(s)}return u},_possibleChars:function(t){var e,i="",s=!1,n=function(i){var s=t.length>e+1&&t.charAt(e+1)===i;return s&&e++,s};for(e=0;t.length>e;e++)if(s)"'"!==t.charAt(e)||n("'")?i+=t.charAt(e):s=!1;else switch(t.charAt(e)){case"d":case"m":case"y":case"@":i+="0123456789";break;case"D":case"M":return null;case"'":n("'")?i+="'":s=!0;break;default:i+=t.charAt(e)}return i},_get:function(t,e){return void 0!==t.settings[e]?t.settings[e]:this._defaults[e]},_setDateFromField:function(t,e){if(t.input.val()!==t.lastVal){var i=this._get(t,"dateFormat"),s=t.lastVal=t.input?t.input.val():null,n=this._getDefaultDate(t),o=n,a=this._getFormatConfig(t);try{o=this.parseDate(i,s,a)||n}catch(r){s=e?"":s}t.selectedDay=o.getDate(),t.drawMonth=t.selectedMonth=o.getMonth(),t.drawYear=t.selectedYear=o.getFullYear(),t.currentDay=s?o.getDate():0,t.currentMonth=s?o.getMonth():0,t.currentYear=s?o.getFullYear():0,this._adjustInstDate(t)}},_getDefaultDate:function(t){return this._restrictMinMax(t,this._determineDate(t,this._get(t,"defaultDate"),new Date))},_determineDate:function(e,i,s){var n=function(t){var e=new Date;return e.setDate(e.getDate()+t),e},o=function(i){try{return t.datepicker.parseDate(t.datepicker._get(e,"dateFormat"),i,t.datepicker._getFormatConfig(e))}catch(s){}for(var n=(i.toLowerCase().match(/^c/)?t.datepicker._getDate(e):null)||new Date,o=n.getFullYear(),a=n.getMonth(),r=n.getDate(),h=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,l=h.exec(i);l;){switch(l[2]||"d"){case"d":case"D":r+=parseInt(l[1],10);break;case"w":case"W":r+=7*parseInt(l[1],10);break;case"m":case"M":a+=parseInt(l[1],10),r=Math.min(r,t.datepicker._getDaysInMonth(o,a));break;case"y":case"Y":o+=parseInt(l[1],10),r=Math.min(r,t.datepicker._getDaysInMonth(o,a))}l=h.exec(i)}return new Date(o,a,r)},a=null==i||""===i?s:"string"==typeof i?o(i):"number"==typeof i?isNaN(i)?s:n(i):new Date(i.getTime());return a=a&&"Invalid Date"==""+a?s:a,a&&(a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0)),this._daylightSavingAdjust(a)},_daylightSavingAdjust:function(t){return t?(t.setHours(t.getHours()>12?t.getHours()+2:0),t):null},_setDate:function(t,e,i){var s=!e,n=t.selectedMonth,o=t.selectedYear,a=this._restrictMinMax(t,this._determineDate(t,e,new Date));t.selectedDay=t.currentDay=a.getDate(),t.drawMonth=t.selectedMonth=t.currentMonth=a.getMonth(),t.drawYear=t.selectedYear=t.currentYear=a.getFullYear(),n===t.selectedMonth&&o===t.selectedYear||i||this._notifyChange(t),this._adjustInstDate(t),t.input&&t.input.val(s?"":this._formatDate(t))},_getDate:function(t){var e=!t.currentYear||t.input&&""===t.input.val()?null:this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return e},_attachHandlers:function(e){var i=this._get(e,"stepMonths"),s="#"+e.id.replace(/\\\\/g,"\\");e.dpDiv.find("[data-handler]").map(function(){var e={prev:function(){t.datepicker._adjustDate(s,-i,"M")},next:function(){t.datepicker._adjustDate(s,+i,"M")},hide:function(){t.datepicker._hideDatepicker()},today:function(){t.datepicker._gotoToday(s)},selectDay:function(){return t.datepicker._selectDay(s,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return t.datepicker._selectMonthYear(s,this,"M"),!1},selectYear:function(){return t.datepicker._selectMonthYear(s,this,"Y"),!1}};t(this).on(this.getAttribute("data-event"),e[this.getAttribute("data-handler")])})},_generateHTML:function(t){var e,i,s,n,o,a,r,h,l,c,u,d,p,f,g,m,_,v,b,y,w,k,x,C,D,I,T,P,M,S,H,z,O,A,N,W,E,F,L,R=new Date,B=this._daylightSavingAdjust(new Date(R.getFullYear(),R.getMonth(),R.getDate())),Y=this._get(t,"isRTL"),j=this._get(t,"showButtonPanel"),q=this._get(t,"hideIfNoPrevNext"),K=this._get(t,"navigationAsDateFormat"),U=this._getNumberOfMonths(t),V=this._get(t,"showCurrentAtPos"),$=this._get(t,"stepMonths"),X=1!==U[0]||1!==U[1],G=this._daylightSavingAdjust(t.currentDay?new Date(t.currentYear,t.currentMonth,t.currentDay):new Date(9999,9,9)),Q=this._getMinMaxDate(t,"min"),J=this._getMinMaxDate(t,"max"),Z=t.drawMonth-V,te=t.drawYear;if(0>Z&&(Z+=12,te--),J)for(e=this._daylightSavingAdjust(new Date(J.getFullYear(),J.getMonth()-U[0]*U[1]+1,J.getDate())),e=Q&&Q>e?Q:e;this._daylightSavingAdjust(new Date(te,Z,1))>e;)Z--,0>Z&&(Z=11,te--);for(t.drawMonth=Z,t.drawYear=te,i=this._get(t,"prevText"),i=K?this.formatDate(i,this._daylightSavingAdjust(new Date(te,Z-$,1)),this._getFormatConfig(t)):i,s=this._canAdjustMonth(t,-1,te,Z)?"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>":q?"":"<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>",n=this._get(t,"nextText"),n=K?this.formatDate(n,this._daylightSavingAdjust(new Date(te,Z+$,1)),this._getFormatConfig(t)):n,o=this._canAdjustMonth(t,1,te,Z)?"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+n+"</span></a>":q?"":"<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+n+"</span></a>",a=this._get(t,"currentText"),r=this._get(t,"gotoCurrent")&&t.currentDay?G:B,a=K?this.formatDate(a,r,this._getFormatConfig(t)):a,h=t.inline?"":"<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>"+this._get(t,"closeText")+"</button>",l=j?"<div class='ui-datepicker-buttonpane ui-widget-content'>"+(Y?h:"")+(this._isInRange(t,r)?"<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'>"+a+"</button>":"")+(Y?"":h)+"</div>":"",c=parseInt(this._get(t,"firstDay"),10),c=isNaN(c)?0:c,u=this._get(t,"showWeek"),d=this._get(t,"dayNames"),p=this._get(t,"dayNamesMin"),f=this._get(t,"monthNames"),g=this._get(t,"monthNamesShort"),m=this._get(t,"beforeShowDay"),_=this._get(t,"showOtherMonths"),v=this._get(t,"selectOtherMonths"),b=this._getDefaultDate(t),y="",k=0;U[0]>k;k++){for(x="",this.maxRows=4,C=0;U[1]>C;C++){if(D=this._daylightSavingAdjust(new Date(te,Z,t.selectedDay)),I=" ui-corner-all",T="",X){if(T+="<div class='ui-datepicker-group",U[1]>1)switch(C){case 0:T+=" ui-datepicker-group-first",I=" ui-corner-"+(Y?"right":"left");
|
11 |
+
break;case U[1]-1:T+=" ui-datepicker-group-last",I=" ui-corner-"+(Y?"left":"right");break;default:T+=" ui-datepicker-group-middle",I=""}T+="'>"}for(T+="<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix"+I+"'>"+(/all|left/.test(I)&&0===k?Y?o:s:"")+(/all|right/.test(I)&&0===k?Y?s:o:"")+this._generateMonthYearHeader(t,Z,te,Q,J,k>0||C>0,f,g)+"</div><table class='ui-datepicker-calendar'><thead>"+"<tr>",P=u?"<th class='ui-datepicker-week-col'>"+this._get(t,"weekHeader")+"</th>":"",w=0;7>w;w++)M=(w+c)%7,P+="<th scope='col'"+((w+c+6)%7>=5?" class='ui-datepicker-week-end'":"")+">"+"<span title='"+d[M]+"'>"+p[M]+"</span></th>";for(T+=P+"</tr></thead><tbody>",S=this._getDaysInMonth(te,Z),te===t.selectedYear&&Z===t.selectedMonth&&(t.selectedDay=Math.min(t.selectedDay,S)),H=(this._getFirstDayOfMonth(te,Z)-c+7)%7,z=Math.ceil((H+S)/7),O=X?this.maxRows>z?this.maxRows:z:z,this.maxRows=O,A=this._daylightSavingAdjust(new Date(te,Z,1-H)),N=0;O>N;N++){for(T+="<tr>",W=u?"<td class='ui-datepicker-week-col'>"+this._get(t,"calculateWeek")(A)+"</td>":"",w=0;7>w;w++)E=m?m.apply(t.input?t.input[0]:null,[A]):[!0,""],F=A.getMonth()!==Z,L=F&&!v||!E[0]||Q&&Q>A||J&&A>J,W+="<td class='"+((w+c+6)%7>=5?" ui-datepicker-week-end":"")+(F?" ui-datepicker-other-month":"")+(A.getTime()===D.getTime()&&Z===t.selectedMonth&&t._keyEvent||b.getTime()===A.getTime()&&b.getTime()===D.getTime()?" "+this._dayOverClass:"")+(L?" "+this._unselectableClass+" ui-state-disabled":"")+(F&&!_?"":" "+E[1]+(A.getTime()===G.getTime()?" "+this._currentClass:"")+(A.getTime()===B.getTime()?" ui-datepicker-today":""))+"'"+(F&&!_||!E[2]?"":" title='"+E[2].replace(/'/g,"'")+"'")+(L?"":" data-handler='selectDay' data-event='click' data-month='"+A.getMonth()+"' data-year='"+A.getFullYear()+"'")+">"+(F&&!_?" ":L?"<span class='ui-state-default'>"+A.getDate()+"</span>":"<a class='ui-state-default"+(A.getTime()===B.getTime()?" ui-state-highlight":"")+(A.getTime()===G.getTime()?" ui-state-active":"")+(F?" ui-priority-secondary":"")+"' href='#'>"+A.getDate()+"</a>")+"</td>",A.setDate(A.getDate()+1),A=this._daylightSavingAdjust(A);T+=W+"</tr>"}Z++,Z>11&&(Z=0,te++),T+="</tbody></table>"+(X?"</div>"+(U[0]>0&&C===U[1]-1?"<div class='ui-datepicker-row-break'></div>":""):""),x+=T}y+=x}return y+=l,t._keyEvent=!1,y},_generateMonthYearHeader:function(t,e,i,s,n,o,a,r){var h,l,c,u,d,p,f,g,m=this._get(t,"changeMonth"),_=this._get(t,"changeYear"),v=this._get(t,"showMonthAfterYear"),b="<div class='ui-datepicker-title'>",y="";if(o||!m)y+="<span class='ui-datepicker-month'>"+a[e]+"</span>";else{for(h=s&&s.getFullYear()===i,l=n&&n.getFullYear()===i,y+="<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>",c=0;12>c;c++)(!h||c>=s.getMonth())&&(!l||n.getMonth()>=c)&&(y+="<option value='"+c+"'"+(c===e?" selected='selected'":"")+">"+r[c]+"</option>");y+="</select>"}if(v||(b+=y+(!o&&m&&_?"":" ")),!t.yearshtml)if(t.yearshtml="",o||!_)b+="<span class='ui-datepicker-year'>"+i+"</span>";else{for(u=this._get(t,"yearRange").split(":"),d=(new Date).getFullYear(),p=function(t){var e=t.match(/c[+\-].*/)?i+parseInt(t.substring(1),10):t.match(/[+\-].*/)?d+parseInt(t,10):parseInt(t,10);return isNaN(e)?d:e},f=p(u[0]),g=Math.max(f,p(u[1]||"")),f=s?Math.max(f,s.getFullYear()):f,g=n?Math.min(g,n.getFullYear()):g,t.yearshtml+="<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";g>=f;f++)t.yearshtml+="<option value='"+f+"'"+(f===i?" selected='selected'":"")+">"+f+"</option>";t.yearshtml+="</select>",b+=t.yearshtml,t.yearshtml=null}return b+=this._get(t,"yearSuffix"),v&&(b+=(!o&&m&&_?"":" ")+y),b+="</div>"},_adjustInstDate:function(t,e,i){var s=t.selectedYear+("Y"===i?e:0),n=t.selectedMonth+("M"===i?e:0),o=Math.min(t.selectedDay,this._getDaysInMonth(s,n))+("D"===i?e:0),a=this._restrictMinMax(t,this._daylightSavingAdjust(new Date(s,n,o)));t.selectedDay=a.getDate(),t.drawMonth=t.selectedMonth=a.getMonth(),t.drawYear=t.selectedYear=a.getFullYear(),("M"===i||"Y"===i)&&this._notifyChange(t)},_restrictMinMax:function(t,e){var i=this._getMinMaxDate(t,"min"),s=this._getMinMaxDate(t,"max"),n=i&&i>e?i:e;return s&&n>s?s:n},_notifyChange:function(t){var e=this._get(t,"onChangeMonthYear");e&&e.apply(t.input?t.input[0]:null,[t.selectedYear,t.selectedMonth+1,t])},_getNumberOfMonths:function(t){var e=this._get(t,"numberOfMonths");return null==e?[1,1]:"number"==typeof e?[1,e]:e},_getMinMaxDate:function(t,e){return this._determineDate(t,this._get(t,e+"Date"),null)},_getDaysInMonth:function(t,e){return 32-this._daylightSavingAdjust(new Date(t,e,32)).getDate()},_getFirstDayOfMonth:function(t,e){return new Date(t,e,1).getDay()},_canAdjustMonth:function(t,e,i,s){var n=this._getNumberOfMonths(t),o=this._daylightSavingAdjust(new Date(i,s+(0>e?e:n[0]*n[1]),1));return 0>e&&o.setDate(this._getDaysInMonth(o.getFullYear(),o.getMonth())),this._isInRange(t,o)},_isInRange:function(t,e){var i,s,n=this._getMinMaxDate(t,"min"),o=this._getMinMaxDate(t,"max"),a=null,r=null,h=this._get(t,"yearRange");return h&&(i=h.split(":"),s=(new Date).getFullYear(),a=parseInt(i[0],10),r=parseInt(i[1],10),i[0].match(/[+\-].*/)&&(a+=s),i[1].match(/[+\-].*/)&&(r+=s)),(!n||e.getTime()>=n.getTime())&&(!o||e.getTime()<=o.getTime())&&(!a||e.getFullYear()>=a)&&(!r||r>=e.getFullYear())},_getFormatConfig:function(t){var e=this._get(t,"shortYearCutoff");return e="string"!=typeof e?e:(new Date).getFullYear()%100+parseInt(e,10),{shortYearCutoff:e,dayNamesShort:this._get(t,"dayNamesShort"),dayNames:this._get(t,"dayNames"),monthNamesShort:this._get(t,"monthNamesShort"),monthNames:this._get(t,"monthNames")}},_formatDate:function(t,e,i,s){e||(t.currentDay=t.selectedDay,t.currentMonth=t.selectedMonth,t.currentYear=t.selectedYear);var n=e?"object"==typeof e?e:this._daylightSavingAdjust(new Date(s,i,e)):this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return this.formatDate(this._get(t,"dateFormat"),n,this._getFormatConfig(t))}}),t.fn.datepicker=function(e){if(!this.length)return this;t.datepicker.initialized||(t(document).on("mousedown",t.datepicker._checkExternalClick),t.datepicker.initialized=!0),0===t("#"+t.datepicker._mainDivId).length&&t("body").append(t.datepicker.dpDiv);var i=Array.prototype.slice.call(arguments,1);return"string"!=typeof e||"isDisabled"!==e&&"getDate"!==e&&"widget"!==e?"option"===e&&2===arguments.length&&"string"==typeof arguments[1]?t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this[0]].concat(i)):this.each(function(){"string"==typeof e?t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this].concat(i)):t.datepicker._attachDatepicker(this,e)}):t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this[0]].concat(i))},t.datepicker=new s,t.datepicker.initialized=!1,t.datepicker.uuid=(new Date).getTime(),t.datepicker.version="1.12.1",t.datepicker,t.widget("ui.dialog",{version:"1.12.1",options:{appendTo:"body",autoOpen:!0,buttons:[],classes:{"ui-dialog":"ui-corner-all","ui-dialog-titlebar":"ui-corner-all"},closeOnEscape:!0,closeText:"Close",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(e){var i=t(this).css(e).offset().top;0>i&&t(this).css("top",e.top-i)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},sizeRelatedOptions:{buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},resizableRelatedOptions:{maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),null==this.options.title&&null!=this.originalTitle&&(this.options.title=this.originalTitle),this.options.disabled&&(this.options.disabled=!1),this._createWrapper(),this.element.show().removeAttr("title").appendTo(this.uiDialog),this._addClass("ui-dialog-content","ui-widget-content"),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&t.fn.draggable&&this._makeDraggable(),this.options.resizable&&t.fn.resizable&&this._makeResizable(),this._isOpen=!1,this._trackFocus()},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var e=this.options.appendTo;return e&&(e.jquery||e.nodeType)?t(e):this.document.find(e||"body").eq(0)},_destroy:function(){var t,e=this.originalPosition;this._untrackInstance(),this._destroyOverlay(),this.element.removeUniqueId().css(this.originalCss).detach(),this.uiDialog.remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),t=e.parent.children().eq(e.index),t.length&&t[0]!==this.element[0]?t.before(this.element):e.parent.append(this.element)},widget:function(){return this.uiDialog},disable:t.noop,enable:t.noop,close:function(e){var i=this;this._isOpen&&this._trigger("beforeClose",e)!==!1&&(this._isOpen=!1,this._focusedElement=null,this._destroyOverlay(),this._untrackInstance(),this.opener.filter(":focusable").trigger("focus").length||t.ui.safeBlur(t.ui.safeActiveElement(this.document[0])),this._hide(this.uiDialog,this.options.hide,function(){i._trigger("close",e)}))},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(e,i){var s=!1,n=this.uiDialog.siblings(".ui-front:visible").map(function(){return+t(this).css("z-index")}).get(),o=Math.max.apply(null,n);return o>=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",o+1),s=!0),s&&!i&&this._trigger("focus",e),s},open:function(){var e=this;return this._isOpen?(this._moveToTop()&&this._focusTabbable(),void 0):(this._isOpen=!0,this.opener=t(t.ui.safeActiveElement(this.document[0])),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,function(){e._focusTabbable(),e._trigger("focus")}),this._makeFocusTarget(),this._trigger("open"),void 0)},_focusTabbable:function(){var t=this._focusedElement;t||(t=this.element.find("[autofocus]")),t.length||(t=this.element.find(":tabbable")),t.length||(t=this.uiDialogButtonPane.find(":tabbable")),t.length||(t=this.uiDialogTitlebarClose.filter(":tabbable")),t.length||(t=this.uiDialog),t.eq(0).trigger("focus")},_keepFocus:function(e){function i(){var e=t.ui.safeActiveElement(this.document[0]),i=this.uiDialog[0]===e||t.contains(this.uiDialog[0],e);i||this._focusTabbable()}e.preventDefault(),i.call(this),this._delay(i)},_createWrapper:function(){this.uiDialog=t("<div>").hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._addClass(this.uiDialog,"ui-dialog","ui-widget ui-widget-content ui-front"),this._on(this.uiDialog,{keydown:function(e){if(this.options.closeOnEscape&&!e.isDefaultPrevented()&&e.keyCode&&e.keyCode===t.ui.keyCode.ESCAPE)return e.preventDefault(),this.close(e),void 0;if(e.keyCode===t.ui.keyCode.TAB&&!e.isDefaultPrevented()){var i=this.uiDialog.find(":tabbable"),s=i.filter(":first"),n=i.filter(":last");e.target!==n[0]&&e.target!==this.uiDialog[0]||e.shiftKey?e.target!==s[0]&&e.target!==this.uiDialog[0]||!e.shiftKey||(this._delay(function(){n.trigger("focus")}),e.preventDefault()):(this._delay(function(){s.trigger("focus")}),e.preventDefault())}},mousedown:function(t){this._moveToTop(t)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var e;this.uiDialogTitlebar=t("<div>"),this._addClass(this.uiDialogTitlebar,"ui-dialog-titlebar","ui-widget-header ui-helper-clearfix"),this._on(this.uiDialogTitlebar,{mousedown:function(e){t(e.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.trigger("focus")}}),this.uiDialogTitlebarClose=t("<button type='button'></button>").button({label:t("<a>").text(this.options.closeText).html(),icon:"ui-icon-closethick",showLabel:!1}).appendTo(this.uiDialogTitlebar),this._addClass(this.uiDialogTitlebarClose,"ui-dialog-titlebar-close"),this._on(this.uiDialogTitlebarClose,{click:function(t){t.preventDefault(),this.close(t)}}),e=t("<span>").uniqueId().prependTo(this.uiDialogTitlebar),this._addClass(e,"ui-dialog-title"),this._title(e),this.uiDialogTitlebar.prependTo(this.uiDialog),this.uiDialog.attr({"aria-labelledby":e.attr("id")})},_title:function(t){this.options.title?t.text(this.options.title):t.html(" ")},_createButtonPane:function(){this.uiDialogButtonPane=t("<div>"),this._addClass(this.uiDialogButtonPane,"ui-dialog-buttonpane","ui-widget-content ui-helper-clearfix"),this.uiButtonSet=t("<div>").appendTo(this.uiDialogButtonPane),this._addClass(this.uiButtonSet,"ui-dialog-buttonset"),this._createButtons()},_createButtons:function(){var e=this,i=this.options.buttons;return this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),t.isEmptyObject(i)||t.isArray(i)&&!i.length?(this._removeClass(this.uiDialog,"ui-dialog-buttons"),void 0):(t.each(i,function(i,s){var n,o;s=t.isFunction(s)?{click:s,text:i}:s,s=t.extend({type:"button"},s),n=s.click,o={icon:s.icon,iconPosition:s.iconPosition,showLabel:s.showLabel,icons:s.icons,text:s.text},delete s.click,delete s.icon,delete s.iconPosition,delete s.showLabel,delete s.icons,"boolean"==typeof s.text&&delete s.text,t("<button></button>",s).button(o).appendTo(e.uiButtonSet).on("click",function(){n.apply(e.element[0],arguments)})}),this._addClass(this.uiDialog,"ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog),void 0)},_makeDraggable:function(){function e(t){return{position:t.position,offset:t.offset}}var i=this,s=this.options;this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(s,n){i._addClass(t(this),"ui-dialog-dragging"),i._blockFrames(),i._trigger("dragStart",s,e(n))},drag:function(t,s){i._trigger("drag",t,e(s))},stop:function(n,o){var a=o.offset.left-i.document.scrollLeft(),r=o.offset.top-i.document.scrollTop();s.position={my:"left top",at:"left"+(a>=0?"+":"")+a+" "+"top"+(r>=0?"+":"")+r,of:i.window},i._removeClass(t(this),"ui-dialog-dragging"),i._unblockFrames(),i._trigger("dragStop",n,e(o))}})},_makeResizable:function(){function e(t){return{originalPosition:t.originalPosition,originalSize:t.originalSize,position:t.position,size:t.size}}var i=this,s=this.options,n=s.resizable,o=this.uiDialog.css("position"),a="string"==typeof n?n:"n,e,s,w,se,sw,ne,nw";this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:s.maxWidth,maxHeight:s.maxHeight,minWidth:s.minWidth,minHeight:this._minHeight(),handles:a,start:function(s,n){i._addClass(t(this),"ui-dialog-resizing"),i._blockFrames(),i._trigger("resizeStart",s,e(n))},resize:function(t,s){i._trigger("resize",t,e(s))},stop:function(n,o){var a=i.uiDialog.offset(),r=a.left-i.document.scrollLeft(),h=a.top-i.document.scrollTop();s.height=i.uiDialog.height(),s.width=i.uiDialog.width(),s.position={my:"left top",at:"left"+(r>=0?"+":"")+r+" "+"top"+(h>=0?"+":"")+h,of:i.window},i._removeClass(t(this),"ui-dialog-resizing"),i._unblockFrames(),i._trigger("resizeStop",n,e(o))}}).css("position",o)},_trackFocus:function(){this._on(this.widget(),{focusin:function(e){this._makeFocusTarget(),this._focusedElement=t(e.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var e=this._trackingInstances(),i=t.inArray(this,e);-1!==i&&e.splice(i,1)},_trackingInstances:function(){var t=this.document.data("ui-dialog-instances");return t||(t=[],this.document.data("ui-dialog-instances",t)),t},_minHeight:function(){var t=this.options;return"auto"===t.height?t.minHeight:Math.min(t.minHeight,t.height)},_position:function(){var t=this.uiDialog.is(":visible");t||this.uiDialog.show(),this.uiDialog.position(this.options.position),t||this.uiDialog.hide()},_setOptions:function(e){var i=this,s=!1,n={};t.each(e,function(t,e){i._setOption(t,e),t in i.sizeRelatedOptions&&(s=!0),t in i.resizableRelatedOptions&&(n[t]=e)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",n)},_setOption:function(e,i){var s,n,o=this.uiDialog;"disabled"!==e&&(this._super(e,i),"appendTo"===e&&this.uiDialog.appendTo(this._appendTo()),"buttons"===e&&this._createButtons(),"closeText"===e&&this.uiDialogTitlebarClose.button({label:t("<a>").text(""+this.options.closeText).html()}),"draggable"===e&&(s=o.is(":data(ui-draggable)"),s&&!i&&o.draggable("destroy"),!s&&i&&this._makeDraggable()),"position"===e&&this._position(),"resizable"===e&&(n=o.is(":data(ui-resizable)"),n&&!i&&o.resizable("destroy"),n&&"string"==typeof i&&o.resizable("option","handles",i),n||i===!1||this._makeResizable()),"title"===e&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var t,e,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),t=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),e=Math.max(0,s.minHeight-t),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-t):"none","auto"===s.height?this.element.css({minHeight:e,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.height-t)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var e=t(this);return t("<div>").css({position:"absolute",width:e.outerWidth(),height:e.outerHeight()}).appendTo(e.parent()).offset(e.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(e){return t(e.target).closest(".ui-dialog").length?!0:!!t(e.target).closest(".ui-datepicker").length},_createOverlay:function(){if(this.options.modal){var e=!0;this._delay(function(){e=!1}),this.document.data("ui-dialog-overlays")||this._on(this.document,{focusin:function(t){e||this._allowInteraction(t)||(t.preventDefault(),this._trackingInstances()[0]._focusTabbable())}}),this.overlay=t("<div>").appendTo(this._appendTo()),this._addClass(this.overlay,null,"ui-widget-overlay ui-front"),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1)}},_destroyOverlay:function(){if(this.options.modal&&this.overlay){var t=this.document.data("ui-dialog-overlays")-1;t?this.document.data("ui-dialog-overlays",t):(this._off(this.document,"focusin"),this.document.removeData("ui-dialog-overlays")),this.overlay.remove(),this.overlay=null}}}),t.uiBackCompat!==!1&&t.widget("ui.dialog",t.ui.dialog,{options:{dialogClass:""},_createWrapper:function(){this._super(),this.uiDialog.addClass(this.options.dialogClass)},_setOption:function(t,e){"dialogClass"===t&&this.uiDialog.removeClass(this.options.dialogClass).addClass(e),this._superApply(arguments)}}),t.ui.dialog,t.widget("ui.progressbar",{version:"1.12.1",options:{classes:{"ui-progressbar":"ui-corner-all","ui-progressbar-value":"ui-corner-left","ui-progressbar-complete":"ui-corner-right"},max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.attr({role:"progressbar","aria-valuemin":this.min}),this._addClass("ui-progressbar","ui-widget ui-widget-content"),this.valueDiv=t("<div>").appendTo(this.element),this._addClass(this.valueDiv,"ui-progressbar-value","ui-widget-header"),this._refreshValue()},_destroy:function(){this.element.removeAttr("role aria-valuemin aria-valuemax aria-valuenow"),this.valueDiv.remove()},value:function(t){return void 0===t?this.options.value:(this.options.value=this._constrainedValue(t),this._refreshValue(),void 0)},_constrainedValue:function(t){return void 0===t&&(t=this.options.value),this.indeterminate=t===!1,"number"!=typeof t&&(t=0),this.indeterminate?!1:Math.min(this.options.max,Math.max(this.min,t))},_setOptions:function(t){var e=t.value;delete t.value,this._super(t),this.options.value=this._constrainedValue(e),this._refreshValue()},_setOption:function(t,e){"max"===t&&(e=Math.max(this.min,e)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var e=this.options.value,i=this._percentage();this.valueDiv.toggle(this.indeterminate||e>this.min).width(i.toFixed(0)+"%"),this._toggleClass(this.valueDiv,"ui-progressbar-complete",null,e===this.options.max)._toggleClass("ui-progressbar-indeterminate",null,this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=t("<div>").appendTo(this.valueDiv),this._addClass(this.overlayDiv,"ui-progressbar-overlay"))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":e}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==e&&(this.oldValue=e,this._trigger("change")),e===this.options.max&&this._trigger("complete")}}),t.widget("ui.selectmenu",[t.ui.formResetMixin,{version:"1.12.1",defaultElement:"<select>",options:{appendTo:null,classes:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"},disabled:null,icons:{button:"ui-icon-triangle-1-s"},position:{my:"left top",at:"left bottom",collision:"none"},width:!1,change:null,close:null,focus:null,open:null,select:null},_create:function(){var e=this.element.uniqueId().attr("id");this.ids={element:e,button:e+"-button",menu:e+"-menu"},this._drawButton(),this._drawMenu(),this._bindFormResetHandler(),this._rendered=!1,this.menuItems=t()},_drawButton:function(){var e,i=this,s=this._parseOption(this.element.find("option:selected"),this.element[0].selectedIndex);this.labels=this.element.labels().attr("for",this.ids.button),this._on(this.labels,{click:function(t){this.button.focus(),t.preventDefault()}}),this.element.hide(),this.button=t("<span>",{tabindex:this.options.disabled?-1:0,id:this.ids.button,role:"combobox","aria-expanded":"false","aria-autocomplete":"list","aria-owns":this.ids.menu,"aria-haspopup":"true",title:this.element.attr("title")}).insertAfter(this.element),this._addClass(this.button,"ui-selectmenu-button ui-selectmenu-button-closed","ui-button ui-widget"),e=t("<span>").appendTo(this.button),this._addClass(e,"ui-selectmenu-icon","ui-icon "+this.options.icons.button),this.buttonItem=this._renderButtonItem(s).appendTo(this.button),this.options.width!==!1&&this._resizeButton(),this._on(this.button,this._buttonEvents),this.button.one("focusin",function(){i._rendered||i._refreshMenu()})},_drawMenu:function(){var e=this;this.menu=t("<ul>",{"aria-hidden":"true","aria-labelledby":this.ids.button,id:this.ids.menu}),this.menuWrap=t("<div>").append(this.menu),this._addClass(this.menuWrap,"ui-selectmenu-menu","ui-front"),this.menuWrap.appendTo(this._appendTo()),this.menuInstance=this.menu.menu({classes:{"ui-menu":"ui-corner-bottom"},role:"listbox",select:function(t,i){t.preventDefault(),e._setSelection(),e._select(i.item.data("ui-selectmenu-item"),t)},focus:function(t,i){var s=i.item.data("ui-selectmenu-item");null!=e.focusIndex&&s.index!==e.focusIndex&&(e._trigger("focus",t,{item:s}),e.isOpen||e._select(s,t)),e.focusIndex=s.index,e.button.attr("aria-activedescendant",e.menuItems.eq(s.index).attr("id"))}}).menu("instance"),this.menuInstance._off(this.menu,"mouseleave"),this.menuInstance._closeOnDocumentClick=function(){return!1},this.menuInstance._isDivider=function(){return!1}},refresh:function(){this._refreshMenu(),this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(this._getSelectedItem().data("ui-selectmenu-item")||{})),null===this.options.width&&this._resizeButton()},_refreshMenu:function(){var t,e=this.element.find("option");this.menu.empty(),this._parseOptions(e),this._renderMenu(this.menu,this.items),this.menuInstance.refresh(),this.menuItems=this.menu.find("li").not(".ui-selectmenu-optgroup").find(".ui-menu-item-wrapper"),this._rendered=!0,e.length&&(t=this._getSelectedItem(),this.menuInstance.focus(null,t),this._setAria(t.data("ui-selectmenu-item")),this._setOption("disabled",this.element.prop("disabled")))},open:function(t){this.options.disabled||(this._rendered?(this._removeClass(this.menu.find(".ui-state-active"),null,"ui-state-active"),this.menuInstance.focus(null,this._getSelectedItem())):this._refreshMenu(),this.menuItems.length&&(this.isOpen=!0,this._toggleAttr(),this._resizeMenu(),this._position(),this._on(this.document,this._documentClick),this._trigger("open",t)))},_position:function(){this.menuWrap.position(t.extend({of:this.button},this.options.position))},close:function(t){this.isOpen&&(this.isOpen=!1,this._toggleAttr(),this.range=null,this._off(this.document),this._trigger("close",t))},widget:function(){return this.button},menuWidget:function(){return this.menu},_renderButtonItem:function(e){var i=t("<span>");return this._setText(i,e.label),this._addClass(i,"ui-selectmenu-text"),i},_renderMenu:function(e,i){var s=this,n="";t.each(i,function(i,o){var a;o.optgroup!==n&&(a=t("<li>",{text:o.optgroup}),s._addClass(a,"ui-selectmenu-optgroup","ui-menu-divider"+(o.element.parent("optgroup").prop("disabled")?" ui-state-disabled":"")),a.appendTo(e),n=o.optgroup),s._renderItemData(e,o)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-selectmenu-item",e)},_renderItem:function(e,i){var s=t("<li>"),n=t("<div>",{title:i.element.attr("title")});return i.disabled&&this._addClass(s,null,"ui-state-disabled"),this._setText(n,i.label),s.append(n).appendTo(e)},_setText:function(t,e){e?t.text(e):t.html(" ")},_move:function(t,e){var i,s,n=".ui-menu-item";this.isOpen?i=this.menuItems.eq(this.focusIndex).parent("li"):(i=this.menuItems.eq(this.element[0].selectedIndex).parent("li"),n+=":not(.ui-state-disabled)"),s="first"===t||"last"===t?i["first"===t?"prevAll":"nextAll"](n).eq(-1):i[t+"All"](n).eq(0),s.length&&this.menuInstance.focus(e,s)},_getSelectedItem:function(){return this.menuItems.eq(this.element[0].selectedIndex).parent("li")},_toggle:function(t){this[this.isOpen?"close":"open"](t)},_setSelection:function(){var t;this.range&&(window.getSelection?(t=window.getSelection(),t.removeAllRanges(),t.addRange(this.range)):this.range.select(),this.button.focus())},_documentClick:{mousedown:function(e){this.isOpen&&(t(e.target).closest(".ui-selectmenu-menu, #"+t.ui.escapeSelector(this.ids.button)).length||this.close(e))}},_buttonEvents:{mousedown:function(){var t;window.getSelection?(t=window.getSelection(),t.rangeCount&&(this.range=t.getRangeAt(0))):this.range=document.selection.createRange()},click:function(t){this._setSelection(),this._toggle(t)},keydown:function(e){var i=!0;switch(e.keyCode){case t.ui.keyCode.TAB:case t.ui.keyCode.ESCAPE:this.close(e),i=!1;break;case t.ui.keyCode.ENTER:this.isOpen&&this._selectFocusedItem(e);break;case t.ui.keyCode.UP:e.altKey?this._toggle(e):this._move("prev",e);break;case t.ui.keyCode.DOWN:e.altKey?this._toggle(e):this._move("next",e);break;case t.ui.keyCode.SPACE:this.isOpen?this._selectFocusedItem(e):this._toggle(e);break;case t.ui.keyCode.LEFT:this._move("prev",e);break;case t.ui.keyCode.RIGHT:this._move("next",e);break;case t.ui.keyCode.HOME:case t.ui.keyCode.PAGE_UP:this._move("first",e);break;case t.ui.keyCode.END:case t.ui.keyCode.PAGE_DOWN:this._move("last",e);break;default:this.menu.trigger(e),i=!1}i&&e.preventDefault()}},_selectFocusedItem:function(t){var e=this.menuItems.eq(this.focusIndex).parent("li");e.hasClass("ui-state-disabled")||this._select(e.data("ui-selectmenu-item"),t)},_select:function(t,e){var i=this.element[0].selectedIndex;this.element[0].selectedIndex=t.index,this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(t)),this._setAria(t),this._trigger("select",e,{item:t}),t.index!==i&&this._trigger("change",e,{item:t}),this.close(e)},_setAria:function(t){var e=this.menuItems.eq(t.index).attr("id");this.button.attr({"aria-labelledby":e,"aria-activedescendant":e}),this.menu.attr("aria-activedescendant",e)},_setOption:function(t,e){if("icons"===t){var i=this.button.find("span.ui-icon");this._removeClass(i,null,this.options.icons.button)._addClass(i,null,e.button)}this._super(t,e),"appendTo"===t&&this.menuWrap.appendTo(this._appendTo()),"width"===t&&this._resizeButton()},_setOptionDisabled:function(t){this._super(t),this.menuInstance.option("disabled",t),this.button.attr("aria-disabled",t),this._toggleClass(this.button,null,"ui-state-disabled",t),this.element.prop("disabled",t),t?(this.button.attr("tabindex",-1),this.close()):this.button.attr("tabindex",0)},_appendTo:function(){var e=this.options.appendTo;return e&&(e=e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)),e&&e[0]||(e=this.element.closest(".ui-front, dialog")),e.length||(e=this.document[0].body),e},_toggleAttr:function(){this.button.attr("aria-expanded",this.isOpen),this._removeClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"closed":"open"))._addClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"open":"closed"))._toggleClass(this.menuWrap,"ui-selectmenu-open",null,this.isOpen),this.menu.attr("aria-hidden",!this.isOpen)},_resizeButton:function(){var t=this.options.width;return t===!1?(this.button.css("width",""),void 0):(null===t&&(t=this.element.show().outerWidth(),this.element.hide()),this.button.outerWidth(t),void 0)},_resizeMenu:function(){this.menu.outerWidth(Math.max(this.button.outerWidth(),this.menu.width("").outerWidth()+1))},_getCreateOptions:function(){var t=this._super();return t.disabled=this.element.prop("disabled"),t},_parseOptions:function(e){var i=this,s=[];e.each(function(e,n){s.push(i._parseOption(t(n),e))}),this.items=s},_parseOption:function(t,e){var i=t.parent("optgroup");return{element:t,index:e,value:t.val(),label:t.text(),optgroup:i.attr("label")||"",disabled:i.prop("disabled")||t.prop("disabled")}},_destroy:function(){this._unbindFormResetHandler(),this.menuWrap.remove(),this.button.remove(),this.element.show(),this.element.removeUniqueId(),this.labels.attr("for",this.ids.element)}}]),t.widget("ui.slider",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"slide",options:{animate:!1,classes:{"ui-slider":"ui-corner-all","ui-slider-handle":"ui-corner-all","ui-slider-range":"ui-corner-all ui-widget-header"},distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this._addClass("ui-slider ui-slider-"+this.orientation,"ui-widget ui-widget-content"),this._refresh(),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var e,i,s=this.options,n=this.element.find(".ui-slider-handle"),o="<span tabindex='0'></span>",a=[];for(i=s.values&&s.values.length||1,n.length>i&&(n.slice(i).remove(),n=n.slice(0,i)),e=n.length;i>e;e++)a.push(o);this.handles=n.add(t(a.join("")).appendTo(this.element)),this._addClass(this.handles,"ui-slider-handle","ui-state-default"),this.handle=this.handles.eq(0),this.handles.each(function(e){t(this).data("ui-slider-handle-index",e).attr("tabIndex",0)})},_createRange:function(){var e=this.options;e.range?(e.range===!0&&(e.values?e.values.length&&2!==e.values.length?e.values=[e.values[0],e.values[0]]:t.isArray(e.values)&&(e.values=e.values.slice(0)):e.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?(this._removeClass(this.range,"ui-slider-range-min ui-slider-range-max"),this.range.css({left:"",bottom:""})):(this.range=t("<div>").appendTo(this.element),this._addClass(this.range,"ui-slider-range")),("min"===e.range||"max"===e.range)&&this._addClass(this.range,"ui-slider-range-"+e.range)):(this.range&&this.range.remove(),this.range=null)
|
12 |
+
},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this._mouseDestroy()},_mouseCapture:function(e){var i,s,n,o,a,r,h,l,c=this,u=this.options;return u.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),i={x:e.pageX,y:e.pageY},s=this._normValueFromMouse(i),n=this._valueMax()-this._valueMin()+1,this.handles.each(function(e){var i=Math.abs(s-c.values(e));(n>i||n===i&&(e===c._lastChangedValue||c.values(e)===u.min))&&(n=i,o=t(this),a=e)}),r=this._start(e,a),r===!1?!1:(this._mouseSliding=!0,this._handleIndex=a,this._addClass(o,null,"ui-state-active"),o.trigger("focus"),h=o.offset(),l=!t(e.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=l?{left:0,top:0}:{left:e.pageX-h.left-o.width()/2,top:e.pageY-h.top-o.height()/2-(parseInt(o.css("borderTopWidth"),10)||0)-(parseInt(o.css("borderBottomWidth"),10)||0)+(parseInt(o.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(e,a,s),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(t){var e={x:t.pageX,y:t.pageY},i=this._normValueFromMouse(e);return this._slide(t,this._handleIndex,i),!1},_mouseStop:function(t){return this._removeClass(this.handles,null,"ui-state-active"),this._mouseSliding=!1,this._stop(t,this._handleIndex),this._change(t,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(t){var e,i,s,n,o;return"horizontal"===this.orientation?(e=this.elementSize.width,i=t.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(e=this.elementSize.height,i=t.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),s=i/e,s>1&&(s=1),0>s&&(s=0),"vertical"===this.orientation&&(s=1-s),n=this._valueMax()-this._valueMin(),o=this._valueMin()+s*n,this._trimAlignValue(o)},_uiHash:function(t,e,i){var s={handle:this.handles[t],handleIndex:t,value:void 0!==e?e:this.value()};return this._hasMultipleValues()&&(s.value=void 0!==e?e:this.values(t),s.values=i||this.values()),s},_hasMultipleValues:function(){return this.options.values&&this.options.values.length},_start:function(t,e){return this._trigger("start",t,this._uiHash(e))},_slide:function(t,e,i){var s,n,o=this.value(),a=this.values();this._hasMultipleValues()&&(n=this.values(e?0:1),o=this.values(e),2===this.options.values.length&&this.options.range===!0&&(i=0===e?Math.min(n,i):Math.max(n,i)),a[e]=i),i!==o&&(s=this._trigger("slide",t,this._uiHash(e,i,a)),s!==!1&&(this._hasMultipleValues()?this.values(e,i):this.value(i)))},_stop:function(t,e){this._trigger("stop",t,this._uiHash(e))},_change:function(t,e){this._keySliding||this._mouseSliding||(this._lastChangedValue=e,this._trigger("change",t,this._uiHash(e)))},value:function(t){return arguments.length?(this.options.value=this._trimAlignValue(t),this._refreshValue(),this._change(null,0),void 0):this._value()},values:function(e,i){var s,n,o;if(arguments.length>1)return this.options.values[e]=this._trimAlignValue(i),this._refreshValue(),this._change(null,e),void 0;if(!arguments.length)return this._values();if(!t.isArray(arguments[0]))return this._hasMultipleValues()?this._values(e):this.value();for(s=this.options.values,n=arguments[0],o=0;s.length>o;o+=1)s[o]=this._trimAlignValue(n[o]),this._change(null,o);this._refreshValue()},_setOption:function(e,i){var s,n=0;switch("range"===e&&this.options.range===!0&&("min"===i?(this.options.value=this._values(0),this.options.values=null):"max"===i&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),t.isArray(this.options.values)&&(n=this.options.values.length),this._super(e,i),e){case"orientation":this._detectOrientation(),this._removeClass("ui-slider-horizontal ui-slider-vertical")._addClass("ui-slider-"+this.orientation),this._refreshValue(),this.options.range&&this._refreshRange(i),this.handles.css("horizontal"===i?"bottom":"left","");break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":for(this._animateOff=!0,this._refreshValue(),s=n-1;s>=0;s--)this._change(null,s);this._animateOff=!1;break;case"step":case"min":case"max":this._animateOff=!0,this._calculateNewMax(),this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_setOptionDisabled:function(t){this._super(t),this._toggleClass(null,"ui-state-disabled",!!t)},_value:function(){var t=this.options.value;return t=this._trimAlignValue(t)},_values:function(t){var e,i,s;if(arguments.length)return e=this.options.values[t],e=this._trimAlignValue(e);if(this._hasMultipleValues()){for(i=this.options.values.slice(),s=0;i.length>s;s+=1)i[s]=this._trimAlignValue(i[s]);return i}return[]},_trimAlignValue:function(t){if(this._valueMin()>=t)return this._valueMin();if(t>=this._valueMax())return this._valueMax();var e=this.options.step>0?this.options.step:1,i=(t-this._valueMin())%e,s=t-i;return 2*Math.abs(i)>=e&&(s+=i>0?e:-e),parseFloat(s.toFixed(5))},_calculateNewMax:function(){var t=this.options.max,e=this._valueMin(),i=this.options.step,s=Math.round((t-e)/i)*i;t=s+e,t>this.options.max&&(t-=i),this.max=parseFloat(t.toFixed(this._precision()))},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var e=""+t,i=e.indexOf(".");return-1===i?0:e.length-i-1},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshRange:function(t){"vertical"===t&&this.range.css({width:"",left:""}),"horizontal"===t&&this.range.css({height:"",bottom:""})},_refreshValue:function(){var e,i,s,n,o,a=this.options.range,r=this.options,h=this,l=this._animateOff?!1:r.animate,c={};this._hasMultipleValues()?this.handles.each(function(s){i=100*((h.values(s)-h._valueMin())/(h._valueMax()-h._valueMin())),c["horizontal"===h.orientation?"left":"bottom"]=i+"%",t(this).stop(1,1)[l?"animate":"css"](c,r.animate),h.options.range===!0&&("horizontal"===h.orientation?(0===s&&h.range.stop(1,1)[l?"animate":"css"]({left:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({width:i-e+"%"},{queue:!1,duration:r.animate})):(0===s&&h.range.stop(1,1)[l?"animate":"css"]({bottom:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({height:i-e+"%"},{queue:!1,duration:r.animate}))),e=i}):(s=this.value(),n=this._valueMin(),o=this._valueMax(),i=o!==n?100*((s-n)/(o-n)):0,c["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[l?"animate":"css"](c,r.animate),"min"===a&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:i+"%"},r.animate),"max"===a&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:100-i+"%"},r.animate),"min"===a&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:i+"%"},r.animate),"max"===a&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:100-i+"%"},r.animate))},_handleEvents:{keydown:function(e){var i,s,n,o,a=t(e.target).data("ui-slider-handle-index");switch(e.keyCode){case t.ui.keyCode.HOME:case t.ui.keyCode.END:case t.ui.keyCode.PAGE_UP:case t.ui.keyCode.PAGE_DOWN:case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(e.preventDefault(),!this._keySliding&&(this._keySliding=!0,this._addClass(t(e.target),null,"ui-state-active"),i=this._start(e,a),i===!1))return}switch(o=this.options.step,s=n=this._hasMultipleValues()?this.values(a):this.value(),e.keyCode){case t.ui.keyCode.HOME:n=this._valueMin();break;case t.ui.keyCode.END:n=this._valueMax();break;case t.ui.keyCode.PAGE_UP:n=this._trimAlignValue(s+(this._valueMax()-this._valueMin())/this.numPages);break;case t.ui.keyCode.PAGE_DOWN:n=this._trimAlignValue(s-(this._valueMax()-this._valueMin())/this.numPages);break;case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:if(s===this._valueMax())return;n=this._trimAlignValue(s+o);break;case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(s===this._valueMin())return;n=this._trimAlignValue(s-o)}this._slide(e,a,n)},keyup:function(e){var i=t(e.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(e,i),this._change(e,i),this._removeClass(t(e.target),null,"ui-state-active"))}}}),t.widget("ui.spinner",{version:"1.12.1",defaultElement:"<input>",widgetEventPrefix:"spin",options:{classes:{"ui-spinner":"ui-corner-all","ui-spinner-down":"ui-corner-br","ui-spinner-up":"ui-corner-tr"},culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var e=this._super(),i=this.element;return t.each(["min","max","step"],function(t,s){var n=i.attr(s);null!=n&&n.length&&(e[s]=n)}),e},_events:{keydown:function(t){this._start(t)&&this._keydown(t)&&t.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",t),void 0)},mousewheel:function(t,e){if(e){if(!this.spinning&&!this._start(t))return!1;this._spin((e>0?1:-1)*this.options.step,t),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(t)},100),t.preventDefault()}},"mousedown .ui-spinner-button":function(e){function i(){var e=this.element[0]===t.ui.safeActiveElement(this.document[0]);e||(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s}))}var s;s=this.element[0]===t.ui.safeActiveElement(this.document[0])?this.previous:this.element.val(),e.preventDefault(),i.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,i.call(this)}),this._start(e)!==!1&&this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(e){return t(e.currentTarget).hasClass("ui-state-active")?this._start(e)===!1?!1:(this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e),void 0):void 0},"mouseleave .ui-spinner-button":"_stop"},_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap("<span>").parent().append("<a></a><a></a>")},_draw:function(){this._enhance(),this._addClass(this.uiSpinner,"ui-spinner","ui-widget ui-widget-content"),this._addClass("ui-spinner-input"),this.element.attr("role","spinbutton"),this.buttons=this.uiSpinner.children("a").attr("tabIndex",-1).attr("aria-hidden",!0).button({classes:{"ui-button":""}}),this._removeClass(this.buttons,"ui-corner-all"),this._addClass(this.buttons.first(),"ui-spinner-button ui-spinner-up"),this._addClass(this.buttons.last(),"ui-spinner-button ui-spinner-down"),this.buttons.first().button({icon:this.options.icons.up,showLabel:!1}),this.buttons.last().button({icon:this.options.icons.down,showLabel:!1}),this.buttons.height()>Math.ceil(.5*this.uiSpinner.height())&&this.uiSpinner.height()>0&&this.uiSpinner.height(this.uiSpinner.height())},_keydown:function(e){var i=this.options,s=t.ui.keyCode;switch(e.keyCode){case s.UP:return this._repeat(null,1,e),!0;case s.DOWN:return this._repeat(null,-1,e),!0;case s.PAGE_UP:return this._repeat(null,i.page,e),!0;case s.PAGE_DOWN:return this._repeat(null,-i.page,e),!0}return!1},_start:function(t){return this.spinning||this._trigger("start",t)!==!1?(this.counter||(this.counter=1),this.spinning=!0,!0):!1},_repeat:function(t,e,i){t=t||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,e,i)},t),this._spin(e*this.options.step,i)},_spin:function(t,e){var i=this.value()||0;this.counter||(this.counter=1),i=this._adjustValue(i+t*this._increment(this.counter)),this.spinning&&this._trigger("spin",e,{value:i})===!1||(this._value(i),this.counter++)},_increment:function(e){var i=this.options.incremental;return i?t.isFunction(i)?i(e):Math.floor(e*e*e/5e4-e*e/500+17*e/200+1):1},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var e=""+t,i=e.indexOf(".");return-1===i?0:e.length-i-1},_adjustValue:function(t){var e,i,s=this.options;return e=null!==s.min?s.min:0,i=t-e,i=Math.round(i/s.step)*s.step,t=e+i,t=parseFloat(t.toFixed(this._precision())),null!==s.max&&t>s.max?s.max:null!==s.min&&s.min>t?s.min:t},_stop:function(t){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",t))},_setOption:function(t,e){var i,s,n;return"culture"===t||"numberFormat"===t?(i=this._parse(this.element.val()),this.options[t]=e,this.element.val(this._format(i)),void 0):(("max"===t||"min"===t||"step"===t)&&"string"==typeof e&&(e=this._parse(e)),"icons"===t&&(s=this.buttons.first().find(".ui-icon"),this._removeClass(s,null,this.options.icons.up),this._addClass(s,null,e.up),n=this.buttons.last().find(".ui-icon"),this._removeClass(n,null,this.options.icons.down),this._addClass(n,null,e.down)),this._super(t,e),void 0)},_setOptionDisabled:function(t){this._super(t),this._toggleClass(this.uiSpinner,null,"ui-state-disabled",!!t),this.element.prop("disabled",!!t),this.buttons.button(t?"disable":"enable")},_setOptions:r(function(t){this._super(t)}),_parse:function(t){return"string"==typeof t&&""!==t&&(t=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(t,10,this.options.culture):+t),""===t||isNaN(t)?null:t},_format:function(t){return""===t?"":window.Globalize&&this.options.numberFormat?Globalize.format(t,this.options.numberFormat,this.options.culture):t},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},isValid:function(){var t=this.value();return null===t?!1:t===this._adjustValue(t)},_value:function(t,e){var i;""!==t&&(i=this._parse(t),null!==i&&(e||(i=this._adjustValue(i)),t=this._format(i))),this.element.val(t),this._refresh()},_destroy:function(){this.element.prop("disabled",!1).removeAttr("autocomplete role aria-valuemin aria-valuemax aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:r(function(t){this._stepUp(t)}),_stepUp:function(t){this._start()&&(this._spin((t||1)*this.options.step),this._stop())},stepDown:r(function(t){this._stepDown(t)}),_stepDown:function(t){this._start()&&(this._spin((t||1)*-this.options.step),this._stop())},pageUp:r(function(t){this._stepUp((t||1)*this.options.page)}),pageDown:r(function(t){this._stepDown((t||1)*this.options.page)}),value:function(t){return arguments.length?(r(this._value).call(this,t),void 0):this._parse(this.element.val())},widget:function(){return this.uiSpinner}}),t.uiBackCompat!==!1&&t.widget("ui.spinner",t.ui.spinner,{_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml())},_uiSpinnerHtml:function(){return"<span>"},_buttonHtml:function(){return"<a></a><a></a>"}}),t.ui.spinner,t.widget("ui.tabs",{version:"1.12.1",delay:300,options:{active:null,classes:{"ui-tabs":"ui-corner-all","ui-tabs-nav":"ui-corner-all","ui-tabs-panel":"ui-corner-bottom","ui-tabs-tab":"ui-corner-top"},collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:function(){var t=/#.*$/;return function(e){var i,s;i=e.href.replace(t,""),s=location.href.replace(t,"");try{i=decodeURIComponent(i)}catch(n){}try{s=decodeURIComponent(s)}catch(n){}return e.hash.length>1&&i===s}}(),_create:function(){var e=this,i=this.options;this.running=!1,this._addClass("ui-tabs","ui-widget ui-widget-content"),this._toggleClass("ui-tabs-collapsible",null,i.collapsible),this._processTabs(),i.active=this._initialActive(),t.isArray(i.disabled)&&(i.disabled=t.unique(i.disabled.concat(t.map(this.tabs.filter(".ui-state-disabled"),function(t){return e.tabs.index(t)}))).sort()),this.active=this.options.active!==!1&&this.anchors.length?this._findActive(i.active):t(),this._refresh(),this.active.length&&this.load(i.active)},_initialActive:function(){var e=this.options.active,i=this.options.collapsible,s=location.hash.substring(1);return null===e&&(s&&this.tabs.each(function(i,n){return t(n).attr("aria-controls")===s?(e=i,!1):void 0}),null===e&&(e=this.tabs.index(this.tabs.filter(".ui-tabs-active"))),(null===e||-1===e)&&(e=this.tabs.length?0:!1)),e!==!1&&(e=this.tabs.index(this.tabs.eq(e)),-1===e&&(e=i?!1:0)),!i&&e===!1&&this.anchors.length&&(e=0),e},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):t()}},_tabKeydown:function(e){var i=t(t.ui.safeActiveElement(this.document[0])).closest("li"),s=this.tabs.index(i),n=!0;if(!this._handlePageNav(e)){switch(e.keyCode){case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:s++;break;case t.ui.keyCode.UP:case t.ui.keyCode.LEFT:n=!1,s--;break;case t.ui.keyCode.END:s=this.anchors.length-1;break;case t.ui.keyCode.HOME:s=0;break;case t.ui.keyCode.SPACE:return e.preventDefault(),clearTimeout(this.activating),this._activate(s),void 0;case t.ui.keyCode.ENTER:return e.preventDefault(),clearTimeout(this.activating),this._activate(s===this.options.active?!1:s),void 0;default:return}e.preventDefault(),clearTimeout(this.activating),s=this._focusNextTab(s,n),e.ctrlKey||e.metaKey||(i.attr("aria-selected","false"),this.tabs.eq(s).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",s)},this.delay))}},_panelKeydown:function(e){this._handlePageNav(e)||e.ctrlKey&&e.keyCode===t.ui.keyCode.UP&&(e.preventDefault(),this.active.trigger("focus"))},_handlePageNav:function(e){return e.altKey&&e.keyCode===t.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):e.altKey&&e.keyCode===t.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):void 0},_findNextTab:function(e,i){function s(){return e>n&&(e=0),0>e&&(e=n),e}for(var n=this.tabs.length-1;-1!==t.inArray(s(),this.options.disabled);)e=i?e+1:e-1;return e},_focusNextTab:function(t,e){return t=this._findNextTab(t,e),this.tabs.eq(t).trigger("focus"),t},_setOption:function(t,e){return"active"===t?(this._activate(e),void 0):(this._super(t,e),"collapsible"===t&&(this._toggleClass("ui-tabs-collapsible",null,e),e||this.options.active!==!1||this._activate(0)),"event"===t&&this._setupEvents(e),"heightStyle"===t&&this._setupHeightStyle(e),void 0)},_sanitizeSelector:function(t){return t?t.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var e=this.options,i=this.tablist.children(":has(a[href])");e.disabled=t.map(i.filter(".ui-state-disabled"),function(t){return i.index(t)}),this._processTabs(),e.active!==!1&&this.anchors.length?this.active.length&&!t.contains(this.tablist[0],this.active[0])?this.tabs.length===e.disabled.length?(e.active=!1,this.active=t()):this._activate(this._findNextTab(Math.max(0,e.active-1),!1)):e.active=this.tabs.index(this.active):(e.active=!1,this.active=t()),this._refresh()},_refresh:function(){this._setOptionDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._addClass(this.active,"ui-tabs-active","ui-state-active"),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var e=this,i=this.tabs,s=this.anchors,n=this.panels;this.tablist=this._getList().attr("role","tablist"),this._addClass(this.tablist,"ui-tabs-nav","ui-helper-reset ui-helper-clearfix ui-widget-header"),this.tablist.on("mousedown"+this.eventNamespace,"> li",function(e){t(this).is(".ui-state-disabled")&&e.preventDefault()}).on("focus"+this.eventNamespace,".ui-tabs-anchor",function(){t(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this.tabs=this.tablist.find("> li:has(a[href])").attr({role:"tab",tabIndex:-1}),this._addClass(this.tabs,"ui-tabs-tab","ui-state-default"),this.anchors=this.tabs.map(function(){return t("a",this)[0]}).attr({role:"presentation",tabIndex:-1}),this._addClass(this.anchors,"ui-tabs-anchor"),this.panels=t(),this.anchors.each(function(i,s){var n,o,a,r=t(s).uniqueId().attr("id"),h=t(s).closest("li"),l=h.attr("aria-controls");e._isLocal(s)?(n=s.hash,a=n.substring(1),o=e.element.find(e._sanitizeSelector(n))):(a=h.attr("aria-controls")||t({}).uniqueId()[0].id,n="#"+a,o=e.element.find(n),o.length||(o=e._createPanel(a),o.insertAfter(e.panels[i-1]||e.tablist)),o.attr("aria-live","polite")),o.length&&(e.panels=e.panels.add(o)),l&&h.data("ui-tabs-aria-controls",l),h.attr({"aria-controls":a,"aria-labelledby":r}),o.attr("aria-labelledby",r)}),this.panels.attr("role","tabpanel"),this._addClass(this.panels,"ui-tabs-panel","ui-widget-content"),i&&(this._off(i.not(this.tabs)),this._off(s.not(this.anchors)),this._off(n.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol, ul").eq(0)},_createPanel:function(e){return t("<div>").attr("id",e).data("ui-tabs-destroy",!0)},_setOptionDisabled:function(e){var i,s,n;for(t.isArray(e)&&(e.length?e.length===this.anchors.length&&(e=!0):e=!1),n=0;s=this.tabs[n];n++)i=t(s),e===!0||-1!==t.inArray(n,e)?(i.attr("aria-disabled","true"),this._addClass(i,null,"ui-state-disabled")):(i.removeAttr("aria-disabled"),this._removeClass(i,null,"ui-state-disabled"));this.options.disabled=e,this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,e===!0)},_setupEvents:function(e){var i={};e&&t.each(e.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(t){t.preventDefault()}}),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(e){var i,s=this.element.parent();"fill"===e?(i=s.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var e=t(this),s=e.css("position");"absolute"!==s&&"fixed"!==s&&(i-=e.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=t(this).outerHeight(!0)}),this.panels.each(function(){t(this).height(Math.max(0,i-t(this).innerHeight()+t(this).height()))}).css("overflow","auto")):"auto"===e&&(i=0,this.panels.each(function(){i=Math.max(i,t(this).height("").height())}).height(i))},_eventHandler:function(e){var i=this.options,s=this.active,n=t(e.currentTarget),o=n.closest("li"),a=o[0]===s[0],r=a&&i.collapsible,h=r?t():this._getPanelForTab(o),l=s.length?this._getPanelForTab(s):t(),c={oldTab:s,oldPanel:l,newTab:r?t():o,newPanel:h};e.preventDefault(),o.hasClass("ui-state-disabled")||o.hasClass("ui-tabs-loading")||this.running||a&&!i.collapsible||this._trigger("beforeActivate",e,c)===!1||(i.active=r?!1:this.tabs.index(o),this.active=a?t():o,this.xhr&&this.xhr.abort(),l.length||h.length||t.error("jQuery UI Tabs: Mismatching fragment identifier."),h.length&&this.load(this.tabs.index(o),e),this._toggle(e,c))},_toggle:function(e,i){function s(){o.running=!1,o._trigger("activate",e,i)}function n(){o._addClass(i.newTab.closest("li"),"ui-tabs-active","ui-state-active"),a.length&&o.options.show?o._show(a,o.options.show,s):(a.show(),s())}var o=this,a=i.newPanel,r=i.oldPanel;this.running=!0,r.length&&this.options.hide?this._hide(r,this.options.hide,function(){o._removeClass(i.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),n()}):(this._removeClass(i.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),r.hide(),n()),r.attr("aria-hidden","true"),i.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),a.length&&r.length?i.oldTab.attr("tabIndex",-1):a.length&&this.tabs.filter(function(){return 0===t(this).attr("tabIndex")}).attr("tabIndex",-1),a.attr("aria-hidden","false"),i.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(e){var i,s=this._findActive(e);s[0]!==this.active[0]&&(s.length||(s=this.active),i=s.find(".ui-tabs-anchor")[0],this._eventHandler({target:i,currentTarget:i,preventDefault:t.noop}))},_findActive:function(e){return e===!1?t():this.tabs.eq(e)},_getIndex:function(e){return"string"==typeof e&&(e=this.anchors.index(this.anchors.filter("[href$='"+t.ui.escapeSelector(e)+"']"))),e},_destroy:function(){this.xhr&&this.xhr.abort(),this.tablist.removeAttr("role").off(this.eventNamespace),this.anchors.removeAttr("role tabIndex").removeUniqueId(),this.tabs.add(this.panels).each(function(){t.data(this,"ui-tabs-destroy")?t(this).remove():t(this).removeAttr("role tabIndex aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded")}),this.tabs.each(function(){var e=t(this),i=e.data("ui-tabs-aria-controls");i?e.attr("aria-controls",i).removeData("ui-tabs-aria-controls"):e.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(e){var i=this.options.disabled;i!==!1&&(void 0===e?i=!1:(e=this._getIndex(e),i=t.isArray(i)?t.map(i,function(t){return t!==e?t:null}):t.map(this.tabs,function(t,i){return i!==e?i:null})),this._setOptionDisabled(i))},disable:function(e){var i=this.options.disabled;if(i!==!0){if(void 0===e)i=!0;else{if(e=this._getIndex(e),-1!==t.inArray(e,i))return;i=t.isArray(i)?t.merge([e],i).sort():[e]}this._setOptionDisabled(i)}},load:function(e,i){e=this._getIndex(e);var s=this,n=this.tabs.eq(e),o=n.find(".ui-tabs-anchor"),a=this._getPanelForTab(n),r={tab:n,panel:a},h=function(t,e){"abort"===e&&s.panels.stop(!1,!0),s._removeClass(n,"ui-tabs-loading"),a.removeAttr("aria-busy"),t===s.xhr&&delete s.xhr};this._isLocal(o[0])||(this.xhr=t.ajax(this._ajaxSettings(o,i,r)),this.xhr&&"canceled"!==this.xhr.statusText&&(this._addClass(n,"ui-tabs-loading"),a.attr("aria-busy","true"),this.xhr.done(function(t,e,n){setTimeout(function(){a.html(t),s._trigger("load",i,r),h(n,e)},1)}).fail(function(t,e){setTimeout(function(){h(t,e)},1)})))},_ajaxSettings:function(e,i,s){var n=this;return{url:e.attr("href").replace(/#.*$/,""),beforeSend:function(e,o){return n._trigger("beforeLoad",i,t.extend({jqXHR:e,ajaxSettings:o},s))}}},_getPanelForTab:function(e){var i=t(e).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+i))}}),t.uiBackCompat!==!1&&t.widget("ui.tabs",t.ui.tabs,{_processTabs:function(){this._superApply(arguments),this._addClass(this.tabs,"ui-tab")}}),t.ui.tabs,t.widget("ui.tooltip",{version:"1.12.1",options:{classes:{"ui-tooltip":"ui-corner-all ui-widget-shadow"},content:function(){var e=t(this).attr("title")||"";return t("<a>").text(e).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,track:!1,close:null,open:null},_addDescribedBy:function(e,i){var s=(e.attr("aria-describedby")||"").split(/\s+/);s.push(i),e.data("ui-tooltip-id",i).attr("aria-describedby",t.trim(s.join(" ")))},_removeDescribedBy:function(e){var i=e.data("ui-tooltip-id"),s=(e.attr("aria-describedby")||"").split(/\s+/),n=t.inArray(i,s);-1!==n&&s.splice(n,1),e.removeData("ui-tooltip-id"),s=t.trim(s.join(" ")),s?e.attr("aria-describedby",s):e.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.liveRegion=t("<div>").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this.disabledTitles=t([])},_setOption:function(e,i){var s=this;this._super(e,i),"content"===e&&t.each(this.tooltips,function(t,e){s._updateContent(e.element)})},_setOptionDisabled:function(t){this[t?"_disable":"_enable"]()},_disable:function(){var e=this;t.each(this.tooltips,function(i,s){var n=t.Event("blur");n.target=n.currentTarget=s.element[0],e.close(n,!0)}),this.disabledTitles=this.disabledTitles.add(this.element.find(this.options.items).addBack().filter(function(){var e=t(this);return e.is("[title]")?e.data("ui-tooltip-title",e.attr("title")).removeAttr("title"):void 0}))},_enable:function(){this.disabledTitles.each(function(){var e=t(this);e.data("ui-tooltip-title")&&e.attr("title",e.data("ui-tooltip-title"))}),this.disabledTitles=t([])},open:function(e){var i=this,s=t(e?e.target:this.element).closest(this.options.items);s.length&&!s.data("ui-tooltip-id")&&(s.attr("title")&&s.data("ui-tooltip-title",s.attr("title")),s.data("ui-tooltip-open",!0),e&&"mouseover"===e.type&&s.parents().each(function(){var e,s=t(this);s.data("ui-tooltip-open")&&(e=t.Event("blur"),e.target=e.currentTarget=this,i.close(e,!0)),s.attr("title")&&(s.uniqueId(),i.parents[this.id]={element:this,title:s.attr("title")},s.attr("title",""))}),this._registerCloseHandlers(e,s),this._updateContent(s,e))},_updateContent:function(t,e){var i,s=this.options.content,n=this,o=e?e.type:null;return"string"==typeof s||s.nodeType||s.jquery?this._open(e,t,s):(i=s.call(t[0],function(i){n._delay(function(){t.data("ui-tooltip-open")&&(e&&(e.type=o),this._open(e,t,i))})}),i&&this._open(e,t,i),void 0)},_open:function(e,i,s){function n(t){l.of=t,a.is(":hidden")||a.position(l)}var o,a,r,h,l=t.extend({},this.options.position);if(s){if(o=this._find(i))return o.tooltip.find(".ui-tooltip-content").html(s),void 0;i.is("[title]")&&(e&&"mouseover"===e.type?i.attr("title",""):i.removeAttr("title")),o=this._tooltip(i),a=o.tooltip,this._addDescribedBy(i,a.attr("id")),a.find(".ui-tooltip-content").html(s),this.liveRegion.children().hide(),h=t("<div>").html(a.find(".ui-tooltip-content").html()),h.removeAttr("name").find("[name]").removeAttr("name"),h.removeAttr("id").find("[id]").removeAttr("id"),h.appendTo(this.liveRegion),this.options.track&&e&&/^mouse/.test(e.type)?(this._on(this.document,{mousemove:n}),n(e)):a.position(t.extend({of:i},this.options.position)),a.hide(),this._show(a,this.options.show),this.options.track&&this.options.show&&this.options.show.delay&&(r=this.delayedShow=setInterval(function(){a.is(":visible")&&(n(l.of),clearInterval(r))},t.fx.interval)),this._trigger("open",e,{tooltip:a})}},_registerCloseHandlers:function(e,i){var s={keyup:function(e){if(e.keyCode===t.ui.keyCode.ESCAPE){var s=t.Event(e);s.currentTarget=i[0],this.close(s,!0)}}};i[0]!==this.element[0]&&(s.remove=function(){this._removeTooltip(this._find(i).tooltip)}),e&&"mouseover"!==e.type||(s.mouseleave="close"),e&&"focusin"!==e.type||(s.focusout="close"),this._on(!0,i,s)},close:function(e){var i,s=this,n=t(e?e.currentTarget:this.element),o=this._find(n);return o?(i=o.tooltip,o.closing||(clearInterval(this.delayedShow),n.data("ui-tooltip-title")&&!n.attr("title")&&n.attr("title",n.data("ui-tooltip-title")),this._removeDescribedBy(n),o.hiding=!0,i.stop(!0),this._hide(i,this.options.hide,function(){s._removeTooltip(t(this))}),n.removeData("ui-tooltip-open"),this._off(n,"mouseleave focusout keyup"),n[0]!==this.element[0]&&this._off(n,"remove"),this._off(this.document,"mousemove"),e&&"mouseleave"===e.type&&t.each(this.parents,function(e,i){t(i.element).attr("title",i.title),delete s.parents[e]
|
13 |
+
}),o.closing=!0,this._trigger("close",e,{tooltip:i}),o.hiding||(o.closing=!1)),void 0):(n.removeData("ui-tooltip-open"),void 0)},_tooltip:function(e){var i=t("<div>").attr("role","tooltip"),s=t("<div>").appendTo(i),n=i.uniqueId().attr("id");return this._addClass(s,"ui-tooltip-content"),this._addClass(i,"ui-tooltip","ui-widget ui-widget-content"),i.appendTo(this._appendTo(e)),this.tooltips[n]={element:e,tooltip:i}},_find:function(t){var e=t.data("ui-tooltip-id");return e?this.tooltips[e]:null},_removeTooltip:function(t){t.remove(),delete this.tooltips[t.attr("id")]},_appendTo:function(t){var e=t.closest(".ui-front, dialog");return e.length||(e=this.document[0].body),e},_destroy:function(){var e=this;t.each(this.tooltips,function(i,s){var n=t.Event("blur"),o=s.element;n.target=n.currentTarget=o[0],e.close(n,!0),t("#"+i).remove(),o.data("ui-tooltip-title")&&(o.attr("title")||o.attr("title",o.data("ui-tooltip-title")),o.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}}),t.uiBackCompat!==!1&&t.widget("ui.tooltip",t.ui.tooltip,{options:{tooltipClass:null},_tooltip:function(){var t=this._superApply(arguments);return this.options.tooltipClass&&t.tooltip.addClass(this.options.tooltipClass),t}}),t.ui.tooltip;var f="ui-effects-",g="ui-effects-style",m="ui-effects-animated",_=t;t.effects={effect:{}},function(t,e){function i(t,e,i){var s=u[e.type]||{};return null==t?i||!e.def?null:e.def:(t=s.floor?~~t:parseFloat(t),isNaN(t)?e.def:s.mod?(t+s.mod)%s.mod:0>t?0:t>s.max?s.max:t)}function s(i){var s=l(),n=s._rgba=[];return i=i.toLowerCase(),f(h,function(t,o){var a,r=o.re.exec(i),h=r&&o.parse(r),l=o.space||"rgba";return h?(a=s[l](h),s[c[l].cache]=a[c[l].cache],n=s._rgba=a._rgba,!1):e}),n.length?("0,0,0,0"===n.join()&&t.extend(n,o.transparent),s):o[i]}function n(t,e,i){return i=(i+1)%1,1>6*i?t+6*(e-t)*i:1>2*i?e:2>3*i?t+6*(e-t)*(2/3-i):t}var o,a="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",r=/^([\-+])=\s*(\d+\.?\d*)/,h=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[t[1],t[2],t[3],t[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[2.55*t[1],2.55*t[2],2.55*t[3],t[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(t){return[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(t){return[parseInt(t[1]+t[1],16),parseInt(t[2]+t[2],16),parseInt(t[3]+t[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(t){return[t[1],t[2]/100,t[3]/100,t[4]]}}],l=t.Color=function(e,i,s,n){return new t.Color.fn.parse(e,i,s,n)},c={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},u={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},d=l.support={},p=t("<p>")[0],f=t.each;p.style.cssText="background-color:rgba(1,1,1,.5)",d.rgba=p.style.backgroundColor.indexOf("rgba")>-1,f(c,function(t,e){e.cache="_"+t,e.props.alpha={idx:3,type:"percent",def:1}}),l.fn=t.extend(l.prototype,{parse:function(n,a,r,h){if(n===e)return this._rgba=[null,null,null,null],this;(n.jquery||n.nodeType)&&(n=t(n).css(a),a=e);var u=this,d=t.type(n),p=this._rgba=[];return a!==e&&(n=[n,a,r,h],d="array"),"string"===d?this.parse(s(n)||o._default):"array"===d?(f(c.rgba.props,function(t,e){p[e.idx]=i(n[e.idx],e)}),this):"object"===d?(n instanceof l?f(c,function(t,e){n[e.cache]&&(u[e.cache]=n[e.cache].slice())}):f(c,function(e,s){var o=s.cache;f(s.props,function(t,e){if(!u[o]&&s.to){if("alpha"===t||null==n[t])return;u[o]=s.to(u._rgba)}u[o][e.idx]=i(n[t],e,!0)}),u[o]&&0>t.inArray(null,u[o].slice(0,3))&&(u[o][3]=1,s.from&&(u._rgba=s.from(u[o])))}),this):e},is:function(t){var i=l(t),s=!0,n=this;return f(c,function(t,o){var a,r=i[o.cache];return r&&(a=n[o.cache]||o.to&&o.to(n._rgba)||[],f(o.props,function(t,i){return null!=r[i.idx]?s=r[i.idx]===a[i.idx]:e})),s}),s},_space:function(){var t=[],e=this;return f(c,function(i,s){e[s.cache]&&t.push(i)}),t.pop()},transition:function(t,e){var s=l(t),n=s._space(),o=c[n],a=0===this.alpha()?l("transparent"):this,r=a[o.cache]||o.to(a._rgba),h=r.slice();return s=s[o.cache],f(o.props,function(t,n){var o=n.idx,a=r[o],l=s[o],c=u[n.type]||{};null!==l&&(null===a?h[o]=l:(c.mod&&(l-a>c.mod/2?a+=c.mod:a-l>c.mod/2&&(a-=c.mod)),h[o]=i((l-a)*e+a,n)))}),this[n](h)},blend:function(e){if(1===this._rgba[3])return this;var i=this._rgba.slice(),s=i.pop(),n=l(e)._rgba;return l(t.map(i,function(t,e){return(1-s)*n[e]+s*t}))},toRgbaString:function(){var e="rgba(",i=t.map(this._rgba,function(t,e){return null==t?e>2?1:0:t});return 1===i[3]&&(i.pop(),e="rgb("),e+i.join()+")"},toHslaString:function(){var e="hsla(",i=t.map(this.hsla(),function(t,e){return null==t&&(t=e>2?1:0),e&&3>e&&(t=Math.round(100*t)+"%"),t});return 1===i[3]&&(i.pop(),e="hsl("),e+i.join()+")"},toHexString:function(e){var i=this._rgba.slice(),s=i.pop();return e&&i.push(~~(255*s)),"#"+t.map(i,function(t){return t=(t||0).toString(16),1===t.length?"0"+t:t}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),l.fn.parse.prototype=l.fn,c.hsla.to=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e,i,s=t[0]/255,n=t[1]/255,o=t[2]/255,a=t[3],r=Math.max(s,n,o),h=Math.min(s,n,o),l=r-h,c=r+h,u=.5*c;return e=h===r?0:s===r?60*(n-o)/l+360:n===r?60*(o-s)/l+120:60*(s-n)/l+240,i=0===l?0:.5>=u?l/c:l/(2-c),[Math.round(e)%360,i,u,null==a?1:a]},c.hsla.from=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e=t[0]/360,i=t[1],s=t[2],o=t[3],a=.5>=s?s*(1+i):s+i-s*i,r=2*s-a;return[Math.round(255*n(r,a,e+1/3)),Math.round(255*n(r,a,e)),Math.round(255*n(r,a,e-1/3)),o]},f(c,function(s,n){var o=n.props,a=n.cache,h=n.to,c=n.from;l.fn[s]=function(s){if(h&&!this[a]&&(this[a]=h(this._rgba)),s===e)return this[a].slice();var n,r=t.type(s),u="array"===r||"object"===r?s:arguments,d=this[a].slice();return f(o,function(t,e){var s=u["object"===r?t:e.idx];null==s&&(s=d[e.idx]),d[e.idx]=i(s,e)}),c?(n=l(c(d)),n[a]=d,n):l(d)},f(o,function(e,i){l.fn[e]||(l.fn[e]=function(n){var o,a=t.type(n),h="alpha"===e?this._hsla?"hsla":"rgba":s,l=this[h](),c=l[i.idx];return"undefined"===a?c:("function"===a&&(n=n.call(this,c),a=t.type(n)),null==n&&i.empty?this:("string"===a&&(o=r.exec(n),o&&(n=c+parseFloat(o[2])*("+"===o[1]?1:-1))),l[i.idx]=n,this[h](l)))})})}),l.hook=function(e){var i=e.split(" ");f(i,function(e,i){t.cssHooks[i]={set:function(e,n){var o,a,r="";if("transparent"!==n&&("string"!==t.type(n)||(o=s(n)))){if(n=l(o||n),!d.rgba&&1!==n._rgba[3]){for(a="backgroundColor"===i?e.parentNode:e;(""===r||"transparent"===r)&&a&&a.style;)try{r=t.css(a,"backgroundColor"),a=a.parentNode}catch(h){}n=n.blend(r&&"transparent"!==r?r:"_default")}n=n.toRgbaString()}try{e.style[i]=n}catch(h){}}},t.fx.step[i]=function(e){e.colorInit||(e.start=l(e.elem,i),e.end=l(e.end),e.colorInit=!0),t.cssHooks[i].set(e.elem,e.start.transition(e.end,e.pos))}})},l.hook(a),t.cssHooks.borderColor={expand:function(t){var e={};return f(["Top","Right","Bottom","Left"],function(i,s){e["border"+s+"Color"]=t}),e}},o=t.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(_),function(){function e(e){var i,s,n=e.ownerDocument.defaultView?e.ownerDocument.defaultView.getComputedStyle(e,null):e.currentStyle,o={};if(n&&n.length&&n[0]&&n[n[0]])for(s=n.length;s--;)i=n[s],"string"==typeof n[i]&&(o[t.camelCase(i)]=n[i]);else for(i in n)"string"==typeof n[i]&&(o[i]=n[i]);return o}function i(e,i){var s,o,a={};for(s in i)o=i[s],e[s]!==o&&(n[s]||(t.fx.step[s]||!isNaN(parseFloat(o)))&&(a[s]=o));return a}var s=["add","remove","toggle"],n={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};t.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(e,i){t.fx.step[i]=function(t){("none"!==t.end&&!t.setAttr||1===t.pos&&!t.setAttr)&&(_.style(t.elem,i,t.end),t.setAttr=!0)}}),t.fn.addBack||(t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.effects.animateClass=function(n,o,a,r){var h=t.speed(o,a,r);return this.queue(function(){var o,a=t(this),r=a.attr("class")||"",l=h.children?a.find("*").addBack():a;l=l.map(function(){var i=t(this);return{el:i,start:e(this)}}),o=function(){t.each(s,function(t,e){n[e]&&a[e+"Class"](n[e])})},o(),l=l.map(function(){return this.end=e(this.el[0]),this.diff=i(this.start,this.end),this}),a.attr("class",r),l=l.map(function(){var e=this,i=t.Deferred(),s=t.extend({},h,{queue:!1,complete:function(){i.resolve(e)}});return this.el.animate(this.diff,s),i.promise()}),t.when.apply(t,l.get()).done(function(){o(),t.each(arguments,function(){var e=this.el;t.each(this.diff,function(t){e.css(t,"")})}),h.complete.call(a[0])})})},t.fn.extend({addClass:function(e){return function(i,s,n,o){return s?t.effects.animateClass.call(this,{add:i},s,n,o):e.apply(this,arguments)}}(t.fn.addClass),removeClass:function(e){return function(i,s,n,o){return arguments.length>1?t.effects.animateClass.call(this,{remove:i},s,n,o):e.apply(this,arguments)}}(t.fn.removeClass),toggleClass:function(e){return function(i,s,n,o,a){return"boolean"==typeof s||void 0===s?n?t.effects.animateClass.call(this,s?{add:i}:{remove:i},n,o,a):e.apply(this,arguments):t.effects.animateClass.call(this,{toggle:i},s,n,o)}}(t.fn.toggleClass),switchClass:function(e,i,s,n,o){return t.effects.animateClass.call(this,{add:i,remove:e},s,n,o)}})}(),function(){function e(e,i,s,n){return t.isPlainObject(e)&&(i=e,e=e.effect),e={effect:e},null==i&&(i={}),t.isFunction(i)&&(n=i,s=null,i={}),("number"==typeof i||t.fx.speeds[i])&&(n=s,s=i,i={}),t.isFunction(s)&&(n=s,s=null),i&&t.extend(e,i),s=s||i.duration,e.duration=t.fx.off?0:"number"==typeof s?s:s in t.fx.speeds?t.fx.speeds[s]:t.fx.speeds._default,e.complete=n||i.complete,e}function i(e){return!e||"number"==typeof e||t.fx.speeds[e]?!0:"string"!=typeof e||t.effects.effect[e]?t.isFunction(e)?!0:"object"!=typeof e||e.effect?!1:!0:!0}function s(t,e){var i=e.outerWidth(),s=e.outerHeight(),n=/^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/,o=n.exec(t)||["",0,i,s,0];return{top:parseFloat(o[1])||0,right:"auto"===o[2]?i:parseFloat(o[2]),bottom:"auto"===o[3]?s:parseFloat(o[3]),left:parseFloat(o[4])||0}}t.expr&&t.expr.filters&&t.expr.filters.animated&&(t.expr.filters.animated=function(e){return function(i){return!!t(i).data(m)||e(i)}}(t.expr.filters.animated)),t.uiBackCompat!==!1&&t.extend(t.effects,{save:function(t,e){for(var i=0,s=e.length;s>i;i++)null!==e[i]&&t.data(f+e[i],t[0].style[e[i]])},restore:function(t,e){for(var i,s=0,n=e.length;n>s;s++)null!==e[s]&&(i=t.data(f+e[s]),t.css(e[s],i))},setMode:function(t,e){return"toggle"===e&&(e=t.is(":hidden")?"show":"hide"),e},createWrapper:function(e){if(e.parent().is(".ui-effects-wrapper"))return e.parent();var i={width:e.outerWidth(!0),height:e.outerHeight(!0),"float":e.css("float")},s=t("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),n={width:e.width(),height:e.height()},o=document.activeElement;try{o.id}catch(a){o=document.body}return e.wrap(s),(e[0]===o||t.contains(e[0],o))&&t(o).trigger("focus"),s=e.parent(),"static"===e.css("position")?(s.css({position:"relative"}),e.css({position:"relative"})):(t.extend(i,{position:e.css("position"),zIndex:e.css("z-index")}),t.each(["top","left","bottom","right"],function(t,s){i[s]=e.css(s),isNaN(parseInt(i[s],10))&&(i[s]="auto")}),e.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),e.css(n),s.css(i).show()},removeWrapper:function(e){var i=document.activeElement;return e.parent().is(".ui-effects-wrapper")&&(e.parent().replaceWith(e),(e[0]===i||t.contains(e[0],i))&&t(i).trigger("focus")),e}}),t.extend(t.effects,{version:"1.12.1",define:function(e,i,s){return s||(s=i,i="effect"),t.effects.effect[e]=s,t.effects.effect[e].mode=i,s},scaledDimensions:function(t,e,i){if(0===e)return{height:0,width:0,outerHeight:0,outerWidth:0};var s="horizontal"!==i?(e||100)/100:1,n="vertical"!==i?(e||100)/100:1;return{height:t.height()*n,width:t.width()*s,outerHeight:t.outerHeight()*n,outerWidth:t.outerWidth()*s}},clipToBox:function(t){return{width:t.clip.right-t.clip.left,height:t.clip.bottom-t.clip.top,left:t.clip.left,top:t.clip.top}},unshift:function(t,e,i){var s=t.queue();e>1&&s.splice.apply(s,[1,0].concat(s.splice(e,i))),t.dequeue()},saveStyle:function(t){t.data(g,t[0].style.cssText)},restoreStyle:function(t){t[0].style.cssText=t.data(g)||"",t.removeData(g)},mode:function(t,e){var i=t.is(":hidden");return"toggle"===e&&(e=i?"show":"hide"),(i?"hide"===e:"show"===e)&&(e="none"),e},getBaseline:function(t,e){var i,s;switch(t[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=t[0]/e.height}switch(t[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=t[1]/e.width}return{x:s,y:i}},createPlaceholder:function(e){var i,s=e.css("position"),n=e.position();return e.css({marginTop:e.css("marginTop"),marginBottom:e.css("marginBottom"),marginLeft:e.css("marginLeft"),marginRight:e.css("marginRight")}).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()),/^(static|relative)/.test(s)&&(s="absolute",i=t("<"+e[0].nodeName+">").insertAfter(e).css({display:/^(inline|ruby)/.test(e.css("display"))?"inline-block":"block",visibility:"hidden",marginTop:e.css("marginTop"),marginBottom:e.css("marginBottom"),marginLeft:e.css("marginLeft"),marginRight:e.css("marginRight"),"float":e.css("float")}).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()).addClass("ui-effects-placeholder"),e.data(f+"placeholder",i)),e.css({position:s,left:n.left,top:n.top}),i},removePlaceholder:function(t){var e=f+"placeholder",i=t.data(e);i&&(i.remove(),t.removeData(e))},cleanUp:function(e){t.effects.restoreStyle(e),t.effects.removePlaceholder(e)},setTransition:function(e,i,s,n){return n=n||{},t.each(i,function(t,i){var o=e.cssUnit(i);o[0]>0&&(n[i]=o[0]*s+o[1])}),n}}),t.fn.extend({effect:function(){function i(e){function i(){r.removeData(m),t.effects.cleanUp(r),"hide"===s.mode&&r.hide(),a()}function a(){t.isFunction(h)&&h.call(r[0]),t.isFunction(e)&&e()}var r=t(this);s.mode=c.shift(),t.uiBackCompat===!1||o?"none"===s.mode?(r[l](),a()):n.call(r[0],s,i):(r.is(":hidden")?"hide"===l:"show"===l)?(r[l](),a()):n.call(r[0],s,a)}var s=e.apply(this,arguments),n=t.effects.effect[s.effect],o=n.mode,a=s.queue,r=a||"fx",h=s.complete,l=s.mode,c=[],u=function(e){var i=t(this),s=t.effects.mode(i,l)||o;i.data(m,!0),c.push(s),o&&("show"===s||s===o&&"hide"===s)&&i.show(),o&&"none"===s||t.effects.saveStyle(i),t.isFunction(e)&&e()};return t.fx.off||!n?l?this[l](s.duration,h):this.each(function(){h&&h.call(this)}):a===!1?this.each(u).each(i):this.queue(r,u).queue(r,i)},show:function(t){return function(s){if(i(s))return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="show",this.effect.call(this,n)}}(t.fn.show),hide:function(t){return function(s){if(i(s))return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="hide",this.effect.call(this,n)}}(t.fn.hide),toggle:function(t){return function(s){if(i(s)||"boolean"==typeof s)return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="toggle",this.effect.call(this,n)}}(t.fn.toggle),cssUnit:function(e){var i=this.css(e),s=[];return t.each(["em","px","%","pt"],function(t,e){i.indexOf(e)>0&&(s=[parseFloat(i),e])}),s},cssClip:function(t){return t?this.css("clip","rect("+t.top+"px "+t.right+"px "+t.bottom+"px "+t.left+"px)"):s(this.css("clip"),this)},transfer:function(e,i){var s=t(this),n=t(e.to),o="fixed"===n.css("position"),a=t("body"),r=o?a.scrollTop():0,h=o?a.scrollLeft():0,l=n.offset(),c={top:l.top-r,left:l.left-h,height:n.innerHeight(),width:n.innerWidth()},u=s.offset(),d=t("<div class='ui-effects-transfer'></div>").appendTo("body").addClass(e.className).css({top:u.top-r,left:u.left-h,height:s.innerHeight(),width:s.innerWidth(),position:o?"fixed":"absolute"}).animate(c,e.duration,e.easing,function(){d.remove(),t.isFunction(i)&&i()})}}),t.fx.step.clip=function(e){e.clipInit||(e.start=t(e.elem).cssClip(),"string"==typeof e.end&&(e.end=s(e.end,e.elem)),e.clipInit=!0),t(e.elem).cssClip({top:e.pos*(e.end.top-e.start.top)+e.start.top,right:e.pos*(e.end.right-e.start.right)+e.start.right,bottom:e.pos*(e.end.bottom-e.start.bottom)+e.start.bottom,left:e.pos*(e.end.left-e.start.left)+e.start.left})}}(),function(){var e={};t.each(["Quad","Cubic","Quart","Quint","Expo"],function(t,i){e[i]=function(e){return Math.pow(e,t+2)}}),t.extend(e,{Sine:function(t){return 1-Math.cos(t*Math.PI/2)},Circ:function(t){return 1-Math.sqrt(1-t*t)},Elastic:function(t){return 0===t||1===t?t:-Math.pow(2,8*(t-1))*Math.sin((80*(t-1)-7.5)*Math.PI/15)},Back:function(t){return t*t*(3*t-2)},Bounce:function(t){for(var e,i=4;((e=Math.pow(2,--i))-1)/11>t;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*e-2)/22-t,2)}}),t.each(e,function(e,i){t.easing["easeIn"+e]=i,t.easing["easeOut"+e]=function(t){return 1-i(1-t)},t.easing["easeInOut"+e]=function(t){return.5>t?i(2*t)/2:1-i(-2*t+2)/2}})}();var v=t.effects;t.effects.define("blind","hide",function(e,i){var s={up:["bottom","top"],vertical:["bottom","top"],down:["top","bottom"],left:["right","left"],horizontal:["right","left"],right:["left","right"]},n=t(this),o=e.direction||"up",a=n.cssClip(),r={clip:t.extend({},a)},h=t.effects.createPlaceholder(n);r.clip[s[o][0]]=r.clip[s[o][1]],"show"===e.mode&&(n.cssClip(r.clip),h&&h.css(t.effects.clipToBox(r)),r.clip=a),h&&h.animate(t.effects.clipToBox(r),e.duration,e.easing),n.animate(r,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("bounce",function(e,i){var s,n,o,a=t(this),r=e.mode,h="hide"===r,l="show"===r,c=e.direction||"up",u=e.distance,d=e.times||5,p=2*d+(l||h?1:0),f=e.duration/p,g=e.easing,m="up"===c||"down"===c?"top":"left",_="up"===c||"left"===c,v=0,b=a.queue().length;for(t.effects.createPlaceholder(a),o=a.css(m),u||(u=a["top"===m?"outerHeight":"outerWidth"]()/3),l&&(n={opacity:1},n[m]=o,a.css("opacity",0).css(m,_?2*-u:2*u).animate(n,f,g)),h&&(u/=Math.pow(2,d-1)),n={},n[m]=o;d>v;v++)s={},s[m]=(_?"-=":"+=")+u,a.animate(s,f,g).animate(n,f,g),u=h?2*u:u/2;h&&(s={opacity:0},s[m]=(_?"-=":"+=")+u,a.animate(s,f,g)),a.queue(i),t.effects.unshift(a,b,p+1)}),t.effects.define("clip","hide",function(e,i){var s,n={},o=t(this),a=e.direction||"vertical",r="both"===a,h=r||"horizontal"===a,l=r||"vertical"===a;s=o.cssClip(),n.clip={top:l?(s.bottom-s.top)/2:s.top,right:h?(s.right-s.left)/2:s.right,bottom:l?(s.bottom-s.top)/2:s.bottom,left:h?(s.right-s.left)/2:s.left},t.effects.createPlaceholder(o),"show"===e.mode&&(o.cssClip(n.clip),n.clip=s),o.animate(n,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("drop","hide",function(e,i){var s,n=t(this),o=e.mode,a="show"===o,r=e.direction||"left",h="up"===r||"down"===r?"top":"left",l="up"===r||"left"===r?"-=":"+=",c="+="===l?"-=":"+=",u={opacity:0};t.effects.createPlaceholder(n),s=e.distance||n["top"===h?"outerHeight":"outerWidth"](!0)/2,u[h]=l+s,a&&(n.css(u),u[h]=c+s,u.opacity=1),n.animate(u,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("explode","hide",function(e,i){function s(){b.push(this),b.length===u*d&&n()}function n(){p.css({visibility:"visible"}),t(b).remove(),i()}var o,a,r,h,l,c,u=e.pieces?Math.round(Math.sqrt(e.pieces)):3,d=u,p=t(this),f=e.mode,g="show"===f,m=p.show().css("visibility","hidden").offset(),_=Math.ceil(p.outerWidth()/d),v=Math.ceil(p.outerHeight()/u),b=[];for(o=0;u>o;o++)for(h=m.top+o*v,c=o-(u-1)/2,a=0;d>a;a++)r=m.left+a*_,l=a-(d-1)/2,p.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-a*_,top:-o*v}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:_,height:v,left:r+(g?l*_:0),top:h+(g?c*v:0),opacity:g?0:1}).animate({left:r+(g?0:l*_),top:h+(g?0:c*v),opacity:g?1:0},e.duration||500,e.easing,s)}),t.effects.define("fade","toggle",function(e,i){var s="show"===e.mode;t(this).css("opacity",s?0:1).animate({opacity:s?1:0},{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("fold","hide",function(e,i){var s=t(this),n=e.mode,o="show"===n,a="hide"===n,r=e.size||15,h=/([0-9]+)%/.exec(r),l=!!e.horizFirst,c=l?["right","bottom"]:["bottom","right"],u=e.duration/2,d=t.effects.createPlaceholder(s),p=s.cssClip(),f={clip:t.extend({},p)},g={clip:t.extend({},p)},m=[p[c[0]],p[c[1]]],_=s.queue().length;h&&(r=parseInt(h[1],10)/100*m[a?0:1]),f.clip[c[0]]=r,g.clip[c[0]]=r,g.clip[c[1]]=0,o&&(s.cssClip(g.clip),d&&d.css(t.effects.clipToBox(g)),g.clip=p),s.queue(function(i){d&&d.animate(t.effects.clipToBox(f),u,e.easing).animate(t.effects.clipToBox(g),u,e.easing),i()}).animate(f,u,e.easing).animate(g,u,e.easing).queue(i),t.effects.unshift(s,_,4)}),t.effects.define("highlight","show",function(e,i){var s=t(this),n={backgroundColor:s.css("backgroundColor")};"hide"===e.mode&&(n.opacity=0),t.effects.saveStyle(s),s.css({backgroundImage:"none",backgroundColor:e.color||"#ffff99"}).animate(n,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("size",function(e,i){var s,n,o,a=t(this),r=["fontSize"],h=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],l=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],c=e.mode,u="effect"!==c,d=e.scale||"both",p=e.origin||["middle","center"],f=a.css("position"),g=a.position(),m=t.effects.scaledDimensions(a),_=e.from||m,v=e.to||t.effects.scaledDimensions(a,0);t.effects.createPlaceholder(a),"show"===c&&(o=_,_=v,v=o),n={from:{y:_.height/m.height,x:_.width/m.width},to:{y:v.height/m.height,x:v.width/m.width}},("box"===d||"both"===d)&&(n.from.y!==n.to.y&&(_=t.effects.setTransition(a,h,n.from.y,_),v=t.effects.setTransition(a,h,n.to.y,v)),n.from.x!==n.to.x&&(_=t.effects.setTransition(a,l,n.from.x,_),v=t.effects.setTransition(a,l,n.to.x,v))),("content"===d||"both"===d)&&n.from.y!==n.to.y&&(_=t.effects.setTransition(a,r,n.from.y,_),v=t.effects.setTransition(a,r,n.to.y,v)),p&&(s=t.effects.getBaseline(p,m),_.top=(m.outerHeight-_.outerHeight)*s.y+g.top,_.left=(m.outerWidth-_.outerWidth)*s.x+g.left,v.top=(m.outerHeight-v.outerHeight)*s.y+g.top,v.left=(m.outerWidth-v.outerWidth)*s.x+g.left),a.css(_),("content"===d||"both"===d)&&(h=h.concat(["marginTop","marginBottom"]).concat(r),l=l.concat(["marginLeft","marginRight"]),a.find("*[width]").each(function(){var i=t(this),s=t.effects.scaledDimensions(i),o={height:s.height*n.from.y,width:s.width*n.from.x,outerHeight:s.outerHeight*n.from.y,outerWidth:s.outerWidth*n.from.x},a={height:s.height*n.to.y,width:s.width*n.to.x,outerHeight:s.height*n.to.y,outerWidth:s.width*n.to.x};n.from.y!==n.to.y&&(o=t.effects.setTransition(i,h,n.from.y,o),a=t.effects.setTransition(i,h,n.to.y,a)),n.from.x!==n.to.x&&(o=t.effects.setTransition(i,l,n.from.x,o),a=t.effects.setTransition(i,l,n.to.x,a)),u&&t.effects.saveStyle(i),i.css(o),i.animate(a,e.duration,e.easing,function(){u&&t.effects.restoreStyle(i)})})),a.animate(v,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){var e=a.offset();0===v.opacity&&a.css("opacity",_.opacity),u||(a.css("position","static"===f?"relative":f).offset(e),t.effects.saveStyle(a)),i()}})}),t.effects.define("scale",function(e,i){var s=t(this),n=e.mode,o=parseInt(e.percent,10)||(0===parseInt(e.percent,10)?0:"effect"!==n?0:100),a=t.extend(!0,{from:t.effects.scaledDimensions(s),to:t.effects.scaledDimensions(s,o,e.direction||"both"),origin:e.origin||["middle","center"]},e);e.fade&&(a.from.opacity=1,a.to.opacity=0),t.effects.effect.size.call(this,a,i)}),t.effects.define("puff","hide",function(e,i){var s=t.extend(!0,{},e,{fade:!0,percent:parseInt(e.percent,10)||150});t.effects.effect.scale.call(this,s,i)}),t.effects.define("pulsate","show",function(e,i){var s=t(this),n=e.mode,o="show"===n,a="hide"===n,r=o||a,h=2*(e.times||5)+(r?1:0),l=e.duration/h,c=0,u=1,d=s.queue().length;for((o||!s.is(":visible"))&&(s.css("opacity",0).show(),c=1);h>u;u++)s.animate({opacity:c},l,e.easing),c=1-c;s.animate({opacity:c},l,e.easing),s.queue(i),t.effects.unshift(s,d,h+1)}),t.effects.define("shake",function(e,i){var s=1,n=t(this),o=e.direction||"left",a=e.distance||20,r=e.times||3,h=2*r+1,l=Math.round(e.duration/h),c="up"===o||"down"===o?"top":"left",u="up"===o||"left"===o,d={},p={},f={},g=n.queue().length;for(t.effects.createPlaceholder(n),d[c]=(u?"-=":"+=")+a,p[c]=(u?"+=":"-=")+2*a,f[c]=(u?"-=":"+=")+2*a,n.animate(d,l,e.easing);r>s;s++)n.animate(p,l,e.easing).animate(f,l,e.easing);n.animate(p,l,e.easing).animate(d,l/2,e.easing).queue(i),t.effects.unshift(n,g,h+1)}),t.effects.define("slide","show",function(e,i){var s,n,o=t(this),a={up:["bottom","top"],down:["top","bottom"],left:["right","left"],right:["left","right"]},r=e.mode,h=e.direction||"left",l="up"===h||"down"===h?"top":"left",c="up"===h||"left"===h,u=e.distance||o["top"===l?"outerHeight":"outerWidth"](!0),d={};t.effects.createPlaceholder(o),s=o.cssClip(),n=o.position()[l],d[l]=(c?-1:1)*u+n,d.clip=o.cssClip(),d.clip[a[h][1]]=d.clip[a[h][0]],"show"===r&&(o.cssClip(d.clip),o.css(l,d[l]),d.clip=s,d[l]=n),o.animate(d,{queue:!1,duration:e.duration,easing:e.easing,complete:i})});var v;t.uiBackCompat!==!1&&(v=t.effects.define("transfer",function(e,i){t(this).transfer(e,i)}))});
|
lib/Cleantalk/Antispam/Helper.php
CHANGED
@@ -121,7 +121,7 @@ class Helper
|
|
121 |
// Detect IP type
|
122 |
$ip_type = self::ip__validate(isset( $_SERVER['REMOTE_ADDR'] ) ? $_SERVER['REMOTE_ADDR'] : '');
|
123 |
if($ip_type)
|
124 |
-
$ips['real'] = $ip_type == 'v6' ? self::ip__v6_normalize(isset( $_SERVER['REMOTE_ADDR'] ) ? $_SERVER['REMOTE_ADDR'] : '') : isset( $_SERVER['REMOTE_ADDR'] ) ? $_SERVER['REMOTE_ADDR'] : '';
|
125 |
|
126 |
// Cloud Flare
|
127 |
if(isset($headers['CF-Connecting-IP'], $headers['CF-IPCountry'], $headers['CF-RAY']) || isset($headers['Cf-Connecting-Ip'], $headers['Cf-Ipcountry'], $headers['Cf-Ray'])){
|
@@ -256,8 +256,8 @@ class Helper
|
|
256 |
$ip_xtets = explode($ip_type == 'v4' ? '.' : ':', $ip);
|
257 |
|
258 |
// Standartizing. Getting current octets/hextets. Adding leading zeros.
|
259 |
-
$net_xtet = str_pad(decbin($ip_type == 'v4' ? $net_ip_xtets[$xtet_count] : hexdec($net_ip_xtets[$xtet_count])), $xtet_base, 0, STR_PAD_LEFT);
|
260 |
-
$ip_xtet = str_pad(decbin($ip_type == 'v4' ? $ip_xtets[$xtet_count] : hexdec($ip_xtets[$xtet_count])), $xtet_base, 0, STR_PAD_LEFT);
|
261 |
|
262 |
// Comparing bit by bit
|
263 |
for($i = 0, $result = true; $mask != 0; $mask--, $i++){
|
121 |
// Detect IP type
|
122 |
$ip_type = self::ip__validate(isset( $_SERVER['REMOTE_ADDR'] ) ? $_SERVER['REMOTE_ADDR'] : '');
|
123 |
if($ip_type)
|
124 |
+
$ips['real'] = ($ip_type == 'v6' ? self::ip__v6_normalize(isset( $_SERVER['REMOTE_ADDR'] ) ? $_SERVER['REMOTE_ADDR'] : '' ) : isset( $_SERVER['REMOTE_ADDR'] )) ? $_SERVER['REMOTE_ADDR'] : '';
|
125 |
|
126 |
// Cloud Flare
|
127 |
if(isset($headers['CF-Connecting-IP'], $headers['CF-IPCountry'], $headers['CF-RAY']) || isset($headers['Cf-Connecting-Ip'], $headers['Cf-Ipcountry'], $headers['Cf-Ray'])){
|
256 |
$ip_xtets = explode($ip_type == 'v4' ? '.' : ':', $ip);
|
257 |
|
258 |
// Standartizing. Getting current octets/hextets. Adding leading zeros.
|
259 |
+
$net_xtet = str_pad(decbin($ip_type == 'v4' ? $net_ip_xtets[$xtet_count] : @hexdec($net_ip_xtets[$xtet_count])), $xtet_base, 0, STR_PAD_LEFT);
|
260 |
+
$ip_xtet = str_pad(decbin($ip_type == 'v4' ? $ip_xtets[$xtet_count] : @hexdec($ip_xtets[$xtet_count])), $xtet_base, 0, STR_PAD_LEFT);
|
261 |
|
262 |
// Comparing bit by bit
|
263 |
for($i = 0, $result = true; $mask != 0; $mask--, $i++){
|
lib/Cleantalk/Common/Cookie.php
CHANGED
@@ -1,52 +1,52 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
namespace Cleantalk\Common;
|
4 |
-
|
5 |
-
/**
|
6 |
-
* Class Cookie
|
7 |
-
* Safety handler for $_COOKIE
|
8 |
-
*
|
9 |
-
* @usage \Cleantalk\Common\Cookie::get( $name );
|
10 |
-
*
|
11 |
-
* @package Cleantalk\Common
|
12 |
-
*/
|
13 |
-
class Cookie extends ServerVariables{
|
14 |
-
|
15 |
-
static $instance;
|
16 |
-
|
17 |
-
/**
|
18 |
-
* Constructor
|
19 |
-
* @return $this
|
20 |
-
*/
|
21 |
-
public static function getInstance(){
|
22 |
-
if (!isset(static::$instance)) {
|
23 |
-
static::$instance = new static;
|
24 |
-
static::$instance->init();
|
25 |
-
}
|
26 |
-
return static::$instance;
|
27 |
-
}
|
28 |
-
|
29 |
-
/**
|
30 |
-
* Gets given $_COOKIE variable and seva it to memory
|
31 |
-
* @param $name
|
32 |
-
*
|
33 |
-
* @return mixed|string
|
34 |
-
*/
|
35 |
-
protected function get_variable( $name ){
|
36 |
-
|
37 |
-
// Return from memory. From $this->variables
|
38 |
-
if(isset(static::$instance->variables[$name]))
|
39 |
-
return static::$instance->variables[$name];
|
40 |
-
|
41 |
-
if( function_exists( 'filter_input' ) )
|
42 |
-
$value = filter_input( INPUT_COOKIE, $name );
|
43 |
-
|
44 |
-
if( empty( $value ) )
|
45 |
-
$value = isset( $_COOKIE[ $name ] ) ? $_COOKIE[ $name ] : '';
|
46 |
-
|
47 |
-
// Remember for thurther calls
|
48 |
-
static::getInstance()->remebmer_variable( $name, $value );
|
49 |
-
|
50 |
-
return $value;
|
51 |
-
}
|
52 |
}
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Cleantalk\Common;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Class Cookie
|
7 |
+
* Safety handler for $_COOKIE
|
8 |
+
*
|
9 |
+
* @usage \Cleantalk\Common\Cookie::get( $name );
|
10 |
+
*
|
11 |
+
* @package Cleantalk\Common
|
12 |
+
*/
|
13 |
+
class Cookie extends ServerVariables{
|
14 |
+
|
15 |
+
static $instance;
|
16 |
+
|
17 |
+
/**
|
18 |
+
* Constructor
|
19 |
+
* @return $this
|
20 |
+
*/
|
21 |
+
public static function getInstance(){
|
22 |
+
if (!isset(static::$instance)) {
|
23 |
+
static::$instance = new static;
|
24 |
+
static::$instance->init();
|
25 |
+
}
|
26 |
+
return static::$instance;
|
27 |
+
}
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Gets given $_COOKIE variable and seva it to memory
|
31 |
+
* @param $name
|
32 |
+
*
|
33 |
+
* @return mixed|string
|
34 |
+
*/
|
35 |
+
protected function get_variable( $name ){
|
36 |
+
|
37 |
+
// Return from memory. From $this->variables
|
38 |
+
if(isset(static::$instance->variables[$name]))
|
39 |
+
return static::$instance->variables[$name];
|
40 |
+
|
41 |
+
if( function_exists( 'filter_input' ) )
|
42 |
+
$value = filter_input( INPUT_COOKIE, $name );
|
43 |
+
|
44 |
+
if( empty( $value ) )
|
45 |
+
$value = isset( $_COOKIE[ $name ] ) ? $_COOKIE[ $name ] : '';
|
46 |
+
|
47 |
+
// Remember for thurther calls
|
48 |
+
static::getInstance()->remebmer_variable( $name, $value );
|
49 |
+
|
50 |
+
return $value;
|
51 |
+
}
|
52 |
}
|
lib/Cleantalk/Common/Get.php
CHANGED
@@ -1,52 +1,52 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
namespace Cleantalk\Common;
|
4 |
-
|
5 |
-
/**
|
6 |
-
* Class Get
|
7 |
-
* Safety handler for $_GET
|
8 |
-
*
|
9 |
-
* @usage \Cleantalk\Common\Get::get( $name );
|
10 |
-
*
|
11 |
-
* @package Cleantalk\Common
|
12 |
-
*/
|
13 |
-
class Get extends ServerVariables{
|
14 |
-
|
15 |
-
static $instance;
|
16 |
-
|
17 |
-
/**
|
18 |
-
* Constructor
|
19 |
-
* @return $this
|
20 |
-
*/
|
21 |
-
public static function getInstance(){
|
22 |
-
if (!isset(static::$instance)) {
|
23 |
-
static::$instance = new static;
|
24 |
-
static::$instance->init();
|
25 |
-
}
|
26 |
-
return static::$instance;
|
27 |
-
}
|
28 |
-
|
29 |
-
/**
|
30 |
-
* Gets given $_GET variable and seva it to memory
|
31 |
-
* @param $name
|
32 |
-
*
|
33 |
-
* @return mixed|string
|
34 |
-
*/
|
35 |
-
protected function get_variable( $name ){
|
36 |
-
|
37 |
-
// Return from memory. From $this->variables
|
38 |
-
if(isset(static::$instance->variables[$name]))
|
39 |
-
return static::$instance->variable[$name];
|
40 |
-
|
41 |
-
if( function_exists( 'filter_input' ) )
|
42 |
-
$value = filter_input( INPUT_GET, $name );
|
43 |
-
|
44 |
-
if( empty( $value ) )
|
45 |
-
$value = isset( $_GET[ $name ] ) ? $_GET[ $name ] : '';
|
46 |
-
|
47 |
-
// Remember for thurther calls
|
48 |
-
static::getInstance()->remebmer_variable( $name, $value );
|
49 |
-
|
50 |
-
return $value;
|
51 |
-
}
|
52 |
}
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Cleantalk\Common;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Class Get
|
7 |
+
* Safety handler for $_GET
|
8 |
+
*
|
9 |
+
* @usage \Cleantalk\Common\Get::get( $name );
|
10 |
+
*
|
11 |
+
* @package Cleantalk\Common
|
12 |
+
*/
|
13 |
+
class Get extends ServerVariables{
|
14 |
+
|
15 |
+
static $instance;
|
16 |
+
|
17 |
+
/**
|
18 |
+
* Constructor
|
19 |
+
* @return $this
|
20 |
+
*/
|
21 |
+
public static function getInstance(){
|
22 |
+
if (!isset(static::$instance)) {
|
23 |
+
static::$instance = new static;
|
24 |
+
static::$instance->init();
|
25 |
+
}
|
26 |
+
return static::$instance;
|
27 |
+
}
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Gets given $_GET variable and seva it to memory
|
31 |
+
* @param $name
|
32 |
+
*
|
33 |
+
* @return mixed|string
|
34 |
+
*/
|
35 |
+
protected function get_variable( $name ){
|
36 |
+
|
37 |
+
// Return from memory. From $this->variables
|
38 |
+
if(isset(static::$instance->variables[$name]))
|
39 |
+
return static::$instance->variable[$name];
|
40 |
+
|
41 |
+
if( function_exists( 'filter_input' ) )
|
42 |
+
$value = filter_input( INPUT_GET, $name );
|
43 |
+
|
44 |
+
if( empty( $value ) )
|
45 |
+
$value = isset( $_GET[ $name ] ) ? $_GET[ $name ] : '';
|
46 |
+
|
47 |
+
// Remember for thurther calls
|
48 |
+
static::getInstance()->remebmer_variable( $name, $value );
|
49 |
+
|
50 |
+
return $value;
|
51 |
+
}
|
52 |
}
|
lib/Cleantalk/Common/Post.php
CHANGED
@@ -1,53 +1,53 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
|
4 |
-
namespace Cleantalk\Common;
|
5 |
-
|
6 |
-
/**
|
7 |
-
* Class Post
|
8 |
-
* Safety handler for $_POST
|
9 |
-
*
|
10 |
-
* @usage \Cleantalk\Common\Post::get( $name );
|
11 |
-
*
|
12 |
-
* @package Cleantalk\Common
|
13 |
-
*/
|
14 |
-
class Post extends ServerVariables{
|
15 |
-
|
16 |
-
static $instance;
|
17 |
-
|
18 |
-
/**
|
19 |
-
* Constructor
|
20 |
-
* @return $this
|
21 |
-
*/
|
22 |
-
public static function getInstance(){
|
23 |
-
if (!isset(static::$instance)) {
|
24 |
-
static::$instance = new static;
|
25 |
-
static::$instance->init();
|
26 |
-
}
|
27 |
-
return static::$instance;
|
28 |
-
}
|
29 |
-
|
30 |
-
/**
|
31 |
-
* Gets given $_POST variable and seva it to memory
|
32 |
-
* @param $name
|
33 |
-
*
|
34 |
-
* @return mixed|string
|
35 |
-
*/
|
36 |
-
protected function get_variable( $name ){
|
37 |
-
|
38 |
-
// Return from memory. From $this->variables
|
39 |
-
if(isset(static::$instance->variables[$name]))
|
40 |
-
return static::$instance->variables[$name];
|
41 |
-
|
42 |
-
if( function_exists( 'filter_input' ) )
|
43 |
-
$value = filter_input( INPUT_POST, $name );
|
44 |
-
|
45 |
-
if( empty( $value ) )
|
46 |
-
$value = isset( $_POST[ $name ] ) ? $_POST[ $name ] : '';
|
47 |
-
|
48 |
-
// Remember for thurther calls
|
49 |
-
static::getInstance()->remebmer_variable( $name, $value );
|
50 |
-
|
51 |
-
return $value;
|
52 |
-
}
|
53 |
}
|
1 |
+
<?php
|
2 |
+
|
3 |
+
|
4 |
+
namespace Cleantalk\Common;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* Class Post
|
8 |
+
* Safety handler for $_POST
|
9 |
+
*
|
10 |
+
* @usage \Cleantalk\Common\Post::get( $name );
|
11 |
+
*
|
12 |
+
* @package Cleantalk\Common
|
13 |
+
*/
|
14 |
+
class Post extends ServerVariables{
|
15 |
+
|
16 |
+
static $instance;
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Constructor
|
20 |
+
* @return $this
|
21 |
+
*/
|
22 |
+
public static function getInstance(){
|
23 |
+
if (!isset(static::$instance)) {
|
24 |
+
static::$instance = new static;
|
25 |
+
static::$instance->init();
|
26 |
+
}
|
27 |
+
return static::$instance;
|
28 |
+
}
|
29 |
+
|
30 |
+
/**
|
31 |
+
* Gets given $_POST variable and seva it to memory
|
32 |
+
* @param $name
|
33 |
+
*
|
34 |
+
* @return mixed|string
|
35 |
+
*/
|
36 |
+
protected function get_variable( $name ){
|
37 |
+
|
38 |
+
// Return from memory. From $this->variables
|
39 |
+
if(isset(static::$instance->variables[$name]))
|
40 |
+
return static::$instance->variables[$name];
|
41 |
+
|
42 |
+
if( function_exists( 'filter_input' ) )
|
43 |
+
$value = filter_input( INPUT_POST, $name );
|
44 |
+
|
45 |
+
if( empty( $value ) )
|
46 |
+
$value = isset( $_POST[ $name ] ) ? $_POST[ $name ] : '';
|
47 |
+
|
48 |
+
// Remember for thurther calls
|
49 |
+
static::getInstance()->remebmer_variable( $name, $value );
|
50 |
+
|
51 |
+
return $value;
|
52 |
+
}
|
53 |
}
|
lib/Cleantalk/Common/Request.php
CHANGED
@@ -1,48 +1,48 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
namespace Cleantalk\Common;
|
4 |
-
|
5 |
-
/**
|
6 |
-
* Class Request
|
7 |
-
* Safety handler for $_REQUEST
|
8 |
-
*
|
9 |
-
* @usage \Cleantalk\Common\Request::get( $name );
|
10 |
-
*
|
11 |
-
* @package Cleantalk\Common
|
12 |
-
*/
|
13 |
-
class Request extends ServerVariables{
|
14 |
-
|
15 |
-
static $instance;
|
16 |
-
|
17 |
-
/**
|
18 |
-
* Constructor
|
19 |
-
* @return $this
|
20 |
-
*/
|
21 |
-
public static function getInstance(){
|
22 |
-
if (!isset(static::$instance)) {
|
23 |
-
static::$instance = new static;
|
24 |
-
static::$instance->init();
|
25 |
-
}
|
26 |
-
return static::$instance;
|
27 |
-
}
|
28 |
-
|
29 |
-
/**
|
30 |
-
* Gets given $_REQUEST variable and seva it to memory
|
31 |
-
* @param $name
|
32 |
-
*
|
33 |
-
* @return mixed|string
|
34 |
-
*/
|
35 |
-
protected function get_variable( $name ){
|
36 |
-
|
37 |
-
// Return from memory. From $this->variables
|
38 |
-
if(isset(static::$instance->variables[$name]))
|
39 |
-
return static::$instance->variables[$name];
|
40 |
-
|
41 |
-
$value = isset( $_REQUEST[ $name ] ) ? $_REQUEST[ $name ] : '';
|
42 |
-
|
43 |
-
// Remember for thurther calls
|
44 |
-
static::getInstance()->remebmer_variable( $name, $value );
|
45 |
-
|
46 |
-
return $value;
|
47 |
-
}
|
48 |
}
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Cleantalk\Common;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Class Request
|
7 |
+
* Safety handler for $_REQUEST
|
8 |
+
*
|
9 |
+
* @usage \Cleantalk\Common\Request::get( $name );
|
10 |
+
*
|
11 |
+
* @package Cleantalk\Common
|
12 |
+
*/
|
13 |
+
class Request extends ServerVariables{
|
14 |
+
|
15 |
+
static $instance;
|
16 |
+
|
17 |
+
/**
|
18 |
+
* Constructor
|
19 |
+
* @return $this
|
20 |
+
*/
|
21 |
+
public static function getInstance(){
|
22 |
+
if (!isset(static::$instance)) {
|
23 |
+
static::$instance = new static;
|
24 |
+
static::$instance->init();
|
25 |
+
}
|
26 |
+
return static::$instance;
|
27 |
+
}
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Gets given $_REQUEST variable and seva it to memory
|
31 |
+
* @param $name
|
32 |
+
*
|
33 |
+
* @return mixed|string
|
34 |
+
*/
|
35 |
+
protected function get_variable( $name ){
|
36 |
+
|
37 |
+
// Return from memory. From $this->variables
|
38 |
+
if(isset(static::$instance->variables[$name]))
|
39 |
+
return static::$instance->variables[$name];
|
40 |
+
|
41 |
+
$value = isset( $_REQUEST[ $name ] ) ? $_REQUEST[ $name ] : '';
|
42 |
+
|
43 |
+
// Remember for thurther calls
|
44 |
+
static::getInstance()->remebmer_variable( $name, $value );
|
45 |
+
|
46 |
+
return $value;
|
47 |
+
}
|
48 |
}
|
lib/Cleantalk/Common/Server.php
CHANGED
@@ -1,83 +1,83 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
namespace Cleantalk\Common;
|
4 |
-
|
5 |
-
/**
|
6 |
-
* Class Server
|
7 |
-
* Wrapper to safely get $_SERVER variables
|
8 |
-
*
|
9 |
-
* @package Cleantalk\Common
|
10 |
-
*/
|
11 |
-
class Server extends ServerVariables{
|
12 |
-
|
13 |
-
static $instance;
|
14 |
-
|
15 |
-
/**
|
16 |
-
* Constructor
|
17 |
-
* @return $this
|
18 |
-
*/
|
19 |
-
public static function getInstance(){
|
20 |
-
if (!isset(static::$instance)) {
|
21 |
-
static::$instance = new static;
|
22 |
-
static::$instance->init();
|
23 |
-
}
|
24 |
-
return static::$instance;
|
25 |
-
}
|
26 |
-
|
27 |
-
/**
|
28 |
-
* Gets given $_SERVER variable and seva it to memory
|
29 |
-
*
|
30 |
-
* @param string $name
|
31 |
-
*
|
32 |
-
* @return mixed|string
|
33 |
-
*/
|
34 |
-
protected function get_variable( $name ){
|
35 |
-
|
36 |
-
// Return from memory. From $this->server
|
37 |
-
if(isset(static::$instance->variable[$name]))
|
38 |
-
return static::$instance->variable[$name];
|
39 |
-
|
40 |
-
$name = strtoupper( $name );
|
41 |
-
|
42 |
-
if( function_exists( 'filter_input' ) )
|
43 |
-
$value = filter_input( INPUT_SERVER, $name );
|
44 |
-
|
45 |
-
if( empty( $value ) )
|
46 |
-
$value = isset( $_SERVER[ $name ] ) ? $_SERVER[ $name ] : '';
|
47 |
-
|
48 |
-
// Convert to upper case for REQUEST_METHOD
|
49 |
-
if( in_array( $name, array( 'REQUEST_METHOD' ) ) )
|
50 |
-
$value = strtoupper( $value );
|
51 |
-
|
52 |
-
// Convert HTML chars for HTTP_USER_AGENT, HTTP_USER_AGENT, SERVER_NAME
|
53 |
-
if( in_array( $name, array( 'HTTP_USER_AGENT', 'HTTP_USER_AGENT', 'SERVER_NAME' ) ) )
|
54 |
-
$value = htmlspecialchars( $value );
|
55 |
-
|
56 |
-
// Remember for thurther calls
|
57 |
-
static::getInstance()->remebmer_variable( $name, $value );
|
58 |
-
|
59 |
-
return $value;
|
60 |
-
}
|
61 |
-
|
62 |
-
/**
|
63 |
-
* Checks if $_SERVER['REQUEST_URI'] contains string
|
64 |
-
*
|
65 |
-
* @param string $string needle
|
66 |
-
*
|
67 |
-
* @return bool|int
|
68 |
-
*/
|
69 |
-
public function in_uri( $string ){
|
70 |
-
return self::has_string( 'REQUEST_URI', $string );
|
71 |
-
}
|
72 |
-
|
73 |
-
/**
|
74 |
-
* Checks if $_SERVER['REQUEST_URI'] contains string
|
75 |
-
*
|
76 |
-
* @param string $string needle
|
77 |
-
*
|
78 |
-
* @return bool|int
|
79 |
-
*/
|
80 |
-
public function in_referer( $string ){
|
81 |
-
return self::has_string( 'HTTP_REFERER', $string );
|
82 |
-
}
|
83 |
}
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Cleantalk\Common;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Class Server
|
7 |
+
* Wrapper to safely get $_SERVER variables
|
8 |
+
*
|
9 |
+
* @package Cleantalk\Common
|
10 |
+
*/
|
11 |
+
class Server extends ServerVariables{
|
12 |
+
|
13 |
+
static $instance;
|
14 |
+
|
15 |
+
/**
|
16 |
+
* Constructor
|
17 |
+
* @return $this
|
18 |
+
*/
|
19 |
+
public static function getInstance(){
|
20 |
+
if (!isset(static::$instance)) {
|
21 |
+
static::$instance = new static;
|
22 |
+
static::$instance->init();
|
23 |
+
}
|
24 |
+
return static::$instance;
|
25 |
+
}
|
26 |
+
|
27 |
+
/**
|
28 |
+
* Gets given $_SERVER variable and seva it to memory
|
29 |
+
*
|
30 |
+
* @param string $name
|
31 |
+
*
|
32 |
+
* @return mixed|string
|
33 |
+
*/
|
34 |
+
protected function get_variable( $name ){
|
35 |
+
|
36 |
+
// Return from memory. From $this->server
|
37 |
+
if(isset(static::$instance->variable[$name]))
|
38 |
+
return static::$instance->variable[$name];
|
39 |
+
|
40 |
+
$name = strtoupper( $name );
|
41 |
+
|
42 |
+
if( function_exists( 'filter_input' ) )
|
43 |
+
$value = filter_input( INPUT_SERVER, $name );
|
44 |
+
|
45 |
+
if( empty( $value ) )
|
46 |
+
$value = isset( $_SERVER[ $name ] ) ? $_SERVER[ $name ] : '';
|
47 |
+
|
48 |
+
// Convert to upper case for REQUEST_METHOD
|
49 |
+
if( in_array( $name, array( 'REQUEST_METHOD' ) ) )
|
50 |
+
$value = strtoupper( $value );
|
51 |
+
|
52 |
+
// Convert HTML chars for HTTP_USER_AGENT, HTTP_USER_AGENT, SERVER_NAME
|
53 |
+
if( in_array( $name, array( 'HTTP_USER_AGENT', 'HTTP_USER_AGENT', 'SERVER_NAME' ) ) )
|
54 |
+
$value = htmlspecialchars( $value );
|
55 |
+
|
56 |
+
// Remember for thurther calls
|
57 |
+
static::getInstance()->remebmer_variable( $name, $value );
|
58 |
+
|
59 |
+
return $value;
|
60 |
+
}
|
61 |
+
|
62 |
+
/**
|
63 |
+
* Checks if $_SERVER['REQUEST_URI'] contains string
|
64 |
+
*
|
65 |
+
* @param string $string needle
|
66 |
+
*
|
67 |
+
* @return bool|int
|
68 |
+
*/
|
69 |
+
public function in_uri( $string ){
|
70 |
+
return self::has_string( 'REQUEST_URI', $string );
|
71 |
+
}
|
72 |
+
|
73 |
+
/**
|
74 |
+
* Checks if $_SERVER['REQUEST_URI'] contains string
|
75 |
+
*
|
76 |
+
* @param string $string needle
|
77 |
+
*
|
78 |
+
* @return bool|int
|
79 |
+
*/
|
80 |
+
public function in_referer( $string ){
|
81 |
+
return self::has_string( 'HTTP_REFERER', $string );
|
82 |
+
}
|
83 |
}
|
lib/Cleantalk/Common/ServerVariables.php
CHANGED
@@ -1,84 +1,84 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
namespace Cleantalk\Common;
|
4 |
-
|
5 |
-
/**
|
6 |
-
* Class ServerVariables
|
7 |
-
* Safety handler for ${_SOMETHING}
|
8 |
-
*
|
9 |
-
* @usage \Cleantalk\Common\{SOMETHING}::get( $name );
|
10 |
-
*
|
11 |
-
* @package Cleantalk\Common
|
12 |
-
*/
|
13 |
-
class ServerVariables{
|
14 |
-
|
15 |
-
static $instance;
|
16 |
-
public $variables = [];
|
17 |
-
|
18 |
-
public function __construct(){}
|
19 |
-
public function __wakeup(){}
|
20 |
-
public function __clone(){}
|
21 |
-
|
22 |
-
/**
|
23 |
-
* Constructor
|
24 |
-
* @return $this
|
25 |
-
*/
|
26 |
-
public static function getInstance(){
|
27 |
-
if (!isset(static::$instance)) {
|
28 |
-
static::$instance = new static;
|
29 |
-
static::$instance->init();
|
30 |
-
}
|
31 |
-
return static::$instance;
|
32 |
-
}
|
33 |
-
|
34 |
-
/**
|
35 |
-
* Alternative constructor
|
36 |
-
*/
|
37 |
-
protected function init(){
|
38 |
-
|
39 |
-
}
|
40 |
-
|
41 |
-
/**
|
42 |
-
* Gets variable from ${_SOMETHING}
|
43 |
-
*
|
44 |
-
* @param $name
|
45 |
-
*
|
46 |
-
* @return string ${_SOMETHING}[ $name ]
|
47 |
-
*/
|
48 |
-
public static function get( $name ){
|
49 |
-
return static::getInstance()->get_variable( $name );
|
50 |
-
}
|
51 |
-
|
52 |
-
/**
|
53 |
-
* BLUEPRINT
|
54 |
-
* Gets given ${_SOMETHING} variable and seva it to memory
|
55 |
-
* @param $name
|
56 |
-
*
|
57 |
-
* @return mixed|string
|
58 |
-
*/
|
59 |
-
protected function get_variable( $name ){
|
60 |
-
return true;
|
61 |
-
}
|
62 |
-
|
63 |
-
/**
|
64 |
-
* Save variable to $this->variables[]
|
65 |
-
*
|
66 |
-
* @param string $name
|
67 |
-
* @param string $value
|
68 |
-
*/
|
69 |
-
protected function remebmer_variable( $name, $value ){
|
70 |
-
static::$instance->variables[$name] = $value;
|
71 |
-
}
|
72 |
-
|
73 |
-
/**
|
74 |
-
* Checks if variable contains given string
|
75 |
-
*
|
76 |
-
* @param string $var Haystack to search in
|
77 |
-
* @param string $string Needle to search
|
78 |
-
*
|
79 |
-
* @return bool|int
|
80 |
-
*/
|
81 |
-
static function has_string( $var, $string ){
|
82 |
-
return stripos( self::get( $var ), $string ) !== false;
|
83 |
-
}
|
84 |
}
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Cleantalk\Common;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Class ServerVariables
|
7 |
+
* Safety handler for ${_SOMETHING}
|
8 |
+
*
|
9 |
+
* @usage \Cleantalk\Common\{SOMETHING}::get( $name );
|
10 |
+
*
|
11 |
+
* @package Cleantalk\Common
|
12 |
+
*/
|
13 |
+
class ServerVariables{
|
14 |
+
|
15 |
+
static $instance;
|
16 |
+
public $variables = [];
|
17 |
+
|
18 |
+
public function __construct(){}
|
19 |
+
public function __wakeup(){}
|
20 |
+
public function __clone(){}
|
21 |
+
|
22 |
+
/**
|
23 |
+
* Constructor
|
24 |
+
* @return $this
|
25 |
+
*/
|
26 |
+
public static function getInstance(){
|
27 |
+
if (!isset(static::$instance)) {
|
28 |
+
static::$instance = new static;
|
29 |
+
static::$instance->init();
|
30 |
+
}
|
31 |
+
return static::$instance;
|
32 |
+
}
|
33 |
+
|
34 |
+
/**
|
35 |
+
* Alternative constructor
|
36 |
+
*/
|
37 |
+
protected function init(){
|
38 |
+
|
39 |
+
}
|
40 |
+
|
41 |
+
/**
|
42 |
+
* Gets variable from ${_SOMETHING}
|
43 |
+
*
|
44 |
+
* @param $name
|
45 |
+
*
|
46 |
+
* @return string ${_SOMETHING}[ $name ]
|
47 |
+
*/
|
48 |
+
public static function get( $name ){
|
49 |
+
return static::getInstance()->get_variable( $name );
|
50 |
+
}
|
51 |
+
|
52 |
+
/**
|
53 |
+
* BLUEPRINT
|
54 |
+
* Gets given ${_SOMETHING} variable and seva it to memory
|
55 |
+
* @param $name
|
56 |
+
*
|
57 |
+
* @return mixed|string
|
58 |
+
*/
|
59 |
+
protected function get_variable( $name ){
|
60 |
+
return true;
|
61 |
+
}
|
62 |
+
|
63 |
+
/**
|
64 |
+
* Save variable to $this->variables[]
|
65 |
+
*
|
66 |
+
* @param string $name
|
67 |
+
* @param string $value
|
68 |
+
*/
|
69 |
+
protected function remebmer_variable( $name, $value ){
|
70 |
+
static::$instance->variables[$name] = $value;
|
71 |
+
}
|
72 |
+
|
73 |
+
/**
|
74 |
+
* Checks if variable contains given string
|
75 |
+
*
|
76 |
+
* @param string $var Haystack to search in
|
77 |
+
* @param string $string Needle to search
|
78 |
+
*
|
79 |
+
* @return bool|int
|
80 |
+
*/
|
81 |
+
static function has_string( $var, $string ){
|
82 |
+
return stripos( self::get( $var ), $string ) !== false;
|
83 |
+
}
|
84 |
}
|
lib/CleantalkState.php
CHANGED
@@ -499,7 +499,7 @@ class CleantalkState
|
|
499 |
public function __set($name, $value)
|
500 |
{
|
501 |
$this->storage[$name] = $value;
|
502 |
-
if(isset($this->storage['data']
|
503 |
$this->storage['data'][$name] = $value;
|
504 |
}
|
505 |
}
|
@@ -515,11 +515,11 @@ class CleantalkState
|
|
515 |
public function __get($name)
|
516 |
{
|
517 |
// First check in storage
|
518 |
-
if (
|
519 |
return $this->storage[$name];
|
520 |
|
521 |
// Then in data
|
522 |
-
}elseif(
|
523 |
$this->$name = $this->storage['data'][$name];
|
524 |
return $this->storage['data'][$name];
|
525 |
|
@@ -541,4 +541,20 @@ class CleantalkState
|
|
541 |
{
|
542 |
unset($this->storage[$name]);
|
543 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
544 |
}
|
499 |
public function __set($name, $value)
|
500 |
{
|
501 |
$this->storage[$name] = $value;
|
502 |
+
if(isset($this->storage['data'][$name])){
|
503 |
$this->storage['data'][$name] = $value;
|
504 |
}
|
505 |
}
|
515 |
public function __get($name)
|
516 |
{
|
517 |
// First check in storage
|
518 |
+
if (isset($this->storage[$name])){
|
519 |
return $this->storage[$name];
|
520 |
|
521 |
// Then in data
|
522 |
+
}elseif(isset($this->storage['data'][$name])){
|
523 |
$this->$name = $this->storage['data'][$name];
|
524 |
return $this->storage['data'][$name];
|
525 |
|
541 |
{
|
542 |
unset($this->storage[$name]);
|
543 |
}
|
544 |
+
|
545 |
+
public function server(){
|
546 |
+
return \Cleantalk\Common\Server::getInstance();
|
547 |
+
}
|
548 |
+
public function cookie(){
|
549 |
+
return \Cleantalk\Common\Cookie::getInstance();
|
550 |
+
}
|
551 |
+
public function request(){
|
552 |
+
return \Cleantalk\Common\Request::getInstance();
|
553 |
+
}
|
554 |
+
public function post(){
|
555 |
+
return \Cleantalk\Common\Post::getInstance();
|
556 |
+
}
|
557 |
+
public function get(){
|
558 |
+
return \Cleantalk\Common\Get::getInstance();
|
559 |
+
}
|
560 |
}
|
lib/CleantalkUpgraderSkin_Deprecated.php
CHANGED
@@ -1,44 +1,44 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class CleantalkUpgraderSkin_Deprecated extends WP_Upgrader_Skin
|
4 |
-
{
|
5 |
-
|
6 |
-
public $upgrader;
|
7 |
-
public $done_header = false;
|
8 |
-
public $done_footer = false;
|
9 |
-
|
10 |
-
/**
|
11 |
-
* Holds the result of an upgrade.
|
12 |
-
*
|
13 |
-
* @since 2.8.0
|
14 |
-
* @var string|bool|WP_Error
|
15 |
-
*/
|
16 |
-
public $result = false;
|
17 |
-
public $options = array();
|
18 |
-
|
19 |
-
/**
|
20 |
-
*/
|
21 |
-
public function header() { }
|
22 |
-
|
23 |
-
/**
|
24 |
-
*/
|
25 |
-
public function footer() { }
|
26 |
-
|
27 |
-
/**
|
28 |
-
*
|
29 |
-
* @param string $string
|
30 |
-
*/
|
31 |
-
public function feedback($string) { }
|
32 |
-
|
33 |
-
/**
|
34 |
-
*
|
35 |
-
* @param string|WP_Error $errors
|
36 |
-
*/
|
37 |
-
public function error($errors) {
|
38 |
-
if(is_wp_error($errors)){
|
39 |
-
$this->upgrader->apbct_result = $errors->get_error_code();
|
40 |
-
}else{
|
41 |
-
$this->upgrader->apbct_result = $this->upgrader->strings[$errors];
|
42 |
-
}
|
43 |
-
}
|
44 |
-
}
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class CleantalkUpgraderSkin_Deprecated extends WP_Upgrader_Skin
|
4 |
+
{
|
5 |
+
|
6 |
+
public $upgrader;
|
7 |
+
public $done_header = false;
|
8 |
+
public $done_footer = false;
|
9 |
+
|
10 |
+
/**
|
11 |
+
* Holds the result of an upgrade.
|
12 |
+
*
|
13 |
+
* @since 2.8.0
|
14 |
+
* @var string|bool|WP_Error
|
15 |
+
*/
|
16 |
+
public $result = false;
|
17 |
+
public $options = array();
|
18 |
+
|
19 |
+
/**
|
20 |
+
*/
|
21 |
+
public function header() { }
|
22 |
+
|
23 |
+
/**
|
24 |
+
*/
|
25 |
+
public function footer() { }
|
26 |
+
|
27 |
+
/**
|
28 |
+
*
|
29 |
+
* @param string $string
|
30 |
+
*/
|
31 |
+
public function feedback($string) { }
|
32 |
+
|
33 |
+
/**
|
34 |
+
*
|
35 |
+
* @param string|WP_Error $errors
|
36 |
+
*/
|
37 |
+
public function error($errors) {
|
38 |
+
if(is_wp_error($errors)){
|
39 |
+
$this->upgrader->apbct_result = $errors->get_error_code();
|
40 |
+
}else{
|
41 |
+
$this->upgrader->apbct_result = $this->upgrader->strings[$errors];
|
42 |
+
}
|
43 |
+
}
|
44 |
+
}
|
lib/autoloader.php
ADDED
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Autoloader for \Cleantalk\* classes
|
5 |
+
*
|
6 |
+
* @param string $class
|
7 |
+
*
|
8 |
+
* @return void
|
9 |
+
*/
|
10 |
+
spl_autoload_register( function( $class ){
|
11 |
+
|
12 |
+
// Register class auto loader
|
13 |
+
// Custom modules1
|
14 |
+
if(strpos($class, 'Cleantalk') !== false){
|
15 |
+
$class = str_replace('\\', DIRECTORY_SEPARATOR, $class);
|
16 |
+
$class_file = __DIR__ . DIRECTORY_SEPARATOR . $class . '.php';
|
17 |
+
if(file_exists($class_file)){
|
18 |
+
require_once($class_file);
|
19 |
+
}
|
20 |
+
}
|
21 |
+
});
|
22 |
+
|
23 |
+
|
readme.txt
CHANGED
@@ -4,7 +4,7 @@ Tags: spam, antispam, woocommerce, comments, firewall
|
|
4 |
Requires at least: 3.0
|
5 |
Tested up to: 5.3
|
6 |
Requires PHP: 5.4
|
7 |
-
Stable tag: 5.
|
8 |
License: GPLv2
|
9 |
|
10 |
Spam protection, antispam, firewall, premium plugin. No spam comments & users, no spam contact form & WooCommerce anti-spam.
|
@@ -432,26 +432,12 @@ or
|
|
432 |
define('CLEANTALK_AJAX_USE_FOOTER_HEADER', false); //false - don't use wp_footer() and wp_header() for including AJAX script, true - use it
|
433 |
|
434 |
= Can I add exclusions for some pages of my site? =
|
435 |
-
Yes, you can.
|
436 |
-
|
437 |
-
$cleantalk_url_exclusions = array('url1', 'url2', 'url3');
|
438 |
-
|
439 |
-
Now, all pages containing strings 'url1', 'url2', or 'url3' will be excluded from anti-spam checking. Remember, that this option will not be applied in registration and comment checking - they are always protected from spam. This is similar to regular expression /.*url1.*/ or wildcard like *url1*.
|
440 |
-
|
441 |
-
For example: If you need to except these URLs:
|
442 |
-
example.com/some/thing
|
443 |
-
example.com/some/one
|
444 |
-
example.com/some/body
|
445 |
-
You should type this in wp-config.php:
|
446 |
-
|
447 |
-
$cleantalk_url_exclusions = array('some');
|
448 |
|
449 |
= Can I not send my personal data to CleanTalk servers? =
|
450 |
-
Yes, you can exclude your data.
|
451 |
-
|
452 |
-
$cleantalk_key_exclusions = Array('key1', 'key2', 'key3');
|
453 |
-
|
454 |
-
Now all fields in your submissions with the keys named 'key1', 'key2' or 'key3' will be excluded from spam checking.
|
455 |
|
456 |
= How to test Spam FireWall? =
|
457 |
Use special IP 10.10.10.10 in URL to test Spam FireWall. For example,
|
@@ -579,6 +565,16 @@ If your website has forms that send data to external sources, you can enable opt
|
|
579 |
10. Website's options.
|
580 |
|
581 |
== Changelog ==
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
582 |
= 5.132.3 December 19 2019 =
|
583 |
* Fix: The disable comments functionality.
|
584 |
|
4 |
Requires at least: 3.0
|
5 |
Tested up to: 5.3
|
6 |
Requires PHP: 5.4
|
7 |
+
Stable tag: 5.133
|
8 |
License: GPLv2
|
9 |
|
10 |
Spam protection, antispam, firewall, premium plugin. No spam comments & users, no spam contact form & WooCommerce anti-spam.
|
432 |
define('CLEANTALK_AJAX_USE_FOOTER_HEADER', false); //false - don't use wp_footer() and wp_header() for including AJAX script, true - use it
|
433 |
|
434 |
= Can I add exclusions for some pages of my site? =
|
435 |
+
Yes, you can. There is a special setting in plugin settings.
|
436 |
+
You could use this guide to learn more: https://cleantalk.org/help/exclusion-from-anti-spam-checking#wordpress
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
437 |
|
438 |
= Can I not send my personal data to CleanTalk servers? =
|
439 |
+
Yes, you can exclude your data. There is a special setting in plugin settings.
|
440 |
+
You could use this guide to learn more: https://cleantalk.org/help/exclusion-from-anti-spam-checking#WordPress_field_exclusions
|
|
|
|
|
|
|
441 |
|
442 |
= How to test Spam FireWall? =
|
443 |
Use special IP 10.10.10.10 in URL to test Spam FireWall. For example,
|
565 |
10. Website's options.
|
566 |
|
567 |
== Changelog ==
|
568 |
+
|
569 |
+
= 5.133 January 20 2020 =
|
570 |
+
* Upd: Rebuilding users/comments scan
|
571 |
+
* Fix: UltimateMember - form validation checking fixed.
|
572 |
+
* Fix: Exclusion for login form.
|
573 |
+
* Fix: Disable scripts on excluded pages.
|
574 |
+
* Fix: PHP 7.4 compability.
|
575 |
+
* Minor fixes.
|
576 |
+
* Spam protection improved.
|
577 |
+
|
578 |
= 5.132.3 December 19 2019 =
|
579 |
* Fix: The disable comments functionality.
|
580 |
|
templates/empty_comments.php
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Empty comments template
|