Clearfy – WordPress optimization plugin and disable ultimate tweaker - Version 1.4.6

Version Description

  • Fixed: Bug when license activated [Call to undefined function mime_content_type].
  • Fixed: Disable comments component: [Uncaught Error: Class 'WCTR_Plugin' not found].
  • Fixed: Removed notifications that cannot be dismissed.
  • Fixed: Update manager component: [Notice: Trying to get property of non-object].
  • Fixed: Update manager component: [Warning: Invalid argument supplied].
Download this release

Release Info

Developer webcraftic
Plugin Icon 128x128 Clearfy – WordPress optimization plugin and disable ultimate tweaker
Version 1.4.6
Comparing to
See all releases

Code changes from version 1.3.184 to 1.4.6

Files changed (128) hide show
  1. admin/activation.php +28 -24
  2. admin/ajax/check-license.php +87 -0
  3. admin/ajax/configurate.php +4 -20
  4. admin/ajax/import-settings.php +76 -26
  5. admin/ajax/install-addons.php +19 -6
  6. admin/ajax/update-package.php +40 -13
  7. admin/assets/css/base-statistic.css +405 -0
  8. admin/assets/css/base-statistic.less +494 -0
  9. admin/assets/css/components.css +30 -2
  10. admin/assets/css/components.less +42 -2
  11. admin/assets/css/general.css +33 -35
  12. admin/assets/css/install-addons.css +31 -31
  13. admin/assets/img/gac-icon-128x128.jpg +0 -0
  14. admin/assets/img/gnzp-icon-256x256.png +0 -0
  15. admin/assets/img/rio-icon-128x128.png +0 -0
  16. admin/assets/img/rio-icon-256x256.png +0 -0
  17. admin/assets/img/sfi-icon-256x256.png +0 -0
  18. admin/assets/img/upmp-icon-256x256.png +0 -0
  19. admin/assets/js/filters.js +0 -98
  20. admin/assets/js/general.js +71 -29
  21. admin/assets/js/install-addons.js +38 -106
  22. admin/assets/js/license-manager.js +78 -15
  23. admin/assets/js/update-package.js +32 -14
  24. admin/boot.php +260 -173
  25. admin/includes/classes/class.install-plugins-button.php +5 -8
  26. admin/includes/classes/class.option.php +5 -1
  27. admin/includes/classes/class.pages.php +0 -90
  28. admin/includes/classes/class.upgrader.php +123 -47
  29. admin/includes/compatibility.php +112 -0
  30. admin/includes/options.php +26 -16
  31. admin/pages/advanced.php +8 -21
  32. admin/pages/clearfy-settings.php +257 -0
  33. admin/pages/components.php +172 -65
  34. admin/pages/defence.php +14 -7
  35. admin/pages/hide-login-page.php +109 -0
  36. admin/pages/image-optimization.php +111 -0
  37. admin/pages/license.php +23 -158
  38. admin/pages/performance-google.php +8 -6
  39. admin/pages/performance.php +7 -4
  40. admin/pages/quick-start.php +36 -141
  41. admin/pages/seo-double-pages.php +7 -19
  42. admin/pages/seo.php +6 -3
  43. admin/pages/widgets.php +7 -4
  44. assets/css/admin-bar.css +39 -40
  45. assets/css/admin-bar.less +0 -1
  46. clearfy.php +46 -13
  47. components/assets-manager/admin/assets/css/general.css +0 -455
  48. components/assets-manager/admin/assets/js/general.js +0 -203
  49. components/assets-manager/admin/boot.php +118 -99
  50. components/assets-manager/admin/pages/assets-manager.php +22 -22
  51. components/assets-manager/admin/pages/more-features.php +5 -1
  52. components/assets-manager/assets/css/assets-manager.css +1324 -157
  53. components/assets-manager/assets/css/assets-manager.less +1248 -175
  54. components/assets-manager/assets/css/reset.css +251 -0
  55. components/assets-manager/assets/css/reset.less +252 -0
  56. components/assets-manager/assets/img/info.svg +1 -0
  57. components/assets-manager/assets/js/assets-manager.js +98 -13
  58. components/assets-manager/gonzales.php +67 -39
  59. components/assets-manager/includes/class.configurate-assets.php +1352 -292
  60. components/assets-manager/includes/class.plugin.php +20 -40
  61. components/assets-manager/languages/gonzales-nl_BE.po +193 -193
  62. components/assets-manager/languages/gonzales-pt_BR.po +193 -193
  63. components/assets-manager/languages/gonzales-ru_RU.mo +0 -0
  64. components/assets-manager/languages/gonzales-ru_RU.po +574 -216
  65. components/assets-manager/readme.txt +17 -1
  66. components/assets-manager/uninstall.php +33 -2
  67. components/assets-manager/updates/010100.php +1 -1
  68. components/comments-plus/admin/assets/css/general.css +0 -455
  69. components/comments-plus/admin/assets/js/general.js +0 -203
  70. components/comments-plus/admin/boot.php +65 -1
  71. components/comments-plus/admin/pages/comments.php +53 -43
  72. components/comments-plus/admin/pages/delete-comments.php +221 -94
  73. components/comments-plus/admin/pages/more-features.php +1 -1
  74. components/comments-plus/comments-plus.php +53 -40
  75. components/comments-plus/includes/boot.php +50 -0
  76. components/comments-plus/includes/class.plugin.php +20 -34
  77. components/comments-plus/includes/classes/class.configurate-comments.php +33 -80
  78. components/comments-plus/languages/comments-plus-nl_BE.po +358 -358
  79. components/comments-plus/languages/comments-plus-pt_BR.po +359 -359
  80. components/comments-plus/languages/comments-plus-ru_RU.mo +0 -0
  81. components/comments-plus/languages/comments-plus-ru_RU.po +427 -399
  82. components/cyrlitera/admin/activation.php +5 -5
  83. components/cyrlitera/admin/boot.php +23 -3
  84. components/cyrlitera/admin/options.php +3 -208
  85. components/cyrlitera/admin/pages/cyrlitera.php +196 -32
  86. components/cyrlitera/admin/pages/more-features.php +1 -1
  87. components/cyrlitera/cyrlitera.php +55 -41
  88. components/cyrlitera/includes/class.helpers.php +70 -11
  89. components/cyrlitera/includes/class.plugin.php +21 -35
  90. components/cyrlitera/includes/classes/class.configurate-cyrlitera.php +13 -14
  91. components/cyrlitera/languages/cyrlitera-nl_BE.po +207 -207
  92. components/cyrlitera/languages/cyrlitera-pt_BR.po +209 -209
  93. components/cyrlitera/languages/cyrlitera-ru_RU.mo +0 -0
  94. components/cyrlitera/languages/cyrlitera-ru_RU.po +618 -619
  95. components/cyrlitera/updates/010004.php +2 -2
  96. components/disable-admin-notices/admin/ajax/hide-notice.php +19 -25
  97. components/disable-admin-notices/admin/ajax/restore-notice.php +16 -20
  98. components/disable-admin-notices/admin/assets/css/notifications-panel.css +65 -65
  99. components/disable-admin-notices/admin/assets/js/notifications-panel.js +20 -6
  100. components/disable-admin-notices/admin/boot.php +1 -1
  101. components/disable-admin-notices/admin/options.php +58 -17
  102. components/disable-admin-notices/admin/pages/more-features.php +1 -1
  103. components/disable-admin-notices/admin/pages/notices.php +12 -26
  104. components/disable-admin-notices/disable-admin-notices.php +53 -39
  105. components/disable-admin-notices/includes/class.plugin.php +15 -31
  106. components/disable-admin-notices/includes/classes/class.configurate-notices.php +154 -75
  107. components/disable-admin-notices/languages/disable-admin-notices-nl_BE.po +172 -172
  108. components/disable-admin-notices/languages/disable-admin-notices-pt_BR.po +180 -180
  109. components/disable-admin-notices/uninstall.php +12 -1
  110. components/disable-admin-notices/updates/010007.php +23 -0
  111. components/ga-cache/admin/activation.php +5 -5
  112. components/ga-cache/admin/assets/css/notifications-panel.css +65 -65
  113. components/ga-cache/admin/boot.php +8 -8
  114. components/ga-cache/admin/options.php +1 -1
  115. components/ga-cache/admin/pages/ga_cache.php +11 -25
  116. components/ga-cache/admin/pages/more-features.php +1 -1
  117. components/ga-cache/cache/local-ga.js +58 -58
  118. components/ga-cache/includes/class.plugin.php +32 -28
  119. components/ga-cache/includes/classes/class.configurate-ga.php +11 -11
  120. components/ga-cache/languages/simple-google-analytics-nl_BE.po +242 -242
  121. components/ga-cache/languages/simple-google-analytics-pt_BR.po +246 -246
  122. components/ga-cache/simple_google_analytics.php +53 -53
  123. components/html-minify/admin/boot.php +49 -1
  124. components/html-minify/admin/pages/settings.php +11 -50
  125. components/html-minify/html-minify.php +67 -72
  126. components/html-minify/includes/class.plugin.php +37 -59
  127. components/html-minify/includes/classes/class.mac-main.php +4 -4
  128. components/html-minify/languages/html-minify-ru_RU.po +71 -417
admin/activation.php CHANGED
@@ -1,10 +1,9 @@
1
  <?php
2
-
3
  /**
4
  * Activator for the clearfy
5
  * @author Webcraftic <wordpress.webraftic@gmail.com>
6
  * @copyright (c) 09.09.2017, Webcraftic
7
- * @see Factory406_Activator
8
  * @version 1.0
9
  */
10
 
@@ -13,7 +12,7 @@
13
  exit;
14
  }
15
 
16
- class WCL_Activation extends Wbcr_Factory406_Activator {
17
 
18
  /**
19
  * Runs activation actions.
@@ -22,10 +21,11 @@
22
  */
23
  public function activate()
24
  {
 
 
 
25
  // Deactivate components for code minification, if alternative plugins are installed
26
  // -------------
27
-
28
- require_once ABSPATH . '/wp-admin/includes/plugin.php';
29
  $minify_js_plugins = array(
30
  'autoptimize/autoptimize.php',
31
  'fast-velocity-minify/fvm.php',
@@ -37,7 +37,7 @@
37
  $is_activate_minify_js = true;
38
  foreach($minify_js_plugins as $m_plugin) {
39
 
40
- if(is_plugin_active($m_plugin) ) {
41
  $is_activate_minify_js = false;
42
  }
43
  }
@@ -59,26 +59,22 @@
59
  if( !in_array(get_locale(), array('ru_RU', 'bel', 'kk', 'uk', 'bg', 'bg_BG', 'ka_GE')) ) {
60
  WCL_Plugin::app()->deactivateComponent('cyrlitera');
61
  }
62
- // -------------
63
- // Caching google analytics on a schedule
64
- // -------------
65
-
66
- $ga_cache = WCL_Plugin::app()->getOption('ga_cache');
67
 
68
- if( $ga_cache ) {
69
- wp_clear_scheduled_hook('wbcr_clearfy_update_local_ga');
70
 
71
- if( !wp_next_scheduled('wbcr_clearfy_update_local_ga') ) {
72
- $ga_caos_remove_wp_cron = WCL_Plugin::app()->getOption('ga_caos_remove_wp_cron');
73
-
74
- if( !$ga_caos_remove_wp_cron ) {
75
- wp_schedule_event(time(), 'daily', 'wbcr_clearfy_update_local_ga');
76
- }
77
- }
78
  }
79
  // -------------
 
80
  $package_plugin = WCL_Package::instance();
81
  $package_plugin->active();
 
 
 
 
 
82
  }
83
 
84
  /**
@@ -88,21 +84,29 @@
88
  */
89
  public function deactivate()
90
  {
91
- if( wp_next_scheduled('wbcr_clearfy_update_local_ga') ) {
92
- wp_clear_scheduled_hook('wbcr_clearfy_update_local_ga');
93
  }
94
 
95
  $dependent = 'clearfy_package/clearfy-package.php';
96
 
97
- if( is_plugin_active($dependent) ){
 
98
  add_action('update_option_active_plugins', array($this, 'deactivateDependent'));
99
  }
 
 
 
 
 
 
100
  }
101
 
102
  /**
103
  * Deactivate clearfy package
104
  */
105
- public function deactivateDependent() {
 
106
  $package_plugin = WCL_Package::instance();
107
  $package_plugin->deactive();
108
  }
1
  <?php
 
2
  /**
3
  * Activator for the clearfy
4
  * @author Webcraftic <wordpress.webraftic@gmail.com>
5
  * @copyright (c) 09.09.2017, Webcraftic
6
+ * @see Factory409_Activator
7
  * @version 1.0
8
  */
9
 
12
  exit;
13
  }
14
 
15
+ class WCL_Activation extends Wbcr_Factory409_Activator {
16
 
17
  /**
18
  * Runs activation actions.
21
  */
22
  public function activate()
23
  {
24
+ if( !function_exists('is_plugin_active') ) {
25
+ require_once(ABSPATH . 'wp-admin/includes/plugin.php');
26
+ }
27
  // Deactivate components for code minification, if alternative plugins are installed
28
  // -------------
 
 
29
  $minify_js_plugins = array(
30
  'autoptimize/autoptimize.php',
31
  'fast-velocity-minify/fvm.php',
37
  $is_activate_minify_js = true;
38
  foreach($minify_js_plugins as $m_plugin) {
39
 
40
+ if( is_plugin_active($m_plugin) ) {
41
  $is_activate_minify_js = false;
42
  }
43
  }
59
  if( !in_array(get_locale(), array('ru_RU', 'bel', 'kk', 'uk', 'bg', 'bg_BG', 'ka_GE')) ) {
60
  WCL_Plugin::app()->deactivateComponent('cyrlitera');
61
  }
 
 
 
 
 
62
 
63
+ // Добавляем крон событие для сихнронизации лицензионных данных
64
+ $licensing = WCL_Licensing::instance();
65
 
66
+ if( $licensing->isLicenseValid() && !wp_next_scheduled('wbcr_clearfy_license_autosync') ) {
67
+ wp_schedule_event(time(), 'twicedaily', 'wbcr_clearfy_license_autosync');
 
 
 
 
 
68
  }
69
  // -------------
70
+
71
  $package_plugin = WCL_Package::instance();
72
  $package_plugin->active();
73
+
74
+ /**
75
+ * @since 1.4.1
76
+ */
77
+ do_action('wbcr/clearfy/activated');
78
  }
79
 
80
  /**
84
  */
85
  public function deactivate()
86
  {
87
+ if( wp_next_scheduled('wbcr_clearfy_license_autosync') ) {
88
+ wp_clear_scheduled_hook('wbcr_clearfy_license_autosync');
89
  }
90
 
91
  $dependent = 'clearfy_package/clearfy-package.php';
92
 
93
+ require_once ABSPATH . '/wp-admin/includes/plugin.php';
94
+ if( is_plugin_active($dependent) ) {
95
  add_action('update_option_active_plugins', array($this, 'deactivateDependent'));
96
  }
97
+ add_action('update_site_option_active_sitewide_plugins', array($this, 'deactivateDependent'));
98
+
99
+ /**
100
+ * @since 1.4.1
101
+ */
102
+ do_action('wbcr/clearfy/deactivated');
103
  }
104
 
105
  /**
106
  * Deactivate clearfy package
107
  */
108
+ public function deactivateDependent()
109
+ {
110
  $package_plugin = WCL_Package::instance();
111
  $package_plugin->deactive();
112
  }
admin/ajax/check-license.php ADDED
@@ -0,0 +1,87 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Ajax plugin check licensing
4
+ * @author Webcraftic <wordpress.webraftic@gmail.com>
5
+ * @copyright (c) 2017 Webraftic Ltd
6
+ * @version 1.0
7
+ */
8
+
9
+ // Exit if accessed directly
10
+ if( !defined('ABSPATH') ) {
11
+ exit;
12
+ }
13
+
14
+ /**
15
+ * Обработчик ajax запросов для проверки, активации, деактивации лицензионного ключа
16
+ *
17
+ * @since 1.4.0
18
+ */
19
+ function wbcr_clearfy_check_license()
20
+ {
21
+ check_admin_referer('license');
22
+
23
+ $action = WCL_Plugin::app()->request->post('license_action', false, true);
24
+ $license_key = WCL_Plugin::app()->request->post('licensekey', null);
25
+
26
+ if( empty($action) || !in_array($action, array('activate', 'deactivate', 'sync', 'unsubscribe')) ) {
27
+ wp_send_json_error(array('error_message' => __('Licensing action not passed or this action is prohibited!', 'clearfy')));
28
+ die();
29
+ }
30
+
31
+ $licensing = WCL_Licensing::instance();
32
+
33
+ $result = null;
34
+ $success_message = '';
35
+
36
+ switch( $action ) {
37
+ case 'activate':
38
+ if( empty($license_key) || strlen($license_key) > 32 ) {
39
+ wp_send_json_error(array('error_message' => __('License key is empty or license key too long (license key is 32 characters long)', 'clearfy')));
40
+ } else {
41
+ $result = $licensing->activate($license_key);
42
+ $success_message = __('Your license has been successfully activated', 'clearfy');
43
+ }
44
+ break;
45
+ case 'deactivate':
46
+ $result = $licensing->uninstall();
47
+ $success_message = __('The license is deactivated', 'clearfy');
48
+ break;
49
+ case 'sync':
50
+ $result = $licensing->sync();
51
+ $success_message = __('The license has been updated', 'clearfy');
52
+ break;
53
+ case 'unsubscribe':
54
+ $result = $licensing->unsubscribe();
55
+ $success_message = __('Subscription success cancelled', 'clearfy');
56
+ break;
57
+ }
58
+
59
+ if( is_wp_error($result) ) {
60
+
61
+ /**
62
+ * Экшен выполняет, когда проверка лицензии вернула ошибку
63
+ * @param string $action
64
+ * @param string $license_key
65
+ * @since 1.4.0
66
+ */
67
+ add_action('wbcr/clearfy/check_license_error', $action, $license_key);
68
+
69
+ wp_send_json_error(array('error_message' => $result->get_error_message()));
70
+ die();
71
+ }
72
+
73
+ /**
74
+ * Экшен выполняет, когда проверка лицензии успешно завершена
75
+ * @param string $action
76
+ * @param string $license_key
77
+ * @since 1.4.0
78
+ */
79
+ add_action('wbcr/clearfy/check_license_success', $action, $license_key);
80
+
81
+ wp_send_json_success(array('message' => $success_message));
82
+
83
+ die();
84
+ }
85
+
86
+ add_action('wp_ajax_wbcr-clearfy-check-license', 'wbcr_clearfy_check_license');
87
+
admin/ajax/configurate.php CHANGED
@@ -15,7 +15,7 @@
15
  {
16
  check_ajax_referer('wbcr_clearfy_ajax_quick_start_nonce', 'security');
17
 
18
- if( !current_user_can('manage_options') ) {
19
  wp_send_json(array('error' => __('You don\'t have enough capability to edit this information.', 'clearfy')));
20
  }
21
 
@@ -27,8 +27,6 @@
27
  }
28
 
29
  if( $mode_name != 'reset' ) {
30
-
31
- $update_options = array();
32
  $group = WCL_Group::getInstance($mode_name);
33
  $mode_options = $group->getOptions();
34
 
@@ -46,34 +44,20 @@
46
  $set_value = $option_value;
47
  }
48
 
49
- $update_options[$option_name] = $set_value;
50
-
51
- WCL_Plugin::app()->updateOptions($update_options);
52
  }
53
  } else {
54
- $delete_options = array();
55
  $all_options = WCL_Option::getAllOptions();
56
 
57
  if( !empty($all_options) ) {
58
  foreach($all_options as $option) {
59
- $delete_options[] = $option->getName();
60
  }
61
-
62
- WCL_Plugin::app()->deleteOptions($delete_options);
63
  }
64
  }
65
 
66
  if( !$flush_redirect ) {
67
- // todo: создать отдельный файл для сброса кеша и перенести этот код туда
68
- if( function_exists('w3tc_pgcache_flush') ) {
69
- w3tc_pgcache_flush();
70
- } elseif( function_exists('wp_cache_clear_cache') ) {
71
- wp_cache_clear_cache();
72
- } elseif( function_exists('rocket_clean_files') ) {
73
- rocket_clean_files(esc_url($_SERVER['HTTP_REFERER']));
74
- } else if( isset($GLOBALS['wp_fastest_cache']) && method_exists($GLOBALS['wp_fastest_cache'], 'deleteCache') ) {
75
- $GLOBALS['wp_fastest_cache']->deleteCache();
76
- }
77
  }
78
 
79
  do_action('wbcr_clearfy_configurated_quick_mode', $mode_name);
15
  {
16
  check_ajax_referer('wbcr_clearfy_ajax_quick_start_nonce', 'security');
17
 
18
+ if( !WCL_Plugin::app()->currentUserCan() ) {
19
  wp_send_json(array('error' => __('You don\'t have enough capability to edit this information.', 'clearfy')));
20
  }
21
 
27
  }
28
 
29
  if( $mode_name != 'reset' ) {
 
 
30
  $group = WCL_Group::getInstance($mode_name);
31
  $mode_options = $group->getOptions();
32
 
44
  $set_value = $option_value;
45
  }
46
 
47
+ WCL_Plugin::app()->updatePopulateOption($option_name, $set_value);
 
 
48
  }
49
  } else {
 
50
  $all_options = WCL_Option::getAllOptions();
51
 
52
  if( !empty($all_options) ) {
53
  foreach($all_options as $option) {
54
+ WCL_Plugin::app()->deletePopulateOption($option->getName());
55
  }
 
 
56
  }
57
  }
58
 
59
  if( !$flush_redirect ) {
60
+ WbcrFactoryClearfy206_Helpers::flushPageCache();
 
 
 
 
 
 
 
 
 
61
  }
62
 
63
  do_action('wbcr_clearfy_configurated_quick_mode', $mode_name);
admin/ajax/import-settings.php CHANGED
@@ -11,32 +11,74 @@
11
  exit;
12
  }
13
 
 
 
 
14
  function wbcr_clearfy_import_settings()
15
  {
16
  global $wpdb;
17
 
18
- check_ajax_referer('wbcr_clearfy_ajax_quick_start_nonce', 'security');
19
 
20
- if( !current_user_can('manage_options') ) {
21
- echo json_encode(array('error' => __('You don\'t have enough capability to edit this information.', 'clearfy')));
22
- exit;
23
  }
24
 
25
  $settings = WCL_Helper::maybeGetPostJson('settings');
26
 
27
- if( empty($settings) ) {
28
- echo json_encode(array('error' => __('Settings are not defined or do not exist.', 'clearfy')));
29
- exit;
 
 
 
 
 
 
 
 
 
 
 
 
30
  }
31
 
32
  $values = array();
33
  $place_holders = array();
34
- $query = "INSERT INTO {$wpdb->prefix}options (option_name, option_value) VALUES ";
 
 
 
 
 
35
 
36
  foreach($settings as $option_name => $option_value) {
37
  $option_name = sanitize_text_field($option_name);
38
- $option_value = wp_kses_post($option_value);
 
 
 
 
 
 
 
 
 
 
 
39
 
 
 
 
 
 
 
 
 
 
 
 
40
  if( WCL_Plugin::app()->getOptionName('robots_txt_text') == $option_name ) {
41
  $site_url = get_home_url();
42
  $dir_host_without_scheme = preg_replace("(^https?://)", "", $site_url);
@@ -65,38 +107,46 @@
65
  }
66
  }
67
  }
68
-
69
- if( WCL_Plugin::app()->getPrefix() . 'freemius_activated_addons' == $option_name ) {
70
- $option_value = serialize( $option_value );
71
- }
72
-
73
 
74
- array_push($values, $option_name, $option_value);
75
- $place_holders[] = "('%s', '%s')";/* In my case, i know they will always be integers */
 
 
 
 
 
76
  }
77
 
78
  $query .= implode(', ', $place_holders);
79
 
80
- // Очищаем все опции
81
- $wpdb->query("DELETE FROM {$wpdb->prefix}options WHERE option_name LIKE '%" . WCL_Plugin::app()
82
- ->getPrefix() . "_%';");
 
 
 
 
 
83
 
84
  // Сбрасываем кеш опций
85
  WCL_Plugin::app()->flushOptionsCache();
86
- wp_cache_flush(); // сброс объектного кеша WP
87
 
88
  // Импортируем опции
89
  $wpdb->query($wpdb->prepare("$query ", $values));
90
- $send_data = array( 'status' => 'success' );
 
91
 
92
  $package_plugin = WCL_Package::instance();
93
- $send_data['updateNotice'] = $package_plugin->getUpdateNotice();
 
 
 
94
 
95
  do_action('wbcr_clearfy_imported_settings');
96
-
97
- wp_send_json( $send_data );
98
- exit;
99
  }
100
 
101
- add_action('wp_ajax_wbcr_clearfy_import_settings', 'wbcr_clearfy_import_settings');
102
 
11
  exit;
12
  }
13
 
14
+ /**
15
+ * Ajax действите, выполняется для получения всех доступных опций для экспорта.
16
+ */
17
  function wbcr_clearfy_import_settings()
18
  {
19
  global $wpdb;
20
 
21
+ check_ajax_referer('wbcr_clearfy_import_options');
22
 
23
+ if( !WCL_Plugin::app()->currentUserCan() ) {
24
+ wp_send_json_error(array('error_message' => __('You don\'t have enough capability to edit this information.', 'clearfy')));
25
+ die();
26
  }
27
 
28
  $settings = WCL_Helper::maybeGetPostJson('settings');
29
 
30
+ /**
31
+ * Используется для фильтрации импортируемых настроек,
32
+ * обычно это может пригодиться для компонентов, которым нужно выполнить дополнительные дествия к опциям,
33
+ * прежде чем продолжить импорт
34
+ *
35
+ * wbcr/clearfy/filter_import_options
36
+ * @since 1.4.0
37
+ */
38
+ $settings = apply_filters('wbcr/clearfy/filter_import_options', $settings);
39
+
40
+ $network_id = get_current_network_id();
41
+
42
+ if( empty($settings) || !is_array($settings) ) {
43
+ wp_send_json_error(array('error_message' => __('Settings are not defined or do not exist.', 'clearfy')));
44
+ die();
45
  }
46
 
47
  $values = array();
48
  $place_holders = array();
49
+
50
+ if( WCL_Plugin::app()->isNetworkActive() ) {
51
+ $query = "INSERT INTO {$wpdb->sitemeta} (site_id, meta_key, meta_value) VALUES ";
52
+ } else {
53
+ $query = "INSERT INTO {$wpdb->options} (option_name, option_value) VALUES ";
54
+ }
55
 
56
  foreach($settings as $option_name => $option_value) {
57
  $option_name = sanitize_text_field($option_name);
58
+ $raw_option_value = $option_value;
59
+
60
+ if( is_serialized($option_value) ) {
61
+ $option_value = unserialize($option_value);
62
+ }
63
+
64
+ if( is_array($option_value) || is_object($option_value) ) {
65
+ $option_value = WbcrFactoryClearfy206_Helpers::recursiveSanitizeArray($option_value, 'wp_kses_post');
66
+ $option_value = maybe_serialize($option_value);
67
+ } else {
68
+ $option_value = wp_kses_post($option_value);
69
+ }
70
 
71
+ /**
72
+ * Используется для фильтрации импортируемых значений,
73
+ * обычно это может пригодиться для компонентов, которым нужно подменять домены, пути или какие-то правила
74
+ * при переносе с одного сайта на другой
75
+ *
76
+ * wbcr/clearfy/filter_import_values
77
+ * @since 1.4.0
78
+ */
79
+ $option_value = apply_filters('wbcr/clearfy/filter_import_values', $option_value, $option_name, $raw_option_value);
80
+
81
+ // todo: Вынести в отдельный файл и привязать к хуку
82
  if( WCL_Plugin::app()->getOptionName('robots_txt_text') == $option_name ) {
83
  $site_url = get_home_url();
84
  $dir_host_without_scheme = preg_replace("(^https?://)", "", $site_url);
107
  }
108
  }
109
  }
 
 
 
 
 
110
 
111
+ if( WCL_Plugin::app()->isNetworkActive() ) {
112
+ array_push($values, $network_id, $option_name, $option_value);
113
+ $place_holders[] = "('%d', '%s', '%s')";/* In my case, i know they will always be integers */
114
+ } else {
115
+ array_push($values, $option_name, $option_value);
116
+ $place_holders[] = "('%s', '%s')";/* In my case, i know they will always be integers */
117
+ }
118
  }
119
 
120
  $query .= implode(', ', $place_holders);
121
 
122
+ // Удаляем все опции
123
+ $all_options = WCL_Option::getAllOptions();
124
+
125
+ if( !empty($all_options) ) {
126
+ foreach($all_options as $option) {
127
+ WCL_Plugin::app()->deletePopulateOption($option->getName());
128
+ }
129
+ }
130
 
131
  // Сбрасываем кеш опций
132
  WCL_Plugin::app()->flushOptionsCache();
 
133
 
134
  // Импортируем опции
135
  $wpdb->query($wpdb->prepare("$query ", $values));
136
+
137
+ $send_data = array('status' => 'success');
138
 
139
  $package_plugin = WCL_Package::instance();
140
+ $send_data['update_notice'] = $package_plugin->getUpdateNotice();
141
+
142
+ // Сбрасываем кеш для кеширующих плагинов
143
+ WbcrFactoryClearfy206_Helpers::flushPageCache();
144
 
145
  do_action('wbcr_clearfy_imported_settings');
146
+
147
+ wp_send_json_success($send_data);
148
+ die();
149
  }
150
 
151
+ add_action('wp_ajax_wbcr-clearfy-import-settings', 'wbcr_clearfy_import_settings');
152
 
admin/ajax/install-addons.php CHANGED
@@ -22,8 +22,8 @@
22
  $action = WCL_Plugin::app()->request->post('plugin_action', null, true);
23
  $storage = WCL_Plugin::app()->request->post('storage', null, true);
24
 
25
- if( !current_user_can('activate_plugins') ) {
26
- wp_die(__('You don\'t have enough capability to edit this information.', 'clearfy'), __( 'Something went wrong.' ), 403);
27
  }
28
 
29
  if( empty($slug) || empty($action) ) {
@@ -59,7 +59,7 @@
59
  } else {
60
  $success = true;
61
  $package_plugin = WCL_Package::instance();
62
- $send_data['updateNotice'] = $package_plugin->getUpdateNotice();
63
  }
64
  } else if( $storage == 'internal' ) {
65
 
@@ -77,13 +77,16 @@
77
  }
78
  } else if( $storage == 'wordpress' ) {
79
  if( !empty($slug) ) {
 
 
80
  if( $action == 'activate' ) {
81
- $result = activate_plugin($slug);
 
82
  if( is_wp_error($result) ) {
83
  wp_send_json_error(array('error_message' => $result->get_error_message()));
84
  }
85
  } elseif( $action == 'deactivate' ) {
86
- deactivate_plugins($slug);
87
  }
88
 
89
  $success = true;
@@ -100,6 +103,16 @@
100
  }
101
  }
102
 
 
 
 
 
 
 
 
 
 
 
103
  if( $success ) {
104
  do_action('wbcr_clearfy_update_component', $slug, $action, $storage);
105
 
@@ -122,7 +135,7 @@
122
 
123
  $component_name = WCL_Plugin::app()->request->post('plugin', null, true);
124
 
125
- if( !current_user_can('activate_plugins') ) {
126
  wp_send_json_error(array('error_message' => __('You don\'t have enough capability to edit this information.', 'clearfy')), 403);
127
  }
128
 
22
  $action = WCL_Plugin::app()->request->post('plugin_action', null, true);
23
  $storage = WCL_Plugin::app()->request->post('storage', null, true);
24
 
25
+ if( !WCL_Plugin::app()->currentUserCan() ) {
26
+ wp_die(__('You don\'t have enough capability to edit this information.', 'clearfy'), __('Something went wrong.'), 403);
27
  }
28
 
29
  if( empty($slug) || empty($action) ) {
59
  } else {
60
  $success = true;
61
  $package_plugin = WCL_Package::instance();
62
+ $send_data['update_notice'] = $package_plugin->getUpdateNotice();
63
  }
64
  } else if( $storage == 'internal' ) {
65
 
77
  }
78
  } else if( $storage == 'wordpress' ) {
79
  if( !empty($slug) ) {
80
+ $network_wide = WCL_Plugin::app()->isNetworkActive();
81
+
82
  if( $action == 'activate' ) {
83
+ $result = activate_plugin($slug, '', $network_wide);
84
+
85
  if( is_wp_error($result) ) {
86
  wp_send_json_error(array('error_message' => $result->get_error_message()));
87
  }
88
  } elseif( $action == 'deactivate' ) {
89
+ deactivate_plugins($slug, false, $network_wide);
90
  }
91
 
92
  $success = true;
103
  }
104
  }
105
 
106
+ // Если требуется обновить постоянные ссылки, даем сигнал, что пользователю, нужно показать
107
+ // всплывающее уведомление.
108
+ // todo: сделать более красивое решение с передачей текстовых сообщений
109
+ if( $action == 'deactivate' ) {
110
+ $is_need_rewrite_rules = WCL_Plugin::app()->getPopulateOption('need_rewrite_rules');
111
+ if( $is_need_rewrite_rules ) {
112
+ $send_data['need_rewrite_rules'] = sprintf('<span class="wbcr-clr-need-rewrite-rules-message">'.__('When you deactivate some components, permanent links may work incorrectly. If this happens, please, <a href="%s">update the permalinks</a>, so you could complete the deactivation.', 'clearfy'), admin_url('options-permalink.php') .'</span>');
113
+ }
114
+ }
115
+
116
  if( $success ) {
117
  do_action('wbcr_clearfy_update_component', $slug, $action, $storage);
118
 
135
 
136
  $component_name = WCL_Plugin::app()->request->post('plugin', null, true);
137
 
138
+ if( !WCL_Plugin::app()->currentUserCan() ) {
139
  wp_send_json_error(array('error_message' => __('You don\'t have enough capability to edit this information.', 'clearfy')), 403);
140
  }
141
 
admin/ajax/update-package.php CHANGED
@@ -23,36 +23,63 @@
23
  $licensing->getAddons(true); // обновляем список аддонов
24
 
25
  $package_plugin = WCL_Package::instance();
 
26
  if( !$licensing->isLicenseValid() and $licensing->isActivePaidAddons() ) {
27
- wp_send_json_error(array('msg' => __('To use premium components, you need activate a license!', 'clearfy') . '<a href="admin.php?page=license-wbcr_clearfy" class="btn btn-gold">' . __('Activate license', 'clearfy') . '</a>'));
28
  }
29
 
 
 
 
 
 
30
  try {
31
  $result = $package_plugin->update();
 
 
 
 
 
 
 
 
 
 
 
32
  } catch( Exception $e ) {
33
  wp_send_json_error(array(
34
- 'msg' => $e->getMessage(),
35
  'code' => $e->getCode(),
36
  ));
37
  }
38
 
39
- if( is_wp_error($result) ) {
40
- wp_send_json_error(array(
41
- 'msg' => __($result->get_error_message(), 'clearfy'),
42
- 'code' => __($result->get_error_code(), 'clearfy'),
43
- ));
44
- }
45
- $success = true;
46
- $data = array();
47
- $data['msg'] = __('Configuration updated.', 'clearfy');
48
- $data['result'] = $result;
49
  if( $success ) {
 
50
  do_action('wbcr_clearfy_package_updated', $package_plugin->getSlugs());
51
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
52
  wp_send_json_success($data);
53
  }
54
 
55
- wp_send_json_error(array('errorMessage' => __('An unknown error occurred during the activation of the component.', 'clearfy')));
56
  }
57
 
58
  add_action('wp_ajax_wbcr-clearfy-update-package', 'wbcr_clearfy_update_package');
23
  $licensing->getAddons(true); // обновляем список аддонов
24
 
25
  $package_plugin = WCL_Package::instance();
26
+
27
  if( !$licensing->isLicenseValid() and $licensing->isActivePaidAddons() ) {
28
+ wp_send_json_error(array('error_message' => __('To use premium components, you need activate a license!', 'clearfy') . '<a href="admin.php?page=license-wbcr_clearfy" class="btn btn-gold">' . __('Activate license', 'clearfy') . '</a>'));
29
  }
30
 
31
+ $old_components = $package_plugin->getActivedAddons();
32
+
33
+ $data = array();
34
+ $success = false;
35
+
36
  try {
37
  $result = $package_plugin->update();
38
+
39
+ if( is_wp_error($result) ) {
40
+ wp_send_json_error(array(
41
+ 'error_message' => __($result->get_error_message(), 'clearfy'),
42
+ 'code' => __($result->get_error_code(), 'clearfy'),
43
+ ));
44
+ }
45
+ $success = true;
46
+
47
+ $data['message'] = __('Configuration updated.', 'clearfy');
48
+ $data['result'] = $result;
49
  } catch( Exception $e ) {
50
  wp_send_json_error(array(
51
+ 'error_message' => $e->getMessage(),
52
  'code' => $e->getCode(),
53
  ));
54
  }
55
 
 
 
 
 
 
 
 
 
 
 
56
  if( $success ) {
57
+
58
  do_action('wbcr_clearfy_package_updated', $package_plugin->getSlugs());
59
 
60
+ $get_new_components = $package_plugin->getActivedAddons();
61
+
62
+ if( !empty($old_components) ) {
63
+ $net_components = array_diff_key($get_new_components, $old_components);
64
+ } else {
65
+ $net_components = $get_new_components;
66
+ }
67
+
68
+ if( !empty($net_components) ) {
69
+ foreach($net_components as $component_name => $value) {
70
+ /**
71
+ * После обновления пакета компонентов, мы принудительно вызываем классы активации для новых загруженных компонентов.
72
+ * Если компонент уже был загружен, для него не нужно вызывать хук активации, так как за это отвечает уже другой обработчик.
73
+ * @since 1.4.2
74
+ */
75
+ do_action('wbcr/clearfy/activated_component', $component_name);
76
+ }
77
+ }
78
+
79
  wp_send_json_success($data);
80
  }
81
 
82
+ wp_send_json_error(array('error_message' => __('An unknown error occurred during the activation of the component.', 'clearfy')));
83
  }
84
 
85
  add_action('wp_ajax_wbcr-clearfy-update-package', 'wbcr_clearfy_update_package');
admin/assets/css/base-statistic.css ADDED
@@ -0,0 +1,405 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Styles for the Widget to be displayed in the Clearfy plugin
3
+
4
+ * @author Alex Kovalev <alex.kovalevv@gmail.com>
5
+ * @copyright Webcraftic 13.06.2018
6
+ */
7
+ #WBCR {
8
+ /* Number display */
9
+ /* Number and bars */
10
+ /* Doughnut */
11
+ /* Widget */
12
+ }
13
+ #WBCR .wio-clear {
14
+ clear: both;
15
+ }
16
+ #WBCR .wbcr-factory-sidebar-widget.wbcr-rio-servers {
17
+ margin-top: 30px;
18
+ background: none;
19
+ padding: 0;
20
+ }
21
+ #WBCR .wbcr-factory-sidebar-widget.wbcr-rio-servers h4 {
22
+ font-size: 15px;
23
+ font-weight: 700;
24
+ }
25
+ #WBCR .wbcr-factory-sidebar-widget.wbcr-rio-servers button {
26
+ padding: 5px 10px;
27
+ border: 0;
28
+ font-size: 11px;
29
+ text-transform: uppercase !important;
30
+ font-weight: bold;
31
+ border-radius: 4px;
32
+ outline: none;
33
+ background: #f3f3f3;
34
+ color: #656565;
35
+ box-shadow: 0 1px 0 rgba(0, 0, 0, 0.1);
36
+ }
37
+ #WBCR .wbcr-factory-sidebar-widget.wbcr-rio-servers button:active {
38
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.5);
39
+ }
40
+ #WBCR .wbcr-factory-sidebar-widget.wbcr-rio-servers button.wbcr-rio-loading {
41
+ width: 56px;
42
+ font-size: 0;
43
+ background: #f3f3f3 url("../img/quick-start-loader.gif") center no-repeat;
44
+ }
45
+ #WBCR .wbcr-factory-sidebar-widget.wbcr-rio-servers button.wbcr-rio-selected {
46
+ background: #f3efe2;
47
+ color: #d8d8d8;
48
+ }
49
+ #WBCR .wbcr-factory-sidebar-widget.wbcr-rio-servers button.wbcr-rio-selected:active {
50
+ box-shadow: 0 1px 0 rgba(0, 0, 0, 0.1);
51
+ }
52
+ #WBCR .wbcr-factory-sidebar-widget.wbcr-rio-servers table {
53
+ width: 100%;
54
+ box-sizing: border-box;
55
+ border-spacing: 3px;
56
+ background: #fff;
57
+ }
58
+ #WBCR .wbcr-factory-sidebar-widget.wbcr-rio-servers table th,
59
+ #WBCR .wbcr-factory-sidebar-widget.wbcr-rio-servers table td {
60
+ padding: 16px 10px;
61
+ text-align: center;
62
+ }
63
+ #WBCR .wbcr-factory-sidebar-widget.wbcr-rio-servers table th {
64
+ background: #efefef;
65
+ color: #777777;
66
+ box-shadow: 0 1px 0 #d8d8d8;
67
+ }
68
+ #WBCR .wbcr-factory-sidebar-widget.wbcr-rio-servers table .wbcr-rio-server-check-proccess {
69
+ display: inline-block;
70
+ height: 10px;
71
+ width: 30px;
72
+ background: url("../img/quick-start-loader.gif") center no-repeat;
73
+ }
74
+ #WBCR .wbcr-factory-sidebar-widget.wbcr-rio-servers table .wbcr-rio-servers-list-item-selected {
75
+ background: #fffbed;
76
+ color: #cec5a8;
77
+ font-weight: 600;
78
+ }
79
+ #WBCR .wbcr-factory-sidebar-widget.wbcr-rio-servers table .wbcr-rio-server-success {
80
+ color: #8CC152;
81
+ }
82
+ #WBCR .wbcr-factory-sidebar-widget.wbcr-rio-servers table .wbcr-rio-server-error {
83
+ color: #fb5d49;
84
+ }
85
+ #WBCR .wbcr-factory-sidebar-widget.wbcr-rio-servers table .wbcr-rio-server-warning {
86
+ color: #ffb635;
87
+ }
88
+ #WBCR .wbcr-factory-sidebar-widget.wbcr-rio-servers .wbcr-rio-warning-message {
89
+ margin-top: 30px;
90
+ padding: 20px;
91
+ border: 1px dashed #bfbfbf;
92
+ background: #ffffff;
93
+ margin-bottom: 40px;
94
+ font-size: 15px;
95
+ color: #828282;
96
+ }
97
+ #WBCR .wio-columns {
98
+ overflow: hidden;
99
+ padding: 15px 0;
100
+ counter-reset: cols;
101
+ }
102
+ #WBCR .wio-columns [class^="col-"] {
103
+ float: left;
104
+ -webkit-box-sizing: border-box;
105
+ -moz-box-sizing: border-box;
106
+ box-sizing: border-box;
107
+ }
108
+ #WBCR .wio-columns .col-1-3 {
109
+ width: 33.333%;
110
+ padding-left: 28px;
111
+ }
112
+ #WBCR .wio-columns .col-2-3 {
113
+ width: 66.666%;
114
+ padding-left: 28px;
115
+ }
116
+ #WBCR .wio-columns .col-1-2 {
117
+ width: 50%;
118
+ padding: 0 20px;
119
+ }
120
+ #WBCR .wio-columns .col-statistics.col-statistics {
121
+ width: 60%;
122
+ }
123
+ #WBCR .wio-columns .col-chart.col-chart {
124
+ width: 40%;
125
+ position: relative;
126
+ padding: 20px;
127
+ font-size: 12px;
128
+ text-transform: uppercase;
129
+ background: #f1f1f1b3;
130
+ color: #abacaf;
131
+ font-weight: bold;
132
+ border-radius: 5px;
133
+ margin-top: 10px;
134
+ text-align: left;
135
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
136
+ }
137
+ #WBCR .wio-col {
138
+ float: left;
139
+ width: 50%;
140
+ box-sizing: border-box;
141
+ -webkit-flex-basis: 50%;
142
+ -ms-flex-preferred-size: 50%;
143
+ flex-basis: 50%;
144
+ }
145
+ #WBCR .wio-col {
146
+ padding-right: 20px;
147
+ }
148
+ #WBCR .wio-col + .wio-col {
149
+ padding-right: 0;
150
+ padding-left: 50px;
151
+ }
152
+ #WBCR .wio-col:target {
153
+ animation: wiohello 1s 3 linear backwards;
154
+ }
155
+ #WBCR .wio-number-you-optimized {
156
+ margin-bottom: 1.35em;
157
+ overflow: hidden;
158
+ }
159
+ #WBCR .wio-number-you-optimized #wio-total-optimized-attachments-pct {
160
+ color: #828282;
161
+ }
162
+ #WBCR .wio-number-you-optimized .wio-number {
163
+ display: table-cell;
164
+ padding-right: 15px;
165
+ font-size: 48px;
166
+ font-weight: bold;
167
+ line-height: 1;
168
+ vertical-align: middle;
169
+ white-space: nowrap;
170
+ color: #828282;
171
+ }
172
+ #WBCR .wio-number-you-optimized .wio-text {
173
+ display: table-cell;
174
+ vertical-align: middle;
175
+ overflow: hidden;
176
+ font-size: 12px;
177
+ color: #828282;
178
+ }
179
+ #WBCR .wio-number-you-optimized > p {
180
+ display: table;
181
+ }
182
+ #WBCR .wio-bars {
183
+ padding-right: 15px;
184
+ }
185
+ #WBCR .wio-bars p {
186
+ font-size: 12px;
187
+ margin-bottom: 5px;
188
+ }
189
+ #WBCR .wio-bars + .wio-number-you-optimized {
190
+ border-bottom: 0;
191
+ padding-top: 0.85em;
192
+ }
193
+ #WBCR .wio-bars + .wio-number-you-optimized p {
194
+ color: #72a53b;
195
+ }
196
+ #WBCR .wio-bar-negative .wio-progress {
197
+ background: #D2D3D6;
198
+ }
199
+ #WBCR .wio-bar-negative .wio-barnb {
200
+ color: #9d9fa5;
201
+ }
202
+ #WBCR .wio-progress {
203
+ height: 8px;
204
+ transition: width .3s;
205
+ /*.wio-bar-negative {
206
+ width: 92% !important;
207
+ }*/
208
+ }
209
+ #WBCR .wio-bar-positive .wio-progress {
210
+ background: #8CC152;
211
+ }
212
+ #WBCR .wio-bar-positive .wio-barnb {
213
+ color: #72a53b;
214
+ }
215
+ #WBCR .wio-bar-primary .wio-progress {
216
+ background: #8CC152;
217
+ }
218
+ #WBCR .wio-bar-primary .wio-barnb {
219
+ color: #72a53b;
220
+ }
221
+ #WBCR .wio-right-outside-number .wio-barnb {
222
+ display: block;
223
+ margin-right: -5.25em;
224
+ text-align: right;
225
+ font-weight: bold;
226
+ line-height: .8;
227
+ }
228
+ #WBCR .wio-chart {
229
+ position: relative;
230
+ top: 1px;
231
+ display: inline-block;
232
+ vertical-align: middle;
233
+ }
234
+ #WBCR .wio-chart-container {
235
+ position: relative;
236
+ display: inline-block;
237
+ margin-right: 5px;
238
+ border: 10px solid #d2d3d6;
239
+ border-radius: 100%;
240
+ }
241
+ #WBCR .wio-chart-container canvas {
242
+ display: block;
243
+ }
244
+ #WBCR .wio-overview-chart-container {
245
+ float: left;
246
+ margin-right: 20px;
247
+ }
248
+ #WBCR .wio-chart-percent {
249
+ position: absolute;
250
+ left: 0;
251
+ right: 0;
252
+ top: 50%;
253
+ margin-top: -0.5em;
254
+ line-height: 0.8;
255
+ text-align: center;
256
+ font-size: 54px;
257
+ font-weight: bold;
258
+ color: #afafaf;
259
+ }
260
+ #WBCR .wio-chart-percent span {
261
+ font-size: 20px;
262
+ vertical-align: super;
263
+ }
264
+ #WBCR #wio-overview-chart-legend {
265
+ overflow: hidden;
266
+ }
267
+ #WBCR .wio-doughnut-legend li {
268
+ display: inline-block;
269
+ position: relative;
270
+ margin-bottom: 15px;
271
+ border-radius: 5px;
272
+ padding: 3px 8px 2px 31px;
273
+ font-size: 12px;
274
+ cursor: default;
275
+ -webkit-transition: background-color 200ms ease-in-out;
276
+ -moz-transition: background-color 200ms ease-in-out;
277
+ -o-transition: background-color 200ms ease-in-out;
278
+ transition: background-color 200ms ease-in-out;
279
+ }
280
+ #WBCR .wio-doughnut-legend li span {
281
+ display: block;
282
+ position: absolute;
283
+ left: 0;
284
+ top: 0;
285
+ width: 25px;
286
+ height: 25px;
287
+ border-radius: 50%;
288
+ }
289
+ #WBCR .wio-optimize-button {
290
+ width: 180px;
291
+ padding: 12px 30px;
292
+ background: #c9deb2;
293
+ color: #586549;
294
+ border: 0;
295
+ box-shadow: none;
296
+ font-size: 14px;
297
+ text-transform: uppercase !important;
298
+ font-weight: bold;
299
+ border-radius: 4px;
300
+ outline: none;
301
+ text-decoration: none;
302
+ }
303
+ #WBCR .wio-optimize-button:active {
304
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.5);
305
+ }
306
+ #WBCR .wio-global-optim-phrase {
307
+ width: 180px;
308
+ padding-top: 20px;
309
+ font-size: 14px;
310
+ text-align: center;
311
+ }
312
+ #WBCR .wio-total-percent {
313
+ color: #587f2e;
314
+ }
315
+ #WBCR .wio-text-left {
316
+ text-align: left;
317
+ }
318
+ #WBCR span.wio-num {
319
+ display: inline !important;
320
+ position: inherit !important;
321
+ }
322
+ #WBCR .wio-image-optimize-board {
323
+ padding: 20px;
324
+ }
325
+ #WBCR .wio-page-statistic {
326
+ padding-left: 40px;
327
+ }
328
+ #WBCR .wio-page-statistic .wio-chart-percent {
329
+ margin-top: -1.1em;
330
+ }
331
+ #WBCR .wio-widget {
332
+ padding: 0 !important;
333
+ }
334
+ #WBCR .wio-widget .wio-chart-percent {
335
+ font-size: 44px;
336
+ line-height: 1;
337
+ }
338
+ #WBCR .wio-widget .wio-bars {
339
+ width: 80%;
340
+ margin-left: 155px;
341
+ box-sizing: border-box;
342
+ }
343
+ #WBCR .wio-widget .col-chart.col-chart {
344
+ width: 100%;
345
+ }
346
+ #WBCR .wio-widget .col-controls {
347
+ width: 45%;
348
+ padding-left: 5px;
349
+ padding-top: 110px;
350
+ }
351
+ #WBCR .wio-widget .wio-doughnut-legend {
352
+ margin-left: 20px;
353
+ text-align: left;
354
+ }
355
+ #WBCR .wio-widget .wio-widget-bottom {
356
+ display: table;
357
+ padding-top: 20px !important;
358
+ width: 100%;
359
+ text-align: right;
360
+ }
361
+ #WBCR .wio-widget .wio-widget-bottom li {
362
+ display: table-cell;
363
+ }
364
+ #WBCR .wio-widget .wio-widget-bottom li:first-child {
365
+ text-align: left;
366
+ }
367
+ @media (max-width: 830px) {
368
+ #WBCR .wio [class^="col-"] {
369
+ float: none;
370
+ margin-bottom: 1.5em;
371
+ }
372
+ #WBCR .wio .col-1-3,
373
+ #WBCR .wio .col-1-2 {
374
+ width: auto;
375
+ padding: 0 28px;
376
+ clear: both;
377
+ padding-top: 1em;
378
+ }
379
+ }
380
+ @keyframes wiohello {
381
+ 0%,
382
+ 100% {
383
+ background: #FFF;
384
+ }
385
+ 50% {
386
+ background: #F4F7F9;
387
+ }
388
+ }
389
+ @media (max-width: 1520px) and (min-width: 1381px), (max-width: 1086px) {
390
+ #WBCR .wio-columns .col-statistics.col-statistics,
391
+ #WBCR .wio-columns .col-chart.col-chart {
392
+ width: 50%;
393
+ }
394
+ }
395
+ @media (max-width: 808px) {
396
+ #WBCR .wio-columns .col-statistics.col-statistics,
397
+ #WBCR .wio-columns .col-chart.col-chart {
398
+ width: auto;
399
+ float: none;
400
+ padding: 0;
401
+ }
402
+ #WBCR .wio-columns .col-chart.col-chart {
403
+ margin-top: 3em;
404
+ }
405
+ }
admin/assets/css/base-statistic.less ADDED
@@ -0,0 +1,494 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Styles for the Widget to be displayed in the Clearfy plugin
3
+
4
+ * @author Alex Kovalev <alex.kovalevv@gmail.com>
5
+ * @copyright Webcraftic 13.06.2018
6
+ */
7
+
8
+ @positiveColor: #8CC152;
9
+ @negativeColor: #D2D3D6;
10
+ @neutralColor: #828282;
11
+
12
+ @errorColor: #fb5d49;
13
+ @waringColor: #ffb635;
14
+
15
+ @greyButtonBg: #f3f3f3;
16
+ @greyButtonColor: #656565;
17
+
18
+ @greenButtonBg: #c9deb2;
19
+ @greenButtonColor: #586549;
20
+
21
+ @orangeButtonBg: #fdd599;
22
+ @orangeButtonColor: #a57b3c;
23
+
24
+ #WBCR {
25
+ .wio-clear {
26
+ clear: both;
27
+ }
28
+
29
+ // Right sidebar
30
+
31
+ .wbcr-factory-sidebar-widget {
32
+ &.wbcr-rio-servers {
33
+ margin-top: 30px;
34
+ background: none;
35
+ padding: 0;
36
+
37
+ h4 {
38
+ font-size: 15px;
39
+ font-weight: 700;
40
+ }
41
+
42
+ button {
43
+ padding: 5px 10px;
44
+ border: 0;
45
+ font-size: 11px;
46
+ text-transform: uppercase !important;
47
+ font-weight: bold;
48
+ border-radius: 4px;
49
+ outline: none;
50
+ background: @greyButtonBg;
51
+ color: @greyButtonColor;
52
+ box-shadow: 0 1px 0 rgba(0, 0, 0, 0.1);
53
+
54
+ &:active {
55
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.5);
56
+ }
57
+
58
+ &.wbcr-rio-loading {
59
+ width: 56px;
60
+ font-size: 0;
61
+ background: @greyButtonBg url("../img/quick-start-loader.gif") center no-repeat;
62
+ }
63
+
64
+ &.wbcr-rio-selected {
65
+ background: #f3efe2;
66
+ color: #d8d8d8;
67
+ &:active {
68
+ box-shadow: 0 1px 0 rgba(0, 0, 0, 0.1);
69
+ }
70
+ }
71
+ }
72
+
73
+ table {
74
+ width: 100%;
75
+ box-sizing: border-box;
76
+ border-spacing: 3px;
77
+ background: #fff;
78
+
79
+ th, td {
80
+ padding: 16px 10px;
81
+ text-align: center;
82
+ }
83
+ th {
84
+ background: #efefef;
85
+ color: #777777;
86
+ box-shadow: 0 1px 0 rgb(216, 216, 216);
87
+ }
88
+ .wbcr-rio-server-check-proccess {
89
+ display: inline-block;
90
+ height: 10px;
91
+ width: 30px;
92
+ background: url("../img/quick-start-loader.gif") center no-repeat;
93
+ }
94
+ .wbcr-rio-servers-list-item-selected {
95
+ background: #fffbed;
96
+ color: #cec5a8;
97
+ font-weight: 600;
98
+ }
99
+ .wbcr-rio-server-success {
100
+ color: @positiveColor;
101
+ }
102
+ .wbcr-rio-server-error {
103
+ color: @errorColor;
104
+ }
105
+ .wbcr-rio-server-warning {
106
+ color: @waringColor;
107
+ }
108
+ }
109
+
110
+ .wbcr-rio-warning-message {
111
+ margin-top: 30px;
112
+ padding: 20px;
113
+ border: 1px dashed #bfbfbf;
114
+ background: #ffffff;
115
+ margin-bottom: 40px;
116
+ font-size: 15px;
117
+ color: #828282;
118
+ }
119
+ }
120
+ }
121
+
122
+ .wio-columns {
123
+ overflow: hidden;
124
+ padding: 15px 0;
125
+ counter-reset: cols;
126
+
127
+ [class^="col-"] {
128
+ float: left;
129
+ -webkit-box-sizing: border-box;
130
+ -moz-box-sizing: border-box;
131
+ box-sizing: border-box;
132
+ }
133
+
134
+ .col-1-3 {
135
+ width: 33.333%;
136
+ padding-left: 28px;
137
+ }
138
+
139
+ .col-2-3 {
140
+ width: 66.666%;
141
+ padding-left: 28px
142
+ }
143
+
144
+ .col-1-2 {
145
+ width: 50%;
146
+ padding: 0 20px;
147
+ }
148
+
149
+ .col-statistics.col-statistics {
150
+ width: 60%;
151
+ }
152
+
153
+ .col-chart.col-chart {
154
+ width: 40%;
155
+ position: relative;
156
+ padding: 20px;
157
+ font-size: 12px;
158
+ text-transform: uppercase;
159
+ background: #f1f1f1b3;
160
+ color: #abacaf;
161
+ font-weight: bold;
162
+ border-radius: 5px;
163
+ margin-top: 10px;
164
+ text-align: left;
165
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
166
+ }
167
+ }
168
+
169
+ .wio-col {
170
+ float: left;
171
+ width: 50%;
172
+ box-sizing: border-box;
173
+ -webkit-flex-basis: 50%;
174
+ -ms-flex-preferred-size: 50%;
175
+ flex-basis: 50%;
176
+ }
177
+
178
+ .wio-col {
179
+ padding-right: 20px;
180
+ }
181
+
182
+ .wio-col + .wio-col {
183
+ padding-right: 0;
184
+ padding-left: 50px;
185
+ }
186
+
187
+ .wio-col:target {
188
+ animation: wiohello 1s 3 linear backwards;
189
+ }
190
+
191
+ /* Number display */
192
+ .wio-number-you-optimized {
193
+ margin-bottom: 1.35em;
194
+ overflow: hidden;
195
+
196
+ #wio-total-optimized-attachments-pct {
197
+ color: @neutralColor;
198
+ }
199
+
200
+ .wio-number {
201
+ display: table-cell;
202
+ padding-right: 15px;
203
+ font-size: 48px;
204
+ font-weight: bold;
205
+ line-height: 1;
206
+ vertical-align: middle;
207
+ white-space: nowrap;
208
+ color: @neutralColor;
209
+ }
210
+
211
+ .wio-text {
212
+ display: table-cell;
213
+ vertical-align: middle;
214
+ overflow: hidden;
215
+ font-size: 12px;
216
+ color: @neutralColor;
217
+ }
218
+
219
+ & > p {
220
+ display: table;
221
+ }
222
+ }
223
+
224
+ /* Number and bars */
225
+ .wio-bars {
226
+ padding-right: 15px;
227
+ }
228
+
229
+ .wio-bars p {
230
+ font-size: 12px;
231
+ margin-bottom: 5px;
232
+ }
233
+
234
+ .wio-bars + .wio-number-you-optimized {
235
+ border-bottom: 0;
236
+ padding-top: 0.85em;
237
+ }
238
+
239
+ .wio-bars + .wio-number-you-optimized p {
240
+ color: darken(@positiveColor, 10);
241
+ }
242
+
243
+ .wio-bar-negative {
244
+ .wio-progress {
245
+ background: @negativeColor;
246
+ }
247
+ .wio-barnb {
248
+ color: darken(@negativeColor, 20);
249
+ }
250
+ }
251
+
252
+ .wio-progress {
253
+ height: 8px;
254
+ transition: width .3s;
255
+
256
+ /*.wio-bar-negative {
257
+ width: 92% !important;
258
+ }*/
259
+ }
260
+
261
+ .wio-bar-positive {
262
+ .wio-progress {
263
+ background: @positiveColor;
264
+ }
265
+ .wio-barnb {
266
+ color: darken(@positiveColor, 10);
267
+ }
268
+ }
269
+
270
+ .wio-bar-primary {
271
+ .wio-progress {
272
+ background: @positiveColor;
273
+ }
274
+ .wio-barnb {
275
+ color: darken(@positiveColor, 10);
276
+ }
277
+ }
278
+
279
+ .wio-right-outside-number .wio-barnb {
280
+ display: block;
281
+ margin-right: -5.25em;
282
+ text-align: right;
283
+ font-weight: bold;
284
+ line-height: .8;
285
+ }
286
+
287
+ /* Doughnut */
288
+ .wio-chart {
289
+ position: relative;
290
+ top: 1px;
291
+ display: inline-block;
292
+ vertical-align: middle;
293
+ }
294
+
295
+ .wio-chart-container {
296
+ position: relative;
297
+ display: inline-block;
298
+ margin-right: 5px;
299
+ border: 10px solid #d2d3d6;
300
+ border-radius: 100%;
301
+ }
302
+
303
+ .wio-chart-container canvas {
304
+ display: block;
305
+ }
306
+
307
+ .wio-overview-chart-container {
308
+ float: left;
309
+ margin-right: 20px;
310
+ }
311
+
312
+ .wio-chart-percent {
313
+ position: absolute;
314
+ left: 0;
315
+ right: 0;
316
+ top: 50%;
317
+ margin-top: -.5em;
318
+ line-height: 0.8;
319
+ text-align: center;
320
+ font-size: 54px;
321
+ font-weight: bold;
322
+ color: #afafaf;
323
+ }
324
+
325
+ .wio-chart-percent span {
326
+ font-size: 20px;
327
+ vertical-align: super;
328
+ }
329
+
330
+ #wio-overview-chart-legend {
331
+ overflow: hidden;
332
+ }
333
+
334
+ .wio-doughnut-legend li {
335
+ display: inline-block;
336
+ position: relative;
337
+ margin-bottom: 15px;
338
+ border-radius: 5px;
339
+ padding: 3px 8px 2px 31px;
340
+ font-size: 12px;
341
+ cursor: default;
342
+ -webkit-transition: background-color 200ms ease-in-out;
343
+ -moz-transition: background-color 200ms ease-in-out;
344
+ -o-transition: background-color 200ms ease-in-out;
345
+ transition: background-color 200ms ease-in-out;
346
+ }
347
+
348
+ .wio-doughnut-legend li span {
349
+ display: block;
350
+ position: absolute;
351
+ left: 0;
352
+ top: 0;
353
+ width: 25px;
354
+ height: 25px;
355
+ border-radius: 50%;
356
+ }
357
+
358
+ .wio-optimize-button {
359
+ width: 180px;
360
+ padding: 12px 30px;
361
+ background: @greenButtonBg;
362
+ color: @greenButtonColor;
363
+ border: 0;
364
+ box-shadow: none;
365
+ font-size: 14px;
366
+ text-transform: uppercase !important;
367
+ font-weight: bold;
368
+ border-radius: 4px;
369
+ outline: none;
370
+ text-decoration: none;
371
+
372
+ &:active {
373
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.5);
374
+ }
375
+ }
376
+
377
+ .wio-global-optim-phrase {
378
+ width: 180px;
379
+ padding-top: 20px;
380
+ font-size: 14px;
381
+ text-align: center;
382
+ }
383
+
384
+ .wio-total-percent {
385
+ color: darken(@positiveColor, 20);
386
+ }
387
+
388
+ .wio-text-left {
389
+ text-align: left;
390
+ }
391
+
392
+ span.wio-num {
393
+ display: inline !important;
394
+ position: inherit !important;
395
+ }
396
+
397
+ /* Widget */
398
+ .wio-image-optimize-board {
399
+ padding: 20px;
400
+ }
401
+
402
+ .wio-page-statistic {
403
+ padding-left: 40px;
404
+
405
+ .wio-chart-percent {
406
+ margin-top: -1.1em;
407
+ }
408
+ }
409
+
410
+ .wio-widget {
411
+ padding: 0 !important;
412
+
413
+ .wio-chart-percent {
414
+ font-size: 44px;
415
+ line-height: 1;
416
+ }
417
+ .wio-bars {
418
+ width: 80%;
419
+ margin-left: 155px;
420
+ box-sizing: border-box;
421
+ }
422
+ .col-chart.col-chart {
423
+ width: 100%;
424
+ }
425
+ .col-controls {
426
+ width: 45%;
427
+ padding-left: 5px;
428
+ padding-top: 110px
429
+ }
430
+ .wio-doughnut-legend {
431
+ margin-left: 20px;
432
+ text-align: left;
433
+
434
+ }
435
+ .wio-widget-bottom {
436
+ display: table;
437
+ padding-top: 20px !important;
438
+ width: 100%;
439
+ text-align: right;
440
+ }
441
+ .wio-widget-bottom li {
442
+ display: table-cell;
443
+ }
444
+ .wio-widget-bottom li:first-child {
445
+ text-align: left;
446
+ }
447
+ }
448
+
449
+ @media (max-width: 830px) {
450
+ .wio [class^="col-"] {
451
+ float: none;
452
+ margin-bottom: 1.5em;
453
+ }
454
+
455
+ .wio .col-1-3,
456
+ .wio .col-1-2 {
457
+ width: auto;
458
+ padding: 0 28px;
459
+ clear: both;
460
+ padding-top: 1em;
461
+ }
462
+ }
463
+
464
+ @keyframes wiohello {
465
+ 0%, 100% {
466
+ background: #FFF;
467
+ }
468
+ 50% {
469
+ background: #F4F7F9;
470
+ }
471
+ }
472
+
473
+ @media (max-width: 1520px) and (min-width: 1381px), (max-width: 1086px) {
474
+ .wio-columns {
475
+ .col-statistics.col-statistics, .col-chart.col-chart {
476
+ width: 50%;
477
+ }
478
+ }
479
+
480
+ }
481
+
482
+ @media (max-width: 808px) {
483
+ .wio-columns {
484
+ .col-statistics.col-statistics, .col-chart.col-chart {
485
+ width: auto;
486
+ float: none;
487
+ padding: 0;
488
+ }
489
+ .col-chart.col-chart {
490
+ margin-top: 3em;
491
+ }
492
+ }
493
+ }
494
+ }
admin/assets/css/components.css CHANGED
@@ -4,10 +4,28 @@
4
  * @copyright Alex Kovalev 30.09.2017
5
  */
6
  #WBCR .wbcr-clearfy-components {
7
- padding: 20px;
 
8
  }
9
  #WBCR .wbcr-clearfy-components .plugin-card {
10
  position: relative;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
  }
12
  #WBCR .wbcr-clearfy-components .plugin-card .plugin-card-top {
13
  min-height: 163px;
@@ -41,7 +59,7 @@
41
  }
42
  #WBCR .wbcr-clearfy-components .plugin-card .premium-ribbon {
43
  position: absolute;
44
- top: 10px;
45
  right: 0;
46
  height: 30px;
47
  width: 120px;
@@ -77,3 +95,13 @@
77
  #WBCR .wbcr-clearfy-components .plugin-card.plugin-status-deactive.premium {
78
  background-color: #f9f2f1;
79
  }
 
 
 
 
 
 
 
 
 
 
4
  * @copyright Alex Kovalev 30.09.2017
5
  */
6
  #WBCR .wbcr-clearfy-components {
7
+ padding: 0 20px 20px;
8
+ text-align: center;
9
  }
10
  #WBCR .wbcr-clearfy-components .plugin-card {
11
  position: relative;
12
+ display: inline-block;
13
+ width: 32.7%;
14
+ height: 250px;
15
+ margin-left: 0;
16
+ margin-right: 0;
17
+ text-align: left;
18
+ float: none;
19
+ vertical-align: top;
20
+ }
21
+ #WBCR .wbcr-clearfy-components .plugin-card:first-child {
22
+ margin-left: 0;
23
+ }
24
+ #WBCR .wbcr-clearfy-components .plugin-card .plugin-card-bottom {
25
+ position: absolute;
26
+ bottom: 0;
27
+ right: 0;
28
+ left: 0;
29
  }
30
  #WBCR .wbcr-clearfy-components .plugin-card .plugin-card-top {
31
  min-height: 163px;
59
  }
60
  #WBCR .wbcr-clearfy-components .plugin-card .premium-ribbon {
61
  position: absolute;
62
+ bottom: 60px;
63
  right: 0;
64
  height: 30px;
65
  width: 120px;
95
  #WBCR .wbcr-clearfy-components .plugin-card.plugin-status-deactive.premium {
96
  background-color: #f9f2f1;
97
  }
98
+ @media screen and (max-width: 1750px) {
99
+ #WBCR .wbcr-clearfy-components .plugin-card {
100
+ width: 49%;
101
+ }
102
+ }
103
+ @media screen and (max-width: 1350px) {
104
+ #WBCR .wbcr-clearfy-components .plugin-card {
105
+ width: 100%;
106
+ }
107
+ }
admin/assets/css/components.less CHANGED
@@ -6,9 +6,29 @@
6
 
7
  #WBCR {
8
  .wbcr-clearfy-components {
9
- padding: 20px;
 
10
  .plugin-card {
11
  position: relative;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
 
13
  .plugin-card-top {
14
  min-height: 163px;
@@ -46,7 +66,7 @@
46
  // Premium
47
  .premium-ribbon {
48
  position: absolute;
49
- top: 10px;
50
  right: 0;
51
  height: 30px;
52
  width: 120px;
@@ -90,4 +110,24 @@
90
  }
91
  }
92
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
93
  }
6
 
7
  #WBCR {
8
  .wbcr-clearfy-components {
9
+ padding: 0 20px 20px;
10
+ text-align: center;
11
  .plugin-card {
12
  position: relative;
13
+ display: inline-block;
14
+ width: 32.7%;
15
+ height: 250px;
16
+ margin-left: 0;
17
+ margin-right: 0;
18
+ text-align: left;
19
+ float: none;
20
+ vertical-align: top;
21
+
22
+ &:first-child {
23
+ margin-left: 0;
24
+ }
25
+
26
+ .plugin-card-bottom {
27
+ position: absolute;
28
+ bottom: 0;
29
+ right: 0;
30
+ left: 0;
31
+ }
32
 
33
  .plugin-card-top {
34
  min-height: 163px;
66
  // Premium
67
  .premium-ribbon {
68
  position: absolute;
69
+ bottom: 60px;
70
  right: 0;
71
  height: 30px;
72
  width: 120px;
110
  }
111
  }
112
  }
113
+ }
114
+
115
+ @media screen and (max-width: 1750px) {
116
+ #WBCR {
117
+ .wbcr-clearfy-components {
118
+ .plugin-card {
119
+ width: 49%;
120
+ }
121
+ }
122
+ }
123
+ }
124
+
125
+ @media screen and (max-width: 1350px) {
126
+ #WBCR {
127
+ .wbcr-clearfy-components {
128
+ .plugin-card {
129
+ width: 100%;
130
+ }
131
+ }
132
+ }
133
  }
admin/assets/css/general.css CHANGED
@@ -3,13 +3,35 @@
3
  * @author Alex Kovalev <alex.kovalevv@gmail.com>
4
  * @copyright Alex Kovalev 23.08.2017
5
  */
 
 
 
 
 
 
 
 
 
 
6
  #WBCR {
 
 
 
 
7
  /**
8
  * Widgets
9
  */
10
  /**
11
  * Navigation bar
12
  */
 
 
 
 
 
 
 
 
13
  }
14
  #WBCR .wbcr-clr-logo-label {
15
  position: relative;
@@ -42,11 +64,7 @@
42
  vertical-align: top;
43
  }
44
  #WBCR .wbcr-content-section {
45
- width: 50%;
46
- }
47
- #WBCR .wbcr-right-sidebar-section {
48
- width: 49%;
49
- padding-top: 20px;
50
  }
51
  #WBCR #wbcr-clr-go-to-premium-widget .wbcr-clr-purchase-premium {
52
  position: relative;
@@ -93,13 +111,6 @@
93
  color: #8c8888;
94
  font-size: 12px;
95
  }
96
- #WBCR .wbcr-clearfy-board {
97
- background: #f9f8f8;
98
- box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.1);
99
- padding: 20px;
100
- margin-bottom: 20px;
101
- min-width: 350px;
102
- }
103
  #WBCR #wbcr-clearfy-quick-mode-board h4 {
104
  margin-top: 30px;
105
  }
@@ -138,13 +149,6 @@
138
  opacity: 1;
139
  }
140
  #WBCR .wbcr-clearfy-fake-image-optimizer-board .wbcr-clearfy-fake-widget:hover .wbcr-clearfy-widget-overlay img {
141
- /* display: block;
142
- position: absolute;
143
- top: 0;
144
- left: 0;
145
- bottom: 0;
146
- right: 0;
147
- content: '';*/
148
  opacity: 0.2;
149
  }
150
  #WBCR .wbcr-clearfy-fake-image-optimizer-board .wbcr-clearfy-fake-widget .wbcr-clearfy-widget-overlay img {
@@ -173,19 +177,23 @@
173
  border-bottom: 3px solid #e2a19c;
174
  color: #bd6963;
175
  }
176
- #WBCR .wbcr-clearfy-export-import-board {
 
 
 
 
177
  text-align: right;
178
  }
179
- #WBCR .wbcr-clearfy-export-import-board label {
180
  display: block;
181
  width: 100%;
182
  text-align: left;
183
  padding: 7px 0;
184
  }
185
- #WBCR .wbcr-clearfy-export-import-board #wbcr-clearfy-import-export {
186
  width: 100%;
187
  box-sizing: border-box;
188
- height: 150px;
189
  line-height: inherit;
190
  margin: 0;
191
  padding: 7px 14px;
@@ -198,7 +206,7 @@
198
  transition: border-color 0.3s;
199
  -webkit-appearance: none;
200
  }
201
- #WBCR .wbcr-clearfy-export-import-board .wbcr-clearfy-import-options-button {
202
  display: inline-block;
203
  margin-top: 10px;
204
  }
@@ -341,19 +349,9 @@
341
  #WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch .wbcr-clearfy-switch-confirmation button:active {
342
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.5);
343
  }
344
- #WBCR .wbcr-clearfy-layer {
345
- display: none;
346
- position: absolute;
347
- top: 0;
348
- left: 0;
349
- right: 0;
350
- bottom: 0;
351
- background: rgba(255, 235, 59, 0.18);
352
- z-index: 9;
353
- }
354
  #WBCR .wbcr-clearfy-confirm-popup {
355
  display: none;
356
- position: absolute;
357
  top: 50%;
358
  left: 50%;
359
  width: 500px;
3
  * @author Alex Kovalev <alex.kovalevv@gmail.com>
4
  * @copyright Alex Kovalev 23.08.2017
5
  */
6
+ .wbcr-clearfy-layer {
7
+ display: none;
8
+ position: absolute;
9
+ top: 0;
10
+ left: -20px;
11
+ right: 0;
12
+ bottom: 0;
13
+ background: rgba(255, 235, 59, 0.18);
14
+ z-index: 9;
15
+ }
16
  #WBCR {
17
+ /*.wbcr-right-sidebar-section {
18
+ width: 49%;
19
+ padding-top: 20px;
20
+ }*/
21
  /**
22
  * Widgets
23
  */
24
  /**
25
  * Navigation bar
26
  */
27
+ /*.wbcr-clearfy-board {
28
+ background: #f9f8f8;
29
+ box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.1);
30
+ padding: 20px;
31
+ margin-bottom: 20px;
32
+ min-width: 350px;
33
+ //float: right;
34
+ }*/
35
  }
36
  #WBCR .wbcr-clr-logo-label {
37
  position: relative;
64
  vertical-align: top;
65
  }
66
  #WBCR .wbcr-content-section {
67
+ width: 100%;
 
 
 
 
68
  }
69
  #WBCR #wbcr-clr-go-to-premium-widget .wbcr-clr-purchase-premium {
70
  position: relative;
111
  color: #8c8888;
112
  font-size: 12px;
113
  }
 
 
 
 
 
 
 
114
  #WBCR #wbcr-clearfy-quick-mode-board h4 {
115
  margin-top: 30px;
116
  }
149
  opacity: 1;
150
  }
151
  #WBCR .wbcr-clearfy-fake-image-optimizer-board .wbcr-clearfy-fake-widget:hover .wbcr-clearfy-widget-overlay img {
 
 
 
 
 
 
 
152
  opacity: 0.2;
153
  }
154
  #WBCR .wbcr-clearfy-fake-image-optimizer-board .wbcr-clearfy-fake-widget .wbcr-clearfy-widget-overlay img {
177
  border-bottom: 3px solid #e2a19c;
178
  color: #bd6963;
179
  }
180
+ #WBCR .wbcr-clearfy-troubleshooting {
181
+ padding: 0 50px 20px;
182
+ }
183
+ #WBCR .wbcr-clearfy-export-import {
184
+ padding: 0 50px;
185
  text-align: right;
186
  }
187
+ #WBCR .wbcr-clearfy-export-import label {
188
  display: block;
189
  width: 100%;
190
  text-align: left;
191
  padding: 7px 0;
192
  }
193
+ #WBCR .wbcr-clearfy-export-import #wbcr-clearfy-import-export {
194
  width: 100%;
195
  box-sizing: border-box;
196
+ height: 200px;
197
  line-height: inherit;
198
  margin: 0;
199
  padding: 7px 14px;
206
  transition: border-color 0.3s;
207
  -webkit-appearance: none;
208
  }
209
+ #WBCR .wbcr-clearfy-export-import .wbcr-clearfy-import-options-button {
210
  display: inline-block;
211
  margin-top: 10px;
212
  }
349
  #WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch .wbcr-clearfy-switch-confirmation button:active {
350
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.5);
351
  }
 
 
 
 
 
 
 
 
 
 
352
  #WBCR .wbcr-clearfy-confirm-popup {
353
  display: none;
354
+ position: fixed;
355
  top: 50%;
356
  left: 50%;
357
  width: 500px;
admin/assets/css/install-addons.css CHANGED
@@ -1,31 +1,31 @@
1
- /**
2
- * Install addons global styles
3
- * @author Webcraftic <wordpress.webraftic@gmail.com>
4
- * @copyright Webcraftic 11.07.2018
5
- */
6
- .wbcr-clr-new-component {
7
- background: #f7f7f7;
8
- border: 1px solid #eaeaea;
9
- padding: 5px 20px;
10
- margin-bottom: 10px;
11
- }
12
- .wbcr-clr-new-component h4 {
13
- margin: 5px 0;
14
- display: inline-block;
15
- }
16
- .wbcr-clr-new-component .wbcr-clr-proccess-button {
17
- display: inline-block;
18
- margin: 5px 0;
19
- }
20
- .wbcr-clr-new-component.wbcr-clr-premium {
21
- background: #fff6db;
22
- border: 1px solid #e4dea9;
23
- }
24
- .wbcr-clr-new-component.wbcr-clr-premium h4 {
25
- color: #88690c;
26
- }
27
- .wbcr-clr-proccess-button.button-link,
28
- .wbcr-clr-proccess-button.button-link:focus {
29
- outline: none !important;
30
- box-shadow: none !important;
31
- }
1
+ /**
2
+ * Install addons global styles
3
+ * @author Webcraftic <wordpress.webraftic@gmail.com>
4
+ * @copyright Webcraftic 11.07.2018
5
+ */
6
+ .wbcr-clr-new-component {
7
+ background: #f7f7f7;
8
+ border: 1px solid #eaeaea;
9
+ padding: 5px 20px;
10
+ margin-bottom: 10px;
11
+ }
12
+ .wbcr-clr-new-component h4 {
13
+ margin: 5px 0;
14
+ display: inline-block;
15
+ }
16
+ .wbcr-clr-new-component .wbcr-clr-proccess-button {
17
+ display: inline-block;
18
+ margin: 5px 0;
19
+ }
20
+ .wbcr-clr-new-component.wbcr-clr-premium {
21
+ background: #fff6db;
22
+ border: 1px solid #e4dea9;
23
+ }
24
+ .wbcr-clr-new-component.wbcr-clr-premium h4 {
25
+ color: #88690c;
26
+ }
27
+ .wbcr-clr-proccess-button.button-link,
28
+ .wbcr-clr-proccess-button.button-link:focus {
29
+ outline: none !important;
30
+ box-shadow: none !important;
31
+ }
admin/assets/img/gac-icon-128x128.jpg ADDED
Binary file
admin/assets/img/gnzp-icon-256x256.png ADDED
Binary file
admin/assets/img/rio-icon-128x128.png ADDED
Binary file
admin/assets/img/rio-icon-256x256.png ADDED
Binary file
admin/assets/img/sfi-icon-256x256.png ADDED
Binary file
admin/assets/img/upmp-icon-256x256.png ADDED
Binary file
admin/assets/js/filters.js DELETED
@@ -1,98 +0,0 @@
1
- /*!
2
- * Filers & Hooks API
3
- * Copyright 2018, Webcraftic, http://webcraftic.com
4
- *
5
- * @since 1.0.0
6
- * @pacakge core
7
- */
8
- (function($) {
9
- 'use strict';
10
-
11
- if( !$.wbcr_clearfy ) {
12
- $.wbcr_clearfy = {};
13
- }
14
- $.wbcr_clearfy.filters = $.wbcr_clearfy.filters || {
15
-
16
- /**
17
- * A set of registered filters.
18
- */
19
- _items: {},
20
-
21
- /**
22
- * A set of priorities of registered filters.
23
- */
24
- _priorities: {},
25
-
26
- /**
27
- * Applies filters to a given input value.
28
- */
29
- run: function(filterName, args) {
30
- var input = args && args.length > 0 ? args[0] : null;
31
- if( !this._items[filterName] ) {
32
- return input;
33
- }
34
-
35
- for( var i in this._priorities[filterName] ) {
36
- if( !this._priorities[filterName].hasOwnProperty(i) ) {
37
- continue;
38
- }
39
-
40
- var priority = this._priorities[filterName][i];
41
-
42
- for( var k = 0; k < this._items[filterName][priority].length; k++ ) {
43
- var f = this._items[filterName][priority][k];
44
- input = f.apply(f, args);
45
- }
46
- }
47
-
48
- return input;
49
- },
50
-
51
- /**
52
- * Registers a new filter.
53
- */
54
- add: function(filterName, callback, priority) {
55
-
56
- if( !priority ) {
57
- priority = 10;
58
- }
59
-
60
- if( !this._items[filterName] ) {
61
- this._items[filterName] = {};
62
- }
63
- if( !this._items[filterName][priority] ) {
64
- this._items[filterName][priority] = [];
65
- }
66
- this._items[filterName][priority].push(callback);
67
-
68
- if( !this._priorities[filterName] ) {
69
- this._priorities[filterName] = [];
70
- }
71
- if( $.inArray(priority, this._priorities[filterName]) === -1 ) {
72
- this._priorities[filterName].push(priority);
73
- }
74
-
75
- this._priorities[filterName].sort(function(a, b) {
76
- return a - b;
77
- });
78
- }
79
- };
80
-
81
- $.wbcr_clearfy.hooks = $.wbcr_clearfy.hooks || {
82
-
83
- /**
84
- * Applies filters to a given input value.
85
- */
86
- run: function(filterName, args) {
87
- $.wbcr_clearfy.filters.run(filterName, args);
88
- },
89
-
90
- /**
91
- * Registers a new filter.
92
- */
93
- add: function(filterName, callback, priority) {
94
- $.wbcr_clearfy.filters.add(filterName, callback, priority);
95
- }
96
- };
97
-
98
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
admin/assets/js/general.js CHANGED
@@ -68,7 +68,7 @@
68
  var $this = $(this), modeName = $this.closest('.wbcr-clearfy-confirm-popup').data('mode'),
69
  switcher = $('div[data-mode="' + modeName + '"]', '#wbcr-clearfy-quick-mode-board'),
70
  modeArgs = switcher.data('mode-args'),
71
- flushRedirect = modeArgs && modeArgs.flush_redirect ? true : false;
72
 
73
  self.hideConfirmationPopup();
74
  switcher.addClass('wbcr-clearfy-loading');
@@ -83,7 +83,20 @@
83
  }
84
 
85
  if( !data || data.error ) {
86
- $.wbcr_clearfy.hooks.run('clearfy/quick_start/configurated_error', [modeName, data]);
 
 
 
 
 
 
 
 
 
 
 
 
 
87
  return;
88
  }
89
 
@@ -92,7 +105,17 @@
92
  }
93
  },
94
  function(data) {
95
- $.wbcr_clearfy.hooks.run('clearfy/quick_start/configurated', [modeName, data]);
 
 
 
 
 
 
 
 
 
 
96
 
97
  if( modeName != 'reset' ) {
98
  switcher.addClass('wbcr-clearfy-active');
@@ -109,7 +132,13 @@
109
  showConfirmationPopup: function(modeName, options) {
110
  var self = this;
111
 
112
- $('.wbcr-clearfy-layer').fadeIn();
 
 
 
 
 
 
113
 
114
  var popupElem = $('.wbcr-clearfy-confirm-popup');
115
  popupElem.data('mode', modeName);
@@ -154,27 +183,27 @@
154
  $this = $(this);
155
 
156
  if( !settings ) {
157
- return;
 
 
 
 
 
 
158
  }
159
 
160
  $(this).prop('disabled', true);
161
 
162
  self.sendRequest({
163
- action: 'wbcr_clearfy_import_settings',
 
164
  settings: settings
165
- }, function(data) {
166
- //console.log(data);
167
  $this.prop('disabled', false);
168
- if( data.updateNotice ) {
 
169
  if( !$('.wbcr-clr-update-package').length ) {
170
- $('.wbcr-factory-content').prepend(
171
- '<div class="alert alert-warning wbcr-factory-warning-notice">\
172
- <p>\
173
- <span class="dashicons dashicons-warning"></span>\
174
- ' + data.updateNotice + '\
175
- </p>\
176
- </div>\
177
- ');
178
  }
179
  } else {
180
  if( $('.wbcr-clr-update-package').length ) {
@@ -187,17 +216,13 @@
187
  });
188
  },
189
  sendRequest: function(request_data, beforeValidateCallback, successCallback) {
190
- var self = this,
191
- errorContanier = $('.wbcr-clearfy-switch-error-message'),
192
- defaultErrorMessage = errorContanier.text();
193
 
194
  if( wbcr_clearfy_ajax === undefined ) {
195
  console.log('Undefinded wbcr_clearfy_ajax object.');
196
  return;
197
  }
198
 
199
- //var ajaxUrl = wbcr_clearfy_ajax ? wbcr_clearfy_ajax.ajaxurl : ajaxurl;
200
-
201
  if( typeof request_data === 'object' ) {
202
  request_data.security = wbcr_clearfy_ajax.ajax_nonce;
203
  }
@@ -207,33 +232,50 @@
207
  dataType: 'json',
208
  data: request_data,
209
  success: function(data, textStatus, jqXHR) {
 
210
 
211
  beforeValidateCallback && beforeValidateCallback(data);
212
 
213
  if( !data || data.error ) {
 
 
214
  if( data ) {
215
- console.log(data.error);
216
- if( !errorContanier.is(':visible') ) {
217
- errorContanier.html(defaultErrorMessage + '<br>' + data.error);
 
218
  }
219
  }
220
 
221
- if( !errorContanier.is(':visible') ) {
222
- errorContanier.fadeIn(600).delay(10000).fadeOut(600);
223
- }
224
  return;
225
  }
226
 
227
  successCallback && successCallback(data);
228
 
229
  if( !request_data.flush_redirect ) {
230
- $('.wbcr-clearfy-switch-success-message').fadeIn(600).delay(3000).fadeOut(600);
 
 
 
 
 
 
231
  return;
232
  }
233
 
234
  window.location.href = wbcr_clearfy_ajax.flush_cache_url;
235
  // открыть уведомление
236
 
 
 
 
 
 
 
 
237
  }
238
  });
239
  }
68
  var $this = $(this), modeName = $this.closest('.wbcr-clearfy-confirm-popup').data('mode'),
69
  switcher = $('div[data-mode="' + modeName + '"]', '#wbcr-clearfy-quick-mode-board'),
70
  modeArgs = switcher.data('mode-args'),
71
+ flushRedirect = modeArgs && modeArgs.flush_redirect;
72
 
73
  self.hideConfirmationPopup();
74
  switcher.addClass('wbcr-clearfy-loading');
83
  }
84
 
85
  if( !data || data.error ) {
86
+ /**
87
+ * Хук выполняет проивольную функцию, после того как получен ajax ответ о том, что в
88
+ * результате конфигурации произошла ошибка Реализация системы фильтров и хуков в файле
89
+ * libs/clearfy/admin/assests/js/global.js Пример регистрации хука
90
+ * $.wbcr_factory_clearfy_206.hooks.add('wbcr/factory_clearfy_206/updated',
91
+ * function(noticeId) {});
92
+ * @param {string} modeName - имя режима конфигурации
93
+ * @param {object} data
94
+ */
95
+
96
+ $.wbcr_factory_clearfy_206.hooks.run('clearfy/quick_start/configurated_error', [
97
+ modeName,
98
+ data
99
+ ]);
100
  return;
101
  }
102
 
105
  }
106
  },
107
  function(data) {
108
+
109
+ /**
110
+ * Хук выполняет проивольную функцию, после того как получен ajax ответ об успешном выполнении
111
+ * конфигурации Реализация системы фильтров и хуков в файле
112
+ * libs/clearfy/admin/assests/js/global.js Пример регистрации хука
113
+ * $.wbcr_factory_clearfy_206.hooks.add('wbcr/factory_clearfy_206/updated', function(noticeId)
114
+ * {});
115
+ * @param {string} modeName - имя режима конфигурации
116
+ * @param {object} data
117
+ */
118
+ $.wbcr_factory_clearfy_206.hooks.run('clearfy/quick_start/configurated', [modeName, data]);
119
 
120
  if( modeName != 'reset' ) {
121
  switcher.addClass('wbcr-clearfy-active');
132
  showConfirmationPopup: function(modeName, options) {
133
  var self = this;
134
 
135
+ if( !$('.wbcr-clearfy-layer').length ) {
136
+ var layer = $('<div></div>').addClass('wbcr-clearfy-layer');
137
+ layer.prependTo('#wpbody');
138
+ layer.fadeIn();
139
+ } else {
140
+ $('.wbcr-clearfy-layer').fadeIn();
141
+ }
142
 
143
  var popupElem = $('.wbcr-clearfy-confirm-popup');
144
  popupElem.data('mode', modeName);
183
  $this = $(this);
184
 
185
  if( !settings ) {
186
+ $.wbcr_factory_clearfy_206.app.showNotice('Import options is empty!', 'danger');
187
+ return false;
188
+ }
189
+
190
+ if( void 0 == wbcr_clearfy_ajax || !wbcr_clearfy_ajax.import_options_nonce ) {
191
+ $.wbcr_factory_clearfy_206.app.showNotice('Unknown Javascript error, most likely the wbcr_clearfy_ajax variable does not exist!', 'danger');
192
+ return false;
193
  }
194
 
195
  $(this).prop('disabled', true);
196
 
197
  self.sendRequest({
198
+ action: 'wbcr-clearfy-import-settings',
199
+ _wpnonce: wbcr_clearfy_ajax.import_options_nonce,
200
  settings: settings
201
+ }, function(response) {
 
202
  $this.prop('disabled', false);
203
+
204
+ if( response.data.update_notice ) {
205
  if( !$('.wbcr-clr-update-package').length ) {
206
+ $.wbcr_factory_clearfy_206.app.showNotice(response.data.update_notice);
 
 
 
 
 
 
 
207
  }
208
  } else {
209
  if( $('.wbcr-clr-update-package').length ) {
216
  });
217
  },
218
  sendRequest: function(request_data, beforeValidateCallback, successCallback) {
219
+ var self = this;
 
 
220
 
221
  if( wbcr_clearfy_ajax === undefined ) {
222
  console.log('Undefinded wbcr_clearfy_ajax object.');
223
  return;
224
  }
225
 
 
 
226
  if( typeof request_data === 'object' ) {
227
  request_data.security = wbcr_clearfy_ajax.ajax_nonce;
228
  }
232
  dataType: 'json',
233
  data: request_data,
234
  success: function(data, textStatus, jqXHR) {
235
+ var noticeId;
236
 
237
  beforeValidateCallback && beforeValidateCallback(data);
238
 
239
  if( !data || data.error ) {
240
+ console.log(data);
241
+
242
  if( data ) {
243
+ noticeId = $.wbcr_factory_clearfy_206.app.showNotice(data.error_message, 'danger');
244
+ } else {
245
+ if( void 0 != wbcr_clearfy_ajax ) {
246
+ noticeId = $.wbcr_factory_clearfy_206.app.showNotice(wbcr_clearfy_ajax.i18n.unknown_error, 'danger');
247
  }
248
  }
249
 
250
+ setTimeout(function() {
251
+ $.wbcr_factory_clearfy_206.app.hideNotice(noticeId);
252
+ }, 5000);
253
  return;
254
  }
255
 
256
  successCallback && successCallback(data);
257
 
258
  if( !request_data.flush_redirect ) {
259
+ if( void 0 != wbcr_clearfy_ajax ) {
260
+ noticeId = $.wbcr_factory_clearfy_206.app.showNotice(wbcr_clearfy_ajax.i18n.success_update_settings, 'success');
261
+
262
+ setTimeout(function() {
263
+ $.wbcr_factory_clearfy_206.app.hideNotice(noticeId);
264
+ }, 5000);
265
+ }
266
  return;
267
  }
268
 
269
  window.location.href = wbcr_clearfy_ajax.flush_cache_url;
270
  // открыть уведомление
271
 
272
+ },
273
+ error: function(xhr, ajaxOptions, thrownError) {
274
+ console.log(xhr.status);
275
+ console.log(xhr.responseText);
276
+ console.log(thrownError);
277
+
278
+ var noticeId = $.wbcr_factory_clearfy_206.app.showNotice('Error: [' + thrownError + '] Status: [' + xhr.status + '] Error massage: [' + xhr.responseText + ']', 'danger');
279
  }
280
  });
281
  }
admin/assets/js/install-addons.js CHANGED
@@ -53,16 +53,16 @@
53
 
54
  $this.addClass('disabled').text(button_i18n.loading);
55
 
56
- $.wbcr_clearfy.hooks.run('clearfy/components/pre_update', [$this, data]);
57
 
58
  self.sendRequest(data, function(response) {
59
  if( !response || !response.success ) {
60
 
61
  if( response.data && response.data.error_message ) {
62
- self.showNotice(response.data.error_message, 'danger');
63
  }
64
 
65
- $.wbcr_clearfy.hooks.run('clearfy/components/update_error', [
66
  $this,
67
  data,
68
  response.data.error_message,
@@ -76,9 +76,9 @@
76
  $this.removeClass('disabled').removeClass('updating-message');
77
 
78
  if( storage == 'freemius' ) {
79
- if( response.data.updateNotice ) {
80
  if( !$('.wbcr-clr-update-package').length ) {
81
- self.showNotice(response.data.updateNotice);
82
  }
83
  } else {
84
  if( $('.wbcr-clr-update-package').length ) {
@@ -97,7 +97,11 @@
97
  $this.removeClass('button-default').addClass('button-primary');
98
  }
99
 
100
- $.wbcr_clearfy.hooks.run('clearfy/components/installed', [$this, data, response]);
 
 
 
 
101
 
102
  } else if( plugin_action == 'activate' ) {
103
 
@@ -109,6 +113,7 @@
109
  $this.removeClass('button-primary').addClass('button-default');
110
  }
111
 
 
112
  // If the button is installed inside the notification,
113
  // then delete the button container after activating the component
114
 
@@ -116,6 +121,7 @@
116
  $this.closest('.wbcr-clr-new-component').remove();
117
  }
118
 
 
119
  // If the button is installed inside the notification (inside),
120
  // then delete the button container after activating the component
121
 
@@ -123,6 +129,7 @@
123
  $this.closest('.alert').remove();
124
  }
125
 
 
126
  // If the button is installed inside the notification (inside),
127
  // then delete the button container after activating the component
128
 
@@ -131,6 +138,7 @@
131
  window.location.reload();
132
  }
133
 
 
134
  // If the button is installed on the components page,
135
  // the active and inactive components are highlighted
136
 
@@ -139,7 +147,11 @@
139
  $this.closest('.plugin-card').find('.delete-now').remove();
140
  }
141
 
142
- $.wbcr_clearfy.hooks.run('clearfy/components/pre_activate', [$this, data, response]);
 
 
 
 
143
 
144
  /**
145
  * Send an additional request for activation of the component, during activation
@@ -163,6 +175,7 @@
163
  $this.removeClass('button-default').addClass('button-primary');
164
  }
165
 
 
166
  // If the button is installed on the components page,
167
  // the active and inactive components are highlighted
168
 
@@ -174,13 +187,18 @@
174
  }
175
  }
176
 
 
177
  // If the button is installed on the components page,
178
  // the active and inactive components are highlighted
179
  if( $this.closest('.wbcr-hide-after-action').length ) {
180
  $this.closest('.wbcr-hide-after-action').remove();
181
  }
182
 
183
- $.wbcr_clearfy.hooks.run('clearfy/components/deactivated', [$this, data, response]);
 
 
 
 
184
 
185
  } else if( plugin_action == 'delete' ) {
186
 
@@ -190,6 +208,7 @@
190
  $this.closest('.plugin-card').find('.install-now').removeClass('button-primary').addClass('button-default');
191
  $this.closest('.plugin-card').find('.install-now').text(button_i18n.install);
192
 
 
193
  // If the button is installed on the components page,
194
  // the active and inactive components are highlighted
195
 
@@ -198,7 +217,7 @@
198
  $this.remove();
199
  }
200
 
201
- $.wbcr_clearfy.hooks.run('clearfy/components/deleted', [$this, data, response]);
202
  }
203
  } else {
204
  if( plugin_action == 'install' ) {
@@ -208,7 +227,11 @@
208
 
209
  $this.text(button_i18n[plugin_action]);
210
 
211
- $.wbcr_clearfy.hooks.run('clearfy/components/updated', [$this, data, response]);
 
 
 
 
212
  });
213
 
214
  return false;
@@ -231,7 +254,7 @@
231
  self.sendRequest(data, function(response) {
232
  if( !response || !response.success ) {
233
  if( response.data && response.data.error_message ) {
234
- self.showNotice(response.data.error_message, 'danger');
235
  }
236
  return;
237
  }
@@ -248,81 +271,6 @@
248
  });
249
  },
250
 
251
- /**
252
- * Создает и показывает уведомление внутри интерфейса Clearfy
253
- *
254
- * @param {string} message - сообщение об ошибке или предупреждение
255
- * @param {string} type - тип уведомления (error, warning, success)
256
- */
257
- showNotice: function(message, type) {
258
- var noticeContanier = $('<div></div>'),
259
- noticeInnerWrap = $('<p></p>'),
260
- dashicon = $('<span></span>'),
261
- dashiconClass,
262
- noticeId = this.makeid();
263
-
264
- if(!type) {
265
- type = 'warning';
266
- }
267
-
268
- noticeContanier.addClass('alert', 'wbcr-factory-warning-notice')
269
- .addClass('alert-' + type).addClass('wbcr-factory-' + type + '-notice');
270
-
271
- noticeContanier.append(noticeInnerWrap);
272
- noticeContanier.attr('id', 'uq-' + noticeId);
273
-
274
- if( type == 'success' ) {
275
- dashiconClass = 'dashicons-plus';
276
- } else if(type == 'error') {
277
- dashiconClass = 'dashicons-no';
278
- } else {
279
- dashiconClass = 'dashicons-warning';
280
- }
281
-
282
- dashicon.addClass('dashicons').addClass(dashiconClass);
283
- noticeInnerWrap.prepend(dashicon);
284
- dashicon.after(message);
285
-
286
- $('.wbcr-factory-content').prepend(noticeContanier);
287
-
288
- /**
289
- * Хук выполняет проивольную функцию, после того как уведомление отображено
290
- * Реализация системы фильтров и хуков в файле /admin/assests/filters.js
291
- * Пример регистрации хука $.wbcr_clearfy.hooks.add('clearfy/components/updated', function(noticeId) {});
292
- * @param {string} noticeId - id уведомления
293
- */
294
- $.wbcr_clearfy.hooks.run('clearfy/components/show_notice', [noticeId]);
295
-
296
- return noticeId;
297
- },
298
-
299
- /**
300
- * Удаляет уведомление из интерфейса Clearfy
301
- *
302
- * @param {string} noticeId - id уведомления
303
- */
304
- hideNotice: function(noticeId) {
305
- var el;
306
- if( !noticeId ) {
307
- el = $('.wbcr-factory-content').find('.alert');
308
- } else {
309
- el = $('#uq-' + noticeId);
310
- }
311
-
312
- el.fadeOut(500, function(e) {
313
- $(e).remove();
314
-
315
- /**
316
- * Хук выполняет проивольную функцию, после того как уведомление скрыто
317
- * Реализация системы фильтров и хуков в файле /admin/assests/filters.js
318
- * Пример регистрации хука $.wbcr_clearfy.hooks.add('clearfy/components/updated', function(noticeId)
319
- * {});
320
- * @param {string} noticeId - id уведомления
321
- */
322
- $.wbcr_clearfy.hooks.run('clearfy/components/hide_notice', [noticeId]);
323
- });
324
- },
325
-
326
  /**
327
  * Устанавливает стиль компонента
328
  *
@@ -369,17 +317,17 @@
369
  self.setComponentDeactivate(componentButton);
370
 
371
  if( response.data && response.data.error_message ) {
372
- self.showNotice(response.data.error_message, 'danger');
373
  }
374
 
375
- $.wbcr_clearfy.hooks.run('clearfy/components/activated_error', [sendData.plugin]);
376
  return;
377
  }
378
 
379
  componentButton.removeClass('button-primary').text(button_i18n['deactivate']);
380
  self.setComponentActivate(componentButton);
381
 
382
- $.wbcr_clearfy.hooks.run('clearfy/components/activated', [sendData.plugin]);
383
  });
384
  },
385
 
@@ -398,26 +346,10 @@
398
  console.log(xhr.responseText);
399
  console.log(thrownError);
400
 
401
- var noticeId = self.showNotice('Error: [' + thrownError + '] Status: [' + xhr.status + '] Error massage: [' + xhr.responseText + ']', 'danger');
402
-
403
- /*setTimeout(function() {
404
- self.hideNotice(noticeId);
405
- }, 5000);*/
406
  }
407
  });
408
- },
409
-
410
- makeid: function() {
411
- var text = "";
412
- var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
413
-
414
- for( var i = 0; i < 32; i++ ) {
415
- text += possible.charAt(Math.floor(Math.random() * possible.length));
416
- }
417
-
418
- return text;
419
  }
420
-
421
  };
422
 
423
  $(document).ready(function() {
53
 
54
  $this.addClass('disabled').text(button_i18n.loading);
55
 
56
+ $.wbcr_factory_clearfy_206.hooks.run('clearfy/components/pre_update', [$this, data]);
57
 
58
  self.sendRequest(data, function(response) {
59
  if( !response || !response.success ) {
60
 
61
  if( response.data && response.data.error_message ) {
62
+ $.wbcr_factory_clearfy_206.app.showNotice(response.data.error_message, 'danger');
63
  }
64
 
65
+ $.wbcr_factory_clearfy_206.hooks.run('clearfy/components/update_error', [
66
  $this,
67
  data,
68
  response.data.error_message,
76
  $this.removeClass('disabled').removeClass('updating-message');
77
 
78
  if( storage == 'freemius' ) {
79
+ if( response.data.update_notice ) {
80
  if( !$('.wbcr-clr-update-package').length ) {
81
+ $.wbcr_factory_clearfy_206.app.showNotice(response.data.update_notice);
82
  }
83
  } else {
84
  if( $('.wbcr-clr-update-package').length ) {
97
  $this.removeClass('button-default').addClass('button-primary');
98
  }
99
 
100
+ $.wbcr_factory_clearfy_206.hooks.run('clearfy/components/installed', [
101
+ $this,
102
+ data,
103
+ response
104
+ ]);
105
 
106
  } else if( plugin_action == 'activate' ) {
107
 
113
  $this.removeClass('button-primary').addClass('button-default');
114
  }
115
 
116
+ // todo: вынести в отдельный файл
117
  // If the button is installed inside the notification,
118
  // then delete the button container after activating the component
119
 
121
  $this.closest('.wbcr-clr-new-component').remove();
122
  }
123
 
124
+ // todo: вынести в отдельный файл
125
  // If the button is installed inside the notification (inside),
126
  // then delete the button container after activating the component
127
 
129
  $this.closest('.alert').remove();
130
  }
131
 
132
+ // todo: вынести в отдельный файл
133
  // If the button is installed inside the notification (inside),
134
  // then delete the button container after activating the component
135
 
138
  window.location.reload();
139
  }
140
 
141
+ // todo: вынести в отдельный файл
142
  // If the button is installed on the components page,
143
  // the active and inactive components are highlighted
144
 
147
  $this.closest('.plugin-card').find('.delete-now').remove();
148
  }
149
 
150
+ $.wbcr_factory_clearfy_206.hooks.run('clearfy/components/pre_activate', [
151
+ $this,
152
+ data,
153
+ response
154
+ ]);
155
 
156
  /**
157
  * Send an additional request for activation of the component, during activation
175
  $this.removeClass('button-default').addClass('button-primary');
176
  }
177
 
178
+ // todo: вынести в отдельный файл
179
  // If the button is installed on the components page,
180
  // the active and inactive components are highlighted
181
 
187
  }
188
  }
189
 
190
+ // todo: вынести в отдельный файл
191
  // If the button is installed on the components page,
192
  // the active and inactive components are highlighted
193
  if( $this.closest('.wbcr-hide-after-action').length ) {
194
  $this.closest('.wbcr-hide-after-action').remove();
195
  }
196
 
197
+ $.wbcr_factory_clearfy_206.hooks.run('clearfy/components/deactivated', [
198
+ $this,
199
+ data,
200
+ response
201
+ ]);
202
 
203
  } else if( plugin_action == 'delete' ) {
204
 
208
  $this.closest('.plugin-card').find('.install-now').removeClass('button-primary').addClass('button-default');
209
  $this.closest('.plugin-card').find('.install-now').text(button_i18n.install);
210
 
211
+ // todo: вынести в отдельный файл
212
  // If the button is installed on the components page,
213
  // the active and inactive components are highlighted
214
 
217
  $this.remove();
218
  }
219
 
220
+ $.wbcr_factory_clearfy_206.hooks.run('clearfy/components/deleted', [$this, data, response]);
221
  }
222
  } else {
223
  if( plugin_action == 'install' ) {
227
 
228
  $this.text(button_i18n[plugin_action]);
229
 
230
+ if( response.data.need_rewrite_rules && !$('.wbcr-clr-need-rewrite-rules-message').length ) {
231
+ $.wbcr_factory_clearfy_206.app.showNotice(response.data.need_rewrite_rules, 'warning');
232
+ }
233
+
234
+ $.wbcr_factory_clearfy_206.hooks.run('clearfy/components/updated', [$this, data, response]);
235
  });
236
 
237
  return false;
254
  self.sendRequest(data, function(response) {
255
  if( !response || !response.success ) {
256
  if( response.data && response.data.error_message ) {
257
+ $.wbcr_factory_clearfy_206.app.showNotice(response.data.error_message, 'danger');
258
  }
259
  return;
260
  }
271
  });
272
  },
273
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
274
  /**
275
  * Устанавливает стиль компонента
276
  *
317
  self.setComponentDeactivate(componentButton);
318
 
319
  if( response.data && response.data.error_message ) {
320
+ $.wbcr_factory_clearfy_206.app.showNotice(response.data.error_message, 'danger');
321
  }
322
 
323
+ $.wbcr_factory_clearfy_206.hooks.run('clearfy/components/activated_error', [sendData.plugin]);
324
  return;
325
  }
326
 
327
  componentButton.removeClass('button-primary').text(button_i18n['deactivate']);
328
  self.setComponentActivate(componentButton);
329
 
330
+ $.wbcr_factory_clearfy_206.hooks.run('clearfy/components/activated', [sendData.plugin]);
331
  });
332
  },
333
 
346
  console.log(xhr.responseText);
347
  console.log(thrownError);
348
 
349
+ $.wbcr_factory_clearfy_206.app.showNotice('Error: [' + thrownError + '] Status: [' + xhr.status + '] Error massage: [' + xhr.responseText + ']', 'danger');
 
 
 
 
350
  }
351
  });
 
 
 
 
 
 
 
 
 
 
 
352
  }
 
353
  };
354
 
355
  $(document).ready(function() {
admin/assets/js/license-manager.js CHANGED
@@ -1,31 +1,94 @@
1
  /**
2
- * General
 
 
 
3
  * @author Webcraftic <wordpress.webraftic@gmail.com>
4
- * @copyright (c) 10.09.2017, Webcraftic
5
- * @version 1.0
 
6
  */
7
 
8
 
9
  jQuery(function($) {
10
-
11
- $(document).on( 'click', '.wcl-control-btn', function() {
 
 
 
 
 
 
 
 
 
 
12
  $('.wcl-control-btn').hide();
13
- var wrapper = $('#wcl-license-wrapper');
14
- var loader = wrapper.data('loader');
15
- $(this).after('<img class="wcl-loader" src="'+loader+'">');
 
 
 
16
  var data = {
17
- action: 'wbcr_clr_licensing',
18
  _wpnonce: $('#_wpnonce').val(),
19
- license_action: $(this).data( 'action' ),
20
- licensekey: '',
21
  };
22
- if ( $(this).data( 'action' ) == 'activate' ) {
 
23
  data.licensekey = $('#license-key').val();
24
  }
25
- $.post( ajaxurl, data, function( response ) {
26
- wrapper.html( response );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27
  });
 
28
  return false;
29
  });
30
-
31
  });
1
  /**
2
+ * Этот файл содержит скрипт исполняелся во время процедур с формой лицензирования.
3
+ * Его основная роль отправка ajax запросов на проверку, активацию, деактивацию лицензии
4
+ * и вывод уведомлений об ошибка или успешно выполнении проверок.
5
+ *
6
  * @author Webcraftic <wordpress.webraftic@gmail.com>
7
+ * @copyright (c) 05.10.2018, Webcraftic
8
+ * @version 1.1
9
+ * @since 1.4.0
10
  */
11
 
12
 
13
  jQuery(function($) {
14
+
15
+ var allNotices = [];
16
+
17
+ $(document).on('click', '.wcl-control-btn', function() {
18
+
19
+ // Скрываем все открытые этим событием уведомления
20
+ // Глобальные уведомления не трогаем
21
+
22
+ for( i = 0; i < allNotices.length; i++ ) {
23
+ $.wbcr_factory_clearfy_206.app.hideNotice(allNotices[i]);
24
+ }
25
+
26
  $('.wcl-control-btn').hide();
27
+
28
+ var wrapper = $('#wcl-license-wrapper'),
29
+ loader = wrapper.data('loader');
30
+
31
+ $(this).after('<img class="wcl-loader" src="' + loader + '">');
32
+
33
  var data = {
34
+ action: 'wbcr-clearfy-check-license',
35
  _wpnonce: $('#_wpnonce').val(),
36
+ license_action: $(this).data('action'),
37
+ licensekey: ''
38
  };
39
+
40
+ if( $(this).data('action') == 'activate' ) {
41
  data.licensekey = $('#license-key').val();
42
  }
43
+
44
+ $.ajax(ajaxurl, {
45
+ type: 'post',
46
+ dataType: 'json',
47
+ data: data,
48
+ success: function(response) {
49
+ var noticeId;
50
+
51
+ if( !response || !response.success ) {
52
+
53
+ $('.wcl-control-btn').show();
54
+ $('.wcl-loader').remove();
55
+
56
+ if( response.data ) {
57
+ console.log(response.data.error_message);
58
+ noticeId = $.wbcr_factory_clearfy_206.app.showNotice('Error: [' + response.data.error_message + ']', 'danger');
59
+ allNotices.push(noticeId);
60
+ } else {
61
+ console.log(response);
62
+ }
63
+
64
+ return;
65
+ }
66
+
67
+ if( response.data && response.data.message ) {
68
+ noticeId = $.wbcr_factory_clearfy_206.app.showNotice(response.data.message, 'success');
69
+ allNotices.push(noticeId);
70
+
71
+ // todo: доработать генерацию формы, вместо перезагрузки страницы
72
+ window.location.reload();
73
+ }
74
+
75
+ },
76
+ error: function(xhr, ajaxOptions, thrownError) {
77
+
78
+ $('.wcl-control-btn').show();
79
+ $('.wcl-loader').remove();
80
+
81
+ console.log(xhr.status);
82
+ console.log(xhr.responseText);
83
+ console.log(thrownError);
84
+
85
+ var noticeId = $.wbcr_factory_clearfy_206.app.showNotice('Error: [' + thrownError + '] Status: [' + xhr.status + '] Error massage: [' + xhr.responseText + ']', 'danger');
86
+
87
+ allNotices.push(noticeId);
88
+ }
89
  });
90
+
91
  return false;
92
  });
93
+
94
  });
admin/assets/js/update-package.js CHANGED
@@ -23,28 +23,40 @@
23
 
24
  $(document).on('click', '.wbcr-clr-update-package', function() {
25
  var $this = $(this),
26
- loading = $(this).data( 'loading' ),
27
  wpnonce = $(this).data('wpnonce');
28
-
29
  var data = {
30
  action: 'wbcr-clearfy-update-package',
31
  _wpnonce: wpnonce
32
  };
33
 
34
  $this.addClass('disabled').text(loading);
35
-
36
  self.sendRequest(data, function(response) {
37
- var alert_block = $this.closest('div.alert');
38
- if( response.success ) {
39
- alert_block.removeClass('alert-warning').addClass('alert-success');
40
- alert_block.find('p').html( '<span class="dashicons dashicons-plus"></span> ' + response.data.msg );
41
- setTimeout( function() { alert_block.hide() }, 3000 );
42
- } else {
43
- alert_block.removeClass('alert-warning').addClass('alert-danger');
44
- alert_block.find('p').html( '<span class="dashicons dashicons-warning"></span> ' + response.data.msg );
 
 
 
 
 
 
45
  }
 
 
 
 
 
 
46
  });
47
-
48
  return false;
49
  });
50
  },
@@ -56,8 +68,14 @@
56
  success: function(data, textStatus, jqXHR) {
57
  callback && callback(data);
58
  },
59
- error: function(data) {
60
- console.log(data);
 
 
 
 
 
 
61
  }
62
  });
63
  }
23
 
24
  $(document).on('click', '.wbcr-clr-update-package', function() {
25
  var $this = $(this),
26
+ loading = $(this).data('loading'),
27
  wpnonce = $(this).data('wpnonce');
28
+
29
  var data = {
30
  action: 'wbcr-clearfy-update-package',
31
  _wpnonce: wpnonce
32
  };
33
 
34
  $this.addClass('disabled').text(loading);
35
+
36
  self.sendRequest(data, function(response) {
37
+ var noticeId;
38
+
39
+ $this.closest('.wbcr-factory-warning-notice').remove();
40
+
41
+ if( !response || !response.success ) {
42
+
43
+ if( response.data.error_message ) {
44
+ console.log(response.data.error_message);
45
+ noticeId = $.wbcr_factory_clearfy_206.app.showNotice('Error massage: [' + response.data.error_message + ']', 'danger');
46
+ } else {
47
+ console.log(response);
48
+ }
49
+
50
+ return;
51
  }
52
+
53
+ noticeId = $.wbcr_factory_clearfy_206.app.showNotice(response.data.message, 'success');
54
+
55
+ setTimeout(function() {
56
+ $.wbcr_factory_clearfy_206.app.hideNotice(noticeId);
57
+ }, 5000);
58
  });
59
+
60
  return false;
61
  });
62
  },
68
  success: function(data, textStatus, jqXHR) {
69
  callback && callback(data);
70
  },
71
+ error: function(xhr, ajaxOptions, thrownError) {
72
+ console.log(xhr.status);
73
+ console.log(xhr.responseText);
74
+ console.log(thrownError);
75
+
76
+ var noticeId = $.wbcr_factory_clearfy_206.app.showNotice('Error: [' + thrownError + '] Status: [' + xhr.status + '] Error massage: [' + xhr.responseText + ']', 'danger');
77
+
78
+ allNotices.push(noticeId);
79
  }
80
  });
81
  }
admin/boot.php CHANGED
@@ -12,190 +12,218 @@
12
  }
13
 
14
  /**
15
- * Выводит уведомление, что нужно сбросить постоянные ссылки.
16
- * Уведомление будет показано на всех страницах Clearfy и его компонентах.
17
- *
18
- * @param WCL_Plugin $plugin
19
- * @param Wbcr_FactoryPages407_ImpressiveThemplate $obj
20
- * @return bool
21
  */
22
- //todo: Выводить сразу после деактивации аддона
23
- function wbcr_clearfy_print_notice_rewrite_rules($plugin, $obj)
24
- {
25
- if( WCL_Plugin::app()->getOption('need_rewrite_rules') ) {
26
- $obj->printWarningNotice(sprintf(__('When you deactivate some components, permanent links may work incorrectly. If this happens, please, <a href="%s">update the permalinks</a>, so you could complete the deactivation.', 'clearfy'), admin_url('options-permalink.php')));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27
  }
28
- }
29
 
30
- add_action('wbcr_factory_pages_407_imppage_print_all_notices', 'wbcr_clearfy_print_notice_rewrite_rules', 10, 2);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
 
32
  /**
33
- * Удалем уведомление Clearfy о том, что нужно перезаписать постоянные ссылоки.
 
 
 
 
 
 
34
  */
35
- function wbcr_clearfy_flush_rewrite_rules() {
36
- WCL_Plugin::app()->deleteOption('need_rewrite_rules', 1);
37
- }
 
 
 
 
38
 
39
- add_action('flush_rewrite_rules_hard', 'wbcr_clearfy_flush_rewrite_rules');
 
 
 
40
 
41
  /**
42
- * Обновить постоынные ссылки, после выполнения быстрых настроек
 
43
  *
44
- * @param WHM_Plugin $plugin
45
- * @param Wbcr_FactoryPages407_ImpressiveThemplate $obj
 
 
 
46
  */
47
- function wbcr_clearfy_after_form_save($plugin, $obj)
48
- {
49
- if( !WCL_Plugin::app()->currentUserCan() ) {
50
- return;
 
 
 
 
 
 
 
 
 
 
 
 
 
51
  }
52
- $is_clearfy = WCL_Plugin::app()->getPluginName() == $plugin->getPluginName();
53
 
54
- if( $is_clearfy && $obj->id == 'quick_start' && isset($_GET['action']) && $_GET['action'] == 'flush-cache-and-rules' ) {
55
- require_once ABSPATH . 'wp-admin/includes/file.php';
56
- require_once ABSPATH . 'wp-admin/includes/misc.php';
57
- flush_rewrite_rules(true);
 
 
 
 
 
 
 
 
 
58
  }
59
  }
60
 
61
- add_action('wbcr_factory_406_imppage_after_form_save', 'wbcr_clearfy_after_form_save', 10, 2);
62
 
63
  /**
64
- * We assets scripts in the admin panel on each page.
65
  *
66
- * @param $hook
 
67
  */
68
- function wbcr_clearfy_enqueue_global_scripts($hook)
69
  {
70
- wp_enqueue_style('wbcr-clearfy-install-addons', WCL_PLUGIN_URL . '/admin/assets/css/install-addons.css', array(), WCL_Plugin::app()
71
- ->getPluginVersion());
72
- wp_enqueue_script('wbcr-clearfy-install-addons', WCL_PLUGIN_URL . '/admin/assets/js/install-addons.js', array('jquery'), WCL_Plugin::app()
73
- ->getPluginVersion());
74
-
75
- // Filers & Hooks API
76
- wp_enqueue_script('wbcr-clearfy-filters', WCL_PLUGIN_URL . '/admin/assets/js/filters.js', array('jquery'), WCL_Plugin::app()
77
- ->getPluginVersion());
78
  }
79
 
80
- add_action('admin_enqueue_scripts', 'wbcr_clearfy_enqueue_global_scripts');
81
 
82
  /**
83
- * This proposal to download new components from the team Webcraftic,
84
- * all components are installed without reloading the page, if the components are already installed,
85
- * then this notice will be hidden.
86
  *
87
- * @param $notices
88
- * @return mixed|void
 
 
89
  */
90
- function wbcr_clearfy_admin_notices($notices, $plugin_name)
91
  {
 
 
 
 
 
92
 
93
- if( $plugin_name != WCL_Plugin::app()->getPluginName() ) {
94
- return $notices;
95
- }
96
 
97
- if( is_plugin_active('wp-disable/wpperformance.php') ) {
98
- $default_notice = WCL_Plugin::app()
99
- ->getPluginTitle() . ': ' . __('We found that you have the plugin %s installed. The functions of this plugin already exist in %s. Please deactivate plugin %s to avoid conflicts between plugins functions.', 'clearfy');
100
- $default_notice .= ' ' . __('If you do not want to deactivate the plugin %s for some reason, we strongly recommend do not use the same plugins functions at the same time!', 'clearfy');
101
-
102
- $notices[] = array(
103
- 'id' => 'clearfy_plugin_conflicts_notice',
104
- 'type' => 'warning',
105
- 'dismissible' => true,
106
- 'dismiss_expires' => 0,
107
- 'text' => '<p>' . sprintf($default_notice, 'WP Disable', WCL_Plugin::app()
108
- ->getPluginTitle(), 'WP Disable', 'WP Disable') . '</p>'
109
- );
110
- }
111
 
112
- $new_external_componetns = array(
113
- array(
114
- 'name' => 'robin-image-optimizer',
115
- 'base_path' => 'robin-image-optimizer/robin-image-optimizer.php',
116
- 'type' => 'wordpress',
117
- 'title' => __('Robin image optimizer – saves your money on image optimization!', 'clearfy'),
118
- 'description' => '<br><span><b>' . __('Our new component!', 'clearfy') . '</b> ' . __('We’ve created a fully free solution for image optimization, which is as good as the paid products. The plugin optimizes your images automatically, reducing their weight with no quality loss.', 'clearfy') . '</span><br>'
119
- ),
120
- array(
121
- 'name' => 'hide_login_page',
122
- 'base_path' => 'hide-login-page/hide-login-page.php',
123
- 'type' => 'wordpress',
124
- 'title' => __('Hide login page (Reloaded) – hides your login page!', 'clearfy'),
125
- 'description' => '<br><span> <b style="color:red;">' . __('Attention! If you’ve ever used features associated with hiding login page, then, please, re-activate this component.', 'clearfy') . '</b><br> ' . __('This simple module changes the login page URL to a custom link quickly and safely. The plugin requires installation.', 'clearfy') . '</span><br>'
126
- ),
127
- array(
128
- 'name' => 'webcraftic-hide-my-wp',
129
- 'type' => 'freemius',
130
- 'title' => __('Hide my wp (Premium) – hides your WordPress from hackers and bots!', 'clearfy'),
131
- 'description' => '<br><span><b>' . __('Our new component! ', 'clearfy') . '</b>' . __('This premium component helps in hiding your WordPress from hackers and bots. Basically, it disables identification of your CMS by changing directories and files names, removing meta data and replacing HTML content which can provide all information about the platform you use.
132
- Most websites can be hacked easily, as hackers and bots know all security flaws in plugins, themes and the WordPress core. You can secure the website from the attack by hiding the information the hackers will need.
133
- ', 'clearfy') . '</span><br>'
134
- ),
135
- /*array(
136
- 'name' => 'minify_and_combine',
137
- 'type' => 'internal',
138
- 'title' => __('Minify and Combine (JS, CSS) – optimizes your scripts and styles!', 'clearfy'),
139
- 'description' => '<br><span><b>' . __('Our new component! ', 'clearfy') . '</b> ' . __('This component combines all your scripts and styles in one file, compresses & caches it. ', 'clearfy') . '
140
- </span><br>'
141
- ),
142
- array(
143
- 'name' => 'html_minify',
144
- 'type' => 'internal',
145
- 'title' => __('Html minify (Reloaded) – reduces the amount of code on your pages!', 'clearfy'),
146
- 'description' => '<br><span><b>' . __('Our new component! ', 'clearfy') . '</b> ' . __('We’ve completely redesigned HTML compression of the pages and added these features to another component. It’s more stable and reliable solution for HTML code optimization of your pages.', 'clearfy') . '</span><br>'
147
- ),*/
148
- );
149
-
150
- $need_show_new_components_notice = false;
151
-
152
- $new_component_notice_text = '<div>';
153
- $new_component_notice_text .= '<h3>' . __('Welcome to Clearfy!', 'clearfy') . '</h3>';
154
- $new_component_notice_text .= '<p>' . __('We apologize for the delay in updates!', 'clearfy') . ' ';
155
- $new_component_notice_text .= __('Our team has spent a lot of time designing new, useful, and the most important – free! – features of the Clearfy plugin! ', 'clearfy') . ' ';
156
- $new_component_notice_text .= __('Now it is time to try it.', 'clearfy') . '</p>';
157
-
158
- foreach($new_external_componetns as $new_component) {
159
- $slug = $new_component['name'];
160
-
161
- if( $new_component['type'] == 'wordpress' ) {
162
- $slug = $new_component['base_path'];
163
- }
164
- $install_button = WCL_Plugin::app()->getInstallComponentsButton($new_component['type'], $slug);
165
 
166
- if( $install_button->isPluginActivate() ) {
167
- continue;
168
- }
169
 
170
- $premium_class = $new_component['name'] == 'webcraftic-hide-my-wp'
171
- ? ' wbcr-clr-premium'
172
- : '';
 
 
 
 
173
 
174
- $new_component_notice_text .= '<div class="wbcr-clr-new-component' . $premium_class . '">';
175
- $new_component_notice_text .= '<h4>' . $new_component['title'] . '</h4>';
176
- $new_component_notice_text .= $new_component['description'];
177
- $new_component_notice_text .= $install_button->getButton();
178
- $new_component_notice_text .= '</div>';
179
 
180
- $need_show_new_components_notice = true;
 
 
 
 
 
 
 
 
 
181
  }
 
182
 
183
- $new_component_notice_text .= '</div>';
184
-
185
- if( $need_show_new_components_notice ) {
186
- $notices[] = array(
187
- 'id' => 'clearfy_plugin_install_new_components_notice',
188
- 'type' => 'warning',
189
- 'dismissible' => true,
190
- 'dismiss_expires' => 0,
191
- 'text' => $new_component_notice_text
192
- );
193
  }
194
-
195
- return apply_filters('wbcr_clearfy_admin_notices', $notices);
196
  }
197
 
198
- add_filter('wbcr_factory_notices_405_list', 'wbcr_clearfy_admin_notices', 10, 2);
 
 
199
 
200
  /**
201
  * Fake stubs for the Clearfy plugin board
@@ -203,20 +231,69 @@ Most websites can be hacked easily, as hackers and bots know all security flaws
203
  function wbcr_clearfy_fake_boards()
204
  {
205
  if( !defined('WIO_PLUGIN_ACTIVE') ) {
206
- require_once WCL_PLUGIN_DIR . '/admin/includes/classes/class.install-plugins-button.php';
207
- $install_button = new WCL_InstallPluginsButton('wordpress', 'robin-image-optimizer/robin-image-optimizer.php');
208
-
209
  ?>
210
- <div class="col-sm-12">
211
- <div class="wbcr-clearfy-fake-image-optimizer-board wbcr-clearfy-board">
212
- <h4 class="wio-text-left"><?php _e('Images optimization', 'image-optimizer'); ?></h4>
213
 
214
- <div class="wbcr-clearfy-fake-widget">
215
- <div class="wbcr-clearfy-widget-overlay">
216
- <img src="<?= WCL_PLUGIN_URL ?>/admin/assets/img/robin-image-optimizer-fake-board.png" alt=""/>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
217
  </div>
218
- <?php $install_button->renderButton(); ?>
219
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
220
  </div>
221
  </div>
222
  <?php
@@ -230,7 +307,7 @@ Most websites can be hacked easily, as hackers and bots know all security flaws
230
  *
231
  * @param array $widgets
232
  * @param string $position
233
- * @param Wbcr_Factory406_Plugin $plugin
234
  */
235
  function wbcr_clearfy_donate_widget($widgets, $position, $plugin)
236
  {
@@ -240,39 +317,49 @@ Most websites can be hacked easily, as hackers and bots know all security flaws
240
 
241
  if( $licensing->isLicenseValid() ) {
242
  unset($widgets['donate_widget']);
 
243
 
244
  return $widgets;
 
 
 
 
245
  }
246
 
247
- $buy_premium_url = WCL_Plugin::app()->getAuthorSitePageUrl('pricing', 'license_page');
 
 
248
 
249
- ob_start();
250
- ?>
251
- <div id="wbcr-clr-go-to-premium-widget" class="wbcr-factory-sidebar-widget">
252
- <p>
253
- <strong><?php _e('Activation Clearfy Business', 'clearfy'); ?></strong>
254
- </p>
255
 
256
- <div class="wbcr-clr-go-to-premium-widget-body">
257
- <p><?php _e('<b>Clearfy Business</b> is a paid package of components for the popular free WordPress plugin named Clearfy. You get access to all paid components at one price.', 'clearfy') ?></p>
258
 
259
- <p><?php _e('Paid license guarantees that you can download and update existing and future paid components of the plugin.', 'clearfy') ?></p>
260
- <a href="<?= $buy_premium_url ?>" class="wbcr-clr-purchase-premium" target="_blank" rel="noopener">
261
  <span class="btn btn-gold btn-inner-wrap">
262
- <i class="fa fa-star"></i> <?php printf(__('Upgrade to Clearfy Business for $%s', 'clearfy'), 19) ?>
263
  <i class="fa fa-star"></i>
264
  </span>
265
- </a>
 
266
  </div>
267
- </div>
268
- <?php
269
 
270
- $widgets['donate_widget'] = ob_get_contents();
271
- ob_end_clean();
 
 
272
  }
273
 
274
  return $widgets;
275
  }
276
 
277
- add_filter('wbcr_factory_pages_407_imppage_get_widgets', 'wbcr_clearfy_donate_widget', 10, 3);
 
278
 
12
  }
13
 
14
  /**
15
+ * Выводит кнопку настроек Clearfy в шапке интерфейса плагина
 
 
 
 
 
16
  */
17
+ add_action('wbcr/factory/pages/impressive/header', function ($plugin_name) {
18
+ if( $plugin_name != WCL_Plugin::app()->getPluginName() ) {
19
+ return;
20
+ }
21
+ ?>
22
+ <a href="<?= WCL_Plugin::app()->getPluginPageUrl('clearfy_settings') ?>" class="wbcr-factory-button wbcr-factory-type-settings">
23
+ <?= apply_filters('wbcr/clearfy/settings_button_title', __('Clearfy settings', 'clearfy')); ?>
24
+ </a>
25
+ <?php
26
+ });
27
+
28
+ /**
29
+ * Этот код обманывает Wordpress, убеждая его, что плагин имеет новую версию,
30
+ * из-за чего Wordpress создает уведомление об обновлении плагина. Все это необходимо
31
+ * для обновления пакета компонентов
32
+ * @param mixed $transient - value of site transient.
33
+ */
34
+ add_filter('site_transient_update_plugins', function ($transient) {
35
+ if( empty($transient->checked) ) {
36
+ return $transient;
37
  }
 
38
 
39
+ $package_plugin = WCL_Package::instance();
40
+
41
+ if( !$package_plugin->isActive() ) {
42
+ return $transient;
43
+ }
44
+
45
+ $need_update_package = $package_plugin->isNeedUpdate();
46
+ $need_update_addons = $package_plugin->isNeedUpdateAddons();
47
+ $info = $package_plugin->info();
48
+
49
+ if( $need_update_package and $need_update_addons ) {
50
+ $update_data = new stdClass();
51
+ $update_data->slug = $info['plugin_slug'];
52
+ $update_data->plugin = $info['plugin_basename'];
53
+ $update_data->new_version = '1.1';
54
+ $update_data->package = $package_plugin->downloadUrl();
55
+ $transient->response[$update_data->plugin] = $update_data;
56
+ }
57
+
58
+ return $transient;
59
+ });
60
 
61
  /**
62
+ * Выводит уведомление внутри интерфейса Clearfy, на всех страницах плагина.
63
+ * Это необходимо, чтоб напомнить пользователю обновить конфигурацию компонентов плагина,
64
+ * иначе вновь активированные компоненты не будет зайдествованы в работе плагина.
65
+ *
66
+ * @param Wbcr_Factory409_Plugin $plugin
67
+ * @param Wbcr_FactoryPages410_ImpressiveThemplate $obj
68
+ * @return bool
69
  */
70
+ add_action('wbcr/factory/pages/impressive/print_all_notices', function ($plugin, $obj) {
71
+ // выводим уведомление везде, кроме страницы компонентов. Там выводится отдельно.
72
+ if( (WCL_Plugin::app()->getPluginName() != $plugin->getPluginName()) || ($obj->id == 'components') ) {
73
+ return false;
74
+ }
75
+ $package_plugin = WCL_Package::instance();
76
+ $package_update_notice = $package_plugin->getUpdateNotice();
77
 
78
+ if( $package_update_notice ) {
79
+ $obj->printWarningNotice($package_update_notice);
80
+ }
81
+ }, 10, 2);
82
 
83
  /**
84
+ * Выводит уведомление в строке плагина Clearfy (на странице плагинов),
85
+ * что нужно обновить пакет компонентов.
86
  *
87
+ * @see WP_Plugins_List_Table
88
+ * @param string $plugin_file
89
+ * @param array $plugin_data
90
+ * @param string $status
91
+ * @return bool
92
  */
93
+ add_action('after_plugin_row_clearfy/clearfy.php', function ($plugin_file, $plugin_data, $status) {
94
+ $package_plugin = WCL_Package::instance();
95
+ $need_update_package = $package_plugin->isNeedUpdate();
96
+
97
+ if( $need_update_package ) {
98
+ if( $package_plugin->isNeedUpdateAddons() ) {
99
+ $update_link = ' <a href="#" data-wpnonce="' . wp_create_nonce('package') . '" data-loading="' . __('Update in progress...', 'clearfy') . '" data-ok="' . __('Components have been successfully updated!', 'clearfy') . '" class="wbcr-clr-plugin-update-link">' . __('update now', 'clearfy') . '</a>';
100
+ ?>
101
+ <tr class="plugin-update-tr active update">
102
+ <td colspan="3" class="plugin-update colspanchange">
103
+ <div class="update-message notice inline notice-warning notice-alt" style="background-color:#f5e9f5;border-color: #dab9da;">
104
+ <p><?= __('Updates are available for one of the components.', 'clearfy') . $update_link; ?></p>
105
+ </div>
106
+ </td>
107
+ </tr>
108
+ <?php
109
+ }
110
  }
111
+ }, 100, 3);
112
 
113
+ /**
114
+ * @param $form
115
+ * @param Wbcr_Factory409_Plugin $plugin
116
+ * @param Wbcr_FactoryPages410_ImpressiveThemplate $obj
117
+ */
118
+ function wbcr_clearfy_multisite_before_save($form, $plugin, $obj)
119
+ {
120
+
121
+ if( $plugin->isNetworkActive() ) {
122
+ $licensing = WCL_Licensing::instance();
123
+ if( !$licensing->isLicenseValid() && WCL_Plugin::app()->isNetworkActive() && $plugin->getPluginName() == WCL_Plugin::app()->getPluginName() ) {
124
+ $obj->redirectToAction('multisite-pro');
125
+ }
126
  }
127
  }
128
 
129
+ add_action('wbcr_factory_409_imppage_before_form_save', 'wbcr_clearfy_multisite_before_save', 10, 3);
130
 
131
  /**
132
+ * Устанавливает логотип Webcraftic и сборку плагина для Clearfy и всех его компонентов
133
  *
134
+ * @param string $title
135
+ * @since 1.4.0
136
  */
137
+ function wbcr_clearfy_branding($title)
138
  {
139
+ $licensing = WCL_Licensing::instance();
140
+
141
+ return 'Webcraftic Clearfy ' . ($licensing->isLicenseValid() ? '<span class="wbcr-clr-logo-label wbcr-clr-premium-label-logo">' . __('Business', 'clearfy') . '</span>' : '<span class="wbcr-clr-logo-label wbcr-clr-free-label-logo">Free</span>') . ' ver';
 
 
 
 
 
142
  }
143
 
144
+ add_action('wbcr/factory/pages/impressive/plugin_title', 'wbcr_clearfy_branding');
145
 
146
  /**
147
+ * Подключаем скрипты отвественные за обновления пакетов для Clearfy
148
+ * Скрипты подключа.тся на каждой странице Clearfy и его компонентов
 
149
  *
150
+ * @param string $page_id
151
+ * @param Wbcr_Factory409_ScriptList $scripts
152
+ * @param Wbcr_Factory409_StyleList $styles
153
+ * @since 1.4.0
154
  */
155
+ function wbcr_clearfy_enqueue_global_scripts($page_id, $scripts, $styles)
156
  {
157
+ $scripts->add(WCL_PLUGIN_URL . '/admin/assets/js/update-package.js', array(
158
+ 'jquery',
159
+ 'wbcr-factory-clearfy-206-global'
160
+ ));
161
+ }
162
 
163
+ add_action('wbcr/clearfy/page_assets', 'wbcr_clearfy_enqueue_global_scripts', 10, 3);
 
 
164
 
165
+ /**
166
+ * Подключаем скрипты для установки компонентов Clearfy
167
+ * на все страницы админпанели
168
+ */
169
+ add_action('admin_enqueue_scripts', function () {
170
+ wp_enqueue_style('wbcr-clearfy-install-components', WCL_PLUGIN_URL . '/admin/assets/css/install-addons.css', array(), WCL_Plugin::app()->getPluginVersion());
171
+ wp_enqueue_script('wbcr-clearfy-install-components', WCL_PLUGIN_URL . '/admin/assets/js/install-addons.js', array(
172
+ 'jquery',
173
+ 'wbcr-factory-clearfy-206-global'
174
+ ), WCL_Plugin::app()->getPluginVersion());
175
+ });
 
 
 
176
 
177
+ /**
178
+ * Выводит уведомление, что нужно сбросить постоянные ссылки.
179
+ * Уведомление будет показано на всех страницах Clearfy и его компонентах.
180
+ *
181
+ * @param WCL_Plugin $plugin
182
+ * @param Wbcr_FactoryPages410_ImpressiveThemplate $obj
183
+ * @return bool
184
+ */
185
+ function wbcr_clearfy_print_notice_rewrite_rules($plugin, $obj)
186
+ {
187
+ if( WCL_Plugin::app()->getPopulateOption('need_rewrite_rules') ) {
188
+ $obj->printWarningNotice(sprintf('<span class="wbcr-clr-need-rewrite-rules-message">' . __('When you deactivate some components, permanent links may work incorrectly. If this happens, please, <a href="%s">update the permalinks</a>, so you could complete the deactivation.', 'clearfy'), admin_url('options-permalink.php')) . '</span>');
189
+ }
190
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
191
 
192
+ add_action('wbcr/factory/pages/impressive/print_all_notices', 'wbcr_clearfy_print_notice_rewrite_rules', 10, 2);
 
 
193
 
194
+ /**
195
+ * Удалем уведомление Clearfy о том, что нужно перезаписать постоянные ссылоки.s
196
+ */
197
+ function wbcr_clearfy_flush_rewrite_rules()
198
+ {
199
+ WCL_Plugin::app()->deletePopulateOption('need_rewrite_rules', 1);
200
+ }
201
 
202
+ add_action('flush_rewrite_rules_hard', 'wbcr_clearfy_flush_rewrite_rules');
 
 
 
 
203
 
204
+ /**
205
+ * Обновить постоынные ссылки, после выполнения быстрых настроек
206
+ *
207
+ * @param WHM_Plugin $plugin
208
+ * @param Wbcr_FactoryPages410_ImpressiveThemplate $obj
209
+ */
210
+ function wbcr_clearfy_after_form_save($plugin, $obj)
211
+ {
212
+ if( !WCL_Plugin::app()->currentUserCan() ) {
213
+ return;
214
  }
215
+ $is_clearfy = WCL_Plugin::app()->getPluginName() == $plugin->getPluginName();
216
 
217
+ if( $is_clearfy && $obj->id == 'quick_start' && isset($_GET['action']) && $_GET['action'] == 'flush-cache-and-rules' ) {
218
+ require_once ABSPATH . 'wp-admin/includes/file.php';
219
+ require_once ABSPATH . 'wp-admin/includes/misc.php';
220
+ flush_rewrite_rules(true);
 
 
 
 
 
 
221
  }
 
 
222
  }
223
 
224
+ add_action('wbcr_factory_409_imppage_after_form_save', 'wbcr_clearfy_after_form_save', 10, 2);
225
+
226
+
227
 
228
  /**
229
  * Fake stubs for the Clearfy plugin board
231
  function wbcr_clearfy_fake_boards()
232
  {
233
  if( !defined('WIO_PLUGIN_ACTIVE') ) {
 
 
 
234
  ?>
 
 
 
235
 
236
+ <div class="wio-image-optimize-board wbcr-clearfy-board">
237
+ <h4 class="wio-text-left"><?php _e('Images optimization', 'clearfy'); ?></h4>
238
+
239
+ <div class="wio-columns wio-widget">
240
+ <div class="wio-col col-chart">
241
+ <div class="wio-chart-container wio-overview-chart-container">
242
+ <canvas id="wio-main-chart" width="110" height="110" data-unoptimized="1400" data-optimized="0" data-errors="0" style="display: block;"></canvas>
243
+ <div id="wio-overview-chart-percent" class="wio-chart-percent">0<span>%</span></div>
244
+ </div>
245
+ <div id="wio-overview-chart-legend">
246
+ <ul class="wio-doughnut-legend">
247
+ <li>
248
+ <span style="background-color:#d6d6d6"></span><?php _e('Unoptimized', 'clearfy'); ?>
249
+ -
250
+ <span class="wio-num" id="wio-unoptimized-num">1400</span>
251
+ </li>
252
+ <li>
253
+ <span style="background-color:#8bc34a"></span><?php _e('Optimized', 'clearfy'); ?>
254
+ -
255
+ <span class="wio-num" id="wio-optimized-num">0</span>
256
+ </li>
257
+ <li>
258
+ <span style="background-color:#f1b1b6"></span><?php _e('Error', 'clearfy'); ?>
259
+ -
260
+ <span class="wio-num" id="wio-error-num">0</span>
261
+ </li>
262
+ </ul>
263
+ </div>
264
+ <div class="wio-bars">
265
+ <p><?php _e('Original size', 'clearfy'); ?></p>
266
+
267
+ <div class="wio-bar-negative base-transparent wio-right-outside-number">
268
+ <div id="wio-original-bar" class="wio-progress" style="width: 100%">
269
+ <span class="wio-barnb" id="wio-original-size">75 MB</span>
270
+ </div>
271
+ </div>
272
+ <p><?php _e('Optimized size', 'clearfy'); ?></p>
273
+
274
+ <div class="wio-bar-primary base-transparent wio-right-outside-number">
275
+ <div id="wio-optimized-bar" class="wio-progress" style="width: 100%;">
276
+ <span class="wio-barnb" id="wio-optimized-size">75 MB</span>
277
+ </div>
278
+ </div>
279
  </div>
 
280
  </div>
281
+ <ul class="wio-widget-bottom">
282
+ <li>
283
+ <p>
284
+ <a type="button" id="wio-start-optimization" href="<?= WCL_Plugin::app()->getPluginPageUrl('clrf_image_optimization') ?>" class="wio-optimize-button"><?php echo __('Bulk optimize', 'clearfy'); ?></a>
285
+ </p>
286
+ </li>
287
+ <li>
288
+ <div class="factory-dropdown factory-from-control-dropdown factory-buttons-way" data-way="buttons">
289
+ <div id="wio-level-buttons" class="btn-group factory-buttons-group">
290
+ <button type="button" data-level="normal" class="btn btn-default btn-small active"><?php _e('Normal', 'clearfy'); ?></button>
291
+ <button type="button" data-level="aggresive" class="btn btn-default btn-small"><?php _e('Medium', 'clearfy'); ?></button>
292
+ <button type="button" data-level="ultra" class="btn btn-default btn-small"><?php _e('High', 'clearfy'); ?></button>
293
+ </div>
294
+ </div>
295
+ </li>
296
+ </ul>
297
  </div>
298
  </div>
299
  <?php
307
  *
308
  * @param array $widgets
309
  * @param string $position
310
+ * @param Wbcr_Factory409_Plugin $plugin
311
  */
312
  function wbcr_clearfy_donate_widget($widgets, $position, $plugin)
313
  {
317
 
318
  if( $licensing->isLicenseValid() ) {
319
  unset($widgets['donate_widget']);
320
+ unset($widgets['businnes_suggetion']);
321
 
322
  return $widgets;
323
+ } else {
324
+ if( $position == 'right' ) {
325
+ unset($widgets['info_widget']);
326
+ }
327
  }
328
 
329
+ if( $position == 'bottom' ) {
330
+ $buy_premium_url = WbcrFactoryClearfy206_Helpers::getWebcrafticSitePageUrl(WCL_Plugin::app()->getPluginName(), 'pricing', 'license_page');
331
+ $upgrade_price = WbcrFactoryClearfy206_Helpers::getClearfyBusinessPrice();
332
 
333
+ ob_start();
334
+ ?>
335
+ <div id="wbcr-clr-go-to-premium-widget" class="wbcr-factory-sidebar-widget">
336
+ <p>
337
+ <strong><?php _e('Activation Clearfy Business', 'clearfy'); ?></strong>
338
+ </p>
339
 
340
+ <div class="wbcr-clr-go-to-premium-widget-body">
341
+ <p><?php _e('<b>Clearfy Business</b> is a paid package of components for the popular free WordPress plugin named Clearfy. You get access to all paid components at one price.', 'clearfy') ?></p>
342
 
343
+ <p><?php _e('Paid license guarantees that you can download and update existing and future paid components of the plugin.', 'clearfy') ?></p>
344
+ <a href="<?= $buy_premium_url ?>" class="wbcr-clr-purchase-premium" target="_blank" rel="noopener">
345
  <span class="btn btn-gold btn-inner-wrap">
346
+ <i class="fa fa-star"></i> <?php printf(__('Upgrade to Clearfy Business for $%s', 'clearfy'), $upgrade_price) ?>
347
  <i class="fa fa-star"></i>
348
  </span>
349
+ </a>
350
+ </div>
351
  </div>
352
+ <?php
 
353
 
354
+ $widgets['donate_widget'] = ob_get_contents();
355
+
356
+ ob_end_clean();
357
+ }
358
  }
359
 
360
  return $widgets;
361
  }
362
 
363
+ add_filter('wbcr/factory/pages/impressive/widgets', 'wbcr_clearfy_donate_widget', 10, 3);
364
+
365
 
admin/includes/classes/class.install-plugins-button.php CHANGED
@@ -40,8 +40,6 @@
40
  $this->type = $type;
41
  $this->plugin_slug = $plugin_slug;
42
 
43
- // todo нужно строго делать проверку на базовый путь, так как можно запутаться при работе
44
- // todo если пользователь передал просто slug и тип хранения wordpress, то выводим ошибку, что нужно ввести базовый путь
45
  if( $this->type == 'wordpress' ) {
46
  if( strpos(rtrim(trim($this->plugin_slug)), '/') !== false ) {
47
  $this->base_path = $this->plugin_slug;
@@ -74,13 +72,14 @@
74
  public function isPluginActivate()
75
  {
76
  if( $this->type == 'wordpress' && $this->isPluginInstall() ) {
 
77
  return is_plugin_active($this->base_path);
78
  } elseif( $this->type == 'internal' ) {
79
- $preinsatall_components = WCL_Plugin::app()->getOption('deactive_preinstall_components', array());
80
 
81
  return !in_array($this->plugin_slug, $preinsatall_components);
82
  } elseif( $this->type == 'freemius' ) {
83
- $freemius_activated_addons = WCL_Plugin::app()->getOption( 'freemius_activated_addons', array() );
84
  return in_array( $this->plugin_slug, $freemius_activated_addons );
85
  }
86
 
@@ -111,7 +110,7 @@
111
  } else if( $this->type == 'internal' ) {
112
  return true;
113
  } else if( $this->type == 'freemius' ) {
114
- $freemius_activated_addons = WCL_Plugin::app()->getOption( 'freemius_activated_addons', array() );
115
  return in_array( $this->plugin_slug, $freemius_activated_addons );
116
  }
117
 
@@ -232,7 +231,7 @@
232
  */
233
  public function renderLink()
234
  {
235
- echo $this->getButton();
236
  }
237
 
238
  /**
@@ -313,8 +312,6 @@
313
 
314
  $this->action = 'activate';
315
 
316
- require_once WCL_PLUGIN_DIR . '/includes/classes/class.licensing.php';
317
-
318
  $licensing = WCL_Licensing::instance();
319
 
320
  $component = $licensing->getAddonData( $this->plugin_slug );
40
  $this->type = $type;
41
  $this->plugin_slug = $plugin_slug;
42
 
 
 
43
  if( $this->type == 'wordpress' ) {
44
  if( strpos(rtrim(trim($this->plugin_slug)), '/') !== false ) {
45
  $this->base_path = $this->plugin_slug;
72
  public function isPluginActivate()
73
  {
74
  if( $this->type == 'wordpress' && $this->isPluginInstall() ) {
75
+ require_once ABSPATH . '/wp-admin/includes/plugin.php';
76
  return is_plugin_active($this->base_path);
77
  } elseif( $this->type == 'internal' ) {
78
+ $preinsatall_components = WCL_Plugin::app()->getPopulateOption('deactive_preinstall_components', array());
79
 
80
  return !in_array($this->plugin_slug, $preinsatall_components);
81
  } elseif( $this->type == 'freemius' ) {
82
+ $freemius_activated_addons = WCL_Plugin::app()->getPopulateOption( 'freemius_activated_addons', array() );
83
  return in_array( $this->plugin_slug, $freemius_activated_addons );
84
  }
85
 
110
  } else if( $this->type == 'internal' ) {
111
  return true;
112
  } else if( $this->type == 'freemius' ) {
113
+ $freemius_activated_addons = WCL_Plugin::app()->getPopulateOption( 'freemius_activated_addons', array() );
114
  return in_array( $this->plugin_slug, $freemius_activated_addons );
115
  }
116
 
231
  */
232
  public function renderLink()
233
  {
234
+ echo $this->getLink();
235
  }
236
 
237
  /**
312
 
313
  $this->action = 'activate';
314
 
 
 
315
  $licensing = WCL_Licensing::instance();
316
 
317
  $component = $licensing->getAddonData( $this->plugin_slug );
admin/includes/classes/class.option.php CHANGED
@@ -56,7 +56,11 @@
56
  */
57
  public function getValue($group_name = null)
58
  {
59
- if( !empty($group_name) && isset($this->values[$group_name]) ) {
 
 
 
 
60
  return $this->values[$group_name];
61
  }
62
 
56
  */
57
  public function getValue($group_name = null)
58
  {
59
+ if(
60
+ !empty($group_name)
61
+ && is_array($this->values)
62
+ && isset($this->values[$group_name])
63
+ ) {
64
  return $this->values[$group_name];
65
  }
66
 
admin/includes/classes/class.pages.php DELETED
@@ -1,90 +0,0 @@
1
- <?php
2
-
3
- /**
4
- * Page template class
5
- * Author: Webcraftic <wordpress.webraftic@gmail.com>
6
- * Version: 1.0.0
7
- */
8
- // Exit if accessed directly
9
- if( !defined('ABSPATH') ) {
10
- exit;
11
- }
12
-
13
- class WCL_Page extends Wbcr_FactoryPages407_ImpressiveThemplate {
14
-
15
- /**
16
- * @param WCL_Plugin $plugin
17
- */
18
- public function __construct(WCL_Plugin $plugin)
19
- {
20
- parent::__construct($plugin);
21
- }
22
-
23
- /**
24
- * Requests assets (js and css) for the page.
25
- *
26
- * @see Wbcr_FactoryPages407_AdminPage
27
- *
28
- * @param Wbcr_Factory406_ScriptList $scripts
29
- * @param Wbcr_Factory406_StyleList $styles
30
- * @return void
31
- */
32
- public function assets($scripts, $styles)
33
- {
34
- parent::assets($scripts, $styles);
35
-
36
- $this->styles->add(WCL_PLUGIN_URL . '/admin/assets/css/general.css');
37
-
38
- /**
39
- * Allows you to enqueue scripts to the internal pages of the plugin.
40
- * $this->getResultId() - page id + plugin name = quick_start-wbcr_clearfy
41
- * @since 1.3.0
42
- */
43
- do_action('wbcr_clearfy_page_enqueue_scripts', $this->getResultId(), $scripts, $styles);
44
- }
45
-
46
- /**
47
- * @return string
48
- */
49
- public function getPluginTitle()
50
- {
51
- $licensing = WCL_Licensing::instance();
52
-
53
- return 'Webcraftic Clearfy ' . ($licensing->isLicenseValid()
54
- ? '<span class="wbcr-clr-logo-label wbcr-clr-premium-label-logo">' . __('Business', 'clearfy') . '</span>'
55
- : '<span class="wbcr-clr-logo-label wbcr-clr-free-label-logo">Free</span>') . ' ver';
56
- }
57
-
58
- //public function not
59
-
60
- /**
61
- * @param $option_name
62
- * @param bool $default
63
- * @return mixed|void
64
- */
65
- public function getOption($option_name, $default = false)
66
- {
67
- return $this->plugin->getOption($option_name, $default);
68
- }
69
-
70
- /**
71
- * @param $option_name
72
- * @param $value
73
- * @return bool
74
- */
75
- public function updateOption($option_name, $value)
76
- {
77
- return $this->plugin->updateOption($option_name, $value);
78
- }
79
-
80
- /**
81
- * @param $option_name
82
- * @return bool
83
- */
84
- public function deleteOption($option_name)
85
- {
86
- return $this->plugin->deleteOption($option_name);
87
- }
88
- }
89
-
90
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
admin/includes/classes/class.upgrader.php CHANGED
@@ -1,50 +1,126 @@
1
  <?php
2
 
3
- class WCL_Plugin_Upgrader extends Plugin_Upgrader {
4
-
5
- /**
6
- * Download a package.
7
- *
8
- * @since 2.8.0
9
- *
10
- * @param string $package The URI of the package. If this is the full path to an
11
- * existing local file, it will be returned untouched.
12
- * @return string|WP_Error The full path to the downloaded package file, or a WP_Error object.
13
- */
14
- public function download_package( $package ) {
15
-
16
- /**
17
- * Filters whether to return the package.
18
- *
19
- * @since 3.7.0
20
- *
21
- * @param bool $reply Whether to bail without returning the package.
22
- * Default false.
23
- * @param string $package The package file name.
24
- * @param WP_Upgrader $this The WP_Upgrader instance.
25
- */
26
- $reply = apply_filters( 'upgrader_pre_download', false, $package, $this );
27
- if ( false !== $reply )
28
- return $reply;
29
-
30
- if ( ! preg_match('!^(http|https|ftp)://!i', $package) && file_exists($package) ) //Local file or remote?
31
- return $package; //must be a local file..
32
-
33
- if ( empty($package) )
34
- return new WP_Error('no_package', $this->strings['no_package']);
35
-
36
-
37
- $download_file = download_url( $package, 1000 );
38
- $mime_type = mime_content_type( $download_file );
39
-
40
- if ( 'text/plain' == $mime_type ) {
41
- $this->result = new WP_Error( 'builder_error', __( file_get_contents( $download_file ), 'clearfy' ) );
42
- return $this->result;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
43
  }
44
-
45
- if ( is_wp_error($download_file) )
46
- return new WP_Error('download_failed', $this->strings['download_failed'], $download_file->get_error_message());
47
-
48
- return $download_file;
49
- }
50
- }
1
  <?php
2
 
3
+ class WCL_Plugin_Upgrader extends Plugin_Upgrader {
4
+
5
+ /**
6
+ * Download a package.
7
+ *
8
+ * @since 2.8.0
9
+ *
10
+ * @param string $package The URI of the package. If this is the full path to an
11
+ * existing local file, it will be returned untouched.
12
+ * @return string|WP_Error The full path to the downloaded package file, or a WP_Error object.
13
+ */
14
+ public function download_package($package)
15
+ {
16
+
17
+ /**
18
+ * Filters whether to return the package.
19
+ *
20
+ * @since 3.7.0
21
+ *
22
+ * @param bool $reply Whether to bail without returning the package.
23
+ * Default false.
24
+ * @param string $package The package file name.
25
+ * @param WP_Upgrader $this The WP_Upgrader instance.
26
+ */
27
+ $reply = apply_filters('upgrader_pre_download', false, $package, $this);
28
+ if( false !== $reply ) {
29
+ return $reply;
30
+ }
31
+
32
+ if( !preg_match('!^(http|https|ftp)://!i', $package) && file_exists($package) ) //Local file or remote?
33
+ {
34
+ return $package;
35
+ } //must be a local file..
36
+
37
+ if( empty($package) ) {
38
+ return new WP_Error('no_package', $this->strings['no_package']);
39
+ }
40
+
41
+ $download_file = download_url($package, 1000);
42
+
43
+ if( function_exists('mime_content_type') ) {
44
+ $mime_type = mime_content_type($download_file);
45
+ } else {
46
+ $mime_type = $this->mimeContentType($download_file);
47
+ }
48
+
49
+ if( WbcrFactoryClearfy206_Helpers::strContains($mime_type, 'text/plain') ) {
50
+ $this->result = new WP_Error('builder_error', __(file_get_contents($download_file), 'clearfy'));
51
+
52
+ return $this->result;
53
+ }
54
+
55
+ if( is_wp_error($download_file) ) {
56
+ return new WP_Error('download_failed', $this->strings['download_failed'], $download_file->get_error_message());
57
+ }
58
+
59
+ return $download_file;
60
+ }
61
+
62
+ public function mimeContentType($filename)
63
+ {
64
+ $mime_types = array(
65
+ 'txt' => 'text/plain',
66
+ 'htm' => 'text/html',
67
+ 'html' => 'text/html',
68
+ 'php' => 'text/html',
69
+ 'css' => 'text/css',
70
+ 'js' => 'application/javascript',
71
+ 'json' => 'application/json',
72
+ 'xml' => 'application/xml',
73
+ 'swf' => 'application/x-shockwave-flash',
74
+ 'flv' => 'video/x-flv',
75
+ // images
76
+ 'png' => 'image/png',
77
+ 'jpe' => 'image/jpeg',
78
+ 'jpeg' => 'image/jpeg',
79
+ 'jpg' => 'image/jpeg',
80
+ 'gif' => 'image/gif',
81
+ 'bmp' => 'image/bmp',
82
+ 'ico' => 'image/vnd.microsoft.icon',
83
+ 'tiff' => 'image/tiff',
84
+ 'tif' => 'image/tiff',
85
+ 'svg' => 'image/svg+xml',
86
+ 'svgz' => 'image/svg+xml',
87
+ // archives
88
+ 'zip' => 'application/zip',
89
+ 'rar' => 'application/x-rar-compressed',
90
+ 'exe' => 'application/x-msdownload',
91
+ 'msi' => 'application/x-msdownload',
92
+ 'cab' => 'application/vnd.ms-cab-compressed',
93
+ // audio/video
94
+ 'mp3' => 'audio/mpeg',
95
+ 'qt' => 'video/quicktime',
96
+ 'mov' => 'video/quicktime',
97
+ // adobe
98
+ 'pdf' => 'application/pdf',
99
+ 'psd' => 'image/vnd.adobe.photoshop',
100
+ 'ai' => 'application/postscript',
101
+ 'eps' => 'application/postscript',
102
+ 'ps' => 'application/postscript',
103
+ // ms office
104
+ 'doc' => 'application/msword',
105
+ 'rtf' => 'application/rtf',
106
+ 'xls' => 'application/vnd.ms-excel',
107
+ 'ppt' => 'application/vnd.ms-powerpoint',
108
+ // open office
109
+ 'odt' => 'application/vnd.oasis.opendocument.text',
110
+ 'ods' => 'application/vnd.oasis.opendocument.spreadsheet',
111
+ );
112
+
113
+ $ext = strtolower(array_pop(explode('.', $filename)));
114
+ if( array_key_exists($ext, $mime_types) ) {
115
+ return $mime_types[$ext];
116
+ } elseif( function_exists('finfo_open') ) {
117
+ $finfo = finfo_open(FILEINFO_MIME);
118
+ $mimetype = finfo_file($finfo, $filename);
119
+ finfo_close($finfo);
120
+
121
+ return $mimetype;
122
+ } else {
123
+ return 'application/octet-stream';
124
+ }
125
  }
126
+ }
 
 
 
 
 
 
admin/includes/compatibility.php ADDED
@@ -0,0 +1,112 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Compatibility with Clearfy old components
4
+ * @author Webcraftic <wordpress.webraftic@gmail.com>
5
+ * @copyright (c) 22.10.2018, Webcraftic
6
+ * @version 1.0
7
+ */
8
+
9
+ add_action('plugins_loaded', function () {
10
+ if( defined('WIO_PLUGIN_ACTIVE') ) {
11
+ if( !file_exists(WP_PLUGIN_DIR . '/robin-image-optimizer/robin-image-optimizer.php') ) {
12
+ return;
13
+ }
14
+
15
+ $plugin = get_plugin_data(WP_PLUGIN_DIR . '/robin-image-optimizer/robin-image-optimizer.php');
16
+
17
+ if( isset($plugin['Version']) && version_compare($plugin['Version'], '1.0.8', '<=') ) {
18
+ $notice = __('Please update the plugin Robin image Optimizer to the latest version, as it may not work correctly with the new version of Clearfy!', 'clearfy');
19
+ /**
20
+ * Выводит уведомление внутри интерфейса Clearfy, на всех страницах плагина.
21
+ * Это необходимо, чтоб напомнить пользователю обновить конфигурацию компонентов плагина,
22
+ * иначе вновь активированные компоненты не будет зайдествованы в работе плагина.
23
+ *
24
+ * @param Wbcr_Factory409_Plugin $plugin
25
+ * @param Wbcr_FactoryPages410_ImpressiveThemplate $obj
26
+ * @return bool
27
+ */
28
+ add_action('wbcr/factory/pages/impressive/print_all_notices', function ($plugin, $obj) use ($notice) {
29
+ $obj->printErrorNotice($notice);
30
+ }, 10, 2);
31
+
32
+ // Специально для преидущей версии фреймворка (407)
33
+ add_action('wbcr_factory_pages_407_imppage_print_all_notices', function ($plugin, $obj) use ($notice) {
34
+ $obj->printErrorNotice($notice);
35
+ }, 10, 2);
36
+ }
37
+ }
38
+
39
+ if( defined('WHLP_PLUGIN_ACTIVE') ) {
40
+ if( !file_exists(WP_PLUGIN_DIR . '/hide-login-page/hide-login-page.php') ) {
41
+ return;
42
+ }
43
+
44
+ $plugin = get_plugin_data(WP_PLUGIN_DIR . '/hide-login-page/hide-login-page.php');
45
+
46
+ if( isset($plugin['Version']) && version_compare($plugin['Version'], '1.0.5', '<=') ) {
47
+ $notice = __('Please update the plugin Hide login page to the latest version, as it may not work correctly with the new version of Clearfy!', 'clearfy');
48
+ /**
49
+ * Выводит уведомление внутри интерфейса Clearfy, на всех страницах плагина.
50
+ * Это необходимо, чтоб напомнить пользователю обновить конфигурацию компонентов плагина,
51
+ * иначе вновь активированные компоненты не будет зайдествованы в работе плагина.
52
+ *
53
+ * @param Wbcr_Factory409_Plugin $plugin
54
+ * @param Wbcr_FactoryPages410_ImpressiveThemplate $obj
55
+ * @return bool
56
+ */
57
+ add_action('wbcr/factory/pages/impressive/print_all_notices', function ($plugin, $obj) use ($notice) {
58
+ $obj->printErrorNotice($notice);
59
+ }, 10, 2);
60
+
61
+ // Специально для преидущей версии фреймворка (407)
62
+ add_action('wbcr_factory_pages_407_imppage_print_all_notices', function ($plugin, $obj) use ($notice) {
63
+ $obj->printErrorNotice($notice);
64
+ }, 10, 2);
65
+ }
66
+ }
67
+ });
68
+
69
+ /**
70
+ * Дополнительная подсказка, что форма импорта, экспорта перемещена
71
+ */
72
+ add_action('admin_enqueue_scripts', function ($page_id) {
73
+
74
+ if( !WbcrFactoryClearfy206_Helpers::strContains($page_id, WCL_Plugin::app()->getPluginName()) ) {
75
+ return;
76
+ }
77
+
78
+ wp_enqueue_style('wp-pointer');
79
+ wp_enqueue_script('wp-pointer');
80
+
81
+ add_action('admin_print_footer_scripts', function () {
82
+ $dismissed_pointers = explode(',', get_user_meta(get_current_user_id(), 'dismissed_wp_pointers', true));
83
+
84
+ $pointer_setting_content = "<h3>" . sprintf(__('Welcome to Clearfy (%s)', 'clearfy'), '1.4.x') . "</h3>";
85
+ $pointer_setting_content .= "<p>" . __('We moved the form to import and export plugin settings to another page. Now all settings that relate only to the Clearfy plugin, we will post on this additional page.', 'clearfy') . "</p>";
86
+
87
+ ?>
88
+ <script>
89
+ //<![CDATA[
90
+ jQuery(document).ready(function($) {
91
+ <?php if( !in_array('wbcr_clearfy_settings_pointer_1_4_2', $dismissed_pointers) ): ?>
92
+ $('.wbcr-factory-type-settings').pointer({
93
+ content: '<?php echo $pointer_setting_content; ?>',
94
+ position: {
95
+ edge: 'top', // arrow direction
96
+ align: 'center' // vertical alignment
97
+ },
98
+ pointerWidth: 350,
99
+ close: function() {
100
+ $.post(ajaxurl, {
101
+ pointer: 'wbcr_clearfy_settings_pointer_1_4_2', // pointer ID
102
+ action: 'dismiss-wp-pointer'
103
+ });
104
+ }
105
+ }).pointer('open');
106
+ <?php endif; ?>
107
+ });
108
+ //]]>
109
+ </script>
110
+ <?php
111
+ }, 20);
112
+ });
admin/includes/options.php CHANGED
@@ -68,7 +68,7 @@
68
  array(
69
  'name' => 'disable_emoji',
70
  'title' => __('Disable Emojis', 'clearfy'),
71
- 'tags' => array('clear_code','hide_my_wp')
72
  ),
73
  /*array(
74
  'name' => 'remove_dns_prefetch',
@@ -79,27 +79,27 @@
79
  array(
80
  'name' => 'remove_rsd_link',
81
  'title' => __('Remove RSD Link', 'clearfy'),
82
- 'tags' => array('clear_code','hide_my_wp')
83
  ),
84
  array(
85
  'name' => 'remove_wlw_link',
86
  'title' => __('Remove wlwmanifest Link', 'clearfy'),
87
- 'tags' => array('clear_code','hide_my_wp')
88
  ),
89
  array(
90
  'name' => 'remove_shortlink_link',
91
  'title' => __('Remove Shortlink', 'clearfy'),
92
- 'tags' => array('clear_code','hide_my_wp')
93
  ),
94
  array(
95
  'name' => 'remove_adjacent_posts_link',
96
  'title' => __('Remove links to previous, next post', 'clearfy'),
97
- 'tags' => array('clear_code','hide_my_wp')
98
  ),
99
  array(
100
  'name' => 'remove_recent_comments_style',
101
  'title' => __('Remove .recentcomments styles', 'clearfy'),
102
- 'tags' => array('clear_code','hide_my_wp')
103
  ),
104
  /** ------------------------ End Performance page ----------------------------- */
105
  array(
@@ -125,9 +125,7 @@
125
  array(
126
  'name' => 'yoast_remove_image_from_xml_sitemap',
127
  'title' => sprintf(__('Remove the tag %s from XML site map', 'clearfy'), 'image:image'),
128
- 'tags' => get_locale() == 'ru_RU'
129
- ? array('clear_code')
130
- : array()
131
  ),
132
  array(
133
  'name' => 'yoast_remove_json_ld_search',
@@ -177,27 +175,27 @@
177
  array(
178
  'name' => 'remove_meta_generator',
179
  'title' => __('Remove meta generator', 'clearfy'),
180
- 'tags' => array('clear_code', 'defence','hide_my_wp')
181
  ),
182
  array(
183
  'name' => 'protect_author_get',
184
  'title' => __('Hide author login', 'clearfy'),
185
- 'tags' => array('defence','hide_my_wp')
186
  ),
187
  array(
188
  'name' => 'change_login_errors',
189
- 'title' => __('Hide errors when logging into the site', 'clearfy','hide_my_wp'),
190
- 'tags' => array('defence','hide_my_wp')
191
  ),
192
  array(
193
  'name' => 'remove_style_version',
194
- 'title' => __('Remove Version from Stylesheet', 'clearfy','hide_my_wp'),
195
- 'tags' => array('clear_code', 'defence','hide_my_wp')
196
  ),
197
  array(
198
  'name' => 'remove_js_version',
199
  'title' => __('Remove Version from Script', 'clearfy'),
200
- 'tags' => array('clear_code', 'defence','hide_my_wp')
201
  ),
202
  array(
203
  'name' => 'remove_unneeded_widget_page',
@@ -385,4 +383,16 @@
385
  'title' => __('Deactivate preinstall components', 'clearfy'),
386
  'tags' => array()
387
  ),
 
 
 
 
 
 
 
 
 
 
 
 
388
  ));
68
  array(
69
  'name' => 'disable_emoji',
70
  'title' => __('Disable Emojis', 'clearfy'),
71
+ 'tags' => array('clear_code', 'hide_my_wp')
72
  ),
73
  /*array(
74
  'name' => 'remove_dns_prefetch',
79
  array(
80
  'name' => 'remove_rsd_link',
81
  'title' => __('Remove RSD Link', 'clearfy'),
82
+ 'tags' => array('clear_code', 'hide_my_wp')
83
  ),
84
  array(
85
  'name' => 'remove_wlw_link',
86
  'title' => __('Remove wlwmanifest Link', 'clearfy'),
87
+ 'tags' => array('clear_code', 'hide_my_wp')
88
  ),
89
  array(
90
  'name' => 'remove_shortlink_link',
91
  'title' => __('Remove Shortlink', 'clearfy'),
92
+ 'tags' => array('clear_code', 'hide_my_wp')
93
  ),
94
  array(
95
  'name' => 'remove_adjacent_posts_link',
96
  'title' => __('Remove links to previous, next post', 'clearfy'),
97
+ 'tags' => array('clear_code', 'hide_my_wp')
98
  ),
99
  array(
100
  'name' => 'remove_recent_comments_style',
101
  'title' => __('Remove .recentcomments styles', 'clearfy'),
102
+ 'tags' => array('clear_code', 'hide_my_wp')
103
  ),
104
  /** ------------------------ End Performance page ----------------------------- */
105
  array(
125
  array(
126
  'name' => 'yoast_remove_image_from_xml_sitemap',
127
  'title' => sprintf(__('Remove the tag %s from XML site map', 'clearfy'), 'image:image'),
128
+ 'tags' => get_locale() == 'ru_RU' ? array('clear_code') : array()
 
 
129
  ),
130
  array(
131
  'name' => 'yoast_remove_json_ld_search',
175
  array(
176
  'name' => 'remove_meta_generator',
177
  'title' => __('Remove meta generator', 'clearfy'),
178
+ 'tags' => array('clear_code', 'defence', 'hide_my_wp')
179
  ),
180
  array(
181
  'name' => 'protect_author_get',
182
  'title' => __('Hide author login', 'clearfy'),
183
+ 'tags' => array('defence', 'hide_my_wp')
184
  ),
185
  array(
186
  'name' => 'change_login_errors',
187
+ 'title' => __('Hide errors when logging into the site', 'clearfy', 'hide_my_wp'),
188
+ 'tags' => array('defence', 'hide_my_wp')
189
  ),
190
  array(
191
  'name' => 'remove_style_version',
192
+ 'title' => __('Remove Version from Stylesheet', 'clearfy', 'hide_my_wp'),
193
+ 'tags' => array('clear_code', 'defence', 'hide_my_wp')
194
  ),
195
  array(
196
  'name' => 'remove_js_version',
197
  'title' => __('Remove Version from Script', 'clearfy'),
198
+ 'tags' => array('clear_code', 'defence', 'hide_my_wp')
199
  ),
200
  array(
201
  'name' => 'remove_unneeded_widget_page',
383
  'title' => __('Deactivate preinstall components', 'clearfy'),
384
  'tags' => array()
385
  ),
386
+ array(
387
+ 'name' => 'freemius_activated_addons',
388
+ 'title' => __('Freemius activated addons', 'clearfy'),
389
+ 'tags' => array()
390
+ ),
391
+ /** ------------------------ Clearfy settings ----------------------------- */
392
+ array(
393
+ 'name' => 'disable_clearfy_extra_menu',
394
+ 'title' => __('Disable menu in adminbar', 'clearfy'),
395
+ 'tags' => array()
396
+ )
397
+
398
  ));
admin/pages/advanced.php CHANGED
@@ -11,13 +11,13 @@
11
  exit;
12
  }
13
 
14
- class WCL_AdvancedPage extends WCL_Page {
15
 
16
  /**
17
  * The id of the page in the admin menu.
18
  *
19
  * Mainly used to navigate between pages.
20
- * @see FactoryPages407_AdminPage
21
  *
22
  * @since 1.0.0
23
  * @var string
@@ -27,6 +27,8 @@
27
  public $page_menu_dashicon = 'dashicons-list-view';
28
 
29
  public $page_menu_position = 1;
 
 
30
 
31
  /**
32
  * @param WCL_Plugin $plugin
@@ -34,6 +36,7 @@
34
  public function __construct(WCL_Plugin $plugin)
35
  {
36
  $this->menu_title = __('Advanced', 'clearfy');
 
37
 
38
  parent::__construct($plugin);
39
 
@@ -61,7 +64,7 @@
61
  {
62
  parent::warningNotice();
63
 
64
- if( !$this->plugin->getOption('revisions_disable') && $this->isPostRevisionConstant() ) {
65
  $this->printWarningNotice(__('Warning! In the wp-config.php file, a constant WP_POST_REVISIONS is found, it determines the number of revisions. Delete it so you can change this value through the admin panel.', 'clearfy'));
66
  }
67
  }
@@ -72,27 +75,11 @@
72
  * @since 1.0.0
73
  * @return mixed[]
74
  */
75
- public function getOptions()
76
  {
77
 
78
  $options = array();
79
 
80
- $options[] = array(
81
- 'type' => 'html',
82
- 'html' => '<div class="wbcr-clearfy-group-header">' . '<strong>' . __('Clearfy options', 'clearfy') . '</strong>' . '<p>' . __('This group of settings allows you to configure the work of the Clearfy plugin.', 'clearfy') . '</p>' . '</div>'
83
- );
84
-
85
- $options[] = array(
86
- 'type' => 'checkbox',
87
- 'way' => 'buttons',
88
- 'name' => 'disable_clearfy_extra_menu',
89
- 'title' => __('Disable Clearfy extra menu', 'clearfy'),
90
- 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
91
- 'hint' => __('This setting allows you to disable the additional menu of the Clearfy plugin, in the admin bar. This menu is required to work with the Minify and Combine and Assets Manager components.', 'clearfy'),
92
- 'default' => false
93
- );
94
-
95
-
96
  $options[] = array(
97
  'type' => 'html',
98
  'html' => '<div class="wbcr-clearfy-group-header">' . '<strong>' . __('Heartbeat', 'clearfy') . '</strong>' . '<p>' . __('The WordPress Heartbeat API uses /wp-admin/admin-ajax.php to run AJAX calls from the web-browser. While this is great and all it can also cause high CPU usage and crazy amounts of PHP calls. For example, if you leave your dashboard open it will keep sending POST requests to this file on a regular interval, every 15 seconds. Here is an example below of it happening.', 'clearfy') . '</p>' . '</div>'
@@ -304,4 +291,4 @@ So we recommend either disabling or limiting your revisions. ', 'clearfy'),
304
 
305
  return apply_filters('wbcr_clr_additionally_form_options', $formOptions, $this);
306
  }
307
- }
11
  exit;
12
  }
13
 
14
+ class WCL_AdvancedPage extends Wbcr_FactoryClearfy206_PageBase {
15
 
16
  /**
17
  * The id of the page in the admin menu.
18
  *
19
  * Mainly used to navigate between pages.
20
+ * @see FactoryPages410_AdminPage
21
  *
22
  * @since 1.0.0
23
  * @var string
27
  public $page_menu_dashicon = 'dashicons-list-view';
28
 
29
  public $page_menu_position = 1;
30
+
31
+ public $available_for_multisite = true;
32
 
33
  /**
34
  * @param WCL_Plugin $plugin
36
  public function __construct(WCL_Plugin $plugin)
37
  {
38
  $this->menu_title = __('Advanced', 'clearfy');
39
+ $this->page_menu_short_description = __('Useful tweaks', 'clearfy');
40
 
41
  parent::__construct($plugin);
42
 
64
  {
65
  parent::warningNotice();
66
 
67
+ if( !$this->plugin->getPopulateOption('revisions_disable') && $this->isPostRevisionConstant() ) {
68
  $this->printWarningNotice(__('Warning! In the wp-config.php file, a constant WP_POST_REVISIONS is found, it determines the number of revisions. Delete it so you can change this value through the admin panel.', 'clearfy'));
69
  }
70
  }
75
  * @since 1.0.0
76
  * @return mixed[]
77
  */
78
+ public function getPageOptions()
79
  {
80
 
81
  $options = array();
82
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
83
  $options[] = array(
84
  'type' => 'html',
85
  'html' => '<div class="wbcr-clearfy-group-header">' . '<strong>' . __('Heartbeat', 'clearfy') . '</strong>' . '<p>' . __('The WordPress Heartbeat API uses /wp-admin/admin-ajax.php to run AJAX calls from the web-browser. While this is great and all it can also cause high CPU usage and crazy amounts of PHP calls. For example, if you leave your dashboard open it will keep sending POST requests to this file on a regular interval, every 15 seconds. Here is an example below of it happening.', 'clearfy') . '</p>' . '</div>'
291
 
292
  return apply_filters('wbcr_clr_additionally_form_options', $formOptions, $this);
293
  }
294
+ }
admin/pages/clearfy-settings.php ADDED
@@ -0,0 +1,257 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * The page Settings.
5
+ *
6
+ * @since 1.0.0
7
+ */
8
+
9
+ // Exit if accessed directly
10
+ if( !defined('ABSPATH') ) {
11
+ exit;
12
+ }
13
+
14
+ class WCL_ClearfySettingsPage extends Wbcr_FactoryClearfy206_PageBase {
15
+
16
+ /**
17
+ * The id of the page in the admin menu.
18
+ *
19
+ * Mainly used to navigate between pages.
20
+ * @see FactoryPages410_AdminPage
21
+ *
22
+ * @since 1.0.0
23
+ * @var string
24
+ */
25
+ public $id = "clearfy_settings";
26
+
27
+ /**
28
+ * @var string
29
+ */
30
+ public $page_parent_page = 'none';
31
+
32
+ /**
33
+ * @var string
34
+ */
35
+ public $page_menu_dashicon = 'dashicons-list-view';
36
+
37
+ /**
38
+ * @var bool
39
+ */
40
+ public $available_for_multisite = true;
41
+
42
+ /**
43
+ * @param WCL_Plugin $plugin
44
+ */
45
+ public function __construct(WCL_Plugin $plugin)
46
+ {
47
+ $this->menu_title = __('Clearfy Settings', 'clearfy');
48
+ $this->page_menu_short_description = __('Useful tweaks', 'clearfy');
49
+
50
+ parent::__construct($plugin);
51
+
52
+ $this->plugin = $plugin;
53
+ }
54
+
55
+
56
+ /**
57
+ * Requests assets (js and css) for the page.
58
+ *
59
+ * @see FactoryPages410_AdminPage
60
+ *
61
+ * @since 1.0.0
62
+ * @return void
63
+ */
64
+ public function assets($scripts, $styles)
65
+ {
66
+ parent::assets($scripts, $styles);
67
+
68
+ $this->scripts->add(WCL_PLUGIN_URL . '/admin/assets/js/general.js');
69
+
70
+ $params = array(
71
+ 'import_options_nonce' => wp_create_nonce('wbcr_clearfy_import_options'),
72
+ 'i18n' => array(
73
+ 'success_update_settings' => __('Settings successfully updated!', 'clearfy'),
74
+ 'unknown_error' => __('During the setup, an unknown error occurred, please try again or contact the plugin support.', 'clearfy'),
75
+ )
76
+ );
77
+
78
+ wp_localize_script('jquery', 'wbcr_clearfy_ajax', $params);
79
+ }
80
+
81
+ /**
82
+ * Permalinks options.
83
+ *
84
+ * @since 1.0.0
85
+ * @return mixed[]
86
+ */
87
+ public function getPageOptions()
88
+ {
89
+
90
+ $options = array();
91
+
92
+ $options[] = array(
93
+ 'type' => 'html',
94
+ 'html' => '<div class="wbcr-clearfy-group-header">' . '<strong>' . __('Advanced settings', 'clearfy') . '</strong>' . '<p>' . __('This group of settings allows you to configure the work of the Clearfy plugin.', 'clearfy') . '</p>' . '</div>'
95
+ );
96
+
97
+ $options[] = array(
98
+ 'type' => 'checkbox',
99
+ 'way' => 'buttons',
100
+ 'name' => 'disable_clearfy_extra_menu',
101
+ 'title' => __('Disable menu in adminbar', 'clearfy'),
102
+ 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'red'),
103
+ 'hint' => __('This setting allows you to disable the additional menu of the Clearfy plugin, in the admin bar. This menu is required to work with the Minify and Combine and Assets Manager components.', 'clearfy'),
104
+ 'default' => false
105
+ );
106
+
107
+ $options[] = array(
108
+ 'type' => 'checkbox',
109
+ 'way' => 'buttons',
110
+ 'name' => 'save_all_settings_after_uninstall',
111
+ 'title' => __('Save all settings', 'clearfy'),
112
+ 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'green'),
113
+ 'hint' => __("If On, the plugin's settings will be stored in the database, even if you delete the plugin. This is useful if you have a problem with the plugins and you decide to return to the previous version. Disable this option if you want the plugins to clean all settings after removal.", 'clearfy'),
114
+ 'default' => false
115
+ );
116
+
117
+
118
+
119
+ $options[] = array(
120
+ 'type' => 'html',
121
+ 'html' => '<div class="wbcr-clearfy-group-header">' . '<strong>' . __('Import/Export', 'clearfy') . '</strong>' . '<p>' . __('This group of settings allows you to configure the work of the Clearfy plugin.', 'clearfy') . '</p>' . '</div>'
122
+ );
123
+
124
+ $options[] = array(
125
+ 'type' => 'html',
126
+ 'html' => array($this, 'export')
127
+ );
128
+
129
+ $options[] = array(
130
+ 'type' => 'html',
131
+ 'html' => '<div class="wbcr-clearfy-group-header">' . '<strong>' . __('Support', 'clearfy') . '</strong>' . '<p>' . __('This group of settings allows you to configure the work of the Clearfy plugin.', 'clearfy') . '</p>' . '</div>'
132
+ );
133
+
134
+ $options[] = array(
135
+ 'type' => 'html',
136
+ 'html' => array($this, 'supports')
137
+ );
138
+
139
+ $formOptions = array();
140
+
141
+ $formOptions[] = array(
142
+ 'type' => 'form-group',
143
+ 'items' => $options,
144
+ //'cssClass' => 'postbox'
145
+ );
146
+
147
+ return apply_filters('wbcr/clearfy/settings_form_options', $formOptions, $this);
148
+ }
149
+
150
+ public function export()
151
+ {
152
+ ?>
153
+ <div class="wbcr-clearfy-export-import">
154
+ <p>
155
+ <label for="wbcr-clearfy-import-export">
156
+ <strong><?php _e('Import/Export settings', 'clearfy') ?></strong>
157
+ </label>
158
+ <textarea id="wbcr-clearfy-import-export"><?= WCL_Helper::getExportOptions(); ?></textarea>
159
+ <button class="button wbcr-clearfy-import-options-button"><?php _e('Import options', 'clearfy') ?></button>
160
+ </p>
161
+ </div>
162
+ <?php
163
+ }
164
+
165
+ public function supports()
166
+ {
167
+ ?>
168
+ <div class="wbcr-clearfy-troubleshooting">
169
+ <p><?php _e('If you faced with any issues, please follow the steps below to get quickly quality support:', 'clearfy') ?></p>
170
+ <ol>
171
+ <li>
172
+ <p><?php _e('Generate a debug report which will contains inforamtion about your configuratin and installed plugins', 'clearfy') ?></p>
173
+
174
+ <p>
175
+ <a href="<?= $this->getActionUrl('gererate_report'); ?>" class="button"><?php _e('Generate Debug Report', 'clearfy') ?></a>
176
+ </p>
177
+ </li>
178
+ <li>
179
+ <p><?php _e('Send a message to <b>wordpress.webraftic@gmail.com</b> include the debug report into the message body.', 'clearfy'); ?></p>
180
+ </li>
181
+ </ol>
182
+ <p style="margin-bottom: 0px;"><?php _e('We guarantee to respond you within 7 business day.', 'clearfy') ?></p>
183
+ </div>
184
+ <?php
185
+ }
186
+
187
+ /**
188
+ * Collects error and system error data
189
+ * @return string
190
+ */
191
+ public function getDebugReport()
192
+ {
193
+ $run_time = number_format(microtime(true), 3);
194
+ $pps = number_format(1 / $run_time, 0);
195
+ $memory_avail = ini_get('memory_limit');
196
+ $memory_used = number_format(memory_get_usage(true) / (1024 * 1024), 2);
197
+ $memory_peak = number_format(memory_get_peak_usage(true) / (1024 * 1024), 2);
198
+
199
+ $debug = '';
200
+ if( PHP_SAPI == 'cli' ) {
201
+ // if run for command line, display some info
202
+ $debug = PHP_EOL . "======================================================================================" . PHP_EOL . " Config: php " . phpversion() . " " . php_sapi_name() . " / zend engine " . zend_version() . PHP_EOL . " Load: {$memory_avail} (avail) / {$memory_used}M (used) / {$memory_peak}M (peak)" . " | Time: {$run_time}s | {$pps} req/sec" . PHP_EOL . " | Server Timezone: " . date_default_timezone_get() . " | Agent: CLI" . PHP_EOL . "======================================================================================" . PHP_EOL;
203
+ } else {
204
+ // if not run from command line, only display if debug is enabled
205
+ $debug = "" //<hr />"
206
+ . "<div style=\"text-align: left;\">" . "<hr />" . " Config: " . "<br />" . " &nbsp;&nbsp; | php " . phpversion() . " " . php_sapi_name() . " / zend engine " . zend_version() . "<br />" . " &nbsp;&nbsp; | Server Timezone: " . date_default_timezone_get() . "<br />" . " Load: " . "<br />" . " &nbsp;&nbsp; | Memory: {$memory_avail} (avail) / {$memory_used}M (used) / {$memory_peak}M (peak)" . "<br />" . " &nbsp;&nbsp; | Time: {$run_time}s &nbsp;&nbsp; | {$pps} req/sec" . "<br />" . "Url: " . "<br />" . " &nbsp;&nbsp; |" . "<br />" . " &nbsp;&nbsp; | Agent: " . (@$_SERVER["HTTP_USER_AGENT"]) . "<br />" . "Version Control: " . "<br />" . " &nbsp;&nbsp; </div>" . "<br />";
207
+ }
208
+
209
+ $debug .= "Plugins<br>";
210
+ $debug .= "=====================<br>";
211
+
212
+ $plugins = get_plugins();
213
+
214
+ require_once ABSPATH . '/wp-admin/includes/plugin.php';
215
+ foreach($plugins as $path => $plugin) {
216
+ if( is_plugin_active($path) ) {
217
+ $debug .= $plugin['Name'] . '<br>';
218
+ }
219
+ }
220
+
221
+ return $debug;
222
+ }
223
+
224
+ /**
225
+ * Generates a report about the system and plug-in error
226
+ * @return string
227
+ */
228
+ public function gererateReportAction()
229
+ {
230
+ require_once(WCL_PLUGIN_DIR . '/includes/classes/class.zip-archive.php');
231
+
232
+ $reposts_dir = WCL_PLUGIN_DIR . '/reports';
233
+ $reports_temp = $reposts_dir . '/temp';
234
+
235
+ if( !file_exists($reposts_dir) ) {
236
+ mkdir($reposts_dir, 0777, true);
237
+ }
238
+
239
+ if( !file_exists($reports_temp) ) {
240
+ mkdir($reports_temp, 0777, true);
241
+ }
242
+
243
+ $file = fopen($reports_temp . '/site-info.html', 'w+');
244
+ fputs($file, $this->getDebugReport());
245
+ fclose($file);
246
+
247
+ $download_file_name = 'webcraftic-clearfy-report-' . date('Y.m.d-H.i.s') . '.zip';
248
+ $download_file_path = WCL_PLUGIN_DIR . '/reports/' . $download_file_name;
249
+
250
+ Wbcr_ExtendedZip::zipTree(WCL_PLUGIN_DIR . '/reports/temp', $download_file_path, ZipArchive::CREATE);
251
+
252
+ array_map('unlink', glob(WCL_PLUGIN_DIR . "/reports/temp/*"));
253
+
254
+ wp_redirect(WCL_PLUGIN_URL . '/reports/' . $download_file_name);
255
+ exit;
256
+ }
257
+ }
admin/pages/components.php CHANGED
@@ -13,13 +13,13 @@
13
  exit;
14
  }
15
 
16
- class WCL_ComponentsPage extends WCL_Page {
17
 
18
  /**
19
  * The id of the page in the admin menu.
20
  *
21
  * Mainly used to navigate between pages.
22
- * @see FactoryPages407_AdminPage
23
  *
24
  * @since 1.0.0
25
  * @var string
@@ -32,12 +32,17 @@
32
 
33
  public $type = 'page';
34
 
 
 
 
 
35
  /**
36
  * @param WCL_Plugin $plugin
37
  */
38
  public function __construct(WCL_Plugin $plugin)
39
  {
40
  $this->menu_title = __('Components', 'clearfy');
 
41
 
42
  parent::__construct($plugin);
43
 
@@ -47,7 +52,7 @@
47
  /**
48
  * Requests assets (js and css) for the page.
49
  *
50
- * @see FactoryPages407_AdminPage
51
  *
52
  * @since 1.0.0
53
  * @return void
@@ -57,22 +62,105 @@
57
  parent::assets($scripts, $styles);
58
 
59
  $this->styles->add(WCL_PLUGIN_URL . '/admin/assets/css/components.css');
60
- $this->scripts->add(WCL_PLUGIN_URL . '/admin/assets/js/update-package.js');
 
 
 
 
 
 
61
  }
62
-
63
- public function warningNotice() {
 
 
 
 
64
  $package_plugin = WCL_Package::instance();
65
  $package_update_notice = $package_plugin->getUpdateNotice();
66
 
67
-
68
- if ( $package_update_notice ) {
69
- $this->printWarningNotice( $package_update_notice );
70
  }
71
  }
72
-
73
- public function order( $components ) {
74
 
75
- $deactivate_components = WCL_Plugin::app()->getOption( 'deactive_preinstall_components', array() ); // это для всех остальных аддонов
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
76
  $ordered_components = array(
77
  'premium_active' => array(),
78
  'premium_deactive' => array(),
@@ -80,26 +168,26 @@
80
  'free_deactive' => array(),
81
  );
82
  $order_key = 'free_deactive';
83
- foreach ( $components as $component ) {
84
- if ( in_array( $component['type'], array( 'wordpress', 'internal' ) ) ) {
85
- if ( in_array( $component['name'], $deactivate_components ) ) {
86
- // бесплатный компонент деактивирован
87
  $order_key = 'free_deactive';
88
  } else {
89
- // бесплатный компонент активирован
90
  $order_key = 'free_active';
91
  }
92
- } elseif ( $component['type'] == 'freemius' ) {
93
- if ( $component['is_free'] ) {
94
- // фримиус бесплатный
95
- if ( $component['actived'] ) {
96
  $order_key = 'free_active';
97
  } else {
98
  $order_key = 'free_deactive';
99
  }
100
  } else {
101
- // фримиус премиум
102
- if ( $component['actived'] ) {
103
  $order_key = 'premium_active';
104
  } else {
105
  $order_key = 'premium_deactive';
@@ -109,28 +197,31 @@
109
  $ordered_components[$order_key][] = $component;
110
  }
111
 
112
- return array_merge(
113
- $ordered_components['premium_active'],
114
- $ordered_components['premium_deactive'],
115
- $ordered_components['free_active'],
116
- $ordered_components['free_deactive']
117
- );
118
  }
119
 
 
 
 
 
 
120
  public function showPageContent()
121
  {
122
- $freemius_activated_addons = WCL_Plugin::app()->getOption( 'freemius_activated_addons', array() ); // это только для фримиус
123
 
124
  $default_image = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzNjAiIGhlaWdodD0iMzYwIiB2aWV3Ym94PSIwIDAgMzYwIDM2MCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0icmdiKDcwLCA4MSwgOTMpIiAvPjxwb2x5bGluZSBwb2ludHM9IjE5LjgsMCw0MC4yLDAsNjAsMTkuOCw2MCw0MC4yLDQwLjIsNjAsMTkuOCw2MCwwLDQwLjIsMCwxOS44LDE5LjgsMCIgZmlsbD0iIzIyMiIgZmlsbC1vcGFjaXR5PSIwLjE1IiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLCAwKSIgLz48cG9seWxpbmUgcG9pbnRzPSIxOS44LDAsNDAuMiwwLDYwLDE5LjgsNjAsNDAuMiw0MC4yLDYwLDE5LjgsNjAsMCw0MC4yLDAsMTkuOCwxOS44LDAiIGZpbGw9IiNkZGQiIGZpbGwtb3BhY2l0eT0iMC4wNTQ2NjY2NjY2NjY2NjciIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLW9wYWNpdHk9IjAuMDIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDYwLCAwKSIgLz48cG9seWxpbmUgcG9pbnRzPSIxOS44LDAsNDAuMiwwLDYwLDE5LjgsNjAsNDAuMiw0MC4yLDYwLDE5LjgsNjAsMCw0MC4yLDAsMTkuOCwxOS44LDAiIGZpbGw9IiMyMjIiIGZpbGwtb3BhY2l0eT0iMC4wNDYiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLW9wYWNpdHk9IjAuMDIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEyMCwgMCkiIC8+PHBvbHlsaW5lIHBvaW50cz0iMTkuOCwwLDQwLjIsMCw2MCwxOS44LDYwLDQwLjIsNDAuMiw2MCwxOS44LDYwLDAsNDAuMiwwLDE5LjgsMTkuOCwwIiBmaWxsPSIjZGRkIiBmaWxsLW9wYWNpdHk9IjAuMDIiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLW9wYWNpdHk9IjAuMDIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE4MCwgMCkiIC8+PHBvbHlsaW5lIHBvaW50cz0iMTkuOCwwLDQwLjIsMCw2MCwxOS44LDYwLDQwLjIsNDAuMiw2MCwxOS44LDYwLDAsNDAuMiwwLDE5LjgsMTkuOCwwIiBmaWxsPSIjZGRkIiBmaWxsLW9wYWNpdHk9IjAuMDU0NjY2NjY2NjY2NjY3IiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNDAsIDApIiAvPjxwb2x5bGluZSBwb2ludHM9IjE5LjgsMCw0MC4yLDAsNjAsMTkuOCw2MCw0MC4yLDQwLjIsNjAsMTkuOCw2MCwwLDQwLjIsMCwxOS44LDE5LjgsMCIgZmlsbD0iIzIyMiIgZmlsbC1vcGFjaXR5PSIwLjAyODY2NjY2NjY2NjY2NyIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzAwLCAwKSIgLz48cG9seWxpbmUgcG9pbnRzPSIxOS44LDAsNDAuMiwwLDYwLDE5LjgsNjAsNDAuMiw0MC4yLDYwLDE5LjgsNjAsMCw0MC4yLDAsMTkuOCwxOS44LDAiIGZpbGw9IiNkZGQiIGZpbGwtb3BhY2l0eT0iMC4xMDY2NjY2NjY2NjY2NyIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCwgNjApIiAvPjxwb2x5bGluZSBwb2ludHM9IjE5LjgsMCw0MC4yLDAsNjAsMTkuOCw2MCw0MC4yLDQwLjIsNjAsMTkuOCw2MCwwLDQwLjIsMCwxOS44LDE5LjgsMCIgZmlsbD0iIzIyMiIgZmlsbC1vcGFjaXR5PSIwLjA5OCIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjAsIDYwKSIgLz48cG9seWxpbmUgcG9pbnRzPSIxOS44LDAsNDAuMiwwLDYwLDE5LjgsNjAsNDAuMiw0MC4yLDYwLDE5LjgsNjAsMCw0MC4yLDAsMTkuOCwxOS44LDAiIGZpbGw9IiMyMjIiIGZpbGwtb3BhY2l0eT0iMC4xMTUzMzMzMzMzMzMzMyIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTIwLCA2MCkiIC8+PHBvbHlsaW5lIHBvaW50cz0iMTkuOCwwLDQwLjIsMCw2MCwxOS44LDYwLDQwLjIsNDAuMiw2MCwxOS44LDYwLDAsNDAuMiwwLDE5LjgsMTkuOCwwIiBmaWxsPSIjMjIyIiBmaWxsLW9wYWNpdHk9IjAuMDYzMzMzMzMzMzMzMzMzIiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxODAsIDYwKSIgLz48cG9seWxpbmUgcG9pbnRzPSIxOS44LDAsNDAuMiwwLDYwLDE5LjgsNjAsNDAuMiw0MC4yLDYwLDE5LjgsNjAsMCw0MC4yLDAsMTkuOCwxOS44LDAiIGZpbGw9IiNkZGQiIGZpbGwtb3BhY2l0eT0iMC4wMzczMzMzMzMzMzMzMzMiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLW9wYWNpdHk9IjAuMDIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDI0MCwgNjApIiAvPjxwb2x5bGluZSBwb2ludHM9IjE5LjgsMCw0MC4yLDAsNjAsMTkuOCw2MCw0MC4yLDQwLjIsNjAsMTkuOCw2MCwwLDQwLjIsMCwxOS44LDE5LjgsMCIgZmlsbD0iI2RkZCIgZmlsbC1vcGFjaXR5PSIwLjE0MTMzMzMzMzMzMzMzIiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMDAsIDYwKSIgLz48cG9seWxpbmUgcG9pbnRzPSIxOS44LDAsNDAuMiwwLDYwLDE5LjgsNjAsNDAuMiw0MC4yLDYwLDE5LjgsNjAsMCw0MC4yLDAsMTkuOCwxOS44LDAiIGZpbGw9IiNkZGQiIGZpbGwtb3BhY2l0eT0iMC4wMzczMzMzMzMzMzMzMzMiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLW9wYWNpdHk9IjAuMDIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAsIDEyMCkiIC8+PHBvbHlsaW5lIHBvaW50cz0iMTkuOCwwLDQwLjIsMCw2MCwxOS44LDYwLDQwLjIsNDAuMiw2MCwxOS44LDYwLDAsNDAuMiwwLDE5LjgsMTkuOCwwIiBmaWxsPSIjZGRkIiBmaWxsLW9wYWNpdHk9IjAuMDg5MzMzMzMzMzMzMzMzIiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2MCwgMTIwKSIgLz48cG9seWxpbmUgcG9pbnRzPSIxOS44LDAsNDAuMiwwLDYwLDE5LjgsNjAsNDAuMiw0MC4yLDYwLDE5LjgsNjAsMCw0MC4yLDAsMTkuOCwxOS44LDAiIGZpbGw9IiNkZGQiIGZpbGwtb3BhY2l0eT0iMC4wODkzMzMzMzMzMzMzMzMiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLW9wYWNpdHk9IjAuMDIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEyMCwgMTIwKSIgLz48cG9seWxpbmUgcG9pbnRzPSIxOS44LDAsNDAuMiwwLDYwLDE5LjgsNjAsNDAuMiw0MC4yLDYwLDE5LjgsNjAsMCw0MC4yLDAsMTkuOCwxOS44LDAiIGZpbGw9IiMyMjIiIGZpbGwtb3BhY2l0eT0iMC4wODA2NjY2NjY2NjY2NjciIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLW9wYWNpdHk9IjAuMDIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE4MCwgMTIwKSIgLz48cG9seWxpbmUgcG9pbnRzPSIxOS44LDAsNDAuMiwwLDYwLDE5LjgsNjAsNDAuMiw0MC4yLDYwLDE5LjgsNjAsMCw0MC4yLDAsMTkuOCwxOS44LDAiIGZpbGw9IiMyMjIiIGZpbGwtb3BhY2l0eT0iMC4xMzI2NjY2NjY2NjY2NyIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjQwLCAxMjApIiAvPjxwb2x5bGluZSBwb2ludHM9IjE5LjgsMCw0MC4yLDAsNjAsMTkuOCw2MCw0MC4yLDQwLjIsNjAsMTkuOCw2MCwwLDQwLjIsMCwxOS44LDE5LjgsMCIgZmlsbD0iIzIyMiIgZmlsbC1vcGFjaXR5PSIwLjE1IiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMDAsIDEyMCkiIC8+PHBvbHlsaW5lIHBvaW50cz0iMTkuOCwwLDQwLjIsMCw2MCwxOS44LDYwLDQwLjIsNDAuMiw2MCwxOS44LDYwLDAsNDAuMiwwLDE5LjgsMTkuOCwwIiBmaWxsPSIjMjIyIiBmaWxsLW9wYWNpdHk9IjAuMDk4IiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLCAxODApIiAvPjxwb2x5bGluZSBwb2ludHM9IjE5LjgsMCw0MC4yLDAsNjAsMTkuOCw2MCw0MC4yLDQwLjIsNjAsMTkuOCw2MCwwLDQwLjIsMCwxOS44LDE5LjgsMCIgZmlsbD0iIzIyMiIgZmlsbC1vcGFjaXR5PSIwLjA2MzMzMzMzMzMzMzMzMyIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjAsIDE4MCkiIC8+PHBvbHlsaW5lIHBvaW50cz0iMTkuOCwwLDQwLjIsMCw2MCwxOS44LDYwLDQwLjIsNDAuMiw2MCwxOS44LDYwLDAsNDAuMiwwLDE5LjgsMTkuOCwwIiBmaWxsPSIjZGRkIiBmaWxsLW9wYWNpdHk9IjAuMDIiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLW9wYWNpdHk9IjAuMDIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEyMCwgMTgwKSIgLz48cG9seWxpbmUgcG9pbnRzPSIxOS44LDAsNDAuMiwwLDYwLDE5LjgsNjAsNDAuMiw0MC4yLDYwLDE5LjgsNjAsMCw0MC4yLDAsMTkuOCwxOS44LDAiIGZpbGw9IiNkZGQiIGZpbGwtb3BhY2l0eT0iMC4wMzczMzMzMzMzMzMzMzMiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLW9wYWNpdHk9IjAuMDIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE4MCwgMTgwKSIgLz48cG9seWxpbmUgcG9pbnRzPSIxOS44LDAsNDAuMiwwLDYwLDE5LjgsNjAsNDAuMiw0MC4yLDYwLDE5LjgsNjAsMCw0MC4yLDAsMTkuOCwxOS44LDAiIGZpbGw9IiMyMjIiIGZpbGwtb3BhY2l0eT0iMC4xMTUzMzMzMzMzMzMzMyIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjQwLCAxODApIiAvPjxwb2x5bGluZSBwb2ludHM9IjE5LjgsMCw0MC4yLDAsNjAsMTkuOCw2MCw0MC4yLDQwLjIsNjAsMTkuOCw2MCwwLDQwLjIsMCwxOS44LDE5LjgsMCIgZmlsbD0iIzIyMiIgZmlsbC1vcGFjaXR5PSIwLjA2MzMzMzMzMzMzMzMzMyIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzAwLCAxODApIiAvPjxwb2x5bGluZSBwb2ludHM9IjE5LjgsMCw0MC4yLDAsNjAsMTkuOCw2MCw0MC4yLDQwLjIsNjAsMTkuOCw2MCwwLDQwLjIsMCwxOS44LDE5LjgsMCIgZmlsbD0iI2RkZCIgZmlsbC1vcGFjaXR5PSIwLjA1NDY2NjY2NjY2NjY2NyIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCwgMjQwKSIgLz48cG9seWxpbmUgcG9pbnRzPSIxOS44LDAsNDAuMiwwLDYwLDE5LjgsNjAsNDAuMiw0MC4yLDYwLDE5LjgsNjAsMCw0MC4yLDAsMTkuOCwxOS44LDAiIGZpbGw9IiNkZGQiIGZpbGwtb3BhY2l0eT0iMC4xMDY2NjY2NjY2NjY2NyIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjAsIDI0MCkiIC8+PHBvbHlsaW5lIHBvaW50cz0iMTkuOCwwLDQwLjIsMCw2MCwxOS44LDYwLDQwLjIsNDAuMiw2MCwxOS44LDYwLDAsNDAuMiwwLDE5LjgsMTkuOCwwIiBmaWxsPSIjZGRkIiBmaWxsLW9wYWNpdHk9IjAuMDcyIiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMjAsIDI0MCkiIC8+PHBvbHlsaW5lIHBvaW50cz0iMTkuOCwwLDQwLjIsMCw2MCwxOS44LDYwLDQwLjIsNDAuMiw2MCwxOS44LDYwLDAsNDAuMiwwLDE5LjgsMTkuOCwwIiBmaWxsPSIjMjIyIiBmaWxsLW9wYWNpdHk9IjAuMTE1MzMzMzMzMzMzMzMiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLW9wYWNpdHk9IjAuMDIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE4MCwgMjQwKSIgLz48cG9seWxpbmUgcG9pbnRzPSIxOS44LDAsNDAuMiwwLDYwLDE5LjgsNjAsNDAuMiw0MC4yLDYwLDE5LjgsNjAsMCw0MC4yLDAsMTkuOCwxOS44LDAiIGZpbGw9IiMyMjIiIGZpbGwtb3BhY2l0eT0iMC4xMzI2NjY2NjY2NjY2NyIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjQwLCAyNDApIiAvPjxwb2x5bGluZSBwb2ludHM9IjE5LjgsMCw0MC4yLDAsNjAsMTkuOCw2MCw0MC4yLDQwLjIsNjAsMTkuOCw2MCwwLDQwLjIsMCwxOS44LDE5LjgsMCIgZmlsbD0iIzIyMiIgZmlsbC1vcGFjaXR5PSIwLjA4MDY2NjY2NjY2NjY2NyIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzAwLCAyNDApIiAvPjxwb2x5bGluZSBwb2ludHM9IjE5LjgsMCw0MC4yLDAsNjAsMTkuOCw2MCw0MC4yLDQwLjIsNjAsMTkuOCw2MCwwLDQwLjIsMCwxOS44LDE5LjgsMCIgZmlsbD0iIzIyMiIgZmlsbC1vcGFjaXR5PSIwLjEzMjY2NjY2NjY2NjY3IiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLCAzMDApIiAvPjxwb2x5bGluZSBwb2ludHM9IjE5LjgsMCw0MC4yLDAsNjAsMTkuOCw2MCw0MC4yLDQwLjIsNjAsMTkuOCw2MCwwLDQwLjIsMCwxOS44LDE5LjgsMCIgZmlsbD0iI2RkZCIgZmlsbC1vcGFjaXR5PSIwLjAzNzMzMzMzMzMzMzMzMyIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjAsIDMwMCkiIC8+PHBvbHlsaW5lIHBvaW50cz0iMTkuOCwwLDQwLjIsMCw2MCwxOS44LDYwLDQwLjIsNDAuMiw2MCwxOS44LDYwLDAsNDAuMiwwLDE5LjgsMTkuOCwwIiBmaWxsPSIjZGRkIiBmaWxsLW9wYWNpdHk9IjAuMTI0IiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMjAsIDMwMCkiIC8+PHBvbHlsaW5lIHBvaW50cz0iMTkuOCwwLDQwLjIsMCw2MCwxOS44LDYwLDQwLjIsNDAuMiw2MCwxOS44LDYwLDAsNDAuMiwwLDE5LjgsMTkuOCwwIiBmaWxsPSIjMjIyIiBmaWxsLW9wYWNpdHk9IjAuMDI4NjY2NjY2NjY2NjY3IiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxODAsIDMwMCkiIC8+PHBvbHlsaW5lIHBvaW50cz0iMTkuOCwwLDQwLjIsMCw2MCwxOS44LDYwLDQwLjIsNDAuMiw2MCwxOS44LDYwLDAsNDAuMiwwLDE5LjgsMTkuOCwwIiBmaWxsPSIjZGRkIiBmaWxsLW9wYWNpdHk9IjAuMDcyIiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNDAsIDMwMCkiIC8+PHBvbHlsaW5lIHBvaW50cz0iMTkuOCwwLDQwLjIsMCw2MCwxOS44LDYwLDQwLjIsNDAuMiw2MCwxOS44LDYwLDAsNDAuMiwwLDE5LjgsMTkuOCwwIiBmaWxsPSIjMjIyIiBmaWxsLW9wYWNpdHk9IjAuMDI4NjY2NjY2NjY2NjY3IiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMDAsIDMwMCkiIC8+PC9zdmc+';
 
125
 
126
- $response = array(
 
 
127
  array(
128
  'name' => 'robin_image_optimizer',
129
  'title' => __('Robin image optimizer', 'clearfy'),
130
  'url' => 'https://wordpress.org/plugins/robin-image-optimizer/',
131
  'type' => 'wordpress',
132
  'base_path' => 'robin-image-optimizer/robin-image-optimizer.php',
133
- 'icon' => $default_image,
134
  'description' => __('Automatic image optimization without any quality loss. No limitations, no paid plans. The best Wordpress image optimization plugin allows optimizing any amount of images for free!', 'clearfy')
135
  ),
136
  array(
@@ -163,7 +254,7 @@
163
  'title' => __('Google Analytics Cache', 'clearfy'),
164
  'url' => 'https://wordpress.org/plugins/simple-google-analytics/',
165
  'type' => 'internal',
166
- 'icon' => $default_image,
167
  'description' => __('To improve Google Page Speed indicators Analytics caching is needed. However, it can also slightly increase your website loading speed, because Analytics js files will load locally.', 'clearfy')
168
  ),
169
  array(
@@ -191,7 +282,7 @@
191
  'description' => __('Disable unused widgets such as tag cloud, links, calendar etc.', 'clearfy')
192
  ),
193
  array(
194
- 'name' => 'asset_manager',
195
  'title' => __('Asset manager', 'clearfy'),
196
  'url' => '#',
197
  'type' => 'internal',
@@ -230,7 +321,7 @@
230
  'icon' => $default_image,
231
  'description' => __('Set of optimization functions for the popular Yoast SEO plugin.', 'clearfy')
232
  )
233
- );
234
 
235
  $response[] = array(
236
  'name' => 'cyrlitera',
@@ -244,31 +335,31 @@
244
  $licensing = WCL_Licensing::instance();
245
  $freemius_addons_data = $licensing->getAddons(); // получаем все аддоны
246
 
247
- if ( isset( $freemius_addons_data->plugins ) ) {
248
- foreach( $freemius_addons_data->plugins as $freemius_addon ) {
249
  $is_free_addon = false;
250
- if ( $freemius_addon->free_releases_count ) {
251
  $is_free_addon = true;
252
  }
253
- $actual_version = isset( $freemius_addon->info ) ? $freemius_addon->info->selling_point_0 : '';
254
- if ( ! $actual_version ) {
255
- $actual_version = $licensing->getAddonCurrentVersion( $freemius_addon->slug );
256
  }
257
  $component = array(
258
- 'name' => $freemius_addon->slug,
259
- 'slug' => $freemius_addon->slug,
260
- 'title' => __( $freemius_addon->title, 'clearfy' ),
261
- 'type' => 'freemius',
262
- 'installed' => false,
263
- 'is_free' => $is_free_addon,
264
- 'actived' => false,
265
- 'version' => $actual_version,
266
- 'url' => isset( $freemius_addon->info ) ? $freemius_addon->info->url : '#',
267
- 'icon' => isset( $freemius_addon->icon ) ? $freemius_addon->icon : WCL_PLUGIN_URL . '/admin/assets/img/ctr-icon-128x128.png',
268
- 'description' => isset( $freemius_addon->info ) ? __( $freemius_addon->info->short_description, 'clearfy' ) : '',
269
  );
270
 
271
- if ( in_array( $component['name'], $freemius_activated_addons ) ) {
272
  $component['actived'] = true;
273
  }
274
 
@@ -276,7 +367,14 @@
276
  }
277
  }
278
 
279
- $response = $this->order( $response );
 
 
 
 
 
 
 
280
  ?>
281
  <div class="wbcr-factory-page-group-header"><?php _e('<strong>Plugin Components</strong>.', 'clearfy') ?>
282
  <p>
@@ -285,38 +383,37 @@
285
  </div>
286
 
287
  <div class="wbcr-clearfy-components">
288
- <?php foreach($response as $component): ?>
289
  <?php
290
 
291
  $slug = $component['name'];
292
 
293
- if($component['type'] == 'wordpress') {
294
  $slug = $component['base_path'];
295
  }
296
 
297
  if( $component['type'] == 'freemius' ) {
298
  $install_button = WCL_Plugin::app()->getInstallComponentsButton($component['type'], $slug);
299
 
300
- if( ! $component['actived'] ) {
301
  $status_class = ' plugin-status-deactive';
302
  } else {
303
  $status_class = ' plugin-status-active';
304
  }
305
 
306
- if(!$component['is_free']) {
307
  $status_class .= ' premium';
308
  }
309
-
310
  } else {
311
  $install_button = WCL_Plugin::app()->getInstallComponentsButton($component['type'], $slug);
312
 
313
  $status_class = '';
314
- if(!$install_button->isPluginActivate()) {
315
  $status_class = ' plugin-status-deactive';
316
  }
317
  }
318
 
319
- $install_button->addClass( 'install-now' );
320
 
321
  // Delete button
322
  $delete_button = WCL_Plugin::app()->getDeleteComponentsButton($component['type'], $slug);
@@ -325,7 +422,7 @@
325
  ?>
326
 
327
  <div class="plugin-card<?= $status_class ?>">
328
- <?php if($component['type'] == 'freemius' && !$component['is_free']): ?>
329
  <div class="premium-ribbon"><?php _e('Premium', 'clearfy') ?></div>
330
  <?php endif; ?>
331
  <div class="plugin-card-top">
@@ -339,8 +436,10 @@
339
  </div>
340
  <div class="desc column-description">
341
  <p><?= $component['description']; ?></p>
342
- <?php // для теста выводим текущую версию и актуальную ?>
343
- <?php if ( isset( $component['version'] ) ) : ?><p>Freemius: <?php echo $component['version']; ?>, current: <?php echo $licensing->getAddonCurrentVersion( $slug ); ?></p><?php endif; ?>
 
 
344
  </div>
345
  </div>
346
  <div class="plugin-card-bottom">
@@ -348,11 +447,19 @@
348
  </div>
349
  </div>
350
  <?php endforeach; ?>
 
 
 
 
 
 
 
 
 
351
  <div class="clearfix"></div>
352
  </div>
353
  <?php
354
  }
355
-
356
  }
357
 
358
 
13
  exit;
14
  }
15
 
16
+ class WCL_ComponentsPage extends Wbcr_FactoryClearfy206_PageBase {
17
 
18
  /**
19
  * The id of the page in the admin menu.
20
  *
21
  * Mainly used to navigate between pages.
22
+ * @see FactoryPages410_AdminPage
23
  *
24
  * @since 1.0.0
25
  * @var string
32
 
33
  public $type = 'page';
34
 
35
+ public $show_right_sidebar_in_options = false;
36
+
37
+ public $available_for_multisite = true;
38
+
39
  /**
40
  * @param WCL_Plugin $plugin
41
  */
42
  public function __construct(WCL_Plugin $plugin)
43
  {
44
  $this->menu_title = __('Components', 'clearfy');
45
+ $this->page_menu_short_description = __('More features for plugin', 'clearfy');
46
 
47
  parent::__construct($plugin);
48
 
52
  /**
53
  * Requests assets (js and css) for the page.
54
  *
55
+ * @see FactoryPages410_AdminPage
56
  *
57
  * @since 1.0.0
58
  * @return void
62
  parent::assets($scripts, $styles);
63
 
64
  $this->styles->add(WCL_PLUGIN_URL . '/admin/assets/css/components.css');
65
+
66
+ /**
67
+ * @param Wbcr_Factory409_ScriptList $scripts
68
+ * @param Wbcr_Factory409_StyleList $styles
69
+ * @since 1.4.0
70
+ */
71
+ do_action('wbcr/clearfy/components/page_assets', $scripts, $styles);
72
  }
73
+
74
+ /**
75
+ * Shows notification inside Clearfy interface
76
+ */
77
+ public function warningNotice()
78
+ {
79
  $package_plugin = WCL_Package::instance();
80
  $package_update_notice = $package_plugin->getUpdateNotice();
81
 
82
+ if( $package_update_notice ) {
83
+ $this->printWarningNotice($package_update_notice);
 
84
  }
85
  }
 
 
86
 
87
+
88
+ /**
89
+ * We register notifications for some actions
90
+ *
91
+ * @see libs\factory\pages\themplates\FactoryPages410_ImpressiveThemplate
92
+ * @param $notices
93
+ * @param Wbcr_Factory409_Plugin $plugin
94
+ * @return array
95
+ */
96
+ public function getActionNotices($notices)
97
+ {
98
+ $notices[] = array(
99
+ 'conditions' => array(
100
+ 'wbcr-force-update-components-success' => 1
101
+ ),
102
+ 'type' => 'success',
103
+ 'message' => __('Components have been successfully updated to the latest version.', 'clearfy')
104
+ );
105
+
106
+ $notices[] = array(
107
+ 'conditions' => array(
108
+ 'wbcr-force-update-components-error' => 'inactive_licence'
109
+ ),
110
+ 'type' => 'danger',
111
+ 'message' => __('To use premium components, you need activate a license!', 'clearfy') . '<a href="admin.php?page=license-wbcr_clearfy" class="btn btn-gold">' . __('Activate license', 'clearfy') . '</a>'
112
+ );
113
+
114
+ $notices[] = array(
115
+ 'conditions' => array(
116
+ 'wbcr-force-update-components-error' => 'unknown_error'
117
+ ),
118
+ 'type' => 'danger',
119
+ 'message' => __('An unknown error occurred while updating plugin components. Please contact the plugin support team to resolve this issue.', 'hide_my_wp')
120
+ );
121
+
122
+ return $notices;
123
+ }
124
+
125
+ public function forceUpdateComponentsAction()
126
+ {
127
+ check_admin_referer('force_update_componetns');
128
+
129
+ $licensing = WCL_Licensing::instance();
130
+ $licensing->getAddons(true); // обновляем список аддонов
131
+
132
+ if( !$licensing->isLicenseValid() and $licensing->isActivePaidAddons() ) {
133
+ $this->redirectToAction('index', array('wbcr-force-update-components-error' => 'inactive_licence'));
134
+ }
135
+
136
+ $package_plugin = WCL_Package::instance();
137
+
138
+ try {
139
+ $result = $package_plugin->update();
140
+
141
+ if( is_wp_error($result) ) {
142
+ $this->redirectToAction('index', array('wbcr-force-update-components-error' => 'unknown_error'));
143
+ }
144
+
145
+ $this->redirectToAction('index', array('wbcr-force-update-components-success' => 1));
146
+ } catch( Exception $e ) {
147
+ $this->redirectToAction('index', array('wbcr-force-update-components-error' => 'unknown_error'));
148
+ }
149
+
150
+ $this->redirectToAction('index');
151
+ }
152
+
153
+ /**
154
+ * This method simply sorts the list of components.
155
+ *
156
+ * @param $components
157
+ * @return array
158
+ */
159
+ public function order($components)
160
+ {
161
+
162
+ $deactivate_components = WCL_Plugin::app()->getPopulateOption('deactive_preinstall_components', array());
163
+
164
  $ordered_components = array(
165
  'premium_active' => array(),
166
  'premium_deactive' => array(),
168
  'free_deactive' => array(),
169
  );
170
  $order_key = 'free_deactive';
171
+ foreach($components as $component) {
172
+ if( in_array($component['type'], array('wordpress', 'internal')) ) {
173
+ if( in_array($component['name'], $deactivate_components) ) {
174
+ // free component is deactivated
175
  $order_key = 'free_deactive';
176
  } else {
177
+ // free component activated
178
  $order_key = 'free_active';
179
  }
180
+ } elseif( $component['type'] == 'freemius' ) {
181
+ if( $component['is_free'] ) {
182
+ // freemius free
183
+ if( $component['actived'] ) {
184
  $order_key = 'free_active';
185
  } else {
186
  $order_key = 'free_deactive';
187
  }
188
  } else {
189
+ // freemius premium
190
+ if( $component['actived'] ) {
191
  $order_key = 'premium_active';
192
  } else {
193
  $order_key = 'premium_deactive';
197
  $ordered_components[$order_key][] = $component;
198
  }
199
 
200
+ return array_merge($ordered_components['premium_active'], $ordered_components['premium_deactive'], $ordered_components['free_active'], $ordered_components['free_deactive']);
 
 
 
 
 
201
  }
202
 
203
+ /**
204
+ * This method simply show contents of the component page.
205
+ *
206
+ * @throws Exception
207
+ */
208
  public function showPageContent()
209
  {
210
+ $freemius_activated_addons = WCL_Plugin::app()->getPopulateOption('freemius_activated_addons', array()); // это только для фримиус
211
 
212
  $default_image = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzNjAiIGhlaWdodD0iMzYwIiB2aWV3Ym94PSIwIDAgMzYwIDM2MCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0icmdiKDcwLCA4MSwgOTMpIiAvPjxwb2x5bGluZSBwb2ludHM9IjE5LjgsMCw0MC4yLDAsNjAsMTkuOCw2MCw0MC4yLDQwLjIsNjAsMTkuOCw2MCwwLDQwLjIsMCwxOS44LDE5LjgsMCIgZmlsbD0iIzIyMiIgZmlsbC1vcGFjaXR5PSIwLjE1IiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLCAwKSIgLz48cG9seWxpbmUgcG9pbnRzPSIxOS44LDAsNDAuMiwwLDYwLDE5LjgsNjAsNDAuMiw0MC4yLDYwLDE5LjgsNjAsMCw0MC4yLDAsMTkuOCwxOS44LDAiIGZpbGw9IiNkZGQiIGZpbGwtb3BhY2l0eT0iMC4wNTQ2NjY2NjY2NjY2NjciIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLW9wYWNpdHk9IjAuMDIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDYwLCAwKSIgLz48cG9seWxpbmUgcG9pbnRzPSIxOS44LDAsNDAuMiwwLDYwLDE5LjgsNjAsNDAuMiw0MC4yLDYwLDE5LjgsNjAsMCw0MC4yLDAsMTkuOCwxOS44LDAiIGZpbGw9IiMyMjIiIGZpbGwtb3BhY2l0eT0iMC4wNDYiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLW9wYWNpdHk9IjAuMDIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEyMCwgMCkiIC8+PHBvbHlsaW5lIHBvaW50cz0iMTkuOCwwLDQwLjIsMCw2MCwxOS44LDYwLDQwLjIsNDAuMiw2MCwxOS44LDYwLDAsNDAuMiwwLDE5LjgsMTkuOCwwIiBmaWxsPSIjZGRkIiBmaWxsLW9wYWNpdHk9IjAuMDIiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLW9wYWNpdHk9IjAuMDIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE4MCwgMCkiIC8+PHBvbHlsaW5lIHBvaW50cz0iMTkuOCwwLDQwLjIsMCw2MCwxOS44LDYwLDQwLjIsNDAuMiw2MCwxOS44LDYwLDAsNDAuMiwwLDE5LjgsMTkuOCwwIiBmaWxsPSIjZGRkIiBmaWxsLW9wYWNpdHk9IjAuMDU0NjY2NjY2NjY2NjY3IiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNDAsIDApIiAvPjxwb2x5bGluZSBwb2ludHM9IjE5LjgsMCw0MC4yLDAsNjAsMTkuOCw2MCw0MC4yLDQwLjIsNjAsMTkuOCw2MCwwLDQwLjIsMCwxOS44LDE5LjgsMCIgZmlsbD0iIzIyMiIgZmlsbC1vcGFjaXR5PSIwLjAyODY2NjY2NjY2NjY2NyIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzAwLCAwKSIgLz48cG9seWxpbmUgcG9pbnRzPSIxOS44LDAsNDAuMiwwLDYwLDE5LjgsNjAsNDAuMiw0MC4yLDYwLDE5LjgsNjAsMCw0MC4yLDAsMTkuOCwxOS44LDAiIGZpbGw9IiNkZGQiIGZpbGwtb3BhY2l0eT0iMC4xMDY2NjY2NjY2NjY2NyIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCwgNjApIiAvPjxwb2x5bGluZSBwb2ludHM9IjE5LjgsMCw0MC4yLDAsNjAsMTkuOCw2MCw0MC4yLDQwLjIsNjAsMTkuOCw2MCwwLDQwLjIsMCwxOS44LDE5LjgsMCIgZmlsbD0iIzIyMiIgZmlsbC1vcGFjaXR5PSIwLjA5OCIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjAsIDYwKSIgLz48cG9seWxpbmUgcG9pbnRzPSIxOS44LDAsNDAuMiwwLDYwLDE5LjgsNjAsNDAuMiw0MC4yLDYwLDE5LjgsNjAsMCw0MC4yLDAsMTkuOCwxOS44LDAiIGZpbGw9IiMyMjIiIGZpbGwtb3BhY2l0eT0iMC4xMTUzMzMzMzMzMzMzMyIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTIwLCA2MCkiIC8+PHBvbHlsaW5lIHBvaW50cz0iMTkuOCwwLDQwLjIsMCw2MCwxOS44LDYwLDQwLjIsNDAuMiw2MCwxOS44LDYwLDAsNDAuMiwwLDE5LjgsMTkuOCwwIiBmaWxsPSIjMjIyIiBmaWxsLW9wYWNpdHk9IjAuMDYzMzMzMzMzMzMzMzMzIiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxODAsIDYwKSIgLz48cG9seWxpbmUgcG9pbnRzPSIxOS44LDAsNDAuMiwwLDYwLDE5LjgsNjAsNDAuMiw0MC4yLDYwLDE5LjgsNjAsMCw0MC4yLDAsMTkuOCwxOS44LDAiIGZpbGw9IiNkZGQiIGZpbGwtb3BhY2l0eT0iMC4wMzczMzMzMzMzMzMzMzMiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLW9wYWNpdHk9IjAuMDIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDI0MCwgNjApIiAvPjxwb2x5bGluZSBwb2ludHM9IjE5LjgsMCw0MC4yLDAsNjAsMTkuOCw2MCw0MC4yLDQwLjIsNjAsMTkuOCw2MCwwLDQwLjIsMCwxOS44LDE5LjgsMCIgZmlsbD0iI2RkZCIgZmlsbC1vcGFjaXR5PSIwLjE0MTMzMzMzMzMzMzMzIiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMDAsIDYwKSIgLz48cG9seWxpbmUgcG9pbnRzPSIxOS44LDAsNDAuMiwwLDYwLDE5LjgsNjAsNDAuMiw0MC4yLDYwLDE5LjgsNjAsMCw0MC4yLDAsMTkuOCwxOS44LDAiIGZpbGw9IiNkZGQiIGZpbGwtb3BhY2l0eT0iMC4wMzczMzMzMzMzMzMzMzMiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLW9wYWNpdHk9IjAuMDIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAsIDEyMCkiIC8+PHBvbHlsaW5lIHBvaW50cz0iMTkuOCwwLDQwLjIsMCw2MCwxOS44LDYwLDQwLjIsNDAuMiw2MCwxOS44LDYwLDAsNDAuMiwwLDE5LjgsMTkuOCwwIiBmaWxsPSIjZGRkIiBmaWxsLW9wYWNpdHk9IjAuMDg5MzMzMzMzMzMzMzMzIiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2MCwgMTIwKSIgLz48cG9seWxpbmUgcG9pbnRzPSIxOS44LDAsNDAuMiwwLDYwLDE5LjgsNjAsNDAuMiw0MC4yLDYwLDE5LjgsNjAsMCw0MC4yLDAsMTkuOCwxOS44LDAiIGZpbGw9IiNkZGQiIGZpbGwtb3BhY2l0eT0iMC4wODkzMzMzMzMzMzMzMzMiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLW9wYWNpdHk9IjAuMDIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEyMCwgMTIwKSIgLz48cG9seWxpbmUgcG9pbnRzPSIxOS44LDAsNDAuMiwwLDYwLDE5LjgsNjAsNDAuMiw0MC4yLDYwLDE5LjgsNjAsMCw0MC4yLDAsMTkuOCwxOS44LDAiIGZpbGw9IiMyMjIiIGZpbGwtb3BhY2l0eT0iMC4wODA2NjY2NjY2NjY2NjciIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLW9wYWNpdHk9IjAuMDIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE4MCwgMTIwKSIgLz48cG9seWxpbmUgcG9pbnRzPSIxOS44LDAsNDAuMiwwLDYwLDE5LjgsNjAsNDAuMiw0MC4yLDYwLDE5LjgsNjAsMCw0MC4yLDAsMTkuOCwxOS44LDAiIGZpbGw9IiMyMjIiIGZpbGwtb3BhY2l0eT0iMC4xMzI2NjY2NjY2NjY2NyIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjQwLCAxMjApIiAvPjxwb2x5bGluZSBwb2ludHM9IjE5LjgsMCw0MC4yLDAsNjAsMTkuOCw2MCw0MC4yLDQwLjIsNjAsMTkuOCw2MCwwLDQwLjIsMCwxOS44LDE5LjgsMCIgZmlsbD0iIzIyMiIgZmlsbC1vcGFjaXR5PSIwLjE1IiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMDAsIDEyMCkiIC8+PHBvbHlsaW5lIHBvaW50cz0iMTkuOCwwLDQwLjIsMCw2MCwxOS44LDYwLDQwLjIsNDAuMiw2MCwxOS44LDYwLDAsNDAuMiwwLDE5LjgsMTkuOCwwIiBmaWxsPSIjMjIyIiBmaWxsLW9wYWNpdHk9IjAuMDk4IiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLCAxODApIiAvPjxwb2x5bGluZSBwb2ludHM9IjE5LjgsMCw0MC4yLDAsNjAsMTkuOCw2MCw0MC4yLDQwLjIsNjAsMTkuOCw2MCwwLDQwLjIsMCwxOS44LDE5LjgsMCIgZmlsbD0iIzIyMiIgZmlsbC1vcGFjaXR5PSIwLjA2MzMzMzMzMzMzMzMzMyIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjAsIDE4MCkiIC8+PHBvbHlsaW5lIHBvaW50cz0iMTkuOCwwLDQwLjIsMCw2MCwxOS44LDYwLDQwLjIsNDAuMiw2MCwxOS44LDYwLDAsNDAuMiwwLDE5LjgsMTkuOCwwIiBmaWxsPSIjZGRkIiBmaWxsLW9wYWNpdHk9IjAuMDIiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLW9wYWNpdHk9IjAuMDIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEyMCwgMTgwKSIgLz48cG9seWxpbmUgcG9pbnRzPSIxOS44LDAsNDAuMiwwLDYwLDE5LjgsNjAsNDAuMiw0MC4yLDYwLDE5LjgsNjAsMCw0MC4yLDAsMTkuOCwxOS44LDAiIGZpbGw9IiNkZGQiIGZpbGwtb3BhY2l0eT0iMC4wMzczMzMzMzMzMzMzMzMiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLW9wYWNpdHk9IjAuMDIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE4MCwgMTgwKSIgLz48cG9seWxpbmUgcG9pbnRzPSIxOS44LDAsNDAuMiwwLDYwLDE5LjgsNjAsNDAuMiw0MC4yLDYwLDE5LjgsNjAsMCw0MC4yLDAsMTkuOCwxOS44LDAiIGZpbGw9IiMyMjIiIGZpbGwtb3BhY2l0eT0iMC4xMTUzMzMzMzMzMzMzMyIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjQwLCAxODApIiAvPjxwb2x5bGluZSBwb2ludHM9IjE5LjgsMCw0MC4yLDAsNjAsMTkuOCw2MCw0MC4yLDQwLjIsNjAsMTkuOCw2MCwwLDQwLjIsMCwxOS44LDE5LjgsMCIgZmlsbD0iIzIyMiIgZmlsbC1vcGFjaXR5PSIwLjA2MzMzMzMzMzMzMzMzMyIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzAwLCAxODApIiAvPjxwb2x5bGluZSBwb2ludHM9IjE5LjgsMCw0MC4yLDAsNjAsMTkuOCw2MCw0MC4yLDQwLjIsNjAsMTkuOCw2MCwwLDQwLjIsMCwxOS44LDE5LjgsMCIgZmlsbD0iI2RkZCIgZmlsbC1vcGFjaXR5PSIwLjA1NDY2NjY2NjY2NjY2NyIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCwgMjQwKSIgLz48cG9seWxpbmUgcG9pbnRzPSIxOS44LDAsNDAuMiwwLDYwLDE5LjgsNjAsNDAuMiw0MC4yLDYwLDE5LjgsNjAsMCw0MC4yLDAsMTkuOCwxOS44LDAiIGZpbGw9IiNkZGQiIGZpbGwtb3BhY2l0eT0iMC4xMDY2NjY2NjY2NjY2NyIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjAsIDI0MCkiIC8+PHBvbHlsaW5lIHBvaW50cz0iMTkuOCwwLDQwLjIsMCw2MCwxOS44LDYwLDQwLjIsNDAuMiw2MCwxOS44LDYwLDAsNDAuMiwwLDE5LjgsMTkuOCwwIiBmaWxsPSIjZGRkIiBmaWxsLW9wYWNpdHk9IjAuMDcyIiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMjAsIDI0MCkiIC8+PHBvbHlsaW5lIHBvaW50cz0iMTkuOCwwLDQwLjIsMCw2MCwxOS44LDYwLDQwLjIsNDAuMiw2MCwxOS44LDYwLDAsNDAuMiwwLDE5LjgsMTkuOCwwIiBmaWxsPSIjMjIyIiBmaWxsLW9wYWNpdHk9IjAuMTE1MzMzMzMzMzMzMzMiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLW9wYWNpdHk9IjAuMDIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE4MCwgMjQwKSIgLz48cG9seWxpbmUgcG9pbnRzPSIxOS44LDAsNDAuMiwwLDYwLDE5LjgsNjAsNDAuMiw0MC4yLDYwLDE5LjgsNjAsMCw0MC4yLDAsMTkuOCwxOS44LDAiIGZpbGw9IiMyMjIiIGZpbGwtb3BhY2l0eT0iMC4xMzI2NjY2NjY2NjY2NyIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjQwLCAyNDApIiAvPjxwb2x5bGluZSBwb2ludHM9IjE5LjgsMCw0MC4yLDAsNjAsMTkuOCw2MCw0MC4yLDQwLjIsNjAsMTkuOCw2MCwwLDQwLjIsMCwxOS44LDE5LjgsMCIgZmlsbD0iIzIyMiIgZmlsbC1vcGFjaXR5PSIwLjA4MDY2NjY2NjY2NjY2NyIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzAwLCAyNDApIiAvPjxwb2x5bGluZSBwb2ludHM9IjE5LjgsMCw0MC4yLDAsNjAsMTkuOCw2MCw0MC4yLDQwLjIsNjAsMTkuOCw2MCwwLDQwLjIsMCwxOS44LDE5LjgsMCIgZmlsbD0iIzIyMiIgZmlsbC1vcGFjaXR5PSIwLjEzMjY2NjY2NjY2NjY3IiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLCAzMDApIiAvPjxwb2x5bGluZSBwb2ludHM9IjE5LjgsMCw0MC4yLDAsNjAsMTkuOCw2MCw0MC4yLDQwLjIsNjAsMTkuOCw2MCwwLDQwLjIsMCwxOS44LDE5LjgsMCIgZmlsbD0iI2RkZCIgZmlsbC1vcGFjaXR5PSIwLjAzNzMzMzMzMzMzMzMzMyIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjAsIDMwMCkiIC8+PHBvbHlsaW5lIHBvaW50cz0iMTkuOCwwLDQwLjIsMCw2MCwxOS44LDYwLDQwLjIsNDAuMiw2MCwxOS44LDYwLDAsNDAuMiwwLDE5LjgsMTkuOCwwIiBmaWxsPSIjZGRkIiBmaWxsLW9wYWNpdHk9IjAuMTI0IiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMjAsIDMwMCkiIC8+PHBvbHlsaW5lIHBvaW50cz0iMTkuOCwwLDQwLjIsMCw2MCwxOS44LDYwLDQwLjIsNDAuMiw2MCwxOS44LDYwLDAsNDAuMiwwLDE5LjgsMTkuOCwwIiBmaWxsPSIjMjIyIiBmaWxsLW9wYWNpdHk9IjAuMDI4NjY2NjY2NjY2NjY3IiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxODAsIDMwMCkiIC8+PHBvbHlsaW5lIHBvaW50cz0iMTkuOCwwLDQwLjIsMCw2MCwxOS44LDYwLDQwLjIsNDAuMiw2MCwxOS44LDYwLDAsNDAuMiwwLDE5LjgsMTkuOCwwIiBmaWxsPSIjZGRkIiBmaWxsLW9wYWNpdHk9IjAuMDcyIiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNDAsIDMwMCkiIC8+PHBvbHlsaW5lIHBvaW50cz0iMTkuOCwwLDQwLjIsMCw2MCwxOS44LDYwLDQwLjIsNDAuMiw2MCwxOS44LDYwLDAsNDAuMiwwLDE5LjgsMTkuOCwwIiBmaWxsPSIjMjIyIiBmaWxsLW9wYWNpdHk9IjAuMDI4NjY2NjY2NjY2NjY3IiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMDAsIDMwMCkiIC8+PC9zdmc+';
213
+ $response = array();
214
 
215
+ // Удаляется при компиляции
216
+
217
+ $response = array_merge($response, array(
218
  array(
219
  'name' => 'robin_image_optimizer',
220
  'title' => __('Robin image optimizer', 'clearfy'),
221
  'url' => 'https://wordpress.org/plugins/robin-image-optimizer/',
222
  'type' => 'wordpress',
223
  'base_path' => 'robin-image-optimizer/robin-image-optimizer.php',
224
+ 'icon' => WCL_PLUGIN_URL . '/admin/assets/img/rio-icon-128x128.png',
225
  'description' => __('Automatic image optimization without any quality loss. No limitations, no paid plans. The best Wordpress image optimization plugin allows optimizing any amount of images for free!', 'clearfy')
226
  ),
227
  array(
254
  'title' => __('Google Analytics Cache', 'clearfy'),
255
  'url' => 'https://wordpress.org/plugins/simple-google-analytics/',
256
  'type' => 'internal',
257
+ 'icon' => WCL_PLUGIN_URL . '/admin/assets/img/gac-icon-128x128.jpg',
258
  'description' => __('To improve Google Page Speed indicators Analytics caching is needed. However, it can also slightly increase your website loading speed, because Analytics js files will load locally.', 'clearfy')
259
  ),
260
  array(
282
  'description' => __('Disable unused widgets such as tag cloud, links, calendar etc.', 'clearfy')
283
  ),
284
  array(
285
+ 'name' => 'assets_manager',
286
  'title' => __('Asset manager', 'clearfy'),
287
  'url' => '#',
288
  'type' => 'internal',
321
  'icon' => $default_image,
322
  'description' => __('Set of optimization functions for the popular Yoast SEO plugin.', 'clearfy')
323
  )
324
+ ));
325
 
326
  $response[] = array(
327
  'name' => 'cyrlitera',
335
  $licensing = WCL_Licensing::instance();
336
  $freemius_addons_data = $licensing->getAddons(); // получаем все аддоны
337
 
338
+ if( isset($freemius_addons_data->plugins) ) {
339
+ foreach($freemius_addons_data->plugins as $freemius_addon) {
340
  $is_free_addon = false;
341
+ if( $freemius_addon->free_releases_count ) {
342
  $is_free_addon = true;
343
  }
344
+ $actual_version = isset($freemius_addon->info) ? $freemius_addon->info->selling_point_0 : '';
345
+ if( !$actual_version ) {
346
+ $actual_version = $licensing->getAddonCurrentVersion($freemius_addon->slug);
347
  }
348
  $component = array(
349
+ 'name' => $freemius_addon->slug,
350
+ 'slug' => $freemius_addon->slug,
351
+ 'title' => __($freemius_addon->title, 'clearfy'),
352
+ 'type' => 'freemius',
353
+ 'installed' => false,
354
+ 'is_free' => $is_free_addon,
355
+ 'actived' => false,
356
+ 'version' => $actual_version,
357
+ 'url' => isset($freemius_addon->info) ? $freemius_addon->info->url : '#',
358
+ 'icon' => isset($freemius_addon->icon) ? $freemius_addon->icon : WCL_PLUGIN_URL . '/admin/assets/img/ctr-icon-128x128.png',
359
+ 'description' => isset($freemius_addon->info) ? __($freemius_addon->info->short_description, 'clearfy') : '',
360
  );
361
 
362
+ if( in_array($component['name'], $freemius_activated_addons) ) {
363
  $component['actived'] = true;
364
  }
365
 
367
  }
368
  }
369
 
370
+ $components = $this->order($response);
371
+
372
+ /**
373
+ * @param array $components
374
+ * @since 1.4.0
375
+ */
376
+ $components = apply_filters('wbcr/clearfy/components/items_list', $components);
377
+
378
  ?>
379
  <div class="wbcr-factory-page-group-header"><?php _e('<strong>Plugin Components</strong>.', 'clearfy') ?>
380
  <p>
383
  </div>
384
 
385
  <div class="wbcr-clearfy-components">
386
+ <?php foreach($components as $component): ?>
387
  <?php
388
 
389
  $slug = $component['name'];
390
 
391
+ if( $component['type'] == 'wordpress' ) {
392
  $slug = $component['base_path'];
393
  }
394
 
395
  if( $component['type'] == 'freemius' ) {
396
  $install_button = WCL_Plugin::app()->getInstallComponentsButton($component['type'], $slug);
397
 
398
+ if( !$component['actived'] ) {
399
  $status_class = ' plugin-status-deactive';
400
  } else {
401
  $status_class = ' plugin-status-active';
402
  }
403
 
404
+ if( !$component['is_free'] ) {
405
  $status_class .= ' premium';
406
  }
 
407
  } else {
408
  $install_button = WCL_Plugin::app()->getInstallComponentsButton($component['type'], $slug);
409
 
410
  $status_class = '';
411
+ if( !$install_button->isPluginActivate() ) {
412
  $status_class = ' plugin-status-deactive';
413
  }
414
  }
415
 
416
+ $install_button->addClass('install-now');
417
 
418
  // Delete button
419
  $delete_button = WCL_Plugin::app()->getDeleteComponentsButton($component['type'], $slug);
422
  ?>
423
 
424
  <div class="plugin-card<?= $status_class ?>">
425
+ <?php if( $component['type'] == 'freemius' && !$component['is_free'] ): ?>
426
  <div class="premium-ribbon"><?php _e('Premium', 'clearfy') ?></div>
427
  <?php endif; ?>
428
  <div class="plugin-card-top">
436
  </div>
437
  <div class="desc column-description">
438
  <p><?= $component['description']; ?></p>
439
+ <?php // For the test, we display the current version and the current one ?>
440
+ <?php if( isset($component['version']) ) : ?><p>
441
+ Freemius: <?php echo $component['version']; ?>,
442
+ current: <?php echo $licensing->getAddonCurrentVersion($slug); ?></p><?php endif; ?>
443
  </div>
444
  </div>
445
  <div class="plugin-card-bottom">
447
  </div>
448
  </div>
449
  <?php endforeach; ?>
450
+
451
+
452
+ <?php
453
+ /**
454
+ * @since 1.4.0
455
+ */
456
+ do_action('wbcr/clearfy/components/custom_plugins_card', $components);
457
+ ?>
458
+
459
  <div class="clearfix"></div>
460
  </div>
461
  <?php
462
  }
 
463
  }
464
 
465
 
admin/pages/defence.php CHANGED
@@ -11,13 +11,13 @@
11
  exit;
12
  }
13
 
14
- class WCL_DefencePage extends WCL_Page {
15
-
16
  /**
17
  * The id of the page in the admin menu.
18
  *
19
  * Mainly used to navigate between pages.
20
- * @see FactoryPages407_AdminPage
21
  *
22
  * @since 1.0.0
23
  * @var string
@@ -26,13 +26,16 @@
26
 
27
  public $page_menu_dashicon = 'dashicons-shield-alt';
28
 
 
 
29
  /**
30
  * @param WCL_Plugin $plugin
31
  */
32
  public function __construct(WCL_Plugin $plugin)
33
  {
34
  $this->menu_title = __('Defence', 'clearfy');
35
-
 
36
  parent::__construct($plugin);
37
 
38
  $this->plugin = $plugin;
@@ -44,7 +47,7 @@
44
  * @since 1.0.0
45
  * @return mixed[]
46
  */
47
- public function getOptions()
48
  {
49
  $options = array();
50
 
@@ -83,6 +86,10 @@
83
  'default' => false
84
  );
85
 
 
 
 
 
86
  $options[] = array(
87
  'type' => 'html',
88
  'html' => '<div class="wbcr-factory-page-group-header">' . __('<strong>Hide WordPress versions</strong>', 'clearfy') . '<p>' . __('WordPress itself and many plugins shows their version at the public areas of your site. An attacker received this information may be aware of the vulnerabilities found in the version of the WordPress core or plugins.', 'clearfy') . '</p></div>'
@@ -147,7 +154,7 @@
147
  'name' => 'disable_remove_style_version_for_auth_users',
148
  'title' => __('Disable remove versions for auth users', 'clearfy') . ' <span class="wbcr-clearfy-recomended-text">(' . __('Recommended', 'clearfy') . ')</span>',
149
  'layout' => array('hint-type' => 'icon'),
150
- 'default' => true
151
  );
152
 
153
  $options[] = array(
@@ -167,7 +174,7 @@
167
  //'cssClass' => 'postbox'
168
  );
169
 
170
- return wbcr_factory_406_apply_filters_deprecated('wbcr_clr_defence_form_options', array(
171
  $form_options,
172
  $this
173
  ), '1.3.1', 'wbcr_clearfy_defence_form_options');
11
  exit;
12
  }
13
 
14
+ class WCL_DefencePage extends Wbcr_FactoryClearfy206_PageBase {
15
+
16
  /**
17
  * The id of the page in the admin menu.
18
  *
19
  * Mainly used to navigate between pages.
20
+ * @see FactoryPages410_AdminPage
21
  *
22
  * @since 1.0.0
23
  * @var string
26
 
27
  public $page_menu_dashicon = 'dashicons-shield-alt';
28
 
29
+ public $available_for_multisite = true;
30
+
31
  /**
32
  * @param WCL_Plugin $plugin
33
  */
34
  public function __construct(WCL_Plugin $plugin)
35
  {
36
  $this->menu_title = __('Defence', 'clearfy');
37
+ $this->page_menu_short_description = __('Protective hacks, privacy', 'clearfy');
38
+
39
  parent::__construct($plugin);
40
 
41
  $this->plugin = $plugin;
47
  * @since 1.0.0
48
  * @return mixed[]
49
  */
50
+ public function getPageOptions()
51
  {
52
  $options = array();
53
 
86
  'default' => false
87
  );
88
 
89
+ //block_xml_rpc
90
+ //disable_xml_rpc_auth
91
+ //remove_xml_rpc_tag
92
+
93
  $options[] = array(
94
  'type' => 'html',
95
  'html' => '<div class="wbcr-factory-page-group-header">' . __('<strong>Hide WordPress versions</strong>', 'clearfy') . '<p>' . __('WordPress itself and many plugins shows their version at the public areas of your site. An attacker received this information may be aware of the vulnerabilities found in the version of the WordPress core or plugins.', 'clearfy') . '</p></div>'
154
  'name' => 'disable_remove_style_version_for_auth_users',
155
  'title' => __('Disable remove versions for auth users', 'clearfy') . ' <span class="wbcr-clearfy-recomended-text">(' . __('Recommended', 'clearfy') . ')</span>',
156
  'layout' => array('hint-type' => 'icon'),
157
+ 'default' => false
158
  );
159
 
160
  $options[] = array(
174
  //'cssClass' => 'postbox'
175
  );
176
 
177
+ return wbcr_factory_409_apply_filters_deprecated('wbcr_clr_defence_form_options', array(
178
  $form_options,
179
  $this
180
  ), '1.3.1', 'wbcr_clearfy_defence_form_options');
admin/pages/hide-login-page.php ADDED
@@ -0,0 +1,109 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * The page Settings.
5
+ *
6
+ * @since 1.0.0
7
+ */
8
+
9
+ // Exit if accessed directly
10
+ if( !defined('ABSPATH') ) {
11
+ exit;
12
+ }
13
+
14
+ class WCL_HideLoginPage extends Wbcr_FactoryClearfy206_PageBase {
15
+
16
+ /**
17
+ * The id of the page in the admin menu.
18
+ *
19
+ * Mainly used to navigate between pages.
20
+ * @see FactoryPages410_AdminPage
21
+ *
22
+ * @since 1.0.0
23
+ * @var string
24
+ */
25
+ public $id = "clrf_hide_login";
26
+
27
+ /**
28
+ * @var string
29
+ */
30
+ public $page_parent_page = 'defence';
31
+
32
+ /**
33
+ * Тип страницы
34
+ * options - предназначена для создании страниц с набором опций и настроек.
35
+ * page - произвольный контент, любой html код
36
+ *
37
+ * @var string
38
+ */
39
+ public $type = 'page';
40
+
41
+ /**
42
+ * Позиция закладки в меню плагина.
43
+ * 0 - в самом конце, 100 - в самом начале
44
+ *
45
+ * @var int
46
+ */
47
+ public $page_menu_position = 30;
48
+
49
+ /**
50
+ * @var string
51
+ */
52
+ public $page_menu_dashicon = 'dashicons-images-alt2';
53
+
54
+ /**
55
+ * @var bool
56
+ */
57
+ public $available_for_multisite = true;
58
+
59
+ /**
60
+ * @param WCL_Plugin $plugin
61
+ */
62
+ public function __construct(WCL_Plugin $plugin)
63
+ {
64
+ $this->menu_title = __('Hide login page', 'clearfy');
65
+ parent::__construct($plugin);
66
+
67
+ $this->plugin = $plugin;
68
+ }
69
+
70
+ /**
71
+ * Содержание страницы
72
+ */
73
+ public function showPageContent()
74
+ {
75
+ require_once WCL_PLUGIN_DIR . '/admin/includes/classes/class.install-plugins-button.php';
76
+ $install_button = new WCL_InstallPluginsButton('wordpress', 'hide-login-page/hide-login-page.php');
77
+ $install_button->addClass('wbcr-factory-purchase-premium');
78
+ ?>
79
+ <script>
80
+ jQuery(document).ready(function($) {
81
+ $.wbcr_factory_clearfy_206.hooks.add('clearfy/components/updated', function(button, component_name) {
82
+ if( component_name.plugin_action == 'install' ) {
83
+ button.removeClass('wbcr-factory-purchase-premium');
84
+ button.addClass('wbcr-factory-activate-premium');
85
+ }
86
+
87
+ if( component_name.plugin_action == 'activate' ) {
88
+ button.remove();
89
+ window.location.href = '<?= $this->getBaseUrl('hlp_hide_login'); ?>';
90
+ }
91
+ });
92
+ });
93
+ </script>
94
+ <div class="wbcr-factory-clearfy-206-multisite-suggetion">
95
+ <div class="wbcr-factory-inner-contanier">
96
+ <h3><?php _e('Install Hide login page component', 'clearfy') ?></h3>
97
+
98
+ <p><?php _e('To start protect login page, you need to install the additional component Hide login page!', 'clearfy') ?></p>
99
+
100
+ <p><?php _e('Installing the component will not take you long, just click the install button, then activate.', 'clearfy') ?></p>
101
+
102
+ <p style="margin-top:20px">
103
+ <?php $install_button->renderLink(); ?>
104
+ </p>
105
+ </div>
106
+ </div>
107
+ <?php
108
+ }
109
+ }
admin/pages/image-optimization.php ADDED
@@ -0,0 +1,111 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * The page Settings.
5
+ *
6
+ * @since 1.0.0
7
+ */
8
+
9
+ // Exit if accessed directly
10
+ if( !defined('ABSPATH') ) {
11
+ exit;
12
+ }
13
+
14
+ class WCL_ImageOptimizationPage extends Wbcr_FactoryClearfy206_PageBase {
15
+
16
+ /**
17
+ * The id of the page in the admin menu.
18
+ *
19
+ * Mainly used to navigate between pages.
20
+ * @see FactoryPages410_AdminPage
21
+ *
22
+ * @since 1.0.0
23
+ * @var string
24
+ */
25
+ public $id = "clrf_image_optimization";
26
+
27
+ /**
28
+ * @var string
29
+ */
30
+ public $page_parent_page = 'performance';
31
+
32
+ /**
33
+ * Тип страницы
34
+ * options - предназначена для создании страниц с набором опций и настроек.
35
+ * page - произвольный контент, любой html код
36
+ *
37
+ * @var string
38
+ */
39
+ public $type = 'page';
40
+
41
+ /**
42
+ * Позиция закладки в меню плагина.
43
+ * 0 - в самом конце, 100 - в самом начале
44
+ *
45
+ * @var int
46
+ */
47
+ public $page_menu_position = 30;
48
+
49
+ /**
50
+ * @var string
51
+ */
52
+ public $page_menu_dashicon = 'dashicons-images-alt2';
53
+
54
+ /**
55
+ * @var bool
56
+ */
57
+ public $available_for_multisite = true;
58
+
59
+ /**
60
+ * @param WCL_Plugin $plugin
61
+ */
62
+ public function __construct(WCL_Plugin $plugin)
63
+ {
64
+ $this->menu_title = __('Image optimization', 'clearfy');
65
+ $this->page_menu_short_description = __('Compress bulk of images', 'clearfy');
66
+
67
+ parent::__construct($plugin);
68
+
69
+ $this->plugin = $plugin;
70
+ }
71
+
72
+ /**
73
+ * Содержание страницы
74
+ */
75
+ public function showPageContent()
76
+ {
77
+ require_once WCL_PLUGIN_DIR . '/admin/includes/classes/class.install-plugins-button.php';
78
+ $install_button = new WCL_InstallPluginsButton('wordpress', 'robin-image-optimizer/robin-image-optimizer.php');
79
+ $install_button->addClass('wbcr-factory-purchase-premium');
80
+ ?>
81
+ <script>
82
+ jQuery(document).ready(function($) {
83
+ $.wbcr_factory_clearfy_206.hooks.add('clearfy/components/updated', function(button, component_name) {
84
+ if( component_name.plugin_action == 'install' ) {
85
+ button.removeClass('wbcr-factory-purchase-premium');
86
+ button.addClass('wbcr-factory-activate-premium');
87
+ }
88
+
89
+ if( component_name.plugin_action == 'activate' ) {
90
+ button.remove();
91
+ window.location.href = '<?= $this->getBaseUrl('io_general'); ?>';
92
+ }
93
+ });
94
+ });
95
+ </script>
96
+ <div class="wbcr-factory-clearfy-206-multisite-suggetion">
97
+ <div class="wbcr-factory-inner-contanier">
98
+ <h3><?php _e('Install Robin Image Optimizer component', 'clearfy') ?></h3>
99
+
100
+ <p><?php _e('To start optimizing images, you need to install the additional component Robin image optimizer!', 'clearfy') ?></p>
101
+
102
+ <p><?php _e('Installing the component will not take you long, just click the install button, then activate.', 'clearfy') ?></p>
103
+
104
+ <p style="margin-top:20px">
105
+ <?php $install_button->renderLink(); ?>
106
+ </p>
107
+ </div>
108
+ </div>
109
+ <?php
110
+ }
111
+ }
admin/pages/license.php CHANGED
@@ -10,13 +10,13 @@
10
  exit;
11
  }
12
 
13
- class WCL_LicensePage extends WCL_Page {
14
 
15
  /**
16
  * The id of the page in the admin menu.
17
  *
18
  * Mainly used to navigate between pages.
19
- * @see Wbcr_FactoryPages407_AdminPage
20
  *
21
  * @since 1.0.0
22
  * @var string
@@ -37,6 +37,14 @@
37
  */
38
  public $page_menu_dashicon = 'dashicons-admin-network';
39
 
 
 
 
 
 
 
 
 
40
  /**
41
  * Позиция закладки в меню плагина.
42
  * 0 - в самом конце, 100 - в самом начале
@@ -44,17 +52,19 @@
44
  */
45
  public $page_menu_position = 0;
46
 
 
 
47
  /**
48
  * @param WCL_Plugin $plugin
49
  */
50
  public function __construct(WCL_Plugin $plugin)
51
  {
52
  $this->menu_title = __('License', 'clearfy');
 
53
 
54
  parent::__construct($plugin);
55
 
56
  $this->plugin = $plugin;
57
- $this->hooks();
58
  }
59
 
60
  /**
@@ -67,117 +77,6 @@
67
  $this->styles->add(WCL_PLUGIN_URL . '/admin/assets/css/license-manager.css');
68
  $this->scripts->add(WCL_PLUGIN_URL . '/admin/assets/js/license-manager.js');
69
  }
70
-
71
- public function hooks()
72
- {
73
- add_action('wp_ajax_wbcr_clr_licensing', array($this, 'ajax'));
74
- add_action('wbcr_clr_license_autosync', array($this, 'autoSync'));
75
- if( !wp_next_scheduled('wbcr_clr_license_autosync') ) {
76
- wp_schedule_event(time(), 'twicedaily', 'wbcr_clr_license_autosync');
77
- }
78
- add_filter('site_transient_update_plugins', array($this, 'updateFreemiusAddons'));
79
- add_action('wbcr_factory_pages_407_imppage_print_all_notices', array($this, 'printUpdateNotice'), 10, 2);
80
- add_action('after_plugin_row_clearfy/clearfy.php', array($this, 'addonsUpdateMessage'), 100, 3);
81
- }
82
-
83
- /**
84
- * @param WCL_Plugin $plugin
85
- * @param Wbcr_FactoryPages407_ImpressiveThemplate $obj
86
- * @return bool
87
- */
88
- public function printUpdateNotice($plugin, $obj)
89
- {
90
- // выводим уведомление везде, кроме страницы компонентов. Там выводится отдельно.
91
- if( ($this->plugin->getPluginName() != $plugin->getPluginName()) || ($obj->id == 'components') ) {
92
- return false;
93
- }
94
- $package_plugin = WCL_Package::instance();
95
- $package_update_notice = $package_plugin->getUpdateNotice();
96
-
97
- if( $package_update_notice ) {
98
- if( $obj->id != 'quick_start' ) {
99
- $obj->scripts->add(WCL_PLUGIN_URL . '/admin/assets/js/update-package.js');
100
- }
101
- $obj->printWarningNotice($package_update_notice);
102
- }
103
- }
104
-
105
- public function updateFreemiusAddons($transient)
106
- {
107
- if( empty($transient->checked) ) {
108
- return $transient;
109
- }
110
-
111
- $package_plugin = WCL_Package::instance();
112
- if( !$package_plugin->isActive() ) {
113
- return $transient;
114
- }
115
- $need_update_package = $package_plugin->isNeedUpdate();
116
- $need_update_addons = $package_plugin->isNeedUpdateAddons();
117
- $info = $package_plugin->info();
118
- if( $need_update_package and $need_update_addons ) {
119
- $update_data = new stdClass();
120
- $update_data->slug = $info['plugin_slug'];
121
- $update_data->plugin = $info['plugin_basename'];
122
- $update_data->new_version = '1.1';
123
- $update_data->package = $package_plugin->downloadUrl();
124
- //$res->compatibility = new stdClass();
125
- $transient->response[$update_data->plugin] = $update_data;
126
- }
127
-
128
- return $transient;
129
- }
130
-
131
- public function addonsUpdateMessage($plugin_file, $plugin_data, $status)
132
- {
133
- $package_plugin = WCL_Package::instance();
134
- $need_update_package = $package_plugin->isNeedUpdate();
135
-
136
- if ( $need_update_package ) {
137
- if ( $package_plugin->isNeedUpdateAddons() ) {
138
- $package_plugin_info = $package_plugin->info();
139
- $update_link = ' <a href="#" data-wpnonce="' . wp_create_nonce( 'package' ) . '" data-loading="'. __( 'Update in progress...', 'clearfy' ) .'" data-ok="'. __( 'Components have been successfully updated!', 'clearfy' ) .'" class="wbcr-clr-plugin-update-link">' . __( 'update now', 'clearfy' ) . '</a>';
140
- printf(
141
- '<tr class="plugin-update-tr active update">
142
-
143
-
144
- <td colspan="3" class="plugin-update colspanchange">
145
- <div class="update-message notice inline notice-warning notice-alt" style="background-color:#f5e9f5;border-color: #dab9da;">
146
- <p>%s</p>
147
- </div>
148
- </td>
149
-
150
- </tr>',
151
- __( 'Updates are available for one of the components.', 'clearfy' ) . $update_link
152
- );
153
- }
154
- }
155
- }
156
-
157
- public function ajax()
158
- {
159
- check_admin_referer('license');
160
- $license_action = isset($_POST['license_action'])
161
- ? $_POST['license_action']
162
- : false;
163
- $actions = array(
164
- 'activate',
165
- 'deactivate',
166
- 'sync',
167
- 'unsubscribe'
168
- );
169
- if( in_array($license_action, $actions) ) {
170
- $method_name = $license_action . 'AjaxHandler';
171
- $this->{$method_name}();
172
- }
173
- die();
174
- }
175
-
176
- public function autoSync()
177
- {
178
- $licensing = WCL_Licensing::instance();
179
- $notice = $licensing->sync();
180
- }
181
 
182
  /**
183
  * Метод печатает html содержимое страницы
@@ -251,9 +150,8 @@
251
  $license_type = 'trial';
252
  }
253
 
254
-
255
  ?>
256
- <div class="factory-bootstrap-406 onp-page-wrap <?= $license_type ?>-license-manager-content" id="license-manager">
257
  <div>
258
  <h3><?php _e('Activation Clearfy Business', 'clearfy') ?></h3>
259
 
@@ -272,15 +170,15 @@
272
 
273
  <div class="onp-container">
274
  <div class="license-details">
275
- <?php if($license_type == 'free'): ?>
276
- <a href="<?= $this->plugin->getAuthorSitePageUrl('pricing', 'license_page') ?>" class="purchase-premium" target="_blank" rel="noopener">
277
  <span class="btn btn-gold btn-inner-wrap">
278
- <i class="fa fa-star"></i> <?php printf(__('Upgrade to Premium for $%s', 'clearfy'), '19') ?>
279
  <i class="fa fa-star"></i>
280
  </span>
281
- </a>
282
 
283
- <p><?php printf(__('Your current license for %1$s:', 'clearfy'), $this->plugin->getPluginTitle()) ?></p>
284
  <?php endif; ?>
285
 
286
  <div class="license-details-block <?= $license_type ?>-details-block">
@@ -294,7 +192,8 @@
294
  <h3>
295
  <?= ucfirst($plan); ?>
296
  <?php if( $premium and $subscribe ) { ?>
297
- <span style="font-size: 15px;"><?php printf(__('(Automatic renewal, every %s',''), esc_attr($billing)); ?>)</span>
 
298
  <?php } ?>
299
  </h3>
300
 
@@ -379,11 +278,11 @@
379
 
380
  <?php if( $premium ) { ?>
381
  <p style="margin-top: 10px;">
382
- <?php printf(__('<a href="%s" target="_blank" rel="noopener">Lean more</a> about the premium version and get the license key to activate it now!', 'clearfy'), $this->plugin->getAuthorSitePageUrl('pricing', 'license_page')) ?>
383
  </p>
384
  <?php } else { ?>
385
  <p style="margin-top: 10px;">
386
- <?php printf(__('Can’t find your key? Go to <a href="%s" target="_blank" rel="noopener">this page</a> and login using the e-mail address associated with your purchase.', 'clearfy'), $this->plugin->getAuthorSitePageUrl('contact-us', 'license_page')) ?>
387
  </p>
388
  <?php } ?>
389
  </form>
@@ -393,38 +292,4 @@
393
 
394
  <?php
395
  }
396
-
397
-
398
- public function activateAjaxHandler()
399
- {
400
- $license_key = $_POST['licensekey'];
401
- if( !$license_key ) {
402
- $this->showLicenseForm();
403
- } else {
404
- $licensing = WCL_Licensing::instance();
405
- $notice = $licensing->activate($license_key);
406
- $this->showLicenseForm($notice);
407
- }
408
- }
409
-
410
- public function deactivateAjaxHandler()
411
- {
412
- $licensing = WCL_Licensing::instance();
413
- $notice = $licensing->uninstall();
414
- $this->showLicenseForm($notice);
415
- }
416
-
417
- public function syncAjaxHandler()
418
- {
419
- $licensing = WCL_Licensing::instance();
420
- $notice = $licensing->sync();
421
- $this->showLicenseForm($notice);
422
- }
423
-
424
- public function unsubscribeAjaxHandler()
425
- {
426
- $licensing = WCL_Licensing::instance();
427
- $notice = $licensing->unsubscribe();
428
- $this->showLicenseForm($notice);
429
- }
430
  }
10
  exit;
11
  }
12
 
13
+ class WCL_LicensePage extends Wbcr_FactoryClearfy206_PageBase {
14
 
15
  /**
16
  * The id of the page in the admin menu.
17
  *
18
  * Mainly used to navigate between pages.
19
+ * @see Wbcr_FactoryPages410_AdminPage
20
  *
21
  * @since 1.0.0
22
  * @var string
37
  */
38
  public $page_menu_dashicon = 'dashicons-admin-network';
39
 
40
+ /**
41
+ * Показывать правый сайдбар?
42
+ * Сайдбар будет показан на внутренних страницах шаблона.
43
+ *
44
+ * @var bool
45
+ */
46
+ public $show_right_sidebar_in_options = false;
47
+
48
  /**
49
  * Позиция закладки в меню плагина.
50
  * 0 - в самом конце, 100 - в самом начале
52
  */
53
  public $page_menu_position = 0;
54
 
55
+ public $available_for_multisite = true;
56
+
57
  /**
58
  * @param WCL_Plugin $plugin
59
  */
60
  public function __construct(WCL_Plugin $plugin)
61
  {
62
  $this->menu_title = __('License', 'clearfy');
63
+ $this->page_menu_short_description = __('Product activation', 'clearfy');
64
 
65
  parent::__construct($plugin);
66
 
67
  $this->plugin = $plugin;
 
68
  }
69
 
70
  /**
77
  $this->styles->add(WCL_PLUGIN_URL . '/admin/assets/css/license-manager.css');
78
  $this->scripts->add(WCL_PLUGIN_URL . '/admin/assets/js/license-manager.js');
79
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
80
 
81
  /**
82
  * Метод печатает html содержимое страницы
150
  $license_type = 'trial';
151
  }
152
 
 
153
  ?>
154
+ <div class="factory-bootstrap-409 onp-page-wrap <?= $license_type ?>-license-manager-content" id="license-manager">
155
  <div>
156
  <h3><?php _e('Activation Clearfy Business', 'clearfy') ?></h3>
157
 
170
 
171
  <div class="onp-container">
172
  <div class="license-details">
173
+ <?php if( $license_type == 'free' ): ?>
174
+ <a href="<?= WbcrFactoryClearfy206_Helpers::getWebcrafticSitePageUrl(WCL_Plugin::app()->getPluginName(), 'pricing', 'license_page') ?>" class="purchase-premium" target="_blank" rel="noopener">
175
  <span class="btn btn-gold btn-inner-wrap">
176
+ <i class="fa fa-star"></i> <?php printf(__('Upgrade to Premium for $%s', 'clearfy'), WbcrFactoryClearfy206_Helpers::getClearfyBusinessPrice()) ?>
177
  <i class="fa fa-star"></i>
178
  </span>
179
+ </a>
180
 
181
+ <p><?php printf(__('Your current license for %1$s:', 'clearfy'), $this->plugin->getPluginTitle()) ?></p>
182
  <?php endif; ?>
183
 
184
  <div class="license-details-block <?= $license_type ?>-details-block">
192
  <h3>
193
  <?= ucfirst($plan); ?>
194
  <?php if( $premium and $subscribe ) { ?>
195
+ <span style="font-size: 15px;"><?php printf(__('(Automatic renewal, every %s', ''), esc_attr($billing)); ?>
196
+ )</span>
197
  <?php } ?>
198
  </h3>
199
 
278
 
279
  <?php if( $premium ) { ?>
280
  <p style="margin-top: 10px;">
281
+ <?php printf(__('<a href="%s" target="_blank" rel="noopener">Lean more</a> about the premium version and get the license key to activate it now!', 'clearfy'), WbcrFactoryClearfy206_Helpers::getWebcrafticSitePageUrl(WCL_Plugin::app()->getPluginName(), 'pricing', 'license_page')) ?>
282
  </p>
283
  <?php } else { ?>
284
  <p style="margin-top: 10px;">
285
+ <?php printf(__('Can’t find your key? Go to <a href="%s" target="_blank" rel="noopener">this page</a> and login using the e-mail address associated with your purchase.', 'clearfy'), WbcrFactoryClearfy206_Helpers::getWebcrafticSitePageUrl(WCL_Plugin::app()->getPluginName(), 'contact-us', 'license_page')) ?>
286
  </p>
287
  <?php } ?>
288
  </form>
292
 
293
  <?php
294
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
295
  }
admin/pages/performance-google.php CHANGED
@@ -10,13 +10,13 @@
10
  exit;
11
  }
12
 
13
- class WCL_PerformanceGooglePage extends WCL_Page {
14
 
15
  /**
16
  * The id of the page in the admin menu.
17
  *
18
  * Mainly used to navigate between pages.
19
- * @see FactoryPages407_AdminPage
20
  *
21
  * @since 1.0.0
22
  * @var string
@@ -37,6 +37,8 @@
37
  * @var int
38
  */
39
  public $page_menu_position = 20;
 
 
40
 
41
  /**
42
  * @param WCL_Plugin $plugin
@@ -52,8 +54,8 @@
52
 
53
  public function afterFormSave()
54
  {
55
- $ga_cache = $this->getOption('ga_cache');
56
- $ga_caos_remove_wp_cron = $this->getOption('ga_caos_remove_wp_cron');
57
 
58
  if( $ga_cache ) {
59
  if( !$ga_caos_remove_wp_cron ) {
@@ -76,7 +78,7 @@
76
  * @since 1.0.0
77
  * @return mixed[]
78
  */
79
- public function getOptions()
80
  {
81
  $options = array();
82
 
@@ -151,4 +153,4 @@ Reasons for not using Google Maps might be privacy and security, local developme
151
 
152
  return apply_filters('wbcr_clr_google_performance_form_options', $form_options, $this);
153
  }
154
- }
10
  exit;
11
  }
12
 
13
+ class WCL_PerformanceGooglePage extends Wbcr_FactoryClearfy206_PageBase {
14
 
15
  /**
16
  * The id of the page in the admin menu.
17
  *
18
  * Mainly used to navigate between pages.
19
+ * @see FactoryPages410_AdminPage
20
  *
21
  * @since 1.0.0
22
  * @var string
37
  * @var int
38
  */
39
  public $page_menu_position = 20;
40
+
41
+ public $available_for_multisite = true;
42
 
43
  /**
44
  * @param WCL_Plugin $plugin
54
 
55
  public function afterFormSave()
56
  {
57
+ $ga_cache = $this->getPopulateOption('ga_cache');
58
+ $ga_caos_remove_wp_cron = $this->getPopulateOption('ga_caos_remove_wp_cron');
59
 
60
  if( $ga_cache ) {
61
  if( !$ga_caos_remove_wp_cron ) {
78
  * @since 1.0.0
79
  * @return mixed[]
80
  */
81
+ public function getPageOptions()
82
  {
83
  $options = array();
84
 
153
 
154
  return apply_filters('wbcr_clr_google_performance_form_options', $form_options, $this);
155
  }
156
+ }
admin/pages/performance.php CHANGED
@@ -10,13 +10,13 @@
10
  exit;
11
  }
12
 
13
- class WCL_PerformancePage extends WCL_Page {
14
 
15
  /**
16
  * The id of the page in the admin menu.
17
  *
18
  * Mainly used to navigate between pages.
19
- * @see FactoryPages407_AdminPage
20
  *
21
  * @since 1.0.0
22
  * @var string
@@ -32,6 +32,8 @@
32
  * @var int
33
  */
34
  public $page_menu_position = 20;
 
 
35
 
36
  /**
37
  * @param WCL_Plugin $plugin
@@ -39,6 +41,7 @@
39
  public function __construct(WCL_Plugin $plugin)
40
  {
41
  $this->menu_title = __('Performance', 'clearfy');
 
42
 
43
  parent::__construct($plugin);
44
 
@@ -47,7 +50,7 @@
47
 
48
  public function afterFormSave()
49
  {
50
- if( $this->getOption('disable_gravatars') ) {
51
  update_option('show_avatars', false);
52
  } else {
53
  update_option('show_avatars', true);
@@ -60,7 +63,7 @@
60
  * @since 1.0.0
61
  * @return mixed[]
62
  */
63
- public function getOptions()
64
  {
65
  $options = array();
66
 
10
  exit;
11
  }
12
 
13
+ class WCL_PerformancePage extends Wbcr_FactoryClearfy206_PageBase {
14
 
15
  /**
16
  * The id of the page in the admin menu.
17
  *
18
  * Mainly used to navigate between pages.
19
+ * @see FactoryPages410_AdminPage
20
  *
21
  * @since 1.0.0
22
  * @var string
32
  * @var int
33
  */
34
  public $page_menu_position = 20;
35
+
36
+ public $available_for_multisite = true;
37
 
38
  /**
39
  * @param WCL_Plugin $plugin
41
  public function __construct(WCL_Plugin $plugin)
42
  {
43
  $this->menu_title = __('Performance', 'clearfy');
44
+ $this->page_menu_short_description = __('Optimization js, css, fonts', 'clearfy');
45
 
46
  parent::__construct($plugin);
47
 
50
 
51
  public function afterFormSave()
52
  {
53
+ if( $this->getPopulateOption('disable_gravatars') ) {
54
  update_option('show_avatars', false);
55
  } else {
56
  update_option('show_avatars', true);
63
  * @since 1.0.0
64
  * @return mixed[]
65
  */
66
+ public function getPageOptions()
67
  {
68
  $options = array();
69
 
admin/pages/quick-start.php CHANGED
@@ -11,13 +11,13 @@
11
  exit;
12
  }
13
 
14
- class WCL_QuickStartPage extends WCL_Page {
15
 
16
  /**
17
  * The id of the page in the admin menu.
18
  *
19
  * Mainly used to navigate between pages.
20
- * @see FactoryPages407_AdminPage
21
  *
22
  * @since 1.0.0
23
  * @var string
@@ -45,14 +45,18 @@
45
  public $menu_target = 'options-general.php';
46
 
47
  /**
48
- * @var bool
49
  */
50
- public $add_link_to_plugin_actions = true;
51
 
52
  /**
53
- * @var string
54
  */
55
- public $type = 'page';
 
 
 
 
56
 
57
  /**
58
  * @param WCL_Plugin $plugin
@@ -60,13 +64,14 @@
60
  public function __construct(WCL_Plugin $plugin)
61
  {
62
  $this->menu_title = __('Clearfy menu', 'clearfy');
 
63
 
64
  parent::__construct($plugin);
65
 
66
  $this->plugin = $plugin;
67
  }
68
 
69
- public function getMenuTitle()
70
  {
71
  return __('Quick start', 'clearfy');
72
  }
@@ -74,7 +79,7 @@
74
  /**
75
  * Requests assets (js and css) for the page.
76
  *
77
- * @see FactoryPages407_AdminPage
78
  *
79
  * @since 1.0.0
80
  * @return void
@@ -84,13 +89,22 @@
84
  parent::assets($scripts, $styles);
85
 
86
  $this->scripts->add(WCL_PLUGIN_URL . '/admin/assets/js/general.js');
87
- //для импорта натсроек нужен стрипт обновления пакета.
88
- $this->scripts->add(WCL_PLUGIN_URL . '/admin/assets/js/update-package.js');
89
-
 
 
 
 
 
90
  $params = array(
91
  //'ajaxurl' => admin_url('admin-ajax.php'),
92
  'flush_cache_url' => $this->getActionUrl('flush-cache-and-rules', array('_wpnonce' => wp_create_nonce('wbcr_factory_' . $this->getResultId() . '_flush_action'))),
93
  'ajax_nonce' => wp_create_nonce('wbcr_clearfy_ajax_quick_start_nonce'),
 
 
 
 
94
  );
95
 
96
  wp_localize_script('jquery', 'wbcr_clearfy_ajax', $params);
@@ -110,76 +124,6 @@
110
  </div>
111
  <?php
112
  }
113
-
114
- /**
115
- * Collects error and system error data
116
- * @return string
117
- */
118
- public function getDebugReport()
119
- {
120
- $run_time = number_format(microtime(true), 3);
121
- $pps = number_format(1 / $run_time, 0);
122
- $memory_avail = ini_get('memory_limit');
123
- $memory_used = number_format(memory_get_usage(true) / (1024 * 1024), 2);
124
- $memory_peak = number_format(memory_get_peak_usage(true) / (1024 * 1024), 2);
125
-
126
- $debug = '';
127
- if( PHP_SAPI == 'cli' ) {
128
- // if run for command line, display some info
129
- $debug = PHP_EOL . "======================================================================================" . PHP_EOL . " Config: php " . phpversion() . " " . php_sapi_name() . " / zend engine " . zend_version() . PHP_EOL . " Load: {$memory_avail} (avail) / {$memory_used}M (used) / {$memory_peak}M (peak)" . " | Time: {$run_time}s | {$pps} req/sec" . PHP_EOL . " | Server Timezone: " . date_default_timezone_get() . " | Agent: CLI" . PHP_EOL . "======================================================================================" . PHP_EOL;
130
- } else {
131
- // if not run from command line, only display if debug is enabled
132
- $debug = "" //<hr />"
133
- . "<div style=\"text-align: left;\">" . "<hr />" . " Config: " . "<br />" . " &nbsp;&nbsp; | php " . phpversion() . " " . php_sapi_name() . " / zend engine " . zend_version() . "<br />" . " &nbsp;&nbsp; | Server Timezone: " . date_default_timezone_get() . "<br />" . " Load: " . "<br />" . " &nbsp;&nbsp; | Memory: {$memory_avail} (avail) / {$memory_used}M (used) / {$memory_peak}M (peak)" . "<br />" . " &nbsp;&nbsp; | Time: {$run_time}s &nbsp;&nbsp; | {$pps} req/sec" . "<br />" . "Url: " . "<br />" . " &nbsp;&nbsp; |" . "<br />" . " &nbsp;&nbsp; | Agent: " . (@$_SERVER["HTTP_USER_AGENT"]) . "<br />" . "Version Control: " . "<br />" . " &nbsp;&nbsp; </div>" . "<br />";
134
- }
135
-
136
- $debug .= "Plugins<br>";
137
- $debug .= "=====================<br>";
138
-
139
- $plugins = get_plugins();
140
-
141
- foreach($plugins as $path => $plugin) {
142
- if( is_plugin_active($path) ) {
143
- $debug .= $plugin['Name'] . '<br>';
144
- }
145
- }
146
-
147
- return $debug;
148
- }
149
-
150
- /**
151
- * Generates a report about the system and plug-in error
152
- * @return string
153
- */
154
- public function gererateReportAction()
155
- {
156
- require_once(WCL_PLUGIN_DIR . '/includes/classes/class.zip-archive.php');
157
-
158
- $reposts_dir = WCL_PLUGIN_DIR . '/reports';
159
- $reports_temp = $reposts_dir . '/temp';
160
-
161
- if( !file_exists($reposts_dir) ) {
162
- mkdir($reposts_dir, 0777, true);
163
- }
164
-
165
- if( !file_exists($reports_temp) ) {
166
- mkdir($reports_temp, 0777, true);
167
- }
168
-
169
- $file = fopen($reports_temp . '/site-info.html', 'w+');
170
- fputs($file, $this->getDebugReport());
171
- fclose($file);
172
-
173
- $download_file_name = 'webcraftic-clearfy-report-' . date('Y.m.d-H.i.s') . '.zip';
174
- $download_file_path = WCL_PLUGIN_DIR . '/reports/' . $download_file_name;
175
-
176
- Wbcr_ExtendedZip::zipTree(WCL_PLUGIN_DIR . '/reports/temp', $download_file_path, ZipArchive::CREATE);
177
-
178
- array_map('unlink', glob(WCL_PLUGIN_DIR . "/reports/temp/*"));
179
-
180
- wp_redirect(WCL_PLUGIN_URL . '/reports/' . $download_file_name);
181
- exit;
182
- }
183
 
184
  public function showPageContent()
185
  {
@@ -206,7 +150,6 @@
206
  'args' => array('flush_redirect' => 1)
207
  );
208
  ?>
209
- <div class="wbcr-clearfy-layer"></div>
210
  <div class="wbcr-clearfy-confirm-popup">
211
  <h3><?php _e('Are you sure you want to enable the this options?', 'clearfy') ?></h3>
212
 
@@ -219,11 +162,16 @@
219
  <button class="wbcr-clearfy-popup-button-cancel"><?php _e('Cancel', 'clearfy') ?></button>
220
  </div>
221
  </div>
222
-
223
  <div class="wbcr-content-section">
224
- <div id="wbcr-clearfy-quick-mode-board">
225
  <p><?php _e('These are quick optimization options for your website. You can activate the groups of necessary settings in one click. With the fast optimization mode, we are enable the only safe settings that do not break your website. That is why we recommend you to look at each setting of the plugin individually. The settings with grey and red question mark will not be active, until you do it yourself.', 'clearfy') ?></p>
226
- <h4><?php _e('Select what you need to do', 'clearfy') ?></h4>
 
 
 
 
 
227
 
228
  <p style="color:#9e9e9e"><?php _e('After selecting any optimization case, the plugin will automatically enable the necessary settings in safe mode and one click.', 'clearfy') ?></p>
229
 
@@ -235,15 +183,9 @@
235
  $mode_args = '';
236
 
237
  if( is_array($mode) ) {
238
- $mode_title = isset($mode['title'])
239
- ? $mode['title']
240
- : '';
241
- $mode_icon = isset($mode['icon'])
242
- ? $mode['icon']
243
- : '';
244
- $mode_args = isset($mode['args']) && is_array($mode['args'])
245
- ? WCL_Helper::getEscapeJson($mode['args'])
246
- : '';
247
  }
248
  ?>
249
 
@@ -284,53 +226,6 @@
284
  </div>
285
  </div>
286
  </div>
287
- <div class="wbcr-right-sidebar-section">
288
- <div class="row">
289
- <div class="col-sm-12">
290
- <div class="wbcr-clearfy-switch-success-message">
291
- <?php _e('Settings successfully updated!', 'clearfy') ?>
292
- </div>
293
- <div class="wbcr-clearfy-switch-error-message">
294
- <?php _e('During the setup, an unknown error occurred, please try again or contact the plug-in support.', 'clearfy') ?>
295
- </div>
296
- </div>
297
-
298
- <?php do_action('wbcr_clearfy_quick_boards'); ?>
299
-
300
- <div class="col-sm-12">
301
- <div class="wbcr-clearfy-export-import-board wbcr-clearfy-board">
302
- <p>
303
- <label for="wbcr-clearfy-import-export">
304
- <strong><?php _e('Import/Export settings', 'clearfy') ?></strong>
305
- </label>
306
- <textarea id="wbcr-clearfy-import-export"><?= WCL_Helper::getExportOptions(); ?></textarea>
307
- <button class="button wbcr-clearfy-import-options-button"><?php _e('Import options', 'clearfy') ?></button>
308
- </p>
309
- </div>
310
- </div>
311
- <div class="col-sm-12">
312
- <div class="wbcr-clearfy-troubleshooting-board wbcr-clearfy-board">
313
- <h4><?php _e('Support', 'clearfy') ?></h4>
314
-
315
- <p><?php _e('If you faced with any issues, please follow the steps below to get quickly quality support:', 'clearfy') ?></p>
316
- <ol>
317
- <li>
318
- <p><?php _e('Generate a debug report which will contains inforamtion about your configuratin and installed plugins', 'clearfy') ?></p>
319
-
320
- <p>
321
- <a href="<?= admin_url('options-general.php?page=quick_start-' . $this->plugin->getPluginName() . '&action=gererate_report'); ?>" class="button"><?php _e('Generate Debug Report', 'clearfy') ?></a>
322
- </p>
323
- </li>
324
- <li>
325
- <p><?php _e('Send a message to <b>wordpress.webraftic@gmail.com</b> include the debug report into the message body.', 'clearfy'); ?></p>
326
- </li>
327
- </ol>
328
- <p style="margin-bottom: 0px;"><?php _e('We guarantee to respond you within 7 business day.', 'clearfy') ?></p>
329
- </div>
330
- </div>
331
- </div>
332
- </div>
333
-
334
  <?php
335
  }
336
  }
11
  exit;
12
  }
13
 
14
+ class WCL_QuickStartPage extends Wbcr_FactoryClearfy206_PageBase {
15
 
16
  /**
17
  * The id of the page in the admin menu.
18
  *
19
  * Mainly used to navigate between pages.
20
+ * @see FactoryPages410_AdminPage
21
  *
22
  * @since 1.0.0
23
  * @var string
45
  public $menu_target = 'options-general.php';
46
 
47
  /**
48
+ * @var string
49
  */
50
+ public $type = 'page';
51
 
52
  /**
53
+ * @var bool
54
  */
55
+ public $add_link_to_plugin_actions = true;
56
+
57
+
58
+ public $available_for_multisite = true;
59
+
60
 
61
  /**
62
  * @param WCL_Plugin $plugin
64
  public function __construct(WCL_Plugin $plugin)
65
  {
66
  $this->menu_title = __('Clearfy menu', 'clearfy');
67
+ $this->page_menu_short_description = __('One-click settings', 'clearfy');
68
 
69
  parent::__construct($plugin);
70
 
71
  $this->plugin = $plugin;
72
  }
73
 
74
+ public function getPageTitle()
75
  {
76
  return __('Quick start', 'clearfy');
77
  }
79
  /**
80
  * Requests assets (js and css) for the page.
81
  *
82
+ * @see FactoryPages410_AdminPage
83
  *
84
  * @since 1.0.0
85
  * @return void
89
  parent::assets($scripts, $styles);
90
 
91
  $this->scripts->add(WCL_PLUGIN_URL . '/admin/assets/js/general.js');
92
+
93
+ /**
94
+ * Подгружаем стили для вижета оптимизации изображений, если не установли плагин оптимизации изображений
95
+ */
96
+ if( !defined('WIO_PLUGIN_ACTIVE') ) {
97
+ $styles->add(WCL_PLUGIN_URL . '/admin/assets/css/base-statistic.css');
98
+ }
99
+
100
  $params = array(
101
  //'ajaxurl' => admin_url('admin-ajax.php'),
102
  'flush_cache_url' => $this->getActionUrl('flush-cache-and-rules', array('_wpnonce' => wp_create_nonce('wbcr_factory_' . $this->getResultId() . '_flush_action'))),
103
  'ajax_nonce' => wp_create_nonce('wbcr_clearfy_ajax_quick_start_nonce'),
104
+ 'i18n' => array(
105
+ 'success_update_settings' => __('Settings successfully updated!', 'clearfy'),
106
+ 'unknown_error' => __('During the setup, an unknown error occurred, please try again or contact the plugin support.', 'clearfy')
107
+ )
108
  );
109
 
110
  wp_localize_script('jquery', 'wbcr_clearfy_ajax', $params);
124
  </div>
125
  <?php
126
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
127
 
128
  public function showPageContent()
129
  {
150
  'args' => array('flush_redirect' => 1)
151
  );
152
  ?>
 
153
  <div class="wbcr-clearfy-confirm-popup">
154
  <h3><?php _e('Are you sure you want to enable the this options?', 'clearfy') ?></h3>
155
 
162
  <button class="wbcr-clearfy-popup-button-cancel"><?php _e('Cancel', 'clearfy') ?></button>
163
  </div>
164
  </div>
165
+
166
  <div class="wbcr-content-section">
167
+ <div class="wbcr-factory-page-group-header" style="margin:0"><?php _e('<strong>Quick start</strong>.', 'clearfy') ?>
168
  <p><?php _e('These are quick optimization options for your website. You can activate the groups of necessary settings in one click. With the fast optimization mode, we are enable the only safe settings that do not break your website. That is why we recommend you to look at each setting of the plugin individually. The settings with grey and red question mark will not be active, until you do it yourself.', 'clearfy') ?></p>
169
+ </div>
170
+
171
+ <?php do_action('wbcr_clearfy_quick_boards'); ?>
172
+
173
+ <div id="wbcr-clearfy-quick-mode-board">
174
+ <h4 style="margin-top:10px;"><?php _e('Select what you need to do', 'clearfy') ?></h4>
175
 
176
  <p style="color:#9e9e9e"><?php _e('After selecting any optimization case, the plugin will automatically enable the necessary settings in safe mode and one click.', 'clearfy') ?></p>
177
 
183
  $mode_args = '';
184
 
185
  if( is_array($mode) ) {
186
+ $mode_title = isset($mode['title']) ? $mode['title'] : '';
187
+ $mode_icon = isset($mode['icon']) ? $mode['icon'] : '';
188
+ $mode_args = isset($mode['args']) && is_array($mode['args']) ? WCL_Helper::getEscapeJson($mode['args']) : '';
 
 
 
 
 
 
189
  }
190
  ?>
191
 
226
  </div>
227
  </div>
228
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
229
  <?php
230
  }
231
  }
admin/pages/seo-double-pages.php CHANGED
@@ -10,13 +10,13 @@
10
  exit;
11
  }
12
 
13
- class WCL_DoublePagesPage extends WCL_Page {
14
 
15
  /**
16
  * The id of the page in the admin menu.
17
  *
18
  * Mainly used to navigate between pages.
19
- * @see FactoryPages407_AdminPage
20
  *
21
  * @since 1.0.0
22
  * @var string
@@ -29,6 +29,8 @@
29
 
30
  public $page_menu_position = 16;
31
 
 
 
32
  /**
33
  * @param WCL_Plugin $plugin
34
  */
@@ -40,21 +42,7 @@
40
 
41
  $this->plugin = $plugin;
42
  }
43
-
44
- /**
45
- * Shows the description above the options.
46
- *
47
- * @since 1.0.0
48
- * @return void
49
- */
50
- /*public function _showHeader()
51
- {
52
- ?>
53
- <div class="wbcr-clearfy-header">
54
- <?php _e('This page contains settings for setting up duplicate pages.', 'clearfy') ?>
55
- </div>
56
- <?php
57
- }*/
58
 
59
  /**
60
  * Permalinks options.
@@ -62,7 +50,7 @@
62
  * @since 1.0.0
63
  * @return mixed[]
64
  */
65
- public function getOptions()
66
  {
67
  $options = array();
68
 
@@ -166,4 +154,4 @@
166
 
167
  return apply_filters('wbcr_clr_double_form_options', $form_options, $this);
168
  }
169
- }
10
  exit;
11
  }
12
 
13
+ class WCL_DoublePagesPage extends Wbcr_FactoryClearfy206_PageBase {
14
 
15
  /**
16
  * The id of the page in the admin menu.
17
  *
18
  * Mainly used to navigate between pages.
19
+ * @see FactoryPages410_AdminPage
20
  *
21
  * @since 1.0.0
22
  * @var string
29
 
30
  public $page_menu_position = 16;
31
 
32
+ public $available_for_multisite = true;
33
+
34
  /**
35
  * @param WCL_Plugin $plugin
36
  */
42
 
43
  $this->plugin = $plugin;
44
  }
45
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
46
 
47
  /**
48
  * Permalinks options.
50
  * @since 1.0.0
51
  * @return mixed[]
52
  */
53
+ public function getPageOptions()
54
  {
55
  $options = array();
56
 
154
 
155
  return apply_filters('wbcr_clr_double_form_options', $form_options, $this);
156
  }
157
+ }
admin/pages/seo.php CHANGED
@@ -10,13 +10,13 @@
10
  exit;
11
  }
12
 
13
- class WCL_SeoPage extends WCL_Page {
14
 
15
  /**
16
  * The id of the page in the admin menu.
17
  *
18
  * Mainly used to navigate between pages.
19
- * @see FactoryPages407_AdminPage
20
  *
21
  * @since 1.0.0
22
  * @var string
@@ -26,6 +26,8 @@
26
  public $page_menu_dashicon = 'dashicons-star-filled';
27
 
28
  public $page_menu_position = 16;
 
 
29
 
30
  /**
31
  * @param WCL_Plugin $plugin
@@ -33,6 +35,7 @@
33
  public function __construct(WCL_Plugin $plugin)
34
  {
35
  $this->menu_title = __('SEO', 'clearfy');
 
36
 
37
  parent::__construct($plugin);
38
 
@@ -60,7 +63,7 @@
60
  * @since 1.0.0
61
  * @return mixed[]
62
  */
63
- public function getOptions()
64
  {
65
  $options = array();
66
 
10
  exit;
11
  }
12
 
13
+ class WCL_SeoPage extends Wbcr_FactoryClearfy206_PageBase {
14
 
15
  /**
16
  * The id of the page in the admin menu.
17
  *
18
  * Mainly used to navigate between pages.
19
+ * @see FactoryPages410_AdminPage
20
  *
21
  * @since 1.0.0
22
  * @var string
26
  public $page_menu_dashicon = 'dashicons-star-filled';
27
 
28
  public $page_menu_position = 16;
29
+
30
+ public $available_for_multisite = true;
31
 
32
  /**
33
  * @param WCL_Plugin $plugin
35
  public function __construct(WCL_Plugin $plugin)
36
  {
37
  $this->menu_title = __('SEO', 'clearfy');
38
+ $this->page_menu_short_description = __('Additional small fixes SEO', 'clearfy');
39
 
40
  parent::__construct($plugin);
41
 
63
  * @since 1.0.0
64
  * @return mixed[]
65
  */
66
+ public function getPageOptions()
67
  {
68
  $options = array();
69
 
admin/pages/widgets.php CHANGED
@@ -10,13 +10,13 @@
10
  exit;
11
  }
12
 
13
- class WCL_WidgetsPage extends WCL_Page {
14
 
15
  /**
16
  * The id of the page in the admin menu.
17
  *
18
  * Mainly used to navigate between pages.
19
- * @see FactoryPages407_AdminPage
20
  *
21
  * @since 1.0.0
22
  * @var string
@@ -24,6 +24,8 @@
24
  public $id = "widgets";
25
 
26
  public $page_menu_dashicon = 'dashicons-networking';
 
 
27
 
28
  /**
29
  * @param WCL_Plugin $plugin
@@ -31,6 +33,7 @@
31
  public function __construct(WCL_Plugin $plugin)
32
  {
33
  $this->menu_title = __('Widgets', 'clearfy');
 
34
 
35
  parent::__construct($plugin);
36
 
@@ -43,7 +46,7 @@
43
  * @since 1.0.0
44
  * @return mixed[]
45
  */
46
- public function getOptions()
47
  {
48
  $options = array();
49
 
@@ -188,4 +191,4 @@
188
 
189
  return apply_filters('wbcr_clr_widgets_form_options', $form_options, $this);
190
  }
191
- }
10
  exit;
11
  }
12
 
13
+ class WCL_WidgetsPage extends Wbcr_FactoryClearfy206_PageBase {
14
 
15
  /**
16
  * The id of the page in the admin menu.
17
  *
18
  * Mainly used to navigate between pages.
19
+ * @see FactoryPages410_AdminPage
20
  *
21
  * @since 1.0.0
22
  * @var string
24
  public $id = "widgets";
25
 
26
  public $page_menu_dashicon = 'dashicons-networking';
27
+
28
+ public $available_for_multisite = true;
29
 
30
  /**
31
  * @param WCL_Plugin $plugin
33
  public function __construct(WCL_Plugin $plugin)
34
  {
35
  $this->menu_title = __('Widgets', 'clearfy');
36
+ $this->page_menu_short_description = __('Disable unused widgets', 'clearfy');
37
 
38
  parent::__construct($plugin);
39
 
46
  * @since 1.0.0
47
  * @return mixed[]
48
  */
49
+ public function getPageOptions()
50
  {
51
  $options = array();
52
 
191
 
192
  return apply_filters('wbcr_clr_widgets_form_options', $form_options, $this);
193
  }
194
+ }
assets/css/admin-bar.css CHANGED
@@ -1,40 +1,39 @@
1
- /**
2
- * Admin bar menu
3
- * @author Webcraftic <wordpress.webraftic@gmail.com>
4
- * @copyright Webcraftic 01.07.2018
5
- */
6
- #wp-admin-bar-clearfy-menu {
7
- background: #443a54 !important;
8
- }
9
- #wp-admin-bar-clearfy-menu .dashicons {
10
- font: 400 20px/1 dashicons;
11
- }
12
- #wp-admin-bar-clearfy-menu #wp-admin-bar-clearfy-menu-default {
13
- background: #565656 !important;
14
- }
15
- #wp-admin-bar-clearfy-menu .wbcr-clearfy-admin-bar-menu-icon {
16
- display: inline-block !important;
17
- width: 20px;
18
- height: 25px;
19
- margin-right: 5px;
20
- background: url(../img/webcraftic-plugin-icon.png) 0 0 no-repeat;
21
- }
22
- #wp-admin-bar-clearfy-menu .wbcr-clearfy-admin-bar-menu-title {
23
- display: inline-block !important;
24
- width: 65px !important;
25
- overflow: hidden;
26
- }
27
- #wp-admin-bar-clearfy-menu .wbcr-clearfy-admin-bar-menu-title .dashicons {
28
- font-size: 20px !important;
29
- padding: 6px 0 !important;
30
- }
31
- #wp-admin-bar-clearfy-menu .ab-item .dashicons {
32
- font-size: 14px;
33
- padding: 6px 0;
34
- }
35
- #wp-admin-bar-clearfy-menu .ab-item .dashicons.dashicons-heart {
36
- color: #fb7976;
37
- }
38
- #wp-admin-bar-clearfy-menu .ab-item .dashicons.dashicons-star-filled {
39
- color: #ffbe00;
40
- }
1
+ /**
2
+ * Admin bar menu
3
+ * @author Webcraftic <wordpress.webraftic@gmail.com>
4
+ * @copyright Webcraftic 01.07.2018
5
+ */
6
+ #wp-admin-bar-clearfy-menu {
7
+ background: #443a54 !important;
8
+ }
9
+ #wp-admin-bar-clearfy-menu .dashicons {
10
+ font: 400 20px/1 dashicons;
11
+ }
12
+ #wp-admin-bar-clearfy-menu #wp-admin-bar-clearfy-menu-default {
13
+ background: #565656 !important;
14
+ }
15
+ #wp-admin-bar-clearfy-menu .wbcr-clearfy-admin-bar-menu-icon {
16
+ display: inline-block !important;
17
+ width: 20px;
18
+ height: 25px;
19
+ margin-right: 5px;
20
+ background: url(../img/webcraftic-plugin-icon.png) 0 0 no-repeat;
21
+ }
22
+ #wp-admin-bar-clearfy-menu .wbcr-clearfy-admin-bar-menu-title {
23
+ display: inline-block !important;
24
+ overflow: hidden;
25
+ }
26
+ #wp-admin-bar-clearfy-menu .wbcr-clearfy-admin-bar-menu-title .dashicons {
27
+ font-size: 20px !important;
28
+ padding: 6px 0 !important;
29
+ }
30
+ #wp-admin-bar-clearfy-menu .ab-item .dashicons {
31
+ font-size: 14px;
32
+ padding: 6px 0;
33
+ }
34
+ #wp-admin-bar-clearfy-menu .ab-item .dashicons.dashicons-heart {
35
+ color: #fb7976;
36
+ }
37
+ #wp-admin-bar-clearfy-menu .ab-item .dashicons.dashicons-star-filled {
38
+ color: #ffbe00;
39
+ }
 
assets/css/admin-bar.less CHANGED
@@ -23,7 +23,6 @@
23
  }
24
  .wbcr-clearfy-admin-bar-menu-title {
25
  display: inline-block !important;
26
- width: 65px !important;
27
  overflow: hidden;
28
 
29
  .dashicons {
23
  }
24
  .wbcr-clearfy-admin-bar-menu-title {
25
  display: inline-block !important;
 
26
  overflow: hidden;
27
 
28
  .dashicons {
clearfy.php CHANGED
@@ -4,10 +4,11 @@
4
  * Plugin URI: https://wordpress.org/plugins/clearfy/
5
  * Description: Disables unused Wordpress features, improves performance and increases SEO rankings, using Clearfy, which makes WordPress very easy.
6
  * Author: Webcraftic <wordpress.webraftic@gmail.com>
7
- * Version: 1.3.184
8
  * Text Domain: clearfy
9
  * Domain Path: /languages/
10
  * Author URI: http://clearfy.pro
 
11
  */
12
 
13
  // Exit if accessed directly
@@ -18,33 +19,65 @@
18
  if( defined('WBCR_CLEARFY_PLUGIN_ACTIVE') ) {
19
  return;
20
  }
 
 
 
21
  define('WBCR_CLEARFY_PLUGIN_ACTIVE', true);
22
- define('WBCR_CLEARFY_FRAMEWORK_VER', 'FACTORY_406_VERSION');
 
23
 
24
  define('WCL_PLUGIN_DIR', dirname(__FILE__));
25
  define('WCL_PLUGIN_BASE', plugin_basename(__FILE__));
26
  define('WCL_PLUGIN_URL', plugins_url(null, __FILE__));
27
 
28
-
 
 
 
 
 
 
29
 
30
- require_once(WCL_PLUGIN_DIR . '/includes/helpers.php');
 
 
 
31
 
32
- // creating a plugin via the factory
33
- require_once(WCL_PLUGIN_DIR . '/libs/factory/core/boot.php');
34
- require_once(WCL_PLUGIN_DIR . '/includes/class.plugin.php');
 
35
 
36
- new WCL_Plugin(__FILE__, array(
37
  'prefix' => 'wbcr_clearfy_',
38
  'plugin_name' => 'wbcr_clearfy',
39
  'plugin_title' => __('Clearfy', 'clearfy'),
40
- 'plugin_version' => '1.3.184',
41
- 'required_php_version' => '5.2',
42
  'required_wp_version' => '4.2',
43
  'freemius_plugin_id' => 2315,
44
  'freemius_plugin_slug' => 'clearfy',
45
  'freemius_public_key' => 'pk_70e226af07d37d2b9a69720e0952c',
46
  'plugin_build' => 'free',
47
  'updates' => WCL_PLUGIN_DIR . '/updates/',
48
- 'author_site_url' => 'https://clearfy.pro',
49
- 'author_ru_site_url' => 'https://ru.clearfy.pro'
50
- ));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
  * Plugin URI: https://wordpress.org/plugins/clearfy/
5
  * Description: Disables unused Wordpress features, improves performance and increases SEO rankings, using Clearfy, which makes WordPress very easy.
6
  * Author: Webcraftic <wordpress.webraftic@gmail.com>
7
+ * Version: 1.4.6
8
  * Text Domain: clearfy
9
  * Domain Path: /languages/
10
  * Author URI: http://clearfy.pro
11
+ * Framework Version: FACTORY_409_VERSION
12
  */
13
 
14
  // Exit if accessed directly
19
  if( defined('WBCR_CLEARFY_PLUGIN_ACTIVE') ) {
20
  return;
21
  }
22
+
23
+ define('WBCR_CLEARFY_PLUGIN_VERSION', '1.4.6');
24
+
25
  define('WBCR_CLEARFY_PLUGIN_ACTIVE', true);
26
+
27
+ define('WBCR_CLEARFY_FRAMEWORK_VER', 'FACTORY_409_VERSION');
28
 
29
  define('WCL_PLUGIN_DIR', dirname(__FILE__));
30
  define('WCL_PLUGIN_BASE', plugin_basename(__FILE__));
31
  define('WCL_PLUGIN_URL', plugins_url(null, __FILE__));
32
 
33
+ // Fix for ithemes sync. When the ithemes sync plugin accepts the request, set the WP_ADMIN constant,
34
+ // after which the plugin Clearfy begins to create errors, and how the logic of its work is broken.
35
+ // Solution to simply terminate the plugin if there is a request from ithemes sync
36
+ // --------------------------------------
37
+ if( defined('DOING_AJAX') && DOING_AJAX && isset($_REQUEST['action']) && $_REQUEST['action'] == 'ithemes_sync_request' ) {
38
+ return;
39
+ }
40
 
41
+ if( isset($_GET['ithemes-sync-request']) && !empty($_GET['ithemes-sync-request']) ) {
42
+ return;
43
+ }
44
+ // ----------------------------------------
45
 
46
+
47
+
48
+ require_once(WCL_PLUGIN_DIR . '/libs/factory/core/includes/check-compatibility.php');
49
+ require_once(WCL_PLUGIN_DIR . '/libs/factory/clearfy/includes/check-clearfy-compatibility.php');
50
 
51
+ $plugin_info = array(
52
  'prefix' => 'wbcr_clearfy_',
53
  'plugin_name' => 'wbcr_clearfy',
54
  'plugin_title' => __('Clearfy', 'clearfy'),
55
+ 'plugin_version' => WBCR_CLEARFY_PLUGIN_VERSION,
56
+ 'required_php_version' => '5.3',
57
  'required_wp_version' => '4.2',
58
  'freemius_plugin_id' => 2315,
59
  'freemius_plugin_slug' => 'clearfy',
60
  'freemius_public_key' => 'pk_70e226af07d37d2b9a69720e0952c',
61
  'plugin_build' => 'free',
62
  'updates' => WCL_PLUGIN_DIR . '/updates/',
63
+ //'author_site_url' => 'https://clearfy.pro',
64
+ //'author_ru_site_url' => 'https://ru.clearfy.pro'
65
+ );
66
+
67
+ /**
68
+ * Проверяет совместимость с Wordpress, php и другими плагинами.
69
+ */
70
+ $compatibility = new Wbcr_FactoryClearfy_Compatibility($plugin_info);
71
+
72
+ if( !$compatibility->check() ) {
73
+ return;
74
+ }
75
+
76
+ require_once(WCL_PLUGIN_DIR . '/includes/helpers.php');
77
+
78
+ // creating a plugin via the factory
79
+ require_once(WCL_PLUGIN_DIR . '/libs/factory/core/boot.php');
80
+ require_once(WCL_PLUGIN_DIR . '/includes/class.plugin.php');
81
+
82
+ new WCL_Plugin(__FILE__, $plugin_info);
83
+
components/assets-manager/admin/assets/css/general.css DELETED
@@ -1,455 +0,0 @@
1
- /**
2
- * General styles
3
- * @author Alex Kovalev <alex.kovalevv@gmail.com>
4
- * @copyright Alex Kovalev 23.08.2017
5
- */
6
- #WBCR {
7
- position: relative;
8
- /**
9
- Widget in the sidebar of the plugin
10
- */
11
- /*#wbcr-clearfy_robots_txt_text {
12
- min-height: 200px;
13
- }*/
14
- }
15
- #WBCR .alert.alert-success {
16
- margin: 0px;
17
- margin-top: 10px;
18
- margin-bottom: 10px;
19
- font-weight: bold;
20
- padding: 10px;
21
- }
22
- #WBCR .wbcr-factory-light-orange-color {
23
- color: #ffeb3b;
24
- }
25
- #WBCR .wbcr-clearfy-header {
26
- padding: 20px 20px 40px;
27
- }
28
- #WBCR .factory-bootstrap-406 label {
29
- font-weight: normal;
30
- }
31
- #WBCR .factory-bootstrap-406 .form-horizontal .control-label {
32
- max-width: 300px;
33
- }
34
- #WBCR .factory-control-buttons {
35
- text-align: right;
36
- padding-right: 20px;
37
- }
38
- #WBCR .factory-from-control-list label span {
39
- display: inline-block;
40
- vertical-align: bottom;
41
- }
42
- #WBCR .factory-from-control-list label span input[type="checkbox"],
43
- #WBCR .factory-from-control-list label span input[type="checkbox"]:focus {
44
- outline: none;
45
- }
46
- #WBCR .wbcr-clearfy-recomended-text {
47
- display: block;
48
- font-size: 11px;
49
- font-weight: lighter;
50
- color: #179347;
51
- }
52
- #WBCR .wbcr-clearfy-group-header {
53
- background: #f9f9f9;
54
- padding: 30px 0 10px 40px;
55
- margin-bottom: 20px;
56
- }
57
- #WBCR .wbcr-clearfy-group-header strong {
58
- font-size: 15px;
59
- }
60
- #WBCR .wbcr-clearfy-group-header p {
61
- color: #8c8888;
62
- font-size: 12px;
63
- }
64
- #WBCR .wbcr-clr-options,
65
- #WBCR .wbcr-clr-page {
66
- position: relative;
67
- background: #fff;
68
- padding-left: 230px;
69
- }
70
- #WBCR .wbcr-clr-options form.form-horizontal,
71
- #WBCR .wbcr-clr-page form.form-horizontal {
72
- min-height: 800px;
73
- padding: 130px 20px 50px 20px;
74
- }
75
- #WBCR .wbcr-clr-page {
76
- min-height: 800px;
77
- padding: 80px 20px 50px 230px;
78
- }
79
- #WBCR .wbcr-clearfy-dashboard-header {
80
- position: absolute;
81
- z-index: 13;
82
- top: 0;
83
- left: 0;
84
- right: 0;
85
- overflow: hidden;
86
- background-color: #32373c;
87
- color: #fff;
88
- border-radius: 5px 5px 0 0;
89
- }
90
- #WBCR .wbcr-clearfy-dashboard-header .wbcr-clearfy-header-logo {
91
- float: left;
92
- padding: 25px 0;
93
- font-size: 20px;
94
- line-height: 30px;
95
- font-weight: 400;
96
- text-align: center;
97
- width: 170px;
98
- background-color: #464b50;
99
- color: #ccc;
100
- padding-left: 25px;
101
- background: none;
102
- }
103
- #WBCR .wbcr-clearfy-dashboard-header .wbcr-clearfy-header-title {
104
- display: inline-block;
105
- vertical-align: middle;
106
- }
107
- #WBCR .wbcr-clearfy-dashboard-header .wbcr-clearfy-header-title h2 {
108
- font-size: 18px;
109
- line-height: 30px;
110
- font-weight: 300;
111
- margin-top: 26px;
112
- padding: 0 !important;
113
- overflow: hidden;
114
- white-space: nowrap;
115
- text-overflow: ellipsis;
116
- color: #fff;
117
- }
118
- #WBCR .wbcr-clearfy-dashboard-header .wbcr-clearfy-header-title .updated {
119
- display: none !important;
120
- }
121
- #WBCR .wbcr-clearfy-dashboard-header .wbcr-clearfy-control {
122
- position: relative;
123
- float: right;
124
- margin: 12px;
125
- }
126
- #WBCR .wbcr-clearfy-dashboard-header .wbcr-clearfy-control input[type="submit"] {
127
- display: inline-block;
128
- vertical-align: top;
129
- font-size: 13px;
130
- font-weight: 600;
131
- line-height: 20px;
132
- text-transform: uppercase;
133
- margin: 10px 0 0;
134
- padding: 8px 30px;
135
- cursor: pointer;
136
- position: relative;
137
- overflow: hidden;
138
- border: none;
139
- border-radius: 50px;
140
- box-shadow: 0 -1px 0 rgba(0, 0, 0, 0.08) inset;
141
- background-color: #f1f1f1;
142
- color: inherit;
143
- transition: background-color 0.3s, border-color 0.3s, color 0.3s, opacity 0.3s;
144
- text-align: center;
145
- outline: none;
146
- z-index: 3;
147
- }
148
- #WBCR .wbcr-clearfy-dashboard-header .wbcr-clearfy-control input[type="submit"].wbcr-clearfy-type-save {
149
- box-shadow: none;
150
- min-width: 200px;
151
- background-color: #8bc34a;
152
- color: #fff;
153
- }
154
- #WBCR .wbcr-clearfy-dashboard-header .wbcr-clearfy-control input[type="submit"].wbcr-clearfy-type-save:hover {
155
- background: #9dbb7b;
156
- color: #fff;
157
- }
158
- #WBCR .wbcr-clearfy-dashboard-header .wbcr-clearfy-control input[type="submit"].wbcr-clearfy-type-save:active {
159
- box-shadow: inset -1px 1px 1px rgba(0, 0, 0, 0.3);
160
- }
161
- #WBCR .wbcr-clearfy-left-navigation-bar {
162
- position: absolute;
163
- left: 0;
164
- top: 0;
165
- bottom: 0;
166
- width: 230px;
167
- background: #e6e6e6;
168
- }
169
- #WBCR .wbcr-clearfy-left-navigation-bar ul {
170
- margin-top: 80px;
171
- }
172
- #WBCR .wbcr-clearfy-left-navigation-bar ul .wbcr-clearfy-nav-tab {
173
- display: block;
174
- background: #efefef;
175
- margin: 1px 0;
176
- }
177
- #WBCR .wbcr-clearfy-left-navigation-bar ul .wbcr-clearfy-nav-tab a {
178
- display: block;
179
- width: 100%;
180
- padding: 20px 20px;
181
- font-size: 12px;
182
- color: #9a9a9a;
183
- text-decoration: none;
184
- text-transform: uppercase;
185
- }
186
- #WBCR .wbcr-clearfy-left-navigation-bar ul .wbcr-clearfy-nav-tab a:hover {
187
- background: #f7f6f6;
188
- }
189
- #WBCR .wbcr-clearfy-left-navigation-bar ul .wbcr-clearfy-nav-tab a,
190
- #WBCR .wbcr-clearfy-left-navigation-bar ul .wbcr-clearfy-nav-tab a:active,
191
- #WBCR .wbcr-clearfy-left-navigation-bar ul .wbcr-clearfy-nav-tab a:hover,
192
- #WBCR .wbcr-clearfy-left-navigation-bar ul .wbcr-clearfy-nav-tab a:active,
193
- #WBCR .wbcr-clearfy-left-navigation-bar ul .wbcr-clearfy-nav-tab a:focus {
194
- outline: 0 !important;
195
- box-shadow: none !important;
196
- }
197
- #WBCR .wbcr-clearfy-left-navigation-bar ul .wbcr-clearfy-nav-tab.wbcr-clearfy-active-tab {
198
- background: #fff;
199
- }
200
- #WBCR .wbcr-clearfy-left-navigation-bar ul .wbcr-clearfy-nav-tab.wbcr-clearfy-active-tab a {
201
- color: #222;
202
- }
203
- #WBCR .wbcr-clearfy-sidebar-widget {
204
- display: inline-block;
205
- min-height: 230px;
206
- width: 100%;
207
- margin-top: 20px;
208
- background-color: #fff;
209
- padding: 20px 15px;
210
- vertical-align: top;
211
- }
212
- #WBCR .wbcr-clearfy-sidebar-widget .wbcr-clearfy-hint-icon-simple {
213
- display: inline-block;
214
- width: 16px;
215
- height: 16px;
216
- line-height: 15px;
217
- padding: 0;
218
- font-size: 11px;
219
- text-align: center;
220
- color: #fff;
221
- background: #E91E63;
222
- border-radius: 3px;
223
- }
224
- #WBCR .wbcr-clearfy-sidebar-widget .wbcr-clearfy-simple-grey {
225
- background: #E91E63;
226
- }
227
- #WBCR .wbcr-clearfy-sidebar-widget .wbcr-clearfy-simple-red {
228
- background: #9e9e9e;
229
- }
230
- #WBCR .wbcr-clearfy-sidebar-widget .wbcr-clearfy-simple-green {
231
- background: #8bc34a;
232
- }
233
- #WBCR .wbcr-clearfy-sidebar-widget .wbcr-clearfy-icon-5stars {
234
- display: block;
235
- width: 80px;
236
- height: 17px;
237
- background: url('../img/5-stars22.png') no-repeat;
238
- vertical-align: middle;
239
- margin-bottom: 5px;
240
- }
241
- #WBCR .wbcr-clearfy-board {
242
- background: #f9f8f8;
243
- box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.1);
244
- padding: 20px;
245
- margin-top: 20px;
246
- }
247
- #WBCR #wbcr-clearfy-quick-mode-board {
248
- padding: 30px;
249
- margin-top: 20px;
250
- }
251
- #WBCR #wbcr-clearfy-quick-mode-board h4 {
252
- margin-top: 30px;
253
- }
254
- #WBCR .wbcr-clearfy-switch-success-message,
255
- #WBCR .wbcr-clearfy-switch-error-message {
256
- display: none;
257
- padding: 15px 20px;
258
- font-size: 13px;
259
- font-weight: bold;
260
- margin: 15px 0 0;
261
- border-radius: 4px;
262
- }
263
- #WBCR .wbcr-clearfy-switch-success-message {
264
- background: #e5f9ce;
265
- border-bottom: 3px solid #d3eab9;
266
- color: #56614a;
267
- }
268
- #WBCR .wbcr-clearfy-switch-error-message {
269
- background: #fdc6c2;
270
- border-bottom: 3px solid #e2a19c;
271
- color: #bd6963;
272
- }
273
- #WBCR .wbcr-clearfy-export-import-board {
274
- text-align: right;
275
- }
276
- #WBCR .wbcr-clearfy-export-import-board label {
277
- display: block;
278
- width: 100%;
279
- text-align: left;
280
- padding: 7px 0;
281
- }
282
- #WBCR .wbcr-clearfy-export-import-board #wbcr-clearfy-import-export {
283
- width: 100%;
284
- box-sizing: border-box;
285
- height: 150px;
286
- line-height: inherit;
287
- margin: 0;
288
- padding: 7px 14px;
289
- box-shadow: none;
290
- border-radius: 3px;
291
- border: 1px solid #eee;
292
- border-top-color: #dedede;
293
- background-color: #f1f1f1;
294
- color: #444;
295
- transition: border-color 0.3s;
296
- -webkit-appearance: none;
297
- }
298
- #WBCR .wbcr-clearfy-export-import-board .wbcr-clearfy-import-options-button {
299
- display: inline-block;
300
- margin-top: 10px;
301
- }
302
- #WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch {
303
- position: relative;
304
- padding: 20px;
305
- font-size: 11px;
306
- text-transform: uppercase;
307
- background: #f1f1f1;
308
- margin-top: 10px;
309
- border: 2px solid #e0dfdf;
310
- text-align: center;
311
- -webkit-transition: all 0.2s ease-out;
312
- -moz-transition: all 0.2s ease-out;
313
- -o-transition: all 0.2s ease-out;
314
- transition: all 0.2s ease-out;
315
- }
316
- #WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch:hover {
317
- cursor: pointer;
318
- background: #e9e9e9;
319
- border: 2px solid #d8d7d7;
320
- }
321
- #WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch.wbcr-clearfy-active {
322
- background: #e5f9ce;
323
- border: 2px solid #c9deb2;
324
- color: #677d4d;
325
- }
326
- #WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch.wbcr-clearfy-active .wbcr-clearfy-switch-confirmation {
327
- display: block !important;
328
- }
329
- #WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch.wbcr-clearfy-active:hover .wbcr-clearfy-switch-confirmation {
330
- opacity: 1;
331
- }
332
- #WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch.wbcr-clearfy-mode-reset:hover {
333
- background: #f7ccc9;
334
- color: #c55b5b;
335
- border: 2px solid #d8adad;
336
- }
337
- #WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch.wbcr-clearfy-loading {
338
- border: 2px solid #efefef;
339
- background: #f5f5f5;
340
- color: #d6d6d6;
341
- }
342
- #WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch.wbcr-clearfy-loading .wbcr-clearfy-switch-confirmation button {
343
- display: none !important;
344
- }
345
- #WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch .wbcr-clearfy-switch-confirmation {
346
- position: absolute;
347
- display: none;
348
- opacity: 0;
349
- top: 0;
350
- left: 0;
351
- right: 0;
352
- bottom: 0;
353
- background: rgba(255, 255, 255, 0.85);
354
- -webkit-transition: all 0.3s ease-out;
355
- -moz-transition: all 0.3s ease-out;
356
- -o-transition: all 0.3s ease-out;
357
- transition: all 0.3s ease-out;
358
- }
359
- #WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch .wbcr-clearfy-switch-confirmation button {
360
- margin-top: 15px;
361
- border: 0;
362
- box-shadow: none;
363
- padding: 5px 10px;
364
- font-weight: bold;
365
- font-size: 13px;
366
- border-radius: 3px;
367
- outline: none;
368
- }
369
- #WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch .wbcr-clearfy-switch-confirmation button.wbcr-clearfy-confirm-button-accept {
370
- background-color: #c9deb2;
371
- color: #586549;
372
- }
373
- #WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch .wbcr-clearfy-switch-confirmation button.wbcr-clearfy-confirm-button-cancel {
374
- background-color: #fdd599;
375
- color: #a57b3c;
376
- margin-left: 10px;
377
- }
378
- #WBCR .wbcr-clearfy-layer {
379
- display: none;
380
- position: absolute;
381
- top: 0;
382
- left: 0;
383
- right: 0;
384
- bottom: 0;
385
- background: rgba(255, 235, 59, 0.18);
386
- z-index: 9;
387
- }
388
- #WBCR .wbcr-clearfy-confirm-popup {
389
- display: none;
390
- position: absolute;
391
- top: 50%;
392
- left: 50%;
393
- width: 500px;
394
- height: 400px;
395
- margin: -200px 0 0 -250px;
396
- padding: 20px;
397
- background: rgba(255, 255, 255, 0.82);
398
- box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
399
- border: 4px solid rgba(216, 210, 171, 0.44);
400
- z-index: 99;
401
- }
402
- #WBCR .wbcr-clearfy-confirm-popup h3 {
403
- font-size: 17px;
404
- text-align: center;
405
- font-weight: bold;
406
- margin: 5px 0 0;
407
- }
408
- #WBCR .wbcr-clearfy-confirm-popup .wbcr-clearfy-reset-warning-message {
409
- display: none;
410
- text-align: center;
411
- }
412
- #WBCR .wbcr-clearfy-confirm-popup .wbcr-clearfy-list-options {
413
- display: none;
414
- height: 230px;
415
- overflow-y: auto;
416
- overflow-x: hidden;
417
- padding-left: 40px;
418
- list-style: decimal;
419
- margin: 20px 0;
420
- }
421
- #WBCR .wbcr-clearfy-confirm-popup.wbcr-clearfy-default-warning-options .wbcr-clearfy-list-options {
422
- display: block;
423
- }
424
- #WBCR .wbcr-clearfy-confirm-popup.wbcr-clearfy-reset-warning-options {
425
- height: 200px;
426
- margin: -100px 0 0 -250px;
427
- }
428
- #WBCR .wbcr-clearfy-confirm-popup.wbcr-clearfy-reset-warning-options .wbcr-clearfy-reset-warning-message {
429
- display: block;
430
- margin: 10px 0;
431
- }
432
- #WBCR .wbcr-clearfy-confirm-popup .wbcr-clearfy-popup-buttons {
433
- text-align: center;
434
- padding: 10px;
435
- }
436
- #WBCR .wbcr-clearfy-confirm-popup .wbcr-clearfy-popup-buttons button {
437
- display: inline-block;
438
- padding: 7px 25px;
439
- box-shadow: none;
440
- border: 0;
441
- font-weight: bold;
442
- }
443
- #WBCR .wbcr-clearfy-confirm-popup .wbcr-clearfy-popup-buttons button,
444
- #WBCR .wbcr-clearfy-confirm-popup .wbcr-clearfy-popup-buttons button:focus {
445
- outline: 0 !important;
446
- box-shadow: none !important;
447
- }
448
- #WBCR .wbcr-clearfy-confirm-popup .wbcr-clearfy-popup-buttons button.wbcr-clearfy-popup-button-ok {
449
- background: #FFEB3B;
450
- color: #564f0d;
451
- }
452
- #WBCR .wbcr-clearfy-confirm-popup .wbcr-clearfy-popup-buttons button.wbcr-clearfy-cancel-mode {
453
- background: #d6d6d6;
454
- color: #5f5d5d;
455
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
components/assets-manager/admin/assets/js/general.js DELETED
@@ -1,203 +0,0 @@
1
- /**
2
- * General
3
- * @author Webcraftic <wordpress.webraftic@gmail.com>
4
- * @copyright (c) 10.09.2017, Webcraftic
5
- * @version 1.0
6
- */
7
-
8
-
9
- (function($) {
10
- 'use strict';
11
-
12
- var general = {
13
- init: function() {
14
- this.qickStartAssistent();
15
- this.importOptions();
16
- },
17
- qickStartAssistent: function() {
18
- var self = this;
19
-
20
- $('.wbcr-clearfy-switch').click(function() {
21
-
22
- var modeName = $(this).data('mode'),
23
- modeOptions = $(this).data('mode-options');
24
-
25
- self.showConfirmationPopup(modeName, modeOptions);
26
- return false;
27
- });
28
-
29
- $('.wbcr-clearfy-popup-button-cancel').click(function() {
30
- self.hideConfirmationPopup();
31
- });
32
-
33
- $('.wbcr-clearfy-cancel-mode').click(function() {
34
- var $this = $(this), modeName = $(this).closest('.wbcr-clearfy-switch').data('mode'),
35
- switcher = $(this).closest('.wbcr-clearfy-switch');
36
-
37
- switcher.addClass('wbcr-clearfy-loading');
38
-
39
- self.sendRequest({
40
- action: 'wbcr_clearfy_configurate',
41
- mode: modeName,
42
- cancel_mode: true
43
- }, function(data) {
44
- switcher.removeClass('wbcr-clearfy-loading');
45
-
46
- if( data && data.export_options ) {
47
- $('#wbcr-clearfy-import-export').html(data.export_options);
48
- }
49
- },
50
- function() {
51
- if( modeName != 'reset' ) {
52
- switcher.removeClass('wbcr-clearfy-active');
53
- }
54
- });
55
- return false;
56
- });
57
-
58
- $('.wbcr-clearfy-popup-button-ok').click(function() {
59
- var $this = $(this), modeName = $(this).closest('.wbcr-clearfy-confirm-popup').data('mode'),
60
- switcher = $('div[data-mode="' + modeName + '"]', '#wbcr-clearfy-quick-mode-board');
61
-
62
- self.hideConfirmationPopup();
63
- switcher.addClass('wbcr-clearfy-loading');
64
-
65
- self.sendRequest({
66
- action: 'wbcr_clearfy_configurate',
67
- mode: modeName
68
- }, function(data) {
69
- switcher.removeClass('wbcr-clearfy-loading');
70
-
71
- if( data && data.export_options ) {
72
- $('#wbcr-clearfy-import-export').html(data.export_options);
73
- }
74
- },
75
- function() {
76
- if( modeName != 'reset' ) {
77
- switcher.addClass('wbcr-clearfy-active');
78
- return;
79
- }
80
-
81
- $('.wbcr-clearfy-switch').removeClass('wbcr-clearfy-active');
82
- });
83
-
84
- return false;
85
- });
86
- },
87
-
88
- showConfirmationPopup: function(modeName, options) {
89
- var self = this;
90
-
91
- $('.wbcr-clearfy-layer').fadeIn();
92
-
93
- var popupElem = $('.wbcr-clearfy-confirm-popup');
94
- popupElem.data('mode', modeName);
95
- popupElem.fadeIn();
96
-
97
- if( modeName != 'reset' ) {
98
- var printOptTitles = '';
99
-
100
- if( options ) {
101
- for( var opt in options ) {
102
- if( !options.hasOwnProperty(opt) ) {
103
- continue;
104
- }
105
- printOptTitles += '<li>' + options[opt] + '</li>';
106
-
107
- }
108
- $('.wbcr-clearfy-list-options').html(printOptTitles);
109
- popupElem.addClass('wbcr-clearfy-default-warning-options');
110
- }
111
- return;
112
- }
113
-
114
- popupElem.addClass('wbcr-clearfy-reset-warning-options');
115
- },
116
-
117
- hideConfirmationPopup: function() {
118
- $('.wbcr-clearfy-layer').fadeOut(100);
119
- var popupElem = $('.wbcr-clearfy-confirm-popup');
120
-
121
- popupElem.fadeOut(100, function() {
122
- popupElem.removeClass('wbcr-clearfy-default-warning-options');
123
- popupElem.removeClass('wbcr-clearfy-reset-warning-options');
124
- });
125
-
126
- },
127
-
128
- importOptions: function() {
129
- var self = this;
130
-
131
- $('.wbcr-clearfy-import-options-button').click(function() {
132
- var settings = $('#wbcr-clearfy-import-export').val(),
133
- $this = $(this);
134
-
135
- if( !settings ) {
136
- return;
137
- }
138
-
139
- $(this).prop('disabled', true);
140
-
141
- self.sendRequest({
142
- action: 'wbcr_clearfy_import_settings',
143
- settings: settings
144
- }, function(data) {
145
- //console.log(data);
146
- $this.prop('disabled', false);
147
- });
148
-
149
- return false;
150
- });
151
- },
152
- sendRequest: function(data, beforeValidateCallback, successCallback) {
153
-
154
- var errorContanier = $('.wbcr-clearfy-switch-error-message'),
155
- defaultErrorMessage = errorContanier.text();
156
-
157
- if( wbcr_clearfy_ajax === undefined ) {
158
- console.log('Undefinded wbcr_clearfy_ajax object.');
159
- return;
160
- }
161
-
162
- var ajaxUrl = wbcr_clearfy_ajax ? wbcr_clearfy_ajax.ajaxurl : ajaxurl;
163
-
164
- if( typeof data === 'object' ) {
165
- data.security = wbcr_clearfy_ajax.ajax_nonce;
166
- }
167
-
168
- $.ajax(ajaxurl, {
169
- type: 'post',
170
- dataType: 'json',
171
- data: data,
172
- success: function(data, textStatus, jqXHR) {
173
-
174
- beforeValidateCallback && beforeValidateCallback(data);
175
-
176
- if( !data || data.error ) {
177
- if( data ) {
178
- console.log(data.error);
179
- if( !errorContanier.is(':visible') ) {
180
- errorContanier.html(defaultErrorMessage + '<br>' + data.error);
181
- }
182
- }
183
-
184
- if( !errorContanier.is(':visible') ) {
185
- errorContanier.fadeIn(600).delay(10000).fadeOut(600);
186
- }
187
- return;
188
- }
189
-
190
- successCallback && successCallback();
191
-
192
- $('.wbcr-clearfy-switch-success-message').fadeIn(600).delay(3000).fadeOut(600);
193
-
194
- }
195
- });
196
- }
197
- };
198
-
199
- $(document).ready(function() {
200
- general.init();
201
- });
202
-
203
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
components/assets-manager/admin/boot.php CHANGED
@@ -11,118 +11,137 @@
11
  exit;
12
  }
13
 
14
- require(WGZ_PLUGIN_DIR . '/admin/pages/assets-manager.php');
15
-
16
- if( !defined('LOADING_GONZALES_AS_ADDON') ) {
17
- require(WGZ_PLUGIN_DIR . '/admin/pages/more-features.php');
18
- }
19
-
20
- function wbcr_gnz_set_plugin_meta($links, $file)
21
- {
22
- if( $file == WGZ_PLUGIN_BASE ) {
23
-
24
- $url = 'https://clearfy.pro';
25
-
26
- if( get_locale() == 'ru_RU' ) {
27
- $url = 'https://ru.clearfy.pro';
28
- }
29
-
30
- $url .= '?utm_source=wordpress.org&utm_campaign=' . WGZ_Plugin::app()->getPluginName();
31
-
32
- $links[] = '<a href="' . $url . '" style="color: #FF5722;font-weight: bold;" target="_blank">' . __('Get ultimate plugin free', 'gonzales') . '</a>';
33
- }
34
 
35
- return $links;
36
- }
 
 
 
 
 
37
 
38
- if( !defined('LOADING_GONZALES_AS_ADDON') ) {
39
- add_filter('plugin_row_meta', 'wbcr_gnz_set_plugin_meta', 10, 2);
40
- }
41
-
42
- function wbcr_gnz_rating_widget_url($page_url, $plugin_name)
43
- {
44
- if( !defined('LOADING_GONZALES_AS_ADDON') && ($plugin_name == WGZ_Plugin::app()->getPluginName()) ) {
45
- return 'https://goo.gl/zyNV6z';
46
  }
47
 
48
- return $page_url;
49
- }
50
-
51
- add_filter('wbcr_factory_pages_407_imppage_rating_widget_url', 'wbcr_gnz_rating_widget_url', 10, 2);
52
-
53
- function wbcr_gnz_group_options($options)
54
- {
55
- $options[] = array(
56
- 'name' => 'disable_assets_manager',
57
- 'title' => __('Disable assets manager', 'gonzales'),
58
- 'tags' => array(),
59
- 'values' => array()
60
- );
61
-
62
- $options[] = array(
63
- 'name' => 'disable_assets_manager_panel',
64
- 'title' => __('Disable assets manager panel', 'gonzales'),
65
- 'tags' => array()
66
- );
67
-
68
- $options[] = array(
69
- 'name' => 'disable_assets_manager_on_front',
70
- 'title' => __('Disable assets manager on front', 'gonzales'),
71
- 'tags' => array()
72
- );
73
-
74
- $options[] = array(
75
- 'name' => 'disable_assets_manager_on_backend',
76
- 'title' => __('Disable assets manager on back-end', 'gonzales'),
77
- 'tags' => array()
78
- );
79
-
80
- $options[] = array(
81
- 'name' => 'manager_options',
82
- 'title' => __('Assets manager options', 'gonzales'),
83
- 'tags' => array()
84
- );
85
-
86
- return $options;
87
- }
88
-
89
- add_filter("wbcr_clearfy_group_options", 'wbcr_gnz_group_options');
90
-
91
- function wbcr_gnz_migrate_options()
92
- {
93
- global $wpdb;
94
 
95
- if( WGZ_Plugin::app()->getOption('migrate_options_1_0_3') ) {
96
- return;
97
- }
98
- $assets = get_option('wbcr_gonzales_manager_options');
99
-
100
- if( !empty($assets) ) {
101
- WGZ_Plugin::app()->updateOption('assets_manager_options', $assets);
 
 
 
 
 
 
 
102
  }
103
 
104
- delete_option('wbcr_gonzales_manager_options');
105
-
106
- $request = $wpdb->get_results("SELECT option_id, option_name, option_value FROM {$wpdb->prefix}options WHERE option_name LIKE 'wbcr_gonzales_%'");
107
-
108
- if( !empty($request) ) {
109
- foreach($request as $option) {
110
- $option_new_name = str_replace('wbcr_gonzales_', WGZ_Plugin::app()->getPrefix(), $option->option_name);
111
- if( !get_option($option_new_name, false) ) {
112
- $wpdb->query("UPDATE {$wpdb->prefix}options SET option_name='$option_new_name' WHERE option_id='{$option->option_id}'");
113
- } else {
114
- delete_option($option->option_name);
 
 
 
 
 
115
  }
116
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
117
  }
118
 
119
- WGZ_Plugin::app()->updateOption('migrate_options_1_0_3', 1);
120
- WGZ_Plugin::app()->flushOptionsCache();
121
- }
122
-
123
- wbcr_gnz_migrate_options();
 
 
 
124
 
 
 
125
 
 
126
 
 
 
 
 
 
127
 
 
 
128
 
 
 
11
  exit;
12
  }
13
 
14
+ /**
15
+ * Заменяем премиум возможности в бизнес виджете
16
+ * @param array $features
17
+ * @param string $page_id
18
+ * @param string $plugin
19
+ */
20
+ add_filter('wbcr/clearfy/page_bussines_suggetion_features', function ($features, $plugin_name, $page_id) {
 
 
 
 
 
 
 
 
 
 
 
 
 
21
 
22
+ if( !empty($plugin_name) && ($plugin_name == WGZ_Plugin::app()->getPluginName()) ) {
23
+ $upgrade_feature = array();
24
+ $upgrade_feature[] = __('Disable plugins (groups of scripts)', 'gonzales');
25
+ $upgrade_feature[] = __('Conditions by the link template', 'gonzales');
26
+ $upgrade_feature[] = __('Conditions by the regular expression', 'gonzales');
27
+ $upgrade_feature[] = __('Safe mode', 'gonzales');
28
+ $upgrade_feature[] = __('Statistics and optimization results', 'gonzales');
29
 
30
+ return $upgrade_feature;
 
 
 
 
 
 
 
31
  }
32
 
33
+ return $features;
34
+ }, 20, 3);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
 
36
+ /**
37
+ * Удаляем лишние виджеты в левом сайдбаре
38
+ *
39
+ * @param array $widgets
40
+ * @param string $position
41
+ * @param Wbcr_Factory409_Plugin $plugin
42
+ */
43
+ add_filter('wbcr/factory/pages/impressive/widgets', function ($widgets, $position, $plugin) {
44
+ if( $plugin->getPluginName() == WGZ_Plugin::app()->getPluginName() ) {
45
+ if( $position == 'right' ) {
46
+ unset($widgets['donate_widget']);
47
+ unset($widgets['rating_widget']);
48
+ unset($widgets['info_widget']);
49
+ }
50
  }
51
 
52
+ return $widgets;
53
+ }, 20, 3);
54
+
55
+ if( defined('LOADING_ASSETS_MANAGER_AS_ADDON') ) {
56
+
57
+ /**
58
+ * This action is executed when the component of the Clearfy plugin is activate and if this component is name ga_cache
59
+ * @param string $component_name
60
+ */
61
+ add_action('wbcr/clearfy/activated_component', function ($component_name) {
62
+ if( $component_name == 'assets_manager' ) {
63
+ if( class_exists('WCL_Plugin') ) {
64
+ $license = WCL_Plugin::app()->getLicense();
65
+ if( ($license->isLicenseValid() || (defined('WCL_PLUGIN_DEBUG') && WCL_PLUGIN_DEBUG)) && !WCL_Plugin::app()->isActivateComponent('assets-manager-premium') ) {
66
+ WCL_Plugin::app()->activateComponent('assets-manager-premium');
67
+ }
68
  }
69
  }
70
+ });
71
+
72
+ /**
73
+ * This action is executed when the component of the Clearfy plugin is activate and if this component is name ga_cache
74
+ * @param string $component_name
75
+ */
76
+ add_action('wbcr_clearfy_deactivated_component', function ($component_name) {
77
+ if( $component_name == 'assets_manager' ) {
78
+ if( class_exists('WCL_Plugin') ) {
79
+ $license = WCL_Plugin::app()->getLicense();
80
+ if( ($license->isLicenseValid() || (defined('WCL_PLUGIN_DEBUG') && WCL_PLUGIN_DEBUG)) && WCL_Plugin::app()->isActivateComponent('assets-manager-premium') ) {
81
+ WCL_Plugin::app()->deactivateComponent('assets-manager-premium');
82
+ }
83
+ }
84
+ }
85
+ });
86
+
87
+ function wbcr_gnz_group_options($options)
88
+ {
89
+ $options[] = array(
90
+ 'name' => 'disable_assets_manager',
91
+ 'title' => __('Disable assets manager', 'gonzales'),
92
+ 'tags' => array(),
93
+ 'values' => array()
94
+ );
95
+
96
+ $options[] = array(
97
+ 'name' => 'disable_assets_manager_panel',
98
+ 'title' => __('Disable assets manager panel', 'gonzales'),
99
+ 'tags' => array()
100
+ );
101
+
102
+ $options[] = array(
103
+ 'name' => 'disable_assets_manager_on_front',
104
+ 'title' => __('Disable assets manager on front', 'gonzales'),
105
+ 'tags' => array()
106
+ );
107
+
108
+ $options[] = array(
109
+ 'name' => 'disable_assets_manager_on_backend',
110
+ 'title' => __('Disable assets manager on back-end', 'gonzales'),
111
+ 'tags' => array()
112
+ );
113
+
114
+ $options[] = array(
115
+ 'name' => 'manager_options',
116
+ 'title' => __('Assets manager options', 'gonzales'),
117
+ 'tags' => array()
118
+ );
119
+
120
+ return $options;
121
  }
122
 
123
+ add_filter("wbcr_clearfy_group_options", 'wbcr_gnz_group_options');
124
+ } else {
125
+ function wbcr_gnz_set_plugin_meta($links, $file)
126
+ {
127
+ if( $file == WGZ_PLUGIN_BASE ) {
128
+ $url = WbcrFactoryClearfy206_Helpers::getWebcrafticSitePageUrl(WGZ_Plugin::app()->getPluginName(), 'assets-manager', 'plugin_row');
129
+ $links[] = '<a href="' . $url . '" style="color: #FF5722;font-weight: bold;" target="_blank">' . __('Get premium', 'gonzales') . '</a>';
130
+ }
131
 
132
+ return $links;
133
+ }
134
 
135
+ add_filter('plugin_row_meta', 'wbcr_gnz_set_plugin_meta', 10, 2);
136
 
137
+ function wbcr_gnz_rating_widget_url($page_url, $plugin_name)
138
+ {
139
+ if( !defined('LOADING_ASSETS_MANAGER_AS_ADDON') && ($plugin_name == WGZ_Plugin::app()->getPluginName()) ) {
140
+ return 'https://goo.gl/zyNV6z';
141
+ }
142
 
143
+ return $page_url;
144
+ }
145
 
146
+ add_filter('wbcr_factory_pages_410_imppage_rating_widget_url', 'wbcr_gnz_rating_widget_url', 10, 2);
147
+ }
components/assets-manager/admin/pages/assets-manager.php CHANGED
@@ -11,13 +11,13 @@
11
  exit;
12
  }
13
 
14
- class WbcrGnz_AssetsManagerPage extends Wbcr_FactoryPages407_ImpressiveThemplate {
15
 
16
  /**
17
  * The id of the page in the admin menu.
18
  *
19
  * Mainly used to navigate between pages.
20
- * @see FactoryPages407_AdminPage
21
  *
22
  * @since 1.0.0
23
  * @var string
@@ -35,13 +35,19 @@
35
  public $page_menu_position = 95;
36
 
37
  /**
38
- * @param Wbcr_Factory406_Plugin $plugin
 
39
  */
40
- public function __construct(Wbcr_Factory406_Plugin $plugin)
 
 
 
 
 
41
  {
42
  $this->menu_title = __('Assets manager', 'gonzales');
43
 
44
- if( !defined('LOADING_GONZALES_AS_ADDON') ) {
45
  $this->internal = false;
46
  $this->menu_target = 'options-general.php';
47
  $this->add_link_to_plugin_actions = true;
@@ -53,31 +59,20 @@
53
  }
54
 
55
  /**
 
56
  * @return string|void
57
  */
58
  public function getMenuTitle()
59
  {
60
- return defined('LOADING_GONZALES_AS_ADDON')
61
- ? __('Assets manager', 'gonzales')
62
- : __('General', 'gonzales');
63
  }
64
 
65
  /**
66
- * Requests assets (js and css) for the page.
67
- *
68
- * @see Wbcr_FactoryPages407_AdminPage
69
- *
70
- * @since 1.0.0
71
- * @return void
72
  */
73
- public function assets($scripts, $styles)
74
  {
75
- parent::assets($scripts, $styles);
76
-
77
- // Add Clearfy styles for HMWP pages
78
- if( defined('WBCR_CLEARFY_PLUGIN_ACTIVE') ) {
79
- $this->styles->add(WCL_PLUGIN_URL . '/admin/assets/css/general.css');
80
- }
81
  }
82
 
83
  /**
@@ -86,7 +81,7 @@
86
  * @since 1.0.0
87
  * @return mixed[]
88
  */
89
- public function getOptions()
90
  {
91
  $options = array();
92
  $options[] = array(
@@ -148,6 +143,11 @@
148
  )
149
  );
150
 
 
 
 
 
 
151
  $formOptions = array();
152
 
153
  $formOptions[] = array(
11
  exit;
12
  }
13
 
14
+ class WbcrGnz_AssetsManagerPage extends Wbcr_FactoryClearfy206_PageBase {
15
 
16
  /**
17
  * The id of the page in the admin menu.
18
  *
19
  * Mainly used to navigate between pages.
20
+ * @see FactoryPages410_AdminPage
21
  *
22
  * @since 1.0.0
23
  * @var string
35
  public $page_menu_position = 95;
36
 
37
  /**
38
+ * Доступена для мультисайтов
39
+ * @var bool
40
  */
41
+ public $available_for_multisite = true;
42
+
43
+ /**
44
+ * @param Wbcr_Factory409_Plugin $plugin
45
+ */
46
+ public function __construct(Wbcr_Factory409_Plugin $plugin)
47
  {
48
  $this->menu_title = __('Assets manager', 'gonzales');
49
 
50
+ if( !defined('LOADING_ASSETS_MANAGER_AS_ADDON') ) {
51
  $this->internal = false;
52
  $this->menu_target = 'options-general.php';
53
  $this->add_link_to_plugin_actions = true;
59
  }
60
 
61
  /**
62
+ * Метод позволяет менять заголовок меню, в зависимости от сборки плагина.
63
  * @return string|void
64
  */
65
  public function getMenuTitle()
66
  {
67
+ return defined('LOADING_ASSETS_MANAGER_AS_ADDON') ? __('General', 'hide-login-page') : __('Assets manager', 'gonzales');
 
 
68
  }
69
 
70
  /**
71
+ * @return string|void *
 
 
 
 
 
72
  */
73
+ public function getPageTitle()
74
  {
75
+ return defined('LOADING_ASSETS_MANAGER_AS_ADDON') ? __('Assets manager', 'gonzales') : __('General', 'hide-login-page');
 
 
 
 
 
76
  }
77
 
78
  /**
81
  * @since 1.0.0
82
  * @return mixed[]
83
  */
84
+ public function getPageOptions()
85
  {
86
  $options = array();
87
  $options[] = array(
143
  )
144
  );
145
 
146
+ $options[] = array(
147
+ 'type' => 'separator',
148
+ 'cssClass' => 'factory-separator-dashed'
149
+ );
150
+
151
  $formOptions = array();
152
 
153
  $formOptions[] = array(
components/assets-manager/admin/pages/more-features.php CHANGED
@@ -11,6 +11,10 @@
11
  exit;
12
  }
13
 
14
- class WbcrGnz_MoreFeaturesPage extends Wbcr_FactoryClearfy203_MoreFeaturesPage {
15
 
 
 
 
 
16
  }
11
  exit;
12
  }
13
 
14
+ class WbcrGnz_MoreFeaturesPage extends Wbcr_FactoryClearfy206_MoreFeaturesPage {
15
 
16
+ /**
17
+ * @var bool
18
+ */
19
+ public $available_for_multisite = true;
20
  }
components/assets-manager/assets/css/assets-manager.css CHANGED
@@ -1,229 +1,1396 @@
1
  /**
2
  * Assets manager styles
3
- * @author Webcraftic <wordpress.webraftic@gmail.com>
4
- * @copyright Webcraftic 12.11.2017
5
  */
6
  html,
7
  body {
8
  overflow: hidden !important;
9
  }
10
- #wbcr-assets-manager-wrapper {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
  display: none;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
  position: fixed;
13
  z-index: 99999999;
14
  top: 32px;
15
  bottom: 0;
16
  left: 0;
17
  right: 0;
18
- background: rgba(0, 0, 0, 0.5);
19
  overflow-y: auto;
20
- font-family: "Open Sans", Arial, sans-serif;
21
  }
22
- #wbcr-assets-manager {
23
- background: #ffffff;
24
- padding: 20px;
25
- font-size: 14px;
26
- line-height: 1.5em;
27
- color: #4a545a;
 
 
 
 
 
 
28
  }
29
- #wbcr-assets-manager a {
30
- text-decoration: none;
31
- border: none;
32
  }
33
- #wbcr-assets-manager h3 {
34
- padding: 10px;
35
- margin: 20px 0 0;
36
- font-size: 20px;
37
- background: #ececec;
38
- color: #696969;
39
- border-radius: 5px 5px 0 0;
 
 
 
 
 
 
 
 
 
 
 
 
40
  }
41
- #wbcr-assets-manager .wbcr-header {
42
  position: relative;
 
 
 
 
 
43
  }
44
- #wbcr-assets-manager .wbcr-header h2 {
45
- font-size: 24px;
46
- margin: 0 0 10px 0;
47
- color: #4a545a;
 
 
 
 
48
  font-weight: bold;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49
  }
50
- #wbcr-assets-manager .wbcr-header p {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
51
  font-size: 14px;
52
- color: #a9a9a9;
53
- margin: 0px auto 15px auto;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
54
  }
55
- #wbcr-assets-manager .wbcr-header .wbcr-description {
56
- padding-right: 300px;
 
57
  }
58
- #wbcr-assets-manager table {
59
- table-layout: fixed;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
60
  width: 100%;
61
- margin: 0px;
62
- padding: 0px;
63
  border: none;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
64
  text-align: left;
65
- font-size: 14px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
66
  border-collapse: collapse;
67
- color: #737373;
68
  }
69
- #wbcr-assets-manager table thead {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
70
  background: none;
71
- color: #9a9797;
72
- font-weight: bold;
73
- border: none;
74
  }
75
- #wbcr-assets-manager table thead tr {
76
- border: none;
 
 
 
77
  }
78
- #wbcr-assets-manager table thead th {
79
- padding: 10px;
80
- vertical-align: middle;
81
- border-bottom: 2px solid #ececec;
82
  }
83
- #wbcr-assets-manager table tr {
84
- border: none;
85
- border-bottom: 1px solid #ececec;
86
- background: #ffffff;
87
  }
88
- #wbcr-assets-manager table tbody tr:last-child {
89
- border-bottom: 0px;
90
  }
91
- #wbcr-assets-manager table td {
92
- padding: 5px;
93
- border: none;
94
- vertical-align: middle;
95
- font-size: 14px;
 
96
  }
97
- #wbcr-assets-manager table td.wbcr-assets-manager-size {
98
- font-size: 12px;
 
 
99
  }
100
- #wbcr-assets-manager table td.wbcr-script {
101
- white-space: nowrap;
102
  }
103
- #wbcr-assets-manager table .wbcr-assets-manager-disable *:after,
104
- #wbcr-assets-manager table .wbcr-assets-manager-disable *:before {
105
- display: none;
106
  }
107
- #wbcr-assets-manager table select {
108
- height: auto;
109
- width: auto;
 
 
 
110
  padding: 5px 10px;
111
- margin: 0;
112
- font-size: 14px;
113
- appearance: menulist;
114
- -webkit-appearance: menulist;
115
- color: #827b7b;
116
- font-family: "Open Sans", Arial, sans-serif;
117
- }
118
- #wbcr-assets-manager table select,
119
- #wbcr-assets-manager table select:focus,
120
- #wbcr-assets-manager table select:hover,
121
- #wbcr-assets-manager table select:active {
122
- border: 1px solid #d6d2d2;
123
- box-shadow: none;
124
- background-color: #ffffff;
125
  }
126
- #wbcr-assets-manager table .wbcr-assets-manager-enable-placeholder {
127
- color: #bbbbbb;
128
- font-style: italic;
129
- font-size: 14px;
 
 
130
  }
131
- #wbcr-assets-manager table input[type='checkbox'] {
 
132
  display: inline-block;
133
- margin-right: 3px;
 
134
  vertical-align: middle;
 
135
  }
136
- #wbcr-assets-manager table label {
137
- display: inline-block;
138
- margin: 0 10px 0 0;
139
- width: auto;
140
- font-weight: normal;
 
 
 
 
 
 
141
  }
142
- #wbcr-assets-manager .wbcr-state {
143
- margin: 0 auto;
144
- width: 40px;
145
- height: 40px;
146
- text-align: center;
147
- line-height: 3.4;
148
- font-weight: bold;
149
- font-size: 12px;
150
- border-radius: 100%;
151
  }
152
- #wbcr-assets-manager .wbcr-state.wbcr-state-0 {
153
- background: #dff5c4;
154
- color: #798c64;
155
  }
156
- #wbcr-assets-manager .wbcr-state.wbcr-state-1 {
157
- background: #ffb1af;
158
- color: #a25f5f;
159
  }
160
- #wbcr-assets-manager .wbcr-use-by-comment {
161
- color: #a25f5f;
162
  }
163
- #wbcr-assets-manager .wbcr-script span {
164
- display: block;
165
- max-width: 100%;
166
- overflow: hidden;
167
- text-overflow: ellipsis;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
168
  font-size: 16px;
169
  font-weight: bold;
170
  }
171
- #wbcr-assets-manager .wbcr-script a {
172
  display: inline-block;
173
- max-width: 100%;
174
- overflow: hidden;
175
- text-overflow: ellipsis;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
176
  font-size: 12px;
177
- color: #bbbbba;
178
  }
179
- #wbcr-assets-manager .wbcr-float-panel {
180
- position: fixed;
181
- top: 30px;
182
- right: 35px;
183
- background: #23282d;
184
- padding: 15px 15px 5px;
185
- border-radius: 0 0 5px 5px;
186
  }
187
- #wbcr-assets-manager .wbcr-float-panel input[type='submit'] {
188
- display: inline-block;
189
- width: 140px;
190
- height: 35px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
191
  padding: 0;
192
- margin: 0 10px 0 0;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
193
  border-radius: 3px;
194
- background: #FFC107;
195
- color: #907010;
 
 
 
 
 
 
 
 
 
196
  cursor: pointer;
197
  border: none;
198
- text-align: center;
199
- font-size: 14px;
200
- font-weight: 600;
201
- vertical-align: top;
 
 
 
 
 
 
 
202
  outline: none;
203
- line-height: 2.6;
204
  }
205
- #wbcr-assets-manager .wbcr-float-panel input[type='submit']:after {
206
- clear: both;
 
 
207
  }
208
- #wbcr-assets-manager .wbcr-float-panel input[type='submit']:hover {
209
- background: #ffc721;
 
210
  }
211
- #wbcr-assets-manager .wbcr-float-panel .wbcr-close {
 
 
 
 
 
 
 
 
 
212
  display: inline-block;
213
- height: 35px;
214
- width: 37px;
215
- border-radius: 3px;
216
- font-size: 0;
217
- background: #9E9E9E url('../img/cancel.png') center center no-repeat;
218
- vertical-align: top;
219
- outline: none;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
220
  }
221
- #wbcr-assets-manager .wbcr-float-panel .wbcr-hide-panel {
 
 
 
 
 
222
  display: block;
223
- margin-top: 5px;
224
- font-size: 11px;
225
- color: #929292;
226
- text-decoration: underline;
 
 
 
 
 
 
 
227
  text-align: center;
228
- outline: none;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
229
  }
1
  /**
2
  * Assets manager styles
3
+ * @author Webcraftic <wordpress.webraftic@gmail.com>
4
+ * @copyright Webcraftic 05.09.2018
5
  */
6
  html,
7
  body {
8
  overflow: hidden !important;
9
  }
10
+ html {
11
+ line-height: 1.15 !important;
12
+ -webkit-text-size-adjust: 100% !important;
13
+ box-sizing: border-box !important;
14
+ }
15
+ body {
16
+ margin: 0 !important;
17
+ padding: 0 !important;
18
+ background: #FFF !important;
19
+ }
20
+ body,
21
+ body p {
22
+ font-family: Arial, "Helvetica Neue", sans-serif !important;
23
+ }
24
+ #WBCR {
25
+ /**
26
+ * Reset styles
27
+ */
28
+ /**
29
+ * Reset styles
30
+ * @author Webcraftic <wordpress.webraftic@gmail.com>
31
+ * @copyright Webcraftic 15.10.2018
32
+ */
33
+ /**
34
+ * Placeholders
35
+ */
36
+ }
37
+ #WBCR *,
38
+ #WBCR *:before,
39
+ #WBCR *:after {
40
+ -webkit-box-sizing: border-box;
41
+ -moz-box-sizing: border-box;
42
+ box-sizing: border-box;
43
+ }
44
+ #WBCR,
45
+ #WBCR h2,
46
+ #WBCR h3,
47
+ #WBCR h4,
48
+ #WBCR h5,
49
+ #WBCR h6,
50
+ #WBCR p,
51
+ #WBCR strong,
52
+ #WBCR b,
53
+ #WBCR span,
54
+ #WBCR em,
55
+ #WBCR i,
56
+ #WBCR a,
57
+ #WBCR div,
58
+ #WBCR main,
59
+ #WBCR section,
60
+ #WBCR li,
61
+ #WBCR button,
62
+ #WBCR input[type="submit"],
63
+ #WBCR input[type="reset"],
64
+ #WBCR .wbcr-gnz-switch-premium {
65
+ font-family: Arial, "Helvetica Neue", sans-serif !important;
66
+ font-size: 14px;
67
+ font-style: normal;
68
+ font-weight: normal;
69
+ text-transform: none;
70
+ text-shadow: none;
71
+ }
72
+ #WBCR h1 {
73
+ font-size: 2em;
74
+ margin: 0.67em 0;
75
+ }
76
+ #WBCR hr {
77
+ box-sizing: content-box;
78
+ height: 0;
79
+ overflow: visible;
80
+ }
81
+ #WBCR pre {
82
+ font-family: monospace, monospace;
83
+ font-size: 1em;
84
+ }
85
+ #WBCR a {
86
+ background-color: transparent;
87
+ }
88
+ #WBCR abbr[title] {
89
+ border-bottom: none;
90
+ text-decoration: underline dotted;
91
+ }
92
+ #WBCR b,
93
+ #WBCR strong {
94
+ font-weight: bolder;
95
+ }
96
+ #WBCR code,
97
+ #WBCR kbd,
98
+ #WBCR samp {
99
+ font-family: monospace, monospace;
100
+ font-size: 1em;
101
+ }
102
+ #WBCR small {
103
+ font-size: 80%;
104
+ }
105
+ #WBCR sub,
106
+ #WBCR sup {
107
+ font-size: 75%;
108
+ line-height: 0;
109
+ position: relative;
110
+ vertical-align: baseline;
111
+ }
112
+ #WBCR sub {
113
+ bottom: -0.25em;
114
+ }
115
+ #WBCR sup {
116
+ top: -0.5em;
117
+ }
118
+ #WBCR img {
119
+ border-style: none;
120
+ }
121
+ #WBCR button,
122
+ #WBCR input,
123
+ #WBCR optgroup,
124
+ #WBCR select,
125
+ #WBCR textarea {
126
+ font-family: inherit;
127
+ font-size: 100%;
128
+ line-height: 1.15;
129
+ margin: 0;
130
+ height: auto;
131
+ width: auto;
132
+ }
133
+ #WBCR button,
134
+ #WBCR input,
135
+ #WBCR optgroup,
136
+ #WBCR select,
137
+ #WBCR textarea,
138
+ #WBCR button:hover,
139
+ #WBCR input:hover,
140
+ #WBCR optgroup:hover,
141
+ #WBCR select:hover,
142
+ #WBCR textarea:hover,
143
+ #WBCR button:focus,
144
+ #WBCR input:focus,
145
+ #WBCR optgroup:focus,
146
+ #WBCR select:focus,
147
+ #WBCR textarea:focus {
148
+ -moz-box-shadow: none;
149
+ -ms-box-shadow: none;
150
+ -webkit-box-shadow: none;
151
+ -o-box-shadow: none;
152
+ }
153
+ #WBCR button,
154
+ #WBCR input {
155
+ overflow: visible;
156
+ }
157
+ #WBCR button,
158
+ #WBCR select {
159
+ text-transform: none;
160
+ }
161
+ #WBCR button,
162
+ #WBCR [type="button"],
163
+ #WBCR [type="reset"],
164
+ #WBCR [type="submit"] {
165
+ -webkit-appearance: button;
166
+ }
167
+ #WBCR button::-moz-focus-inner,
168
+ #WBCR [type="button"]::-moz-focus-inner,
169
+ #WBCR [type="reset"]::-moz-focus-inner,
170
+ #WBCR [type="submit"]::-moz-focus-inner {
171
+ border-style: none;
172
+ padding: 0;
173
+ }
174
+ #WBCR button:-moz-focusring,
175
+ #WBCR [type="button"]:-moz-focusring,
176
+ #WBCR [type="reset"]:-moz-focusring,
177
+ #WBCR [type="submit"]:-moz-focusring {
178
+ outline: 1px dotted ButtonText;
179
+ }
180
+ #WBCR fieldset {
181
+ padding: 0.35em 0.75em 0.625em;
182
+ }
183
+ #WBCR legend {
184
+ box-sizing: border-box;
185
+ color: inherit;
186
+ display: table;
187
+ max-width: 100%;
188
+ padding: 0;
189
+ white-space: normal;
190
+ }
191
+ #WBCR textarea {
192
+ overflow: auto;
193
+ }
194
+ #WBCR [type="checkbox"],
195
+ #WBCR [type="radio"] {
196
+ box-sizing: border-box;
197
+ padding: 0;
198
+ }
199
+ #WBCR [type="number"]::-webkit-inner-spin-button,
200
+ #WBCR [type="number"]::-webkit-outer-spin-button {
201
+ height: auto;
202
+ }
203
+ #WBCR [type="search"] {
204
+ -webkit-appearance: textfield;
205
+ outline-offset: -2px;
206
+ }
207
+ #WBCR [type="search"]::-webkit-search-decoration {
208
+ -webkit-appearance: none;
209
+ }
210
+ #WBCR ::-webkit-file-upload-button {
211
+ -webkit-appearance: button;
212
+ font: inherit;
213
+ }
214
+ #WBCR fieldset {
215
+ padding: 0.35em 0.75em 0.625em;
216
+ }
217
+ #WBCR legend {
218
+ box-sizing: border-box;
219
+ color: inherit;
220
+ display: table;
221
+ max-width: 100%;
222
+ padding: 0;
223
+ white-space: normal;
224
+ }
225
+ #WBCR progress {
226
+ vertical-align: baseline;
227
+ }
228
+ #WBCR textarea {
229
+ overflow: auto;
230
+ }
231
+ #WBCR [type=checkbox],
232
+ #WBCR [type=radio] {
233
+ box-sizing: border-box;
234
+ padding: 0;
235
+ }
236
+ #WBCR [type=number]::-webkit-inner-spin-button,
237
+ #WBCR [type=number]::-webkit-outer-spin-button {
238
+ height: auto;
239
+ }
240
+ #WBCR [type=search] {
241
+ -webkit-appearance: textfield;
242
+ outline-offset: -2px;
243
+ }
244
+ #WBCR [type=search]::-webkit-search-decoration {
245
+ -webkit-appearance: none;
246
+ }
247
+ #WBCR ::-webkit-file-upload-button {
248
+ -webkit-appearance: button;
249
+ font: inherit;
250
+ }
251
+ #WBCR details {
252
+ display: block;
253
+ }
254
+ #WBCR summary {
255
+ display: list-item;
256
+ }
257
+ #WBCR template {
258
+ display: none;
259
+ }
260
+ #WBCR [hidden] {
261
  display: none;
262
+ }
263
+ #WBCR table,
264
+ #WBCR caption,
265
+ #WBCR tbody,
266
+ #WBCR tfoot,
267
+ #WBCR thead,
268
+ #WBCR tr,
269
+ #WBCR th,
270
+ #WBCR td {
271
+ margin: 0;
272
+ padding: 0;
273
+ border: 0;
274
+ font-size: 100%;
275
+ font: inherit;
276
+ vertical-align: middle;
277
+ line-height: 1.2;
278
+ }
279
+ #WBCR table {
280
+ table-layout: auto;
281
+ border-collapse: collapse;
282
+ border-spacing: 0;
283
+ }
284
+ #WBCR span {
285
+ display: inline;
286
+ margin: 0;
287
+ }
288
+ #WBCR input[type="text"]::-moz-placeholder {
289
+ color: #cccccc;
290
+ }
291
+ #WBCR input[type="text"]::-webkit-input-placeholder,
292
+ #WBCR textarea::-webkit-input-placeholder {
293
+ color: #cccccc;
294
+ }
295
+ #WBCR input[type="text"]:-ms-input-placeholder,
296
+ #WBCR textarea:-ms-input-placeholder {
297
+ color: #cccccc;
298
+ }
299
+ #WBCR input[type="text"]::-ms-input-placeholder,
300
+ #WBCR textarea::-ms-input-placeholder {
301
+ color: #cccccc;
302
+ }
303
+ #WBCR input[type="text"]::placeholder,
304
+ #WBCR textarea::placeholder {
305
+ color: #cccccc;
306
+ }
307
+ #WBCR a {
308
+ text-decoration: none;
309
+ color: #007acc;
310
+ border: none;
311
+ background: none;
312
+ }
313
+ #WBCR a:hover {
314
+ text-decoration: underline;
315
+ border: inherit;
316
+ background: inherit;
317
+ }
318
+ #WBCR button,
319
+ #WBCR [type=submit] {
320
+ color: black;
321
+ font-weight: 400;
322
+ padding: 0;
323
+ line-height: 1.5;
324
+ }
325
+ #WBCR label {
326
+ color: white;
327
+ margin: 0;
328
+ font-weight: 400;
329
+ }
330
+ #WBCR select,
331
+ #WBCR [type=text] {
332
+ height: 32px;
333
+ }
334
+ #WBCR .visually-hidden {
335
+ position: absolute;
336
+ overflow: hidden;
337
+ clip: rect(0 0 0 0);
338
+ -webkit-clip-path: inset(100%);
339
+ clip-path: inset(100%);
340
+ width: 1px;
341
+ height: 1px;
342
+ margin: -1px;
343
+ padding: 0;
344
+ white-space: nowrap;
345
+ border: 0;
346
+ }
347
+ #WBCR.wbcr-gnz-wrapper {
348
+ min-width: 1365px;
349
  position: fixed;
350
  z-index: 99999999;
351
  top: 32px;
352
  bottom: 0;
353
  left: 0;
354
  right: 0;
355
+ background: #FFF;
356
  overflow-y: auto;
 
357
  }
358
+ #WBCR .wbcr-gnz-help-hint {
359
+ display: inline-block;
360
+ width: 16px;
361
+ height: 16px;
362
+ line-height: 0 !important;
363
+ padding: 0;
364
+ font-size: 11px;
365
+ font-style: normal;
366
+ text-align: left;
367
+ color: #fff;
368
+ background: #b4b5b5;
369
+ border-radius: 2px;
370
  }
371
+ #WBCR .wbcr-gnz-help-hint img {
372
+ display: inline-block;
373
+ margin: 3px 0 0 4px;
374
  }
375
+ #WBCR .wbcr-gnz-panel {
376
+ position: fixed;
377
+ z-index: 50;
378
+ top: 0;
379
+ right: 0;
380
+ left: 0;
381
+ width: 100%;
382
+ display: -webkit-flex;
383
+ display: -ms-flexbox;
384
+ display: flex;
385
+ -ms-flex-pack: justify;
386
+ -webkit-justify-content: space-between;
387
+ justify-content: space-between;
388
+ height: 62px;
389
+ padding: 0 20px;
390
+ margin: 0;
391
+ color: #FFF;
392
+ background: #23282d;
393
+ font-size: 16px;
394
  }
395
+ #WBCR .wbcr-gnz-panel .wbcr-gnz-panel__premium {
396
  position: relative;
397
+ display: block;
398
+ width: 20px;
399
+ height: 40px;
400
+ background: #ffcb1e;
401
+ margin-left: -30px;
402
  }
403
+ #WBCR .wbcr-gnz-panel .wbcr-gnz-panel__premium:hover {
404
+ cursor: pointer;
405
+ }
406
+ #WBCR .wbcr-gnz-panel .wbcr-gnz-panel__premium .wbcr-gnz-tooltip {
407
+ position: relative;
408
+ right: -30px;
409
+ top: 8px;
410
+ font-size: 12px;
411
  font-weight: bold;
412
+ font-style: normal;
413
+ color: #ffffff;
414
+ background: #f22714;
415
+ width: 45px;
416
+ text-align: center;
417
+ border-radius: 3px;
418
+ padding: 5px 0 5px 0;
419
+ line-height: 1.2;
420
+ }
421
+ #WBCR .wbcr-gnz-panel .wbcr-gnz-panel__premium:after {
422
+ display: block;
423
+ content: '';
424
+ position: absolute;
425
+ top: 1px;
426
+ left: 0;
427
+ width: 19px;
428
+ height: 38px;
429
+ background: #23282d;
430
+ }
431
+ #WBCR .wbcr-gnz-panel__left,
432
+ #WBCR .wbcr-gnz-panel__right {
433
+ display: -webkit-flex;
434
+ display: -ms-flexbox;
435
+ display: flex;
436
+ -webkit-align-items: center;
437
+ align-items: center;
438
+ -ms-flex-align: center;
439
+ }
440
+ #WBCR .wbcr-gnz-panel__left {
441
+ min-width: 800px;
442
+ margin: 0 44px 0 0;
443
+ }
444
+ #WBCR .wbcr-gnz-panel__logo {
445
+ width: 38px;
446
+ height: 32px;
447
+ margin: 0 44px 0 0;
448
+ background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACYAAAAgCAMAAABJuvqBAAAC+lBMVEUAAAD7bBgLxt8LyOP/oRqTVqOWV6T/gALpHxCKT5oMy+bwCgX/dhn/oxeXV6XxJxP/igzxIQztFAP/iQAIwNfoIBP/jgkPz+wOzun/igf/fgD/iggOze3hHxDuDAF0P4KWV6UP0OzyKxX/lw3iHxD/hAaXV6XyGgsPzu3/ggaJTpn/iw6JTZiUVqOUVqTlFQsve3T2Qy1lazvqIhOBHyvvlxW7FRCTaR3xGQX/kBIP0eyGTJbjIBKASJAAXn3uFQMPzewJxNo1JFOLUZuHTZb/xCEAkqmXV6X/ggB5QogNyOD/WSaWV6VjNnBHFTsLUVnrEgMQ0en/ggADtsz/mRTvJRT/igfpDwLgHw//ixD/igYQ0un/xiXlIBP/rhnnIRSXV6X/lgT/ig36OBz/ZzbkJBj/fAAMyeD/iQoFtMkPzeyNUZziHxHgHw/mCwIBobT/yy3kBQNIIVp2dz4PzewAc4L/ckKXV6V6JDr/oRb0DAD9egD/jAcOze2XV6XeHw7jAwPnIRSXV6X/vSoPz+j/fgB+DjKXV6X/ziAPzuzlIBP/iw7/yx7yJxT/YCLpIRQP0uwLxt2TV6T/YSD/nBTuJBT/jhCQVKCNUp2DSpL/xRf8PRf4LhTsIhT/kREQ0egOzOQMyuEJwtiKT5qGTZaASI9xPn//XSH/tRr/Uhf/oBb3KRPjHxAHv9UGvNEDsMUCqLwAjp98RItdMWg3Hkr/VyD/xh//wR7/Xx7/XBv/rxn6NBf/rBb/lxP/lBP+RRP9NQ3/igv/iQv+Kwv3Iwf/pQUOzuYGt813QoZqOnYAYHRULmJBJVQwFz3+Tx//1R3/uxz8Rhz/Shv/pxj/phb/vhL/sgr/mAIPzucEuc4BoLMBnK4AmKoAg5MAf5IAd4cAbYEAbHxkNnAAT2kIVGQASF5KJ1kARlcVU1U+ZEYsGEVfdTtIHDltKzJ6fS2OOCyniinWsCL/YyD3YCDkSyCrNCDvyR+8KR/50Bj/uRH/tQ7/qwnxGwX/kQIQ63s7AAAAh3RSTlMAAyIQCsuvaz8wKx4Y/vn58PDp5+Xk5NbAu6+rqJuVgH15d3dpXE1HRTAoIyAYFhQNCv7+/fz7+vn39vX19PLy8O/u6urk397c29ra19TU087JyMfGxMO6squjoJ+fnpyZmZiUk5GRkI+Oi4uJiINybGZhYV1dWldPTk1LQzo6OCopJSMYEw7x8GTCAAACaUlEQVQ4y2LABzgi6hkIgsZYmzUqhBQZKol2da3JJaBKPXRuP1CZLF5FPMn8vVON+/ErYyzznj2ndyrIuBw8rkrZsfzinN5ekDI8XlBaObnv3O7VYOM4MGSZmZiYmIE0t+D+HX1bIbaK6qMq0VCMlvASEQnOByoTOrCzb/klkHH98YwwFVwaJYoy4lYTbiycuPbmho2lDAxyR4C2go0TRNgp0wkCE+YvmLho3fqNp/wNGNQtZu/oA3lidSrCvloHsKpjQMPW33n43LyaQT/gMMQT/BWMCHVZMMOO37r/9N3RNAaGvCP7QbYeNnHyldeCO18CpGrhonUb7j5+/eOaBw9Dgz3YE9+3nF621CVbD6qOSXwCyEqgw15+O3/1ryoDQzjQE5++vDlzctPMxdNZOWGeBSgQZOXtBy8+nu+YdVSKgaHwz/7Jn99u2Xxi5pIZ0yf5NEHVtaQ7rttw78mHWT0dPdeEecBB9/4V0Moli6dPam9n1YWHXqabndGeFds6Oq5eZwcG3eGvZ5+BrJwxqR0IEhAeNig2vbJrew/IVkaGKrOzZx6dWAq0EqyMTw2hLnHKqj0XgLb+EtZkaPPbsnnZUrBhYMAGV1VjuXfKZZCts0C2Fm1etgnsfj53NoXyOh14Uoyctm8KL8jWnt9BLAwM8p621s6sbApqeihpRFtg2ry9YFs7foq1AgV0ODm1dBnRUxtgqt3d8/ZNuQK2VRl3ks3o7p42b8oqkK0xLLiVSR/qBtl6eYVrAR5VDJKHurtBnohrxpszw0DK5oVUEsjlkgcPdospszAQAFEHBZK0GQgCdmlNfNIAQzEmYu+mR3cAAAAASUVORK5CYII=");
449
+ }
450
+ #WBCR .wbcr-gnz-panel__data {
451
+ display: -webkit-flex;
452
+ display: -ms-flexbox;
453
+ display: flex;
454
+ -webkit-align-items: center;
455
+ align-items: center;
456
+ -ms-flex-align: center;
457
+ margin: 0 -22px;
458
+ padding: 0;
459
+ list-style: none;
460
+ }
461
+ #WBCR .wbcr-gnz-panel__data:not(:last-child) {
462
+ margin-right: 22px;
463
  }
464
+ #WBCR .wbcr-gnz-panel__data-item {
465
+ margin: 0 22px;
466
+ color: #909090;
467
+ text-align: center;
468
+ vertical-align: top;
469
+ padding: 8px 0 8px;
470
+ }
471
+ #WBCR .wbcr-gnz-panel__data-hidden {
472
+ display: none;
473
+ margin: 0 44px 0 0;
474
+ }
475
+ #WBCR .wbcr-gnz-panel__data-hidden img {
476
+ vertical-align: middle;
477
+ }
478
+ #WBCR .wbcr-gnz-panel__item_value {
479
+ font-size: 15px;
480
+ color: #d0d0d0;
481
+ background: #4c4c4c;
482
+ border-radius: 2px;
483
+ padding: 2px 5px;
484
+ }
485
+ #WBCR .wbcr-gnz-panel__color-1 .wbcr-gnz-panel__item_value {
486
+ background: #ffa499;
487
+ color: #632121;
488
+ }
489
+ #WBCR .wbcr-gnz-panel__color-2 .wbcr-gnz-panel__item_value {
490
+ background: #cfe699;
491
+ color: #456103;
492
+ }
493
+ #WBCR .wbcr-gnz-button__pro,
494
+ #WBCR .wbcr-gnz-panel__reset,
495
+ #WBCR .wbcr-gnz-panel__save,
496
+ #WBCR .wbcr-gnz-button__pro.input[type="submit"],
497
+ #WBCR .wbcr-gnz-panel__reset.input[type="submit"],
498
+ #WBCR .wbcr-gnz-panel__save.input[type="submit"] {
499
+ display: inline-block;
500
+ padding: 8px 15px 7px;
501
+ cursor: pointer;
502
+ transition: .1s;
503
+ vertical-align: middle;
504
+ text-transform: uppercase !important;
505
+ border: none;
506
+ border-radius: 2px;
507
  font-size: 14px;
508
+ line-height: 1.5;
509
+ }
510
+ #WBCR .wbcr-gnz-button__pro:hover,
511
+ #WBCR .wbcr-gnz-panel__reset:hover,
512
+ #WBCR .wbcr-gnz-panel__save:hover,
513
+ #WBCR .wbcr-gnz-button__pro:focus,
514
+ #WBCR .wbcr-gnz-panel__reset:focus,
515
+ #WBCR .wbcr-gnz-panel__save:focus {
516
+ outline: none;
517
+ text-decoration: none;
518
+ }
519
+ #WBCR .wbcr-gnz-button__pro:active,
520
+ #WBCR .wbcr-gnz-panel__reset:active,
521
+ #WBCR .wbcr-gnz-panel__save:active {
522
+ -webkit-transform: translateY(2px);
523
+ transform: translateY(2px);
524
+ }
525
+ #WBCR .wbcr-gnz-button__pro,
526
+ #WBCR .wbcr-gnz-button__pro.input[type="submit"] {
527
+ position: absolute;
528
+ top: -7px;
529
+ right: 0;
530
+ margin: 0;
531
+ color: #564713 !important;
532
+ background: #ffcb1e !important;
533
+ box-shadow: 0 4px #e4b526;
534
+ font-weight: 600;
535
+ font-size: 13px;
536
+ }
537
+ #WBCR .wbcr-gnz-button__pro:hover,
538
+ #WBCR .wbcr-gnz-button__pro:focus,
539
+ #WBCR .wbcr-gnz-button__pro:hover.input[type="submit"],
540
+ #WBCR .wbcr-gnz-button__pro:focus.input[type="submit"] {
541
+ background: #fdd03a !important;
542
+ }
543
+ #WBCR .wbcr-gnz-button__pro:active,
544
+ #WBCR .wbcr-gnz-button__pro:active.input[type="submit"] {
545
+ box-shadow: 0 2px #b9921a !important;
546
+ }
547
+ #WBCR .wbcr-gnz-panel__reset,
548
+ #WBCR .wbcr-gnz-panel__reset.input[type="submit"] {
549
+ margin: 0 10px 0 0;
550
+ padding-right: 30px;
551
+ padding-left: 30px;
552
+ background: #E1E5E9;
553
+ box-shadow: 0 4px #A8AEB3 !important;
554
  }
555
+ #WBCR .wbcr-gnz-panel__reset:hover,
556
+ #WBCR .wbcr-gnz-panel__reset:focus {
557
+ background: #E7EAED !important;
558
  }
559
+ #WBCR .wbcr-gnz-panel__reset:active {
560
+ box-shadow: 0 2px #A8AEB3 !important;
561
+ }
562
+ #WBCR .wbcr-gnz-panel__save,
563
+ #WBCR .wbcr-gnz-panel__save.input[type="submit"] {
564
+ margin: 0 10px 0 0;
565
+ padding-right: 30px;
566
+ padding-left: 30px;
567
+ color: #222 !important;
568
+ background: #FFCB1E !important;
569
+ box-shadow: 0 4px #BF9A17 !important;
570
+ }
571
+ #WBCR .wbcr-gnz-panel__save:hover,
572
+ #WBCR .wbcr-gnz-panel__save:focus {
573
+ background: #FFD340 !important;
574
+ box-shadow: 0 4px #BF9A17 !important;
575
+ }
576
+ #WBCR .wbcr-gnz-panel__save:active {
577
+ background: #FFD340 !important;
578
+ box-shadow: 0 2px #BF9A17 !important;
579
+ }
580
+ #WBCR .wbcr-gnz-panel__save + div {
581
+ margin: 0;
582
+ }
583
+ #WBCR .wbcr-gnz-panel__checkbox {
584
+ cursor: pointer;
585
+ font-size: 15px;
586
+ transform: none;
587
+ }
588
+ #WBCR .wbcr-gnz-panel__checkbox-text,
589
+ #WBCR .wbcr-gnz-panel__checkbox-text-premium {
590
+ position: relative;
591
+ padding: 0 0 0 26px;
592
+ }
593
+ #WBCR .wbcr-gnz-panel__checkbox-text::before,
594
+ #WBCR .wbcr-gnz-panel__checkbox-text-premium::before {
595
+ content: "";
596
+ position: absolute;
597
+ top: -1px;
598
+ left: 0;
599
+ width: 20px;
600
+ height: 20px;
601
+ border-radius: 2px;
602
+ background: #ffcb1e;
603
+ }
604
+ #WBCR .wbcr-gnz-panel__checkbox-input:checked + .wbcr-gnz-panel__checkbox-text::after,
605
+ #WBCR .wbcr-gnz-panel__checkbox-input:checked + .wbcr-gnz-panel__checkbox-text-premium::after {
606
+ content: "";
607
+ position: absolute;
608
+ top: 5px;
609
+ left: 6px;
610
+ width: 8px;
611
+ height: 5px;
612
+ -webkit-transform: rotate(-45deg);
613
+ transform: rotate(-45deg);
614
+ border: solid #444;
615
+ border-width: 0 0 2px 2px;
616
+ }
617
+ #WBCR .wbcr-gnz-panel__checkbox-text-premium {
618
+ display: inline;
619
+ color: rgba(245, 245, 245, 0.3);
620
+ }
621
+ #WBCR .wbcr-gnz-panel__checkbox-text-premium b {
622
+ display: inline-block;
623
+ font-size: 9px;
624
+ font-weight: 700;
625
+ color: #fff;
626
+ background: #f22714;
627
+ width: 25px;
628
+ padding: 3px 0;
629
+ text-align: center;
630
+ vertical-align: top;
631
+ border-radius: 3px;
632
+ line-height: 1.5;
633
+ }
634
+ #WBCR .wbcr-gnz-panel__checkbox-text-premium::before {
635
+ background: rgba(245, 245, 245, 0.3);
636
+ }
637
+ #WBCR .wbcr-gnz-panel__close {
638
+ width: 36px;
639
+ height: 36px;
640
+ margin: 0 20px 0 20px;
641
+ cursor: pointer;
642
+ transition: .2s;
643
+ border: 4px solid #FFF;
644
+ border-radius: 50%;
645
+ background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 352 512'%3E%3Cpath fill='%23FFF' d='M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z'/%3E%3C/svg%3E") no-repeat 50% 0px;
646
+ }
647
+ #WBCR .wbcr-gnz-panel__close:hover {
648
+ opacity: .7;
649
+ }
650
+ #WBCR .wbcr-gnz-panel__close:focus {
651
+ opacity: .5;
652
+ outline: none;
653
+ }
654
+ #WBCR .wbcr-gnz-content {
655
+ display: block;
656
+ width: 100%;
657
+ margin: 0;
658
+ padding: 62px 0 0 75px;
659
+ }
660
+ #WBCR .wbcr-gnz-tabs {
661
+ position: fixed;
662
+ top: 62px;
663
+ bottom: 0;
664
+ left: 0;
665
+ width: 75px;
666
+ margin: 0;
667
+ padding: 0;
668
+ list-style: none;
669
+ background: #F4F4F4;
670
+ box-shadow: 2px 0 5px rgba(0, 0, 0, 0.2);
671
+ }
672
+ #WBCR .wbcr-gnz-tabs li {
673
+ margin: 0;
674
+ padding: 0;
675
+ }
676
+ #WBCR .wbcr-gnz-tabs__button {
677
+ position: relative;
678
+ display: block;
679
  width: 100%;
680
+ height: 130px;
681
+ cursor: pointer;
682
  border: none;
683
+ background: #ECEDED;
684
+ border-radius: 0;
685
+ box-shadow: none;
686
+ -moz-box-shadow: none;
687
+ -ms-box-shadow: none;
688
+ -webkit-box-shadow: none;
689
+ -o-box-shadow: none;
690
+ }
691
+ #WBCR .wbcr-gnz-tabs__button:hover,
692
+ #WBCR .wbcr-gnz-tabs__button:focus,
693
+ #WBCR .wbcr-gnz-tabs__button:after,
694
+ #WBCR .wbcr-gnz-tabs__button:before,
695
+ #WBCR .wbcr-gnz-tabs__button:after:hover,
696
+ #WBCR .wbcr-gnz-tabs__button:before:hover {
697
+ -moz-box-shadow: none;
698
+ -ms-box-shadow: none;
699
+ -webkit-box-shadow: none;
700
+ -o-box-shadow: none;
701
+ }
702
+ #WBCR .wbcr-gnz-tabs__button::after {
703
+ content: "";
704
+ position: absolute;
705
+ top: 0;
706
+ right: 0;
707
+ bottom: 0;
708
+ left: 0;
709
+ opacity: .55;
710
+ }
711
+ #WBCR .wbcr-gnz-tabs__button--misc::after {
712
+ background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACEAAAAtCAYAAAAgJgIUAAAIhUlEQVRYhe2YXawdVRXHf2vtOXPOvbxUEgUJhdaIQemlbSgkkEZaiiSg4EVBEWKkYIg+qDQoiRFj8QElQT4SjSEitNGAYtKCRjFa21tTUhVbKrcxGFAqfTDBALVpe8587LV8mJlz59wvkBifXMmcMzNrz6z/+q+111575Iu33cZCkqYpSRI4caJPr9fTLM/PU9WLLcY1wFkOpwI9YAC8IsKLguwT1d0i8gxQqgqCoEFRVQQZsfG1zZtJFkQAiIDDScCNWZ5vdPfzYlnOKEflNDdf5fg1uCPwJ1H9gUp4COVfi9nRxZRltCuzLNsLfNvNzhsanwuA2Tp3X2kx3lMUxe9itGveCogUkXtjWf7Uok3MMew+c8y+bu7Vz7j72WVR/CTL8gfd/CTmwT9fOMYQeRSYnOOxO4gcCCHsctgvIi8Dx919XISl7r7Kzde7swZ8hBmL8Zb+YLB8rNe7RoMexRcG0R0CmGVcRH6WdtP786LYnSQhltFQFdwdEFQV3B8lIG5+kZndalaHoWHF7AP9wWDb2FhvUlWPNUBGwyHyzREAFbVHEbkZuEpD2AnEhnG8PuqxTXBE9elOJ7k26STXI/JqO0RutiEbZA+4O80T2uv16I31SDrJ5cCtI96rvtztppcCDw+Nvilx3CFJksd6ve4lIvKXNpAY4015XnzMrQahqqjISWZ273AgICLHer3uR4KGZ9r3R5mbMboAFjpJ8lyv150UkVdbL6csinvKsjwZQE/0+5w40f+URTt7mIgVtZ8fDLJ9/X5/XuPujkVDRBBRRGRmZtToRAVzR0PyfKfTuQV3G+JzXxrNPgMgX73jjmSQZX90s5UNCIFfAB9ssYKoknYSRIQYjSzLAOikHUDodBLcHFHBzcjzgjRNK3C1DLLsMYvxupadF9M0ndAsz1a5+7ktFjztpnePjY8xNj5Gt9utvRXcIYRQz4i5kQlJIKgCggMxRsyMGCPRIiGEuxEpWmy8O1q8UFV1Pe4zcEWm87zY0+8P6PcHDLJsmMV1mBcWn6WXCjR4xRIcEJE/tHPM3TdoLOOadlEKQXd0045107SZ+1AvO/NX6wVKeK0REUJIQKpzVflVy2HMfE0CvKeuhI03+2K0IY012slo9l4x+XmA51p21sYY368ivwf5TWPI3c92t8kY5aWk44+HoB5NajZk36wl4MzE3d/RnhWielhVazyOm9/iZg86kJvdLnChmT0PrEVkp8XYMUBUrwiqT7n7GXmRT7n5KaWVkHF6kiTfGsapKvURCHUElygiY216qNYCRIQkJCByw1DnvqQoy0tUlZAkl+HeaRwoy/LKaEYZywvc/JTmfow2aWbtZD4O5K28SBX3QTuO7j7u7nVSKSGE7UOWRPrdtLsnSQKq+tvmPiIkSfLroEqSJPtF5Ehz391/mecFZYxVXsA41SrdmCwSRP4JvHNoCE4XFVSUJEnQEB5wt9fNfKLX7W4LSXgOoBvCDvAryjJuSELY0+umT3jF79/MfEOM8RNu9oK7P4wIImDmuNnSJhR18h5JROQFNzu3WenMfbU4P4oekSioBlcNWyFW061VFIPqU6b+lEhVF6op6qiwX0LYX7jVK7oQQkCA0mV1m3lEDqtIK1vdcbdLRRAVwcxajQsj9aK+Na8MF1cHUaWTJFWZN8divKzdDAnsU1Xd1UKFOytxLpC6KY0WR80JC5cGaSrKjIQQ0KAEDajqOcCFbXsadKeqyD6BP7fQhTLG24UqjgJV0Wo6JDNiWc6hQajKdIyxAlK/rywKBv0Bg8GALMtu89Gk/LuI7FFRKTSE77fRWYxXlzF+PIQEDdV6EFTJ84I8zymKkizPafoBxxlkOWVZkuc5CBRlSSftMD4+zvj4OGmaXg58ciZmjopsveuub5xQFaWTJA+JyF9bQKQoiu/GWJ4jVWmtXG01JmaG1SuzO1iMdTykTgqvwCcBhHcVZfkwTTtZTfd/9MZ63wFQEVDVo51O50sjzYv72waDbFtRFO9bIPyjv/MuLILFeNagP9jmZqcOx1T/X+73B69QhTugqqRpuj0k4Xsj/aD7e7Isn4oxXtuy+aalLMsPnegPpqzVq9QO/tjdt7pVTM40ugLdbneTqu4Y2Tu4v70oisfLovyhm58/4/nciVJve3D3lcBDRVE86WanzWJpLyKfbW8HZlp+B1U93hvrfbRf0bdhZN9gdoO5XyewV1R3COx34WXwYzjj7rY0mq+O0TZYtLWIdOZQ47632+teFUJ4feF9RwXk6NhYbzIbZPfHGG8eMlKBCe6+1mNcW/tuCBmQ4h6asT7SGgzPHwU+p6KvBdWRGT53G1gBOZam6aeTJLleRF6ab3tXFxEFxoAwslVstwYih4GbcL8BeG1Yd1t7lkU3xCHoYyEJ52sIXxGR5+fsN+c4MKJ7UVW/3ut1LwAeWczOop8GqhVdXg1B7yLovWZ2Ec56M1sDnOFwMpACucDriBwWkf2iukvgaXM/LrqonxWIZcuXv+GgWgbAzvr4r8obw/wfyP9BNDJvYh6cnt4FrAM2r5iYuPPg9PQ6oOk7pHW+vh73CLAMOAJsATbV+mXAfcx8btgCbFoxMXGkbW8xJg7VBgAurq/nk+21bj1wJ9XnhRuBJTXYZcDVwMYazPbZL1hsih5oebAOmKpfPp8sqY8t9XOH6meXActbDhyZ8+SbALHu4PT0KmAV8OQC49ZTedd4OEXl+Zn1dQOAFRMTT8z3gjdKzCngwy1Q88kRYDWVxxtrwPe19Euak4PT08veCojdVCGYWkC/CngJ+AKVx1vq/2XMMHdja/z2g9PTz/6nIKbqF+5eQH+gNrwZeLYGtAp4oNbdT8XKbN2ILJQTW4FDKyYmDhycnt4MNLHc3NI3spHK65X19ZPMhG5TPbYJ6dYVExOHZhv7N8fmQDQfwhMYAAAAAElFTkSuQmCC") no-repeat 50%;
713
+ }
714
+ #WBCR .wbcr-gnz-tabs__button--theme::after {
715
+ background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACoAAAAvCAYAAACVDljoAAAGA0lEQVRYhe3Zf6ifVR0H8Nf1TnNb1lYUUS6jX0hhm2lB5XS3WWCQzkqLhmzTiAqsjSjoHrAtOtEvdEERkbWGki1JyyBY2HaNxFbN3RmFkdDVEZHLvK3N1ly7/fF5nu6zs+f53ue7DfrHNzx8v+c5n8857+fz+ZxzPueckfHxcaeAM3ARLsPFeBVehLNxGI/jEezGffg1jjYbyDn36mjeSRJciLVYVxHtwouxDO+pyntxG27FP4bp8IyhKfJOPICvGkyyDUvxZfzSLPleGIboWbgZ9+CCYTppwfm4E99IKS3so9CX6Hxsw4aO+kncguvMxuulWI0v4Tcdeh/E3Sml58xFYKTHYHoWvodVLXU/xmYxUP4zqB+8Geu1u/xnWJVzPtjVQB+Lfr6F5AHcgCuxYw6SMIP7cQ3ejyeK+pX4yqAG5iJ6hbBCE/txOb49h24X7sBb8afi/fUppWu7lAa5fqGIrfMb7w5iBV4vrDNfuLUvZoT1J0Q4/QLPb9Tvw7Kc899LxUHz6JqCJHy0IvsFLMZf8a8hyI7iXLwFD4nBdKdZzy7Bh/C5UrHL9fOqRpr4CbbgHDFV7RKx9UYxyt9Q/XY9F4kB9YOq/XNwF75f9LMupXR2G6E2LMPrGuUZYUU4Vn3gY/gdNlbyhzvaqvs5VMnuwdVVO6p2340zq/Ir8Sbs7EN0zPHu/K2Ipzbdd+m/ANxevsg5T6aUfiXCocbKvkQvLsr3mrVAjdoCN4nYerqon8Gzqz7+LWJ5jxiMJX5aEC377yT66qK8u4VEHd/7RbbUJDpStX0P/ibi84iYf0db+ivbP68v0RcW5X1FeaRB7LParUTMwX8W2dIBXIWnWuQeE9NW/RGL+hKdX5QPdcgx99S0AM8VM8VZHTKHhMXrfk+Q65qeyhG8YACRMnabmGnUHx0gu6AgV8Z7J9H9RfncAWRK6zdxpll31oNvpkVuieNjd7oU6HL9Hx0/j14olrwm6oZvFJl8c4sxUtXvESvZpcK1D4k5s8SFRbkcE51EdxcNXl51XlvjqFiRbsKjFYnSO8fwtur9oUr/Aryjqm9a9u0t/fciurMoL62I7arKR8TMsKlDfy4cUQ3ClNJrxUrUxI5SoStGd+P3jfIoPtnQGSZjakMdGvBxxw+kR524CnYSfRrfKt5djffin6fG8X/9PiXy3euKuq055xPm2kFp3q34CF5RlUfwdSwXicS1YiS3jeJBGBUW24OfFxz+gq+1KQ0iegCfEKlYjcXYLoL/i9qXwz54OX4oDiua+FTO+fE2hbm2Infjm8W7l4gM/Rqx7A37XFHpv6Zod1vOeWsXkT6buw0ie2riBSLhvV0kzH2wVITTj8S828QD+PAg5T5HOofEnHqXyBObWI33VR3diwdFgnFQLItLxGS+EpeYXZ1KklfmnJ88VaJEvK4Se/gbirrRisQlVfmYyD/PMncMfxc3tm3mSgxzpHMQHxD78nKrW7Y532CS+3A9VvchWTc6LO4QcZnw8JC6j+AzYpXbMoziyR47PiG2tDeLneWY2D68FM8Tbj+CJ4X1HhTL8v0G57annWiNw2JdPmFtPt04Gdf/X/AM0dONZ4ieboyMj4/v1L4vH8OnG/9Vcjsb5XInQKSDdZsbxS5gRUN2pGp3Y6E3kXMeSymtr+oXYQqbcs7fmSeSjkXimHFtg8TkwE+cxYYO2amK4CZxrj+FlxUyY43/0ymlZeIuYLNIXtZgS0ppYl6jk8vqL+tJsMZkh86k2SP1FZXM2kJmonkhVhFl9oM2YCum+0z4KwzO4pvun3C8R1aII8llwkIlZlJK9f+NOedNKaV1wqr1R27OOU/0ITpp9tqmdk0TTdeXBwcT4ryJ9vBoun6qlss5L66sexU2ppT29iE6bXA4dLmeuNb52ID60vXrcUtKaSznPJFSmhKD7rxTXesJCzct2bw0m6jqu65mdjZcT+x011TvJ4QHp7F1dPny5bXQiDD/fQ3FEXHR2nTbdCUzXT0PV3r1s0tcyO4Vd57Erd90Q3ek0JnCVM55+44dO7bhD5XsdmzIOU/9FxZhkSePNaNRAAAAAElFTkSuQmCC") no-repeat 50%;
716
+ }
717
+ #WBCR .wbcr-gnz-tabs__button--plugins::after {
718
+ background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC0AAAAtCAYAAAA6GuKaAAAKSUlEQVRYhe2Yf4xU1RXHv+feeW8GdpBlQViGqouCmJgKRGpTawsEa2JSKVSspkZl1fqrsYXIaOtSFxQ2wFB+pMXaaiumqVWJYG2iiVGBRkNbi2BrWxOxrFBlV9idnZndmXk/7j394923+3bYWXY21v7Tk7y89+6959zPPe/cc++7tHPnTgwl77777pDlAGDbNmJSolgqIZFICNd1LhUk5iut5wGYCeZGAAkAZQCfENEREB0URPuJ6C0AvhACIMK6deuq9lNNYjVrACACAK4DsNx1nGZmvtSHCupOb57SzHPAvIwD5XcE0a9J0BMClBtN/2I0SspX1ziOewDATzXzpSHsEMCorGPm2UrrzZ7n/1EptWw0/dcKbROwxVfqRaX15ytBOXJVvodloQ4zX+T5/q4fPPDAz1sfeqjuvwU9hoBnAawcChbAYSnFVinETTEp50sp50khvhqT8kYpRIaI/jIUvNL6jrLj7GltfeiskYLQCCdinIBnACyJFjIAIvq9bVvbPNfbb9mWUr4CCQEwg5mDZ9OSmS/XWq/QWi8LwUM7QojXxiTiS9asfbj3TNAj8jQBG6LAxlt5Am4DsFgK+ToAxTygw1EDwQsLojctK3adFYt9m4CuqNe11ovKjrt9RDzVPH3kyPsgEHzfv9r3/Zei/QshjtmWtWxqKvVWfzkzwAylgixSLpehtQYJAcdx7rNisVlTU6nvEuAxgH998MElZcd5jplnRT1uW9b169vanhsOuqqnhRAgojqt9Zao14ioNxG3vxkFBgBBBNfzvua47lVBSAAkBDzPu7u3t3dzdzb7nRMnTjzqeZ7lOg6apk//ayIeX0JEXf22AXi+v7mlpaVhVNClYgnFUukWpfVFUU+A+XtTpjQehPEsmEFEKDvO4k86O/ecOnnyeadcXiClhOe6d+Xz+R3MDAJgW9ZRIaX2fR++7+OCGTPes6zYHQzosF9mPkcrddeooBNjEjEhxB3RMiJ6acbMmU/GLAsxy4Jl7lIIaK1n+UrVaeZkV1fXb/r6+jbnC4VHmZkIwNSpU1dOOvvsNs/zVF+xCGm+xvr1bbulEM9F41tp3bx6dUuiZmjXceew1pdEvMxx294opUT0EkKgVC7HJzY0bJna2JgGAF+pVKG39z5mJiGEk0qlVjRMnLjNdRzkcjk4jrPy1KlTj4FZAoCUciMBXsTbM7TSX6oZWgixkCPpmIC/uZ73RjQszKREb6Hws48++ujpiZMmbW5sbLw/amf8WWf9oi6Z3F4qFtGTy8H3vDsLhcLmU11dd3788cePAcD6trbDRPTn6Nxh5kXV2KruPXyl5kUXECnlqzErpolMqbnnc7nrcrlcMwMgIYrTpk1rBkAdHR0bAaBQKFxj2fbziURiv+e6d+bz+R1aa0FEcFz3aMRJr2ilvmwcBB1svmqDBnAhI7oA8EGlFEJoIoKv1ISTJ09uCD2UzWaXE4DUAPgGX6mm7q6up8eNG7crl8/fo7WWRIRkMrkqJuWP+3sjHKxYZc+rGZqZJw9asUgcF0IMWoZ7stlbXc87P6rXnc0uB8CpadNuBcAdHR0bfaVS2Z6e7wOAIHLG1tU9aMViW7TuTxog0DEACoA0APU1QxMwJvIMAH3MjL7eYJUVQsRz+fzNQ+l2Z7PNAMh4nDs6OjaFdclk8vEJEyZs0VoPXjWBPgAuB3scALBrhmagPOhzMY8FA77vA0TwHWeW67oXVtM3Hg9DBSF4sVRaXJdM7kokEn/giKdBGItgFxmKhyoynKdPAphqBgAQPico+NsgIiilpmitq+bSIcCpo6Njo+/753Z2dr44ZfLkb8UTiVfCtlrrcxCGBgAQ9dQOLeh9rfmS/v2v5rlM/IwOJyOzQ0DlJx4J+AYTegkeHNNzB/UPHK8dGnSQwNfCgDHzlUREHAgs2z5s2fZR13Wnn4Eb3dnscmYem0qlbgYzMfMHtm2/GB2w0vqqMFuZLe/BmqGFEHvD2W3+NGYz+DIp5Z9czwP7/myt1Ij+OIgI5XKZy45jj6+v31AsFqHNngUAVq9uuRhA/wpIAKQQr1dlq9qREAdB9I/Ir5NUvrqfAfie95WeXG63r9TkMwHHpDw2ob7+9uS4cTew1gWtVLCNjYjjuPeBOToJPwTRGzVDCyJPCvHL/kEAUFov7evray0UCruVUpP62wrRG4vF/h3R9S3L+uf48ePXNDQ0fFFIGdihaD4KpKXlwasB3BS+m5X1qba2tmI1tuEmImJW7Aml9T1gvsCAU6lY/JHSun+WSyEKyWTyeinlYQAXM/NYx3VPJOvq/h6zrKLyfbDWQ/6pd506db7v+78KOUwsnxiTiO+oxjU8NAgkKG9ZsbTrersjRwADwFLm6+rqbiAhXmZmxBOJE2CG63nQzODTF5B+6e7umlkql3dpzY2hbXP/4Zq1D38yHHT18JACQgjYtr0nJuXjYecxy0Is2JaqRDz+E0H0MkyMstanxetQ0tnZ+fVSsbRPaz27Yr/x7KZNm546k/6ITpji8fhKXS5P11pf6ZTLYQeyr1hsEUI0CUHbCfQWgvwNEOA4ZRARWDOEFNBKI5fPz3Zd914AzQBERcgcIODukfCMCJoE9Y1JxK8tlZ3dWutF0XMPrfWNrHEDiA4IoldBeJuYjgHoZfDY4PdJz1VKLVJaX0GAVWmfgQOJeHzxI+vWZT816ABc5Mck4kvKjrtNKXUbMOi4SzLzFYr5inAsBDgAbDZLs8n1g846zPPTAO59ZN267pGy1HQAKYTstW3rds/Da0rp9cw8vQK+vynMLjFaPgiY6DiYWzdlMk/WwhAaH7GwyQVSyt/GpPyCFKKFiN6rPK87XW9Q3REhxMOJePwyADUDA6M86uXg23ZJKdsEsIW1vpzBC7XmeQDOBXMDgv2wC6IsAceJ6G1BtBeEN1lzn6ichp8GdFPTGfdBoZQBvG6uz0RGdT79v5b/Q39WQqtWrWqtKHsKQDuABQDmA1g7hF4rgP0A9pn3yrb1CI6GzwOQA/CCsVnZNnz+XSaTOQwA6XR6OYD2TCazL51O1wNYDmA8gA8BvJDJZHoEgDWmYoG5HwXQZIytqTLYNaY+lGjbegB7AWw1NlsBHAIwZ4i24fPWiK1bAMw3wIeM/gLTZi8wEB47ASwEMDeiOFrZasCnG5thGvpGlfbtABak0+kFFeVzEDivOZPJLASwFEBPOp2eU5nymsw9h+CTjEaWIHBC+DfdA2DCMO3bEYRZKwbCDQAOm2tPOp3eZ+qaM5lMe+jpNQgWrUOm4c5RAgOBl0PgVgwsiHuH0VmLCm9nMpkeBF9qpbG3AsChdDrdVBkeYYhUPXMYgRxGEINAMKkXmrKqkslk2g1Df1IwA3gSwM5MJrMUQZjVA7glDI92DP40UVkQee4xAPsQjPwdU748ArYWwB4MZJgwNocFN3pHTR8hyxIzgO0YmPgfjiRP741c4SxfaSD2mKsdwcYeCNLbUjOQvQb+hUj9kBLxdr1532d05hg7KwBsy2QyO/8DenfAKWku08QAAAAASUVORK5CYII=") no-repeat 50%;
719
+ }
720
+ #WBCR .wbcr-gnz-tabs__button:hover,
721
+ #WBCR .wbcr-gnz-tabs__button:focus {
722
+ outline: none;
723
+ background: #E6E7E7;
724
+ }
725
+ #WBCR .wbcr-gnz-tabs__button:hover::after,
726
+ #WBCR .wbcr-gnz-tabs__button:focus::after {
727
+ opacity: 1;
728
+ }
729
+ #WBCR .wbcr-gnz-tabs__button.active {
730
+ background: #CACDCF;
731
+ }
732
+ #WBCR .wbcr-gnz-tabs__button.active::after {
733
+ opacity: 1;
734
+ }
735
+ #WBCR .wbcr-gnz-tabs-content {
736
+ display: none;
737
+ }
738
+ #WBCR .wbcr-gnz-tabs-content.active {
739
+ display: block;
740
+ }
741
+ #WBCR .wbcr-gnz-info {
742
+ display: table;
743
+ padding: 0 30px 30px;
744
+ color: #5C5C5C;
745
+ font-size: 15px;
746
+ line-height: 21px;
747
+ }
748
+ #WBCR .wbcr-gnz-info p {
749
+ font-size: 15px;
750
+ margin: 0;
751
+ }
752
+ #WBCR .wbcr-gnz-info p:not(:last-child) {
753
+ margin-bottom: 25px;
754
+ }
755
+ #WBCR .wbcr-gnz-info .wbcr-gnz-info__warning,
756
+ #WBCR .wbcr-gnz-info .wbcr-gnz-info__go-to-premium {
757
+ display: table-cell;
758
+ width: 49%;
759
  text-align: left;
760
+ vertical-align: top;
761
+ padding: 20px;
762
+ background: #f9f9f9;
763
+ border-right: 2px solid #fff;
764
+ }
765
+ #WBCR .wbcr-gnz-info .wbcr-gnz-info__go-to-premium {
766
+ background: #f9f9f9;
767
+ border-left: 2px solid #fff;
768
+ margin-left: 10px;
769
+ }
770
+ #WBCR .wbcr-gnz-info .wbcr-gnz-info__go-to-premium h3 {
771
+ position: relative;
772
+ margin: 0 0 20px;
773
+ padding: 10px 0;
774
+ text-align: left;
775
+ border-bottom: 2px solid #e2e2e2;
776
+ vertical-align: bottom;
777
+ }
778
+ #WBCR .wbcr-gnz-info .wbcr-gnz-info__go-to-premium h3 span {
779
+ display: block;
780
+ font-size: 17px;
781
+ font-weight: 600;
782
+ color: #e47558;
783
+ text-transform: uppercase;
784
+ }
785
+ #WBCR .wbcr-gnz-info .wbcr-gnz-info__go-to-premium ul {
786
+ list-style: none;
787
+ margin-left: 5px;
788
+ margin-bottom: 20px;
789
+ padding: 0;
790
+ }
791
+ #WBCR .wbcr-gnz-info .wbcr-gnz-info__go-to-premium ul li {
792
+ margin-bottom: 5px;
793
+ font-weight: 600;
794
+ font-size: 15px;
795
+ color: #7d8871;
796
+ padding: 0;
797
+ }
798
+ #WBCR .wbcr-gnz-info .wbcr-gnz-info__go-to-premium ul li:before {
799
+ content: " ";
800
+ display: inline-block;
801
+ width: 0.4em;
802
+ height: 0.7em;
803
+ border: solid #8bc34a;
804
+ border-width: 0 0.2em 0.2em 0;
805
+ left: 0;
806
+ margin-right: 10px;
807
+ -webkit-transform: rotate(45deg);
808
+ -moz-transform: rotate(45deg);
809
+ -o-transform: rotate(45deg);
810
+ transform: rotate(45deg);
811
+ }
812
+ #WBCR .wbcr-gnz-table {
813
+ margin: 0 30px;
814
+ }
815
+ #WBCR .wbcr-gnz-table table {
816
+ width: 100%;
817
  border-collapse: collapse;
 
818
  }
819
+ #WBCR .wbcr-gnz-table tbody:nth-child(2n) {
820
+ background: #f9f9f9;
821
+ border-bottom: 15px solid white;
822
+ }
823
+ #WBCR .wbcr-gnz-table th {
824
+ padding: 12px 10px;
825
+ text-align: left;
826
+ color: #333;
827
+ background: #ECEDED;
828
+ box-shadow: none;
829
+ }
830
+ #WBCR .wbcr-gnz-table th:not(:last-child) {
831
+ border-right: 2px solid #FFF;
832
+ }
833
+ #WBCR .wbcr-gnz-table td {
834
+ padding: 17px 10px;
835
+ vertical-align: top;
836
+ border-bottom: 1px solid #ECEDED;
837
+ text-align: left;
838
  background: none;
839
+ box-shadow: none;
 
 
840
  }
841
+ #WBCR .wbcr-gnz-table th:nth-child(1),
842
+ #WBCR .wbcr-gnz-table td:nth-child(1),
843
+ #WBCR .wbcr-gnz-table th:nth-child(2),
844
+ #WBCR .wbcr-gnz-table td:nth-child(2) {
845
+ text-align: center;
846
  }
847
+ #WBCR .wbcr-gnz-table__alternate th {
848
+ background: #eceded;
849
+ font-weight: 600;
 
850
  }
851
+ #WBCR .wbcr-gnz-table__column_switch {
852
+ vertical-align: top;
853
+ width: 10%;
 
854
  }
855
+ #WBCR th.wbcr-gnz-table__column_switch {
856
+ padding: 0 !important;
857
  }
858
+ #WBCR th.wbcr-gnz-table__column_switch em {
859
+ display: block;
860
+ padding: 10px 12px;
861
+ font-style: normal;
862
+ font-size: 11px;
863
+ font-weight: lighter;
864
  }
865
+ #WBCR th.wbcr-gnz-table__column_switch b {
866
+ display: block;
867
+ padding: 10px 12px;
868
+ font-weight: 600;
869
  }
870
+ #WBCR .wbcr-gnz-table__column_condition {
871
+ width: 30%;
872
  }
873
+ #WBCR .wbcr-gnz-table__loaded {
874
+ width: 100px;
875
+ text-align: center;
876
  }
877
+ #WBCR .wbcr-gnz-table__th-external-plugin {
878
+ display: block;
879
+ position: relative;
880
+ font-size: 13px;
881
+ background: #e0e0e0;
882
+ color: #444444;
883
  padding: 5px 10px;
884
+ margin-top: 0;
 
 
 
 
 
 
 
 
 
 
 
 
 
885
  }
886
+ #WBCR .wbcr-gnz-table__th-external-plugin .wbcr-gnz-help-hint {
887
+ display: block;
888
+ position: absolute;
889
+ top: 4px;
890
+ right: 4px;
891
+ line-height: 1.2;
892
  }
893
+ #WBCR .wbcr-gnz-table__loaded-state {
894
+ position: relative;
895
  display: inline-block;
896
+ width: 30px;
897
+ height: 30px;
898
  vertical-align: middle;
899
+ border-radius: 20px;
900
  }
901
+ #WBCR .wbcr-gnz-table__loaded-state::after {
902
+ content: "";
903
+ position: absolute;
904
+ top: 9px;
905
+ left: 8px;
906
+ width: 15px;
907
+ height: 7px;
908
+ -webkit-transform: rotate(-45deg);
909
+ transform: rotate(-45deg);
910
+ border: solid #FFF;
911
+ border-width: 0 0 2px 2px;
912
  }
913
+ #WBCR .wbcr-gnz-table__loaded-super-no {
914
+ background: #C8CFD7 !important;
 
 
 
 
 
 
 
915
  }
916
+ #WBCR .wbcr-gnz-table__loaded-no {
917
+ background: #C8CFD7;
 
918
  }
919
+ #WBCR .wbcr-gnz-table__loaded-yes {
920
+ background: #8BC34A;
 
921
  }
922
+ #WBCR .wbcr-gnz-table__size {
923
+ width: 75px;
924
  }
925
+ #WBCR .wbcr-gnz-table__size-value {
926
+ color: #737373;
927
+ font-size: 15px;
928
+ line-height: 20px;
929
+ }
930
+ #WBCR .wbcr-gnz-table__item {
931
+ color: #737373;
932
+ }
933
+ #WBCR td.wbcr-gnz-table__item:nth-child(2) {
934
+ text-align: left;
935
+ }
936
+ #WBCR .wbcr-gnz-table__item-name {
937
+ margin: 0 0 3px;
938
+ text-transform: uppercase;
939
+ font-size: 16px;
940
+ font-weight: bold;
941
+ }
942
+ #WBCR .wbcr-gnz-table__item-author {
943
+ margin: 0 0 4px;
944
+ }
945
+ #WBCR .wbcr-gnz-table__script-name {
946
+ color: #737373;
947
  font-size: 16px;
948
  font-weight: bold;
949
  }
950
+ #WBCR .wbcr-gnz-table__script-name b {
951
  display: inline-block;
952
+ padding: 5px 10px;
953
+ font-size: 13px;
954
+ text-transform: uppercase;
955
+ text-align: center;
956
+ border-radius: 3px;
957
+ vertical-align: middle;
958
+ margin-right: 15px;
959
+ }
960
+ #WBCR .wbcr-gnz-table__script-name b.wbcr-wgz-resource-type-js {
961
+ background: #ffcb1e;
962
+ color: #403102;
963
+ }
964
+ #WBCR .wbcr-gnz-table__script-name b.wbcr-wgz-resource-type-css {
965
+ background: #9757a5;
966
+ color: #ffffff;
967
+ }
968
+ #WBCR .wbcr-gnz-table__script-name:not(:last-child) {
969
+ margin-bottom: 5px;
970
+ }
971
+ #WBCR .wbcr-gnz-table__script-path {
972
+ color: #BBBBBA;
973
+ }
974
+ #WBCR .wbcr-gnz-table__script-path,
975
+ #WBCR .wbcr-gnz-table__script-path a {
976
  font-size: 12px;
 
977
  }
978
+ #WBCR .wbcr-gnz-table__script-version {
979
+ color: #BBBBBA;
980
+ font-size: 12px;
981
+ padding: 5px 0;
 
 
 
982
  }
983
+ #WBCR .wbcr-gnz-table__state {
984
+ width: 200px;
985
+ }
986
+ #WBCR .wbcr-gnz-table__turn-on {
987
+ width: 500px;
988
+ }
989
+ #WBCR .wbcr-gnz-table__note {
990
+ color: #BBB;
991
+ font-style: italic;
992
+ line-height: 21px;
993
+ }
994
+ #WBCR .wbcr-gnz-table__note p {
995
+ margin: 0;
996
+ }
997
+ #WBCR .wbcr-gnz-table__note p:not(:last-child) {
998
+ margin-bottom: 12px;
999
+ }
1000
+ #WBCR .wbcr-gnz-table__select {
1001
+ padding: 8px 28px 8px 10px;
1002
+ color: #4B4E51;
1003
+ border: none;
1004
+ border-radius: 3px;
1005
+ background: #F2F3F3 url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAFCAYAAACXU8ZrAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFNJREFUeNpinDZtWgQDA0MjEKsxYAeLmDIzM1cAGbNwKQDKxzNBOXOBOBeI76ArADEY////DxedPn16EpCaBMRrYQpAgAXN+I1ALA1U0IwsCBBgADmdFtA7IxcEAAAAAElFTkSuQmCC") no-repeat right 10px top 50%;
1006
+ font-size: 13px;
1007
+ -webkit-appearance: none;
1008
+ -moz-appearance: none;
1009
+ appearance: none;
1010
+ }
1011
+ #WBCR .wbcr-gnz-table__select:not(:last-child) {
1012
+ margin-bottom: 16px;
1013
+ }
1014
+ #WBCR .wbcr-gnz-table__select:focus {
1015
+ outline: none;
1016
+ background-color: #E5E7E7;
1017
+ box-shadow: 0 0 0 2px rgba(255, 203, 30, 0.5);
1018
+ }
1019
+ #WBCR .wbcr-gnz-table__select::-ms-expand {
1020
+ display: none;
1021
+ }
1022
+ #WBCR .wbcr-gnz-table__select-pro {
1023
+ color: rgba(242, 39, 20, 0.34);
1024
+ }
1025
+ #WBCR .wbcr-gnz-table__label {
1026
+ display: block;
1027
+ margin: 0 0 15px 10px;
1028
+ padding-bottom: 5px;
1029
+ color: #414B56;
1030
+ font-size: 13px;
1031
+ font-weight: bold;
1032
+ border-bottom: 2px solid #efefef;
1033
+ }
1034
+ #WBCR .wbcr-gnz-table__label .wbcr-gnz-help-hint {
1035
+ vertical-align: bottom;
1036
+ }
1037
+ #WBCR .wbcr-gnz-table__options {
1038
+ display: -webkit-flex;
1039
+ display: -ms-flexbox;
1040
+ display: flex;
1041
+ -webkit-flex-wrap: wrap;
1042
+ -ms-flex-wrap: wrap;
1043
+ flex-wrap: wrap;
1044
+ max-width: 380px;
1045
+ margin: 0 0 -15px 10px;
1046
  padding: 0;
1047
+ list-style: none;
1048
+ color: #646D78;
1049
+ font-size: 13px;
1050
+ }
1051
+ #WBCR .wbcr-gnz-table__options-item {
1052
+ width: 33.33%;
1053
+ padding: 0 20px 15px 0;
1054
+ }
1055
+ #WBCR .wbcr-gnz-table__checkbox {
1056
+ cursor: pointer;
1057
+ }
1058
+ #WBCR .wbcr-gnz-table__checkbox-text {
1059
+ position: relative;
1060
+ padding: 0 0 0 20px;
1061
+ color: #6f7275;
1062
+ }
1063
+ #WBCR .wbcr-gnz-table__checkbox-text::before {
1064
+ content: "";
1065
+ position: absolute;
1066
+ top: 1px;
1067
+ left: 0;
1068
+ width: 13px;
1069
+ height: 13px;
1070
+ border-radius: 2px;
1071
+ background: #c8cfd7;
1072
+ }
1073
+ #WBCR .wbcr-gnz-table__checkbox-input:checked ~ .wbcr-gnz-table__checkbox-text {
1074
+ color: #646D78;
1075
+ }
1076
+ #WBCR .wbcr-gnz-table__checkbox-input:checked ~ .wbcr-gnz-table__checkbox-text::before {
1077
+ background: #FFCB1E;
1078
+ }
1079
+ #WBCR .wbcr-gnz-table__checkbox-input:checked ~ .wbcr-gnz-table__checkbox-text::after {
1080
+ content: "";
1081
+ position: absolute;
1082
+ top: 5px;
1083
+ left: 4px;
1084
+ width: 6px;
1085
+ height: 4px;
1086
+ -webkit-transform: rotate(-45deg);
1087
+ transform: rotate(-45deg);
1088
+ border: solid #FFF;
1089
+ border-width: 0 0 2px 2px;
1090
+ }
1091
+ #WBCR .wbcr-gnz-table__field {
1092
+ font-size: 13px;
1093
+ }
1094
+ #WBCR .wbcr-gnz-table__field-item {
1095
+ display: -webkit-flex;
1096
+ display: -ms-flexbox;
1097
+ display: flex;
1098
+ margin: 0 0 10px;
1099
+ }
1100
+ #WBCR .wbcr-gnz-table__field-input,
1101
+ #WBCR .wbcr-gnz-table__textarea {
1102
+ width: 70%;
1103
+ padding: 8px 10px;
1104
+ margin-left: 10px;
1105
+ color: #4B4E51;
1106
+ border: none;
1107
  border-radius: 3px;
1108
+ background: #ececec;
1109
+ font-size: 100%;
1110
+ }
1111
+ #WBCR .wbcr-gnz-table__field-input:focus,
1112
+ #WBCR .wbcr-gnz-table__textarea:focus {
1113
+ outline: none;
1114
+ /*box-shadow: 0 0 0 2px rgba(255, 203, 30, .5);*/
1115
+ }
1116
+ #WBCR .wbcr-gnz-table__field-add {
1117
+ width: 30px;
1118
+ margin: 0 0 0 5px;
1119
  cursor: pointer;
1120
  border: none;
1121
+ border-radius: 3px;
1122
+ background: #FFCB1E;
1123
+ }
1124
+ #WBCR .wbcr-gnz-table__field-add::before {
1125
+ content: "+";
1126
+ color: #4E3E09;
1127
+ }
1128
+ #WBCR .wbcr-gnz-table__field-add:hover {
1129
+ background: #FBC100;
1130
+ }
1131
+ #WBCR .wbcr-gnz-table__field-add:focus {
1132
  outline: none;
1133
+ box-shadow: 0 0 0 2px rgba(255, 203, 30, 0.5);
1134
  }
1135
+ #WBCR .wbcr-gnz-table__textarea {
1136
+ width: 95%;
1137
+ padding-right: 10px;
1138
+ margin: 0 0 10px 10px;
1139
  }
1140
+ #WBCR .wbcr-gnz-table__also {
1141
+ font-size: 12px;
1142
+ font-weight: bold;
1143
  }
1144
+ #WBCR .wbcr-gnz-table__also .wbcr-gnz-table__label {
1145
+ margin-bottom: 5px;
1146
+ font-size: 12px;
1147
+ }
1148
+ #WBCR .wbcr-gnz-table__also-url {
1149
+ color: #A9AAAA;
1150
+ }
1151
+ #WBCR .wbcr-gnz-switch {
1152
+ position: relative;
1153
+ z-index: 1;
1154
  display: inline-block;
1155
+ overflow: hidden;
1156
+ width: 70px;
1157
+ height: 30px;
1158
+ cursor: pointer;
1159
+ vertical-align: middle;
1160
+ border-radius: 15px;
1161
+ padding: 0;
1162
+ }
1163
+ #WBCR .wbcr-gnz-switch .wbcr-gnz-switch__inner {
1164
+ display: -webkit-flex;
1165
+ display: -ms-flexbox;
1166
+ display: flex;
1167
+ height: 30px;
1168
+ transition: .3s;
1169
+ -webkit-transform: translateX(-100%);
1170
+ transform: translateX(-100%);
1171
+ color: #FFF;
1172
+ font-size: 13px;
1173
+ line-height: 31px;
1174
+ }
1175
+ #WBCR .wbcr-gnz-switch .wbcr-gnz-switch__inner::before,
1176
+ #WBCR .wbcr-gnz-switch .wbcr-gnz-switch__inner::after {
1177
+ -webkit-flex-shrink: 0;
1178
+ -ms-flex-negative: 0;
1179
+ flex-shrink: 0;
1180
+ width: 100%;
1181
+ }
1182
+ #WBCR .wbcr-gnz-switch .wbcr-gnz-switch__inner::before {
1183
+ content: attr(data-off);
1184
+ padding: 0 0 0 12px;
1185
+ background: #C8CFD7;
1186
+ }
1187
+ #WBCR .wbcr-gnz-switch .wbcr-gnz-switch__inner::after {
1188
+ content: attr(data-on);
1189
+ padding: 0 12px 0 0;
1190
+ text-align: right;
1191
+ background: #414B56;
1192
+ }
1193
+ #WBCR .wbcr-gnz-switch .wbcr-gnz-switch__slider {
1194
+ position: absolute;
1195
+ top: 5px;
1196
+ left: 5px;
1197
+ width: 20px;
1198
+ height: 20px;
1199
+ transition: .3s;
1200
+ border-radius: 50%;
1201
+ background: #FFCB1E;
1202
+ margin: 0;
1203
+ }
1204
+ #WBCR .wbcr-gnz-switch:not(.wbcr-gnz-switch-premium) .wbcr-gnz-switch__input:checked ~ .wbcr-gnz-switch__inner,
1205
+ #WBCR .wbcr-gnz-switch:not(.wbcr-gnz-switch-premium) .wbcr-gnz-switch__input:checked:focus ~ .wbcr-gnz-switch__inner {
1206
+ -webkit-transform: translateX(0);
1207
+ transform: translateX(0);
1208
+ }
1209
+ #WBCR .wbcr-gnz-switch:not(.wbcr-gnz-switch-premium) .wbcr-gnz-switch__input:checked ~ .wbcr-gnz-switch__slider,
1210
+ #WBCR .wbcr-gnz-switch:not(.wbcr-gnz-switch-premium) .wbcr-gnz-switch__input:checked:focus ~ .wbcr-gnz-switch__slider {
1211
+ left: 45px;
1212
+ background: #97A4B2;
1213
+ }
1214
+ #WBCR .wbcr-gnz-switch.wbcr-gnz-switch-premium {
1215
+ position: relative;
1216
+ font-style: normal;
1217
+ }
1218
+ #WBCR .wbcr-gnz-switch.wbcr-gnz-switch-premium .wbcr-gnz-switch__slider {
1219
+ background: #ababab;
1220
  }
1221
+ #WBCR .wbcr-gnz-switch.wbcr-gnz-switch-premium .wbcr-gnz-switch__inner::after {
1222
+ background: #d3d4d4;
1223
+ font-style: normal;
1224
+ }
1225
+ #WBCR .wbcr-gnz-switch.wbcr-gnz-switch-premium:after {
1226
+ content: 'PRO';
1227
  display: block;
1228
+ position: absolute;
1229
+ top: 5px;
1230
+ left: 5px;
1231
+ font-size: 7px;
1232
+ font-weight: 700;
1233
+ line-height: 2.77;
1234
+ color: #fff;
1235
+ background: #9a9a9a;
1236
+ width: 20px;
1237
+ height: 20px;
1238
+ /* padding: 3px 0; */
1239
  text-align: center;
1240
+ vertical-align: top;
1241
+ border-radius: 20px;
1242
+ }
1243
+ #WBCR .wbcr-gnz-tooltip {
1244
+ position: relative;
1245
+ }
1246
+ #WBCR .wbcr-gnz-tooltip::before {
1247
+ content: "";
1248
+ position: absolute;
1249
+ z-index: 60;
1250
+ left: 5px;
1251
+ display: none;
1252
+ width: 20px;
1253
+ height: 20px;
1254
+ }
1255
+ #WBCR .wbcr-gnz-tooltip::after {
1256
+ content: attr(data-tooltip);
1257
+ position: absolute;
1258
+ z-index: 60;
1259
+ left: 5px;
1260
+ display: none;
1261
+ min-width: 200px;
1262
+ padding: 8px 15px;
1263
+ color: #6d5506;
1264
+ background: #FFCB1E;
1265
+ font-size: 13px;
1266
+ font-weight: normal;
1267
+ line-height: 1.2;
1268
+ }
1269
+ #WBCR .wbcr-gnz-tooltip-top::before {
1270
+ bottom: 100%;
1271
+ background: linear-gradient(135deg, #FFCB1E, #FFCB1E 50%, transparent 50%, transparent) no-repeat;
1272
+ }
1273
+ #WBCR .wbcr-gnz-tooltip-top::after {
1274
+ bottom: 100%;
1275
+ margin: 0 0 10px;
1276
+ border-radius: 6px 6px 6px 0;
1277
+ }
1278
+ #WBCR .wbcr-gnz-tooltip-bottom::before {
1279
+ top: 100%;
1280
+ background: linear-gradient(45deg, #FFCB1E, #FFCB1E 50%, transparent 50%, transparent) no-repeat;
1281
+ }
1282
+ #WBCR .wbcr-gnz-tooltip-bottom::after {
1283
+ top: 100%;
1284
+ margin: 15px 0 0;
1285
+ border-radius: 0 6px 6px 6px;
1286
+ }
1287
+ #WBCR .wbcr-gnz-tooltip:hover::before,
1288
+ #WBCR .wbcr-gnz-tooltip:hover::after {
1289
+ display: block;
1290
+ }
1291
+ #WBCR .wbcr-use-by-comment {
1292
+ color: #fb7976;
1293
+ font-size: 12px;
1294
+ }
1295
+ #WBCR .wbcr-use-by-comment a {
1296
+ color: #6e6e6e;
1297
+ }
1298
+ #WBCR .wgz-td,
1299
+ #WBCR .wgz-th {
1300
+ max-width: 600px;
1301
+ }
1302
+ #WBCR .wgz-td {
1303
+ word-wrap: break-word;
1304
+ }
1305
+ @media screen and (max-width: 1367px) {
1306
+ #WBCR p {
1307
+ font-size: 13px;
1308
+ }
1309
+ #WBCR .wbcr-gnz-content {
1310
+ padding: 32px 0 0 75px;
1311
+ }
1312
+ #WBCR .wbcr-gnz-panel__left .wbcr-gnz-panel__item_value {
1313
+ display: block;
1314
+ }
1315
+ #WBCR .wbcr-gnz-panel__right .wbcr-gnz-table__checkbox-text {
1316
+ font-size: 13px;
1317
+ }
1318
+ #WBCR .wbcr-gnz-panel__right .wbcr-gnz-panel__reset,
1319
+ #WBCR .wbcr-gnz-panel__right .wbcr-gnz-panel__save {
1320
+ font-size: 12px;
1321
+ }
1322
+ #WBCR .wbcr-gnz-panel__right .wbcr-gnz-panel__checkbox-text {
1323
+ font-size: 12px;
1324
+ display: block;
1325
+ line-height: 1.5;
1326
+ }
1327
+ #WBCR .wbcr-gnz-panel__right .wbcr-gnz-panel__close {
1328
+ width: 30px;
1329
+ height: 30px;
1330
+ margin: 0 10px 0 15px;
1331
+ border: 3px solid #FFF;
1332
+ }
1333
+ #WBCR .wbcr-gnz-info {
1334
+ padding: 0;
1335
+ }
1336
+ #WBCR .wbcr-gnz-info,
1337
+ #WBCR .wbcr-gnz-info p {
1338
+ font-size: 13px;
1339
+ }
1340
+ #WBCR .wbcr-gnz-info .wbcr-gnz-info__warning {
1341
+ padding: 20px 20px 30px;
1342
+ }
1343
+ #WBCR .wbcr-gnz-button__pro {
1344
+ font-size: 12px;
1345
+ }
1346
+ #WBCR .wbcr-gnz-table {
1347
+ margin: 0;
1348
+ }
1349
+ #WBCR .wbcr-gnz-table th {
1350
+ font-size: 13px;
1351
+ }
1352
+ #WBCR .wbcr-gnz-table .wbcr-gnz-table__item .wbcr-gnz-table__item-name {
1353
+ font-size: 14px;
1354
+ }
1355
+ #WBCR .wbcr-gnz-table .wbcr-gnz-table__item .wbcr-gnz-table__item-author,
1356
+ #WBCR .wbcr-gnz-table .wbcr-gnz-table__item .wbcr-gnz-table__item-version,
1357
+ #WBCR .wbcr-gnz-table .wbcr-gnz-table__item .wbcr-use-by-comment,
1358
+ #WBCR .wbcr-gnz-table .wbcr-gnz-table__item .wbcr-gnz-table__item-author a,
1359
+ #WBCR .wbcr-gnz-table .wbcr-gnz-table__item .wbcr-gnz-table__item-version a,
1360
+ #WBCR .wbcr-gnz-table .wbcr-gnz-table__item .wbcr-use-by-comment a {
1361
+ font-size: 12px;
1362
+ }
1363
+ #WBCR .wbcr-gnz-table .wbcr-gnz-table__script-name {
1364
+ font-size: 14px;
1365
+ }
1366
+ #WBCR .wbcr-gnz-table .wbcr-gnz-table__script-name b {
1367
+ font-size: 11px;
1368
+ font-weight: lighter;
1369
+ padding: 3px 7px;
1370
+ margin-right: 8px;
1371
+ }
1372
+ #WBCR .wbcr-gnz-table .wbcr-gnz-table__script-path a {
1373
+ font-size: 11px;
1374
+ }
1375
+ #WBCR .wbcr-gnz-table .wbcr-gnz-table__column_switch {
1376
+ width: 10%;
1377
+ }
1378
+ #WBCR .wbcr-gnz-table .wbcr-gnz-table__column_switch .wbcr-gnz-table__th-external-plugin,
1379
+ #WBCR .wbcr-gnz-table .wbcr-gnz-table__column_switch em {
1380
+ font-size: 10px;
1381
+ }
1382
+ #WBCR .wbcr-gnz-table .wbcr-gnz-table__column_switch b {
1383
+ font-size: 12px;
1384
+ }
1385
+ #WBCR .wbcr-gnz-table .wbcr-gnz-table__column_condition {
1386
+ width: 35%;
1387
+ }
1388
+ }
1389
+ @media screen and (max-width: 1600px) {
1390
+ #WBCR .wbcr-gnz-panel__data-main {
1391
+ display: none;
1392
+ }
1393
+ #WBCR .wbcr-gnz-panel__data-hidden {
1394
+ display: block;
1395
+ }
1396
  }
components/assets-manager/assets/css/assets-manager.less CHANGED
@@ -1,249 +1,1322 @@
1
  /**
2
  * Assets manager styles
3
- * @author Webcraftic <wordpress.webraftic@gmail.com>
4
- * @copyright Webcraftic 12.11.2017
5
  */
6
 
7
  html, body {
8
  overflow: hidden !important;
9
  }
10
 
11
- #wbcr-assets-manager-wrapper {
12
- display: none;
13
- position: fixed;
14
- z-index: 99999999;
15
- top: 32px;
16
- bottom: 0;
17
- left: 0;
18
- right: 0;
19
- background: rgba(0, 0, 0, 0.5);
20
- overflow-y: auto;
21
- font-family: "Open Sans", Arial, sans-serif;
22
  }
23
 
24
- #wbcr-assets-manager {
25
- background: #ffffff;
26
- padding: 20px;
27
- font-size: 14px;
28
- line-height: 1.5em;
29
- color: #4a545a;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
30
 
31
  a {
32
  text-decoration: none;
 
33
  border: none;
 
 
 
 
 
 
34
  }
35
- h3 {
36
- padding: 10px;
37
- margin: 20px 0 0;
38
- font-size: 20px;
39
- background: #ececec;
40
- color: #696969;
41
- border-radius: 5px 5px 0 0;
42
  }
43
 
44
- .wbcr-header {
45
- position: relative;
 
 
 
46
 
47
- h2 {
48
- font-size: 24px;
49
- margin: 0 0 10px 0;
50
- color: #4a545a;
51
- font-weight: bold;
52
- }
53
 
54
- p {
55
- font-size: 14px;
56
- color: #a9a9a9;
57
- margin: 0px auto 15px auto;
58
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
59
 
60
- .wbcr-description {
61
- padding-right: 300px;
 
62
  }
63
  }
64
 
65
- table {
66
- table-layout: fixed;
 
 
 
 
67
  width: 100%;
68
- margin: 0px;
69
- padding: 0px;
70
- border: none;
71
- text-align: left;
72
- font-size: 14px;
73
- border-collapse: collapse;
74
- color: #737373;
 
 
 
 
 
75
 
76
- thead {
77
- background: none;
78
- color: #9a9797;
79
- font-weight: bold;
80
- border: none;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
81
  }
82
- thead tr {
83
- border: none;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
84
  }
85
- thead th {
86
- padding: 10px;
87
- vertical-align: middle;
88
- border-bottom: 2px solid #ececec;
 
 
89
  }
90
- tr {
 
 
 
 
 
 
 
 
 
 
 
91
  border: none;
92
- border-bottom: 1px solid #ececec;
93
- background: #ffffff;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
94
  }
95
- tbody tr:last-child {
96
- border-bottom: 0px;
 
 
 
 
97
  }
98
- td {
99
- padding: 5px;
100
- border: none;
101
- vertical-align: middle;
102
- font-size: 14px;
103
 
 
 
 
104
  }
105
- td.wbcr-assets-manager-size {
106
- font-size: 12px;
 
 
 
 
 
 
 
107
  }
108
- td.wbcr-script {
109
- white-space: nowrap;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
110
  }
111
 
112
- .wbcr-assets-manager-disable *:after, .wbcr-assets-manager-disable *:before {
113
- display: none;
 
 
 
 
 
114
  }
115
- select {
116
- height: auto;
117
- width: auto;
118
 
119
- padding: 5px 10px;
120
  margin: 0;
121
- font-size: 14px;
122
- appearance: menulist;
123
- -webkit-appearance: menulist;
124
- color: #827b7b;
125
- font-family: "Open Sans", Arial, sans-serif;
126
-
127
- &, &:focus, &:hover, &:active {
128
- border: 1px solid #d6d2d2;
129
- box-shadow: none;
130
- background-color: #ffffff;
131
- }
132
- }
133
- .wbcr-assets-manager-enable-placeholder {
134
- color: #bbbbbb;
135
- font-style: italic;
136
- font-size: 14px;
137
  }
138
- input[type='checkbox'] {
139
- display: inline-block;
140
- margin-right: 3px;
141
- vertical-align: middle;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
142
  }
143
- label {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
144
  display: inline-block;
145
- margin: 0 10px 0 0;
146
- width: auto;
147
- font-weight: normal;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
148
  }
149
  }
150
 
151
- .wbcr-state {
152
- margin: 0 auto;
 
 
 
 
 
 
 
 
153
 
154
- width: 40px;
155
- height: 40px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
156
  text-align: center;
157
- line-height: 3.4;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
158
  font-weight: bold;
159
- font-size: 12px;
160
- border-radius: 100%;
161
 
162
- &.wbcr-state-0 {
163
- background: #dff5c4;
164
- color: #798c64;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
165
  }
166
- &.wbcr-state-1 {
167
- background: #ffb1af;
168
- color: #a25f5f;
 
 
 
 
 
 
 
169
  }
170
  }
171
 
172
- .wbcr-use-by-comment {
173
- color: #a25f5f;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
174
  }
175
 
176
- .wbcr-script span {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
177
  display: block;
178
- max-width: 100%;
179
- overflow: hidden;
180
- text-overflow: ellipsis;
181
- font-size: 16px;
182
  font-weight: bold;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
183
  }
184
- .wbcr-script a {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
185
  display: inline-block;
186
- max-width: 100%;
187
  overflow: hidden;
188
- text-overflow: ellipsis;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
189
  font-size: 12px;
190
- color: #bbbbba;
191
  }
192
 
193
- .wbcr-float-panel {
194
- position: fixed;
195
- top: 30px;
196
- right: 35px;
197
- background: #23282d;
198
- padding: 15px 15px 5px;
199
- border-radius: 0 0 5px 5px;
200
 
201
- input[type='submit'] {
202
- display: inline-block;
203
- width: 140px;
204
- height: 35px;
205
- padding: 0;
206
- margin: 0 10px 0 0;
207
- border-radius: 3px;
208
- background: #FFC107;
209
- color: #907010;
210
- cursor: pointer;
211
- border: none;
212
- text-align: center;
213
- font-size: 14px;
214
- font-weight: 600;
215
- vertical-align: top;
216
- outline: none;
217
- line-height: 2.6;
218
 
219
- &:after {
220
- clear: both;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
221
  }
222
  }
223
- input[type='submit']:hover {
224
- background: lighten(#FFC107, 5%);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
225
  }
226
 
227
- .wbcr-close {
228
- display: inline-block;
229
- height: 35px;
230
- width: 37px;
231
- border-radius: 3px;
232
- font-size: 0;
233
- background: #9E9E9E url('../img/cancel.png') center center no-repeat;
234
- vertical-align: top;
235
- outline: none;
236
  }
237
 
238
- .wbcr-hide-panel {
239
- display: block;
240
- margin-top: 5px;
241
- font-size: 11px;
242
- color: #929292;
243
- text-decoration: underline;
244
- text-align: center;
245
- outline: none;
246
  }
247
- }
248
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
249
  }
 
 
 
 
 
 
 
 
 
 
 
 
1
  /**
2
  * Assets manager styles
3
+ * @author Webcraftic <wordpress.webraftic@gmail.com>
4
+ * @copyright Webcraftic 05.09.2018
5
  */
6
 
7
  html, body {
8
  overflow: hidden !important;
9
  }
10
 
11
+ html {
12
+ line-height: 1.15 !important;
13
+ -webkit-text-size-adjust: 100% !important;
14
+ box-sizing: border-box !important;
 
 
 
 
 
 
 
15
  }
16
 
17
+ body {
18
+ margin: 0 !important;
19
+ padding: 0 !important;
20
+ background: #FFF !important;
21
+
22
+ &, p {
23
+ font-family: Arial, "Helvetica Neue", sans-serif !important;
24
+ }
25
+ }
26
+
27
+ #WBCR {
28
+
29
+ /**
30
+ * Reset styles
31
+ */
32
+ @import "reset.less";
33
+
34
+ span {
35
+ display: inline;
36
+ margin: 0;
37
+ }
38
+
39
+ /**
40
+ * Placeholders
41
+ */
42
+ input[type="text"]::-moz-placeholder {
43
+ color: #cccccc;
44
+ }
45
+
46
+ input[type="text"]::-webkit-input-placeholder, textarea::-webkit-input-placeholder {
47
+ color: #cccccc;
48
+ }
49
+
50
+ input[type="text"]:-ms-input-placeholder, textarea:-ms-input-placeholder {
51
+ color: #cccccc;
52
+ }
53
+
54
+ input[type="text"]::-ms-input-placeholder, textarea::-ms-input-placeholder {
55
+ color: #cccccc;
56
+ }
57
+
58
+ input[type="text"]::placeholder, textarea::placeholder {
59
+ color: #cccccc;
60
+ }
61
 
62
  a {
63
  text-decoration: none;
64
+ color: #007acc;
65
  border: none;
66
+ background: none;
67
+ &:hover {
68
+ text-decoration: underline;
69
+ border: inherit;
70
+ background: inherit;
71
+ }
72
  }
73
+
74
+ button, [type=submit] {
75
+ color: black;
76
+ font-weight: 400;
77
+ padding: 0;
78
+ line-height: 1.5;
 
79
  }
80
 
81
+ label {
82
+ color: white;
83
+ margin: 0;
84
+ font-weight: 400;
85
+ }
86
 
87
+ select, [type=text] {
88
+ height: 32px;
89
+ }
 
 
 
90
 
91
+ .visually-hidden {
92
+ position: absolute;
93
+ overflow: hidden;
94
+ clip: rect(0 0 0 0);
95
+ -webkit-clip-path: inset(100%);
96
+ clip-path: inset(100%);
97
+ width: 1px;
98
+ height: 1px;
99
+ margin: -1px;
100
+ padding: 0;
101
+ white-space: nowrap;
102
+ border: 0;
103
+ }
104
+
105
+ &.wbcr-gnz-wrapper {
106
+ min-width: 1365px;
107
+ position: fixed;
108
+ z-index: 99999999;
109
+ top: 32px;
110
+ bottom: 0;
111
+ left: 0;
112
+ right: 0;
113
+ background: #FFF;
114
+ overflow-y: auto;
115
+
116
+ }
117
+
118
+ .wbcr-gnz-help-hint {
119
+ display: inline-block;
120
+ width: 16px;
121
+ height: 16px;
122
+ line-height: 0 !important;
123
+ padding: 0;
124
+ font-size: 11px;
125
+ font-style: normal;
126
+ text-align: left;
127
+ color: #fff;
128
+ background: #b4b5b5;
129
+ border-radius: 2px;
130
 
131
+ img {
132
+ display: inline-block;
133
+ margin: 3px 0 0 4px;
134
  }
135
  }
136
 
137
+ .wbcr-gnz-panel {
138
+ position: fixed;
139
+ z-index: 50;
140
+ top: 0;
141
+ right: 0;
142
+ left: 0;
143
  width: 100%;
144
+ display: -webkit-flex;
145
+ display: -ms-flexbox;
146
+ display: flex;
147
+ -ms-flex-pack: justify;
148
+ -webkit-justify-content: space-between;
149
+ justify-content: space-between;
150
+ height: 62px;
151
+ padding: 0 20px;
152
+ margin: 0;
153
+ color: #FFF;
154
+ background: #23282d;
155
+ font-size: 16px;
156
 
157
+ .wbcr-gnz-panel__premium {
158
+ position: relative;
159
+ display: block;
160
+ width: 20px;
161
+ height: 40px;
162
+ background: #ffcb1e;
163
+ margin-left: -30px;
164
+ &:hover {
165
+ cursor: pointer;
166
+ }
167
+ .wbcr-gnz-tooltip {
168
+ position: relative;
169
+ right: -30px;
170
+ top: 8px;
171
+ font-size: 12px;
172
+ font-weight: bold;
173
+ font-style: normal;
174
+ color: #ffffff;
175
+ background: #f22714;
176
+ width: 45px;
177
+ text-align: center;
178
+ border-radius: 3px;
179
+ padding: 5px 0 5px 0;
180
+ line-height: 1.2;
181
+ }
182
+ &:after {
183
+ display: block;
184
+ content: '';
185
+ position: absolute;
186
+ top: 1px;
187
+ left: 0;
188
+ width: 19px;
189
+ height: 38px;
190
+ background: #23282d;
191
+ }
192
  }
193
+ }
194
+
195
+ .wbcr-gnz-panel__left,
196
+ .wbcr-gnz-panel__right {
197
+ display: -webkit-flex;
198
+ display: -ms-flexbox;
199
+ display: flex;
200
+ -webkit-align-items: center;
201
+ align-items: center;
202
+ -ms-flex-align: center;
203
+ }
204
+
205
+ .wbcr-gnz-panel__left {
206
+ min-width: 800px;
207
+ margin: 0 44px 0 0;
208
+ }
209
+
210
+ .wbcr-gnz-panel__logo {
211
+ width: 38px;
212
+ height: 32px;
213
+ margin: 0 44px 0 0;
214
+ background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACYAAAAgCAMAAABJuvqBAAAC+lBMVEUAAAD7bBgLxt8LyOP/oRqTVqOWV6T/gALpHxCKT5oMy+bwCgX/dhn/oxeXV6XxJxP/igzxIQztFAP/iQAIwNfoIBP/jgkPz+wOzun/igf/fgD/iggOze3hHxDuDAF0P4KWV6UP0OzyKxX/lw3iHxD/hAaXV6XyGgsPzu3/ggaJTpn/iw6JTZiUVqOUVqTlFQsve3T2Qy1lazvqIhOBHyvvlxW7FRCTaR3xGQX/kBIP0eyGTJbjIBKASJAAXn3uFQMPzewJxNo1JFOLUZuHTZb/xCEAkqmXV6X/ggB5QogNyOD/WSaWV6VjNnBHFTsLUVnrEgMQ0en/ggADtsz/mRTvJRT/igfpDwLgHw//ixD/igYQ0un/xiXlIBP/rhnnIRSXV6X/lgT/ig36OBz/ZzbkJBj/fAAMyeD/iQoFtMkPzeyNUZziHxHgHw/mCwIBobT/yy3kBQNIIVp2dz4PzewAc4L/ckKXV6V6JDr/oRb0DAD9egD/jAcOze2XV6XeHw7jAwPnIRSXV6X/vSoPz+j/fgB+DjKXV6X/ziAPzuzlIBP/iw7/yx7yJxT/YCLpIRQP0uwLxt2TV6T/YSD/nBTuJBT/jhCQVKCNUp2DSpL/xRf8PRf4LhTsIhT/kREQ0egOzOQMyuEJwtiKT5qGTZaASI9xPn//XSH/tRr/Uhf/oBb3KRPjHxAHv9UGvNEDsMUCqLwAjp98RItdMWg3Hkr/VyD/xh//wR7/Xx7/XBv/rxn6NBf/rBb/lxP/lBP+RRP9NQ3/igv/iQv+Kwv3Iwf/pQUOzuYGt813QoZqOnYAYHRULmJBJVQwFz3+Tx//1R3/uxz8Rhz/Shv/pxj/phb/vhL/sgr/mAIPzucEuc4BoLMBnK4AmKoAg5MAf5IAd4cAbYEAbHxkNnAAT2kIVGQASF5KJ1kARlcVU1U+ZEYsGEVfdTtIHDltKzJ6fS2OOCyniinWsCL/YyD3YCDkSyCrNCDvyR+8KR/50Bj/uRH/tQ7/qwnxGwX/kQIQ63s7AAAAh3RSTlMAAyIQCsuvaz8wKx4Y/vn58PDp5+Xk5NbAu6+rqJuVgH15d3dpXE1HRTAoIyAYFhQNCv7+/fz7+vn39vX19PLy8O/u6urk397c29ra19TU087JyMfGxMO6squjoJ+fnpyZmZiUk5GRkI+Oi4uJiINybGZhYV1dWldPTk1LQzo6OCopJSMYEw7x8GTCAAACaUlEQVQ4y2LABzgi6hkIgsZYmzUqhBQZKol2da3JJaBKPXRuP1CZLF5FPMn8vVON+/ErYyzznj2ndyrIuBw8rkrZsfzinN5ekDI8XlBaObnv3O7VYOM4MGSZmZiYmIE0t+D+HX1bIbaK6qMq0VCMlvASEQnOByoTOrCzb/klkHH98YwwFVwaJYoy4lYTbiycuPbmho2lDAxyR4C2go0TRNgp0wkCE+YvmLho3fqNp/wNGNQtZu/oA3lidSrCvloHsKpjQMPW33n43LyaQT/gMMQT/BWMCHVZMMOO37r/9N3RNAaGvCP7QbYeNnHyldeCO18CpGrhonUb7j5+/eOaBw9Dgz3YE9+3nF621CVbD6qOSXwCyEqgw15+O3/1ryoDQzjQE5++vDlzctPMxdNZOWGeBSgQZOXtBy8+nu+YdVSKgaHwz/7Jn99u2Xxi5pIZ0yf5NEHVtaQ7rttw78mHWT0dPdeEecBB9/4V0Moli6dPam9n1YWHXqabndGeFds6Oq5eZwcG3eGvZ5+BrJwxqR0IEhAeNig2vbJrew/IVkaGKrOzZx6dWAq0EqyMTw2hLnHKqj0XgLb+EtZkaPPbsnnZUrBhYMAGV1VjuXfKZZCts0C2Fm1etgnsfj53NoXyOh14Uoyctm8KL8jWnt9BLAwM8p621s6sbApqeihpRFtg2ry9YFs7foq1AgV0ODm1dBnRUxtgqt3d8/ZNuQK2VRl3ks3o7p42b8oqkK0xLLiVSR/qBtl6eYVrAR5VDJKHurtBnohrxpszw0DK5oVUEsjlkgcPdospszAQAFEHBZK0GQgCdmlNfNIAQzEmYu+mR3cAAAAASUVORK5CYII=");
215
+ }
216
+
217
+ .wbcr-gnz-panel__data {
218
+ display: -webkit-flex;
219
+ display: -ms-flexbox;
220
+ display: flex;
221
+ -webkit-align-items: center;
222
+ align-items: center;
223
+ -ms-flex-align: center;
224
+ margin: 0 -22px;
225
+ padding: 0;
226
+ list-style: none;
227
+ }
228
+
229
+ .wbcr-gnz-panel__data:not(:last-child) {
230
+ margin-right: 22px;
231
+ }
232
+
233
+ .wbcr-gnz-panel__data-item {
234
+ margin: 0 22px;
235
+ color: #909090;
236
+ text-align: center;
237
+ vertical-align: top;
238
+ padding: 8px 0 8px;
239
+ }
240
+
241
+ .wbcr-gnz-panel__data-hidden {
242
+ display: none;
243
+ margin: 0 44px 0 0;
244
+ }
245
+
246
+ .wbcr-gnz-panel__data-hidden img {
247
+ vertical-align: middle;
248
+ }
249
+
250
+ .wbcr-gnz-panel__item_value {
251
+ font-size: 15px;
252
+ color: #d0d0d0;
253
+ background: #4c4c4c;
254
+ border-radius: 2px;
255
+ padding: 2px 5px;
256
+ }
257
+
258
+ .wbcr-gnz-panel__color-1 {
259
+ .wbcr-gnz-panel__item_value {
260
+ background: #ffa499;
261
+ color: #632121;
262
  }
263
+ }
264
+
265
+ .wbcr-gnz-panel__color-2 {
266
+ .wbcr-gnz-panel__item_value {
267
+ background: #cfe699;
268
+ color: #456103;
269
  }
270
+ }
271
+
272
+ .wbcr-gnz-button__pro,
273
+ .wbcr-gnz-panel__reset,
274
+ .wbcr-gnz-panel__save {
275
+ &, &.input[type="submit"] {
276
+ display: inline-block;
277
+ padding: 8px 15px 7px;
278
+ cursor: pointer;
279
+ transition: .1s;
280
+ vertical-align: middle;
281
+ text-transform: uppercase !important;
282
  border: none;
283
+ border-radius: 2px;
284
+ font-size: 14px;
285
+ line-height: 1.5;
286
+ }
287
+
288
+ }
289
+
290
+ .wbcr-gnz-button__pro:hover,
291
+ .wbcr-gnz-panel__reset:hover,
292
+ .wbcr-gnz-panel__save:hover,
293
+ .wbcr-gnz-button__pro:focus,
294
+ .wbcr-gnz-panel__reset:focus,
295
+ .wbcr-gnz-panel__save:focus {
296
+ outline: none;
297
+ text-decoration: none;
298
+ }
299
+
300
+ .wbcr-gnz-button__pro:active,
301
+ .wbcr-gnz-panel__reset:active,
302
+ .wbcr-gnz-panel__save:active {
303
+ -webkit-transform: translateY(2px);
304
+ transform: translateY(2px);
305
+ }
306
+
307
+ .wbcr-gnz-button__pro {
308
+ &, &.input[type="submit"] {
309
+ position: absolute;
310
+ top: -7px;
311
+ right: 0;
312
+ margin: 0;
313
+ color: #564713 !important;
314
+ background: #ffcb1e !important;
315
+ box-shadow: 0 4px #e4b526;
316
+ font-weight: 600;
317
+ font-size: 13px;
318
  }
319
+ }
320
+
321
+ .wbcr-gnz-button__pro:hover,
322
+ .wbcr-gnz-button__pro:focus {
323
+ &, &.input[type="submit"] {
324
+ background: #fdd03a !important;
325
  }
326
+ }
 
 
 
 
327
 
328
+ .wbcr-gnz-button__pro:active {
329
+ &, &.input[type="submit"] {
330
+ box-shadow: 0 2px #b9921a !important;
331
  }
332
+ }
333
+
334
+ .wbcr-gnz-panel__reset {
335
+ &, &.input[type="submit"] {
336
+ margin: 0 10px 0 0;
337
+ padding-right: 30px;
338
+ padding-left: 30px;
339
+ background: #E1E5E9;
340
+ box-shadow: 0 4px #A8AEB3 !important;
341
  }
342
+ }
343
+
344
+ .wbcr-gnz-panel__reset:hover,
345
+ .wbcr-gnz-panel__reset:focus {
346
+ background: #E7EAED !important;
347
+ }
348
+
349
+ .wbcr-gnz-panel__reset:active {
350
+ box-shadow: 0 2px #A8AEB3 !important;
351
+ }
352
+
353
+ .wbcr-gnz-panel__save {
354
+ &, &.input[type="submit"] {
355
+ margin: 0 10px 0 0;
356
+ padding-right: 30px;
357
+ padding-left: 30px;
358
+ color: #222 !important;
359
+ background: #FFCB1E !important;;
360
+ box-shadow: 0 4px #BF9A17 !important;
361
  }
362
 
363
+ &:hover, &:focus {
364
+ background: #FFD340 !important;
365
+ box-shadow: 0 4px #BF9A17 !important;
366
+ }
367
+ &:active {
368
+ background: #FFD340 !important;
369
+ box-shadow: 0 2px #BF9A17 !important;
370
  }
 
 
 
371
 
372
+ & + div {
373
  margin: 0;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
374
  }
375
+ }
376
+
377
+ .wbcr-gnz-panel__checkbox {
378
+ cursor: pointer;
379
+ font-size: 15px;
380
+ transform: none;
381
+ }
382
+
383
+ .wbcr-gnz-panel__checkbox-text, .wbcr-gnz-panel__checkbox-text-premium {
384
+ position: relative;
385
+ padding: 0 0 0 26px;
386
+
387
+ &::before {
388
+ content: "";
389
+ position: absolute;
390
+ top: -1px;
391
+ left: 0;
392
+ width: 20px;
393
+ height: 20px;
394
+ border-radius: 2px;
395
+ background: #ffcb1e;
396
  }
397
+ }
398
+
399
+ .wbcr-gnz-panel__checkbox-input {
400
+ &:checked {
401
+ & + .wbcr-gnz-panel__checkbox-text, & + .wbcr-gnz-panel__checkbox-text-premium {
402
+ &::after {
403
+ content: "";
404
+ position: absolute;
405
+ top: 5px;
406
+ left: 6px;
407
+ width: 8px;
408
+ height: 5px;
409
+ -webkit-transform: rotate(-45deg);
410
+ transform: rotate(-45deg);
411
+ border: solid #444;
412
+ border-width: 0 0 2px 2px;
413
+ }
414
+ }
415
+ }
416
+ }
417
+
418
+ .wbcr-gnz-panel__checkbox-text-premium {
419
+ display: inline;
420
+ color: rgba(245, 245, 245, 0.3);
421
+ b {
422
  display: inline-block;
423
+ font-size: 9px;
424
+ font-weight: 700;
425
+ color: #fff;
426
+ background: #f22714;
427
+ width: 25px;
428
+ padding: 3px 0;
429
+ text-align: center;
430
+ vertical-align: top;
431
+ border-radius: 3px;
432
+ line-height: 1.5;
433
+ }
434
+ &::before {
435
+ background: rgba(245, 245, 245, 0.3);
436
+ }
437
+ }
438
+
439
+ .wbcr-gnz-panel__close {
440
+ width: 36px;
441
+ height: 36px;
442
+ margin: 0 20px 0 20px;
443
+ cursor: pointer;
444
+ transition: .2s;
445
+ border: 4px solid #FFF;
446
+ border-radius: 50%;
447
+ background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 352 512'%3E%3Cpath fill='%23FFF' d='M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z'/%3E%3C/svg%3E") no-repeat 50% 0px;
448
+
449
+ &:hover {
450
+ opacity: .7;
451
+ }
452
+ &:focus {
453
+ opacity: .5;
454
+ outline: none;
455
+ }
456
+ }
457
+
458
+ .wbcr-gnz-content {
459
+ display: block;
460
+ width: 100%;
461
+ margin: 0;
462
+ padding: 62px 0 0 75px;
463
+ }
464
+
465
+ .wbcr-gnz-tabs {
466
+ position: fixed;
467
+ top: 62px;
468
+ bottom: 0;
469
+ left: 0;
470
+ width: 75px;
471
+ margin: 0;
472
+ padding: 0;
473
+ list-style: none;
474
+ background: #F4F4F4;
475
+ box-shadow: 2px 0 5px rgba(0, 0, 0, .2);
476
+ li {
477
+ margin: 0;
478
+ padding: 0;
479
+ }
480
+ }
481
+
482
+ .wbcr-gnz-tabs__button {
483
+ position: relative;
484
+ display: block;
485
+ width: 100%;
486
+ height: 130px;
487
+ cursor: pointer;
488
+ border: none;
489
+ background: #ECEDED;
490
+ border-radius: 0;
491
+ box-shadow: none;
492
+ -moz-box-shadow: none;
493
+ -ms-box-shadow: none;
494
+ -webkit-box-shadow: none;
495
+ -o-box-shadow: none;
496
+ &:hover, &:focus, &:after, &:before, &:after:hover, &:before:hover {
497
+ -moz-box-shadow: none;
498
+ -ms-box-shadow: none;
499
+ -webkit-box-shadow: none;
500
+ -o-box-shadow: none;
501
+ }
502
+ }
503
+
504
+ .wbcr-gnz-tabs__button::after {
505
+ content: "";
506
+ position: absolute;
507
+ top: 0;
508
+ right: 0;
509
+ bottom: 0;
510
+ left: 0;
511
+ opacity: .55;
512
+ }
513
+
514
+ .wbcr-gnz-tabs__button--misc::after {
515
+ background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACEAAAAtCAYAAAAgJgIUAAAIhUlEQVRYhe2YXawdVRXHf2vtOXPOvbxUEgUJhdaIQemlbSgkkEZaiiSg4EVBEWKkYIg+qDQoiRFj8QElQT4SjSEitNGAYtKCRjFa21tTUhVbKrcxGFAqfTDBALVpe8587LV8mJlz59wvkBifXMmcMzNrz6z/+q+111575Iu33cZCkqYpSRI4caJPr9fTLM/PU9WLLcY1wFkOpwI9YAC8IsKLguwT1d0i8gxQqgqCoEFRVQQZsfG1zZtJFkQAiIDDScCNWZ5vdPfzYlnOKEflNDdf5fg1uCPwJ1H9gUp4COVfi9nRxZRltCuzLNsLfNvNzhsanwuA2Tp3X2kx3lMUxe9itGveCogUkXtjWf7Uok3MMew+c8y+bu7Vz7j72WVR/CTL8gfd/CTmwT9fOMYQeRSYnOOxO4gcCCHsctgvIi8Dx919XISl7r7Kzde7swZ8hBmL8Zb+YLB8rNe7RoMexRcG0R0CmGVcRH6WdtP786LYnSQhltFQFdwdEFQV3B8lIG5+kZndalaHoWHF7AP9wWDb2FhvUlWPNUBGwyHyzREAFbVHEbkZuEpD2AnEhnG8PuqxTXBE9elOJ7k26STXI/JqO0RutiEbZA+4O80T2uv16I31SDrJ5cCtI96rvtztppcCDw+Nvilx3CFJksd6ve4lIvKXNpAY4015XnzMrQahqqjISWZ273AgICLHer3uR4KGZ9r3R5mbMboAFjpJ8lyv150UkVdbL6csinvKsjwZQE/0+5w40f+URTt7mIgVtZ8fDLJ9/X5/XuPujkVDRBBRRGRmZtToRAVzR0PyfKfTuQV3G+JzXxrNPgMgX73jjmSQZX90s5UNCIFfAB9ssYKoknYSRIQYjSzLAOikHUDodBLcHFHBzcjzgjRNK3C1DLLsMYvxupadF9M0ndAsz1a5+7ktFjztpnePjY8xNj5Gt9utvRXcIYRQz4i5kQlJIKgCggMxRsyMGCPRIiGEuxEpWmy8O1q8UFV1Pe4zcEWm87zY0+8P6PcHDLJsmMV1mBcWn6WXCjR4xRIcEJE/tHPM3TdoLOOadlEKQXd0045107SZ+1AvO/NX6wVKeK0REUJIQKpzVflVy2HMfE0CvKeuhI03+2K0IY012slo9l4x+XmA51p21sYY368ivwf5TWPI3c92t8kY5aWk44+HoB5NajZk36wl4MzE3d/RnhWielhVazyOm9/iZg86kJvdLnChmT0PrEVkp8XYMUBUrwiqT7n7GXmRT7n5KaWVkHF6kiTfGsapKvURCHUElygiY216qNYCRIQkJCByw1DnvqQoy0tUlZAkl+HeaRwoy/LKaEYZywvc/JTmfow2aWbtZD4O5K28SBX3QTuO7j7u7nVSKSGE7UOWRPrdtLsnSQKq+tvmPiIkSfLroEqSJPtF5Ehz391/mecFZYxVXsA41SrdmCwSRP4JvHNoCE4XFVSUJEnQEB5wt9fNfKLX7W4LSXgOoBvCDvAryjJuSELY0+umT3jF79/MfEOM8RNu9oK7P4wIImDmuNnSJhR18h5JROQFNzu3WenMfbU4P4oekSioBlcNWyFW061VFIPqU6b+lEhVF6op6qiwX0LYX7jVK7oQQkCA0mV1m3lEDqtIK1vdcbdLRRAVwcxajQsj9aK+Na8MF1cHUaWTJFWZN8divKzdDAnsU1Xd1UKFOytxLpC6KY0WR80JC5cGaSrKjIQQ0KAEDajqOcCFbXsadKeqyD6BP7fQhTLG24UqjgJV0Wo6JDNiWc6hQajKdIyxAlK/rywKBv0Bg8GALMtu89Gk/LuI7FFRKTSE77fRWYxXlzF+PIQEDdV6EFTJ84I8zymKkizPafoBxxlkOWVZkuc5CBRlSSftMD4+zvj4OGmaXg58ciZmjopsveuub5xQFaWTJA+JyF9bQKQoiu/GWJ4jVWmtXG01JmaG1SuzO1iMdTykTgqvwCcBhHcVZfkwTTtZTfd/9MZ63wFQEVDVo51O50sjzYv72waDbFtRFO9bIPyjv/MuLILFeNagP9jmZqcOx1T/X+73B69QhTugqqRpuj0k4Xsj/aD7e7Isn4oxXtuy+aalLMsPnegPpqzVq9QO/tjdt7pVTM40ugLdbneTqu4Y2Tu4v70oisfLovyhm58/4/nciVJve3D3lcBDRVE86WanzWJpLyKfbW8HZlp+B1U93hvrfbRf0bdhZN9gdoO5XyewV1R3COx34WXwYzjj7rY0mq+O0TZYtLWIdOZQ47632+teFUJ4feF9RwXk6NhYbzIbZPfHGG8eMlKBCe6+1mNcW/tuCBmQ4h6asT7SGgzPHwU+p6KvBdWRGT53G1gBOZam6aeTJLleRF6ab3tXFxEFxoAwslVstwYih4GbcL8BeG1Yd1t7lkU3xCHoYyEJ52sIXxGR5+fsN+c4MKJ7UVW/3ut1LwAeWczOop8GqhVdXg1B7yLovWZ2Ec56M1sDnOFwMpACucDriBwWkf2iukvgaXM/LrqonxWIZcuXv+GgWgbAzvr4r8obw/wfyP9BNDJvYh6cnt4FrAM2r5iYuPPg9PQ6oOk7pHW+vh73CLAMOAJsATbV+mXAfcx8btgCbFoxMXGkbW8xJg7VBgAurq/nk+21bj1wJ9XnhRuBJTXYZcDVwMYazPbZL1hsih5oebAOmKpfPp8sqY8t9XOH6meXActbDhyZ8+SbALHu4PT0KmAV8OQC49ZTedd4OEXl+Zn1dQOAFRMTT8z3gjdKzCngwy1Q88kRYDWVxxtrwPe19Euak4PT08veCojdVCGYWkC/CngJ+AKVx1vq/2XMMHdja/z2g9PTz/6nIKbqF+5eQH+gNrwZeLYGtAp4oNbdT8XKbN2ILJQTW4FDKyYmDhycnt4MNLHc3NI3spHK65X19ZPMhG5TPbYJ6dYVExOHZhv7N8fmQDQfwhMYAAAAAElFTkSuQmCC") no-repeat 50%;
516
+ }
517
+
518
+ .wbcr-gnz-tabs__button--theme::after {
519
+ background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACoAAAAvCAYAAACVDljoAAAGA0lEQVRYhe3Zf6ifVR0H8Nf1TnNb1lYUUS6jX0hhm2lB5XS3WWCQzkqLhmzTiAqsjSjoHrAtOtEvdEERkbWGki1JyyBY2HaNxFbN3RmFkdDVEZHLvK3N1ly7/fF5nu6zs+f53ue7DfrHNzx8v+c5n8857+fz+ZxzPueckfHxcaeAM3ARLsPFeBVehLNxGI/jEezGffg1jjYbyDn36mjeSRJciLVYVxHtwouxDO+pyntxG27FP4bp8IyhKfJOPICvGkyyDUvxZfzSLPleGIboWbgZ9+CCYTppwfm4E99IKS3so9CX6Hxsw4aO+kncguvMxuulWI0v4Tcdeh/E3Sml58xFYKTHYHoWvodVLXU/xmYxUP4zqB+8Geu1u/xnWJVzPtjVQB+Lfr6F5AHcgCuxYw6SMIP7cQ3ejyeK+pX4yqAG5iJ6hbBCE/txOb49h24X7sBb8afi/fUppWu7lAa5fqGIrfMb7w5iBV4vrDNfuLUvZoT1J0Q4/QLPb9Tvw7Kc899LxUHz6JqCJHy0IvsFLMZf8a8hyI7iXLwFD4nBdKdZzy7Bh/C5UrHL9fOqRpr4CbbgHDFV7RKx9UYxyt9Q/XY9F4kB9YOq/XNwF75f9LMupXR2G6E2LMPrGuUZYUU4Vn3gY/gdNlbyhzvaqvs5VMnuwdVVO6p2340zq/Ir8Sbs7EN0zPHu/K2Ipzbdd+m/ANxevsg5T6aUfiXCocbKvkQvLsr3mrVAjdoCN4nYerqon8Gzqz7+LWJ5jxiMJX5aEC377yT66qK8u4VEHd/7RbbUJDpStX0P/ibi84iYf0db+ivbP68v0RcW5X1FeaRB7LParUTMwX8W2dIBXIWnWuQeE9NW/RGL+hKdX5QPdcgx99S0AM8VM8VZHTKHhMXrfk+Q65qeyhG8YACRMnabmGnUHx0gu6AgV8Z7J9H9RfncAWRK6zdxpll31oNvpkVuieNjd7oU6HL9Hx0/j14olrwm6oZvFJl8c4sxUtXvESvZpcK1D4k5s8SFRbkcE51EdxcNXl51XlvjqFiRbsKjFYnSO8fwtur9oUr/Aryjqm9a9u0t/fciurMoL62I7arKR8TMsKlDfy4cUQ3ClNJrxUrUxI5SoStGd+P3jfIoPtnQGSZjakMdGvBxxw+kR524CnYSfRrfKt5djffin6fG8X/9PiXy3euKuq055xPm2kFp3q34CF5RlUfwdSwXicS1YiS3jeJBGBUW24OfFxz+gq+1KQ0iegCfEKlYjcXYLoL/i9qXwz54OX4oDiua+FTO+fE2hbm2Infjm8W7l4gM/Rqx7A37XFHpv6Zod1vOeWsXkT6buw0ie2riBSLhvV0kzH2wVITTj8S828QD+PAg5T5HOofEnHqXyBObWI33VR3diwdFgnFQLItLxGS+EpeYXZ1KklfmnJ88VaJEvK4Se/gbirrRisQlVfmYyD/PMncMfxc3tm3mSgxzpHMQHxD78nKrW7Y532CS+3A9VvchWTc6LO4QcZnw8JC6j+AzYpXbMoziyR47PiG2tDeLneWY2D68FM8Tbj+CJ4X1HhTL8v0G57annWiNw2JdPmFtPt04Gdf/X/AM0dONZ4ieboyMj4/v1L4vH8OnG/9Vcjsb5XInQKSDdZsbxS5gRUN2pGp3Y6E3kXMeSymtr+oXYQqbcs7fmSeSjkXimHFtg8TkwE+cxYYO2amK4CZxrj+FlxUyY43/0ymlZeIuYLNIXtZgS0ppYl6jk8vqL+tJsMZkh86k2SP1FZXM2kJmonkhVhFl9oM2YCum+0z4KwzO4pvun3C8R1aII8llwkIlZlJK9f+NOedNKaV1wqr1R27OOU/0ITpp9tqmdk0TTdeXBwcT4ryJ9vBoun6qlss5L66sexU2ppT29iE6bXA4dLmeuNb52ID60vXrcUtKaSznPJFSmhKD7rxTXesJCzct2bw0m6jqu65mdjZcT+x011TvJ4QHp7F1dPny5bXQiDD/fQ3FEXHR2nTbdCUzXT0PV3r1s0tcyO4Vd57Erd90Q3ek0JnCVM55+44dO7bhD5XsdmzIOU/9FxZhkSePNaNRAAAAAElFTkSuQmCC") no-repeat 50%;
520
+ }
521
+
522
+ .wbcr-gnz-tabs__button--plugins::after {
523
+ background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC0AAAAtCAYAAAA6GuKaAAAKSUlEQVRYhe2Yf4xU1RXHv+feeW8GdpBlQViGqouCmJgKRGpTawsEa2JSKVSspkZl1fqrsYXIaOtSFxQ2wFB+pMXaaiumqVWJYG2iiVGBRkNbi2BrWxOxrFBlV9idnZndmXk/7j394923+3bYWXY21v7Tk7y89+6959zPPe/cc++7tHPnTgwl77777pDlAGDbNmJSolgqIZFICNd1LhUk5iut5wGYCeZGAAkAZQCfENEREB0URPuJ6C0AvhACIMK6deuq9lNNYjVrACACAK4DsNx1nGZmvtSHCupOb57SzHPAvIwD5XcE0a9J0BMClBtN/2I0SspX1ziOewDATzXzpSHsEMCorGPm2UrrzZ7n/1EptWw0/dcKbROwxVfqRaX15ytBOXJVvodloQ4zX+T5/q4fPPDAz1sfeqjuvwU9hoBnAawcChbAYSnFVinETTEp50sp50khvhqT8kYpRIaI/jIUvNL6jrLj7GltfeiskYLQCCdinIBnACyJFjIAIvq9bVvbPNfbb9mWUr4CCQEwg5mDZ9OSmS/XWq/QWi8LwUM7QojXxiTiS9asfbj3TNAj8jQBG6LAxlt5Am4DsFgK+ToAxTygw1EDwQsLojctK3adFYt9m4CuqNe11ovKjrt9RDzVPH3kyPsgEHzfv9r3/Zei/QshjtmWtWxqKvVWfzkzwAylgixSLpehtQYJAcdx7rNisVlTU6nvEuAxgH998MElZcd5jplnRT1uW9b169vanhsOuqqnhRAgojqt9Zao14ioNxG3vxkFBgBBBNfzvua47lVBSAAkBDzPu7u3t3dzdzb7nRMnTjzqeZ7lOg6apk//ayIeX0JEXf22AXi+v7mlpaVhVNClYgnFUukWpfVFUU+A+XtTpjQehPEsmEFEKDvO4k86O/ecOnnyeadcXiClhOe6d+Xz+R3MDAJgW9ZRIaX2fR++7+OCGTPes6zYHQzosF9mPkcrddeooBNjEjEhxB3RMiJ6acbMmU/GLAsxy4Jl7lIIaK1n+UrVaeZkV1fXb/r6+jbnC4VHmZkIwNSpU1dOOvvsNs/zVF+xCGm+xvr1bbulEM9F41tp3bx6dUuiZmjXceew1pdEvMxx294opUT0EkKgVC7HJzY0bJna2JgGAF+pVKG39z5mJiGEk0qlVjRMnLjNdRzkcjk4jrPy1KlTj4FZAoCUciMBXsTbM7TSX6oZWgixkCPpmIC/uZ73RjQszKREb6Hws48++ujpiZMmbW5sbLw/amf8WWf9oi6Z3F4qFtGTy8H3vDsLhcLmU11dd3788cePAcD6trbDRPTn6Nxh5kXV2KruPXyl5kUXECnlqzErpolMqbnnc7nrcrlcMwMgIYrTpk1rBkAdHR0bAaBQKFxj2fbziURiv+e6d+bz+R1aa0FEcFz3aMRJr2ilvmwcBB1svmqDBnAhI7oA8EGlFEJoIoKv1ISTJ09uCD2UzWaXE4DUAPgGX6mm7q6up8eNG7crl8/fo7WWRIRkMrkqJuWP+3sjHKxYZc+rGZqZJw9asUgcF0IMWoZ7stlbXc87P6rXnc0uB8CpadNuBcAdHR0bfaVS2Z6e7wOAIHLG1tU9aMViW7TuTxog0DEACoA0APU1QxMwJvIMAH3MjL7eYJUVQsRz+fzNQ+l2Z7PNAMh4nDs6OjaFdclk8vEJEyZs0VoPXjWBPgAuB3scALBrhmagPOhzMY8FA77vA0TwHWeW67oXVtM3Hg9DBSF4sVRaXJdM7kokEn/giKdBGItgFxmKhyoynKdPAphqBgAQPico+NsgIiilpmitq+bSIcCpo6Njo+/753Z2dr44ZfLkb8UTiVfCtlrrcxCGBgAQ9dQOLeh9rfmS/v2v5rlM/IwOJyOzQ0DlJx4J+AYTegkeHNNzB/UPHK8dGnSQwNfCgDHzlUREHAgs2z5s2fZR13Wnn4Eb3dnscmYem0qlbgYzMfMHtm2/GB2w0vqqMFuZLe/BmqGFEHvD2W3+NGYz+DIp5Z9czwP7/myt1Ij+OIgI5XKZy45jj6+v31AsFqHNngUAVq9uuRhA/wpIAKQQr1dlq9qREAdB9I/Ir5NUvrqfAfie95WeXG63r9TkMwHHpDw2ob7+9uS4cTew1gWtVLCNjYjjuPeBOToJPwTRGzVDCyJPCvHL/kEAUFov7evray0UCruVUpP62wrRG4vF/h3R9S3L+uf48ePXNDQ0fFFIGdihaD4KpKXlwasB3BS+m5X1qba2tmI1tuEmImJW7Aml9T1gvsCAU6lY/JHSun+WSyEKyWTyeinlYQAXM/NYx3VPJOvq/h6zrKLyfbDWQ/6pd506db7v+78KOUwsnxiTiO+oxjU8NAgkKG9ZsbTrersjRwADwFLm6+rqbiAhXmZmxBOJE2CG63nQzODTF5B+6e7umlkql3dpzY2hbXP/4Zq1D38yHHT18JACQgjYtr0nJuXjYecxy0Is2JaqRDz+E0H0MkyMstanxetQ0tnZ+fVSsbRPaz27Yr/x7KZNm546k/6ITpji8fhKXS5P11pf6ZTLYQeyr1hsEUI0CUHbCfQWgvwNEOA4ZRARWDOEFNBKI5fPz3Zd914AzQBERcgcIODukfCMCJoE9Y1JxK8tlZ3dWutF0XMPrfWNrHEDiA4IoldBeJuYjgHoZfDY4PdJz1VKLVJaX0GAVWmfgQOJeHzxI+vWZT816ABc5Mck4kvKjrtNKXUbMOi4SzLzFYr5inAsBDgAbDZLs8n1g846zPPTAO59ZN267pGy1HQAKYTstW3rds/Da0rp9cw8vQK+vynMLjFaPgiY6DiYWzdlMk/WwhAaH7GwyQVSyt/GpPyCFKKFiN6rPK87XW9Q3REhxMOJePwyADUDA6M86uXg23ZJKdsEsIW1vpzBC7XmeQDOBXMDgv2wC6IsAceJ6G1BtBeEN1lzn6ichp8GdFPTGfdBoZQBvG6uz0RGdT79v5b/Q39WQqtWrWqtKHsKQDuABQDmA1g7hF4rgP0A9pn3yrb1CI6GzwOQA/CCsVnZNnz+XSaTOQwA6XR6OYD2TCazL51O1wNYDmA8gA8BvJDJZHoEgDWmYoG5HwXQZIytqTLYNaY+lGjbegB7AWw1NlsBHAIwZ4i24fPWiK1bAMw3wIeM/gLTZi8wEB47ASwEMDeiOFrZasCnG5thGvpGlfbtABak0+kFFeVzEDivOZPJLASwFEBPOp2eU5nymsw9h+CTjEaWIHBC+DfdA2DCMO3bEYRZKwbCDQAOm2tPOp3eZ+qaM5lMe+jpNQgWrUOm4c5RAgOBl0PgVgwsiHuH0VmLCm9nMpkeBF9qpbG3AsChdDrdVBkeYYhUPXMYgRxGEINAMKkXmrKqkslk2g1Df1IwA3gSwM5MJrMUQZjVA7glDI92DP40UVkQee4xAPsQjPwdU748ArYWwB4MZJgwNocFN3pHTR8hyxIzgO0YmPgfjiRP741c4SxfaSD2mKsdwcYeCNLbUjOQvQb+hUj9kBLxdr1532d05hg7KwBsy2QyO/8DenfAKWku08QAAAAASUVORK5CYII=") no-repeat 50%;
524
+ }
525
+
526
+ .wbcr-gnz-tabs__button:hover,
527
+ .wbcr-gnz-tabs__button:focus {
528
+ outline: none;
529
+ background: #E6E7E7;
530
+ }
531
+
532
+ .wbcr-gnz-tabs__button:hover::after,
533
+ .wbcr-gnz-tabs__button:focus::after {
534
+ opacity: 1;
535
+ }
536
+
537
+ .wbcr-gnz-tabs__button.active {
538
+ background: #CACDCF;
539
+ }
540
+
541
+ .wbcr-gnz-tabs__button.active::after {
542
+ opacity: 1;
543
+ }
544
+
545
+ .wbcr-gnz-tabs-content {
546
+ display: none;
547
+ }
548
+
549
+ .wbcr-gnz-tabs-content.active {
550
+ display: block;
551
+ }
552
+
553
+ .wbcr-gnz-info {
554
+ display: table;
555
+
556
+ padding: 0 30px 30px;
557
+ color: #5C5C5C;
558
+ font-size: 15px;
559
+ line-height: 21px;
560
+
561
+ p {
562
+ font-size: 15px;
563
+ margin: 0;
564
+ &:not(:last-child) {
565
+ margin-bottom: 25px;
566
+ }
567
+ }
568
+
569
+ .wbcr-gnz-info__warning, .wbcr-gnz-info__go-to-premium {
570
+ display: table-cell;
571
+ width: 49%;
572
+ text-align: left;
573
+ vertical-align: top;
574
+ padding: 20px;
575
+ background: #f9f9f9;
576
+ //border: 1px dashed #d8d8d8;
577
+ border-right: 2px solid #fff;
578
+
579
+ }
580
+
581
+ .wbcr-gnz-info__go-to-premium {
582
+ background: #f9f9f9;
583
+ //border: 1px dashed #e0cb14;
584
+ border-left: 2px solid #fff;
585
+ margin-left: 10px;
586
+ h3 {
587
+ position: relative;
588
+ margin: 0 0 20px;
589
+ padding: 10px 0;
590
+ text-align: left;
591
+ border-bottom: 2px solid #e2e2e2;
592
+ vertical-align: bottom;
593
+
594
+ span {
595
+ display: block;
596
+ font-size: 17px;
597
+ font-weight: 600;
598
+ color: #e47558;
599
+ text-transform: uppercase;
600
+ }
601
+ }
602
+ ul {
603
+ list-style: none;
604
+ margin-left: 5px;
605
+ margin-bottom: 20px;
606
+ padding: 0;
607
+ li {
608
+ margin-bottom: 5px;
609
+ font-weight: 600;
610
+ font-size: 15px;
611
+ color: #7d8871;
612
+ padding: 0;
613
+ &:before {
614
+ content: " ";
615
+ display: inline-block;
616
+ width: 0.4em;
617
+ height: 0.7em;
618
+ border: solid #8bc34a;
619
+ border-width: 0 0.2em 0.2em 0;
620
+ left: 0;
621
+ margin-right: 10px;
622
+ -webkit-transform: rotate(45deg);
623
+ -moz-transform: rotate(45deg);
624
+ -o-transform: rotate(45deg);
625
+ transform: rotate(45deg);
626
+ }
627
+ }
628
+ }
629
+ }
630
+ }
631
+
632
+ .wbcr-gnz-table {
633
+ margin: 0 30px;
634
+
635
+ table {
636
+ width: 100%;
637
+ border-collapse: collapse;
638
+ }
639
+
640
+ tbody:nth-child(2n) {
641
+ background: #f9f9f9;
642
+ border-bottom: 15px solid white;
643
+ }
644
+
645
+ th {
646
+ padding: 12px 10px;
647
+ text-align: left;
648
+ color: #333;
649
+ background: #ECEDED;
650
+ box-shadow: none;
651
+ }
652
+
653
+ th:not(:last-child) {
654
+ border-right: 2px solid #FFF;
655
+ }
656
+
657
+ td {
658
+ padding: 17px 10px;
659
+ vertical-align: top;
660
+ border-bottom: 1px solid #ECEDED;
661
+ text-align: left;
662
+ background: none;
663
+ box-shadow: none;
664
+ }
665
+
666
+ th:nth-child(1),
667
+ td:nth-child(1),
668
+ th:nth-child(2),
669
+ td:nth-child(2) {
670
+ text-align: center;
671
  }
672
  }
673
 
674
+ .wbcr-gnz-table__alternate th {
675
+ background: #eceded;
676
+ font-weight: 600;
677
+ }
678
+
679
+ .wbcr-gnz-table__column_switch {
680
+ vertical-align: top;
681
+ width: 10%;
682
+
683
+ }
684
 
685
+ th.wbcr-gnz-table__column_switch {
686
+ padding: 0 !important;
687
+ }
688
+
689
+ th.wbcr-gnz-table__column_switch em {
690
+ display: block;
691
+ padding: 10px 12px;
692
+ font-style: normal;
693
+ font-size: 11px;
694
+ font-weight: lighter;
695
+ }
696
+
697
+ th.wbcr-gnz-table__column_switch b {
698
+ display: block;
699
+ padding: 10px 12px;
700
+ font-weight: 600;
701
+ }
702
+
703
+ .wbcr-gnz-table__column_condition {
704
+ width: 30%;
705
+ }
706
+
707
+ .wbcr-gnz-table__loaded {
708
+ width: 100px;
709
  text-align: center;
710
+ }
711
+
712
+ .wbcr-gnz-table__th-external-plugin {
713
+ display: block;
714
+ position: relative;
715
+ font-size: 13px;
716
+ background: #e0e0e0;
717
+ color: #444444;
718
+ padding: 5px 10px;
719
+ margin-top: 0;
720
+
721
+ .wbcr-gnz-help-hint {
722
+ display: block;
723
+ position: absolute;
724
+ top: 4px;
725
+ right: 4px;
726
+ line-height: 1.2;
727
+ }
728
+ }
729
+
730
+ .wbcr-gnz-table__loaded-state {
731
+ position: relative;
732
+ display: inline-block;
733
+ width: 30px;
734
+ height: 30px;
735
+ vertical-align: middle;
736
+ border-radius: 20px;
737
+ }
738
+
739
+ .wbcr-gnz-table__loaded-state::after {
740
+ content: "";
741
+ position: absolute;
742
+ top: 9px;
743
+ left: 8px;
744
+ width: 15px;
745
+ height: 7px;
746
+ -webkit-transform: rotate(-45deg);
747
+ transform: rotate(-45deg);
748
+ border: solid #FFF;
749
+ border-width: 0 0 2px 2px;
750
+ }
751
+
752
+ .wbcr-gnz-table__loaded-super-no {
753
+ background: #C8CFD7 !important;
754
+ }
755
+
756
+ .wbcr-gnz-table__loaded-no {
757
+ background: #C8CFD7;
758
+ }
759
+
760
+ .wbcr-gnz-table__loaded-yes {
761
+ background: #8BC34A;
762
+ }
763
+
764
+ .wbcr-gnz-table__size {
765
+ width: 75px;
766
+ }
767
+
768
+ .wbcr-gnz-table__size-value {
769
+ color: #737373;
770
+ font-size: 15px;
771
+ line-height: 20px;
772
+ }
773
+
774
+ .wbcr-gnz-table__item {
775
+ color: #737373;
776
+ }
777
+
778
+ td.wbcr-gnz-table__item:nth-child(2) {
779
+ text-align: left;
780
+ }
781
+
782
+ .wbcr-gnz-table__item-name {
783
+ margin: 0 0 3px;
784
+ text-transform: uppercase;
785
+ font-size: 16px;
786
+ font-weight: bold;
787
+ }
788
+
789
+ .wbcr-gnz-table__item-author {
790
+ margin: 0 0 4px;
791
+ }
792
+
793
+ .wbcr-gnz-table__script-name {
794
+ color: #737373;
795
+ font-size: 16px;
796
  font-weight: bold;
 
 
797
 
798
+ b {
799
+ display: inline-block;
800
+ padding: 5px 10px;
801
+ font-size: 13px;
802
+ text-transform: uppercase;
803
+ text-align: center;
804
+ border-radius: 3px;
805
+ vertical-align: middle;
806
+ margin-right: 15px;
807
+
808
+ &.wbcr-wgz-resource-type-js {
809
+ background: #ffcb1e;
810
+ color: #403102;
811
+ }
812
+ &.wbcr-wgz-resource-type-css {
813
+ background: #9757a5;
814
+ color: #ffffff;
815
+ }
816
  }
817
+ }
818
+
819
+ .wbcr-gnz-table__script-name:not(:last-child) {
820
+ margin-bottom: 5px;
821
+ }
822
+
823
+ .wbcr-gnz-table__script-path {
824
+ color: #BBBBBA;
825
+ &, a {
826
+ font-size: 12px;
827
  }
828
  }
829
 
830
+ .wbcr-gnz-table__script-version {
831
+ color: #BBBBBA;
832
+ font-size: 12px;
833
+ padding: 5px 0;
834
+ }
835
+
836
+ .wbcr-gnz-table__state {
837
+ width: 200px;
838
+ }
839
+
840
+ .wbcr-gnz-table__turn-on {
841
+ width: 500px;
842
+ }
843
+
844
+ .wbcr-gnz-table__note {
845
+ color: #BBB;
846
+ font-style: italic;
847
+ line-height: 21px;
848
  }
849
 
850
+ .wbcr-gnz-table__note p {
851
+ margin: 0;
852
+ }
853
+
854
+ .wbcr-gnz-table__note p:not(:last-child) {
855
+ margin-bottom: 12px;
856
+ }
857
+
858
+ .wbcr-gnz-table__select {
859
+ padding: 8px 28px 8px 10px;
860
+ color: #4B4E51;
861
+ border: none;
862
+ border-radius: 3px;
863
+ background: #F2F3F3 url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAFCAYAAACXU8ZrAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFNJREFUeNpinDZtWgQDA0MjEKsxYAeLmDIzM1cAGbNwKQDKxzNBOXOBOBeI76ArADEY////DxedPn16EpCaBMRrYQpAgAXN+I1ALA1U0IwsCBBgADmdFtA7IxcEAAAAAElFTkSuQmCC") no-repeat right 10px top 50%;
864
+ font-size: 13px;
865
+
866
+ -webkit-appearance: none;
867
+ -moz-appearance: none;
868
+ appearance: none;
869
+ }
870
+
871
+ .wbcr-gnz-table__select:not(:last-child) {
872
+ margin-bottom: 16px;
873
+ }
874
+
875
+ .wbcr-gnz-table__select:focus {
876
+ outline: none;
877
+ background-color: #E5E7E7;
878
+ box-shadow: 0 0 0 2px rgba(255, 203, 30, .5);
879
+ }
880
+
881
+ .wbcr-gnz-table__select::-ms-expand {
882
+ display: none;
883
+ }
884
+
885
+ .wbcr-gnz-table__select-pro {
886
+ color: rgba(242, 39, 20, 0.34);
887
+ }
888
+
889
+ .wbcr-gnz-table__label {
890
  display: block;
891
+ margin: 0 0 15px 10px;
892
+ padding-bottom: 5px;
893
+ color: #414B56;
894
+ font-size: 13px;
895
  font-weight: bold;
896
+ border-bottom: 2px solid #efefef;
897
+
898
+ .wbcr-gnz-help-hint {
899
+ vertical-align: bottom;
900
+ }
901
+ }
902
+
903
+ .wbcr-gnz-table__options {
904
+ display: -webkit-flex;
905
+ display: -ms-flexbox;
906
+ display: flex;
907
+ -webkit-flex-wrap: wrap;
908
+ -ms-flex-wrap: wrap;
909
+ flex-wrap: wrap;
910
+ max-width: 380px;
911
+ margin: 0 0 -15px 10px;
912
+ padding: 0;
913
+ list-style: none;
914
+ color: #646D78;
915
+ font-size: 13px;
916
+ }
917
+
918
+ .wbcr-gnz-table__options-item {
919
+ width: 33.33%;
920
+ padding: 0 20px 15px 0;
921
+ }
922
+
923
+ .wbcr-gnz-table__checkbox {
924
+ cursor: pointer;
925
+ }
926
+
927
+ .wbcr-gnz-table__checkbox-text {
928
+ position: relative;
929
+ padding: 0 0 0 20px;
930
+ color: #6f7275;
931
+ }
932
+
933
+ .wbcr-gnz-table__checkbox-text::before {
934
+ content: "";
935
+ position: absolute;
936
+ top: 1px;
937
+ left: 0;
938
+ width: 13px;
939
+ height: 13px;
940
+ border-radius: 2px;
941
+ background: #c8cfd7;
942
+ }
943
+
944
+ .wbcr-gnz-table__checkbox-input:checked ~ .wbcr-gnz-table__checkbox-text {
945
+ color: #646D78;
946
+ }
947
+
948
+ .wbcr-gnz-table__checkbox-input:checked ~ .wbcr-gnz-table__checkbox-text::before {
949
+ background: #FFCB1E;
950
+ }
951
+
952
+ .wbcr-gnz-table__checkbox-input:checked ~ .wbcr-gnz-table__checkbox-text::after {
953
+ content: "";
954
+ position: absolute;
955
+ top: 5px;
956
+ left: 4px;
957
+ width: 6px;
958
+ height: 4px;
959
+ -webkit-transform: rotate(-45deg);
960
+ transform: rotate(-45deg);
961
+ border: solid #FFF;
962
+ border-width: 0 0 2px 2px;
963
+ }
964
+
965
+ .wbcr-gnz-table__field {
966
+ font-size: 13px;
967
+ }
968
+
969
+ .wbcr-gnz-table__field-item {
970
+ display: -webkit-flex;
971
+ display: -ms-flexbox;
972
+ display: flex;
973
+ margin: 0 0 10px;
974
+ }
975
+
976
+ .wbcr-gnz-table__field-input,
977
+ .wbcr-gnz-table__textarea {
978
+ width: 70%;
979
+ padding: 8px 10px;
980
+ margin-left: 10px;
981
+ color: #4B4E51;
982
+ border: none;
983
+ border-radius: 3px;
984
+ background: #ececec;
985
+ font-size: 100%;
986
+ }
987
+
988
+ .wbcr-gnz-table__field-input:focus,
989
+ .wbcr-gnz-table__textarea:focus {
990
+ outline: none;
991
+ /*box-shadow: 0 0 0 2px rgba(255, 203, 30, .5);*/
992
+ }
993
+
994
+ .wbcr-gnz-table__field-add {
995
+ width: 30px;
996
+ margin: 0 0 0 5px;
997
+ cursor: pointer;
998
+ border: none;
999
+ border-radius: 3px;
1000
+ background: #FFCB1E;
1001
+ }
1002
+
1003
+ .wbcr-gnz-table__field-add::before {
1004
+ content: "+";
1005
+ color: #4E3E09;
1006
+ }
1007
+
1008
+ .wbcr-gnz-table__field-add:hover {
1009
+ background: #FBC100;
1010
+ }
1011
+
1012
+ .wbcr-gnz-table__field-add:focus {
1013
+ outline: none;
1014
+ box-shadow: 0 0 0 2px rgba(255, 203, 30, .5);
1015
+ }
1016
+
1017
+ .wbcr-gnz-table__textarea {
1018
+ width: 95%;
1019
+ padding-right: 10px;
1020
+ margin: 0 0 10px 10px;
1021
  }
1022
+
1023
+ .wbcr-gnz-table__also {
1024
+ font-size: 12px;
1025
+ font-weight: bold;
1026
+ }
1027
+
1028
+ .wbcr-gnz-table__also .wbcr-gnz-table__label {
1029
+ margin-bottom: 5px;
1030
+ font-size: 12px;
1031
+ }
1032
+
1033
+ .wbcr-gnz-table__also-url {
1034
+ color: #A9AAAA;
1035
+ }
1036
+
1037
+ .wbcr-gnz-switch {
1038
+ position: relative;
1039
+ z-index: 1;
1040
  display: inline-block;
 
1041
  overflow: hidden;
1042
+ width: 70px;
1043
+ height: 30px;
1044
+ cursor: pointer;
1045
+ vertical-align: middle;
1046
+ border-radius: 15px;
1047
+ padding: 0;
1048
+
1049
+ .wbcr-gnz-switch__inner {
1050
+ display: -webkit-flex;
1051
+ display: -ms-flexbox;
1052
+ display: flex;
1053
+ height: 30px;
1054
+ transition: .3s;
1055
+ -webkit-transform: translateX(-100%);
1056
+ transform: translateX(-100%);
1057
+ color: #FFF;
1058
+ font-size: 13px;
1059
+ line-height: 31px;
1060
+ }
1061
+
1062
+ .wbcr-gnz-switch__inner::before,
1063
+ .wbcr-gnz-switch__inner::after {
1064
+ -webkit-flex-shrink: 0;
1065
+ -ms-flex-negative: 0;
1066
+ flex-shrink: 0;
1067
+ width: 100%;
1068
+ }
1069
+
1070
+ .wbcr-gnz-switch__inner::before {
1071
+ content: attr(data-off);
1072
+ padding: 0 0 0 12px;
1073
+ background: #C8CFD7;
1074
+ }
1075
+
1076
+ .wbcr-gnz-switch__inner::after {
1077
+ content: attr(data-on);
1078
+ padding: 0 12px 0 0;
1079
+ text-align: right;
1080
+ background: #414B56;
1081
+ }
1082
+
1083
+ .wbcr-gnz-switch__slider {
1084
+ position: absolute;
1085
+ top: 5px;
1086
+ left: 5px;
1087
+ width: 20px;
1088
+ height: 20px;
1089
+ transition: .3s;
1090
+ border-radius: 50%;
1091
+ background: #FFCB1E;
1092
+ margin: 0;
1093
+ }
1094
+
1095
+ &:not(.wbcr-gnz-switch-premium) {
1096
+ .wbcr-gnz-switch__input:checked ~ .wbcr-gnz-switch__inner,
1097
+ .wbcr-gnz-switch__input:checked:focus ~ .wbcr-gnz-switch__inner {
1098
+ -webkit-transform: translateX(0);
1099
+ transform: translateX(0);
1100
+ }
1101
+
1102
+ .wbcr-gnz-switch__input:checked ~ .wbcr-gnz-switch__slider,
1103
+ .wbcr-gnz-switch__input:checked:focus ~ .wbcr-gnz-switch__slider {
1104
+ left: 45px;
1105
+ background: #97A4B2;
1106
+ }
1107
+ }
1108
+
1109
+ &.wbcr-gnz-switch-premium {
1110
+ position: relative;
1111
+ font-style: normal;
1112
+
1113
+ .wbcr-gnz-switch__slider {
1114
+ background: #ababab;
1115
+ }
1116
+ .wbcr-gnz-switch__inner::after {
1117
+ background: #d3d4d4;
1118
+ font-style: normal;
1119
+ }
1120
+
1121
+ &:after {
1122
+ content: 'PRO';
1123
+ display: block;
1124
+ position: absolute;
1125
+ top: 5px;
1126
+ left: 5px;
1127
+ font-size: 7px;
1128
+ font-weight: 700;
1129
+ line-height: 2.77;
1130
+ color: #fff;
1131
+ background: #9a9a9a;
1132
+ width: 20px;
1133
+ height: 20px;
1134
+ /* padding: 3px 0; */
1135
+ text-align: center;
1136
+ vertical-align: top;
1137
+ border-radius: 20px;
1138
+ }
1139
+ }
1140
+ }
1141
+
1142
+ .wbcr-gnz-tooltip {
1143
+ position: relative;
1144
+ }
1145
+
1146
+ .wbcr-gnz-tooltip::before {
1147
+ content: "";
1148
+ position: absolute;
1149
+ z-index: 60;
1150
+ left: 5px;
1151
+ display: none;
1152
+ width: 20px;
1153
+ height: 20px;
1154
+ }
1155
+
1156
+ .wbcr-gnz-tooltip::after {
1157
+ content: attr(data-tooltip);
1158
+ position: absolute;
1159
+ z-index: 60;
1160
+ left: 5px;
1161
+ display: none;
1162
+ min-width: 200px;
1163
+ padding: 8px 15px;
1164
+ color: #6d5506;
1165
+ background: #FFCB1E;
1166
+ font-size: 13px;
1167
+ font-weight: normal;
1168
+ line-height: 1.2;
1169
+ }
1170
+
1171
+ .wbcr-gnz-tooltip-top::before {
1172
+ bottom: 100%;
1173
+ background: linear-gradient(135deg, #FFCB1E, #FFCB1E 50%, transparent 50%, transparent) no-repeat;
1174
+ }
1175
+
1176
+ .wbcr-gnz-tooltip-top::after {
1177
+ bottom: 100%;
1178
+ margin: 0 0 10px;
1179
+ border-radius: 6px 6px 6px 0;
1180
+ }
1181
+
1182
+ .wbcr-gnz-tooltip-bottom::before {
1183
+ top: 100%;
1184
+ background: linear-gradient(45deg, #FFCB1E, #FFCB1E 50%, transparent 50%, transparent) no-repeat;
1185
+ }
1186
+
1187
+ .wbcr-gnz-tooltip-bottom::after {
1188
+ top: 100%;
1189
+ margin: 15px 0 0;
1190
+ border-radius: 0 6px 6px 6px;
1191
+ }
1192
+
1193
+ .wbcr-gnz-tooltip:hover::before,
1194
+ .wbcr-gnz-tooltip:hover::after {
1195
+ display: block;
1196
+ }
1197
+
1198
+ .wbcr-use-by-comment {
1199
+ color: #fb7976;
1200
  font-size: 12px;
 
1201
  }
1202
 
1203
+ .wbcr-use-by-comment a {
1204
+ color: #6e6e6e;
1205
+ }
 
 
 
 
1206
 
1207
+ .wgz-td, .wgz-th {
1208
+ max-width: 600px;
1209
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1210
 
1211
+ .wgz-td {
1212
+ word-wrap: break-word;
1213
+ }
1214
+ }
1215
+
1216
+ @media screen and (max-width: 1367px) {
1217
+ #WBCR {
1218
+ p {
1219
+ font-size: 13px;
1220
+ }
1221
+ .wbcr-gnz-content {
1222
+ padding: 32px 0 0 75px;
1223
+ }
1224
+ .wbcr-gnz-panel__left {
1225
+ .wbcr-gnz-panel__item_value {
1226
+ display: block;
1227
  }
1228
  }
1229
+
1230
+ .wbcr-gnz-panel__right {
1231
+ .wbcr-gnz-table__checkbox-text {
1232
+ font-size: 13px;
1233
+ }
1234
+ .wbcr-gnz-panel__reset, .wbcr-gnz-panel__save {
1235
+ font-size: 12px;
1236
+ }
1237
+
1238
+ .wbcr-gnz-panel__checkbox-text {
1239
+ font-size: 12px;
1240
+ display: block;
1241
+ line-height: 1.5;
1242
+
1243
+ }
1244
+
1245
+ .wbcr-gnz-panel__close {
1246
+ width: 30px;
1247
+ height: 30px;
1248
+ margin: 0 10px 0 15px;
1249
+ border: 3px solid #FFF;
1250
+ }
1251
  }
1252
 
1253
+ .wbcr-gnz-info {
1254
+ padding: 0;
1255
+ &, p {
1256
+ font-size: 13px;
1257
+ }
1258
+ .wbcr-gnz-info__warning {
1259
+ padding: 20px 20px 30px;
1260
+ }
 
1261
  }
1262
 
1263
+ .wbcr-gnz-button__pro {
1264
+ font-size: 12px;
 
 
 
 
 
 
1265
  }
 
1266
 
1267
+ .wbcr-gnz-table {
1268
+ margin: 0;
1269
+ th {
1270
+ font-size: 13px;
1271
+ }
1272
+ .wbcr-gnz-table__item {
1273
+ .wbcr-gnz-table__item-name {
1274
+ font-size: 14px;
1275
+ }
1276
+ .wbcr-gnz-table__item-author, .wbcr-gnz-table__item-version, .wbcr-use-by-comment {
1277
+ &, a {
1278
+ font-size: 12px;
1279
+ }
1280
+ }
1281
+ }
1282
+ .wbcr-gnz-table__script-name {
1283
+ font-size: 14px;
1284
+ b {
1285
+ font-size: 11px;
1286
+ font-weight: lighter;
1287
+ padding: 3px 7px;
1288
+ margin-right: 8px;
1289
+ }
1290
+ }
1291
+ .wbcr-gnz-table__script-path {
1292
+ a {
1293
+ font-size: 11px;
1294
+ }
1295
+ }
1296
+ .wbcr-gnz-table__column_switch {
1297
+ width: 10%;
1298
+ .wbcr-gnz-table__th-external-plugin, em {
1299
+ font-size: 10px;
1300
+ }
1301
+ b {
1302
+ font-size: 12px;
1303
+ }
1304
+ }
1305
+ .wbcr-gnz-table__column_condition {
1306
+ width: 35%;
1307
+ }
1308
+ }
1309
+ }
1310
  }
1311
+
1312
+ @media screen and (max-width: 1600px) {
1313
+ #WBCR {
1314
+ .wbcr-gnz-panel__data-main {
1315
+ display: none;
1316
+ }
1317
+
1318
+ .wbcr-gnz-panel__data-hidden {
1319
+ display: block;
1320
+ }
1321
+ }
1322
+ }
components/assets-manager/assets/css/reset.css ADDED
@@ -0,0 +1,251 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Reset styles
3
+ * @author Webcraftic <wordpress.webraftic@gmail.com>
4
+ * @copyright Webcraftic 15.10.2018
5
+ */
6
+ *,
7
+ *:before,
8
+ *:after {
9
+ -webkit-box-sizing: border-box;
10
+ -moz-box-sizing: border-box;
11
+ box-sizing: border-box;
12
+ }
13
+ h2,
14
+ h3,
15
+ h4,
16
+ h5,
17
+ h6,
18
+ p,
19
+ strong,
20
+ b,
21
+ span,
22
+ em,
23
+ i,
24
+ a,
25
+ div,
26
+ main,
27
+ section,
28
+ li,
29
+ button,
30
+ input[type="submit"],
31
+ input[type="reset"],
32
+ .wbcr-gnz-switch-premium {
33
+ font-family: Arial, "Helvetica Neue", sans-serif !important;
34
+ font-size: 14px;
35
+ font-style: normal;
36
+ font-weight: normal;
37
+ text-transform: none;
38
+ text-shadow: none;
39
+ }
40
+ h1 {
41
+ font-size: 2em;
42
+ margin: 0.67em 0;
43
+ }
44
+ hr {
45
+ box-sizing: content-box;
46
+ height: 0;
47
+ overflow: visible;
48
+ }
49
+ pre {
50
+ font-family: monospace, monospace;
51
+ font-size: 1em;
52
+ }
53
+ a {
54
+ background-color: transparent;
55
+ }
56
+ abbr[title] {
57
+ border-bottom: none;
58
+ text-decoration: underline dotted;
59
+ }
60
+ b,
61
+ strong {
62
+ font-weight: bolder;
63
+ }
64
+ code,
65
+ kbd,
66
+ samp {
67
+ font-family: monospace, monospace;
68
+ font-size: 1em;
69
+ }
70
+ small {
71
+ font-size: 80%;
72
+ }
73
+ sub,
74
+ sup {
75
+ font-size: 75%;
76
+ line-height: 0;
77
+ position: relative;
78
+ vertical-align: baseline;
79
+ }
80
+ sub {
81
+ bottom: -0.25em;
82
+ }
83
+ sup {
84
+ top: -0.5em;
85
+ }
86
+ img {
87
+ border-style: none;
88
+ }
89
+ button,
90
+ input,
91
+ optgroup,
92
+ select,
93
+ textarea {
94
+ font-family: inherit;
95
+ font-size: 100%;
96
+ line-height: 1.15;
97
+ margin: 0;
98
+ height: auto;
99
+ width: auto;
100
+ }
101
+ button,
102
+ input,
103
+ optgroup,
104
+ select,
105
+ textarea,
106
+ button:hover,
107
+ input:hover,
108
+ optgroup:hover,
109
+ select:hover,
110
+ textarea:hover,
111
+ button:focus,
112
+ input:focus,
113
+ optgroup:focus,
114
+ select:focus,
115
+ textarea:focus {
116
+ -moz-box-shadow: none;
117
+ -ms-box-shadow: none;
118
+ -webkit-box-shadow: none;
119
+ -o-box-shadow: none;
120
+ }
121
+ button,
122
+ input {
123
+ overflow: visible;
124
+ }
125
+ button,
126
+ select {
127
+ text-transform: none;
128
+ }
129
+ button,
130
+ [type="button"],
131
+ [type="reset"],
132
+ [type="submit"] {
133
+ -webkit-appearance: button;
134
+ }
135
+ button::-moz-focus-inner,
136
+ [type="button"]::-moz-focus-inner,
137
+ [type="reset"]::-moz-focus-inner,
138
+ [type="submit"]::-moz-focus-inner {
139
+ border-style: none;
140
+ padding: 0;
141
+ }
142
+ button:-moz-focusring,
143
+ [type="button"]:-moz-focusring,
144
+ [type="reset"]:-moz-focusring,
145
+ [type="submit"]:-moz-focusring {
146
+ outline: 1px dotted ButtonText;
147
+ }
148
+ fieldset {
149
+ padding: 0.35em 0.75em 0.625em;
150
+ }
151
+ legend {
152
+ box-sizing: border-box;
153
+ color: inherit;
154
+ display: table;
155
+ max-width: 100%;
156
+ padding: 0;
157
+ white-space: normal;
158
+ }
159
+ textarea {
160
+ overflow: auto;
161
+ }
162
+ [type="checkbox"],
163
+ [type="radio"] {
164
+ box-sizing: border-box;
165
+ padding: 0;
166
+ }
167
+ [type="number"]::-webkit-inner-spin-button,
168
+ [type="number"]::-webkit-outer-spin-button {
169
+ height: auto;
170
+ }
171
+ [type="search"] {
172
+ -webkit-appearance: textfield;
173
+ outline-offset: -2px;
174
+ }
175
+ [type="search"]::-webkit-search-decoration {
176
+ -webkit-appearance: none;
177
+ }
178
+ ::-webkit-file-upload-button {
179
+ -webkit-appearance: button;
180
+ font: inherit;
181
+ }
182
+ fieldset {
183
+ padding: 0.35em 0.75em 0.625em;
184
+ }
185
+ legend {
186
+ box-sizing: border-box;
187
+ color: inherit;
188
+ display: table;
189
+ max-width: 100%;
190
+ padding: 0;
191
+ white-space: normal;
192
+ }
193
+ progress {
194
+ vertical-align: baseline;
195
+ }
196
+ textarea {
197
+ overflow: auto;
198
+ }
199
+ [type=checkbox],
200
+ [type=radio] {
201
+ box-sizing: border-box;
202
+ padding: 0;
203
+ }
204
+ [type=number]::-webkit-inner-spin-button,
205
+ [type=number]::-webkit-outer-spin-button {
206
+ height: auto;
207
+ }
208
+ [type=search] {
209
+ -webkit-appearance: textfield;
210
+ outline-offset: -2px;
211
+ }
212
+ [type=search]::-webkit-search-decoration {
213
+ -webkit-appearance: none;
214
+ }
215
+ ::-webkit-file-upload-button {
216
+ -webkit-appearance: button;
217
+ font: inherit;
218
+ }
219
+ details {
220
+ display: block;
221
+ }
222
+ summary {
223
+ display: list-item;
224
+ }
225
+ template {
226
+ display: none;
227
+ }
228
+ [hidden] {
229
+ display: none;
230
+ }
231
+ table,
232
+ caption,
233
+ tbody,
234
+ tfoot,
235
+ thead,
236
+ tr,
237
+ th,
238
+ td {
239
+ margin: 0;
240
+ padding: 0;
241
+ border: 0;
242
+ font-size: 100%;
243
+ font: inherit;
244
+ vertical-align: middle;
245
+ line-height: 1.2;
246
+ }
247
+ table {
248
+ table-layout: auto;
249
+ border-collapse: collapse;
250
+ border-spacing: 0;
251
+ }
components/assets-manager/assets/css/reset.less ADDED
@@ -0,0 +1,252 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Reset styles
3
+ * @author Webcraftic <wordpress.webraftic@gmail.com>
4
+ * @copyright Webcraftic 15.10.2018
5
+ */
6
+
7
+ *, *:before, *:after {
8
+ -webkit-box-sizing: border-box;
9
+ -moz-box-sizing: border-box;
10
+ box-sizing: border-box;
11
+ }
12
+
13
+ &,
14
+ h2, h3, h4, h5, h6,
15
+ p, strong, b, span,
16
+ em, i, a, div, main,
17
+ section, li, button,
18
+ input[type="submit"], input[type="reset"],
19
+ .wbcr-gnz-switch-premium {
20
+ font-family: Arial, "Helvetica Neue", sans-serif !important;
21
+ font-size: 14px;
22
+ font-style: normal;
23
+ font-weight: normal;
24
+ text-transform: none;
25
+ text-shadow: none;
26
+ }
27
+
28
+ h1 {
29
+ font-size: 2em;
30
+ margin: .67em 0
31
+ }
32
+
33
+ hr {
34
+ box-sizing: content-box;
35
+ height: 0;
36
+ overflow: visible
37
+ }
38
+
39
+ pre {
40
+ font-family: monospace, monospace;
41
+ font-size: 1em
42
+ }
43
+
44
+ a {
45
+ background-color: transparent;
46
+ }
47
+
48
+ abbr[title] {
49
+ border-bottom: none;
50
+ text-decoration: underline dotted;
51
+ }
52
+
53
+ b, strong {
54
+ font-weight: bolder;
55
+ }
56
+
57
+ code, kbd, samp {
58
+ font-family: monospace, monospace;
59
+ font-size: 1em
60
+ }
61
+
62
+ small {
63
+ font-size: 80%
64
+ }
65
+
66
+ sub, sup {
67
+ font-size: 75%;
68
+ line-height: 0;
69
+ position: relative;
70
+ vertical-align: baseline
71
+ }
72
+
73
+ sub {
74
+ bottom: -.25em
75
+ }
76
+
77
+ sup {
78
+ top: -.5em
79
+ }
80
+
81
+ img {
82
+ border-style: none
83
+ }
84
+
85
+ button,
86
+ input,
87
+ optgroup,
88
+ select,
89
+ textarea {
90
+ font-family: inherit;
91
+ font-size: 100%;
92
+ line-height: 1.15;
93
+ margin: 0;
94
+ height: auto;
95
+ width: auto;
96
+ &, &:hover, &:focus {
97
+ -moz-box-shadow: none;
98
+ -ms-box-shadow: none;
99
+ -webkit-box-shadow: none;
100
+ -o-box-shadow: none;
101
+ }
102
+ }
103
+
104
+ button,
105
+ input {
106
+ overflow: visible;
107
+ }
108
+
109
+ button,
110
+ select {
111
+ text-transform: none;
112
+ }
113
+
114
+ button,
115
+ [type="button"],
116
+ [type="reset"],
117
+ [type="submit"] {
118
+ -webkit-appearance: button;
119
+ }
120
+
121
+ button::-moz-focus-inner,
122
+ [type="button"]::-moz-focus-inner,
123
+ [type="reset"]::-moz-focus-inner,
124
+ [type="submit"]::-moz-focus-inner {
125
+ border-style: none;
126
+ padding: 0;
127
+ }
128
+
129
+ button:-moz-focusring,
130
+ [type="button"]:-moz-focusring,
131
+ [type="reset"]:-moz-focusring,
132
+ [type="submit"]:-moz-focusring {
133
+ outline: 1px dotted ButtonText;
134
+ }
135
+
136
+ fieldset {
137
+ padding: 0.35em 0.75em 0.625em;
138
+ }
139
+
140
+ legend {
141
+ box-sizing: border-box;
142
+ color: inherit;
143
+ display: table;
144
+ max-width: 100%;
145
+ padding: 0;
146
+ white-space: normal;
147
+ }
148
+
149
+ textarea {
150
+ overflow: auto;
151
+ }
152
+
153
+ [type="checkbox"],
154
+ [type="radio"] {
155
+ box-sizing: border-box;
156
+ padding: 0;
157
+ }
158
+
159
+ [type="number"]::-webkit-inner-spin-button,
160
+ [type="number"]::-webkit-outer-spin-button {
161
+ height: auto;
162
+ }
163
+
164
+ [type="search"] {
165
+ -webkit-appearance: textfield;
166
+ outline-offset: -2px;
167
+ }
168
+
169
+ [type="search"]::-webkit-search-decoration {
170
+ -webkit-appearance: none;
171
+ }
172
+
173
+ ::-webkit-file-upload-button {
174
+ -webkit-appearance: button;
175
+ font: inherit;
176
+ }
177
+
178
+ fieldset {
179
+ padding: .35em .75em .625em
180
+ }
181
+
182
+ legend {
183
+ box-sizing: border-box;
184
+ color: inherit;
185
+ display: table;
186
+ max-width: 100%;
187
+ padding: 0;
188
+ white-space: normal
189
+ }
190
+
191
+ progress {
192
+ vertical-align: baseline
193
+ }
194
+
195
+ textarea {
196
+ overflow: auto
197
+ }
198
+
199
+ [type=checkbox], [type=radio] {
200
+ box-sizing: border-box;
201
+ padding: 0
202
+ }
203
+
204
+ [type=number]::-webkit-inner-spin-button, [type=number]::-webkit-outer-spin-button {
205
+ height: auto
206
+ }
207
+
208
+ [type=search] {
209
+ -webkit-appearance: textfield;
210
+ outline-offset: -2px
211
+ }
212
+
213
+ [type=search]::-webkit-search-decoration {
214
+ -webkit-appearance: none
215
+ }
216
+
217
+ ::-webkit-file-upload-button {
218
+ -webkit-appearance: button;
219
+ font: inherit
220
+ }
221
+
222
+ details {
223
+ display: block
224
+ }
225
+
226
+ summary {
227
+ display: list-item
228
+ }
229
+
230
+ template {
231
+ display: none
232
+ }
233
+
234
+ [hidden] {
235
+ display: none
236
+ }
237
+
238
+ table, caption, tbody, tfoot, thead, tr, th, td {
239
+ margin: 0;
240
+ padding: 0;
241
+ border: 0;
242
+ font-size: 100%;
243
+ font: inherit;
244
+ vertical-align: middle;
245
+ line-height: 1.2;
246
+ }
247
+
248
+ table {
249
+ table-layout: auto;
250
+ border-collapse: collapse;
251
+ border-spacing: 0;
252
+ }
components/assets-manager/assets/img/info.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 330 330" width="36" height="36"><g fill="#FFF"><path d="M165 0C74.019 0 0 74.02 0 165.001 0 255.982 74.019 330 165 330s165-74.018 165-164.999S255.981 0 165 0zm0 300c-74.44 0-135-60.56-135-134.999S90.56 30 165 30s135 60.562 135 135.001C300 239.44 239.439 300 165 300z"/><path d="M164.998 70c-11.026 0-19.996 8.976-19.996 20.009 0 11.023 8.97 19.991 19.996 19.991 11.026 0 19.996-8.968 19.996-19.991 0-11.033-8.97-20.009-19.996-20.009zM165 140c-8.284 0-15 6.716-15 15v90c0 8.284 6.716 15 15 15 8.284 0 15-6.716 15-15v-90c0-8.284-6.716-15-15-15z"/></g></svg>
components/assets-manager/assets/js/assets-manager.js CHANGED
@@ -9,30 +9,115 @@
9
  'use strict';
10
 
11
  $(function() {
12
- $('.wbcr-gonzales-disable-select').each(function() {
13
-
14
- $(this).addClass($(this).children(':selected').val());
15
- }).on('change', function(ev) {
16
- var selectElement = $(this).children(':selected');
17
-
18
- $(this).attr('class', 'wbcr-gonzales-disable-select').addClass(selectElement.val());
19
 
20
- if( selectElement.val() == 'everywhere' ) {
 
21
  $(this).closest('tr').find('.wbcr-assets-manager-enable-placeholder').hide();
22
  $(this).closest('tr').find('.wbcr-assets-manager-enable').show();
 
 
 
 
 
 
23
  }
24
  else {
 
25
  $(this).closest('tr').find('.wbcr-assets-manager-enable').hide();
26
  $(this).closest('tr').find('.wbcr-assets-manager-enable-placeholder').show();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27
  }
 
 
 
 
28
 
29
- if( selectElement.val() == 'everywhere' || selectElement.val() == 'current' ) {
30
- $(this).closest('tr').find('.wbcr-state').removeClass('wbcr-state-0');
31
- $(this).closest('tr').find('.wbcr-state').addClass('wbcr-state-1');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32
  } else {
33
- $(this).closest('tr').find('.wbcr-state').removeClass('wbcr-state-1');
34
- $(this).closest('tr').find('.wbcr-state').addClass('wbcr-state-0');
 
35
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
36
  });
37
  });
38
 
9
  'use strict';
10
 
11
  $(function() {
12
+ $('.wbcr-gnz-disable').on('change', function(ev) {
13
+ var class_name = 'wbcr-gnz-table__loaded-super-no';
14
+ var handle = $(this).data('handle');
15
+ if( handle != undefined ) {
16
+ class_name = 'wbcr-gnz-table__loaded-no';
17
+ }
 
18
 
19
+ if( $(this).prop('checked') == true ) {
20
+ $(this).closest('label').find('input[type="hidden"]').val('disable');
21
  $(this).closest('tr').find('.wbcr-assets-manager-enable-placeholder').hide();
22
  $(this).closest('tr').find('.wbcr-assets-manager-enable').show();
23
+ $(this).closest('tr').find('.wbcr-state').removeClass('wbcr-gnz-table__loaded-yes');
24
+ $(this).closest('tr').find('.wbcr-state').addClass(class_name).trigger('cssClassChanged');
25
+
26
+ if( typeof wbcrChangeHandleState == 'function' ) {
27
+ wbcrChangeHandleState(this, 1);
28
+ }
29
  }
30
  else {
31
+ $(this).closest('label').find('input[type="hidden"]').val('');
32
  $(this).closest('tr').find('.wbcr-assets-manager-enable').hide();
33
  $(this).closest('tr').find('.wbcr-assets-manager-enable-placeholder').show();
34
+ $(this).closest('tr').find('.wbcr-state').removeClass(class_name);
35
+ $(this).closest('tr').find('.wbcr-state').addClass('wbcr-gnz-table__loaded-yes').trigger('cssClassChanged');
36
+
37
+ if( typeof wbcrChangeHandleState == 'function' ) {
38
+ wbcrChangeHandleState(this, 0);
39
+ }
40
+ }
41
+ });
42
+
43
+ $('.wbcr-gnz-action-select').on('change', function(ev) {
44
+ var selectElement = $(this).children(':selected');
45
+ $(this).closest('span').find('.wbcr-assets-manager').hide();
46
+
47
+ if( selectElement.val() != 'current' ) {
48
+ $(this).closest('span').find('.wbcr-assets-manager.' + selectElement.val()).show();
49
  }
50
+ });
51
+
52
+ $('.wbcr-gnz-sided-disable').on('change', function(ev) {
53
+ $(this).closest('label').find('input[type="hidden"]').val($(this).prop('checked') ? 1 : 0);
54
 
55
+ var handle = $(this).data('handle');
56
+ if( handle != undefined ) {
57
+ $('.wbcr-gnz-sided-' + handle)
58
+ .prop('checked', $(this).prop('checked'))
59
+ .closest('label')
60
+ .find('input[type="hidden"]').val($(this).prop('checked') ? 1 : 0);
61
+ }
62
+ });
63
+
64
+ $('.wbcr-reset-button').on('click', function() {
65
+ $('.wbcr-gnz-disable').each(function() {
66
+ $(this).prop('checked', false).trigger('change');
67
+ $(this).closest('input').val('');
68
+ });
69
+ $('.wbcr-gnz-sided-disable').each(function() {
70
+ $(this).prop('checked', false).trigger('change');
71
+ $(this).closest('input').val(1);
72
+ });
73
+ });
74
+
75
+ $('.wbcr-state').bind('cssClassChanged', function() {
76
+ var el = $(this).parent('td').parent('tr').find('.wbcr-info-data');
77
+ if( $(this).hasClass('wbcr-gnz-table__loaded-no') || $(this).hasClass('wbcr-gnz-table__loaded-super-no') ) {
78
+ if( el.length > 0 ) {
79
+ el.data('off', 1);
80
+ }
81
  } else {
82
+ if( el.length > 0 ) {
83
+ el.data('off', 0);
84
+ }
85
  }
86
+
87
+ if( typeof wbcrCalculateInformation == 'function' ) {
88
+ wbcrCalculateInformation();
89
+ }
90
+ });
91
+
92
+ if( typeof wbcrCalculateInformation == 'function' ) {
93
+ wbcrCalculateInformation();
94
+ }
95
+
96
+ $('ul.wbcr-gnz-tabs').on('click', '.wbcr-gnz-tabs__button:not(.active)', function() {
97
+ window.location.hash = '#' + $(this).data('hash');
98
+ $(this)
99
+ .addClass('active').parent().siblings().find('.wbcr-gnz-tabs__button').removeClass('active')
100
+ .closest('.wbcr-gnz-content').find('div.wbcr-gnz-tabs-content').removeClass('active').eq($(this).parent().index()).addClass('active');
101
+ });
102
+
103
+ var tabHash = window.location.hash.replace('#', '');
104
+ if( tabHash ) {
105
+ $('ul.wbcr-gnz-tabs .wbcr-gnz-tabs__button[data-hash="' + tabHash + '"]').click();
106
+ } else {
107
+ $('ul.wbcr-gnz-tabs li').eq(0).find('.wbcr-gnz-tabs__button').click();
108
+ }
109
+
110
+ /*if ($('#wpadminbar').length > 0) {
111
+ var h = $('#wpadminbar').height();
112
+ if (h > 0) {
113
+ $('#wbcr-gnz header.wbcr-gnz-panel').css('top', h + 'px');
114
+ var top = $('#wbcr-gnz ul.wbcr-gnz-tabs').css('top');
115
+ $('#wbcr-gnz ul.wbcr-gnz-tabs').css('top', top.replace('px', '') * 1 + h + 'px');
116
+ }
117
+ }*/
118
+
119
+ $('.wbcr-close-button').on('click', function() {
120
+ document.location.href = $(this).data('href');
121
  });
122
  });
123
 
components/assets-manager/gonzales.php CHANGED
@@ -4,10 +4,11 @@
4
  * Plugin URI: https://wordpress.org/plugins/gonzales/
5
  * Description: Increase the speed of the pages by disabling unused scripts (.JS) and styles (.CSS). Make your website REACTIVE!
6
  * Author: Webcraftic <wordpress.webraftic@gmail.com>
7
- * Version: 1.0.4
8
  * Text Domain: gonzales
9
  * Domain Path: /languages/
10
  * Author URI: https://clearfy.pro
 
11
  */
12
 
13
  // Exit if accessed directly
@@ -15,46 +16,73 @@
15
  exit;
16
  }
17
 
18
- if( defined('WGZ_PLUGIN_ACTIVE') || (defined('WCL_PLUGIN_ACTIVE') && !defined('LOADING_GONZALES_AS_ADDON')) ) {
19
- function wbcr_gnz_admin_notice_error()
20
- {
21
- ?>
22
- <div class="notice notice-error">
23
- <p><?php _e('We found that you use the plugin "Clearfy - disable unused functions", this plugin already has the same functions as "Assets manager", so you can disable the "Assets manager" plugin!', 'gonzales'); ?></p>
24
- </div>
25
- <?php
26
- }
27
 
28
- add_action('admin_notices', 'wbcr_gnz_admin_notice_error');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
29
 
 
 
 
 
 
30
  return;
31
- } else {
32
-
33
- define('WGZ_PLUGIN_ACTIVE', true);
34
-
35
- define('WGZ_PLUGIN_DIR', dirname(__FILE__));
36
- define('WGZ_PLUGIN_BASE', plugin_basename(__FILE__));
37
- define('WGZ_PLUGIN_URL', plugins_url(null, __FILE__));
38
-
39
-
40
-
41
- if( !defined('LOADING_GONZALES_AS_ADDON') ) {
42
- require_once(WGZ_PLUGIN_DIR . '/libs/factory/core/boot.php');
43
- }
44
-
45
- require_once(WGZ_PLUGIN_DIR . '/includes/class.plugin.php');
46
-
47
- if( !defined('LOADING_GONZALES_AS_ADDON') ) {
48
- new WGZ_Plugin(__FILE__, array(
49
- 'prefix' => 'wbcr_gnz_',
50
- 'plugin_name' => 'wbcr_gonzales',
51
- 'plugin_title' => __('Webcraftic assets manager', 'gonzales'),
52
- 'plugin_version' => '1.0.4',
53
- 'required_php_version' => '5.2',
54
- 'required_wp_version' => '4.2',
55
- 'plugin_build' => 'free',
56
- 'updates' => WGZ_PLUGIN_DIR . '/updates/'
57
- ));
58
- }
59
  }
60
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
  * Plugin URI: https://wordpress.org/plugins/gonzales/
5
  * Description: Increase the speed of the pages by disabling unused scripts (.JS) and styles (.CSS). Make your website REACTIVE!
6
  * Author: Webcraftic <wordpress.webraftic@gmail.com>
7
+ * Version: 1.0.7
8
  * Text Domain: gonzales
9
  * Domain Path: /languages/
10
  * Author URI: https://clearfy.pro
11
+ * Framework Version: FACTORY_409_VERSION
12
  */
13
 
14
  // Exit if accessed directly
16
  exit;
17
  }
18
 
19
+ define('WGZ_PLUGIN_VERSION', '1.0.7');
 
 
 
 
 
 
 
 
20
 
21
+ // Fix for ithemes sync. When the ithemes sync plugin accepts the request, set the WP_ADMIN constant,
22
+ // after which the plugin Clearfy begins to create errors, and how the logic of its work is broken.
23
+ // Solution to simply terminate the plugin if there is a request from ithemes sync
24
+ // --------------------------------------
25
+ if( defined('DOING_AJAX') && DOING_AJAX && isset($_REQUEST['action']) && $_REQUEST['action'] == 'ithemes_sync_request' ) {
26
+ return;
27
+ }
28
+
29
+ if( isset($_GET['ithemes-sync-request']) && !empty($_GET['ithemes-sync-request']) ) {
30
+ return;
31
+ }
32
+ // ----------------------------------------
33
+
34
+ define('WGZ_PLUGIN_DIR', dirname(__FILE__));
35
+ define('WGZ_PLUGIN_BASE', plugin_basename(__FILE__));
36
+ define('WGZ_PLUGIN_URL', plugins_url(null, __FILE__));
37
+
38
+
39
+
40
+ if( !defined('LOADING_ASSETS_MANAGER_AS_ADDON') ) {
41
+ require_once(WGZ_PLUGIN_DIR . '/libs/factory/core/includes/check-compatibility.php');
42
+ require_once(WGZ_PLUGIN_DIR . '/libs/factory/clearfy/includes/check-clearfy-compatibility.php');
43
+ }
44
+
45
+ $plugin_info = array(
46
+ 'prefix' => 'wbcr_gnz_',
47
+ 'plugin_name' => 'wbcr_gonzales',
48
+ 'plugin_title' => __('Webcraftic assets manager', 'gonzales'),
49
+ 'plugin_version' => WGZ_PLUGIN_VERSION,
50
+ 'plugin_build' => 'free',
51
+ 'updates' => WGZ_PLUGIN_DIR . '/updates/'
52
+ );
53
+
54
+ /**
55
+ * Проверяет совместимость с Wordpress, php и другими плагинами.
56
+ */
57
+ $compatibility = new Wbcr_FactoryClearfy_Compatibility(array_merge($plugin_info, array(
58
+ 'plugin_already_activate' => defined('WGZ_PLUGIN_ACTIVE'),
59
+ 'plugin_as_component' => defined('LOADING_ASSETS_MANAGER_AS_ADDON'),
60
+ 'plugin_dir' => WGZ_PLUGIN_DIR,
61
+ 'plugin_base' => WGZ_PLUGIN_BASE,
62
+ 'plugin_url' => WGZ_PLUGIN_URL,
63
+ 'required_php_version' => '5.3',
64
+ 'required_wp_version' => '4.2.0',
65
+ 'required_clearfy_check_component' => true
66
+ )));
67
 
68
+ /**
69
+ * Если плагин совместим, то он продолжит свою работу, иначе будет остановлен,
70
+ * а пользователь получит предупреждение.
71
+ */
72
+ if( !$compatibility->check() ) {
73
  return;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
74
  }
75
 
76
+ define('WGZ_PLUGIN_ACTIVE', true);
77
+
78
+ if( !defined('LOADING_ASSETS_MANAGER_AS_ADDON') ) {
79
+ require_once(WGZ_PLUGIN_DIR . '/libs/factory/core/boot.php');
80
+ }
81
+
82
+ require_once(WGZ_PLUGIN_DIR . '/includes/class.plugin.php');
83
+
84
+ if( !defined('LOADING_ASSETS_MANAGER_AS_ADDON') ) {
85
+ new WGZ_Plugin(__FILE__, $plugin_info);
86
+ }
87
+
88
+
components/assets-manager/includes/class.configurate-assets.php CHANGED
@@ -12,37 +12,60 @@
12
  exit;
13
  }
14
 
15
- class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy203_Configurate {
16
 
17
  /**
18
  * Stores list of all available assets (used in rendering panel)
19
  *
20
  * @var array
21
  */
22
- private $collection = array();
23
 
24
  /**
25
- * @param Wbcr_Factory406_Plugin $plugin
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
26
  */
27
- public function __construct(Wbcr_Factory406_Plugin $plugin)
28
  {
29
  parent::__construct($plugin);
30
  $this->plugin = $plugin;
31
  }
32
 
33
-
 
 
 
 
34
  /**
35
  * Initilize entire machine
36
  */
37
- function registerActionsAndFilters()
38
  {
39
- if( $this->getOption('disable_assets_manager', false) ) {
40
  return;
41
  }
42
 
43
- $on_frontend = $this->getOption('disable_assets_manager_on_front');
44
- $on_backend = $this->getOption('disable_assets_manager_on_backend', true);
45
- $is_panel = $this->getOption('disable_assets_manager_panel');
46
 
47
  if( (!is_admin() && !$on_frontend) || (is_admin() && !$on_backend) ) {
48
  add_filter('script_loader_src', array($this, 'unloadAssets'), 10, 2);
@@ -51,10 +74,10 @@
51
 
52
  if( !$is_panel && ((is_admin() && !$on_backend) || (!is_admin() && !$on_frontend)) ) {
53
  if( !is_admin() ) {
54
- add_action('wp_enqueue_scripts', array($this, 'appendAsset'));
55
  add_action('wp_footer', array($this, 'assetsManager'), 100001);
56
  } else {
57
- add_action('admin_enqueue_scripts', array($this, 'appendAsset'));
58
  add_action('admin_footer', array($this, 'assetsManager'), 100001);
59
  }
60
  }
@@ -70,8 +93,8 @@
70
  }
71
 
72
  if( !$is_panel && ((is_admin() && !$on_backend) || (!is_admin() && !$on_frontend)) ) {
73
- if( defined('LOADING_GONZALES_AS_ADDON') ) {
74
- add_action('wbcr_clearfy_admin_bar_menu_items', array($this, 'clearfyAdminBarMenu'));
75
  } else {
76
  add_action('admin_bar_menu', array($this, 'assetsManagerAdminBar'), 1000);
77
  }
@@ -84,6 +107,20 @@
84
  if( is_admin() && !$on_backend ) {
85
  add_action('admin_init', array($this, 'formSave'));
86
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
87
  }
88
 
89
  function clearfyAdminBarMenu($menu_items)
@@ -103,7 +140,7 @@
103
  */
104
  function assetsManagerAdminBar($wp_admin_bar)
105
  {
106
- if( !current_user_can('manage_options') ) {
107
  return;
108
  }
109
 
@@ -116,241 +153,618 @@
116
  );
117
  $wp_admin_bar->add_node($args);
118
  }
119
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
120
  function assetsManager()
121
  {
122
- if( !current_user_can('manage_options') || !isset($_GET['wbcr_assets_manager']) ) {
123
  return;
124
  }
125
 
126
  $current_url = esc_url($this->getCurrentUrl());
127
- $options = $this->getOption('assets_manager_options', array());
128
-
129
- echo "<div id='wbcr-assets-manager-wrapper' ";
 
 
 
 
 
 
130
  if( isset($_GET['wbcr_assets_manager']) ) {
131
- echo "style='display: block;'";
132
  }
133
- echo ">";
134
-
135
- echo "<div id='wbcr-assets-manager'>";
136
-
137
- //Header
138
- echo "<div class='wbcr-header'>";
139
- echo "<h2>Webcraftic " . __('Assets manager', 'gonzales') . " (Beta)</h2>";
140
- echo "<div class='wbcr-description'>";
141
- echo "<p>" . __('Below you can disable/enable CSS and JS files on a per page/post basis, as well as by custom post types. We recommend testing this locally or on a staging site first, as you could break the appearance of your live site. If you aren\'t sure about a certain script, you can try clicking on it, as a lot of authors will mention their plugin or theme in the header of the source code.', 'gonzales') . "</p>
142
- <p>" . __('If for some reason you run into trouble, you can always enable everything again to reset the settings.', 'gonzales') . "</p>";
143
- echo "</div>";
144
- echo "</div>";
145
-
146
  //Form
147
- echo "<form method='POST'>";
148
-
149
  wp_nonce_field('wbcr_assets_manager_nonce', 'wbcr_assets_manager_save');
150
- echo "<div class='wbcr-float-panel'>";
151
- echo "<input type='submit' value='" . __('Save settings', 'gonzales') . "' />";
152
-
153
- echo "<a href='" . remove_query_arg('wbcr_assets_manager') . "' class='wbcr-close'></a>";
154
- $setting_page_url = !defined('LOADING_GONZALES_AS_ADDON')
155
- ? 'options-general.php'
156
- : 'admin.php';
157
- $setting_page_url .= '?page=gonzales-' . $this->plugin->getPluginName();
158
- echo "<a href='" . admin_url($setting_page_url) . "' class='wbcr-hide-panel'>" . __('Hide panel in adminbar?', 'gonzales') . "</a>";
159
- echo "</div>";
160
-
161
- krsort($this->collection);
162
-
163
- foreach($this->collection as $resource_type => $types) {
164
- echo "<h3>" . $resource_type . "</h3>";
165
- echo "<div class='wbcr-section'>";
166
- echo "<table>";
167
- echo "<thead>";
168
- echo "<tr>";
169
- echo "<th style='width: 100px;'>" . __('State', 'gonzales') . "</th>";
170
- echo "<th style='width: 75px;'>" . __('Size', 'gonzales') . "</th>";
171
- echo "<th style='width: 40%;'>" . __('Script', 'gonzales') . "</th>";
172
- echo "<th style='width: 10%;'>" . __('In use', 'gonzales') . "</th>";
173
- echo "<th style='width: 200px;'>" . __('Disable', 'gonzales') . "</th>";
174
- echo "<th>" . __('Enable', 'gonzales') . "</th>";
175
- echo "</tr>";
176
- echo "</thead>";
177
- echo "<tbody>";
178
-
179
- foreach($types as $type_name => $rows) {
180
-
181
- if( !empty($rows) ) {
182
- foreach($rows as $handle => $row) {
183
-
184
- $is_disabled = isset($options['disabled']) && isset($options['disabled'][$type_name]) && isset($options['disabled'][$type_name][$handle]);
185
- $disabled = array();
186
- if( $is_disabled ) {
187
- $disabled = &$options['disabled'][$type_name][$handle];
188
- if( !isset($disabled['everywhere']) ) {
189
- $disabled['everywhere'] = array();
190
- }
191
- if( !isset($disabled['current']) ) {
192
- $disabled['current'] = array();
193
- }
194
- }
195
-
196
- $is_enabled = isset($options['enabled']) && isset($options['enabled'][$type_name]) && isset($options['enabled'][$type_name][$handle]);
197
- $enabled = array();
198
- if( $is_enabled ) {
199
- $enabled = &$options['enabled'][$type_name][$handle];
200
-
201
- if( !isset($enabled['everywhere']) ) {
202
- $enabled['everywhere'] = array();
203
- }
204
- if( !isset($enabled['current']) ) {
205
- $enabled['current'] = array();
206
- }
207
- }
208
- /**
209
- * Find dependency
210
- */
211
- $deps = array();
212
- foreach($rows as $dep_key => $dep_val) {
213
- if( in_array($handle, $dep_val['deps']) /*&& $is_disabled*/ ) {
214
- $deps[] = '<a href="#' . $type_name . '-' . $dep_key . '">' . $dep_key . '</a>';
215
- }
216
- }
217
-
218
- $id = '[' . $type_name . '][' . $handle . ']';
219
-
220
- $comment = (!empty($deps)
221
- ? '<span style="color:#fb7976;" class="wbcr-use-by-comment">' . __('In use by', 'gonzales') . ' ' . implode(', ', $deps) . '</span>'
222
- : '');
223
-
224
- echo "<tr>";
225
-
226
- $state = 0;
227
- if( $is_disabled && ($disabled['everywhere'] == 1 || in_array($current_url, $disabled['current'])) ) {
228
- $state = 1;
229
- }
230
-
231
- echo '<td><div class="wbcr-state wbcr-state-' . (int)$state . '">' . strtoupper($type_name) . '</div></td>';
232
-
233
- //Size
234
- echo "<td class='wbcr-assets-manager-size'>";
235
- echo $row['size'] . ' KB';
236
- echo "</td>";
237
-
238
- //Handle + Path
239
- echo "<td class='wbcr-script'><span>" . $handle . "</span><a href='" . $row['url_full'] . "' target='_blank'>" . str_replace(get_home_url(), '', $row['url_full']) . "</a></td>";
240
-
241
- echo "<td>";
242
- echo $comment;
243
- echo "</td>";
244
-
245
- //Disable
246
- echo "<td class='wbcr-assets-manager-disable'>";
247
- echo "<select name='disabled{$id}' class='wbcr-gonzales-disable-select'>";
248
- echo "<option value='' class='wbcr-gonzales-option-enabled'>" . __('Enabled', 'gonzales') . "</option>";
249
- echo "<option value='everywhere' class='wbcr-gonzales-option-everywhere' ";
250
- if( $is_disabled && $disabled['everywhere'] == 1 ) {
251
- echo "selected";
252
- }
253
- echo ">" . __('Everywhere', 'gonzales') . "</option>";
254
- echo "<option value='current' class='wbcr-gonzales-option-current' ";
255
-
256
- if( $is_disabled && in_array($current_url, $disabled['current']) ) {
257
- echo "selected";
258
- }
259
-
260
- echo ">" . __('Current URL', 'gonzales') . "</option>";
261
- echo "</select>";
262
- echo "</td>";
263
- //Enable
264
- echo "<td>";
265
- echo "<span class='wbcr-assets-manager-enable-placeholder' ";
266
- if( $is_disabled && !empty($disabled['everywhere']) ) {
267
- echo "style='display: none;'";
268
- }
269
- echo ">" . __('Disable everwhere to view enable settings.', 'gonzales') . "</span>";
270
- echo "<span class='wbcr-assets-manager-enable'";
271
- if( !$is_disabled || empty($disabled['everywhere']) ) {
272
- echo " style='display: none;'";
273
- }
274
- echo ">";
275
- echo "<input type='hidden' name='enabled{$id}[current]' value='' />";
276
- echo "<label for='" . $type_name . "-" . $handle . "-enable-current'>";
277
- echo "<input type='checkbox' name='enabled{$id}[current]' id='" . $type_name . "-" . $handle . "-enable-current' value='" . $current_url . "' ";
278
-
279
- if( $is_enabled && in_array($current_url, $enabled['current']) ) {
280
- echo "checked";
281
- }
282
-
283
- echo " />" . __('Current URL', 'gonzales');
284
- echo "</label>";
285
- $post_types = get_post_types(array('public' => true), 'objects', 'and');
286
- if( !empty($post_types) ) {
287
- if( isset($post_types['attachment']) ) {
288
- unset($post_types['attachment']);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
289
  }
290
- echo "<input type='hidden' name='enabled{$id}[post_types]' value='' />";
291
- foreach($post_types as $key => $value) {
292
- echo "<label for='" . $type_name . "-" . $handle . "-enable-" . $key . "'>";
293
- echo "<input type='checkbox' name='enabled{$id}[post_types][]' id='" . $type_name . "-" . $handle . "-enable-" . $key . "' value='" . $key . "' ";
294
- if( isset($enabled['post_types']) ) {
295
- if( in_array($key, $enabled['post_types']) ) {
296
- echo "checked";
297
- }
298
  }
299
- echo " />" . $value->label;
300
- echo "</label>";
301
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
302
  }
303
- echo "</span>";
304
- echo "</td>";
305
- echo "</tr>";
306
  }
307
  }
 
 
 
 
308
  }
309
-
310
- echo "</tbody>";
311
- echo "</table>";
312
- echo "</div>";
313
  }
314
-
315
- echo "</form>";
316
- echo "</div>";
317
- echo "</div>";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
318
  }
319
 
320
  public function formSave()
321
  {
322
  if( isset($_GET['wbcr_assets_manager']) && isset($_POST['wbcr_assets_manager_save']) ) {
323
-
324
- if( !current_user_can('manage_options') || !wp_verify_nonce(filter_input(INPUT_POST, 'wbcr_assets_manager_save'), 'wbcr_assets_manager_nonce') ) {
325
- return false;
 
 
326
  }
327
-
328
- $options = $this->getOption('assets_manager_options', array());
 
 
 
 
 
 
329
  $current_url = esc_url($this->getCurrentUrl());
330
-
331
  if( isset($_POST['disabled']) && !empty($_POST['disabled']) ) {
332
  foreach($_POST['disabled'] as $type => $assets) {
333
  if( !empty($assets) ) {
334
  foreach($assets as $handle => $where) {
335
-
336
  $handle = sanitize_text_field($handle);
337
- $where = sanitize_text_field($where);
338
 
339
  if( !isset($options['disabled'][$type][$handle]) ) {
340
  $options['disabled'][$type][$handle] = array();
341
  }
342
  $disabled = &$options['disabled'][$type][$handle];
343
 
344
- if( !empty($where) ) {
345
- if( $where == "everywhere" ) {
 
 
 
 
346
  $disabled['everywhere'] = 1;
347
- if( !empty($disabled['current']) ) {
348
- unset($disabled['current']);
349
- }
350
- } elseif( $where == "current" ) {
351
- if( isset($disabled['everywhere']) ) {
352
- unset($disabled['everywhere']);
353
- }
354
 
355
  if( !isset($disabled['current']) || !is_array($disabled['current']) ) {
356
  $disabled['current'] = array();
@@ -359,9 +773,12 @@
359
  if( !in_array($current_url, $disabled['current']) ) {
360
  array_push($disabled['current'], $current_url);
361
  }
 
 
 
362
  }
363
  } else {
364
- unset($disabled['everywhere']);
365
 
366
  if( isset($disabled['current']) ) {
367
  $current_key = array_search($current_url, $disabled['current']);
@@ -398,8 +815,11 @@
398
  $options['enabled'][$type][$handle] = array();
399
  }
400
  $enabled = &$options['enabled'][$type][$handle];
 
 
401
 
402
- if( !empty($where['current']) || $where['current'] === "0" ) {
 
403
  if( !isset($enabled['current']) || !is_array($enabled['current']) ) {
404
  $enabled['current'] = array();
405
  }
@@ -418,7 +838,7 @@
418
  }
419
  }
420
 
421
- if( !empty($where['post_types']) ) {
422
  $enabled['post_types'] = array();
423
  foreach($where['post_types'] as $key => $post_type) {
424
  if( isset($enabled['post_types']) ) {
@@ -430,6 +850,32 @@
430
  } else {
431
  unset($enabled['post_types']);
432
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
433
 
434
  if( empty($enabled) ) {
435
  unset($options['enabled'][$type][$handle]);
@@ -445,60 +891,115 @@
445
  }
446
  }
447
 
448
- $this->updateOption('assets_manager_options', $options);
449
 
450
- // todo: создать отдельный файл для сброса кеша и перенести этот код туда
451
- if( function_exists('w3tc_pgcache_flush') ) {
452
- w3tc_pgcache_flush();
453
- } elseif( function_exists('wp_cache_clear_cache') ) {
454
- wp_cache_clear_cache();
455
- } elseif( function_exists('rocket_clean_files') ) {
456
- rocket_clean_files(esc_url($_SERVER['HTTP_REFERER']));
457
- } else if( isset($GLOBALS['wp_fastest_cache']) && method_exists($GLOBALS['wp_fastest_cache'], 'deleteCache') ) {
458
- $GLOBALS['wp_fastest_cache']->deleteCache();
459
  }
 
 
460
  }
461
  }
462
-
463
- function unloadAssets($src, $handle)
 
 
 
 
 
 
 
 
464
  {
465
- $type = (current_filter() == 'script_loader_src')
466
- ? 'js'
467
- : 'css';
468
-
469
- $options = $this->getOption('assets_manager_options', array());
470
- $current_url = esc_url($this->getCurrentUrl());
471
-
472
- $disabled = null;
473
- $enabled = null;
474
-
 
 
475
  if( isset($options['disabled']) && isset($options['disabled'][$type]) && isset($options['disabled'][$type][$handle]) ) {
476
- $disabled = &$options['disabled'][$type][$handle];
477
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
478
  if( isset($options['enabled']) && isset($options['enabled'][$type]) && isset($options['enabled'][$type][$handle]) ) {
479
- $enabled = &$options['enabled'][$type][$handle];
480
  }
481
-
482
- if( (isset($disabled['everywhere']) && $disabled['everywhere'] == 1) || (isset($disabled['current']) && is_array($disabled['current']) && in_array($current_url, $disabled['current'])) ) {
483
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
484
  if( isset($enabled['current']) && is_array($enabled['current']) && in_array($current_url, $enabled['current']) ) {
485
  return $src;
486
  }
487
-
488
- if( is_front_page() || is_home() ) {
489
- if( 'page' != get_option('show_on_front') ) {
490
- return false;
491
- } else {
492
- if( isset($enabled['post_types']) && in_array('page', $enabled['post_types']) ) {
493
- return $src;
494
- }
495
- }
496
  }
497
-
498
- if( isset($enabled['post_types']) && in_array(get_post_type(), $enabled['post_types']) ) {
499
  return $src;
500
  }
501
-
 
 
 
 
 
 
 
 
502
  return false;
503
  }
504
 
@@ -512,11 +1013,16 @@
512
  */
513
  public function collectAssets()
514
  {
 
 
 
 
515
  $denied = array(
516
- 'js' => array('wbcr-assets-manager', 'wbcr-comments-plus-url-span', 'admin-bar'),
517
- 'css' => array('wbcr-assets-manager', 'wbcr-comments-plus-url-span', 'admin-bar', 'dashicons'),
518
  );
519
-
 
520
  /**
521
  * Imitate full untouched list without dequeued assets
522
  * Appends part of original table. Safe approach.
@@ -525,51 +1031,61 @@
525
  'js' => wp_scripts(),
526
  'css' => wp_styles(),
527
  );
528
-
529
  foreach($data_assets as $type => $data) {
530
- foreach($data->done as $el) {
531
- if( !in_array($el, $denied[$type]) ) {
532
- if( isset($data->registered[$el]->src) ) {
533
- $url = $this->prepareCorrectUrl($data->registered[$el]->src);
534
- $url_short = str_replace(get_home_url(), '', $url);
535
-
536
- if( false !== strpos($url, get_theme_root_uri()) ) {
537
- $resource_name = 'theme';
538
- } elseif( false !== strpos($url, plugins_url()) ) {
539
- $resource_name = 'plugins';
540
- } else {
541
- $resource_name = 'misc';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
542
  }
543
-
544
- $this->collection[$resource_name][$type][$el] = array(
545
- 'url_full' => $url,
546
- 'url_short' => $url_short,
547
- //'state' => $this->get_visibility($type, $el),
548
- 'size' => $this->getAssetSize($url),
549
- 'deps' => (isset($data->registered[$el]->deps)
550
- ? $data->registered[$el]->deps
551
- : array()),
552
- );
553
  }
 
554
  }
555
  }
556
  }
557
-
558
  return false;
559
  }
560
-
561
  /**
562
  * Loads functionality that allows to enable/disable js/css without site reload
563
  */
564
  public function appendAsset()
565
  {
566
- if( current_user_can('manage_options') && isset($_GET['wbcr_assets_manager']) ) {
567
  wp_enqueue_style('wbcr-assets-manager', WGZ_PLUGIN_URL . '/assets/css/assets-manager.css', array(), $this->plugin->getPluginVersion());
568
- wp_enqueue_script('wbcr-assets-manager', WGZ_PLUGIN_URL . '/assets/js/assets-manager.js', array(), $this->plugin->getPluginVersion(), true);
569
  }
570
  }
571
-
572
-
573
  /**
574
  * Exception for address starting from "//example.com" instead of
575
  * "http://example.com". WooCommerce likes such a format
@@ -580,9 +1096,7 @@
580
  private function prepareCorrectUrl($url)
581
  {
582
  if( isset($url[0]) && isset($url[1]) && '/' == $url[0] && '/' == $url[1] ) {
583
- $out = (is_ssl()
584
- ? 'https:'
585
- : 'http:') . $url;
586
  } else {
587
  $out = $url;
588
  }
@@ -607,12 +1121,11 @@
607
  return $out;
608
  }
609
 
610
-
611
  /**
612
  * Checks how heavy is file
613
  *
614
  * @param string $src URL.
615
- * @return int Size in KB.
616
  */
617
  private function getAssetSize($src)
618
  {
@@ -633,4 +1146,551 @@
633
 
634
  return $weight;
635
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
636
  }
12
  exit;
13
  }
14
 
15
+ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
16
 
17
  /**
18
  * Stores list of all available assets (used in rendering panel)
19
  *
20
  * @var array
21
  */
22
+ public $collection = array();
23
 
24
  /**
25
+ * Plugins for additional columns
26
+ *
27
+ * @var array
28
+ */
29
+ private $sided_plugins = array();
30
+
31
+ /**
32
+ * Css and js files excluded in sided plugins
33
+ *
34
+ * @var array
35
+ */
36
+ private $sided_plugin_files = array();
37
+
38
+ /**
39
+ * @var bool
40
+ */
41
+ private $is_user_can;
42
+
43
+ /**
44
+ * @param Wbcr_Factory409_Plugin $plugin
45
  */
46
+ public function __construct(Wbcr_Factory409_Plugin $plugin)
47
  {
48
  parent::__construct($plugin);
49
  $this->plugin = $plugin;
50
  }
51
 
52
+ protected function isUserCan()
53
+ {
54
+ return current_user_can('manage_options') || current_user_can('manage_network');
55
+ }
56
+
57
  /**
58
  * Initilize entire machine
59
  */
60
+ protected function registerActionsAndFilters()
61
  {
62
+ if( $this->getPopulateOption('disable_assets_manager', false) ) {
63
  return;
64
  }
65
 
66
+ $on_frontend = $this->getPopulateOption('disable_assets_manager_on_front');
67
+ $on_backend = $this->getPopulateOption('disable_assets_manager_on_backend', true);
68
+ $is_panel = $this->getPopulateOption('disable_assets_manager_panel');
69
 
70
  if( (!is_admin() && !$on_frontend) || (is_admin() && !$on_backend) ) {
71
  add_filter('script_loader_src', array($this, 'unloadAssets'), 10, 2);
74
 
75
  if( !$is_panel && ((is_admin() && !$on_backend) || (!is_admin() && !$on_frontend)) ) {
76
  if( !is_admin() ) {
77
+ add_action('wp_enqueue_scripts', array($this, 'appendAsset'), -100001);
78
  add_action('wp_footer', array($this, 'assetsManager'), 100001);
79
  } else {
80
+ add_action('admin_enqueue_scripts', array($this, 'appendAsset'), -100001);
81
  add_action('admin_footer', array($this, 'assetsManager'), 100001);
82
  }
83
  }
93
  }
94
 
95
  if( !$is_panel && ((is_admin() && !$on_backend) || (!is_admin() && !$on_frontend)) ) {
96
+ if( defined('LOADING_ASSETS_MANAGER_AS_ADDON') ) {
97
+ add_action('wbcr/clearfy/adminbar_menu_items', array($this, 'clearfyAdminBarMenu'));
98
  } else {
99
  add_action('admin_bar_menu', array($this, 'assetsManagerAdminBar'), 1000);
100
  }
107
  if( is_admin() && !$on_backend ) {
108
  add_action('admin_init', array($this, 'formSave'));
109
  }
110
+
111
+ add_action('plugins_loaded', array($this, 'pluginsLoaded'));
112
+ add_action('wbcr_gnz_form_save', array($this, 'actionFormSave'));
113
+
114
+ add_filter('wbcr_gnz_unset_disabled', array($this, 'unsetDisabled'), 10, 2);
115
+ add_filter('wbcr_gnz_get_additional_head_columns', array($this, 'getAdditionalHeadColumns'));
116
+ add_filter('wbcr_gnz_get_additional_controls_columns', array($this, 'getAdditionalControlsColumns'), 10, 4);
117
+
118
+ add_filter('autoptimize_filter_js_exclude', array($this, 'aoptFilterJsExclude'), 10, 2);
119
+ add_filter('autoptimize_filter_css_exclude', array($this, 'aoptFilterCssExclude'), 10, 2);
120
+ add_filter('wmac_filter_js_exclude', array($this, 'wmacFilterJsExclude'), 10, 2);
121
+ add_filter('wmac_filter_css_exclude', array($this, 'wmacFilterCssExclude'), 10, 2);
122
+ add_filter('wmac_filter_js_minify_excluded', array($this, 'wmacFilterJsMinifyExclude'), 10, 2);
123
+ add_filter('wmac_filter_css_minify_excluded', array($this, 'wmacFilterCssMinifyExclude'), 10, 2);
124
  }
125
 
126
  function clearfyAdminBarMenu($menu_items)
140
  */
141
  function assetsManagerAdminBar($wp_admin_bar)
142
  {
143
+ if( !$this->isUserCan() ) {
144
  return;
145
  }
146
 
153
  );
154
  $wp_admin_bar->add_node($args);
155
  }
156
+
157
+ /**
158
+ * Action plugins loaded
159
+ */
160
+ public function pluginsLoaded()
161
+ {
162
+ if ( ! is_admin() ) {
163
+ $this->sided_plugins = array(
164
+ 'aopt' => 'autoptimize/autoptimize.php',
165
+ 'wmac' => 'minify-and-combine/minify-and-combine.php'
166
+ );
167
+ }
168
+
169
+ if( class_exists('WCL_Plugin') && (WCL_Plugin::app()->getPopulateOption('remove_js_version', false) || WCL_Plugin::app()->getPopulateOption('remove_css_version', false)) ) {
170
+ $this->sided_plugins['wclp'] = 'clearfy/clearfy.php';
171
+ }
172
+
173
+
174
+
175
+ $this->sided_plugins = apply_filters('wbcr_gnz_sided_plugins', $this->sided_plugins);
176
+ }
177
+
178
  function assetsManager()
179
  {
180
+ if( !$this->isUserCan() || !isset($_GET['wbcr_assets_manager']) ) {
181
  return;
182
  }
183
 
184
  $current_url = esc_url($this->getCurrentUrl());
185
+
186
+ // todo: вынести в метод
187
+ if( is_multisite() && is_network_admin() ) {
188
+ $options = $this->getNetworkOption('assets_manager_options', array());
189
+ } else {
190
+ $options = $this->getOption('assets_manager_options', array());
191
+ }
192
+
193
+ echo '<div id="WBCR" class="wbcr-gnz-wrapper"';
194
  if( isset($_GET['wbcr_assets_manager']) ) {
195
+ echo 'style="display: block;"';
196
  }
197
+ echo '>';
198
+
 
 
 
 
 
 
 
 
 
 
 
199
  //Form
200
+ echo '<form method="POST">';
 
201
  wp_nonce_field('wbcr_assets_manager_nonce', 'wbcr_assets_manager_save');
202
+
203
+ //Header
204
+ echo '<header class="wbcr-gnz-panel">';
205
+ echo '<div class="wbcr-gnz-panel__left">';
206
+ echo '<div class="wbcr-gnz-panel__logo"></div>';
207
+ echo '<ul class="wbcr-gnz-panel__data panel__data-main">';
208
+ echo '<li class="wbcr-gnz-panel__data-item __info-query">' . __('Total requests', 'gonzales') . ': <b class="wbcr-gnz-panel__item_value">--</b></li>';
209
+ echo '<li class="wbcr-gnz-panel__data-item __info-all-weight">' . __('Total size', 'gonzales') . ': <b class="wbcr-gnz-panel__item_value"><span class="wbcr-gnz-panel__color-1">--</span></b></li>';
210
+ echo '<li class="wbcr-gnz-panel__data-item __info-opt-weight">' . __('Optimized size', 'gonzales') . ': <b class="wbcr-gnz-panel__item_value"><span class="wbcr-gnz-panel__color-2">--</span></b></li>';
211
+ echo '<li class="wbcr-gnz-panel__data-item __info-off-js">' . __('Disabled js', 'gonzales') . ': <b class="wbcr-gnz-panel__item_value">--</li></b>';
212
+ echo '<li class="wbcr-gnz-panel__data-item __info-off-css">' . __('Disabled css', 'gonzales') . ': <b class="wbcr-gnz-panel__item_value">--</li></b>';
213
+ echo '</ul>';
214
+ $panel_to_premium_info = '<div class="wbcr-gnz-panel__premium"><div class="wbcr-gnz-tooltip wbcr-gnz-tooltip-bottom" data-tooltip="' . __('This is the general statistics to see the optimization result. Available in the paid version only.', 'gonzales') . '.">PRO</div></div>';
215
+ echo apply_filters('wbcr_gnz_panel_premium', $panel_to_premium_info);
216
+ echo '</div>';
217
+ echo '<div class="wbcr-gnz-panel__right">';
218
+ echo '<button class="wbcr-gnz-panel__reset wbcr-reset-button" type="button">' . __('Reset', 'gonzales') . '</button>';
219
+ echo '<input class="wbcr-gnz-panel__save" type="submit" value="' . __('Save', 'gonzales') . '">';
220
+ echo '<label class="wbcr-gnz-panel__checkbox wbcr-gnz-tooltip wbcr-gnz-tooltip-bottom" data-tooltip="' . __('In test mode, you can experiment with disabling unused scripts safely for your site. The resources that you disabled will be visible only to you (the administrator), and all other users will receive an unoptimized version of the site, until you remove this tick', 'gonzales') . '.">';
221
+ echo apply_filters('wbcr_gnz_test_mode_checkbox', '<input class="wbcr-gnz-panel__checkbox-input visually-hidden" type="checkbox" disabled="disabled" checked/><span class="wbcr-gnz-panel__checkbox-text-premium">' . __('Safe mode <b>PRO</b>', 'gonzales') . '</span>');
222
+ echo '</label>';
223
+ echo '<button class="wbcr-gnz-panel__close wbcr-close-button" type="button" aria-label="' . __('Close', 'gonzales') . '" data-href="' . remove_query_arg('wbcr_assets_manager') . '"></button>';
224
+ echo '</div>';
225
+ echo '</header>';
226
+
227
+ // Main content
228
+ echo '<main class="wbcr-gnz-content">';
229
+
230
+ uksort($this->collection, function ($a, $b) {
231
+ if( 'plugins' == $a ) {
232
+ return -1;
233
+ }
234
+
235
+ if( 'plugins' == $b ) {
236
+ return 1;
237
+ }
238
+
239
+ return strcasecmp($a, $b);
240
+ });
241
+
242
+ // Tabs
243
+ echo '<ul class="wbcr-gnz-tabs">';
244
+ foreach($this->collection as $resource_type => $resources) {
245
+ echo '<li class="wbcr-gnz-tabs__item">';
246
+ echo '<div class="wbcr-gnz-tabs__button wbcr-gnz-tabs__button--' . $resource_type . '" data-hash="' . $resource_type . '" aria-label="' . $resource_type . '"></div>';
247
+ echo '</li>';
248
+ }
249
+ echo '</ul>';
250
+
251
+ // Info
252
+ echo '<div class="wbcr-gnz-info"><div class="wbcr-gnz-info__warning">';
253
+ echo '<p><b>' . __('Important! Each page of your website has different sets of scripts and styles files.', 'gonzales') . '</b></p>';
254
+ echo '<p>' . __('Use this feature to disable unwanted scripts and styles by setting up the logic for different types of pages. We recommend working in "Safe mode" because disabling any necessary system script file can corrupt the website. All changes done in Safe mode are available for administrator only. This way only you, as the administrator, can see the result of optimization. To enable the changes for other users, uncheck Safe mode.', 'gonzales') . '</p>';
255
+ echo '<p>' . sprintf(__('For more details and user guides, check the plugin’s <a href="%s" target="_blank" rel="noreferrer noopener">documentation</a>.', 'gonzales'), WbcrFactoryClearfy206_Helpers::getWebcrafticSitePageUrl(WGZ_Plugin::app()->getPluginName(), 'docs')) . '</p>';
256
+ echo '</div>';
257
+
258
+ $premium_button = '<a class="wbcr-gnz-button__pro" href="' . WbcrFactoryClearfy206_Helpers::getWebcrafticSitePageUrl(WGZ_Plugin::app()->getPluginName(), 'assets-manager') . '" target="_blank" rel="noreferrer noopener">' . __('Upgrade to Premium', 'gonzales') . '</a>';
259
+
260
+ $upgrade_to_premium_info = '<div class="wbcr-gnz-info__go-to-premium"><ul>';
261
+ $upgrade_to_premium_info .= '<h3><span>' . __('MORE IN CLEARFY BUSINESS', 'gonzales') . '</span>' . $premium_button . '</h3><ul>';
262
+ $upgrade_to_premium_info .= '<li>' . __('Disable plugins (groups of scripts)', 'gonzales') . '</li>';
263
+ $upgrade_to_premium_info .= '<li>' . __('Conditions by the link template', 'gonzales') . '</li>';
264
+ $upgrade_to_premium_info .= '<li>' . __('Conditions by the regular expression', 'gonzales') . '</li>';
265
+ $upgrade_to_premium_info .= '<li>' . __('Safe mode', 'gonzales') . '</li>';
266
+ $upgrade_to_premium_info .= '<li>' . __('Statistics and optimization results', 'gonzales') . '</li>';
267
+ $upgrade_to_premium_info .= '</ul>';
268
+ $upgrade_to_premium_info .= '</div>';
269
+ echo apply_filters('wbcr_gnz_upgrade_to_premium_info', $upgrade_to_premium_info);
270
+ echo '</div>';
271
+
272
+ global $plugin_state;
273
+
274
+ foreach($this->collection as $resource_type => $resources) {
275
+ // Tabs content
276
+ echo '<div class="wbcr-gnz-tabs-content">';
277
+ echo '<div class="wbcr-gnz-table">';
278
+ echo '<table>';
279
+ echo '<col class="wbcr-gnz-table__loaded"/>';
280
+ echo '<col class="wbcr-gnz-table__size"/>';
281
+ echo '<col class="wbcr-gnz-table__script"/>';
282
+ echo '<col class="wbcr-gnz-table__state"/>';
283
+ echo '<col class="wbcr-gnz-table__turn-on"/>';
284
+
285
+ foreach($resources as $resource_name => $types) {
286
+ $plugin_state = false;
287
+
288
+ if( 'plugins' == $resource_type && !empty($resource_name) ) {
289
+ $plugin_data = $this->getPluginData($resource_name);
290
+
291
+ echo '<tbody>';
292
+
293
+ if( !empty($plugin_data) ) {
294
+ $is_disabled = $this->getIsDisabled($options, $resource_type, $resource_name);
295
+ $disabled = $this->getDisabled($is_disabled, $options, $resource_type, $resource_name);
296
+
297
+ $is_enabled = $this->getIsEnabled($options, $resource_type, $resource_name);
298
+ $enabled = $this->getEnabled($is_enabled, $options, $resource_type, $resource_name);
299
+
300
+ $plugin_state = $this->getState($is_disabled, $disabled, $current_url);
301
+ $plugin_state = apply_filters('wbcr_gnz_get_plugin_state', false, $plugin_state);
302
+
303
+ echo '<tr class="wbcr-gnz-table__alternate">';
304
+ echo '<th style="width:5%">' . __('Loaded', 'gonzales') . '</th>';
305
+ echo '<th colspan="2">' . __('Plugin', 'gonzales') . '</th>';
306
+
307
+ echo apply_filters('wbcr_gnz_get_additional_head_columns', '');
308
+
309
+ echo '<th class="wbcr-gnz-table__column_switch"><b>' . __('Load resource?', 'gonzales') . '</b></th>';
310
+ echo '<th class="wbcr-gnz-table__column_condition">' . __('Conditions', 'gonzales') . '</th>';
311
+ echo '</tr>';
312
+ echo '<tr>';
313
+ echo '<td>';
314
+ echo '<div class="wbcr-gnz-table__loaded-state wbcr-gnz-table__loaded-' . ($plugin_state ? 'no' : 'yes') . ' wbcr-state"></div>';
315
+ echo '</td>';
316
+ echo '<td colspan="2" class="wbcr-gnz-table__item">';
317
+ echo '<div class="wbcr-gnz-table__item-name">' . $plugin_data['Name'] . '</div>';
318
+ echo '<div class="wbcr-gnz-table__item-author"><strong>' . __('Author', 'gonzales') . ':</strong> ' . $plugin_data['Author'] . '</div>';
319
+ echo '<div class="wbcr-gnz-table__item-version"><strong>' . __('Version', 'gonzales') . ':</strong> ' . $plugin_data['Version'] . '</div>';
320
+ echo '</td>';
321
+
322
+ echo apply_filters('wbcr_gnz_get_additional_controls_columns', '', $resource_type, $resource_name, $resource_name);
323
+
324
+ // State Controls
325
+ $id = '[' . $resource_type . '][' . $resource_name . ']';
326
+ echo $this->getStateControrlHTML($id, $plugin_state, $is_disabled, $is_enabled, $resource_type, $resource_name, $disabled, $enabled, $current_url);
327
+ echo '</tr>';
328
+ }
329
+ }
330
+
331
+ echo '<tr class="wbcr-gnz-table__alternate">';
332
+ echo '<th style="width:5%">' . __('Loaded', 'gonzales') . '</th>';
333
+ echo '<th style="width:5%">' . __('Size', 'gonzales') . '</th>';
334
+ echo '<th class="wgz-th">' . __('Resource', 'gonzales') . '</th>';
335
+
336
+ echo apply_filters('wbcr_gnz_get_additional_head_columns', '');
337
+
338
+ echo '<th class="wbcr-gnz-table__column_switch"><b>' . __('Load resource?', 'gonzales') . '</b></th>';
339
+ echo '<th class="wbcr-gnz-table__column_condition">' . __('Conditions', 'gonzales') . '</th>';
340
+ echo '</tr>';
341
+
342
+ foreach($types as $type_name => $rows) {
343
+
344
+ if( !empty($rows) ) {
345
+ foreach($rows as $handle => $row) {
346
+ $is_disabled = $this->getIsDisabled($options, $type_name, $handle);
347
+ $disabled = $this->getDisabled($is_disabled, $options, $type_name, $handle);
348
+
349
+ $is_enabled = $this->getIsEnabled($options, $type_name, $handle);
350
+ $enabled = $this->getEnabled($is_enabled, $options, $type_name, $handle);
351
+
352
+ /**
353
+ * Find dependency
354
+ */
355
+ $deps = array();
356
+ foreach($rows as $dep_key => $dep_val) {
357
+ if( in_array($handle, $dep_val['deps']) /*&& $is_disabled*/ ) {
358
+ $deps[] = '<a href="#' . $type_name . '-' . $dep_key . '">' . $dep_key . '</a>';
359
+ }
360
  }
361
+
362
+ $comment = (!empty($deps) ? '<span class="wbcr-use-by-comment">' . __('In use by', 'gonzales') . ' ' . implode(', ', $deps) . '</span>' : '');
363
+ $requires = '';
364
+ if( !empty($row['deps']) ) {
365
+ $rdeps = array();
366
+ foreach($row['deps'] as $dep_val) {
367
+ $rdeps[] = '<a href="#' . $type_name . '-' . $dep_val . '">' . $dep_val . '</a>';
 
368
  }
369
+ $requires = ($comment ? '<br>' : '') . '<span class="wbcr-use-by-comment">' . __('Requires', 'gonzales') . ' ' . implode(', ', $rdeps) . '</span>';
 
370
  }
371
+
372
+ echo '<tr>';
373
+
374
+ // Loaded
375
+ $state = $this->getState($is_disabled, $disabled, $current_url);
376
+ $display_state = $plugin_state === 1 ? 1 : $state;
377
+ echo '<td>';
378
+ echo '<div class="wbcr-gnz-table__loaded-state wbcr-gnz-table__loaded-' . ($plugin_state ? 'no' : 'yes');
379
+ echo ' wbcr-state' . ($state ? ' wbcr-gnz-table__loaded-super-no' : '');
380
+ echo ('plugins' == $resource_type ? ' wbcr-state-' . $resource_name : '') . '">';
381
+ echo '</div>';
382
+ echo '</td>';
383
+
384
+ // Size
385
+ echo '<td>';
386
+ echo '<div class="wbcr-gnz-table__size-value">' . $row['size'] . ' <b>KB</b></div>';
387
+ echo '</td>';
388
+
389
+ // Handle + Path + In use
390
+ echo '<td class="wgz-td">';
391
+ echo '<div class="wbcr-gnz-table__script-name"><b class="wbcr-wgz-resource-type-' . $type_name . '">' . $type_name . '</b>[' . $handle . ']</div>';
392
+ echo "<a id='" . $type_name . "-" . $handle . "' class='wbcr-anchor'></a>";
393
+ echo '<div class="wbcr-gnz-table__script-path">';
394
+ echo "<a href='" . $row['url_full'] . "' target='_blank'>";
395
+ echo str_replace(get_home_url(), '', $row['url_full']) . "</a>";
396
+ echo '</div>';
397
+ echo '<div class="wbcr-gnz-table__script-version">';
398
+ echo __('Version', 'gonzales') . ': ' . (!empty($row['ver']) ? $row['ver'] : __('--', 'gonzales'));
399
+ echo '</div>';
400
+ echo '<div>' . $comment . $requires . '</div>';
401
+ echo '</td>';
402
+
403
+ // Controls for other plugins
404
+ echo apply_filters('wbcr_gnz_get_additional_controls_columns', '', $type_name, $row['url_full'], $resource_name);
405
+
406
+ // State Controls
407
+ $id = '[' . $type_name . '][' . $handle . ']';
408
+ echo $this->getStateControrlHTML($id, $state, $is_disabled, $is_enabled, $type_name, $handle, $disabled, $enabled, $current_url);
409
+
410
+ echo "<input type='hidden' class='wbcr-info-data' data-type='{$type_name}' data-off='{$display_state}' value='{$row['size']}'>";
411
+ echo '</tr>';
412
+
413
+ echo apply_filters('wbcr_gnz_after_scripts_table_row', '', $resource_type, $resource_name, $type_name, $handle);
414
  }
 
 
 
415
  }
416
  }
417
+
418
+ if( 'plugins' == $resource_type && !empty($resource_name) ) {
419
+ echo '</tbody>';
420
+ }
421
  }
422
+
423
+ echo '</table>';
424
+ echo '</div>';
425
+ echo '</div>';
426
  }
427
+ echo '</main>';
428
+ echo '</form> <!-- /endform -->';
429
+ echo '</div> <!-- /div2 -->';
430
+ }
431
+
432
+ /**
433
+ * Get is disabled
434
+ *
435
+ * @param $options
436
+ * @param $type_name
437
+ * @param $handle
438
+ *
439
+ * @return bool
440
+ */
441
+ public function getIsDisabled($options, $type_name, $handle)
442
+ {
443
+ return isset($options['disabled']) && isset($options['disabled'][$type_name]) && isset($options['disabled'][$type_name][$handle]);
444
+ }
445
+
446
+ /**
447
+ * Get disabled
448
+ *
449
+ * @param $is_disabled
450
+ * @param $options
451
+ * @param $type_name
452
+ * @param $handle
453
+ *
454
+ * @return array
455
+ */
456
+ public function getDisabled($is_disabled, $options, $type_name, $handle)
457
+ {
458
+ $disabled = array();
459
+
460
+ if( $is_disabled ) {
461
+ $disabled = &$options['disabled'][$type_name][$handle];
462
+ if( !isset($disabled['current']) ) {
463
+ $disabled['current'] = array();
464
+ }
465
+ if( !isset($disabled['everywhere']) ) {
466
+ $disabled['everywhere'] = array();
467
+ }
468
+
469
+ $disabled = apply_filters('wbcr_gnz_get_disabled', $disabled);
470
+ }
471
+
472
+ return $disabled;
473
+ }
474
+
475
+ /**
476
+ * Get is enabled
477
+ *
478
+ * @param $options
479
+ * @param $type_name
480
+ * @param $handle
481
+ *
482
+ * @return bool
483
+ */
484
+ public function getIsEnabled($options, $type_name, $handle)
485
+ {
486
+ return isset($options['enabled']) && isset($options['enabled'][$type_name]) && isset($options['enabled'][$type_name][$handle]);
487
+ }
488
+
489
+ /**
490
+ * Get enabled
491
+ *
492
+ * @param $is_enabled
493
+ * @param $options
494
+ * @param $type_name
495
+ * @param $handle
496
+ *
497
+ * @return array
498
+ */
499
+ public function getEnabled($is_enabled, $options, $type_name, $handle)
500
+ {
501
+ $enabled = array();
502
+
503
+ if( $is_enabled ) {
504
+ $enabled = &$options['enabled'][$type_name][$handle];
505
+
506
+ if( !isset($enabled['current']) ) {
507
+ $enabled['current'] = array();
508
+ }
509
+ if( !isset($enabled['everywhere']) ) {
510
+ $enabled['everywhere'] = array();
511
+ }
512
+
513
+ $enabled = apply_filters('wbcr_gnz_get_enabled', $enabled);
514
+ }
515
+
516
+ return $enabled;
517
+ }
518
+
519
+ /**
520
+ * Get State
521
+ *
522
+ * @param $is_disabled
523
+ * @param $disabled
524
+ * @param $current_url
525
+ *
526
+ * @return int
527
+ */
528
+ public function getState($is_disabled, $disabled, $current_url)
529
+ {
530
+ $state = 0;
531
+ if( $is_disabled && ($disabled['everywhere'] == 1 || in_array($current_url, $disabled['current']) || apply_filters('wbcr_gnz_check_state_disabled', false, $disabled)) ) {
532
+ $state = 1;
533
+ }
534
+
535
+ return $state;
536
+ }
537
+
538
+ /**
539
+ * Get state controrl HTML
540
+ *
541
+ * @param $id
542
+ * @param $state
543
+ * @param $is_disabled
544
+ * @param $is_enabled
545
+ * @param $type_name
546
+ * @param $handle
547
+ * @param $disabled
548
+ * @param $enabled
549
+ * @param $current_url
550
+ *
551
+ * @return string
552
+ */
553
+ public function getStateControrlHTML($id, $state, $is_disabled, $is_enabled, $type_name, $handle, $disabled, $enabled, $current_url)
554
+ {
555
+ // Disable
556
+ $html = '<td>';
557
+ $html .= '<label class="wbcr-gnz-switch' . ($type_name == 'plugins' ? apply_filters('wbcr_gnz_switch_premium', ' wbcr-gnz-switch-premium') : '') . '">';
558
+ $html .= '<input class="wbcr-gnz-switch__input visually-hidden' . apply_filters('wbcr_gnz_switch_plugin_premium', $type_name == 'plugins' ? '' : ' wbcr-gnz-disable') . '" type="checkbox"' . checked($state, true, false);
559
+ $html .= ('plugins' == $type_name ? " data-handle='{$handle}'" : "") . '/>';
560
+ $html .= '<input type="hidden" name="disabled' . $id . '[state]" value="' . ($state ? 'disable' : '') . '"/>';
561
+ $html .= '<span class="wbcr-gnz-switch__inner" data-off="' . __('No', 'gonzales') . '" data-on="' . __('Yes', 'gonzales') . '"></span>';
562
+ $html .= '<span class="wbcr-gnz-switch__slider"></span>';
563
+ $html .= '</label>';
564
+ $html .= '</td>';
565
+
566
+ // Enable
567
+ $class_name = 'wbcr-assets-manager-enable';
568
+ if( 'plugins' == $type_name ) {
569
+ $class_name = apply_filters('wbcr_gnz_control_classname', 'wbcr-gnz');
570
+ }
571
+ $html .= '<td>';
572
+ $html .= '<div class="wbcr-gnz-table__note ' . $class_name . '-placeholder"';
573
+ if( $state ) {
574
+ $html .= ' style="display: none;"';
575
+ }
576
+ if( 'plugins' != $type_name ) {
577
+ $html .= '><p>' . __('Click the switch in the <b>Load resource?</b> column to display the conditions for loading the resource.', 'gonzales') . '</p>';
578
+ } else {
579
+ $html .= '><p>' . apply_filters('wbcr_gnz_conditions_note_premium', __('Set the plugin logic to apply it to all plugin’s resources. This feature available at the paid version.', 'gonzales')) . '</p>';
580
+ }
581
+ $html .= '</div>';
582
+ $html .= '<span class="' . $class_name . '"';
583
+ if( !$state ) {
584
+ $html .= ' style="display: none;"';
585
+ }
586
+ $html .= '>';
587
+ $html .= '<select class="wbcr-gnz-table__select wbcr-gnz-action-select" name="wgz_action' . $id . '">';
588
+ $html .= '<option value="current"' . selected($is_disabled && !empty($disabled['current']), true, false) . '>' . __('Current URL', 'gonzales') . '</option>';
589
+ $html .= '<option value="everywhere"' . selected($is_disabled && !empty($disabled['everywhere']), true, false) . '>' . __('Everywhere', 'gonzales') . '</option>';
590
+ $options = '<option value="custom"' . selected($is_disabled && !empty($disabled['custom']), true, false) . ' class="wbcr-gnz-table__select-pro">' . __('Custom URL (PRO)', 'gonzales') . '</option>';
591
+ $options .= '<option value="regex"' . selected($is_disabled && !empty($disabled['regex']), true, false) . ' class="wbcr-gnz-table__select-pro">' . __('Regular expression (PRO)', 'gonzales') . '</option>';
592
+ $html .= apply_filters('wbcr_gnz_select_options', $options, $is_disabled, $disabled);
593
+ $html .= '</select>';
594
+
595
+ // Everywhere
596
+ $html .= "<span class='wbcr-assets-manager everywhere'";
597
+ if( !$is_disabled || empty($disabled['everywhere']) ) {
598
+ $html .= " style='display: none;'";
599
+ }
600
+ $html .= ">";
601
+ $html .= '<div class="wbcr-gnz-table__label">' . __('Exclude', 'gonzales') . ': <i class="wbcr-gnz-help-hint wbcr-gnz-tooltip wbcr-gnz-tooltip-bottom" data-tooltip="' . __('You can disable this resource for all pages, except sections and page types listed below. Specify sections and page types with the enabled resource.', 'gonzales') . '"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAQAAABKmM6bAAAAUUlEQVQIHU3BsQ1AQABA0X/komIrnQHYwyhqQ1hBo9KZRKL9CBfeAwy2ri42JA4mPQ9rJ6OVt0BisFM3Po7qbEliru7m/FkY+TN64ZVxEzh4ndrMN7+Z+jXCAAAAAElFTkSuQmCC" alt=""></i></div>';
602
+ $html .= '<ul class="wbcr-gnz-table__options">';
603
+
604
+ $html .= '<li class="wbcr-gnz-table__options-item">';
605
+ $html .= "<input type='hidden' name='enabled{$id}[current]' value='' />";
606
+ $html .= '<label class="wbcr-gnz-table__checkbox">';
607
+ $html .= '<input class="wbcr-gnz-table__checkbox-input visually-hidden" type="checkbox" name="enabled' . $id . '[current]" value="' . $current_url . '"';
608
+ if( $is_enabled && in_array($current_url, $enabled['current']) ) {
609
+ $html .= ' checked';
610
+ }
611
+ $html .= '/>';
612
+ $html .= '<span class="wbcr-gnz-table__checkbox-text">' . __('Current URL', 'gonzales') . '</span>';
613
+ $html .= '</label>';
614
+ $html .= '</li>';
615
+
616
+ $post_types = get_post_types(array('public' => true), 'objects', 'and');
617
+ if( !empty($post_types) ) {
618
+ $html .= "<input type='hidden' name='enabled{$id}[post_types]' value='' />";
619
+ foreach($post_types as $key => $value) {
620
+ $html .= '<li class="wbcr-gnz-table__options-item">';
621
+ $html .= '<label class="wbcr-gnz-table__checkbox">';
622
+ $html .= '<input class="wbcr-gnz-table__checkbox-input visually-hidden" type="checkbox" name="enabled' . $id . '[post_types][]" value="' . $key . '"';
623
+ if( isset($enabled['post_types']) ) {
624
+ if( in_array($key, $enabled['post_types']) ) {
625
+ $html .= ' checked';
626
+ }
627
+ }
628
+ $html .= '/>';
629
+ $html .= '<span class="wbcr-gnz-table__checkbox-text">' . $value->label . '</span>';
630
+ $html .= '</label>';
631
+ $html .= '</li>';
632
+ }
633
+ }
634
+
635
+ $taxonomies = get_taxonomies(array('public' => true), 'objects', 'and');
636
+
637
+ if( !empty($taxonomies) ) {
638
+ unset($taxonomies['category']);
639
+ $html .= "<input type='hidden' name='enabled{$id}[taxonomies]' value='' />";
640
+ foreach($taxonomies as $key => $value) {
641
+ $html .= '<li class="wbcr-gnz-table__options-item">';
642
+ $html .= '<label class="wbcr-gnz-table__checkbox">';
643
+ $html .= '<input class="wbcr-gnz-table__checkbox-input visually-hidden" type="checkbox" name="enabled' . $id . '[taxonomies][]" value="' . $key . '"';
644
+ if( isset($enabled['taxonomies']) ) {
645
+ if( in_array($key, $enabled['taxonomies']) ) {
646
+ $html .= ' checked';
647
+ }
648
+ }
649
+ $html .= '/>';
650
+ $html .= '<span class="wbcr-gnz-table__checkbox-text">' . $value->label . '</span>';
651
+ $html .= '</label>';
652
+ $html .= '</li>';
653
+ }
654
+ }
655
+
656
+ $categories = get_categories();
657
+
658
+ if( !empty($categories) ) {
659
+ $html .= "<input type='hidden' name='enabled{$id}[categories]' value='' />";
660
+ foreach($categories as $key => $cat) {
661
+ $html .= '<li class="wbcr-gnz-table__options-item">';
662
+ $html .= '<label class="wbcr-gnz-table__checkbox">';
663
+ $html .= '<input class="wbcr-gnz-table__checkbox-input visually-hidden" type="checkbox" name="enabled' . $id . '[categories][]" value="' . $cat->term_id . '"';
664
+ if( isset($enabled['categories']) ) {
665
+ if( in_array($cat->term_id, $enabled['categories']) ) {
666
+ $html .= ' checked';
667
+ }
668
+ }
669
+ $html .= '/>';
670
+ $html .= '<span class="wbcr-gnz-table__checkbox-text">' . $cat->name . '</span>';
671
+ $html .= '</label>';
672
+ $html .= '</li>';
673
+ }
674
+ }
675
+
676
+ $html .= '</ul>';
677
+ $html .= '</span>';
678
+
679
+ // Custom URL
680
+ $control_html = '<div class="wbcr-gnz-table__field wbcr-assets-manager custom"';
681
+ if( !$is_disabled || empty($disabled['custom']) ) {
682
+ $control_html .= ' style="display: none;"';
683
+ }
684
+ $control_html .= '>';
685
+ $control_html .= '<label class="wbcr-gnz-table__label" for="disabled' . $id . '[custom][]" title="' . __('Example', 'gonzales') . ': ' . site_url() . '/post/*, ' . site_url() . '/page-*>">' . __('Enter URL (set * for mask)', 'gonzales') . ': <i class="wbcr-gnz-help-hint wbcr-gnz-tooltip wbcr-gnz-tooltip-bottom" data-tooltip="' . __('You can disable the resource only for the pages with the matched to the template address. For example, if you set the template for the link as http://yoursite.test/profile/*, then the resource is disabled for the following pages: http://yoursite.test/profile/12, http://yoursite.test/profile/43, http://yoursite.test/profile/999. If you don’t use the asterisk symbol in the template then the plugin will disable the resource only for the pages with 100% match in the specified link type. This feature is available at the paid version.', 'gonzales') . '"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAQAAABKmM6bAAAAUUlEQVQIHU3BsQ1AQABA0X/komIrnQHYwyhqQ1hBo9KZRKL9CBfeAwy2ri42JA4mPQ9rJ6OVt0BisFM3Po7qbEliru7m/FkY+TN64ZVxEzh4ndrMN7+Z+jXCAAAAAElFTkSuQmCC" alt=""></i></label>';
686
+ $control_html .= '<div class="wbcr-gnz-table__field-item">';
687
+ $control_html .= '<input class="wbcr-gnz-table__field-input" name="disabled' . $id . '[custom][]" type="text" placeholder="http://yoursite.test/profile/*" value="" disabled="disabled">';
688
+ $control_html .= '<button class="wbcr-gnz-table__field-add" type="button" aria-label="' . __('Add field', 'gonzales') . '" disabled></button>';
689
+ $control_html .= '</div>';
690
+ //$control_html .= '<em>Пример: http://yoursite.test/profile/*</em>';
691
+ $control_html .= '</div>';
692
+ // Regex
693
+ $control_html .= "<div class='wbcr-gnz-table__field wbcr-assets-manager regex'";
694
+ if( !$is_disabled || empty($disabled['regex']) ) {
695
+ $control_html .= " style='display: none;'";
696
+ }
697
+ $control_html .= ">";
698
+ $control_html .= '<label class="wbcr-gnz-table__label" for="disabled' . $id . '[regex]">' . __('Enter regular expression', 'gonzales') . ': <i class="wbcr-gnz-help-hint wbcr-gnz-tooltip wbcr-gnz-tooltip-bottom" data-tooltip="' . __('Regular expressions can be used by experts. This tool creates flexible conditions to disable the resource. For example, if you specify this expression: ^([A-z0-9]+-)?gifts? then the resource will be disabled at the following pages http://yoursite.test/get-gift/, http://yoursite.test/gift/, http://yoursite.test/get-gifts/, http://yoursite.test/gifts/. The plugin ignores the backslash at the beginning of the query string, so you can dismiss it. Check your regular expressions in here: https://regex101.com, this will prevent you from the mistakes. This feature is available at the paid version.', 'gonzales') . '"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAQAAABKmM6bAAAAUUlEQVQIHU3BsQ1AQABA0X/komIrnQHYwyhqQ1hBo9KZRKL9CBfeAwy2ri42JA4mPQ9rJ6OVt0BisFM3Po7qbEliru7m/FkY+TN64ZVxEzh4ndrMN7+Z+jXCAAAAAElFTkSuQmCC" alt=""></i></label>';
699
+ $control_html .= '<textarea class="wbcr-gnz-table__textarea" rows="3" name="disabled' . $id . '[regex]" placeholder="^rockstar-[0-9]{2,5}" disabled="disabled"></textarea>';
700
+ $control_html .= "</div>";
701
+ $html .= apply_filters('wbcr_gnz_control_html', $control_html, $id, $is_disabled, $disabled);
702
+
703
+ $html .= '</span>';
704
+
705
+ if( isset($disabled['current']) && !empty($disabled['current'])
706
+ ) {
707
+ $custom_urls = "";
708
+
709
+ foreach($disabled['current'] as $item_url) {
710
+ if( $current_url != $item_url ) {
711
+ $full_url = site_url() . $item_url;
712
+ $custom_urls .= "<span><a href='" . $full_url . "'>" . $full_url . "</a></span>";
713
+ }
714
+ }
715
+
716
+ if( !empty($custom_urls) ) {
717
+ $html .= '<div class="wbcr-gnz-table__also">';
718
+ $html .= '<div class="wbcr-gnz-table__label">' . __('Also disabled for pages', 'gonzales') . ':</div>';
719
+ $html .= '<div class="wbcr-gnz-table__also-url">' . $custom_urls . '</div>';
720
+ $html .= '</div>';
721
+ }
722
+ }
723
+ $html .= '</td>';
724
+
725
+ return $html;
726
  }
727
 
728
  public function formSave()
729
  {
730
  if( isset($_GET['wbcr_assets_manager']) && isset($_POST['wbcr_assets_manager_save']) ) {
731
+
732
+ if( !$this->isUserCan() || !wp_verify_nonce(filter_input(INPUT_POST, 'wbcr_assets_manager_save'), 'wbcr_assets_manager_nonce') ) {
733
+ wp_die(__('You don\'t have enough capability to edit this information.', 'gonzales'), 403);
734
+
735
+ return;
736
  }
737
+
738
+ // todo: вынести в метод
739
+ if( is_multisite() && is_network_admin() ) {
740
+ $options = $this->getNetworkOption('assets_manager_options', array());
741
+ } else {
742
+ $options = $this->getOption('assets_manager_options', array());
743
+ }
744
+
745
  $current_url = esc_url($this->getCurrentUrl());
746
+
747
  if( isset($_POST['disabled']) && !empty($_POST['disabled']) ) {
748
  foreach($_POST['disabled'] as $type => $assets) {
749
  if( !empty($assets) ) {
750
  foreach($assets as $handle => $where) {
 
751
  $handle = sanitize_text_field($handle);
752
+ $where = sanitize_text_field($where['state']);
753
 
754
  if( !isset($options['disabled'][$type][$handle]) ) {
755
  $options['disabled'][$type][$handle] = array();
756
  }
757
  $disabled = &$options['disabled'][$type][$handle];
758
 
759
+ if( !empty($where) && 'disable' == $where ) {
760
+ $action = isset($_POST['wgz_action'][$type][$handle]) ? $_POST['wgz_action'][$type][$handle] : '';
761
+
762
+ if( "everywhere" == $action ) {
763
+ $disabled = apply_filters('wbcr_gnz_unset_disabled', $disabled, $action);
764
+
765
  $disabled['everywhere'] = 1;
766
+ } elseif( "current" == $action ) {
767
+ $disabled = apply_filters('wbcr_gnz_unset_disabled', $disabled, $action);
 
 
 
 
 
768
 
769
  if( !isset($disabled['current']) || !is_array($disabled['current']) ) {
770
  $disabled['current'] = array();
773
  if( !in_array($current_url, $disabled['current']) ) {
774
  array_push($disabled['current'], $current_url);
775
  }
776
+ } else {
777
+ $post_value = isset($_POST['disabled'][$type][$handle]) ? $_POST['disabled'][$type][$handle] : null;
778
+ $disabled = apply_filters('wbcr_gnz_pre_save_disabled', $disabled, $action, $post_value);
779
  }
780
  } else {
781
+ $disabled = apply_filters('wbcr_gnz_unset_disabled', $disabled, 'current');
782
 
783
  if( isset($disabled['current']) ) {
784
  $current_key = array_search($current_url, $disabled['current']);
815
  $options['enabled'][$type][$handle] = array();
816
  }
817
  $enabled = &$options['enabled'][$type][$handle];
818
+
819
+ $action = isset($_POST['wgz_action'][$type][$handle]) ? $_POST['wgz_action'][$type][$handle] : '';
820
 
821
+ if( "everywhere" == $action && (!empty($where['current']) || $where['current'] === "0")
822
+ ) {
823
  if( !isset($enabled['current']) || !is_array($enabled['current']) ) {
824
  $enabled['current'] = array();
825
  }
838
  }
839
  }
840
 
841
+ if( "everywhere" == $action && !empty($where['post_types']) ) {
842
  $enabled['post_types'] = array();
843
  foreach($where['post_types'] as $key => $post_type) {
844
  if( isset($enabled['post_types']) ) {
850
  } else {
851
  unset($enabled['post_types']);
852
  }
853
+
854
+ if( "everywhere" == $action && !empty($where['taxonomies']) ) {
855
+ $enabled['taxonomies'] = array();
856
+ foreach($where['taxonomies'] as $key => $taxonomy) {
857
+ if( isset($enabled['taxonomies']) ) {
858
+ if( !in_array($taxonomy, $enabled['taxonomies']) ) {
859
+ array_push($enabled['taxonomies'], $taxonomy);
860
+ }
861
+ }
862
+ }
863
+ } else {
864
+ unset($enabled['taxonomies']);
865
+ }
866
+
867
+ if( "everywhere" == $action && !empty($where['categories']) ) {
868
+ $enabled['categories'] = array();
869
+ foreach($where['categories'] as $key => $category) {
870
+ if( isset($enabled['categories']) ) {
871
+ if( !in_array($category, $enabled['categories']) ) {
872
+ array_push($enabled['categories'], $category);
873
+ }
874
+ }
875
+ }
876
+ } else {
877
+ unset($enabled['categories']);
878
+ }
879
 
880
  if( empty($enabled) ) {
881
  unset($options['enabled'][$type][$handle]);
891
  }
892
  }
893
 
894
+ do_action('wbcr_gnz_form_save');
895
 
896
+ if( is_multisite() && is_network_admin() ) {
897
+ $this->updateNetworkOption('assets_manager_options', $options);
898
+ } else {
899
+ $this->updateOption('assets_manager_options', $options);
 
 
 
 
 
900
  }
901
+
902
+ WbcrFactoryClearfy206_Helpers::flushPageCache();
903
  }
904
  }
905
+
906
+ /**
907
+ * Get disabled from options
908
+ *
909
+ * @param $type
910
+ * @param $handle
911
+ *
912
+ * @return null
913
+ */
914
+ private function getDisabledFromOptions($type, $handle)
915
  {
916
+ // todo: вынести в метод
917
+ if( is_multisite() && is_network_admin() ) {
918
+ $options = $this->getNetworkOption('assets_manager_options', array());
919
+ } else {
920
+ $options = $this->getOption('assets_manager_options', array());
921
+ }
922
+
923
+ $results = apply_filters('wbcr_gnz_get_disabled_from_options', false, $options, $type, $handle);
924
+ if( false !== $results ) {
925
+ return $results;
926
+ }
927
+
928
  if( isset($options['disabled']) && isset($options['disabled'][$type]) && isset($options['disabled'][$type][$handle]) ) {
929
+ return $options['disabled'][$type][$handle];
930
  }
931
+
932
+ return null;
933
+ }
934
+
935
+ /**
936
+ * Get enabled from options
937
+ *
938
+ * @param $type
939
+ * @param $handle
940
+ *
941
+ * @return null
942
+ */
943
+ private function getEnabledFromOptions($type, $handle)
944
+ {
945
+ // todo: вынести в метод
946
+ if( is_multisite() && is_network_admin() ) {
947
+ $options = $this->getNetworkOption('assets_manager_options', array());
948
+ } else {
949
+ $options = $this->getOption('assets_manager_options', array());
950
+ }
951
+
952
+ $results = apply_filters('wbcr_gnz_get_enabled_from_options', false, $options, $type, $handle);
953
+ if( false !== $results ) {
954
+ return $results;
955
+ }
956
+
957
  if( isset($options['enabled']) && isset($options['enabled'][$type]) && isset($options['enabled'][$type][$handle]) ) {
958
+ return $options['enabled'][$type][$handle];
959
  }
960
+
961
+ return null;
962
+ }
963
+
964
+ function unloadAssets($src, $handle)
965
+ {
966
+ if( isset($_GET['wbcr_assets_manager']) ) {
967
+ return $src;
968
+ }
969
+
970
+ if( apply_filters('wbcr_gnz_check_unload_assets', false) ) {
971
+ return $src;
972
+ }
973
+
974
+ $type = (current_filter() == 'script_loader_src') ? 'js' : 'css';
975
+
976
+ $current_url = esc_url($this->getCurrentUrl());
977
+
978
+ $disabled = $this->getDisabledFromOptions($type, $handle);
979
+ $enabled = $this->getEnabledFromOptions($type, $handle);
980
+
981
+ if( (isset($disabled['everywhere']) && $disabled['everywhere'] == 1) || (isset($disabled['current']) && is_array($disabled['current']) && in_array($current_url, $disabled['current'])) || apply_filters('wbcr_gnz_check_disabled_is_set', false, $disabled, $current_url) ) {
982
+
983
  if( isset($enabled['current']) && is_array($enabled['current']) && in_array($current_url, $enabled['current']) ) {
984
  return $src;
985
  }
986
+
987
+ if( apply_filters('wbcr_gnz_check_unload_disabled', false, $disabled, $current_url) ) {
988
+ return $src;
 
 
 
 
 
 
989
  }
990
+
991
+ if( isset($enabled['post_types']) && is_singular() && in_array(get_post_type(), $enabled['post_types']) ) {
992
  return $src;
993
  }
994
+
995
+ if( isset($enabled['taxonomies']) && in_array(get_queried_object()->taxonomy, $enabled['taxonomies']) ) {
996
+ return $src;
997
+ }
998
+
999
+ if( isset($enabled['categories']) && in_array(get_query_var('cat'), $enabled['categories']) ) {
1000
+ return $src;
1001
+ }
1002
+
1003
  return false;
1004
  }
1005
 
1013
  */
1014
  public function collectAssets()
1015
  {
1016
+ if( !isset($_GET['wbcr_assets_manager']) || (defined('DOING_AJAX') && DOING_AJAX) ) {
1017
+ return false;
1018
+ }
1019
+
1020
  $denied = array(
1021
+ 'js' => array('wbcr-assets-manager', 'admin-bar'),
1022
+ 'css' => array('wbcr-assets-manager', 'admin-bar', 'dashicons'),
1023
  );
1024
+ $denied = apply_filters('wbcr_gnz_denied_assets', $denied);
1025
+
1026
  /**
1027
  * Imitate full untouched list without dequeued assets
1028
  * Appends part of original table. Safe approach.
1031
  'js' => wp_scripts(),
1032
  'css' => wp_styles(),
1033
  );
1034
+
1035
  foreach($data_assets as $type => $data) {
1036
+ //$resource = array();
1037
+ foreach($data->groups as $el => $val) {
1038
+ if( isset($data->registered[$el]) ) {
1039
+ //foreach($resource as $el) {
1040
+ if( !in_array($el, $denied[$type]) ) {
1041
+ if( isset($data->registered[$el]->src) ) {
1042
+ $url = $this->prepareCorrectUrl($data->registered[$el]->src);
1043
+ $url_short = str_replace(get_home_url(), '', $url);
1044
+
1045
+ if( false !== strpos($url, get_theme_root_uri()) ) {
1046
+ $resource_type = 'theme';
1047
+ } elseif( false !== strpos($url, plugins_url()) ) {
1048
+ $resource_type = 'plugins';
1049
+ } else {
1050
+ $resource_type = 'misc';
1051
+ }
1052
+
1053
+ $resource_name = '';
1054
+ if( 'plugins' == $resource_type ) {
1055
+ $clean_url = str_replace(WP_PLUGIN_URL . '/', '', $url);
1056
+ $url_parts = explode('/', $clean_url);
1057
+ $resource_name = isset($url_parts[0]) ? $url_parts[0] : '';
1058
+ }
1059
+
1060
+ $this->collection[$resource_type][$resource_name][$type][$el] = array(
1061
+ 'url_full' => $url,
1062
+ 'url_short' => $url_short,
1063
+ //'state' => $this->get_visibility($type, $el),
1064
+ 'size' => $this->getAssetSize($url),
1065
+ 'ver' => $data->registered[$el]->ver,
1066
+ 'deps' => (isset($data->registered[$el]->deps) ? $data->registered[$el]->deps : array()),
1067
+ );
1068
  }
 
 
 
 
 
 
 
 
 
 
1069
  }
1070
+ //}
1071
  }
1072
  }
1073
  }
1074
+
1075
  return false;
1076
  }
1077
+
1078
  /**
1079
  * Loads functionality that allows to enable/disable js/css without site reload
1080
  */
1081
  public function appendAsset()
1082
  {
1083
+ if( $this->isUserCan() && isset($_GET['wbcr_assets_manager']) ) {
1084
  wp_enqueue_style('wbcr-assets-manager', WGZ_PLUGIN_URL . '/assets/css/assets-manager.css', array(), $this->plugin->getPluginVersion());
1085
+ wp_enqueue_script('wbcr-assets-manager', WGZ_PLUGIN_URL . '/assets/js/assets-manager.js', array('jquery'), $this->plugin->getPluginVersion(), true);
1086
  }
1087
  }
1088
+
 
1089
  /**
1090
  * Exception for address starting from "//example.com" instead of
1091
  * "http://example.com". WooCommerce likes such a format
1096
  private function prepareCorrectUrl($url)
1097
  {
1098
  if( isset($url[0]) && isset($url[1]) && '/' == $url[0] && '/' == $url[1] ) {
1099
+ $out = (is_ssl() ? 'https:' : 'http:') . $url;
 
 
1100
  } else {
1101
  $out = $url;
1102
  }
1121
  return $out;
1122
  }
1123
 
 
1124
  /**
1125
  * Checks how heavy is file
1126
  *
1127
  * @param string $src URL.
1128
+ * @return int Size in KB.
1129
  */
1130
  private function getAssetSize($src)
1131
  {
1146
 
1147
  return $weight;
1148
  }
1149
+
1150
+ /**
1151
+ * Unset disabled
1152
+ *
1153
+ * @param $disabled
1154
+ * @param $action
1155
+ *
1156
+ * @return mixed
1157
+ */
1158
+ public function unsetDisabled($disabled, $action)
1159
+ {
1160
+ if( "everywhere" == $action ) {
1161
+ unset($disabled['current']);
1162
+ } elseif( "current" == $action ) {
1163
+ unset($disabled['everywhere']);
1164
+ }
1165
+
1166
+ return $disabled;
1167
+ }
1168
+
1169
+ /**
1170
+ * Get plugin data from folder name
1171
+ *
1172
+ * @param $name
1173
+ *
1174
+ * @return array
1175
+ */
1176
+ private function getPluginData($name)
1177
+ {
1178
+ $data = array();
1179
+
1180
+ if( $name ) {
1181
+ if( !function_exists('get_plugins') ) {
1182
+ // подключим файл с функцией get_plugins()
1183
+ require_once ABSPATH . 'wp-admin/includes/plugin.php';
1184
+ }
1185
+ $all_plugins = get_plugins();
1186
+ if( !empty($all_plugins) ) {
1187
+ foreach($all_plugins as $plugin_path => $plugin_data) {
1188
+ if( strpos($plugin_path, $name . '/') !== false ) {
1189
+ $data = $plugin_data;
1190
+ $data['path'] = $plugin_path;
1191
+ break;
1192
+ }
1193
+ }
1194
+ }
1195
+ }
1196
+
1197
+ return $data;
1198
+ }
1199
+
1200
+ /**
1201
+ * Get sided plugin name
1202
+ *
1203
+ * @param string $index
1204
+ *
1205
+ * @return string
1206
+ */
1207
+ private function getSidedPluginName($index)
1208
+ {
1209
+ return $index;
1210
+ /*if( isset($this->sided_plugins[$index]) ) {
1211
+ $parts = explode('/', $this->sided_plugins[$index]);
1212
+
1213
+ return isset($parts[0]) ? $parts[0] : $this->sided_plugins[$index];
1214
+ }
1215
+
1216
+ return "";*/
1217
+ }
1218
+
1219
+ /**
1220
+ * Get exclude sided plugin files
1221
+ *
1222
+ * @param string $index
1223
+ * @param string $type
1224
+ * @param bool $full
1225
+ *
1226
+ * @return array
1227
+ */
1228
+ private function getSidedPluginFiles($index, $type, $full = false)
1229
+ {
1230
+ if( isset($this->sided_plugin_files[$index][$type]) && !empty($this->sided_plugin_files[$index][$type]) ) {
1231
+ return $this->sided_plugin_files[$index][$type];
1232
+ }
1233
+
1234
+ $this->sided_plugin_files[$index][$type] = array();
1235
+
1236
+ // todo: вынести в метод
1237
+ if( is_multisite() && is_network_admin() ) {
1238
+ $options = $this->getNetworkOption('assets_manager_sided_plugins', array());
1239
+ } else {
1240
+ $options = $this->getOption('assets_manager_sided_plugins', array());
1241
+ }
1242
+
1243
+ $plugin = $this->getSidedPluginName($index);
1244
+
1245
+ if( $plugin && $options ) {
1246
+ if( isset($options[$plugin][$type]) ) {
1247
+ $urls = $options[$plugin][$type];
1248
+
1249
+ if( is_array($urls) ) {
1250
+ foreach($urls as $url) {
1251
+
1252
+ if( $full ) {
1253
+ $file = (false !== strpos($url, site_url()) ? $url : site_url() . '/' . trim($url, '/\\'));
1254
+ } else {
1255
+ $parts = explode('/', $url);
1256
+ $file = array_pop($parts);
1257
+ if( empty($file) ) {
1258
+ $file = $url;
1259
+ }
1260
+ }
1261
+
1262
+ $this->sided_plugin_files[$index][$type][] = $file;
1263
+ }
1264
+ }
1265
+ }
1266
+ }
1267
+
1268
+ return $this->sided_plugin_files[$index][$type];
1269
+ }
1270
+
1271
+ /**
1272
+ * Is component active
1273
+ *
1274
+ * @param $index
1275
+ *
1276
+ * @return bool
1277
+ */
1278
+ private function isComponentActive($index)
1279
+ {
1280
+ include_once(ABSPATH . 'wp-admin/includes/plugin.php');
1281
+
1282
+ $plugin_path = isset($this->sided_plugins[$index]) ? $this->sided_plugins[$index] : null;
1283
+
1284
+ if( $index == 'wmac' && defined('LOADING_ASSETS_MANAGER_AS_ADDON') && class_exists('WCL_Plugin') ) {
1285
+ return WCL_Plugin::app()->isActivateComponent('minify_and_combine');
1286
+ }
1287
+
1288
+ return is_plugin_active($plugin_path);
1289
+ }
1290
+
1291
+ /**
1292
+ * Get component name
1293
+ *
1294
+ * @param $plugin_path
1295
+ * @param $index
1296
+ *
1297
+ * @return string
1298
+ */
1299
+ private function getComponentName($plugin_path, $index)
1300
+ {
1301
+ if( $index == 'wclp' ) {
1302
+ $name = 'Clearfy';
1303
+ } else if( $index == 'wmac' ) {
1304
+ $name = __('Minify and Combine', 'gonzales');
1305
+ } else {
1306
+ $data = get_plugin_data(WP_PLUGIN_DIR . '/' . $plugin_path);
1307
+ $name = $data['Name'];
1308
+ }
1309
+
1310
+ return $name;
1311
+ }
1312
+
1313
+ /**
1314
+ * Get head columns
1315
+ *
1316
+ * @param string $html
1317
+ *
1318
+ * @return string
1319
+ */
1320
+ public function getAdditionalHeadColumns($html)
1321
+ {
1322
+ if( !empty($this->sided_plugins) ) {
1323
+ foreach($this->sided_plugins as $index => $plugin_path) {
1324
+ if( $this->isComponentActive($index) ) {
1325
+ $title = $this->getComponentName($plugin_path, $index);
1326
+ $text = $index == 'wclp' ? __('remove version?', 'gonzales') : __('optimize?', 'gonzales');
1327
+
1328
+ $hint = '';
1329
+ if( $index == 'wclp' ) {
1330
+ $hint = __('You’ve enabled &#34;Remove query strings&#34; from static resources in the &#34;Clearfy&#34; plugin. This list of settings helps you to exclude the necessary scripts and styles with remaining query strings. Press No to add a file to the excluded list.', 'gonzales');
1331
+ } else if( $index == 'wmac' ) {
1332
+ $hint = __('You’ve enabled the &#34;Optimize js scripts?&#34; and &#34;Optimize CSS options&#34; in the &#34;Minify & Combine plugin&#34;. These settings exclude scripts and styles that you don’t want to optimize. Press No to add a file to the excluded list.', 'gonzales');
1333
+ } else if( $index == 'aopt' ) {
1334
+ $hint = __('You’ve enabled the &#34;Optimize js scripts?&#34; and &#34;Optimize CSS options&#34; in the &#34;Autoptimize&#34;. These settings exclude scripts and styles that you don’t want to optimize. Press No to add a file to the excluded list.', 'gonzales');
1335
+ }
1336
+ $html .= '<th class="wbcr-gnz-table__column_switch"><span class="wbcr-gnz-table__th-external-plugin">' . $title . ':<i class="wbcr-gnz-help-hint wbcr-gnz-tooltip wbcr-gnz-tooltip-bottom" data-tooltip="' . $hint . '."><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAQAAABKmM6bAAAAUUlEQVQIHU3BsQ1AQABA0X/komIrnQHYwyhqQ1hBo9KZRKL9CBfeAwy2ri42JA4mPQ9rJ6OVt0BisFM3Po7qbEliru7m/FkY+TN64ZVxEzh4ndrMN7+Z+jXCAAAAAElFTkSuQmCC" alt=""></i></span><em>' . $text . '</em></th>';
1337
+ }
1338
+ }
1339
+ }
1340
+
1341
+ return $html;
1342
+ }
1343
+
1344
+ /**
1345
+ * Get active status for sided plugin
1346
+ *
1347
+ * @param $index
1348
+ * @param $options
1349
+ * @param $plugin
1350
+ * @param $type
1351
+ * @param $handle
1352
+ *
1353
+ * @return bool
1354
+ */
1355
+ private function getActiveStatusForSidedPlugin($index, $options, $plugin, $type, $handle)
1356
+ {
1357
+ $active = isset($options[$plugin][$type]) && is_array($options[$plugin][$type]) && in_array($handle, $options[$plugin][$type]);
1358
+
1359
+ /*if( !$active && !isset($options[$plugin]) ) {
1360
+
1361
+ switch( $index ) {
1362
+ case 'wclp':
1363
+ if( class_exists('WCL_Plugin') ) {
1364
+ if( 'plugins' == $type ) {
1365
+ $active = WCL_Plugin::app()->getPopulateOption('remove_js_version', false);
1366
+ if( !$active ) {
1367
+ $active = WCL_Plugin::app()->getPopulateOption('remove_css_version', false);
1368
+ }
1369
+ } else {
1370
+ $active = WCL_Plugin::app()->getPopulateOption('remove_' . $type . '_version', false);
1371
+ }
1372
+ }
1373
+ break;
1374
+ }
1375
+ }*/
1376
+
1377
+ return $active;
1378
+ }
1379
+
1380
+ /**
1381
+ * Get controls columns
1382
+ *
1383
+ * @param string $html
1384
+ * @param string $type
1385
+ * @param string $handle
1386
+ * @param string $plugin_handle
1387
+ *
1388
+ * @return string
1389
+ */
1390
+ public function getAdditionalControlsColumns($html, $type, $handle, $plugin_handle)
1391
+ {
1392
+ if( !empty($this->sided_plugins) ) {
1393
+
1394
+ // todo: вынести в метод
1395
+ if( is_multisite() && is_network_admin() ) {
1396
+ $options = $this->getNetworkOption('assets_manager_sided_plugins', array());
1397
+ } else {
1398
+ $options = $this->getOption('assets_manager_sided_plugins', array());
1399
+ }
1400
+
1401
+ foreach($this->sided_plugins as $index => $plugin_path) {
1402
+ if( $this->isComponentActive($index) ) {
1403
+ $plugin = $this->getSidedPluginName($index);
1404
+
1405
+ $active = $this->getActiveStatusForSidedPlugin($index, $options, $plugin, $type, $handle);
1406
+ $name = "sided_plugins[{$plugin}][{$type}][{$handle}]";
1407
+
1408
+ $html .= "<td>";
1409
+
1410
+ if( !empty($handle) && ('plugins' != $type && false !== strpos($handle, '.' . $type) || 'plugins' == $type) ) {
1411
+ $html .= '<label class="wbcr-gnz-switch">';
1412
+ $html .= '<input class="wbcr-gnz-switch__input visually-hidden wbcr-gnz-sided-disable';
1413
+ $html .= ('plugins' != $type ? ' wbcr-gnz-sided-' . $index . '-' . $plugin_handle : '');
1414
+ $html .= '" type="checkbox"' . checked($active, true, false);
1415
+ $html .= ('plugins' == $type ? ' data-handle="' . $index . '-' . $plugin_handle . '"' : '') . '/>';
1416
+ $html .= '<input type="hidden" name="' . $name . '" value="' . ($active ? 1 : 0) . '"/>';
1417
+ $html .= '<span class="wbcr-gnz-switch__inner" data-off="' . __('No', 'gonzales') . '" data-on="' . __('Yes', 'gonzales') . '"></span>';
1418
+ $html .= '<span class="wbcr-gnz-switch__slider"></span>';
1419
+ $html .= '</label>';
1420
+ }
1421
+ $html .= "</td>";
1422
+ }
1423
+ }
1424
+ }
1425
+
1426
+ return $html;
1427
+ }
1428
+
1429
+ /**
1430
+ * @param $index
1431
+ * @param $type
1432
+ * @param $exclude
1433
+ *
1434
+ * @return array
1435
+ */
1436
+ private function filterExclusions($index, $type, $exclude)
1437
+ {
1438
+ $files = $this->getSidedPluginFiles($index, $type);
1439
+
1440
+ if( !empty($files) ) {
1441
+ if( is_array($exclude) ) {
1442
+ $exclude = array_merge($exclude, $files);
1443
+ } else {
1444
+ $dontmove = implode(',', $files);
1445
+ $exclude .= !empty($exclude) ? ',' . $dontmove : $dontmove;
1446
+ }
1447
+ }
1448
+
1449
+ return $exclude;
1450
+ }
1451
+
1452
+ /**
1453
+ * aopt filter js exclude
1454
+ *
1455
+ * @param $exclude
1456
+ * @param $content
1457
+ *
1458
+ * @return array
1459
+ */
1460
+ public function aoptFilterJsExclude($exclude, $content)
1461
+ {
1462
+ return $this->filterExclusions('aopt', 'js', $exclude);
1463
+ }
1464
+
1465
+ /**
1466
+ * aopt filter css exclude
1467
+ *
1468
+ * @param $exclude
1469
+ * @param $content
1470
+ *
1471
+ * @return array
1472
+ */
1473
+ public function aoptFilterCssExclude($exclude, $content)
1474
+ {
1475
+ return $this->filterExclusions('aopt', 'css', $exclude);
1476
+ }
1477
+
1478
+ /**
1479
+ * wmac filter js exclude
1480
+ *
1481
+ * @param $exclude
1482
+ * @param $content
1483
+ *
1484
+ * @return array
1485
+ */
1486
+ public function wmacFilterJsExclude($exclude, $content)
1487
+ {
1488
+ return $this->filterExclusions('wmac', 'js', $exclude);
1489
+ }
1490
+
1491
+ /**
1492
+ * wmac filter css exclude
1493
+ *
1494
+ * @param $exclude
1495
+ * @param $content
1496
+ *
1497
+ * @return array
1498
+ */
1499
+ public function wmacFilterCssExclude($exclude, $content)
1500
+ {
1501
+ return $this->filterExclusions('wmac', 'css', $exclude);
1502
+ }
1503
+
1504
+ /**
1505
+ * Filter js minify exclusions
1506
+ *
1507
+ * @param $index
1508
+ * @param $type
1509
+ * @param $result
1510
+ * @param $url
1511
+ *
1512
+ * @return bool
1513
+ */
1514
+ private function filterJsMinifyExclusions($index, $type, $result, $url)
1515
+ {
1516
+ $files = $this->getSidedPluginFiles($index, $type);
1517
+
1518
+ if( !empty($files) ) {
1519
+ foreach($files as $file) {
1520
+ if( false !== strpos($url, $file) ) {
1521
+ return false;
1522
+ }
1523
+ }
1524
+ }
1525
+
1526
+ return $result;
1527
+ }
1528
+
1529
+ /**
1530
+ * Action wmac_filter_js_minify_excluded
1531
+ *
1532
+ * @param $result
1533
+ * @param $url
1534
+ *
1535
+ * @return mixed
1536
+ */
1537
+ public function wmacFilterJsMinifyExclude($result, $url)
1538
+ {
1539
+ return $this->filterJsMinifyExclusions('wmac', 'js', $result, $url);
1540
+ }
1541
+
1542
+ /**
1543
+ * Action wmac_filter_css_minify_excluded
1544
+ *
1545
+ * @param $result
1546
+ * @param $url
1547
+ *
1548
+ * @return mixed
1549
+ */
1550
+ public function wmacFilterCssMinifyExclude($result, $url)
1551
+ {
1552
+ return $this->filterJsMinifyExclusions('wmac', 'css', $result, $url);
1553
+ }
1554
+
1555
+ /**
1556
+ * Manage excluded files
1557
+ *
1558
+ * @param $sided_exclude_files
1559
+ * @param $index
1560
+ * @param $type
1561
+ */
1562
+ private function manageExcludeFiles($sided_exclude_files, $index, $type)
1563
+ {
1564
+ switch( $index ) {
1565
+ case 'aopt':
1566
+ if( get_option('autoptimize_js', false) || get_option('autoptimize_css', false)
1567
+ ) {
1568
+ $exclude_files = get_option('autoptimize_' . $type . '_exclude', '');
1569
+ } else {
1570
+ return;
1571
+ }
1572
+ break;
1573
+ case 'wmac':
1574
+ if( class_exists('WMAC_Plugin') && (WMAC_Plugin::app()->getPopulateOption('js_optimize', false) || WMAC_Plugin::app()->getPopulateOption('css_optimize', false))
1575
+ ) {
1576
+ $exclude_files = WMAC_Plugin::app()->getPopulateOption($type . '_exclude', '');
1577
+ } else {
1578
+ return;
1579
+ }
1580
+ break;
1581
+ case 'wclp':
1582
+ if( class_exists('WCL_Plugin') && (WCL_Plugin::app()->getPopulateOption('remove_js_version', false) || WCL_Plugin::app()->getPopulateOption('remove_css_version', false))
1583
+ ) {
1584
+ $exclude_files = WCL_Plugin::app()->getPopulateOption('remove_version_exclude', '');
1585
+ } else {
1586
+ return;
1587
+ }
1588
+ break;
1589
+ default:
1590
+ return;
1591
+ }
1592
+
1593
+ // For clearfy need new line
1594
+ $delimeter = $index == 'wclp' ? "\n" : ",";
1595
+ $current_exclude_files = !empty($exclude_files) ? array_filter(array_map('trim', explode($delimeter, $exclude_files))) : array();
1596
+
1597
+ $delete_files = array_diff($sided_exclude_files['before'][$type], $sided_exclude_files['after'][$type]);
1598
+ $new_files = array_diff($sided_exclude_files['after'][$type], $current_exclude_files);
1599
+
1600
+ if( empty($current_exclude_files) && !empty($new_files) ) {
1601
+ $current_exclude_files = $new_files;
1602
+ } else if( !empty($current_exclude_files) ) {
1603
+ $new_exclude_files = array();
1604
+ foreach($current_exclude_files as $file) {
1605
+
1606
+ if( !in_array($file, $delete_files) ) {
1607
+ $new_exclude_files[] = $file;
1608
+ }
1609
+ }
1610
+ $current_exclude_files = array_merge($new_exclude_files, $new_files);
1611
+ }
1612
+
1613
+ $current_exclude_files = array_filter(array_unique($current_exclude_files));
1614
+
1615
+ switch( $index ) {
1616
+ case 'aopt':
1617
+ update_option('autoptimize_' . $type . '_exclude', implode(', ', $current_exclude_files));
1618
+ break;
1619
+ case 'wmac':
1620
+ if( class_exists('WMAC_Plugin') ) {
1621
+ WMAC_Plugin::app()->updatePopulateOption($type . '_exclude', implode(', ', $current_exclude_files));
1622
+ }
1623
+ break;
1624
+ case 'wclp':
1625
+ if( class_exists('WCL_Plugin') ) {
1626
+ WCL_Plugin::app()->updatePopulateOption('remove_version_exclude', implode($delimeter, $current_exclude_files));
1627
+ }
1628
+ break;
1629
+ }
1630
+ }
1631
+
1632
+ /**
1633
+ * Action form save
1634
+ *
1635
+ * @param bool $empty_before
1636
+ */
1637
+ public function actionFormSave($empty_before = false)
1638
+ {
1639
+ if( !empty($this->sided_plugins) && !$empty_before ) {
1640
+ foreach($this->sided_plugins as $index => $sided_plugin) {
1641
+ $sided_exclude_files[$index]['before'] = array(
1642
+ 'js' => array(),
1643
+ 'css' => array()
1644
+ );
1645
+ // For clearfy need full url
1646
+ $full = ($index == 'wclp' ? true : false);
1647
+
1648
+ $sided_exclude_files[$index]['before']['js'] += $this->getSidedPluginFiles($index, 'js', $full);
1649
+ $sided_exclude_files[$index]['before']['css'] += $this->getSidedPluginFiles($index, 'css', $full);
1650
+ }
1651
+ }
1652
+
1653
+ if( isset($_POST['sided_plugins']) && !empty($_POST['sided_plugins']) ) {
1654
+ $sided_plugins_options = array();
1655
+ foreach($_POST['sided_plugins'] as $plugin => $types) {
1656
+ foreach($types as $type => $urls) {
1657
+ foreach($urls as $url => $active) {
1658
+
1659
+ if( !empty($url) && $active ) {
1660
+ $sided_plugins_options[$plugin][$type][] = $url;
1661
+ }
1662
+ }
1663
+ }
1664
+ }
1665
+
1666
+ if( is_multisite() && is_network_admin() ) {
1667
+ $this->updateNetworkOption('assets_manager_sided_plugins', $sided_plugins_options);
1668
+ } else {
1669
+ $this->updateOption('assets_manager_sided_plugins', $sided_plugins_options);
1670
+ }
1671
+ }
1672
+
1673
+ if( !empty($this->sided_plugins) ) {
1674
+ $this->sided_plugin_files = array();
1675
+ foreach($this->sided_plugins as $index => $sided_plugin) {
1676
+ $sided_exclude_files[$index]['after'] = array(
1677
+ 'js' => array(),
1678
+ 'css' => array()
1679
+ );
1680
+ // For clearfy need full url
1681
+ $full = ($index == 'wclp' ? true : false);
1682
+
1683
+ $sided_exclude_files[$index]['after']['js'] += $this->getSidedPluginFiles($index, 'js', $full);
1684
+ $sided_exclude_files[$index]['after']['css'] += $this->getSidedPluginFiles($index, 'css', $full);
1685
+
1686
+ if( !empty($sided_exclude_files[$index]['before']['js']) || !empty($sided_exclude_files[$index]['after']['js']) ) {
1687
+ $this->manageExcludeFiles($sided_exclude_files[$index], $index, 'js');
1688
+ }
1689
+
1690
+ if( !empty($sided_exclude_files[$index]['before']['css']) || !empty($sided_exclude_files[$index]['after']['css']) ) {
1691
+ $this->manageExcludeFiles($sided_exclude_files[$index], $index, 'css');
1692
+ }
1693
+ }
1694
+ }
1695
+ }
1696
  }
components/assets-manager/includes/class.plugin.php CHANGED
@@ -14,12 +14,12 @@
14
  if( !class_exists('WGZ_Plugin') ) {
15
 
16
  if( !class_exists('WGZ_PluginFactory') ) {
17
- if( defined('LOADING_GONZALES_AS_ADDON') ) {
18
  class WGZ_PluginFactory {
19
 
20
  }
21
  } else {
22
- class WGZ_PluginFactory extends Wbcr_Factory406_Plugin {
23
 
24
  }
25
  }
@@ -28,7 +28,7 @@
28
  class WGZ_Plugin extends WGZ_PluginFactory {
29
 
30
  /**
31
- * @var Wbcr_Factory406_Plugin
32
  */
33
  private static $app;
34
 
@@ -47,11 +47,9 @@
47
  $this->as_addon = isset($data['as_addon']);
48
 
49
  if( $this->as_addon ) {
50
- $plugin_parent = isset($data['plugin_parent'])
51
- ? $data['plugin_parent']
52
- : null;
53
 
54
- if( !($plugin_parent instanceof Wbcr_Factory406_Plugin) ) {
55
  throw new Exception('An invalid instance of the class was passed.');
56
  }
57
 
@@ -64,54 +62,46 @@
64
  parent::__construct($plugin_path, $data);
65
  }
66
 
67
- $this->setTextDomain();
68
  $this->setModules();
69
 
70
  $this->globalScripts();
71
 
72
  if( is_admin() ) {
73
- $this->adminScripts();
74
  }
75
- //add_action('plugins_loaded', array($this, 'pluginsLoaded'));
 
76
  }
77
 
78
  /**
79
- * @return Wbcr_Factory406_Plugin
80
  */
81
  public static function app()
82
  {
83
  return self::$app;
84
  }
85
 
86
- // todo: перенести этот медот в фреймворк
87
- protected function setTextDomain()
88
  {
89
- // Localization plugin
90
- //load_plugin_textdomain('gonzales', false, dirname(WCL_PLUGIN_BASE) . '/languages/');
91
-
92
- $domain = 'gonzales';
93
- $locale = apply_filters('plugin_locale', is_admin()
94
- ? get_user_locale()
95
- : get_locale(), $domain);
96
- $mofile = $domain . '-' . $locale . '.mo';
97
 
98
- if( !load_textdomain($domain, WGZ_PLUGIN_DIR . '/languages/' . $mofile) ) {
99
- load_muplugin_textdomain($domain);
100
  }
101
  }
102
-
103
  protected function setModules()
104
  {
105
  if( !$this->as_addon ) {
106
  self::app()->load(array(
107
- array('libs/factory/bootstrap', 'factory_bootstrap_406', 'admin'),
108
- array('libs/factory/forms', 'factory_forms_407', 'admin'),
109
- array('libs/factory/pages', 'factory_pages_407', 'admin'),
110
- array('libs/factory/clearfy', 'factory_clearfy_203', 'all')
111
  ));
112
  }
113
  }
114
-
115
  private function registerPages()
116
  {
117
  $admin_path = WGZ_PLUGIN_DIR . '/admin/pages';
@@ -121,21 +111,11 @@
121
  self::app()->registerPage('WbcrGnz_MoreFeaturesPage', $admin_path . '/more-features.php');
122
  }
123
  }
124
-
125
- private function adminScripts()
126
- {
127
- require(WGZ_PLUGIN_DIR . '/admin/boot.php');
128
- $this->registerPages();
129
- }
130
-
131
  private function globalScripts()
132
  {
133
  require(WGZ_PLUGIN_DIR . '/includes/class.configurate-assets.php');
134
  new WbcrGnz_ConfigAssetsManager(self::$app);
135
  }
136
- /*public function pluginsLoaded()
137
- {
138
-
139
- }*/
140
  }
141
  }
14
  if( !class_exists('WGZ_Plugin') ) {
15
 
16
  if( !class_exists('WGZ_PluginFactory') ) {
17
+ if( defined('LOADING_ASSETS_MANAGER_AS_ADDON') ) {
18
  class WGZ_PluginFactory {
19
 
20
  }
21
  } else {
22
+ class WGZ_PluginFactory extends Wbcr_Factory409_Plugin {
23
 
24
  }
25
  }
28
  class WGZ_Plugin extends WGZ_PluginFactory {
29
 
30
  /**
31
+ * @var Wbcr_Factory409_Plugin
32
  */
33
  private static $app;
34
 
47
  $this->as_addon = isset($data['as_addon']);
48
 
49
  if( $this->as_addon ) {
50
+ $plugin_parent = isset($data['plugin_parent']) ? $data['plugin_parent'] : null;
 
 
51
 
52
+ if( !($plugin_parent instanceof Wbcr_Factory409_Plugin) ) {
53
  throw new Exception('An invalid instance of the class was passed.');
54
  }
55
 
62
  parent::__construct($plugin_path, $data);
63
  }
64
 
 
65
  $this->setModules();
66
 
67
  $this->globalScripts();
68
 
69
  if( is_admin() ) {
70
+ require(WGZ_PLUGIN_DIR . '/admin/boot.php');
71
  }
72
+
73
+ add_action('plugins_loaded', array($this, 'pluginsLoaded'));
74
  }
75
 
76
  /**
77
+ * @return Wbcr_Factory409_Plugin
78
  */
79
  public static function app()
80
  {
81
  return self::$app;
82
  }
83
 
84
+ public function pluginsLoaded()
 
85
  {
86
+ self::app()->setTextDomain('gonzales', WGZ_PLUGIN_DIR);
 
 
 
 
 
 
 
87
 
88
+ if( is_admin() ) {
89
+ $this->registerPages();
90
  }
91
  }
92
+
93
  protected function setModules()
94
  {
95
  if( !$this->as_addon ) {
96
  self::app()->load(array(
97
+ array('libs/factory/bootstrap', 'factory_bootstrap_409', 'admin'),
98
+ array('libs/factory/forms', 'factory_forms_410', 'admin'),
99
+ array('libs/factory/pages', 'factory_pages_410', 'admin'),
100
+ array('libs/factory/clearfy', 'factory_clearfy_206', 'all')
101
  ));
102
  }
103
  }
104
+
105
  private function registerPages()
106
  {
107
  $admin_path = WGZ_PLUGIN_DIR . '/admin/pages';
111
  self::app()->registerPage('WbcrGnz_MoreFeaturesPage', $admin_path . '/more-features.php');
112
  }
113
  }
114
+
 
 
 
 
 
 
115
  private function globalScripts()
116
  {
117
  require(WGZ_PLUGIN_DIR . '/includes/class.configurate-assets.php');
118
  new WbcrGnz_ConfigAssetsManager(self::$app);
119
  }
 
 
 
 
120
  }
121
  }
components/assets-manager/languages/gonzales-nl_BE.po CHANGED
@@ -1,194 +1,194 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: Clearfy\n"
4
- "POT-Creation-Date: 2018-09-06 18:24+0300\n"
5
- "PO-Revision-Date: \n"
6
- "Last-Translator: \n"
7
- "Language-Team: \n"
8
- "Language: nl_BE\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: Poedit 2.1.1\n"
13
- "Plural-Forms: nplurals=2; plural=n != 1;\n"
14
- "X-Generator: Poedit 2.1.1\n"
15
- "X-Poedit-Basepath: ..\n"
16
- "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
17
- "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
18
- "X-Poedit-SourceCharset: UTF-8\n"
19
- "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c\n"
20
- "X-Poedit-SearchPath-0: .\n"
21
- "X-Poedit-SearchPathExcluded-0: libs\n"
22
- "X-Poedit-SearchPathExcluded-1: components\n"
23
- "X-Poedit-SearchPathExcluded-2: cache\n"
24
-
25
- #: admin/boot.php:32
26
- msgid "Get ultimate plugin free"
27
- msgstr "Krijg ultieme plugin gratis"
28
-
29
- #: admin/boot.php:57 admin/pages/assets-manager.php:101
30
- msgid "Disable assets manager"
31
- msgstr "Schakel assets manager uit"
32
-
33
- #: admin/boot.php:64 admin/pages/assets-manager.php:125
34
- msgid "Disable assets manager panel"
35
- msgstr "Schakel paneel van assets manager uit"
36
-
37
- #: admin/boot.php:70 admin/pages/assets-manager.php:134
38
- msgid "Disable assets manager on front"
39
- msgstr "Schakel assets manager op front-end uit"
40
-
41
- #: admin/boot.php:76 admin/pages/assets-manager.php:143
42
- msgid "Disable assets manager on back-end"
43
- msgstr "Schakel assets manager op back-end uit"
44
-
45
- #: admin/boot.php:82
46
- msgid "Assets manager options"
47
- msgstr "Assets manager opties"
48
-
49
- #: admin/pages/assets-manager.php:42 admin/pages/assets-manager.php:61
50
- #: includes/class.configurate-assets.php:139
51
- msgid "Assets manager"
52
- msgstr "Assets manager"
53
-
54
- #: admin/pages/assets-manager.php:62
55
- msgid "General"
56
- msgstr "Algemeen"
57
-
58
- #: admin/pages/assets-manager.php:94
59
- msgid "Disable unused scripts, styles, and fonts"
60
- msgstr "Ongebruikte scripts, stijlen en lettertypen uitschakelen"
61
-
62
- #: admin/pages/assets-manager.php:94
63
- msgid ""
64
- "There is a button in the adminbar called \"Script Manager\". If you click on "
65
- "it you will see a list of loaded scripts, styles and fonts on the current page "
66
- "of your site. If you think that one of the assets is superfluous on this page, "
67
- "you can disable it individually, so that it does not create unnecessary "
68
- "queries when page loading. Use the script manager very carefull to non-corrupt "
69
- "your website. We recommend to test this function at a local server."
70
- msgstr ""
71
- "Er is een knop in de beheerbalk genaamd 'Script Manager'. Als u erop klikt, "
72
- "ziet u een lijst met geladen scripts, stijlen en lettertypen op de huidige "
73
- "pagina van uw site. Als u denkt dat een van de items op deze pagina overbodig "
74
- "is, kunt u deze afzonderlijk uitschakelen, zodat er geen onnodige query's "
75
- "ontstaan ​​wanneer de pagina wordt geladen. Gebruik de script manager heel "
76
- "voorzichtig om uw website niet te beschadigen. We raden aan om deze functie "
77
- "bij een lokale server te testen."
78
-
79
- #: admin/pages/assets-manager.php:103
80
- msgid "Full disable of the module."
81
- msgstr "De module volledig uitschakelen."
82
-
83
- #: admin/pages/assets-manager.php:127
84
- msgid ""
85
- "By default in your admin bar there is a button for control the assets scripts "
86
- "and styles. With this option, you can turn off the script manager on front and "
87
- "back-end."
88
- msgstr ""
89
- "Standaard is er in je beheer balk een knop voor het beheren van de assets "
90
- "scripts en -stijlen. Met deze optie kunt u de script manager aan frontend en "
91
- "backend uitschakelen."
92
-
93
- #: admin/pages/assets-manager.php:136
94
- msgid "Disables assets manager initialization for frontend."
95
- msgstr "Schakelt de opstart van assets manager voor de front-end uit."
96
-
97
- #: admin/pages/assets-manager.php:145
98
- msgid "Disables assets manager initialization for backend."
99
- msgstr "Schakelt de opstart van assets manager voor de back-end uit."
100
-
101
- #: gonzales.php:23
102
- msgid ""
103
- "We found that you use the plugin \"Clearfy - disable unused functions\", this "
104
- "plugin already has the same functions as \"Assets manager\", so you can "
105
- "disable the \"Assets manager\" plugin!"
106
- msgstr ""
107
- "We hebben vastgesteld dat u de plugin \"Clearfy - uitschakelen ongebruikte "
108
- "functies\" gebruikt, deze plugin heeft al dezelfde functies als \"Assets "
109
- "manager\", dus u kunt de plugin \"Assets manager\" uitschakelen!"
110
-
111
- #: gonzales.php:80
112
- msgid "Webcraftic assets manager"
113
- msgstr "Webcraftic assets manager"
114
-
115
- #: includes/class.configurate-assets.php:94
116
- #: includes/class.configurate-assets.php:114
117
- msgid "Script Manager"
118
- msgstr "Script Manager"
119
-
120
- #: includes/class.configurate-assets.php:141
121
- msgid ""
122
- "Below you can disable/enable CSS and JS files on a per page/post basis, as "
123
- "well as by custom post types. We recommend testing this locally or on a "
124
- "staging site first, as you could break the appearance of your live site. If "
125
- "you aren't sure about a certain script, you can try clicking on it, as a lot "
126
- "of authors will mention their plugin or theme in the header of the source code."
127
- msgstr ""
128
- "Hieronder kunt u CSS en JS bestanden per pagina/post uitschakelen en "
129
- "inschakelen, evenals voor aangepaste bericht types. We raden aan dit eerst "
130
- "lokaal of op een staging-site te testen, omdat je het uiterlijk van je live "
131
- "site kunt breken. Als je niet zeker bent van een bepaald script, kun je "
132
- "proberen erop te klikken, omdat veel auteurs hun plugin of thema zullen "
133
- "vermelden in de hoofding van de broncode."
134
-
135
- #: includes/class.configurate-assets.php:142
136
- msgid ""
137
- "If for some reason you run into trouble, you can always enable everything "
138
- "again to reset the settings."
139
- msgstr ""
140
- "Als u om de één of andere reden in de problemen komt, kunt u altijd alles "
141
- "opnieuw inschakelen om de instellingen opnieuw in te stellen."
142
-
143
- #: includes/class.configurate-assets.php:151
144
- msgid "Save settings"
145
- msgstr "Bewaar instellingen"
146
-
147
- #: includes/class.configurate-assets.php:158
148
- msgid "Hide panel in adminbar?"
149
- msgstr "Verberg paneel in beheer balk?"
150
-
151
- #: includes/class.configurate-assets.php:169
152
- msgid "State"
153
- msgstr "Staat"
154
-
155
- #: includes/class.configurate-assets.php:170
156
- msgid "Size"
157
- msgstr "Formaat"
158
-
159
- #: includes/class.configurate-assets.php:171
160
- msgid "Script"
161
- msgstr "Script"
162
-
163
- #: includes/class.configurate-assets.php:172
164
- msgid "In use"
165
- msgstr "In gebruik"
166
-
167
- #: includes/class.configurate-assets.php:173
168
- msgid "Disable"
169
- msgstr "Uitschakelen"
170
-
171
- #: includes/class.configurate-assets.php:174
172
- msgid "Enable"
173
- msgstr "Inschakelen"
174
-
175
- #: includes/class.configurate-assets.php:221
176
- msgid "In use by"
177
- msgstr "In gebruik door"
178
-
179
- #: includes/class.configurate-assets.php:248
180
- msgid "Enabled"
181
- msgstr "Ingeschakeld"
182
-
183
- #: includes/class.configurate-assets.php:253
184
- msgid "Everywhere"
185
- msgstr "Overal"
186
-
187
- #: includes/class.configurate-assets.php:260
188
- #: includes/class.configurate-assets.php:283
189
- msgid "Current URL"
190
- msgstr "Huidige URL"
191
-
192
- #: includes/class.configurate-assets.php:269
193
- msgid "Disable everwhere to view enable settings."
194
  msgstr "Overal uitschakelen om de instellingen voor inschakelen te bekijken."
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: Clearfy\n"
4
+ "POT-Creation-Date: 2018-09-06 18:24+0300\n"
5
+ "PO-Revision-Date: \n"
6
+ "Last-Translator: \n"
7
+ "Language-Team: \n"
8
+ "Language: nl_BE\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: Poedit 2.1.1\n"
13
+ "Plural-Forms: nplurals=2; plural=n != 1;\n"
14
+ "X-Generator: Poedit 2.1.1\n"
15
+ "X-Poedit-Basepath: ..\n"
16
+ "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
17
+ "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
18
+ "X-Poedit-SourceCharset: UTF-8\n"
19
+ "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c\n"
20
+ "X-Poedit-SearchPath-0: .\n"
21
+ "X-Poedit-SearchPathExcluded-0: libs\n"
22
+ "X-Poedit-SearchPathExcluded-1: components\n"
23
+ "X-Poedit-SearchPathExcluded-2: cache\n"
24
+
25
+ #: admin/boot.php:32
26
+ msgid "Get ultimate plugin free"
27
+ msgstr "Krijg ultieme plugin gratis"
28
+
29
+ #: admin/boot.php:57 admin/pages/assets-manager.php:101
30
+ msgid "Disable assets manager"
31
+ msgstr "Schakel assets manager uit"
32
+
33
+ #: admin/boot.php:64 admin/pages/assets-manager.php:125
34
+ msgid "Disable assets manager panel"
35
+ msgstr "Schakel paneel van assets manager uit"
36
+
37
+ #: admin/boot.php:70 admin/pages/assets-manager.php:134
38
+ msgid "Disable assets manager on front"
39
+ msgstr "Schakel assets manager op front-end uit"
40
+
41
+ #: admin/boot.php:76 admin/pages/assets-manager.php:143
42
+ msgid "Disable assets manager on back-end"
43
+ msgstr "Schakel assets manager op back-end uit"
44
+
45
+ #: admin/boot.php:82
46
+ msgid "Assets manager options"
47
+ msgstr "Assets manager opties"
48
+
49
+ #: admin/pages/assets-manager.php:42 admin/pages/assets-manager.php:61
50
+ #: includes/class.configurate-assets.php:139
51
+ msgid "Assets manager"
52
+ msgstr "Assets manager"
53
+
54
+ #: admin/pages/assets-manager.php:62
55
+ msgid "General"
56
+ msgstr "Algemeen"
57
+
58
+ #: admin/pages/assets-manager.php:94
59
+ msgid "Disable unused scripts, styles, and fonts"
60
+ msgstr "Ongebruikte scripts, stijlen en lettertypen uitschakelen"
61
+
62
+ #: admin/pages/assets-manager.php:94
63
+ msgid ""
64
+ "There is a button in the adminbar called \"Script Manager\". If you click on "
65
+ "it you will see a list of loaded scripts, styles and fonts on the current page "
66
+ "of your site. If you think that one of the assets is superfluous on this page, "
67
+ "you can disable it individually, so that it does not create unnecessary "
68
+ "queries when page loading. Use the script manager very carefull to non-corrupt "
69
+ "your website. We recommend to test this function at a local server."
70
+ msgstr ""
71
+ "Er is een knop in de beheerbalk genaamd 'Script Manager'. Als u erop klikt, "
72
+ "ziet u een lijst met geladen scripts, stijlen en lettertypen op de huidige "
73
+ "pagina van uw site. Als u denkt dat een van de items op deze pagina overbodig "
74
+ "is, kunt u deze afzonderlijk uitschakelen, zodat er geen onnodige query's "
75
+ "ontstaan ​​wanneer de pagina wordt geladen. Gebruik de script manager heel "
76
+ "voorzichtig om uw website niet te beschadigen. We raden aan om deze functie "
77
+ "bij een lokale server te testen."
78
+
79
+ #: admin/pages/assets-manager.php:103
80
+ msgid "Full disable of the module."
81
+ msgstr "De module volledig uitschakelen."
82
+
83
+ #: admin/pages/assets-manager.php:127
84
+ msgid ""
85
+ "By default in your admin bar there is a button for control the assets scripts "
86
+ "and styles. With this option, you can turn off the script manager on front and "
87
+ "back-end."
88
+ msgstr ""
89
+ "Standaard is er in je beheer balk een knop voor het beheren van de assets "
90
+ "scripts en -stijlen. Met deze optie kunt u de script manager aan frontend en "
91
+ "backend uitschakelen."
92
+
93
+ #: admin/pages/assets-manager.php:136
94
+ msgid "Disables assets manager initialization for frontend."
95
+ msgstr "Schakelt de opstart van assets manager voor de front-end uit."
96
+
97
+ #: admin/pages/assets-manager.php:145
98
+ msgid "Disables assets manager initialization for backend."
99
+ msgstr "Schakelt de opstart van assets manager voor de back-end uit."
100
+
101
+ #: gonzales.php:23
102
+ msgid ""
103
+ "We found that you use the plugin \"Clearfy - disable unused functions\", this "
104
+ "plugin already has the same functions as \"Assets manager\", so you can "
105
+ "disable the \"Assets manager\" plugin!"
106
+ msgstr ""
107
+ "We hebben vastgesteld dat u de plugin \"Clearfy - uitschakelen ongebruikte "
108
+ "functies\" gebruikt, deze plugin heeft al dezelfde functies als \"Assets "
109
+ "manager\", dus u kunt de plugin \"Assets manager\" uitschakelen!"
110
+
111
+ #: gonzales.php:80
112
+ msgid "Webcraftic assets manager"
113
+ msgstr "Webcraftic assets manager"
114
+
115
+ #: includes/class.configurate-assets.php:94
116
+ #: includes/class.configurate-assets.php:114
117
+ msgid "Script Manager"
118
+ msgstr "Script Manager"
119
+
120
+ #: includes/class.configurate-assets.php:141
121
+ msgid ""
122
+ "Below you can disable/enable CSS and JS files on a per page/post basis, as "
123
+ "well as by custom post types. We recommend testing this locally or on a "
124
+ "staging site first, as you could break the appearance of your live site. If "
125
+ "you aren't sure about a certain script, you can try clicking on it, as a lot "
126
+ "of authors will mention their plugin or theme in the header of the source code."
127
+ msgstr ""
128
+ "Hieronder kunt u CSS en JS bestanden per pagina/post uitschakelen en "
129
+ "inschakelen, evenals voor aangepaste bericht types. We raden aan dit eerst "
130
+ "lokaal of op een staging-site te testen, omdat je het uiterlijk van je live "
131
+ "site kunt breken. Als je niet zeker bent van een bepaald script, kun je "
132
+ "proberen erop te klikken, omdat veel auteurs hun plugin of thema zullen "
133
+ "vermelden in de hoofding van de broncode."
134
+
135
+ #: includes/class.configurate-assets.php:142
136
+ msgid ""
137
+ "If for some reason you run into trouble, you can always enable everything "
138
+ "again to reset the settings."
139
+ msgstr ""
140
+ "Als u om de één of andere reden in de problemen komt, kunt u altijd alles "
141
+ "opnieuw inschakelen om de instellingen opnieuw in te stellen."
142
+
143
+ #: includes/class.configurate-assets.php:151
144
+ msgid "Save settings"
145
+ msgstr "Bewaar instellingen"
146
+
147
+ #: includes/class.configurate-assets.php:158
148
+ msgid "Hide panel in adminbar?"
149
+ msgstr "Verberg paneel in beheer balk?"
150
+
151
+ #: includes/class.configurate-assets.php:169
152
+ msgid "State"
153
+ msgstr "Staat"
154
+
155
+ #: includes/class.configurate-assets.php:170
156
+ msgid "Size"
157
+ msgstr "Formaat"
158
+
159
+ #: includes/class.configurate-assets.php:171
160
+ msgid "Script"
161
+ msgstr "Script"
162
+
163
+ #: includes/class.configurate-assets.php:172
164
+ msgid "In use"
165
+ msgstr "In gebruik"
166
+
167
+ #: includes/class.configurate-assets.php:173
168
+ msgid "Disable"
169
+ msgstr "Uitschakelen"
170
+
171
+ #: includes/class.configurate-assets.php:174
172
+ msgid "Enable"
173
+ msgstr "Inschakelen"
174
+
175
+ #: includes/class.configurate-assets.php:221
176
+ msgid "In use by"
177
+ msgstr "In gebruik door"
178
+
179
+ #: includes/class.configurate-assets.php:248
180
+ msgid "Enabled"
181
+ msgstr "Ingeschakeld"
182
+
183
+ #: includes/class.configurate-assets.php:253
184
+ msgid "Everywhere"
185
+ msgstr "Overal"
186
+
187
+ #: includes/class.configurate-assets.php:260
188
+ #: includes/class.configurate-assets.php:283
189
+ msgid "Current URL"
190
+ msgstr "Huidige URL"
191
+
192
+ #: includes/class.configurate-assets.php:269
193
+ msgid "Disable everwhere to view enable settings."
194
  msgstr "Overal uitschakelen om de instellingen voor inschakelen te bekijken."
components/assets-manager/languages/gonzales-pt_BR.po CHANGED
@@ -1,194 +1,194 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: clearfy\n"
4
- "POT-Creation-Date: 2018-09-06 18:23+0300\n"
5
- "PO-Revision-Date: 2018-09-06 18:23+0300\n"
6
- "Last-Translator: alex.kovalevv@gmail.com <alex.kovalevv@gmail.com>\n"
7
- "Language-Team: Alex Kovalev <alex.kovalevv@gmail.com>\n"
8
- "Language: pt_BR\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: Poedit 2.1.1\n"
13
- "X-Poedit-Basepath: ..\n"
14
- "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
15
- "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
16
- "X-Poedit-SourceCharset: UTF-8\n"
17
- "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c\n"
18
- "X-Poedit-SearchPath-0: .\n"
19
- "X-Poedit-SearchPathExcluded-0: libs\n"
20
- "X-Poedit-SearchPathExcluded-1: components\n"
21
- "X-Poedit-SearchPathExcluded-2: cache\n"
22
-
23
- #: admin/boot.php:32
24
- msgid "Get ultimate plugin free"
25
- msgstr "Obtenha o melhor plugin grátis"
26
-
27
- #: admin/boot.php:57 admin/pages/assets-manager.php:101
28
- msgid "Disable assets manager"
29
- msgstr "Desativar gerente de ativos"
30
-
31
- #: admin/boot.php:64 admin/pages/assets-manager.php:125
32
- msgid "Disable assets manager panel"
33
- msgstr "Desativar painel do gerenciador de ativos"
34
-
35
- #: admin/boot.php:70 admin/pages/assets-manager.php:134
36
- msgid "Disable assets manager on front"
37
- msgstr "Desativar o gerente de ativos na frente"
38
-
39
- #: admin/boot.php:76 admin/pages/assets-manager.php:143
40
- msgid "Disable assets manager on back-end"
41
- msgstr "Desativar gerenciador de ativos no back-end"
42
-
43
- #: admin/boot.php:82
44
- msgid "Assets manager options"
45
- msgstr "Opções do gerente de ativos"
46
-
47
- #: admin/pages/assets-manager.php:42 admin/pages/assets-manager.php:61
48
- #: includes/class.configurate-assets.php:139
49
- msgid "Assets manager"
50
- msgstr "Gerente de Ativos"
51
-
52
- #: admin/pages/assets-manager.php:62
53
- msgid "General"
54
- msgstr "Geral"
55
-
56
- #: admin/pages/assets-manager.php:94
57
- msgid "Disable unused scripts, styles, and fonts"
58
- msgstr "Desativar scripts, estilos e fontes não utilizados"
59
-
60
- #: admin/pages/assets-manager.php:94
61
- msgid ""
62
- "There is a button in the adminbar called \"Script Manager\". If you click on "
63
- "it you will see a list of loaded scripts, styles and fonts on the current "
64
- "page of your site. If you think that one of the assets is superfluous on "
65
- "this page, you can disable it individually, so that it does not create "
66
- "unnecessary queries when page loading. Use the script manager very carefull "
67
- "to non-corrupt your website. We recommend to test this function at a local "
68
- "server."
69
- msgstr ""
70
- "Existe um botão na barra de admin chamado \"Script Manager \". Se você "
71
- "clicar nele, verá uma lista de scripts, estilos e fontes carregados na "
72
- "página atual do seu site. Se você acha que um dos ativos é supérfluo nesta "
73
- "página, você pode desativá-lo individualmente, para que ele não crie "
74
- "consultas desnecessárias ao carregar a página. Use o gerenciador de scripts "
75
- "com muito cuidado para não corromper seu site. Recomendamos testar essa "
76
- "função em um servidor local."
77
-
78
- #: admin/pages/assets-manager.php:103
79
- msgid "Full disable of the module."
80
- msgstr "Desabilitação total do módulo."
81
-
82
- #: admin/pages/assets-manager.php:127
83
- msgid ""
84
- "By default in your admin bar there is a button for control the assets "
85
- "scripts and styles. With this option, you can turn off the script manager on "
86
- "front and back-end."
87
- msgstr ""
88
- "Por padrão, na barra de administração, existe um botão para controlar os "
89
- "scripts e estilos de recursos. Com essa opção, você pode desativar o "
90
- "gerenciador de scripts na frente e no final."
91
-
92
- #: admin/pages/assets-manager.php:136
93
- msgid "Disables assets manager initialization for frontend."
94
- msgstr "Desativa a inicialização do gerenciador de ativos para o frontend."
95
-
96
- #: admin/pages/assets-manager.php:145
97
- msgid "Disables assets manager initialization for backend."
98
- msgstr "Desativa a inicialização do gerenciador de ativos para o back-end."
99
-
100
- #: gonzales.php:23
101
- msgid ""
102
- "We found that you use the plugin \"Clearfy - disable unused functions\", "
103
- "this plugin already has the same functions as \"Assets manager\", so you can "
104
- "disable the \"Assets manager\" plugin!"
105
- msgstr ""
106
- "Descobrimos que você usa o plugin \"Clearfy - desabilita funções não usadas "
107
- "\", este plugin já tem as mesmas funções de \"Assets manager \", então você "
108
- "pode desabilitar o plugin \"Assets manager \"!"
109
-
110
- #: gonzales.php:80
111
- msgid "Webcraftic assets manager"
112
- msgstr "Gerente de ativos da webraftic"
113
-
114
- #: includes/class.configurate-assets.php:94
115
- #: includes/class.configurate-assets.php:114
116
- msgid "Script Manager"
117
- msgstr "Gerenciador de scripts"
118
-
119
- #: includes/class.configurate-assets.php:141
120
- msgid ""
121
- "Below you can disable/enable CSS and JS files on a per page/post basis, as "
122
- "well as by custom post types. We recommend testing this locally or on a "
123
- "staging site first, as you could break the appearance of your live site. If "
124
- "you aren't sure about a certain script, you can try clicking on it, as a lot "
125
- "of authors will mention their plugin or theme in the header of the source "
126
- "code."
127
- msgstr ""
128
- "Abaixo, você pode desativar / ativar arquivos CSS e JS em uma base por "
129
- "página / postagem, bem como por tipos de postagem personalizados. "
130
- "Recomendamos testar isso localmente ou em um site de teste primeiro, pois "
131
- "você pode quebrar a aparência do site ao vivo. Se você não tem certeza sobre "
132
- "um determinado script, pode tentar clicar nele, pois muitos autores "
133
- "mencionarão seu plug-in ou tema no cabeçalho do código-fonte."
134
-
135
- #: includes/class.configurate-assets.php:142
136
- msgid ""
137
- "If for some reason you run into trouble, you can always enable everything "
138
- "again to reset the settings."
139
- msgstr ""
140
- "Se por algum motivo você tiver problemas, poderá sempre ativar tudo "
141
- "novamente para redefinir as configurações."
142
-
143
- #: includes/class.configurate-assets.php:151
144
- msgid "Save settings"
145
- msgstr "Salvar configurações"
146
-
147
- #: includes/class.configurate-assets.php:158
148
- msgid "Hide panel in adminbar?"
149
- msgstr "Ocultar painel em adminbar?"
150
-
151
- #: includes/class.configurate-assets.php:169
152
- msgid "State"
153
- msgstr "Estado"
154
-
155
- #: includes/class.configurate-assets.php:170
156
- msgid "Size"
157
- msgstr "Tamanho"
158
-
159
- #: includes/class.configurate-assets.php:171
160
- msgid "Script"
161
- msgstr "Roteiro"
162
-
163
- #: includes/class.configurate-assets.php:172
164
- msgid "In use"
165
- msgstr "Em uso"
166
-
167
- #: includes/class.configurate-assets.php:173
168
- msgid "Disable"
169
- msgstr "Desabilitar"
170
-
171
- #: includes/class.configurate-assets.php:174
172
- msgid "Enable"
173
- msgstr "Habilitar"
174
-
175
- #: includes/class.configurate-assets.php:221
176
- msgid "In use by"
177
- msgstr "Em uso por"
178
-
179
- #: includes/class.configurate-assets.php:248
180
- msgid "Enabled"
181
- msgstr "ativado"
182
-
183
- #: includes/class.configurate-assets.php:253
184
- msgid "Everywhere"
185
- msgstr "Em toda parte"
186
-
187
- #: includes/class.configurate-assets.php:260
188
- #: includes/class.configurate-assets.php:283
189
- msgid "Current URL"
190
- msgstr "URL atual"
191
-
192
- #: includes/class.configurate-assets.php:269
193
- msgid "Disable everwhere to view enable settings."
194
  msgstr "Desative o everwhere para visualizar as configurações de ativação."
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: clearfy\n"
4
+ "POT-Creation-Date: 2018-09-06 18:23+0300\n"
5
+ "PO-Revision-Date: 2018-09-06 18:23+0300\n"
6
+ "Last-Translator: alex.kovalevv@gmail.com <alex.kovalevv@gmail.com>\n"
7
+ "Language-Team: Alex Kovalev <alex.kovalevv@gmail.com>\n"
8
+ "Language: pt_BR\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: Poedit 2.1.1\n"
13
+ "X-Poedit-Basepath: ..\n"
14
+ "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
15
+ "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
16
+ "X-Poedit-SourceCharset: UTF-8\n"
17
+ "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c\n"
18
+ "X-Poedit-SearchPath-0: .\n"
19
+ "X-Poedit-SearchPathExcluded-0: libs\n"
20
+ "X-Poedit-SearchPathExcluded-1: components\n"
21
+ "X-Poedit-SearchPathExcluded-2: cache\n"
22
+
23
+ #: admin/boot.php:32
24
+ msgid "Get ultimate plugin free"
25
+ msgstr "Obtenha o melhor plugin grátis"
26
+
27
+ #: admin/boot.php:57 admin/pages/assets-manager.php:101
28
+ msgid "Disable assets manager"
29
+ msgstr "Desativar gerente de ativos"
30
+
31
+ #: admin/boot.php:64 admin/pages/assets-manager.php:125
32
+ msgid "Disable assets manager panel"
33
+ msgstr "Desativar painel do gerenciador de ativos"
34
+
35
+ #: admin/boot.php:70 admin/pages/assets-manager.php:134
36
+ msgid "Disable assets manager on front"
37
+ msgstr "Desativar o gerente de ativos na frente"
38
+
39
+ #: admin/boot.php:76 admin/pages/assets-manager.php:143
40
+ msgid "Disable assets manager on back-end"
41
+ msgstr "Desativar gerenciador de ativos no back-end"
42
+
43
+ #: admin/boot.php:82
44
+ msgid "Assets manager options"
45
+ msgstr "Opções do gerente de ativos"
46
+
47
+ #: admin/pages/assets-manager.php:42 admin/pages/assets-manager.php:61
48
+ #: includes/class.configurate-assets.php:139
49
+ msgid "Assets manager"
50
+ msgstr "Gerente de Ativos"
51
+
52
+ #: admin/pages/assets-manager.php:62
53
+ msgid "General"
54
+ msgstr "Geral"
55
+
56
+ #: admin/pages/assets-manager.php:94
57
+ msgid "Disable unused scripts, styles, and fonts"
58
+ msgstr "Desativar scripts, estilos e fontes não utilizados"
59
+
60
+ #: admin/pages/assets-manager.php:94
61
+ msgid ""
62
+ "There is a button in the adminbar called \"Script Manager\". If you click on "
63
+ "it you will see a list of loaded scripts, styles and fonts on the current "
64
+ "page of your site. If you think that one of the assets is superfluous on "
65
+ "this page, you can disable it individually, so that it does not create "
66
+ "unnecessary queries when page loading. Use the script manager very carefull "
67
+ "to non-corrupt your website. We recommend to test this function at a local "
68
+ "server."
69
+ msgstr ""
70
+ "Existe um botão na barra de admin chamado \"Script Manager \". Se você "
71
+ "clicar nele, verá uma lista de scripts, estilos e fontes carregados na "
72
+ "página atual do seu site. Se você acha que um dos ativos é supérfluo nesta "
73
+ "página, você pode desativá-lo individualmente, para que ele não crie "
74
+ "consultas desnecessárias ao carregar a página. Use o gerenciador de scripts "
75
+ "com muito cuidado para não corromper seu site. Recomendamos testar essa "
76
+ "função em um servidor local."
77
+
78
+ #: admin/pages/assets-manager.php:103
79
+ msgid "Full disable of the module."
80
+ msgstr "Desabilitação total do módulo."
81
+
82
+ #: admin/pages/assets-manager.php:127
83
+ msgid ""
84
+ "By default in your admin bar there is a button for control the assets "
85
+ "scripts and styles. With this option, you can turn off the script manager on "
86
+ "front and back-end."
87
+ msgstr ""
88
+ "Por padrão, na barra de administração, existe um botão para controlar os "
89
+ "scripts e estilos de recursos. Com essa opção, você pode desativar o "
90
+ "gerenciador de scripts na frente e no final."
91
+
92
+ #: admin/pages/assets-manager.php:136
93
+ msgid "Disables assets manager initialization for frontend."
94
+ msgstr "Desativa a inicialização do gerenciador de ativos para o frontend."
95
+
96
+ #: admin/pages/assets-manager.php:145
97
+ msgid "Disables assets manager initialization for backend."
98
+ msgstr "Desativa a inicialização do gerenciador de ativos para o back-end."
99
+
100
+ #: gonzales.php:23
101
+ msgid ""
102
+ "We found that you use the plugin \"Clearfy - disable unused functions\", "
103
+ "this plugin already has the same functions as \"Assets manager\", so you can "
104
+ "disable the \"Assets manager\" plugin!"
105
+ msgstr ""
106
+ "Descobrimos que você usa o plugin \"Clearfy - desabilita funções não usadas "
107
+ "\", este plugin já tem as mesmas funções de \"Assets manager \", então você "
108
+ "pode desabilitar o plugin \"Assets manager \"!"
109
+
110
+ #: gonzales.php:80
111
+ msgid "Webcraftic assets manager"
112
+ msgstr "Gerente de ativos da webraftic"
113
+
114
+ #: includes/class.configurate-assets.php:94
115
+ #: includes/class.configurate-assets.php:114
116
+ msgid "Script Manager"
117
+ msgstr "Gerenciador de scripts"
118
+
119
+ #: includes/class.configurate-assets.php:141
120
+ msgid ""
121
+ "Below you can disable/enable CSS and JS files on a per page/post basis, as "
122
+ "well as by custom post types. We recommend testing this locally or on a "
123
+ "staging site first, as you could break the appearance of your live site. If "
124
+ "you aren't sure about a certain script, you can try clicking on it, as a lot "
125
+ "of authors will mention their plugin or theme in the header of the source "
126
+ "code."
127
+ msgstr ""
128
+ "Abaixo, você pode desativar / ativar arquivos CSS e JS em uma base por "
129
+ "página / postagem, bem como por tipos de postagem personalizados. "
130
+ "Recomendamos testar isso localmente ou em um site de teste primeiro, pois "
131
+ "você pode quebrar a aparência do site ao vivo. Se você não tem certeza sobre "
132
+ "um determinado script, pode tentar clicar nele, pois muitos autores "
133
+ "mencionarão seu plug-in ou tema no cabeçalho do código-fonte."
134
+
135
+ #: includes/class.configurate-assets.php:142
136
+ msgid ""
137
+ "If for some reason you run into trouble, you can always enable everything "
138
+ "again to reset the settings."
139
+ msgstr ""
140
+ "Se por algum motivo você tiver problemas, poderá sempre ativar tudo "
141
+ "novamente para redefinir as configurações."
142
+
143
+ #: includes/class.configurate-assets.php:151
144
+ msgid "Save settings"
145
+ msgstr "Salvar configurações"
146
+
147
+ #: includes/class.configurate-assets.php:158
148
+ msgid "Hide panel in adminbar?"
149
+ msgstr "Ocultar painel em adminbar?"
150
+
151
+ #: includes/class.configurate-assets.php:169
152
+ msgid "State"
153
+ msgstr "Estado"
154
+
155
+ #: includes/class.configurate-assets.php:170
156
+ msgid "Size"
157
+ msgstr "Tamanho"
158
+
159
+ #: includes/class.configurate-assets.php:171
160
+ msgid "Script"
161
+ msgstr "Roteiro"
162
+
163
+ #: includes/class.configurate-assets.php:172
164
+ msgid "In use"
165
+ msgstr "Em uso"
166
+
167
+ #: includes/class.configurate-assets.php:173
168
+ msgid "Disable"
169
+ msgstr "Desabilitar"
170
+
171
+ #: includes/class.configurate-assets.php:174
172
+ msgid "Enable"
173
+ msgstr "Habilitar"
174
+
175
+ #: includes/class.configurate-assets.php:221
176
+ msgid "In use by"
177
+ msgstr "Em uso por"
178
+
179
+ #: includes/class.configurate-assets.php:248
180
+ msgid "Enabled"
181
+ msgstr "ativado"
182
+
183
+ #: includes/class.configurate-assets.php:253
184
+ msgid "Everywhere"
185
+ msgstr "Em toda parte"
186
+
187
+ #: includes/class.configurate-assets.php:260
188
+ #: includes/class.configurate-assets.php:283
189
+ msgid "Current URL"
190
+ msgstr "URL atual"
191
+
192
+ #: includes/class.configurate-assets.php:269
193
+ msgid "Disable everwhere to view enable settings."
194
  msgstr "Desative o everwhere para visualizar as configurações de ativação."
components/assets-manager/languages/gonzales-ru_RU.mo CHANGED
Binary file
components/assets-manager/languages/gonzales-ru_RU.po CHANGED
@@ -1,216 +1,574 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: clearfy\n"
4
- "POT-Creation-Date: 2018-03-14 17:11+0300\n"
5
- "PO-Revision-Date: 2018-03-14 17:13+0300\n"
6
- "Last-Translator: alex.kovalevv@gmail.com <alex.kovalevv@gmail.com>\n"
7
- "Language-Team: Alex Kovalev <alex.kovalevv@gmail.com>\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: Poedit 1.8.8\n"
13
- "X-Poedit-Basepath: ..\n"
14
- "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
15
- "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
16
- "X-Poedit-SourceCharset: UTF-8\n"
17
- "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c\n"
18
- "X-Poedit-SearchPath-0: .\n"
19
- "X-Poedit-SearchPathExcluded-0: libs\n"
20
-
21
- #: admin/boot.php:23
22
- msgid "Get ultimate plugin free"
23
- msgstr "Получите полную версию плагина бесплатно"
24
-
25
- #: admin/boot.php:48 admin/pages/assets-manager.php:83
26
- msgid "Disable assets manager"
27
- msgstr "Отключить менеджер скриптов"
28
-
29
- #: admin/boot.php:55 admin/pages/assets-manager.php:107
30
- msgid "Disable assets manager panel"
31
- msgstr "Скрыть панель в админбаре"
32
-
33
- #: admin/boot.php:61 admin/pages/assets-manager.php:116
34
- msgid "Disable assets manager on front"
35
- msgstr "Отключить менеджер скриптов на внешней стороне сайта"
36
-
37
- #: admin/boot.php:67 admin/pages/assets-manager.php:125
38
- msgid "Disable assets manager on back-end"
39
- msgstr "Отключить менеджер скриптов в админпанели"
40
-
41
- #: admin/boot.php:73
42
- msgid "Assets manager options"
43
- msgstr "Настройки менеджера скриптов"
44
-
45
- #: admin/pages/assets-manager.php:42 admin/pages/assets-manager.php:61
46
- #: includes/class.configurate-assets.php:123
47
- msgid "Assets manager"
48
- msgstr "Менеджер скриптов"
49
-
50
- #: admin/pages/assets-manager.php:62
51
- msgid "General"
52
- msgstr "Основные"
53
-
54
- #: admin/pages/assets-manager.php:76
55
- msgid "Disable unused scripts, styles, and fonts"
56
- msgstr "Отключите неиспользуемые скрипты, стили и шрифты"
57
-
58
- #: admin/pages/assets-manager.php:76
59
- msgid ""
60
- "There is a button in the adminbar called \"Script Manager\". If you click on "
61
- "it you will see a list of loaded scripts, styles and fonts on the current "
62
- "page of your site. If you think that one of the assets is superfluous on "
63
- "this page, you can disable it individually, so that it does not create "
64
- "unnecessary queries when page loading. Use the script manager very carefull "
65
- "to non-corrupt your website. We recommend to test this function at a local "
66
- "server."
67
- msgstr ""
68
- админбаре есть кнопка под названием “Менеджер скриптов”, если на нее "
69
- "нажать вы увидите список загружаемых скриптов, стилей и шрифтов на текущей "
70
- "странице вашего сайта. Если вы считаете, что какой-то из ресурсов лишний на "
71
- "этой странице, вы можете индивидуально его отключить, чтобы он не создавал "
72
- "лишних запросов при загрузке. Используйте менеджер скриптов аккуратно, чтобы "
73
- "не нарушить работу вашего сайта. Мы рекомендуем вам использовать локальный "
74
- "сервер для тестирования этой функции."
75
-
76
- #: admin/pages/assets-manager.php:85
77
- msgid "Full disable of the module."
78
- msgstr "Полностью отключает работу модуля."
79
-
80
- #: admin/pages/assets-manager.php:109
81
- msgid ""
82
- "By default in your admin bar there is a button for control the assets "
83
- "scripts and styles. With this option, you can turn off the script manager on "
84
- "front and back-end."
85
- msgstr ""
86
- "По умолчанию в панели администратора есть кнопка для управления подключамыми "
87
- "скриптами и стилями. Используя эту настроку вы можете скрыть эту панель из "
88
- "админбара, чтобы она не занимала место."
89
-
90
- #: admin/pages/assets-manager.php:118
91
- msgid "Disables assets manager initialization for frontend."
92
- msgstr "Отключает инициализацию менеджера лицензий на внешней стороне сайта."
93
-
94
- #: admin/pages/assets-manager.php:127
95
- msgid "Disables assets manager initialization for backend."
96
- msgstr "Отключает инициализацию менеджера лицензий в админпанели сайта."
97
-
98
- #: gonzales.php:22
99
- msgid ""
100
- "We found that you use the plugin \"Clearfy - disable unused functions\", "
101
- "this plugin already has the same functions as \"Assets manager\", so you can "
102
- "disable the \"Assets manager\" plugin!"
103
- msgstr ""
104
- "Мы обнаружили, что вы используете плагин \"Clearfy - disable unused features"
105
- "\", этот плагин включает функционал \"WP Asset CleanUp\", вы можете "
106
- "деактивировать плагин \"Менеджер скриптов\"!"
107
-
108
- #: gonzales.php:80
109
- msgid "Webcraftic assets manager"
110
- msgstr "Webcraftic менеджер скриптов"
111
-
112
- #: includes/class.configurate-assets.php:98
113
- msgid "Script Manager"
114
- msgstr "Менеджер скриптов"
115
-
116
- #: includes/class.configurate-assets.php:125
117
- msgid ""
118
- "Below you can disable/enable CSS and JS files on a per page/post basis, as "
119
- "well as by custom post types. We recommend testing this locally or on a "
120
- "staging site first, as you could break the appearance of your live site. If "
121
- "you aren't sure about a certain script, you can try clicking on it, as a lot "
122
- "of authors will mention their plugin or theme in the header of the source "
123
- "code."
124
- msgstr ""
125
- "Ниже вы можете включить/отключить использование CSS и JS файлов в записях, "
126
- "произвольных типах записей или страницах. Мы рекомендуем вам "
127
- "эксперементировать со скриптами на локальном хостинге или тестом сайте, так "
128
- "как вы можете нарушить работу сайта, если отключите системные файлы "
129
- "скриптов, без которых невозможна полноценная работа сайта. Если вы не "
130
- "уверены, для чего используется тот или иной файл, попробуйте нажать на "
131
- "ссылку под его заголовком, в открывшемся файле вы можете увидеть комментарий "
132
- "разработчика с ссылкой на описание плагина. Получив достаточную информацию о "
133
- "функциях плагина, вы сможете более уверенно включать или отключать его стили "
134
- скрипты."
135
-
136
- #: includes/class.configurate-assets.php:126
137
- msgid ""
138
- "If for some reason you run into trouble, you can always enable everything "
139
- "again to reset the settings."
140
- msgstr ""
141
- "Если по какой-то причине вы столкнулись с проблемами, вы всегда можете "
142
- "включить все опции, чтобы сбросить настройки."
143
-
144
- #: includes/class.configurate-assets.php:135
145
- msgid "Save settings"
146
- msgstr "Сохранить"
147
-
148
- #: includes/class.configurate-assets.php:142
149
- msgid "Hide panel in adminbar?"
150
- msgstr "Скрыть панель из админбара?"
151
-
152
- #: includes/class.configurate-assets.php:153
153
- msgid "State"
154
- msgstr "Состояние"
155
-
156
- #: includes/class.configurate-assets.php:154
157
- msgid "Size"
158
- msgstr "Размер"
159
-
160
- #: includes/class.configurate-assets.php:155
161
- msgid "Script"
162
- msgstr "Скрипт"
163
-
164
- #: includes/class.configurate-assets.php:156
165
- msgid "In use"
166
- msgstr "Используется"
167
-
168
- #: includes/class.configurate-assets.php:157
169
- msgid "Disable"
170
- msgstr "Отключить"
171
-
172
- #: includes/class.configurate-assets.php:158
173
- msgid "Enable"
174
- msgstr "Включить"
175
-
176
- #: includes/class.configurate-assets.php:205
177
- msgid "In use by"
178
- msgstr "Используется "
179
-
180
- #: includes/class.configurate-assets.php:232
181
- msgid "Enabled"
182
- msgstr "Включить"
183
-
184
- #: includes/class.configurate-assets.php:237
185
- msgid "Everywhere"
186
- msgstr "Повсюду"
187
-
188
- #: includes/class.configurate-assets.php:244
189
- #: includes/class.configurate-assets.php:267
190
- msgid "Current URL"
191
- msgstr "Текущий URL"
192
-
193
- #: includes/class.configurate-assets.php:253
194
- msgid "Disable everwhere to view enable settings."
195
- msgstr ""
196
- "Нужно включить опцию \"повсюду\", чтобы увидеть дополнительные настройки."
197
-
198
- #~ msgid ""
199
- #~ "We found that you use the plugin \"Clearfy - disable unused functions\", "
200
- #~ "this plugin already has the same functions as \"WP Asset CleanUp\", so "
201
- #~ "you can disable the \"WP Asset CleanUp\" plugin!"
202
- #~ msgstr ""
203
- #~ "Мы обнаружили, что вы используете плагин \"Clearfy - disable unused "
204
- #~ "features\", этот плагин включает функционал \"WP Asset CleanUp\", вы "
205
- #~ "можете деактивировать плагин \"WP Asset CleanUp\"!"
206
-
207
- #~ msgid "Webcraftic Assets manager"
208
- #~ msgstr "Webcraftic менеджер скриптов"
209
-
210
- #~ msgid ""
211
- #~ "We found that you have the \"Clearfy - disable unused features\" plugin "
212
- #~ "installed, this plugin already has disable comments functions, so you can "
213
- #~ "deactivate plugin \"WP Asset CleanUp\"!"
214
- #~ msgstr ""
215
- #~ "Мы обнаружили, что вы используете плагин \"Clearfy - disable unused "
216
- #~ "features\", этот плагин"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: clearfy\n"
4
+ "POT-Creation-Date: 2018-10-16 15:56+0300\n"
5
+ "PO-Revision-Date: 2018-10-19 22:37+0300\n"
6
+ "Last-Translator: alex.kovalevv@gmail.com <alex.kovalevv@gmail.com>\n"
7
+ "Language-Team: Alex Kovalev <alex.kovalevv@gmail.com>\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: Poedit 2.1.1\n"
13
+ "X-Poedit-Basepath: ../..\n"
14
+ "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
15
+ "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
16
+ "X-Poedit-SourceCharset: UTF-8\n"
17
+ "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c\n"
18
+ "X-Poedit-SearchPath-0: assets-manager\n"
19
+ "X-Poedit-SearchPath-1: assets-manager-premium\n"
20
+ "X-Poedit-SearchPathExcluded-0: assets-manager/libs\n"
21
+
22
+ #: assets-manager-premium/admin/boot.php:46
23
+ msgid ""
24
+ "<strong>Assets manager Premium</strong><br>We did not find the installed "
25
+ "plugin \"Assets manager\". Please install the plugin \"Assets manager\" "
26
+ "first for premium functions!"
27
+ msgstr ""
28
+ "<strong>Менеджер скриптов премиум</strong><br> Мы не нашли установленный "
29
+ "копонент \"Менеджер скриптов\". Пожалуйста, установите копонент \"Менеджер "
30
+ "скриптов\" в первую очередь для премиум-функций!"
31
+
32
+ #: assets-manager-premium/assets-manager-premium.php:63
33
+ msgid "Webcraftic assets manager Premium"
34
+ msgstr "Webcraftic менеджер скриптов премиум"
35
+
36
+ #: assets-manager-premium/includes/class.configurate-assets.php:92
37
+ #: assets-manager/includes/class.configurate-assets.php:204
38
+ #: assets-manager/includes/class.configurate-assets.php:208
39
+ msgid "Total requests"
40
+ msgstr "Всего запросов"
41
+
42
+ #: assets-manager-premium/includes/class.configurate-assets.php:93
43
+ #: assets-manager/includes/class.configurate-assets.php:205
44
+ msgid "Total size"
45
+ msgstr "Общий вес"
46
+
47
+ #: assets-manager-premium/includes/class.configurate-assets.php:94
48
+ #: assets-manager/includes/class.configurate-assets.php:206
49
+ msgid "Optimized size"
50
+ msgstr "Оптим. вес"
51
+
52
+ #: assets-manager-premium/includes/class.configurate-assets.php:95
53
+ #: assets-manager/includes/class.configurate-assets.php:212
54
+ msgid "Disabled js"
55
+ msgstr "Отключено js"
56
+
57
+ #: assets-manager-premium/includes/class.configurate-assets.php:96
58
+ #: assets-manager/includes/class.configurate-assets.php:213
59
+ msgid "Disabled css"
60
+ msgstr "Отключено css"
61
+
62
+ #: assets-manager-premium/includes/class.configurate-assets.php:119
63
+ #: assets-manager/includes/class.configurate-assets.php:266
64
+ msgid "Safe mode"
65
+ msgstr "Безопасный режим"
66
+
67
+ #: assets-manager-premium/includes/class.configurate-assets.php:300
68
+ #: assets-manager/includes/class.configurate-assets.php:685
69
+ msgid "Example"
70
+ msgstr "Пример"
71
+
72
+ #: assets-manager-premium/includes/class.configurate-assets.php:300
73
+ #: assets-manager/includes/class.configurate-assets.php:685
74
+ msgid "Enter URL (set * for mask)"
75
+ msgstr "Введите URL (добавьте * для маски)"
76
+
77
+ #: assets-manager-premium/includes/class.configurate-assets.php:308
78
+ #: assets-manager-premium/includes/class.configurate-assets.php:316
79
+ #: assets-manager/includes/class.configurate-assets.php:688
80
+ msgid "Add field"
81
+ msgstr "Добавить"
82
+
83
+ #: assets-manager-premium/includes/class.configurate-assets.php:327
84
+ #: assets-manager/includes/class.configurate-assets.php:698
85
+ msgid "Enter regular expression"
86
+ msgstr "Введите регулярное выражение"
87
+
88
+ #: assets-manager-premium/includes/class.configurate-assets.php:532
89
+ msgid "Custom URL"
90
+ msgstr "Произвольный URL"
91
+
92
+ #: assets-manager-premium/includes/class.configurate-assets.php:533
93
+ msgid "Regular expression"
94
+ msgstr "Регулярное выражение"
95
+
96
+ #: assets-manager-premium/includes/class.configurate-assets.php:595
97
+ msgid "Set the plugin logic to apply it to all plugin’s resources."
98
+ msgstr ""
99
+ "Установите логику плагина, чтобы применить его ко всем ресурсам плагина."
100
+
101
+ #: assets-manager/admin/boot.php:48
102
+ #: assets-manager/admin/pages/assets-manager.php:89
103
+ msgid "Disable assets manager"
104
+ msgstr "Отключить менеджер скриптов"
105
+
106
+ #: assets-manager/admin/boot.php:55
107
+ #: assets-manager/admin/pages/assets-manager.php:113
108
+ msgid "Disable assets manager panel"
109
+ msgstr "Скрыть панель в админбаре"
110
+
111
+ #: assets-manager/admin/boot.php:61
112
+ #: assets-manager/admin/pages/assets-manager.php:122
113
+ msgid "Disable assets manager on front"
114
+ msgstr "Отключить менеджер скриптов на внешней стороне сайта"
115
+
116
+ #: assets-manager/admin/boot.php:67
117
+ #: assets-manager/admin/pages/assets-manager.php:131
118
+ msgid "Disable assets manager on back-end"
119
+ msgstr "Отключить менеджер скриптов в админпанели"
120
+
121
+ #: assets-manager/admin/boot.php:73
122
+ msgid "Assets manager options"
123
+ msgstr "Настройки менеджера скриптов"
124
+
125
+ #: assets-manager/admin/boot.php:86
126
+ msgid "Get ultimate plugin free"
127
+ msgstr "Получите полную версию плагина бесплатно"
128
+
129
+ #: assets-manager/admin/pages/assets-manager.php:48
130
+ #: assets-manager/admin/pages/assets-manager.php:67
131
+ msgid "Assets manager"
132
+ msgstr "Менеджер скриптов"
133
+
134
+ #: assets-manager/admin/pages/assets-manager.php:68
135
+ msgid "General"
136
+ msgstr "Основные"
137
+
138
+ #: assets-manager/admin/pages/assets-manager.php:82
139
+ msgid "Disable unused scripts, styles, and fonts"
140
+ msgstr "Отключите неиспользуемые скрипты, стили и шрифты"
141
+
142
+ #: assets-manager/admin/pages/assets-manager.php:82
143
+ msgid ""
144
+ "There is a button in the adminbar called \"Script Manager\". If you click on "
145
+ "it you will see a list of loaded scripts, styles and fonts on the current "
146
+ "page of your site. If you think that one of the assets is superfluous on "
147
+ "this page, you can disable it individually, so that it does not create "
148
+ "unnecessary queries when page loading. Use the script manager very carefull "
149
+ "to non-corrupt your website. We recommend to test this function at a local "
150
+ "server."
151
+ msgstr ""
152
+ админбаре есть кнопка под названием “Менеджер скриптов”, если на нее "
153
+ "нажать вы увидите список загружаемых скриптов, стилей и шрифтов на текущей "
154
+ "странице вашего сайта. Если вы считаете, что какой-то из ресурсов лишний на "
155
+ "этой странице, вы можете индивидуально его отключить, чтобы он не создавал "
156
+ "лишних запросов при загрузке. Используйте менеджер скриптов аккуратно, чтобы "
157
+ "не нарушить работу вашего сайта. Мы рекомендуем вам использовать локальный "
158
+ "сервер для тестирования этой функции."
159
+
160
+ #: assets-manager/admin/pages/assets-manager.php:91
161
+ msgid "Full disable of the module."
162
+ msgstr "Полностью отключает работу модуля."
163
+
164
+ #: assets-manager/admin/pages/assets-manager.php:115
165
+ msgid ""
166
+ "By default in your admin bar there is a button for control the assets "
167
+ "scripts and styles. With this option, you can turn off the script manager on "
168
+ "front and back-end."
169
+ msgstr ""
170
+ "По умолчанию в панели администратора есть кнопка для управления подключамыми "
171
+ "скриптами и стилями. Используя эту настроку вы можете скрыть эту панель из "
172
+ "админбара, чтобы она не занимала место."
173
+
174
+ #: assets-manager/admin/pages/assets-manager.php:124
175
+ msgid "Disables assets manager initialization for frontend."
176
+ msgstr "Отключает инициализацию менеджера лицензий на внешней стороне сайта."
177
+
178
+ #: assets-manager/admin/pages/assets-manager.php:133
179
+ msgid "Disables assets manager initialization for backend."
180
+ msgstr "Отключает инициализацию менеджера лицензий в админпанели сайта."
181
+
182
+ #: assets-manager/gonzales.php:63
183
+ msgid "Webcraftic assets manager"
184
+ msgstr "Webcraftic менеджер скриптов"
185
+
186
+ #: assets-manager/includes/class.configurate-assets.php:121
187
+ #: assets-manager/includes/class.configurate-assets.php:141
188
+ msgid "Script Manager"
189
+ msgstr "Менеджер скриптов"
190
+
191
+ #: assets-manager/includes/class.configurate-assets.php:208
192
+ msgid "Total weight"
193
+ msgstr "Общий вес"
194
+
195
+ #: assets-manager/includes/class.configurate-assets.php:208
196
+ msgid "Optimized weight"
197
+ msgstr "Оптим. вес"
198
+
199
+ #: assets-manager/includes/class.configurate-assets.php:215
200
+ msgid ""
201
+ "This is the general statistics to see the optimization result. Available in "
202
+ "the paid version only."
203
+ msgstr ""
204
+ "Это общая статистика, чтобы увидеть результат оптимизации. Доступно только в "
205
+ "платной версии."
206
+
207
+ #: assets-manager/includes/class.configurate-assets.php:219
208
+ msgid "Reset"
209
+ msgstr "Сбросить"
210
+
211
+ #: assets-manager/includes/class.configurate-assets.php:220
212
+ msgid "Save"
213
+ msgstr "Сохранить"
214
+
215
+ #: assets-manager/includes/class.configurate-assets.php:221
216
+ msgid ""
217
+ "In test mode, you can experiment with disabling unused scripts safely for "
218
+ "your site. The resources that you disabled will be visible only to you (the "
219
+ "administrator), and all other users will receive an unoptimized version of "
220
+ "the site, until you remove this tick"
221
+ msgstr ""
222
+ "В тестовом режиме можно поэкспериментировать с отключением неиспользуемых "
223
+ "скриптов безопасно для вашего сайта. Отключенные ресурсы будут видны только "
224
+ "вам (администратору), и все остальные пользователи получат "
225
+ "неоптимизированную версию сайта, пока вы не снимите галочку с этого элемента."
226
+
227
+ #: assets-manager/includes/class.configurate-assets.php:222
228
+ msgid "Safe mode <b>PRO</b>"
229
+ msgstr "Безопасный режим <b>PRO</b>"
230
+
231
+ #: assets-manager/includes/class.configurate-assets.php:224
232
+ msgid "Close"
233
+ msgstr "Закрыть"
234
+
235
+ #: assets-manager/includes/class.configurate-assets.php:254
236
+ msgid ""
237
+ "Important! Each page of your website has different sets of scripts and "
238
+ "styles files."
239
+ msgstr ""
240
+ "Важно! На каждой странице вашего сайта подключаются разные наборы файлов "
241
+ "скриптов и стилей. "
242
+
243
+ #: assets-manager/includes/class.configurate-assets.php:255
244
+ msgid ""
245
+ "Use this feature to disable unwanted scripts and styles by setting up the "
246
+ "logic for different types of pages. We recommend working in \"Safe mode\" "
247
+ "because disabling any necessary system script file can corrupt the website. "
248
+ "All changes done in Safe mode are available for administrator only. This way "
249
+ "only you, as the administrator, can see the result of optimization. To "
250
+ "enable the changes for other users, uncheck Safe mode."
251
+ msgstr ""
252
+ "Используйте этот инструмент для отключения неиспользуемых скриптов и стилей, "
253
+ "устанавливая логику для разных типов страниц. Мы рекомендуем вам работать в "
254
+ "“Безопасном режиме”, так как вы можете нарушить работу сайта, если отключите "
255
+ "системные файлы скриптов, без которых невозможна полноценная работа сайта. В "
256
+ "безопасном режиме, все ваши изменения будут работать только для "
257
+ "администратора, это необходимо для того, чтобы только вы могли увидеть "
258
+ "результат оптимизации. Чтобы изменения вступили в силу для всех остальных "
259
+ "пользователей, просто снимите галочку “Безопасный режим”. "
260
+
261
+ #: assets-manager/includes/class.configurate-assets.php:256
262
+ #, php-format
263
+ msgid ""
264
+ "For more details and user guides, check the plugin’s <a href=\"%s\" target="
265
+ "\"_blank\" rel=\"noreferrer noopener\">documentation</a>."
266
+ msgstr ""
267
+ "Более подробную информацию о работе с плагином можно найти в нашей <a href="
268
+ "\"%s\" target=\"_blank\" rel=\"noreferrer noopener\">документации</a>."
269
+
270
+ #: assets-manager/includes/class.configurate-assets.php:259
271
+ msgid "Upgrade to Premium"
272
+ msgstr "Обновить до премиум"
273
+
274
+ #: assets-manager/includes/class.configurate-assets.php:262
275
+ msgid "MORE IN CLEARFY BUSINESS"
276
+ msgstr "БОЛЬШЕ В CLEARFY БИЗНЕС"
277
+
278
+ #: assets-manager/includes/class.configurate-assets.php:263
279
+ msgid "Disable plugins (groups of scripts)"
280
+ msgstr "Отключить плагины (группы скриптов)"
281
+
282
+ #: assets-manager/includes/class.configurate-assets.php:264
283
+ msgid "Conditions by the link template"
284
+ msgstr "Условия по шаблону ссылки"
285
+
286
+ #: assets-manager/includes/class.configurate-assets.php:265
287
+ msgid "Conditions by the regular expression"
288
+ msgstr "Условия по регулярному выражению"
289
+
290
+ #: assets-manager/includes/class.configurate-assets.php:267
291
+ msgid "Statistics and optimization results"
292
+ msgstr "Статистика и результаты оптимизации"
293
+
294
+ #: assets-manager/includes/class.configurate-assets.php:304
295
+ #: assets-manager/includes/class.configurate-assets.php:332
296
+ msgid "Loaded"
297
+ msgstr "Загружен"
298
+
299
+ #: assets-manager/includes/class.configurate-assets.php:305
300
+ msgid "Plugin"
301
+ msgstr "Плагин"
302
+
303
+ #: assets-manager/includes/class.configurate-assets.php:309
304
+ #: assets-manager/includes/class.configurate-assets.php:338
305
+ msgid "Load resource?"
306
+ msgstr "Загружать ресурс?"
307
+
308
+ #: assets-manager/includes/class.configurate-assets.php:310
309
+ #: assets-manager/includes/class.configurate-assets.php:339
310
+ msgid "Conditions"
311
+ msgstr "Условия"
312
+
313
+ #: assets-manager/includes/class.configurate-assets.php:318
314
+ msgid "Author"
315
+ msgstr "Автор"
316
+
317
+ #: assets-manager/includes/class.configurate-assets.php:319
318
+ #: assets-manager/includes/class.configurate-assets.php:398
319
+ msgid "Version"
320
+ msgstr "Версия"
321
+
322
+ #: assets-manager/includes/class.configurate-assets.php:333
323
+ msgid "Size"
324
+ msgstr "Размер"
325
+
326
+ #: assets-manager/includes/class.configurate-assets.php:334
327
+ msgid "Resource"
328
+ msgstr "Ресурс"
329
+
330
+ #: assets-manager/includes/class.configurate-assets.php:362
331
+ msgid "In use by"
332
+ msgstr "Используется "
333
+
334
+ #: assets-manager/includes/class.configurate-assets.php:369
335
+ msgid "Requires"
336
+ msgstr "Зависимости"
337
+
338
+ #: assets-manager/includes/class.configurate-assets.php:398
339
+ msgid "--"
340
+ msgstr ""
341
+
342
+ #: assets-manager/includes/class.configurate-assets.php:561
343
+ #: assets-manager/includes/class.configurate-assets.php:1406
344
+ msgid "No"
345
+ msgstr "Нет"
346
+
347
+ #: assets-manager/includes/class.configurate-assets.php:561
348
+ #: assets-manager/includes/class.configurate-assets.php:1406
349
+ msgid "Yes"
350
+ msgstr "Да"
351
+
352
+ #: assets-manager/includes/class.configurate-assets.php:577
353
+ msgid ""
354
+ "Click the switch in the <b>Load resource?</b> column to display the "
355
+ "conditions for loading the resource."
356
+ msgstr ""
357
+ "Щелкните переключатель в этой колонке <b>Загрузить ресурс?</b>, чтобы "
358
+ "отобразить условия для загрузки ресурса."
359
+
360
+ #: assets-manager/includes/class.configurate-assets.php:579
361
+ msgid ""
362
+ "Set the plugin logic to apply it to all plugin’s resources. This feature "
363
+ "available at the paid version."
364
+ msgstr ""
365
+ "Устанавливая логику для плагина, она будет примена для всех его ресурсов. "
366
+ "Данная возможность доступна только в платной версии плагина."
367
+
368
+ #: assets-manager/includes/class.configurate-assets.php:588
369
+ #: assets-manager/includes/class.configurate-assets.php:612
370
+ msgid "Current URL"
371
+ msgstr "Текущий URL"
372
+
373
+ #: assets-manager/includes/class.configurate-assets.php:589
374
+ msgid "Everywhere"
375
+ msgstr "Повсюду"
376
+
377
+ #: assets-manager/includes/class.configurate-assets.php:590
378
+ msgid "Custom URL (PRO)"
379
+ msgstr "Произвольная ссылка (PRO)"
380
+
381
+ #: assets-manager/includes/class.configurate-assets.php:591
382
+ msgid "Regular expression (PRO)"
383
+ msgstr "Регулярное выражение (PRO)"
384
+
385
+ #: assets-manager/includes/class.configurate-assets.php:601
386
+ msgid "Exclude"
387
+ msgstr "Исключить"
388
+
389
+ #: assets-manager/includes/class.configurate-assets.php:601
390
+ msgid ""
391
+ "You can disable this resource for all pages, except sections and page types "
392
+ "listed below. Specify sections and page types with the enabled resource."
393
+ msgstr ""
394
+ "Вы можете отключить этот ресурс на всех страницах вашего сайта, кроме "
395
+ "нижеперечисленных разделов и типов страниц. Отметьте разделы и типы страниц, "
396
+ "в которых вы не хотите отключать ресурс"
397
+
398
+ #: assets-manager/includes/class.configurate-assets.php:685
399
+ msgid ""
400
+ "You can disable the resource only for the pages with the matched to the "
401
+ "template address. For example, if you set the template for the link as "
402
+ "http://yoursite.test/profile/*, then the resource is disabled for the "
403
+ "following pages: http://yoursite.test/profile/12, http://yoursite.test/"
404
+ "profile/43, http://yoursite.test/profile/999. If you don’t use the asterisk "
405
+ "symbol in the template then the plugin will disable the resource only for "
406
+ "the pages with 100% match in the specified link type. This feature is "
407
+ "available at the paid version."
408
+ msgstr ""
409
+ "Вы можете отключить этот ресурс только на тех страницах, адрес которых будет "
410
+ "соответствовать установленному вами шаблону. К примеру, если вы установите "
411
+ "шаблон ссылки http://yoursite.test/profile/*, то ресурс будет отключен на "
412
+ "следующих страницах http://yoursite.test/profile/12, http://yoursite.test/"
413
+ "profile/43, http://yoursite.test/profile/999. Если вы не будете использовать "
414
+ "звездочку в вашем шаблоне, то плагин отключит ресурс, только на странице где "
415
+ "будет точное совпадение с установленной вами ссылкой. Эта функция доступна "
416
+ "только в платной версии плагина."
417
+
418
+ #: assets-manager/includes/class.configurate-assets.php:698
419
+ msgid ""
420
+ "Regular expressions can be used by experts. This tool creates flexible "
421
+ "conditions to disable the resource. For example, if you specify this "
422
+ "expression: ^([A-z0-9]+-)?gifts? then the resource will be disabled at the "
423
+ "following pages http://yoursite.test/get-gift/, http://yoursite.test/gift/, "
424
+ "http://yoursite.test/get-gifts/, http://yoursite.test/gifts/. The plugin "
425
+ "ignores the backslash at the beginning of the query string, so you can "
426
+ "dismiss it. Check your regular expressions in here: https://regex101.com, "
427
+ "this will prevent you from the mistakes. This feature is available at the "
428
+ "paid version."
429
+ msgstr ""
430
+ "Регулярные выражения используются экспертами. С помощью этого инструмента вы "
431
+ "можете создать более гибкие условия для отключения ресурса. К примеру, если "
432
+ "вы установите такое выражение: ^([A-z0-9]+-)?gifts?, то ресурс будет "
433
+ "отключен на страницах http://yoursite.test/get-gift/, http://yoursite.test/"
434
+ "gift/, http://yoursite.test/get-gifts/, http://yoursite.test/gifts/. Плагин "
435
+ "игнорирует обратный слеш в начале строки запроса, поэтому вы можете его "
436
+ "пропустить. Проверяйте свое регулярное выражение с помощью сервиса https://"
437
+ "regex101.com, чтобы вы были точно уверены, что в вашем регулярном выражении "
438
+ "нет ошибки. Эта функция доступна только в платной версии плагина."
439
+
440
+ #: assets-manager/includes/class.configurate-assets.php:718
441
+ msgid "Also disabled for pages"
442
+ msgstr "Также отключен для страниц"
443
+
444
+ #: assets-manager/includes/class.configurate-assets.php:1293
445
+ msgid "Minify and Combine"
446
+ msgstr "Минификация"
447
+
448
+ #: assets-manager/includes/class.configurate-assets.php:1315
449
+ msgid "remove version?"
450
+ msgstr "Удалить версию?"
451
+
452
+ #: assets-manager/includes/class.configurate-assets.php:1315
453
+ msgid "optimize?"
454
+ msgstr "оптимизировать?"
455
+
456
+ #: assets-manager/includes/class.configurate-assets.php:1319
457
+ msgid ""
458
+ "You’ve enabled &#34;Remove query strings&#34; from static resources in the "
459
+ "&#34;Clearfy&#34; plugin. This list of settings helps you to exclude the "
460
+ "necessary scripts and styles with remaining query strings. Press No to add a "
461
+ "file to the excluded list."
462
+ msgstr ""
463
+ "Вы включили опцию &#34;Удалить переменные запроса для статических "
464
+ "ресурсов&#34; в плагине &#34;Clearfy&#34;, в этой колонке настроек вы можете "
465
+ "исключить скрипты и стили, для которых вы хотите оставить переменые запроса. "
466
+ "Просто выберите \"Нет\", чтобы добавить файл в исключения.."
467
+
468
+ #: assets-manager/includes/class.configurate-assets.php:1321
469
+ msgid ""
470
+ "You’ve enabled the &#34;Optimize js scripts?&#34; and &#34;Optimize CSS "
471
+ "options&#34; in the &#34;Minify & Combine plugin&#34;. These settings "
472
+ "exclude scripts and styles that you don’t want to optimize. Press No to add "
473
+ "a file to the excluded list."
474
+ msgstr ""
475
+ "Вы включили опцию &#34;Оптимизировать js скрипты?&#34; и &#34;Оптимизировать "
476
+ "css&#34; в плагине &#34;Сжатие и Объединения&#34;. С помощью этой колонки "
477
+ "настроек, вы можете исключить скрипты и стили, которые вы не хотите "
478
+ "оптимизировать. Чтобы добавить файл в исключения просто нажмите кнопку \"Нет"
479
+ "\"."
480
+
481
+ #: assets-manager/includes/class.configurate-assets.php:1323
482
+ msgid ""
483
+ "You’ve enabled the &#34;Optimize js scripts?&#34; and &#34;Optimize CSS "
484
+ "options&#34; in the &#34;Autoptimize&#34;. These settings exclude scripts "
485
+ "and styles that you don’t want to optimize. Press No to add a file to the "
486
+ "excluded list."
487
+ msgstr ""
488
+ "Вы включили опцию &#34;Оптимизировать js скрипты?&#34; и &#34;Оптимизировать "
489
+ "css&#34; в плагине &#34;Autoptimize&#34;. С помощью этой колонки настроек, "
490
+ "вы можете исключить скрипты и стили, которые вы не хотите оптимизировать. "
491
+ "Чтобы добавить файл в исключения просто нажмите кнопку \"Нет\"."
492
+
493
+ #~ msgid ""
494
+ #~ "We found that you use the plugin \"Clearfy - disable unused functions\", "
495
+ #~ "this plugin already has the same functions as \"Assets manager\", so you "
496
+ #~ "can disable the \"Assets manager\" plugin!"
497
+ #~ msgstr ""
498
+ #~ "Мы обнаружили, что вы используете плагин \"Clearfy - disable unused "
499
+ #~ "features\", этот плагин включает функционал \"WP Asset CleanUp\", вы "
500
+ #~ "можете деактивировать плагин \"Менеджер скриптов\"!"
501
+
502
+ #~ msgid ""
503
+ #~ "Below you can disable/enable CSS and JS files on a per page/post basis, "
504
+ #~ "as well as by custom post types. We recommend testing this locally or on "
505
+ #~ "a staging site first, as you could break the appearance of your live "
506
+ #~ "site. If you aren't sure about a certain script, you can try clicking on "
507
+ #~ "it, as a lot of authors will mention their plugin or theme in the header "
508
+ #~ "of the source code."
509
+ #~ msgstr ""
510
+ #~ "Ниже вы можете включить/отключить использование CSS и JS файлов в "
511
+ #~ "записях, произвольных типах записей или страницах. Мы рекомендуем вам "
512
+ #~ "эксперементировать со скриптами на локальном хостинге или тестом сайте, "
513
+ #~ "так как вы можете нарушить работу сайта, если отключите системные файлы "
514
+ #~ "скриптов, без которых невозможна полноценная работа сайта. Если вы не "
515
+ #~ "уверены, для чего используется тот или иной файл, попробуйте нажать на "
516
+ #~ "ссылку под его заголовком, в открывшемся файле вы можете увидеть "
517
+ #~ "комментарий разработчика с ссылкой на описание плагина. Получив "
518
+ #~ "достаточную информацию о функциях плагина, вы сможете более уверенно "
519
+ #~ "включать или отключать его стили и скрипты."
520
+
521
+ #~ msgid ""
522
+ #~ "If for some reason you run into trouble, you can always enable everything "
523
+ #~ "again to reset the settings."
524
+ #~ msgstr ""
525
+ #~ "Если по какой-то причине вы столкнулись с проблемами, вы всегда можете "
526
+ #~ "включить все опции, чтобы сбросить настройки."
527
+
528
+ #~ msgid "Save settings"
529
+ #~ msgstr "Сохранить"
530
+
531
+ #~ msgid "Hide panel in adminbar?"
532
+ #~ msgstr "Скрыть панель из админбара?"
533
+
534
+ #~ msgid "State"
535
+ #~ msgstr "Состояние"
536
+
537
+ #~ msgid "Script"
538
+ #~ msgstr "Скрипт"
539
+
540
+ #~ msgid "In use"
541
+ #~ msgstr "Используется"
542
+
543
+ #~ msgid "Disable"
544
+ #~ msgstr "Отключить"
545
+
546
+ #~ msgid "Enable"
547
+ #~ msgstr "Включить"
548
+
549
+ #~ msgid "Enabled"
550
+ #~ msgstr "Включить"
551
+
552
+ #~ msgid "Disable everwhere to view enable settings."
553
+ #~ msgstr ""
554
+ #~ "Нужно включить опцию \"повсюду\", чтобы увидеть дополнительные настройки."
555
+
556
+ #~ msgid ""
557
+ #~ "We found that you use the plugin \"Clearfy - disable unused functions\", "
558
+ #~ "this plugin already has the same functions as \"WP Asset CleanUp\", so "
559
+ #~ "you can disable the \"WP Asset CleanUp\" plugin!"
560
+ #~ msgstr ""
561
+ #~ "Мы обнаружили, что вы используете плагин \"Clearfy - disable unused "
562
+ #~ "features\", этот плагин включает функционал \"WP Asset CleanUp\", вы "
563
+ #~ "можете деактивировать плагин \"WP Asset CleanUp\"!"
564
+
565
+ #~ msgid "Webcraftic Assets manager"
566
+ #~ msgstr "Webcraftic менеджер скриптов"
567
+
568
+ #~ msgid ""
569
+ #~ "We found that you have the \"Clearfy - disable unused features\" plugin "
570
+ #~ "installed, this plugin already has disable comments functions, so you can "
571
+ #~ "deactivate plugin \"WP Asset CleanUp\"!"
572
+ #~ msgstr ""
573
+ #~ "Мы обнаружили, что вы используете плагин \"Clearfy - disable unused "
574
+ #~ "features\", этот плагин"
components/assets-manager/readme.txt CHANGED
@@ -3,7 +3,7 @@ Tags: dequeue script, dequeue style, pagespeed, speed, unload style, gonzales, a
3
  Contributors: webcraftic
4
  Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=VDX7JNTQPNPFW
5
  Requires at least: 4.2
6
- Tested up to: 4.9
7
  Requires PHP: 5.2
8
  Stable tag: trunk
9
  License: GPLv2
@@ -59,6 +59,22 @@ We invite you to check out a few other related free plugins that our team has al
59
  2. Assets manager
60
 
61
  == Changelog ==
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
62
  = 1.0.4 =
63
  * Fixed: Update core
64
  * Fixed: Compatibility with others plugin
3
  Contributors: webcraftic
4
  Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=VDX7JNTQPNPFW
5
  Requires at least: 4.2
6
+ Tested up to: 5.0
7
  Requires PHP: 5.2
8
  Stable tag: trunk
9
  License: GPLv2
59
  2. Assets manager
60
 
61
  == Changelog ==
62
+ = 1.0.7 =
63
+ * Fixed: Added compatibility with ithemes sync
64
+ * Fixed: Minor style fixes
65
+
66
+ = 1.0.6 =
67
+ * Fixed: Fixed a bug when the interface did not open on the frontend.
68
+
69
+ = 1.0.5 =
70
+ Great update:
71
+ * We completely changed the interface design. Now it is more convenient for visual inspection of resource files.
72
+ * Fixed: All errors that users have reported about
73
+ * Added: Multisite support
74
+ * Added: New logic disabled scripts and styles
75
+ * Added: You can exclude assets from optimizing for Autoptimize and Clearfy plugins.
76
+ * Added: You can exclude resource files for which you do not need to remove the query string.
77
+ * Added: You can see which plugin the style file belongs to and the js file.
78
  = 1.0.4 =
79
  * Fixed: Update core
80
  * Fixed: Compatibility with others plugin
components/assets-manager/uninstall.php CHANGED
@@ -8,6 +8,37 @@
8
  // remove plugin options
9
  global $wpdb;
10
 
11
- $wpdb->query("DELETE FROM {$wpdb->prefix}options WHERE option_name LIKE 'wbcr_gonzales_%';");
12
- $wpdb->query("DELETE FROM {$wpdb->prefix}options WHERE option_name LIKE 'wbcr_gnz_%';");
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
 
 
 
 
 
 
 
8
  // remove plugin options
9
  global $wpdb;
10
 
11
+ if( !function_exists('is_plugin_active_for_network') ) {
12
+ require_once(ABSPATH . 'wp-admin/includes/plugin.php');
13
+ }
14
+
15
+ function uninstall()
16
+ {
17
+ // remove plugin options
18
+ global $wpdb;
19
+
20
+ $wpdb->query("DELETE FROM {$wpdb->options} WHERE option_name LIKE 'wbcr_gonzales_%';");
21
+ $wpdb->query("DELETE FROM {$wpdb->options} WHERE option_name LIKE 'wbcr_gnz_%';");
22
+ }
23
+
24
+ if( is_multisite() ) {
25
+ global $wpdb, $wp_version;
26
+
27
+ $wpdb->query("DELETE FROM {$wpdb->sitemeta} WHERE meta_key LIKE 'wbcr_gonzales_%';");
28
+ $wpdb->query("DELETE FROM {$wpdb->sitemeta} WHERE meta_key LIKE 'wbcr_gnz_%';");
29
+
30
+ $blogs = $wpdb->get_col("SELECT blog_id FROM $wpdb->blogs");
31
+
32
+ if( !empty($blogs) ) {
33
+ foreach($blogs as $id) {
34
+
35
+ switch_to_blog($id);
36
+
37
+ uninstall();
38
 
39
+ restore_current_blog();
40
+ }
41
+ }
42
+ } else {
43
+ uninstall();
44
+ }
components/assets-manager/updates/010100.php CHANGED
@@ -4,7 +4,7 @@
4
  * Updates for altering the table used to store statistics data.
5
  * Adds new columns and renames existing ones in order to add support for the new social buttons.
6
  */
7
- class WGZUpdate010100 extends Wbcr_Factory406_Update {
8
 
9
  public function install()
10
  {
4
  * Updates for altering the table used to store statistics data.
5
  * Adds new columns and renames existing ones in order to add support for the new social buttons.
6
  */
7
+ class WGZUpdate010100 extends Wbcr_Factory409_Update {
8
 
9
  public function install()
10
  {
components/comments-plus/admin/assets/css/general.css DELETED
@@ -1,455 +0,0 @@
1
- /**
2
- * General styles
3
- * @author Alex Kovalev <alex.kovalevv@gmail.com>
4
- * @copyright Alex Kovalev 23.08.2017
5
- */
6
- #WBCR {
7
- position: relative;
8
- /**
9
- Widget in the sidebar of the plugin
10
- */
11
- /*#wbcr-clearfy_robots_txt_text {
12
- min-height: 200px;
13
- }*/
14
- }
15
- #WBCR .alert.alert-success {
16
- margin: 0px;
17
- margin-top: 10px;
18
- margin-bottom: 10px;
19
- font-weight: bold;
20
- padding: 10px;
21
- }
22
- #WBCR .wbcr-factory-light-orange-color {
23
- color: #ffeb3b;
24
- }
25
- #WBCR .wbcr-clearfy-header {
26
- padding: 20px 20px 40px;
27
- }
28
- #WBCR .factory-bootstrap-406 label {
29
- font-weight: normal;
30
- }
31
- #WBCR .factory-bootstrap-406 .form-horizontal .control-label {
32
- max-width: 300px;
33
- }
34
- #WBCR .factory-control-buttons {
35
- text-align: right;
36
- padding-right: 20px;
37
- }
38
- #WBCR .factory-from-control-list label span {
39
- display: inline-block;
40
- vertical-align: bottom;
41
- }
42
- #WBCR .factory-from-control-list label span input[type="checkbox"],
43
- #WBCR .factory-from-control-list label span input[type="checkbox"]:focus {
44
- outline: none;
45
- }
46
- #WBCR .wbcr-clearfy-recomended-text {
47
- display: block;
48
- font-size: 11px;
49
- font-weight: lighter;
50
- color: #179347;
51
- }
52
- #WBCR .wbcr-clearfy-group-header {
53
- background: #f9f9f9;
54
- padding: 30px 0 10px 40px;
55
- margin-bottom: 20px;
56
- }
57
- #WBCR .wbcr-clearfy-group-header strong {
58
- font-size: 15px;
59
- }
60
- #WBCR .wbcr-clearfy-group-header p {
61
- color: #8c8888;
62
- font-size: 12px;
63
- }
64
- #WBCR .wbcr-clr-options,
65
- #WBCR .wbcr-clr-page {
66
- position: relative;
67
- background: #fff;
68
- padding-left: 230px;
69
- }
70
- #WBCR .wbcr-clr-options form.form-horizontal,
71
- #WBCR .wbcr-clr-page form.form-horizontal {
72
- min-height: 800px;
73
- padding: 130px 20px 50px 20px;
74
- }
75
- #WBCR .wbcr-clr-page {
76
- min-height: 800px;
77
- padding: 80px 20px 50px 230px;
78
- }
79
- #WBCR .wbcr-clearfy-dashboard-header {
80
- position: absolute;
81
- z-index: 13;
82
- top: 0;
83
- left: 0;
84
- right: 0;
85
- overflow: hidden;
86
- background-color: #32373c;
87
- color: #fff;
88
- border-radius: 5px 5px 0 0;
89
- }
90
- #WBCR .wbcr-clearfy-dashboard-header .wbcr-clearfy-header-logo {
91
- float: left;
92
- padding: 25px 0;
93
- font-size: 20px;
94
- line-height: 30px;
95
- font-weight: 400;
96
- text-align: center;
97
- width: 170px;
98
- background-color: #464b50;
99
- color: #ccc;
100
- padding-left: 25px;
101
- background: none;
102
- }
103
- #WBCR .wbcr-clearfy-dashboard-header .wbcr-clearfy-header-title {
104
- display: inline-block;
105
- vertical-align: middle;
106
- }
107
- #WBCR .wbcr-clearfy-dashboard-header .wbcr-clearfy-header-title h2 {
108
- font-size: 18px;
109
- line-height: 30px;
110
- font-weight: 300;
111
- margin-top: 26px;
112
- padding: 0 !important;
113
- overflow: hidden;
114
- white-space: nowrap;
115
- text-overflow: ellipsis;
116
- color: #fff;
117
- }
118
- #WBCR .wbcr-clearfy-dashboard-header .wbcr-clearfy-header-title .updated {
119
- display: none !important;
120
- }
121
- #WBCR .wbcr-clearfy-dashboard-header .wbcr-clearfy-control {
122
- position: relative;
123
- float: right;
124
- margin: 12px;
125
- }
126
- #WBCR .wbcr-clearfy-dashboard-header .wbcr-clearfy-control input[type="submit"] {
127
- display: inline-block;
128
- vertical-align: top;
129
- font-size: 13px;
130
- font-weight: 600;
131
- line-height: 20px;
132
- text-transform: uppercase;
133
- margin: 10px 0 0;
134
- padding: 8px 30px;
135
- cursor: pointer;
136
- position: relative;
137
- overflow: hidden;
138
- border: none;
139
- border-radius: 50px;
140
- box-shadow: 0 -1px 0 rgba(0, 0, 0, 0.08) inset;
141
- background-color: #f1f1f1;
142
- color: inherit;
143
- transition: background-color 0.3s, border-color 0.3s, color 0.3s, opacity 0.3s;
144
- text-align: center;
145
- outline: none;
146
- z-index: 3;
147
- }
148
- #WBCR .wbcr-clearfy-dashboard-header .wbcr-clearfy-control input[type="submit"].wbcr-clearfy-type-save {
149
- box-shadow: none;
150
- min-width: 200px;
151
- background-color: #8bc34a;
152
- color: #fff;
153
- }
154
- #WBCR .wbcr-clearfy-dashboard-header .wbcr-clearfy-control input[type="submit"].wbcr-clearfy-type-save:hover {
155
- background: #9dbb7b;
156
- color: #fff;
157
- }
158
- #WBCR .wbcr-clearfy-dashboard-header .wbcr-clearfy-control input[type="submit"].wbcr-clearfy-type-save:active {
159
- box-shadow: inset -1px 1px 1px rgba(0, 0, 0, 0.3);
160
- }
161
- #WBCR .wbcr-clearfy-left-navigation-bar {
162
- position: absolute;
163
- left: 0;
164
- top: 0;
165
- bottom: 0;
166
- width: 230px;
167
- background: #e6e6e6;
168
- }
169
- #WBCR .wbcr-clearfy-left-navigation-bar ul {
170
- margin-top: 80px;
171
- }
172
- #WBCR .wbcr-clearfy-left-navigation-bar ul .wbcr-clearfy-nav-tab {
173
- display: block;
174
- background: #efefef;
175
- margin: 1px 0;
176
- }
177
- #WBCR .wbcr-clearfy-left-navigation-bar ul .wbcr-clearfy-nav-tab a {
178
- display: block;
179
- width: 100%;
180
- padding: 20px 20px;
181
- font-size: 12px;
182
- color: #9a9a9a;
183
- text-decoration: none;
184
- text-transform: uppercase;
185
- }
186
- #WBCR .wbcr-clearfy-left-navigation-bar ul .wbcr-clearfy-nav-tab a:hover {
187
- background: #f7f6f6;
188
- }
189
- #WBCR .wbcr-clearfy-left-navigation-bar ul .wbcr-clearfy-nav-tab a,
190
- #WBCR .wbcr-clearfy-left-navigation-bar ul .wbcr-clearfy-nav-tab a:active,
191
- #WBCR .wbcr-clearfy-left-navigation-bar ul .wbcr-clearfy-nav-tab a:hover,
192
- #WBCR .wbcr-clearfy-left-navigation-bar ul .wbcr-clearfy-nav-tab a:active,
193
- #WBCR .wbcr-clearfy-left-navigation-bar ul .wbcr-clearfy-nav-tab a:focus {
194
- outline: 0 !important;
195
- box-shadow: none !important;
196
- }
197
- #WBCR .wbcr-clearfy-left-navigation-bar ul .wbcr-clearfy-nav-tab.wbcr-clearfy-active-tab {
198
- background: #fff;
199
- }
200
- #WBCR .wbcr-clearfy-left-navigation-bar ul .wbcr-clearfy-nav-tab.wbcr-clearfy-active-tab a {
201
- color: #222;
202
- }
203
- #WBCR .wbcr-clearfy-sidebar-widget {
204
- display: inline-block;
205
- min-height: 230px;
206
- width: 100%;
207
- margin-top: 20px;
208
- background-color: #fff;
209
- padding: 20px 15px;
210
- vertical-align: top;
211
- }
212
- #WBCR .wbcr-clearfy-sidebar-widget .wbcr-clearfy-hint-icon-simple {
213
- display: inline-block;
214
- width: 16px;
215
- height: 16px;
216
- line-height: 15px;
217
- padding: 0;
218
- font-size: 11px;
219
- text-align: center;
220
- color: #fff;
221
- background: #E91E63;
222
- border-radius: 3px;
223
- }
224
- #WBCR .wbcr-clearfy-sidebar-widget .wbcr-clearfy-simple-grey {
225
- background: #E91E63;
226
- }
227
- #WBCR .wbcr-clearfy-sidebar-widget .wbcr-clearfy-simple-red {
228
- background: #9e9e9e;
229
- }
230
- #WBCR .wbcr-clearfy-sidebar-widget .wbcr-clearfy-simple-green {
231
- background: #8bc34a;
232
- }
233
- #WBCR .wbcr-clearfy-sidebar-widget .wbcr-clearfy-icon-5stars {
234
- display: block;
235
- width: 80px;
236
- height: 17px;
237
- background: url('../img/5-stars22.png') no-repeat;
238
- vertical-align: middle;
239
- margin-bottom: 5px;
240
- }
241
- #WBCR .wbcr-clearfy-board {
242
- background: #f9f8f8;
243
- box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.1);
244
- padding: 20px;
245
- margin-top: 20px;
246
- }
247
- #WBCR #wbcr-clearfy-quick-mode-board {
248
- padding: 30px;
249
- margin-top: 20px;
250
- }
251
- #WBCR #wbcr-clearfy-quick-mode-board h4 {
252
- margin-top: 30px;
253
- }
254
- #WBCR .wbcr-clearfy-switch-success-message,
255
- #WBCR .wbcr-clearfy-switch-error-message {
256
- display: none;
257
- padding: 15px 20px;
258
- font-size: 13px;
259
- font-weight: bold;
260
- margin: 15px 0 0;
261
- border-radius: 4px;
262
- }
263
- #WBCR .wbcr-clearfy-switch-success-message {
264
- background: #e5f9ce;
265
- border-bottom: 3px solid #d3eab9;
266
- color: #56614a;
267
- }
268
- #WBCR .wbcr-clearfy-switch-error-message {
269
- background: #fdc6c2;
270
- border-bottom: 3px solid #e2a19c;
271
- color: #bd6963;
272
- }
273
- #WBCR .wbcr-clearfy-export-import-board {
274
- text-align: right;
275
- }
276
- #WBCR .wbcr-clearfy-export-import-board label {
277
- display: block;
278
- width: 100%;
279
- text-align: left;
280
- padding: 7px 0;
281
- }
282
- #WBCR .wbcr-clearfy-export-import-board #wbcr-clearfy-import-export {
283
- width: 100%;
284
- box-sizing: border-box;
285
- height: 150px;
286
- line-height: inherit;
287
- margin: 0;
288
- padding: 7px 14px;
289
- box-shadow: none;
290
- border-radius: 3px;
291
- border: 1px solid #eee;
292
- border-top-color: #dedede;
293
- background-color: #f1f1f1;
294
- color: #444;
295
- transition: border-color 0.3s;
296
- -webkit-appearance: none;
297
- }
298
- #WBCR .wbcr-clearfy-export-import-board .wbcr-clearfy-import-options-button {
299
- display: inline-block;
300
- margin-top: 10px;
301
- }
302
- #WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch {
303
- position: relative;
304
- padding: 20px;
305
- font-size: 11px;
306
- text-transform: uppercase;
307
- background: #f1f1f1;
308
- margin-top: 10px;
309
- border: 2px solid #e0dfdf;
310
- text-align: center;
311
- -webkit-transition: all 0.2s ease-out;
312
- -moz-transition: all 0.2s ease-out;
313
- -o-transition: all 0.2s ease-out;
314
- transition: all 0.2s ease-out;
315
- }
316
- #WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch:hover {
317
- cursor: pointer;
318
- background: #e9e9e9;
319
- border: 2px solid #d8d7d7;
320
- }
321
- #WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch.wbcr-clearfy-active {
322
- background: #e5f9ce;
323
- border: 2px solid #c9deb2;
324
- color: #677d4d;
325
- }
326
- #WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch.wbcr-clearfy-active .wbcr-clearfy-switch-confirmation {
327
- display: block !important;
328
- }
329
- #WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch.wbcr-clearfy-active:hover .wbcr-clearfy-switch-confirmation {
330
- opacity: 1;
331
- }
332
- #WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch.wbcr-clearfy-mode-reset:hover {
333
- background: #f7ccc9;
334
- color: #c55b5b;
335
- border: 2px solid #d8adad;
336
- }
337
- #WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch.wbcr-clearfy-loading {
338
- border: 2px solid #efefef;
339
- background: #f5f5f5;
340
- color: #d6d6d6;
341
- }
342
- #WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch.wbcr-clearfy-loading .wbcr-clearfy-switch-confirmation button {
343
- display: none !important;
344
- }
345
- #WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch .wbcr-clearfy-switch-confirmation {
346
- position: absolute;
347
- display: none;
348
- opacity: 0;
349
- top: 0;
350
- left: 0;
351
- right: 0;
352
- bottom: 0;
353
- background: rgba(255, 255, 255, 0.85);
354
- -webkit-transition: all 0.3s ease-out;
355
- -moz-transition: all 0.3s ease-out;
356
- -o-transition: all 0.3s ease-out;
357
- transition: all 0.3s ease-out;
358
- }
359
- #WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch .wbcr-clearfy-switch-confirmation button {
360
- margin-top: 15px;
361
- border: 0;
362
- box-shadow: none;
363
- padding: 5px 10px;
364
- font-weight: bold;
365
- font-size: 13px;
366
- border-radius: 3px;
367
- outline: none;
368
- }
369
- #WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch .wbcr-clearfy-switch-confirmation button.wbcr-clearfy-confirm-button-accept {
370
- background-color: #c9deb2;
371
- color: #586549;
372
- }
373
- #WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch .wbcr-clearfy-switch-confirmation button.wbcr-clearfy-confirm-button-cancel {
374
- background-color: #fdd599;
375
- color: #a57b3c;
376
- margin-left: 10px;
377
- }
378
- #WBCR .wbcr-clearfy-layer {
379
- display: none;
380
- position: absolute;
381
- top: 0;
382
- left: 0;
383
- right: 0;
384
- bottom: 0;
385
- background: rgba(255, 235, 59, 0.18);
386
- z-index: 9;
387
- }
388
- #WBCR .wbcr-clearfy-confirm-popup {
389
- display: none;
390
- position: absolute;
391
- top: 50%;
392
- left: 50%;
393
- width: 500px;
394
- height: 400px;
395
- margin: -200px 0 0 -250px;
396
- padding: 20px;
397
- background: rgba(255, 255, 255, 0.82);
398
- box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
399
- border: 4px solid rgba(216, 210, 171, 0.44);
400
- z-index: 99;
401
- }
402
- #WBCR .wbcr-clearfy-confirm-popup h3 {
403
- font-size: 17px;
404
- text-align: center;
405
- font-weight: bold;
406
- margin: 5px 0 0;
407
- }
408
- #WBCR .wbcr-clearfy-confirm-popup .wbcr-clearfy-reset-warning-message {
409
- display: none;
410
- text-align: center;
411
- }
412
- #WBCR .wbcr-clearfy-confirm-popup .wbcr-clearfy-list-options {
413
- display: none;
414
- height: 230px;
415
- overflow-y: auto;
416
- overflow-x: hidden;
417
- padding-left: 40px;
418
- list-style: decimal;
419
- margin: 20px 0;
420
- }
421
- #WBCR .wbcr-clearfy-confirm-popup.wbcr-clearfy-default-warning-options .wbcr-clearfy-list-options {
422
- display: block;
423
- }
424
- #WBCR .wbcr-clearfy-confirm-popup.wbcr-clearfy-reset-warning-options {
425
- height: 200px;
426
- margin: -100px 0 0 -250px;
427
- }
428
- #WBCR .wbcr-clearfy-confirm-popup.wbcr-clearfy-reset-warning-options .wbcr-clearfy-reset-warning-message {
429
- display: block;
430
- margin: 10px 0;
431
- }
432
- #WBCR .wbcr-clearfy-confirm-popup .wbcr-clearfy-popup-buttons {
433
- text-align: center;
434
- padding: 10px;
435
- }
436
- #WBCR .wbcr-clearfy-confirm-popup .wbcr-clearfy-popup-buttons button {
437
- display: inline-block;
438
- padding: 7px 25px;
439
- box-shadow: none;
440
- border: 0;
441
- font-weight: bold;
442
- }
443
- #WBCR .wbcr-clearfy-confirm-popup .wbcr-clearfy-popup-buttons button,
444
- #WBCR .wbcr-clearfy-confirm-popup .wbcr-clearfy-popup-buttons button:focus {
445
- outline: 0 !important;
446
- box-shadow: none !important;
447
- }
448
- #WBCR .wbcr-clearfy-confirm-popup .wbcr-clearfy-popup-buttons button.wbcr-clearfy-popup-button-ok {
449
- background: #FFEB3B;
450
- color: #564f0d;
451
- }
452
- #WBCR .wbcr-clearfy-confirm-popup .wbcr-clearfy-popup-buttons button.wbcr-clearfy-cancel-mode {
453
- background: #d6d6d6;
454
- color: #5f5d5d;
455
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
components/comments-plus/admin/assets/js/general.js DELETED
@@ -1,203 +0,0 @@
1
- /**
2
- * General
3
- * @author Webcraftic <wordpress.webraftic@gmail.com>
4
- * @copyright (c) 10.09.2017, Webcraftic
5
- * @version 1.0
6
- */
7
-
8
-
9
- (function($) {
10
- 'use strict';
11
-
12
- var general = {
13
- init: function() {
14
- this.qickStartAssistent();
15
- this.importOptions();
16
- },
17
- qickStartAssistent: function() {
18
- var self = this;
19
-
20
- $('.wbcr-clearfy-switch').click(function() {
21
-
22
- var modeName = $(this).data('mode'),
23
- modeOptions = $(this).data('mode-options');
24
-
25
- self.showConfirmationPopup(modeName, modeOptions);
26
- return false;
27
- });
28
-
29
- $('.wbcr-clearfy-popup-button-cancel').click(function() {
30
- self.hideConfirmationPopup();
31
- });
32
-
33
- $('.wbcr-clearfy-cancel-mode').click(function() {
34
- var $this = $(this), modeName = $(this).closest('.wbcr-clearfy-switch').data('mode'),
35
- switcher = $(this).closest('.wbcr-clearfy-switch');
36
-
37
- switcher.addClass('wbcr-clearfy-loading');
38
-
39
- self.sendRequest({
40
- action: 'wbcr_clearfy_configurate',
41
- mode: modeName,
42
- cancel_mode: true
43
- }, function(data) {
44
- switcher.removeClass('wbcr-clearfy-loading');
45
-
46
- if( data && data.export_options ) {
47
- $('#wbcr-clearfy-import-export').html(data.export_options);
48
- }
49
- },
50
- function() {
51
- if( modeName != 'reset' ) {
52
- switcher.removeClass('wbcr-clearfy-active');
53
- }
54
- });
55
- return false;
56
- });
57
-
58
- $('.wbcr-clearfy-popup-button-ok').click(function() {
59
- var $this = $(this), modeName = $(this).closest('.wbcr-clearfy-confirm-popup').data('mode'),
60
- switcher = $('div[data-mode="' + modeName + '"]', '#wbcr-clearfy-quick-mode-board');
61
-
62
- self.hideConfirmationPopup();
63
- switcher.addClass('wbcr-clearfy-loading');
64
-
65
- self.sendRequest({
66
- action: 'wbcr_clearfy_configurate',
67
- mode: modeName
68
- }, function(data) {
69
- switcher.removeClass('wbcr-clearfy-loading');
70
-
71
- if( data && data.export_options ) {
72
- $('#wbcr-clearfy-import-export').html(data.export_options);
73
- }
74
- },
75
- function() {
76
- if( modeName != 'reset' ) {
77
- switcher.addClass('wbcr-clearfy-active');
78
- return;
79
- }
80
-
81
- $('.wbcr-clearfy-switch').removeClass('wbcr-clearfy-active');
82
- });
83
-
84
- return false;
85
- });
86
- },
87
-
88
- showConfirmationPopup: function(modeName, options) {
89
- var self = this;
90
-
91
- $('.wbcr-clearfy-layer').fadeIn();
92
-
93
- var popupElem = $('.wbcr-clearfy-confirm-popup');
94
- popupElem.data('mode', modeName);
95
- popupElem.fadeIn();
96
-
97
- if( modeName != 'reset' ) {
98
- var printOptTitles = '';
99
-
100
- if( options ) {
101
- for( var opt in options ) {
102
- if( !options.hasOwnProperty(opt) ) {
103
- continue;
104
- }
105
- printOptTitles += '<li>' + options[opt] + '</li>';
106
-
107
- }
108
- $('.wbcr-clearfy-list-options').html(printOptTitles);
109
- popupElem.addClass('wbcr-clearfy-default-warning-options');
110
- }
111
- return;
112
- }
113
-
114
- popupElem.addClass('wbcr-clearfy-reset-warning-options');
115
- },
116
-
117
- hideConfirmationPopup: function() {
118
- $('.wbcr-clearfy-layer').fadeOut(100);
119
- var popupElem = $('.wbcr-clearfy-confirm-popup');
120
-
121
- popupElem.fadeOut(100, function() {
122
- popupElem.removeClass('wbcr-clearfy-default-warning-options');
123
- popupElem.removeClass('wbcr-clearfy-reset-warning-options');
124
- });
125
-
126
- },
127
-
128
- importOptions: function() {
129
- var self = this;
130
-
131
- $('.wbcr-clearfy-import-options-button').click(function() {
132
- var settings = $('#wbcr-clearfy-import-export').val(),
133
- $this = $(this);
134
-
135
- if( !settings ) {
136
- return;
137
- }
138
-
139
- $(this).prop('disabled', true);
140
-
141
- self.sendRequest({
142
- action: 'wbcr_clearfy_import_settings',
143
- settings: settings
144
- }, function(data) {
145
- //console.log(data);
146
- $this.prop('disabled', false);
147
- });
148
-
149
- return false;
150
- });
151
- },
152
- sendRequest: function(data, beforeValidateCallback, successCallback) {
153
-
154
- var errorContanier = $('.wbcr-clearfy-switch-error-message'),
155
- defaultErrorMessage = errorContanier.text();
156
-
157
- if( wbcr_clearfy_ajax === undefined ) {
158
- console.log('Undefinded wbcr_clearfy_ajax object.');
159
- return;
160
- }
161
-
162
- var ajaxUrl = wbcr_clearfy_ajax ? wbcr_clearfy_ajax.ajaxurl : ajaxurl;
163
-
164
- if( typeof data === 'object' ) {
165
- data.security = wbcr_clearfy_ajax.ajax_nonce;
166
- }
167
-
168
- $.ajax(ajaxurl, {
169
- type: 'post',
170
- dataType: 'json',
171
- data: data,
172
- success: function(data, textStatus, jqXHR) {
173
-
174
- beforeValidateCallback && beforeValidateCallback(data);
175
-
176
- if( !data || data.error ) {
177
- if( data ) {
178
- console.log(data.error);
179
- if( !errorContanier.is(':visible') ) {
180
- errorContanier.html(defaultErrorMessage + '<br>' + data.error);
181
- }
182
- }
183
-
184
- if( !errorContanier.is(':visible') ) {
185
- errorContanier.fadeIn(600).delay(10000).fadeOut(600);
186
- }
187
- return;
188
- }
189
-
190
- successCallback && successCallback();
191
-
192
- $('.wbcr-clearfy-switch-success-message').fadeIn(600).delay(3000).fadeOut(600);
193
-
194
- }
195
- });
196
- }
197
- };
198
-
199
- $(document).ready(function() {
200
- general.init();
201
- });
202
-
203
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
components/comments-plus/admin/boot.php CHANGED
@@ -11,6 +11,60 @@
11
  exit;
12
  }
13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  function wbcr_cmp_group_options($options)
15
  {
16
  $options[] = array(
@@ -24,6 +78,16 @@
24
  'title' => __('Select post types', 'comments-plus'),
25
  'tags' => array()
26
  );
 
 
 
 
 
 
 
 
 
 
27
  $options[] = array(
28
  'name' => 'comment_text_convert_links_pseudo',
29
  'title' => __('Replace external links in comments on the JavaScript code', 'comments-plus'),
@@ -93,7 +157,7 @@
93
  return $page_url;
94
  }
95
 
96
- add_filter('wbcr_factory_pages_407_imppage_rating_widget_url', 'wbcr_cmp_rating_widget_url', 10, 2);
97
 
98
 
99
 
11
  exit;
12
  }
13
 
14
+ /**
15
+ * Массово проходится по комментарием в базе данных и отключает, какждый индивидуально.
16
+ */
17
+ function wbcr_cmp_enter_permanent_mode()
18
+ {
19
+ global $wpdb;
20
+
21
+ if( !WCM_Plugin::app()->getPopulateOption('disable_comments_permanent') ) {
22
+ return;
23
+ }
24
+
25
+ $types = wbcr_cmp_get_disabled_post_types();
26
+
27
+ if( empty($types) ) {
28
+ return;
29
+ }
30
+
31
+ if( WCM_Plugin::app()->isNetworkActive() ) {
32
+ // NOTE: this can be slow on large networks!
33
+ $blogs = $wpdb->get_col($wpdb->prepare("SELECT blog_id
34
+ FROM $wpdb->blogs
35
+ WHERE site_id = %d
36
+ AND public = '1'
37
+ AND archived = '0'
38
+ AND deleted = '0'", $wpdb->siteid));
39
+
40
+ foreach($blogs as $id) {
41
+ switch_to_blog($id);
42
+ wbcr_close_comments_in_db($types);
43
+ restore_current_blog();
44
+ }
45
+ } else {
46
+ wbcr_close_comments_in_db($types);
47
+ }
48
+ }
49
+
50
+ add_action('wbcr/factory/pages/impressive/after_form_save', 'wbcr_cmp_enter_permanent_mode');
51
+ add_action('wbcr_clearfy_configurated_quick_mode', 'wbcr_cmp_enter_permanent_mode');
52
+
53
+ /**
54
+ * Закрывает комментарии в базе данных
55
+ * @param $types
56
+ */
57
+ function wbcr_close_comments_in_db($types)
58
+ {
59
+ global $wpdb;
60
+ $bits = implode(', ', array_pad(array(), count($types), '%s'));
61
+
62
+ $wpdb->query($wpdb->prepare("UPDATE `$wpdb->posts`
63
+ SET `comment_status` = 'closed', ping_status = 'closed'
64
+ WHERE `post_type`
65
+ IN ( $bits )", $types));
66
+ }
67
+
68
  function wbcr_cmp_group_options($options)
69
  {
70
  $options[] = array(
78
  'title' => __('Select post types', 'comments-plus'),
79
  'tags' => array()
80
  );
81
+ $options[] = array(
82
+ 'name' => 'disable_comments_extra_post_types',
83
+ 'title' => __('Custom post types', 'comments-plus'),
84
+ 'tags' => array()
85
+ );
86
+ $options[] = array(
87
+ 'name' => 'disable_comments_permanent',
88
+ 'title' => __('Use persistent mode', 'comments-plus'),
89
+ 'tags' => array()
90
+ );
91
  $options[] = array(
92
  'name' => 'comment_text_convert_links_pseudo',
93
  'title' => __('Replace external links in comments on the JavaScript code', 'comments-plus'),
157
  return $page_url;
158
  }
159
 
160
+ add_filter('wbcr_factory_pages_410_imppage_rating_widget_url', 'wbcr_cmp_rating_widget_url', 10, 2);
161
 
162
 
163
 
components/comments-plus/admin/pages/comments.php CHANGED
@@ -1,5 +1,4 @@
1
  <?php
2
-
3
  /**
4
  * The page Settings.
5
  *
@@ -11,27 +10,33 @@
11
  exit;
12
  }
13
 
14
- class WbcrCmp_CommentsPage extends Wbcr_FactoryPages407_ImpressiveThemplate {
15
 
16
  /**
17
  * The id of the page in the admin menu.
18
  *
19
  * Mainly used to navigate between pages.
20
- * @see FactoryPages407_AdminPage
21
  *
22
  * @since 1.0.0
23
  * @var string
24
  */
25
  public $id = "comments";
26
  public $page_menu_dashicon = 'dashicons-testimonial';
 
 
 
 
 
27
 
28
  /**
29
- * @param Wbcr_Factory406_Plugin $plugin
30
  */
31
- public function __construct(Wbcr_Factory406_Plugin $plugin)
32
  {
33
  $this->menu_title = __('Disable comments', 'comments-plus');
34
-
 
35
  if( !defined('LOADING_COMMENTS_PLUS_AS_ADDON') ) {
36
  $this->internal = false;
37
  $this->menu_target = 'options-general.php';
@@ -43,36 +48,16 @@
43
 
44
  public function getMenuTitle()
45
  {
46
- return defined('LOADING_COMMENTS_PLUS_AS_ADDON')
47
- ? __('Comments', 'comments-plus')
48
- : __('General', 'comments-plus');
49
  }
50
 
51
- /**
52
- * Requests assets (js and css) for the page.
53
- *
54
- * @see Wbcr_FactoryPages407_AdminPage
55
- *
56
- * @since 1.0.0
57
- * @return void
58
- */
59
- public function assets($scripts, $styles)
60
- {
61
- parent::assets($scripts, $styles);
62
-
63
- // Add Clearfy styles for HMWP pages
64
- if( defined('WBCR_CLEARFY_PLUGIN_ACTIVE') ) {
65
- $this->styles->add(WCL_PLUGIN_URL . '/admin/assets/css/general.css');
66
- }
67
- }
68
-
69
  /**
70
  * Permalinks options.
71
  *
72
  * @since 1.0.0
73
  * @return mixed[]
74
  */
75
- public function getOptions()
76
  {
77
  $options = array();
78
 
@@ -80,8 +65,20 @@
80
  'type' => 'html',
81
  'html' => '<div class="wbcr-factory-page-group-header"><strong>' . __('Global disabling of comments', 'comments-plus') . '</strong><p>' . __('What is the difference between these and native WordPress functions? WordPress disables comments only for new posts! Using the functions below, you can disable comments globally, even for old posts, and you can choose which post types comments to disable. The plugin also disables the comment functionality itself, which creates a certain load on the site.', 'comments-plus') . '</p></div>'
82
  );
83
-
84
- $types = get_post_types(array('public' => true), 'objects');
 
 
 
 
 
 
 
 
 
 
 
 
85
  $post_types = array();
86
  foreach($types as $type_name => $type) {
87
  $post_types[] = array($type_name, $type->label);
@@ -110,14 +107,15 @@
110
  'default' => 'enable_comments',
111
  'events' => array(
112
  'disable_certain_post_types_comments' => array(
113
- 'show' => '.factory-control-disable_comments_for_post_types, #wbcr-clearfy-comments-base-options'
114
  ),
115
  'enable_comments' => array(
116
  'show' => '#wbcr-clearfy-comments-base-options',
117
- 'hide' => '.factory-control-disable_comments_for_post_types'
118
  ),
119
  'disable_comments' => array(
120
- 'hide' => '.factory-control-disable_comments_for_post_types, #wbcr-clearfy-comments-base-options'
 
121
  )
122
  )
123
  );
@@ -133,6 +131,27 @@
133
  'default' => 'post,page,attachment'
134
  );
135
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
136
  $options[] = array(
137
  'type' => 'div',
138
  'id' => 'wbcr-clearfy-comments-base-options',
@@ -167,15 +186,6 @@
167
  'layout' => array('hint-type' => 'icon'),
168
  'hint' => __('Up to 90 percent of comments in the blog can be left for the sake of an external link. Even nofollow from page weight loss here does not help.', 'comments-plus') . '<br><br><b>Clearfy: </b>' . __('Replaces the links of the authors of comments on the JavaScript code, it is impossible to distinguish it from usual links.', 'comments-plus') . '<br>--<br><i>' . __('In some Wordpress topics this may not work.', 'comments-plus') . '</i>',
169
  'default' => false
170
- ),
171
- array(
172
- 'type' => 'checkbox',
173
- 'way' => 'buttons',
174
- 'name' => 'remove_x_pingback',
175
- 'title' => __('Disable XML-RPC', 'clearfy'),
176
- 'layout' => array('hint-type' => 'icon'),
177
- 'hint' => __('A pingback is basically an automated comment that gets created when another blog links to you. A self-pingback is created when you link to an article within your own blog. Pingbacks are essentially nothing more than spam and simply waste resources.', 'comments-plus') . '<br><b>Clearfy: </b>' . __('Removes the server responses a reference to the xmlrpc file.', 'clearfy'),
178
- 'default' => false
179
  )
180
  )
181
  );
@@ -190,4 +200,4 @@
190
 
191
  return apply_filters('wbcr_cmp_comments_form_options', $formOptions);
192
  }
193
- }
1
  <?php
 
2
  /**
3
  * The page Settings.
4
  *
10
  exit;
11
  }
12
 
13
+ class WbcrCmp_CommentsPage extends Wbcr_FactoryClearfy206_PageBase {
14
 
15
  /**
16
  * The id of the page in the admin menu.
17
  *
18
  * Mainly used to navigate between pages.
19
+ * @see FactoryPages410_AdminPage
20
  *
21
  * @since 1.0.0
22
  * @var string
23
  */
24
  public $id = "comments";
25
  public $page_menu_dashicon = 'dashicons-testimonial';
26
+ /**
27
+ * Доступена для мультисайтов
28
+ * @var bool
29
+ */
30
+ public $available_for_multisite = true;
31
 
32
  /**
33
+ * @param Wbcr_Factory409_Plugin $plugin
34
  */
35
+ public function __construct(Wbcr_Factory409_Plugin $plugin)
36
  {
37
  $this->menu_title = __('Disable comments', 'comments-plus');
38
+ $this->page_menu_short_description = __('Manage site comments', 'comments-plus');
39
+
40
  if( !defined('LOADING_COMMENTS_PLUS_AS_ADDON') ) {
41
  $this->internal = false;
42
  $this->menu_target = 'options-general.php';
48
 
49
  public function getMenuTitle()
50
  {
51
+ return defined('LOADING_COMMENTS_PLUS_AS_ADDON') ? __('Comments', 'comments-plus') : __('General', 'comments-plus');
 
 
52
  }
53
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
54
  /**
55
  * Permalinks options.
56
  *
57
  * @since 1.0.0
58
  * @return mixed[]
59
  */
60
+ public function getPageOptions()
61
  {
62
  $options = array();
63
 
65
  'type' => 'html',
66
  'html' => '<div class="wbcr-factory-page-group-header"><strong>' . __('Global disabling of comments', 'comments-plus') . '</strong><p>' . __('What is the difference between these and native WordPress functions? WordPress disables comments only for new posts! Using the functions below, you can disable comments globally, even for old posts, and you can choose which post types comments to disable. The plugin also disables the comment functionality itself, which creates a certain load on the site.', 'comments-plus') . '</p></div>'
67
  );
68
+
69
+ $args = array('public' => true);
70
+
71
+ if( $this->plugin->isNetworkActive() ) {
72
+ $args['_builtin'] = true;
73
+ }
74
+
75
+ $types = get_post_types($args, 'objects');
76
+
77
+ /*foreach( array_keys( $types ) as $type ) {
78
+ if( ! in_array( $type, $this->modified_types ) && ! post_type_supports( $type, 'comments' ) ) // the type doesn't support comments anyway
79
+ unset( $types[$type] );
80
+ }*/
81
+
82
  $post_types = array();
83
  foreach($types as $type_name => $type) {
84
  $post_types[] = array($type_name, $type->label);
107
  'default' => 'enable_comments',
108
  'events' => array(
109
  'disable_certain_post_types_comments' => array(
110
+ 'show' => '.factory-control-disable_comments_for_post_types, #wbcr-clearfy-comments-base-options,.factory-control-disable_comments_permanent,.factory-control-disable_comments_extra_post_types'
111
  ),
112
  'enable_comments' => array(
113
  'show' => '#wbcr-clearfy-comments-base-options',
114
+ 'hide' => '.factory-control-disable_comments_for_post_types,.factory-control-disable_comments_permanent,.factory-control-disable_comments_extra_post_types'
115
  ),
116
  'disable_comments' => array(
117
+ 'show' => '.factory-control-disable_comments_permanent',
118
+ 'hide' => '.factory-control-disable_comments_for_post_types, #wbcr-clearfy-comments-base-options,.factory-control-disable_comments_extra_post_types'
119
  )
120
  )
121
  );
131
  'default' => 'post,page,attachment'
132
  );
133
 
134
+ if( $this->plugin->isNetworkActive() ) {
135
+ $options[] = array(
136
+ 'type' => 'textbox',
137
+ 'name' => 'disable_comments_extra_post_types',
138
+ 'title' => __('Custom post types', 'comments-plus'),
139
+ 'data' => $post_types,
140
+ 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
141
+ 'hint' => __('Only the built-in post types appear above. If you want to disable comments on other custom post types on the entire network, you can supply a comma-separated list of post types below (use the slug that identifies the post type).', 'comments-plus'),
142
+ 'default' => ''
143
+ );
144
+ }
145
+ $options[] = array(
146
+ 'type' => 'checkbox',
147
+ 'way' => 'buttons',
148
+ 'name' => 'disable_comments_permanent',
149
+ 'title' => __('Use persistent mode', 'comments-plus'),
150
+ 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
151
+ 'hint' => __('This will make persistent changes to your database &mdash; comments will remain closed even if you later disable the plugin! You should not use it if you only want to disable comments temporarily.', 'comments-plus'),
152
+ 'default' => false
153
+ );
154
+
155
  $options[] = array(
156
  'type' => 'div',
157
  'id' => 'wbcr-clearfy-comments-base-options',
186
  'layout' => array('hint-type' => 'icon'),
187
  'hint' => __('Up to 90 percent of comments in the blog can be left for the sake of an external link. Even nofollow from page weight loss here does not help.', 'comments-plus') . '<br><br><b>Clearfy: </b>' . __('Replaces the links of the authors of comments on the JavaScript code, it is impossible to distinguish it from usual links.', 'comments-plus') . '<br>--<br><i>' . __('In some Wordpress topics this may not work.', 'comments-plus') . '</i>',
188
  'default' => false
 
 
 
 
 
 
 
 
 
189
  )
190
  )
191
  );
200
 
201
  return apply_filters('wbcr_cmp_comments_form_options', $formOptions);
202
  }
203
+ }
components/comments-plus/admin/pages/delete-comments.php CHANGED
@@ -12,13 +12,13 @@
12
  }
13
 
14
 
15
- class WbcrCmp_DeleteCommentsPage extends Wbcr_FactoryPages407_ImpressiveThemplate {
16
 
17
  /**
18
  * The id of the page in the admin menu.
19
  *
20
  * Mainly used to navigate between pages.
21
- * @see FactoryPages407_AdminPage
22
  *
23
  * @since 1.0.0
24
  * @var string
@@ -27,41 +27,28 @@
27
  public $type = "page";
28
  public $page_parent_page = "comments";
29
  public $page_menu_dashicon = 'dashicons-testimonial';
30
-
31
  /**
32
- * @param Wbcr_Factory406_Plugin $plugin
 
33
  */
34
- public function __construct(Wbcr_Factory406_Plugin $plugin)
35
- {
36
- $this->menu_title = __('Comments cleaner', 'comments-plus');
37
-
38
- parent::__construct($plugin);
39
- }
40
 
41
  /**
42
- * Requests assets (js and css) for the page.
43
- *
44
- * @see Wbcr_FactoryPages407_AdminPage
45
- *
46
- * @since 1.0.0
47
- * @return void
48
  */
49
- public function assets($scripts, $styles)
50
  {
51
- parent::assets($scripts, $styles);
52
 
53
- // Add Clearfy styles for HMWP pages
54
- if( defined('WBCR_CLEARFY_PLUGIN_ACTIVE') ) {
55
- $this->styles->add(WCL_PLUGIN_URL . '/admin/assets/css/general.css');
56
- }
57
  }
58
 
59
  /**
60
  * We register notifications for some actions
61
  *
62
- * @see libs\factory\pages\themplates\FactoryPages407_ImpressiveThemplate
63
  * @param $notices
64
- * @param Wbcr_Factory406_Plugin $plugin
65
  * @return array
66
  */
67
  public function getActionNotices($notices)
@@ -86,16 +73,69 @@
86
 
87
  return $notices;
88
  }
 
 
 
 
 
 
 
 
89
 
90
- /**
91
- * Prints the content of the page
92
- *
93
- * @see libs\factory\pages\themplates\FactoryPages407_ImpressiveThemplate
94
- */
95
- public function showPageContent()
96
  {
97
- global $wpdb;
 
 
 
 
 
 
98
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
99
  $stat_data = $wpdb->get_results("SELECT count(*) as total_comments,
100
  SUM(comment_type='order_note') as order_notes_count,
101
  SUM(comment_approved='spam') as spamcount,
@@ -124,6 +164,23 @@
124
  $post_types[$type_name] = array('label' => $type->label, 'comments_count' => $comments_count);
125
  }
126
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
127
  ?>
128
  <script>
129
  /**
@@ -243,71 +300,124 @@
243
  <?php
244
  }
245
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
246
  /**
247
  * This action deletes all comments from the database without restoring.
248
  */
249
  public function deleteAllCommentsAction()
250
  {
251
- global $wpdb;
252
  check_admin_referer($this->getResultId() . '_delete_all_comments');
253
 
254
  if( isset($_POST['wbcr_cmp_delete_all']) ) {
255
  $post_types = $this->request->post('wbcr_cmp_post_type', array(), true);
256
- $delete_order_notes = $this->request->post('wbcr_cmp_delete_order_notes', false, 'intval');
257
 
258
- if( empty($post_types) || in_array('all', $post_types) ) {
259
- if( $wpdb->query("TRUNCATE $wpdb->commentmeta") != false ) {
260
- $delete_all_sql = "TRUNCATE $wpdb->comments";
261
 
262
- if( class_exists('WooCommerce') ) {
263
- if( !$delete_order_notes ) {
264
- $delete_all_sql = "DELETE FROM $wpdb->comments WHERE comment_type != 'order_note'";
265
- }
266
- }
267
- if( $wpdb->query($delete_all_sql) != false ) {
268
- $wpdb->query("UPDATE $wpdb->posts SET comment_count = 0 WHERE post_author != 0");
269
- $wpdb->query("OPTIMIZE TABLE $wpdb->commentmeta");
270
- $wpdb->query("OPTIMIZE TABLE $wpdb->comments");
271
-
272
- $this->redirectToAction('index', array(
273
- 'wbcr_cmp_clear_comments' => '1'
274
- ));
275
- } else {
276
- $this->redirectToAction('index', array(
277
- 'wbcr_cmp_clear_comments_error' => '1',
278
- 'wbcr_cmp_code' => 'interal_error',
279
- ));
280
  }
281
  } else {
282
- $this->redirectToAction('index', array(
283
- 'wbcr_cmp_clear_comments_error' => '1',
284
- 'wbcr_cmp_code' => 'interal_error',
285
- ));
286
  }
287
  } else {
288
-
289
- // Loop through post_types and remove comments/meta and set posts comment_count to 0
290
- foreach($post_types as $delete_post_type) {
291
- $wpdb->query("DELETE cmeta FROM $wpdb->commentmeta cmeta INNER JOIN $wpdb->comments comments ON cmeta.comment_id=comments.comment_ID INNER JOIN $wpdb->posts posts ON comments.comment_post_ID=posts.ID WHERE posts.post_type = '$delete_post_type'");
292
-
293
- $delete_certain_sql = "DELETE comments FROM $wpdb->comments comments INNER JOIN $wpdb->posts posts ON comments.comment_post_ID=posts.ID WHERE posts.post_type = '$delete_post_type'";
294
-
295
- if( class_exists('WooCommerce') ) {
296
- if( !$delete_order_notes ) {
297
- $delete_certain_sql .= " and comment_type != 'order_note'";
298
- }
299
  }
300
-
301
- $wpdb->query($delete_certain_sql);
302
- $wpdb->query("UPDATE $wpdb->posts SET comment_count = 0 WHERE post_author != 0 AND post_type = '$delete_post_type'");
303
  }
304
-
305
- $wpdb->query("OPTIMIZE TABLE $wpdb->commentmeta");
306
- $wpdb->query("OPTIMIZE TABLE $wpdb->comments");
307
-
308
  $this->redirectToAction('index', array(
309
  'wbcr_cmp_clear_comments' => '1'
310
  ));
 
 
 
 
 
311
  }
312
  }
313
 
@@ -320,29 +430,46 @@
320
  * @param int|string $type
321
  */
322
  public function deleteComments($type = 0)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
323
  {
324
  global $wpdb;
325
 
326
- if( in_array($type, array('spam', 'trash', 0)) ) {
327
- $wpdb->query("DELETE cmeta
328
- FROM $wpdb->commentmeta cmeta
329
- INNER JOIN $wpdb->comments comments ON cmeta.comment_id=comments.comment_ID
330
- WHERE comment_approved='{$type}'");
331
 
332
- if( $wpdb->query("DELETE FROM $wpdb->comments WHERE comment_approved='{$type}'") ) {
333
- $wpdb->query("OPTIMIZE TABLE $wpdb->comments");
334
- $wpdb->query("OPTIMIZE TABLE $wpdb->commentmeta");
335
 
336
- $this->redirectToAction('index', array(
337
- 'wbcr_cmp_clear_comments' => '1'
338
- ));
339
- } else {
340
- $this->redirectToAction('index', array(
341
- 'wbcr_cmp_clear_comments_error' => '1',
342
- 'wbcr_cmp_code' => 'interal_error',
343
- ));
344
- }
345
  }
 
 
346
  }
347
 
348
  /**
@@ -374,4 +501,4 @@
374
 
375
  $this->deleteComments('trash');
376
  }
377
- }
12
  }
13
 
14
 
15
+ class WbcrCmp_DeleteCommentsPage extends Wbcr_FactoryClearfy206_PageBase {
16
 
17
  /**
18
  * The id of the page in the admin menu.
19
  *
20
  * Mainly used to navigate between pages.
21
+ * @see FactoryPages410_AdminPage
22
  *
23
  * @since 1.0.0
24
  * @var string
27
  public $type = "page";
28
  public $page_parent_page = "comments";
29
  public $page_menu_dashicon = 'dashicons-testimonial';
 
30
  /**
31
+ * Доступена для мультисайтов
32
+ * @var bool
33
  */
34
+ public $available_for_multisite = true;
 
 
 
 
 
35
 
36
  /**
37
+ * @param Wbcr_Factory409_Plugin $plugin
 
 
 
 
 
38
  */
39
+ public function __construct(Wbcr_Factory409_Plugin $plugin)
40
  {
41
+ $this->menu_title = __('Comments cleaner', 'comments-plus');
42
 
43
+ parent::__construct($plugin);
 
 
 
44
  }
45
 
46
  /**
47
  * We register notifications for some actions
48
  *
49
+ * @see libs\factory\pages\themplates\FactoryPages410_ImpressiveThemplate
50
  * @param $notices
51
+ * @param Wbcr_Factory409_Plugin $plugin
52
  * @return array
53
  */
54
  public function getActionNotices($notices)
73
 
74
  return $notices;
75
  }
76
+
77
+ public function getStats()
78
+ {
79
+ if( WCM_Plugin::app()->isNetworkActive() ) {
80
+ $stats = $this->getMultisiteStats();
81
+ } else {
82
+ $stats = $this->getSiteStats();
83
+ }
84
 
85
+ return $stats;
86
+ }
87
+
88
+ public function getMultisiteStats()
 
 
89
  {
90
+ $stats = array();
91
+ foreach(WCM_Plugin::app()->getActiveSites() as $site) {
92
+ switch_to_blog($site->blog_id);
93
+ $site_stats = $this->getSiteStats();
94
+ $stats = $this->mergeStats($stats, $site_stats);
95
+ restore_current_blog();
96
+ }
97
 
98
+ return $stats;
99
+ }
100
+
101
+ public function mergeStats($current_stats, $new_stats)
102
+ {
103
+ if( !isset($current_stats['stat_data']) ) {
104
+ $current_stats['stat_data'] = $new_stats['stat_data'];
105
+ } else {
106
+ $comment_fields = array('total_comments', 'order_notes_count', 'spamcount', 'unpcount', 'trashcount');
107
+ foreach($comment_fields as $comment_field) {
108
+ if( is_null($current_stats['stat_data'][0]->$comment_field) ) {
109
+ $current_stats['stat_data'][0]->$comment_field = 0;
110
+ }
111
+ if( is_null($new_stats['stat_data'][0]->$comment_field) ) {
112
+ $new_stats['stat_data'][0]->$comment_field = 0;
113
+ }
114
+ if( $new_stats['stat_data'][0]->$comment_field ) {
115
+ $current_stats['stat_data'][0]->$comment_field = $current_stats['stat_data'][0]->$comment_field + $new_stats['stat_data'][0]->$comment_field;
116
+ }
117
+ }
118
+ }
119
+
120
+ if( !isset($current_stats['post_types']) ) {
121
+ $current_stats['post_types'] = $new_stats['post_types'];
122
+ } else {
123
+ foreach($new_stats['post_types'] as $post_type_key => $post_type) {
124
+ if( array_key_exists($post_type_key, $current_stats['post_types']) ) {
125
+ $current_stats['post_types'][$post_type_key]['comments_count'] += $new_stats['post_types'][$post_type_key]['comments_count'];
126
+ } else {
127
+ $current_stats['post_types'][$post_type_key] = $new_stats['post_types'][$post_type_key];
128
+ }
129
+ }
130
+ }
131
+
132
+ return $current_stats;
133
+ }
134
+
135
+
136
+ public function getSiteStats()
137
+ {
138
+ global $wpdb;
139
  $stat_data = $wpdb->get_results("SELECT count(*) as total_comments,
140
  SUM(comment_type='order_note') as order_notes_count,
141
  SUM(comment_approved='spam') as spamcount,
164
  $post_types[$type_name] = array('label' => $type->label, 'comments_count' => $comments_count);
165
  }
166
 
167
+ return array(
168
+ 'stat_data' => $stat_data,
169
+ 'post_types' => $post_types
170
+ );
171
+ }
172
+
173
+ /**
174
+ * Prints the content of the page
175
+ *
176
+ * @see libs\factory\pages\themplates\FactoryPages410_ImpressiveThemplate
177
+ */
178
+ public function showPageContent()
179
+ {
180
+ $stats = $this->getStats();
181
+ $stat_data = $stats['stat_data'];
182
+ $post_types = $stats['post_types'];
183
+
184
  ?>
185
  <script>
186
  /**
300
  <?php
301
  }
302
 
303
+ /**
304
+ * @return bool
305
+ */
306
+ protected function deleteAllComments()
307
+ {
308
+ global $wpdb;
309
+ $delete_order_notes = $this->request->post('wbcr_cmp_delete_order_notes', false, 'intval');
310
+
311
+ if( $wpdb->query("TRUNCATE $wpdb->commentmeta") != false ) {
312
+ $delete_all_sql = "TRUNCATE $wpdb->comments";
313
+ if( class_exists('WooCommerce') ) {
314
+ if( !$delete_order_notes ) {
315
+ $delete_all_sql = "DELETE FROM $wpdb->comments WHERE comment_type != 'order_note'";
316
+ }
317
+ }
318
+ if( $wpdb->query($delete_all_sql) != false ) {
319
+ $wpdb->query("UPDATE $wpdb->posts SET comment_count = 0 WHERE post_author != 0");
320
+ $wpdb->query("OPTIMIZE TABLE $wpdb->commentmeta");
321
+ $wpdb->query("OPTIMIZE TABLE $wpdb->comments");
322
+
323
+ return true;
324
+ }
325
+ }
326
+
327
+ return false;
328
+ }
329
+
330
+ /**
331
+ * @param string $post_type
332
+ * @return bool
333
+ */
334
+ protected function deleteCommentsByPostType($post_type = 'post')
335
+ {
336
+ global $wpdb;
337
+
338
+ $delete_order_notes = $this->request->post('wbcr_cmp_delete_order_notes', false, 'intval');
339
+
340
+ $wpdb->query("DELETE cmeta FROM $wpdb->commentmeta cmeta INNER JOIN $wpdb->comments comments ON cmeta.comment_id=comments.comment_ID INNER JOIN $wpdb->posts posts ON comments.comment_post_ID=posts.ID WHERE posts.post_type = '%s'");
341
+
342
+ $delete_certain_sql = "DELETE comments FROM $wpdb->comments comments INNER JOIN $wpdb->posts posts ON comments.comment_post_ID=posts.ID WHERE posts.post_type = '%s'";
343
+
344
+ if( class_exists('WooCommerce') ) {
345
+ if( !$delete_order_notes ) {
346
+ $delete_certain_sql .= " and comment_type != 'order_note'";
347
+ }
348
+ }
349
+
350
+ $wpdb->query($wpdb->prepare($delete_certain_sql, $post_type));
351
+ $wpdb->query($wpdb->prepare("UPDATE $wpdb->posts SET comment_count = 0 WHERE post_author != 0 AND post_type = '%s'", $post_type));
352
+
353
+ return true;
354
+ }
355
+
356
+ /**
357
+ * @param $post_types
358
+ * @return bool
359
+ */
360
+ protected function deleteCommentsByPostTypes($post_types)
361
+ {
362
+ global $wpdb;
363
+
364
+ if( empty($post_types) || !is_array($post_types) ) {
365
+ return false;
366
+ }
367
+
368
+ foreach($post_types as $post_type) {
369
+ $this->deleteCommentsByPostType($post_type);
370
+ }
371
+
372
+ $wpdb->query("OPTIMIZE TABLE $wpdb->commentmeta");
373
+ $wpdb->query("OPTIMIZE TABLE $wpdb->comments");
374
+
375
+ return true;
376
+ }
377
+
378
  /**
379
  * This action deletes all comments from the database without restoring.
380
  */
381
  public function deleteAllCommentsAction()
382
  {
 
383
  check_admin_referer($this->getResultId() . '_delete_all_comments');
384
 
385
  if( isset($_POST['wbcr_cmp_delete_all']) ) {
386
  $post_types = $this->request->post('wbcr_cmp_post_type', array(), true);
 
387
 
388
+ $result = false;
 
 
389
 
390
+ if( empty($post_types) || in_array('all', $post_types) ) {
391
+ if( WCM_Plugin::app()->isNetworkActive() ) {
392
+ foreach(WCM_Plugin::app()->getActiveSites() as $site) {
393
+ switch_to_blog($site->blog_id);
394
+ $result = $this->deleteAllComments();
395
+ restore_current_blog();
 
 
 
 
 
 
 
 
 
 
 
 
396
  }
397
  } else {
398
+ $result = $this->deleteAllComments();
 
 
 
399
  }
400
  } else {
401
+ if( WCM_Plugin::app()->isNetworkActive() ) {
402
+ foreach(WCM_Plugin::app()->getActiveSites() as $site) {
403
+ switch_to_blog($site->blog_id);
404
+ $result = $this->deleteCommentsByPostTypes($post_types);
405
+ restore_current_blog();
 
 
 
 
 
 
406
  }
407
+ } else {
408
+ $result = $this->deleteCommentsByPostTypes($post_types);
 
409
  }
410
+ }
411
+
412
+ if( $result ) {
 
413
  $this->redirectToAction('index', array(
414
  'wbcr_cmp_clear_comments' => '1'
415
  ));
416
+ } else {
417
+ $this->redirectToAction('index', array(
418
+ 'wbcr_cmp_clear_comments_error' => '1',
419
+ 'wbcr_cmp_code' => 'interal_error',
420
+ ));
421
  }
422
  }
423
 
430
  * @param int|string $type
431
  */
432
  public function deleteComments($type = 0)
433
+ {
434
+ if( in_array($type, array('spam', 'trash', 0)) ) {
435
+
436
+ if( WCM_Plugin::app()->isNetworkActive() ) {
437
+ foreach(WCM_Plugin::app()->getActiveSites() as $site) {
438
+ switch_to_blog($site->blog_id);
439
+ $this->deleteCommentsByType($type);
440
+ restore_current_blog();
441
+ }
442
+ } else {
443
+ $this->deleteCommentsByType($type);
444
+ }
445
+
446
+ $this->redirectToAction('index', array(
447
+ 'wbcr_cmp_clear_comments' => '1'
448
+ ));
449
+ }
450
+ }
451
+
452
+ /**
453
+ * @param int $type
454
+ * @return false|int
455
+ */
456
+ private function deleteCommentsByType($type = 0)
457
  {
458
  global $wpdb;
459
 
460
+ $wpdb->query("DELETE cmeta
461
+ FROM $wpdb->commentmeta cmeta
462
+ INNER JOIN {$wpdb->comments} comments ON cmeta.comment_id=comments.comment_ID
463
+ WHERE comment_approved='{$type}'");
 
464
 
465
+ $res = $wpdb->query("DELETE FROM {$wpdb->comments} WHERE comment_approved='{$type}'");
 
 
466
 
467
+ if( $res ) {
468
+ $wpdb->query("OPTIMIZE TABLE {$wpdb->comments}");
469
+ $wpdb->query("OPTIMIZE TABLE {$wpdb->commentmeta}");
 
 
 
 
 
 
470
  }
471
+
472
+ return $res;
473
  }
474
 
475
  /**
501
 
502
  $this->deleteComments('trash');
503
  }
504
+ }
components/comments-plus/admin/pages/more-features.php CHANGED
@@ -11,6 +11,6 @@
11
  exit;
12
  }
13
 
14
- class WbcrCmp_MoreFeaturesPage extends Wbcr_FactoryClearfy203_MoreFeaturesPage {
15
 
16
  }
11
  exit;
12
  }
13
 
14
+ class WbcrCmp_MoreFeaturesPage extends Wbcr_FactoryClearfy206_MoreFeaturesPage {
15
 
16
  }
components/comments-plus/comments-plus.php CHANGED
@@ -8,6 +8,7 @@
8
  * Text Domain: comments-plus
9
  * Domain Path: /languages/
10
  * Author URI: https://clearfy.pro
 
11
  */
12
 
13
  // Exit if accessed directly
@@ -15,46 +16,58 @@
15
  exit;
16
  }
17
 
18
- if( defined('WCM_PLUGIN_ACTIVE') || (defined('WCL_PLUGIN_ACTIVE') && !defined('LOADING_COMMENTS_PLUS_AS_ADDON')) ) {
19
- function wbcr_cmp_admin_notice_error()
20
- {
21
- ?>
22
- <div class="notice notice-error">
23
- <p><?php _e('We found that you have the "Clearfy - disable unused features" plugin installed, this plugin already has disable comments functions, so you can deactivate plugin "Disable comments"!'); ?></p>
24
- </div>
25
- <?php
26
- }
27
 
28
- add_action('admin_notices', 'wbcr_cmp_admin_notice_error');
 
 
29
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
30
  return;
31
- } else {
32
-
33
- define('WCM_PLUGIN_ACTIVE', true);
34
-
35
- define('WCM_PLUGIN_DIR', dirname(__FILE__));
36
- define('WCM_PLUGIN_BASE', plugin_basename(__FILE__));
37
- define('WCM_PLUGIN_URL', plugins_url(null, __FILE__));
38
-
39
-
40
-
41
- if( !defined('LOADING_COMMENTS_PLUS_AS_ADDON') ) {
42
- require_once(WCM_PLUGIN_DIR . '/libs/factory/core/boot.php');
43
- }
44
-
45
- require_once(WCM_PLUGIN_DIR . '/includes/class.plugin.php');
46
-
47
- if( !defined('LOADING_COMMENTS_PLUS_AS_ADDON') ) {
48
- //todo: обновить опции в старом плагине на новый префикс
49
- new WCM_Plugin(__FILE__, array(
50
- 'prefix' => 'wbcr_comments_plus_', // wbcr_cmp
51
- 'plugin_name' => 'wbcr_comments_plus',
52
- 'plugin_title' => __('Webcraftic Disable comments', 'comments-plus'),
53
- 'plugin_version' => '1.0.9',
54
- 'required_php_version' => '5.2',
55
- 'required_wp_version' => '4.2',
56
- 'plugin_build' => 'free',
57
- //'updates' => WCM_PLUGIN_DIR . '/updates/'
58
- ));
59
- }
60
- }
8
  * Text Domain: comments-plus
9
  * Domain Path: /languages/
10
  * Author URI: https://clearfy.pro
11
+ * Framework Version: FACTORY_409_VERSION
12
  */
13
 
14
  // Exit if accessed directly
16
  exit;
17
  }
18
 
19
+ define('WCM_PLUGIN_VERSION', '1.0.9');
 
 
 
 
 
 
 
 
20
 
21
+ define('WCM_PLUGIN_DIR', dirname(__FILE__));
22
+ define('WCM_PLUGIN_BASE', plugin_basename(__FILE__));
23
+ define('WCM_PLUGIN_URL', plugins_url(null, __FILE__));
24
 
25
+
26
+
27
+ if( !defined('LOADING_COMMENTS_PLUS_AS_ADDON') ) {
28
+ require_once(WCM_PLUGIN_DIR . '/libs/factory/core/includes/check-compatibility.php');
29
+ require_once(WCM_PLUGIN_DIR . '/libs/factory/clearfy/includes/check-clearfy-compatibility.php');
30
+ }
31
+
32
+ $plugin_info = array(
33
+ 'prefix' => 'wbcr_comments_plus_', // wbcr_cmp
34
+ 'plugin_name' => 'wbcr_comments_plus',
35
+ 'plugin_title' => __('Webcraftic Disable comments', 'comments-plus'),
36
+ 'plugin_version' => WCM_PLUGIN_VERSION,
37
+ 'plugin_build' => 'free',
38
+ //'updates' => WCM_PLUGIN_DIR . '/updates/'
39
+ );
40
+
41
+ /**
42
+ * Проверяет совместимость с Wordpress, php и другими плагинами.
43
+ */
44
+ $compatibility = new Wbcr_FactoryClearfy_Compatibility(array_merge($plugin_info, array(
45
+ 'plugin_already_activate' => defined('WCM_PLUGIN_ACTIVE'),
46
+ 'plugin_as_component' => defined('LOADING_COMMENTS_PLUS_AS_ADDON'),
47
+ 'plugin_dir' => WCM_PLUGIN_DIR,
48
+ 'plugin_base' => WCM_PLUGIN_BASE,
49
+ 'plugin_url' => WCM_PLUGIN_URL,
50
+ 'required_php_version' => '5.3',
51
+ 'required_wp_version' => '4.2.0',
52
+ 'required_clearfy_check_component' => true
53
+ )));
54
+
55
+ /**
56
+ * Если плагин совместим, то он продолжит свою работу, иначе будет остановлен,
57
+ * а пользователь получит предупреждение.
58
+ */
59
+ if( !$compatibility->check() ) {
60
  return;
61
+ }
62
+
63
+ define('WCM_PLUGIN_ACTIVE', true);
64
+
65
+ if( !defined('LOADING_COMMENTS_PLUS_AS_ADDON') ) {
66
+ require_once(WCM_PLUGIN_DIR . '/libs/factory/core/boot.php');
67
+ }
68
+
69
+ require_once(WCM_PLUGIN_DIR . '/includes/class.plugin.php');
70
+
71
+ if( !defined('LOADING_COMMENTS_PLUS_AS_ADDON') ) {
72
+ new WCM_Plugin(__FILE__, $plugin_info);
73
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
components/comments-plus/includes/boot.php ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Admin boot
4
+ * @author Webcraftic <wordpress.webraftic@gmail.com>
5
+ * @copyright Webcraftic 25.05.2017
6
+ * @version 1.0
7
+ */
8
+
9
+ // Exit if accessed directly
10
+ if( !defined('ABSPATH') ) {
11
+ exit;
12
+ }
13
+
14
+ /**
15
+ * Получает список отключенных типов записей
16
+ * @return array|bool|mixed|void
17
+ */
18
+ function wbcr_cmp_get_disabled_post_types()
19
+ {
20
+
21
+ $post_types = WCM_Plugin::app()->getPopulateOption('disable_comments_for_post_types');
22
+
23
+ if( WCM_Plugin::app()->getPopulateOption('disable_comments', 'enable_comments') == 'disable_comments' ) {
24
+
25
+ $args = array('public' => true);
26
+
27
+ if( WCM_Plugin::app()->isNetworkActive() ) {
28
+ $args['_builtin'] = true;
29
+ }
30
+
31
+ $all_post_types = get_post_types($args, 'objects');
32
+
33
+ return array_keys($all_post_types);
34
+ }
35
+
36
+ // Not all extra_post_types might be registered on this particular site
37
+ /*if( $this->networkactive ) {
38
+ foreach( (array) $this->options['extra_post_types'] as $extra ) {
39
+ if( post_type_exists( $extra ) ) {
40
+ $types[] = $extra;
41
+ }
42
+ }
43
+ }*/
44
+
45
+ if( is_array($post_types) ) {
46
+ return $post_types;
47
+ }
48
+
49
+ return explode(',', $post_types);
50
+ }
components/comments-plus/includes/class.plugin.php CHANGED
@@ -19,7 +19,7 @@
19
 
20
  }
21
  } else {
22
- class WCM_PluginFactory extends Wbcr_Factory406_Plugin {
23
 
24
  }
25
  }
@@ -28,7 +28,7 @@
28
  class WCM_Plugin extends WCM_PluginFactory {
29
 
30
  /**
31
- * @var Wbcr_Factory406_Plugin
32
  */
33
  private static $app;
34
 
@@ -36,6 +36,7 @@
36
  * @var bool
37
  */
38
  private $as_addon;
 
39
 
40
  /**
41
  * @param string $plugin_path
@@ -47,11 +48,9 @@
47
  $this->as_addon = isset($data['as_addon']);
48
 
49
  if( $this->as_addon ) {
50
- $plugin_parent = isset($data['plugin_parent'])
51
- ? $data['plugin_parent']
52
- : null;
53
 
54
- if( !($plugin_parent instanceof Wbcr_Factory406_Plugin) ) {
55
  throw new Exception('An invalid instance of the class was passed.');
56
  }
57
 
@@ -64,7 +63,6 @@
64
  parent::__construct($plugin_path, $data);
65
  }
66
 
67
- $this->setTextDomain();
68
  $this->setModules();
69
 
70
  $this->globalScripts();
@@ -72,49 +70,41 @@
72
  if( is_admin() ) {
73
  $this->adminScripts();
74
  }
75
- //add_action('plugins_loaded', array($this, 'pluginsLoaded'));
 
76
  }
77
 
78
  /**
79
- * @return Wbcr_Factory406_Plugin
80
  */
81
  public static function app()
82
  {
83
  return self::$app;
84
  }
85
 
86
- // todo: перенести этот медот в фреймворк
87
- protected function setTextDomain()
88
  {
89
- // Localization plugin
90
- //load_plugin_textdomain('comments-plus', false, dirname(WCL_PLUGIN_BASE) . '/languages/');
91
-
92
- $domain = 'comments-plus';
93
- $locale = apply_filters('plugin_locale', is_admin()
94
- ? get_user_locale()
95
- : get_locale(), $domain);
96
- $mofile = $domain . '-' . $locale . '.mo';
97
 
98
- if( !load_textdomain($domain, WCM_PLUGIN_DIR . '/languages/' . $mofile) ) {
99
- load_muplugin_textdomain($domain);
100
  }
101
  }
102
-
103
  protected function setModules()
104
  {
105
  if( !$this->as_addon ) {
106
  self::app()->load(array(
107
- array('libs/factory/bootstrap', 'factory_bootstrap_406', 'admin'),
108
- array('libs/factory/forms', 'factory_forms_407', 'admin'),
109
- array('libs/factory/pages', 'factory_pages_407', 'admin'),
110
- array('libs/factory/clearfy', 'factory_clearfy_203', 'all')
111
  ));
112
  }
113
  }
114
-
115
  private function registerPages()
116
  {
117
-
118
  $admin_path = WCM_PLUGIN_DIR . '/admin/pages';
119
 
120
  self::app()->registerPage('WbcrCmp_CommentsPage', $admin_path . '/comments.php');
@@ -128,17 +118,13 @@
128
  private function adminScripts()
129
  {
130
  require(WCM_PLUGIN_DIR . '/admin/boot.php');
131
- $this->registerPages();
132
  }
133
 
134
  private function globalScripts()
135
  {
 
136
  require(WCM_PLUGIN_DIR . '/includes/classes/class.configurate-comments.php');
137
  new WbcrCmp_ConfigComments(self::$app);
138
  }
139
- /*public function pluginsLoaded()
140
- {
141
-
142
- }*/
143
  }
144
- }
19
 
20
  }
21
  } else {
22
+ class WCM_PluginFactory extends Wbcr_Factory409_Plugin {
23
 
24
  }
25
  }
28
  class WCM_Plugin extends WCM_PluginFactory {
29
 
30
  /**
31
+ * @var Wbcr_Factory409_Plugin
32
  */
33
  private static $app;
34
 
36
  * @var bool
37
  */
38
  private $as_addon;
39
+
40
 
41
  /**
42
  * @param string $plugin_path
48
  $this->as_addon = isset($data['as_addon']);
49
 
50
  if( $this->as_addon ) {
51
+ $plugin_parent = isset($data['plugin_parent']) ? $data['plugin_parent'] : null;
 
 
52
 
53
+ if( !($plugin_parent instanceof Wbcr_Factory409_Plugin) ) {
54
  throw new Exception('An invalid instance of the class was passed.');
55
  }
56
 
63
  parent::__construct($plugin_path, $data);
64
  }
65
 
 
66
  $this->setModules();
67
 
68
  $this->globalScripts();
70
  if( is_admin() ) {
71
  $this->adminScripts();
72
  }
73
+
74
+ add_action('plugins_loaded', array($this, 'pluginsLoaded'));
75
  }
76
 
77
  /**
78
+ * @return Wbcr_Factory409_Plugin
79
  */
80
  public static function app()
81
  {
82
  return self::$app;
83
  }
84
 
85
+ public function pluginsLoaded()
 
86
  {
87
+ self::app()->setTextDomain('comments-plus', WCM_PLUGIN_DIR);
 
 
 
 
 
 
 
88
 
89
+ if( is_admin() ) {
90
+ $this->registerPages();
91
  }
92
  }
93
+
94
  protected function setModules()
95
  {
96
  if( !$this->as_addon ) {
97
  self::app()->load(array(
98
+ array('libs/factory/bootstrap', 'factory_bootstrap_409', 'admin'),
99
+ array('libs/factory/forms', 'factory_forms_410', 'admin'),
100
+ array('libs/factory/pages', 'factory_pages_410', 'admin'),
101
+ array('libs/factory/clearfy', 'factory_clearfy_206', 'all')
102
  ));
103
  }
104
  }
105
+
106
  private function registerPages()
107
  {
 
108
  $admin_path = WCM_PLUGIN_DIR . '/admin/pages';
109
 
110
  self::app()->registerPage('WbcrCmp_CommentsPage', $admin_path . '/comments.php');
118
  private function adminScripts()
119
  {
120
  require(WCM_PLUGIN_DIR . '/admin/boot.php');
 
121
  }
122
 
123
  private function globalScripts()
124
  {
125
+ require(WCM_PLUGIN_DIR . '/includes/boot.php');
126
  require(WCM_PLUGIN_DIR . '/includes/classes/class.configurate-comments.php');
127
  new WbcrCmp_ConfigComments(self::$app);
128
  }
 
 
 
 
129
  }
130
+ }
components/comments-plus/includes/classes/class.configurate-comments.php CHANGED
@@ -12,14 +12,14 @@
12
  exit;
13
  }
14
 
15
- class WbcrCmp_ConfigComments extends Wbcr_FactoryClearfy203_Configurate {
16
 
17
  private $modified_types = array();
18
 
19
  /**
20
- * @param Wbcr_Factory406_Plugin $plugin
21
  */
22
- public function __construct(Wbcr_Factory406_Plugin $plugin)
23
  {
24
  parent::__construct($plugin);
25
  $this->plugin = $plugin;
@@ -27,16 +27,6 @@
27
 
28
  public function registerActionsAndFilters()
29
  {
30
- // Removes the server responses a reference to the xmlrpc file.
31
- if( $this->getOption('remove_x_pingback') || $this->isDisabledAllPosts() ) {
32
- add_filter('template_redirect', array($this, 'removeXPingbackHeaders'));
33
- add_filter('wp_headers', array($this, 'removeXPingback'));
34
-
35
- add_action('template_redirect', array($this, 'linkRelBufferStart'), -1);
36
- add_action('get_header', array($this, 'linkRelBufferStart'));
37
- add_action('wp_head', array($this, 'linkRelBufferEnd'), 999);
38
- }
39
-
40
  // These need to happen now
41
  if( $this->isDisabledAllPosts() ) {
42
  add_action('widgets_init', array($this, 'disableRcWidget'));
@@ -47,19 +37,19 @@
47
  add_action('admin_init', array($this, 'filterAdminBar'));
48
  } else {
49
 
50
- if( $this->getOption('comment_text_convert_links_pseudo') || $this->getOption('pseudo_comment_author_link') ) {
51
  add_action('wp_enqueue_scripts', array($this, 'assetsUrlSpanScripts'));
52
  }
53
 
54
- if( $this->getOption('comment_text_convert_links_pseudo') ) {
55
  add_filter('comment_text', array($this, 'commentTextConvertLinksPseudo'));
56
  }
57
 
58
- if( $this->getOption('pseudo_comment_author_link') ) {
59
  add_filter('get_comment_author_link', array($this, 'pseudoCommentAuthorLink'), 100, 3);
60
  }
61
 
62
- if( $this->getOption('remove_url_from_comment_form') ) {
63
  add_filter('comment_form_default_fields', array($this, 'removeUrlFromCommentForm'));
64
  }
65
  }
@@ -69,19 +59,34 @@
69
  add_action('wp_loaded', array($this, 'initWploadedFilters'));
70
  }
71
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
72
  private function isDisabledAllPosts()
73
  {
74
- return $this->getOption('disable_comments', 'enable_comments') == 'disable_comments';
75
  }
76
 
77
  private function isDisabledCertainPostTypes()
78
  {
79
- return $this->getOption('disable_comments', 'enable_comments') == 'disable_certain_post_types_comments';
80
  }
81
 
82
  private function isEnabledComments()
83
  {
84
- return $this->getOption('disable_comments', 'enable_comments') == 'enable_comments';
85
  }
86
 
87
  /*
@@ -89,19 +94,7 @@
89
  */
90
  private function getDisabledPostTypes()
91
  {
92
- $post_types = $this->getOption('disable_comments_for_post_types');
93
-
94
- if( $this->isDisabledAllPosts() ) {
95
- $all_post_types = get_post_types(array('public' => true), 'objects');
96
-
97
- return array_keys($all_post_types);
98
- }
99
-
100
- if( is_array($post_types) ) {
101
- return $post_types;
102
- }
103
-
104
- return explode(',', $post_types);
105
  }
106
 
107
  /*
@@ -133,7 +126,6 @@
133
  // Filters for the admin only
134
  if( is_admin() ) {
135
  add_action('admin_print_footer_scripts', array($this, 'discussionNotice'));
136
- //add_filter('plugin_row_meta', array($this, 'set_plugin_meta'), 10, 2);
137
 
138
  // if only certain types are disabled, remember the original post status
139
  if( !$this->isDisabledAllPosts() ) {
@@ -198,6 +190,10 @@
198
  // Remove comments links from admin bar
199
  remove_action('admin_bar_menu', 'wp_admin_bar_comments_menu', 60);
200
  }
 
 
 
 
201
  }
202
 
203
  public function editFormInputs()
@@ -263,18 +259,14 @@
263
  {
264
  $post = get_post($post_id);
265
 
266
- return ($this->isDisabledAllPosts() || $this->isPostTypeDisabled($post->post_type))
267
- ? array()
268
- : $comments;
269
  }
270
 
271
  public function filterCommentStatus($open, $post_id)
272
  {
273
  $post = get_post($post_id);
274
 
275
- return ($this->isDisabledAllPosts() || $this->isPostTypeDisabled($post->post_type))
276
- ? false
277
- : $open;
278
  }
279
 
280
  public function disableRcWidget()
@@ -356,45 +348,6 @@
356
  return $fields;
357
  }
358
 
359
- public function removeXPingback($headers)
360
- {
361
- unset($headers['X-Pingback']);
362
-
363
- return $headers;
364
- }
365
-
366
- public function removeXPingbackHeaders($headers)
367
- {
368
- if( function_exists('header_remove') ) {
369
- header_remove('X-Pingback');
370
- header_remove('Server');
371
- }
372
- }
373
-
374
- //https://wordpress.stackexchange.com/questions/158700/how-to-remove-pingback-from-head
375
-
376
- public function linkRelBufferCallback($buffer)
377
- {
378
- $old_buffer = $buffer;
379
- $buffer = preg_replace('/(<link.*?rel=("|\')pingback("|\').*?href=("|\')(.*?)("|\')(.*?)?\/?>|<link.*?href=("|\')(.*?)("|\').*?rel=("|\')pingback("|\')(.*?)?\/?>)/i', '', $buffer);
380
-
381
- // todo: fixed bug when return buffer null
382
- if( empty($buffer) ) {
383
- return $old_buffer;
384
- }
385
-
386
- return $buffer;
387
- }
388
-
389
- public function linkRelBufferStart()
390
- {
391
- ob_start(array($this, "linkRelBufferCallback"));
392
- }
393
-
394
- public function linkRelBufferEnd()
395
- {
396
- ob_flush();
397
- }
398
 
399
  // todo: Убрать это грязное решение со скриптами.
400
  public function assetsUrlSpanScripts()
@@ -406,4 +359,4 @@
406
  wp_enqueue_style('wbcr-comments-plus-url-span', WCM_PLUGIN_URL . '/assets/css/url-span.css', array(), $this->plugin->getPluginVersion());
407
  wp_enqueue_script('wbcr-comments-plus-url-span', WCM_PLUGIN_URL . '/assets/js/url-span.js', array('jquery'), $this->plugin->getPluginVersion(), true);
408
  }
409
- }
12
  exit;
13
  }
14
 
15
+ class WbcrCmp_ConfigComments extends Wbcr_FactoryClearfy206_Configurate {
16
 
17
  private $modified_types = array();
18
 
19
  /**
20
+ * @param Wbcr_Factory409_Plugin $plugin
21
  */
22
+ public function __construct(Wbcr_Factory409_Plugin $plugin)
23
  {
24
  parent::__construct($plugin);
25
  $this->plugin = $plugin;
27
 
28
  public function registerActionsAndFilters()
29
  {
 
 
 
 
 
 
 
 
 
 
30
  // These need to happen now
31
  if( $this->isDisabledAllPosts() ) {
32
  add_action('widgets_init', array($this, 'disableRcWidget'));
37
  add_action('admin_init', array($this, 'filterAdminBar'));
38
  } else {
39
 
40
+ if( $this->getPopulateOption('comment_text_convert_links_pseudo') || $this->getPopulateOption('pseudo_comment_author_link') ) {
41
  add_action('wp_enqueue_scripts', array($this, 'assetsUrlSpanScripts'));
42
  }
43
 
44
+ if( $this->getPopulateOption('comment_text_convert_links_pseudo') ) {
45
  add_filter('comment_text', array($this, 'commentTextConvertLinksPseudo'));
46
  }
47
 
48
+ if( $this->getPopulateOption('pseudo_comment_author_link') ) {
49
  add_filter('get_comment_author_link', array($this, 'pseudoCommentAuthorLink'), 100, 3);
50
  }
51
 
52
+ if( $this->getPopulateOption('remove_url_from_comment_form') ) {
53
  add_filter('comment_form_default_fields', array($this, 'removeUrlFromCommentForm'));
54
  }
55
  }
59
  add_action('wp_loaded', array($this, 'initWploadedFilters'));
60
  }
61
 
62
+ /*
63
+ * Remove comment links from the admin bar in a multisite network.
64
+ */
65
+ public function removeNetworkCommentLinks($wp_admin_bar)
66
+ {
67
+ if( $this->plugin->isNetworkActive() && is_user_logged_in() ) {
68
+ foreach((array)$wp_admin_bar->user->blogs as $blog) {
69
+ $wp_admin_bar->remove_menu('blog-' . $blog->userblog_id . '-c');
70
+ }
71
+ } else {
72
+ // We have no way to know whether the plugin is active on other sites, so only remove this one
73
+ $wp_admin_bar->remove_menu('blog-' . get_current_blog_id() . '-c');
74
+ }
75
+ }
76
+
77
  private function isDisabledAllPosts()
78
  {
79
+ return $this->getPopulateOption('disable_comments', 'enable_comments') == 'disable_comments';
80
  }
81
 
82
  private function isDisabledCertainPostTypes()
83
  {
84
+ return $this->getPopulateOption('disable_comments', 'enable_comments') == 'disable_certain_post_types_comments';
85
  }
86
 
87
  private function isEnabledComments()
88
  {
89
+ return $this->getPopulateOption('disable_comments', 'enable_comments') == 'enable_comments';
90
  }
91
 
92
  /*
94
  */
95
  private function getDisabledPostTypes()
96
  {
97
+ return wbcr_cmp_get_disabled_post_types();
 
 
 
 
 
 
 
 
 
 
 
 
98
  }
99
 
100
  /*
126
  // Filters for the admin only
127
  if( is_admin() ) {
128
  add_action('admin_print_footer_scripts', array($this, 'discussionNotice'));
 
129
 
130
  // if only certain types are disabled, remember the original post status
131
  if( !$this->isDisabledAllPosts() ) {
190
  // Remove comments links from admin bar
191
  remove_action('admin_bar_menu', 'wp_admin_bar_comments_menu', 60);
192
  }
193
+
194
+ if( is_multisite() ) {
195
+ add_action('admin_bar_menu', array($this, 'removeNetworkCommentLinks'), 500);
196
+ }
197
  }
198
 
199
  public function editFormInputs()
259
  {
260
  $post = get_post($post_id);
261
 
262
+ return ($this->isDisabledAllPosts() || $this->isPostTypeDisabled($post->post_type)) ? array() : $comments;
 
 
263
  }
264
 
265
  public function filterCommentStatus($open, $post_id)
266
  {
267
  $post = get_post($post_id);
268
 
269
+ return ($this->isDisabledAllPosts() || $this->isPostTypeDisabled($post->post_type)) ? false : $open;
 
 
270
  }
271
 
272
  public function disableRcWidget()
348
  return $fields;
349
  }
350
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
351
 
352
  // todo: Убрать это грязное решение со скриптами.
353
  public function assetsUrlSpanScripts()
359
  wp_enqueue_style('wbcr-comments-plus-url-span', WCM_PLUGIN_URL . '/assets/css/url-span.css', array(), $this->plugin->getPluginVersion());
360
  wp_enqueue_script('wbcr-comments-plus-url-span', WCM_PLUGIN_URL . '/assets/js/url-span.js', array('jquery'), $this->plugin->getPluginVersion(), true);
361
  }
362
+ }
components/comments-plus/languages/comments-plus-nl_BE.po CHANGED
@@ -1,359 +1,359 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: Clearfy\n"
4
- "POT-Creation-Date: 2018-09-06 18:27+0300\n"
5
- "PO-Revision-Date: \n"
6
- "Last-Translator: \n"
7
- "Language-Team: \n"
8
- "Language: nl_BE\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: Poedit 2.1.1\n"
13
- "Plural-Forms: nplurals=2; plural=n != 1;\n"
14
- "X-Generator: Poedit 2.1.1\n"
15
- "X-Poedit-Basepath: ..\n"
16
- "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
17
- "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
18
- "X-Poedit-SourceCharset: UTF-8\n"
19
- "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c\n"
20
- "X-Poedit-SearchPath-0: .\n"
21
- "X-Poedit-SearchPathExcluded-0: libs\n"
22
- "X-Poedit-SearchPathExcluded-1: components\n"
23
- "X-Poedit-SearchPathExcluded-2: cache\n"
24
-
25
- #: admin/boot.php:18
26
- msgid "Disable comments on the entire site"
27
- msgstr "Reacties uitschakelen op de volledige site"
28
-
29
- #: admin/boot.php:24 admin/pages/comments.php:129
30
- msgid "Select post types"
31
- msgstr "Selecteer bericht types"
32
-
33
- #: admin/boot.php:29 admin/pages/comments.php:157
34
- msgid "Replace external links in comments on the JavaScript code"
35
- msgstr "Vervang externe links in opmerkingen over de JavaScript code"
36
-
37
- #: admin/boot.php:34 admin/pages/comments.php:166
38
- msgid "Replace external links from comment authors on the JavaScript code"
39
- msgstr "Vervang externe links van commentaar auteurs op de JavaScript code"
40
-
41
- #: admin/boot.php:39
42
- msgid "Disable X-Pingback"
43
- msgstr "Uitschakelen X-Pingback"
44
-
45
- #: admin/boot.php:44 admin/pages/comments.php:148
46
- msgid "Remove field \"site\" in comment form"
47
- msgstr "Verwijder het veld \"site\" in reactie formulier"
48
-
49
- #: admin/boot.php:56
50
- msgid "One click disable all comments"
51
- msgstr "Alle reacties uitschakelen in één klik"
52
-
53
- #: admin/boot.php:77
54
- msgid "Get ultimate plugin free"
55
- msgstr "Krijg ultieme plugin gratis"
56
-
57
- #: admin/pages/comments.php:33 admin/pages/comments.php:94
58
- msgid "Disable comments"
59
- msgstr "Reacties uitschakelen"
60
-
61
- #: admin/pages/comments.php:47
62
- msgid "Comments"
63
- msgstr "Opmerkingen"
64
-
65
- #: admin/pages/comments.php:48
66
- msgid "General"
67
- msgstr "Algemeen"
68
-
69
- #: admin/pages/comments.php:81
70
- msgid "Global disabling of comments"
71
- msgstr "Algemene uitschakeling van reacties"
72
-
73
- #: admin/pages/comments.php:81
74
- msgid ""
75
- "What is the difference between these and native WordPress functions? WordPress "
76
- "disables comments only for new posts! Using the functions below, you can "
77
- "disable comments globally, even for old posts, and you can choose which post "
78
- "types comments to disable. The plugin also disables the comment functionality "
79
- "itself, which creates a certain load on the site."
80
- msgstr ""
81
- "Wat is het verschil tussen deze en native WordPress-functies? WordPress "
82
- "schakelt alleen reacties uit voor nieuwe berichten! Met behulp van de "
83
- "onderstaande functies kunt u opmerkingen globaal uitschakelen, zelfs voor oude "
84
- "berichten, en kunt u kiezen welk bericht een opmerking is om uit te schakelen. "
85
- "De plugin schakelt ook de commentaar functionaliteit zelf uit, die de site op "
86
- "één of andere manier belast."
87
-
88
- #: admin/pages/comments.php:96
89
- msgid "Not disable"
90
- msgstr "Niet uitschakelen"
91
-
92
- #: admin/pages/comments.php:99
93
- msgid "Everywhere"
94
- msgstr "Overal"
95
-
96
- #: admin/pages/comments.php:100
97
- #, php-format
98
- msgid ""
99
- "You can delete all comments in the database by clicking on this link (<a href="
100
- "\"%s\">cleaning comments in database</a>)."
101
- msgstr ""
102
- "U kunt alle reacties in de database verwijderen door op deze link te klikken "
103
- "(<a href=\"%s\">reacties opschonen in database</a>)."
104
-
105
- #: admin/pages/comments.php:104
106
- msgid "On certain post types"
107
- msgstr "Op bepaalde bericht types"
108
-
109
- #: admin/pages/comments.php:105
110
- #, php-format
111
- msgid ""
112
- "You can delete all comments for the selected post types. Select the post types "
113
- "below and save the settings. After that, click the link (<a href=\"%s\">delete "
114
- "all comments for the selected post types in database</a>)."
115
- msgstr ""
116
- "U kunt alle reacties voor de geselecteerde bericht types verwijderen. "
117
- "Selecteer de bericht types hieronder en sla de instellingen op. Klik daarna op "
118
- "de link (<a href=\"%s\">verwijder alle reacties voor de geselecteerde bericht "
119
- "types in de database</a>)."
120
-
121
- #: admin/pages/comments.php:109
122
- msgid ""
123
- "Everywhere - Warning: This option is global and will affect your entire site. "
124
- "Use it only if you want to disable comments everywhere. A complete description "
125
- "of what this option does is available here"
126
- msgstr ""
127
- "Overal - Waarschuwing: deze optie is globaal en heeft invloed op uw hele site. "
128
- "Gebruik het alleen als u reacties overal wilt uitschakelen. Een volledige "
129
- "beschrijving van wat deze optie doet, is hier beschikbaar"
130
-
131
- #: admin/pages/comments.php:109
132
- msgid ""
133
- "On certain post types - Disabling comments will also disable trackbacks and "
134
- "pingbacks. All comment-related fields will also be hidden from the edit/quick-"
135
- "edit screens of the affected posts. These settings cannot be overridden for "
136
- "individual posts."
137
- msgstr ""
138
- "Op bepaalde bericht types: Door het uitschakelen van reacties, worden ook "
139
- "trackbacks en pingbacks uitgeschakeld. Alle aan reactie gerelateerde velden "
140
- "worden ook verborgen in de editeer/quick-edit schermen van de betreffende "
141
- "berichten. Deze instellingen kunnen niet worden overschreven voor individuele "
142
- "berichten."
143
-
144
- #: admin/pages/comments.php:132
145
- msgid "Select the post types for which comments will be disabled"
146
- msgstr "Selecteer de bericht types waarvoor reacties zullen worden uitgeschakeld"
147
-
148
- #: admin/pages/comments.php:142
149
- msgid "General settings for comments"
150
- msgstr "Algemene instellingen voor reacties"
151
-
152
- #: admin/pages/comments.php:142
153
- msgid "These settings will help you improve SEO and reduce the amount of spam."
154
- msgstr ""
155
- "Met deze instellingen kunt u de SEO verbeteren en de hoeveelheid spam "
156
- "verminderen."
157
-
158
- #: admin/pages/comments.php:150
159
- msgid ""
160
- "Tired of spam in the comments? Do visitors leave \"blank\" comments for the "
161
- "sake of a link to their site?"
162
- msgstr ""
163
- "Ben je spam in de reacties beu? Laten bezoekers \"lege\" reacties achter om "
164
- "enkel te linken naar hun site?"
165
-
166
- #: admin/pages/comments.php:150
167
- msgid "Removes the \"Site\" field from the comment form."
168
- msgstr "Verwijdert het veld \"Site\" uit het reactie formulier."
169
-
170
- #: admin/pages/comments.php:150
171
- msgid ""
172
- "Works with the standard comment form, if the form is manually written in your "
173
- "theme-it probably will not work!"
174
- msgstr ""
175
- "Werkt met het standaard reactie formulier, als het formulier handmatig aan uw "
176
- "thema werd toegevoegd, zal het waarschijnlijk niet werken!"
177
-
178
- #: admin/pages/comments.php:159
179
- msgid ""
180
- "Superfluous external links from comments, which can be typed from a dozen and "
181
- "more for one article, do not bring anything good for promotion."
182
- msgstr ""
183
- "Overbodige externe linken van reacties, die uit een tiental of meer voor één "
184
- "artikel getypt kunnen zijn, brengen promotioneel niets bij."
185
-
186
- #: admin/pages/comments.php:159
187
- #, php-format
188
- msgid "Replaces the links of this kind of %s, on links of this kind %s"
189
- msgstr "Vervangt de linken van dit soort %s, naar linken van dit type %s"
190
-
191
- #: admin/pages/comments.php:168
192
- msgid ""
193
- "Up to 90 percent of comments in the blog can be left for the sake of an "
194
- "external link. Even nofollow from page weight loss here does not help."
195
- msgstr ""
196
- "Tot 90 procent van de reacties in de blog wordt achtergelaten omwille van een "
197
- "externe link. Zelfs nofollow voor pagina gewichtsverlies helpt hier niet."
198
-
199
- #: admin/pages/comments.php:168
200
- msgid ""
201
- "Replaces the links of the authors of comments on the JavaScript code, it is "
202
- "impossible to distinguish it from usual links."
203
- msgstr ""
204
- "Vervangt de linken van de auteurs van reacties op de JavaScript code, het is "
205
- "onmogelijk om het te onderscheiden van de gebruikelijke linken."
206
-
207
- #: admin/pages/comments.php:168
208
- msgid "In some Wordpress topics this may not work."
209
- msgstr "In sommige onderdelen van WordPress werkt dit misschien niet."
210
-
211
- #: admin/pages/comments.php:175
212
- msgid "Disable XML-RPC"
213
- msgstr "Schakel XML-RPC uit"
214
-
215
- #: admin/pages/comments.php:177
216
- msgid ""
217
- "A pingback is basically an automated comment that gets created when another "
218
- "blog links to you. A self-pingback is created when you link to an article "
219
- "within your own blog. Pingbacks are essentially nothing more than spam and "
220
- "simply waste resources."
221
- msgstr ""
222
- "Een pingback is in feite een geautomatiseerde commentaar die wordt gemaakt "
223
- "wanneer een andere blog linkt naar u. Een zelf-pingback wordt gemaakt wanneer "
224
- "u een linkt naar een artikel binnen uw eigen blog. Pingbacks zijn in wezen "
225
- "niets meer dan spam en simpelweg een verspilling van resources."
226
-
227
- #: admin/pages/comments.php:177
228
- msgid "Removes the server responses a reference to the xmlrpc file."
229
- msgstr "Verwijdert de server reacties bij verwijzing naar het xmlrpc bestand."
230
-
231
- #: admin/pages/delete-comments.php:36
232
- msgid "Comments cleaner"
233
- msgstr "Reacties opkuisen"
234
-
235
- #: admin/pages/delete-comments.php:75
236
- msgid "All comments have been deleted."
237
- msgstr "Alle opmerkingen zijn verwijderd."
238
-
239
- #: admin/pages/delete-comments.php:84
240
- msgid ""
241
- "An error occurred while trying to delete comments. Internal error occured. "
242
- "Please try again later."
243
- msgstr ""
244
- "Er is een fout opgetreden bij het verwijderen van opmerkingen. Interne fout "
245
- "opgetreden. Probeer het later opnieuw."
246
-
247
- #: admin/pages/delete-comments.php:154
248
- msgid ""
249
- "Are you sure you want to delete comments from the database without restoring?"
250
- msgstr ""
251
- "Weet je zeker dat je reacties uit de database wilt verwijderen zonder te "
252
- "herstellen?"
253
-
254
- #: admin/pages/delete-comments.php:169
255
- msgid "Delete "
256
- msgstr ""
257
-
258
- #: admin/pages/delete-comments.php:175
259
- msgid "Comments clearing tools"
260
- msgstr "Opmerkingen wissen tools"
261
-
262
- #: admin/pages/delete-comments.php:178
263
- msgid ""
264
- "These functions can be useful for global disabling comments or bulk cleaning "
265
- "spam comments."
266
- msgstr ""
267
- "Deze functies kunnen handig zijn voor algemene uitschakeling van opmerkingen "
268
- "of voor het opschonen van spam-reacties."
269
-
270
- #: admin/pages/delete-comments.php:183
271
- msgid "Remove all comments"
272
- msgstr "Verwijder alle reacties"
273
-
274
- #: admin/pages/delete-comments.php:185
275
- msgid "You can delete all comments in your database with one click."
276
- msgstr "U kunt alle reacties in uw database met één klik verwijderen."
277
-
278
- #: admin/pages/delete-comments.php:187
279
- msgid "Choose post types"
280
- msgstr "Kies bericht types"
281
-
282
- #: admin/pages/delete-comments.php:192
283
- msgid "Select all"
284
- msgstr "Selecteer alles"
285
-
286
- #: admin/pages/delete-comments.php:209
287
- #, php-format
288
- msgid "Delete Woocommerce order notices? (%d)"
289
- msgstr "Woocommerce ordermeldingen verwijderen? (%d)"
290
-
291
- #: admin/pages/delete-comments.php:215
292
- #, php-format
293
- msgid "Delete (%s)"
294
- msgstr ""
295
-
296
- #: admin/pages/delete-comments.php:222
297
- msgid "Remove spam comments"
298
- msgstr "Verwijder spam reacties"
299
-
300
- #: admin/pages/delete-comments.php:224
301
- msgid "You can remove only spam comments from the database with one click."
302
- msgstr "U kunt met één muisklik enkel spam reacties uit de database verwijderen."
303
-
304
- #: admin/pages/delete-comments.php:226 admin/pages/delete-comments.php:233
305
- #: admin/pages/delete-comments.php:240
306
- #, php-format
307
- msgid "Delete (%d)"
308
- msgstr "Verwijderen (%d)"
309
-
310
- #: admin/pages/delete-comments.php:229
311
- msgid "Remove unapproved comments"
312
- msgstr "Verwijder niet-goedgekeurde reacties"
313
-
314
- #: admin/pages/delete-comments.php:231
315
- msgid "You can remove only unapproved comments from the database with one click."
316
- msgstr ""
317
- "U kunt met één klik enkel niet-goedgekeurde reacties uit de database "
318
- "verwijderen."
319
-
320
- #: admin/pages/delete-comments.php:236
321
- msgid "Remove trashed comments"
322
- msgstr "Verwijder reacties uit vuilbak"
323
-
324
- #: admin/pages/delete-comments.php:238
325
- msgid "You can remove only trashed comments from the database with one click."
326
- msgstr ""
327
- "U kunt met één klik enkel de reacties in de vuilbak uit de database "
328
- "verwijderen."
329
-
330
- #: comments-plus.php:23
331
- msgid ""
332
- "We found that you have the \"Clearfy - disable unused features\" plugin "
333
- "installed, this plugin already has disable comments functions, so you can "
334
- "deactivate plugin \"Disable comments\"!"
335
- msgstr ""
336
- "We hebben geconstateerd dat de plugin \"Clearfy - uitschakelen ongebruikte "
337
- "functies\" is geïnstalleerd, deze plugin heeft al de functie voor het "
338
- "uitschakelen van reacties, dus u kunt de plugin \"Uitschakelen Reacties\" "
339
- "deactiveren!"
340
-
341
- #: comments-plus.php:81
342
- msgid "Webcraftic Disable comments"
343
- msgstr "Webcraftic uitschakelen reacties"
344
-
345
- #: includes/classes/class.configurate-comments.php:188
346
- #: includes/classes/class.configurate-comments.php:240
347
- msgid "Comments are closed."
348
- msgstr "Reacties zijn gesloten."
349
-
350
- #: includes/classes/class.configurate-comments.php:228
351
- #, php-format
352
- msgid ""
353
- "Note: The <em>%s</em> plugin is currently active, and comments are completely "
354
- "disabled on: %s. Many of the settings below will not be applicable for those "
355
- "post types."
356
- msgstr ""
357
- "Opmerking: de plugin <em>%s</em> is momenteel actief en reacties zijn volledig "
358
- "uitgeschakeld op: %s. Veel van onderstaande instellingen zijn niet van "
359
  "toepassing op die bericht types."
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: Clearfy\n"
4
+ "POT-Creation-Date: 2018-09-06 18:27+0300\n"
5
+ "PO-Revision-Date: \n"
6
+ "Last-Translator: \n"
7
+ "Language-Team: \n"
8
+ "Language: nl_BE\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: Poedit 2.1.1\n"
13
+ "Plural-Forms: nplurals=2; plural=n != 1;\n"
14
+ "X-Generator: Poedit 2.1.1\n"
15
+ "X-Poedit-Basepath: ..\n"
16
+ "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
17
+ "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
18
+ "X-Poedit-SourceCharset: UTF-8\n"
19
+ "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c\n"
20
+ "X-Poedit-SearchPath-0: .\n"
21
+ "X-Poedit-SearchPathExcluded-0: libs\n"
22
+ "X-Poedit-SearchPathExcluded-1: components\n"
23
+ "X-Poedit-SearchPathExcluded-2: cache\n"
24
+
25
+ #: admin/boot.php:18
26
+ msgid "Disable comments on the entire site"
27
+ msgstr "Reacties uitschakelen op de volledige site"
28
+
29
+ #: admin/boot.php:24 admin/pages/comments.php:129
30
+ msgid "Select post types"
31
+ msgstr "Selecteer bericht types"
32
+
33
+ #: admin/boot.php:29 admin/pages/comments.php:157
34
+ msgid "Replace external links in comments on the JavaScript code"
35
+ msgstr "Vervang externe links in opmerkingen over de JavaScript code"
36
+
37
+ #: admin/boot.php:34 admin/pages/comments.php:166
38
+ msgid "Replace external links from comment authors on the JavaScript code"
39
+ msgstr "Vervang externe links van commentaar auteurs op de JavaScript code"
40
+
41
+ #: admin/boot.php:39
42
+ msgid "Disable X-Pingback"
43
+ msgstr "Uitschakelen X-Pingback"
44
+
45
+ #: admin/boot.php:44 admin/pages/comments.php:148
46
+ msgid "Remove field \"site\" in comment form"
47
+ msgstr "Verwijder het veld \"site\" in reactie formulier"
48
+
49
+ #: admin/boot.php:56
50
+ msgid "One click disable all comments"
51
+ msgstr "Alle reacties uitschakelen in één klik"
52
+
53
+ #: admin/boot.php:77
54
+ msgid "Get ultimate plugin free"
55
+ msgstr "Krijg ultieme plugin gratis"
56
+
57
+ #: admin/pages/comments.php:33 admin/pages/comments.php:94
58
+ msgid "Disable comments"
59
+ msgstr "Reacties uitschakelen"
60
+
61
+ #: admin/pages/comments.php:47
62
+ msgid "Comments"
63
+ msgstr "Opmerkingen"
64
+
65
+ #: admin/pages/comments.php:48
66
+ msgid "General"
67
+ msgstr "Algemeen"
68
+
69
+ #: admin/pages/comments.php:81
70
+ msgid "Global disabling of comments"
71
+ msgstr "Algemene uitschakeling van reacties"
72
+
73
+ #: admin/pages/comments.php:81
74
+ msgid ""
75
+ "What is the difference between these and native WordPress functions? WordPress "
76
+ "disables comments only for new posts! Using the functions below, you can "
77
+ "disable comments globally, even for old posts, and you can choose which post "
78
+ "types comments to disable. The plugin also disables the comment functionality "
79
+ "itself, which creates a certain load on the site."
80
+ msgstr ""
81
+ "Wat is het verschil tussen deze en native WordPress-functies? WordPress "
82
+ "schakelt alleen reacties uit voor nieuwe berichten! Met behulp van de "
83
+ "onderstaande functies kunt u opmerkingen globaal uitschakelen, zelfs voor oude "
84
+ "berichten, en kunt u kiezen welk bericht een opmerking is om uit te schakelen. "
85
+ "De plugin schakelt ook de commentaar functionaliteit zelf uit, die de site op "
86
+ "één of andere manier belast."
87
+
88
+ #: admin/pages/comments.php:96
89
+ msgid "Not disable"
90
+ msgstr "Niet uitschakelen"
91
+
92
+ #: admin/pages/comments.php:99
93
+ msgid "Everywhere"
94
+ msgstr "Overal"
95
+
96
+ #: admin/pages/comments.php:100
97
+ #, php-format
98
+ msgid ""
99
+ "You can delete all comments in the database by clicking on this link (<a href="
100
+ "\"%s\">cleaning comments in database</a>)."
101
+ msgstr ""
102
+ "U kunt alle reacties in de database verwijderen door op deze link te klikken "
103
+ "(<a href=\"%s\">reacties opschonen in database</a>)."
104
+
105
+ #: admin/pages/comments.php:104
106
+ msgid "On certain post types"
107
+ msgstr "Op bepaalde bericht types"
108
+
109
+ #: admin/pages/comments.php:105
110
+ #, php-format
111
+ msgid ""
112
+ "You can delete all comments for the selected post types. Select the post types "
113
+ "below and save the settings. After that, click the link (<a href=\"%s\">delete "
114
+ "all comments for the selected post types in database</a>)."
115
+ msgstr ""
116
+ "U kunt alle reacties voor de geselecteerde bericht types verwijderen. "
117
+ "Selecteer de bericht types hieronder en sla de instellingen op. Klik daarna op "
118
+ "de link (<a href=\"%s\">verwijder alle reacties voor de geselecteerde bericht "
119
+ "types in de database</a>)."
120
+
121
+ #: admin/pages/comments.php:109
122
+ msgid ""
123
+ "Everywhere - Warning: This option is global and will affect your entire site. "
124
+ "Use it only if you want to disable comments everywhere. A complete description "
125
+ "of what this option does is available here"
126
+ msgstr ""
127
+ "Overal - Waarschuwing: deze optie is globaal en heeft invloed op uw hele site. "
128
+ "Gebruik het alleen als u reacties overal wilt uitschakelen. Een volledige "
129
+ "beschrijving van wat deze optie doet, is hier beschikbaar"
130
+
131
+ #: admin/pages/comments.php:109
132
+ msgid ""
133
+ "On certain post types - Disabling comments will also disable trackbacks and "
134
+ "pingbacks. All comment-related fields will also be hidden from the edit/quick-"
135
+ "edit screens of the affected posts. These settings cannot be overridden for "
136
+ "individual posts."
137
+ msgstr ""
138
+ "Op bepaalde bericht types: Door het uitschakelen van reacties, worden ook "
139
+ "trackbacks en pingbacks uitgeschakeld. Alle aan reactie gerelateerde velden "
140
+ "worden ook verborgen in de editeer/quick-edit schermen van de betreffende "
141
+ "berichten. Deze instellingen kunnen niet worden overschreven voor individuele "
142
+ "berichten."
143
+
144
+ #: admin/pages/comments.php:132
145
+ msgid "Select the post types for which comments will be disabled"
146
+ msgstr "Selecteer de bericht types waarvoor reacties zullen worden uitgeschakeld"
147
+
148
+ #: admin/pages/comments.php:142
149
+ msgid "General settings for comments"
150
+ msgstr "Algemene instellingen voor reacties"
151
+
152
+ #: admin/pages/comments.php:142
153
+ msgid "These settings will help you improve SEO and reduce the amount of spam."
154
+ msgstr ""
155
+ "Met deze instellingen kunt u de SEO verbeteren en de hoeveelheid spam "
156
+ "verminderen."
157
+
158
+ #: admin/pages/comments.php:150
159
+ msgid ""
160
+ "Tired of spam in the comments? Do visitors leave \"blank\" comments for the "
161
+ "sake of a link to their site?"
162
+ msgstr ""
163
+ "Ben je spam in de reacties beu? Laten bezoekers \"lege\" reacties achter om "
164
+ "enkel te linken naar hun site?"
165
+
166
+ #: admin/pages/comments.php:150
167
+ msgid "Removes the \"Site\" field from the comment form."
168
+ msgstr "Verwijdert het veld \"Site\" uit het reactie formulier."
169
+
170
+ #: admin/pages/comments.php:150
171
+ msgid ""
172
+ "Works with the standard comment form, if the form is manually written in your "
173
+ "theme-it probably will not work!"
174
+ msgstr ""
175
+ "Werkt met het standaard reactie formulier, als het formulier handmatig aan uw "
176
+ "thema werd toegevoegd, zal het waarschijnlijk niet werken!"
177
+
178
+ #: admin/pages/comments.php:159
179
+ msgid ""
180
+ "Superfluous external links from comments, which can be typed from a dozen and "
181
+ "more for one article, do not bring anything good for promotion."
182
+ msgstr ""
183
+ "Overbodige externe linken van reacties, die uit een tiental of meer voor één "
184
+ "artikel getypt kunnen zijn, brengen promotioneel niets bij."
185
+
186
+ #: admin/pages/comments.php:159
187
+ #, php-format
188
+ msgid "Replaces the links of this kind of %s, on links of this kind %s"
189
+ msgstr "Vervangt de linken van dit soort %s, naar linken van dit type %s"
190
+
191
+ #: admin/pages/comments.php:168
192
+ msgid ""
193
+ "Up to 90 percent of comments in the blog can be left for the sake of an "
194
+ "external link. Even nofollow from page weight loss here does not help."
195
+ msgstr ""
196
+ "Tot 90 procent van de reacties in de blog wordt achtergelaten omwille van een "
197
+ "externe link. Zelfs nofollow voor pagina gewichtsverlies helpt hier niet."
198
+
199
+ #: admin/pages/comments.php:168
200
+ msgid ""
201
+ "Replaces the links of the authors of comments on the JavaScript code, it is "
202
+ "impossible to distinguish it from usual links."
203
+ msgstr ""
204
+ "Vervangt de linken van de auteurs van reacties op de JavaScript code, het is "
205
+ "onmogelijk om het te onderscheiden van de gebruikelijke linken."
206
+
207
+ #: admin/pages/comments.php:168
208
+ msgid "In some Wordpress topics this may not work."
209
+ msgstr "In sommige onderdelen van WordPress werkt dit misschien niet."
210
+
211
+ #: admin/pages/comments.php:175
212
+ msgid "Disable XML-RPC"
213
+ msgstr "Schakel XML-RPC uit"
214
+
215
+ #: admin/pages/comments.php:177
216
+ msgid ""
217
+ "A pingback is basically an automated comment that gets created when another "
218
+ "blog links to you. A self-pingback is created when you link to an article "
219
+ "within your own blog. Pingbacks are essentially nothing more than spam and "
220
+ "simply waste resources."
221
+ msgstr ""
222
+ "Een pingback is in feite een geautomatiseerde commentaar die wordt gemaakt "
223
+ "wanneer een andere blog linkt naar u. Een zelf-pingback wordt gemaakt wanneer "
224
+ "u een linkt naar een artikel binnen uw eigen blog. Pingbacks zijn in wezen "
225
+ "niets meer dan spam en simpelweg een verspilling van resources."
226
+
227
+ #: admin/pages/comments.php:177
228
+ msgid "Removes the server responses a reference to the xmlrpc file."
229
+ msgstr "Verwijdert de server reacties bij verwijzing naar het xmlrpc bestand."
230
+
231
+ #: admin/pages/delete-comments.php:36
232
+ msgid "Comments cleaner"
233
+ msgstr "Reacties opkuisen"
234
+
235
+ #: admin/pages/delete-comments.php:75
236
+ msgid "All comments have been deleted."
237
+ msgstr "Alle opmerkingen zijn verwijderd."
238
+
239
+ #: admin/pages/delete-comments.php:84
240
+ msgid ""
241
+ "An error occurred while trying to delete comments. Internal error occured. "
242
+ "Please try again later."
243
+ msgstr ""
244
+ "Er is een fout opgetreden bij het verwijderen van opmerkingen. Interne fout "
245
+ "opgetreden. Probeer het later opnieuw."
246
+
247
+ #: admin/pages/delete-comments.php:154
248
+ msgid ""
249
+ "Are you sure you want to delete comments from the database without restoring?"
250
+ msgstr ""
251
+ "Weet je zeker dat je reacties uit de database wilt verwijderen zonder te "
252
+ "herstellen?"
253
+
254
+ #: admin/pages/delete-comments.php:169
255
+ msgid "Delete "
256
+ msgstr ""
257
+
258
+ #: admin/pages/delete-comments.php:175
259
+ msgid "Comments clearing tools"
260
+ msgstr "Opmerkingen wissen tools"
261
+
262
+ #: admin/pages/delete-comments.php:178
263
+ msgid ""
264
+ "These functions can be useful for global disabling comments or bulk cleaning "
265
+ "spam comments."
266
+ msgstr ""
267
+ "Deze functies kunnen handig zijn voor algemene uitschakeling van opmerkingen "
268
+ "of voor het opschonen van spam-reacties."
269
+
270
+ #: admin/pages/delete-comments.php:183
271
+ msgid "Remove all comments"
272
+ msgstr "Verwijder alle reacties"
273
+
274
+ #: admin/pages/delete-comments.php:185
275
+ msgid "You can delete all comments in your database with one click."
276
+ msgstr "U kunt alle reacties in uw database met één klik verwijderen."
277
+
278
+ #: admin/pages/delete-comments.php:187
279
+ msgid "Choose post types"
280
+ msgstr "Kies bericht types"
281
+
282
+ #: admin/pages/delete-comments.php:192
283
+ msgid "Select all"
284
+ msgstr "Selecteer alles"
285
+
286
+ #: admin/pages/delete-comments.php:209
287
+ #, php-format
288
+ msgid "Delete Woocommerce order notices? (%d)"
289
+ msgstr "Woocommerce ordermeldingen verwijderen? (%d)"
290
+
291
+ #: admin/pages/delete-comments.php:215
292
+ #, php-format
293
+ msgid "Delete (%s)"
294
+ msgstr ""
295
+
296
+ #: admin/pages/delete-comments.php:222
297
+ msgid "Remove spam comments"
298
+ msgstr "Verwijder spam reacties"
299
+
300
+ #: admin/pages/delete-comments.php:224
301
+ msgid "You can remove only spam comments from the database with one click."
302
+ msgstr "U kunt met één muisklik enkel spam reacties uit de database verwijderen."
303
+
304
+ #: admin/pages/delete-comments.php:226 admin/pages/delete-comments.php:233
305
+ #: admin/pages/delete-comments.php:240
306
+ #, php-format
307
+ msgid "Delete (%d)"
308
+ msgstr "Verwijderen (%d)"
309
+
310
+ #: admin/pages/delete-comments.php:229
311
+ msgid "Remove unapproved comments"
312
+ msgstr "Verwijder niet-goedgekeurde reacties"
313
+
314
+ #: admin/pages/delete-comments.php:231
315
+ msgid "You can remove only unapproved comments from the database with one click."
316
+ msgstr ""
317
+ "U kunt met één klik enkel niet-goedgekeurde reacties uit de database "
318
+ "verwijderen."
319
+
320
+ #: admin/pages/delete-comments.php:236
321
+ msgid "Remove trashed comments"
322
+ msgstr "Verwijder reacties uit vuilbak"
323
+
324
+ #: admin/pages/delete-comments.php:238
325
+ msgid "You can remove only trashed comments from the database with one click."
326
+ msgstr ""
327
+ "U kunt met één klik enkel de reacties in de vuilbak uit de database "
328
+ "verwijderen."
329
+
330
+ #: comments-plus.php:23
331
+ msgid ""
332
+ "We found that you have the \"Clearfy - disable unused features\" plugin "
333
+ "installed, this plugin already has disable comments functions, so you can "
334
+ "deactivate plugin \"Disable comments\"!"
335
+ msgstr ""
336
+ "We hebben geconstateerd dat de plugin \"Clearfy - uitschakelen ongebruikte "
337
+ "functies\" is geïnstalleerd, deze plugin heeft al de functie voor het "
338
+ "uitschakelen van reacties, dus u kunt de plugin \"Uitschakelen Reacties\" "
339
+ "deactiveren!"
340
+
341
+ #: comments-plus.php:81
342
+ msgid "Webcraftic Disable comments"
343
+ msgstr "Webcraftic uitschakelen reacties"
344
+
345
+ #: includes/classes/class.configurate-comments.php:188
346
+ #: includes/classes/class.configurate-comments.php:240
347
+ msgid "Comments are closed."
348
+ msgstr "Reacties zijn gesloten."
349
+
350
+ #: includes/classes/class.configurate-comments.php:228
351
+ #, php-format
352
+ msgid ""
353
+ "Note: The <em>%s</em> plugin is currently active, and comments are completely "
354
+ "disabled on: %s. Many of the settings below will not be applicable for those "
355
+ "post types."
356
+ msgstr ""
357
+ "Opmerking: de plugin <em>%s</em> is momenteel actief en reacties zijn volledig "
358
+ "uitgeschakeld op: %s. Veel van onderstaande instellingen zijn niet van "
359
  "toepassing op die bericht types."
components/comments-plus/languages/comments-plus-pt_BR.po CHANGED
@@ -1,360 +1,360 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: clearfy\n"
4
- "POT-Creation-Date: 2018-09-06 18:27+0300\n"
5
- "PO-Revision-Date: 2018-09-06 18:27+0300\n"
6
- "Last-Translator: alex.kovalevv@gmail.com <alex.kovalevv@gmail.com>\n"
7
- "Language-Team: Alex Kovalev <alex.kovalevv@gmail.com>\n"
8
- "Language: pt_BR\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: Poedit 2.1.1\n"
13
- "X-Poedit-Basepath: ..\n"
14
- "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
15
- "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
16
- "X-Poedit-SourceCharset: UTF-8\n"
17
- "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c\n"
18
- "X-Poedit-SearchPath-0: .\n"
19
- "X-Poedit-SearchPathExcluded-0: libs\n"
20
- "X-Poedit-SearchPathExcluded-1: components\n"
21
- "X-Poedit-SearchPathExcluded-2: cache\n"
22
-
23
- #: admin/boot.php:18
24
- msgid "Disable comments on the entire site"
25
- msgstr "Desativar comentários em todo o site"
26
-
27
- #: admin/boot.php:24 admin/pages/comments.php:129
28
- msgid "Select post types"
29
- msgstr "Selecione os tipos de postagem"
30
-
31
- #: admin/boot.php:29 admin/pages/comments.php:157
32
- msgid "Replace external links in comments on the JavaScript code"
33
- msgstr "Substituir links externos nos comentários no código JavaScript"
34
-
35
- #: admin/boot.php:34 admin/pages/comments.php:166
36
- msgid "Replace external links from comment authors on the JavaScript code"
37
- msgstr ""
38
- "Substituir links externos de autores de comentários no código JavaScript"
39
-
40
- #: admin/boot.php:39
41
- msgid "Disable X-Pingback"
42
- msgstr "Desativar X-Pingback"
43
-
44
- #: admin/boot.php:44 admin/pages/comments.php:148
45
- msgid "Remove field \"site\" in comment form"
46
- msgstr "Remover campo \"site \" no formulário de comentário"
47
-
48
- #: admin/boot.php:56
49
- msgid "One click disable all comments"
50
- msgstr "Um clique desativa todos os comentários"
51
-
52
- #: admin/boot.php:77
53
- msgid "Get ultimate plugin free"
54
- msgstr "Obtenha o melhor plugin grátis"
55
-
56
- #: admin/pages/comments.php:33 admin/pages/comments.php:94
57
- msgid "Disable comments"
58
- msgstr "Desativar comentários"
59
-
60
- #: admin/pages/comments.php:47
61
- msgid "Comments"
62
- msgstr "Comentários"
63
-
64
- #: admin/pages/comments.php:48
65
- msgid "General"
66
- msgstr "Geral"
67
-
68
- #: admin/pages/comments.php:81
69
- msgid "Global disabling of comments"
70
- msgstr "Desativação global de comentários"
71
-
72
- #: admin/pages/comments.php:81
73
- msgid ""
74
- "What is the difference between these and native WordPress functions? "
75
- "WordPress disables comments only for new posts! Using the functions below, "
76
- "you can disable comments globally, even for old posts, and you can choose "
77
- "which post types comments to disable. The plugin also disables the comment "
78
- "functionality itself, which creates a certain load on the site."
79
- msgstr ""
80
- "Qual é a diferença entre essas e funções nativas do WordPress? O WordPress "
81
- "desativa os comentários apenas para novas postagens! Usando as funções "
82
- "abaixo, você pode desativar os comentários globalmente, mesmo para postagens "
83
- "antigas, e pode escolher quais comentários de tipos de post serão "
84
- "desativados. O plug-in também desativa a própria funcionalidade de "
85
- "comentários, o que cria uma certa carga no site."
86
-
87
- #: admin/pages/comments.php:96
88
- msgid "Not disable"
89
- msgstr "Não desativar"
90
-
91
- #: admin/pages/comments.php:99
92
- msgid "Everywhere"
93
- msgstr "Em toda parte"
94
-
95
- #: admin/pages/comments.php:100
96
- #, php-format
97
- msgid ""
98
- "You can delete all comments in the database by clicking on this link (<a "
99
- "href=\"%s\">cleaning comments in database</a>)."
100
- msgstr ""
101
- "Você pode excluir todos os comentários no banco de dados clicando neste link "
102
- "(<a href=\"%s\"> limpando comentários no banco de dados </a>)."
103
-
104
- #: admin/pages/comments.php:104
105
- msgid "On certain post types"
106
- msgstr "Em certos tipos de postagem"
107
-
108
- #: admin/pages/comments.php:105
109
- #, php-format
110
- msgid ""
111
- "You can delete all comments for the selected post types. Select the post "
112
- "types below and save the settings. After that, click the link (<a href=\"%s"
113
- "\">delete all comments for the selected post types in database</a>)."
114
- msgstr ""
115
- "Você pode excluir todos os comentários para os tipos de postagem "
116
- "selecionados. Selecione os tipos de postagem abaixo e salve as "
117
- "configurações. Depois disso, clique no link (<a href=\"%s\"> exclua todos os "
118
- "comentários para os tipos de postagem selecionados no banco de dados </a>)."
119
-
120
- #: admin/pages/comments.php:109
121
- msgid ""
122
- "Everywhere - Warning: This option is global and will affect your entire "
123
- "site. Use it only if you want to disable comments everywhere. A complete "
124
- "description of what this option does is available here"
125
- msgstr ""
126
- "Em todo lugar - Aviso: essa opção é global e afetará todo o seu site. Use-o "
127
- "somente se você quiser desabilitar os comentários em todos os lugares. Uma "
128
- "descrição completa do que esta opção faz está disponível aqui"
129
-
130
- #: admin/pages/comments.php:109
131
- msgid ""
132
- "On certain post types - Disabling comments will also disable trackbacks and "
133
- "pingbacks. All comment-related fields will also be hidden from the edit/"
134
- "quick-edit screens of the affected posts. These settings cannot be "
135
- "overridden for individual posts."
136
- msgstr ""
137
- "Em determinados tipos de postagens - a desativação de comentários também "
138
- "desativará os trackbacks e os pingbacks. Todos os campos relacionados a "
139
- "comentários também ficarão ocultos nas telas de edição / edição rápida das "
140
- "postagens afetadas. Essas configurações não podem ser substituídas por "
141
- "postagens individuais."
142
-
143
- #: admin/pages/comments.php:132
144
- msgid "Select the post types for which comments will be disabled"
145
- msgstr ""
146
- "Selecione os tipos de postagem para os quais os comentários serão desativados"
147
-
148
- #: admin/pages/comments.php:142
149
- msgid "General settings for comments"
150
- msgstr "Configurações gerais para comentários"
151
-
152
- #: admin/pages/comments.php:142
153
- msgid "These settings will help you improve SEO and reduce the amount of spam."
154
- msgstr ""
155
- "Essas configurações ajudarão você a melhorar o SEO e reduzir a quantidade de "
156
- "spam."
157
-
158
- #: admin/pages/comments.php:150
159
- msgid ""
160
- "Tired of spam in the comments? Do visitors leave \"blank\" comments for the "
161
- "sake of a link to their site?"
162
- msgstr ""
163
- "Cansado de spam nos comentários? Os visitantes deixam comentários \"em "
164
- "branco \" por causa de um link para seu site?"
165
-
166
- #: admin/pages/comments.php:150
167
- msgid "Removes the \"Site\" field from the comment form."
168
- msgstr "Remove o campo \"Site \" do formulário de comentários."
169
-
170
- #: admin/pages/comments.php:150
171
- msgid ""
172
- "Works with the standard comment form, if the form is manually written in "
173
- "your theme-it probably will not work!"
174
- msgstr ""
175
- "Funciona com o formulário de comentários padrão, se o formulário for escrito "
176
- "manualmente no seu tema, provavelmente não funcionará!"
177
-
178
- #: admin/pages/comments.php:159
179
- msgid ""
180
- "Superfluous external links from comments, which can be typed from a dozen "
181
- "and more for one article, do not bring anything good for promotion."
182
- msgstr ""
183
- "Links externos supérfluos de comentários, que podem ser digitados de uma "
184
- "dúzia ou mais para um artigo, não trazem nada de bom para a promoção."
185
-
186
- #: admin/pages/comments.php:159
187
- #, php-format
188
- msgid "Replaces the links of this kind of %s, on links of this kind %s"
189
- msgstr "Substitui os links deste tipo de %s , em links desse tipo %s"
190
-
191
- #: admin/pages/comments.php:168
192
- msgid ""
193
- "Up to 90 percent of comments in the blog can be left for the sake of an "
194
- "external link. Even nofollow from page weight loss here does not help."
195
- msgstr ""
196
- "Até 90 por cento dos comentários no blog podem ser deixados por causa de um "
197
- "link externo. Mesmo nofollow da perda de peso da página aqui não ajuda."
198
-
199
- #: admin/pages/comments.php:168
200
- msgid ""
201
- "Replaces the links of the authors of comments on the JavaScript code, it is "
202
- "impossible to distinguish it from usual links."
203
- msgstr ""
204
- "Substitui os links dos autores de comentários no código JavaScript, é "
205
- "impossível distingui-lo dos links usuais."
206
-
207
- #: admin/pages/comments.php:168
208
- msgid "In some Wordpress topics this may not work."
209
- msgstr "Em alguns tópicos do WordPress isso pode não funcionar."
210
-
211
- #: admin/pages/comments.php:175
212
- msgid "Disable XML-RPC"
213
- msgstr "Desativar o XML-RPC"
214
-
215
- #: admin/pages/comments.php:177
216
- msgid ""
217
- "A pingback is basically an automated comment that gets created when another "
218
- "blog links to you. A self-pingback is created when you link to an article "
219
- "within your own blog. Pingbacks are essentially nothing more than spam and "
220
- "simply waste resources."
221
- msgstr ""
222
- "Um pingback é basicamente um comentário automatizado que é criado quando "
223
- "outro blog é direcionado a você. Um pingback automático é criado quando você "
224
- "vincula um artigo ao seu próprio blog. Pingbacks são essencialmente nada "
225
- "mais que spam e simplesmente desperdiçam recursos."
226
-
227
- #: admin/pages/comments.php:177
228
- msgid "Removes the server responses a reference to the xmlrpc file."
229
- msgstr "Remove as respostas do servidor uma referência ao arquivo xmlrpc."
230
-
231
- #: admin/pages/delete-comments.php:36
232
- msgid "Comments cleaner"
233
- msgstr "Comentários mais limpo"
234
-
235
- #: admin/pages/delete-comments.php:75
236
- msgid "All comments have been deleted."
237
- msgstr "Todos os comentários foram apagados."
238
-
239
- #: admin/pages/delete-comments.php:84
240
- msgid ""
241
- "An error occurred while trying to delete comments. Internal error occured. "
242
- "Please try again later."
243
- msgstr ""
244
- "Ocorreu um erro ao tentar excluir comentários. Erro interno ocorrido. Por "
245
- "favor, tente novamente mais tarde."
246
-
247
- #: admin/pages/delete-comments.php:154
248
- msgid ""
249
- "Are you sure you want to delete comments from the database without restoring?"
250
- msgstr ""
251
- "Tem certeza de que deseja excluir comentários do banco de dados sem "
252
- "restaurar?"
253
-
254
- #: admin/pages/delete-comments.php:169
255
- msgid "Delete "
256
- msgstr ""
257
-
258
- #: admin/pages/delete-comments.php:175
259
- msgid "Comments clearing tools"
260
- msgstr "Ferramentas de compensação de comentários"
261
-
262
- #: admin/pages/delete-comments.php:178
263
- msgid ""
264
- "These functions can be useful for global disabling comments or bulk cleaning "
265
- "spam comments."
266
- msgstr ""
267
- "Essas funções podem ser úteis para comentários globais de desativação ou "
268
- "comentários de spam de limpeza em massa."
269
-
270
- #: admin/pages/delete-comments.php:183
271
- msgid "Remove all comments"
272
- msgstr "Remover todos os comentários"
273
-
274
- #: admin/pages/delete-comments.php:185
275
- msgid "You can delete all comments in your database with one click."
276
- msgstr ""
277
- "Você pode excluir todos os comentários em seu banco de dados com um clique."
278
-
279
- #: admin/pages/delete-comments.php:187
280
- msgid "Choose post types"
281
- msgstr "Escolher tipos de postagem"
282
-
283
- #: admin/pages/delete-comments.php:192
284
- msgid "Select all"
285
- msgstr "Selecionar tudo"
286
-
287
- #: admin/pages/delete-comments.php:209
288
- #, php-format
289
- msgid "Delete Woocommerce order notices? (%d)"
290
- msgstr "Excluir avisos de pedido do Woocommerce? ( %d )"
291
-
292
- #: admin/pages/delete-comments.php:215
293
- #, php-format
294
- msgid "Delete (%s)"
295
- msgstr ""
296
-
297
- #: admin/pages/delete-comments.php:222
298
- msgid "Remove spam comments"
299
- msgstr "Remover comentários de spam"
300
-
301
- #: admin/pages/delete-comments.php:224
302
- msgid "You can remove only spam comments from the database with one click."
303
- msgstr ""
304
- "Você pode remover apenas comentários de spam do banco de dados com um clique."
305
-
306
- #: admin/pages/delete-comments.php:226 admin/pages/delete-comments.php:233
307
- #: admin/pages/delete-comments.php:240
308
- #, php-format
309
- msgid "Delete (%d)"
310
- msgstr "Excluir ( %d )"
311
-
312
- #: admin/pages/delete-comments.php:229
313
- msgid "Remove unapproved comments"
314
- msgstr "Remover comentários não aprovados"
315
-
316
- #: admin/pages/delete-comments.php:231
317
- msgid ""
318
- "You can remove only unapproved comments from the database with one click."
319
- msgstr ""
320
- "Você pode remover apenas comentários não aprovados do banco de dados com um "
321
- "clique."
322
-
323
- #: admin/pages/delete-comments.php:236
324
- msgid "Remove trashed comments"
325
- msgstr "Remover comentários na lixeira"
326
-
327
- #: admin/pages/delete-comments.php:238
328
- msgid "You can remove only trashed comments from the database with one click."
329
- msgstr ""
330
- "Você pode remover apenas os comentários da base de dados com um clique."
331
-
332
- #: comments-plus.php:23
333
- msgid ""
334
- "We found that you have the \"Clearfy - disable unused features\" plugin "
335
- "installed, this plugin already has disable comments functions, so you can "
336
- "deactivate plugin \"Disable comments\"!"
337
- msgstr ""
338
- "Descobrimos que você tem o plug-in \"Clearfy - desativar recursos não "
339
- "utilizados \" instalado, este plugin já tem funções de desabilitar "
340
- "comentários, então você pode desativar o plugin \"Desativar comentários \"!"
341
-
342
- #: comments-plus.php:81
343
- msgid "Webcraftic Disable comments"
344
- msgstr "Webcraftic Desabilitar comentários"
345
-
346
- #: includes/classes/class.configurate-comments.php:188
347
- #: includes/classes/class.configurate-comments.php:240
348
- msgid "Comments are closed."
349
- msgstr "Comentários estão fechados."
350
-
351
- #: includes/classes/class.configurate-comments.php:228
352
- #, php-format
353
- msgid ""
354
- "Note: The <em>%s</em> plugin is currently active, and comments are "
355
- "completely disabled on: %s. Many of the settings below will not be "
356
- "applicable for those post types."
357
- msgstr ""
358
- "Nota: O plug-in <em> %s </em> está ativo no momento e os comentários estão "
359
- "completamente desativados em: %s . Muitas das configurações abaixo não serão "
360
  "aplicáveis ​​a esses tipos de postagem."
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: clearfy\n"
4
+ "POT-Creation-Date: 2018-09-06 18:27+0300\n"
5
+ "PO-Revision-Date: 2018-09-06 18:27+0300\n"
6
+ "Last-Translator: alex.kovalevv@gmail.com <alex.kovalevv@gmail.com>\n"
7
+ "Language-Team: Alex Kovalev <alex.kovalevv@gmail.com>\n"
8
+ "Language: pt_BR\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: Poedit 2.1.1\n"
13
+ "X-Poedit-Basepath: ..\n"
14
+ "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
15
+ "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
16
+ "X-Poedit-SourceCharset: UTF-8\n"
17
+ "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c\n"
18
+ "X-Poedit-SearchPath-0: .\n"
19
+ "X-Poedit-SearchPathExcluded-0: libs\n"
20
+ "X-Poedit-SearchPathExcluded-1: components\n"
21
+ "X-Poedit-SearchPathExcluded-2: cache\n"
22
+
23
+ #: admin/boot.php:18
24
+ msgid "Disable comments on the entire site"
25
+ msgstr "Desativar comentários em todo o site"
26
+
27
+ #: admin/boot.php:24 admin/pages/comments.php:129
28
+ msgid "Select post types"
29
+ msgstr "Selecione os tipos de postagem"
30
+
31
+ #: admin/boot.php:29 admin/pages/comments.php:157
32
+ msgid "Replace external links in comments on the JavaScript code"
33
+ msgstr "Substituir links externos nos comentários no código JavaScript"
34
+
35
+ #: admin/boot.php:34 admin/pages/comments.php:166
36
+ msgid "Replace external links from comment authors on the JavaScript code"
37
+ msgstr ""
38
+ "Substituir links externos de autores de comentários no código JavaScript"
39
+
40
+ #: admin/boot.php:39
41
+ msgid "Disable X-Pingback"
42
+ msgstr "Desativar X-Pingback"
43
+
44
+ #: admin/boot.php:44 admin/pages/comments.php:148
45
+ msgid "Remove field \"site\" in comment form"
46
+ msgstr "Remover campo \"site \" no formulário de comentário"
47
+
48
+ #: admin/boot.php:56
49
+ msgid "One click disable all comments"
50
+ msgstr "Um clique desativa todos os comentários"
51
+
52
+ #: admin/boot.php:77
53
+ msgid "Get ultimate plugin free"
54
+ msgstr "Obtenha o melhor plugin grátis"
55
+
56
+ #: admin/pages/comments.php:33 admin/pages/comments.php:94
57
+ msgid "Disable comments"
58
+ msgstr "Desativar comentários"
59
+
60
+ #: admin/pages/comments.php:47
61
+ msgid "Comments"
62
+ msgstr "Comentários"
63
+
64
+ #: admin/pages/comments.php:48
65
+ msgid "General"
66
+ msgstr "Geral"
67
+
68
+ #: admin/pages/comments.php:81
69
+ msgid "Global disabling of comments"
70
+ msgstr "Desativação global de comentários"
71
+
72
+ #: admin/pages/comments.php:81
73
+ msgid ""
74
+ "What is the difference between these and native WordPress functions? "
75
+ "WordPress disables comments only for new posts! Using the functions below, "
76
+ "you can disable comments globally, even for old posts, and you can choose "
77
+ "which post types comments to disable. The plugin also disables the comment "
78
+ "functionality itself, which creates a certain load on the site."
79
+ msgstr ""
80
+ "Qual é a diferença entre essas e funções nativas do WordPress? O WordPress "
81
+ "desativa os comentários apenas para novas postagens! Usando as funções "
82
+ "abaixo, você pode desativar os comentários globalmente, mesmo para postagens "
83
+ "antigas, e pode escolher quais comentários de tipos de post serão "
84
+ "desativados. O plug-in também desativa a própria funcionalidade de "
85
+ "comentários, o que cria uma certa carga no site."
86
+
87
+ #: admin/pages/comments.php:96
88
+ msgid "Not disable"
89
+ msgstr "Não desativar"
90
+
91
+ #: admin/pages/comments.php:99
92
+ msgid "Everywhere"
93
+ msgstr "Em toda parte"
94
+
95
+ #: admin/pages/comments.php:100
96
+ #, php-format
97
+ msgid ""
98
+ "You can delete all comments in the database by clicking on this link (<a "
99
+ "href=\"%s\">cleaning comments in database</a>)."
100
+ msgstr ""
101
+ "Você pode excluir todos os comentários no banco de dados clicando neste link "
102
+ "(<a href=\"%s\"> limpando comentários no banco de dados </a>)."
103
+
104
+ #: admin/pages/comments.php:104
105
+ msgid "On certain post types"
106
+ msgstr "Em certos tipos de postagem"
107
+
108
+ #: admin/pages/comments.php:105
109
+ #, php-format
110
+ msgid ""
111
+ "You can delete all comments for the selected post types. Select the post "
112
+ "types below and save the settings. After that, click the link (<a href=\"%s"
113
+ "\">delete all comments for the selected post types in database</a>)."
114
+ msgstr ""
115
+ "Você pode excluir todos os comentários para os tipos de postagem "
116
+ "selecionados. Selecione os tipos de postagem abaixo e salve as "
117
+ "configurações. Depois disso, clique no link (<a href=\"%s\"> exclua todos os "
118
+ "comentários para os tipos de postagem selecionados no banco de dados </a>)."
119
+
120
+ #: admin/pages/comments.php:109
121
+ msgid ""
122
+ "Everywhere - Warning: This option is global and will affect your entire "
123
+ "site. Use it only if you want to disable comments everywhere. A complete "
124
+ "description of what this option does is available here"
125
+ msgstr ""
126
+ "Em todo lugar - Aviso: essa opção é global e afetará todo o seu site. Use-o "
127
+ "somente se você quiser desabilitar os comentários em todos os lugares. Uma "
128
+ "descrição completa do que esta opção faz está disponível aqui"
129
+
130
+ #: admin/pages/comments.php:109
131
+ msgid ""
132
+ "On certain post types - Disabling comments will also disable trackbacks and "
133
+ "pingbacks. All comment-related fields will also be hidden from the edit/"
134
+ "quick-edit screens of the affected posts. These settings cannot be "
135
+ "overridden for individual posts."
136
+ msgstr ""
137
+ "Em determinados tipos de postagens - a desativação de comentários também "
138
+ "desativará os trackbacks e os pingbacks. Todos os campos relacionados a "
139
+ "comentários também ficarão ocultos nas telas de edição / edição rápida das "
140
+ "postagens afetadas. Essas configurações não podem ser substituídas por "
141
+ "postagens individuais."
142
+
143
+ #: admin/pages/comments.php:132
144
+ msgid "Select the post types for which comments will be disabled"
145
+ msgstr ""
146
+ "Selecione os tipos de postagem para os quais os comentários serão desativados"
147
+
148
+ #: admin/pages/comments.php:142
149
+ msgid "General settings for comments"
150
+ msgstr "Configurações gerais para comentários"
151
+
152
+ #: admin/pages/comments.php:142
153
+ msgid "These settings will help you improve SEO and reduce the amount of spam."
154
+ msgstr ""
155
+ "Essas configurações ajudarão você a melhorar o SEO e reduzir a quantidade de "
156
+ "spam."
157
+
158
+ #: admin/pages/comments.php:150
159
+ msgid ""
160
+ "Tired of spam in the comments? Do visitors leave \"blank\" comments for the "
161
+ "sake of a link to their site?"
162
+ msgstr ""
163
+ "Cansado de spam nos comentários? Os visitantes deixam comentários \"em "
164
+ "branco \" por causa de um link para seu site?"
165
+
166
+ #: admin/pages/comments.php:150
167
+ msgid "Removes the \"Site\" field from the comment form."
168
+ msgstr "Remove o campo \"Site \" do formulário de comentários."
169
+
170
+ #: admin/pages/comments.php:150
171
+ msgid ""
172
+ "Works with the standard comment form, if the form is manually written in "
173
+ "your theme-it probably will not work!"
174
+ msgstr ""
175
+ "Funciona com o formulário de comentários padrão, se o formulário for escrito "
176
+ "manualmente no seu tema, provavelmente não funcionará!"
177
+
178
+ #: admin/pages/comments.php:159
179
+ msgid ""
180
+ "Superfluous external links from comments, which can be typed from a dozen "
181
+ "and more for one article, do not bring anything good for promotion."
182
+ msgstr ""
183
+ "Links externos supérfluos de comentários, que podem ser digitados de uma "
184
+ "dúzia ou mais para um artigo, não trazem nada de bom para a promoção."
185
+
186
+ #: admin/pages/comments.php:159
187
+ #, php-format
188
+ msgid "Replaces the links of this kind of %s, on links of this kind %s"
189
+ msgstr "Substitui os links deste tipo de %s , em links desse tipo %s"
190
+
191
+ #: admin/pages/comments.php:168
192
+ msgid ""
193
+ "Up to 90 percent of comments in the blog can be left for the sake of an "
194
+ "external link. Even nofollow from page weight loss here does not help."
195
+ msgstr ""
196
+ "Até 90 por cento dos comentários no blog podem ser deixados por causa de um "
197
+ "link externo. Mesmo nofollow da perda de peso da página aqui não ajuda."
198
+
199
+ #: admin/pages/comments.php:168
200
+ msgid ""
201
+ "Replaces the links of the authors of comments on the JavaScript code, it is "
202
+ "impossible to distinguish it from usual links."
203
+ msgstr ""
204
+ "Substitui os links dos autores de comentários no código JavaScript, é "
205
+ "impossível distingui-lo dos links usuais."
206
+
207
+ #: admin/pages/comments.php:168
208
+ msgid "In some Wordpress topics this may not work."
209
+ msgstr "Em alguns tópicos do WordPress isso pode não funcionar."
210
+
211
+ #: admin/pages/comments.php:175
212
+ msgid "Disable XML-RPC"
213
+ msgstr "Desativar o XML-RPC"
214
+
215
+ #: admin/pages/comments.php:177
216
+ msgid ""
217
+ "A pingback is basically an automated comment that gets created when another "
218
+ "blog links to you. A self-pingback is created when you link to an article "
219
+ "within your own blog. Pingbacks are essentially nothing more than spam and "
220
+ "simply waste resources."
221
+ msgstr ""
222
+ "Um pingback é basicamente um comentário automatizado que é criado quando "
223
+ "outro blog é direcionado a você. Um pingback automático é criado quando você "
224
+ "vincula um artigo ao seu próprio blog. Pingbacks são essencialmente nada "
225
+ "mais que spam e simplesmente desperdiçam recursos."
226
+
227
+ #: admin/pages/comments.php:177
228
+ msgid "Removes the server responses a reference to the xmlrpc file."
229
+ msgstr "Remove as respostas do servidor uma referência ao arquivo xmlrpc."
230
+
231
+ #: admin/pages/delete-comments.php:36
232
+ msgid "Comments cleaner"
233
+ msgstr "Comentários mais limpo"
234
+
235
+ #: admin/pages/delete-comments.php:75
236
+ msgid "All comments have been deleted."
237
+ msgstr "Todos os comentários foram apagados."
238
+
239
+ #: admin/pages/delete-comments.php:84
240
+ msgid ""
241
+ "An error occurred while trying to delete comments. Internal error occured. "
242
+ "Please try again later."
243
+ msgstr ""
244
+ "Ocorreu um erro ao tentar excluir comentários. Erro interno ocorrido. Por "
245
+ "favor, tente novamente mais tarde."
246
+
247
+ #: admin/pages/delete-comments.php:154
248
+ msgid ""
249
+ "Are you sure you want to delete comments from the database without restoring?"
250
+ msgstr ""
251
+ "Tem certeza de que deseja excluir comentários do banco de dados sem "
252
+ "restaurar?"
253
+
254
+ #: admin/pages/delete-comments.php:169
255
+ msgid "Delete "
256
+ msgstr ""
257
+
258
+ #: admin/pages/delete-comments.php:175
259
+ msgid "Comments clearing tools"
260
+ msgstr "Ferramentas de compensação de comentários"
261
+
262
+ #: admin/pages/delete-comments.php:178
263
+ msgid ""
264
+ "These functions can be useful for global disabling comments or bulk cleaning "
265
+ "spam comments."
266
+ msgstr ""
267
+ "Essas funções podem ser úteis para comentários globais de desativação ou "
268
+ "comentários de spam de limpeza em massa."
269
+
270
+ #: admin/pages/delete-comments.php:183
271
+ msgid "Remove all comments"
272
+ msgstr "Remover todos os comentários"
273
+
274
+ #: admin/pages/delete-comments.php:185
275
+ msgid "You can delete all comments in your database with one click."
276
+ msgstr ""
277
+ "Você pode excluir todos os comentários em seu banco de dados com um clique."
278
+
279
+ #: admin/pages/delete-comments.php:187
280
+ msgid "Choose post types"
281
+ msgstr "Escolher tipos de postagem"
282
+
283
+ #: admin/pages/delete-comments.php:192
284
+ msgid "Select all"
285
+ msgstr "Selecionar tudo"
286
+
287
+ #: admin/pages/delete-comments.php:209
288
+ #, php-format
289
+ msgid "Delete Woocommerce order notices? (%d)"
290
+ msgstr "Excluir avisos de pedido do Woocommerce? ( %d )"
291
+
292
+ #: admin/pages/delete-comments.php:215
293
+ #, php-format
294
+ msgid "Delete (%s)"
295
+ msgstr ""
296
+
297
+ #: admin/pages/delete-comments.php:222
298
+ msgid "Remove spam comments"
299
+ msgstr "Remover comentários de spam"
300
+
301
+ #: admin/pages/delete-comments.php:224
302
+ msgid "You can remove only spam comments from the database with one click."
303
+ msgstr ""
304
+ "Você pode remover apenas comentários de spam do banco de dados com um clique."
305
+
306
+ #: admin/pages/delete-comments.php:226 admin/pages/delete-comments.php:233
307
+ #: admin/pages/delete-comments.php:240
308
+ #, php-format
309
+ msgid "Delete (%d)"
310
+ msgstr "Excluir ( %d )"
311
+
312
+ #: admin/pages/delete-comments.php:229
313
+ msgid "Remove unapproved comments"
314
+ msgstr "Remover comentários não aprovados"
315
+
316
+ #: admin/pages/delete-comments.php:231
317
+ msgid ""
318
+ "You can remove only unapproved comments from the database with one click."
319
+ msgstr ""
320
+ "Você pode remover apenas comentários não aprovados do banco de dados com um "
321
+ "clique."
322
+
323
+ #: admin/pages/delete-comments.php:236
324
+ msgid "Remove trashed comments"
325
+ msgstr "Remover comentários na lixeira"
326
+
327
+ #: admin/pages/delete-comments.php:238
328
+ msgid "You can remove only trashed comments from the database with one click."
329
+ msgstr ""
330
+ "Você pode remover apenas os comentários da base de dados com um clique."
331
+
332
+ #: comments-plus.php:23
333
+ msgid ""
334
+ "We found that you have the \"Clearfy - disable unused features\" plugin "
335
+ "installed, this plugin already has disable comments functions, so you can "
336
+ "deactivate plugin \"Disable comments\"!"
337
+ msgstr ""
338
+ "Descobrimos que você tem o plug-in \"Clearfy - desativar recursos não "
339
+ "utilizados \" instalado, este plugin já tem funções de desabilitar "
340
+ "comentários, então você pode desativar o plugin \"Desativar comentários \"!"
341
+
342
+ #: comments-plus.php:81
343
+ msgid "Webcraftic Disable comments"
344
+ msgstr "Webcraftic Desabilitar comentários"
345
+
346
+ #: includes/classes/class.configurate-comments.php:188
347
+ #: includes/classes/class.configurate-comments.php:240
348
+ msgid "Comments are closed."
349
+ msgstr "Comentários estão fechados."
350
+
351
+ #: includes/classes/class.configurate-comments.php:228
352
+ #, php-format
353
+ msgid ""
354
+ "Note: The <em>%s</em> plugin is currently active, and comments are "
355
+ "completely disabled on: %s. Many of the settings below will not be "
356
+ "applicable for those post types."
357
+ msgstr ""
358
+ "Nota: O plug-in <em> %s </em> está ativo no momento e os comentários estão "
359
+ "completamente desativados em: %s . Muitas das configurações abaixo não serão "
360
  "aplicáveis ​​a esses tipos de postagem."
components/comments-plus/languages/comments-plus-ru_RU.mo CHANGED
Binary file
components/comments-plus/languages/comments-plus-ru_RU.po CHANGED
@@ -1,399 +1,427 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: clearfy\n"
4
- "POT-Creation-Date: 2018-03-14 15:41+0300\n"
5
- "PO-Revision-Date: 2018-03-14 15:43+0300\n"
6
- "Last-Translator: alex.kovalevv@gmail.com <alex.kovalevv@gmail.com>\n"
7
- "Language-Team: Alex Kovalev <alex.kovalevv@gmail.com>\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: Poedit 1.8.8\n"
13
- "X-Poedit-Basepath: ..\n"
14
- "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
15
- "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
16
- "X-Poedit-SourceCharset: UTF-8\n"
17
- "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c\n"
18
- "X-Poedit-SearchPath-0: .\n"
19
- "X-Poedit-SearchPathExcluded-0: libs\n"
20
-
21
- #: admin/boot.php:29
22
- msgid "Disable comments on the entire site"
23
- msgstr "Отключить комментарии на всем сайте"
24
-
25
- #: admin/boot.php:35 admin/pages/comments.php:112
26
- msgid "Select post types"
27
- msgstr "Выбрать тип записи"
28
-
29
- #: admin/boot.php:40 admin/pages/comments.php:140
30
- msgid "Replace external links in comments on the JavaScript code"
31
- msgstr "Заменить внешние ссылки в комментариях на JavaScript код"
32
-
33
- #: admin/boot.php:45 admin/pages/comments.php:149
34
- msgid "Replace external links from comment authors on the JavaScript code"
35
- msgstr "Заменить внешние ссылки от авторов комментариев на код JavaScript"
36
-
37
- #: admin/boot.php:50
38
- msgid "Disable X-Pingback"
39
- msgstr "Убрать ссылку на X-Pingback и возможность спамить pingback-ами"
40
-
41
- #: admin/boot.php:55 admin/pages/comments.php:131
42
- msgid "Remove field \"site\" in comment form"
43
- msgstr "Удаляет поле \"Сайт\" в форме комментариев"
44
-
45
- #: admin/boot.php:67
46
- msgid "One click disable all comments"
47
- msgstr "Отключить все комментарии в один клик"
48
-
49
- #: admin/boot.php:79
50
- msgid "Get ultimate plugin free"
51
- msgstr "Получите полную версию плагина бесплатно"
52
-
53
- #: admin/pages/comments.php:33 admin/pages/comments.php:77
54
- msgid "Disable comments"
55
- msgstr "Отключить комментарии"
56
-
57
- #: admin/pages/comments.php:47
58
- msgid "Comments"
59
- msgstr "Комментарии"
60
-
61
- #: admin/pages/comments.php:48
62
- msgid "General"
63
- msgstr "Основные"
64
-
65
- #: admin/pages/comments.php:64
66
- msgid "Global disabling of comments"
67
- msgstr "Глобальное отключение комментариев"
68
-
69
- #: admin/pages/comments.php:64
70
- msgid ""
71
- "What is the difference between these and native WordPress functions? "
72
- "WordPress disables comments only for new posts! Using the functions below, "
73
- "you can disable comments globally, even for old posts, and you can choose "
74
- "which post types comments to disable. The plugin also disables the comment "
75
- "functionality itself, which creates a certain load on the site."
76
- msgstr ""
77
- "Чем отличается эти функции от нативных функций Wordpress? Wordpress "
78
- "отключает комментарии только для новых записей! С помощью функций ниже, вы "
79
- "можете отключить комментарии глобально, даже для старых записей, причем вы "
80
- "можете выбрать для каких типов записей нужно отключить комментарии. Плагин "
81
- "также отключает сам функционал комментариев, который создает определенную "
82
- "нагрузку на сайт."
83
-
84
- #: admin/pages/comments.php:79
85
- msgid "Not disable"
86
- msgstr "Не отключать"
87
-
88
- #: admin/pages/comments.php:82
89
- msgid "Everywhere"
90
- msgstr "Повсюду"
91
-
92
- #: admin/pages/comments.php:83
93
- #, php-format
94
- msgid ""
95
- "You can delete all comments in the database by clicking on this link (<a "
96
- "href=\"%s\">cleaning comments in database</a>)."
97
- msgstr ""
98
- "Вы можете удалить все комментарии в базе данных, нажав на эту ссылку ( <a "
99
- "href=\"%s\">очистка комментариев в базе данных</a> )."
100
-
101
- #: admin/pages/comments.php:87
102
- msgid "On certain post types"
103
- msgstr "Только выбранные типы записей"
104
-
105
- #: admin/pages/comments.php:88
106
- #, php-format
107
- msgid ""
108
- "You can delete all comments for the selected post types. Select the post "
109
- "types below and save the settings. After that, click the link (<a href=\"%s"
110
- "\">delete all comments for the selected post types in database</a>)."
111
- msgstr ""
112
- "Вы можете удалить все комментарии для выбранных типов записей. Выберите типы "
113
- "записей ниже и сохраните настройки. После этого нажмите ссылку ( <a href=\"%s"
114
- "\">удалите все комментарии для выбранных типов записей в базе данных</a> )."
115
-
116
- #: admin/pages/comments.php:92
117
- msgid ""
118
- "Everywhere - Warning: This option is global and will affect your entire "
119
- "site. Use it only if you want to disable comments everywhere. A complete "
120
- "description of what this option does is available here"
121
- msgstr ""
122
- "Повсюду - предупреждение: этот параметр является глобальным и повлияет на "
123
- "весь ваш сайт. Используйте его только в том случае, если вы хотите отключить "
124
- "комментарии повсюду. "
125
-
126
- #: admin/pages/comments.php:92
127
- msgid ""
128
- "On certain post types - Disabling comments will also disable trackbacks and "
129
- "pingbacks. All comment-related fields will also be hidden from the edit/"
130
- "quick-edit screens of the affected posts. These settings cannot be "
131
- "overridden for individual posts."
132
- msgstr ""
133
- "В некоторых типах сообщений - отключение комментариев также отключает "
134
- "трекбэки и pingback. Все поля, связанные с комментариями, также будут скрыты "
135
- "от экранов редактирования / быстрого редактирования затронутых сообщений. "
136
- "Эти настройки нельзя переопределять для отдельных сообщений."
137
-
138
- #: admin/pages/comments.php:115
139
- msgid "Select the post types for which comments will be disabled"
140
- msgstr "Выберите типы записей, для которых комментарии будут отключены."
141
-
142
- #: admin/pages/comments.php:125
143
- msgid "General settings for comments"
144
- msgstr "Общие настройки комментариев"
145
-
146
- #: admin/pages/comments.php:125
147
- msgid "These settings will help you improve SEO and reduce the amount of spam."
148
- msgstr "Эти настройки помогут вам улучшить SEO и уменьшить количество спама."
149
-
150
- #: admin/pages/comments.php:133
151
- msgid ""
152
- "Tired of spam in the comments? Do visitors leave \"blank\" comments for the "
153
- "sake of a link to their site?"
154
- msgstr ""
155
- "Надоел спам в комментариях? Посетители оставляют «пустые» комментарии ради "
156
- "ссылки на свой сайт?"
157
-
158
- #: admin/pages/comments.php:133
159
- msgid "Removes the \"Site\" field from the comment form."
160
- msgstr "Убирает поле «Сайт» из формы комментирования."
161
-
162
- #: admin/pages/comments.php:133
163
- msgid ""
164
- "Works with the standard comment form, if the form is manually written in "
165
- "your theme-it probably will not work!"
166
- msgstr ""
167
- "Работает со стандартной формой комментирования, если в Вашей теме форма "
168
- "прописана вручную - скорей всего не сработает!"
169
-
170
- #: admin/pages/comments.php:142
171
- msgid ""
172
- "Superfluous external links from comments, which can be typed from a dozen "
173
- "and more for one article, do not bring anything good for promotion."
174
- msgstr ""
175
- "Внешние ссылки в комментариях, которых может быть десятки или больше на "
176
- "одной странице, могут ухудшить продвижение вашего сайта."
177
-
178
- #: admin/pages/comments.php:142
179
- #, php-format
180
- msgid "Replaces the links of this kind of %s, on links of this kind %s"
181
- msgstr ""
182
- "Заменяет ссылки %s, на span тег и устанавливает переход с помощью JavaScript "
183
- "%s"
184
-
185
- #: admin/pages/comments.php:151
186
- msgid ""
187
- "Up to 90 percent of comments in the blog can be left for the sake of an "
188
- "external link. Even nofollow from page weight loss here does not help."
189
- msgstr ""
190
- "До 90 процентов комментариев в блоге оставляют ради внешней ссылки. Не "
191
- "поможет даже nofollow от потери веса страницы."
192
-
193
- #: admin/pages/comments.php:151
194
- msgid ""
195
- "Replaces the links of the authors of comments on the JavaScript code, it is "
196
- "impossible to distinguish it from usual links."
197
- msgstr ""
198
- "Заменяет ссылки авторов комментариев на JavaScript код, его невозможно "
199
- "отличить от обычной ссылки."
200
-
201
- #: admin/pages/comments.php:151
202
- msgid "In some Wordpress topics this may not work."
203
- msgstr "В некоторых темах Wordpress это может не сработать."
204
-
205
- #: admin/pages/comments.php:158
206
- msgid "Disable XML-RPC"
207
- msgstr "Отключить XML-RPC"
208
-
209
- #: admin/pages/comments.php:160
210
- msgid ""
211
- "A pingback is basically an automated comment that gets created when another "
212
- "blog links to you. A self-pingback is created when you link to an article "
213
- "within your own blog. Pingbacks are essentially nothing more than spam and "
214
- "simply waste resources."
215
- msgstr ""
216
- "Pingback по-существу автоматизированных комментарий, который создается, "
217
- "когда другой блог ссылается на вас. Self-pingback создается, когда вы "
218
- "оставили ссылку на статью в своем блоге. Pingbacks по существу являются не "
219
- "более чем спам и пустая трата ресурсов вашего сайта."
220
-
221
- #: admin/pages/comments.php:160
222
- msgid "Removes the server responses a reference to the xmlrpc file."
223
- msgstr "Удаляет ссылку на xmlrpc-файл и ответ сервера."
224
-
225
- #: admin/pages/delete-comments.php:36
226
- msgid "Comments cleaner"
227
- msgstr "Очистка комментариев"
228
-
229
- #: admin/pages/delete-comments.php:57
230
- msgid "All comments have been deleted."
231
- msgstr "Все комментарии были удалены."
232
-
233
- #: admin/pages/delete-comments.php:66
234
- msgid ""
235
- "An error occurred while trying to delete comments. Internal error occured. "
236
- "Please try again later."
237
- msgstr ""
238
- "При попытке удалить комментарии произошла ошибка. Пожалуйста, повторите "
239
- "попытку позже."
240
-
241
- #: admin/pages/delete-comments.php:127
242
- msgid ""
243
- "Are you sure you want to delete comments from the database without restoring?"
244
- msgstr ""
245
- "Вы уверены, что вы хотите удалить комментарии из базы данных без "
246
- "восстановления?"
247
-
248
- #: admin/pages/delete-comments.php:139
249
- msgid "Comments clearing tools"
250
- msgstr "Комментарии очищающие инструменты"
251
-
252
- #: admin/pages/delete-comments.php:142
253
- msgid ""
254
- "These functions can be useful for global disabling comments or bulk cleaning "
255
- "spam comments."
256
- msgstr ""
257
- "Эти функции могут быть полезны для глобальных отключений комментариев или "
258
- "массовой очистки спама комментариев."
259
-
260
- #: admin/pages/delete-comments.php:147
261
- msgid "Remove all comments"
262
- msgstr "Удалить все комментарии"
263
-
264
- #: admin/pages/delete-comments.php:149
265
- msgid "You can delete all comments in your database with one click."
266
- msgstr "Вы можете удалить все комментарии в базе данных с одним щелчком мыши."
267
-
268
- #: admin/pages/delete-comments.php:151
269
- msgid "Choose post types"
270
- msgstr "Выберите типы записей"
271
-
272
- #: admin/pages/delete-comments.php:156
273
- msgid "Select all"
274
- msgstr "Выбрать все"
275
-
276
- #: admin/pages/delete-comments.php:172
277
- #, php-format
278
- msgid "Delete Woocommerce order notices? (%d)"
279
- msgstr "Удалять заметки от заказов Woocommerce? (%d)"
280
-
281
- #: admin/pages/delete-comments.php:177 admin/pages/delete-comments.php:188
282
- #: admin/pages/delete-comments.php:195 admin/pages/delete-comments.php:202
283
- #, php-format
284
- msgid "Delete (%d)"
285
- msgstr "Удалить (%d)"
286
-
287
- #: admin/pages/delete-comments.php:184
288
- msgid "Remove spam comments"
289
- msgstr "Удалить спам комментарии"
290
-
291
- #: admin/pages/delete-comments.php:186
292
- msgid "You can remove only spam comments from the database with one click."
293
- msgstr ""
294
- "Вы можете одним нажатием удалить только спам комментарии из базы данных."
295
-
296
- #: admin/pages/delete-comments.php:191
297
- msgid "Remove unapproved comments"
298
- msgstr "Удалить неподтвержденные комментарии"
299
-
300
- #: admin/pages/delete-comments.php:193
301
- msgid ""
302
- "You can remove only unapproved comments from the database with one click."
303
- msgstr ""
304
- "Вы можете одним нажатием удалить только не подтвержденные комментарии из "
305
- "базы данных."
306
-
307
- #: admin/pages/delete-comments.php:198
308
- msgid "Remove trashed comments"
309
- msgstr "Удалить комментарии из корзины"
310
-
311
- #: admin/pages/delete-comments.php:200
312
- msgid "You can remove only trashed comments from the database with one click."
313
- msgstr "Вы можете одним нажатием удалить только комментарии из корзины."
314
-
315
- #: comments-plus.php:22
316
- msgid ""
317
- "We found that you have the \"Clearfy - disable unused features\" plugin "
318
- "installed, this plugin already has disable comments functions, so you can "
319
- "deactivate plugin \"Disable comments\"!"
320
- msgstr ""
321
- "Мы обнаружили, что у вас установлен плагин «Clearfy - отключить "
322
- "неиспользуемые функции», этот плагин уже имеет функции отключения "
323
- "комментариев, поэтому вы можете отключить плагин «Отключить комментарии»!"
324
-
325
- #: comments-plus.php:80
326
- msgid "Webcraftic Disable comments"
327
- msgstr "Webcraftic отключить комментарии"
328
-
329
- #: includes/classes/class.configurate-comments.php:188
330
- #: includes/classes/class.configurate-comments.php:240
331
- msgid "Comments are closed."
332
- msgstr "Комментарии Закрыты."
333
-
334
- #: includes/classes/class.configurate-comments.php:228
335
- #, php-format
336
- msgid ""
337
- "Note: The <em>%s</em> plugin is currently active, and comments are "
338
- "completely disabled on: %s. Many of the settings below will not be "
339
- "applicable for those post types."
340
- msgstr ""
341
- "Примечание. Плагин <em>%s</em> в настоящий момент активен, и комментарии "
342
- "полностью отключены: %s. Многие из приведенных ниже настроек не будут "
343
- "применяться для этих типов сообщений."
344
-
345
- #~ msgid "Recommended"
346
- #~ msgstr "Рекомендовано"
347
-
348
- #~ msgid "You are not allowed to view this page."
349
- #~ msgstr "Вам не разрешено просматривать эту страницу."
350
-
351
- #~ msgid "You do not have the selected post types!"
352
- #~ msgstr "Вы не выбрали еще ни одного типа записей!"
353
-
354
- #~ msgid "No comments available for deletion."
355
- #~ msgstr "Нет комментариев для удаления."
356
-
357
- #~ msgid ""
358
- #~ "Are you sure that you desire to delete all comments from the database?"
359
- #~ msgstr "Вы уверены, что хотите удалить все комментарии из базы данных?"
360
-
361
- #~ msgid ""
362
- #~ "Deleting comments will remove existing comment entries in the database "
363
- #~ "and cannot be reverted without a database backup."
364
- #~ msgstr ""
365
- #~ "При удалении комментариев удаляются существующие записи комментариев в "
366
- #~ "базе данных, они не могут быть восстановлены без резервного копирования "
367
- #~ "базы данных."
368
-
369
- #~ msgid "You have %s comments"
370
- #~ msgstr "У вас есть %s комментариев"
371
-
372
- #~ msgid "Yes, I'm sure"
373
- #~ msgstr "Да, я уверен"
374
-
375
- #~ msgid "No, return back"
376
- #~ msgstr "Нет, вернуться"
377
-
378
- #~ msgid ""
379
- #~ "Are you sure that you desire to delete all comments from the database for "
380
- #~ "the selected post types (%s)?"
381
- #~ msgstr ""
382
- #~ "Вы уверены, что хотите удалить все комментарии из базы данных для "
383
- #~ "выбранных типов записей (%s)?"
384
-
385
- #~ msgid "Webcraftic comments tweaks"
386
- #~ msgstr "Webcraftic инструменты комментариев"
387
-
388
- #~ msgid ""
389
- #~ "We found that you have the \"Clearfy - disable unused features\" plugin "
390
- #~ "installed, this plugin already has disable comments functions, so you can "
391
- #~ "deactivate plugin \"Comments tweaks\"!"
392
- #~ msgstr ""
393
- #~ "Мы обнаружили, что у вас установлен плагин «Clearfy - отключить "
394
- #~ "неиспользуемые функции», этот плагин уже имеет функции отключения "
395
- #~ "комментариев, поэтому вы можете отключить плагин «Инструменты "
396
- #~ "комментариев»!"
397
-
398
- #~ msgid "Disable all comments"
399
- #~ msgstr "Отключить все комментарии"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: clearfy\n"
4
+ "POT-Creation-Date: 2018-10-16 22:46+0300\n"
5
+ "PO-Revision-Date: 2018-10-16 23:23+0300\n"
6
+ "Last-Translator: alex.kovalevv@gmail.com <alex.kovalevv@gmail.com>\n"
7
+ "Language-Team: Alex Kovalev <alex.kovalevv@gmail.com>\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: Poedit 2.1.1\n"
13
+ "X-Poedit-Basepath: ..\n"
14
+ "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
15
+ "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
16
+ "X-Poedit-SourceCharset: UTF-8\n"
17
+ "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c\n"
18
+ "X-Poedit-SearchPath-0: .\n"
19
+ "X-Poedit-SearchPathExcluded-0: libs\n"
20
+
21
+ #: admin/boot.php:18
22
+ msgid "Disable comments on the entire site"
23
+ msgstr "Отключить комментарии на всем сайте"
24
+
25
+ #: admin/boot.php:24 admin/pages/comments.php:127
26
+ msgid "Select post types"
27
+ msgstr "Выбрать тип записи"
28
+
29
+ #: admin/boot.php:29 admin/pages/comments.php:167
30
+ msgid "Replace external links in comments on the JavaScript code"
31
+ msgstr "Заменить внешние ссылки в комментариях на JavaScript код"
32
+
33
+ #: admin/boot.php:34 admin/pages/comments.php:176
34
+ msgid "Replace external links from comment authors on the JavaScript code"
35
+ msgstr "Заменить внешние ссылки от авторов комментариев на код JavaScript"
36
+
37
+ #: admin/boot.php:39
38
+ msgid "Disable X-Pingback"
39
+ msgstr "Убрать ссылку на X-Pingback и возможность спамить pingback-ами"
40
+
41
+ #: admin/boot.php:44 admin/pages/comments.php:158
42
+ msgid "Remove field \"site\" in comment form"
43
+ msgstr "Удаляет поле \"Сайт\" в форме комментариев"
44
+
45
+ #: admin/boot.php:56
46
+ msgid "One click disable all comments"
47
+ msgstr "Отключить все комментарии в один клик"
48
+
49
+ #: admin/boot.php:77
50
+ msgid "Get ultimate plugin free"
51
+ msgstr "Получите полную версию плагина бесплатно"
52
+
53
+ #: admin/pages/comments.php:38 admin/pages/comments.php:92
54
+ msgid "Disable comments"
55
+ msgstr "Отключить комментарии"
56
+
57
+ #: admin/pages/comments.php:39
58
+ msgid "Manage site comments"
59
+ msgstr "Упр. комментариями"
60
+
61
+ #: admin/pages/comments.php:52
62
+ msgid "Comments"
63
+ msgstr "Комментарии"
64
+
65
+ #: admin/pages/comments.php:52
66
+ msgid "General"
67
+ msgstr "Основные"
68
+
69
+ #: admin/pages/comments.php:67
70
+ msgid "Global disabling of comments"
71
+ msgstr "Глобальное отключение комментариев"
72
+
73
+ #: admin/pages/comments.php:67
74
+ msgid ""
75
+ "What is the difference between these and native WordPress functions? "
76
+ "WordPress disables comments only for new posts! Using the functions below, "
77
+ "you can disable comments globally, even for old posts, and you can choose "
78
+ "which post types comments to disable. The plugin also disables the comment "
79
+ "functionality itself, which creates a certain load on the site."
80
+ msgstr ""
81
+ "Чем отличается эти функции от нативных функций Wordpress? Wordpress "
82
+ "отключает комментарии только для новых записей! С помощью функций ниже, вы "
83
+ "можете отключить комментарии глобально, даже для старых записей, причем вы "
84
+ "можете выбрать для каких типов записей нужно отключить комментарии. Плагин "
85
+ "также отключает сам функционал комментариев, который создает определенную "
86
+ "нагрузку на сайт."
87
+
88
+ #: admin/pages/comments.php:94
89
+ msgid "Not disable"
90
+ msgstr "Не отключать"
91
+
92
+ #: admin/pages/comments.php:97
93
+ msgid "Everywhere"
94
+ msgstr "Повсюду"
95
+
96
+ #: admin/pages/comments.php:98
97
+ #, php-format
98
+ msgid ""
99
+ "You can delete all comments in the database by clicking on this link (<a "
100
+ "href=\"%s\">cleaning comments in database</a>)."
101
+ msgstr ""
102
+ "Вы можете удалить все комментарии в базе данных, нажав на эту ссылку ( <a "
103
+ "href=\"%s\">очистка комментариев в базе данных</a> )."
104
+
105
+ #: admin/pages/comments.php:102
106
+ msgid "On certain post types"
107
+ msgstr "Только выбранные типы записей"
108
+
109
+ #: admin/pages/comments.php:103
110
+ #, php-format
111
+ msgid ""
112
+ "You can delete all comments for the selected post types. Select the post "
113
+ "types below and save the settings. After that, click the link (<a href=\"%s"
114
+ "\">delete all comments for the selected post types in database</a>)."
115
+ msgstr ""
116
+ "Вы можете удалить все комментарии для выбранных типов записей. Выберите типы "
117
+ "записей ниже и сохраните настройки. После этого нажмите ссылку ( <a href=\"%s"
118
+ "\">удалите все комментарии для выбранных типов записей в базе данных</a> )."
119
+
120
+ #: admin/pages/comments.php:107
121
+ msgid ""
122
+ "Everywhere - Warning: This option is global and will affect your entire "
123
+ "site. Use it only if you want to disable comments everywhere. A complete "
124
+ "description of what this option does is available here"
125
+ msgstr ""
126
+ "Повсюду - предупреждение: этот параметр является глобальным и повлияет на "
127
+ "весь ваш сайт. Используйте его только в том случае, если вы хотите отключить "
128
+ "комментарии повсюду. "
129
+
130
+ #: admin/pages/comments.php:107
131
+ msgid ""
132
+ "On certain post types - Disabling comments will also disable trackbacks and "
133
+ "pingbacks. All comment-related fields will also be hidden from the edit/"
134
+ "quick-edit screens of the affected posts. These settings cannot be "
135
+ "overridden for individual posts."
136
+ msgstr ""
137
+ "В некоторых типах сообщений - отключение комментариев также отключает "
138
+ "трекбэки и pingback. Все поля, связанные с комментариями, также будут скрыты "
139
+ "от экранов редактирования / быстрого редактирования затронутых сообщений. "
140
+ "Эти настройки нельзя переопределять для отдельных сообщений."
141
+
142
+ #: admin/pages/comments.php:130
143
+ msgid "Select the post types for which comments will be disabled"
144
+ msgstr "Выберите типы записей, для которых комментарии будут отключены."
145
+
146
+ #: admin/pages/comments.php:138
147
+ msgid "Custom post types"
148
+ msgstr "Произвольные типы записей"
149
+
150
+ #: admin/pages/comments.php:141
151
+ msgid ""
152
+ "Only the built-in post types appear above. If you want to disable comments "
153
+ "on other custom post types on the entire network, you can supply a comma-"
154
+ "separated list of post types below (use the slug that identifies the post "
155
+ "type)."
156
+ msgstr ""
157
+ "Только встроенные типы записей отображаются выше. Если вы хотите отключить "
158
+ "комментарии к другим пользовательским типам записей во всей сети, вы можете "
159
+ "предоставить список типов сообщений, разделенных запятыми (используйте имя, "
160
+ "которое идентифицирует тип записей)."
161
+
162
+ #: admin/pages/comments.php:152
163
+ msgid "General settings for comments"
164
+ msgstr "Общие настройки комментариев"
165
+
166
+ #: admin/pages/comments.php:152
167
+ msgid "These settings will help you improve SEO and reduce the amount of spam."
168
+ msgstr "Эти настройки помогут вам улучшить SEO и уменьшить количество спама."
169
+
170
+ #: admin/pages/comments.php:160
171
+ msgid ""
172
+ "Tired of spam in the comments? Do visitors leave \"blank\" comments for the "
173
+ "sake of a link to their site?"
174
+ msgstr ""
175
+ "Надоел спам в комментариях? Посетители оставляют «пустые» комментарии ради "
176
+ "ссылки на свой сайт?"
177
+
178
+ #: admin/pages/comments.php:160
179
+ msgid "Removes the \"Site\" field from the comment form."
180
+ msgstr "Убирает поле «Сайт» из формы комментирования."
181
+
182
+ #: admin/pages/comments.php:160
183
+ msgid ""
184
+ "Works with the standard comment form, if the form is manually written in "
185
+ "your theme-it probably will not work!"
186
+ msgstr ""
187
+ "Работает со стандартной формой комментирования, если в Вашей теме форма "
188
+ "прописана вручную - скорей всего не сработает!"
189
+
190
+ #: admin/pages/comments.php:169
191
+ msgid ""
192
+ "Superfluous external links from comments, which can be typed from a dozen "
193
+ "and more for one article, do not bring anything good for promotion."
194
+ msgstr ""
195
+ "Внешние ссылки в комментариях, которых может быть десятки или больше на "
196
+ "одной странице, могут ухудшить продвижение вашего сайта."
197
+
198
+ #: admin/pages/comments.php:169
199
+ #, php-format
200
+ msgid "Replaces the links of this kind of %s, on links of this kind %s"
201
+ msgstr ""
202
+ "Заменяет ссылки %s, на span тег и устанавливает переход с помощью JavaScript "
203
+ "%s"
204
+
205
+ #: admin/pages/comments.php:178
206
+ msgid ""
207
+ "Up to 90 percent of comments in the blog can be left for the sake of an "
208
+ "external link. Even nofollow from page weight loss here does not help."
209
+ msgstr ""
210
+ "До 90 процентов комментариев в блоге оставляют ради внешней ссылки. Не "
211
+ "поможет даже nofollow от потери веса страницы."
212
+
213
+ #: admin/pages/comments.php:178
214
+ msgid ""
215
+ "Replaces the links of the authors of comments on the JavaScript code, it is "
216
+ "impossible to distinguish it from usual links."
217
+ msgstr ""
218
+ "Заменяет ссылки авторов комментариев на JavaScript код, его невозможно "
219
+ "отличить от обычной ссылки."
220
+
221
+ #: admin/pages/comments.php:178
222
+ msgid "In some Wordpress topics this may not work."
223
+ msgstr "В некоторых темах Wordpress это может не сработать."
224
+
225
+ #: admin/pages/comments.php:185
226
+ msgid "Disable XML-RPC"
227
+ msgstr "Отключить XML-RPC"
228
+
229
+ #: admin/pages/comments.php:187
230
+ msgid ""
231
+ "A pingback is basically an automated comment that gets created when another "
232
+ "blog links to you. A self-pingback is created when you link to an article "
233
+ "within your own blog. Pingbacks are essentially nothing more than spam and "
234
+ "simply waste resources."
235
+ msgstr ""
236
+ "Pingback по-существу автоматизированных комментарий, который создается, "
237
+ "когда другой блог ссылается на вас. Self-pingback создается, когда вы "
238
+ "оставили ссылку на статью в своем блоге. Pingbacks по существу являются не "
239
+ "более чем спам и пустая трата ресурсов вашего сайта."
240
+
241
+ #: admin/pages/comments.php:187
242
+ msgid "Removes the server responses a reference to the xmlrpc file."
243
+ msgstr "Удаляет ссылку на xmlrpc-файл и ответ сервера."
244
+
245
+ #: admin/pages/delete-comments.php:41
246
+ msgid "Comments cleaner"
247
+ msgstr "Очистка комментариев"
248
+
249
+ #: admin/pages/delete-comments.php:62
250
+ msgid "All comments have been deleted."
251
+ msgstr "Все комментарии были удалены."
252
+
253
+ #: admin/pages/delete-comments.php:71
254
+ msgid ""
255
+ "An error occurred while trying to delete comments. Internal error occured. "
256
+ "Please try again later."
257
+ msgstr ""
258
+ "При попытке удалить комментарии произошла ошибка. Пожалуйста, повторите "
259
+ "попытку позже."
260
+
261
+ #: admin/pages/delete-comments.php:211
262
+ msgid ""
263
+ "Are you sure you want to delete comments from the database without restoring?"
264
+ msgstr ""
265
+ "Вы уверены, что вы хотите удалить комментарии из базы данных без "
266
+ "восстановления?"
267
+
268
+ #: admin/pages/delete-comments.php:226
269
+ msgid "Delete "
270
+ msgstr "Удалить"
271
+
272
+ #: admin/pages/delete-comments.php:232
273
+ msgid "Comments clearing tools"
274
+ msgstr "Комментарии очищающие инструменты"
275
+
276
+ #: admin/pages/delete-comments.php:235
277
+ msgid ""
278
+ "These functions can be useful for global disabling comments or bulk cleaning "
279
+ "spam comments."
280
+ msgstr ""
281
+ "Эти функции могут быть полезны для глобальных отключений комментариев или "
282
+ "массовой очистки спама комментариев."
283
+
284
+ #: admin/pages/delete-comments.php:240
285
+ msgid "Remove all comments"
286
+ msgstr "Удалить все комментарии"
287
+
288
+ #: admin/pages/delete-comments.php:242
289
+ msgid "You can delete all comments in your database with one click."
290
+ msgstr "Вы можете удалить все комментарии в базе данных с одним щелчком мыши."
291
+
292
+ #: admin/pages/delete-comments.php:244
293
+ msgid "Choose post types"
294
+ msgstr "Выберите типы записей"
295
+
296
+ #: admin/pages/delete-comments.php:249
297
+ msgid "Select all"
298
+ msgstr "Выбрать все"
299
+
300
+ #: admin/pages/delete-comments.php:266
301
+ #, php-format
302
+ msgid "Delete Woocommerce order notices? (%d)"
303
+ msgstr "Удалять заметки от заказов Woocommerce? (%d)"
304
+
305
+ #: admin/pages/delete-comments.php:272
306
+ #, php-format
307
+ msgid "Delete (%s)"
308
+ msgstr "Удалить (%s)"
309
+
310
+ #: admin/pages/delete-comments.php:279
311
+ msgid "Remove spam comments"
312
+ msgstr "Удалить спам комментарии"
313
+
314
+ #: admin/pages/delete-comments.php:281
315
+ msgid "You can remove only spam comments from the database with one click."
316
+ msgstr ""
317
+ "Вы можете одним нажатием удалить только спам комментарии из базы данных."
318
+
319
+ #: admin/pages/delete-comments.php:283 admin/pages/delete-comments.php:290
320
+ #: admin/pages/delete-comments.php:297
321
+ #, php-format
322
+ msgid "Delete (%d)"
323
+ msgstr "Удалить (%d)"
324
+
325
+ #: admin/pages/delete-comments.php:286
326
+ msgid "Remove unapproved comments"
327
+ msgstr "Удалить неподтвержденные комментарии"
328
+
329
+ #: admin/pages/delete-comments.php:288
330
+ msgid ""
331
+ "You can remove only unapproved comments from the database with one click."
332
+ msgstr ""
333
+ "Вы можете одним нажатием удалить только не подтвержденные комментарии из "
334
+ "базы данных."
335
+
336
+ #: admin/pages/delete-comments.php:293
337
+ msgid "Remove trashed comments"
338
+ msgstr "Удалить комментарии из корзины"
339
+
340
+ #: admin/pages/delete-comments.php:295
341
+ msgid "You can remove only trashed comments from the database with one click."
342
+ msgstr "Вы можете одним нажатием удалить только комментарии из корзины."
343
+
344
+ #: comments-plus.php:63
345
+ msgid "Webcraftic Disable comments"
346
+ msgstr "Webcraftic отключить комментарии"
347
+
348
+ #: includes/classes/class.configurate-comments.php:204
349
+ #: includes/classes/class.configurate-comments.php:256
350
+ msgid "Comments are closed."
351
+ msgstr "Комментарии Закрыты."
352
+
353
+ #: includes/classes/class.configurate-comments.php:244
354
+ #, php-format
355
+ msgid ""
356
+ "Note: The <em>%s</em> plugin is currently active, and comments are "
357
+ "completely disabled on: %s. Many of the settings below will not be "
358
+ "applicable for those post types."
359
+ msgstr ""
360
+ "Примечание. Плагин <em>%s</em> в настоящий момент активен, и комментарии "
361
+ "полностью отключены: %s. Многие из приведенных ниже настроек не будут "
362
+ "применяться для этих типов сообщений."
363
+
364
+ #~ msgid ""
365
+ #~ "We found that you have the \"Clearfy - disable unused features\" plugin "
366
+ #~ "installed, this plugin already has disable comments functions, so you can "
367
+ #~ "deactivate plugin \"Disable comments\"!"
368
+ #~ msgstr ""
369
+ #~ "Мы обнаружили, что у вас установлен плагин «Clearfy - отключить "
370
+ #~ "неиспользуемые функции», этот плагин уже имеет функции отключения "
371
+ #~ "комментариев, поэтому вы можете отключить плагин «Отключить комментарии»!"
372
+
373
+ #~ msgid "Recommended"
374
+ #~ msgstr "Рекомендовано"
375
+
376
+ #~ msgid "You are not allowed to view this page."
377
+ #~ msgstr "Вам не разрешено просматривать эту страницу."
378
+
379
+ #~ msgid "You do not have the selected post types!"
380
+ #~ msgstr "Вы не выбрали еще ни одного типа записей!"
381
+
382
+ #~ msgid "No comments available for deletion."
383
+ #~ msgstr "Нет комментариев для удаления."
384
+
385
+ #~ msgid ""
386
+ #~ "Are you sure that you desire to delete all comments from the database?"
387
+ #~ msgstr "Вы уверены, что хотите удалить все комментарии из базы данных?"
388
+
389
+ #~ msgid ""
390
+ #~ "Deleting comments will remove existing comment entries in the database "
391
+ #~ "and cannot be reverted without a database backup."
392
+ #~ msgstr ""
393
+ #~ "При удалении комментариев удаляются существующие записи комментариев в "
394
+ #~ "базе данных, они не могут быть восстановлены без резервного копирования "
395
+ #~ "базы данных."
396
+
397
+ #~ msgid "You have %s comments"
398
+ #~ msgstr "У вас есть %s комментариев"
399
+
400
+ #~ msgid "Yes, I'm sure"
401
+ #~ msgstr "Да, я уверен"
402
+
403
+ #~ msgid "No, return back"
404
+ #~ msgstr "Нет, вернуться"
405
+
406
+ #~ msgid ""
407
+ #~ "Are you sure that you desire to delete all comments from the database for "
408
+ #~ "the selected post types (%s)?"
409
+ #~ msgstr ""
410
+ #~ "Вы уверены, что хотите удалить все комментарии из базы данных для "
411
+ #~ "выбранных типов записей (%s)?"
412
+
413
+ #~ msgid "Webcraftic comments tweaks"
414
+ #~ msgstr "Webcraftic инструменты комментариев"
415
+
416
+ #~ msgid ""
417
+ #~ "We found that you have the \"Clearfy - disable unused features\" plugin "
418
+ #~ "installed, this plugin already has disable comments functions, so you can "
419
+ #~ "deactivate plugin \"Comments tweaks\"!"
420
+ #~ msgstr ""
421
+ #~ "Мы обнаружили, что у вас установлен плагин «Clearfy - отключить "
422
+ #~ "неиспользуемые функции», этот плагин уже имеет функции отключения "
423
+ #~ "комментариев, поэтому вы можете отключить плагин «Инструменты "
424
+ #~ "комментариев»!"
425
+
426
+ #~ msgid "Disable all comments"
427
+ #~ msgstr "Отключить все комментарии"
components/cyrlitera/admin/activation.php CHANGED
@@ -4,7 +4,7 @@
4
  * Activator for the cyrlitera
5
  * @author Webcraftic <wordpress.webraftic@gmail.com>
6
  * @copyright (c) 09.03.2018, Webcraftic
7
- * @see Wbcr_Factory406_Activator
8
  * @version 1.0
9
  */
10
 
@@ -13,7 +13,7 @@
13
  exit;
14
  }
15
 
16
- class WCTR_Activation extends Wbcr_Factory406_Activator {
17
 
18
  /**
19
  * Runs activation actions.
@@ -22,8 +22,8 @@
22
  */
23
  public function activate()
24
  {
25
- WCTR_Plugin::app()->updateOption('use_transliteration', 1);
26
- WCTR_Plugin::app()->updateOption('use_transliteration_filename', 1);
27
- WCTR_Plugin::app()->updateOption('filename_to_lowercase', 1);
28
  }
29
  }
4
  * Activator for the cyrlitera
5
  * @author Webcraftic <wordpress.webraftic@gmail.com>
6
  * @copyright (c) 09.03.2018, Webcraftic
7
+ * @see Wbcr_Factory409_Activator
8
  * @version 1.0
9
  */
10
 
13
  exit;
14
  }
15
 
16
+ class WCTR_Activation extends Wbcr_Factory409_Activator {
17
 
18
  /**
19
  * Runs activation actions.
22
  */
23
  public function activate()
24
  {
25
+ WCTR_Plugin::app()->updatePopulateOption('use_transliteration', 1);
26
+ WCTR_Plugin::app()->updatePopulateOption('use_transliteration_filename', 1);
27
+ WCTR_Plugin::app()->updatePopulateOption('filename_to_lowercase', 1);
28
  }
29
  }
components/cyrlitera/admin/boot.php CHANGED
@@ -11,6 +11,27 @@
11
  exit;
12
  }
13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  /**
15
  * @return array
16
  */
@@ -99,7 +120,7 @@
99
  return $notices;
100
  }
101
 
102
- add_action('wbcr_factory_notices_405_list', 'wbcr_cyrlitera_admin_conflict_notices_error', 10, 2);
103
 
104
  function wbcr_cyrlitera_group_options($options)
105
  {
@@ -181,7 +202,6 @@
181
  add_filter('plugin_row_meta', 'wbcr_cyrlitera_set_plugin_meta', 10, 2);
182
  }
183
 
184
-
185
  /**
186
  * Виджет отзывов
187
  *
@@ -198,7 +218,7 @@
198
  return $page_url;
199
  }
200
 
201
- add_filter('wbcr_factory_pages_407_imppage_rating_widget_url', 'wbcr_cyrlitera_rating_widget_url', 10, 2);
202
 
203
 
204
 
11
  exit;
12
  }
13
 
14
+ /**
15
+ * Когда в CLearfy пользователь выполняет быструю настройку "ONE CLICK SEO OPTIMIZATION",
16
+ * мы включаем транслитерацию и преобразовываем слаги для уже существующих страниц, терминов
17
+ *
18
+ * @param string $mode_name - имя режима быстрой настройки
19
+ */
20
+ add_action('wbcr_clearfy_configurated_quick_mode', function ($mode_name) {
21
+ if( $mode_name == 'seo_optimize' ) {
22
+ $use_transliterations = WCTR_Plugin::app()->getPopulateOption('use_transliteration');
23
+ $transliterate_existing_slugs = WCTR_Plugin::app()->getPopulateOption('transliterate_existing_slugs');
24
+
25
+ if( !$use_transliterations || $transliterate_existing_slugs ) {
26
+ return;
27
+ }
28
+
29
+ WCTR_Helper::convertExistingSlugs();
30
+
31
+ WCTR_Plugin::app()->updatePopulateOption('transliterate_existing_slugs', 1);
32
+ }
33
+ });
34
+
35
  /**
36
  * @return array
37
  */
120
  return $notices;
121
  }
122
 
123
+ add_action('wbcr_factory_notices_407_list', 'wbcr_cyrlitera_admin_conflict_notices_error', 10, 2);
124
 
125
  function wbcr_cyrlitera_group_options($options)
126
  {
202
  add_filter('plugin_row_meta', 'wbcr_cyrlitera_set_plugin_meta', 10, 2);
203
  }
204
 
 
205
  /**
206
  * Виджет отзывов
207
  *
218
  return $page_url;
219
  }
220
 
221
+ add_filter('wbcr_factory_pages_410_imppage_rating_widget_url', 'wbcr_cyrlitera_rating_widget_url', 10, 2);
222
 
223
 
224
 
components/cyrlitera/admin/options.php CHANGED
@@ -11,217 +11,12 @@
11
  exit;
12
  }
13
 
14
- /**
15
- * @return array
16
- */
17
- function wbcr_cyrlitera_get_plugin_options()
18
- {
19
- $options = array();
20
-
21
- $options[] = array(
22
- 'type' => 'html',
23
- 'html' => '<div class="wbcr-factory-page-group-header">' . '<strong>' . __('Transliteration of Cyrillic alphabet.', 'cyrlitera') . '</strong>' . '<p>' . __('Converts Cyrillic permalinks of post, pages, taxonomies and media files to the Latin alphabet. Supports Russian, Ukrainian, Georgian, Bulgarian languages. Example: http://site.dev/последние-новости -> http://site.dev/poslednie-novosti', 'cyrlitera') . '</p>' . '</div>'
24
- );
25
-
26
- $options[] = array(
27
- 'type' => 'checkbox',
28
- 'way' => 'buttons',
29
- 'name' => 'use_transliteration',
30
- 'title' => __('Use transliteration', 'cyrlitera'),
31
- 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'green'),
32
- 'hint' => __('If you enable this option, all URLs of new pages, posts, tags, and categories will automatically be converted to Latin.', 'cyrlitera'),
33
- 'default' => false
34
- );
35
- $options[] = array(
36
- 'type' => 'checkbox',
37
- 'way' => 'buttons',
38
- 'name' => 'use_transliteration_filename',
39
- 'title' => __('Convert file names', 'cyrlitera'),
40
- 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'green'),
41
- 'hint' => __('This option works only for new media library files. All Cyrillic names of the downloaded files will be converted to names with Latin characters.', 'cyrlitera'),
42
- 'default' => false
43
- );
44
- $options[] = array(
45
- 'type' => 'checkbox',
46
- 'way' => 'buttons',
47
- 'name' => 'use_force_transliteration',
48
- 'title' => __('Force transliteration', 'cyrlitera'),
49
- 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
50
- 'hint' => sprintf(__('If any of your plugins affects transliteration of links and file names, you can use this option to change the plugin of %s to overwrite the changes of the other plugins.', 'cyrlitera'), WCTR_Plugin::app()
51
- ->getPluginTitle()),
52
- 'default' => false
53
- );
54
- $options[] = array(
55
- 'type' => 'checkbox',
56
- 'way' => 'buttons',
57
- 'name' => 'filename_to_lowercase',
58
- 'title' => __('Convert file names into lowercase', 'cyrlitera'),
59
- 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'green'),
60
- 'hint' => __('This function works only for new upload files. Example: File_Name.jpg -> file_name.jpg', 'cyrlitera'),
61
- 'default' => false
62
- );
63
-
64
- $options[] = array(
65
- 'type' => 'checkbox',
66
- 'way' => 'buttons',
67
- 'name' => 'redirect_from_old_urls',
68
- 'title' => __('Redirection old URLs to new ones', 'cyrlitera'),
69
- 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
70
- 'hint' => __('If at the time of the plugin installation you had pages with unconverted links, use this option to redirect users from old to new URLs with the Latin alphabet.', 'cyrlitera'),
71
- 'default' => false
72
- );
73
-
74
- $options[] = array(
75
- 'type' => 'checkbox',
76
- 'way' => 'buttons',
77
- 'name' => 'dont_use_transliteration_on_frontend',
78
- 'title' => __('Don\'t use transliteration in frontend', 'cyrlitera'),
79
- 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
80
- 'hint' => __('Enable when have a problem in frontend.', 'cyrlitera'),
81
- 'default' => false
82
- );
83
-
84
- $options[] = array(
85
- 'type' => 'textarea',
86
- 'way' => 'buttons',
87
- 'name' => 'custom_symbols_pack',
88
- 'title' => __('Character Sets', 'cyrlitera'),
89
- 'hint' => __('You can supplement current base of transliteration characters. Write pairs of values separated by commas. Example:', 'cyrlitera') . ' <b>Ё=Jo,ё=jo,Ж=Zh,ж=zh</b>'
90
- );
91
-
92
- $options[] = array(
93
- 'type' => 'html',
94
- 'html' => 'wbcr_cyrlitera_rollback_button'
95
- );
96
-
97
- return $options;
98
- }
99
-
100
- /**
101
- * @param $html_builder Wbcr_FactoryForms407_Html
102
- */
103
- function wbcr_cyrlitera_rollback_button($html_builder)
104
- {
105
- $form_name = $html_builder->getFormName();
106
-
107
- $rollback = false;
108
- $convert_now = false;
109
-
110
- if( isset($_POST['wbcr_cyrlitera_rollback_action']) ) {
111
- check_admin_referer($form_name, 'wbcr_cyrlitera_rollback_nonce');
112
-
113
- global $wpdb;
114
-
115
- $posts = $wpdb->get_results("SELECT p.ID, p.post_name, m.meta_value as old_post_name FROM {$wpdb->posts} p
116
- LEFT JOIN {$wpdb->postmeta} m
117
- ON p.ID = m.post_id
118
- WHERE p.post_status
119
- IN ('publish', 'future', 'private') AND m.meta_key='wbcr_wp_old_slug' AND m.meta_value IS NOT NULL");
120
-
121
- foreach((array)$posts as $post) {
122
- if( $post->post_name != $post->old_post_name ) {
123
- $wpdb->update($wpdb->posts, array('post_name' => $post->old_post_name), array('ID' => $post->ID), array('%s'), array('%d'));
124
- delete_post_meta($post->ID, 'wbcr_wp_old_slug');
125
- }
126
- }
127
-
128
- $terms = $wpdb->get_results("SELECT t.term_id, t.slug, o.option_value as old_term_slug FROM {$wpdb->terms} t
129
- LEFT JOIN {$wpdb->options} o
130
- ON o.option_name=concat('wbcr_wp_term_',t.term_id, '_old_slug')
131
- WHERE o.option_value IS NOT NULL");
132
-
133
- foreach((array)$terms as $term) {
134
- if( $term->slug != $term->old_term_slug ) {
135
- $wpdb->update($wpdb->terms, array('slug' => $term->old_term_slug), array('term_id' => $term->term_id), array('%s'), array('%d'));
136
- delete_option('wbcr_wp_term_' . $term->term_id . '_old_slug');
137
- }
138
- }
139
-
140
- $rollback = true;
141
- }
142
-
143
- if( isset($_POST['wbcr_cyrlitera_convert_now_action']) ) {
144
- check_admin_referer($form_name, 'wbcr_cyrlitera_convert_now_nonce');
145
-
146
- global $wpdb;
147
-
148
- $posts = $wpdb->get_results("SELECT ID, post_name FROM {$wpdb->posts} WHERE post_name REGEXP('[^_A-Za-z0-9\-]+') AND post_status IN ('publish', 'future', 'private')");
149
-
150
- foreach((array)$posts as $post) {
151
- $sanitized_name = WCTR_Helper::sanitizeTitle(urldecode($post->post_name));
152
-
153
- if( $post->post_name != $sanitized_name ) {
154
- add_post_meta($post->ID, 'wbcr_wp_old_slug', $post->post_name);
155
-
156
- $wpdb->update($wpdb->posts, array('post_name' => $sanitized_name), array('ID' => $post->ID), array('%s'), array('%d'));
157
- }
158
- }
159
-
160
- $terms = $wpdb->get_results("SELECT term_id, slug FROM {$wpdb->terms} WHERE slug REGEXP('[^_A-Za-z0-9\-]+') ");
161
-
162
- foreach((array)$terms as $term) {
163
- $sanitized_slug = WCTR_Helper::sanitizeTitle(urldecode($term->slug));
164
-
165
- if( $term->slug != $sanitized_slug ) {
166
- update_option('wbcr_wp_term_' . $term->term_id . '_old_slug', $term->slug, false);
167
- $wpdb->update($wpdb->terms, array('slug' => $sanitized_slug), array('term_id' => $term->term_id), array('%s'), array('%d'));
168
- }
169
- }
170
-
171
- $convert_now = true;
172
- }
173
-
174
- ?>
175
-
176
- <div class="form-group form-group-checkbox factory-control-convert_now_button">
177
- <label for="wbcr_clearfy_convert_now_button" class="col-sm-6 control-label">
178
- <span class="factory-hint-icon factory-hint-icon-grey" data-toggle="factory-tooltip" data-placement="right" title="" data-original-title="<?php _e('If at the time of the plugin installation you already had posts, pages, tags and categories, click on this button and the plugin will automatically convert URLs into Latin. Attention! Previously uploaded files will not be converted.', 'cyrlitera') ?>">
179
- <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAQAAABKmM6bAAAAUUlEQVQIHU3BsQ1AQABA0X/komIrnQHYwyhqQ1hBo9KZRKL9CBfeAwy2ri42JA4mPQ9rJ6OVt0BisFM3Po7qbEliru7m/FkY+TN64ZVxEzh4ndrMN7+Z+jXCAAAAAElFTkSuQmCC" alt="">
180
- </span>
181
- </label>
182
-
183
- <div class="control-group col-sm-6">
184
- <div class="factory-checkbox factory-from-control-checkbox factory-buttons-way btn-group">
185
- <form method="post">
186
- <?php wp_nonce_field($form_name, 'wbcr_cyrlitera_convert_now_nonce'); ?>
187
- <input type="submit" name="wbcr_cyrlitera_convert_now_action" value="<?php _e('Convert already created posts and categories', 'cyrlitera') ?>" class="button button-default"/>
188
- <?php if( $convert_now ): ?>
189
- <div style="color:green;margin-top:5px;"><?php _e('Url of old posts, pages,terms,tags successfully converted into Latin!', 'cyrlitera') ?></div>
190
- <?php endif; ?>
191
- </form>
192
- </div>
193
- </div>
194
- </div>
195
-
196
-
197
- <div class="form-group form-group-checkbox factory-control-rollback_button">
198
- <label for="wbcr_clearfy_rollback_button" class="col-sm-6 control-label">
199
- <span class="factory-hint-icon factory-hint-icon-grey" data-toggle="factory-tooltip" data-placement="right" title="" data-original-title="<?php _e('Allows you to restore converted URLs by using the "Convert already created posts and categories" button. This can be useful in case of incorrect URLs or incorrect transliteration of some characters. You can roll back changes and advance the character sets above to correct the plugin\'s work. ', 'cyrlitera') ?>">
200
- <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAQAAABKmM6bAAAAUUlEQVQIHU3BsQ1AQABA0X/komIrnQHYwyhqQ1hBo9KZRKL9CBfeAwy2ri42JA4mPQ9rJ6OVt0BisFM3Po7qbEliru7m/FkY+TN64ZVxEzh4ndrMN7+Z+jXCAAAAAElFTkSuQmCC" alt="">
201
- </span>
202
- </label>
203
-
204
- <div class="control-group col-sm-6">
205
- <div class="factory-checkbox factory-from-control-checkbox factory-buttons-way btn-group">
206
- <form method="post">
207
- <?php wp_nonce_field($form_name, 'wbcr_cyrlitera_rollback_nonce'); ?>
208
- <input type="submit" name="wbcr_cyrlitera_rollback_action" value="<?php _e('Rollback changes', 'cyrlitera') ?>" class="button button-default"/>
209
- <?php if( $rollback ): ?>
210
- <div style="color:green;margin-top:5px;"><?php _e('The rollback of new changes was successful!', 'cyrlitera') ?></div>
211
- <?php endif; ?>
212
- </form>
213
- </div>
214
- </div>
215
- </div>
216
- <?php
217
- }
218
-
219
  /**
220
  * @param $form
221
- * @param $page Wbcr_FactoryPages407_ImpressiveThemplate
222
  * @return mixed
223
  */
224
- function wbcr_cyrlitera_seo_form_options($form, $page)
225
  {
226
  if( empty($form) ) {
227
  return $form;
@@ -236,4 +31,4 @@
236
  return $form;
237
  }
238
 
239
- add_filter('wbcr_clr_seo_form_options', 'wbcr_cyrlitera_seo_form_options', 10, 2);
11
  exit;
12
  }
13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  /**
15
  * @param $form
16
+ * @param $page Wbcr_FactoryPages410_ImpressiveThemplate
17
  * @return mixed
18
  */
19
+ /*function wbcr_cyrlitera_seo_form_options($form, $page)
20
  {
21
  if( empty($form) ) {
22
  return $form;
31
  return $form;
32
  }
33
 
34
+ add_filter('wbcr_clr_seo_form_options', 'wbcr_cyrlitera_seo_form_options', 10, 2);*/
components/cyrlitera/admin/pages/cyrlitera.php CHANGED
@@ -11,24 +11,30 @@
11
  exit;
12
  }
13
 
14
- class WCTR_CyrliteraPage extends Wbcr_FactoryPages407_ImpressiveThemplate {
15
 
16
  /**
17
  * The id of the page in the admin menu.
18
  *
19
  * Mainly used to navigate between pages.
20
- * @see FactoryPages407_AdminPage
21
  *
22
  * @since 1.0.0
23
  * @var string
24
  */
25
  public $id = "transliteration";
 
26
  public $page_menu_dashicon = 'dashicons-testimonial';
 
 
 
 
 
27
 
28
  /**
29
- * @param Wbcr_Factory406_Plugin $plugin
30
  */
31
- public function __construct(Wbcr_Factory406_Plugin $plugin)
32
  {
33
  $this->menu_title = __('Transliteration', 'cyrlitera');
34
 
@@ -36,6 +42,7 @@
36
  $this->internal = false;
37
  $this->menu_target = 'options-general.php';
38
  $this->add_link_to_plugin_actions = true;
 
39
  }
40
 
41
  parent::__construct($plugin);
@@ -43,42 +50,38 @@
43
  $this->plugin = $plugin;
44
  }
45
 
46
- public function getMenuTitle()
47
  {
48
- return defined('LOADING_CYRLITERA_AS_ADDON')
49
- ? __('Transliteration', 'cyrlitera')
50
- : __('General', 'cyrlitera');
51
  }
52
 
53
  /**
54
- * Requests assets (js and css) for the page.
55
- *
56
- * @see Wbcr_FactoryPages407_AdminPage
57
- *
58
- * @since 1.0.0
59
- * @return void
60
  */
61
- public function assets($scripts, $styles)
62
- {
63
- parent::assets($scripts, $styles);
64
-
65
- // Add Clearfy styles for HMWP pages
66
- if( defined('WBCR_CLEARFY_PLUGIN_ACTIVE') ) {
67
- $this->styles->add(WCL_PLUGIN_URL . '/admin/assets/css/general.css');
68
- }
69
- }
70
-
71
- /*protected function afterFormSave()
72
  {
73
- $use_transliterations = $this->plugin->getOption('use_transliterations');
74
- $transliterate_existing_slugs = $this->plugin->getOption('transliterate_existing_slugs');
75
 
76
  if( !$use_transliterations || $transliterate_existing_slugs ) {
77
  return;
78
  }
 
79
  WCTR_Helper::convertExistingSlugs();
80
- $this->plugin->updateOption('transliterate_existing_slugs', 1);
81
- }*/
 
 
 
 
 
 
 
 
 
 
 
82
 
83
  /**
84
  * Permalinks options.
@@ -86,9 +89,83 @@
86
  * @since 1.0.0
87
  * @return mixed[]
88
  */
89
- public function getOptions()
90
  {
91
- $options = wbcr_cyrlitera_get_plugin_options();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
92
 
93
  $formOptions = array();
94
 
@@ -100,4 +177,91 @@
100
 
101
  return apply_filters('wbcr_cyrlitera_general_form_options', $formOptions, $this);
102
  }
103
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
  exit;
12
  }
13
 
14
+ class WCTR_CyrliteraPage extends Wbcr_FactoryClearfy206_PageBase {
15
 
16
  /**
17
  * The id of the page in the admin menu.
18
  *
19
  * Mainly used to navigate between pages.
20
+ * @see FactoryPages410_AdminPage
21
  *
22
  * @since 1.0.0
23
  * @var string
24
  */
25
  public $id = "transliteration";
26
+ public $page_parent_page = "seo";
27
  public $page_menu_dashicon = 'dashicons-testimonial';
28
+ /**
29
+ * Доступена для мультисайтов
30
+ * @var bool
31
+ */
32
+ public $available_for_multisite = true;
33
 
34
  /**
35
+ * @param Wbcr_Factory409_Plugin $plugin
36
  */
37
+ public function __construct(Wbcr_Factory409_Plugin $plugin)
38
  {
39
  $this->menu_title = __('Transliteration', 'cyrlitera');
40
 
42
  $this->internal = false;
43
  $this->menu_target = 'options-general.php';
44
  $this->add_link_to_plugin_actions = true;
45
+ $this->page_parent_page = null;
46
  }
47
 
48
  parent::__construct($plugin);
50
  $this->plugin = $plugin;
51
  }
52
 
53
+ public function getPageTitle()
54
  {
55
+ return defined('LOADING_CYRLITERA_AS_ADDON') ? __('Transliteration', 'cyrlitera') : __('General', 'cyrlitera');
 
 
56
  }
57
 
58
  /**
59
+ * Этот метод преобразовываем слаги для уже существующих страниц, терминов. Если это преобразование уже было выполнено,
60
+ * то мы больше незапускаем массовую конвертацию
 
 
 
 
61
  */
62
+ public function convertExistingSlugs()
 
 
 
 
 
 
 
 
 
 
63
  {
64
+ $use_transliterations = $this->plugin->getPopulateOption('use_transliteration');
65
+ $transliterate_existing_slugs = $this->plugin->getPopulateOption('transliterate_existing_slugs');
66
 
67
  if( !$use_transliterations || $transliterate_existing_slugs ) {
68
  return;
69
  }
70
+
71
  WCTR_Helper::convertExistingSlugs();
72
+
73
+ $this->plugin->updatePopulateOption('transliterate_existing_slugs', 1);
74
+ }
75
+
76
+ /**
77
+ * Метод выполняется после сохранения формы настроек. Когда пользователь включает транслитерацию,
78
+ * метод запускает массовую конвертацию слагов для уже существующих страниц,
79
+ * терминов. Если это преобразование уже было выполнено, то мы больше незапускаем массовую конвертацию
80
+ */
81
+ protected function afterFormSave()
82
+ {
83
+ $this->convertExistingSlugs();
84
+ }
85
 
86
  /**
87
  * Permalinks options.
89
  * @since 1.0.0
90
  * @return mixed[]
91
  */
92
+ public function getPageOptions()
93
  {
94
+ $options[] = array(
95
+ 'type' => 'html',
96
+ 'html' => '<div class="wbcr-factory-page-group-header">' . '<strong>' . __('Transliteration of Cyrillic alphabet.', 'cyrlitera') . '</strong>' . '<p>' . __('Converts Cyrillic permalinks of post, pages, taxonomies and media files to the Latin alphabet. Supports Russian, Ukrainian, Georgian, Bulgarian languages. Example: http://site.dev/последние-новости -> http://site.dev/poslednie-novosti', 'cyrlitera') . '</p>' . '</div>'
97
+ );
98
+
99
+ $options[] = array(
100
+ 'type' => 'checkbox',
101
+ 'way' => 'buttons',
102
+ 'name' => 'use_transliteration',
103
+ 'title' => __('Use transliteration', 'cyrlitera'),
104
+ 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'green'),
105
+ 'hint' => __('If you enable this option, all URLs of new pages, posts, tags, and categories will automatically be converted to Latin.', 'cyrlitera'),
106
+ 'default' => false
107
+ );
108
+ $options[] = array(
109
+ 'type' => 'checkbox',
110
+ 'way' => 'buttons',
111
+ 'name' => 'use_transliteration_filename',
112
+ 'title' => __('Convert file names', 'cyrlitera'),
113
+ 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'green'),
114
+ 'hint' => __('This option works only for new media library files. All Cyrillic names of the downloaded files will be converted to names with Latin characters.', 'cyrlitera'),
115
+ 'default' => false
116
+ );
117
+ $options[] = array(
118
+ 'type' => 'checkbox',
119
+ 'way' => 'buttons',
120
+ 'name' => 'use_force_transliteration',
121
+ 'title' => __('Force transliteration', 'cyrlitera'),
122
+ 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
123
+ 'hint' => sprintf(__('If any of your plugins affects transliteration of links and file names, you can use this option to change the plugin of %s to overwrite the changes of the other plugins.', 'cyrlitera'), WCTR_Plugin::app()->getPluginTitle()),
124
+ 'default' => false
125
+ );
126
+ $options[] = array(
127
+ 'type' => 'checkbox',
128
+ 'way' => 'buttons',
129
+ 'name' => 'filename_to_lowercase',
130
+ 'title' => __('Convert file names into lowercase', 'cyrlitera'),
131
+ 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'green'),
132
+ 'hint' => __('This function works only for new upload files. Example: File_Name.jpg -> file_name.jpg', 'cyrlitera'),
133
+ 'default' => false
134
+ );
135
+
136
+ $options[] = array(
137
+ 'type' => 'checkbox',
138
+ 'way' => 'buttons',
139
+ 'name' => 'redirect_from_old_urls',
140
+ 'title' => __('Redirection old URLs to new ones', 'cyrlitera'),
141
+ 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
142
+ 'hint' => __('If at the time of the plugin installation you had pages with unconverted links, use this option to redirect users from old to new URLs with the Latin alphabet.', 'cyrlitera'),
143
+ 'default' => false
144
+ );
145
+
146
+ $options[] = array(
147
+ 'type' => 'checkbox',
148
+ 'way' => 'buttons',
149
+ 'name' => 'dont_use_transliteration_on_frontend',
150
+ 'title' => __('Don\'t use transliteration in frontend', 'cyrlitera'),
151
+ 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
152
+ 'hint' => __('Enable when have a problem in frontend.', 'cyrlitera'),
153
+ 'default' => false
154
+ );
155
+
156
+ $options[] = array(
157
+ 'type' => 'textarea',
158
+ 'way' => 'buttons',
159
+ 'name' => 'custom_symbols_pack',
160
+ 'title' => __('Character Sets', 'cyrlitera'),
161
+ 'hint' => __('You can supplement current base of transliteration characters. Write pairs of values separated by commas. Example:', 'cyrlitera') . ' <b>Ё=Jo,ё=jo,Ж=Zh,ж=zh</b>'
162
+ );
163
+
164
+ // Произвольный html код
165
+ $options[] = array(
166
+ 'type' => 'html', // тип элемента формы
167
+ 'html' => array($this, 'rollbackButton')
168
+ );
169
 
170
  $formOptions = array();
171
 
177
 
178
  return apply_filters('wbcr_cyrlitera_general_form_options', $formOptions, $this);
179
  }
180
+
181
+ /**
182
+ * @param $html_builder Wbcr_FactoryForms410_Html
183
+ */
184
+ public function rollbackButton($html_builder)
185
+ {
186
+ $form_name = $html_builder->getFormName();
187
+
188
+ $rollback = false;
189
+ $convert_now = false;
190
+
191
+ if( isset($_POST['wbcr_cyrlitera_rollback_action']) ) {
192
+ check_admin_referer($form_name, 'wbcr_cyrlitera_rollback_nonce');
193
+
194
+ if( WCTR_Plugin::app()->isNetworkActive() ) {
195
+ foreach(WCTR_Plugin::app()->getActiveSites() as $site) {
196
+ switch_to_blog($site->blog_id);
197
+ WCTR_Helper::rollbackUrlChanges();
198
+ restore_current_blog();
199
+ }
200
+ } else {
201
+ WCTR_Helper::rollbackUrlChanges();
202
+ }
203
+
204
+ $rollback = true;
205
+ }
206
+
207
+ if( isset($_POST['wbcr_cyrlitera_convert_now_action']) ) {
208
+ check_admin_referer($form_name, 'wbcr_cyrlitera_convert_now_nonce');
209
+
210
+ if( WCTR_Plugin::app()->isNetworkActive() ) {
211
+ foreach(WCTR_Plugin::app()->getActiveSites() as $site) {
212
+ switch_to_blog($site->blog_id);
213
+ WCTR_Helper::convertExistingSlugs();
214
+ restore_current_blog();
215
+ }
216
+ } else {
217
+ WCTR_Helper::convertExistingSlugs();
218
+ }
219
+
220
+ $convert_now = true;
221
+ }
222
+
223
+ ?>
224
+
225
+ <div class="form-group form-group-checkbox factory-control-convert_now_button">
226
+ <label for="wbcr_clearfy_convert_now_button" class="col-sm-4 control-label">
227
+ <span class="factory-hint-icon factory-hint-icon-grey" data-toggle="factory-tooltip" data-placement="right" title="" data-original-title="<?php _e('If at the time of the plugin installation you already had posts, pages, tags and categories, click on this button and the plugin will automatically convert URLs into Latin. Attention! Previously uploaded files will not be converted.', 'cyrlitera') ?>">
228
+ <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAQAAABKmM6bAAAAUUlEQVQIHU3BsQ1AQABA0X/komIrnQHYwyhqQ1hBo9KZRKL9CBfeAwy2ri42JA4mPQ9rJ6OVt0BisFM3Po7qbEliru7m/FkY+TN64ZVxEzh4ndrMN7+Z+jXCAAAAAElFTkSuQmCC" alt="">
229
+ </span>
230
+ </label>
231
+
232
+ <div class="control-group col-sm-8">
233
+ <div class="factory-checkbox factory-from-control-checkbox factory-buttons-way btn-group">
234
+ <form method="post">
235
+ <?php wp_nonce_field($form_name, 'wbcr_cyrlitera_convert_now_nonce'); ?>
236
+ <input type="submit" name="wbcr_cyrlitera_convert_now_action" value="<?php _e('Convert already created posts and categories', 'cyrlitera') ?>" class="button button-default"/>
237
+ <?php if( $convert_now ): ?>
238
+ <div style="color:green;margin-top:5px;"><?php _e('Url of old posts, pages,terms,tags successfully converted into Latin!', 'cyrlitera') ?></div>
239
+ <?php endif; ?>
240
+ </form>
241
+ </div>
242
+ </div>
243
+ </div>
244
+
245
+
246
+ <div class="form-group form-group-checkbox factory-control-rollback_button">
247
+ <label for="wbcr_clearfy_rollback_button" class="col-sm-4 control-label">
248
+ <span class="factory-hint-icon factory-hint-icon-grey" data-toggle="factory-tooltip" data-placement="right" title="" data-original-title="<?php _e('Allows you to restore converted URLs by using the "Convert already created posts and categories" button. This can be useful in case of incorrect URLs or incorrect transliteration of some characters. You can roll back changes and advance the character sets above to correct the plugin\'s work. ', 'cyrlitera') ?>">
249
+ <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAQAAABKmM6bAAAAUUlEQVQIHU3BsQ1AQABA0X/komIrnQHYwyhqQ1hBo9KZRKL9CBfeAwy2ri42JA4mPQ9rJ6OVt0BisFM3Po7qbEliru7m/FkY+TN64ZVxEzh4ndrMN7+Z+jXCAAAAAElFTkSuQmCC" alt="">
250
+ </span>
251
+ </label>
252
+
253
+ <div class="control-group col-sm-8">
254
+ <div class="factory-checkbox factory-from-control-checkbox factory-buttons-way btn-group">
255
+ <form method="post">
256
+ <?php wp_nonce_field($form_name, 'wbcr_cyrlitera_rollback_nonce'); ?>
257
+ <input type="submit" name="wbcr_cyrlitera_rollback_action" value="<?php _e('Rollback changes', 'cyrlitera') ?>" class="button button-default"/>
258
+ <?php if( $rollback ): ?>
259
+ <div style="color:green;margin-top:5px;"><?php _e('The rollback of new changes was successful!', 'cyrlitera') ?></div>
260
+ <?php endif; ?>
261
+ </form>
262
+ </div>
263
+ </div>
264
+ </div>
265
+ <?php
266
+ }
267
+ }
components/cyrlitera/admin/pages/more-features.php CHANGED
@@ -11,6 +11,6 @@
11
  exit;
12
  }
13
 
14
- class WCTR_MoreFeaturesPage extends Wbcr_FactoryClearfy203_MoreFeaturesPage {
15
 
16
  }
11
  exit;
12
  }
13
 
14
+ class WCTR_MoreFeaturesPage extends Wbcr_FactoryClearfy206_MoreFeaturesPage {
15
 
16
  }
components/cyrlitera/cyrlitera.php CHANGED
@@ -4,10 +4,11 @@
4
  * Plugin URI: https://wordpress.org/plugins/cyrlitera/
5
  * Description: The plugin converts Cyrillic, Georgian links, filenames into Latin. It is necessary for correct work of WordPress plugins and improve links readability.
6
  * Author: Webcraftic <wordpress.webraftic@gmail.com>
7
- * Version: 1.0.5
8
  * Text Domain: cyrlitera
9
  * Domain Path: /languages/
10
  * Author URI: http://clearfy.pro
 
11
  */
12
 
13
  // Exit if accessed directly
@@ -15,46 +16,59 @@
15
  exit;
16
  }
17
 
18
- if( defined('WCTR_PLUGIN_ACTIVE') || (defined('WCL_PLUGIN_ACTIVE') && !defined('LOADING_CYRLITERA_AS_ADDON')) ) {
19
- function wbcr_cyrlitera_admin_notice_error()
20
- {
21
- ?>
22
- <div class="notice notice-error">
23
- <p><?php _e('We found that you have the "Clearfy - disable unused features" plugin installed, this plugin already has disable comments functions, so you can deactivate plugin "Webcraftic Cyrlitera"!', 'cyrlitera'); ?></p>
24
- </div>
25
- <?php
26
- }
27
 
28
- add_action('admin_notices', 'wbcr_cyrlitera_admin_notice_error');
 
 
29
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
30
  return;
31
- } else {
32
-
33
- define('WCTR_PLUGIN_ACTIVE', true);
34
- define('WCTR_PLUGIN_DIR', dirname(__FILE__));
35
- define('WCTR_PLUGIN_BASE', plugin_basename(__FILE__));
36
- define('WCTR_PLUGIN_URL', plugins_url(null, __FILE__));
37
-
38
-
39
-
40
- if( !defined('LOADING_CYRLITERA_AS_ADDON') ) {
41
- require_once(WCTR_PLUGIN_DIR . '/libs/factory/core/boot.php');
42
- }
43
-
44
- require_once(WCTR_PLUGIN_DIR . '/includes/class.helpers.php');
45
- require_once(WCTR_PLUGIN_DIR . '/includes/class.plugin.php');
46
-
47
- if( !defined('LOADING_CYRLITERA_AS_ADDON') ) {
48
-
49
- new WCTR_Plugin(__FILE__, array(
50
- 'prefix' => 'wbcr_cyrlitera_',
51
- 'plugin_name' => 'wbcr_cyrlitera',
52
- 'plugin_title' => __('Webcraftic Cyrlitera', 'cyrlitera'),
53
- 'plugin_version' => '1.0.5',
54
- 'required_php_version' => '5.2',
55
- 'required_wp_version' => '4.2',
56
- 'plugin_build' => 'free',
57
- 'updates' => WCTR_PLUGIN_DIR . '/updates/'
58
- ));
59
- }
60
- }
4
  * Plugin URI: https://wordpress.org/plugins/cyrlitera/
5
  * Description: The plugin converts Cyrillic, Georgian links, filenames into Latin. It is necessary for correct work of WordPress plugins and improve links readability.
6
  * Author: Webcraftic <wordpress.webraftic@gmail.com>
7
+ * Version: 1.0.6
8
  * Text Domain: cyrlitera
9
  * Domain Path: /languages/
10
  * Author URI: http://clearfy.pro
11
+ * Framework Version: FACTORY_409_VERSION
12
  */
13
 
14
  // Exit if accessed directly
16
  exit;
17
  }
18
 
19
+ define('WCTR_PLUGIN_VERSION', '1.0.6');
 
 
 
 
 
 
 
 
20
 
21
+ define('WCTR_PLUGIN_DIR', dirname(__FILE__));
22
+ define('WCTR_PLUGIN_BASE', plugin_basename(__FILE__));
23
+ define('WCTR_PLUGIN_URL', plugins_url(null, __FILE__));
24
 
25
+
26
+
27
+ if( !defined('LOADING_CYRLITERA_AS_ADDON') ) {
28
+ require_once(WCTR_PLUGIN_DIR . '/libs/factory/core/includes/check-compatibility.php');
29
+ require_once(WCTR_PLUGIN_DIR . '/libs/factory/clearfy/includes/check-clearfy-compatibility.php');
30
+ }
31
+
32
+ $plugin_info = array(
33
+ 'prefix' => 'wbcr_cyrlitera_',
34
+ 'plugin_name' => 'wbcr_cyrlitera',
35
+ 'plugin_title' => __('Webcraftic Cyrlitera', 'cyrlitera'),
36
+ 'plugin_version' => WCTR_PLUGIN_VERSION,
37
+ 'plugin_build' => 'free',
38
+ 'updates' => WCTR_PLUGIN_DIR . '/updates/'
39
+ );
40
+
41
+ /**
42
+ * Проверяет совместимость с Wordpress, php и другими плагинами.
43
+ */
44
+ $compatibility = new Wbcr_FactoryClearfy_Compatibility(array_merge($plugin_info, array(
45
+ 'plugin_already_activate' => defined('WCTR_PLUGIN_ACTIVE'),
46
+ 'plugin_as_component' => defined('LOADING_CYRLITERA_AS_ADDON'),
47
+ 'plugin_dir' => WCTR_PLUGIN_DIR,
48
+ 'plugin_base' => WCTR_PLUGIN_BASE,
49
+ 'plugin_url' => WCTR_PLUGIN_URL,
50
+ 'required_php_version' => '5.3',
51
+ 'required_wp_version' => '4.2.0',
52
+ 'required_clearfy_check_component' => true
53
+ )));
54
+
55
+ /**
56
+ * Если плагин совместим, то он продолжит свою работу, иначе будет остановлен,
57
+ * а пользователь получит предупреждение.
58
+ */
59
+ if( !$compatibility->check() ) {
60
  return;
61
+ }
62
+
63
+ define('WCTR_PLUGIN_ACTIVE', true);
64
+
65
+ if( !defined('LOADING_CYRLITERA_AS_ADDON') ) {
66
+ require_once(WCTR_PLUGIN_DIR . '/libs/factory/core/boot.php');
67
+ }
68
+
69
+ require_once(WCTR_PLUGIN_DIR . '/includes/class.helpers.php');
70
+ require_once(WCTR_PLUGIN_DIR . '/includes/class.plugin.php');
71
+
72
+ if( !defined('LOADING_CYRLITERA_AS_ADDON') ) {
73
+ new WCTR_Plugin(__FILE__, $plugin_info);
74
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
components/cyrlitera/includes/class.helpers.php CHANGED
@@ -19,6 +19,7 @@
19
  $origin_title = $title;
20
  $iso9_table = self::getSymbolsPack();
21
 
 
22
  $title = strtr($title, $iso9_table);
23
 
24
  if( function_exists('iconv') ) {
@@ -54,9 +55,7 @@
54
  }
55
  }
56
 
57
- $term = $is_term
58
- ? $wpdb->get_var($wpdb->prepare("SELECT slug FROM {$wpdb->terms} WHERE name = '%s'", $title))
59
- : '';
60
 
61
  if( empty($term) ) {
62
  $title = self::transliterate($title);
@@ -226,7 +225,7 @@
226
  );
227
  }
228
 
229
- $custom_rules = WCTR_Plugin::app()->getOption('custom_symbols_pack');
230
 
231
  if( !empty($custom_rules) ) {
232
  $split_rules = explode(',', $custom_rules);
@@ -241,17 +240,77 @@
241
  }
242
 
243
  $ret[$split_symbols[0]] = $split_symbols[1];
244
-
245
- //todo: don't support php 7.2
246
- /*if( strlen($split_symbols[1]) > 0 ) {
247
- $ret[mb_strtoupper($split_symbols[0], 'UTF-8')] = mb_strtoupper($split_symbols[1]{0}, 'UTF-8') . substr($split_symbols[1], 1);
248
- } else {
249
- $ret[mb_strtoupper($split_symbols[0], 'UTF-8')] = $split_symbols[1];
250
- }*/
251
  }
252
  }
253
  }
254
 
255
  return apply_filters('wbcr_cyrlitera_default_symbols_pack', $ret);
256
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
257
  }
19
  $origin_title = $title;
20
  $iso9_table = self::getSymbolsPack();
21
 
22
+ $title = urldecode($title);
23
  $title = strtr($title, $iso9_table);
24
 
25
  if( function_exists('iconv') ) {
55
  }
56
  }
57
 
58
+ $term = $is_term ? $wpdb->get_var($wpdb->prepare("SELECT slug FROM {$wpdb->terms} WHERE name = '%s'", $title)) : '';
 
 
59
 
60
  if( empty($term) ) {
61
  $title = self::transliterate($title);
225
  );
226
  }
227
 
228
+ $custom_rules = WCTR_Plugin::app()->getPopulateOption('custom_symbols_pack');
229
 
230
  if( !empty($custom_rules) ) {
231
  $split_rules = explode(',', $custom_rules);
240
  }
241
 
242
  $ret[$split_symbols[0]] = $split_symbols[1];
 
 
 
 
 
 
 
243
  }
244
  }
245
  }
246
 
247
  return apply_filters('wbcr_cyrlitera_default_symbols_pack', $ret);
248
  }
249
+
250
+ /**
251
+ * Делает откат изменений после выполнения метода convertExistingSlugs,
252
+ * этот метод не восстановливает вновь конвертированные слаги.
253
+ */
254
+ public static function rollbackUrlChanges()
255
+ {
256
+ global $wpdb;
257
+
258
+ $posts = $wpdb->get_results("SELECT p.ID, p.post_name, m.meta_value as old_post_name FROM {$wpdb->posts} p
259
+ LEFT JOIN {$wpdb->postmeta} m
260
+ ON p.ID = m.post_id
261
+ WHERE p.post_status
262
+ IN ('publish', 'future', 'private') AND m.meta_key='wbcr_wp_old_slug' AND m.meta_value IS NOT NULL");
263
+
264
+ foreach((array)$posts as $post) {
265
+ if( $post->post_name != $post->old_post_name ) {
266
+ $wpdb->update($wpdb->posts, array('post_name' => $post->old_post_name), array('ID' => $post->ID), array('%s'), array('%d'));
267
+ delete_post_meta($post->ID, 'wbcr_wp_old_slug');
268
+ }
269
+ }
270
+
271
+ $terms = $wpdb->get_results("SELECT t.term_id, t.slug, o.option_value as old_term_slug FROM {$wpdb->terms} t
272
+ LEFT JOIN {$wpdb->options} o
273
+ ON o.option_name=concat('wbcr_wp_term_',t.term_id, '_old_slug')
274
+ WHERE o.option_value IS NOT NULL");
275
+
276
+ foreach((array)$terms as $term) {
277
+ if( $term->slug != $term->old_term_slug ) {
278
+ $wpdb->update($wpdb->terms, array('slug' => $term->old_term_slug), array('term_id' => $term->term_id), array('%s'), array('%d'));
279
+ delete_option('wbcr_wp_term_' . $term->term_id . '_old_slug');
280
+ }
281
+ }
282
+ }
283
+
284
+ /**
285
+ * Массово конвертирует слаги для страниц, записей, терминов и т.д.
286
+ * Делает бекап старого слага, чтобы можно было восстановить его. А также использовать в других плагинах.
287
+ */
288
+ public static function convertExistingSlugs()
289
+ {
290
+ global $wpdb;
291
+
292
+ $posts = $wpdb->get_results("SELECT ID, post_name FROM {$wpdb->posts}
293
+ WHERE post_name REGEXP('[^_A-Za-z0-9\-]+') AND post_status IN ('publish', 'future', 'private')");
294
+
295
+ foreach((array)$posts as $post) {
296
+ $sanitized_name = WCTR_Helper::sanitizeTitle(urldecode($post->post_name));
297
+
298
+ if( $post->post_name != $sanitized_name ) {
299
+ add_post_meta($post->ID, 'wbcr_wp_old_slug', $post->post_name);
300
+
301
+ $wpdb->update($wpdb->posts, array('post_name' => $sanitized_name), array('ID' => $post->ID), array('%s'), array('%d'));
302
+ }
303
+ }
304
+
305
+ $terms = $wpdb->get_results("SELECT term_id, slug FROM {$wpdb->terms} WHERE slug REGEXP('[^_A-Za-z0-9\-]+')");
306
+
307
+ foreach((array)$terms as $term) {
308
+ $sanitized_slug = WCTR_Helper::sanitizeTitle(urldecode($term->slug));
309
+
310
+ if( $term->slug != $sanitized_slug ) {
311
+ update_option('wbcr_wp_term_' . $term->term_id . '_old_slug', $term->slug, false);
312
+ $wpdb->update($wpdb->terms, array('slug' => $sanitized_slug), array('term_id' => $term->term_id), array('%s'), array('%d'));
313
+ }
314
+ }
315
+ }
316
  }
components/cyrlitera/includes/class.plugin.php CHANGED
@@ -3,7 +3,7 @@
3
  * Transliteration core class
4
  * @author Webcraftic <wordpress.webraftic@gmail.com>
5
  * @copyright (c) 19.02.2018, Webcraftic
6
- * @version 1.0
7
  */
8
 
9
  // Exit if accessed directly
@@ -19,7 +19,7 @@
19
 
20
  }
21
  } else {
22
- class WCTR_PluginFactory extends Wbcr_Factory406_Plugin {
23
 
24
  }
25
  }
@@ -28,7 +28,7 @@
28
  class WCTR_Plugin extends WCTR_PluginFactory {
29
 
30
  /**
31
- * @var Wbcr_Factory406_Plugin
32
  */
33
  private static $app;
34
 
@@ -47,11 +47,9 @@
47
  $this->as_addon = isset($data['as_addon']);
48
 
49
  if( $this->as_addon ) {
50
- $plugin_parent = isset($data['plugin_parent'])
51
- ? $data['plugin_parent']
52
- : null;
53
 
54
- if( !($plugin_parent instanceof Wbcr_Factory406_Plugin) ) {
55
  throw new Exception('An invalid instance of the class was passed.');
56
  }
57
 
@@ -64,7 +62,6 @@
64
  parent::__construct($plugin_path, $data);
65
  }
66
 
67
- $this->setTextDomain();
68
  $this->setModules();
69
 
70
  $this->globalScripts();
@@ -72,42 +69,32 @@
72
  if( is_admin() ) {
73
  $this->adminScripts();
74
  }
 
 
75
  }
76
 
77
  /**
78
- * @return Wbcr_Factory406_Plugin
79
  */
80
  public static function app()
81
  {
82
  return self::$app;
83
  }
84
 
85
- // todo: перенести этот медот в фреймворк
86
- protected function setTextDomain()
87
  {
88
- // Localization plugin
89
- //load_plugin_textdomain('cyrlitera', false, dirname(WCL_PLUGIN_BASE) . '/languages/');
90
-
91
- $domain = 'cyrlitera';
92
- $locale = apply_filters('plugin_locale', is_admin()
93
- ? get_user_locale()
94
- : get_locale(), $domain);
95
- $mofile = $domain . '-' . $locale . '.mo';
96
-
97
- if( !load_textdomain($domain, WCTR_PLUGIN_DIR . '/languages/' . $mofile) ) {
98
- load_muplugin_textdomain($domain);
99
- }
100
  }
101
-
102
  protected function setModules()
103
  {
104
  if( !$this->as_addon ) {
105
  self::app()->load(array(
106
- array('libs/factory/bootstrap', 'factory_bootstrap_406', 'admin'),
107
- array('libs/factory/forms', 'factory_forms_407', 'admin'),
108
- array('libs/factory/pages', 'factory_pages_407', 'admin'),
109
- array('libs/factory/clearfy', 'factory_clearfy_203', 'all'),
110
- array('libs/factory/notices', 'factory_notices_405', 'admin')
111
  ));
112
  }
113
  }
@@ -122,12 +109,11 @@
122
 
123
  private function registerPages()
124
  {
125
- if( $this->as_addon ) {
126
- return;
127
- }
128
-
129
  self::app()->registerPage('WCTR_CyrliteraPage', WCTR_PLUGIN_DIR . '/admin/pages/cyrlitera.php');
130
- self::app()->registerPage('WCTR_MoreFeaturesPage', WCTR_PLUGIN_DIR . '/admin/pages/more-features.php');
 
 
 
131
  }
132
 
133
  private function adminScripts()
@@ -145,4 +131,4 @@
145
  new WCTR_ConfigСyrlitera(self::$app);
146
  }
147
  }
148
- }
3
  * Transliteration core class
4
  * @author Webcraftic <wordpress.webraftic@gmail.com>
5
  * @copyright (c) 19.02.2018, Webcraftic
6
+ * @version 1.1
7
  */
8
 
9
  // Exit if accessed directly
19
 
20
  }
21
  } else {
22
+ class WCTR_PluginFactory extends Wbcr_Factory409_Plugin {
23
 
24
  }
25
  }
28
  class WCTR_Plugin extends WCTR_PluginFactory {
29
 
30
  /**
31
+ * @var Wbcr_Factory409_Plugin
32
  */
33
  private static $app;
34
 
47
  $this->as_addon = isset($data['as_addon']);
48
 
49
  if( $this->as_addon ) {
50
+ $plugin_parent = isset($data['plugin_parent']) ? $data['plugin_parent'] : null;
 
 
51
 
52
+ if( !($plugin_parent instanceof Wbcr_Factory409_Plugin) ) {
53
  throw new Exception('An invalid instance of the class was passed.');
54
  }
55
 
62
  parent::__construct($plugin_path, $data);
63
  }
64
 
 
65
  $this->setModules();
66
 
67
  $this->globalScripts();
69
  if( is_admin() ) {
70
  $this->adminScripts();
71
  }
72
+
73
+ add_action('plugins_loaded', array($this, 'pluginsLoaded'));
74
  }
75
 
76
  /**
77
+ * @return Wbcr_Factory409_Plugin
78
  */
79
  public static function app()
80
  {
81
  return self::$app;
82
  }
83
 
84
+ public function pluginsLoaded()
 
85
  {
86
+ self::app()->setTextDomain('cyrlitera', WCTR_PLUGIN_DIR);
 
 
 
 
 
 
 
 
 
 
 
87
  }
88
+
89
  protected function setModules()
90
  {
91
  if( !$this->as_addon ) {
92
  self::app()->load(array(
93
+ array('libs/factory/bootstrap', 'factory_bootstrap_409', 'admin'),
94
+ array('libs/factory/forms', 'factory_forms_410', 'admin'),
95
+ array('libs/factory/pages', 'factory_pages_410', 'admin'),
96
+ array('libs/factory/clearfy', 'factory_clearfy_206', 'all'),
97
+ array('libs/factory/notices', 'factory_notices_407', 'admin')
98
  ));
99
  }
100
  }
109
 
110
  private function registerPages()
111
  {
 
 
 
 
112
  self::app()->registerPage('WCTR_CyrliteraPage', WCTR_PLUGIN_DIR . '/admin/pages/cyrlitera.php');
113
+
114
+ if( !$this->as_addon ) {
115
+ self::app()->registerPage('WCTR_MoreFeaturesPage', WCTR_PLUGIN_DIR . '/admin/pages/more-features.php');
116
+ }
117
  }
118
 
119
  private function adminScripts()
131
  new WCTR_ConfigСyrlitera(self::$app);
132
  }
133
  }
134
+ }
components/cyrlitera/includes/classes/class.configurate-cyrlitera.php CHANGED
@@ -11,20 +11,21 @@
11
  exit;
12
  }
13
 
14
- class WCTR_ConfigСyrlitera extends Wbcr_FactoryClearfy203_Configurate {
 
15
 
16
  public function registerActionsAndFilters()
17
  {
18
- if( is_admin() || !$this->getOption('dont_use_transliteration_on_frontend') ) {
19
- if( $this->getOption('use_transliteration') ) {
20
- if( !$this->getOption('use_force_transliteration') ) {
21
  add_filter('sanitize_title', 'WCTR_Helper::sanitizeTitle', 0);
22
  } else {
23
  add_filter('sanitize_title', array($this, 'forceSanitizeTitle'), 99, 2);
24
  }
25
  }
26
- if( $this->getOption('use_transliteration_filename') ) {
27
- if( !$this->getOption('use_force_transliteration') ) {
28
  add_filter('sanitize_file_name', array($this, 'sanitizeFileName'), 9);
29
  } else {
30
  add_filter('sanitize_file_name', array($this, 'forceSanitizeFileName'), 99, 2);
@@ -33,9 +34,7 @@
33
  }
34
 
35
  if( !is_admin() ) {
36
- add_action('wp', array($this, 'redirectFromOldUrls'), $this->wpForoIsActivated()
37
- ? 11
38
- : 10);
39
  }
40
  }
41
 
@@ -62,7 +61,7 @@
62
 
63
  $filename = WCTR_Helper::transliterate($filename);
64
 
65
- if( $this->getOption('filename_to_lowercase') ) {
66
  $filename = strtolower($filename);
67
  }
68
 
@@ -138,7 +137,7 @@
138
  if( count($parts) <= 2 ) {
139
  $filename = WCTR_Helper::transliterate($filename);
140
 
141
- if( $this->getOption('filename_to_lowercase') ) {
142
  $filename = strtolower($filename);
143
  }
144
 
@@ -175,7 +174,7 @@
175
 
176
  $filename = WCTR_Helper::transliterate($filename);
177
 
178
- if( $this->getOption('filename_to_lowercase') ) {
179
  $filename = strtolower($filename);
180
  }
181
 
@@ -201,7 +200,7 @@
201
  */
202
  public function redirectFromOldUrls()
203
  {
204
- if( !WbcrFactoryClearfy203_Helpers::isPermalink() ) {
205
  return;
206
  }
207
  $is404 = is_404();
@@ -214,7 +213,7 @@
214
  }
215
 
216
  if( $is404 ) {
217
- if( $this->getOption('redirect_from_old_urls') ) {
218
  $current_url = urldecode($_SERVER['REQUEST_URI']);
219
  $new_url = WCTR_Helper::transliterate($current_url, true);
220
 
11
  exit;
12
  }
13
 
14
+
15
+ class WCTR_ConfigСyrlitera extends Wbcr_FactoryClearfy206_Configurate {
16
 
17
  public function registerActionsAndFilters()
18
  {
19
+ if( is_admin() || !$this->getPopulateOption('dont_use_transliteration_on_frontend') ) {
20
+ if( $this->getPopulateOption('use_transliteration') ) {
21
+ if( !$this->getPopulateOption('use_force_transliteration') ) {
22
  add_filter('sanitize_title', 'WCTR_Helper::sanitizeTitle', 0);
23
  } else {
24
  add_filter('sanitize_title', array($this, 'forceSanitizeTitle'), 99, 2);
25
  }
26
  }
27
+ if( $this->getPopulateOption('use_transliteration_filename') ) {
28
+ if( !$this->getPopulateOption('use_force_transliteration') ) {
29
  add_filter('sanitize_file_name', array($this, 'sanitizeFileName'), 9);
30
  } else {
31
  add_filter('sanitize_file_name', array($this, 'forceSanitizeFileName'), 99, 2);
34
  }
35
 
36
  if( !is_admin() ) {
37
+ add_action('wp', array($this, 'redirectFromOldUrls'), $this->wpForoIsActivated() ? 11 : 10);
 
 
38
  }
39
  }
40
 
61
 
62
  $filename = WCTR_Helper::transliterate($filename);
63
 
64
+ if( $this->getPopulateOption('filename_to_lowercase') ) {
65
  $filename = strtolower($filename);
66
  }
67
 
137
  if( count($parts) <= 2 ) {
138
  $filename = WCTR_Helper::transliterate($filename);
139
 
140
+ if( $this->getPopulateOption('filename_to_lowercase') ) {
141
  $filename = strtolower($filename);
142
  }
143
 
174
 
175
  $filename = WCTR_Helper::transliterate($filename);
176
 
177
+ if( $this->getPopulateOption('filename_to_lowercase') ) {
178
  $filename = strtolower($filename);
179
  }
180
 
200
  */
201
  public function redirectFromOldUrls()
202
  {
203
+ if( !WbcrFactoryClearfy206_Helpers::isPermalink() ) {
204
  return;
205
  }
206
  $is404 = is_404();
213
  }
214
 
215
  if( $is404 ) {
216
+ if( $this->getPopulateOption('redirect_from_old_urls') ) {
217
  $current_url = urldecode($_SERVER['REQUEST_URI']);
218
  $new_url = WCTR_Helper::transliterate($current_url, true);
219
 
components/cyrlitera/languages/cyrlitera-nl_BE.po CHANGED
@@ -1,208 +1,208 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: Clearfy\n"
4
- "POT-Creation-Date: 2018-09-06 18:29+0300\n"
5
- "PO-Revision-Date: \n"
6
- "Last-Translator: \n"
7
- "Language-Team: \n"
8
- "Language: nl_BE\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: Poedit 2.1.1\n"
13
- "Plural-Forms: nplurals=2; plural=n != 1;\n"
14
- "X-Generator: Poedit 2.1.1\n"
15
- "X-Poedit-Basepath: ..\n"
16
- "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
17
- "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
18
- "X-Poedit-SourceCharset: UTF-8\n"
19
- "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c\n"
20
- "X-Poedit-SearchPath-0: .\n"
21
- "X-Poedit-SearchPathExcluded-0: libs\n"
22
- "X-Poedit-SearchPathExcluded-1: components\n"
23
- "X-Poedit-SearchPathExcluded-2: cache\n"
24
-
25
- #: admin/boot.php:56
26
- #, php-format
27
- msgid ""
28
- "We found that you have the plugin %s installed. The functions of this plugin "
29
- "already exist in %s. Please deactivate plugin %s to avoid conflicts between "
30
- "plugins functions."
31
- msgstr ""
32
-
33
- #: admin/boot.php:57
34
- #, php-format
35
- msgid ""
36
- "If you do not want to deactivate the plugin %s for some reason, we strongly "
37
- "recommend do not use the same plugins functions at the same time!"
38
- msgstr ""
39
- "Als u de plugin %s om eender welke reden niet wilt deactiveren, raden wij u "
40
- "ten zeerste aan om niet dezelfde plugin functies tegelijkertijd te gebruiken!"
41
-
42
- #: admin/boot.php:117 admin/options.php:30
43
- msgid "Use transliteration"
44
- msgstr "Gebruik transliteratie"
45
-
46
- #: admin/boot.php:123 admin/options.php:48
47
- msgid "Force transliteration"
48
- msgstr "Forceer transliteratie"
49
-
50
- #: admin/boot.php:129 admin/options.php:78
51
- msgid "Don't use transliteration in frontend"
52
- msgstr ""
53
-
54
- #: admin/boot.php:135 admin/options.php:39
55
- msgid "Convert file names"
56
- msgstr "Bestandsnamen converteren"
57
-
58
- #: admin/boot.php:141 admin/options.php:58
59
- msgid "Convert file names into lowercase"
60
- msgstr "Bestandsnamen converteren naar kleine letters"
61
-
62
- #: admin/boot.php:147 admin/options.php:68
63
- msgid "Redirection old URLs to new ones"
64
- msgstr "Redirect oude URL's naar nieuwe"
65
-
66
- #: admin/boot.php:153 admin/options.php:88
67
- msgid "Character Sets"
68
- msgstr "Tekensets"
69
-
70
- #: admin/boot.php:174
71
- msgid "Get ultimate plugin free"
72
- msgstr "Krijg ultieme plugin gratis"
73
-
74
- #: admin/options.php:23
75
- msgid "Transliteration of Cyrillic alphabet."
76
- msgstr "Transliteratie van Cyrillische alfabet."
77
-
78
- #: admin/options.php:23
79
- msgid ""
80
- "Converts Cyrillic permalinks of post, pages, taxonomies and media files to the "
81
- "Latin alphabet. Supports Russian, Ukrainian, Georgian, Bulgarian languages. "
82
- "Example: http://site.dev/последние-новости -> http://site.dev/poslednie-novosti"
83
- msgstr ""
84
- "Converteert Cyrillische permalinks van post, pagina's, taxonomieën en "
85
- "mediabestanden naar het Latijnse alfabet. Ondersteunt Russische, Oekraïense, "
86
- "Georgische, Bulgaarse talen. Voorbeeld: http://site.dev/последнивости -> "
87
- "http://site.dev/poslednie-novosti"
88
-
89
- #: admin/options.php:32
90
- msgid ""
91
- "If you enable this option, all URLs of new pages, posts, tags, and categories "
92
- "will automatically be converted to Latin."
93
- msgstr ""
94
- "Als u deze optie inschakelt, worden alle URL's van nieuwe pagina's, berichten, "
95
- "tags en categorieën automatisch geconverteerd naar het Latijn."
96
-
97
- #: admin/options.php:41
98
- msgid ""
99
- "This option works only for new media library files. All Cyrillic names of the "
100
- "downloaded files will be converted to names with Latin characters."
101
- msgstr ""
102
- "Deze optie werkt alleen voor nieuwe mediabibliotheek bestanden. Alle "
103
- "Cyrillische namen van de gedownloade bestanden worden geconverteerd naar namen "
104
- "met Latijnse tekens."
105
-
106
- #: admin/options.php:50
107
- #, php-format
108
- msgid ""
109
- "If any of your plugins affects transliteration of links and file names, you "
110
- "can use this option to change the plugin of %s to overwrite the changes of the "
111
- "other plugins."
112
- msgstr ""
113
- "Als één van uw plugins de transliteratie van koppelingen en bestandsnamen "
114
- "beïnvloedt, kunt u deze optie gebruiken om de plugin van %s te wijzigen om de "
115
- "wijzigingen van de andere plugins te overschrijven."
116
-
117
- #: admin/options.php:60
118
- msgid ""
119
- "This function works only for new upload files. Example: File_Name.jpg -> "
120
- "file_name.jpg"
121
- msgstr ""
122
- "Deze functie werkt alleen voor nieuwe uploadbestanden. Voorbeeld: File_Name."
123
- "jpg -> file_name.jpg"
124
-
125
- #: admin/options.php:70
126
- msgid ""
127
- "If at the time of the plugin installation you had pages with unconverted "
128
- "links, use this option to redirect users from old to new URLs with the Latin "
129
- "alphabet."
130
- msgstr ""
131
- "Als u op het moment van de installatie van de plugin pagina's had met niet-"
132
- "geconverteerde links, gebruikt u deze optie om gebruikers om te leiden van "
133
- "oude naar nieuwe URL's met het Latijnse alfabet."
134
-
135
- #: admin/options.php:80
136
- msgid "Enable when have a problem in frontend."
137
- msgstr ""
138
-
139
- #: admin/options.php:89
140
- msgid ""
141
- "You can supplement current base of transliteration characters. Write pairs of "
142
- "values separated by commas. Example:"
143
- msgstr ""
144
- "U kunt de huidige basis van transliteratie tekens aanvullen. Schrijf paren van "
145
- "waardes gescheiden door komma's. Voorbeeld:"
146
-
147
- #: admin/options.php:178
148
- msgid ""
149
- "If at the time of the plugin installation you already had posts, pages, tags "
150
- "and categories, click on this button and the plugin will automatically convert "
151
- "URLs into Latin. Attention! Previously uploaded files will not be converted."
152
- msgstr ""
153
- "Als u tijdens de installatie van de plugin al berichten, pagina's, tags en "
154
- "categorieën had, klik dan op deze knop en de plugin converteert URL's "
155
- "automatisch naar Latijn. Aandacht! Eerder geüploade bestanden worden niet "
156
- "geconverteerd."
157
-
158
- #: admin/options.php:187
159
- msgid "Convert already created posts and categories"
160
- msgstr "Converteer eerder gemaakte berichten en categorieën"
161
-
162
- #: admin/options.php:189
163
- msgid "Url of old posts, pages,terms,tags successfully converted into Latin!"
164
- msgstr "Url van oude berichten, pagina's, voorwaarden, tags omgezet in Latijn!"
165
-
166
- #: admin/options.php:199
167
- msgid ""
168
- "Allows you to restore converted URLs by using the \"Convert already created "
169
- "posts and categories\" button. This can be useful in case of incorrect URLs or "
170
- "incorrect transliteration of some characters. You can roll back changes and "
171
- "advance the character sets above to correct the plugin's work. "
172
- msgstr ""
173
- "Hiermee kunt u geconverteerde URL's herstellen met behulp van de knop "
174
- "\"Bestaande berichten en categorieën converteren\". Dit kan handig zijn in het "
175
- "geval van onjuiste URL's of onjuiste transliteratie van sommige tekens. U kunt "
176
- "wijzigingen terugdraaien en de tekensets hierboven verbeteren om het werk van "
177
- "de plugin te corrigeren."
178
-
179
- #: admin/options.php:208
180
- msgid "Rollback changes"
181
- msgstr "Wijzigingen terugdraaien"
182
-
183
- #: admin/options.php:210
184
- msgid "The rollback of new changes was successful!"
185
- msgstr "Het terugdraaien van nieuwe wijzigingen was succesvol!"
186
-
187
- #: admin/pages/cyrlitera.php:33 admin/pages/cyrlitera.php:49
188
- msgid "Transliteration"
189
- msgstr "Transliteratie"
190
-
191
- #: admin/pages/cyrlitera.php:50
192
- msgid "General"
193
- msgstr "Algemeen"
194
-
195
- #: cyrlitera.php:23
196
- msgid ""
197
- "We found that you have the \"Clearfy - disable unused features\" plugin "
198
- "installed, this plugin already has disable comments functions, so you can "
199
- "deactivate plugin \"Webcraftic Cyrlitera\"!"
200
- msgstr ""
201
- "We hebben vastgesteld dat de plugin \"Clearfy - niet-gebruikte functies "
202
- "uitschakelen\" is geïnstalleerd. Deze plugin heeft reeds de functie "
203
- "opmerkingen uitschakelen, zodat u de plugin \"Webcraftic Cyrlitera\" kunt "
204
- "deactiveren!"
205
-
206
- #: cyrlitera.php:81
207
- msgid "Webcraftic Cyrlitera"
208
  msgstr "Webcraftic Cyrlitera"
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: Clearfy\n"
4
+ "POT-Creation-Date: 2018-09-06 18:29+0300\n"
5
+ "PO-Revision-Date: \n"
6
+ "Last-Translator: \n"
7
+ "Language-Team: \n"
8
+ "Language: nl_BE\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: Poedit 2.1.1\n"
13
+ "Plural-Forms: nplurals=2; plural=n != 1;\n"
14
+ "X-Generator: Poedit 2.1.1\n"
15
+ "X-Poedit-Basepath: ..\n"
16
+ "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
17
+ "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
18
+ "X-Poedit-SourceCharset: UTF-8\n"
19
+ "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c\n"
20
+ "X-Poedit-SearchPath-0: .\n"
21
+ "X-Poedit-SearchPathExcluded-0: libs\n"
22
+ "X-Poedit-SearchPathExcluded-1: components\n"
23
+ "X-Poedit-SearchPathExcluded-2: cache\n"
24
+
25
+ #: admin/boot.php:56
26
+ #, php-format
27
+ msgid ""
28
+ "We found that you have the plugin %s installed. The functions of this plugin "
29
+ "already exist in %s. Please deactivate plugin %s to avoid conflicts between "
30
+ "plugins functions."
31
+ msgstr ""
32
+
33
+ #: admin/boot.php:57
34
+ #, php-format
35
+ msgid ""
36
+ "If you do not want to deactivate the plugin %s for some reason, we strongly "
37
+ "recommend do not use the same plugins functions at the same time!"
38
+ msgstr ""
39
+ "Als u de plugin %s om eender welke reden niet wilt deactiveren, raden wij u "
40
+ "ten zeerste aan om niet dezelfde plugin functies tegelijkertijd te gebruiken!"
41
+
42
+ #: admin/boot.php:117 admin/options.php:30
43
+ msgid "Use transliteration"
44
+ msgstr "Gebruik transliteratie"
45
+
46
+ #: admin/boot.php:123 admin/options.php:48
47
+ msgid "Force transliteration"
48
+ msgstr "Forceer transliteratie"
49
+
50
+ #: admin/boot.php:129 admin/options.php:78
51
+ msgid "Don't use transliteration in frontend"
52
+ msgstr ""
53
+
54
+ #: admin/boot.php:135 admin/options.php:39
55
+ msgid "Convert file names"
56
+ msgstr "Bestandsnamen converteren"
57
+
58
+ #: admin/boot.php:141 admin/options.php:58
59
+ msgid "Convert file names into lowercase"
60
+ msgstr "Bestandsnamen converteren naar kleine letters"
61
+
62
+ #: admin/boot.php:147 admin/options.php:68
63
+ msgid "Redirection old URLs to new ones"
64
+ msgstr "Redirect oude URL's naar nieuwe"
65
+
66
+ #: admin/boot.php:153 admin/options.php:88
67
+ msgid "Character Sets"
68
+ msgstr "Tekensets"
69
+
70
+ #: admin/boot.php:174
71
+ msgid "Get ultimate plugin free"
72
+ msgstr "Krijg ultieme plugin gratis"
73
+
74
+ #: admin/options.php:23
75
+ msgid "Transliteration of Cyrillic alphabet."
76
+ msgstr "Transliteratie van Cyrillische alfabet."
77
+
78
+ #: admin/options.php:23
79
+ msgid ""
80
+ "Converts Cyrillic permalinks of post, pages, taxonomies and media files to the "
81
+ "Latin alphabet. Supports Russian, Ukrainian, Georgian, Bulgarian languages. "
82
+ "Example: http://site.dev/последние-новости -> http://site.dev/poslednie-novosti"
83
+ msgstr ""
84
+ "Converteert Cyrillische permalinks van post, pagina's, taxonomieën en "
85
+ "mediabestanden naar het Latijnse alfabet. Ondersteunt Russische, Oekraïense, "
86
+ "Georgische, Bulgaarse talen. Voorbeeld: http://site.dev/последнивости -> "
87
+ "http://site.dev/poslednie-novosti"
88
+
89
+ #: admin/options.php:32
90
+ msgid ""
91
+ "If you enable this option, all URLs of new pages, posts, tags, and categories "
92
+ "will automatically be converted to Latin."
93
+ msgstr ""
94
+ "Als u deze optie inschakelt, worden alle URL's van nieuwe pagina's, berichten, "
95
+ "tags en categorieën automatisch geconverteerd naar het Latijn."
96
+
97
+ #: admin/options.php:41
98
+ msgid ""
99
+ "This option works only for new media library files. All Cyrillic names of the "
100
+ "downloaded files will be converted to names with Latin characters."
101
+ msgstr ""
102
+ "Deze optie werkt alleen voor nieuwe mediabibliotheek bestanden. Alle "
103
+ "Cyrillische namen van de gedownloade bestanden worden geconverteerd naar namen "
104
+ "met Latijnse tekens."
105
+
106
+ #: admin/options.php:50
107
+ #, php-format
108
+ msgid ""
109
+ "If any of your plugins affects transliteration of links and file names, you "
110
+ "can use this option to change the plugin of %s to overwrite the changes of the "
111
+ "other plugins."
112
+ msgstr ""
113
+ "Als één van uw plugins de transliteratie van koppelingen en bestandsnamen "
114
+ "beïnvloedt, kunt u deze optie gebruiken om de plugin van %s te wijzigen om de "
115
+ "wijzigingen van de andere plugins te overschrijven."
116
+
117
+ #: admin/options.php:60
118
+ msgid ""
119
+ "This function works only for new upload files. Example: File_Name.jpg -> "
120
+ "file_name.jpg"
121
+ msgstr ""
122
+ "Deze functie werkt alleen voor nieuwe uploadbestanden. Voorbeeld: File_Name."
123
+ "jpg -> file_name.jpg"
124
+
125
+ #: admin/options.php:70
126
+ msgid ""
127
+ "If at the time of the plugin installation you had pages with unconverted "
128
+ "links, use this option to redirect users from old to new URLs with the Latin "
129
+ "alphabet."
130
+ msgstr ""
131
+ "Als u op het moment van de installatie van de plugin pagina's had met niet-"
132
+ "geconverteerde links, gebruikt u deze optie om gebruikers om te leiden van "
133
+ "oude naar nieuwe URL's met het Latijnse alfabet."
134
+
135
+ #: admin/options.php:80
136
+ msgid "Enable when have a problem in frontend."
137
+ msgstr ""
138
+
139
+ #: admin/options.php:89
140
+ msgid ""
141
+ "You can supplement current base of transliteration characters. Write pairs of "
142
+ "values separated by commas. Example:"
143
+ msgstr ""
144
+ "U kunt de huidige basis van transliteratie tekens aanvullen. Schrijf paren van "
145
+ "waardes gescheiden door komma's. Voorbeeld:"
146
+
147
+ #: admin/options.php:178
148
+ msgid ""
149
+ "If at the time of the plugin installation you already had posts, pages, tags "
150
+ "and categories, click on this button and the plugin will automatically convert "
151
+ "URLs into Latin. Attention! Previously uploaded files will not be converted."
152
+ msgstr ""
153
+ "Als u tijdens de installatie van de plugin al berichten, pagina's, tags en "
154
+ "categorieën had, klik dan op deze knop en de plugin converteert URL's "
155
+ "automatisch naar Latijn. Aandacht! Eerder geüploade bestanden worden niet "
156
+ "geconverteerd."
157
+
158
+ #: admin/options.php:187
159
+ msgid "Convert already created posts and categories"
160
+ msgstr "Converteer eerder gemaakte berichten en categorieën"
161
+
162
+ #: admin/options.php:189
163
+ msgid "Url of old posts, pages,terms,tags successfully converted into Latin!"
164
+ msgstr "Url van oude berichten, pagina's, voorwaarden, tags omgezet in Latijn!"
165
+
166
+ #: admin/options.php:199
167
+ msgid ""
168
+ "Allows you to restore converted URLs by using the \"Convert already created "
169
+ "posts and categories\" button. This can be useful in case of incorrect URLs or "
170
+ "incorrect transliteration of some characters. You can roll back changes and "
171
+ "advance the character sets above to correct the plugin's work. "
172
+ msgstr ""
173
+ "Hiermee kunt u geconverteerde URL's herstellen met behulp van de knop "
174
+ "\"Bestaande berichten en categorieën converteren\". Dit kan handig zijn in het "
175
+ "geval van onjuiste URL's of onjuiste transliteratie van sommige tekens. U kunt "
176
+ "wijzigingen terugdraaien en de tekensets hierboven verbeteren om het werk van "
177
+ "de plugin te corrigeren."
178
+
179
+ #: admin/options.php:208
180
+ msgid "Rollback changes"
181
+ msgstr "Wijzigingen terugdraaien"
182
+
183
+ #: admin/options.php:210
184
+ msgid "The rollback of new changes was successful!"
185
+ msgstr "Het terugdraaien van nieuwe wijzigingen was succesvol!"
186
+
187
+ #: admin/pages/cyrlitera.php:33 admin/pages/cyrlitera.php:49
188
+ msgid "Transliteration"
189
+ msgstr "Transliteratie"
190
+
191
+ #: admin/pages/cyrlitera.php:50
192
+ msgid "General"
193
+ msgstr "Algemeen"
194
+
195
+ #: cyrlitera.php:23
196
+ msgid ""
197
+ "We found that you have the \"Clearfy - disable unused features\" plugin "
198
+ "installed, this plugin already has disable comments functions, so you can "
199
+ "deactivate plugin \"Webcraftic Cyrlitera\"!"
200
+ msgstr ""
201
+ "We hebben vastgesteld dat de plugin \"Clearfy - niet-gebruikte functies "
202
+ "uitschakelen\" is geïnstalleerd. Deze plugin heeft reeds de functie "
203
+ "opmerkingen uitschakelen, zodat u de plugin \"Webcraftic Cyrlitera\" kunt "
204
+ "deactiveren!"
205
+
206
+ #: cyrlitera.php:81
207
+ msgid "Webcraftic Cyrlitera"
208
  msgstr "Webcraftic Cyrlitera"
components/cyrlitera/languages/cyrlitera-pt_BR.po CHANGED
@@ -1,210 +1,210 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: clearfy\n"
4
- "POT-Creation-Date: 2018-09-06 18:29+0300\n"
5
- "PO-Revision-Date: 2018-09-06 18:29+0300\n"
6
- "Last-Translator: alex.kovalevv@gmail.com <alex.kovalevv@gmail.com>\n"
7
- "Language-Team: Alex Kovalev <alex.kovalevv@gmail.com>\n"
8
- "Language: pt_BR\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: Poedit 2.1.1\n"
13
- "X-Poedit-Basepath: ..\n"
14
- "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
15
- "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
16
- "X-Poedit-SourceCharset: UTF-8\n"
17
- "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c\n"
18
- "X-Poedit-SearchPath-0: .\n"
19
- "X-Poedit-SearchPathExcluded-0: libs\n"
20
- "X-Poedit-SearchPathExcluded-1: components\n"
21
- "X-Poedit-SearchPathExcluded-2: cache\n"
22
-
23
- #: admin/boot.php:56
24
- #, php-format
25
- msgid ""
26
- "We found that you have the plugin %s installed. The functions of this plugin "
27
- "already exist in %s. Please deactivate plugin %s to avoid conflicts between "
28
- "plugins functions."
29
- msgstr ""
30
- "Descobrimos que você tem o plugin %s instalado. As funções deste plugin já "
31
- "existem em %s . Por favor, desative o plugin %s para evitar conflitos entre "
32
- "as funções dos plugins."
33
-
34
- #: admin/boot.php:57
35
- #, php-format
36
- msgid ""
37
- "If you do not want to deactivate the plugin %s for some reason, we strongly "
38
- "recommend do not use the same plugins functions at the same time!"
39
- msgstr ""
40
- "Se você não quiser desativar o plugin %s por algum motivo, recomendamos que "
41
- "não use as mesmas funções de plugins ao mesmo tempo!"
42
-
43
- #: admin/boot.php:117 admin/options.php:30
44
- msgid "Use transliteration"
45
- msgstr "Use transliteração"
46
-
47
- #: admin/boot.php:123 admin/options.php:48
48
- msgid "Force transliteration"
49
- msgstr "Forçar transliteração"
50
-
51
- #: admin/boot.php:129 admin/options.php:78
52
- msgid "Don't use transliteration in frontend"
53
- msgstr ""
54
-
55
- #: admin/boot.php:135 admin/options.php:39
56
- msgid "Convert file names"
57
- msgstr "Converter nomes de arquivos"
58
-
59
- #: admin/boot.php:141 admin/options.php:58
60
- msgid "Convert file names into lowercase"
61
- msgstr "Converter nomes de arquivos em minúsculas"
62
-
63
- #: admin/boot.php:147 admin/options.php:68
64
- msgid "Redirection old URLs to new ones"
65
- msgstr "Redirecionar URLs antigas para novas"
66
-
67
- #: admin/boot.php:153 admin/options.php:88
68
- msgid "Character Sets"
69
- msgstr "Conjuntos de caracteres"
70
-
71
- #: admin/boot.php:174
72
- msgid "Get ultimate plugin free"
73
- msgstr "Obtenha o melhor plugin grátis"
74
-
75
- #: admin/options.php:23
76
- msgid "Transliteration of Cyrillic alphabet."
77
- msgstr "Transliteração do alfabeto cirílico."
78
-
79
- #: admin/options.php:23
80
- msgid ""
81
- "Converts Cyrillic permalinks of post, pages, taxonomies and media files to "
82
- "the Latin alphabet. Supports Russian, Ukrainian, Georgian, Bulgarian "
83
- "languages. Example: http://site.dev/последние-новости -> http://site.dev/"
84
- "poslednie-novosti"
85
- msgstr ""
86
- "Converte permalinks cirílicos de post, páginas, taxonomias e arquivos de "
87
- "mídia para o alfabeto latino. Suporta as línguas russa, ucraniana, georgiana "
88
- "e búlgara. Exemplo: http://site.dev/последние-новости -> http://site.dev/"
89
- "poslednie-novosti"
90
-
91
- #: admin/options.php:32
92
- msgid ""
93
- "If you enable this option, all URLs of new pages, posts, tags, and "
94
- "categories will automatically be converted to Latin."
95
- msgstr ""
96
- "Se você ativar essa opção, todos os URLs de novas páginas, postagens, tags e "
97
- "categorias serão convertidos automaticamente para o idioma latino."
98
-
99
- #: admin/options.php:41
100
- msgid ""
101
- "This option works only for new media library files. All Cyrillic names of "
102
- "the downloaded files will be converted to names with Latin characters."
103
- msgstr ""
104
- "Esta opção funciona apenas para novos arquivos de biblioteca de mídia. Todos "
105
- "os nomes cirílicos dos arquivos baixados serão convertidos em nomes com "
106
- "caracteres latinos."
107
-
108
- #: admin/options.php:50
109
- #, php-format
110
- msgid ""
111
- "If any of your plugins affects transliteration of links and file names, you "
112
- "can use this option to change the plugin of %s to overwrite the changes of "
113
- "the other plugins."
114
- msgstr ""
115
- "Se algum de seus plugins afetar a transliteração de links e nomes de "
116
- "arquivos, você poderá usar essa opção para alterar o plug-in de %s para "
117
- "sobrescrever as alterações dos outros plug-ins."
118
-
119
- #: admin/options.php:60
120
- msgid ""
121
- "This function works only for new upload files. Example: File_Name.jpg -> "
122
- "file_name.jpg"
123
- msgstr ""
124
- "Esta função funciona apenas para novos arquivos de upload. Exemplo: "
125
- "File_Name.jpg -> file_name.jpg"
126
-
127
- #: admin/options.php:70
128
- msgid ""
129
- "If at the time of the plugin installation you had pages with unconverted "
130
- "links, use this option to redirect users from old to new URLs with the Latin "
131
- "alphabet."
132
- msgstr ""
133
- "Se, no momento da instalação do plug-in, você tivesse páginas com links não "
134
- "convertidos, use essa opção para redirecionar os usuários de URLs antigos "
135
- "para novos com o alfabeto latino."
136
-
137
- #: admin/options.php:80
138
- msgid "Enable when have a problem in frontend."
139
- msgstr ""
140
-
141
- #: admin/options.php:89
142
- msgid ""
143
- "You can supplement current base of transliteration characters. Write pairs "
144
- "of values separated by commas. Example:"
145
- msgstr ""
146
- "Você pode complementar a base atual de caracteres de transliteração. Escreva "
147
- "pares de valores separados por vírgulas. Exemplo:"
148
-
149
- #: admin/options.php:178
150
- msgid ""
151
- "If at the time of the plugin installation you already had posts, pages, tags "
152
- "and categories, click on this button and the plugin will automatically "
153
- "convert URLs into Latin. Attention! Previously uploaded files will not be "
154
- "converted."
155
- msgstr ""
156
- "Se, no momento da instalação do plugin, você já tiver postagens, páginas, "
157
- "tags e categorias, clique neste botão e o plug-in converterá os URLs "
158
- "automaticamente em latim. Atenção! Os arquivos enviados anteriormente não "
159
- "serão convertidos."
160
-
161
- #: admin/options.php:187
162
- msgid "Convert already created posts and categories"
163
- msgstr "Converter posts e categorias já criados"
164
-
165
- #: admin/options.php:189
166
- msgid "Url of old posts, pages,terms,tags successfully converted into Latin!"
167
- msgstr "URL de postagens, páginas, termos e tags antigos convertidos em latim."
168
-
169
- #: admin/options.php:199
170
- msgid ""
171
- "Allows you to restore converted URLs by using the \"Convert already created "
172
- "posts and categories\" button. This can be useful in case of incorrect URLs "
173
- "or incorrect transliteration of some characters. You can roll back changes "
174
- "and advance the character sets above to correct the plugin's work. "
175
- msgstr ""
176
- "Permite restaurar URLs convertidos usando o botão \"Converter postagens e "
177
- "categorias já criadas \". Isso pode ser útil em caso de URLs incorretos ou "
178
- "transliteração incorreta de alguns caracteres. Você pode reverter alterações "
179
- "e avançar os conjuntos de caracteres acima para corrigir o trabalho do "
180
- "plugin. "
181
-
182
- #: admin/options.php:208
183
- msgid "Rollback changes"
184
- msgstr "Alterações de reversão"
185
-
186
- #: admin/options.php:210
187
- msgid "The rollback of new changes was successful!"
188
- msgstr "A reversão de novas mudanças foi bem sucedida!"
189
-
190
- #: admin/pages/cyrlitera.php:33 admin/pages/cyrlitera.php:49
191
- msgid "Transliteration"
192
- msgstr "Transliteração"
193
-
194
- #: admin/pages/cyrlitera.php:50
195
- msgid "General"
196
- msgstr "Geral"
197
-
198
- #: cyrlitera.php:23
199
- msgid ""
200
- "We found that you have the \"Clearfy - disable unused features\" plugin "
201
- "installed, this plugin already has disable comments functions, so you can "
202
- "deactivate plugin \"Webcraftic Cyrlitera\"!"
203
- msgstr ""
204
- "Descobrimos que você tem o \"Clearfy - desativar os recursos não utilizados "
205
- "\" plugin instalado, este plugin já tem funções de desabilitar comentários, "
206
- "assim você pode desativar o plugin \"Webcraftic Cyrlitera \"!"
207
-
208
- #: cyrlitera.php:81
209
- msgid "Webcraftic Cyrlitera"
210
  msgstr "Webcraftic Cyrlitera"
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: clearfy\n"
4
+ "POT-Creation-Date: 2018-09-06 18:29+0300\n"
5
+ "PO-Revision-Date: 2018-09-06 18:29+0300\n"
6
+ "Last-Translator: alex.kovalevv@gmail.com <alex.kovalevv@gmail.com>\n"
7
+ "Language-Team: Alex Kovalev <alex.kovalevv@gmail.com>\n"
8
+ "Language: pt_BR\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: Poedit 2.1.1\n"
13
+ "X-Poedit-Basepath: ..\n"
14
+ "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
15
+ "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
16
+ "X-Poedit-SourceCharset: UTF-8\n"
17
+ "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c\n"
18
+ "X-Poedit-SearchPath-0: .\n"
19
+ "X-Poedit-SearchPathExcluded-0: libs\n"
20
+ "X-Poedit-SearchPathExcluded-1: components\n"
21
+ "X-Poedit-SearchPathExcluded-2: cache\n"
22
+
23
+ #: admin/boot.php:56
24
+ #, php-format
25
+ msgid ""
26
+ "We found that you have the plugin %s installed. The functions of this plugin "
27
+ "already exist in %s. Please deactivate plugin %s to avoid conflicts between "
28
+ "plugins functions."
29
+ msgstr ""
30
+ "Descobrimos que você tem o plugin %s instalado. As funções deste plugin já "
31
+ "existem em %s . Por favor, desative o plugin %s para evitar conflitos entre "
32
+ "as funções dos plugins."
33
+
34
+ #: admin/boot.php:57
35
+ #, php-format
36
+ msgid ""
37
+ "If you do not want to deactivate the plugin %s for some reason, we strongly "
38
+ "recommend do not use the same plugins functions at the same time!"
39
+ msgstr ""
40
+ "Se você não quiser desativar o plugin %s por algum motivo, recomendamos que "
41
+ "não use as mesmas funções de plugins ao mesmo tempo!"
42
+
43
+ #: admin/boot.php:117 admin/options.php:30
44
+ msgid "Use transliteration"
45
+ msgstr "Use transliteração"
46
+
47
+ #: admin/boot.php:123 admin/options.php:48
48
+ msgid "Force transliteration"
49
+ msgstr "Forçar transliteração"
50
+
51
+ #: admin/boot.php:129 admin/options.php:78
52
+ msgid "Don't use transliteration in frontend"
53
+ msgstr ""
54
+
55
+ #: admin/boot.php:135 admin/options.php:39
56
+ msgid "Convert file names"
57
+ msgstr "Converter nomes de arquivos"
58
+
59
+ #: admin/boot.php:141 admin/options.php:58
60
+ msgid "Convert file names into lowercase"
61
+ msgstr "Converter nomes de arquivos em minúsculas"
62
+
63
+ #: admin/boot.php:147 admin/options.php:68
64
+ msgid "Redirection old URLs to new ones"
65
+ msgstr "Redirecionar URLs antigas para novas"
66
+
67
+ #: admin/boot.php:153 admin/options.php:88
68
+ msgid "Character Sets"
69
+ msgstr "Conjuntos de caracteres"
70
+
71
+ #: admin/boot.php:174
72
+ msgid "Get ultimate plugin free"
73
+ msgstr "Obtenha o melhor plugin grátis"
74
+
75
+ #: admin/options.php:23
76
+ msgid "Transliteration of Cyrillic alphabet."
77
+ msgstr "Transliteração do alfabeto cirílico."
78
+
79
+ #: admin/options.php:23
80
+ msgid ""
81
+ "Converts Cyrillic permalinks of post, pages, taxonomies and media files to "
82
+ "the Latin alphabet. Supports Russian, Ukrainian, Georgian, Bulgarian "
83
+ "languages. Example: http://site.dev/последние-новости -> http://site.dev/"
84
+ "poslednie-novosti"
85
+ msgstr ""
86
+ "Converte permalinks cirílicos de post, páginas, taxonomias e arquivos de "
87
+ "mídia para o alfabeto latino. Suporta as línguas russa, ucraniana, georgiana "
88
+ "e búlgara. Exemplo: http://site.dev/последние-новости -> http://site.dev/"
89
+ "poslednie-novosti"
90
+
91
+ #: admin/options.php:32
92
+ msgid ""
93
+ "If you enable this option, all URLs of new pages, posts, tags, and "
94
+ "categories will automatically be converted to Latin."
95
+ msgstr ""
96
+ "Se você ativar essa opção, todos os URLs de novas páginas, postagens, tags e "
97
+ "categorias serão convertidos automaticamente para o idioma latino."
98
+
99
+ #: admin/options.php:41
100
+ msgid ""
101
+ "This option works only for new media library files. All Cyrillic names of "
102
+ "the downloaded files will be converted to names with Latin characters."
103
+ msgstr ""
104
+ "Esta opção funciona apenas para novos arquivos de biblioteca de mídia. Todos "
105
+ "os nomes cirílicos dos arquivos baixados serão convertidos em nomes com "
106
+ "caracteres latinos."
107
+
108
+ #: admin/options.php:50
109
+ #, php-format
110
+ msgid ""
111
+ "If any of your plugins affects transliteration of links and file names, you "
112
+ "can use this option to change the plugin of %s to overwrite the changes of "
113
+ "the other plugins."
114
+ msgstr ""
115
+ "Se algum de seus plugins afetar a transliteração de links e nomes de "
116
+ "arquivos, você poderá usar essa opção para alterar o plug-in de %s para "
117
+ "sobrescrever as alterações dos outros plug-ins."
118
+
119
+ #: admin/options.php:60
120
+ msgid ""
121
+ "This function works only for new upload files. Example: File_Name.jpg -> "
122
+ "file_name.jpg"
123
+ msgstr ""
124
+ "Esta função funciona apenas para novos arquivos de upload. Exemplo: "
125
+ "File_Name.jpg -> file_name.jpg"
126
+
127
+ #: admin/options.php:70
128
+ msgid ""
129
+ "If at the time of the plugin installation you had pages with unconverted "
130
+ "links, use this option to redirect users from old to new URLs with the Latin "
131
+ "alphabet."
132
+ msgstr ""
133
+ "Se, no momento da instalação do plug-in, você tivesse páginas com links não "
134
+ "convertidos, use essa opção para redirecionar os usuários de URLs antigos "
135
+ "para novos com o alfabeto latino."
136
+
137
+ #: admin/options.php:80
138
+ msgid "Enable when have a problem in frontend."
139
+ msgstr ""
140
+
141
+ #: admin/options.php:89
142
+ msgid ""
143
+ "You can supplement current base of transliteration characters. Write pairs "
144
+ "of values separated by commas. Example:"
145
+ msgstr ""
146
+ "Você pode complementar a base atual de caracteres de transliteração. Escreva "
147
+ "pares de valores separados por vírgulas. Exemplo:"
148
+
149
+ #: admin/options.php:178
150
+ msgid ""
151
+ "If at the time of the plugin installation you already had posts, pages, tags "
152
+ "and categories, click on this button and the plugin will automatically "
153
+ "convert URLs into Latin. Attention! Previously uploaded files will not be "
154
+ "converted."
155
+ msgstr ""
156
+ "Se, no momento da instalação do plugin, você já tiver postagens, páginas, "
157
+ "tags e categorias, clique neste botão e o plug-in converterá os URLs "
158
+ "automaticamente em latim. Atenção! Os arquivos enviados anteriormente não "
159
+ "serão convertidos."
160
+
161
+ #: admin/options.php:187
162
+ msgid "Convert already created posts and categories"
163
+ msgstr "Converter posts e categorias já criados"
164
+
165
+ #: admin/options.php:189
166
+ msgid "Url of old posts, pages,terms,tags successfully converted into Latin!"
167
+ msgstr "URL de postagens, páginas, termos e tags antigos convertidos em latim."
168
+
169
+ #: admin/options.php:199
170
+ msgid ""
171
+ "Allows you to restore converted URLs by using the \"Convert already created "
172
+ "posts and categories\" button. This can be useful in case of incorrect URLs "
173
+ "or incorrect transliteration of some characters. You can roll back changes "
174
+ "and advance the character sets above to correct the plugin's work. "
175
+ msgstr ""
176
+ "Permite restaurar URLs convertidos usando o botão \"Converter postagens e "
177
+ "categorias já criadas \". Isso pode ser útil em caso de URLs incorretos ou "
178
+ "transliteração incorreta de alguns caracteres. Você pode reverter alterações "
179
+ "e avançar os conjuntos de caracteres acima para corrigir o trabalho do "
180
+ "plugin. "
181
+
182
+ #: admin/options.php:208
183
+ msgid "Rollback changes"
184
+ msgstr "Alterações de reversão"
185
+
186
+ #: admin/options.php:210
187
+ msgid "The rollback of new changes was successful!"
188
+ msgstr "A reversão de novas mudanças foi bem sucedida!"
189
+
190
+ #: admin/pages/cyrlitera.php:33 admin/pages/cyrlitera.php:49
191
+ msgid "Transliteration"
192
+ msgstr "Transliteração"
193
+
194
+ #: admin/pages/cyrlitera.php:50
195
+ msgid "General"
196
+ msgstr "Geral"
197
+
198
+ #: cyrlitera.php:23
199
+ msgid ""
200
+ "We found that you have the \"Clearfy - disable unused features\" plugin "
201
+ "installed, this plugin already has disable comments functions, so you can "
202
+ "deactivate plugin \"Webcraftic Cyrlitera\"!"
203
+ msgstr ""
204
+ "Descobrimos que você tem o \"Clearfy - desativar os recursos não utilizados "
205
+ "\" plugin instalado, este plugin já tem funções de desabilitar comentários, "
206
+ "assim você pode desativar o plugin \"Webcraftic Cyrlitera \"!"
207
+
208
+ #: cyrlitera.php:81
209
+ msgid "Webcraftic Cyrlitera"
210
  msgstr "Webcraftic Cyrlitera"
components/cyrlitera/languages/cyrlitera-ru_RU.mo CHANGED
Binary file
components/cyrlitera/languages/cyrlitera-ru_RU.po CHANGED
@@ -1,619 +1,618 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: clearfy\n"
4
- "POT-Creation-Date: 2018-05-13 16:31+0300\n"
5
- "PO-Revision-Date: 2018-05-13 16:32+0300\n"
6
- "Last-Translator: alex.kovalevv@gmail.com <alex.kovalevv@gmail.com>\n"
7
- "Language-Team: Alex Kovalev <alex.kovalevv@gmail.com>\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: Poedit 1.8.8\n"
13
- "X-Poedit-Basepath: ..\n"
14
- "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
15
- "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
16
- "X-Poedit-SourceCharset: UTF-8\n"
17
- "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c\n"
18
- "X-Poedit-SearchPath-0: .\n"
19
- "X-Poedit-SearchPathExcluded-0: libs\n"
20
-
21
- #: admin/boot.php:56
22
- #, php-format
23
- msgid ""
24
- "We found that you have the plugin %s installed. The functions of this plugin "
25
- "already exist in %s. Please deactivate plugin %s to avoid conflicts between "
26
- "plugins functions."
27
- msgstr ""
28
- "Мы обнаружили, что у вас установлен плагин %s, функции этого плагина уже "
29
- "есть в %s. Пожалуйста, деактивируйте плагин %s во избежание конфликтов между "
30
- "функциями плагинов."
31
-
32
- #: admin/boot.php:57
33
- #, php-format
34
- msgid ""
35
- "If you do not want to deactivate the plugin %s for some reason, we strongly "
36
- "recommend do not use the same plugins functions at the same time!"
37
- msgstr ""
38
- "Если по какой-то причине вы не хотите деактивировать плагин %s, то мы "
39
- "настоятельно рекомендуем не использовать похожие функции плагинов "
40
- "одновременно!"
41
-
42
- #: admin/boot.php:135 admin/options.php:30
43
- msgid "Use transliteration"
44
- msgstr "Использовать транслитерацию"
45
-
46
- #: admin/boot.php:141 admin/options.php:48
47
- msgid "Force transliteration"
48
- msgstr "Принудильная траслитерация"
49
-
50
- #: admin/boot.php:147 admin/options.php:78
51
- msgid "Don't use transliteration in frontend"
52
- msgstr "Не использовать транслитерацию на фронтенде"
53
-
54
- #: admin/boot.php:153 admin/options.php:39
55
- msgid "Convert file names"
56
- msgstr "Конвертировать имена файлов"
57
-
58
- #: admin/boot.php:159 admin/options.php:58
59
- msgid "Convert file names into lowercase"
60
- msgstr "Преобразовывать имена файлов в нижний регистр"
61
-
62
- #: admin/boot.php:165 admin/options.php:68
63
- msgid "Redirection old URLs to new ones"
64
- msgstr "Перенаправление со старых URL на новые"
65
-
66
- #: admin/boot.php:171 admin/options.php:88
67
- msgid "Character Sets"
68
- msgstr "Наборы символов"
69
-
70
- #: admin/boot.php:192
71
- msgid "Get ultimate plugin free"
72
- msgstr "Получите полную версию плагина бесплатно"
73
-
74
- #: admin/options.php:23
75
- msgid "Transliteration of Cyrillic alphabet."
76
- msgstr "Транслитерация кириллицы."
77
-
78
- #: admin/options.php:23
79
- msgid ""
80
- "Converts Cyrillic permalinks of post, pages, taxonomies and media files to "
81
- "the Latin alphabet. Supports Russian, Ukrainian, Georgian, Bulgarian "
82
- "languages. Example: http://site.dev/последние-новости -> http://site.dev/"
83
- "poslednie-novosti"
84
- msgstr ""
85
- "Конвертирует кириллические постоянные ссылки записей, страниц, таксономий и "
86
- "медиафайлов в латиницу. Поддерживает Русский, Украинский, Грузинский, "
87
- "Болгарский языки. Пример: http://site.dev/последние-новости -> http://site."
88
- "dev/poslednie-novosti"
89
-
90
- #: admin/options.php:32
91
- msgid ""
92
- "If you enable this option, all URLs of new pages, posts, tags, and "
93
- "categories will automatically be converted to Latin."
94
- msgstr ""
95
- "Если включить эту опцию, все URL новых страниц, записей, меток, рубрик будут "
96
- "автоматически конвертироваться в латиницу."
97
-
98
- #: admin/options.php:41
99
- msgid ""
100
- "This option works only for new media library files. All Cyrillic names of "
101
- "the downloaded files will be converted to names with Latin characters."
102
- msgstr ""
103
- "Эта опция работает только для новых файлов медиа библиотеки. Все "
104
- "кириллические имена загружаемых файлов, будут преобразованы в имена с "
105
- "латинскими символами."
106
-
107
- #: admin/options.php:50
108
- #, php-format
109
- msgid ""
110
- "If any of your plugins affects transliteration of links and file names, you "
111
- "can use this option to change the plugin of %s to overwrite the changes of "
112
- "the other plugins."
113
- msgstr ""
114
- "Если какой-то из установленных у вас плагинов влияет на траслитерацию "
115
- "постоянный ссылок и файловых имен, включите эту опцию, чтобы %s "
116
- "перезаписывал изменения других плагинов."
117
-
118
- #: admin/options.php:60
119
- msgid ""
120
- "This function works only for new upload files. Example: File_Name.jpg -> "
121
- "file_name.jpg"
122
- msgstr ""
123
- "Эта функция работает только для новых загружаемых файлов. Пример: File_Name."
124
- "jpg -> file_name.jpg"
125
-
126
- #: admin/options.php:70
127
- msgid ""
128
- "If at the time of the plugin installation you had pages with unconverted "
129
- "links, use this option to redirect users from old to new URLs with the Latin "
130
- "alphabet."
131
- msgstr ""
132
- "Если на момент установки плагина у вас были страницы с не преобразованными "
133
- "ссылками, используйте эту опцию, чтобы пользователи, перешедшие по старым "
134
- "ссылкам, были перенаправлены на новые URL на латинице."
135
-
136
- #: admin/options.php:80
137
- msgid "Enable when have a problem in frontend."
138
- msgstr "Включите эту опцию, если у вас есть проблемы с внешней стороны сайта."
139
-
140
- #: admin/options.php:89
141
- msgid ""
142
- "You can supplement current base of transliteration characters. Write pairs "
143
- "of values separated by commas. Example:"
144
- msgstr ""
145
- "Вы можете дополнить текущую базу символов транслитерации, пишите пары "
146
- "значений через запятую. Пример: "
147
-
148
- #: admin/options.php:178
149
- msgid ""
150
- "If at the time of the plugin installation you already had posts, pages, tags "
151
- "and categories, click on this button and the plugin will automatically "
152
- "convert URLs into Latin. Attention! Previously uploaded files will not be "
153
- "converted."
154
- msgstr ""
155
- "Если на момент установки плагина у вас уже были созданы записи, страницы, "
156
- "метки и рубрики, то нажмите на эту кнопку и плагин автоматически преобразует "
157
- "URLы в латинские. Внимание! Ранее загруженные файлы преобразованы не будут."
158
-
159
- #: admin/options.php:187
160
- msgid "Convert already created posts and categories"
161
- msgstr "Преобразовать уже созданные записи и рубрики"
162
-
163
- #: admin/options.php:189
164
- msgid "Url of old posts, pages,terms,tags successfully converted into Latin!"
165
- msgstr ""
166
- "Url старых записей, страниц, тегов и рубрик были успешно конвертированы в "
167
- "литинские!"
168
-
169
- #: admin/options.php:199
170
- msgid ""
171
- "Allows you to restore converted URLs by using the \"Convert already created "
172
- "posts and categories\" button. This can be useful in case of incorrect URLs "
173
- "or incorrect transliteration of some characters. You can roll back changes "
174
- "and advance the character sets above to correct the plugin's work. "
175
- msgstr ""
176
- "Позволяет восстановить преобразованные с помощью кнопки “Преобразовать уже "
177
- "созданные записи и рубрики” URLы. Это может быть полезно в случае появления "
178
- "некорректных URL адресов или неправильной транслитерации определенных "
179
- "символов. У вас есть возможность откатить изменения и изменить наборы "
180
- "символов выше, чтобы скорректировать работу плагина."
181
-
182
- #: admin/options.php:208
183
- msgid "Rollback changes"
184
- msgstr "Откатить изменения"
185
-
186
- #: admin/options.php:210
187
- msgid "The rollback of new changes was successful!"
188
- msgstr "Откат новых изменений прошел успешно!"
189
-
190
- #: admin/pages/cyrlitera.php:33 admin/pages/cyrlitera.php:49
191
- msgid "Transliteration"
192
- msgstr "Транслитерация"
193
-
194
- #: admin/pages/cyrlitera.php:50
195
- msgid "General"
196
- msgstr "Основные"
197
-
198
- #: cyrlitera.php:23
199
- msgid ""
200
- "We found that you have the \"Clearfy - disable unused features\" plugin "
201
- "installed, this plugin already has disable comments functions, so you can "
202
- "deactivate plugin \"Webcraftic Cyrlitera\"!"
203
- msgstr ""
204
- "Мы обнаружили, что у вас установлен плагин «Clearfy - отключить "
205
- "неиспользуемые функции», этот плагин уже имеет функции отключения "
206
- "комментариев, поэтому вы можете отключить плагин «Webcraftic Cyrlitera»!"
207
-
208
- #: cyrlitera.php:81
209
- msgid "Webcraftic Cyrlitera"
210
- msgstr "Webcraftic Cyrlitera"
211
-
212
- #~ msgid ""
213
- #~ "You can supplement current base of transliteration characters. Write "
214
- #~ "pairs of values in lower case separated by commas. Example:"
215
- #~ msgstr ""
216
- #~ "Вы можете дополнить текущую базу символов транслитерации, пишите пары "
217
- #~ "значений в нижнем регистре через запятую. Пример: ა=a,ბ=b"
218
-
219
- #~ msgid ""
220
- #~ "If any of your plugins affects transliteration of links, you can use this "
221
- #~ "option to change the plugin of %s to overwrite the changes of the other "
222
- #~ "plugins."
223
- #~ msgstr ""
224
- #~ "Если какой-то из установленных у вас плагинов влияет на траслитерацию "
225
- #~ "постоянный ссылок, включите эту опцию, чтобы %s перезаписывал изменения "
226
- #~ "других плагинов."
227
-
228
- #~ msgid ""
229
- #~ "We found that you have the \"Clearfy - disable unused features\" plugin "
230
- #~ "installed, this plugin already has disable comments functions, so you can "
231
- #~ "deactivate plugin \"Cyrilic transliteration\"!"
232
- #~ msgstr ""
233
- #~ "Мы обнаружили, что у вас установлен плагин «Clearfy - отключить "
234
- #~ "неиспользуемые функции», этот плагин уже имеет функции отключения "
235
- #~ "комментариев, поэтому вы можете отключить плагин «Транслитерация "
236
- #~ "кириллицы»!"
237
-
238
- #~ msgid "Webcraftic cyrilic transliteration"
239
- #~ msgstr "Webcraftic транслитерация кириллицы"
240
-
241
- #~ msgid ""
242
- #~ "If you enable this option, the permanent URLs of all previously published "
243
- #~ "posts and pages will be converted into URLs with Latin characters. All "
244
- #~ "new pages and posts will also have a URL in the Latin alphabet."
245
- #~ msgstr ""
246
- #~ "Если включить эту опцию, постоянные URL всех ранее опубликованных записей "
247
- #~ "и страниц будут преобразованы в URL с латинскими символами. Все новые "
248
- #~ "страницы и записи, также будут иметь URL на латинице."
249
-
250
- #~ msgid "You don't have enough capability to edit this information."
251
- #~ msgstr "Вы не имеете разрешения на редактирование этого!"
252
-
253
- #~ msgid "Undefinded notice id."
254
- #~ msgstr "Не передан notice id."
255
-
256
- #~ msgid "Success"
257
- #~ msgstr "Успешно"
258
-
259
- #~ msgid "Hide admin notices"
260
- #~ msgstr "Скрыть уведомления"
261
-
262
- #~ msgid "Enable hidden notices in adminbar"
263
- #~ msgstr "Включить уведомления в админбаре"
264
-
265
- #~ msgid "Admin notifications, Update nags"
266
- #~ msgstr "Уведомления администратора, уведомления об обновлении Wordpress"
267
-
268
- #~ msgid ""
269
- #~ "Do you know the situation, when some plugin offers you to update to "
270
- #~ "premium, to collect technical data and shows many annoying notices? You "
271
- #~ "are close these notices every now and again but they newly appears and "
272
- #~ "interfere your work with WordPress. Even worse, some plugin’s authors "
273
- #~ "delete “close” button from notices and they shows in your admin panel "
274
- #~ "forever."
275
- #~ msgstr ""
276
- #~ "Вам знакома ситуация, когда какой-то плагин просит вас обновиться до "
277
- #~ "премиум-версии, получить права на сбор данных о вашем сайте и создает "
278
- #~ "много раздражающих уведомлений? Вы закрываете эти уведомления раз за "
279
- #~ "разом, но они вновь появляются и мешают вашей работе с WordPress. Хуже "
280
- #~ "того, некоторые авторы и вовсе удаляют кнопку “закрыть” из уведомлений, и "
281
- #~ "они висят в шапке вашей панели администратора целую вечность."
282
-
283
- #~ msgid "All notices"
284
- #~ msgstr "Все уведомления"
285
-
286
- #~ msgid "Hide all notices globally."
287
- #~ msgstr "Скрыть все уведомления глобально."
288
-
289
- #~ msgid "Only selected"
290
- #~ msgstr "Только выбранные"
291
-
292
- #~ msgid ""
293
- #~ "Hide selected notices only. You will see the link \"Hide notification "
294
- #~ "forever\" in each notice. Push it and they will not bother you anymore."
295
- #~ msgstr ""
296
- #~ "Скрывать только выбранные уведомления. В каждом уведомлении вы увидите "
297
- #~ "ссылку \"Скрыть уведомление навсегда\". Нажмите на неё и уведомление "
298
- #~ "будет скрыто навсегда и перестанет вас беспокоить."
299
-
300
- #~ msgid "Don't nide"
301
- #~ msgstr "Не скрывать"
302
-
303
- #~ msgid ""
304
- #~ "Do not hide notices and do not show “Hide notification forever” link for "
305
- #~ "admin."
306
- #~ msgstr ""
307
- #~ "Не скрывать уведомления и не показывать ссылку \"Скрыть уведомление "
308
- #~ "навсегда\" в уведомлениях администратора."
309
-
310
- #~ msgid ""
311
- #~ "Some plugins shows notifications about premium version, data collecting "
312
- #~ "or promote their services. Even if you push close button (that sometimes "
313
- #~ "are impossible), notices are shows again in some time. This option allows "
314
- #~ "you to control notices. Hide them all or each individually. Some plugins "
315
- #~ "shows notifications about premium version, data collecting or promote "
316
- #~ "their services. Even if you push close button (that sometimes are "
317
- #~ "impossible), notices are shows again in some time. This option allows you "
318
- #~ "to control notices. Hide them all or each individually."
319
- #~ msgstr ""
320
- #~ "Зачастую, плагины отображают уведомления о возможности перехода на "
321
- #~ "премиум версию, просят разрешение на сбор данных, рекламируют свои "
322
- #~ "услуги. Даже если вы нажмете кнопку закрыть (что не всегда возможно), "
323
- #~ "уведомления всё равно отобразятся через какое-то время. С помощью этой "
324
- #~ "настройки, вы можете контролировать эти уведомления. Скройте их все сразу "
325
- #~ "или каждое по отдельности."
326
-
327
- #~ msgid ""
328
- #~ "By default, the plugin hides all notices, which you specified. If you "
329
- #~ "enable this option, the plugin will collect all hidden notices and show "
330
- #~ "them into the top admin toolbar. It will not disturb you but will allow "
331
- #~ "to look notices at your convenience."
332
- #~ msgstr ""
333
- #~ "По умолчанию, плагин полностью скрывает отключенные вами уведомления. "
334
- #~ "Если включить эту опцию, то плагин будет собирать все скрытые вами "
335
- #~ "уведомления и выводить в верхней панели администратора. Это не будет вас "
336
- #~ "раздражать, но и позволит просматривать уведомления, когда вам это удобно."
337
-
338
- #~ msgid "Push reset hidden notices if you need to show hidden notices again."
339
- #~ msgstr "Нажмите кнопку \\\"Сбросить скрытые уведомления\\\""
340
-
341
- #~ msgid "Reset hidden notices (%s)"
342
- #~ msgstr "Сбросить скрытые уведомления (%s)"
343
-
344
- #~ msgid "Hidden notices are successfully reset, now you can see them again!"
345
- #~ msgstr ""
346
- #~ "Скрытые уведомления успешно восстановлены, теперь вы можете снова видеть "
347
- #~ "их!"
348
-
349
- #~ msgid "Notices"
350
- #~ msgstr "Уведомления"
351
-
352
- #~ msgid ""
353
- #~ "We found that you have the \"Clearfy - disable unused features\" plugin "
354
- #~ "installed, this plugin already has disable comments functions, so you can "
355
- #~ "deactivate plugin \"Disable admin notices\"!"
356
- #~ msgstr ""
357
- #~ "Мы обнаружили, что у вас установлен плагин «Clearfy - отключить "
358
- #~ "неиспользуемые функции», этот плагин уже имеет функции отключения "
359
- #~ "комментариев, поэтому вы можете отключить плагин «Скрыть уведомления "
360
- #~ "администратора»!"
361
-
362
- #~ msgid "Webcraftic disable admin notices"
363
- #~ msgstr "Webcraftic отключить уведомления администратора"
364
-
365
- #~ msgid "Notifications %s"
366
- #~ msgstr "Уведомления %s"
367
-
368
- #~ msgid "Restore notice"
369
- #~ msgstr "Восстановить уведомление"
370
-
371
- #~ msgid "Hide notification forever"
372
- #~ msgstr "Скрыть уведомление навсегда"
373
-
374
- #~ msgid "Hidden notices"
375
- #~ msgstr "Скрытые уведомления"
376
-
377
- #~ msgid "Disable comments on the entire site"
378
- #~ msgstr "Отключить комментарии на всем сайте"
379
-
380
- #~ msgid "Select post types"
381
- #~ msgstr "Выбрать тип записи"
382
-
383
- #~ msgid "Replace external links in comments on the JavaScript code"
384
- #~ msgstr "Заменить внешние ссылки в комментариях на JavaScript код"
385
-
386
- #~ msgid "Replace external links from comment authors on the JavaScript code"
387
- #~ msgstr "Заменить внешние ссылки от авторов комментариев на код JavaScript"
388
-
389
- #~ msgid "Disable X-Pingback"
390
- #~ msgstr "Убрать ссылку на X-Pingback и возможность спамить pingback-ами"
391
-
392
- #~ msgid "Remove field \"site\" in comment form"
393
- #~ msgstr "Удаляет поле \"Сайт\" в форме комментариев"
394
-
395
- #~ msgid "Disable all comments"
396
- #~ msgstr "Отключить все комментарии"
397
-
398
- #~ msgid "Comments"
399
- #~ msgstr "Комментарии"
400
-
401
- #~ msgid ""
402
- #~ "Hide selected notices only. You will see the link \"Hide notification "
403
- #~ "forever\" in each notice. Push it and they will not bother you anymore. "
404
- #~ "Push <a href=\"%s\">reset hidden notices (%d)</a> if you need to show "
405
- #~ "hidden notices again."
406
- #~ msgstr ""
407
- #~ "Скрывать только выбранные уведомления. В каждом уведомлении вы увидите "
408
- #~ "ссылку \"Скрыть уведомление навсегда\". Нажмите на неё и уведомление "
409
- #~ "будет скрыто навсегда и перестанет вас беспокоить. Нажмите <a href=\"%s"
410
- #~ "\">сбросить скрытые уведомления (%d)</a>, если вам нужно восстановить "
411
- #~ "показ скрытых ранее уведомлений."
412
-
413
- #~ msgid "Webcraftic hide admin notices"
414
- #~ msgstr "Webcraftic скрыть уведомления администратора"
415
-
416
- #~ msgid "Comments tweaks"
417
- #~ msgstr "Инструменты комментариев"
418
-
419
- #~ msgid "All comments have been deleted."
420
- #~ msgstr "Все комментарии были удалены."
421
-
422
- #~ msgid ""
423
- #~ "An error occurred while trying to delete comments. Internal error "
424
- #~ "occured. Please try again later."
425
- #~ msgstr ""
426
- #~ "При попытке удалить комментарии произошла ошибка. Пожалуйста, повторите "
427
- #~ "попытку позже."
428
-
429
- #~ msgid "You are not allowed to view this page."
430
- #~ msgstr "Вам не разрешено просматривать эту страницу."
431
-
432
- #~ msgid "You do not have the selected post types!"
433
- #~ msgstr "Вы не выбрали еще ни одного типа записей!"
434
-
435
- #~ msgid "No comments available for deletion."
436
- #~ msgstr "Нет комментариев для удаления."
437
-
438
- #~ msgid ""
439
- #~ "Are you sure that you desire to delete all comments from the database?"
440
- #~ msgstr "Вы уверены, что хотите удалить все комментарии из базы данных?"
441
-
442
- #~ msgid ""
443
- #~ "Deleting comments will remove existing comment entries in the database "
444
- #~ "and cannot be reverted without a database backup."
445
- #~ msgstr ""
446
- #~ "При удалении комментариев удаляются существующие записи комментариев в "
447
- #~ "базе данных, они не могут быть восстановлены без резервного копирования "
448
- #~ "базы данных."
449
-
450
- #~ msgid "You have %s comments"
451
- #~ msgstr "У вас есть %s комментариев"
452
-
453
- #~ msgid "Yes, I'm sure"
454
- #~ msgstr "Да, я уверен"
455
-
456
- #~ msgid "No, return back"
457
- #~ msgstr "Нет, вернуться"
458
-
459
- #~ msgid ""
460
- #~ "Are you sure that you desire to delete all comments from the database for "
461
- #~ "the selected post types (%s)?"
462
- #~ msgstr ""
463
- #~ "Вы уверены, что хотите удалить все комментарии из базы данных для "
464
- #~ "выбранных типов записей (%s)?"
465
-
466
- #~ msgid "Disable comments"
467
- #~ msgstr "Отключить комментарии"
468
-
469
- #~ msgid "Not disable"
470
- #~ msgstr "Не отключать"
471
-
472
- #~ msgid "Everywhere"
473
- #~ msgstr "Повсюду"
474
-
475
- #~ msgid ""
476
- #~ "You can delete all comments in the database by clicking on this link (<a "
477
- #~ "href=\"%s\">cleaning comments in database</a>)."
478
- #~ msgstr ""
479
- #~ "Вы можете удалить все комментарии в базе данных, нажав на эту ссылку ( <a "
480
- #~ "href=\"%s\">очистка комментариев в базе данных</a> )."
481
-
482
- #~ msgid "On certain post types"
483
- #~ msgstr "Только выбранные типы записей"
484
-
485
- #~ msgid ""
486
- #~ "You can delete all comments for the selected post types. Select the post "
487
- #~ "types below and save the settings. After that, click the link (<a href="
488
- #~ "\"%s\">delete all comments for the selected post types in database</a>)."
489
- #~ msgstr ""
490
- #~ "Вы можете удалить все комментарии для выбранных типов записей. Выберите "
491
- #~ "типы записей ниже и сохраните настройки. После этого нажмите ссылку ( <a "
492
- #~ "href=\"%s\">удалите все комментарии для выбранных типов записей в базе "
493
- #~ "данных</a> )."
494
-
495
- #~ msgid ""
496
- #~ "Everywhere - Warning: This option is global and will affect your entire "
497
- #~ "site. Use it only if you want to disable comments everywhere. A complete "
498
- #~ "description of what this option does is available here"
499
- #~ msgstr ""
500
- #~ "Повсюду - предупреждение: этот параметр является глобальным и повлияет на "
501
- #~ "весь ваш сайт. Используйте его только в том случае, если вы хотите "
502
- #~ "отключить комментарии повсюду. "
503
-
504
- #~ msgid ""
505
- #~ "On certain post types - Disabling comments will also disable trackbacks "
506
- #~ "and pingbacks. All comment-related fields will also be hidden from the "
507
- #~ "edit/quick-edit screens of the affected posts. These settings cannot be "
508
- #~ "overridden for individual posts."
509
- #~ msgstr ""
510
- #~ "В некоторых типах сообщений - отключение комментариев также отключает "
511
- #~ "трекбэки и pingback. Все поля, связанные с комментариями, также будут "
512
- #~ "скрыты от экранов редактирования / быстрого редактирования затронутых "
513
- #~ "сообщений. Эти настройки нельзя переопределять для отдельных сообщений."
514
-
515
- #~ msgid "Select the post types for which comments will be disabled"
516
- #~ msgstr "Выберите типы записей, для которых комментарии будут отключены."
517
-
518
- #~ msgid ""
519
- #~ "Tired of spam in the comments? Do visitors leave \"blank\" comments for "
520
- #~ "the sake of a link to their site?"
521
- #~ msgstr ""
522
- #~ "Надоел спам в комментариях? Посетители оставляют «пустые» комментарии "
523
- #~ "ради ссылки на свой сайт?"
524
-
525
- #~ msgid "Removes the \"Site\" field from the comment form."
526
- #~ msgstr "Убирает поле «Сайт» из формы комментирования."
527
-
528
- #~ msgid ""
529
- #~ "Works with the standard comment form, if the form is manually written in "
530
- #~ "your theme-it probably will not work!"
531
- #~ msgstr ""
532
- #~ "Работает со стандартной формой комментирования, если в Вашей теме форма "
533
- #~ "прописана вручную - скорей всего не сработает!"
534
-
535
- #~ msgid "Recommended"
536
- #~ msgstr "Рекомендовано"
537
-
538
- #~ msgid ""
539
- #~ "Superfluous external links from comments, which can be typed from a dozen "
540
- #~ "and more for one article, do not bring anything good for promotion."
541
- #~ msgstr ""
542
- #~ "Внешние ссылки в комментариях, которых может быть десятки или больше на "
543
- #~ "одной странице, могут ухудшить продвижение вашего сайта."
544
-
545
- #~ msgid "Replaces the links of this kind of %s, on links of this kind %s"
546
- #~ msgstr ""
547
- #~ "Заменяет ссылки %s, на span тег и устанавливает переход с помощью "
548
- #~ "JavaScript %s"
549
-
550
- #~ msgid ""
551
- #~ "Up to 90 percent of comments in the blog can be left for the sake of an "
552
- #~ "external link. Even nofollow from page weight loss here does not help."
553
- #~ msgstr ""
554
- #~ "До 90 процентов комментариев в блоге оставляют ради внешней ссылки. Не "
555
- #~ "поможет даже nofollow от потери веса страницы."
556
-
557
- #~ msgid ""
558
- #~ "Replaces the links of the authors of comments on the JavaScript code, it "
559
- #~ "is impossible to distinguish it from usual links."
560
- #~ msgstr ""
561
- #~ "Заменяет ссылки авторов комментариев на JavaScript код, его невозможно "
562
- #~ "отличить от обычной ссылки."
563
-
564
- #~ msgid "In some Wordpress topics this may not work."
565
- #~ msgstr "В некоторых темах Wordpress это может не сработать."
566
-
567
- #~ msgid "Disable XML-RPC"
568
- #~ msgstr "Отключить XML-RPC"
569
-
570
- #~ msgid ""
571
- #~ "A pingback is basically an automated comment that gets created when "
572
- #~ "another blog links to you. A self-pingback is created when you link to an "
573
- #~ "article within your own blog. Pingbacks are essentially nothing more than "
574
- #~ "spam and simply waste resources."
575
- #~ msgstr ""
576
- #~ "Pingback по-существу автоматизированных комментарий, который создается, "
577
- #~ "когда другой блог ссылается на вас. Self-pingback создается, когда вы "
578
- #~ "оставили ссылку на статью в своем блоге. Pingbacks по существу являются "
579
- #~ "не более чем спам и пустая трата ресурсов вашего сайта."
580
-
581
- #~ msgid "Removes the server responses a reference to the xmlrpc file."
582
- #~ msgstr "Удаляет ссылку на xmlrpc-файл и ответ сервера."
583
-
584
- #~ msgid ""
585
- #~ "We found that you have the \"Clearfy - disable unused features\" plugin "
586
- #~ "installed, this plugin already has disable comments functions, so you can "
587
- #~ "deactivate plugin \"Comments tweaks\"!"
588
- #~ msgstr ""
589
- #~ "Мы обнаружили, что у вас установлен плагин «Clearfy - отключить "
590
- #~ "неиспользуемые функции», этот плагин уже имеет функции отключения "
591
- #~ "комментариев, поэтому вы можете отключить плагин «Инструменты "
592
- #~ "комментариев»!"
593
-
594
- #~ msgid "Webcraftic comments tweaks"
595
- #~ msgstr "Webcraftic инструменты комментариев"
596
-
597
- #~ msgid "Comments are closed."
598
- #~ msgstr "Комментарии Закрыты."
599
-
600
- #~ msgid ""
601
- #~ "Note: The <em>%s</em> plugin is currently active, and comments are "
602
- #~ "completely disabled on: %s. Many of the settings below will not be "
603
- #~ "applicable for those post types."
604
- #~ msgstr ""
605
- #~ "Примечание. Плагин <em>%s</em> в настоящий момент активен, и комментарии "
606
- #~ "полностью отключены: %s. Многие из приведенных ниже настроек не будут "
607
- #~ "применяться для этих типов сообщений."
608
-
609
- #~ msgid ""
610
- #~ "We found that you have the \"Clearfy - disable unused features\" plugin "
611
- #~ "installed, this plugin already has disable comments functions, so you can "
612
- #~ "deactivate plugin \"Disable comments\"!"
613
- #~ msgstr ""
614
- #~ "Мы обнаружили, что у вас установлен плагин «Clearfy - отключить "
615
- #~ "неиспользуемые функции», этот плагин уже имеет функции отключения "
616
- #~ "комментариев, поэтому вы можете отключить плагин «Отключить комментарии»!"
617
-
618
- #~ msgid "Webcraftic Disable comments"
619
- #~ msgstr "Webcraftic отключить комментарии"
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: clearfy\n"
4
+ "POT-Creation-Date: 2018-10-16 22:49+0300\n"
5
+ "PO-Revision-Date: 2018-10-16 22:49+0300\n"
6
+ "Last-Translator: alex.kovalevv@gmail.com <alex.kovalevv@gmail.com>\n"
7
+ "Language-Team: Alex Kovalev <alex.kovalevv@gmail.com>\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: Poedit 2.1.1\n"
13
+ "X-Poedit-Basepath: ..\n"
14
+ "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
15
+ "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
16
+ "X-Poedit-SourceCharset: UTF-8\n"
17
+ "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c\n"
18
+ "X-Poedit-SearchPath-0: .\n"
19
+ "X-Poedit-SearchPathExcluded-0: libs\n"
20
+
21
+ #: admin/boot.php:56
22
+ #, php-format
23
+ msgid ""
24
+ "We found that you have the plugin %s installed. The functions of this plugin "
25
+ "already exist in %s. Please deactivate plugin %s to avoid conflicts between "
26
+ "plugins functions."
27
+ msgstr ""
28
+ "Мы обнаружили, что у вас установлен плагин %s, функции этого плагина уже "
29
+ "есть в %s. Пожалуйста, деактивируйте плагин %s во избежание конфликтов между "
30
+ "функциями плагинов."
31
+
32
+ #: admin/boot.php:57
33
+ #, php-format
34
+ msgid ""
35
+ "If you do not want to deactivate the plugin %s for some reason, we strongly "
36
+ "recommend do not use the same plugins functions at the same time!"
37
+ msgstr ""
38
+ "Если по какой-то причине вы не хотите деактивировать плагин %s, то мы "
39
+ "настоятельно рекомендуем не использовать похожие функции плагинов "
40
+ "одновременно!"
41
+
42
+ #: admin/boot.php:117 admin/pages/cyrlitera.php:118
43
+ msgid "Use transliteration"
44
+ msgstr "Использовать транслитерацию"
45
+
46
+ #: admin/boot.php:123 admin/pages/cyrlitera.php:136
47
+ msgid "Force transliteration"
48
+ msgstr "Принудильная траслитерация"
49
+
50
+ #: admin/boot.php:129 admin/pages/cyrlitera.php:165
51
+ msgid "Don't use transliteration in frontend"
52
+ msgstr "Не использовать транслитерацию на фронтенде"
53
+
54
+ #: admin/boot.php:135 admin/pages/cyrlitera.php:127
55
+ msgid "Convert file names"
56
+ msgstr "Конвертировать имена файлов"
57
+
58
+ #: admin/boot.php:141 admin/pages/cyrlitera.php:145
59
+ msgid "Convert file names into lowercase"
60
+ msgstr "Преобразовывать имена файлов в нижний регистр"
61
+
62
+ #: admin/boot.php:147 admin/pages/cyrlitera.php:155
63
+ msgid "Redirection old URLs to new ones"
64
+ msgstr "Перенаправление со старых URL на новые"
65
+
66
+ #: admin/boot.php:153 admin/pages/cyrlitera.php:175
67
+ msgid "Character Sets"
68
+ msgstr "Наборы символов"
69
+
70
+ #: admin/boot.php:174
71
+ msgid "Get ultimate plugin free"
72
+ msgstr "Получите полную версию плагина бесплатно"
73
+
74
+ #: admin/pages/cyrlitera.php:39 admin/pages/cyrlitera.php:57
75
+ msgid "Transliteration"
76
+ msgstr "Транслитерация"
77
+
78
+ #: admin/pages/cyrlitera.php:57
79
+ msgid "General"
80
+ msgstr "Основные"
81
+
82
+ #: admin/pages/cyrlitera.php:111
83
+ msgid "Transliteration of Cyrillic alphabet."
84
+ msgstr "Транслитерация кириллицы."
85
+
86
+ #: admin/pages/cyrlitera.php:111
87
+ msgid ""
88
+ "Converts Cyrillic permalinks of post, pages, taxonomies and media files to "
89
+ "the Latin alphabet. Supports Russian, Ukrainian, Georgian, Bulgarian "
90
+ "languages. Example: http://site.dev/последние-новости -> http://site.dev/"
91
+ "poslednie-novosti"
92
+ msgstr ""
93
+ "Конвертирует кириллические постоянные ссылки записей, страниц, таксономий и "
94
+ "медиафайлов в латиницу. Поддерживает Русский, Украинский, Грузинский, "
95
+ "Болгарский языки. Пример: http://site.dev/последние-новости -> http://site."
96
+ "dev/poslednie-novosti"
97
+
98
+ #: admin/pages/cyrlitera.php:120
99
+ msgid ""
100
+ "If you enable this option, all URLs of new pages, posts, tags, and "
101
+ "categories will automatically be converted to Latin."
102
+ msgstr ""
103
+ "Если включить эту опцию, все URL новых страниц, записей, меток, рубрик будут "
104
+ "автоматически конвертироваться в латиницу."
105
+
106
+ #: admin/pages/cyrlitera.php:129
107
+ msgid ""
108
+ "This option works only for new media library files. All Cyrillic names of "
109
+ "the downloaded files will be converted to names with Latin characters."
110
+ msgstr ""
111
+ "Эта опция работает только для новых файлов медиа библиотеки. Все "
112
+ "кириллические имена загружаемых файлов, будут преобразованы в имена с "
113
+ "латинскими символами."
114
+
115
+ #: admin/pages/cyrlitera.php:138
116
+ #, php-format
117
+ msgid ""
118
+ "If any of your plugins affects transliteration of links and file names, you "
119
+ "can use this option to change the plugin of %s to overwrite the changes of "
120
+ "the other plugins."
121
+ msgstr ""
122
+ "Если какой-то из установленных у вас плагинов влияет на траслитерацию "
123
+ "постоянный ссылок и файловых имен, включите эту опцию, чтобы %s "
124
+ "перезаписывал изменения других плагинов."
125
+
126
+ #: admin/pages/cyrlitera.php:147
127
+ msgid ""
128
+ "This function works only for new upload files. Example: File_Name.jpg -> "
129
+ "file_name.jpg"
130
+ msgstr ""
131
+ "Эта функция работает только для новых загружаемых файлов. Пример: File_Name."
132
+ "jpg -> file_name.jpg"
133
+
134
+ #: admin/pages/cyrlitera.php:157
135
+ msgid ""
136
+ "If at the time of the plugin installation you had pages with unconverted "
137
+ "links, use this option to redirect users from old to new URLs with the Latin "
138
+ "alphabet."
139
+ msgstr ""
140
+ "Если на момент установки плагина у вас были страницы с не преобразованными "
141
+ "ссылками, используйте эту опцию, чтобы пользователи, перешедшие по старым "
142
+ "ссылкам, были перенаправлены на новые URL на латинице."
143
+
144
+ #: admin/pages/cyrlitera.php:167
145
+ msgid "Enable when have a problem in frontend."
146
+ msgstr "Включите эту опцию, если у вас есть проблемы с внешней стороны сайта."
147
+
148
+ #: admin/pages/cyrlitera.php:176
149
+ msgid ""
150
+ "You can supplement current base of transliteration characters. Write pairs "
151
+ "of values separated by commas. Example:"
152
+ msgstr ""
153
+ "Вы можете дополнить текущую базу символов транслитерации, пишите пары "
154
+ "значений через запятую. Пример: "
155
+
156
+ #: admin/pages/cyrlitera.php:242
157
+ msgid ""
158
+ "If at the time of the plugin installation you already had posts, pages, tags "
159
+ "and categories, click on this button and the plugin will automatically "
160
+ "convert URLs into Latin. Attention! Previously uploaded files will not be "
161
+ "converted."
162
+ msgstr ""
163
+ "Если на момент установки плагина у вас уже были созданы записи, страницы, "
164
+ "метки и рубрики, то нажмите на эту кнопку и плагин автоматически преобразует "
165
+ "URLы в латинские. Внимание! Ранее загруженные файлы преобразованы не будут."
166
+
167
+ #: admin/pages/cyrlitera.php:251
168
+ msgid "Convert already created posts and categories"
169
+ msgstr "Преобразовать уже созданные записи и рубрики"
170
+
171
+ #: admin/pages/cyrlitera.php:253
172
+ msgid "Url of old posts, pages,terms,tags successfully converted into Latin!"
173
+ msgstr ""
174
+ "Url старых записей, страниц, тегов и рубрик были успешно конвертированы в "
175
+ "литинские!"
176
+
177
+ #: admin/pages/cyrlitera.php:263
178
+ msgid ""
179
+ "Allows you to restore converted URLs by using the \"Convert already created "
180
+ "posts and categories\" button. This can be useful in case of incorrect URLs "
181
+ "or incorrect transliteration of some characters. You can roll back changes "
182
+ "and advance the character sets above to correct the plugin's work. "
183
+ msgstr ""
184
+ "Позволяет восстановить преобразованные с помощью кнопки “Преобразовать уже "
185
+ "созданные записи и рубрики” URLы. Это может быть полезно в случае появления "
186
+ "некорректных URL адресов или неправильной транслитерации определенных "
187
+ "символов. У вас есть возможность откатить изменения и изменить наборы "
188
+ "символов выше, чтобы скорректировать работу плагина."
189
+
190
+ #: admin/pages/cyrlitera.php:272
191
+ msgid "Rollback changes"
192
+ msgstr "Откатить изменения"
193
+
194
+ #: admin/pages/cyrlitera.php:274
195
+ msgid "The rollback of new changes was successful!"
196
+ msgstr "Откат новых изменений прошел успешно!"
197
+
198
+ #: cyrlitera.php:63
199
+ msgid "Webcraftic Cyrlitera"
200
+ msgstr "Webcraftic Cyrlitera"
201
+
202
+ #~ msgid ""
203
+ #~ "We found that you have the \"Clearfy - disable unused features\" plugin "
204
+ #~ "installed, this plugin already has disable comments functions, so you can "
205
+ #~ "deactivate plugin \"Webcraftic Cyrlitera\"!"
206
+ #~ msgstr ""
207
+ #~ "Мы обнаружили, что у вас установлен плагин «Clearfy - отключить "
208
+ #~ "неиспользуемые функции», этот плагин уже имеет функции отключения "
209
+ #~ "комментариев, поэтому вы можете отключить плагин «Webcraftic Cyrlitera»!"
210
+
211
+ #~ msgid ""
212
+ #~ "You can supplement current base of transliteration characters. Write "
213
+ #~ "pairs of values in lower case separated by commas. Example:"
214
+ #~ msgstr ""
215
+ #~ "Вы можете дополнить текущую базу символов транслитерации, пишите пары "
216
+ #~ "значений в нижнем регистре через запятую. Пример: ა=a,ბ=b"
217
+
218
+ #~ msgid ""
219
+ #~ "If any of your plugins affects transliteration of links, you can use this "
220
+ #~ "option to change the plugin of %s to overwrite the changes of the other "
221
+ #~ "plugins."
222
+ #~ msgstr ""
223
+ #~ "Если какой-то из установленных у вас плагинов влияет на траслитерацию "
224
+ #~ "постоянный ссылок, включите эту опцию, чтобы %s перезаписывал изменения "
225
+ #~ "других плагинов."
226
+
227
+ #~ msgid ""
228
+ #~ "We found that you have the \"Clearfy - disable unused features\" plugin "
229
+ #~ "installed, this plugin already has disable comments functions, so you can "
230
+ #~ "deactivate plugin \"Cyrilic transliteration\"!"
231
+ #~ msgstr ""
232
+ #~ "Мы обнаружили, что у вас установлен плагин «Clearfy - отключить "
233
+ #~ "неиспользуемые функции», этот плагин уже имеет функции отключения "
234
+ #~ "комментариев, поэтому вы можете отключить плагин «Транслитерация "
235
+ #~ "кириллицы»!"
236
+
237
+ #~ msgid "Webcraftic cyrilic transliteration"
238
+ #~ msgstr "Webcraftic транслитерация кириллицы"
239
+
240
+ #~ msgid ""
241
+ #~ "If you enable this option, the permanent URLs of all previously published "
242
+ #~ "posts and pages will be converted into URLs with Latin characters. All "
243
+ #~ "new pages and posts will also have a URL in the Latin alphabet."
244
+ #~ msgstr ""
245
+ #~ "Если включить эту опцию, постоянные URL всех ранее опубликованных записей "
246
+ #~ "и страниц будут преобразованы в URL с латинскими символами. Все новые "
247
+ #~ "страницы и записи, также будут иметь URL на латинице."
248
+
249
+ #~ msgid "You don't have enough capability to edit this information."
250
+ #~ msgstr "Вы не имеете разрешения на редактирование этого!"
251
+
252
+ #~ msgid "Undefinded notice id."
253
+ #~ msgstr "Не передан notice id."
254
+
255
+ #~ msgid "Success"
256
+ #~ msgstr "Успешно"
257
+
258
+ #~ msgid "Hide admin notices"
259
+ #~ msgstr "Скрыть уведомления"
260
+
261
+ #~ msgid "Enable hidden notices in adminbar"
262
+ #~ msgstr "Включить уведомления в админбаре"
263
+
264
+ #~ msgid "Admin notifications, Update nags"
265
+ #~ msgstr "Уведомления администратора, уведомления об обновлении Wordpress"
266
+
267
+ #~ msgid ""
268
+ #~ "Do you know the situation, when some plugin offers you to update to "
269
+ #~ "premium, to collect technical data and shows many annoying notices? You "
270
+ #~ "are close these notices every now and again but they newly appears and "
271
+ #~ "interfere your work with WordPress. Even worse, some plugin’s authors "
272
+ #~ "delete “close” button from notices and they shows in your admin panel "
273
+ #~ "forever."
274
+ #~ msgstr ""
275
+ #~ "Вам знакома ситуация, когда какой-то плагин просит вас обновиться до "
276
+ #~ "премиум-версии, получить права на сбор данных о вашем сайте и создает "
277
+ #~ "много раздражающих уведомлений? Вы закрываете эти уведомления раз за "
278
+ #~ "разом, но они вновь появляются и мешают вашей работе с WordPress. Хуже "
279
+ #~ "того, некоторые авторы и вовсе удаляют кнопку “закрыть” из уведомлений, и "
280
+ #~ "они висят в шапке вашей панели администратора целую вечность."
281
+
282
+ #~ msgid "All notices"
283
+ #~ msgstr "Все уведомления"
284
+
285
+ #~ msgid "Hide all notices globally."
286
+ #~ msgstr "Скрыть все уведомления глобально."
287
+
288
+ #~ msgid "Only selected"
289
+ #~ msgstr "Только выбранные"
290
+
291
+ #~ msgid ""
292
+ #~ "Hide selected notices only. You will see the link \"Hide notification "
293
+ #~ "forever\" in each notice. Push it and they will not bother you anymore."
294
+ #~ msgstr ""
295
+ #~ "Скрывать только выбранные уведомления. В каждом уведомлении вы увидите "
296
+ #~ "ссылку \"Скрыть уведомление навсегда\". Нажмите на неё и уведомление "
297
+ #~ "будет скрыто навсегда и перестанет вас беспокоить."
298
+
299
+ #~ msgid "Don't nide"
300
+ #~ msgstr "Не скрывать"
301
+
302
+ #~ msgid ""
303
+ #~ "Do not hide notices and do not show “Hide notification forever” link for "
304
+ #~ "admin."
305
+ #~ msgstr ""
306
+ #~ "Не скрывать уведомления и не показывать ссылку \"Скрыть уведомление "
307
+ #~ "навсегда\" в уведомлениях администратора."
308
+
309
+ #~ msgid ""
310
+ #~ "Some plugins shows notifications about premium version, data collecting "
311
+ #~ "or promote their services. Even if you push close button (that sometimes "
312
+ #~ "are impossible), notices are shows again in some time. This option allows "
313
+ #~ "you to control notices. Hide them all or each individually. Some plugins "
314
+ #~ "shows notifications about premium version, data collecting or promote "
315
+ #~ "their services. Even if you push close button (that sometimes are "
316
+ #~ "impossible), notices are shows again in some time. This option allows you "
317
+ #~ "to control notices. Hide them all or each individually."
318
+ #~ msgstr ""
319
+ #~ "Зачастую, плагины отображают уведомления о возможности перехода на "
320
+ #~ "премиум версию, просят разрешение на сбор данных, рекламируют свои "
321
+ #~ "услуги. Даже если вы нажмете кнопку закрыть (что не всегда возможно), "
322
+ #~ "уведомления всё равно отобразятся через какое-то время. С помощью этой "
323
+ #~ "настройки, вы можете контролировать эти уведомления. Скройте их все сразу "
324
+ #~ "или каждое по отдельности."
325
+
326
+ #~ msgid ""
327
+ #~ "By default, the plugin hides all notices, which you specified. If you "
328
+ #~ "enable this option, the plugin will collect all hidden notices and show "
329
+ #~ "them into the top admin toolbar. It will not disturb you but will allow "
330
+ #~ "to look notices at your convenience."
331
+ #~ msgstr ""
332
+ #~ "По умолчанию, плагин полностью скрывает отключенные вами уведомления. "
333
+ #~ "Если включить эту опцию, то плагин будет собирать все скрытые вами "
334
+ #~ "уведомления и выводить в верхней панели администратора. Это не будет вас "
335
+ #~ "раздражать, но и позволит просматривать уведомления, когда вам это удобно."
336
+
337
+ #~ msgid "Push reset hidden notices if you need to show hidden notices again."
338
+ #~ msgstr "Нажмите кнопку \\\"Сбросить скрытые уведомления\\\""
339
+
340
+ #~ msgid "Reset hidden notices (%s)"
341
+ #~ msgstr "Сбросить скрытые уведомления (%s)"
342
+
343
+ #~ msgid "Hidden notices are successfully reset, now you can see them again!"
344
+ #~ msgstr ""
345
+ #~ "Скрытые уведомления успешно восстановлены, теперь вы можете снова видеть "
346
+ #~ "их!"
347
+
348
+ #~ msgid "Notices"
349
+ #~ msgstr "Уведомления"
350
+
351
+ #~ msgid ""
352
+ #~ "We found that you have the \"Clearfy - disable unused features\" plugin "
353
+ #~ "installed, this plugin already has disable comments functions, so you can "
354
+ #~ "deactivate plugin \"Disable admin notices\"!"
355
+ #~ msgstr ""
356
+ #~ "Мы обнаружили, что у вас установлен плагин «Clearfy - отключить "
357
+ #~ "неиспользуемые функции», этот плагин уже имеет функции отключения "
358
+ #~ "комментариев, поэтому вы можете отключить плагин «Скрыть уведомления "
359
+ #~ "администратора»!"
360
+
361
+ #~ msgid "Webcraftic disable admin notices"
362
+ #~ msgstr "Webcraftic отключить уведомления администратора"
363
+
364
+ #~ msgid "Notifications %s"
365
+ #~ msgstr "Уведомления %s"
366
+
367
+ #~ msgid "Restore notice"
368
+ #~ msgstr "Восстановить уведомление"
369
+
370
+ #~ msgid "Hide notification forever"
371
+ #~ msgstr "Скрыть уведомление навсегда"
372
+
373
+ #~ msgid "Hidden notices"
374
+ #~ msgstr "Скрытые уведомления"
375
+
376
+ #~ msgid "Disable comments on the entire site"
377
+ #~ msgstr "Отключить комментарии на всем сайте"
378
+
379
+ #~ msgid "Select post types"
380
+ #~ msgstr "Выбрать тип записи"
381
+
382
+ #~ msgid "Replace external links in comments on the JavaScript code"
383
+ #~ msgstr "Заменить внешние ссылки в комментариях на JavaScript код"
384
+
385
+ #~ msgid "Replace external links from comment authors on the JavaScript code"
386
+ #~ msgstr "Заменить внешние ссылки от авторов комментариев на код JavaScript"
387
+
388
+ #~ msgid "Disable X-Pingback"
389
+ #~ msgstr "Убрать ссылку на X-Pingback и возможность спамить pingback-ами"
390
+
391
+ #~ msgid "Remove field \"site\" in comment form"
392
+ #~ msgstr "Удаляет поле \"Сайт\" в форме комментариев"
393
+
394
+ #~ msgid "Disable all comments"
395
+ #~ msgstr "Отключить все комментарии"
396
+
397
+ #~ msgid "Comments"
398
+ #~ msgstr "Комментарии"
399
+
400
+ #~ msgid ""
401
+ #~ "Hide selected notices only. You will see the link \"Hide notification "
402
+ #~ "forever\" in each notice. Push it and they will not bother you anymore. "
403
+ #~ "Push <a href=\"%s\">reset hidden notices (%d)</a> if you need to show "
404
+ #~ "hidden notices again."
405
+ #~ msgstr ""
406
+ #~ "Скрывать только выбранные уведомления. В каждом уведомлении вы увидите "
407
+ #~ "ссылку \"Скрыть уведомление навсегда\". Нажмите на неё и уведомление "
408
+ #~ "будет скрыто навсегда и перестанет вас беспокоить. Нажмите <a href=\"%s"
409
+ #~ "\">сбросить скрытые уведомления (%d)</a>, если вам нужно восстановить "
410
+ #~ "показ скрытых ранее уведомлений."
411
+
412
+ #~ msgid "Webcraftic hide admin notices"
413
+ #~ msgstr "Webcraftic скрыть уведомления администратора"
414
+
415
+ #~ msgid "Comments tweaks"
416
+ #~ msgstr "Инструменты комментариев"
417
+
418
+ #~ msgid "All comments have been deleted."
419
+ #~ msgstr "Все комментарии были удалены."
420
+
421
+ #~ msgid ""
422
+ #~ "An error occurred while trying to delete comments. Internal error "
423
+ #~ "occured. Please try again later."
424
+ #~ msgstr ""
425
+ #~ "При попытке удалить комментарии произошла ошибка. Пожалуйста, повторите "
426
+ #~ "попытку позже."
427
+
428
+ #~ msgid "You are not allowed to view this page."
429
+ #~ msgstr "Вам не разрешено просматривать эту страницу."
430
+
431
+ #~ msgid "You do not have the selected post types!"
432
+ #~ msgstr "Вы не выбрали еще ни одного типа записей!"
433
+
434
+ #~ msgid "No comments available for deletion."
435
+ #~ msgstr "Нет комментариев для удаления."
436
+
437
+ #~ msgid ""
438
+ #~ "Are you sure that you desire to delete all comments from the database?"
439
+ #~ msgstr "Вы уверены, что хотите удалить все комментарии из базы данных?"
440
+
441
+ #~ msgid ""
442
+ #~ "Deleting comments will remove existing comment entries in the database "
443
+ #~ "and cannot be reverted without a database backup."
444
+ #~ msgstr ""
445
+ #~ "При удалении комментариев удаляются существующие записи комментариев в "
446
+ #~ "базе данных, они не могут быть восстановлены без резервного копирования "
447
+ #~ "базы данных."
448
+
449
+ #~ msgid "You have %s comments"
450
+ #~ msgstr "У вас есть %s комментариев"
451
+
452
+ #~ msgid "Yes, I'm sure"
453
+ #~ msgstr "Да, я уверен"
454
+
455
+ #~ msgid "No, return back"
456
+ #~ msgstr "Нет, вернуться"
457
+
458
+ #~ msgid ""
459
+ #~ "Are you sure that you desire to delete all comments from the database for "
460
+ #~ "the selected post types (%s)?"
461
+ #~ msgstr ""
462
+ #~ "Вы уверены, что хотите удалить все комментарии из базы данных для "
463
+ #~ "выбранных типов записей (%s)?"
464
+
465
+ #~ msgid "Disable comments"
466
+ #~ msgstr "Отключить комментарии"
467
+
468
+ #~ msgid "Not disable"
469
+ #~ msgstr "Не отключать"
470
+
471
+ #~ msgid "Everywhere"
472
+ #~ msgstr "Повсюду"
473
+
474
+ #~ msgid ""
475
+ #~ "You can delete all comments in the database by clicking on this link (<a "
476
+ #~ "href=\"%s\">cleaning comments in database</a>)."
477
+ #~ msgstr ""
478
+ #~ "Вы можете удалить все комментарии в базе данных, нажав на эту ссылку ( <a "
479
+ #~ "href=\"%s\">очистка комментариев в базе данных</a> )."
480
+
481
+ #~ msgid "On certain post types"
482
+ #~ msgstr "Только выбранные типы записей"
483
+
484
+ #~ msgid ""
485
+ #~ "You can delete all comments for the selected post types. Select the post "
486
+ #~ "types below and save the settings. After that, click the link (<a href="
487
+ #~ "\"%s\">delete all comments for the selected post types in database</a>)."
488
+ #~ msgstr ""
489
+ #~ "Вы можете удалить все комментарии для выбранных типов записей. Выберите "
490
+ #~ "типы записей ниже и сохраните настройки. После этого нажмите ссылку ( <a "
491
+ #~ "href=\"%s\">удалите все комментарии для выбранных типов записей в базе "
492
+ #~ "данных</a> )."
493
+
494
+ #~ msgid ""
495
+ #~ "Everywhere - Warning: This option is global and will affect your entire "
496
+ #~ "site. Use it only if you want to disable comments everywhere. A complete "
497
+ #~ "description of what this option does is available here"
498
+ #~ msgstr ""
499
+ #~ "Повсюду - предупреждение: этот параметр является глобальным и повлияет на "
500
+ #~ "весь ваш сайт. Используйте его только в том случае, если вы хотите "
501
+ #~ "отключить комментарии повсюду. "
502
+
503
+ #~ msgid ""
504
+ #~ "On certain post types - Disabling comments will also disable trackbacks "
505
+ #~ "and pingbacks. All comment-related fields will also be hidden from the "
506
+ #~ "edit/quick-edit screens of the affected posts. These settings cannot be "
507
+ #~ "overridden for individual posts."
508
+ #~ msgstr ""
509
+ #~ некоторых типах сообщений - отключение комментариев также отключает "
510
+ #~ "трекбэки и pingback. Все поля, связанные с комментариями, также будут "
511
+ #~ "скрыты от экранов редактирования / быстрого редактирования затронутых "
512
+ #~ "сообщений. Эти настройки нельзя переопределять для отдельных сообщений."
513
+
514
+ #~ msgid "Select the post types for which comments will be disabled"
515
+ #~ msgstr "Выберите типы записей, для которых комментарии будут отключены."
516
+
517
+ #~ msgid ""
518
+ #~ "Tired of spam in the comments? Do visitors leave \"blank\" comments for "
519
+ #~ "the sake of a link to their site?"
520
+ #~ msgstr ""
521
+ #~ "Надоел спам в комментариях? Посетители оставляют «пустые» комментарии "
522
+ #~ "ради ссылки на свой сайт?"
523
+
524
+ #~ msgid "Removes the \"Site\" field from the comment form."
525
+ #~ msgstr "Убирает поле «Сайт» из формы комментирования."
526
+
527
+ #~ msgid ""
528
+ #~ "Works with the standard comment form, if the form is manually written in "
529
+ #~ "your theme-it probably will not work!"
530
+ #~ msgstr ""
531
+ #~ "Работает со стандартной формой комментирования, если в Вашей теме форма "
532
+ #~ "прописана вручную - скорей всего не сработает!"
533
+
534
+ #~ msgid "Recommended"
535
+ #~ msgstr "Рекомендовано"
536
+
537
+ #~ msgid ""
538
+ #~ "Superfluous external links from comments, which can be typed from a dozen "
539
+ #~ "and more for one article, do not bring anything good for promotion."
540
+ #~ msgstr ""
541
+ #~ "Внешние ссылки в комментариях, которых может быть десятки или больше на "
542
+ #~ "одной странице, могут ухудшить продвижение вашего сайта."
543
+
544
+ #~ msgid "Replaces the links of this kind of %s, on links of this kind %s"
545
+ #~ msgstr ""
546
+ #~ "Заменяет ссылки %s, на span тег и устанавливает переход с помощью "
547
+ #~ "JavaScript %s"
548
+
549
+ #~ msgid ""
550
+ #~ "Up to 90 percent of comments in the blog can be left for the sake of an "
551
+ #~ "external link. Even nofollow from page weight loss here does not help."
552
+ #~ msgstr ""
553
+ #~ "До 90 процентов комментариев в блоге оставляют ради внешней ссылки. Не "
554
+ #~ "поможет даже nofollow от потери веса страницы."
555
+
556
+ #~ msgid ""
557
+ #~ "Replaces the links of the authors of comments on the JavaScript code, it "
558
+ #~ "is impossible to distinguish it from usual links."
559
+ #~ msgstr ""
560
+ #~ "Заменяет ссылки авторов комментариев на JavaScript код, его невозможно "
561
+ #~ "отличить от обычной ссылки."
562
+
563
+ #~ msgid "In some Wordpress topics this may not work."
564
+ #~ msgstr "В некоторых темах Wordpress это может не сработать."
565
+
566
+ #~ msgid "Disable XML-RPC"
567
+ #~ msgstr "Отключить XML-RPC"
568
+
569
+ #~ msgid ""
570
+ #~ "A pingback is basically an automated comment that gets created when "
571
+ #~ "another blog links to you. A self-pingback is created when you link to an "
572
+ #~ "article within your own blog. Pingbacks are essentially nothing more than "
573
+ #~ "spam and simply waste resources."
574
+ #~ msgstr ""
575
+ #~ "Pingback по-существу автоматизированных комментарий, который создается, "
576
+ #~ "когда другой блог ссылается на вас. Self-pingback создается, когда вы "
577
+ #~ "оставили ссылку на статью в своем блоге. Pingbacks по существу являются "
578
+ #~ "не более чем спам и пустая трата ресурсов вашего сайта."
579
+
580
+ #~ msgid "Removes the server responses a reference to the xmlrpc file."
581
+ #~ msgstr "Удаляет ссылку на xmlrpc-файл и ответ сервера."
582
+
583
+ #~ msgid ""
584
+ #~ "We found that you have the \"Clearfy - disable unused features\" plugin "
585
+ #~ "installed, this plugin already has disable comments functions, so you can "
586
+ #~ "deactivate plugin \"Comments tweaks\"!"
587
+ #~ msgstr ""
588
+ #~ "Мы обнаружили, что у вас установлен плагин «Clearfy - отключить "
589
+ #~ "неиспользуемые функции», этот плагин уже имеет функции отключения "
590
+ #~ "комментариев, поэтому вы можете отключить плагин «Инструменты "
591
+ #~ "комментариев»!"
592
+
593
+ #~ msgid "Webcraftic comments tweaks"
594
+ #~ msgstr "Webcraftic инструменты комментариев"
595
+
596
+ #~ msgid "Comments are closed."
597
+ #~ msgstr "Комментарии Закрыты."
598
+
599
+ #~ msgid ""
600
+ #~ "Note: The <em>%s</em> plugin is currently active, and comments are "
601
+ #~ "completely disabled on: %s. Many of the settings below will not be "
602
+ #~ "applicable for those post types."
603
+ #~ msgstr ""
604
+ #~ "Примечание. Плагин <em>%s</em> в настоящий момент активен, и комментарии "
605
+ #~ "полностью отключены: %s. Многие из приведенных ниже настроек не будут "
606
+ #~ "применяться для этих типов сообщений."
607
+
608
+ #~ msgid ""
609
+ #~ "We found that you have the \"Clearfy - disable unused features\" plugin "
610
+ #~ "installed, this plugin already has disable comments functions, so you can "
611
+ #~ "deactivate plugin \"Disable comments\"!"
612
+ #~ msgstr ""
613
+ #~ "Мы обнаружили, что у вас установлен плагин «Clearfy - отключить "
614
+ #~ "неиспользуемые функции», этот плагин уже имеет функции отключения "
615
+ #~ "комментариев, поэтому вы можете отключить плагин «Отключить комментарии»!"
616
+
617
+ #~ msgid "Webcraftic Disable comments"
618
+ #~ msgstr "Webcraftic отключить комментарии"
 
components/cyrlitera/updates/010004.php CHANGED
@@ -4,10 +4,10 @@
4
  * Updates for altering the table used to store statistics data.
5
  * Adds new columns and renames existing ones in order to add support for the new social buttons.
6
  */
7
- class WCTR_Update010004 extends Wbcr_Factory406_Update {
8
 
9
  public function install()
10
  {
11
- WCTR_Plugin::app()->deleteOption('custom_symbols_pack');
12
  }
13
  }
4
  * Updates for altering the table used to store statistics data.
5
  * Adds new columns and renames existing ones in order to add support for the new social buttons.
6
  */
7
+ class WCTR_Update010004 extends Wbcr_Factory409_Update {
8
 
9
  public function install()
10
  {
11
+ WCTR_Plugin::app()->deletePopulateOption('custom_symbols_pack');
12
  }
13
  }
components/disable-admin-notices/admin/ajax/hide-notice.php CHANGED
@@ -15,36 +15,30 @@
15
  {
16
  check_ajax_referer(WDN_Plugin::app()->getPluginName() . '_ajax_hide_notices_nonce', 'security');
17
 
18
- if( !current_user_can('manage_options') ) {
19
- echo json_encode(array('error' => __('You don\'t have enough capability to edit this information.', 'disable-admin-notices')));
20
- exit;
21
- }
22
-
23
- $notice_id = isset($_POST['notice_id'])
24
- ? sanitize_text_field($_POST['notice_id'])
25
- : null;
26
 
27
- $notice_html = isset($_POST['notice_html'])
28
- ? wp_kses($_POST['notice_html'], array())
29
- : null;
30
 
31
- if( empty($notice_id) ) {
32
- echo json_encode(array('error' => __('Undefinded notice id.', 'disable-admin-notices')));
33
- exit;
34
- }
35
 
36
- $get_hidden_notices = WDN_Plugin::app()->getOption('hidden_notices');
 
 
37
 
38
- if( !is_array($get_hidden_notices) ) {
39
- $get_hidden_notices = array();
40
- }
41
 
42
- $get_hidden_notices[$notice_id] = rtrim(trim($notice_html));
43
 
44
- WDN_Plugin::app()->updateOption('hidden_notices', $get_hidden_notices);
45
-
46
- echo json_encode(array('success' => __('Success', 'disable-admin-notices')));
47
- exit;
48
  }
49
 
50
- add_action('wp_ajax_wbcr_dan_hide_notices', 'wbcr_dan_ajax_hide_notices');
15
  {
16
  check_ajax_referer(WDN_Plugin::app()->getPluginName() . '_ajax_hide_notices_nonce', 'security');
17
 
18
+ if( current_user_can('manage_options') || current_user_can('manage_network') ) {
19
+ $notice_id = WDN_Plugin::app()->request->post('notice_id', null, true);
20
+ $notice_html = WDN_Plugin::app()->request->post('notice_html', null);
21
+ $notice_html = wp_kses($notice_html, array());
 
 
 
 
22
 
23
+ if( empty($notice_id) ) {
24
+ wp_send_json_error(array('error_message' => __('Undefinded notice id.', 'disable-admin-notices')));
25
+ }
26
 
27
+ $current_user_id = get_current_user_id();
28
+ $get_hidden_notices = get_user_meta($current_user_id, WDN_Plugin::app()->getOptionName('hidden_notices'), true);
 
 
29
 
30
+ if( !is_array($get_hidden_notices) ) {
31
+ $get_hidden_notices = array();
32
+ }
33
 
34
+ $get_hidden_notices[$notice_id] = rtrim(trim($notice_html));
 
 
35
 
36
+ update_user_meta($current_user_id, WDN_Plugin::app()->getOptionName('hidden_notices'), $get_hidden_notices);
37
 
38
+ wp_send_json_success();
39
+ } else {
40
+ wp_send_json_error(array('error_message' => __('You don\'t have enough capability to edit this information.', 'disable-admin-notices')));
41
+ }
42
  }
43
 
44
+ add_action('wp_ajax_wbcr-dan-hide-notices', 'wbcr_dan_ajax_hide_notices');
components/disable-admin-notices/admin/ajax/restore-notice.php CHANGED
@@ -15,30 +15,26 @@
15
  {
16
  check_ajax_referer(WDN_Plugin::app()->getPluginName() . '_ajax_restore_notice_nonce', 'security');
17
 
18
- if( !current_user_can('manage_options') ) {
19
- echo json_encode(array('error' => __('You don\'t have enough capability to edit this information.', 'disable-admin-notices')));
20
- exit;
21
- }
22
-
23
- $notice_id = isset($_POST['notice_id'])
24
- ? sanitize_text_field($_POST['notice_id'])
25
- : null;
26
 
27
- if( empty($notice_id) ) {
28
- echo json_encode(array('error' => __('Undefinded notice id.', 'disable-admin-notices')));
29
- exit;
30
- }
31
 
32
- $get_hidden_notices = WDN_Plugin::app()->getOption('hidden_notices');
 
33
 
34
- if( !empty($get_hidden_notices) && isset($get_hidden_notices[$notice_id]) ) {
35
- unset($get_hidden_notices[$notice_id]);
36
- }
37
 
38
- WDN_Plugin::app()->updateOption('hidden_notices', $get_hidden_notices);
39
 
40
- echo json_encode(array('success' => __('Success', 'disable-admin-notices')));
41
- exit;
 
 
42
  }
43
 
44
- add_action('wp_ajax_wbcr_dan_restore_notice', 'wbcr_dan_ajax_restore_notice');
15
  {
16
  check_ajax_referer(WDN_Plugin::app()->getPluginName() . '_ajax_restore_notice_nonce', 'security');
17
 
18
+ if( current_user_can('manage_options') || current_user_can('manage_network') ) {
19
+ $notice_id = WDN_Plugin::app()->request->post('notice_id', null, true);
 
 
 
 
 
 
20
 
21
+ if( empty($notice_id) ) {
22
+ wp_send_json_error(array('error_message' => __('Undefinded notice id.', 'disable-admin-notices')));
23
+ }
 
24
 
25
+ $current_user_id = get_current_user_id();
26
+ $get_hidden_notices = get_user_meta($current_user_id, WDN_Plugin::app()->getOptionName('hidden_notices'), true);
27
 
28
+ if( !empty($get_hidden_notices) && isset($get_hidden_notices[$notice_id]) ) {
29
+ unset($get_hidden_notices[$notice_id]);
30
+ }
31
 
32
+ update_user_meta($current_user_id, WDN_Plugin::app()->getOptionName('hidden_notices'), $get_hidden_notices);
33
 
34
+ wp_send_json_success();
35
+ } else {
36
+ wp_send_json_error(array('error_message' => __('You don\'t have enough capability to edit this information.', 'disable-admin-notices')));
37
+ }
38
  }
39
 
40
+ add_action('wp_ajax_wbcr-dan-restore-notice', 'wbcr_dan_ajax_restore_notice');
components/disable-admin-notices/admin/assets/css/notifications-panel.css CHANGED
@@ -1,65 +1,65 @@
1
- /**
2
- * Notification panel in admin bar
3
- * @author Alex Kovalev <alex.kovalevv@gmail.com>
4
- * @copyright Alex Kovalev 23.08.2017
5
- */
6
- #wp-admin-bar-wbcr-han-notify-panel .wbcr-han-adminbar-counter {
7
- background-color: #0073aa;
8
- border-radius: 50%;
9
- color: #fff;
10
- font-weight: bold;
11
- padding: 2px 6px;
12
- font-size: 0.85em;
13
- margin-left: 5px;
14
- }
15
- #wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper {
16
- max-height: 500px;
17
- overflow-y: scroll;
18
- }
19
- #wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu {
20
- width: 400px;
21
- padding: 0;
22
- }
23
- #wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu > li {
24
- border-left: 4px solid #26292b;
25
- padding: 0;
26
- }
27
- #wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu > li.wpnc-updated {
28
- border-left-color: #7ad03a;
29
- }
30
- #wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu > li.wpnc-update-nag {
31
- border-left-color: #ffba00;
32
- }
33
- #wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu > li.wpnc-error {
34
- border-left-color: #dd3d36;
35
- }
36
- #wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu > li .wbcr-han-panel-restore-notify-line {
37
- text-align: right;
38
- }
39
- #wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu > li .wbcr-han-panel-restore-notify-line a {
40
- color: #ffba00 !important;
41
- text-decoration: none !important;
42
- }
43
- #wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu > li .wbcr-han-panel-restore-notify-line a:hover {
44
- text-decoration: underline !important;
45
- color: #ffc11a !important;
46
- }
47
- #wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu > li .ab-item {
48
- height: 100% !important;
49
- white-space: normal !important;
50
- padding: .5em 1em;
51
- border-bottom: 1px solid #4a4f55;
52
- color: #949494;
53
- line-height: .5em;
54
- }
55
- #wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu > li .ab-item a {
56
- display: inline;
57
- padding: 0;
58
- margin: 0;
59
- text-decoration: underline;
60
- line-height: .5em;
61
- color: #949494;
62
- }
63
- #wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu li:nth-child(2n) {
64
- background: #26292b;
65
- }
1
+ /**
2
+ * Notification panel in admin bar
3
+ * @author Alex Kovalev <alex.kovalevv@gmail.com>
4
+ * @copyright Alex Kovalev 23.08.2017
5
+ */
6
+ #wp-admin-bar-wbcr-han-notify-panel .wbcr-han-adminbar-counter {
7
+ background-color: #0073aa;
8
+ border-radius: 50%;
9
+ color: #fff;
10
+ font-weight: bold;
11
+ padding: 2px 6px;
12
+ font-size: 0.85em;
13
+ margin-left: 5px;
14
+ }
15
+ #wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper {
16
+ max-height: 500px;
17
+ overflow-y: scroll;
18
+ }
19
+ #wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu {
20
+ width: 400px;
21
+ padding: 0;
22
+ }
23
+ #wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu > li {
24
+ border-left: 4px solid #26292b;
25
+ padding: 0;
26
+ }
27
+ #wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu > li.wpnc-updated {
28
+ border-left-color: #7ad03a;
29
+ }
30
+ #wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu > li.wpnc-update-nag {
31
+ border-left-color: #ffba00;
32
+ }
33
+ #wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu > li.wpnc-error {
34
+ border-left-color: #dd3d36;
35
+ }
36
+ #wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu > li .wbcr-han-panel-restore-notify-line {
37
+ text-align: right;
38
+ }
39
+ #wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu > li .wbcr-han-panel-restore-notify-line a {
40
+ color: #ffba00 !important;
41
+ text-decoration: none !important;
42
+ }
43
+ #wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu > li .wbcr-han-panel-restore-notify-line a:hover {
44
+ text-decoration: underline !important;
45
+ color: #ffc11a !important;
46
+ }
47
+ #wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu > li .ab-item {
48
+ height: 100% !important;
49
+ white-space: normal !important;
50
+ padding: .5em 1em;
51
+ border-bottom: 1px solid #4a4f55;
52
+ color: #949494;
53
+ line-height: .5em;
54
+ }
55
+ #wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu > li .ab-item a {
56
+ display: inline;
57
+ padding: 0;
58
+ margin: 0;
59
+ text-decoration: underline;
60
+ line-height: .5em;
61
+ color: #949494;
62
+ }
63
+ #wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu li:nth-child(2n) {
64
+ background: #26292b;
65
+ }
components/disable-admin-notices/admin/assets/js/notifications-panel.js CHANGED
@@ -13,6 +13,7 @@
13
 
14
  var self = $(this),
15
  noticeID = $(this).data('notice-id'),
 
16
  counterEl = $('.wbcr-han-adminbar-counter');
17
 
18
  if( !noticeID ) {
@@ -25,21 +26,34 @@
25
  type: 'post',
26
  dataType: 'json',
27
  data: {
28
- action: 'wbcr_dan_restore_notice',
29
- security: wbcr_dan_ajax_restore_nonce,
30
  notice_id: noticeID
31
  },
32
- success: function(data, textStatus, jqXHR) {
33
- if( data == 'error' && data.error ) {
34
- alert(data.error);
35
- self.closest('li').show();
 
 
 
 
 
 
36
  return;
37
  }
38
 
39
  counterEl.text(counterEl.text() - 1);
40
  self.closest('li').remove();
 
 
 
 
 
41
  }
42
  });
 
 
43
  });
44
  });
45
  })(jQuery);
13
 
14
  var self = $(this),
15
  noticeID = $(this).data('notice-id'),
16
+ nonce = $(this).data('nonce'),
17
  counterEl = $('.wbcr-han-adminbar-counter');
18
 
19
  if( !noticeID ) {
26
  type: 'post',
27
  dataType: 'json',
28
  data: {
29
+ action: 'wbcr-dan-restore-notice',
30
+ security: nonce,
31
  notice_id: noticeID
32
  },
33
+ success: function(response) {
34
+ if( !response || !response.success ) {
35
+
36
+ if( response.data.error_message ) {
37
+ console.log(response.data.error_message);
38
+ self.closest('li').show();
39
+ } else {
40
+ console.log(response);
41
+ }
42
+
43
  return;
44
  }
45
 
46
  counterEl.text(counterEl.text() - 1);
47
  self.closest('li').remove();
48
+ },
49
+ error: function(xhr, ajaxOptions, thrownError) {
50
+ console.log(xhr.status);
51
+ console.log(xhr.responseText);
52
+ console.log(thrownError);
53
  }
54
  });
55
+
56
+ return false;
57
  });
58
  });
59
  })(jQuery);
components/disable-admin-notices/admin/boot.php CHANGED
@@ -64,7 +64,7 @@
64
  return $page_url;
65
  }
66
 
67
- add_filter('wbcr_factory_pages_407_imppage_rating_widget_url', 'wbcr_dan_rating_widget_url', 10, 2);
68
 
69
 
70
 
64
  return $page_url;
65
  }
66
 
67
+ add_filter('wbcr_factory_pages_410_imppage_rating_widget_url', 'wbcr_dan_rating_widget_url', 10, 2);
68
 
69
 
70
 
components/disable-admin-notices/admin/options.php CHANGED
@@ -63,6 +63,39 @@
63
  )
64
  );
65
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
66
  $options[] = array(
67
  'type' => 'checkbox',
68
  'way' => 'buttons',
@@ -78,16 +111,12 @@
78
  'html' => 'wbcr_dan_reset_notices_button'
79
  );
80
 
81
- $options[] = array(
82
- 'type' => 'separator'
83
- );
84
-
85
  return $options;
86
  }
87
 
88
  /**
89
  * @param $form
90
- * @param $page Wbcr_FactoryPages407_ImpressiveThemplate
91
  * @return mixed
92
  */
93
  function wbcr_dan_additionally_form_options($form, $page)
@@ -108,41 +137,53 @@
108
  add_filter('wbcr_clr_additionally_form_options', 'wbcr_dan_additionally_form_options', 10, 2);
109
 
110
  /**
111
- * @param $html_builder Wbcr_FactoryForms407_Html
112
  */
113
  function wbcr_dan_reset_notices_button($html_builder)
114
  {
 
 
115
  $form_name = $html_builder->getFormName();
116
  $reseted = false;
117
 
118
  if( isset($_POST['wbcr_dan_reset_action']) ) {
119
  check_admin_referer($form_name, 'wbcr_dan_reset_nonce');
 
120
 
121
- WDN_Plugin::app()->deleteOption('hidden_notices');
 
 
 
 
 
122
 
123
  $reseted = true;
124
  }
125
 
126
- $count_hidden_notices = 0;
127
- $hidden_notices = WDN_Plugin::app()->getOption('hidden_notices');
128
-
129
- if( !empty($hidden_notices) ) {
130
- $count_hidden_notices = sizeof($hidden_notices);
131
- }
132
-
133
  ?>
134
  <div class="form-group form-group-checkbox factory-control-reset_notices_button">
135
- <label for="wbcr_clearfy_reset_notices_button" class="col-sm-6 control-label">
 
136
  <span class="factory-hint-icon factory-hint-icon-grey" data-toggle="factory-tooltip" data-placement="right" title="" data-original-title="<?php _e('Push reset hidden notices if you need to show hidden notices again.', 'disable-admin-notices') ?>">
137
  <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAQAAABKmM6bAAAAUUlEQVQIHU3BsQ1AQABA0X/komIrnQHYwyhqQ1hBo9KZRKL9CBfeAwy2ri42JA4mPQ9rJ6OVt0BisFM3Po7qbEliru7m/FkY+TN64ZVxEzh4ndrMN7+Z+jXCAAAAAElFTkSuQmCC" alt="">
138
  </span>
139
  </label>
140
 
141
- <div class="control-group col-sm-6">
142
  <div class="factory-checkbox factory-from-control-checkbox factory-buttons-way btn-group">
143
  <form method="post">
144
  <?php wp_nonce_field($form_name, 'wbcr_dan_reset_nonce'); ?>
145
- <input type="submit" name="wbcr_dan_reset_action" value="<?php printf(__('Reset hidden notices (%s)', 'disable-admin-notices'), $count_hidden_notices) ?>" class="button button-default"/>
 
 
 
 
 
 
 
 
 
 
146
  <?php if( $reseted ): ?>
147
  <div style="color:green;margin-top:5px;"><?php _e('Hidden notices are successfully reset, now you can see them again!', 'disable-admin-notices') ?></div>
148
  <?php endif; ?>
63
  )
64
  );
65
 
66
+ /*$options[] = array(
67
+ 'type' => 'dropdown',
68
+ 'name' => 'hide_admin_notices_for',
69
+ 'way' => 'buttons',
70
+ 'title' => __('Hide admin notices only for', 'disable-admin-notices'),
71
+ 'data' => array(
72
+ array(
73
+ 'user',
74
+ __('Current user', 'disable-admin-notices')
75
+ ),
76
+ array(
77
+ 'all_users',
78
+ __('All users', 'disable-admin-notices')
79
+ )
80
+ ),
81
+ 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'green'),
82
+ 'hint' => __('Choose who to hide notifications for?', 'disable-admin-notices'),
83
+ 'default' => 'user',
84
+ 'events' => array(
85
+ 'all' => array(
86
+ 'show' => '.factory-control-hide_admin_notices_user_roles',
87
+ 'hide' => '.factory-control-reset_notices_button'
88
+ ),
89
+ 'only_selected' => array(
90
+ 'hide' => '.factory-control-hide_admin_notices_user_roles',
91
+ 'show' => '.factory-control-reset_notices_button'
92
+ ),
93
+ 'not_hide' => array(
94
+ 'hide' => '.factory-control-hide_admin_notices_user_roles, .factory-control-reset_notices_button'
95
+ )
96
+ )
97
+ );*/
98
+
99
  $options[] = array(
100
  'type' => 'checkbox',
101
  'way' => 'buttons',
111
  'html' => 'wbcr_dan_reset_notices_button'
112
  );
113
 
 
 
 
 
114
  return $options;
115
  }
116
 
117
  /**
118
  * @param $form
119
+ * @param $page Wbcr_FactoryPages410_ImpressiveThemplate
120
  * @return mixed
121
  */
122
  function wbcr_dan_additionally_form_options($form, $page)
137
  add_filter('wbcr_clr_additionally_form_options', 'wbcr_dan_additionally_form_options', 10, 2);
138
 
139
  /**
140
+ * @param $html_builder Wbcr_FactoryForms410_Html
141
  */
142
  function wbcr_dan_reset_notices_button($html_builder)
143
  {
144
+ global $wpdb;
145
+
146
  $form_name = $html_builder->getFormName();
147
  $reseted = false;
148
 
149
  if( isset($_POST['wbcr_dan_reset_action']) ) {
150
  check_admin_referer($form_name, 'wbcr_dan_reset_nonce');
151
+ $reset_for_users = WDN_Plugin::app()->request->post('wbcr_dan_reset_for_users', 'current_user', true);
152
 
153
+ if( $reset_for_users == 'current_user' ) {
154
+ delete_user_meta(get_current_user_id(), WDN_Plugin::app()->getOptionName('hidden_notices'));
155
+ } else {
156
+ $meta_key = sanitize_key(WDN_Plugin::app()->getOptionName('hidden_notices'));
157
+ $wpdb->query("DELETE FROM {$wpdb->usermeta} WHERE meta_key = '{$meta_key}'");
158
+ }
159
 
160
  $reseted = true;
161
  }
162
 
 
 
 
 
 
 
 
163
  ?>
164
  <div class="form-group form-group-checkbox factory-control-reset_notices_button">
165
+ <label for="wbcr_clearfy_reset_notices_button" class="col-sm-4 control-label">
166
+ <?= __('Reset hidden notices for', 'disable-admin-notices'); ?>
167
  <span class="factory-hint-icon factory-hint-icon-grey" data-toggle="factory-tooltip" data-placement="right" title="" data-original-title="<?php _e('Push reset hidden notices if you need to show hidden notices again.', 'disable-admin-notices') ?>">
168
  <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAQAAABKmM6bAAAAUUlEQVQIHU3BsQ1AQABA0X/komIrnQHYwyhqQ1hBo9KZRKL9CBfeAwy2ri42JA4mPQ9rJ6OVt0BisFM3Po7qbEliru7m/FkY+TN64ZVxEzh4ndrMN7+Z+jXCAAAAAElFTkSuQmCC" alt="">
169
  </span>
170
  </label>
171
 
172
+ <div class="control-group col-sm-8">
173
  <div class="factory-checkbox factory-from-control-checkbox factory-buttons-way btn-group">
174
  <form method="post">
175
  <?php wp_nonce_field($form_name, 'wbcr_dan_reset_nonce'); ?>
176
+ <p>
177
+ <input type="radio" name="wbcr_dan_reset_for_users" value="current_user" checked/> <?= __('current user', 'disable-admin-notices'); ?>
178
+ </p>
179
+
180
+ <p>
181
+ <input type="radio" name="wbcr_dan_reset_for_users" value="all"/> <?= __('all users', 'disable-admin-notices'); ?>
182
+ </p>
183
+
184
+ <p>
185
+ <input type="submit" name="wbcr_dan_reset_action" value="<?= __('Reset notices', 'disable-admin-notices'); ?>" class="button button-default"/>
186
+ </p>
187
  <?php if( $reseted ): ?>
188
  <div style="color:green;margin-top:5px;"><?php _e('Hidden notices are successfully reset, now you can see them again!', 'disable-admin-notices') ?></div>
189
  <?php endif; ?>
components/disable-admin-notices/admin/pages/more-features.php CHANGED
@@ -11,6 +11,6 @@
11
  exit;
12
  }
13
 
14
- class WDN_MoreFeaturesPage extends Wbcr_FactoryClearfy203_MoreFeaturesPage {
15
 
16
  }
11
  exit;
12
  }
13
 
14
+ class WDN_MoreFeaturesPage extends Wbcr_FactoryClearfy206_MoreFeaturesPage {
15
 
16
  }
components/disable-admin-notices/admin/pages/notices.php CHANGED
@@ -11,24 +11,29 @@
11
  exit;
12
  }
13
 
14
- class WDN_NoticesPage extends Wbcr_FactoryPages407_ImpressiveThemplate {
15
 
16
  /**
17
  * The id of the page in the admin menu.
18
  *
19
  * Mainly used to navigate between pages.
20
- * @see FactoryPages407_AdminPage
21
  *
22
  * @since 1.0.0
23
  * @var string
24
  */
25
  public $id = "notices";
26
  public $page_menu_dashicon = 'dashicons-testimonial';
 
 
 
 
 
27
 
28
  /**
29
- * @param Wbcr_Factory406_Plugin $plugin
30
  */
31
- public function __construct(Wbcr_Factory406_Plugin $plugin)
32
  {
33
  $this->menu_title = __('Hide admin notices', 'disable-admin-notices');
34
 
@@ -50,29 +55,10 @@
50
  : __('General', 'disable-admin-notices');
51
  }
52
 
53
- /**
54
- * Requests assets (js and css) for the page.
55
- *
56
- * @see Wbcr_FactoryPages407_AdminPage
57
- *
58
- * @since 1.0.0
59
- * @return void
60
- */
61
- public function assets($scripts, $styles)
62
- {
63
- parent::assets($scripts, $styles);
64
-
65
- // Add Clearfy styles for HMWP pages
66
- if( defined('WBCR_CLEARFY_PLUGIN_ACTIVE') ) {
67
- $this->styles->add(WCL_PLUGIN_URL . '/admin/assets/css/general.css');
68
- }
69
- }
70
-
71
-
72
  /**
73
  * We register notifications for some actions
74
  * @param array $notices
75
- * @param Wbcr_Factory406_Plugin $plugin
76
  * @return array
77
  */
78
  public function actionsNotice($notices)
@@ -91,7 +77,7 @@
91
  'wbcr_dan_code' => 'interal_error'
92
  ),
93
  'type' => 'danger',
94
- 'message' => __('An error occurred while trying to delete comments. Internal error occured. Please try again later.', 'factory_pages_407')
95
  );*/
96
 
97
  return $notices;
@@ -103,7 +89,7 @@
103
  * @since 1.0.0
104
  * @return mixed[]
105
  */
106
- public function getOptions()
107
  {
108
  $options = wbcr_dan_get_plugin_options();
109
 
11
  exit;
12
  }
13
 
14
+ class WDN_NoticesPage extends Wbcr_FactoryClearfy206_PageBase {
15
 
16
  /**
17
  * The id of the page in the admin menu.
18
  *
19
  * Mainly used to navigate between pages.
20
+ * @see FactoryPages410_AdminPage
21
  *
22
  * @since 1.0.0
23
  * @var string
24
  */
25
  public $id = "notices";
26
  public $page_menu_dashicon = 'dashicons-testimonial';
27
+ /**
28
+ * Доступена для мультисайтов
29
+ * @var bool
30
+ */
31
+ public $available_for_multisite = true;
32
 
33
  /**
34
+ * @param Wbcr_Factory409_Plugin $plugin
35
  */
36
+ public function __construct(Wbcr_Factory409_Plugin $plugin)
37
  {
38
  $this->menu_title = __('Hide admin notices', 'disable-admin-notices');
39
 
55
  : __('General', 'disable-admin-notices');
56
  }
57
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
58
  /**
59
  * We register notifications for some actions
60
  * @param array $notices
61
+ * @param Wbcr_Factory409_Plugin $plugin
62
  * @return array
63
  */
64
  public function actionsNotice($notices)
77
  'wbcr_dan_code' => 'interal_error'
78
  ),
79
  'type' => 'danger',
80
+ 'message' => __('An error occurred while trying to delete comments. Internal error occured. Please try again later.', 'factory_pages_410')
81
  );*/
82
 
83
  return $notices;
89
  * @since 1.0.0
90
  * @return mixed[]
91
  */
92
+ public function getPopulateOptions()
93
  {
94
  $options = wbcr_dan_get_plugin_options();
95
 
components/disable-admin-notices/disable-admin-notices.php CHANGED
@@ -8,6 +8,7 @@
8
  * Text Domain: disable-admin-notices
9
  * Domain Path: /languages/
10
  * Author URI: https://clearfy.pro
 
11
  */
12
 
13
  // Exit if accessed directly
@@ -15,45 +16,58 @@
15
  exit;
16
  }
17
 
18
- if( defined('WDN_PLUGIN_ACTIVE') || (defined('WCL_PLUGIN_ACTIVE') && !defined('LOADING_DISABLE_ADMIN_NOTICES_AS_ADDON')) ) {
19
- function wbcr_dan_admin_notice_error()
20
- {
21
- ?>
22
- <div class="notice notice-error">
23
- <p><?php _e('We found that you have the "Clearfy - disable unused features" plugin installed, this plugin already has disable comments functions, so you can deactivate plugin "Disable admin notices"!'); ?></p>
24
- </div>
25
- <?php
26
- }
27
 
28
- add_action('admin_notices', 'wbcr_dan_admin_notice_error');
 
 
29
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
30
  return;
31
- } else {
32
-
33
- define('WDN_PLUGIN_ACTIVE', true);
34
- define('WDN_PLUGIN_DIR', dirname(__FILE__));
35
- define('WDN_PLUGIN_BASE', plugin_basename(__FILE__));
36
- define('WDN_PLUGIN_URL', plugins_url(null, __FILE__));
37
-
38
-
39
-
40
- if( !defined('LOADING_DISABLE_ADMIN_NOTICES_AS_ADDON') ) {
41
- require_once(WDN_PLUGIN_DIR . '/libs/factory/core/boot.php');
42
- }
43
-
44
- require_once(WDN_PLUGIN_DIR . '/includes/class.plugin.php');
45
-
46
- if( !defined('LOADING_DISABLE_ADMIN_NOTICES_AS_ADDON') ) {
47
-
48
- new WDN_Plugin(__FILE__, array(
49
- 'prefix' => 'wbcr_dan_',
50
- 'plugin_name' => 'wbcr_dan',
51
- 'plugin_title' => __('Webcraftic disable admin notices', 'disable-admin-notices'),
52
- 'plugin_version' => '1.0.6',
53
- 'required_php_version' => '5.2',
54
- 'required_wp_version' => '4.2',
55
- 'plugin_build' => 'free',
56
- 'updates' => WDN_PLUGIN_DIR . '/updates/'
57
- ));
58
- }
59
- }
8
  * Text Domain: disable-admin-notices
9
  * Domain Path: /languages/
10
  * Author URI: https://clearfy.pro
11
+ * Framework Version: FACTORY_409_VERSION
12
  */
13
 
14
  // Exit if accessed directly
16
  exit;
17
  }
18
 
19
+ define('WDN_PLUGIN_VERSION', '1.0.7');
 
 
 
 
 
 
 
 
20
 
21
+ define('WDN_PLUGIN_DIR', dirname(__FILE__));
22
+ define('WDN_PLUGIN_BASE', plugin_basename(__FILE__));
23
+ define('WDN_PLUGIN_URL', plugins_url(null, __FILE__));
24
 
25
+
26
+
27
+ if( !defined('LOADING_DISABLE_ADMIN_NOTICES_AS_ADDON') ) {
28
+ require_once(WDN_PLUGIN_DIR . '/libs/factory/core/includes/check-compatibility.php');
29
+ require_once(WDN_PLUGIN_DIR . '/libs/factory/clearfy/includes/check-clearfy-compatibility.php');
30
+ }
31
+
32
+ $plugin_info = array(
33
+ 'prefix' => 'wbcr_dan_',
34
+ 'plugin_name' => 'wbcr_dan',
35
+ 'plugin_title' => __('Webcraftic disable admin notices', 'disable-admin-notices'),
36
+ 'plugin_version' => WDN_PLUGIN_VERSION,
37
+ 'plugin_build' => 'free',
38
+ 'updates' => WDN_PLUGIN_DIR . '/updates/'
39
+ );
40
+
41
+ /**
42
+ * Проверяет совместимость с Wordpress, php и другими плагинами.
43
+ */
44
+ $compatibility = new Wbcr_FactoryClearfy_Compatibility(array_merge($plugin_info, array(
45
+ 'plugin_already_activate' => defined('WDN_PLUGIN_ACTIVE'),
46
+ 'plugin_as_component' => defined('LOADING_DISABLE_ADMIN_NOTICES_AS_ADDON'),
47
+ 'plugin_dir' => WDN_PLUGIN_DIR,
48
+ 'plugin_base' => WDN_PLUGIN_BASE,
49
+ 'plugin_url' => WDN_PLUGIN_URL,
50
+ 'required_php_version' => '5.3',
51
+ 'required_wp_version' => '4.2.0',
52
+ 'required_clearfy_check_component' => true
53
+ )));
54
+
55
+ /**
56
+ * Если плагин совместим, то он продолжит свою работу, иначе будет остановлен,
57
+ * а пользователь получит предупреждение.
58
+ */
59
+ if( !$compatibility->check() ) {
60
  return;
61
+ }
62
+
63
+ define('WDN_PLUGIN_ACTIVE', true);
64
+
65
+ if( !defined('LOADING_DISABLE_ADMIN_NOTICES_AS_ADDON') ) {
66
+ require_once(WDN_PLUGIN_DIR . '/libs/factory/core/boot.php');
67
+ }
68
+
69
+ require_once(WDN_PLUGIN_DIR . '/includes/class.plugin.php');
70
+
71
+ if( !defined('LOADING_DISABLE_ADMIN_NOTICES_AS_ADDON') ) {
72
+ new WDN_Plugin(__FILE__, $plugin_info);
73
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
components/disable-admin-notices/includes/class.plugin.php CHANGED
@@ -19,7 +19,7 @@
19
 
20
  }
21
  } else {
22
- class WDN_PluginFactory extends Wbcr_Factory406_Plugin {
23
 
24
  }
25
  }
@@ -28,7 +28,7 @@
28
  class WDN_Plugin extends WDN_PluginFactory {
29
 
30
  /**
31
- * @var Wbcr_Factory406_Plugin
32
  */
33
  private static $app;
34
 
@@ -47,11 +47,9 @@
47
  $this->as_addon = isset($data['as_addon']);
48
 
49
  if( $this->as_addon ) {
50
- $plugin_parent = isset($data['plugin_parent'])
51
- ? $data['plugin_parent']
52
- : null;
53
 
54
- if( !($plugin_parent instanceof Wbcr_Factory406_Plugin) ) {
55
  throw new Exception('An invalid instance of the class was passed.');
56
  }
57
 
@@ -64,7 +62,6 @@
64
  parent::__construct($plugin_path, $data);
65
  }
66
 
67
- $this->setTextDomain();
68
  $this->setModules();
69
 
70
  $this->globalScripts();
@@ -72,41 +69,31 @@
72
  if( is_admin() ) {
73
  $this->adminScripts();
74
  }
 
 
75
  }
76
 
77
  /**
78
- * @return Wbcr_Factory406_Plugin
79
  */
80
  public static function app()
81
  {
82
  return self::$app;
83
  }
84
 
85
- // todo: перенести этот медот в фреймворк
86
- protected function setTextDomain()
87
  {
88
- // Localization plugin
89
- //load_plugin_textdomain('disable-admin-notices', false, dirname(WCL_PLUGIN_BASE) . '/languages/');
90
-
91
- $domain = 'disable-admin-notices';
92
- $locale = apply_filters('plugin_locale', is_admin()
93
- ? get_user_locale()
94
- : get_locale(), $domain);
95
- $mofile = $domain . '-' . $locale . '.mo';
96
-
97
- if( !load_textdomain($domain, WDN_PLUGIN_DIR . '/languages/' . $mofile) ) {
98
- load_muplugin_textdomain($domain);
99
- }
100
  }
101
-
102
  protected function setModules()
103
  {
104
  if( !$this->as_addon ) {
105
  self::app()->load(array(
106
- array('libs/factory/bootstrap', 'factory_bootstrap_406', 'admin'),
107
- array('libs/factory/forms', 'factory_forms_407', 'admin'),
108
- array('libs/factory/pages', 'factory_pages_407', 'admin'),
109
- array('libs/factory/clearfy', 'factory_clearfy_203', 'all')
110
  ));
111
  }
112
  }
@@ -124,11 +111,8 @@
124
  {
125
  require(WDN_PLUGIN_DIR . '/admin/options.php');
126
 
127
- if( defined('DOING_AJAX') && DOING_AJAX && isset($_REQUEST['action']) && $_REQUEST['action'] == 'wbcr_dan_hide_notices' ) {
128
  require(WDN_PLUGIN_DIR . '/admin/ajax/hide-notice.php');
129
- }
130
-
131
- if( defined('DOING_AJAX') && DOING_AJAX && isset($_REQUEST['action']) && $_REQUEST['action'] == 'wbcr_dan_restore_notice' ) {
132
  require(WDN_PLUGIN_DIR . '/admin/ajax/restore-notice.php');
133
  }
134
 
19
 
20
  }
21
  } else {
22
+ class WDN_PluginFactory extends Wbcr_Factory409_Plugin {
23
 
24
  }
25
  }
28
  class WDN_Plugin extends WDN_PluginFactory {
29
 
30
  /**
31
+ * @var Wbcr_Factory409_Plugin
32
  */
33
  private static $app;
34
 
47
  $this->as_addon = isset($data['as_addon']);
48
 
49
  if( $this->as_addon ) {
50
+ $plugin_parent = isset($data['plugin_parent']) ? $data['plugin_parent'] : null;
 
 
51
 
52
+ if( !($plugin_parent instanceof Wbcr_Factory409_Plugin) ) {
53
  throw new Exception('An invalid instance of the class was passed.');
54
  }
55
 
62
  parent::__construct($plugin_path, $data);
63
  }
64
 
 
65
  $this->setModules();
66
 
67
  $this->globalScripts();
69
  if( is_admin() ) {
70
  $this->adminScripts();
71
  }
72
+
73
+ add_action('plugins_loaded', array($this, 'pluginsLoaded'));
74
  }
75
 
76
  /**
77
+ * @return Wbcr_Factory409_Plugin
78
  */
79
  public static function app()
80
  {
81
  return self::$app;
82
  }
83
 
84
+ public function pluginsLoaded()
 
85
  {
86
+ self::app()->setTextDomain('disable-admin-notices', WDN_PLUGIN_DIR);
 
 
 
 
 
 
 
 
 
 
 
87
  }
88
+
89
  protected function setModules()
90
  {
91
  if( !$this->as_addon ) {
92
  self::app()->load(array(
93
+ array('libs/factory/bootstrap', 'factory_bootstrap_409', 'admin'),
94
+ array('libs/factory/forms', 'factory_forms_410', 'admin'),
95
+ array('libs/factory/pages', 'factory_pages_410', 'admin'),
96
+ array('libs/factory/clearfy', 'factory_clearfy_206', 'all')
97
  ));
98
  }
99
  }
111
  {
112
  require(WDN_PLUGIN_DIR . '/admin/options.php');
113
 
114
+ if( defined('DOING_AJAX') && DOING_AJAX ) {
115
  require(WDN_PLUGIN_DIR . '/admin/ajax/hide-notice.php');
 
 
 
116
  require(WDN_PLUGIN_DIR . '/admin/ajax/restore-notice.php');
117
  }
118
 
components/disable-admin-notices/includes/classes/class.configurate-notices.php CHANGED
@@ -1,5 +1,5 @@
1
  <?php
2
-
3
  /**
4
  * This class configures hide admin notices
5
  * @author Webcraftic <wordpress.webraftic@gmail.com>
@@ -12,12 +12,13 @@
12
  exit;
13
  }
14
 
15
- class WDN_ConfigHideNotices extends Wbcr_FactoryClearfy203_Configurate {
16
 
17
  public function registerActionsAndFilters()
18
  {
19
  if( is_admin() ) {
20
- $hide_notices_type = $this->getOption('hide_admin_notices');
 
21
  if( $hide_notices_type != 'not_hide' ) {
22
  add_action('admin_print_scripts', array($this, 'catchNotices'), 999);
23
 
@@ -25,79 +26,82 @@
25
  add_action('admin_head', array($this, 'printNotices'), 999);
26
  }
27
 
28
- if( !empty($hide_notices_type) && $this->getOption('show_notices_in_adminbar') ) {
29
  add_action('admin_bar_menu', array($this, 'notificationsPanel'), 999);
30
  add_action('admin_enqueue_scripts', array($this, 'notificationsPanelStyles'));
31
  }
32
-
33
- add_action('admin_head', array($this, 'printNonce'), 999);
34
  }
35
  }
36
  }
37
 
38
  public function printNotices()
39
  {
40
- add_action('admin_notices', array($this, 'noticesCollection'));
41
- }
42
-
43
- public function printNonce()
44
- {
45
- ?>
46
- <!-- Disable admin notices plugin (Clearfy tools) -->
47
- <script>
48
- var wbcr_dan_ajax_restore_nonce = "<?=wp_create_nonce($this->plugin->getPluginName() . '_ajax_restore_notice_nonce')?>";
49
- var wbcr_dan_ajax_hide_notice_nonce = "<?=wp_create_nonce($this->plugin->getPluginName() . '_ajax_hide_notices_nonce')?>";
50
- </script>
51
- <?php
52
  }
53
 
54
 
55
  public function notificationsPanelStyles()
56
  {
 
 
 
 
57
  wp_enqueue_style('wbcr-notification-panel-styles', WDN_PLUGIN_URL . '/admin/assets/css/notifications-panel.css', array(), $this->plugin->getPluginVersion());
58
  wp_enqueue_script('wbcr-notification-panel-scripts', WDN_PLUGIN_URL . '/admin/assets/js/notifications-panel.js', array(), $this->plugin->getPluginVersion());
59
  }
60
 
61
  public function notificationsPanel(&$wp_admin_bar)
62
  {
63
- if( !current_user_can('administrator') ) {
64
  return;
65
  }
66
 
67
- $notifications = $this->getOption('hidden_notices');
 
68
 
69
- if( empty($notifications) ) {
70
- return;
71
- }
72
 
73
- $cont_notifications = sizeof($notifications);
74
-
75
- // Add top menu
76
- $wp_admin_bar->add_menu(array(
77
- 'id' => 'wbcr-han-notify-panel',
78
- 'parent' => 'top-secondary',
79
- 'title' => sprintf(__('Notifications %s', 'disable-admin-notices'), '<span class="wbcr-han-adminbar-counter">' . $cont_notifications . '</span>'),
80
- 'href' => false
81
- ));
82
-
83
- // loop
84
- if( !empty($notifications) ) {
85
- $i = 0;
86
- foreach($notifications as $notice_id => $message) {
87
- $message = $this->getExcerpt(stripslashes($message), 0, 350);
88
- $message .= '<div class="wbcr-han-panel-restore-notify-line"><a href="#" data-notice-id="' . esc_attr($notice_id) . '" class="wbcr-han-panel-restore-notify-link">' . __('Restore notice', 'clearfy') . '</a></div>';
89
-
90
- $wp_admin_bar->add_menu(array(
91
- 'id' => 'wbcr-han-notify-panel-item-' . $i,
92
- 'parent' => 'wbcr-han-notify-panel',
93
- 'title' => $message,
94
- 'href' => false,
95
- 'meta' => array(
96
- 'class' => ''
97
- )
98
- ));
99
-
100
- $i++;
 
 
 
 
 
 
 
 
 
101
  }
102
  }
103
  }
@@ -146,6 +150,7 @@
146
  $(document).on('click', '.wbcr-dan-hide-notice-link', function() {
147
  var self = $(this),
148
  noticeID = self.data('notice-id'),
 
149
  noticeHtml = self.closest('.wbcr-dan-hide-notices').clone(),
150
  contanierEl = self.closest('.wbcr-dan-hide-notices').parent();
151
 
@@ -161,22 +166,35 @@
161
  type: 'post',
162
  dataType: 'json',
163
  data: {
164
- action: 'wbcr_dan_hide_notices',
165
- security: wbcr_dan_ajax_hide_notice_nonce,
166
  notice_id: noticeID,
167
  notice_html: noticeHtml.html()
168
  },
169
- success: function(data, textStatus, jqXHR) {
170
- if( data == 'error' && data.error ) {
171
- alert(data.error);
 
 
 
 
 
 
172
 
173
  contanierEl.show();
174
  return;
175
  }
176
 
177
  contanierEl.remove();
 
 
 
 
 
178
  }
179
  });
 
 
180
  });
181
  });
182
  </script>
@@ -188,15 +206,21 @@
188
 
189
  public function catchNotices()
190
  {
191
- global $wp_filter, $wbcr_dan_plugin_all_notices;
 
 
 
 
 
 
192
 
193
- $hide_notices_type = $this->getOption('hide_admin_notices');
194
 
195
  if( empty($hide_notices_type) || $hide_notices_type == 'only_selected' ) {
196
- $get_hidden_notices = $this->getOption('hidden_notices');
197
 
198
  $content = array();
199
- foreach((array)$wp_filter['admin_notices']->callbacks as $filters) {
200
  foreach($filters as $callback_name => $callback) {
201
 
202
  if( 'usof_hide_admin_notices_start' == $callback_name || 'usof_hide_admin_notices_end' == $callback_name ) {
@@ -208,9 +232,7 @@
208
  // #CLRF-140 fix bug for php7
209
  // when the developers forgot to delete the argument in the function of implementing the notification.
210
  $args = array();
211
- $accepted_args = isset($callback['accepted_args']) && !empty($callback['accepted_args'])
212
- ? $callback['accepted_args']
213
- : 0;
214
 
215
  if( $accepted_args > 0 ) {
216
  for($i = 0; $i < (int)$accepted_args; $i++) {
@@ -226,8 +248,9 @@
226
  continue;
227
  }
228
 
229
- $uniq_id1 = md5($cont);
230
- $uniq_id2 = md5($callback_name);
 
231
 
232
  if( is_array($callback['function']) && sizeof($callback['function']) == 2 ) {
233
  $class = $callback['function'][0];
@@ -264,7 +287,7 @@
264
  }
265
  }
266
 
267
- $hide_link = '<a href="#" data-notice-id="' . $uniq_id1 . '_' . $uniq_id2 . '" class="wbcr-dan-hide-notice-link">[' . __('Hide notification forever', 'disable-admin-notices') . ']</a>';
268
 
269
  $cont = preg_replace('/<(script|style)([^>]+)?>(.*?)<\/(script|style)>/is', '', $cont);
270
  $cont = rtrim(trim($cont));
@@ -280,12 +303,39 @@
280
  $wbcr_dan_plugin_all_notices = $content;
281
  }
282
 
283
- if( is_user_admin() ) {
284
- if( isset($wp_filter['user_admin_notices']) ) {
285
- unset($wp_filter['user_admin_notices']);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
286
  }
287
- } elseif( isset($wp_filter['admin_notices']) ) {
288
- foreach($wp_filter['admin_notices']->callbacks as $f_key => $f) {
289
  foreach($f as $c_name => $clback) {
290
  if( is_array($clback['function']) && sizeof($clback['function']) == 2 ) {
291
  $class = $clback['function'][0];
@@ -297,15 +347,22 @@
297
  }
298
  }
299
 
300
- unset($wp_filter['admin_notices']->callbacks[$f_key][$c_name]);
301
  }
302
  }
303
 
304
  unset($f_key);
305
  unset($f);
306
  }
307
- if( isset($wp_filter['all_admin_notices']) ) {
308
- foreach($wp_filter['all_admin_notices']->callbacks as $f_key => $f) {
 
 
 
 
 
 
 
309
  foreach($f as $c_name => $clback) {
310
  if( is_array($clback['function']) && sizeof($clback['function']) == 2 ) {
311
  $class = $clback['function'][0];
@@ -324,7 +381,7 @@
324
  continue;
325
  }
326
 
327
- unset($wp_filter['all_admin_notices']->callbacks[$f_key][$c_name]);
328
  }
329
  }
330
 
@@ -355,4 +412,26 @@
355
 
356
  return $excerpt;
357
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
358
  }
1
  <?php
2
+
3
  /**
4
  * This class configures hide admin notices
5
  * @author Webcraftic <wordpress.webraftic@gmail.com>
12
  exit;
13
  }
14
 
15
+ class WDN_ConfigHideNotices extends Wbcr_FactoryClearfy206_Configurate {
16
 
17
  public function registerActionsAndFilters()
18
  {
19
  if( is_admin() ) {
20
+ $hide_notices_type = $this->getPopulateOption('hide_admin_notices');
21
+
22
  if( $hide_notices_type != 'not_hide' ) {
23
  add_action('admin_print_scripts', array($this, 'catchNotices'), 999);
24
 
26
  add_action('admin_head', array($this, 'printNotices'), 999);
27
  }
28
 
29
+ if( !empty($hide_notices_type) ) {
30
  add_action('admin_bar_menu', array($this, 'notificationsPanel'), 999);
31
  add_action('admin_enqueue_scripts', array($this, 'notificationsPanelStyles'));
32
  }
 
 
33
  }
34
  }
35
  }
36
 
37
  public function printNotices()
38
  {
39
+ if( is_multisite() && is_network_admin() ) {
40
+ add_action('network_admin_notices', array($this, 'noticesCollection'));
41
+ } else {
42
+ add_action('admin_notices', array($this, 'noticesCollection'));
43
+ }
 
 
 
 
 
 
 
44
  }
45
 
46
 
47
  public function notificationsPanelStyles()
48
  {
49
+ if( !$this->getPopulateOption('show_notices_in_adminbar', false) && current_user_can('manage_network') ) {
50
+ return;
51
+ }
52
+
53
  wp_enqueue_style('wbcr-notification-panel-styles', WDN_PLUGIN_URL . '/admin/assets/css/notifications-panel.css', array(), $this->plugin->getPluginVersion());
54
  wp_enqueue_script('wbcr-notification-panel-scripts', WDN_PLUGIN_URL . '/admin/assets/js/notifications-panel.js', array(), $this->plugin->getPluginVersion());
55
  }
56
 
57
  public function notificationsPanel(&$wp_admin_bar)
58
  {
59
+ if( !$this->getPopulateOption('show_notices_in_adminbar', false) && current_user_can('manage_network') ) {
60
  return;
61
  }
62
 
63
+ if( current_user_can('manage_options') || current_user_can('manage_network') ) {
64
+ $titles = array();
65
 
66
+ $notifications = get_user_meta(get_current_user_id(), WDN_Plugin::app()->getOptionName('hidden_notices'), true);
 
 
67
 
68
+ if( empty($notifications) ) {
69
+ return;
70
+ }
71
+
72
+ $cont_notifications = sizeof($notifications);
73
+
74
+ // Add top menu
75
+ $wp_admin_bar->add_menu(array(
76
+ 'id' => 'wbcr-han-notify-panel',
77
+ 'parent' => 'top-secondary',
78
+ 'title' => sprintf(__('Notifications %s', 'disable-admin-notices'), '<span class="wbcr-han-adminbar-counter">' . $cont_notifications . '</span>'),
79
+ 'href' => false
80
+ ));
81
+
82
+ // loop
83
+ if( !empty($notifications) ) {
84
+ $i = 0;
85
+ foreach($notifications as $notice_id => $message) {
86
+ $message = $this->getExcerpt(stripslashes($message), 0, 350);
87
+ $message .= '<div class="wbcr-han-panel-restore-notify-line">';
88
+ $message .= '<a href="#" data-nonce="' . wp_create_nonce($this->plugin->getPluginName() . '_ajax_restore_notice_nonce');
89
+ $message .= '" data-notice-id="' . esc_attr($notice_id) . '" class="wbcr-han-panel-restore-notify-link">';
90
+ $message .= __('Restore notice', 'clearfy') . (isset($titles[$notice_id]) ? ' (' . $titles[$notice_id] . ')' : '');
91
+ $message .= '</a></div>';
92
+
93
+ $wp_admin_bar->add_menu(array(
94
+ 'id' => 'wbcr-han-notify-panel-item-' . $i,
95
+ 'parent' => 'wbcr-han-notify-panel',
96
+ 'title' => $message,
97
+ 'href' => false,
98
+ 'meta' => array(
99
+ 'class' => ''
100
+ )
101
+ ));
102
+
103
+ $i++;
104
+ }
105
  }
106
  }
107
  }
150
  $(document).on('click', '.wbcr-dan-hide-notice-link', function() {
151
  var self = $(this),
152
  noticeID = self.data('notice-id'),
153
+ nonce = self.data('nonce'),
154
  noticeHtml = self.closest('.wbcr-dan-hide-notices').clone(),
155
  contanierEl = self.closest('.wbcr-dan-hide-notices').parent();
156
 
166
  type: 'post',
167
  dataType: 'json',
168
  data: {
169
+ action: 'wbcr-dan-hide-notices',
170
+ security: nonce,
171
  notice_id: noticeID,
172
  notice_html: noticeHtml.html()
173
  },
174
+ success: function(response) {
175
+ if( !response || !response.success ) {
176
+
177
+ if( response.data.error_message ) {
178
+ console.log(response.data.error_message);
179
+ self.closest('li').show();
180
+ } else {
181
+ console.log(response);
182
+ }
183
 
184
  contanierEl.show();
185
  return;
186
  }
187
 
188
  contanierEl.remove();
189
+ },
190
+ error: function(xhr, ajaxOptions, thrownError) {
191
+ console.log(xhr.status);
192
+ console.log(xhr.responseText);
193
+ console.log(thrownError);
194
  }
195
  });
196
+
197
+ return false;
198
  });
199
  });
200
  </script>
206
 
207
  public function catchNotices()
208
  {
209
+ global $wbcr_dan_plugin_all_notices;
210
+
211
+ try{
212
+ $wp_filter_admin_notices = & $this->getWPFilter('admin_notices');
213
+ }catch (Exception $e){
214
+ $wp_filter_admin_notices = null;
215
+ }
216
 
217
+ $hide_notices_type = $this->getPopulateOption('hide_admin_notices');
218
 
219
  if( empty($hide_notices_type) || $hide_notices_type == 'only_selected' ) {
220
+ $get_hidden_notices = get_user_meta(get_current_user_id(), WDN_Plugin::app()->getOptionName('hidden_notices'), true);
221
 
222
  $content = array();
223
+ foreach((array)$wp_filter_admin_notices as $filters) {
224
  foreach($filters as $callback_name => $callback) {
225
 
226
  if( 'usof_hide_admin_notices_start' == $callback_name || 'usof_hide_admin_notices_end' == $callback_name ) {
232
  // #CLRF-140 fix bug for php7
233
  // when the developers forgot to delete the argument in the function of implementing the notification.
234
  $args = array();
235
+ $accepted_args = isset($callback['accepted_args']) && !empty($callback['accepted_args']) ? $callback['accepted_args'] : 0;
 
 
236
 
237
  if( $accepted_args > 0 ) {
238
  for($i = 0; $i < (int)$accepted_args; $i++) {
248
  continue;
249
  }
250
 
251
+ $salt = is_multisite() ? get_current_blog_id() : '';
252
+ $uniq_id1 = md5($cont . $salt);
253
+ $uniq_id2 = md5($callback_name . $salt);
254
 
255
  if( is_array($callback['function']) && sizeof($callback['function']) == 2 ) {
256
  $class = $callback['function'][0];
287
  }
288
  }
289
 
290
+ $hide_link = '<a href="#" data-nonce="' . wp_create_nonce($this->plugin->getPluginName() . '_ajax_hide_notices_nonce') . '" data-notice-id="' . $uniq_id1 . '_' . $uniq_id2 . '" class="wbcr-dan-hide-notice-link">[' . __('Hide notification forever', 'disable-admin-notices') . ']</a>';
291
 
292
  $cont = preg_replace('/<(script|style)([^>]+)?>(.*?)<\/(script|style)>/is', '', $cont);
293
  $cont = rtrim(trim($cont));
303
  $wbcr_dan_plugin_all_notices = $content;
304
  }
305
 
306
+ try{
307
+ $wp_filter_user_admin_notices = & $this->getWPFilter('user_admin_notices');
308
+ }catch (Exception $e){
309
+ $wp_filter_user_admin_notices = null;
310
+ }
311
+
312
+ try{
313
+ $wp_filter_network_admin_notices = & $this->getWPFilter('network_admin_notices');
314
+ }catch (Exception $e){
315
+ $wp_filter_network_admin_notices = null;
316
+ }
317
+
318
+ if( is_user_admin() && $wp_filter_user_admin_notices !== null) {
319
+ $wp_filter_user_admin_notices = null;
320
+ } else if( is_network_admin() && $wp_filter_network_admin_notices !== null ) {
321
+ //unset($wp_filter['network_admin_notices']);
322
+ foreach($wp_filter_network_admin_notices as $f_key => $f) {
323
+ foreach($f as $c_name => $clback) {
324
+ if( is_array($clback['function']) && sizeof($clback['function']) == 2 ) {
325
+ $class = $clback['function'][0];
326
+ if( is_object($class) ) {
327
+ $class_name = get_class($class);
328
+ if( strpos($class_name, 'Wbcr_FactoryNotices') !== false ) {
329
+ continue;
330
+ }
331
+ }
332
+ }
333
+
334
+ unset($wp_filter_network_admin_notices[$f_key][$c_name]);
335
+ }
336
  }
337
+ } elseif( $wp_filter_admin_notices !== null ) {
338
+ foreach($wp_filter_admin_notices as $f_key => $f) {
339
  foreach($f as $c_name => $clback) {
340
  if( is_array($clback['function']) && sizeof($clback['function']) == 2 ) {
341
  $class = $clback['function'][0];
347
  }
348
  }
349
 
350
+ unset($wp_filter_admin_notices[$f_key][$c_name]);
351
  }
352
  }
353
 
354
  unset($f_key);
355
  unset($f);
356
  }
357
+
358
+ try{
359
+ $wp_filter_all_admin_notices = & $this->getWPfilter('all_admin_notices');
360
+ }catch (Exception $e){
361
+ $wp_filter_all_admin_notices = null;
362
+ }
363
+
364
+ if($wp_filter_all_admin_notices !== null ) {
365
+ foreach($wp_filter_all_admin_notices as $f_key => $f) {
366
  foreach($f as $c_name => $clback) {
367
  if( is_array($clback['function']) && sizeof($clback['function']) == 2 ) {
368
  $class = $clback['function'][0];
381
  continue;
382
  }
383
 
384
+ unset($wp_filter_all_admin_notices[$f_key][$c_name]);
385
  }
386
  }
387
 
412
 
413
  return $excerpt;
414
  }
415
+
416
+ /**
417
+ * Access to global variable $wp_filter in WP core.
418
+ * Migration from WP 4.2 to 4.9
419
+ * @see https://codex.wordpress.org/Version_4.7 WP 4.7 changelog (WP_Hook)
420
+ * @param $key string filter name
421
+ * @return array $wp_filter callbacks array by link
422
+ * @throws Exception if key not exists
423
+ */
424
+ private function &getWPFilter($key)
425
+ {
426
+ global $wp_version, $wp_filter;
427
+
428
+ if(!isset($wp_filter[$key])) {
429
+ throw new Exception('key not exists');
430
+ }
431
+ if(version_compare($wp_version, '4.7.0', '>=')) {
432
+ return $wp_filter[$key]->callbacks;
433
+ }else{
434
+ return $wp_filter[$key];
435
+ }
436
+ }
437
  }
components/disable-admin-notices/languages/disable-admin-notices-nl_BE.po CHANGED
@@ -1,173 +1,173 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: Clearfy\n"
4
- "POT-Creation-Date: 2018-09-06 18:31+0300\n"
5
- "PO-Revision-Date: \n"
6
- "Last-Translator: \n"
7
- "Language-Team: \n"
8
- "Language: nl_BE\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: Poedit 2.1.1\n"
13
- "Plural-Forms: nplurals=2; plural=n != 1;\n"
14
- "X-Generator: Poedit 2.1.1\n"
15
- "X-Poedit-Basepath: ..\n"
16
- "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
17
- "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
18
- "X-Poedit-SourceCharset: UTF-8\n"
19
- "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c\n"
20
- "X-Poedit-SearchPath-0: .\n"
21
- "X-Poedit-SearchPathExcluded-0: libs\n"
22
- "X-Poedit-SearchPathExcluded-1: components\n"
23
- "X-Poedit-SearchPathExcluded-2: cache\n"
24
-
25
- #: admin/ajax/hide-notice.php:19 admin/ajax/restore-notice.php:19
26
- msgid "You don't have enough capability to edit this information."
27
- msgstr "Je hebt niet voldoende mogelijkheden om deze informatie te bewerken."
28
-
29
- #: admin/ajax/hide-notice.php:32 admin/ajax/restore-notice.php:28
30
- msgid "Undefinded notice id."
31
- msgstr "Ongedefinieerde mededeling id."
32
-
33
- #: admin/ajax/hide-notice.php:46 admin/ajax/restore-notice.php:40
34
- msgid "Success"
35
- msgstr "Succes"
36
-
37
- #: admin/boot.php:18 admin/options.php:30 admin/pages/notices.php:33
38
- msgid "Hide admin notices"
39
- msgstr "Verberg admin meldingen"
40
-
41
- #: admin/boot.php:24 admin/options.php:70
42
- msgid "Enable hidden notices in adminbar"
43
- msgstr "Schakel verborgen meldingen in de beheer balk in"
44
-
45
- #: admin/boot.php:46
46
- msgid "Get ultimate plugin free"
47
- msgstr "Krijg ultieme plugin gratis"
48
-
49
- #: admin/options.php:23
50
- msgid "Admin notifications, Update nags"
51
- msgstr "Admin mededelingen, Update meldingen"
52
-
53
- #: admin/options.php:23
54
- msgid ""
55
- "Do you know the situation, when some plugin offers you to update to premium, "
56
- "to collect technical data and shows many annoying notices? You are close these "
57
- "notices every now and again but they newly appears and interfere your work "
58
- "with WordPress. Even worse, some plugin’s authors delete “close” button from "
59
- "notices and they shows in your admin panel forever."
60
- msgstr ""
61
- "Herkent u de situatie, waarin sommige plugins u aanbieden om te updaten naar "
62
- "premium, om technische gegevens te verzamelen en veel vervelende meldingen "
63
- "weergeven? Zo nu en dan sluit u deze meldingen, maar ze verschijnen keer op "
64
- "keer opnieuw en belemmeren uw werk met WordPress. Erger nog, de auteurs van "
65
- "sommige plugins verwijderen de knop \"Sluiten\" uit meldingen en blijven "
66
- "continu zichtbaar in uw beheer venster."
67
-
68
- #: admin/options.php:34
69
- msgid "All notices"
70
- msgstr "Alle mededelingen"
71
-
72
- #: admin/options.php:35
73
- msgid "Hide all notices globally."
74
- msgstr "Alle meldingen globaal verbergen."
75
-
76
- #: admin/options.php:39
77
- msgid "Only selected"
78
- msgstr "Enkel geselecteerd"
79
-
80
- #: admin/options.php:40
81
- msgid ""
82
- "Hide selected notices only. You will see the link \"Hide notification forever"
83
- "\" in each notice. Push it and they will not bother you anymore."
84
- msgstr ""
85
- "Slechts bepaalde meldingen verbergen. U ziet in elke melding de link \"Verberg "
86
- "melding voor altijd\". Klik erop en ze zullen je niet meer lastig vallen."
87
-
88
- #: admin/options.php:44
89
- msgid "Don't nide"
90
- msgstr "Niet verbergen"
91
-
92
- #: admin/options.php:45
93
- msgid ""
94
- "Do not hide notices and do not show “Hide notification forever” link for admin."
95
- msgstr ""
96
- "Meldingen niet verbergen en laat de link 'Verberg melding voor altijd' niet "
97
- "zien voor beheerder."
98
-
99
- #: admin/options.php:49
100
- msgid ""
101
- "Some plugins shows notifications about premium version, data collecting or "
102
- "promote their services. Even if you push close button (that sometimes are "
103
- "impossible), notices are shows again in some time. This option allows you to "
104
- "control notices. Hide them all or each individually. Some plugins shows "
105
- "notifications about premium version, data collecting or promote their "
106
- "services. Even if you push close button (that sometimes are impossible), "
107
- "notices are shows again in some time. This option allows you to control "
108
- "notices. Hide them all or each individually."
109
- msgstr ""
110
- "Sommige plugins tonen meldingen over de premium versie, het verzamelen van "
111
- "gegevens of het promoten van hun diensten. Zelfs als je op afsluiten klikt "
112
- "(wat soms niet eens mogelijk is), worden mededelingen binnen afzienbare tijd "
113
- "opnieuw getoond. Met deze optie kunt u mededelingen beheren. Verberg ze "
114
- "allemaal of elk afzonderlijk."
115
-
116
- #: admin/options.php:72
117
- msgid ""
118
- "By default, the plugin hides all notices, which you specified. If you enable "
119
- "this option, the plugin will collect all hidden notices and show them into the "
120
- "top admin toolbar. It will not disturb you but will allow to look notices at "
121
- "your convenience."
122
- msgstr ""
123
- "Standaard verbergt de plugin alle kennisgevingen die u hebt opgegeven. Als u "
124
- "deze optie inschakelt, verzamelt de plugin alle verborgen mededelingen en "
125
- "toont deze in de bovenste beheer werkbalk. Het zal niet storend zijn, maar zal "
126
- "je toelaten om aankondigingen op je gemak te bekijken."
127
-
128
- #: admin/options.php:136
129
- msgid "Push reset hidden notices if you need to show hidden notices again."
130
- msgstr ""
131
- "Druk op reset verborgen mededelingen als u verborgen mededelingen opnieuw wilt "
132
- "weergeven."
133
-
134
- #: admin/options.php:145
135
- #, php-format
136
- msgid "Reset hidden notices (%s)"
137
- msgstr "Reset verborgen mededelingen (%s)"
138
-
139
- #: admin/options.php:147 admin/pages/notices.php:85
140
- msgid "Hidden notices are successfully reset, now you can see them again!"
141
- msgstr "Verborgen meldingen zijn succesvol gereset, nu kun je ze opnieuw zien!"
142
-
143
- #: admin/pages/notices.php:49
144
- msgid "Notices"
145
- msgstr "Mededelingen"
146
-
147
- #: admin/pages/notices.php:50
148
- msgid "General"
149
- msgstr "Algemeen"
150
-
151
- #: disable-admin-notices.php:23
152
- msgid ""
153
- "We found that you have the \"Clearfy - disable unused features\" plugin "
154
- "installed, this plugin already has disable comments functions, so you can "
155
- "deactivate plugin \"Disable admin notices\"!"
156
- msgstr ""
157
-
158
- #: disable-admin-notices.php:80
159
- msgid "Webcraftic disable admin notices"
160
- msgstr "Webcraftic uitschakelen admin mededelingen"
161
-
162
- #: includes/classes/class.configurate-notices.php:79
163
- #, php-format
164
- msgid "Notifications %s"
165
- msgstr "Meldingen %s"
166
-
167
- #: includes/classes/class.configurate-notices.php:88
168
- msgid "Restore notice"
169
- msgstr "Herstel mededelingen"
170
-
171
- #: includes/classes/class.configurate-notices.php:267
172
- msgid "Hide notification forever"
173
  msgstr "Verberg melding voor altijd"
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: Clearfy\n"
4
+ "POT-Creation-Date: 2018-09-06 18:31+0300\n"
5
+ "PO-Revision-Date: \n"
6
+ "Last-Translator: \n"
7
+ "Language-Team: \n"
8
+ "Language: nl_BE\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: Poedit 2.1.1\n"
13
+ "Plural-Forms: nplurals=2; plural=n != 1;\n"
14
+ "X-Generator: Poedit 2.1.1\n"
15
+ "X-Poedit-Basepath: ..\n"
16
+ "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
17
+ "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
18
+ "X-Poedit-SourceCharset: UTF-8\n"
19
+ "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c\n"
20
+ "X-Poedit-SearchPath-0: .\n"
21
+ "X-Poedit-SearchPathExcluded-0: libs\n"
22
+ "X-Poedit-SearchPathExcluded-1: components\n"
23
+ "X-Poedit-SearchPathExcluded-2: cache\n"
24
+
25
+ #: admin/ajax/hide-notice.php:19 admin/ajax/restore-notice.php:19
26
+ msgid "You don't have enough capability to edit this information."
27
+ msgstr "Je hebt niet voldoende mogelijkheden om deze informatie te bewerken."
28
+
29
+ #: admin/ajax/hide-notice.php:32 admin/ajax/restore-notice.php:28
30
+ msgid "Undefinded notice id."
31
+ msgstr "Ongedefinieerde mededeling id."
32
+
33
+ #: admin/ajax/hide-notice.php:46 admin/ajax/restore-notice.php:40
34
+ msgid "Success"
35
+ msgstr "Succes"
36
+
37
+ #: admin/boot.php:18 admin/options.php:30 admin/pages/notices.php:33
38
+ msgid "Hide admin notices"
39
+ msgstr "Verberg admin meldingen"
40
+
41
+ #: admin/boot.php:24 admin/options.php:70
42
+ msgid "Enable hidden notices in adminbar"
43
+ msgstr "Schakel verborgen meldingen in de beheer balk in"
44
+
45
+ #: admin/boot.php:46
46
+ msgid "Get ultimate plugin free"
47
+ msgstr "Krijg ultieme plugin gratis"
48
+
49
+ #: admin/options.php:23
50
+ msgid "Admin notifications, Update nags"
51
+ msgstr "Admin mededelingen, Update meldingen"
52
+
53
+ #: admin/options.php:23
54
+ msgid ""
55
+ "Do you know the situation, when some plugin offers you to update to premium, "
56
+ "to collect technical data and shows many annoying notices? You are close these "
57
+ "notices every now and again but they newly appears and interfere your work "
58
+ "with WordPress. Even worse, some plugin’s authors delete “close” button from "
59
+ "notices and they shows in your admin panel forever."
60
+ msgstr ""
61
+ "Herkent u de situatie, waarin sommige plugins u aanbieden om te updaten naar "
62
+ "premium, om technische gegevens te verzamelen en veel vervelende meldingen "
63
+ "weergeven? Zo nu en dan sluit u deze meldingen, maar ze verschijnen keer op "
64
+ "keer opnieuw en belemmeren uw werk met WordPress. Erger nog, de auteurs van "
65
+ "sommige plugins verwijderen de knop \"Sluiten\" uit meldingen en blijven "
66
+ "continu zichtbaar in uw beheer venster."
67
+
68
+ #: admin/options.php:34
69
+ msgid "All notices"
70
+ msgstr "Alle mededelingen"
71
+
72
+ #: admin/options.php:35
73
+ msgid "Hide all notices globally."
74
+ msgstr "Alle meldingen globaal verbergen."
75
+
76
+ #: admin/options.php:39
77
+ msgid "Only selected"
78
+ msgstr "Enkel geselecteerd"
79
+
80
+ #: admin/options.php:40
81
+ msgid ""
82
+ "Hide selected notices only. You will see the link \"Hide notification forever"
83
+ "\" in each notice. Push it and they will not bother you anymore."
84
+ msgstr ""
85
+ "Slechts bepaalde meldingen verbergen. U ziet in elke melding de link \"Verberg "
86
+ "melding voor altijd\". Klik erop en ze zullen je niet meer lastig vallen."
87
+
88
+ #: admin/options.php:44
89
+ msgid "Don't nide"
90
+ msgstr "Niet verbergen"
91
+
92
+ #: admin/options.php:45
93
+ msgid ""
94
+ "Do not hide notices and do not show “Hide notification forever” link for admin."
95
+ msgstr ""
96
+ "Meldingen niet verbergen en laat de link 'Verberg melding voor altijd' niet "
97
+ "zien voor beheerder."
98
+
99
+ #: admin/options.php:49
100
+ msgid ""
101
+ "Some plugins shows notifications about premium version, data collecting or "
102
+ "promote their services. Even if you push close button (that sometimes are "
103
+ "impossible), notices are shows again in some time. This option allows you to "
104
+ "control notices. Hide them all or each individually. Some plugins shows "
105
+ "notifications about premium version, data collecting or promote their "
106
+ "services. Even if you push close button (that sometimes are impossible), "
107
+ "notices are shows again in some time. This option allows you to control "
108
+ "notices. Hide them all or each individually."
109
+ msgstr ""
110
+ "Sommige plugins tonen meldingen over de premium versie, het verzamelen van "
111
+ "gegevens of het promoten van hun diensten. Zelfs als je op afsluiten klikt "
112
+ "(wat soms niet eens mogelijk is), worden mededelingen binnen afzienbare tijd "
113
+ "opnieuw getoond. Met deze optie kunt u mededelingen beheren. Verberg ze "
114
+ "allemaal of elk afzonderlijk."
115
+
116
+ #: admin/options.php:72
117
+ msgid ""
118
+ "By default, the plugin hides all notices, which you specified. If you enable "
119
+ "this option, the plugin will collect all hidden notices and show them into the "
120
+ "top admin toolbar. It will not disturb you but will allow to look notices at "
121
+ "your convenience."
122
+ msgstr ""
123
+ "Standaard verbergt de plugin alle kennisgevingen die u hebt opgegeven. Als u "
124
+ "deze optie inschakelt, verzamelt de plugin alle verborgen mededelingen en "
125
+ "toont deze in de bovenste beheer werkbalk. Het zal niet storend zijn, maar zal "
126
+ "je toelaten om aankondigingen op je gemak te bekijken."
127
+
128
+ #: admin/options.php:136
129
+ msgid "Push reset hidden notices if you need to show hidden notices again."
130
+ msgstr ""
131
+ "Druk op reset verborgen mededelingen als u verborgen mededelingen opnieuw wilt "
132
+ "weergeven."
133
+
134
+ #: admin/options.php:145
135
+ #, php-format
136
+ msgid "Reset hidden notices (%s)"
137
+ msgstr "Reset verborgen mededelingen (%s)"
138
+
139
+ #: admin/options.php:147 admin/pages/notices.php:85
140
+ msgid "Hidden notices are successfully reset, now you can see them again!"
141
+ msgstr "Verborgen meldingen zijn succesvol gereset, nu kun je ze opnieuw zien!"
142
+
143
+ #: admin/pages/notices.php:49
144
+ msgid "Notices"
145
+ msgstr "Mededelingen"
146
+
147
+ #: admin/pages/notices.php:50
148
+ msgid "General"
149
+ msgstr "Algemeen"
150
+
151
+ #: disable-admin-notices.php:23
152
+ msgid ""
153
+ "We found that you have the \"Clearfy - disable unused features\" plugin "
154
+ "installed, this plugin already has disable comments functions, so you can "
155
+ "deactivate plugin \"Disable admin notices\"!"
156
+ msgstr ""
157
+
158
+ #: disable-admin-notices.php:80
159
+ msgid "Webcraftic disable admin notices"
160
+ msgstr "Webcraftic uitschakelen admin mededelingen"
161
+
162
+ #: includes/classes/class.configurate-notices.php:79
163
+ #, php-format
164
+ msgid "Notifications %s"
165
+ msgstr "Meldingen %s"
166
+
167
+ #: includes/classes/class.configurate-notices.php:88
168
+ msgid "Restore notice"
169
+ msgstr "Herstel mededelingen"
170
+
171
+ #: includes/classes/class.configurate-notices.php:267
172
+ msgid "Hide notification forever"
173
  msgstr "Verberg melding voor altijd"
components/disable-admin-notices/languages/disable-admin-notices-pt_BR.po CHANGED
@@ -1,181 +1,181 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: clearfy\n"
4
- "POT-Creation-Date: 2018-09-06 18:31+0300\n"
5
- "PO-Revision-Date: 2018-09-06 18:31+0300\n"
6
- "Last-Translator: alex.kovalevv@gmail.com <alex.kovalevv@gmail.com>\n"
7
- "Language-Team: Alex Kovalev <alex.kovalevv@gmail.com>\n"
8
- "Language: pt_BR\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: Poedit 2.1.1\n"
13
- "X-Poedit-Basepath: ..\n"
14
- "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
15
- "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
16
- "X-Poedit-SourceCharset: UTF-8\n"
17
- "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c\n"
18
- "X-Poedit-SearchPath-0: .\n"
19
- "X-Poedit-SearchPathExcluded-0: libs\n"
20
- "X-Poedit-SearchPathExcluded-1: components\n"
21
- "X-Poedit-SearchPathExcluded-2: cache\n"
22
-
23
- #: admin/ajax/hide-notice.php:19 admin/ajax/restore-notice.php:19
24
- msgid "You don't have enough capability to edit this information."
25
- msgstr "Você não tem capacidade suficiente para editar essas informações."
26
-
27
- #: admin/ajax/hide-notice.php:32 admin/ajax/restore-notice.php:28
28
- msgid "Undefinded notice id."
29
- msgstr "ID de aviso não identificada."
30
-
31
- #: admin/ajax/hide-notice.php:46 admin/ajax/restore-notice.php:40
32
- msgid "Success"
33
- msgstr "Sucesso"
34
-
35
- #: admin/boot.php:18 admin/options.php:30 admin/pages/notices.php:33
36
- msgid "Hide admin notices"
37
- msgstr "Ocultar avisos de administrador"
38
-
39
- #: admin/boot.php:24 admin/options.php:70
40
- msgid "Enable hidden notices in adminbar"
41
- msgstr "Ativar avisos ocultos no adminbar"
42
-
43
- #: admin/boot.php:46
44
- msgid "Get ultimate plugin free"
45
- msgstr "Obtenha o melhor plugin grátis"
46
-
47
- #: admin/options.php:23
48
- msgid "Admin notifications, Update nags"
49
- msgstr "Notificações de administrador, Atualizações nags"
50
-
51
- #: admin/options.php:23
52
- msgid ""
53
- "Do you know the situation, when some plugin offers you to update to premium, "
54
- "to collect technical data and shows many annoying notices? You are close "
55
- "these notices every now and again but they newly appears and interfere your "
56
- "work with WordPress. Even worse, some plugin’s authors delete “close” button "
57
- "from notices and they shows in your admin panel forever."
58
- msgstr ""
59
- "Você conhece a situação, quando algum plugin lhe oferece para atualizar para "
60
- "premium, para coletar dados técnicos e mostra muitos avisos irritantes? Você "
61
- "está próximo desses avisos de vez em quando, mas eles aparecem recentemente "
62
- "e interferem no seu trabalho com o WordPress. Pior ainda, alguns autores de "
63
- "plug-in excluem o botão “fechar” dos avisos e eles são exibidos no seu "
64
- "painel de administração para sempre."
65
-
66
- #: admin/options.php:34
67
- msgid "All notices"
68
- msgstr "Todos os avisos"
69
-
70
- #: admin/options.php:35
71
- msgid "Hide all notices globally."
72
- msgstr "Esconda todos os avisos globalmente."
73
-
74
- #: admin/options.php:39
75
- msgid "Only selected"
76
- msgstr "Apenas selecionado"
77
-
78
- #: admin/options.php:40
79
- msgid ""
80
- "Hide selected notices only. You will see the link \"Hide notification forever"
81
- "\" in each notice. Push it and they will not bother you anymore."
82
- msgstr ""
83
- "Ocultar apenas avisos selecionados. Você verá o link \"Ocultar notificação "
84
- "para sempre\" em cada aviso. Empurre-o e eles não vão incomodá-lo mais."
85
-
86
- #: admin/options.php:44
87
- msgid "Don't nide"
88
- msgstr "Não nide"
89
-
90
- #: admin/options.php:45
91
- msgid ""
92
- "Do not hide notices and do not show “Hide notification forever” link for "
93
- "admin."
94
- msgstr ""
95
- "Não oculte avisos e não mostre o link \"Ocultar notificação para sempre\" "
96
- "para o administrador."
97
-
98
- #: admin/options.php:49
99
- msgid ""
100
- "Some plugins shows notifications about premium version, data collecting or "
101
- "promote their services. Even if you push close button (that sometimes are "
102
- "impossible), notices are shows again in some time. This option allows you to "
103
- "control notices. Hide them all or each individually. Some plugins shows "
104
- "notifications about premium version, data collecting or promote their "
105
- "services. Even if you push close button (that sometimes are impossible), "
106
- "notices are shows again in some time. This option allows you to control "
107
- "notices. Hide them all or each individually."
108
- msgstr ""
109
- "Alguns plugins mostram notificações sobre a versão premium, coleta de dados "
110
- "ou promover seus serviços. Mesmo se você apertar o botão fechar (que às "
111
- "vezes são impossíveis), os avisos são exibidos novamente em algum momento. "
112
- "Esta opção permite controlar avisos. Esconda-os todos ou cada um "
113
- "individualmente. Alguns plugins mostram notificações sobre a versão premium, "
114
- "coleta de dados ou promover seus serviços. Mesmo se você apertar o botão "
115
- "fechar (que às vezes são impossíveis), os avisos são exibidos novamente em "
116
- "algum momento. Esta opção permite controlar avisos. Esconda-os todos ou cada "
117
- "um individualmente."
118
-
119
- #: admin/options.php:72
120
- msgid ""
121
- "By default, the plugin hides all notices, which you specified. If you enable "
122
- "this option, the plugin will collect all hidden notices and show them into "
123
- "the top admin toolbar. It will not disturb you but will allow to look "
124
- "notices at your convenience."
125
- msgstr ""
126
- "Por padrão, o plug-in oculta todos os avisos especificados. Se você ativar "
127
- "essa opção, o plug-in coletará todos os avisos ocultos e os mostrará na "
128
- "barra de ferramentas superior do administrador. Não o incomodará, mas "
129
- "permitirá que você veja avisos de acordo com sua conveniência."
130
-
131
- #: admin/options.php:136
132
- msgid "Push reset hidden notices if you need to show hidden notices again."
133
- msgstr ""
134
- "Envie os avisos ocultos redefinidos se precisar mostrar avisos ocultos "
135
- "novamente."
136
-
137
- #: admin/options.php:145
138
- #, php-format
139
- msgid "Reset hidden notices (%s)"
140
- msgstr "Redefinir avisos ocultos ( %s )"
141
-
142
- #: admin/options.php:147 admin/pages/notices.php:85
143
- msgid "Hidden notices are successfully reset, now you can see them again!"
144
- msgstr ""
145
- "Avisos ocultos são redefinidos com sucesso, agora você pode vê-los novamente!"
146
-
147
- #: admin/pages/notices.php:49
148
- msgid "Notices"
149
- msgstr "Avisos"
150
-
151
- #: admin/pages/notices.php:50
152
- msgid "General"
153
- msgstr "Geral"
154
-
155
- #: disable-admin-notices.php:23
156
- msgid ""
157
- "We found that you have the \"Clearfy - disable unused features\" plugin "
158
- "installed, this plugin already has disable comments functions, so you can "
159
- "deactivate plugin \"Disable admin notices\"!"
160
- msgstr ""
161
- "Descobrimos que você tem o plug-in \"Clearfy - desativar recursos não "
162
- "utilizados \" instalado, este plugin já tem funções de desabilitar "
163
- "comentários, então você pode desativar o plugin \"Desativar avisos do "
164
- "administrador \"!"
165
-
166
- #: disable-admin-notices.php:80
167
- msgid "Webcraftic disable admin notices"
168
- msgstr "Webcraftic desabilitar avisos de administração"
169
-
170
- #: includes/classes/class.configurate-notices.php:79
171
- #, php-format
172
- msgid "Notifications %s"
173
- msgstr "Notificações %s"
174
-
175
- #: includes/classes/class.configurate-notices.php:88
176
- msgid "Restore notice"
177
- msgstr "Aviso de restauração"
178
-
179
- #: includes/classes/class.configurate-notices.php:267
180
- msgid "Hide notification forever"
181
  msgstr "Ocultar a notificação para sempre"
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: clearfy\n"
4
+ "POT-Creation-Date: 2018-09-06 18:31+0300\n"
5
+ "PO-Revision-Date: 2018-09-06 18:31+0300\n"
6
+ "Last-Translator: alex.kovalevv@gmail.com <alex.kovalevv@gmail.com>\n"
7
+ "Language-Team: Alex Kovalev <alex.kovalevv@gmail.com>\n"
8
+ "Language: pt_BR\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: Poedit 2.1.1\n"
13
+ "X-Poedit-Basepath: ..\n"
14
+ "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
15
+ "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
16
+ "X-Poedit-SourceCharset: UTF-8\n"
17
+ "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c\n"
18
+ "X-Poedit-SearchPath-0: .\n"
19
+ "X-Poedit-SearchPathExcluded-0: libs\n"
20
+ "X-Poedit-SearchPathExcluded-1: components\n"
21
+ "X-Poedit-SearchPathExcluded-2: cache\n"
22
+
23
+ #: admin/ajax/hide-notice.php:19 admin/ajax/restore-notice.php:19
24
+ msgid "You don't have enough capability to edit this information."
25
+ msgstr "Você não tem capacidade suficiente para editar essas informações."
26
+
27
+ #: admin/ajax/hide-notice.php:32 admin/ajax/restore-notice.php:28
28
+ msgid "Undefinded notice id."
29
+ msgstr "ID de aviso não identificada."
30
+
31
+ #: admin/ajax/hide-notice.php:46 admin/ajax/restore-notice.php:40
32
+ msgid "Success"
33
+ msgstr "Sucesso"
34
+
35
+ #: admin/boot.php:18 admin/options.php:30 admin/pages/notices.php:33
36
+ msgid "Hide admin notices"
37
+ msgstr "Ocultar avisos de administrador"
38
+
39
+ #: admin/boot.php:24 admin/options.php:70
40
+ msgid "Enable hidden notices in adminbar"
41
+ msgstr "Ativar avisos ocultos no adminbar"
42
+
43
+ #: admin/boot.php:46
44
+ msgid "Get ultimate plugin free"
45
+ msgstr "Obtenha o melhor plugin grátis"
46
+
47
+ #: admin/options.php:23
48
+ msgid "Admin notifications, Update nags"
49
+ msgstr "Notificações de administrador, Atualizações nags"
50
+
51
+ #: admin/options.php:23
52
+ msgid ""
53
+ "Do you know the situation, when some plugin offers you to update to premium, "
54
+ "to collect technical data and shows many annoying notices? You are close "
55
+ "these notices every now and again but they newly appears and interfere your "
56
+ "work with WordPress. Even worse, some plugin’s authors delete “close” button "
57
+ "from notices and they shows in your admin panel forever."
58
+ msgstr ""
59
+ "Você conhece a situação, quando algum plugin lhe oferece para atualizar para "
60
+ "premium, para coletar dados técnicos e mostra muitos avisos irritantes? Você "
61
+ "está próximo desses avisos de vez em quando, mas eles aparecem recentemente "
62
+ "e interferem no seu trabalho com o WordPress. Pior ainda, alguns autores de "
63
+ "plug-in excluem o botão “fechar” dos avisos e eles são exibidos no seu "
64
+ "painel de administração para sempre."
65
+
66
+ #: admin/options.php:34
67
+ msgid "All notices"
68
+ msgstr "Todos os avisos"
69
+
70
+ #: admin/options.php:35
71
+ msgid "Hide all notices globally."
72
+ msgstr "Esconda todos os avisos globalmente."
73
+
74
+ #: admin/options.php:39
75
+ msgid "Only selected"
76
+ msgstr "Apenas selecionado"
77
+
78
+ #: admin/options.php:40
79
+ msgid ""
80
+ "Hide selected notices only. You will see the link \"Hide notification forever"
81
+ "\" in each notice. Push it and they will not bother you anymore."
82
+ msgstr ""
83
+ "Ocultar apenas avisos selecionados. Você verá o link \"Ocultar notificação "
84
+ "para sempre\" em cada aviso. Empurre-o e eles não vão incomodá-lo mais."
85
+
86
+ #: admin/options.php:44
87
+ msgid "Don't nide"
88
+ msgstr "Não nide"
89
+
90
+ #: admin/options.php:45
91
+ msgid ""
92
+ "Do not hide notices and do not show “Hide notification forever” link for "
93
+ "admin."
94
+ msgstr ""
95
+ "Não oculte avisos e não mostre o link \"Ocultar notificação para sempre\" "
96
+ "para o administrador."
97
+
98
+ #: admin/options.php:49
99
+ msgid ""
100
+ "Some plugins shows notifications about premium version, data collecting or "
101
+ "promote their services. Even if you push close button (that sometimes are "
102
+ "impossible), notices are shows again in some time. This option allows you to "
103
+ "control notices. Hide them all or each individually. Some plugins shows "
104
+ "notifications about premium version, data collecting or promote their "
105
+ "services. Even if you push close button (that sometimes are impossible), "
106
+ "notices are shows again in some time. This option allows you to control "
107
+ "notices. Hide them all or each individually."
108
+ msgstr ""
109
+ "Alguns plugins mostram notificações sobre a versão premium, coleta de dados "
110
+ "ou promover seus serviços. Mesmo se você apertar o botão fechar (que às "
111
+ "vezes são impossíveis), os avisos são exibidos novamente em algum momento. "
112
+ "Esta opção permite controlar avisos. Esconda-os todos ou cada um "
113
+ "individualmente. Alguns plugins mostram notificações sobre a versão premium, "
114
+ "coleta de dados ou promover seus serviços. Mesmo se você apertar o botão "
115
+ "fechar (que às vezes são impossíveis), os avisos são exibidos novamente em "
116
+ "algum momento. Esta opção permite controlar avisos. Esconda-os todos ou cada "
117
+ "um individualmente."
118
+
119
+ #: admin/options.php:72
120
+ msgid ""
121
+ "By default, the plugin hides all notices, which you specified. If you enable "
122
+ "this option, the plugin will collect all hidden notices and show them into "
123
+ "the top admin toolbar. It will not disturb you but will allow to look "
124
+ "notices at your convenience."
125
+ msgstr ""
126
+ "Por padrão, o plug-in oculta todos os avisos especificados. Se você ativar "
127
+ "essa opção, o plug-in coletará todos os avisos ocultos e os mostrará na "
128
+ "barra de ferramentas superior do administrador. Não o incomodará, mas "
129
+ "permitirá que você veja avisos de acordo com sua conveniência."
130
+
131
+ #: admin/options.php:136
132
+ msgid "Push reset hidden notices if you need to show hidden notices again."
133
+ msgstr ""
134
+ "Envie os avisos ocultos redefinidos se precisar mostrar avisos ocultos "
135
+ "novamente."
136
+
137
+ #: admin/options.php:145
138
+ #, php-format
139
+ msgid "Reset hidden notices (%s)"
140
+ msgstr "Redefinir avisos ocultos ( %s )"
141
+
142
+ #: admin/options.php:147 admin/pages/notices.php:85
143
+ msgid "Hidden notices are successfully reset, now you can see them again!"
144
+ msgstr ""
145
+ "Avisos ocultos são redefinidos com sucesso, agora você pode vê-los novamente!"
146
+
147
+ #: admin/pages/notices.php:49
148
+ msgid "Notices"
149
+ msgstr "Avisos"
150
+
151
+ #: admin/pages/notices.php:50
152
+ msgid "General"
153
+ msgstr "Geral"
154
+
155
+ #: disable-admin-notices.php:23
156
+ msgid ""
157
+ "We found that you have the \"Clearfy - disable unused features\" plugin "
158
+ "installed, this plugin already has disable comments functions, so you can "
159
+ "deactivate plugin \"Disable admin notices\"!"
160
+ msgstr ""
161
+ "Descobrimos que você tem o plug-in \"Clearfy - desativar recursos não "
162
+ "utilizados \" instalado, este plugin já tem funções de desabilitar "
163
+ "comentários, então você pode desativar o plugin \"Desativar avisos do "
164
+ "administrador \"!"
165
+
166
+ #: disable-admin-notices.php:80
167
+ msgid "Webcraftic disable admin notices"
168
+ msgstr "Webcraftic desabilitar avisos de administração"
169
+
170
+ #: includes/classes/class.configurate-notices.php:79
171
+ #, php-format
172
+ msgid "Notifications %s"
173
+ msgstr "Notificações %s"
174
+
175
+ #: includes/classes/class.configurate-notices.php:88
176
+ msgid "Restore notice"
177
+ msgstr "Aviso de restauração"
178
+
179
+ #: includes/classes/class.configurate-notices.php:267
180
+ msgid "Hide notification forever"
181
  msgstr "Ocultar a notificação para sempre"
components/disable-admin-notices/uninstall.php CHANGED
@@ -8,6 +8,17 @@
8
  // remove plugin options
9
  global $wpdb;
10
 
11
- $wpdb->query("DELETE FROM {$wpdb->prefix}options WHERE option_name LIKE 'wbcr_dan_%';");
 
 
 
 
 
 
 
 
 
 
 
12
 
13
 
8
  // remove plugin options
9
  global $wpdb;
10
 
11
+ if( !function_exists('is_plugin_active_for_network') ) {
12
+ require_once(ABSPATH . 'wp-admin/includes/plugin.php');
13
+ }
14
+
15
+ if( is_multisite() ) {
16
+ $wpdb->query("DELETE FROM {$wpdb->sitemeta} WHERE meta_key LIKE 'wbcr_dan_%';");
17
+ }
18
+
19
+ $wpdb->query("DELETE FROM {$wpdb->options} WHERE option_name LIKE 'wbcr_dan_%';");
20
+ $wpdb->query("DELETE FROM {$wpdb->usermeta} WHERE meta_key LIKE 'wbcr_dan_%'");
21
+
22
+
23
 
24
 
components/disable-admin-notices/updates/010007.php ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php #comp-page builds: premium
2
+
3
+ /**
4
+ * Updates for altering the table used to store statistics data.
5
+ * Adds new columns and renames existing ones in order to add support for the new social buttons.
6
+ */
7
+ class WDNUpdate010007 extends Wbcr_Factory409_Update {
8
+
9
+ public function install()
10
+ {
11
+ global $wpdb;
12
+
13
+ $hidden_notices = $this->plugin->getPopulateOption('hidden_notices');
14
+
15
+ $all_users = $wpdb->get_col("SELECT ID FROM {$wpdb->users}");
16
+
17
+ if( !empty($all_users) && !empty($hidden_notices) ) {
18
+ foreach($all_users as $user_id) {
19
+ update_user_meta($user_id, $this->plugin->getOptionName('hidden_notices'), $hidden_notices);
20
+ }
21
+ }
22
+ }
23
+ }
components/ga-cache/admin/activation.php CHANGED
@@ -4,7 +4,7 @@
4
  * Activator for the GA cache
5
  * @author Webcraftic <wordpress.webraftic@gmail.com>
6
  * @copyright (c) 09.09.2017, Webcraftic
7
- * @see Factory406_Activator
8
  * @version 1.0
9
  */
10
 
@@ -13,7 +13,7 @@
13
  exit;
14
  }
15
 
16
- class WGA_Activation extends Wbcr_Factory406_Activator {
17
 
18
  /**
19
  * Runs activation actions.
@@ -26,13 +26,13 @@
26
  // Caching google analytics on a schedule
27
  // -------------
28
 
29
- $ga_cache = WGA_Plugin::app()->getOption('ga_cache');
30
 
31
  if( $ga_cache ) {
32
  wp_clear_scheduled_hook('wbcr_clearfy_update_local_ga');
33
 
34
  if( !wp_next_scheduled('wbcr_clearfy_update_local_ga') ) {
35
- $ga_caos_remove_wp_cron = WGA_Plugin::app()->getOption('ga_caos_remove_wp_cron');
36
 
37
  if( !$ga_caos_remove_wp_cron ) {
38
  wp_schedule_event(time(), 'daily', 'wbcr_clearfy_update_local_ga');
@@ -48,7 +48,7 @@
48
  */
49
  public function deactivate()
50
  {
51
- //WGA_Plugin::app()->updateOption('ga_cache', 0);
52
 
53
  if( wp_next_scheduled('wbcr_clearfy_update_local_ga') ) {
54
  wp_clear_scheduled_hook('wbcr_clearfy_update_local_ga');
4
  * Activator for the GA cache
5
  * @author Webcraftic <wordpress.webraftic@gmail.com>
6
  * @copyright (c) 09.09.2017, Webcraftic
7
+ * @see Factory409_Activator
8
  * @version 1.0
9
  */
10
 
13
  exit;
14
  }
15
 
16
+ class WGA_Activation extends Wbcr_Factory409_Activator {
17
 
18
  /**
19
  * Runs activation actions.
26
  // Caching google analytics on a schedule
27
  // -------------
28
 
29
+ $ga_cache = WGA_Plugin::app()->getPopulateOption('ga_cache');
30
 
31
  if( $ga_cache ) {
32
  wp_clear_scheduled_hook('wbcr_clearfy_update_local_ga');
33
 
34
  if( !wp_next_scheduled('wbcr_clearfy_update_local_ga') ) {
35
+ $ga_caos_remove_wp_cron = WGA_Plugin::app()->getPopulateOption('ga_caos_remove_wp_cron');
36
 
37
  if( !$ga_caos_remove_wp_cron ) {
38
  wp_schedule_event(time(), 'daily', 'wbcr_clearfy_update_local_ga');
48
  */
49
  public function deactivate()
50
  {
51
+ //WGA_Plugin::app()->updatePopulateOption('ga_cache', 0);
52
 
53
  if( wp_next_scheduled('wbcr_clearfy_update_local_ga') ) {
54
  wp_clear_scheduled_hook('wbcr_clearfy_update_local_ga');
components/ga-cache/admin/assets/css/notifications-panel.css CHANGED
@@ -1,65 +1,65 @@
1
- /**
2
- * Notification panel in admin bar
3
- * @author Alex Kovalev <alex.kovalevv@gmail.com>
4
- * @copyright Alex Kovalev 23.08.2017
5
- */
6
- #wp-admin-bar-wbcr-han-notify-panel .wbcr-han-adminbar-counter {
7
- background-color: #0073aa;
8
- border-radius: 50%;
9
- color: #fff;
10
- font-weight: bold;
11
- padding: 2px 6px;
12
- font-size: 0.85em;
13
- margin-left: 5px;
14
- }
15
- #wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper {
16
- max-height: 500px;
17
- overflow-y: scroll;
18
- }
19
- #wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu {
20
- width: 400px;
21
- padding: 0;
22
- }
23
- #wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu > li {
24
- border-left: 4px solid #26292b;
25
- padding: 0;
26
- }
27
- #wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu > li.wpnc-updated {
28
- border-left-color: #7ad03a;
29
- }
30
- #wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu > li.wpnc-update-nag {
31
- border-left-color: #ffba00;
32
- }
33
- #wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu > li.wpnc-error {
34
- border-left-color: #dd3d36;
35
- }
36
- #wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu > li .wbcr-han-panel-restore-notify-line {
37
- text-align: right;
38
- }
39
- #wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu > li .wbcr-han-panel-restore-notify-line a {
40
- color: #ffba00 !important;
41
- text-decoration: none !important;
42
- }
43
- #wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu > li .wbcr-han-panel-restore-notify-line a:hover {
44
- text-decoration: underline !important;
45
- color: #ffc11a !important;
46
- }
47
- #wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu > li .ab-item {
48
- height: 100% !important;
49
- white-space: normal !important;
50
- padding: .5em 1em;
51
- border-bottom: 1px solid #4a4f55;
52
- color: #949494;
53
- line-height: .5em;
54
- }
55
- #wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu > li .ab-item a {
56
- display: inline;
57
- padding: 0;
58
- margin: 0;
59
- text-decoration: underline;
60
- line-height: .5em;
61
- color: #949494;
62
- }
63
- #wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu li:nth-child(2n) {
64
- background: #26292b;
65
- }
1
+ /**
2
+ * Notification panel in admin bar
3
+ * @author Alex Kovalev <alex.kovalevv@gmail.com>
4
+ * @copyright Alex Kovalev 23.08.2017
5
+ */
6
+ #wp-admin-bar-wbcr-han-notify-panel .wbcr-han-adminbar-counter {
7
+ background-color: #0073aa;
8
+ border-radius: 50%;
9
+ color: #fff;
10
+ font-weight: bold;
11
+ padding: 2px 6px;
12
+ font-size: 0.85em;
13
+ margin-left: 5px;
14
+ }
15
+ #wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper {
16
+ max-height: 500px;
17
+ overflow-y: scroll;
18
+ }
19
+ #wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu {
20
+ width: 400px;
21
+ padding: 0;
22
+ }
23
+ #wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu > li {
24
+ border-left: 4px solid #26292b;
25
+ padding: 0;
26
+ }
27
+ #wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu > li.wpnc-updated {
28
+ border-left-color: #7ad03a;
29
+ }
30
+ #wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu > li.wpnc-update-nag {
31
+ border-left-color: #ffba00;
32
+ }
33
+ #wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu > li.wpnc-error {
34
+ border-left-color: #dd3d36;
35
+ }
36
+ #wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu > li .wbcr-han-panel-restore-notify-line {
37
+ text-align: right;
38
+ }
39
+ #wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu > li .wbcr-han-panel-restore-notify-line a {
40
+ color: #ffba00 !important;
41
+ text-decoration: none !important;
42
+ }
43
+ #wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu > li .wbcr-han-panel-restore-notify-line a:hover {
44
+ text-decoration: underline !important;
45
+ color: #ffc11a !important;
46
+ }
47
+ #wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu > li .ab-item {
48
+ height: 100% !important;
49
+ white-space: normal !important;
50
+ padding: .5em 1em;
51
+ border-bottom: 1px solid #4a4f55;
52
+ color: #949494;
53
+ line-height: .5em;
54
+ }
55
+ #wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu > li .ab-item a {
56
+ display: inline;
57
+ padding: 0;
58
+ margin: 0;
59
+ text-decoration: underline;
60
+ line-height: .5em;
61
+ color: #949494;
62
+ }
63
+ #wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu li:nth-child(2n) {
64
+ background: #26292b;
65
+ }
components/ga-cache/admin/boot.php CHANGED
@@ -44,7 +44,7 @@
44
  return $notices;
45
  }
46
 
47
- add_filter('wbcr_factory_notices_405_list', 'wbcr_ga_admin_conflict_notices_error', 10, 2);
48
 
49
  /**
50
  * Migrate settings from the old plugin to the new one.
@@ -57,7 +57,7 @@
57
  return;
58
  }
59
 
60
- $is_migrate_up_to_230 = WGA_Plugin::app()->getOption('is_migrate_up_to_230', false);
61
 
62
  if( !$is_migrate_up_to_230 ) {
63
  $old_plugin_tracking_id = get_option('sga_analytics_id');
@@ -66,8 +66,8 @@
66
  $old_plugin_sga_render_when_loggedin = (int)get_option('sga_render_when_loggedin');
67
 
68
  if( !empty($old_plugin_tracking_id) ) {
69
- WGA_Plugin::app()->updateOption('ga_cache', 1);
70
- WGA_Plugin::app()->updateOption('ga_tracking_id', $old_plugin_tracking_id);
71
 
72
  $script_position = 'footer';
73
 
@@ -75,14 +75,14 @@
75
  $script_position = 'header';
76
  }
77
 
78
- WGA_Plugin::app()->updateOption('ga_script_position', $script_position);
79
- WGA_Plugin::app()->updateOption('ga_anonymize_ip', $old_plugin_demographic_and_interest);
80
- WGA_Plugin::app()->updateOption('ga_track_admin', $old_plugin_sga_render_when_loggedin);
81
 
82
  $wpdb->query("DELETE FROM {$wpdb->prefix}options WHERE option_name LIKE 'sga_%';");
83
  }
84
 
85
- WGA_Plugin::app()->updateOption('is_migrate_up_to_230', 1);
86
  }
87
  }
88
 
44
  return $notices;
45
  }
46
 
47
+ add_filter('wbcr_factory_notices_407_list', 'wbcr_ga_admin_conflict_notices_error', 10, 2);
48
 
49
  /**
50
  * Migrate settings from the old plugin to the new one.
57
  return;
58
  }
59
 
60
+ $is_migrate_up_to_230 = WGA_Plugin::app()->getPopulateOption('is_migrate_up_to_230', false);
61
 
62
  if( !$is_migrate_up_to_230 ) {
63
  $old_plugin_tracking_id = get_option('sga_analytics_id');
66
  $old_plugin_sga_render_when_loggedin = (int)get_option('sga_render_when_loggedin');
67
 
68
  if( !empty($old_plugin_tracking_id) ) {
69
+ WGA_Plugin::app()->updatePopulateOption('ga_cache', 1);
70
+ WGA_Plugin::app()->updatePopulateOption('ga_tracking_id', $old_plugin_tracking_id);
71
 
72
  $script_position = 'footer';
73
 
75
  $script_position = 'header';
76
  }
77
 
78
+ WGA_Plugin::app()->updatePopulateOption('ga_script_position', $script_position);
79
+ WGA_Plugin::app()->updatePopulateOption('ga_anonymize_ip', $old_plugin_demographic_and_interest);
80
+ WGA_Plugin::app()->updatePopulateOption('ga_track_admin', $old_plugin_sga_render_when_loggedin);
81
 
82
  $wpdb->query("DELETE FROM {$wpdb->prefix}options WHERE option_name LIKE 'sga_%';");
83
  }
84
 
85
+ WGA_Plugin::app()->updatePopulateOption('is_migrate_up_to_230', 1);
86
  }
87
  }
88
 
components/ga-cache/admin/options.php CHANGED
@@ -126,7 +126,7 @@
126
 
127
  /**
128
  * @param $form
129
- * @param $page FactoryPages407_ImpressiveThemplate
130
  * @return mixed
131
  */
132
  function wbcr_ga_additionally_form_options($form, $page)
126
 
127
  /**
128
  * @param $form
129
+ * @param $page FactoryPages410_ImpressiveThemplate
130
  * @return mixed
131
  */
132
  function wbcr_ga_additionally_form_options($form, $page)
components/ga-cache/admin/pages/ga_cache.php CHANGED
@@ -11,24 +11,29 @@
11
  exit;
12
  }
13
 
14
- class WGA_CachePage extends Wbcr_FactoryPages407_ImpressiveThemplate {
15
 
16
  /**
17
  * The id of the page in the admin menu.
18
  *
19
  * Mainly used to navigate between pages.
20
- * @see FactoryPages407_AdminPage
21
  *
22
  * @since 1.0.0
23
  * @var string
24
  */
25
  public $id = "ga_cache";
26
  public $page_menu_dashicon = 'dashicons-testimonial';
 
 
 
 
 
27
 
28
  /**
29
- * @param Wbcr_Factory406_Plugin $plugin
30
  */
31
- public function __construct(Wbcr_Factory406_Plugin $plugin)
32
  {
33
  $this->menu_title = __('Local Google Analytics', 'simple-google-analytics');
34
 
@@ -50,32 +55,13 @@
50
  : __('General', 'simple-google-analytics');
51
  }
52
 
53
- /**
54
- * Requests assets (js and css) for the page.
55
- *
56
- * @see Wbcr_FactoryPages407_AdminPage
57
- *
58
- * @since 1.0.0
59
- * @return void
60
- */
61
- public function assets($scripts, $styles)
62
- {
63
- parent::assets($scripts, $styles);
64
-
65
- // Add Clearfy styles for HMWP pages
66
- if( defined('WBCR_CLEARFY_PLUGIN_ACTIVE') ) {
67
- $this->styles->add(WCL_PLUGIN_URL . '/admin/assets/css/general.css');
68
- }
69
- }
70
-
71
-
72
  /**
73
  * Permalinks options.
74
  *
75
  * @since 1.0.0
76
  * @return mixed[]
77
  */
78
- public function getOptions()
79
  {
80
  $options = wbcr_ga_get_plugin_options();
81
 
@@ -89,4 +75,4 @@
89
 
90
  return apply_filters('wbcr_ga_notices_form_options', $formOptions, $this);
91
  }
92
- }
11
  exit;
12
  }
13
 
14
+ class WGA_CachePage extends Wbcr_FactoryClearfy206_PageBase {
15
 
16
  /**
17
  * The id of the page in the admin menu.
18
  *
19
  * Mainly used to navigate between pages.
20
+ * @see FactoryPages410_AdminPage
21
  *
22
  * @since 1.0.0
23
  * @var string
24
  */
25
  public $id = "ga_cache";
26
  public $page_menu_dashicon = 'dashicons-testimonial';
27
+ /**
28
+ * Доступена для мультисайтов
29
+ * @var bool
30
+ */
31
+ public $available_for_multisite = true;
32
 
33
  /**
34
+ * @param Wbcr_Factory409_Plugin $plugin
35
  */
36
+ public function __construct(Wbcr_Factory409_Plugin $plugin)
37
  {
38
  $this->menu_title = __('Local Google Analytics', 'simple-google-analytics');
39
 
55
  : __('General', 'simple-google-analytics');
56
  }
57
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
58
  /**
59
  * Permalinks options.
60
  *
61
  * @since 1.0.0
62
  * @return mixed[]
63
  */
64
+ public function getPageOptions()
65
  {
66
  $options = wbcr_ga_get_plugin_options();
67
 
75
 
76
  return apply_filters('wbcr_ga_notices_form_options', $formOptions, $this);
77
  }
78
+ }
components/ga-cache/admin/pages/more-features.php CHANGED
@@ -11,6 +11,6 @@
11
  exit;
12
  }
13
 
14
- class WGA_MoreFeaturesPage extends Wbcr_FactoryClearfy203_MoreFeaturesPage {
15
 
16
  }
11
  exit;
12
  }
13
 
14
+ class WGA_MoreFeaturesPage extends Wbcr_FactoryClearfy206_MoreFeaturesPage {
15
 
16
  }
components/ga-cache/cache/local-ga.js CHANGED
@@ -1,58 +1,58 @@
1
- (function(){var $c=function(a){this.w=a||[]};$c.prototype.set=function(a){this.w[a]=!0};$c.prototype.encode=function(){for(var a=[],b=0;b<this.w.length;b++)this.w[b]&&(a[Math.floor(b/6)]^=1<<b%6);for(b=0;b<a.length;b++)a[b]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_".charAt(a[b]||0);return a.join("")+"~"};var vd=new $c;function J(a){vd.set(a)}var Td=function(a){a=Dd(a);a=new $c(a);for(var b=vd.w.slice(),c=0;c<a.w.length;c++)b[c]=b[c]||a.w[c];return(new $c(b)).encode()},Dd=function(a){a=a.get(Gd);ka(a)||(a=[]);return a};var ea=function(a){return"function"==typeof a},ka=function(a){return"[object Array]"==Object.prototype.toString.call(Object(a))},qa=function(a){return void 0!=a&&-1<(a.constructor+"").indexOf("String")},D=function(a,b){return 0==a.indexOf(b)},sa=function(a){return a?a.replace(/^[\s\xa0]+|[\s\xa0]+$/g,""):""},ra=function(){for(var a=O.navigator.userAgent+(M.cookie?M.cookie:"")+(M.referrer?M.referrer:""),b=a.length,c=O.history.length;0<c;)a+=c--^b++;return[hd()^La(a)&2147483647,Math.round((new Date).getTime()/
2
- 1E3)].join(".")},ta=function(a){var b=M.createElement("img");b.width=1;b.height=1;b.src=a;return b},ua=function(){},K=function(a){if(encodeURIComponent instanceof Function)return encodeURIComponent(a);J(28);return a},L=function(a,b,c,d){try{a.addEventListener?a.addEventListener(b,c,!!d):a.attachEvent&&a.attachEvent("on"+b,c)}catch(e){J(27)}},f=/^[\w\-:/.?=&%!]+$/,wa=function(a,b,c){a&&(c?(c="",b&&f.test(b)&&(c=' id="'+b+'"'),f.test(a)&&M.write("<script"+c+' src="'+a+'">\x3c/script>')):(c=M.createElement("script"),
3
- c.type="text/javascript",c.async=!0,c.src=a,b&&(c.id=b),a=M.getElementsByTagName("script")[0],a.parentNode.insertBefore(c,a)))},be=function(a,b){return E(M.location[b?"href":"search"],a)},E=function(a,b){return(a=a.match("(?:&|#|\\?)"+K(b).replace(/([.*+?^=!:${}()|\[\]\/\\])/g,"\\$1")+"=([^&#]*)"))&&2==a.length?a[1]:""},xa=function(){var a=""+M.location.hostname;return 0==a.indexOf("www.")?a.substring(4):a},de=function(a,b){var c=a.indexOf(b);if(5==c||6==c)if(a=a.charAt(c+b.length),"/"==a||"?"==a||
4
- ""==a||":"==a)return!0;return!1},ya=function(a,b){var c=M.referrer;if(/^(https?|android-app):\/\//i.test(c)){if(a)return c;a="//"+M.location.hostname;if(!de(c,a))return b&&(b=a.replace(/\./g,"-")+".cdn.ampproject.org",de(c,b))?void 0:c}},za=function(a,b){if(1==b.length&&null!=b[0]&&"object"===typeof b[0])return b[0];for(var c={},d=Math.min(a.length+1,b.length),e=0;e<d;e++)if("object"===typeof b[e]){for(var g in b[e])b[e].hasOwnProperty(g)&&(c[g]=b[e][g]);break}else e<a.length&&(c[a[e]]=b[e]);return c};var ee=function(){this.keys=[];this.values={};this.m={}};ee.prototype.set=function(a,b,c){this.keys.push(a);c?this.m[":"+a]=b:this.values[":"+a]=b};ee.prototype.get=function(a){return this.m.hasOwnProperty(":"+a)?this.m[":"+a]:this.values[":"+a]};ee.prototype.map=function(a){for(var b=0;b<this.keys.length;b++){var c=this.keys[b],d=this.get(c);d&&a(c,d)}};var O=window,M=document,va=function(a,b){return setTimeout(a,b)};var F=window,Ea=document,G=function(a){var b=F._gaUserPrefs;if(b&&b.ioo&&b.ioo()||a&&!0===F["ga-disable-"+a])return!0;try{var c=F.external;if(c&&c._gaUserPrefs&&"oo"==c._gaUserPrefs)return!0}catch(g){}a=[];b=Ea.cookie.split(";");c=/^\s*AMP_TOKEN=\s*(.*?)\s*$/;for(var d=0;d<b.length;d++){var e=b[d].match(c);e&&a.push(e[1])}for(b=0;b<a.length;b++)if("$OPT_OUT"==decodeURIComponent(a[b]))return!0;return!1};var Ca=function(a){var b=[],c=M.cookie.split(";");a=new RegExp("^\\s*"+a+"=\\s*(.*?)\\s*$");for(var d=0;d<c.length;d++){var e=c[d].match(a);e&&b.push(e[1])}return b},zc=function(a,b,c,d,e,g){e=G(e)?!1:eb.test(M.location.hostname)||"/"==c&&vc.test(d)?!1:!0;if(!e)return!1;b&&1200<b.length&&(b=b.substring(0,1200));c=a+"="+b+"; path="+c+"; ";g&&(c+="expires="+(new Date((new Date).getTime()+g)).toGMTString()+"; ");d&&"none"!==d&&(c+="domain="+d+";");d=M.cookie;M.cookie=c;if(!(d=d!=M.cookie))a:{a=Ca(a);
5
- for(d=0;d<a.length;d++)if(b==a[d]){d=!0;break a}d=!1}return d},Cc=function(a){return encodeURIComponent?encodeURIComponent(a).replace(/\(/g,"%28").replace(/\)/g,"%29"):a},vc=/^(www\.)?google(\.com?)?(\.[a-z]{2})?$/,eb=/(^|\.)doubleclick\.net$/i;var oc,Id=/^.*Version\/?(\d+)[^\d].*$/i,ne=function(){if(void 0!==O.__ga4__)return O.__ga4__;if(void 0===oc){var a=O.navigator.userAgent;if(a){var b=a;try{b=decodeURIComponent(a)}catch(c){}if(a=!(0<=b.indexOf("Chrome"))&&!(0<=b.indexOf("CriOS"))&&(0<=b.indexOf("Safari/")||0<=b.indexOf("Safari,")))b=Id.exec(b),a=11<=(b?Number(b[1]):-1);oc=a}else oc=!1}return oc};var Fa,Ga,fb,Ab,ja=/^https?:\/\/[^/]*cdn\.ampproject\.org\//,Ub=[],ic=function(){Z.D([ua])},tc=function(a,b){var c=Ca("AMP_TOKEN");if(1<c.length)return J(55),!1;c=decodeURIComponent(c[0]||"");if("$OPT_OUT"==c||"$ERROR"==c||G(b))return J(62),!1;if(!ja.test(M.referrer)&&"$NOT_FOUND"==c)return J(68),!1;if(void 0!==Ab)return J(56),va(function(){a(Ab)},0),!0;if(Fa)return Ub.push(a),!0;if("$RETRIEVING"==c)return J(57),va(function(){tc(a,b)},1E4),!0;Fa=!0;c&&"$"!=c[0]||(xc("$RETRIEVING",3E4),setTimeout(Mc,
6
- 3E4),c="");return Pc(c,b)?(Ub.push(a),!0):!1},Pc=function(a,b,c){if(!window.JSON)return J(58),!1;var d=O.XMLHttpRequest;if(!d)return J(59),!1;var e=new d;if(!("withCredentials"in e))return J(60),!1;e.open("POST",(c||"https://ampcid.google.com/v1/publisher:getClientId")+"?key=AIzaSyA65lEHUEizIsNtlbNo-l2K18dT680nsaM",!0);e.withCredentials=!0;e.setRequestHeader("Content-Type","text/plain");e.onload=function(){Fa=!1;if(4==e.readyState){try{200!=e.status&&(J(61),Qc("","$ERROR",3E4));var d=JSON.parse(e.responseText);
7
- d.optOut?(J(63),Qc("","$OPT_OUT",31536E6)):d.clientId?Qc(d.clientId,d.securityToken,31536E6):!c&&d.alternateUrl?(Ga&&clearTimeout(Ga),Fa=!0,Pc(a,b,d.alternateUrl)):(J(64),Qc("","$NOT_FOUND",36E5))}catch(ca){J(65),Qc("","$ERROR",3E4)}e=null}};d={originScope:"AMP_ECID_GOOGLE"};a&&(d.securityToken=a);e.send(JSON.stringify(d));Ga=va(function(){J(66);Qc("","$ERROR",3E4)},1E4);return!0},Mc=function(){Fa=!1},xc=function(a,b){if(void 0===fb){fb="";for(var c=id(),d=0;d<c.length;d++){var e=c[d];if(zc("AMP_TOKEN",
8
- encodeURIComponent(a),"/",e,"",b)){fb=e;return}}}zc("AMP_TOKEN",encodeURIComponent(a),"/",fb,"",b)},Qc=function(a,b,c){Ga&&clearTimeout(Ga);b&&xc(b,c);Ab=a;b=Ub;Ub=[];for(c=0;c<b.length;c++)b[c](a)};var oe=function(){return(Ba||"https:"==M.location.protocol?"https:":"http:")+"//www.google-analytics.com"},Da=function(a){this.name="len";this.message=a+"-8192"},ba=function(a,b,c){c=c||ua;if(2036>=b.length)wc(a,b,c);else if(8192>=b.length)x(a,b,c)||wd(a,b,c)||wc(a,b,c);else throw ge("len",b.length),new Da(b.length);},pe=function(a,b,c,d){d=d||ua;wd(a+"?"+b,"",d,c)},wc=function(a,b,c){var d=ta(a+"?"+b);d.onload=d.onerror=function(){d.onload=null;d.onerror=null;c()}},wd=function(a,b,c,d){var e=O.XMLHttpRequest;
9
- if(!e)return!1;var g=new e;if(!("withCredentials"in g))return!1;a=a.replace(/^http:/,"https:");g.open("POST",a,!0);g.withCredentials=!0;g.setRequestHeader("Content-Type","text/plain");g.onreadystatechange=function(){if(4==g.readyState){if(d)try{var a=g.responseText;if(1>a.length)ge("xhr","ver","0"),c();else if("1"!=a.charAt(0))ge("xhr","ver",String(a.length)),c();else if(3<d.count++)ge("xhr","tmr",""+d.count),c();else if(1==a.length)c();else{var b=a.charAt(1);if("d"==b)pe("https://stats.g.doubleclick.net/j/collect",
10
- d.U,d,c);else if("g"==b){var e="https://www.google.%/ads/ga-audiences".replace("%","com");wc(e,d.google,c);var w=a.substring(2);if(w)if(/^[a-z.]{1,6}$/.test(w)){var ha="https://www.google.%/ads/ga-audiences".replace("%",w);wc(ha,d.google,ua)}else ge("tld","bcc",w)}else ge("xhr","brc",b),c()}}catch(ue){ge("xhr","rsp"),c()}else c();g=null}};g.send(b);return!0},x=function(a,b,c){return O.navigator.sendBeacon?O.navigator.sendBeacon(a,b)?(c(),!0):!1:!1},ge=function(a,b,c){1<=100*Math.random()||G("?")||
11
- (a=["t=error","_e="+a,"_v=j68","sr=1"],b&&a.push("_f="+b),c&&a.push("_m="+K(c.substring(0,100))),a.push("aip=1"),a.push("z="+hd()),wc("https://www.google-analytics.com/u/d",a.join("&"),ua))};var h=function(a){var b=O.gaData=O.gaData||{};return b[a]=b[a]||{}};var Ha=function(){this.M=[]};Ha.prototype.add=function(a){this.M.push(a)};Ha.prototype.D=function(a){try{for(var b=0;b<this.M.length;b++){var c=a.get(this.M[b]);c&&ea(c)&&c.call(O,a)}}catch(d){}b=a.get(Ia);b!=ua&&ea(b)&&(a.set(Ia,ua,!0),setTimeout(b,10))};function Ja(a){if(100!=a.get(Ka)&&La(P(a,Q))%1E4>=100*R(a,Ka))throw"abort";}function Ma(a){if(G(P(a,Na)))throw"abort";}function Oa(){var a=M.location.protocol;if("http:"!=a&&"https:"!=a)throw"abort";}
12
- function Pa(a){try{O.navigator.sendBeacon?J(42):O.XMLHttpRequest&&"withCredentials"in new O.XMLHttpRequest&&J(40)}catch(c){}a.set(ld,Td(a),!0);a.set(Ac,R(a,Ac)+1);var b=[];Qa.map(function(c,d){d.F&&(c=a.get(c),void 0!=c&&c!=d.defaultValue&&("boolean"==typeof c&&(c*=1),b.push(d.F+"="+K(""+c))))});b.push("z="+Bd());a.set(Ra,b.join("&"),!0)}
13
- function Sa(a){var b=P(a,gd)||oe()+"/collect",c=a.get(qe),d=P(a,fa);!d&&a.get(Vd)&&(d="beacon");if(c)pe(b,P(a,Ra),c,a.get(Ia));else if(d){c=d;d=P(a,Ra);var e=a.get(Ia);e=e||ua;"image"==c?wc(b,d,e):"xhr"==c&&wd(b,d,e)||"beacon"==c&&x(b,d,e)||ba(b,d,e)}else ba(b,P(a,Ra),a.get(Ia));b=a.get(Na);b=h(b);c=b.hitcount;b.hitcount=c?c+1:1;b=a.get(Na);delete h(b).pending_experiments;a.set(Ia,ua,!0)}
14
- function Hc(a){(O.gaData=O.gaData||{}).expId&&a.set(Nc,(O.gaData=O.gaData||{}).expId);(O.gaData=O.gaData||{}).expVar&&a.set(Oc,(O.gaData=O.gaData||{}).expVar);var b=a.get(Na);if(b=h(b).pending_experiments){var c=[];for(d in b)b.hasOwnProperty(d)&&b[d]&&c.push(encodeURIComponent(d)+"."+encodeURIComponent(b[d]));var d=c.join("!")}else d=void 0;d&&a.set(m,d,!0)}function cd(){if(O.navigator&&"preview"==O.navigator.loadPurpose)throw"abort";}
15
- function yd(a){var b=O.gaDevIds;ka(b)&&0!=b.length&&a.set("&did",b.join(","),!0)}function vb(a){if(!a.get(Na))throw"abort";};var hd=function(){return Math.round(2147483647*Math.random())},Bd=function(){try{var a=new Uint32Array(1);O.crypto.getRandomValues(a);return a[0]&2147483647}catch(b){return hd()}};function Ta(a){var b=R(a,Ua);500<=b&&J(15);var c=P(a,Va);if("transaction"!=c&&"item"!=c){c=R(a,Wa);var d=(new Date).getTime(),e=R(a,Xa);0==e&&a.set(Xa,d);e=Math.round(2*(d-e)/1E3);0<e&&(c=Math.min(c+e,20),a.set(Xa,d));if(0>=c)throw"abort";a.set(Wa,--c)}a.set(Ua,++b)};var Ya=function(){this.data=new ee},Qa=new ee,Za=[];Ya.prototype.get=function(a){var b=$a(a),c=this.data.get(a);b&&void 0==c&&(c=ea(b.defaultValue)?b.defaultValue():b.defaultValue);return b&&b.Z?b.Z(this,a,c):c};var P=function(a,b){a=a.get(b);return void 0==a?"":""+a},R=function(a,b){a=a.get(b);return void 0==a||""===a?0:1*a};Ya.prototype.set=function(a,b,c){if(a)if("object"==typeof a)for(var d in a)a.hasOwnProperty(d)&&ab(this,d,a[d],c);else ab(this,a,b,c)};
16
- var ab=function(a,b,c,d){if(void 0!=c)switch(b){case Na:wb.test(c)}var e=$a(b);e&&e.o?e.o(a,b,c,d):a.data.set(b,c,d)},bb=function(a,b,c,d,e){this.name=a;this.F=b;this.Z=d;this.o=e;this.defaultValue=c},$a=function(a){var b=Qa.get(a);if(!b)for(var c=0;c<Za.length;c++){var d=Za[c],e=d[0].exec(a);if(e){b=d[1](e);Qa.set(b.name,b);break}}return b},yc=function(a){var b;Qa.map(function(c,d){d.F==a&&(b=d)});return b&&b.name},S=function(a,b,c,d,e){a=new bb(a,b,c,d,e);Qa.set(a.name,a);return a.name},cb=function(a,
17
- b){Za.push([new RegExp("^"+a+"$"),b])},T=function(a,b,c){return S(a,b,c,void 0,db)},db=function(){};var gb=qa(window.GoogleAnalyticsObject)&&sa(window.GoogleAnalyticsObject)||"ga",jd=/^(?:utma\.)?\d+\.\d+$/,kd=/^amp-[\w.-]{22,64}$/,Ba=!1,hb=T("apiVersion","v"),ib=T("clientVersion","_v");S("anonymizeIp","aip");var jb=S("adSenseId","a"),Va=S("hitType","t"),Ia=S("hitCallback"),Ra=S("hitPayload");S("nonInteraction","ni");S("currencyCode","cu");S("dataSource","ds");var Vd=S("useBeacon",void 0,!1),fa=S("transport");S("sessionControl","sc","");S("sessionGroup","sg");S("queueTime","qt");var Ac=S("_s","_s");
18
- S("screenName","cd");var kb=S("location","dl",""),lb=S("referrer","dr"),mb=S("page","dp","");S("hostname","dh");var nb=S("language","ul"),ob=S("encoding","de");S("title","dt",function(){return M.title||void 0});cb("contentGroup([0-9]+)",function(a){return new bb(a[0],"cg"+a[1])});var pb=S("screenColors","sd"),qb=S("screenResolution","sr"),rb=S("viewportSize","vp"),sb=S("javaEnabled","je"),tb=S("flashVersion","fl");S("campaignId","ci");S("campaignName","cn");S("campaignSource","cs");
19
- S("campaignMedium","cm");S("campaignKeyword","ck");S("campaignContent","cc");var ub=S("eventCategory","ec"),xb=S("eventAction","ea"),yb=S("eventLabel","el"),zb=S("eventValue","ev"),Bb=S("socialNetwork","sn"),Cb=S("socialAction","sa"),Db=S("socialTarget","st"),Eb=S("l1","plt"),Fb=S("l2","pdt"),Gb=S("l3","dns"),Hb=S("l4","rrt"),Ib=S("l5","srt"),Jb=S("l6","tcp"),Kb=S("l7","dit"),Lb=S("l8","clt"),Mb=S("timingCategory","utc"),Nb=S("timingVar","utv"),Ob=S("timingLabel","utl"),Pb=S("timingValue","utt");
20
- S("appName","an");S("appVersion","av","");S("appId","aid","");S("appInstallerId","aiid","");S("exDescription","exd");S("exFatal","exf");var Nc=S("expId","xid"),Oc=S("expVar","xvar"),m=S("exp","exp"),Rc=S("_utma","_utma"),Sc=S("_utmz","_utmz"),Tc=S("_utmht","_utmht"),Ua=S("_hc",void 0,0),Xa=S("_ti",void 0,0),Wa=S("_to",void 0,20);cb("dimension([0-9]+)",function(a){return new bb(a[0],"cd"+a[1])});cb("metric([0-9]+)",function(a){return new bb(a[0],"cm"+a[1])});S("linkerParam",void 0,void 0,Bc,db);
21
- var ld=S("usage","_u"),Gd=S("_um");S("forceSSL",void 0,void 0,function(){return Ba},function(a,b,c){J(34);Ba=!!c});var ed=S("_j1","jid"),ia=S("_j2","gjid");cb("\\&(.*)",function(a){var b=new bb(a[0],a[1]),c=yc(a[0].substring(1));c&&(b.Z=function(a){return a.get(c)},b.o=function(a,b,g,ca){a.set(c,g,ca)},b.F=void 0);return b});
22
- var Qb=T("_oot"),dd=S("previewTask"),Rb=S("checkProtocolTask"),md=S("validationTask"),Sb=S("checkStorageTask"),Uc=S("historyImportTask"),Tb=S("samplerTask"),Vb=S("_rlt"),Wb=S("buildHitTask"),Xb=S("sendHitTask"),Vc=S("ceTask"),zd=S("devIdTask"),Cd=S("timingTask"),Ld=S("displayFeaturesTask"),oa=S("customTask"),V=T("name"),Q=T("clientId","cid"),n=T("clientIdTime"),xd=T("storedClientId"),Ad=S("userId","uid"),Na=T("trackingId","tid"),U=T("cookieName",void 0,"_ga"),W=T("cookieDomain"),Yb=T("cookiePath",
23
- void 0,"/"),Zb=T("cookieExpires",void 0,63072E3),Hd=T("cookieUpdate",void 0,!0),$b=T("legacyCookieDomain"),Wc=T("legacyHistoryImport",void 0,!0),ac=T("storage",void 0,"cookie"),bc=T("allowLinker",void 0,!1),cc=T("allowAnchor",void 0,!0),Ka=T("sampleRate","sf",100),dc=T("siteSpeedSampleRate",void 0,1),ec=T("alwaysSendReferrer",void 0,!1),I=T("_gid","_gid"),la=T("_gcn"),Kd=T("useAmpClientId"),ce=T("_gclid"),fe=T("_gt"),he=T("_ge",void 0,7776E6),ie=T("_gclsrc"),je=T("storeGac",void 0,!0),gd=S("transportUrl"),
24
- Md=S("_r","_r"),qe=S("_dp"),Ud=S("allowAdFeatures",void 0,!0);function X(a,b,c,d){b[a]=function(){try{return d&&J(d),c.apply(this,arguments)}catch(e){throw ge("exc",a,e&&e.name),e;}}};var Od=function(){this.V=100;this.$=this.fa=!1;this.oa="detourexp";this.groups=1},Ed=function(a){var b=new Od,c;if(b.fa&&b.$)return 0;b.$=!0;if(a){if(b.oa&&void 0!==a.get(b.oa))return R(a,b.oa);if(0==a.get(dc))return 0}if(0==b.V)return 0;void 0===c&&(c=Bd());return 0==c%b.V?Math.floor(c/b.V)%b.groups+1:0};function fc(){var a,b;if((b=(b=O.navigator)?b.plugins:null)&&b.length)for(var c=0;c<b.length&&!a;c++){var d=b[c];-1<d.name.indexOf("Shockwave Flash")&&(a=d.description)}if(!a)try{var e=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");a=e.GetVariable("$version")}catch(g){}if(!a)try{e=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6"),a="WIN 6,0,21,0",e.AllowScriptAccess="always",a=e.GetVariable("$version")}catch(g){}if(!a)try{e=new ActiveXObject("ShockwaveFlash.ShockwaveFlash"),a=e.GetVariable("$version")}catch(g){}a&&
25
- (e=a.match(/[\d]+/g))&&3<=e.length&&(a=e[0]+"."+e[1]+" r"+e[2]);return a||void 0};var aa=function(a){var b=Math.min(R(a,dc),100);return La(P(a,Q))%100>=b?!1:!0},gc=function(a){var b={};if(Ec(b)||Fc(b)){var c=b[Eb];void 0==c||Infinity==c||isNaN(c)||(0<c?(Y(b,Gb),Y(b,Jb),Y(b,Ib),Y(b,Fb),Y(b,Hb),Y(b,Kb),Y(b,Lb),va(function(){a(b)},10)):L(O,"load",function(){gc(a)},!1))}},Ec=function(a){var b=O.performance||O.webkitPerformance;b=b&&b.timing;if(!b)return!1;var c=b.navigationStart;if(0==c)return!1;a[Eb]=b.loadEventStart-c;a[Gb]=b.domainLookupEnd-b.domainLookupStart;a[Jb]=b.connectEnd-
26
- b.connectStart;a[Ib]=b.responseStart-b.requestStart;a[Fb]=b.responseEnd-b.responseStart;a[Hb]=b.fetchStart-c;a[Kb]=b.domInteractive-c;a[Lb]=b.domContentLoadedEventStart-c;return!0},Fc=function(a){if(O.top!=O)return!1;var b=O.external,c=b&&b.onloadT;b&&!b.isValidLoadTime&&(c=void 0);2147483648<c&&(c=void 0);0<c&&b.setPageReadyTime();if(void 0==c)return!1;a[Eb]=c;return!0},Y=function(a,b){var c=a[b];if(isNaN(c)||Infinity==c||0>c)a[b]=void 0},Fd=function(a){return function(b){if("pageview"==b.get(Va)&&
27
- !a.I){a.I=!0;var c=aa(b),d=0<E(b.get(kb),"gclid").length;(c||d)&&gc(function(b){c&&a.send("timing",b);d&&a.send("adtiming",b)})}}};var hc=!1,mc=function(a){if("cookie"==P(a,ac)){if(a.get(Hd)||P(a,xd)!=P(a,Q)){var b=1E3*R(a,Zb);ma(a,Q,U,b)}ma(a,I,la,864E5);if(a.get(je)){var c=a.get(ce);if(c){var d=Math.min(R(a,he),1E3*R(a,Zb));d=Math.min(d,1E3*R(a,fe)+d-(new Date).getTime());a.data.set(he,d);b={};var e=a.get(fe),g=a.get(ie),ca=kc(P(a,Yb)),l=lc(P(a,W)),k=P(a,Na);g&&"aw.ds"!=g?b&&(b.ua=!0):(c=["1",e,Cc(c)].join("."),0<d&&(b&&(b.ta=!0),zc("_gac_"+Cc(k),c,ca,l,k,d)));le(b)}}else J(75);if(a="none"===lc(P(a,W)))a=M.location.hostname,
28
- a=eb.test(a)||vc.test(a);a&&J(30)}},ma=function(a,b,c,d){var e=nd(a,b);if(e){c=P(a,c);var g=kc(P(a,Yb)),ca=lc(P(a,W)),l=P(a,Na);if("auto"!=ca)zc(c,e,g,ca,l,d)&&(hc=!0);else{J(32);for(var k=id(),w=0;w<k.length;w++)if(ca=k[w],a.data.set(W,ca),e=nd(a,b),zc(c,e,g,ca,l,d)){hc=!0;return}a.data.set(W,"auto")}}},nc=function(a){if("cookie"==P(a,ac)&&!hc&&(mc(a),!hc))throw"abort";},Yc=function(a){if(a.get(Wc)){var b=P(a,W),c=P(a,$b)||xa(),d=Xc("__utma",c,b);d&&(J(19),a.set(Tc,(new Date).getTime(),!0),a.set(Rc,
29
- d.R),(b=Xc("__utmz",c,b))&&d.hash==b.hash&&a.set(Sc,b.R))}},nd=function(a,b){b=Cc(P(a,b));var c=lc(P(a,W)).split(".").length;a=jc(P(a,Yb));1<a&&(c+="-"+a);return b?["GA1",c,b].join("."):""},Xd=function(a,b){return na(b,P(a,W),P(a,Yb))},na=function(a,b,c){if(!a||1>a.length)J(12);else{for(var d=[],e=0;e<a.length;e++){var g=a[e];var ca=g.split(".");var l=ca.shift();("GA1"==l||"1"==l)&&1<ca.length?(g=ca.shift().split("-"),1==g.length&&(g[1]="1"),g[0]*=1,g[1]*=1,ca={H:g,s:ca.join(".")}):ca=kd.test(g)?
30
- {H:[0,0],s:g}:void 0;ca&&d.push(ca)}if(1==d.length)return J(13),d[0].s;if(0==d.length)J(12);else{J(14);d=Gc(d,lc(b).split(".").length,0);if(1==d.length)return d[0].s;d=Gc(d,jc(c),1);1<d.length&&J(41);return d[0]&&d[0].s}}},Gc=function(a,b,c){for(var d=[],e=[],g,ca=0;ca<a.length;ca++){var l=a[ca];l.H[c]==b?d.push(l):void 0==g||l.H[c]<g?(e=[l],g=l.H[c]):l.H[c]==g&&e.push(l)}return 0<d.length?d:e},lc=function(a){return 0==a.indexOf(".")?a.substr(1):a},id=function(){var a=[],b=xa().split(".");if(4==b.length){var c=
31
- b[b.length-1];if(parseInt(c,10)==c)return["none"]}for(c=b.length-2;0<=c;c--)a.push(b.slice(c).join("."));a.push("none");return a},kc=function(a){if(!a)return"/";1<a.length&&a.lastIndexOf("/")==a.length-1&&(a=a.substr(0,a.length-1));0!=a.indexOf("/")&&(a="/"+a);return a},jc=function(a){a=kc(a);return"/"==a?1:a.split("/").length},le=function(a){a.ta&&J(77);a.na&&J(74);a.pa&&J(73);a.ua&&J(69)};function Xc(a,b,c){"none"==b&&(b="");var d=[],e=Ca(a);a="__utma"==a?6:2;for(var g=0;g<e.length;g++){var ca=(""+e[g]).split(".");ca.length>=a&&d.push({hash:ca[0],R:e[g],O:ca})}if(0!=d.length)return 1==d.length?d[0]:Zc(b,d)||Zc(c,d)||Zc(null,d)||d[0]}function Zc(a,b){if(null==a)var c=a=1;else c=La(a),a=La(D(a,".")?a.substring(1):"."+a);for(var d=0;d<b.length;d++)if(b[d].hash==c||b[d].hash==a)return b[d]};var od=new RegExp(/^https?:\/\/([^\/:]+)/),pd=/(.*)([?&#])(?:_ga=[^&#]*)(?:&?)(.*)/,me=/(.*)([?&#])(?:_gac=[^&#]*)(?:&?)(.*)/;function Bc(a){var b=a.get(Q),c=a.get(I)||"";b="_ga=2."+K(pa(c+b,0)+"."+c+"-"+b);if((c=a.get(ce))&&a.get(je)){var d=R(a,fe);1E3*d+R(a,he)<=(new Date).getTime()?(J(76),a=""):(J(44),a="&_gac=1."+K([pa(c,0),d,c].join(".")))}else a="";return b+a}
32
- function Ic(a,b){var c=new Date,d=O.navigator,e=d.plugins||[];a=[a,d.userAgent,c.getTimezoneOffset(),c.getYear(),c.getDate(),c.getHours(),c.getMinutes()+b];for(b=0;b<e.length;++b)a.push(e[b].description);return La(a.join("."))}function pa(a,b){var c=new Date,d=O.navigator,e=c.getHours()+Math.floor((c.getMinutes()+b)/60);return La([a,d.userAgent,d.language||"",c.getTimezoneOffset(),c.getYear(),c.getDate()+Math.floor(e/24),(24+e)%24,(60+c.getMinutes()+b)%60].join("."))}
33
- var Dc=function(a){J(48);this.target=a;this.T=!1};Dc.prototype.ca=function(a,b){if(a.tagName){if("a"==a.tagName.toLowerCase()){a.href&&(a.href=qd(this,a.href,b));return}if("form"==a.tagName.toLowerCase())return rd(this,a)}if("string"==typeof a)return qd(this,a,b)};
34
- var qd=function(a,b,c){var d=pd.exec(b);d&&3<=d.length&&(b=d[1]+(d[3]?d[2]+d[3]:""));(d=me.exec(b))&&3<=d.length&&(b=d[1]+(d[3]?d[2]+d[3]:""));a=a.target.get("linkerParam");var e=b.indexOf("?");d=b.indexOf("#");c?b+=(-1==d?"#":"&")+a:(c=-1==e?"?":"&",b=-1==d?b+(c+a):b.substring(0,d)+c+a+b.substring(d));b=b.replace(/&+_ga=/,"&_ga=");return b=b.replace(/&+_gac=/,"&_gac=")},rd=function(a,b){if(b&&b.action)if("get"==b.method.toLowerCase()){a=a.target.get("linkerParam").split("&");for(var c=0;c<a.length;c++){var d=
35
- a[c].split("="),e=d[1];d=d[0];for(var g=b.childNodes||[],ca=!1,l=0;l<g.length;l++)if(g[l].name==d){g[l].setAttribute("value",e);ca=!0;break}ca||(g=M.createElement("input"),g.setAttribute("type","hidden"),g.setAttribute("name",d),g.setAttribute("value",e),b.appendChild(g))}}else"post"==b.method.toLowerCase()&&(b.action=qd(a,b.action))};
36
- Dc.prototype.S=function(a,b,c){function d(c){try{c=c||O.event;a:{var d=c.target||c.srcElement;for(c=100;d&&0<c;){if(d.href&&d.nodeName.match(/^a(?:rea)?$/i)){var g=d;break a}d=d.parentNode;c--}g={}}("http:"==g.protocol||"https:"==g.protocol)&&sd(a,g.hostname||"")&&g.href&&(g.href=qd(e,g.href,b))}catch(k){J(26)}}var e=this;this.T||(this.T=!0,L(M,"mousedown",d,!1),L(M,"keyup",d,!1));c&&L(M,"submit",function(b){b=b||O.event;if((b=b.target||b.srcElement)&&b.action){var c=b.action.match(od);c&&sd(a,c[1])&&
37
- rd(e,b)}})};function sd(a,b){if(b==M.location.hostname)return!1;for(var c=0;c<a.length;c++)if(a[c]instanceof RegExp){if(a[c].test(b))return!0}else if(0<=b.indexOf(a[c]))return!0;return!1}function ke(a,b){return b!=Ic(a,0)&&b!=Ic(a,-1)&&b!=Ic(a,-2)&&b!=pa(a,0)&&b!=pa(a,-1)&&b!=pa(a,-2)};var p=/^(GTM|OPT)-[A-Z0-9]+$/,q=/;_gaexp=[^;]*/g,r=/;((__utma=)|([^;=]+=GAX?\d+\.))[^;]*/g,Aa=/^https?:\/\/[\w\-.]+\.google.com(:\d+)?\/optimize\/opt-launch\.html\?.*$/,t=function(a){function b(a,b){b&&(c+="&"+a+"="+K(b))}var c="https://www.google-analytics.com/gtm/js?id="+K(a.id);"dataLayer"!=a.B&&b("l",a.B);b("t",a.target);b("cid",a.clientId);b("cidt",a.ka);b("gac",a.la);b("aip",a.ia);a.sync&&b("m","sync");b("cycle",a.G);a.qa&&b("gclid",a.qa);Aa.test(M.referrer)&&b("cb",String(hd()));return c};var Jd=function(a,b,c){this.aa=b;(b=c)||(b=(b=P(a,V))&&"t0"!=b?Wd.test(b)?"_gat_"+Cc(P(a,Na)):"_gat_"+Cc(b):"_gat");this.Y=b;this.ra=null},Rd=function(a,b){var c=b.get(Wb);b.set(Wb,function(b){Pd(a,b,ed);Pd(a,b,ia);var d=c(b);Qd(a,b);return d});var d=b.get(Xb);b.set(Xb,function(b){var c=d(b);if(se(b)){if(ne()!==H(a,b)){J(80);var e={U:re(a,b,1),google:re(a,b,2),count:0};pe("https://stats.g.doubleclick.net/j/collect",e.U,e)}else ta(re(a,b,0));b.set(ed,"",!0)}return c})},Pd=function(a,b,c){!1===b.get(Ud)||
38
- b.get(c)||("1"==Ca(a.Y)[0]?b.set(c,"",!0):b.set(c,""+hd(),!0))},Qd=function(a,b){se(b)&&zc(a.Y,"1",b.get(Yb),b.get(W),b.get(Na),6E4)},se=function(a){return!!a.get(ed)&&a.get(Ud)},re=function(a,b,c){var d=new ee,e=function(a){$a(a).F&&d.set($a(a).F,b.get(a))};e(hb);e(ib);e(Na);e(Q);e(ed);if(0==c||1==c)e(Ad),e(ia),e(I);d.set($a(ld).F,Td(b));var g="";d.map(function(a,b){g+=K(a)+"=";g+=K(""+b)+"&"});g+="z="+hd();0==c?g=a.aa+g:1==c?g="t=dc&aip=1&_r=3&"+g:2==c&&(g="t=sr&aip=1&_r=4&slf_rd=1&"+g);return g},
39
- H=function(a,b){null===a.ra&&(a.ra=1===Ed(b),a.ra&&J(33));return a.ra},Wd=/^gtm\d+$/;var fd=function(a,b){a=a.b;if(!a.get("dcLoaded")){var c=new $c(Dd(a));c.set(29);a.set(Gd,c.w);b=b||{};var d;b[U]&&(d=Cc(b[U]));b=new Jd(a,"https://stats.g.doubleclick.net/r/collect?t=dc&aip=1&_r=3&",d);Rd(b,a);a.set("dcLoaded",!0)}};var Sd=function(a){if(!a.get("dcLoaded")&&"cookie"==a.get(ac)){var b=new Jd(a);Pd(b,a,ed);Pd(b,a,ia);Qd(b,a);if(se(a)){var c=ne()!==H(b,a);a.set(Md,1,!0);c?(J(79),a.set(gd,oe()+"/j/collect",!0),a.set(qe,{U:re(b,a,1),google:re(b,a,2),count:0},!0)):a.set(gd,oe()+"/r/collect",!0)}}};var Lc=function(){var a=O.gaGlobal=O.gaGlobal||{};return a.hid=a.hid||hd()};var ad,bd=function(a,b,c){if(!ad){var d=M.location.hash;var e=O.name,g=/^#?gaso=([^&]*)/;if(e=(d=(d=d&&d.match(g)||e&&e.match(g))?d[1]:Ca("GASO")[0]||"")&&d.match(/^(?:!([-0-9a-z.]{1,40})!)?([-.\w]{10,1200})$/i))zc("GASO",""+d,c,b,a,0),window._udo||(window._udo=b),window._utcp||(window._utcp=c),a=e[1],wa("https://www.google.com/analytics/web/inpage/pub/inpage.js?"+(a?"prefix="+a+"&":"")+hd(),"_gasojs");ad=!0}};var wb=/^(UA|YT|MO|GP)-(\d+)-(\d+)$/,pc=function(a){function b(a,b){d.b.data.set(a,b)}function c(a,c){b(a,c);d.filters.add(a)}var d=this;this.b=new Ya;this.filters=new Ha;b(V,a[V]);b(Na,sa(a[Na]));b(U,a[U]);b(W,a[W]||xa());b(Yb,a[Yb]);b(Zb,a[Zb]);b(Hd,a[Hd]);b($b,a[$b]);b(Wc,a[Wc]);b(bc,a[bc]);b(cc,a[cc]);b(Ka,a[Ka]);b(dc,a[dc]);b(ec,a[ec]);b(ac,a[ac]);b(Ad,a[Ad]);b(n,a[n]);b(Kd,a[Kd]);b(je,a[je]);b(hb,1);b(ib,"j68");c(Qb,Ma);c(oa,ua);c(dd,cd);c(Rb,Oa);c(md,vb);c(Sb,nc);c(Uc,Yc);c(Tb,Ja);c(Vb,Ta);
40
- c(Vc,Hc);c(zd,yd);c(Ld,Sd);c(Wb,Pa);c(Xb,Sa);c(Cd,Fd(this));Kc(this.b);Jc(this.b,a[Q]);this.b.set(jb,Lc());bd(this.b.get(Na),this.b.get(W),this.b.get(Yb))},Jc=function(a,b){var c=P(a,U);a.data.set(la,"_ga"==c?"_gid":c+"_gid");if("cookie"==P(a,ac)){hc=!1;c=Ca(P(a,U));c=Xd(a,c);if(!c){c=P(a,W);var d=P(a,$b)||xa();c=Xc("__utma",d,c);void 0!=c?(J(10),c=c.O[1]+"."+c.O[2]):c=void 0}c&&(hc=!0);if(d=c&&!a.get(Hd))if(d=c.split("."),2!=d.length)d=!1;else if(d=Number(d[1])){var e=R(a,Zb);d=d+e<(new Date).getTime()/
41
- 1E3}else d=!1;d&&(c=void 0);c&&(a.data.set(xd,c),a.data.set(Q,c),c=Ca(P(a,la)),(c=Xd(a,c))&&a.data.set(I,c));if(a.get(je)&&(c=a.get(ce),d=a.get(ie),!c||d&&"aw.ds"!=d)){c={};if(M){d=[];e=M.cookie.split(";");for(var g=/^\s*_gac_(UA-\d+-\d+)=\s*(.+?)\s*$/,ca=0;ca<e.length;ca++){var l=e[ca].match(g);l&&d.push({ja:l[1],value:l[2]})}e={};if(d&&d.length)for(g=0;g<d.length;g++)(ca=d[g].value.split("."),"1"!=ca[0]||3!=ca.length)?c&&(c.na=!0):ca[1]&&(e[d[g].ja]?c&&(c.pa=!0):e[d[g].ja]=[],e[d[g].ja].push({timestamp:ca[1],
42
- qa:ca[2]}));d=e}else d={};d=d[P(a,Na)];le(c);d&&0!=d.length&&(c=d[0],a.data.set(fe,c.timestamp),a.data.set(ce,c.qa))}}if(a.get(Hd))a:if(d=be("_ga",a.get(cc)))if(a.get(bc))if(c=d.indexOf("."),-1==c)J(22);else{e=d.substring(0,c);g=d.substring(c+1);c=g.indexOf(".");d=g.substring(0,c);g=g.substring(c+1);if("1"==e){if(c=g,ke(c,d)){J(23);break a}}else if("2"==e){c=g.indexOf("-");e="";0<c?(e=g.substring(0,c),c=g.substring(c+1)):c=g.substring(1);if(ke(e+c,d)){J(53);break a}e&&(J(2),a.data.set(I,e))}else{J(22);
43
- break a}J(11);a.data.set(Q,c);if(c=be("_gac",a.get(cc)))c=c.split("."),"1"!=c[0]||4!=c.length?J(72):ke(c[3],c[1])?J(71):(a.data.set(ce,c[3]),a.data.set(fe,c[2]),J(70))}else J(21);b&&(J(9),a.data.set(Q,K(b)));a.get(Q)||((b=(b=O.gaGlobal&&O.gaGlobal.vid)&&-1!=b.search(jd)?b:void 0)?(J(17),a.data.set(Q,b)):(J(8),a.data.set(Q,ra())));a.get(I)||(J(3),a.data.set(I,ra()));mc(a)},Kc=function(a){var b=O.navigator,c=O.screen,d=M.location;a.set(lb,ya(a.get(ec),a.get(Kd)));if(d){var e=d.pathname||"";"/"!=e.charAt(0)&&
44
- (J(31),e="/"+e);a.set(kb,d.protocol+"//"+d.hostname+e+d.search)}c&&a.set(qb,c.width+"x"+c.height);c&&a.set(pb,c.colorDepth+"-bit");c=M.documentElement;var g=(e=M.body)&&e.clientWidth&&e.clientHeight,ca=[];c&&c.clientWidth&&c.clientHeight&&("CSS1Compat"===M.compatMode||!g)?ca=[c.clientWidth,c.clientHeight]:g&&(ca=[e.clientWidth,e.clientHeight]);c=0>=ca[0]||0>=ca[1]?"":ca.join("x");a.set(rb,c);a.set(tb,fc());a.set(ob,M.characterSet||M.charset);a.set(sb,b&&"function"===typeof b.javaEnabled&&b.javaEnabled()||
45
- !1);a.set(nb,(b&&(b.language||b.browserLanguage)||"").toLowerCase());a.data.set(ce,be("gclid",!0));a.data.set(ie,be("gclsrc",!0));a.data.set(fe,Math.round((new Date).getTime()/1E3));if(d&&a.get(cc)&&(b=M.location.hash)){b=b.split(/[?&#]+/);d=[];for(c=0;c<b.length;++c)(D(b[c],"utm_id")||D(b[c],"utm_campaign")||D(b[c],"utm_source")||D(b[c],"utm_medium")||D(b[c],"utm_term")||D(b[c],"utm_content")||D(b[c],"gclid")||D(b[c],"dclid")||D(b[c],"gclsrc"))&&d.push(b[c]);0<d.length&&(b="#"+d.join("&"),a.set(kb,
46
- a.get(kb)+b))}};pc.prototype.get=function(a){return this.b.get(a)};pc.prototype.set=function(a,b){this.b.set(a,b)};var qc={pageview:[mb],event:[ub,xb,yb,zb],social:[Bb,Cb,Db],timing:[Mb,Nb,Pb,Ob]};pc.prototype.send=function(a){if(!(1>arguments.length)){if("string"===typeof arguments[0]){var b=arguments[0];var c=[].slice.call(arguments,1)}else b=arguments[0]&&arguments[0][Va],c=arguments;b&&(c=za(qc[b]||[],c),c[Va]=b,this.b.set(c,void 0,!0),this.filters.D(this.b),this.b.data.m={})}};
47
- pc.prototype.ma=function(a,b){var c=this;u(a,c,b)||(v(a,function(){u(a,c,b)}),y(String(c.get(V)),a,void 0,b,!0))};var rc=function(a){if("prerender"==M.visibilityState)return!1;a();return!0},z=function(a){if(!rc(a)){J(16);var b=!1,c=function(){if(!b&&rc(a)){b=!0;var d=c,e=M;e.removeEventListener?e.removeEventListener("visibilitychange",d,!1):e.detachEvent&&e.detachEvent("onvisibilitychange",d)}};L(M,"visibilitychange",c)}};var td=/^(?:(\w+)\.)?(?:(\w+):)?(\w+)$/,sc=function(a){if(ea(a[0]))this.u=a[0];else{var b=td.exec(a[0]);null!=b&&4==b.length&&(this.c=b[1]||"t0",this.K=b[2]||"",this.C=b[3],this.a=[].slice.call(a,1),this.K||(this.A="create"==this.C,this.i="require"==this.C,this.g="provide"==this.C,this.ba="remove"==this.C),this.i&&(3<=this.a.length?(this.X=this.a[1],this.W=this.a[2]):this.a[1]&&(qa(this.a[1])?this.X=this.a[1]:this.W=this.a[1])));b=a[1];a=a[2];if(!this.C)throw"abort";if(this.i&&(!qa(b)||""==b))throw"abort";
48
- if(this.g&&(!qa(b)||""==b||!ea(a)))throw"abort";if(ud(this.c)||ud(this.K))throw"abort";if(this.g&&"t0"!=this.c)throw"abort";}};function ud(a){return 0<=a.indexOf(".")||0<=a.indexOf(":")};var Yd,Zd,$d,A;Yd=new ee;$d=new ee;A=new ee;Zd={ec:45,ecommerce:46,linkid:47};
49
- var u=function(a,b,c){b==N||b.get(V);var d=Yd.get(a);if(!ea(d))return!1;b.plugins_=b.plugins_||new ee;if(b.plugins_.get(a))return!0;b.plugins_.set(a,new d(b,c||{}));return!0},y=function(a,b,c,d,e){if(!ea(Yd.get(b))&&!$d.get(b)){Zd.hasOwnProperty(b)&&J(Zd[b]);if(p.test(b)){J(52);a=N.j(a);if(!a)return!0;c=d||{};d={id:b,B:c.dataLayer||"dataLayer",ia:!!a.get("anonymizeIp"),sync:e,G:!1};a.get("&gtm")==b&&(d.G=!0);var g=String(a.get("name"));"t0"!=g&&(d.target=g);G(String(a.get("trackingId")))||(d.clientId=
50
- String(a.get(Q)),d.ka=Number(a.get(n)),c=c.palindrome?r:q,c=(c=M.cookie.replace(/^|(; +)/g,";").match(c))?c.sort().join("").substring(1):void 0,d.la=c,d.qa=E(a.b.get(kb)||"","gclid"));a=d.B;c=(new Date).getTime();O[a]=O[a]||[];c={"gtm.start":c};e||(c.event="gtm.js");O[a].push(c);c=t(d)}!c&&Zd.hasOwnProperty(b)?(J(39),c=b+".js"):J(43);c&&(c&&0<=c.indexOf("/")||(c=(Ba||"https:"==M.location.protocol?"https:":"http:")+"//www.google-analytics.com/plugins/ua/"+c),d=ae(c),a=d.protocol,c=M.location.protocol,
51
- ("https:"==a||a==c||("http:"!=a?0:"http:"==c))&&B(d)&&(wa(d.url,void 0,e),$d.set(b,!0)))}},v=function(a,b){var c=A.get(a)||[];c.push(b);A.set(a,c)},C=function(a,b){Yd.set(a,b);b=A.get(a)||[];for(var c=0;c<b.length;c++)b[c]();A.set(a,[])},B=function(a){var b=ae(M.location.href);if(D(a.url,"https://www.google-analytics.com/gtm/js?id="))return!0;if(a.query||0<=a.url.indexOf("?")||0<=a.path.indexOf("://"))return!1;if(a.host==b.host&&a.port==b.port)return!0;b="http:"==a.protocol?80:443;return"www.google-analytics.com"==
52
- a.host&&(a.port||b)==b&&D(a.path,"/plugins/")?!0:!1},ae=function(a){function b(a){var b=(a.hostname||"").split(":")[0].toLowerCase(),c=(a.protocol||"").toLowerCase();c=1*a.port||("http:"==c?80:"https:"==c?443:"");a=a.pathname||"";D(a,"/")||(a="/"+a);return[b,""+c,a]}var c=M.createElement("a");c.href=M.location.href;var d=(c.protocol||"").toLowerCase(),e=b(c),g=c.search||"",ca=d+"//"+e[0]+(e[1]?":"+e[1]:"");D(a,"//")?a=d+a:D(a,"/")?a=ca+a:!a||D(a,"?")?a=ca+e[2]+(a||g):0>a.split("/")[0].indexOf(":")&&
53
- (a=ca+e[2].substring(0,e[2].lastIndexOf("/"))+"/"+a);c.href=a;d=b(c);return{protocol:(c.protocol||"").toLowerCase(),host:d[0],port:d[1],path:d[2],query:c.search||"",url:a||""}};var Z={ga:function(){Z.f=[]}};Z.ga();Z.D=function(a){var b=Z.J.apply(Z,arguments);b=Z.f.concat(b);for(Z.f=[];0<b.length&&!Z.v(b[0])&&!(b.shift(),0<Z.f.length););Z.f=Z.f.concat(b)};Z.J=function(a){for(var b=[],c=0;c<arguments.length;c++)try{var d=new sc(arguments[c]);d.g?C(d.a[0],d.a[1]):(d.i&&(d.ha=y(d.c,d.a[0],d.X,d.W)),b.push(d))}catch(e){}return b};
54
- Z.v=function(a){try{if(a.u)a.u.call(O,N.j("t0"));else{var b=a.c==gb?N:N.j(a.c);if(a.A){if("t0"==a.c&&(b=N.create.apply(N,a.a),null===b))return!0}else if(a.ba)N.remove(a.c);else if(b)if(a.i){if(a.ha&&(a.ha=y(a.c,a.a[0],a.X,a.W)),!u(a.a[0],b,a.W))return!0}else if(a.K){var c=a.C,d=a.a,e=b.plugins_.get(a.K);e[c].apply(e,d)}else b[a.C].apply(b,a.a)}}catch(g){}};var N=function(a){J(1);Z.D.apply(Z,[arguments])};N.h={};N.P=[];N.L=0;N.answer=42;var uc=[Na,W,V];
55
- N.create=function(a){var b=za(uc,[].slice.call(arguments));b[V]||(b[V]="t0");var c=""+b[V];if(N.h[c])return N.h[c];a:{if(b[Kd]){J(67);if(b[ac]&&"cookie"!=b[ac]){var d=!1;break a}if(void 0!==Ab)b[Q]||(b[Q]=Ab);else{b:{d=String(b[W]||xa());var e=String(b[Yb]||"/"),g=Ca(String(b[U]||"_ga"));d=na(g,d,e);if(!d||jd.test(d))d=!0;else if(d=Ca("AMP_TOKEN"),0==d.length)d=!0;else{if(1==d.length&&(d=decodeURIComponent(d[0]),"$RETRIEVING"==d||"$OPT_OUT"==d||"$ERROR"==d||"$NOT_FOUND"==d)){d=!0;break b}d=!1}}if(d&&
56
- tc(ic,String(b[Na]))){d=!0;break a}}}d=!1}if(d)return null;b=new pc(b);N.h[c]=b;N.P.push(b);return b};N.remove=function(a){for(var b=0;b<N.P.length;b++)if(N.P[b].get(V)==a){N.P.splice(b,1);N.h[a]=null;break}};N.j=function(a){return N.h[a]};N.getAll=function(){return N.P.slice(0)};
57
- N.N=function(){"ga"!=gb&&J(49);var a=O[gb];if(!a||42!=a.answer){N.L=a&&a.l;N.loaded=!0;var b=O[gb]=N;X("create",b,b.create);X("remove",b,b.remove);X("getByName",b,b.j,5);X("getAll",b,b.getAll,6);b=pc.prototype;X("get",b,b.get,7);X("set",b,b.set,4);X("send",b,b.send);X("requireSync",b,b.ma);b=Ya.prototype;X("get",b,b.get);X("set",b,b.set);if("https:"!=M.location.protocol&&!Ba){a:{b=M.getElementsByTagName("script");for(var c=0;c<b.length&&100>c;c++){var d=b[c].src;if(d&&0==d.indexOf("https://www.google-analytics.com/analytics")){b=
58
- !0;break a}}b=!1}b&&(Ba=!0)}(O.gaplugins=O.gaplugins||{}).Linker=Dc;b=Dc.prototype;C("linker",Dc);X("decorate",b,b.ca,20);X("autoLink",b,b.S,25);C("displayfeatures",fd);C("adfeatures",fd);a=a&&a.q;ka(a)?Z.D.apply(N,a):J(50)}};N.da=function(){for(var a=N.getAll(),b=0;b<a.length;b++)a[b].get(V)};var da=N.N,Nd=O[gb];Nd&&Nd.r?da():z(da);z(function(){Z.D(["provide","render",ua])});function La(a){var b=1,c;if(a)for(b=0,c=a.length-1;0<=c;c--){var d=a.charCodeAt(c);b=(b<<6&268435455)+d+(d<<14);d=b&266338304;b=0!=d?b^d>>21:b}return b};})(window);
1
+ (function(){var $c=function(a){this.w=a||[]};$c.prototype.set=function(a){this.w[a]=!0};$c.prototype.encode=function(){for(var a=[],b=0;b<this.w.length;b++)this.w[b]&&(a[Math.floor(b/6)]^=1<<b%6);for(b=0;b<a.length;b++)a[b]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_".charAt(a[b]||0);return a.join("")+"~"};var vd=new $c;function J(a){vd.set(a)}var Td=function(a){a=Dd(a);a=new $c(a);for(var b=vd.w.slice(),c=0;c<a.w.length;c++)b[c]=b[c]||a.w[c];return(new $c(b)).encode()},Dd=function(a){a=a.get(Gd);ka(a)||(a=[]);return a};var ea=function(a){return"function"==typeof a},ka=function(a){return"[object Array]"==Object.prototype.toString.call(Object(a))},qa=function(a){return void 0!=a&&-1<(a.constructor+"").indexOf("String")},D=function(a,b){return 0==a.indexOf(b)},sa=function(a){return a?a.replace(/^[\s\xa0]+|[\s\xa0]+$/g,""):""},ra=function(){for(var a=O.navigator.userAgent+(M.cookie?M.cookie:"")+(M.referrer?M.referrer:""),b=a.length,c=O.history.length;0<c;)a+=c--^b++;return[hd()^La(a)&2147483647,Math.round((new Date).getTime()/
2
+ 1E3)].join(".")},ta=function(a){var b=M.createElement("img");b.width=1;b.height=1;b.src=a;return b},ua=function(){},K=function(a){if(encodeURIComponent instanceof Function)return encodeURIComponent(a);J(28);return a},L=function(a,b,c,d){try{a.addEventListener?a.addEventListener(b,c,!!d):a.attachEvent&&a.attachEvent("on"+b,c)}catch(e){J(27)}},f=/^[\w\-:/.?=&%!]+$/,wa=function(a,b,c){a&&(c?(c="",b&&f.test(b)&&(c=' id="'+b+'"'),f.test(a)&&M.write("<script"+c+' src="'+a+'">\x3c/script>')):(c=M.createElement("script"),
3
+ c.type="text/javascript",c.async=!0,c.src=a,b&&(c.id=b),a=M.getElementsByTagName("script")[0],a.parentNode.insertBefore(c,a)))},be=function(a,b){return E(M.location[b?"href":"search"],a)},E=function(a,b){return(a=a.match("(?:&|#|\\?)"+K(b).replace(/([.*+?^=!:${}()|\[\]\/\\])/g,"\\$1")+"=([^&#]*)"))&&2==a.length?a[1]:""},xa=function(){var a=""+M.location.hostname;return 0==a.indexOf("www.")?a.substring(4):a},de=function(a,b){var c=a.indexOf(b);if(5==c||6==c)if(a=a.charAt(c+b.length),"/"==a||"?"==a||
4
+ ""==a||":"==a)return!0;return!1},ya=function(a,b){var c=M.referrer;if(/^(https?|android-app):\/\//i.test(c)){if(a)return c;a="//"+M.location.hostname;if(!de(c,a))return b&&(b=a.replace(/\./g,"-")+".cdn.ampproject.org",de(c,b))?void 0:c}},za=function(a,b){if(1==b.length&&null!=b[0]&&"object"===typeof b[0])return b[0];for(var c={},d=Math.min(a.length+1,b.length),e=0;e<d;e++)if("object"===typeof b[e]){for(var g in b[e])b[e].hasOwnProperty(g)&&(c[g]=b[e][g]);break}else e<a.length&&(c[a[e]]=b[e]);return c};var ee=function(){this.keys=[];this.values={};this.m={}};ee.prototype.set=function(a,b,c){this.keys.push(a);c?this.m[":"+a]=b:this.values[":"+a]=b};ee.prototype.get=function(a){return this.m.hasOwnProperty(":"+a)?this.m[":"+a]:this.values[":"+a]};ee.prototype.map=function(a){for(var b=0;b<this.keys.length;b++){var c=this.keys[b],d=this.get(c);d&&a(c,d)}};var O=window,M=document,va=function(a,b){return setTimeout(a,b)};var F=window,Ea=document,G=function(a){var b=F._gaUserPrefs;if(b&&b.ioo&&b.ioo()||a&&!0===F["ga-disable-"+a])return!0;try{var c=F.external;if(c&&c._gaUserPrefs&&"oo"==c._gaUserPrefs)return!0}catch(g){}a=[];b=Ea.cookie.split(";");c=/^\s*AMP_TOKEN=\s*(.*?)\s*$/;for(var d=0;d<b.length;d++){var e=b[d].match(c);e&&a.push(e[1])}for(b=0;b<a.length;b++)if("$OPT_OUT"==decodeURIComponent(a[b]))return!0;return!1};var Ca=function(a){var b=[],c=M.cookie.split(";");a=new RegExp("^\\s*"+a+"=\\s*(.*?)\\s*$");for(var d=0;d<c.length;d++){var e=c[d].match(a);e&&b.push(e[1])}return b},zc=function(a,b,c,d,e,g){e=G(e)?!1:eb.test(M.location.hostname)||"/"==c&&vc.test(d)?!1:!0;if(!e)return!1;b&&1200<b.length&&(b=b.substring(0,1200));c=a+"="+b+"; path="+c+"; ";g&&(c+="expires="+(new Date((new Date).getTime()+g)).toGMTString()+"; ");d&&"none"!==d&&(c+="domain="+d+";");d=M.cookie;M.cookie=c;if(!(d=d!=M.cookie))a:{a=Ca(a);
5
+ for(d=0;d<a.length;d++)if(b==a[d]){d=!0;break a}d=!1}return d},Cc=function(a){return encodeURIComponent?encodeURIComponent(a).replace(/\(/g,"%28").replace(/\)/g,"%29"):a},vc=/^(www\.)?google(\.com?)?(\.[a-z]{2})?$/,eb=/(^|\.)doubleclick\.net$/i;var oc,Id=/^.*Version\/?(\d+)[^\d].*$/i,ne=function(){if(void 0!==O.__ga4__)return O.__ga4__;if(void 0===oc){var a=O.navigator.userAgent;if(a){var b=a;try{b=decodeURIComponent(a)}catch(c){}if(a=!(0<=b.indexOf("Chrome"))&&!(0<=b.indexOf("CriOS"))&&(0<=b.indexOf("Safari/")||0<=b.indexOf("Safari,")))b=Id.exec(b),a=11<=(b?Number(b[1]):-1);oc=a}else oc=!1}return oc};var Fa,Ga,fb,Ab,ja=/^https?:\/\/[^/]*cdn\.ampproject\.org\//,Ub=[],ic=function(){Z.D([ua])},tc=function(a,b){var c=Ca("AMP_TOKEN");if(1<c.length)return J(55),!1;c=decodeURIComponent(c[0]||"");if("$OPT_OUT"==c||"$ERROR"==c||G(b))return J(62),!1;if(!ja.test(M.referrer)&&"$NOT_FOUND"==c)return J(68),!1;if(void 0!==Ab)return J(56),va(function(){a(Ab)},0),!0;if(Fa)return Ub.push(a),!0;if("$RETRIEVING"==c)return J(57),va(function(){tc(a,b)},1E4),!0;Fa=!0;c&&"$"!=c[0]||(xc("$RETRIEVING",3E4),setTimeout(Mc,
6
+ 3E4),c="");return Pc(c,b)?(Ub.push(a),!0):!1},Pc=function(a,b,c){if(!window.JSON)return J(58),!1;var d=O.XMLHttpRequest;if(!d)return J(59),!1;var e=new d;if(!("withCredentials"in e))return J(60),!1;e.open("POST",(c||"https://ampcid.google.com/v1/publisher:getClientId")+"?key=AIzaSyA65lEHUEizIsNtlbNo-l2K18dT680nsaM",!0);e.withCredentials=!0;e.setRequestHeader("Content-Type","text/plain");e.onload=function(){Fa=!1;if(4==e.readyState){try{200!=e.status&&(J(61),Qc("","$ERROR",3E4));var d=JSON.parse(e.responseText);
7
+ d.optOut?(J(63),Qc("","$OPT_OUT",31536E6)):d.clientId?Qc(d.clientId,d.securityToken,31536E6):!c&&d.alternateUrl?(Ga&&clearTimeout(Ga),Fa=!0,Pc(a,b,d.alternateUrl)):(J(64),Qc("","$NOT_FOUND",36E5))}catch(ca){J(65),Qc("","$ERROR",3E4)}e=null}};d={originScope:"AMP_ECID_GOOGLE"};a&&(d.securityToken=a);e.send(JSON.stringify(d));Ga=va(function(){J(66);Qc("","$ERROR",3E4)},1E4);return!0},Mc=function(){Fa=!1},xc=function(a,b){if(void 0===fb){fb="";for(var c=id(),d=0;d<c.length;d++){var e=c[d];if(zc("AMP_TOKEN",
8
+ encodeURIComponent(a),"/",e,"",b)){fb=e;return}}}zc("AMP_TOKEN",encodeURIComponent(a),"/",fb,"",b)},Qc=function(a,b,c){Ga&&clearTimeout(Ga);b&&xc(b,c);Ab=a;b=Ub;Ub=[];for(c=0;c<b.length;c++)b[c](a)};var oe=function(){return(Ba||"https:"==M.location.protocol?"https:":"http:")+"//www.google-analytics.com"},Da=function(a){this.name="len";this.message=a+"-8192"},ba=function(a,b,c){c=c||ua;if(2036>=b.length)wc(a,b,c);else if(8192>=b.length)x(a,b,c)||wd(a,b,c)||wc(a,b,c);else throw ge("len",b.length),new Da(b.length);},pe=function(a,b,c,d){d=d||ua;wd(a+"?"+b,"",d,c)},wc=function(a,b,c){var d=ta(a+"?"+b);d.onload=d.onerror=function(){d.onload=null;d.onerror=null;c()}},wd=function(a,b,c,d){var e=O.XMLHttpRequest;
9
+ if(!e)return!1;var g=new e;if(!("withCredentials"in g))return!1;a=a.replace(/^http:/,"https:");g.open("POST",a,!0);g.withCredentials=!0;g.setRequestHeader("Content-Type","text/plain");g.onreadystatechange=function(){if(4==g.readyState){if(d)try{var a=g.responseText;if(1>a.length)ge("xhr","ver","0"),c();else if("1"!=a.charAt(0))ge("xhr","ver",String(a.length)),c();else if(3<d.count++)ge("xhr","tmr",""+d.count),c();else if(1==a.length)c();else{var b=a.charAt(1);if("d"==b)pe("https://stats.g.doubleclick.net/j/collect",
10
+ d.U,d,c);else if("g"==b){var e="https://www.google.%/ads/ga-audiences".replace("%","com");wc(e,d.google,c);var w=a.substring(2);if(w)if(/^[a-z.]{1,6}$/.test(w)){var ha="https://www.google.%/ads/ga-audiences".replace("%",w);wc(ha,d.google,ua)}else ge("tld","bcc",w)}else ge("xhr","brc",b),c()}}catch(ue){ge("xhr","rsp"),c()}else c();g=null}};g.send(b);return!0},x=function(a,b,c){return O.navigator.sendBeacon?O.navigator.sendBeacon(a,b)?(c(),!0):!1:!1},ge=function(a,b,c){1<=100*Math.random()||G("?")||
11
+ (a=["t=error","_e="+a,"_v=j68","sr=1"],b&&a.push("_f="+b),c&&a.push("_m="+K(c.substring(0,100))),a.push("aip=1"),a.push("z="+hd()),wc("https://www.google-analytics.com/u/d",a.join("&"),ua))};var h=function(a){var b=O.gaData=O.gaData||{};return b[a]=b[a]||{}};var Ha=function(){this.M=[]};Ha.prototype.add=function(a){this.M.push(a)};Ha.prototype.D=function(a){try{for(var b=0;b<this.M.length;b++){var c=a.get(this.M[b]);c&&ea(c)&&c.call(O,a)}}catch(d){}b=a.get(Ia);b!=ua&&ea(b)&&(a.set(Ia,ua,!0),setTimeout(b,10))};function Ja(a){if(100!=a.get(Ka)&&La(P(a,Q))%1E4>=100*R(a,Ka))throw"abort";}function Ma(a){if(G(P(a,Na)))throw"abort";}function Oa(){var a=M.location.protocol;if("http:"!=a&&"https:"!=a)throw"abort";}
12
+ function Pa(a){try{O.navigator.sendBeacon?J(42):O.XMLHttpRequest&&"withCredentials"in new O.XMLHttpRequest&&J(40)}catch(c){}a.set(ld,Td(a),!0);a.set(Ac,R(a,Ac)+1);var b=[];Qa.map(function(c,d){d.F&&(c=a.get(c),void 0!=c&&c!=d.defaultValue&&("boolean"==typeof c&&(c*=1),b.push(d.F+"="+K(""+c))))});b.push("z="+Bd());a.set(Ra,b.join("&"),!0)}
13
+ function Sa(a){var b=P(a,gd)||oe()+"/collect",c=a.get(qe),d=P(a,fa);!d&&a.get(Vd)&&(d="beacon");if(c)pe(b,P(a,Ra),c,a.get(Ia));else if(d){c=d;d=P(a,Ra);var e=a.get(Ia);e=e||ua;"image"==c?wc(b,d,e):"xhr"==c&&wd(b,d,e)||"beacon"==c&&x(b,d,e)||ba(b,d,e)}else ba(b,P(a,Ra),a.get(Ia));b=a.get(Na);b=h(b);c=b.hitcount;b.hitcount=c?c+1:1;b=a.get(Na);delete h(b).pending_experiments;a.set(Ia,ua,!0)}
14
+ function Hc(a){(O.gaData=O.gaData||{}).expId&&a.set(Nc,(O.gaData=O.gaData||{}).expId);(O.gaData=O.gaData||{}).expVar&&a.set(Oc,(O.gaData=O.gaData||{}).expVar);var b=a.get(Na);if(b=h(b).pending_experiments){var c=[];for(d in b)b.hasOwnProperty(d)&&b[d]&&c.push(encodeURIComponent(d)+"."+encodeURIComponent(b[d]));var d=c.join("!")}else d=void 0;d&&a.set(m,d,!0)}function cd(){if(O.navigator&&"preview"==O.navigator.loadPurpose)throw"abort";}
15
+ function yd(a){var b=O.gaDevIds;ka(b)&&0!=b.length&&a.set("&did",b.join(","),!0)}function vb(a){if(!a.get(Na))throw"abort";};var hd=function(){return Math.round(2147483647*Math.random())},Bd=function(){try{var a=new Uint32Array(1);O.crypto.getRandomValues(a);return a[0]&2147483647}catch(b){return hd()}};function Ta(a){var b=R(a,Ua);500<=b&&J(15);var c=P(a,Va);if("transaction"!=c&&"item"!=c){c=R(a,Wa);var d=(new Date).getTime(),e=R(a,Xa);0==e&&a.set(Xa,d);e=Math.round(2*(d-e)/1E3);0<e&&(c=Math.min(c+e,20),a.set(Xa,d));if(0>=c)throw"abort";a.set(Wa,--c)}a.set(Ua,++b)};var Ya=function(){this.data=new ee},Qa=new ee,Za=[];Ya.prototype.get=function(a){var b=$a(a),c=this.data.get(a);b&&void 0==c&&(c=ea(b.defaultValue)?b.defaultValue():b.defaultValue);return b&&b.Z?b.Z(this,a,c):c};var P=function(a,b){a=a.get(b);return void 0==a?"":""+a},R=function(a,b){a=a.get(b);return void 0==a||""===a?0:1*a};Ya.prototype.set=function(a,b,c){if(a)if("object"==typeof a)for(var d in a)a.hasOwnProperty(d)&&ab(this,d,a[d],c);else ab(this,a,b,c)};
16
+ var ab=function(a,b,c,d){if(void 0!=c)switch(b){case Na:wb.test(c)}var e=$a(b);e&&e.o?e.o(a,b,c,d):a.data.set(b,c,d)},bb=function(a,b,c,d,e){this.name=a;this.F=b;this.Z=d;this.o=e;this.defaultValue=c},$a=function(a){var b=Qa.get(a);if(!b)for(var c=0;c<Za.length;c++){var d=Za[c],e=d[0].exec(a);if(e){b=d[1](e);Qa.set(b.name,b);break}}return b},yc=function(a){var b;Qa.map(function(c,d){d.F==a&&(b=d)});return b&&b.name},S=function(a,b,c,d,e){a=new bb(a,b,c,d,e);Qa.set(a.name,a);return a.name},cb=function(a,
17
+ b){Za.push([new RegExp("^"+a+"$"),b])},T=function(a,b,c){return S(a,b,c,void 0,db)},db=function(){};var gb=qa(window.GoogleAnalyticsObject)&&sa(window.GoogleAnalyticsObject)||"ga",jd=/^(?:utma\.)?\d+\.\d+$/,kd=/^amp-[\w.-]{22,64}$/,Ba=!1,hb=T("apiVersion","v"),ib=T("clientVersion","_v");S("anonymizeIp","aip");var jb=S("adSenseId","a"),Va=S("hitType","t"),Ia=S("hitCallback"),Ra=S("hitPayload");S("nonInteraction","ni");S("currencyCode","cu");S("dataSource","ds");var Vd=S("useBeacon",void 0,!1),fa=S("transport");S("sessionControl","sc","");S("sessionGroup","sg");S("queueTime","qt");var Ac=S("_s","_s");
18
+ S("screenName","cd");var kb=S("location","dl",""),lb=S("referrer","dr"),mb=S("page","dp","");S("hostname","dh");var nb=S("language","ul"),ob=S("encoding","de");S("title","dt",function(){return M.title||void 0});cb("contentGroup([0-9]+)",function(a){return new bb(a[0],"cg"+a[1])});var pb=S("screenColors","sd"),qb=S("screenResolution","sr"),rb=S("viewportSize","vp"),sb=S("javaEnabled","je"),tb=S("flashVersion","fl");S("campaignId","ci");S("campaignName","cn");S("campaignSource","cs");
19
+ S("campaignMedium","cm");S("campaignKeyword","ck");S("campaignContent","cc");var ub=S("eventCategory","ec"),xb=S("eventAction","ea"),yb=S("eventLabel","el"),zb=S("eventValue","ev"),Bb=S("socialNetwork","sn"),Cb=S("socialAction","sa"),Db=S("socialTarget","st"),Eb=S("l1","plt"),Fb=S("l2","pdt"),Gb=S("l3","dns"),Hb=S("l4","rrt"),Ib=S("l5","srt"),Jb=S("l6","tcp"),Kb=S("l7","dit"),Lb=S("l8","clt"),Mb=S("timingCategory","utc"),Nb=S("timingVar","utv"),Ob=S("timingLabel","utl"),Pb=S("timingValue","utt");
20
+ S("appName","an");S("appVersion","av","");S("appId","aid","");S("appInstallerId","aiid","");S("exDescription","exd");S("exFatal","exf");var Nc=S("expId","xid"),Oc=S("expVar","xvar"),m=S("exp","exp"),Rc=S("_utma","_utma"),Sc=S("_utmz","_utmz"),Tc=S("_utmht","_utmht"),Ua=S("_hc",void 0,0),Xa=S("_ti",void 0,0),Wa=S("_to",void 0,20);cb("dimension([0-9]+)",function(a){return new bb(a[0],"cd"+a[1])});cb("metric([0-9]+)",function(a){return new bb(a[0],"cm"+a[1])});S("linkerParam",void 0,void 0,Bc,db);
21
+ var ld=S("usage","_u"),Gd=S("_um");S("forceSSL",void 0,void 0,function(){return Ba},function(a,b,c){J(34);Ba=!!c});var ed=S("_j1","jid"),ia=S("_j2","gjid");cb("\\&(.*)",function(a){var b=new bb(a[0],a[1]),c=yc(a[0].substring(1));c&&(b.Z=function(a){return a.get(c)},b.o=function(a,b,g,ca){a.set(c,g,ca)},b.F=void 0);return b});
22
+ var Qb=T("_oot"),dd=S("previewTask"),Rb=S("checkProtocolTask"),md=S("validationTask"),Sb=S("checkStorageTask"),Uc=S("historyImportTask"),Tb=S("samplerTask"),Vb=S("_rlt"),Wb=S("buildHitTask"),Xb=S("sendHitTask"),Vc=S("ceTask"),zd=S("devIdTask"),Cd=S("timingTask"),Ld=S("displayFeaturesTask"),oa=S("customTask"),V=T("name"),Q=T("clientId","cid"),n=T("clientIdTime"),xd=T("storedClientId"),Ad=S("userId","uid"),Na=T("trackingId","tid"),U=T("cookieName",void 0,"_ga"),W=T("cookieDomain"),Yb=T("cookiePath",
23
+ void 0,"/"),Zb=T("cookieExpires",void 0,63072E3),Hd=T("cookieUpdate",void 0,!0),$b=T("legacyCookieDomain"),Wc=T("legacyHistoryImport",void 0,!0),ac=T("storage",void 0,"cookie"),bc=T("allowLinker",void 0,!1),cc=T("allowAnchor",void 0,!0),Ka=T("sampleRate","sf",100),dc=T("siteSpeedSampleRate",void 0,1),ec=T("alwaysSendReferrer",void 0,!1),I=T("_gid","_gid"),la=T("_gcn"),Kd=T("useAmpClientId"),ce=T("_gclid"),fe=T("_gt"),he=T("_ge",void 0,7776E6),ie=T("_gclsrc"),je=T("storeGac",void 0,!0),gd=S("transportUrl"),
24
+ Md=S("_r","_r"),qe=S("_dp"),Ud=S("allowAdFeatures",void 0,!0);function X(a,b,c,d){b[a]=function(){try{return d&&J(d),c.apply(this,arguments)}catch(e){throw ge("exc",a,e&&e.name),e;}}};var Od=function(){this.V=100;this.$=this.fa=!1;this.oa="detourexp";this.groups=1},Ed=function(a){var b=new Od,c;if(b.fa&&b.$)return 0;b.$=!0;if(a){if(b.oa&&void 0!==a.get(b.oa))return R(a,b.oa);if(0==a.get(dc))return 0}if(0==b.V)return 0;void 0===c&&(c=Bd());return 0==c%b.V?Math.floor(c/b.V)%b.groups+1:0};function fc(){var a,b;if((b=(b=O.navigator)?b.plugins:null)&&b.length)for(var c=0;c<b.length&&!a;c++){var d=b[c];-1<d.name.indexOf("Shockwave Flash")&&(a=d.description)}if(!a)try{var e=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");a=e.GetVariable("$version")}catch(g){}if(!a)try{e=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6"),a="WIN 6,0,21,0",e.AllowScriptAccess="always",a=e.GetVariable("$version")}catch(g){}if(!a)try{e=new ActiveXObject("ShockwaveFlash.ShockwaveFlash"),a=e.GetVariable("$version")}catch(g){}a&&
25
+ (e=a.match(/[\d]+/g))&&3<=e.length&&(a=e[0]+"."+e[1]+" r"+e[2]);return a||void 0};var aa=function(a){var b=Math.min(R(a,dc),100);return La(P(a,Q))%100>=b?!1:!0},gc=function(a){var b={};if(Ec(b)||Fc(b)){var c=b[Eb];void 0==c||Infinity==c||isNaN(c)||(0<c?(Y(b,Gb),Y(b,Jb),Y(b,Ib),Y(b,Fb),Y(b,Hb),Y(b,Kb),Y(b,Lb),va(function(){a(b)},10)):L(O,"load",function(){gc(a)},!1))}},Ec=function(a){var b=O.performance||O.webkitPerformance;b=b&&b.timing;if(!b)return!1;var c=b.navigationStart;if(0==c)return!1;a[Eb]=b.loadEventStart-c;a[Gb]=b.domainLookupEnd-b.domainLookupStart;a[Jb]=b.connectEnd-
26
+ b.connectStart;a[Ib]=b.responseStart-b.requestStart;a[Fb]=b.responseEnd-b.responseStart;a[Hb]=b.fetchStart-c;a[Kb]=b.domInteractive-c;a[Lb]=b.domContentLoadedEventStart-c;return!0},Fc=function(a){if(O.top!=O)return!1;var b=O.external,c=b&&b.onloadT;b&&!b.isValidLoadTime&&(c=void 0);2147483648<c&&(c=void 0);0<c&&b.setPageReadyTime();if(void 0==c)return!1;a[Eb]=c;return!0},Y=function(a,b){var c=a[b];if(isNaN(c)||Infinity==c||0>c)a[b]=void 0},Fd=function(a){return function(b){if("pageview"==b.get(Va)&&
27
+ !a.I){a.I=!0;var c=aa(b),d=0<E(b.get(kb),"gclid").length;(c||d)&&gc(function(b){c&&a.send("timing",b);d&&a.send("adtiming",b)})}}};var hc=!1,mc=function(a){if("cookie"==P(a,ac)){if(a.get(Hd)||P(a,xd)!=P(a,Q)){var b=1E3*R(a,Zb);ma(a,Q,U,b)}ma(a,I,la,864E5);if(a.get(je)){var c=a.get(ce);if(c){var d=Math.min(R(a,he),1E3*R(a,Zb));d=Math.min(d,1E3*R(a,fe)+d-(new Date).getTime());a.data.set(he,d);b={};var e=a.get(fe),g=a.get(ie),ca=kc(P(a,Yb)),l=lc(P(a,W)),k=P(a,Na);g&&"aw.ds"!=g?b&&(b.ua=!0):(c=["1",e,Cc(c)].join("."),0<d&&(b&&(b.ta=!0),zc("_gac_"+Cc(k),c,ca,l,k,d)));le(b)}}else J(75);if(a="none"===lc(P(a,W)))a=M.location.hostname,
28
+ a=eb.test(a)||vc.test(a);a&&J(30)}},ma=function(a,b,c,d){var e=nd(a,b);if(e){c=P(a,c);var g=kc(P(a,Yb)),ca=lc(P(a,W)),l=P(a,Na);if("auto"!=ca)zc(c,e,g,ca,l,d)&&(hc=!0);else{J(32);for(var k=id(),w=0;w<k.length;w++)if(ca=k[w],a.data.set(W,ca),e=nd(a,b),zc(c,e,g,ca,l,d)){hc=!0;return}a.data.set(W,"auto")}}},nc=function(a){if("cookie"==P(a,ac)&&!hc&&(mc(a),!hc))throw"abort";},Yc=function(a){if(a.get(Wc)){var b=P(a,W),c=P(a,$b)||xa(),d=Xc("__utma",c,b);d&&(J(19),a.set(Tc,(new Date).getTime(),!0),a.set(Rc,
29
+ d.R),(b=Xc("__utmz",c,b))&&d.hash==b.hash&&a.set(Sc,b.R))}},nd=function(a,b){b=Cc(P(a,b));var c=lc(P(a,W)).split(".").length;a=jc(P(a,Yb));1<a&&(c+="-"+a);return b?["GA1",c,b].join("."):""},Xd=function(a,b){return na(b,P(a,W),P(a,Yb))},na=function(a,b,c){if(!a||1>a.length)J(12);else{for(var d=[],e=0;e<a.length;e++){var g=a[e];var ca=g.split(".");var l=ca.shift();("GA1"==l||"1"==l)&&1<ca.length?(g=ca.shift().split("-"),1==g.length&&(g[1]="1"),g[0]*=1,g[1]*=1,ca={H:g,s:ca.join(".")}):ca=kd.test(g)?
30
+ {H:[0,0],s:g}:void 0;ca&&d.push(ca)}if(1==d.length)return J(13),d[0].s;if(0==d.length)J(12);else{J(14);d=Gc(d,lc(b).split(".").length,0);if(1==d.length)return d[0].s;d=Gc(d,jc(c),1);1<d.length&&J(41);return d[0]&&d[0].s}}},Gc=function(a,b,c){for(var d=[],e=[],g,ca=0;ca<a.length;ca++){var l=a[ca];l.H[c]==b?d.push(l):void 0==g||l.H[c]<g?(e=[l],g=l.H[c]):l.H[c]==g&&e.push(l)}return 0<d.length?d:e},lc=function(a){return 0==a.indexOf(".")?a.substr(1):a},id=function(){var a=[],b=xa().split(".");if(4==b.length){var c=
31
+ b[b.length-1];if(parseInt(c,10)==c)return["none"]}for(c=b.length-2;0<=c;c--)a.push(b.slice(c).join("."));a.push("none");return a},kc=function(a){if(!a)return"/";1<a.length&&a.lastIndexOf("/")==a.length-1&&(a=a.substr(0,a.length-1));0!=a.indexOf("/")&&(a="/"+a);return a},jc=function(a){a=kc(a);return"/"==a?1:a.split("/").length},le=function(a){a.ta&&J(77);a.na&&J(74);a.pa&&J(73);a.ua&&J(69)};function Xc(a,b,c){"none"==b&&(b="");var d=[],e=Ca(a);a="__utma"==a?6:2;for(var g=0;g<e.length;g++){var ca=(""+e[g]).split(".");ca.length>=a&&d.push({hash:ca[0],R:e[g],O:ca})}if(0!=d.length)return 1==d.length?d[0]:Zc(b,d)||Zc(c,d)||Zc(null,d)||d[0]}function Zc(a,b){if(null==a)var c=a=1;else c=La(a),a=La(D(a,".")?a.substring(1):"."+a);for(var d=0;d<b.length;d++)if(b[d].hash==c||b[d].hash==a)return b[d]};var od=new RegExp(/^https?:\/\/([^\/:]+)/),pd=/(.*)([?&#])(?:_ga=[^&#]*)(?:&?)(.*)/,me=/(.*)([?&#])(?:_gac=[^&#]*)(?:&?)(.*)/;function Bc(a){var b=a.get(Q),c=a.get(I)||"";b="_ga=2."+K(pa(c+b,0)+"."+c+"-"+b);if((c=a.get(ce))&&a.get(je)){var d=R(a,fe);1E3*d+R(a,he)<=(new Date).getTime()?(J(76),a=""):(J(44),a="&_gac=1."+K([pa(c,0),d,c].join(".")))}else a="";return b+a}
32
+ function Ic(a,b){var c=new Date,d=O.navigator,e=d.plugins||[];a=[a,d.userAgent,c.getTimezoneOffset(),c.getYear(),c.getDate(),c.getHours(),c.getMinutes()+b];for(b=0;b<e.length;++b)a.push(e[b].description);return La(a.join("."))}function pa(a,b){var c=new Date,d=O.navigator,e=c.getHours()+Math.floor((c.getMinutes()+b)/60);return La([a,d.userAgent,d.language||"",c.getTimezoneOffset(),c.getYear(),c.getDate()+Math.floor(e/24),(24+e)%24,(60+c.getMinutes()+b)%60].join("."))}
33
+ var Dc=function(a){J(48);this.target=a;this.T=!1};Dc.prototype.ca=function(a,b){if(a.tagName){if("a"==a.tagName.toLowerCase()){a.href&&(a.href=qd(this,a.href,b));return}if("form"==a.tagName.toLowerCase())return rd(this,a)}if("string"==typeof a)return qd(this,a,b)};
34
+ var qd=function(a,b,c){var d=pd.exec(b);d&&3<=d.length&&(b=d[1]+(d[3]?d[2]+d[3]:""));(d=me.exec(b))&&3<=d.length&&(b=d[1]+(d[3]?d[2]+d[3]:""));a=a.target.get("linkerParam");var e=b.indexOf("?");d=b.indexOf("#");c?b+=(-1==d?"#":"&")+a:(c=-1==e?"?":"&",b=-1==d?b+(c+a):b.substring(0,d)+c+a+b.substring(d));b=b.replace(/&+_ga=/,"&_ga=");return b=b.replace(/&+_gac=/,"&_gac=")},rd=function(a,b){if(b&&b.action)if("get"==b.method.toLowerCase()){a=a.target.get("linkerParam").split("&");for(var c=0;c<a.length;c++){var d=
35
+ a[c].split("="),e=d[1];d=d[0];for(var g=b.childNodes||[],ca=!1,l=0;l<g.length;l++)if(g[l].name==d){g[l].setAttribute("value",e);ca=!0;break}ca||(g=M.createElement("input"),g.setAttribute("type","hidden"),g.setAttribute("name",d),g.setAttribute("value",e),b.appendChild(g))}}else"post"==b.method.toLowerCase()&&(b.action=qd(a,b.action))};
36
+ Dc.prototype.S=function(a,b,c){function d(c){try{c=c||O.event;a:{var d=c.target||c.srcElement;for(c=100;d&&0<c;){if(d.href&&d.nodeName.match(/^a(?:rea)?$/i)){var g=d;break a}d=d.parentNode;c--}g={}}("http:"==g.protocol||"https:"==g.protocol)&&sd(a,g.hostname||"")&&g.href&&(g.href=qd(e,g.href,b))}catch(k){J(26)}}var e=this;this.T||(this.T=!0,L(M,"mousedown",d,!1),L(M,"keyup",d,!1));c&&L(M,"submit",function(b){b=b||O.event;if((b=b.target||b.srcElement)&&b.action){var c=b.action.match(od);c&&sd(a,c[1])&&
37
+ rd(e,b)}})};function sd(a,b){if(b==M.location.hostname)return!1;for(var c=0;c<a.length;c++)if(a[c]instanceof RegExp){if(a[c].test(b))return!0}else if(0<=b.indexOf(a[c]))return!0;return!1}function ke(a,b){return b!=Ic(a,0)&&b!=Ic(a,-1)&&b!=Ic(a,-2)&&b!=pa(a,0)&&b!=pa(a,-1)&&b!=pa(a,-2)};var p=/^(GTM|OPT)-[A-Z0-9]+$/,q=/;_gaexp=[^;]*/g,r=/;((__utma=)|([^;=]+=GAX?\d+\.))[^;]*/g,Aa=/^https?:\/\/[\w\-.]+\.google.com(:\d+)?\/optimize\/opt-launch\.html\?.*$/,t=function(a){function b(a,b){b&&(c+="&"+a+"="+K(b))}var c="https://www.google-analytics.com/gtm/js?id="+K(a.id);"dataLayer"!=a.B&&b("l",a.B);b("t",a.target);b("cid",a.clientId);b("cidt",a.ka);b("gac",a.la);b("aip",a.ia);a.sync&&b("m","sync");b("cycle",a.G);a.qa&&b("gclid",a.qa);Aa.test(M.referrer)&&b("cb",String(hd()));return c};var Jd=function(a,b,c){this.aa=b;(b=c)||(b=(b=P(a,V))&&"t0"!=b?Wd.test(b)?"_gat_"+Cc(P(a,Na)):"_gat_"+Cc(b):"_gat");this.Y=b;this.ra=null},Rd=function(a,b){var c=b.get(Wb);b.set(Wb,function(b){Pd(a,b,ed);Pd(a,b,ia);var d=c(b);Qd(a,b);return d});var d=b.get(Xb);b.set(Xb,function(b){var c=d(b);if(se(b)){if(ne()!==H(a,b)){J(80);var e={U:re(a,b,1),google:re(a,b,2),count:0};pe("https://stats.g.doubleclick.net/j/collect",e.U,e)}else ta(re(a,b,0));b.set(ed,"",!0)}return c})},Pd=function(a,b,c){!1===b.get(Ud)||
38
+ b.get(c)||("1"==Ca(a.Y)[0]?b.set(c,"",!0):b.set(c,""+hd(),!0))},Qd=function(a,b){se(b)&&zc(a.Y,"1",b.get(Yb),b.get(W),b.get(Na),6E4)},se=function(a){return!!a.get(ed)&&a.get(Ud)},re=function(a,b,c){var d=new ee,e=function(a){$a(a).F&&d.set($a(a).F,b.get(a))};e(hb);e(ib);e(Na);e(Q);e(ed);if(0==c||1==c)e(Ad),e(ia),e(I);d.set($a(ld).F,Td(b));var g="";d.map(function(a,b){g+=K(a)+"=";g+=K(""+b)+"&"});g+="z="+hd();0==c?g=a.aa+g:1==c?g="t=dc&aip=1&_r=3&"+g:2==c&&(g="t=sr&aip=1&_r=4&slf_rd=1&"+g);return g},
39
+ H=function(a,b){null===a.ra&&(a.ra=1===Ed(b),a.ra&&J(33));return a.ra},Wd=/^gtm\d+$/;var fd=function(a,b){a=a.b;if(!a.get("dcLoaded")){var c=new $c(Dd(a));c.set(29);a.set(Gd,c.w);b=b||{};var d;b[U]&&(d=Cc(b[U]));b=new Jd(a,"https://stats.g.doubleclick.net/r/collect?t=dc&aip=1&_r=3&",d);Rd(b,a);a.set("dcLoaded",!0)}};var Sd=function(a){if(!a.get("dcLoaded")&&"cookie"==a.get(ac)){var b=new Jd(a);Pd(b,a,ed);Pd(b,a,ia);Qd(b,a);if(se(a)){var c=ne()!==H(b,a);a.set(Md,1,!0);c?(J(79),a.set(gd,oe()+"/j/collect",!0),a.set(qe,{U:re(b,a,1),google:re(b,a,2),count:0},!0)):a.set(gd,oe()+"/r/collect",!0)}}};var Lc=function(){var a=O.gaGlobal=O.gaGlobal||{};return a.hid=a.hid||hd()};var ad,bd=function(a,b,c){if(!ad){var d=M.location.hash;var e=O.name,g=/^#?gaso=([^&]*)/;if(e=(d=(d=d&&d.match(g)||e&&e.match(g))?d[1]:Ca("GASO")[0]||"")&&d.match(/^(?:!([-0-9a-z.]{1,40})!)?([-.\w]{10,1200})$/i))zc("GASO",""+d,c,b,a,0),window._udo||(window._udo=b),window._utcp||(window._utcp=c),a=e[1],wa("https://www.google.com/analytics/web/inpage/pub/inpage.js?"+(a?"prefix="+a+"&":"")+hd(),"_gasojs");ad=!0}};var wb=/^(UA|YT|MO|GP)-(\d+)-(\d+)$/,pc=function(a){function b(a,b){d.b.data.set(a,b)}function c(a,c){b(a,c);d.filters.add(a)}var d=this;this.b=new Ya;this.filters=new Ha;b(V,a[V]);b(Na,sa(a[Na]));b(U,a[U]);b(W,a[W]||xa());b(Yb,a[Yb]);b(Zb,a[Zb]);b(Hd,a[Hd]);b($b,a[$b]);b(Wc,a[Wc]);b(bc,a[bc]);b(cc,a[cc]);b(Ka,a[Ka]);b(dc,a[dc]);b(ec,a[ec]);b(ac,a[ac]);b(Ad,a[Ad]);b(n,a[n]);b(Kd,a[Kd]);b(je,a[je]);b(hb,1);b(ib,"j68");c(Qb,Ma);c(oa,ua);c(dd,cd);c(Rb,Oa);c(md,vb);c(Sb,nc);c(Uc,Yc);c(Tb,Ja);c(Vb,Ta);
40
+ c(Vc,Hc);c(zd,yd);c(Ld,Sd);c(Wb,Pa);c(Xb,Sa);c(Cd,Fd(this));Kc(this.b);Jc(this.b,a[Q]);this.b.set(jb,Lc());bd(this.b.get(Na),this.b.get(W),this.b.get(Yb))},Jc=function(a,b){var c=P(a,U);a.data.set(la,"_ga"==c?"_gid":c+"_gid");if("cookie"==P(a,ac)){hc=!1;c=Ca(P(a,U));c=Xd(a,c);if(!c){c=P(a,W);var d=P(a,$b)||xa();c=Xc("__utma",d,c);void 0!=c?(J(10),c=c.O[1]+"."+c.O[2]):c=void 0}c&&(hc=!0);if(d=c&&!a.get(Hd))if(d=c.split("."),2!=d.length)d=!1;else if(d=Number(d[1])){var e=R(a,Zb);d=d+e<(new Date).getTime()/
41
+ 1E3}else d=!1;d&&(c=void 0);c&&(a.data.set(xd,c),a.data.set(Q,c),c=Ca(P(a,la)),(c=Xd(a,c))&&a.data.set(I,c));if(a.get(je)&&(c=a.get(ce),d=a.get(ie),!c||d&&"aw.ds"!=d)){c={};if(M){d=[];e=M.cookie.split(";");for(var g=/^\s*_gac_(UA-\d+-\d+)=\s*(.+?)\s*$/,ca=0;ca<e.length;ca++){var l=e[ca].match(g);l&&d.push({ja:l[1],value:l[2]})}e={};if(d&&d.length)for(g=0;g<d.length;g++)(ca=d[g].value.split("."),"1"!=ca[0]||3!=ca.length)?c&&(c.na=!0):ca[1]&&(e[d[g].ja]?c&&(c.pa=!0):e[d[g].ja]=[],e[d[g].ja].push({timestamp:ca[1],
42
+ qa:ca[2]}));d=e}else d={};d=d[P(a,Na)];le(c);d&&0!=d.length&&(c=d[0],a.data.set(fe,c.timestamp),a.data.set(ce,c.qa))}}if(a.get(Hd))a:if(d=be("_ga",a.get(cc)))if(a.get(bc))if(c=d.indexOf("."),-1==c)J(22);else{e=d.substring(0,c);g=d.substring(c+1);c=g.indexOf(".");d=g.substring(0,c);g=g.substring(c+1);if("1"==e){if(c=g,ke(c,d)){J(23);break a}}else if("2"==e){c=g.indexOf("-");e="";0<c?(e=g.substring(0,c),c=g.substring(c+1)):c=g.substring(1);if(ke(e+c,d)){J(53);break a}e&&(J(2),a.data.set(I,e))}else{J(22);
43
+ break a}J(11);a.data.set(Q,c);if(c=be("_gac",a.get(cc)))c=c.split("."),"1"!=c[0]||4!=c.length?J(72):ke(c[3],c[1])?J(71):(a.data.set(ce,c[3]),a.data.set(fe,c[2]),J(70))}else J(21);b&&(J(9),a.data.set(Q,K(b)));a.get(Q)||((b=(b=O.gaGlobal&&O.gaGlobal.vid)&&-1!=b.search(jd)?b:void 0)?(J(17),a.data.set(Q,b)):(J(8),a.data.set(Q,ra())));a.get(I)||(J(3),a.data.set(I,ra()));mc(a)},Kc=function(a){var b=O.navigator,c=O.screen,d=M.location;a.set(lb,ya(a.get(ec),a.get(Kd)));if(d){var e=d.pathname||"";"/"!=e.charAt(0)&&
44
+ (J(31),e="/"+e);a.set(kb,d.protocol+"//"+d.hostname+e+d.search)}c&&a.set(qb,c.width+"x"+c.height);c&&a.set(pb,c.colorDepth+"-bit");c=M.documentElement;var g=(e=M.body)&&e.clientWidth&&e.clientHeight,ca=[];c&&c.clientWidth&&c.clientHeight&&("CSS1Compat"===M.compatMode||!g)?ca=[c.clientWidth,c.clientHeight]:g&&(ca=[e.clientWidth,e.clientHeight]);c=0>=ca[0]||0>=ca[1]?"":ca.join("x");a.set(rb,c);a.set(tb,fc());a.set(ob,M.characterSet||M.charset);a.set(sb,b&&"function"===typeof b.javaEnabled&&b.javaEnabled()||
45
+ !1);a.set(nb,(b&&(b.language||b.browserLanguage)||"").toLowerCase());a.data.set(ce,be("gclid",!0));a.data.set(ie,be("gclsrc",!0));a.data.set(fe,Math.round((new Date).getTime()/1E3));if(d&&a.get(cc)&&(b=M.location.hash)){b=b.split(/[?&#]+/);d=[];for(c=0;c<b.length;++c)(D(b[c],"utm_id")||D(b[c],"utm_campaign")||D(b[c],"utm_source")||D(b[c],"utm_medium")||D(b[c],"utm_term")||D(b[c],"utm_content")||D(b[c],"gclid")||D(b[c],"dclid")||D(b[c],"gclsrc"))&&d.push(b[c]);0<d.length&&(b="#"+d.join("&"),a.set(kb,
46
+ a.get(kb)+b))}};pc.prototype.get=function(a){return this.b.get(a)};pc.prototype.set=function(a,b){this.b.set(a,b)};var qc={pageview:[mb],event:[ub,xb,yb,zb],social:[Bb,Cb,Db],timing:[Mb,Nb,Pb,Ob]};pc.prototype.send=function(a){if(!(1>arguments.length)){if("string"===typeof arguments[0]){var b=arguments[0];var c=[].slice.call(arguments,1)}else b=arguments[0]&&arguments[0][Va],c=arguments;b&&(c=za(qc[b]||[],c),c[Va]=b,this.b.set(c,void 0,!0),this.filters.D(this.b),this.b.data.m={})}};
47
+ pc.prototype.ma=function(a,b){var c=this;u(a,c,b)||(v(a,function(){u(a,c,b)}),y(String(c.get(V)),a,void 0,b,!0))};var rc=function(a){if("prerender"==M.visibilityState)return!1;a();return!0},z=function(a){if(!rc(a)){J(16);var b=!1,c=function(){if(!b&&rc(a)){b=!0;var d=c,e=M;e.removeEventListener?e.removeEventListener("visibilitychange",d,!1):e.detachEvent&&e.detachEvent("onvisibilitychange",d)}};L(M,"visibilitychange",c)}};var td=/^(?:(\w+)\.)?(?:(\w+):)?(\w+)$/,sc=function(a){if(ea(a[0]))this.u=a[0];else{var b=td.exec(a[0]);null!=b&&4==b.length&&(this.c=b[1]||"t0",this.K=b[2]||"",this.C=b[3],this.a=[].slice.call(a,1),this.K||(this.A="create"==this.C,this.i="require"==this.C,this.g="provide"==this.C,this.ba="remove"==this.C),this.i&&(3<=this.a.length?(this.X=this.a[1],this.W=this.a[2]):this.a[1]&&(qa(this.a[1])?this.X=this.a[1]:this.W=this.a[1])));b=a[1];a=a[2];if(!this.C)throw"abort";if(this.i&&(!qa(b)||""==b))throw"abort";
48
+ if(this.g&&(!qa(b)||""==b||!ea(a)))throw"abort";if(ud(this.c)||ud(this.K))throw"abort";if(this.g&&"t0"!=this.c)throw"abort";}};function ud(a){return 0<=a.indexOf(".")||0<=a.indexOf(":")};var Yd,Zd,$d,A;Yd=new ee;$d=new ee;A=new ee;Zd={ec:45,ecommerce:46,linkid:47};
49
+ var u=function(a,b,c){b==N||b.get(V);var d=Yd.get(a);if(!ea(d))return!1;b.plugins_=b.plugins_||new ee;if(b.plugins_.get(a))return!0;b.plugins_.set(a,new d(b,c||{}));return!0},y=function(a,b,c,d,e){if(!ea(Yd.get(b))&&!$d.get(b)){Zd.hasOwnProperty(b)&&J(Zd[b]);if(p.test(b)){J(52);a=N.j(a);if(!a)return!0;c=d||{};d={id:b,B:c.dataLayer||"dataLayer",ia:!!a.get("anonymizeIp"),sync:e,G:!1};a.get("&gtm")==b&&(d.G=!0);var g=String(a.get("name"));"t0"!=g&&(d.target=g);G(String(a.get("trackingId")))||(d.clientId=
50
+ String(a.get(Q)),d.ka=Number(a.get(n)),c=c.palindrome?r:q,c=(c=M.cookie.replace(/^|(; +)/g,";").match(c))?c.sort().join("").substring(1):void 0,d.la=c,d.qa=E(a.b.get(kb)||"","gclid"));a=d.B;c=(new Date).getTime();O[a]=O[a]||[];c={"gtm.start":c};e||(c.event="gtm.js");O[a].push(c);c=t(d)}!c&&Zd.hasOwnProperty(b)?(J(39),c=b+".js"):J(43);c&&(c&&0<=c.indexOf("/")||(c=(Ba||"https:"==M.location.protocol?"https:":"http:")+"//www.google-analytics.com/plugins/ua/"+c),d=ae(c),a=d.protocol,c=M.location.protocol,
51
+ ("https:"==a||a==c||("http:"!=a?0:"http:"==c))&&B(d)&&(wa(d.url,void 0,e),$d.set(b,!0)))}},v=function(a,b){var c=A.get(a)||[];c.push(b);A.set(a,c)},C=function(a,b){Yd.set(a,b);b=A.get(a)||[];for(var c=0;c<b.length;c++)b[c]();A.set(a,[])},B=function(a){var b=ae(M.location.href);if(D(a.url,"https://www.google-analytics.com/gtm/js?id="))return!0;if(a.query||0<=a.url.indexOf("?")||0<=a.path.indexOf("://"))return!1;if(a.host==b.host&&a.port==b.port)return!0;b="http:"==a.protocol?80:443;return"www.google-analytics.com"==
52
+ a.host&&(a.port||b)==b&&D(a.path,"/plugins/")?!0:!1},ae=function(a){function b(a){var b=(a.hostname||"").split(":")[0].toLowerCase(),c=(a.protocol||"").toLowerCase();c=1*a.port||("http:"==c?80:"https:"==c?443:"");a=a.pathname||"";D(a,"/")||(a="/"+a);return[b,""+c,a]}var c=M.createElement("a");c.href=M.location.href;var d=(c.protocol||"").toLowerCase(),e=b(c),g=c.search||"",ca=d+"//"+e[0]+(e[1]?":"+e[1]:"");D(a,"//")?a=d+a:D(a,"/")?a=ca+a:!a||D(a,"?")?a=ca+e[2]+(a||g):0>a.split("/")[0].indexOf(":")&&
53
+ (a=ca+e[2].substring(0,e[2].lastIndexOf("/"))+"/"+a);c.href=a;d=b(c);return{protocol:(c.protocol||"").toLowerCase(),host:d[0],port:d[1],path:d[2],query:c.search||"",url:a||""}};var Z={ga:function(){Z.f=[]}};Z.ga();Z.D=function(a){var b=Z.J.apply(Z,arguments);b=Z.f.concat(b);for(Z.f=[];0<b.length&&!Z.v(b[0])&&!(b.shift(),0<Z.f.length););Z.f=Z.f.concat(b)};Z.J=function(a){for(var b=[],c=0;c<arguments.length;c++)try{var d=new sc(arguments[c]);d.g?C(d.a[0],d.a[1]):(d.i&&(d.ha=y(d.c,d.a[0],d.X,d.W)),b.push(d))}catch(e){}return b};
54
+ Z.v=function(a){try{if(a.u)a.u.call(O,N.j("t0"));else{var b=a.c==gb?N:N.j(a.c);if(a.A){if("t0"==a.c&&(b=N.create.apply(N,a.a),null===b))return!0}else if(a.ba)N.remove(a.c);else if(b)if(a.i){if(a.ha&&(a.ha=y(a.c,a.a[0],a.X,a.W)),!u(a.a[0],b,a.W))return!0}else if(a.K){var c=a.C,d=a.a,e=b.plugins_.get(a.K);e[c].apply(e,d)}else b[a.C].apply(b,a.a)}}catch(g){}};var N=function(a){J(1);Z.D.apply(Z,[arguments])};N.h={};N.P=[];N.L=0;N.answer=42;var uc=[Na,W,V];
55
+ N.create=function(a){var b=za(uc,[].slice.call(arguments));b[V]||(b[V]="t0");var c=""+b[V];if(N.h[c])return N.h[c];a:{if(b[Kd]){J(67);if(b[ac]&&"cookie"!=b[ac]){var d=!1;break a}if(void 0!==Ab)b[Q]||(b[Q]=Ab);else{b:{d=String(b[W]||xa());var e=String(b[Yb]||"/"),g=Ca(String(b[U]||"_ga"));d=na(g,d,e);if(!d||jd.test(d))d=!0;else if(d=Ca("AMP_TOKEN"),0==d.length)d=!0;else{if(1==d.length&&(d=decodeURIComponent(d[0]),"$RETRIEVING"==d||"$OPT_OUT"==d||"$ERROR"==d||"$NOT_FOUND"==d)){d=!0;break b}d=!1}}if(d&&
56
+ tc(ic,String(b[Na]))){d=!0;break a}}}d=!1}if(d)return null;b=new pc(b);N.h[c]=b;N.P.push(b);return b};N.remove=function(a){for(var b=0;b<N.P.length;b++)if(N.P[b].get(V)==a){N.P.splice(b,1);N.h[a]=null;break}};N.j=function(a){return N.h[a]};N.getAll=function(){return N.P.slice(0)};
57
+ N.N=function(){"ga"!=gb&&J(49);var a=O[gb];if(!a||42!=a.answer){N.L=a&&a.l;N.loaded=!0;var b=O[gb]=N;X("create",b,b.create);X("remove",b,b.remove);X("getByName",b,b.j,5);X("getAll",b,b.getAll,6);b=pc.prototype;X("get",b,b.get,7);X("set",b,b.set,4);X("send",b,b.send);X("requireSync",b,b.ma);b=Ya.prototype;X("get",b,b.get);X("set",b,b.set);if("https:"!=M.location.protocol&&!Ba){a:{b=M.getElementsByTagName("script");for(var c=0;c<b.length&&100>c;c++){var d=b[c].src;if(d&&0==d.indexOf("https://www.google-analytics.com/analytics")){b=
58
+ !0;break a}}b=!1}b&&(Ba=!0)}(O.gaplugins=O.gaplugins||{}).Linker=Dc;b=Dc.prototype;C("linker",Dc);X("decorate",b,b.ca,20);X("autoLink",b,b.S,25);C("displayfeatures",fd);C("adfeatures",fd);a=a&&a.q;ka(a)?Z.D.apply(N,a):J(50)}};N.da=function(){for(var a=N.getAll(),b=0;b<a.length;b++)a[b].get(V)};var da=N.N,Nd=O[gb];Nd&&Nd.r?da():z(da);z(function(){Z.D(["provide","render",ua])});function La(a){var b=1,c;if(a)for(b=0,c=a.length-1;0<=c;c--){var d=a.charCodeAt(c);b=(b<<6&268435455)+d+(d<<14);d=b&266338304;b=0!=d?b^d>>21:b}return b};})(window);
components/ga-cache/includes/class.plugin.php CHANGED
@@ -19,7 +19,7 @@
19
 
20
  }
21
  } else {
22
- class WGA_PluginFactory extends Wbcr_Factory406_Plugin {
23
 
24
  }
25
  }
@@ -28,7 +28,7 @@
28
  class WGA_Plugin extends WGA_PluginFactory {
29
 
30
  /**
31
- * @var Wbcr_Factory406_Plugin
32
  */
33
  private static $app;
34
 
@@ -37,6 +37,8 @@
37
  */
38
  private $as_addon;
39
 
 
 
40
  /**
41
  * @param string $plugin_path
42
  * @param array $data
@@ -46,12 +48,12 @@
46
  {
47
  $this->as_addon = isset($data['as_addon']);
48
 
 
 
49
  if( $this->as_addon ) {
50
- $plugin_parent = isset($data['plugin_parent'])
51
- ? $data['plugin_parent']
52
- : null;
53
 
54
- if( !($plugin_parent instanceof Wbcr_Factory406_Plugin) ) {
55
  throw new Exception('An invalid instance of the class was passed.');
56
  }
57
 
@@ -64,7 +66,6 @@
64
  parent::__construct($plugin_path, $data);
65
  }
66
 
67
- $this->setTextDomain();
68
  $this->setModules();
69
 
70
  $this->globalScripts();
@@ -73,46 +74,45 @@
73
  $this->initActivation();
74
  $this->adminScripts();
75
  }
 
 
76
  }
77
 
78
  /**
79
- * @return Wbcr_Factory406_Plugin
80
  */
81
  public static function app()
82
  {
83
  return self::$app;
84
  }
85
 
86
- // todo: перенести этот медот в фреймворк
87
- protected function setTextDomain()
88
  {
89
- // Localization plugin
90
- //load_plugin_textdomain('simple-google-analytics', false, dirname(WCL_PLUGIN_BASE) . '/languages/');
91
-
92
- $domain = 'simple-google-analytics';
93
- $locale = apply_filters('plugin_locale', is_admin()
94
- ? get_user_locale()
95
- : get_locale(), $domain);
96
- $mofile = $domain . '-' . $locale . '.mo';
97
-
98
- if( !load_textdomain($domain, WGA_PLUGIN_DIR . '/languages/' . $mofile) ) {
99
- load_muplugin_textdomain($domain);
100
- }
101
  }
102
 
103
  protected function setModules()
104
  {
105
  if( !$this->as_addon ) {
106
  self::app()->load(array(
107
- array('libs/factory/bootstrap', 'factory_bootstrap_406', 'admin'),
108
- array('libs/factory/forms', 'factory_forms_407', 'admin'),
109
- array('libs/factory/pages', 'factory_pages_407', 'admin'),
110
- array('libs/factory/notices', 'factory_notices_405', 'admin'),
111
- array('libs/factory/clearfy', 'factory_clearfy_203', 'all')
112
 
113
  ));
114
  }
115
  }
 
 
 
 
 
 
 
 
 
116
 
117
  protected function initActivation()
118
  {
@@ -125,6 +125,10 @@
125
  if( $this->as_addon ) {
126
  return;
127
  }
 
 
 
 
128
  self::app()->registerPage('WGA_CachePage', WGA_PLUGIN_DIR . '/admin/pages/ga_cache.php');
129
  self::app()->registerPage('WGA_MoreFeaturesPage', WGA_PLUGIN_DIR . '/admin/pages/more-features.php');
130
  }
@@ -143,4 +147,4 @@
143
  new WGA_ConfigGACache(self::$app);
144
  }
145
  }
146
- }
19
 
20
  }
21
  } else {
22
+ class WGA_PluginFactory extends Wbcr_Factory409_Plugin {
23
 
24
  }
25
  }
28
  class WGA_Plugin extends WGA_PluginFactory {
29
 
30
  /**
31
+ * @var Wbcr_Factory409_Plugin
32
  */
33
  private static $app;
34
 
37
  */
38
  private $as_addon;
39
 
40
+ private $network_active;
41
+
42
  /**
43
  * @param string $plugin_path
44
  * @param array $data
48
  {
49
  $this->as_addon = isset($data['as_addon']);
50
 
51
+ $this->network_active = (is_multisite() && array_key_exists(WGA_PLUGIN_BASE, (array)get_site_option('active_sitewide_plugins')));
52
+
53
  if( $this->as_addon ) {
54
+ $plugin_parent = isset($data['plugin_parent']) ? $data['plugin_parent'] : null;
 
 
55
 
56
+ if( !($plugin_parent instanceof Wbcr_Factory409_Plugin) ) {
57
  throw new Exception('An invalid instance of the class was passed.');
58
  }
59
 
66
  parent::__construct($plugin_path, $data);
67
  }
68
 
 
69
  $this->setModules();
70
 
71
  $this->globalScripts();
74
  $this->initActivation();
75
  $this->adminScripts();
76
  }
77
+
78
+ add_action('plugins_loaded', array($this, 'pluginsLoaded'));
79
  }
80
 
81
  /**
82
+ * @return Wbcr_Factory409_Plugin
83
  */
84
  public static function app()
85
  {
86
  return self::$app;
87
  }
88
 
89
+ public function pluginsLoaded()
 
90
  {
91
+ self::app()->setTextDomain('simple-google-analytics', WGA_PLUGIN_DIR);
 
 
 
 
 
 
 
 
 
 
 
92
  }
93
 
94
  protected function setModules()
95
  {
96
  if( !$this->as_addon ) {
97
  self::app()->load(array(
98
+ array('libs/factory/bootstrap', 'factory_bootstrap_409', 'admin'),
99
+ array('libs/factory/forms', 'factory_forms_410', 'admin'),
100
+ array('libs/factory/pages', 'factory_pages_410', 'admin'),
101
+ array('libs/factory/notices', 'factory_notices_407', 'admin'),
102
+ array('libs/factory/clearfy', 'factory_clearfy_206', 'all')
103
 
104
  ));
105
  }
106
  }
107
+
108
+ public function isNetworkActive()
109
+ {
110
+ if( $this->network_active ) {
111
+ return true;
112
+ }
113
+
114
+ return false;
115
+ }
116
 
117
  protected function initActivation()
118
  {
125
  if( $this->as_addon ) {
126
  return;
127
  }
128
+
129
+ if( $this->isNetworkActive() and !is_network_admin() ) {
130
+ return;
131
+ }
132
  self::app()->registerPage('WGA_CachePage', WGA_PLUGIN_DIR . '/admin/pages/ga_cache.php');
133
  self::app()->registerPage('WGA_MoreFeaturesPage', WGA_PLUGIN_DIR . '/admin/pages/more-features.php');
134
  }
147
  new WGA_ConfigGACache(self::$app);
148
  }
149
  }
150
+ }
components/ga-cache/includes/classes/class.configurate-ga.php CHANGED
@@ -11,13 +11,13 @@
11
  exit;
12
  }
13
 
14
- class WGA_ConfigGACache extends Wbcr_FactoryClearfy203_Configurate {
15
 
16
 
17
  public function registerActionsAndFilters()
18
  {
19
 
20
- if( $this->getOption('ga_cache') ) {
21
  add_filter('cron_schedules', array($this, 'cronAdditions'));
22
 
23
  // Load update script to schedule in wp_cron.
@@ -57,7 +57,7 @@
57
 
58
  private function addGoogleAnaliticsScript()
59
  {
60
- $ga_tracking_id = $this->getOption('ga_tracking_id');
61
 
62
  if( !empty($ga_tracking_id) ) {
63
  $local_ga_file = WGA_PLUGIN_DIR . '/cache/local-ga.js';
@@ -68,8 +68,8 @@
68
  ob_end_clean();
69
  }
70
 
71
- $ga_script_position = $this->getOption('ga_script_position', 'footer');
72
- $ga_enqueue_order = $this->getOption('ga_enqueue_order', 0);
73
 
74
  switch( $ga_script_position ) {
75
  case 'header':
@@ -86,17 +86,17 @@
86
  */
87
  public function printGoogleAnalitics()
88
  {
89
- $ga_tracking_id = $this->getOption('ga_tracking_id');
90
- $ga_track_admin = $this->getOption('ga_track_admin');
91
 
92
  // If user is admin we don't want to render the tracking code, when option is disabled.
93
  if( empty($ga_tracking_id) || (current_user_can('manage_options') && (!$ga_track_admin)) ) {
94
  return;
95
  }
96
 
97
- $ga_adjusted_bounce_rate = $this->getOption('ga_adjusted_bounce_rate', 0);
98
- $ga_anonymize_ip = $this->getOption('ga_anonymize_ip', false);
99
- $ga_caos_disable_display_features = $this->getOption('ga_caos_disable_display_features', false);
100
 
101
  echo "<!-- Google Analytics Local by " . $this->plugin->getPluginTitle() . " -->" . PHP_EOL;
102
 
@@ -126,4 +126,4 @@
126
 
127
  echo "<!-- end Google Analytics Local by " . $this->plugin->getPluginTitle() . " -->" . PHP_EOL;
128
  }
129
- }
11
  exit;
12
  }
13
 
14
+ class WGA_ConfigGACache extends Wbcr_FactoryClearfy206_Configurate {
15
 
16
 
17
  public function registerActionsAndFilters()
18
  {
19
 
20
+ if( $this->getPopulateOption('ga_cache') ) {
21
  add_filter('cron_schedules', array($this, 'cronAdditions'));
22
 
23
  // Load update script to schedule in wp_cron.
57
 
58
  private function addGoogleAnaliticsScript()
59
  {
60
+ $ga_tracking_id = $this->getPopulateOption('ga_tracking_id');
61
 
62
  if( !empty($ga_tracking_id) ) {
63
  $local_ga_file = WGA_PLUGIN_DIR . '/cache/local-ga.js';
68
  ob_end_clean();
69
  }
70
 
71
+ $ga_script_position = $this->getPopulateOption('ga_script_position', 'footer');
72
+ $ga_enqueue_order = $this->getPopulateOption('ga_enqueue_order', 0);
73
 
74
  switch( $ga_script_position ) {
75
  case 'header':
86
  */
87
  public function printGoogleAnalitics()
88
  {
89
+ $ga_tracking_id = $this->getPopulateOption('ga_tracking_id');
90
+ $ga_track_admin = $this->getPopulateOption('ga_track_admin');
91
 
92
  // If user is admin we don't want to render the tracking code, when option is disabled.
93
  if( empty($ga_tracking_id) || (current_user_can('manage_options') && (!$ga_track_admin)) ) {
94
  return;
95
  }
96
 
97
+ $ga_adjusted_bounce_rate = $this->getPopulateOption('ga_adjusted_bounce_rate', 0);
98
+ $ga_anonymize_ip = $this->getPopulateOption('ga_anonymize_ip', false);
99
+ $ga_caos_disable_display_features = $this->getPopulateOption('ga_caos_disable_display_features', false);
100
 
101
  echo "<!-- Google Analytics Local by " . $this->plugin->getPluginTitle() . " -->" . PHP_EOL;
102
 
126
 
127
  echo "<!-- end Google Analytics Local by " . $this->plugin->getPluginTitle() . " -->" . PHP_EOL;
128
  }
129
+ }
components/ga-cache/languages/simple-google-analytics-nl_BE.po CHANGED
@@ -1,243 +1,243 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: Clearfy\n"
4
- "POT-Creation-Date: 2018-09-06 18:33+0300\n"
5
- "PO-Revision-Date: \n"
6
- "Last-Translator: \n"
7
- "Language-Team: \n"
8
- "Language: nl_BE\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: Poedit 2.1.1\n"
13
- "Plural-Forms: nplurals=2; plural=n != 1;\n"
14
- "X-Generator: Poedit 2.1.1\n"
15
- "X-Poedit-Basepath: ..\n"
16
- "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
17
- "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
18
- "X-Poedit-SourceCharset: UTF-8\n"
19
- "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c\n"
20
- "X-Poedit-SearchPath-0: .\n"
21
- "X-Poedit-SearchPathExcluded-0: libs\n"
22
- "X-Poedit-SearchPathExcluded-1: components\n"
23
- "X-Poedit-SearchPathExcluded-2: cache\n"
24
-
25
- #: admin/boot.php:27
26
- msgid "The <b>Simple Google Analytics</b> plugin has some major changes!"
27
- msgstr ""
28
-
29
- #: admin/boot.php:28
30
- msgid ""
31
- "Unfortunately, the old version of the plugin (2.2.2) is no longer supported, "
32
- "but you still can download it from the WordPress repository in case if the new "
33
- "release doesn’t work for you."
34
- msgstr ""
35
-
36
- #: admin/boot.php:29
37
- msgid ""
38
- "We’ve updated the code and fixed the compatibility issue for the latest "
39
- "WordPress and PHP versions. We’ve also added additional feature of the Local "
40
- "Google Analytics – this way your website will load faster. The plugin’s name "
41
- "has been changed to Local Google Analytics, but all features remained the same."
42
- msgstr ""
43
-
44
- #: admin/boot.php:30
45
- #, php-format
46
- msgid ""
47
- "Please, check <a href=\"%s\">plugin settings</a> and its performance on your "
48
- "website. We do care about you and want to avoid any problems with the new "
49
- "version."
50
- msgstr ""
51
-
52
- #: admin/boot.php:32
53
- #, php-format
54
- msgid ""
55
- "We are aimed to pay more attention to the speed and security aspects of your "
56
- "website. That’s why you should definitely try our basic WordPress optimization "
57
- "plugin as well. Clearfy includes functionality of this plugin and has many "
58
- "additional features for the website optimization:\n"
59
- "<a href=\"%s\">Donwload Clearfy for free</a>"
60
- msgstr ""
61
-
62
- #: admin/boot.php:121 admin/options.php:30 admin/pages/ga_cache.php:49
63
- msgid "Google Analytics Cache"
64
- msgstr ""
65
-
66
- #: admin/boot.php:127 admin/options.php:50
67
- msgid "Google analytic Code"
68
- msgstr "Google analytics Code"
69
-
70
- #: admin/boot.php:132 admin/options.php:71
71
- msgid "Use adjusted bounce rate?"
72
- msgstr "Aangepast bounce percentage gebruiken?"
73
-
74
- #: admin/boot.php:137 admin/options.php:80
75
- msgid "Change enqueue order?"
76
- msgstr "Enqueue volgorde wijzigen?"
77
-
78
- #: admin/boot.php:142 admin/options.php:89
79
- msgid "Disable all display features functionality?"
80
- msgstr "Alle weergave functionaliteit uitschakelen?"
81
-
82
- #: admin/boot.php:147 admin/options.php:98
83
- msgid "Use Anonymize IP? (Required by law for some countries)"
84
- msgstr "Gebruik anonimiseren IP? (Voor sommige landen wettelijk verplicht)"
85
-
86
- #: admin/boot.php:152 admin/options.php:107 admin/options.php:109
87
- msgid "Track logged in Administrators?"
88
- msgstr "Track ingelogde Beheerders?"
89
-
90
- #: admin/boot.php:157 admin/options.php:116
91
- msgid "Remove script from wp-cron?"
92
- msgstr "Verwijder script van wp-cron?"
93
-
94
- #: admin/boot.php:185
95
- msgid "Get ultimate plugin free"
96
- msgstr "Krijg ultieme plugin gratis"
97
-
98
- #: admin/options.php:23
99
- msgid "<strong>Google Analytics cache</strong>."
100
- msgstr "<strong>Google Analytics cache</strong>."
101
-
102
- #: admin/options.php:23
103
- msgid ""
104
- "To improve Google Page Speed indicators Analytics caching is needed. However, "
105
- "it can also slightly increase your website loading speed, because Analytics js "
106
- "files will load locally. The second case that you might need these settings is "
107
- "the usual Google Analytics connection to your website. You do not need to do "
108
- "this with other plugins or insert the tracking code into your theme."
109
- msgstr ""
110
- "Om de pagina snelheid indicatoren van Google te verbeteren, is caching in "
111
- "Analytics nodig. Het kan echter ook de laadsnelheid van uw website enigszins "
112
- "verhogen, omdat de Analytics js bestanden lokaal worden geladen. Het tweede "
113
- "geval waarvoor u deze instellingen nodig heeft, is de gebruikelijke Google "
114
- "Analytics verbinding met uw website. U hoeft dit niet met andere plugins te "
115
- "doen of de tracking code in uw thema in te voegen."
116
-
117
- #: admin/options.php:32
118
- msgid ""
119
- "If you enable this option, the plugin will begin to save a local copy of "
120
- "Google Analytics to speed up the loading of your website and improve Google "
121
- "Page Speed."
122
- msgstr ""
123
- "Als u deze optie inschakelt, zal de plugin beginnen met het opslaan van een "
124
- "lokale kopie van Google Analytics om het laden van uw website te versnellen en "
125
- "de Google Page Speed ​​te verbeteren."
126
-
127
- #: admin/options.php:32
128
- msgid ""
129
- "ATTENTION! Before using this option, remove the previously installed Google "
130
- "Analytics code inside your theme or plugins associated with this feature!"
131
- msgstr ""
132
- "AANDACHT! Voordat u deze optie gebruikt, verwijdert u de eerder geïnstalleerde "
133
- "Google Analytics code in uw thema of plugins die aan deze functie zijn "
134
- "gekoppeld!"
135
-
136
- #: admin/options.php:52
137
- msgid "Set the Google Analytics tracking code."
138
- msgstr "Stel de Google Analytics tracking code in."
139
-
140
- #: admin/options.php:63
141
- msgid "Save GA in"
142
- msgstr "Bewaar GA in"
143
-
144
- #: admin/options.php:64
145
- msgid "Select location for the Google Analytics code."
146
- msgstr "Selecteer een locatie voor de Google Analytics code."
147
-
148
- #: admin/options.php:74
149
- msgid ""
150
- "Essentially, you set up an event which is triggered after a user spends a "
151
- "certain amount of time on the landing page, telling Google Analytics not to "
152
- "count these users as bounces. A user may come to your website, find all of the "
153
- "information they need (a phone number, for example) and then leave the site "
154
- "without visiting another page. Without adjusted bounce rate, such a user would "
155
- "be considered a bounce, even though they had a successful experience. By "
156
- "defining a time limit after which you can consider a user to be \"engaged,\" "
157
- "that user would no longer count as a bounce, and you'd get a more accurate "
158
- "idea of whether they found what they were looking for."
159
- msgstr ""
160
- "In essentie stelt u een gebeurtenis in die wordt geactiveerd nadat een "
161
- "gebruiker een bepaalde hoeveelheid tijd op de bestemmingspagina heeft "
162
- "doorgebracht, waarmee u Google Analytics vertelt om deze gebruikers niet als "
163
- "bounces te tellen. Een gebruiker kan naar uw website komen, alle benodigde "
164
- "informatie vinden (bijvoorbeeld een telefoonnummer) en vervolgens de website "
165
- "verlaten zonder een andere pagina te bezoeken. Zonder aangepast bounce "
166
- "percentage zou een dergelijke gebruiker als een bounce worden beschouwd, ook "
167
- "al hadden ze een succesvolle ervaring. Door een tijdslimiet te definiëren "
168
- "waarna u kunt concluderen dat een gebruiker \"geëngageerd\" is, telt die "
169
- "gebruiker niet mee als een bounce en krijgt u een beter beeld van het feit of "
170
- "ze hebben gevonden waarnaar ze op zoek waren."
171
-
172
- #: admin/options.php:83
173
- msgid ""
174
- "By default, Google Analytics code is loaded before other scripts and "
175
- "javasscript code, but if you set the value to 100, the GA code will be loaded "
176
- "after all other scripts. By changing the priority, you can set code position "
177
- "on the page."
178
- msgstr ""
179
- "Standaard wordt de Google Analytics code geladen voor andere scripts en "
180
- "javasscript code, maar als u de waarde instelt op 100, wordt de GA code "
181
- "geladen na alle andere scripts. Door de prioriteit te wijzigen, kunt u de "
182
- "codepositie op de pagina instellen."
183
-
184
- #: admin/options.php:91
185
- #, php-format
186
- msgid "Disable all <a href=\"%s\">display features functionality?</a>"
187
- msgstr "Alle <a href=\"%s\">van weergave functies uitschakelen?</a>"
188
-
189
- #: admin/options.php:100
190
- #, php-format
191
- msgid "Use <a href=\"%s\">Anonymize IP?</a> (Required by law for some countries)"
192
- msgstr ""
193
- "Gebruik <a href=\"%s\">Anoniem maken van IP?</a> (Wettelijk vereist voor "
194
- "sommige landen)"
195
-
196
- #: admin/options.php:118
197
- msgid ""
198
- "Clearfy creates a cron job to daily update Google Analytics cache scripts. "
199
- "After enabling this option, the plugin will not update Google Analytics cache "
200
- "file. Do not use this option if you do not understand why you need it!"
201
- msgstr ""
202
- "Clearfy maakt een cron-taak om dagelijks de cache scripts van Google Analytics "
203
- "bij te werken. Nadat u deze optie hebt ingeschakeld, werkt de plugin het cache "
204
- "bestand van Google Analytics niet bij. Gebruik deze optie niet als u niet "
205
- "begrijpt waarom u het nodig hebt!"
206
-
207
- #: admin/pages/ga_cache.php:33
208
- msgid "Local Google Analytics"
209
- msgstr ""
210
-
211
- #: admin/pages/ga_cache.php:50
212
- msgid "General"
213
- msgstr "Algemeen"
214
-
215
- #: includes/classes/class.configurate-ga.php:37
216
- msgid "Once Weekly"
217
- msgstr "Eénmaal per week"
218
-
219
- #: includes/classes/class.configurate-ga.php:42
220
- msgid "Twice Monthly"
221
- msgstr "Tweemaal per maand"
222
-
223
- #: includes/classes/class.configurate-ga.php:47
224
- msgid "Once Monthly"
225
- msgstr "Eénmaal per maand"
226
-
227
- #: simple_google_analytics.php:32
228
- msgid ""
229
- "We found that you have the \"Clearfy - disable unused features\" plugin "
230
- "installed, this plugin already has Google Analytics cache functions, so you "
231
- "can deactivate plugin \"Google Analytics Cache\"!"
232
- msgstr ""
233
-
234
- #: simple_google_analytics.php:40
235
- msgid ""
236
- "You use the old version of Wordpress to use the <b>Webcraftic Local Google "
237
- "Analytics (Old name: Simple Google Analytics)</b> plugin, you must upgrade "
238
- "your Wordpress to the minimum version 4.2!"
239
- msgstr ""
240
-
241
- #: simple_google_analytics.php:65
242
- msgid "Webcraftic Local Google Analytics"
243
  msgstr ""
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: Clearfy\n"
4
+ "POT-Creation-Date: 2018-09-06 18:33+0300\n"
5
+ "PO-Revision-Date: \n"
6
+ "Last-Translator: \n"
7
+ "Language-Team: \n"
8
+ "Language: nl_BE\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: Poedit 2.1.1\n"
13
+ "Plural-Forms: nplurals=2; plural=n != 1;\n"
14
+ "X-Generator: Poedit 2.1.1\n"
15
+ "X-Poedit-Basepath: ..\n"
16
+ "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
17
+ "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
18
+ "X-Poedit-SourceCharset: UTF-8\n"
19
+ "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c\n"
20
+ "X-Poedit-SearchPath-0: .\n"
21
+ "X-Poedit-SearchPathExcluded-0: libs\n"
22
+ "X-Poedit-SearchPathExcluded-1: components\n"
23
+ "X-Poedit-SearchPathExcluded-2: cache\n"
24
+
25
+ #: admin/boot.php:27
26
+ msgid "The <b>Simple Google Analytics</b> plugin has some major changes!"
27
+ msgstr ""
28
+
29
+ #: admin/boot.php:28
30
+ msgid ""
31
+ "Unfortunately, the old version of the plugin (2.2.2) is no longer supported, "
32
+ "but you still can download it from the WordPress repository in case if the new "
33
+ "release doesn’t work for you."
34
+ msgstr ""
35
+
36
+ #: admin/boot.php:29
37
+ msgid ""
38
+ "We’ve updated the code and fixed the compatibility issue for the latest "
39
+ "WordPress and PHP versions. We’ve also added additional feature of the Local "
40
+ "Google Analytics – this way your website will load faster. The plugin’s name "
41
+ "has been changed to Local Google Analytics, but all features remained the same."
42
+ msgstr ""
43
+
44
+ #: admin/boot.php:30
45
+ #, php-format
46
+ msgid ""
47
+ "Please, check <a href=\"%s\">plugin settings</a> and its performance on your "
48
+ "website. We do care about you and want to avoid any problems with the new "
49
+ "version."
50
+ msgstr ""
51
+
52
+ #: admin/boot.php:32
53
+ #, php-format
54
+ msgid ""
55
+ "We are aimed to pay more attention to the speed and security aspects of your "
56
+ "website. That’s why you should definitely try our basic WordPress optimization "
57
+ "plugin as well. Clearfy includes functionality of this plugin and has many "
58
+ "additional features for the website optimization:\n"
59
+ "<a href=\"%s\">Donwload Clearfy for free</a>"
60
+ msgstr ""
61
+
62
+ #: admin/boot.php:121 admin/options.php:30 admin/pages/ga_cache.php:49
63
+ msgid "Google Analytics Cache"
64
+ msgstr ""
65
+
66
+ #: admin/boot.php:127 admin/options.php:50
67
+ msgid "Google analytic Code"
68
+ msgstr "Google analytics Code"
69
+
70
+ #: admin/boot.php:132 admin/options.php:71
71
+ msgid "Use adjusted bounce rate?"
72
+ msgstr "Aangepast bounce percentage gebruiken?"
73
+
74
+ #: admin/boot.php:137 admin/options.php:80
75
+ msgid "Change enqueue order?"
76
+ msgstr "Enqueue volgorde wijzigen?"
77
+
78
+ #: admin/boot.php:142 admin/options.php:89
79
+ msgid "Disable all display features functionality?"
80
+ msgstr "Alle weergave functionaliteit uitschakelen?"
81
+
82
+ #: admin/boot.php:147 admin/options.php:98
83
+ msgid "Use Anonymize IP? (Required by law for some countries)"
84
+ msgstr "Gebruik anonimiseren IP? (Voor sommige landen wettelijk verplicht)"
85
+
86
+ #: admin/boot.php:152 admin/options.php:107 admin/options.php:109
87
+ msgid "Track logged in Administrators?"
88
+ msgstr "Track ingelogde Beheerders?"
89
+
90
+ #: admin/boot.php:157 admin/options.php:116
91
+ msgid "Remove script from wp-cron?"
92
+ msgstr "Verwijder script van wp-cron?"
93
+
94
+ #: admin/boot.php:185
95
+ msgid "Get ultimate plugin free"
96
+ msgstr "Krijg ultieme plugin gratis"
97
+
98
+ #: admin/options.php:23
99
+ msgid "<strong>Google Analytics cache</strong>."
100
+ msgstr "<strong>Google Analytics cache</strong>."
101
+
102
+ #: admin/options.php:23
103
+ msgid ""
104
+ "To improve Google Page Speed indicators Analytics caching is needed. However, "
105
+ "it can also slightly increase your website loading speed, because Analytics js "
106
+ "files will load locally. The second case that you might need these settings is "
107
+ "the usual Google Analytics connection to your website. You do not need to do "
108
+ "this with other plugins or insert the tracking code into your theme."
109
+ msgstr ""
110
+ "Om de pagina snelheid indicatoren van Google te verbeteren, is caching in "
111
+ "Analytics nodig. Het kan echter ook de laadsnelheid van uw website enigszins "
112
+ "verhogen, omdat de Analytics js bestanden lokaal worden geladen. Het tweede "
113
+ "geval waarvoor u deze instellingen nodig heeft, is de gebruikelijke Google "
114
+ "Analytics verbinding met uw website. U hoeft dit niet met andere plugins te "
115
+ "doen of de tracking code in uw thema in te voegen."
116
+
117
+ #: admin/options.php:32
118
+ msgid ""
119
+ "If you enable this option, the plugin will begin to save a local copy of "
120
+ "Google Analytics to speed up the loading of your website and improve Google "
121
+ "Page Speed."
122
+ msgstr ""
123
+ "Als u deze optie inschakelt, zal de plugin beginnen met het opslaan van een "
124
+ "lokale kopie van Google Analytics om het laden van uw website te versnellen en "
125
+ "de Google Page Speed ​​te verbeteren."
126
+
127
+ #: admin/options.php:32
128
+ msgid ""
129
+ "ATTENTION! Before using this option, remove the previously installed Google "
130
+ "Analytics code inside your theme or plugins associated with this feature!"
131
+ msgstr ""
132
+ "AANDACHT! Voordat u deze optie gebruikt, verwijdert u de eerder geïnstalleerde "
133
+ "Google Analytics code in uw thema of plugins die aan deze functie zijn "
134
+ "gekoppeld!"
135
+
136
+ #: admin/options.php:52
137
+ msgid "Set the Google Analytics tracking code."
138
+ msgstr "Stel de Google Analytics tracking code in."
139
+
140
+ #: admin/options.php:63
141
+ msgid "Save GA in"
142
+ msgstr "Bewaar GA in"
143
+
144
+ #: admin/options.php:64
145
+ msgid "Select location for the Google Analytics code."
146
+ msgstr "Selecteer een locatie voor de Google Analytics code."
147
+
148
+ #: admin/options.php:74
149
+ msgid ""
150
+ "Essentially, you set up an event which is triggered after a user spends a "
151
+ "certain amount of time on the landing page, telling Google Analytics not to "
152
+ "count these users as bounces. A user may come to your website, find all of the "
153
+ "information they need (a phone number, for example) and then leave the site "
154
+ "without visiting another page. Without adjusted bounce rate, such a user would "
155
+ "be considered a bounce, even though they had a successful experience. By "
156
+ "defining a time limit after which you can consider a user to be \"engaged,\" "
157
+ "that user would no longer count as a bounce, and you'd get a more accurate "
158
+ "idea of whether they found what they were looking for."
159
+ msgstr ""
160
+ "In essentie stelt u een gebeurtenis in die wordt geactiveerd nadat een "
161
+ "gebruiker een bepaalde hoeveelheid tijd op de bestemmingspagina heeft "
162
+ "doorgebracht, waarmee u Google Analytics vertelt om deze gebruikers niet als "
163
+ "bounces te tellen. Een gebruiker kan naar uw website komen, alle benodigde "
164
+ "informatie vinden (bijvoorbeeld een telefoonnummer) en vervolgens de website "
165
+ "verlaten zonder een andere pagina te bezoeken. Zonder aangepast bounce "
166
+ "percentage zou een dergelijke gebruiker als een bounce worden beschouwd, ook "
167
+ "al hadden ze een succesvolle ervaring. Door een tijdslimiet te definiëren "
168
+ "waarna u kunt concluderen dat een gebruiker \"geëngageerd\" is, telt die "
169
+ "gebruiker niet mee als een bounce en krijgt u een beter beeld van het feit of "
170
+ "ze hebben gevonden waarnaar ze op zoek waren."
171
+
172
+ #: admin/options.php:83
173
+ msgid ""
174
+ "By default, Google Analytics code is loaded before other scripts and "
175
+ "javasscript code, but if you set the value to 100, the GA code will be loaded "
176
+ "after all other scripts. By changing the priority, you can set code position "
177
+ "on the page."
178
+ msgstr ""
179
+ "Standaard wordt de Google Analytics code geladen voor andere scripts en "
180
+ "javasscript code, maar als u de waarde instelt op 100, wordt de GA code "
181
+ "geladen na alle andere scripts. Door de prioriteit te wijzigen, kunt u de "
182
+ "codepositie op de pagina instellen."
183
+
184
+ #: admin/options.php:91
185
+ #, php-format
186
+ msgid "Disable all <a href=\"%s\">display features functionality?</a>"
187
+ msgstr "Alle <a href=\"%s\">van weergave functies uitschakelen?</a>"
188
+
189
+ #: admin/options.php:100
190
+ #, php-format
191
+ msgid "Use <a href=\"%s\">Anonymize IP?</a> (Required by law for some countries)"
192
+ msgstr ""
193
+ "Gebruik <a href=\"%s\">Anoniem maken van IP?</a> (Wettelijk vereist voor "
194
+ "sommige landen)"
195
+
196
+ #: admin/options.php:118
197
+ msgid ""
198
+ "Clearfy creates a cron job to daily update Google Analytics cache scripts. "
199
+ "After enabling this option, the plugin will not update Google Analytics cache "
200
+ "file. Do not use this option if you do not understand why you need it!"
201
+ msgstr ""
202
+ "Clearfy maakt een cron-taak om dagelijks de cache scripts van Google Analytics "
203
+ "bij te werken. Nadat u deze optie hebt ingeschakeld, werkt de plugin het cache "
204
+ "bestand van Google Analytics niet bij. Gebruik deze optie niet als u niet "
205
+ "begrijpt waarom u het nodig hebt!"
206
+
207
+ #: admin/pages/ga_cache.php:33
208
+ msgid "Local Google Analytics"
209
+ msgstr ""
210
+
211
+ #: admin/pages/ga_cache.php:50
212
+ msgid "General"
213
+ msgstr "Algemeen"
214
+
215
+ #: includes/classes/class.configurate-ga.php:37
216
+ msgid "Once Weekly"
217
+ msgstr "Eénmaal per week"
218
+
219
+ #: includes/classes/class.configurate-ga.php:42
220
+ msgid "Twice Monthly"
221
+ msgstr "Tweemaal per maand"
222
+
223
+ #: includes/classes/class.configurate-ga.php:47
224
+ msgid "Once Monthly"
225
+ msgstr "Eénmaal per maand"
226
+
227
+ #: simple_google_analytics.php:32
228
+ msgid ""
229
+ "We found that you have the \"Clearfy - disable unused features\" plugin "
230
+ "installed, this plugin already has Google Analytics cache functions, so you "
231
+ "can deactivate plugin \"Google Analytics Cache\"!"
232
+ msgstr ""
233
+
234
+ #: simple_google_analytics.php:40
235
+ msgid ""
236
+ "You use the old version of Wordpress to use the <b>Webcraftic Local Google "
237
+ "Analytics (Old name: Simple Google Analytics)</b> plugin, you must upgrade "
238
+ "your Wordpress to the minimum version 4.2!"
239
+ msgstr ""
240
+
241
+ #: simple_google_analytics.php:65
242
+ msgid "Webcraftic Local Google Analytics"
243
  msgstr ""
components/ga-cache/languages/simple-google-analytics-pt_BR.po CHANGED
@@ -1,247 +1,247 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: clearfy\n"
4
- "POT-Creation-Date: 2018-09-06 18:33+0300\n"
5
- "PO-Revision-Date: 2018-09-06 18:33+0300\n"
6
- "Last-Translator: alex.kovalevv@gmail.com <alex.kovalevv@gmail.com>\n"
7
- "Language-Team: Alex Kovalev <alex.kovalevv@gmail.com>\n"
8
- "Language: pt_BR\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: Poedit 2.1.1\n"
13
- "X-Poedit-Basepath: ..\n"
14
- "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
15
- "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
16
- "X-Poedit-SourceCharset: UTF-8\n"
17
- "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c\n"
18
- "X-Poedit-SearchPath-0: .\n"
19
- "X-Poedit-SearchPathExcluded-0: libs\n"
20
- "X-Poedit-SearchPathExcluded-1: components\n"
21
- "X-Poedit-SearchPathExcluded-2: cache\n"
22
-
23
- #: admin/boot.php:27
24
- msgid "The <b>Simple Google Analytics</b> plugin has some major changes!"
25
- msgstr ""
26
-
27
- #: admin/boot.php:28
28
- msgid ""
29
- "Unfortunately, the old version of the plugin (2.2.2) is no longer supported, "
30
- "but you still can download it from the WordPress repository in case if the "
31
- "new release doesn’t work for you."
32
- msgstr ""
33
-
34
- #: admin/boot.php:29
35
- msgid ""
36
- "We’ve updated the code and fixed the compatibility issue for the latest "
37
- "WordPress and PHP versions. We’ve also added additional feature of the Local "
38
- "Google Analytics – this way your website will load faster. The plugin’s name "
39
- "has been changed to Local Google Analytics, but all features remained the "
40
- "same."
41
- msgstr ""
42
-
43
- #: admin/boot.php:30
44
- #, php-format
45
- msgid ""
46
- "Please, check <a href=\"%s\">plugin settings</a> and its performance on your "
47
- "website. We do care about you and want to avoid any problems with the new "
48
- "version."
49
- msgstr ""
50
-
51
- #: admin/boot.php:32
52
- #, php-format
53
- msgid ""
54
- "We are aimed to pay more attention to the speed and security aspects of your "
55
- "website. That’s why you should definitely try our basic WordPress "
56
- "optimization plugin as well. Clearfy includes functionality of this plugin "
57
- "and has many additional features for the website optimization:\n"
58
- "<a href=\"%s\">Donwload Clearfy for free</a>"
59
- msgstr ""
60
-
61
- #: admin/boot.php:121 admin/options.php:30 admin/pages/ga_cache.php:49
62
- msgid "Google Analytics Cache"
63
- msgstr "Cache analítico do Google"
64
-
65
- #: admin/boot.php:127 admin/options.php:50
66
- msgid "Google analytic Code"
67
- msgstr "Código analítico do Google"
68
-
69
- #: admin/boot.php:132 admin/options.php:71
70
- msgid "Use adjusted bounce rate?"
71
- msgstr "Use taxa de rejeição ajustada?"
72
-
73
- #: admin/boot.php:137 admin/options.php:80
74
- msgid "Change enqueue order?"
75
- msgstr "Alterar ordem de enfileiramento?"
76
-
77
- #: admin/boot.php:142 admin/options.php:89
78
- msgid "Disable all display features functionality?"
79
- msgstr "Desativar todas as funcionalidades dos recursos de exibição?"
80
-
81
- #: admin/boot.php:147 admin/options.php:98
82
- msgid "Use Anonymize IP? (Required by law for some countries)"
83
- msgstr "Use Anonymize IP? (Obrigatório por lei para alguns países)"
84
-
85
- #: admin/boot.php:152 admin/options.php:107 admin/options.php:109
86
- msgid "Track logged in Administrators?"
87
- msgstr "Track logado em Administradores?"
88
-
89
- #: admin/boot.php:157 admin/options.php:116
90
- msgid "Remove script from wp-cron?"
91
- msgstr "Remover script do wp-cron?"
92
-
93
- #: admin/boot.php:185
94
- msgid "Get ultimate plugin free"
95
- msgstr "Obtenha o melhor plugin grátis"
96
-
97
- #: admin/options.php:23
98
- msgid "<strong>Google Analytics cache</strong>."
99
- msgstr "<strong>cache do Google Analytics</strong>."
100
-
101
- #: admin/options.php:23
102
- msgid ""
103
- "To improve Google Page Speed indicators Analytics caching is needed. "
104
- "However, it can also slightly increase your website loading speed, because "
105
- "Analytics js files will load locally. The second case that you might need "
106
- "these settings is the usual Google Analytics connection to your website. You "
107
- "do not need to do this with other plugins or insert the tracking code into "
108
- "your theme."
109
- msgstr ""
110
- "Para melhorar os indicadores do Google Page Speed, é necessário o "
111
- "armazenamento em cache do Analytics. No entanto, também pode aumentar "
112
- "ligeiramente a velocidade de carregamento do seu site, porque os arquivos do "
113
- "Google Analytics js serão carregados localmente. O segundo caso em que você "
114
- "pode precisar dessas configurações é a conexão normal do Google Analytics "
115
- "com seu website. Você não precisa fazer isso com outros plug-ins ou inserir "
116
- "o código de acompanhamento em seu tema."
117
-
118
- #: admin/options.php:32
119
- msgid ""
120
- "If you enable this option, the plugin will begin to save a local copy of "
121
- "Google Analytics to speed up the loading of your website and improve Google "
122
- "Page Speed."
123
- msgstr ""
124
- "Se você ativar essa opção, o plug-in começará a salvar uma cópia local do "
125
- "Google Analytics para acelerar o carregamento de seu website e melhorar a "
126
- "velocidade da página do Google."
127
-
128
- #: admin/options.php:32
129
- msgid ""
130
- "ATTENTION! Before using this option, remove the previously installed Google "
131
- "Analytics code inside your theme or plugins associated with this feature!"
132
- msgstr ""
133
- "ATENÇÃO! Antes de usar essa opção, remova o código do Google Analytics "
134
- "instalado anteriormente no seu tema ou plug-ins associados a esse recurso."
135
-
136
- #: admin/options.php:52
137
- msgid "Set the Google Analytics tracking code."
138
- msgstr "Definir o código de acompanhamento do Google Analytics."
139
-
140
- #: admin/options.php:63
141
- msgid "Save GA in"
142
- msgstr "Salvar o GA em"
143
-
144
- #: admin/options.php:64
145
- msgid "Select location for the Google Analytics code."
146
- msgstr "Selecione o local para o código do Google Analytics."
147
-
148
- #: admin/options.php:74
149
- msgid ""
150
- "Essentially, you set up an event which is triggered after a user spends a "
151
- "certain amount of time on the landing page, telling Google Analytics not to "
152
- "count these users as bounces. A user may come to your website, find all of "
153
- "the information they need (a phone number, for example) and then leave the "
154
- "site without visiting another page. Without adjusted bounce rate, such a "
155
- "user would be considered a bounce, even though they had a successful "
156
- "experience. By defining a time limit after which you can consider a user to "
157
- "be \"engaged,\" that user would no longer count as a bounce, and you'd get a "
158
- "more accurate idea of whether they found what they were looking for."
159
- msgstr ""
160
- "Essencialmente, você configura um evento que é acionado depois que um "
161
- "usuário passa um determinado período de tempo na página de destino, dizendo "
162
- "ao Google Analytics para não contabilizar esses usuários como rejeições. Um "
163
- "usuário pode acessar seu site, encontrar todas as informações necessárias "
164
- "(um número de telefone, por exemplo) e sair do site sem visitar outra "
165
- "página. Sem a taxa de rejeição ajustada, esse usuário seria considerado uma "
166
- "rejeição, mesmo que tivesse uma experiência bem-sucedida. Ao definir um "
167
- "limite de tempo após o qual você pode considerar um usuário \"engajado\", "
168
- "esse usuário não será mais considerado uma rejeição, e você terá uma ideia "
169
- "mais precisa sobre se encontrou o que estava procurando."
170
-
171
- #: admin/options.php:83
172
- msgid ""
173
- "By default, Google Analytics code is loaded before other scripts and "
174
- "javasscript code, but if you set the value to 100, the GA code will be "
175
- "loaded after all other scripts. By changing the priority, you can set code "
176
- "position on the page."
177
- msgstr ""
178
- "Por padrão, o código do Google Analytics é carregado antes de outros scripts "
179
- "e código javasscript, mas se você definir o valor como 100, o código do GA "
180
- "será carregado depois de todos os outros scripts. Ao alterar a prioridade, "
181
- "você pode definir a posição do código na página."
182
-
183
- #: admin/options.php:91
184
- #, php-format
185
- msgid "Disable all <a href=\"%s\">display features functionality?</a>"
186
- msgstr ""
187
- "Desativar todas as <a href=\"%s\"> funcionalidades dos recursos de exibição? "
188
- "</a>"
189
-
190
- #: admin/options.php:100
191
- #, php-format
192
- msgid ""
193
- "Use <a href=\"%s\">Anonymize IP?</a> (Required by law for some countries)"
194
- msgstr ""
195
- "Usar <a href=\"%s\">Anonimizar IP?</a> (exigido por lei para alguns países)"
196
-
197
- #: admin/options.php:118
198
- msgid ""
199
- "Clearfy creates a cron job to daily update Google Analytics cache scripts. "
200
- "After enabling this option, the plugin will not update Google Analytics "
201
- "cache file. Do not use this option if you do not understand why you need it!"
202
- msgstr ""
203
- "O Clearfy cria uma tarefa cron para atualizar diariamente os scripts de "
204
- "cache do Google Analytics. Depois de ativar essa opção, o plug-in não "
205
- "atualizará o arquivo de cache do Google Analytics. Não use essa opção se "
206
- "você não entender por que precisa!"
207
-
208
- #: admin/pages/ga_cache.php:33
209
- msgid "Local Google Analytics"
210
- msgstr ""
211
-
212
- #: admin/pages/ga_cache.php:50
213
- msgid "General"
214
- msgstr "Geral"
215
-
216
- #: includes/classes/class.configurate-ga.php:37
217
- msgid "Once Weekly"
218
- msgstr "Uma vez por semana"
219
-
220
- #: includes/classes/class.configurate-ga.php:42
221
- msgid "Twice Monthly"
222
- msgstr "Duas vezes por mês"
223
-
224
- #: includes/classes/class.configurate-ga.php:47
225
- msgid "Once Monthly"
226
- msgstr "Uma vez por mês"
227
-
228
- #: simple_google_analytics.php:32
229
- msgid ""
230
- "We found that you have the \"Clearfy - disable unused features\" plugin "
231
- "installed, this plugin already has Google Analytics cache functions, so you "
232
- "can deactivate plugin \"Google Analytics Cache\"!"
233
- msgstr ""
234
- "Descobrimos que você tem o \"Clearfy - desativar os recursos não utilizados "
235
- "\" plugin instalado, este plugin já tem desativar as funções de comentários, "
236
- "assim você pode desativar o plugin \"Hide Login Page \"!"
237
-
238
- #: simple_google_analytics.php:40
239
- msgid ""
240
- "You use the old version of Wordpress to use the <b>Webcraftic Local Google "
241
- "Analytics (Old name: Simple Google Analytics)</b> plugin, you must upgrade "
242
- "your Wordpress to the minimum version 4.2!"
243
- msgstr ""
244
-
245
- #: simple_google_analytics.php:65
246
- msgid "Webcraftic Local Google Analytics"
247
  msgstr ""
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: clearfy\n"
4
+ "POT-Creation-Date: 2018-09-06 18:33+0300\n"
5
+ "PO-Revision-Date: 2018-09-06 18:33+0300\n"
6
+ "Last-Translator: alex.kovalevv@gmail.com <alex.kovalevv@gmail.com>\n"
7
+ "Language-Team: Alex Kovalev <alex.kovalevv@gmail.com>\n"
8
+ "Language: pt_BR\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: Poedit 2.1.1\n"
13
+ "X-Poedit-Basepath: ..\n"
14
+ "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
15
+ "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
16
+ "X-Poedit-SourceCharset: UTF-8\n"
17
+ "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c\n"
18
+ "X-Poedit-SearchPath-0: .\n"
19
+ "X-Poedit-SearchPathExcluded-0: libs\n"
20
+ "X-Poedit-SearchPathExcluded-1: components\n"
21
+ "X-Poedit-SearchPathExcluded-2: cache\n"
22
+
23
+ #: admin/boot.php:27
24
+ msgid "The <b>Simple Google Analytics</b> plugin has some major changes!"
25
+ msgstr ""
26
+
27
+ #: admin/boot.php:28
28
+ msgid ""
29
+ "Unfortunately, the old version of the plugin (2.2.2) is no longer supported, "
30
+ "but you still can download it from the WordPress repository in case if the "
31
+ "new release doesn’t work for you."
32
+ msgstr ""
33
+
34
+ #: admin/boot.php:29
35
+ msgid ""
36
+ "We’ve updated the code and fixed the compatibility issue for the latest "
37
+ "WordPress and PHP versions. We’ve also added additional feature of the Local "
38
+ "Google Analytics – this way your website will load faster. The plugin’s name "
39
+ "has been changed to Local Google Analytics, but all features remained the "
40
+ "same."
41
+ msgstr ""
42
+
43
+ #: admin/boot.php:30
44
+ #, php-format
45
+ msgid ""
46
+ "Please, check <a href=\"%s\">plugin settings</a> and its performance on your "
47
+ "website. We do care about you and want to avoid any problems with the new "
48
+ "version."
49
+ msgstr ""
50
+
51
+ #: admin/boot.php:32
52
+ #, php-format
53
+ msgid ""
54
+ "We are aimed to pay more attention to the speed and security aspects of your "
55
+ "website. That’s why you should definitely try our basic WordPress "
56
+ "optimization plugin as well. Clearfy includes functionality of this plugin "
57
+ "and has many additional features for the website optimization:\n"
58
+ "<a href=\"%s\">Donwload Clearfy for free</a>"
59
+ msgstr ""
60
+
61
+ #: admin/boot.php:121 admin/options.php:30 admin/pages/ga_cache.php:49
62
+ msgid "Google Analytics Cache"
63
+ msgstr "Cache analítico do Google"
64
+
65
+ #: admin/boot.php:127 admin/options.php:50
66
+ msgid "Google analytic Code"
67
+ msgstr "Código analítico do Google"
68
+
69
+ #: admin/boot.php:132 admin/options.php:71
70
+ msgid "Use adjusted bounce rate?"
71
+ msgstr "Use taxa de rejeição ajustada?"
72
+
73
+ #: admin/boot.php:137 admin/options.php:80
74
+ msgid "Change enqueue order?"
75
+ msgstr "Alterar ordem de enfileiramento?"
76
+
77
+ #: admin/boot.php:142 admin/options.php:89
78
+ msgid "Disable all display features functionality?"
79
+ msgstr "Desativar todas as funcionalidades dos recursos de exibição?"
80
+
81
+ #: admin/boot.php:147 admin/options.php:98
82
+ msgid "Use Anonymize IP? (Required by law for some countries)"
83
+ msgstr "Use Anonymize IP? (Obrigatório por lei para alguns países)"
84
+
85
+ #: admin/boot.php:152 admin/options.php:107 admin/options.php:109
86
+ msgid "Track logged in Administrators?"
87
+ msgstr "Track logado em Administradores?"
88
+
89
+ #: admin/boot.php:157 admin/options.php:116
90
+ msgid "Remove script from wp-cron?"
91
+ msgstr "Remover script do wp-cron?"
92
+
93
+ #: admin/boot.php:185
94
+ msgid "Get ultimate plugin free"
95
+ msgstr "Obtenha o melhor plugin grátis"
96
+
97
+ #: admin/options.php:23
98
+ msgid "<strong>Google Analytics cache</strong>."
99
+ msgstr "<strong>cache do Google Analytics</strong>."
100
+
101
+ #: admin/options.php:23
102
+ msgid ""
103
+ "To improve Google Page Speed indicators Analytics caching is needed. "
104
+ "However, it can also slightly increase your website loading speed, because "
105
+ "Analytics js files will load locally. The second case that you might need "
106
+ "these settings is the usual Google Analytics connection to your website. You "
107
+ "do not need to do this with other plugins or insert the tracking code into "
108
+ "your theme."
109
+ msgstr ""
110
+ "Para melhorar os indicadores do Google Page Speed, é necessário o "
111
+ "armazenamento em cache do Analytics. No entanto, também pode aumentar "
112
+ "ligeiramente a velocidade de carregamento do seu site, porque os arquivos do "
113
+ "Google Analytics js serão carregados localmente. O segundo caso em que você "
114
+ "pode precisar dessas configurações é a conexão normal do Google Analytics "
115
+ "com seu website. Você não precisa fazer isso com outros plug-ins ou inserir "
116
+ "o código de acompanhamento em seu tema."
117
+
118
+ #: admin/options.php:32
119
+ msgid ""
120
+ "If you enable this option, the plugin will begin to save a local copy of "
121
+ "Google Analytics to speed up the loading of your website and improve Google "
122
+ "Page Speed."
123
+ msgstr ""
124
+ "Se você ativar essa opção, o plug-in começará a salvar uma cópia local do "
125
+ "Google Analytics para acelerar o carregamento de seu website e melhorar a "
126
+ "velocidade da página do Google."
127
+
128
+ #: admin/options.php:32
129
+ msgid ""
130
+ "ATTENTION! Before using this option, remove the previously installed Google "
131
+ "Analytics code inside your theme or plugins associated with this feature!"
132
+ msgstr ""
133
+ "ATENÇÃO! Antes de usar essa opção, remova o código do Google Analytics "
134
+ "instalado anteriormente no seu tema ou plug-ins associados a esse recurso."
135
+
136
+ #: admin/options.php:52
137
+ msgid "Set the Google Analytics tracking code."
138
+ msgstr "Definir o código de acompanhamento do Google Analytics."
139
+
140
+ #: admin/options.php:63
141
+ msgid "Save GA in"
142
+ msgstr "Salvar o GA em"
143
+
144
+ #: admin/options.php:64
145
+ msgid "Select location for the Google Analytics code."
146
+ msgstr "Selecione o local para o código do Google Analytics."
147
+
148
+ #: admin/options.php:74
149
+ msgid ""
150
+ "Essentially, you set up an event which is triggered after a user spends a "
151
+ "certain amount of time on the landing page, telling Google Analytics not to "
152
+ "count these users as bounces. A user may come to your website, find all of "
153
+ "the information they need (a phone number, for example) and then leave the "
154
+ "site without visiting another page. Without adjusted bounce rate, such a "
155
+ "user would be considered a bounce, even though they had a successful "
156
+ "experience. By defining a time limit after which you can consider a user to "
157
+ "be \"engaged,\" that user would no longer count as a bounce, and you'd get a "
158
+ "more accurate idea of whether they found what they were looking for."
159
+ msgstr ""
160
+ "Essencialmente, você configura um evento que é acionado depois que um "
161
+ "usuário passa um determinado período de tempo na página de destino, dizendo "
162
+ "ao Google Analytics para não contabilizar esses usuários como rejeições. Um "
163
+ "usuário pode acessar seu site, encontrar todas as informações necessárias "
164
+ "(um número de telefone, por exemplo) e sair do site sem visitar outra "
165
+ "página. Sem a taxa de rejeição ajustada, esse usuário seria considerado uma "
166
+ "rejeição, mesmo que tivesse uma experiência bem-sucedida. Ao definir um "
167
+ "limite de tempo após o qual você pode considerar um usuário \"engajado\", "
168
+ "esse usuário não será mais considerado uma rejeição, e você terá uma ideia "
169
+ "mais precisa sobre se encontrou o que estava procurando."
170
+
171
+ #: admin/options.php:83
172
+ msgid ""
173
+ "By default, Google Analytics code is loaded before other scripts and "
174
+ "javasscript code, but if you set the value to 100, the GA code will be "
175
+ "loaded after all other scripts. By changing the priority, you can set code "
176
+ "position on the page."
177
+ msgstr ""
178
+ "Por padrão, o código do Google Analytics é carregado antes de outros scripts "
179
+ "e código javasscript, mas se você definir o valor como 100, o código do GA "
180
+ "será carregado depois de todos os outros scripts. Ao alterar a prioridade, "
181
+ "você pode definir a posição do código na página."
182
+
183
+ #: admin/options.php:91
184
+ #, php-format
185
+ msgid "Disable all <a href=\"%s\">display features functionality?</a>"
186
+ msgstr ""
187
+ "Desativar todas as <a href=\"%s\"> funcionalidades dos recursos de exibição? "
188
+ "</a>"
189
+
190
+ #: admin/options.php:100
191
+ #, php-format
192
+ msgid ""
193
+ "Use <a href=\"%s\">Anonymize IP?</a> (Required by law for some countries)"
194
+ msgstr ""
195
+ "Usar <a href=\"%s\">Anonimizar IP?</a> (exigido por lei para alguns países)"
196
+
197
+ #: admin/options.php:118
198
+ msgid ""
199
+ "Clearfy creates a cron job to daily update Google Analytics cache scripts. "
200
+ "After enabling this option, the plugin will not update Google Analytics "
201
+ "cache file. Do not use this option if you do not understand why you need it!"
202
+ msgstr ""
203
+ "O Clearfy cria uma tarefa cron para atualizar diariamente os scripts de "
204
+ "cache do Google Analytics. Depois de ativar essa opção, o plug-in não "
205
+ "atualizará o arquivo de cache do Google Analytics. Não use essa opção se "
206
+ "você não entender por que precisa!"
207
+
208
+ #: admin/pages/ga_cache.php:33
209
+ msgid "Local Google Analytics"
210
+ msgstr ""
211
+
212
+ #: admin/pages/ga_cache.php:50
213
+ msgid "General"
214
+ msgstr "Geral"
215
+
216
+ #: includes/classes/class.configurate-ga.php:37
217
+ msgid "Once Weekly"
218
+ msgstr "Uma vez por semana"
219
+
220
+ #: includes/classes/class.configurate-ga.php:42
221
+ msgid "Twice Monthly"
222
+ msgstr "Duas vezes por mês"
223
+
224
+ #: includes/classes/class.configurate-ga.php:47
225
+ msgid "Once Monthly"
226
+ msgstr "Uma vez por mês"
227
+
228
+ #: simple_google_analytics.php:32
229
+ msgid ""
230
+ "We found that you have the \"Clearfy - disable unused features\" plugin "
231
+ "installed, this plugin already has Google Analytics cache functions, so you "
232
+ "can deactivate plugin \"Google Analytics Cache\"!"
233
+ msgstr ""
234
+ "Descobrimos que você tem o \"Clearfy - desativar os recursos não utilizados "
235
+ "\" plugin instalado, este plugin já tem desativar as funções de comentários, "
236
+ "assim você pode desativar o plugin \"Hide Login Page \"!"
237
+
238
+ #: simple_google_analytics.php:40
239
+ msgid ""
240
+ "You use the old version of Wordpress to use the <b>Webcraftic Local Google "
241
+ "Analytics (Old name: Simple Google Analytics)</b> plugin, you must upgrade "
242
+ "your Wordpress to the minimum version 4.2!"
243
+ msgstr ""
244
+
245
+ #: simple_google_analytics.php:65
246
+ msgid "Webcraftic Local Google Analytics"
247
  msgstr ""
components/ga-cache/simple_google_analytics.php CHANGED
@@ -14,60 +14,60 @@
14
  if( !defined('ABSPATH') ) {
15
  exit;
16
  }
 
 
 
 
 
 
17
 
18
- // If the plugin is already in use, as an add-on or has already been installed.
19
- $conflict_error = defined('WGA_PLUGIN_ACTIVE') || (defined('WCL_PLUGIN_ACTIVE') && !defined('LOADING_GA_CACHE_AS_ADDON'));
20
-
21
- // If the user is using an old version of Wordpress
22
- $old_wp_version_error = version_compare(get_bloginfo('version'), '4.2.0') <= 0;
23
-
24
- if( $conflict_error || $old_wp_version_error ) {
25
- function wbcr_ga_admin_notice_error()
26
- {
27
- global $conflict_error, $old_wp_version_error;
28
-
29
- if( $conflict_error ) {
30
- ?>
31
- <div class="notice notice-error">
32
- <p><?php _e('We found that you have the "Clearfy - disable unused features" plugin installed, this plugin already has Google Analytics cache functions, so you can deactivate plugin "Google Analytics Cache"!', 'simple-google-analytics'); ?></p>
33
- </div>
34
- <?php
35
- }
36
-
37
- if( $old_wp_version_error ) {
38
- ?>
39
- <div class="notice notice-error">
40
- <p><?php _e('You use the old version of Wordpress to use the <b>Webcraftic Local Google Analytics (Old name: Simple Google Analytics)</b> plugin, you must upgrade your Wordpress to the minimum version 4.2!', 'simple-google-analytics'); ?></p>
41
- </div>
42
- <?php
43
- }
44
- }
45
-
46
- add_action('admin_notices', 'wbcr_ga_admin_notice_error');
47
- } else {
48
-
49
- define('WGA_PLUGIN_ACTIVE', true);
50
- define('WGA_PLUGIN_DIR', dirname(__FILE__));
51
- define('WGA_PLUGIN_BASE', plugin_basename(__FILE__));
52
- define('WGA_PLUGIN_URL', plugins_url(null, __FILE__));
53
-
54
- if( !defined('LOADING_GA_CACHE_AS_ADDON') ) {
55
- require_once(WGA_PLUGIN_DIR . '/libs/factory/core/boot.php');
56
- }
57
 
58
- require_once(WGA_PLUGIN_DIR . '/includes/class.plugin.php');
 
 
59
 
60
- if( !defined('LOADING_GA_CACHE_AS_ADDON') ) {
61
 
62
- new WGA_Plugin(__FILE__, array(
63
- 'prefix' => 'wbcr_gac_',
64
- 'plugin_name' => 'wbcr_gac',
65
- 'plugin_title' => __('Webcraftic Local Google Analytics', 'simple-google-analytics'),
66
- 'plugin_version' => '3.0.1',
67
- 'required_php_version' => '5.2',
68
- 'required_wp_version' => '4.2',
69
- 'plugin_build' => 'free',
70
- //'updates' => WGA_PLUGIN_DIR . '/updates/'
71
- ));
72
- }
73
- }
14
  if( !defined('ABSPATH') ) {
15
  exit;
16
  }
17
+
18
+ define('WGA_PLUGIN_VERSION', '3.0.1');
19
+
20
+ define('WGA_PLUGIN_DIR', dirname(__FILE__));
21
+ define('WGA_PLUGIN_BASE', plugin_basename(__FILE__));
22
+ define('WGA_PLUGIN_URL', plugins_url(null, __FILE__));
23
 
24
+
25
+
26
+ if( !defined('LOADING_GA_CACHE_AS_ADDON') ) {
27
+ require_once(WGA_PLUGIN_DIR . '/libs/factory/core/includes/check-compatibility.php');
28
+ require_once(WGA_PLUGIN_DIR . '/libs/factory/clearfy/includes/check-clearfy-compatibility.php');
29
+ }
30
+
31
+ $plugin_info = array(
32
+ 'prefix' => 'wbcr_gac_',
33
+ 'plugin_name' => 'wbcr_gac',
34
+ 'plugin_title' => __('Webcraftic Local Google Analytics', 'simple-google-analytics'),
35
+ 'plugin_version' => WGA_PLUGIN_VERSION,
36
+ 'plugin_build' => 'free',
37
+ //'updates' => WGA_PLUGIN_DIR . '/updates/'
38
+ );
39
+
40
+ /**
41
+ * Проверяет совместимость с Wordpress, php и другими плагинами.
42
+ */
43
+ $compatibility = new Wbcr_FactoryClearfy_Compatibility(array_merge($plugin_info, array(
44
+ 'plugin_already_activate' => defined('WGA_PLUGIN_ACTIVE'),
45
+ 'plugin_as_component' => defined('LOADING_GA_CACHE_AS_ADDON'),
46
+ 'plugin_dir' => WGA_PLUGIN_DIR,
47
+ 'plugin_base' => WGA_PLUGIN_BASE,
48
+ 'plugin_url' => WGA_PLUGIN_URL,
49
+ 'required_php_version' => '5.3',
50
+ 'required_wp_version' => '4.2.0',
51
+ 'required_clearfy_check_component' => true
52
+ )));
53
+
54
+ /**
55
+ * Если плагин совместим, то он продолжит свою работу, иначе будет остановлен,
56
+ * а пользователь получит предупреждение.
57
+ */
58
+ if( !$compatibility->check() ) {
59
+ return;
60
+ }
61
+
62
+ define('WGA_PLUGIN_ACTIVE', true);
63
 
64
+ if( !defined('LOADING_GA_CACHE_AS_ADDON') ) {
65
+ require_once(WGA_PLUGIN_DIR . '/libs/factory/core/boot.php');
66
+ }
67
 
68
+ require_once(WGA_PLUGIN_DIR . '/includes/class.plugin.php');
69
 
70
+ if( !defined('LOADING_GA_CACHE_AS_ADDON') ) {
71
+ new WGA_Plugin(__FILE__, $plugin_info);
72
+ }
73
+
 
 
 
 
 
 
 
 
components/html-minify/admin/boot.php CHANGED
@@ -14,7 +14,7 @@
14
  /**
15
  * Печатает ошибки совместимости с похожими плагинами
16
  */
17
- add_action('wbcr_factory_notices_405_list', function ($notices, $plugin_name) {
18
  if( $plugin_name != WHTM_Plugin::app()->getPluginName() ) {
19
  return $notices;
20
  }
@@ -79,4 +79,52 @@
79
  return $mod + $mods;
80
  });
81
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
82
 
14
  /**
15
  * Печатает ошибки совместимости с похожими плагинами
16
  */
17
+ add_action('wbcr_factory_notices_407_list', function ($notices, $plugin_name) {
18
  if( $plugin_name != WHTM_Plugin::app()->getPluginName() ) {
19
  return $notices;
20
  }
79
  return $mod + $mods;
80
  });
81
 
82
+ function wbcr_htm_settings_form_options()
83
+ {
84
+ $options = array();
85
+
86
+ $options[] = array(
87
+ 'type' => 'html',
88
+ 'html' => '<div class="wbcr-factory-page-group-header"><strong>' . __('HTML Options', 'html-minify') . '</strong><p>' . __('Ever look at the HTML markup of your website and notice how sloppy and amateurish it looks? The Minify HTML options cleans up sloppy looking markup and minifies, which also speeds up download.', 'html-minify') . '</p></div>'
89
+ );
90
+
91
+ // Переключатель
92
+ $options[] = array(
93
+ 'type' => 'checkbox',
94
+ 'way' => 'buttons',
95
+ 'name' => 'html_optimize',
96
+ 'title' => __('Optimize HTML Code?', 'html-minify'),
97
+ 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
98
+ 'default' => false,
99
+ );
100
+
101
+ // Переключатель
102
+ $options[] = array(
103
+ 'type' => 'checkbox',
104
+ 'way' => 'buttons',
105
+ 'name' => 'html_keepcomments',
106
+ 'title' => __('Keep HTML comments?', 'html-minify'),
107
+ 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
108
+ 'hint' => __('Enable this if you want HTML comments to remain in the page.', 'html-minify'),
109
+ 'default' => false
110
+ );
111
+
112
+ return $options;
113
+ }
114
+
115
+ add_filter('wbcr_mac_settings_form_options', function ($form) {
116
+
117
+ if( empty($form) ) {
118
+ return $form;
119
+ }
120
+
121
+ $options = wbcr_htm_settings_form_options();
122
+
123
+ foreach(array_reverse($options) as $option) {
124
+ array_unshift($form[0]['items'], $option);
125
+ }
126
+
127
+ return $form;
128
+ });
129
+
130
 
components/html-minify/admin/pages/settings.php CHANGED
@@ -11,13 +11,13 @@
11
  exit;
12
  }
13
 
14
- class WHTM_SettingsPage extends Wbcr_FactoryPages407_ImpressiveThemplate {
15
 
16
  /**
17
  * The id of the page in the admin menu.
18
  *
19
  * Mainly used to navigate between pages.
20
- * @see Wbcr_FactoryPages407_AdminPage
21
  *
22
  * @since 1.0.0
23
  * @var string
@@ -25,11 +25,16 @@
25
  public $id = "html_minify"; // Уникальный идентификатор страницы
26
  public $page_menu_dashicon = 'dashicons-testimonial'; // Иконка для закладки страницы, дашикон
27
  public $page_parent_page = "performance"; // Уникальный идентификатор родительской страницы
 
 
 
 
 
28
 
29
  /**
30
- * @param Wbcr_Factory406_Plugin $plugin
31
  */
32
- public function __construct(Wbcr_Factory406_Plugin $plugin)
33
  {
34
  // Заголовок страницы
35
  $this->menu_title = __('HTML Minify', 'html-minify');
@@ -59,24 +64,6 @@
59
  : __('General', 'html-minify');
60
  }
61
 
62
- /**
63
- * Requests assets (js and css) for the page.
64
- *
65
- * @see Wbcr_FactoryPages407_AdminPage
66
- *
67
- * @since 1.0.0
68
- * @return void
69
- */
70
- public function assets($scripts, $styles)
71
- {
72
- parent::assets($scripts, $styles);
73
-
74
- // Add Clearfy styles for HMWP pages
75
- if( defined('WBCR_CLEARFY_PLUGIN_ACTIVE') ) {
76
- $this->styles->add(WCL_PLUGIN_URL . '/admin/assets/css/general.css');
77
- }
78
- }
79
-
80
  /**
81
  * Метод должен передать массив опций для создания формы с полями.
82
  * Созданием страницы и формы занимается фреймворк
@@ -84,35 +71,9 @@
84
  * @since 1.0.0
85
  * @return mixed[]
86
  */
87
- public function getOptions()
88
  {
89
- $options = array();
90
-
91
- $options[] = array(
92
- 'type' => 'html',
93
- 'html' => '<div class="wbcr-factory-page-group-header"><strong>' . __('HTML Options', 'html-minify') . '</strong><p>' . __('Ever look at the HTML markup of your website and notice how sloppy and amateurish it looks? The Minify HTML options cleans up sloppy looking markup and minifies, which also speeds up download.', 'html-minify') . '</p></div>'
94
- );
95
-
96
- // Переключатель
97
- $options[] = array(
98
- 'type' => 'checkbox',
99
- 'way' => 'buttons',
100
- 'name' => 'html_optimize',
101
- 'title' => __('Optimize HTML Code?', 'html-minify'),
102
- 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
103
- 'default' => false,
104
- );
105
-
106
- // Переключатель
107
- $options[] = array(
108
- 'type' => 'checkbox',
109
- 'way' => 'buttons',
110
- 'name' => 'html_keepcomments',
111
- 'title' => __('Keep HTML comments?', 'html-minify'),
112
- 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
113
- 'hint' => __('Enable this if you want HTML comments to remain in the page.', 'html-minify'),
114
- 'default' => false
115
- );
116
 
117
  $formOptions = array();
118
 
11
  exit;
12
  }
13
 
14
+ class WHTM_SettingsPage extends Wbcr_FactoryClearfy206_PageBase {
15
 
16
  /**
17
  * The id of the page in the admin menu.
18
  *
19
  * Mainly used to navigate between pages.
20
+ * @see Wbcr_FactoryPages410_AdminPage
21
  *
22
  * @since 1.0.0
23
  * @var string
25
  public $id = "html_minify"; // Уникальный идентификатор страницы
26
  public $page_menu_dashicon = 'dashicons-testimonial'; // Иконка для закладки страницы, дашикон
27
  public $page_parent_page = "performance"; // Уникальный идентификатор родительской страницы
28
+ /**
29
+ * Доступена для мультисайтов
30
+ * @var bool
31
+ */
32
+ public $available_for_multisite = true;
33
 
34
  /**
35
+ * @param Wbcr_Factory409_Plugin $plugin
36
  */
37
+ public function __construct(Wbcr_Factory409_Plugin $plugin)
38
  {
39
  // Заголовок страницы
40
  $this->menu_title = __('HTML Minify', 'html-minify');
64
  : __('General', 'html-minify');
65
  }
66
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
67
  /**
68
  * Метод должен передать массив опций для создания формы с полями.
69
  * Созданием страницы и формы занимается фреймворк
71
  * @since 1.0.0
72
  * @return mixed[]
73
  */
74
+ public function getPageOptions()
75
  {
76
+ $options = wbcr_htm_settings_form_options();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
77
 
78
  $formOptions = array();
79
 
components/html-minify/html-minify.php CHANGED
@@ -8,6 +8,7 @@
8
  * Text Domain: html-minify
9
  * Domain Path: /languages/
10
  * Author URI: https://clearfy.pro
 
11
  */
12
 
13
  /*
@@ -23,81 +24,75 @@
23
  exit;
24
  }
25
 
26
- /**
27
- * Troubleshoot old versions of PHP on the client server
28
- */
29
- if( version_compare(PHP_VERSION, '5.4.0', '<') ) {
30
- function wbcr_htm_admin_notice_php_error()
31
- {
32
- ?>
33
- <div class="notice notice-error">
34
- <p><?php _e('The job of the component "Html minify" component has been suspended! You are using the old version of PHP. Please update the PHP version to 5.4 or later to continue to use this component!', 'html-minify'); ?></p>
35
- </div>
36
- <?php
37
- }
38
-
39
- add_action('admin_notices', 'wbcr_htm_admin_notice_php_error');
40
- return;
 
41
  }
42
 
 
 
 
 
 
 
 
 
 
43
  /**
44
- * Уведомление о том, что этот плагин используется уже в составе плагина Clearfy, как его компонент.
45
- * Мы блокируем работу этого плагина, чтобы не вызывать конфликт.
46
  */
47
- if( defined('WHTM_PLUGIN_ACTIVE') || (defined('WHTM_PLUGIN_ACTIVE') && !defined('LOADING_HTML_MINIFY_AS_ADDON')) ) {
48
- function wbcr_htm_admin_notice_error()
49
- {
50
- ?>
51
- <div class="notice notice-error">
52
- <p><?php _e('We found that you have the "Clearfy - wordpress optimization plugin" plugin installed, this plugin already has Html minify functions, so you can deactivate plugin "Html minify"!', 'html-minify'); ?></p>
53
- </div>
54
- <?php
55
- }
56
-
57
- add_action('admin_notices', 'wbcr_htm_admin_notice_error');
58
 
 
 
 
 
 
59
  return;
60
- } else {
61
-
62
- // Устанавливаем контстанту, что плагин уже используется
63
- define('WHTM_PLUGIN_ACTIVE', true);
64
-
65
- // Директория плагина
66
- define('WHTM_PLUGIN_DIR', dirname(__FILE__));
67
-
68
- // Относительный путь к плагину
69
- define('WHTM_PLUGIN_BASE', plugin_basename(__FILE__));
70
-
71
- // Ссылка к директории плагина
72
- define('WHTM_PLUGIN_URL', plugins_url(null, __FILE__));
73
-
74
-
75
-
76
- // Этот плагин может быть аддоном плагина Clearfy, если он загружен, как аддон, то мы не подключаем фреймворк,
77
- // а наследуем функции фреймворка от плагина Clearfy. Если плагин скомпилирован, как отдельный плагин, то он использует собственный фреймворк для работы.
78
- // Константа LOADING_HTML_MINIFY_AS_ADDON утсанавливается в классе libs/factory/core/includes/Wbcr_Factory406_Plugin
79
-
80
- if( !defined('LOADING_HTML_MINIFY_AS_ADDON') ) {
81
- // Фреймворк - отвечает за интерфейс, содержит общие функции для серии плагинов и готовые шаблоны для быстрого развертывания плагина.
82
- require_once(WHTM_PLUGIN_DIR . '/libs/factory/core/boot.php');
83
- }
84
-
85
- // Основной класс плагина
86
- require_once(WHTM_PLUGIN_DIR . '/includes/class.plugin.php');
87
-
88
- // Класс WHTM_Plugin создается только, если этот плагин работает, как самостоятельный плагин.
89
- // Если плагин работает, как аддон, то класс создается родительским плагином.
90
-
91
- if( !defined('LOADING_HTML_MINIFY_AS_ADDON') ) {
92
- new WHTM_Plugin(__FILE__, array(
93
- 'prefix' => 'wbcr_htm_', // префикс для базы данных и полей формы
94
- 'plugin_name' => 'wbcr_html_minify', // имя плагина, как уникальный идентификатор
95
- 'plugin_title' => __('Webcraftic HTML Minify', 'html-minify'), // заголовок плагина
96
- 'plugin_version' => '1.0.1', // текущая версия плагина
97
- 'required_php_version' => '5.2', // минимальная версия php для работы плагина
98
- 'required_wp_version' => '4.2', // минимальная версия wp для работы плагина
99
- 'plugin_build' => 'free', // сборка плагина
100
- //'updates' => WHTM_PLUGIN_DIR . '/updates/' в этой папке хранятся миграции для разных версий плагина
101
- ));
102
- }
103
- }
8
  * Text Domain: html-minify
9
  * Domain Path: /languages/
10
  * Author URI: https://clearfy.pro
11
+ * Framework Version: FACTORY_409_VERSION
12
  */
13
 
14
  /*
24
  exit;
25
  }
26
 
27
+ define('WHTM_PLUGIN_VERSION', '1.0.1');
28
+
29
+ // Директория плагина
30
+ define('WHTM_PLUGIN_DIR', dirname(__FILE__));
31
+
32
+ // Относительный путь к плагину
33
+ define('WHTM_PLUGIN_BASE', plugin_basename(__FILE__));
34
+
35
+ // Ссылка к директории плагина
36
+ define('WHTM_PLUGIN_URL', plugins_url(null, __FILE__));
37
+
38
+
39
+
40
+ if( !defined('LOADING_HTML_MINIFY_AS_ADDON') ) {
41
+ require_once(WHTM_PLUGIN_DIR . '/libs/factory/core/includes/check-compatibility.php');
42
+ require_once(WHTM_PLUGIN_DIR . '/libs/factory/clearfy/includes/check-clearfy-compatibility.php');
43
  }
44
 
45
+ $plugin_info = array(
46
+ 'prefix' => 'wbcr_htm_', // префикс для базы данных и полей формы
47
+ 'plugin_name' => 'wbcr_html_minify', // имя плагина, как уникальный идентификатор
48
+ 'plugin_title' => __('Webcraftic HTML Minify', 'html-minify'), // заголовок плагина
49
+ 'plugin_version' => WHTM_PLUGIN_VERSION, // текущая версия плагина
50
+ 'plugin_build' => 'free', // сборка плагина
51
+ //'updates' => WHTM_PLUGIN_DIR . '/updates/' в этой папке хранятся миграции для разных версий плагина
52
+ );
53
+
54
  /**
55
+ * Проверяет совместимость с Wordpress, php и другими плагинами.
 
56
  */
57
+ $compatibility = new Wbcr_FactoryClearfy_Compatibility(array_merge($plugin_info, array(
58
+ 'plugin_already_activate' => defined('WHTM_PLUGIN_ACTIVE'),
59
+ 'plugin_as_component' => defined('LOADING_HTML_MINIFY_AS_ADDON'),
60
+ 'plugin_dir' => WHTM_PLUGIN_DIR,
61
+ 'plugin_base' => WHTM_PLUGIN_BASE,
62
+ 'plugin_url' => WHTM_PLUGIN_URL,
63
+ 'required_php_version' => '5.4',
64
+ 'required_wp_version' => '4.2.0',
65
+ 'required_clearfy_check_component' => true
66
+ )));
 
67
 
68
+ /**
69
+ * Если плагин совместим, то он продолжит свою работу, иначе будет остановлен,
70
+ * а пользователь получит предупреждение.
71
+ */
72
+ if( !$compatibility->check() ) {
73
  return;
74
+ }
75
+
76
+ // Устанавливаем контстанту, что плагин уже используется
77
+ define('WHTM_PLUGIN_ACTIVE', true);
78
+
79
+ // Этот плагин может быть аддоном плагина Clearfy, если он загружен, как аддон, то мы не подключаем фреймворк,
80
+ // а наследуем функции фреймворка от плагина Clearfy. Если плагин скомпилирован, как отдельный плагин, то он использует собственный фреймворк для работы.
81
+ // Константа LOADING_HTML_MINIFY_AS_ADDON утсанавливается в классе libs/factory/core/includes/Wbcr_Factory409_Plugin
82
+
83
+ if( !defined('LOADING_HTML_MINIFY_AS_ADDON') ) {
84
+ // Фреймворк - отвечает за интерфейс, содержит общие функции для серии плагинов и готовые шаблоны для быстрого развертывания плагина.
85
+ require_once(WHTM_PLUGIN_DIR . '/libs/factory/core/boot.php');
86
+ }
87
+
88
+ // Основной класс плагина
89
+ require_once(WHTM_PLUGIN_DIR . '/includes/class.plugin.php');
90
+
91
+ // Класс WHTM_Plugin создается только, если этот плагин работает, как самостоятельный плагин.
92
+ // Если плагин работает, как аддон, то класс создается родительским плагином.
93
+
94
+ if( !defined('LOADING_HTML_MINIFY_AS_ADDON') ) {
95
+ new WHTM_Plugin(__FILE__, $plugin_info);
96
+ }
97
+
98
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
components/html-minify/includes/class.plugin.php CHANGED
@@ -15,14 +15,14 @@
15
  if( !class_exists('WHTM_PluginFactory') ) {
16
  // Этот плагин может быть аддоном плагина Clearfy, если он загружен, как аддон, то мы не подключаем фреймворк,
17
  // а наследуем функции фреймворка от плагина Clearfy. Если плагин скомпилирован, как отдельный плагин, то он использует собственный фреймворк для работы.
18
- // Константа LOADING_HTML_MINIFY_AS_ADDON утсанавливается в классе libs/factory/core/includes/Wbcr_Factory406_Plugin
19
 
20
  if( defined('LOADING_HTML_MINIFY_AS_ADDON') ) {
21
  class WHTM_PluginFactory {
22
 
23
  }
24
  } else {
25
- class WHTM_PluginFactory extends Wbcr_Factory406_Plugin {
26
 
27
  }
28
  }
@@ -31,7 +31,7 @@
31
  class WHTM_Plugin extends WHTM_PluginFactory {
32
 
33
  /**
34
- * @var Wbcr_Factory406_Plugin
35
  */
36
  private static $app;
37
 
@@ -50,11 +50,9 @@
50
  $this->as_addon = isset($data['as_addon']);
51
 
52
  if( $this->as_addon ) {
53
- $plugin_parent = isset($data['plugin_parent'])
54
- ? $data['plugin_parent']
55
- : null;
56
 
57
- if( !($plugin_parent instanceof Wbcr_Factory406_Plugin) ) {
58
  throw new Exception('An invalid instance of the class was passed.');
59
  }
60
 
@@ -63,14 +61,14 @@
63
  } else {
64
  // Если плагин самостоятельный, то записываем в app сслыку на текущий класс
65
  self::$app = $this;
 
66
 
 
67
  parent::__construct($plugin_path, $data);
68
  }
69
 
70
- $this->setTextDomain();
71
  $this->setModules();
72
- $this->globalScripts();
73
-
74
  if( is_admin() ) {
75
  $this->adminScripts();
76
  }
@@ -82,33 +80,39 @@
82
  * Статический метод для быстрого доступа к информации о плагине, а также часто использумых методах.
83
  *
84
  * Пример:
85
- * WHTM_Plugin::app()->getOption()
86
- * WHTM_Plugin::app()->updateOption()
87
- * WHTM_Plugin::app()->deleteOption()
88
  * WHTM_Plugin::app()->getPluginName()
89
  *
90
- * @return Wbcr_Factory406_Plugin
91
  */
92
  public static function app()
93
  {
94
  return self::$app;
95
  }
96
 
97
- // todo: перенести этот медот в фреймворк
98
- protected function setTextDomain()
99
- {
100
- // Localization plugin
101
- //load_plugin_textdomain('html-minify', false, dirname(WCL_PLUGIN_BASE) . '/languages/');
102
 
103
- $domain = 'html-minify';
104
- $locale = apply_filters('plugin_locale', is_admin()
105
- ? get_user_locale()
106
- : get_locale(), $domain);
107
- $mofile = $domain . '-' . $locale . '.mo';
 
 
108
 
109
- if( !load_textdomain($domain, WHTM_PLUGIN_DIR . '/languages/' . $mofile) ) {
110
- load_muplugin_textdomain($domain);
111
  }
 
 
 
 
 
 
 
 
 
112
  }
113
 
114
  /**
@@ -119,13 +123,13 @@
119
  if( !$this->as_addon ) {
120
  self::app()->load(array(
121
  // Модуль отвечает за подключение скриптов и стилей для интерфейса
122
- array('libs/factory/bootstrap', 'factory_bootstrap_406', 'admin'),
123
  // Модуль отвечает за создание форм и полей
124
- array('libs/factory/forms', 'factory_forms_407', 'admin'),
125
  // Модуль отвечает за создание шаблонов страниц плагина
126
- array('libs/factory/pages', 'factory_pages_407', 'admin'),
127
  // Модуль в котором хранится общий функционал плагина Clearfy и его аддонов
128
- array('libs/factory/clearfy', 'factory_clearfy_203', 'all')
129
  ));
130
  }
131
  }
@@ -135,14 +139,14 @@
135
  */
136
  private function registerPages()
137
  {
 
 
 
138
 
139
  $admin_path = WHTM_PLUGIN_DIR . '/admin/pages';
140
 
141
  // Пример основной страницы настроек
142
  self::app()->registerPage('WHTM_SettingsPage', $admin_path . '/settings.php');
143
-
144
- // Пример внутренней страницы настроек
145
- //self::app()->registerPage('WHTM_StatisticPage', $admin_path . '/statistic.php');
146
  }
147
 
148
  /**
@@ -151,32 +155,6 @@
151
  private function adminScripts()
152
  {
153
  require(WHTM_PLUGIN_DIR . '/admin/boot.php');
154
- $this->registerPages();
155
- }
156
-
157
- /**
158
- * Подключаем глобальные функции
159
- */
160
- private function globalScripts()
161
- {
162
- //require(WHTM_PLUGIN_DIR . '/includes/classes/class.configurate-comments.php');
163
- //new WHTM_ConfigComments(self::$app);
164
- }
165
-
166
- /**
167
- * Выполнение действий после загрузки плагина
168
- * Подключаем все классы оптимизации и запускаем процесс
169
- */
170
- public function pluginsLoaded()
171
- {
172
- require_once(WHTM_PLUGIN_DIR . '/includes/classes/class.mac-base.php');
173
- require_once(WHTM_PLUGIN_DIR . '/includes/classes/class.mac-html.php');
174
- require_once(WHTM_PLUGIN_DIR . '/includes/classes/class.mac-main.php');
175
-
176
- require_once(WHTM_PLUGIN_DIR . '/includes/classes/ext/php/minify-html.php');
177
-
178
- $plugin = new WHTM_PluginMain();
179
- $plugin->start();
180
  }
181
  }
182
  }
15
  if( !class_exists('WHTM_PluginFactory') ) {
16
  // Этот плагин может быть аддоном плагина Clearfy, если он загружен, как аддон, то мы не подключаем фреймворк,
17
  // а наследуем функции фреймворка от плагина Clearfy. Если плагин скомпилирован, как отдельный плагин, то он использует собственный фреймворк для работы.
18
+ // Константа LOADING_HTML_MINIFY_AS_ADDON утсанавливается в классе libs/factory/core/includes/Wbcr_Factory409_Plugin
19
 
20
  if( defined('LOADING_HTML_MINIFY_AS_ADDON') ) {
21
  class WHTM_PluginFactory {
22
 
23
  }
24
  } else {
25
+ class WHTM_PluginFactory extends Wbcr_Factory409_Plugin {
26
 
27
  }
28
  }
31
  class WHTM_Plugin extends WHTM_PluginFactory {
32
 
33
  /**
34
+ * @var Wbcr_Factory409_Plugin
35
  */
36
  private static $app;
37
 
50
  $this->as_addon = isset($data['as_addon']);
51
 
52
  if( $this->as_addon ) {
53
+ $plugin_parent = isset($data['plugin_parent']) ? $data['plugin_parent'] : null;
 
 
54
 
55
+ if( !($plugin_parent instanceof Wbcr_Factory409_Plugin) ) {
56
  throw new Exception('An invalid instance of the class was passed.');
57
  }
58
 
61
  } else {
62
  // Если плагин самостоятельный, то записываем в app сслыку на текущий класс
63
  self::$app = $this;
64
+ }
65
 
66
+ if( !$this->as_addon ) {
67
  parent::__construct($plugin_path, $data);
68
  }
69
 
 
70
  $this->setModules();
71
+
 
72
  if( is_admin() ) {
73
  $this->adminScripts();
74
  }
80
  * Статический метод для быстрого доступа к информации о плагине, а также часто использумых методах.
81
  *
82
  * Пример:
83
+ * WHTM_Plugin::app()->getPopulateOption()
84
+ * WHTM_Plugin::app()->updatePopulateOption()
85
+ * WHTM_Plugin::app()->deletePopulateOption()
86
  * WHTM_Plugin::app()->getPluginName()
87
  *
88
+ * @return Wbcr_Factory409_Plugin
89
  */
90
  public static function app()
91
  {
92
  return self::$app;
93
  }
94
 
 
 
 
 
 
95
 
96
+ /**
97
+ * Выполнение действий после загрузки плагина
98
+ * Подключаем все классы оптимизации и запускаем процесс
99
+ */
100
+ public function pluginsLoaded()
101
+ {
102
+ self::app()->setTextDomain('html-minify', WHTM_PLUGIN_DIR);
103
 
104
+ if( is_admin() ) {
105
+ $this->registerPages();
106
  }
107
+
108
+ require_once(WHTM_PLUGIN_DIR . '/includes/classes/class.mac-base.php');
109
+ require_once(WHTM_PLUGIN_DIR . '/includes/classes/class.mac-html.php');
110
+ require_once(WHTM_PLUGIN_DIR . '/includes/classes/class.mac-main.php');
111
+
112
+ require_once(WHTM_PLUGIN_DIR . '/includes/classes/ext/php/minify-html.php');
113
+
114
+ $plugin = new WHTM_PluginMain();
115
+ $plugin->start();
116
  }
117
 
118
  /**
123
  if( !$this->as_addon ) {
124
  self::app()->load(array(
125
  // Модуль отвечает за подключение скриптов и стилей для интерфейса
126
+ array('libs/factory/bootstrap', 'factory_bootstrap_409', 'admin'),
127
  // Модуль отвечает за создание форм и полей
128
+ array('libs/factory/forms', 'factory_forms_410', 'admin'),
129
  // Модуль отвечает за создание шаблонов страниц плагина
130
+ array('libs/factory/pages', 'factory_pages_410', 'admin'),
131
  // Модуль в котором хранится общий функционал плагина Clearfy и его аддонов
132
+ array('libs/factory/clearfy', 'factory_clearfy_206', 'all')
133
  ));
134
  }
135
  }
139
  */
140
  private function registerPages()
141
  {
142
+ if( defined('WMAC_PLUGIN_ACTIVE') ) {
143
+ return;
144
+ }
145
 
146
  $admin_path = WHTM_PLUGIN_DIR . '/admin/pages';
147
 
148
  // Пример основной страницы настроек
149
  self::app()->registerPage('WHTM_SettingsPage', $admin_path . '/settings.php');
 
 
 
150
  }
151
 
152
  /**
155
  private function adminScripts()
156
  {
157
  require(WHTM_PLUGIN_DIR . '/admin/boot.php');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
158
  }
159
  }
160
  }
components/html-minify/includes/classes/class.mac-main.php CHANGED
@@ -39,7 +39,7 @@ class WHTM_PluginMain
39
  * Initialization hooks
40
  */
41
  public function hook() {
42
- if ( WHTM_Plugin::app()->getOption('html_optimize') ) {
43
  add_action( 'wp_loaded', array( $this, 'removeCacheMessage' ) );
44
  }
45
  }
@@ -88,7 +88,7 @@ class WHTM_PluginMain
88
  */
89
  public function run()
90
  {
91
- if ( WHTM_Plugin::app()->getOption('html_optimize') ) {
92
  // Hook into WordPress frontend.
93
  if ( defined( 'WHTM_INIT_EARLIER' ) ) {
94
  add_action( 'init', array( $this, 'startBuffering' ), self::INIT_EARLIER_PRIORITY );
@@ -250,13 +250,13 @@ class WHTM_PluginMain
250
 
251
  // Determine what needs to be ran.
252
  $classes = array();
253
- if ( WHTM_Plugin::app()->getOption( 'html_optimize' ) ) {
254
  $classes[] = 'WHTM_PluginHTML';
255
  }
256
 
257
  $classoptions = array(
258
  'WHTM_PluginHTML' => array(
259
- 'keepcomments' => WHTM_Plugin::app()->getOption( 'html_keepcomments' ),
260
  ),
261
  );
262
 
39
  * Initialization hooks
40
  */
41
  public function hook() {
42
+ if ( WHTM_Plugin::app()->getPopulateOption('html_optimize') ) {
43
  add_action( 'wp_loaded', array( $this, 'removeCacheMessage' ) );
44
  }
45
  }
88
  */
89
  public function run()
90
  {
91
+ if ( WHTM_Plugin::app()->getPopulateOption('html_optimize') ) {
92
  // Hook into WordPress frontend.
93
  if ( defined( 'WHTM_INIT_EARLIER' ) ) {
94
  add_action( 'init', array( $this, 'startBuffering' ), self::INIT_EARLIER_PRIORITY );
250
 
251
  // Determine what needs to be ran.
252
  $classes = array();
253
+ if ( WHTM_Plugin::app()->getPopulateOption( 'html_optimize' ) ) {
254
  $classes[] = 'WHTM_PluginHTML';
255
  }
256
 
257
  $classoptions = array(
258
  'WHTM_PluginHTML' => array(
259
+ 'keepcomments' => WHTM_Plugin::app()->getPopulateOption( 'html_keepcomments' ),
260
  ),
261
  );
262
 
components/html-minify/languages/html-minify-ru_RU.po CHANGED
@@ -1,417 +1,417 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: clearfy\n"
4
- "POT-Creation-Date: 2018-08-19 03:46+0300\n"
5
- "PO-Revision-Date: 2018-08-19 03:48+0300\n"
6
- "Last-Translator: alex.kovalevv@gmail.com <alex.kovalevv@gmail.com>\n"
7
- "Language-Team: Alex Kovalev <alex.kovalevv@gmail.com>\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: Poedit 2.1.1\n"
13
- "X-Poedit-Basepath: ..\n"
14
- "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
15
- "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
16
- "X-Poedit-SourceCharset: UTF-8\n"
17
- "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c\n"
18
- "X-Poedit-SearchPath-0: .\n"
19
- "X-Poedit-SearchPathExcluded-0: libs\n"
20
-
21
- #: admin/boot.php:23
22
- msgid ""
23
- "Clearfy: Html minify component is not compatible with the Autoptimize "
24
- "plugin, please do not use them together to avoid conflicts. Please disable "
25
- "the Html minify component"
26
- msgstr ""
27
- "Clearfy: Компонент HTML сжатие не совместим с плагином Autoptimize, "
28
- "пожалуйста, не используйте их вместе, чтобы избежать конфликтов. Отключите "
29
- "компонент HTML сжатие"
30
-
31
- #: admin/boot.php:46 admin/pages/settings.php:101
32
- msgid "Optimize HTML Code?"
33
- msgstr "Оптимизировать HTML код?"
34
-
35
- #: admin/boot.php:52 admin/pages/settings.php:111
36
- msgid "Keep HTML comments?"
37
- msgstr "Оставлять HTML комментарии?"
38
-
39
- #: admin/boot.php:69
40
- msgid "One click optimize html code"
41
- msgstr "Оптимизировать html код одним нажатием"
42
-
43
- #: admin/boot.php:71
44
- msgid "One click optimize html code and scripts"
45
- msgstr "Оптимизировать html код и скрипты одним нажатием"
46
-
47
- #: admin/pages/settings.php:35 admin/pages/settings.php:58
48
- msgid "HTML Minify"
49
- msgstr "HTML сжатие"
50
-
51
- #: admin/pages/settings.php:59
52
- msgid "General"
53
- msgstr "Основные"
54
-
55
- #: admin/pages/settings.php:93
56
- msgid "HTML Options"
57
- msgstr "Настройки HTML сжатия"
58
-
59
- #: admin/pages/settings.php:93
60
- msgid ""
61
- "Ever look at the HTML markup of your website and notice how sloppy and "
62
- "amateurish it looks? The Minify HTML options cleans up sloppy looking markup "
63
- "and minifies, which also speeds up download."
64
- msgstr ""
65
- "Вы когда-нибудь видели HTML разметку на своем веб-сайте, замечали насколько "
66
- "она неаккуратна и раздута? Настройки HTML сжатия позволят грамотно "
67
- "установить правила формирования html разметки, а также регулировать вес "
68
- "ваших страниц."
69
-
70
- #: admin/pages/settings.php:113
71
- msgid "Enable this if you want HTML comments to remain in the page."
72
- msgstr ""
73
- "Включите эту опцию, если хотите, чтобы при сжатии страницы, не удалялясь "
74
- "Html комментарии."
75
-
76
- #: html-minify.php:34
77
- msgid ""
78
- "The job of the component \"Html minify\" component has been suspended! You "
79
- "are using the old version of PHP. Please update the PHP version to 5.4 or "
80
- "later to continue to use this component!"
81
- msgstr ""
82
- "Работа компонента «Скрыть мой wp» была приостановлена! Вы используете старую "
83
- "версию PHP. Обновите версию PHP до версии 5.4 или новее, чтобы продолжить "
84
- "использование этого компонента!"
85
-
86
- #: html-minify.php:52
87
- msgid ""
88
- "We found that you have the \"Clearfy - wordpress optimization plugin\" "
89
- "plugin installed, this plugin already has Html minify functions, so you can "
90
- "deactivate plugin \"Html minify\"!"
91
- msgstr ""
92
- "Мы обнаружили, что у вас установлен плагин «Clearfy - wordpress optimization "
93
- "plugin», этот плагин уже имеет функции Html minify, поэтому вы можете "
94
- "отключить плагин «Html minify»!"
95
-
96
- #: html-minify.php:129
97
- msgid "Webcraftic HTML Minify"
98
- msgstr "Webcraftic HTML сжатие"
99
-
100
- #~ msgid "Comments are closed."
101
- #~ msgstr "Комментарии Закрыты."
102
-
103
- #~ msgid ""
104
- #~ "Note: The <em>%s</em> plugin is currently active, and comments are "
105
- #~ "completely disabled on: %s. Many of the settings below will not be "
106
- #~ "applicable for those post types."
107
- #~ msgstr ""
108
- #~ "Примечание. Плагин <em>%s</em> в настоящий момент активен, и комментарии "
109
- #~ "полностью отключены: %s. Многие из приведенных ниже настроек не будут "
110
- #~ "применяться для этих типов сообщений."
111
-
112
- #~ msgid "Disable comments on the entire site"
113
- #~ msgstr "Отключить комментарии на всем сайте"
114
-
115
- #~ msgid "Select post types"
116
- #~ msgstr "Выбрать тип записи"
117
-
118
- #~ msgid "Replace external links in comments on the JavaScript code"
119
- #~ msgstr "Заменить внешние ссылки в комментариях на JavaScript код"
120
-
121
- #~ msgid "Replace external links from comment authors on the JavaScript code"
122
- #~ msgstr "Заменить внешние ссылки от авторов комментариев на код JavaScript"
123
-
124
- #~ msgid "Disable X-Pingback"
125
- #~ msgstr "Убрать ссылку на X-Pingback и возможность спамить pingback-ами"
126
-
127
- #~ msgid "Remove field \"site\" in comment form"
128
- #~ msgstr "Удаляет поле \"Сайт\" в форме комментариев"
129
-
130
- #~ msgid "One click disable all comments"
131
- #~ msgstr "Отключить все комментарии в один клик"
132
-
133
- #~ msgid "Get ultimate plugin free"
134
- #~ msgstr "Получите полную версию плагина бесплатно"
135
-
136
- #~ msgid "Disable comments"
137
- #~ msgstr "Отключить комментарии"
138
-
139
- #~ msgid "Comments"
140
- #~ msgstr "Комментарии"
141
-
142
- #~ msgid "Global disabling of comments"
143
- #~ msgstr "Глобальное отключение комментариев"
144
-
145
- #~ msgid ""
146
- #~ "What is the difference between these and native WordPress functions? "
147
- #~ "WordPress disables comments only for new posts! Using the functions "
148
- #~ "below, you can disable comments globally, even for old posts, and you can "
149
- #~ "choose which post types comments to disable. The plugin also disables the "
150
- #~ "comment functionality itself, which creates a certain load on the site."
151
- #~ msgstr ""
152
- #~ "Чем отличается эти функции от нативных функций Wordpress? Wordpress "
153
- #~ "отключает комментарии только для новых записей! С помощью функций ниже, "
154
- #~ "вы можете отключить комментарии глобально, даже для старых записей, "
155
- #~ "причем вы можете выбрать для каких типов записей нужно отключить "
156
- #~ "комментарии. Плагин также отключает сам функционал комментариев, который "
157
- #~ "создает определенную нагрузку на сайт."
158
-
159
- #~ msgid "Not disable"
160
- #~ msgstr "Не отключать"
161
-
162
- #~ msgid "Everywhere"
163
- #~ msgstr "Повсюду"
164
-
165
- #~ msgid ""
166
- #~ "You can delete all comments in the database by clicking on this link (<a "
167
- #~ "href=\"%s\">cleaning comments in database</a>)."
168
- #~ msgstr ""
169
- #~ "Вы можете удалить все комментарии в базе данных, нажав на эту ссылку ( <a "
170
- #~ "href=\"%s\">очистка комментариев в базе данных</a> )."
171
-
172
- #~ msgid "On certain post types"
173
- #~ msgstr "Только выбранные типы записей"
174
-
175
- #~ msgid ""
176
- #~ "You can delete all comments for the selected post types. Select the post "
177
- #~ "types below and save the settings. After that, click the link (<a href="
178
- #~ "\"%s\">delete all comments for the selected post types in database</a>)."
179
- #~ msgstr ""
180
- #~ "Вы можете удалить все комментарии для выбранных типов записей. Выберите "
181
- #~ "типы записей ниже и сохраните настройки. После этого нажмите ссылку ( <a "
182
- #~ "href=\"%s\">удалите все комментарии для выбранных типов записей в базе "
183
- #~ "данных</a> )."
184
-
185
- #~ msgid ""
186
- #~ "Everywhere - Warning: This option is global and will affect your entire "
187
- #~ "site. Use it only if you want to disable comments everywhere. A complete "
188
- #~ "description of what this option does is available here"
189
- #~ msgstr ""
190
- #~ "Повсюду - предупреждение: этот параметр является глобальным и повлияет на "
191
- #~ "весь ваш сайт. Используйте его только в том случае, если вы хотите "
192
- #~ "отключить комментарии повсюду. "
193
-
194
- #~ msgid ""
195
- #~ "On certain post types - Disabling comments will also disable trackbacks "
196
- #~ "and pingbacks. All comment-related fields will also be hidden from the "
197
- #~ "edit/quick-edit screens of the affected posts. These settings cannot be "
198
- #~ "overridden for individual posts."
199
- #~ msgstr ""
200
- #~ "В некоторых типах сообщений - отключение комментариев также отключает "
201
- #~ "трекбэки и pingback. Все поля, связанные с комментариями, также будут "
202
- #~ "скрыты от экранов редактирования / быстрого редактирования затронутых "
203
- #~ "сообщений. Эти настройки нельзя переопределять для отдельных сообщений."
204
-
205
- #~ msgid "Select the post types for which comments will be disabled"
206
- #~ msgstr "Выберите типы записей, для которых комментарии будут отключены."
207
-
208
- #~ msgid "General settings for comments"
209
- #~ msgstr "Общие настройки комментариев"
210
-
211
- #~ msgid ""
212
- #~ "These settings will help you improve SEO and reduce the amount of spam."
213
- #~ msgstr ""
214
- #~ "Эти настройки помогут вам улучшить SEO и уменьшить количество спама."
215
-
216
- #~ msgid ""
217
- #~ "Tired of spam in the comments? Do visitors leave \"blank\" comments for "
218
- #~ "the sake of a link to their site?"
219
- #~ msgstr ""
220
- #~ "Надоел спам в комментариях? Посетители оставляют «пустые» комментарии "
221
- #~ "ради ссылки на свой сайт?"
222
-
223
- #~ msgid "Removes the \"Site\" field from the comment form."
224
- #~ msgstr "Убирает поле «Сайт» из формы комментирования."
225
-
226
- #~ msgid ""
227
- #~ "Works with the standard comment form, if the form is manually written in "
228
- #~ "your theme-it probably will not work!"
229
- #~ msgstr ""
230
- #~ "Работает со стандартной формой комментирования, если в Вашей теме форма "
231
- #~ "прописана вручную - скорей всего не сработает!"
232
-
233
- #~ msgid ""
234
- #~ "Superfluous external links from comments, which can be typed from a dozen "
235
- #~ "and more for one article, do not bring anything good for promotion."
236
- #~ msgstr ""
237
- #~ "Внешние ссылки в комментариях, которых может быть десятки или больше на "
238
- #~ "одной странице, могут ухудшить продвижение вашего сайта."
239
-
240
- #~ msgid "Replaces the links of this kind of %s, on links of this kind %s"
241
- #~ msgstr ""
242
- #~ "Заменяет ссылки %s, на span тег и устанавливает переход с помощью "
243
- #~ "JavaScript %s"
244
-
245
- #~ msgid ""
246
- #~ "Up to 90 percent of comments in the blog can be left for the sake of an "
247
- #~ "external link. Even nofollow from page weight loss here does not help."
248
- #~ msgstr ""
249
- #~ "До 90 процентов комментариев в блоге оставляют ради внешней ссылки. Не "
250
- #~ "поможет даже nofollow от потери веса страницы."
251
-
252
- #~ msgid ""
253
- #~ "Replaces the links of the authors of comments on the JavaScript code, it "
254
- #~ "is impossible to distinguish it from usual links."
255
- #~ msgstr ""
256
- #~ "Заменяет ссылки авторов комментариев на JavaScript код, его невозможно "
257
- #~ "отличить от обычной ссылки."
258
-
259
- #~ msgid "In some Wordpress topics this may not work."
260
- #~ msgstr "В некоторых темах Wordpress это может не сработать."
261
-
262
- #~ msgid "Disable XML-RPC"
263
- #~ msgstr "Отключить XML-RPC"
264
-
265
- #~ msgid ""
266
- #~ "A pingback is basically an automated comment that gets created when "
267
- #~ "another blog links to you. A self-pingback is created when you link to an "
268
- #~ "article within your own blog. Pingbacks are essentially nothing more than "
269
- #~ "spam and simply waste resources."
270
- #~ msgstr ""
271
- #~ "Pingback по-существу автоматизированных комментарий, который создается, "
272
- #~ "когда другой блог ссылается на вас. Self-pingback создается, когда вы "
273
- #~ "оставили ссылку на статью в своем блоге. Pingbacks по существу являются "
274
- #~ "не более чем спам и пустая трата ресурсов вашего сайта."
275
-
276
- #~ msgid "Removes the server responses a reference to the xmlrpc file."
277
- #~ msgstr "Удаляет ссылку на xmlrpc-файл и ответ сервера."
278
-
279
- #~ msgid "Comments cleaner"
280
- #~ msgstr "Очистка комментариев"
281
-
282
- #~ msgid "All comments have been deleted."
283
- #~ msgstr "Все комментарии были удалены."
284
-
285
- #~ msgid ""
286
- #~ "An error occurred while trying to delete comments. Internal error "
287
- #~ "occured. Please try again later."
288
- #~ msgstr ""
289
- #~ "При попытке удалить комментарии произошла ошибка. Пожалуйста, повторите "
290
- #~ "попытку позже."
291
-
292
- #~ msgid ""
293
- #~ "Are you sure you want to delete comments from the database without "
294
- #~ "restoring?"
295
- #~ msgstr ""
296
- #~ "Вы уверены, что вы хотите удалить комментарии из базы данных без "
297
- #~ "восстановления?"
298
-
299
- #~ msgid "Comments clearing tools"
300
- #~ msgstr "Комментарии очищающие инструменты"
301
-
302
- #~ msgid ""
303
- #~ "These functions can be useful for global disabling comments or bulk "
304
- #~ "cleaning spam comments."
305
- #~ msgstr ""
306
- #~ "Эти функции могут быть полезны для глобальных отключений комментариев или "
307
- #~ "массовой очистки спама комментариев."
308
-
309
- #~ msgid "Remove all comments"
310
- #~ msgstr "Удалить все комментарии"
311
-
312
- #~ msgid "You can delete all comments in your database with one click."
313
- #~ msgstr ""
314
- #~ "Вы можете удалить все комментарии в базе данных с одним щелчком мыши."
315
-
316
- #~ msgid "Choose post types"
317
- #~ msgstr "Выберите типы записей"
318
-
319
- #~ msgid "Select all"
320
- #~ msgstr "Выбрать все"
321
-
322
- #~ msgid "Delete Woocommerce order notices? (%d)"
323
- #~ msgstr "Удалять заметки от заказов Woocommerce? (%d)"
324
-
325
- #~ msgid "Delete (%d)"
326
- #~ msgstr "Удалить (%d)"
327
-
328
- #~ msgid "Remove spam comments"
329
- #~ msgstr "Удалить спам комментарии"
330
-
331
- #~ msgid "You can remove only spam comments from the database with one click."
332
- #~ msgstr ""
333
- #~ "Вы можете одним нажатием удалить только спам комментарии из базы данных."
334
-
335
- #~ msgid "Remove unapproved comments"
336
- #~ msgstr "Удалить неподтвержденные комментарии"
337
-
338
- #~ msgid ""
339
- #~ "You can remove only unapproved comments from the database with one click."
340
- #~ msgstr ""
341
- #~ "Вы можете одним нажатием удалить только не подтвержденные комментарии из "
342
- #~ "базы данных."
343
-
344
- #~ msgid "Remove trashed comments"
345
- #~ msgstr "Удалить комментарии из корзины"
346
-
347
- #~ msgid ""
348
- #~ "You can remove only trashed comments from the database with one click."
349
- #~ msgstr "Вы можете одним нажатием удалить только комментарии из корзины."
350
-
351
- #~ msgid ""
352
- #~ "We found that you have the \"Clearfy - disable unused features\" plugin "
353
- #~ "installed, this plugin already has disable comments functions, so you can "
354
- #~ "deactivate plugin \"Disable comments\"!"
355
- #~ msgstr ""
356
- #~ "Мы обнаружили, что у вас установлен плагин «Clearfy - отключить "
357
- #~ "неиспользуемые функции», этот плагин уже имеет функции отключения "
358
- #~ "комментариев, поэтому вы можете отключить плагин «Отключить комментарии»!"
359
-
360
- #~ msgid "Webcraftic Disable comments"
361
- #~ msgstr "Webcraftic отключить комментарии"
362
-
363
- #~ msgid "Recommended"
364
- #~ msgstr "Рекомендовано"
365
-
366
- #~ msgid "You are not allowed to view this page."
367
- #~ msgstr "Вам не разрешено просматривать эту страницу."
368
-
369
- #~ msgid "You do not have the selected post types!"
370
- #~ msgstr "Вы не выбрали еще ни одного типа записей!"
371
-
372
- #~ msgid "No comments available for deletion."
373
- #~ msgstr "Нет комментариев для удаления."
374
-
375
- #~ msgid ""
376
- #~ "Are you sure that you desire to delete all comments from the database?"
377
- #~ msgstr "Вы уверены, что хотите удалить все комментарии из базы данных?"
378
-
379
- #~ msgid ""
380
- #~ "Deleting comments will remove existing comment entries in the database "
381
- #~ "and cannot be reverted without a database backup."
382
- #~ msgstr ""
383
- #~ "При удалении комментариев удаляются существующие записи комментариев в "
384
- #~ "базе данных, они не могут быть восстановлены без резервного копирования "
385
- #~ "базы данных."
386
-
387
- #~ msgid "You have %s comments"
388
- #~ msgstr "У вас есть %s комментариев"
389
-
390
- #~ msgid "Yes, I'm sure"
391
- #~ msgstr "Да, я уверен"
392
-
393
- #~ msgid "No, return back"
394
- #~ msgstr "Нет, вернуться"
395
-
396
- #~ msgid ""
397
- #~ "Are you sure that you desire to delete all comments from the database for "
398
- #~ "the selected post types (%s)?"
399
- #~ msgstr ""
400
- #~ "Вы уверены, что хотите удалить все комментарии из базы данных для "
401
- #~ "выбранных типов записей (%s)?"
402
-
403
- #~ msgid "Webcraftic comments tweaks"
404
- #~ msgstr "Webcraftic инструменты комментариев"
405
-
406
- #~ msgid ""
407
- #~ "We found that you have the \"Clearfy - disable unused features\" plugin "
408
- #~ "installed, this plugin already has disable comments functions, so you can "
409
- #~ "deactivate plugin \"Comments tweaks\"!"
410
- #~ msgstr ""
411
- #~ "Мы обнаружили, что у вас установлен плагин «Clearfy - отключить "
412
- #~ "неиспользуемые функции», этот плагин уже имеет функции отключения "
413
- #~ "комментариев, поэтому вы можете отключить плагин «Инструменты "
414
- #~ "комментариев»!"
415
-
416
- #~ msgid "Disable all comments"
417
- #~ msgstr "Отключить все комментарии"
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: clearfy\n"
4
+ "POT-Creation-Date: 2018-08-19 03:46+0300\n"
5
+ "PO-Revision-Date: 2018-08-19 03:48+0300\n"
6
+ "Last-Translator: alex.kovalevv@gmail.com <alex.kovalevv@gmail.com>\n"
7
+ "Language-Team: Alex Kovalev <alex.kovalevv@gmail.com>\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: Poedit 2.1.1\n"
13
+ "X-Poedit-Basepath: ..\n"
14
+ "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
15
+ "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
16
+ "X-Poedit-SourceCharset: UTF-8\n"
17
+ "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c\n"
18
+ "X-Poedit-SearchPath-0: .\n"
19
+ "X-Poedit-SearchPathExcluded-0: libs\n"
20
+
21
+ #: admin/boot.php:23
22
+ msgid ""
23
+ "Clearfy: Html minify component is not compatible with the Autoptimize "
24
+ "plugin, please do not use them together to avoid conflicts. Please disable "
25
+ "the Html minify component"
26
+ msgstr ""
27
+ "Clearfy: Компонент HTML сжатие не совместим с плагином Autoptimize, "
28
+ "пожалуйста, не используйте их вместе, чтобы избежать конфликтов. Отключите "
29
+ "компонент HTML сжатие"
30
+
31
+ #: admin/boot.php:46 admin/pages/settings.php:101
32
+ msgid "Optimize HTML Code?"
33
+ msgstr "Оптимизировать HTML код?"
34
+
35
+ #: admin/boot.php:52 admin/pages/settings.php:111
36
+ msgid "Keep HTML comments?"
37
+ msgstr "Оставлять HTML комментарии?"
38
+
39
+ #: admin/boot.php:69
40
+ msgid "One click optimize html code"
41
+ msgstr "Оптимизировать html код одним нажатием"
42
+
43
+ #: admin/boot.php:71
44
+ msgid "One click optimize html code and scripts"
45
+ msgstr "Оптимизировать html код и скрипты одним нажатием"
46
+
47
+ #: admin/pages/settings.php:35 admin/pages/settings.php:58
48
+ msgid "HTML Minify"
49
+ msgstr "HTML сжатие"
50
+
51
+ #: admin/pages/settings.php:59
52
+ msgid "General"
53
+ msgstr "Основные"
54
+
55
+ #: admin/pages/settings.php:93
56
+ msgid "HTML Options"
57
+ msgstr "Настройки HTML сжатия"
58
+
59
+ #: admin/pages/settings.php:93
60
+ msgid ""
61
+ "Ever look at the HTML markup of your website and notice how sloppy and "
62
+ "amateurish it looks? The Minify HTML options cleans up sloppy looking markup "
63
+ "and minifies, which also speeds up download."
64
+ msgstr ""
65
+ "Вы когда-нибудь видели HTML разметку на своем веб-сайте, замечали насколько "
66
+ "она неаккуратна и раздута? Настройки HTML сжатия позволят грамотно "
67
+ "установить правила формирования html разметки, а также регулировать вес "
68
+ "ваших страниц."
69
+
70
+ #: admin/pages/settings.php:113
71
+ msgid "Enable this if you want